X-Git-Url: http://git.dj3c1t.com/?a=blobdiff_plain;f=mw%2Fenv%2Fmodules%2Fmw_env_out.php;h=998f48993a6e69475b272df47fe96da48747ce94;hb=0ada6496e6c552c473a5816734b38896ccdd345b;hp=12ab2ed848274e67ac7f90ea0f442274820911d0;hpb=36ed114046cbe3d72a3589230e9f306a54fcc79d;p=mtweb diff --git a/mw/env/modules/mw_env_out.php b/mw/env/modules/mw_env_out.php index 12ab2ed..998f489 100644 --- a/mw/env/modules/mw_env_out.php +++ b/mw/env/modules/mw_env_out.php @@ -6,6 +6,11 @@ var $out_config; var $layout; + var $js_files; + var $css_files; + + var $template; + // --------------------------------------------------------------------------------- // out vars // @@ -27,11 +32,42 @@ // templates // + 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; + } + + function get_template(){ + if(isset($this->template)) return $this->template; + $this->template = $this->_get_template(); + return $this->template; + } + + 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; + } + function out_pathes(){ $pathes = array(); if(($plugins = $this->plugins()) !== false){ foreach($plugins as $plugin_name => $plugin){ - $out_dir = $this->path("mw_dir")."plugins/".$plugin_name."/out/"; + $out_dir = $this->path("mw_dir")."plugins/".$plugin_name."/app/out/"; if( $plugin["installed"] && $plugin["enabled"] @@ -42,7 +78,7 @@ } } if($pathes !== false){ - $pathes = $this->_out_pathes($this->path("mw_dir")."out/", $pathes); + $pathes = $this->_out_pathes($this->path("mw_dir")."app/out/", $pathes); } } else $pathes = false; @@ -52,7 +88,7 @@ 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); } @@ -76,18 +112,18 @@ 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"){ $out_file = false; if($PRIORITE == "ASC"){ - $tmp_out_file = "out/".$this->config("out")."/".$file; + $tmp_out_file = "app/out/".$this->config("out")."/".$file; if($file && file_exists($this->path("mw_dir").$tmp_out_file)){ $out_file = $tmp_out_file; } if(!$out_file){ - $tmp_out_file = "out/".$this->config("default_out")."/".$file; + $tmp_out_file = "app/out/".$this->config("default_out")."/".$file; if($file && file_exists($this->path("mw_dir").$tmp_out_file)){ $out_file = $tmp_out_file; } @@ -96,13 +132,13 @@ if($out_file) return $out_file; if(($plugins = $this->plugins($PRIORITE)) !== false){ foreach($plugins as $plugin_name => $plugin){ - $tmp_out_file = "plugins/".$plugin_name."/out/".$this->config("out")."/".$file; + $tmp_out_file = "plugins/".$plugin_name."/app/out/".$this->config("out")."/".$file; if($file && $plugin["installed"] && $plugin["enabled"] && file_exists($this->path("mw_dir").$tmp_out_file)){ $out_file = $tmp_out_file; break; } if(!$out_file){ - $tmp_out_file = "plugins/".$plugin_name."/out/".$this->config("default_out")."/".$file; + $tmp_out_file = "plugins/".$plugin_name."/app/out/".$this->config("default_out")."/".$file; if($file && $plugin["installed"] && $plugin["enabled"] && file_exists($this->path("mw_dir").$tmp_out_file)){ $out_file = $tmp_out_file; break; @@ -110,12 +146,12 @@ } } if($PRIORITE == "DESC" && !$out_file){ - $tmp_out_file = "out/".$this->config("out")."/".$file; + $tmp_out_file = "app/out/".$this->config("out")."/".$file; if($file && file_exists($this->path("mw_dir").$tmp_out_file)){ $out_file = $tmp_out_file; } if(!$out_file){ - $tmp_out_file = "out/".$this->config("default_out")."/".$file; + $tmp_out_file = "app/out/".$this->config("default_out")."/".$file; if($file && file_exists($this->path("mw_dir").$tmp_out_file)){ $out_file = $tmp_out_file; } @@ -126,6 +162,50 @@ } // --------------------------------------------------------------------------------- + // js / css files + // + + 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; + } + + function add_js_file($url){ + if(!isset($this->js_files)) $this->js_files = array(); + $this->js_files[$url] = true; + } + + function remove_js_file($url){ + if(isset($this->js_files) && isset($this->js_files[$url])){ + unset($this->js_files[$url]); + } + } + + 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; + } + + function add_css_file($url){ + if(!isset($this->css_files)) $this->css_files = array(); + $this->css_files[$url] = true; + } + + function remove_css_file($url){ + if(isset($this->css_files) && isset($this->css_files[$url])){ + unset($this->css_files[$url]); + } + } + + // --------------------------------------------------------------------------------- // out config // @@ -141,7 +221,7 @@ 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; } @@ -154,46 +234,6 @@ 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."/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."/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")."out/".$this->config("out")."/functions.php"; - if(file_exists($functions_file)){ - $FOUND = true; - require $functions_file; - } - if(!$FOUND){ - $functions_file = $this->path("mw_dir")."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(){ $this->layout = array(); $this->_init_layout("index"); @@ -204,20 +244,20 @@ function _init_layout($mod){ if(($plugins = $this->plugins("ASC")) !== false){ $layout_file = false; - $tmp_layout_file = $this->path("mw_dir")."out/".$this->config("out")."/layouts/".$mod.".xml"; + $tmp_layout_file = $this->path("mw_dir")."app/out/".$this->config("out")."/layouts/".$mod.".xml"; if(file_exists($tmp_layout_file)) $layout_file = $tmp_layout_file; if(!$layout_file){ - $tmp_layout_file = $this->path("mw_dir")."out/".$this->config("default_out")."/layouts/".$mod.".xml"; + $tmp_layout_file = $this->path("mw_dir")."app/out/".$this->config("default_out")."/layouts/".$mod.".xml"; if(file_exists($tmp_layout_file)) $layout_file = $tmp_layout_file; } if($layout_file) $this->load_layout($layout_file); foreach($plugins as $plugin_name => $plugin){ if($plugin["installed"] && $plugin["enabled"]){ $layout_file = false; - $tmp_layout_file = $this->path("mw_dir")."plugins/".$plugin_name."/out/".$this->config("out")."/layouts/".$mod.".xml"; + $tmp_layout_file = $this->path("mw_dir")."plugins/".$plugin_name."/app/out/".$this->config("out")."/layouts/".$mod.".xml"; if(file_exists($tmp_layout_file)) $layout_file = $tmp_layout_file; if(!$layout_file){ - $tmp_layout_file = $this->path("mw_dir")."plugins/".$plugin_name."/out/".$this->config("default_out")."/layouts/".$mod.".xml"; + $tmp_layout_file = $this->path("mw_dir")."plugins/".$plugin_name."/app/out/".$this->config("default_out")."/layouts/".$mod.".xml"; if(file_exists($tmp_layout_file)) $layout_file = $tmp_layout_file; } if($layout_file) $this->load_layout($layout_file); @@ -323,4 +363,66 @@ } + class mw_template extends empty_class{ + + var $out; + var $ENV_SET; + var $template_infos; + + 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()); + } + + 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"]); + } + } + + function get_template_info($key){ + return isset($this->template_infos[$key]) ? $this->template_infos[$key] : ""; + } + + function init(){ + return true; + } + + function init_script(){ + return false; + } + + function get_out_config(){ + $out_config = array(); + if($this->ENV_SET){ + $env = $this->modules["env"]; + $out_config = $env->get_out_config(); + } + return $out_config; + } + + function set_template_infos($template_infos){ + $this->template_infos = $template_infos; + } + + function get_template_infos(){ + return array(); + } + + } + ?> \ No newline at end of file