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;
}
// 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){
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) != "." && !in_array($file, $pathes)) $pathes[] = $file;
// 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;
}
// ---------------------------------------------------------------------------------
+ // 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;
}
// 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";
}
}
- 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));
return false;
}
- function get_layout(){
+ public function get_layout(){
$mod = $this->etat("mod");
$controller = $this->etat("controller");
$action = $this->etat("action");
}
-?>
\ 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();
+ }
+
+ }