X-Git-Url: http://git.dj3c1t.com/index.cgi?a=blobdiff_plain;f=mw%2Fenv%2Fmodules%2Fmw_env_out.php;h=20427448f68100a3e54f9a364a62e5ae0a5d5937;hb=HEAD;hp=00f4a8414bef21b469d0376ead7c8c2158f63697;hpb=4947a4d83a2e96ee33135abdca8685b4c07e165c;p=mtweb diff --git a/mw/env/modules/mw_env_out.php b/mw/env/modules/mw_env_out.php index 00f4a84..2042744 100644 --- a/mw/env/modules/mw_env_out.php +++ b/mw/env/modules/mw_env_out.php @@ -2,24 +2,27 @@ class mw_env_out extends mw_env{ - var $out; - var $out_config; - var $layout; + public $out; + public $out_config; + public $layout; + public $js_files; + public $css_files; + public $template; // --------------------------------------------------------------------------------- // out vars // - function set_out($key, $value){ + public function set_out($key, $value){ $this->out[$key] = $value; return $value; } - function get_out(){ + public function get_out(){ return $this->out; } - function out($key){ + public function out($key){ return isset($this->out[$key]) ? $this->out[$key] : null; } @@ -27,7 +30,38 @@ // templates // - function out_pathes(){ + public function templates(){ + if(($out_pathes = $this->out_pathes()) === false) return false; + $templates = array(); + $current_out_path = $this->config("out"); + foreach($out_pathes as $out_path){ + $this->set_config(array("out" => $out_path)); + $templates[$out_path] = $this->_get_template(); + } + $this->set_config(array("out" => $current_out_path)); + return $templates; + } + + public function get_template(){ + if(isset($this->template)) return $this->template; + $this->template = $this->_get_template(); + return $this->template; + } + + public function _get_template(){ + $template_class_name = "mw_template"; + if($this->out_file_exists("template.php")){ + $template_class_file = $this->out_file("template.php"); + $template_class_name = "mw_template_".basename(dirname($template_class_file)); + if(!class_exists($template_class_name)) require_once $template_class_file; + if(!class_exists($template_class_name)) $template_class_name = "mw_template"; + } + $template = new $template_class_name(true); + $template->set_env($this->root_inst); + return $template; + } + + public function out_pathes(){ $pathes = array(); if(($plugins = $this->plugins()) !== false){ foreach($plugins as $plugin_name => $plugin){ @@ -49,10 +83,10 @@ return $pathes; } - function _out_pathes($out_dir, $pathes = array()){ + public function _out_pathes($out_dir, $pathes = array()){ if($dh = opendir($out_dir)){ while(($file = readdir($dh)) !== false){ - if(is_dir($out_dir.$file) && substr($file, 0 ,1) != ".") $pathes[] = $file; + if(is_dir($out_dir.$file) && substr($file, 0 ,1) != "." && !in_array($file, $pathes)) $pathes[] = $file; } closedir($dh); } @@ -64,22 +98,22 @@ // out files // - function out_file_exists($file, $PRIORITE = "DESC"){ + public function out_file_exists($file, $PRIORITE = "DESC"){ $out_file = $this->_out_file($file, $PRIORITE); return $out_file ? true : false; } - function out_file($file, $PRIORITE = "DESC"){ + public function out_file($file, $PRIORITE = "DESC"){ $out_file = $this->_out_file($file, $PRIORITE); return $out_file ? $this->path("mw_dir").$out_file : $file; } - function out_url($file, $PRIORITE = "DESC"){ + public function out_url($file, $PRIORITE = "DESC"){ $out_file = $this->_out_file($file, $PRIORITE); - return $out_file ? $this->path("mw_path").$out_file : $file; + return $out_file ? $this->path("web").$this->path("mw_path").$out_file : $file; } - function _out_file($file, $PRIORITE = "DESC"){ + public function _out_file($file, $PRIORITE = "DESC"){ $out_file = false; if($PRIORITE == "ASC"){ $tmp_out_file = "app/out/".$this->config("out")."/".$file; @@ -126,22 +160,66 @@ } // --------------------------------------------------------------------------------- + // js / css files + // + + public function js_files(){ + if(!isset($this->js_files)) $this->js_files = array(); + $files = array(); + foreach($this->js_files as $url => $enabled){ + if($enabled) $files[] = $url; + } + return $files; + } + + public function add_js_file($url){ + if(!isset($this->js_files)) $this->js_files = array(); + $this->js_files[$url] = true; + } + + public function remove_js_file($url){ + if(isset($this->js_files) && isset($this->js_files[$url])){ + unset($this->js_files[$url]); + } + } + + public function css_files(){ + if(!isset($this->css_files)) $this->css_files = array(); + $files = array(); + foreach($this->css_files as $url => $enabled){ + if($enabled) $files[] = $url; + } + return $files; + } + + public function add_css_file($url){ + if(!isset($this->css_files)) $this->css_files = array(); + $this->css_files[$url] = true; + } + + public function remove_css_file($url){ + if(isset($this->css_files) && isset($this->css_files[$url])){ + unset($this->css_files[$url]); + } + } + + // --------------------------------------------------------------------------------- // out config // - function set_out_config($out_config){ + public function set_out_config($out_config){ $this->out_config = $out_config; return $this->out_config; } - function get_out_config(){ + public function get_out_config(){ return isset($this->out_config) ? $this->out_config : array(); } - function out_config($name){ + public function out_config($name){ if(isset($this->out_config)){ $CONFIG = $this->get_CONFIG(); - return isset($CONFIG["out_".$name]) ? $CONFIG["out_".$name] : $this->out_config[$name]["default"]; + return isset($CONFIG["out_".$name]) ? $CONFIG["out_".$name] : (isset($this->out_config[$name]) ? $this->out_config[$name]["default"] : ""); } return null; } @@ -150,58 +228,18 @@ // layouts // - function layout(){ + public function layout(){ return $this->layout; } - function render_layout($layout = null){ - if(!isset($layout)) $layout = $this->init_layout(); - if(($plugins = $this->plugins("ASC")) !== false){ - foreach($plugins as $plugin_name => $plugin){ - if($plugin["installed"] && $plugin["enabled"]){ - $FOUND = false; - $functions_file = $this->path("mw_dir")."plugins/".$plugin_name."/app/out/".$this->config("out")."/functions.php"; - if(file_exists($functions_file)){ - $FOUND = true; - require $functions_file; - } - if(!$FOUND){ - $functions_file = $this->path("mw_dir")."plugins/".$plugin_name."/app/out/".$this->config("default_out")."/functions.php"; - if($plugin["installed"] && $plugin["enabled"] && file_exists($functions_file)){ - require $functions_file; - } - } - } - } - $FOUND = false; - $functions_file = $this->path("mw_dir")."app/out/".$this->config("out")."/functions.php"; - if(file_exists($functions_file)){ - $FOUND = true; - require $functions_file; - } - if(!$FOUND){ - $functions_file = $this->path("mw_dir")."app/out/".$this->config("default_out")."/functions.php"; - if(file_exists($functions_file)){ - require $functions_file; - } - } - if($layout["page"]){ - if($this->out_file_exists($layout["page"])) require $this->out_file($layout["page"]); - } - elseif($layout["content"]){ - if($this->out_file_exists($layout["content"])) require $this->out_file($layout["content"]); - } - } - } - - function init_layout(){ + public function init_layout(){ $this->layout = array(); $this->_init_layout("index"); if(($mod = $this->etat("mod")) != "index") $this->_init_layout($mod); return $this->get_layout(); } - function _init_layout($mod){ + public function _init_layout($mod){ if(($plugins = $this->plugins("ASC")) !== false){ $layout_file = false; $tmp_layout_file = $this->path("mw_dir")."app/out/".$this->config("out")."/layouts/".$mod.".xml"; @@ -226,7 +264,7 @@ } } - function load_layout($layout_file){ + public function load_layout($layout_file){ if(file_exists($layout_file)){ $xml_parser = new sxml(); $xml_parser->parse(file_get_contents($layout_file)); @@ -273,7 +311,7 @@ return false; } - function get_layout(){ + public function get_layout(){ $mod = $this->etat("mod"); $controller = $this->etat("controller"); $action = $this->etat("action"); @@ -323,4 +361,68 @@ } -?> \ No newline at end of file + // ------------------------------------------------------------------------------------------- + // class mw_template + // + + class mw_template extends empty_class{ + + public $out; + public $ENV_SET; + public $template_infos; + + public function set_env(&$env){ + $this->modules = array("env" => $env); + $this->ENV_SET = true; + $this->set_out_config($this->get_out_config()); + $this->set_template_infos($this->get_template_infos()); + } + + public function render_layout($layout = null){ + if(!isset($this->ENV_SET) || !$this->ENV_SET) return false; + if(!isset($layout)) $layout = $this->init_layout(); + $this->out = $this->get_out(); + $this->init(); + if( + ($init_script = $this->init_script()) + && $this->out_file_exists($init_script) + ) require $this->out_file($init_script); + $data = $this->data(); + if($layout["page"]){ + if($this->out_file_exists($layout["page"])) require $this->out_file($layout["page"]); + } + elseif($layout["content"]){ + if($this->out_file_exists($layout["content"])) require $this->out_file($layout["content"]); + } + } + + public function get_template_info($key){ + return isset($this->template_infos[$key]) ? $this->template_infos[$key] : ""; + } + + public function init(){ + return true; + } + + public function init_script(){ + return false; + } + + public function get_out_config(){ + $out_config = array(); + if($this->ENV_SET){ + $env = $this->modules["env"]; + $out_config = $env->get_out_config(); + } + return $out_config; + } + + public function set_template_infos($template_infos){ + $this->template_infos = $template_infos; + } + + public function get_template_infos(){ + return array(); + } + + }