mirror of
https://github.com/e107inc/e107.git
synced 2025-08-02 20:57:26 +02:00
featurebox front-end - done, dynamic part and cleanup in progress
This commit is contained in:
@@ -9,8 +9,8 @@
|
|||||||
* e107 Main
|
* e107 Main
|
||||||
*
|
*
|
||||||
* $Source: /cvs_backup/e107_0.8/e107_handlers/e107_class.php,v $
|
* $Source: /cvs_backup/e107_0.8/e107_handlers/e107_class.php,v $
|
||||||
* $Revision: 1.89 $
|
* $Revision: 1.90 $
|
||||||
* $Date: 2009-12-08 17:21:32 $
|
* $Date: 2009-12-09 18:33:43 $
|
||||||
* $Author: secretr $
|
* $Author: secretr $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -1214,15 +1214,27 @@ class e107
|
|||||||
* @param string $id - file prefix, e.g. user for user_template.php
|
* @param string $id - file prefix, e.g. user for user_template.php
|
||||||
* @param string|null $key
|
* @param string|null $key
|
||||||
* @param boolean $override see {@link getThemeInfo())
|
* @param boolean $override see {@link getThemeInfo())
|
||||||
*
|
* @param boolean $merge merge theme with core templates, default is false
|
||||||
* @return string|array
|
* @return string|array
|
||||||
*/
|
*/
|
||||||
public static function getCoreTemplate($id, $key = null, $override = true)
|
public static function getCoreTemplate($id, $key = null, $override = true, $merge = false)
|
||||||
{
|
{
|
||||||
$reg_path = 'core/e107/templates/'.$id.($override ? '/ext' : '');
|
$reg_path = 'core/e107/templates/'.$id.($override ? '/ext' : '');
|
||||||
$path = self::coreTemplatePath($id, $override);
|
$path = self::coreTemplatePath($id, $override);
|
||||||
$id = str_replace('/', '_', $id);
|
$id = str_replace('/', '_', $id);
|
||||||
return self::_getTemplate($id, $key, $reg_path, $path);
|
$ret = self::_getTemplate($id, $key, $reg_path, $path);
|
||||||
|
if(!$merge || !$override || !is_array($ret))
|
||||||
|
{
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// merge
|
||||||
|
$reg_path = 'core/e107/templates/'.$id;
|
||||||
|
$path = self::coreTemplatePath($id, false);
|
||||||
|
$id = str_replace('/', '_', $id);
|
||||||
|
$ret_core = self::_getTemplate($id, $key, $reg_path, $path);
|
||||||
|
|
||||||
|
return (is_array($ret_core) ? array_merge($ret_core, $ret) : $ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1247,15 +1259,27 @@ class e107
|
|||||||
* @param string $id - file prefix, e.g. calendar for calendar_template.php
|
* @param string $id - file prefix, e.g. calendar for calendar_template.php
|
||||||
* @param string|null $key
|
* @param string|null $key
|
||||||
* @param boolean $override see {@link getThemeInfo())
|
* @param boolean $override see {@link getThemeInfo())
|
||||||
*
|
* @param boolean $merge merge theme with plugin templates, default is false
|
||||||
* @return string|array
|
* @return string|array
|
||||||
*/
|
*/
|
||||||
public static function getTemplate($plug_name, $id, $key = null, $override = true)
|
public static function getTemplate($plug_name, $id, $key = null, $override = true, $merge = false)
|
||||||
{
|
{
|
||||||
$reg_path = 'plugin/'.$plug_name.'/templates/'.$id.($override ? '/ext' : '');
|
$reg_path = 'plugin/'.$plug_name.'/templates/'.$id.($override ? '/ext' : '');
|
||||||
$path = self::templatePath($plug_name, $id, $override);
|
$path = self::templatePath($plug_name, $id, $override);
|
||||||
$id = str_replace('/', '_', $id);
|
$id = str_replace('/', '_', $id);
|
||||||
return self::_getTemplate($id, $key, $reg_path, $path);
|
$ret = self::_getTemplate($id, $key, $reg_path, $path);
|
||||||
|
if(!$merge || !$override || !is_array($ret))
|
||||||
|
{
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// merge
|
||||||
|
$reg_path = 'plugin/'.$plug_name.'/templates/'.$id;
|
||||||
|
$path = self::templatePath($plug_name, $id, false);
|
||||||
|
$id = str_replace('/', '_', $id);
|
||||||
|
$ret_plug = self::_getTemplate($id, $key, $reg_path, $path);
|
||||||
|
|
||||||
|
return (is_array($ret_plug) ? array_merge($ret_plug, $ret) : $ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1263,22 +1287,30 @@ class e107
|
|||||||
* @param string $plugin_name
|
* @param string $plugin_name
|
||||||
* @param string $template_id [optional] if different from $plugin_name;
|
* @param string $template_id [optional] if different from $plugin_name;
|
||||||
* @param mixed $where true - current theme, 'admin' - admin theme, 'front' (default) - front theme
|
* @param mixed $where true - current theme, 'admin' - admin theme, 'front' (default) - front theme
|
||||||
|
* @param boolean $merge merge theme with core/plugin layouts, default is false
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public static function getLayouts($plugin_name, $template_id = '', $where = 'front', $filter_mask = '')
|
public static function getLayouts($plugin_name, $template_id = '', $where = 'front', $filter_mask = '', $merge = false)
|
||||||
{
|
{
|
||||||
if(!$plugin_name) // Core template
|
if(!$plugin_name) // Core template
|
||||||
{
|
{
|
||||||
$tmp = self::getCoreTemplate($template_id, null, $where);
|
$tmp = self::getCoreTemplate($template_id, null, $where, $merge);
|
||||||
}
|
}
|
||||||
else // Plugin template
|
else // Plugin template
|
||||||
{
|
{
|
||||||
$id = (!$template_id) ? $plugin_name : $template_id;
|
$id = (!$template_id) ? $plugin_name : $template_id;
|
||||||
$tmp = self::getTemplate($plugin_name, $id, null, $where);
|
$tmp = self::getTemplate($plugin_name, $id, null, $where, $merge);
|
||||||
}
|
}
|
||||||
|
|
||||||
$templates = array();
|
$templates = array();
|
||||||
$filter_mask = $filter_mask ? explode(',', $filter_mask) : array();
|
if(!$filter_mask)
|
||||||
|
{
|
||||||
|
$filter_mask = array();
|
||||||
|
}
|
||||||
|
elseif(!is_array($filter_mask))
|
||||||
|
{
|
||||||
|
$filter_mask = array($filter_mask);
|
||||||
|
}
|
||||||
foreach($tmp as $key => $val)
|
foreach($tmp as $key => $val)
|
||||||
{
|
{
|
||||||
// Special key INFO in format aray('layout' => array(info))
|
// Special key INFO in format aray('layout' => array(info))
|
||||||
@@ -1292,7 +1324,7 @@ class e107
|
|||||||
$match = false;
|
$match = false;
|
||||||
foreach ($filter_mask as $mask)
|
foreach ($filter_mask as $mask)
|
||||||
{
|
{
|
||||||
if(strpos($key, $mask) === 0) //e.g. retrieve only keys starting with 'layout_'
|
if(preg_match($mask, $key)) //e.g. retrieve only keys starting with 'layout_'
|
||||||
{
|
{
|
||||||
$match = true;
|
$match = true;
|
||||||
break;
|
break;
|
||||||
@@ -1300,9 +1332,9 @@ class e107
|
|||||||
}
|
}
|
||||||
if(!$match) continue;
|
if(!$match) continue;
|
||||||
}
|
}
|
||||||
if(isset($val['__INFO__'][$key]))
|
if(isset($tmp['__INFO__'][$key]))
|
||||||
{
|
{
|
||||||
$templates[$key] = defset($val['__INFO__'][$key]['title'], $val['__INFO__'][$key]['title']);
|
$templates[$key] = defset($tmp['__INFO__'][$key]['title'], $tmp['__INFO__'][$key]['title']);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$templates[$key] = implode(' ', array_map('ucfirst', explode('_', $key))); //TODO add LANS?
|
$templates[$key] = implode(' ', array_map('ucfirst', explode('_', $key))); //TODO add LANS?
|
||||||
|
@@ -9,8 +9,8 @@
|
|||||||
* Form Handler
|
* Form Handler
|
||||||
*
|
*
|
||||||
* $Source: /cvs_backup/e107_0.8/e107_handlers/form_handler.php,v $
|
* $Source: /cvs_backup/e107_0.8/e107_handlers/form_handler.php,v $
|
||||||
* $Revision: 1.93 $
|
* $Revision: 1.94 $
|
||||||
* $Date: 2009-11-28 15:34:46 $
|
* $Date: 2009-12-09 18:33:41 $
|
||||||
* $Author: secretr $
|
* $Author: secretr $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -130,7 +130,7 @@ class e_form
|
|||||||
$parms .= "&default=".rawurlencode($default);
|
$parms .= "&default=".rawurlencode($default);
|
||||||
$parms .= "&multiple=FALSE";
|
$parms .= "&multiple=FALSE";
|
||||||
$parms .= "&label=-- ".$label." --";
|
$parms .= "&label=-- ".$label." --";
|
||||||
$parms .= "&subdirs=0";
|
$parms .= "&subdirs=".varset($sc_parameters['subdirs'], 1);
|
||||||
$parms .= '&width='.vartrue($sc_parameters['width'], 150).'px';
|
$parms .= '&width='.vartrue($sc_parameters['width'], 150).'px';
|
||||||
if(vartrue($sc_parameters['height'])) $parms .= '&height='.$sc_parameters['height'].'px';
|
if(vartrue($sc_parameters['height'])) $parms .= '&height='.$sc_parameters['height'].'px';
|
||||||
//$parms .= "&tabindex=".$this->getNext();
|
//$parms .= "&tabindex=".$this->getNext();
|
||||||
@@ -1326,8 +1326,9 @@ class e_form
|
|||||||
$ilocation = vartrue($parms['id'], $location); // omit if same as plugin name
|
$ilocation = vartrue($parms['id'], $location); // omit if same as plugin name
|
||||||
$where = vartrue($parms['area'], 'front'); //default is 'front'
|
$where = vartrue($parms['area'], 'front'); //default is 'front'
|
||||||
$filter = varset($parms['filter']);
|
$filter = varset($parms['filter']);
|
||||||
$layouts = e107::getLayouts($location, $ilocation, $where, $filter);
|
$merge = vartrue($parms['merge']) ? true : false;
|
||||||
if(varset($parms['default']))
|
$layouts = e107::getLayouts($location, $ilocation, $where, $filter, $merge);
|
||||||
|
if(varset($parms['default']) && !isset($layouts['default']))
|
||||||
{
|
{
|
||||||
$layouts = array('default' => $parms['default']) + $layouts;
|
$layouts = array('default' => $parms['default']) + $layouts;
|
||||||
}
|
}
|
||||||
|
@@ -1,20 +1,18 @@
|
|||||||
<?php
|
<?php
|
||||||
/*
|
/*
|
||||||
+ ----------------------------------------------------------------------------+
|
* e107 website system
|
||||||
| e107 website system
|
*
|
||||||
|
|
* Copyright (c) 2008-2009 e107 Inc (e107.org)
|
||||||
| Copyright (C) 2008-2009 e107 Inc (e107.org)
|
* Released under the terms and conditions of the
|
||||||
| http://e107.org
|
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
|
||||||
|
|
*
|
||||||
|
|
* Featurebox administration
|
||||||
| Released under the terms and conditions of the
|
*
|
||||||
| GNU General Public License (http://gnu.org).
|
* $Source: /cvs_backup/e107_0.8/e107_plugins/featurebox/admin_config.php,v $
|
||||||
|
|
* $Revision: 1.12 $
|
||||||
| $Source: /cvs_backup/e107_0.8/e107_plugins/featurebox/admin_config.php,v $
|
* $Date: 2009-12-09 18:33:40 $
|
||||||
| $Revision: 1.11 $
|
* $Author: secretr $
|
||||||
| $Date: 2009-11-28 15:34:46 $
|
*
|
||||||
| $Author: secretr $
|
|
||||||
+----------------------------------------------------------------------------+
|
|
||||||
*/
|
*/
|
||||||
require_once("../../class2.php");
|
require_once("../../class2.php");
|
||||||
if (!getperms("P") || !plugInstalled('featurebox'))
|
if (!getperms("P") || !plugInstalled('featurebox'))
|
||||||
@@ -23,7 +21,7 @@ if (!getperms("P") || !plugInstalled('featurebox'))
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
include_lan(e_PLUGIN."featurebox/languages/".e_LANGUAGE."_admin_featurebox.php");
|
e107::includeLan(e_PLUGIN.'featurebox/languages/'.e_LANGUAGE.'_admin_featurebox.php');
|
||||||
|
|
||||||
class fb_admin extends e_admin_dispatcher
|
class fb_admin extends e_admin_dispatcher
|
||||||
{
|
{
|
||||||
@@ -69,15 +67,15 @@ class fb_category_ui extends e_admin_ui
|
|||||||
protected $perPage = 0; //no limit
|
protected $perPage = 0; //no limit
|
||||||
|
|
||||||
protected $fields = array(
|
protected $fields = array(
|
||||||
'checkboxes' => array('title'=> '', 'type' => null, 'width' =>'5%', 'forced'=> TRUE, 'thclass'=>'center', 'class'=>'center first'),
|
'checkboxes' => array('title'=> '', 'type' => null, 'width' =>'5%', 'forced'=> TRUE, 'thclass'=>'center', 'class'=>'center first'),
|
||||||
'fb_category_id' => array('title'=> LAN_ID, 'type' => 'number', 'data' => 'int', 'width' =>'5%', 'forced'=> TRUE),
|
'fb_category_id' => array('title'=> LAN_ID, 'type' => 'number', 'data' => 'int', 'width' =>'5%', 'forced'=> TRUE),
|
||||||
'fb_category_icon' => array('title'=> LAN_ICON, 'type' => 'icon', 'data' => 'str', 'width' => '5%', 'thclass' => 'center', 'class'=>'center'),
|
'fb_category_icon' => array('title'=> LAN_ICON, 'type' => 'icon', 'data' => 'str', 'width' => '5%', 'thclass' => 'center', 'class'=>'center'),
|
||||||
'fb_category_title' => array('title'=> LAN_TITLE, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'validate' => 'str', 'rule' => '1-200', 'error' => 'String between 1-200 characters expected', 'help' => 'up to 200 characters', 'thclass' => 'left'),
|
'fb_category_title' => array('title'=> LAN_TITLE, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'validate' => 'str', 'rule' => '1-200', 'error' => 'String between 1-200 characters expected', 'help' => 'up to 200 characters', 'thclass' => 'left'),
|
||||||
'fb_category_layout' => array('title'=> 'Render type', 'type' => 'templates', 'data' => 'str', 'width' => 'auto', 'thclass' => 'left', 'writeParms' => 'plugin=featurebox&location=layout&default=Default', 'filter' => true),
|
'fb_category_template' => array('title'=> 'Category template', 'type' => 'layouts', 'data' => 'str', 'width' => 'auto', 'thclass' => 'left', 'writeParms' => 'plugin=featurebox&id=featurebox_category&merge=1', 'filter' => true),
|
||||||
'fb_category_random' => array('title'=> 'Random', 'type' => 'boolean', 'data' => 'int', 'width' => '5%', 'thclass' => 'center', 'class' => 'center', 'batch' => true, 'filter' => true),
|
'fb_category_random' => array('title'=> 'Random', 'type' => 'boolean', 'data' => 'int', 'width' => '5%', 'thclass' => 'center', 'class' => 'center', 'batch' => true, 'filter' => true),
|
||||||
'fb_category_class' => array('title'=> LAN_VISIBILITY, 'type' => 'userclass', 'data' => 'int', 'width' => 'auto'),
|
'fb_category_class' => array('title'=> LAN_VISIBILITY, 'type' => 'userclass', 'data' => 'int', 'width' => 'auto'),
|
||||||
'fb_category_limit' => array('title'=> 'Limit', 'type' => 'number', 'data' => 'int', 'width' => '5%', 'thclass' => 'left', 'help' => 'number of items to be shown, 0 - show all'),
|
'fb_category_limit' => array('title'=> 'Limit', 'type' => 'number', 'data' => 'int', 'width' => '5%', 'thclass' => 'left', 'help' => 'number of items to be shown, 0 - show all'),
|
||||||
'options' => array('title'=> LAN_OPTIONS, 'type' => null, 'width' => '10%', 'forced'=>TRUE, 'thclass' => 'center last', 'class' => 'center')
|
'options' => array('title'=> LAN_OPTIONS, 'type' => null, 'width' => '10%', 'forced'=>TRUE, 'thclass' => 'center last', 'class' => 'center')
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -132,9 +130,9 @@ class fb_category_ui extends e_admin_ui
|
|||||||
{
|
{
|
||||||
if($this->getModel()->getSqlErrorNumber() == 1062)
|
if($this->getModel()->getSqlErrorNumber() == 1062)
|
||||||
{
|
{
|
||||||
$templates = $this->getFieldAttr('fb_category_layout', 'writeParms', array());
|
$templates = $this->getFieldAttr('fb_category_template', 'writeParms', array());
|
||||||
$msg = e107::getMessage();
|
$msg = e107::getMessage();
|
||||||
$msg->error('Layout <strong>'.vartrue($templates[$new_data['fb_category_layout']], 'n/a').'</strong> is in use by another category. Layout should be unique per category. ');
|
$msg->error('Layout <strong>'.vartrue($templates[$new_data['fb_category_template']], 'n/a').'</strong> is in use by another category. Layout should be unique per category. ');
|
||||||
$msg->error($mod == 'create' ? LAN_CREATED_FAILED : LAN_UPDATED_FAILED);
|
$msg->error($mod == 'create' ? LAN_CREATED_FAILED : LAN_UPDATED_FAILED);
|
||||||
|
|
||||||
return (!E107_DEBUG_LEVEL); // suppress messages (TRUE) only when not in debug mod
|
return (!E107_DEBUG_LEVEL); // suppress messages (TRUE) only when not in debug mod
|
||||||
@@ -173,13 +171,9 @@ class fb_main_ui extends e_admin_ui
|
|||||||
'options' => array('title'=> LAN_OPTIONS, 'type' => null, 'forced'=>TRUE, 'width' => '10%', 'thclass' => 'center last', 'class' => 'center')
|
'options' => array('title'=> LAN_OPTIONS, 'type' => null, 'forced'=>TRUE, 'width' => '10%', 'thclass' => 'center last', 'class' => 'center')
|
||||||
);
|
);
|
||||||
|
|
||||||
// protected $fieldpref = array('checkboxes', 'comment_id', 'comment_item_id', 'comment_author_id', 'comment_author_name', 'comment_subject', 'comment_comment', 'comment_type', 'options');
|
protected $fieldpref = array('checkboxes', 'fb_id', 'fb_category', 'fb_title', 'fb_template', 'fb_class', 'fb_order', 'options');
|
||||||
|
|
||||||
protected $prefs = array(
|
protected $prefs = array();
|
||||||
'fb_active' => array('title'=> 'Allow submitting of fbs by:', 'type'=>'userclass'),
|
|
||||||
'submit_question' => array('title'=> 'Allow submitting of Questions by:', 'type'=>'userclass'),
|
|
||||||
'classic_look' => array('title'=> 'Use Classic Layout', 'type'=>'boolean')
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -188,7 +182,7 @@ class fb_main_ui extends e_admin_ui
|
|||||||
$categories = array();
|
$categories = array();
|
||||||
if(e107::getDb()->db_Select('featurebox_category'))
|
if(e107::getDb()->db_Select('featurebox_category'))
|
||||||
{
|
{
|
||||||
$categories[0] = LAN_SELECT;
|
//$categories[0] = LAN_SELECT;
|
||||||
while ($row = e107::getDb()->db_Fetch())
|
while ($row = e107::getDb()->db_Fetch())
|
||||||
{
|
{
|
||||||
$id = $row['fb_category_id'];
|
$id = $row['fb_category_id'];
|
||||||
|
@@ -1,27 +1,48 @@
|
|||||||
<?php
|
<?php
|
||||||
/*
|
/*
|
||||||
* Copyright (c) e107 Inc 2009 - e107.org, Licensed under GNU GPL (http://www.gnu.org/licenses/gpl.txt)
|
* Copyright (c) e107 Inc 2009 - e107.org, Licensed under GNU GPL (http://www.gnu.org/licenses/gpl.txt)
|
||||||
* $Id: e_shortcode.php,v 1.2 2009-12-08 17:21:30 secretr Exp $
|
* $Id: e_shortcode.php,v 1.3 2009-12-09 18:33:37 secretr Exp $
|
||||||
*
|
*
|
||||||
* Featurebox shortcode batch class - shortcodes available site-wide. ie. equivalent to multiple .sc files.
|
* Featurebox shortcode batch class - shortcodes available site-wide. ie. equivalent to multiple .sc files.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
if (!defined('e107_INIT')) { exit; }
|
||||||
|
|
||||||
|
e107::includeLan(e_PLUGIN.'featurebox/languages/'.e_LANGUAGE.'_front_featurebox.php');
|
||||||
|
|
||||||
class featurebox_shortcodes // must match the plugin's folder name. ie. [PLUGIN_FOLDER]_shortcodes
|
class featurebox_shortcodes // must match the plugin's folder name. ie. [PLUGIN_FOLDER]_shortcodes
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Available parameters (GET string format)
|
||||||
|
* - cols (integer): number of items per column, default 1
|
||||||
|
* - no_fill_empty (boolean): don't fill last column with empty items (if required), default 0
|
||||||
|
* - tablestyle (string): mode to be used with <code>tablerender()</code>, default 'featurebox'
|
||||||
|
* - notablestyle (null): if isset - disable <code>tablerender()</code>
|
||||||
|
*
|
||||||
|
* @param string $parm parameters
|
||||||
|
* @param string $mod category template
|
||||||
|
*/
|
||||||
function sc_featurebox($parm, $mod = '')
|
function sc_featurebox($parm, $mod = '')
|
||||||
{
|
{
|
||||||
// TODO cache
|
// TODO cache
|
||||||
|
if(!e107::isInstalled('featurebox')) //just in case
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
if(!$mod)
|
if(!$mod)
|
||||||
{
|
{
|
||||||
$clayout = 'default';
|
$ctemplate = 'default';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$clayout = $mod;
|
$ctemplate = $mod;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parse_str($parm, $parm);
|
||||||
|
|
||||||
$category = new plugin_featurebox_category();
|
$category = new plugin_featurebox_category();
|
||||||
$category->loadByLayout($clayout);
|
$category->loadByTemplate($ctemplate);
|
||||||
if(!$category->hasData())
|
if(!$category->hasData())
|
||||||
{
|
{
|
||||||
return '';
|
return '';
|
||||||
@@ -33,16 +54,15 @@ class featurebox_shortcodes // must match the plugin's folder name. ie. [PLUGIN_
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$tmpl = e107::getTemplate('featurebox', 'layout/'.$category->get('fb_category_layout'));
|
$tmpl = $this->getFboxTemplate($category);
|
||||||
if(!$tmpl)
|
|
||||||
{
|
|
||||||
$tmpl = e107::getTemplate('featurebox', 'layout/default');
|
|
||||||
}
|
|
||||||
|
|
||||||
$tp = e107::getParser();
|
$tp = e107::getParser();
|
||||||
$ret = array();
|
$ret = array();
|
||||||
|
|
||||||
|
$cols = intval(vartrue($parm['cols'], 1));
|
||||||
$counter = 1;
|
$counter = 1;
|
||||||
|
$col_counter = 1;
|
||||||
|
$total = count($tree->getTree());
|
||||||
foreach ($tree->getTree() as $id => $node)
|
foreach ($tree->getTree() as $id => $node)
|
||||||
{
|
{
|
||||||
$tmpl_item = e107::getTemplate('featurebox', 'featurebox', $node->get('fb_template'));
|
$tmpl_item = e107::getTemplate('featurebox', 'featurebox', $node->get('fb_template'));
|
||||||
@@ -51,14 +71,133 @@ class featurebox_shortcodes // must match the plugin's folder name. ie. [PLUGIN_
|
|||||||
$tmpl_item = e107::getTemplate('featurebox', 'featurebox', 'default');
|
$tmpl_item = e107::getTemplate('featurebox', 'featurebox', 'default');
|
||||||
}
|
}
|
||||||
|
|
||||||
$ret[] = $node->setParam('counter', $counter)
|
// reset column counter
|
||||||
|
if($col_counter > $cols)
|
||||||
|
{
|
||||||
|
$col_counter = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// add column start
|
||||||
|
if(1 == $col_counter && vartrue($tmpl['col_start']))
|
||||||
|
{
|
||||||
|
$tmpl_item = $tmpl['col_start'].$tmpl_item;
|
||||||
|
}
|
||||||
|
|
||||||
|
// there is more
|
||||||
|
if(($total - $counter) > 0)
|
||||||
|
{
|
||||||
|
// add column end if column end reached
|
||||||
|
if($cols == $col_counter && vartrue($tmpl['col_end']))
|
||||||
|
{
|
||||||
|
$tmpl_item .= $tmpl['col_end'];
|
||||||
|
}
|
||||||
|
// else add item separator
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$tmpl_item .= $ret['item_separator'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// no more items - clean & close
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$empty_cnt = $cols - $col_counter;
|
||||||
|
if($empty_cnt > 0 && !isset($parm['no_fill_empty']))
|
||||||
|
{
|
||||||
|
// empty items fill
|
||||||
|
for ($index = 1; $index <= $empty_cnt; $index++)
|
||||||
|
{
|
||||||
|
$tmpl_item .= $ret['item_separator'].varset($ret['item_empty'], '<div><!-- --></div>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// add column end
|
||||||
|
$tmpl_item .= varset($tmpl['col_end']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$ret[$counter] = $node->setParam('counter', $counter)
|
||||||
->setCategory($category)
|
->setCategory($category)
|
||||||
->toHTML($tmpl_item);
|
->toHTML($tmpl_item);
|
||||||
|
|
||||||
//$ret[] = $node->toHTML($tmpl_item);
|
|
||||||
$counter++;
|
$counter++;
|
||||||
|
$col_counter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $tp->parseTemplate($tmpl['list_start'], true, $category).implode($ret['item_separator'], $ret).$tp->parseTemplate($tmpl['list_end'], true, $category);
|
$ret = $tp->parseTemplate($tmpl['list_start'], true, $category).implode('', $ret).$tp->parseTemplate($tmpl['list_end'], true, $category);
|
||||||
|
if(isset($parm['notablestyle']))
|
||||||
|
{
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return e107::getRender()->tablerender(FBLAN_01, $ret, vartrue($parm['tablestyle'], 'featurebox'), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render featurebox navigation
|
||||||
|
* Available parameters (GET string format)
|
||||||
|
* - cols (integer): number of items per column, default 1
|
||||||
|
* - no_fill_empty (boolean): don't fill last column with empty items (if required), default 0
|
||||||
|
* - tablestyle (string): mode to be used with <code>tablerender()</code>, default 'featurebox'
|
||||||
|
* - notablestyle (null): if isset - disable <code>tablerender()</code>
|
||||||
|
*
|
||||||
|
* @param string $parm parameters
|
||||||
|
* @param string $mod category template
|
||||||
|
*/
|
||||||
|
function sc_featurebox_navigation($parm, $mod = '')
|
||||||
|
{
|
||||||
|
// TODO cache
|
||||||
|
if(!e107::isInstalled('featurebox')) //just in case
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!$mod)
|
||||||
|
{
|
||||||
|
$ctemplate = 'default';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$ctemplate = $mod;
|
||||||
|
}
|
||||||
|
|
||||||
|
parse_str($parm, $parm);
|
||||||
|
|
||||||
|
$category = new plugin_featurebox_category();
|
||||||
|
$category->loadByTemplate($ctemplate);
|
||||||
|
if(!$category->hasData())
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$tree = $category->getItemTree();
|
||||||
|
if($tree->isEmpty())
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$tmpl = $this->getFboxTemplate($category);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve template array by category
|
||||||
|
*
|
||||||
|
* @param plugin_featurebox_category $category
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getFboxTemplate($category)
|
||||||
|
{
|
||||||
|
$tmpl = e107::getTemplate('featurebox', 'featurebox_category', $category->get('fb_category_template'), 'front');
|
||||||
|
if(!$tmpl && e107::getTemplate('featurebox', 'featurebox_category', $category->get('fb_category_template'), false))
|
||||||
|
{
|
||||||
|
$tmpl = e107::getTemplate('featurebox', 'featurebox_category', $category->get('fb_category_template'), false); // plugin template
|
||||||
|
}
|
||||||
|
elseif(!$tmpl && e107::getTemplate('featurebox', 'featurebox_category', 'default'))
|
||||||
|
{
|
||||||
|
$tmpl = e107::getTemplate('featurebox', 'featurebox_category', 'default'); // theme/plugin default template
|
||||||
|
}
|
||||||
|
elseif(!$tmpl)
|
||||||
|
{
|
||||||
|
$tmpl = e107::getTemplate('featurebox', 'featurebox_category', 'default', false); //plugin default
|
||||||
|
}
|
||||||
|
return $tmpl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -9,8 +9,8 @@
|
|||||||
* Custom Featurebox install/uninstall/update routines
|
* Custom Featurebox install/uninstall/update routines
|
||||||
*
|
*
|
||||||
* $Source: /cvs_backup/e107_0.8/e107_plugins/featurebox/featurebox_setup.php,v $
|
* $Source: /cvs_backup/e107_0.8/e107_plugins/featurebox/featurebox_setup.php,v $
|
||||||
* $Revision: 1.3 $
|
* $Revision: 1.4 $
|
||||||
* $Date: 2009-12-08 17:21:31 $
|
* $Date: 2009-12-09 18:33:40 $
|
||||||
* $Author: secretr $
|
* $Author: secretr $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -34,7 +34,7 @@ class featurebox_setup
|
|||||||
$query = array();
|
$query = array();
|
||||||
$query['fb_category_id'] = 0;
|
$query['fb_category_id'] = 0;
|
||||||
$query['fb_category_title'] = 'General';
|
$query['fb_category_title'] = 'General';
|
||||||
$query['fb_category_layout'] = 'default';
|
$query['fb_category_template'] = 'default';
|
||||||
$query['fb_category_random'] = 0;
|
$query['fb_category_random'] = 0;
|
||||||
$query['fb_category_class'] = e_UC_PUBLIC;
|
$query['fb_category_class'] = e_UC_PUBLIC;
|
||||||
$query['fb_category_limit'] = 1;
|
$query['fb_category_limit'] = 1;
|
||||||
@@ -55,7 +55,7 @@ class featurebox_setup
|
|||||||
$query['fb_template'] = 'default';
|
$query['fb_template'] = 'default';
|
||||||
$query['fb_order'] = 0;
|
$query['fb_order'] = 0;
|
||||||
$query['fb_image'] = '';
|
$query['fb_image'] = '';
|
||||||
$query['fb_imageurl'] = 0;
|
$query['fb_imageurl'] = '';
|
||||||
$status = e107::getDb('sql2')->db_Insert('featurebox', $query) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR;
|
$status = e107::getDb('sql2')->db_Insert('featurebox', $query) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@@ -19,10 +19,10 @@ CREATE TABLE featurebox_category (
|
|||||||
`fb_category_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
|
`fb_category_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
`fb_category_title` varchar(200) NOT NULL DEFAULT '',
|
`fb_category_title` varchar(200) NOT NULL DEFAULT '',
|
||||||
`fb_category_icon` varchar(255) NOT NULL DEFAULT '',
|
`fb_category_icon` varchar(255) NOT NULL DEFAULT '',
|
||||||
`fb_category_layout` varchar(50) NOT NULL DEFAULT 'default',
|
`fb_category_template` varchar(50) NOT NULL DEFAULT 'default',
|
||||||
`fb_category_random` tinyint(1) unsigned NOT NULL DEFAULT '0',
|
`fb_category_random` tinyint(1) unsigned NOT NULL DEFAULT '0',
|
||||||
`fb_category_class` smallint(5) unsigned NOT NULL DEFAULT '0',
|
`fb_category_class` smallint(5) unsigned NOT NULL DEFAULT '0',
|
||||||
`fb_category_limit` tinyint(3) unsigned NOT NULL DEFAULT '1',
|
`fb_category_limit` tinyint(3) unsigned NOT NULL DEFAULT '1',
|
||||||
PRIMARY KEY (`fb_category_id`),
|
PRIMARY KEY (`fb_category_id`),
|
||||||
UNIQUE KEY `fb_category_layout` (`fb_category_layout`)
|
UNIQUE KEY `fb_category_template` (`fb_category_template`)
|
||||||
) TYPE=MyISAM;
|
) TYPE=MyISAM;
|
@@ -73,7 +73,7 @@ sup { font-size:1em; vertical-align:top; }
|
|||||||
ul,ol { list-style:none; }
|
ul,ol { list-style:none; }
|
||||||
|
|
||||||
/* Tools */
|
/* Tools */
|
||||||
.no-display { display:none; }
|
/*.no-display { display:none; }*/
|
||||||
.no-margin { margin:0 !important; }
|
.no-margin { margin:0 !important; }
|
||||||
.no-padding { padding:0 !important; }
|
.no-padding { padding:0 !important; }
|
||||||
.no-bg { background:none !important; }
|
.no-bg { background:none !important; }
|
||||||
@@ -125,7 +125,7 @@ select, .tbox, .helpbox {
|
|||||||
background:#fff;
|
background:#fff;
|
||||||
font:12px arial, helvetica, sans-serif;
|
font:12px arial, helvetica, sans-serif;
|
||||||
}
|
}
|
||||||
option { padding-right: 10px;}
|
option { padding-left: 10px;}
|
||||||
input.input-text, textarea, .tbox, .helpbox { padding:2px; }
|
input.input-text, textarea, .tbox, .helpbox { padding:2px; }
|
||||||
|
|
||||||
select.tbox { min-height:17px; padding: 0px; /* setting the height of empty selects */ }
|
select.tbox { min-height:17px; padding: 0px; /* setting the height of empty selects */ }
|
||||||
|
@@ -23,9 +23,9 @@
|
|||||||
.nowrap { white-space:nowrap; }
|
.nowrap { white-space:nowrap; }
|
||||||
|
|
||||||
/* Core Icons */
|
/* Core Icons */
|
||||||
img.icon { border: 0 }
|
img.icon { vertical-align: middle; border: 0 }
|
||||||
img.icon.list { margin: 0px 5px 5px 0px }
|
img.icon.list { margin: 0px 5px 5px 0px }
|
||||||
img.icon.action { vertical-align: middle }
|
img.icon.action { }
|
||||||
img.S16 { width: 16px; height: 16px }
|
img.S16 { width: 16px; height: 16px }
|
||||||
img.S32 { width: 32px; height: 32px }
|
img.S32 { width: 32px; height: 32px }
|
||||||
img.S64 { width: 64px; height: 64px }
|
img.S64 { width: 64px; height: 64px }
|
||||||
@@ -75,7 +75,7 @@ sup { font-size:1em; vertical-align:top; }
|
|||||||
ul,ol { list-style:none; }
|
ul,ol { list-style:none; }
|
||||||
|
|
||||||
/* Tools */
|
/* Tools */
|
||||||
.no-display { display:none; }
|
/*.no-display { display:none; }*/
|
||||||
.no-margin { margin:0 !important; }
|
.no-margin { margin:0 !important; }
|
||||||
.no-padding { padding:0 !important; }
|
.no-padding { padding:0 !important; }
|
||||||
.no-bg { background:none !important; }
|
.no-bg { background:none !important; }
|
||||||
@@ -91,8 +91,70 @@ pre {
|
|||||||
word-wrap: break-word; /* Internet Explorer 5.5+ */
|
word-wrap: break-word; /* Internet Explorer 5.5+ */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/********** Page Loading Status default style */
|
||||||
|
#loading-mask { color: #556B2F; font-size: 1.2em; font-weight:bold; position:absolute; text-align: center; padding: 0; margin: 0; background-color: transparent; }
|
||||||
|
#loading-mask .loader { position: fixed; top: 40%; left: 50%; width: 200px; text-align: center; background: #F0F9E3 none repeat scroll 0 0; border: 2px solid #556B2F; font-weight: bold; padding: 10px 5px; margin-left: -100px; margin-top: 0; }
|
||||||
|
#loading-mask img { margin: 10px auto; }
|
||||||
|
|
||||||
|
/********** Element Loading Status default style */
|
||||||
|
.element-loading-mask { background-repeat: no-repeat; background-position: 50% 50%; background-color: #f5f5f5; }
|
||||||
|
|
||||||
|
/********** Auto complete default style */
|
||||||
|
div.e-autocomplete {
|
||||||
|
position:absolute;
|
||||||
|
width:250px;
|
||||||
|
background-color:white;
|
||||||
|
border:1px solid #c0c0c0;
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
}
|
||||||
|
div.e-autocomplete ul {
|
||||||
|
list-style-type:none;
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
font-weight: bold; font-size: 11px
|
||||||
|
}
|
||||||
|
div.e-autocomplete ul li.selected { background-color: #f5f5f5;}
|
||||||
|
div.e-autocomplete ul li {
|
||||||
|
list-style-type:none;
|
||||||
|
display:block;
|
||||||
|
margin:0;
|
||||||
|
padding: 5px;
|
||||||
|
cursor:pointer;
|
||||||
|
|
||||||
|
}
|
||||||
|
div.e-autocomplete ul li span.informal { font-weight: normal; font-size: 9px}
|
||||||
|
|
||||||
|
/********** Misc */
|
||||||
|
.e-pointer { cursor: pointer; } /* Pointer Hand */
|
||||||
|
.expand-container { padding: 10px; } /* Block with expandable items */
|
||||||
|
.nextprev-bar { clear: both; padding: 5px; font-size: 14px; margin: 5px; border:1px solid #ddd; } /* Page NextPrev navigation block */
|
||||||
|
|
||||||
|
|
||||||
|
/******** SyS Messages / Message text formatting */
|
||||||
|
/* message boxes */
|
||||||
|
.s-message { }
|
||||||
|
|
||||||
|
.s-message div.info,
|
||||||
|
.s-message div.error,
|
||||||
|
.s-message div.success,
|
||||||
|
.s-message div.debug,
|
||||||
|
.s-message div.warning { padding: 5px; margin-bottom: 10px; }
|
||||||
|
|
||||||
|
|
||||||
|
.s-message div.info { background-color:#C1E0FF; border: 1px solid #3399FF; }
|
||||||
|
.s-message div.error { background-color:#FFCECE; border: 1px solid #CC0000; }
|
||||||
|
.s-message div.success { background-color:#DFFFDF; border: 1px solid #009900; }
|
||||||
|
.s-message div.warning { background-color:#FFFFD5; border: 1px solid #FFCC00; }
|
||||||
|
.s-message div.debug { background-color:#FFFFFF; border: 1px solid #EAEAEA; }
|
||||||
|
|
||||||
|
.s-message .s-message-title { height: 32px; background: 0 50% no-repeat; padding-left: 42px; font-size: 14px; font-weight: bold; line-height: 32px; }
|
||||||
|
|
||||||
|
.s-message div.info .s-message-title { background-image: url(images/messagebox_info.png); }
|
||||||
|
.s-message div.error .s-message-title { background-image: url(images/messagebox_critical.png); }
|
||||||
|
.s-message div.success .s-message-title { background-image: url(images/ok.png); }
|
||||||
|
.s-message div.warning .s-message-title { background-image: url(images/messagebox_warning.png); }
|
||||||
|
.s-message div.debug .s-message-title { background-image: url(images/messagebox_info.png); }
|
||||||
|
|
||||||
/* message text (overall) */
|
/* message text (overall) */
|
||||||
.warning { color: #FF6600 }
|
.warning { color: #FF6600 }
|
||||||
@@ -100,3 +162,31 @@ pre {
|
|||||||
.error { color: #FF0000 }
|
.error { color: #FF0000 }
|
||||||
.info {}
|
.info {}
|
||||||
.required { color:red }
|
.required { color:red }
|
||||||
|
|
||||||
|
/* THEME SPECIFIC CSS *********************************************************************************************/
|
||||||
|
/******** Page Base */
|
||||||
|
.wrapper { width: 100%; }
|
||||||
|
.header { padding: 20px 15px 0; }
|
||||||
|
.header-content { border: 1px solid #DDDDDD}
|
||||||
|
.page-body { padding: 20px 15px 0; }
|
||||||
|
.footer {}
|
||||||
|
legend { font-size: 14px; font-weight: bold; padding: 5px; }
|
||||||
|
|
||||||
|
/******** Block Elements */
|
||||||
|
.block { border: 1px solid #DDDDDD; margin-bottom: 10px;}
|
||||||
|
.block-text { padding: 10px 10px 10px; }
|
||||||
|
.block h1.caption { padding: 5px 10px 5px; vertical-align: middle; }
|
||||||
|
.block h2.caption, .block h4.caption { padding: 5px 10px 5px; border-bottom: 1px solid #DDDDDD; }
|
||||||
|
|
||||||
|
/******** Horizontal navigation ADMIN_NAV_ALT */
|
||||||
|
.navigation { border: 1px solid #DDDDDD;}
|
||||||
|
|
||||||
|
/******** Layout */
|
||||||
|
.main-table { width: 100%; border: 0 none; }
|
||||||
|
.col-left { width: 220px; }
|
||||||
|
.col-right { width: 220px;}
|
||||||
|
.col-main { padding: 0 15px 0 15px;}
|
||||||
|
.inner-wrapper { margin: 0 5px }
|
||||||
|
|
||||||
|
/******** Horizontal navigation ADMIN_NAV_ALT */
|
||||||
|
.navigation { border: 1px solid #DDDDDD;}
|
||||||
|
@@ -62,11 +62,10 @@ function theme_head() {
|
|||||||
|
|
||||||
function tablestyle($caption, $text, $mod) {
|
function tablestyle($caption, $text, $mod) {
|
||||||
global $style;
|
global $style;
|
||||||
$class = '';
|
|
||||||
if(is_string($mod) && $mod == 'admin_help') $class = ' '.str_replace('_', '-', $mod);
|
|
||||||
switch($style) {
|
switch($style) {
|
||||||
|
|
||||||
case 'admin_menu' :
|
case 'menu' :
|
||||||
echo '
|
echo '
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4 class="caption">'.$caption.'</h4>
|
<h4 class="caption">'.$caption.'</h4>
|
||||||
@@ -75,32 +74,10 @@ function tablestyle($caption, $text, $mod) {
|
|||||||
';
|
';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'site_info' :
|
|
||||||
echo '
|
|
||||||
<div class="block'.$class.'">
|
|
||||||
<h4 class="caption">'.$caption.'</h4>
|
|
||||||
<div class="block-text">
|
|
||||||
'.$text.'
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'admin_content':
|
|
||||||
echo '
|
|
||||||
<div class="block">
|
|
||||||
<h2 class="caption">'.$caption.'</h2>
|
|
||||||
<div class="block-text">
|
|
||||||
'.$text.'
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
';
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
echo '
|
echo '
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>'.$caption.'</h4>
|
<h1 class="caption">'.$caption.'</h1>
|
||||||
<div class="block-text">
|
<div class="block-text">
|
||||||
'.$text.'
|
'.$text.'
|
||||||
</div>
|
</div>
|
||||||
@@ -110,8 +87,51 @@ function tablestyle($caption, $text, $mod) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$HEADER['default'] = '';
|
$HEADER['default'] = '
|
||||||
$FOOTER['default'] = '';
|
<div class="wrapper">
|
||||||
|
<div class="header">
|
||||||
|
<div class="header-content">
|
||||||
|
BLANK HEADER
|
||||||
|
</div>
|
||||||
|
<div style="height: 20px;"><!-- --></div>
|
||||||
|
<div class="navigation">
|
||||||
|
<div id="main-nav">{SITELINKS}</div>
|
||||||
|
<div class="clear"><!-- --></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="page-body">
|
||||||
|
<table class="main-table" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
<td class="col-left">
|
||||||
|
{SETSTYLE=menu}
|
||||||
|
{MENU=1}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<div class="col-main">
|
||||||
|
<div class="inner-wrapper">
|
||||||
|
{SETSTYLE=content}
|
||||||
|
{FEATUREBOX|blank_default=notablestyle}
|
||||||
|
';
|
||||||
|
$FOOTER['default'] = '
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td class="col-right">
|
||||||
|
<div class="col-right">
|
||||||
|
{SETSTYLE=menu}
|
||||||
|
{MENU=2}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<!-- -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
';
|
||||||
|
|
||||||
$HEADER['alternate'] = '';
|
$HEADER['alternate'] = '';
|
||||||
$FOOTER['alternate'] = '';
|
$FOOTER['alternate'] = '';
|
||||||
|
Reference in New Issue
Block a user