/e107_handlers/menumanager_class.php
PHP | 1633 lines | 1201 code | 311 blank | 121 comment | 151 complexity | 81e3dd15cdd74dfa6cb247dd934128c7 MD5 | raw file
Possible License(s): GPL-2.0
- <?php
- /*
- * e107 website system
- *
- * Copyright (C) 2008-2013 e107 Inc (e107.org)
- * Released under the terms and conditions of the
- * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
- *
- */
- if (!defined('e107_INIT')) { exit; }
- require_once(e_HANDLER."form_handler.php");
- class e_menuManager {
- var $menu_areas = array();
- var $curLayout;
- var $menuId;
- var $menuNewLoc;
- var $dragDrop;
- var $menuActivateLoc;
- var $menuActivateIds;
- var $debug;
- var $menuMessage;
- var $style = 'default';
- function __construct($dragdrop=FALSE)
- {
- global $HEADER,$FOOTER, $NEWSHEADER;
- $pref = e107::getPref();
- $this->debug = FALSE;
- $this->dragDrop = $dragdrop;
- if($this->dragDrop)
- {
- $this->debug = TRUE;
- }
- if ($NEWSHEADER)
- {
- $HEADER .= $NEWSHEADER;
- }
- if(isset($_POST['custom_select']))
- {
- $this->curLayout = $_POST['custom_select'];
- }
- elseif(isset($_GET['lay']))
- {
- $this->curLayout = $_GET['lay'];
- }
- else
- {
- $this->curLayout = varsettrue($_GET['configure'], $pref['sitetheme_deflayout']);
- }
- $this->dbLayout = ($this->curLayout != $pref['sitetheme_deflayout']) ? $this->curLayout : ""; //menu_layout is left blank when it's default.
- if(isset($_POST['menu_id']) || vartrue($_GET['id']))
- {
- $this->menuId = (isset($_POST['menu_id'])) ? intval($_POST['menu_id']) : intval($_GET['id']);
- }
- if (/*$menu_act == "sv" || */isset($_POST['class_submit']))
- {
- $this->menuSaveVisibility();
- }
- elseif(isset($_POST['parms_submit']))
- {
- $this->menuSaveParameters();
- }
- if (vartrue($_GET['mode']) == "deac")
- {
- $this->menuDeactivate();
- }
- if ($_GET['mode'] == "conf")
- {
- $this->menuGoConfig();
- }
- $this->menuGrabLayout();
- $menu_array = $this->parseheader($HEADER.$FOOTER, 'check');
- if($menu_array)
- {
- sort($menu_array, SORT_NUMERIC);
- $menu_check = 'set';
- foreach ($menu_array as $menu_value)
- {
- if ($menu_value != $menu_check)
- {
- $this->menu_areas[] = $menu_value;
- }
- $menu_check = $menu_value;
- }
- }
- $this->menuModify();
- if(vartrue($_POST['menuActivate']))
- {
- $this->menuActivateLoc = key($_POST['menuActivate']);
- $this->menuActivateIds = $_POST['menuselect'];
- $this->menuActivate();
- }
- if(vartrue($_POST['menuSetCustomPages']))
- {
- $this->menuSetCustomPages($_POST['custompages']);
- }
- if(isset($_POST['menuUsePreset']) && $_POST['curLayout'])
- {
- $this->menuSetPreset();
- }
- $this->menuSetConfigList(); // Update Active MenuConfig List.
- }
- // -------------------------------------------------------------------------
- function menuRenderIframe($url='')
- {
- $ns = e107::getRender();
- $sql = e107::getDb();
- if(!$url)
- {
- $url = e_SELF."?configure=".$this->curLayout;
- }
- // $cnt = $sql->select("menus", "*", "menu_location > 0 AND menu_layout = '$curLayout' ORDER BY menu_name "); // calculate height to remove vertical scroll-bar.
- // $text = "<object class='well' type='text/html' id='menu_iframe' data='".$url."' width='100%' style='overflow:auto;width: 100%; height: ".(($cnt*90)+600)."px; border: 0px' ></object>";
- $text = "<iframe class='well' id='menu_iframe' src='".$url."' width='100%' scrolling='no' style='width: 100%; height: 800px; border: 0px' ></iframe>";
-
- return $text;
- }
- function menuRenderMessage()
- {
- // return $this->menuMessage;
- $text = e107::getMessage()->render('menuUi');
- // $text .= "ID = ".$this->menuId;
- return $text;
-
- }
- function menuAddMessage($message, $type = E_MESSAGE_INFO, $session = false)
- {
- e107::getMessage()->add(array($message, 'menuUi'), $type, $session);
- }
- // -------------------------------------------------------------------------
- function menuGrabLayout()
- {
- global $HEADER,$FOOTER,$CUSTOMHEADER,$CUSTOMFOOTER,$LAYOUT;
-
- if(isset($LAYOUT) && is_array($LAYOUT)) // $LAYOUT is a combined $HEADER,$FOOTER.
- {
- foreach($LAYOUT as $key=>$template)
- {
- list($hd,$ft) = explode("{---}",$template);
- $HEADER[$key] = isset($LAYOUT['_header_']) ? $LAYOUT['_header_'] . $hd : $hd;
- $FOOTER[$key] = isset($LAYOUT['_footer_']) ? $ft . $LAYOUT['_footer_'] : $ft ;
- }
- unset($hd,$ft);
- }
-
- if(($this->curLayout == 'legacyCustom' || $this->curLayout=='legacyDefault') && (isset($CUSTOMHEADER) || isset($CUSTOMFOOTER)) ) // 0.6 themes.
- {
- if($this->curLayout == 'legacyCustom')
- {
- $HEADER = ($CUSTOMHEADER) ? $CUSTOMHEADER : $HEADER;
- $FOOTER = ($CUSTOMFOOTER) ? $CUSTOMFOOTER : $FOOTER;
- }
- }
- elseif($this->curLayout && $this->curLayout != "legacyCustom" && (isset($CUSTOMHEADER[$this->curLayout]) || isset($CUSTOMFOOTER[$this->curLayout]))) // 0.7 themes
- {
- // echo " MODE 0.7 ".$this->curLayout;
- $HEADER = ($CUSTOMHEADER[$this->curLayout]) ? $CUSTOMHEADER[$this->curLayout] : $HEADER;
- $FOOTER = ($CUSTOMFOOTER[$this->curLayout]) ? $CUSTOMFOOTER[$this->curLayout] : $FOOTER;
- }
- elseif($this->curLayout && is_array($HEADER) && isset($HEADER[$this->curLayout]) && isset($FOOTER[$this->curLayout])) // 0.8 themes - we use only $HEADER and $FOOTER arrays.
- {
- // echo " MODE 0.8 ".$this->curLayout;
- $HEADER = $HEADER[$this->curLayout];
- $FOOTER = $FOOTER[$this->curLayout];
- }
- // Almost the same code as found in templates/header_default.php ---------
- }
- function menuGoConfig()
- {
- if(!$_GET['path'] || ($_GET['mode'] != "conf"))
- {
- return;
- }
- $file = urldecode($_GET['path']).".php";
- $newurl = e_PLUGIN_ABS.$file."?id=".$_GET['id'];
- /*
- return "<object type='text/html' id='menu_iframe' data='".$newurl."' width='100%' style='overflow:auto;width: 100%; border: 0px' ></object>";
- */
- header("Location: ".$newurl);
- exit;
- // echo "URL = ".$newurl;
- // $newurl = $PLUGINS_DIRECTORY.$location."/{$position}{$this->menuNewLoc}.php";
- // $newurl = SITEURL.str_replace("//", "/", $newurl);
- // echo "<script type='text/javascript'>alert($newurl); top.location.href = '{$newurl}'; </script> ";
- // exit;
- }
- // -----------------------------------------------------------------------------
- function menuModify()
- {
- global $admin_log;
- $pref = e107::getPref();
- $sql = e107::getDb();
- $ns = e107::getRender();
- $menu_act = "";
- if (isset($_POST['menuAct']))
- {
- foreach ($_POST['menuAct'] as $k => $v)
- {
- if (trim($v))
- {
- $this->menuId = intval($k);
- list($menu_act, $location, $position, $this->menuNewLoc) = explode(".", $_POST['menuAct'][$k]);
- }
- }
- }
- if ($menu_act == "move")
- {
- $this->menuMove();
- }
- if ($menu_act == "bot")
- {
- $menu_count = $sql->count("menus", "(*)", " WHERE menu_location='{$location}' AND menu_layout = '".$this->dbLayout."' ");
- $sql->db_Update("menus", "menu_order=".($menu_count+1)." WHERE menu_order='{$position}' AND menu_location='{$location}' AND menu_layout = '$this->dbLayout' ");
- $sql->db_Update("menus", "menu_order=menu_order-1 WHERE menu_location='{$location}' AND menu_order > {$position} AND menu_layout = '".$this->dbLayout."' ");
- $admin_log->log_event('MENU_06',$location.'[!br!]'.$position.'[!br!]'.$this->menuId,E_LOG_INFORMATIVE,'');
- }
- if ($menu_act == "top")
- {
- $sql->db_Update("menus", "menu_order=menu_order+1 WHERE menu_location='{$location}' AND menu_order < {$position} AND menu_layout = '".$this->dbLayout."' ",$this->debug);
- $sql->db_Update("menus", "menu_order=1 WHERE menu_id='{$this->menuId}' ");
- $admin_log->log_event('MENU_05',$location.'[!br!]'.$position.'[!br!]'.$this->menuId,E_LOG_INFORMATIVE,'');
- }
- if ($menu_act == "dec")
- {
- $sql->db_Update("menus", "menu_order=menu_order-1 WHERE menu_order='".($position+1)."' AND menu_location='{$location}' AND menu_layout = '".$this->dbLayout."' ",$this->debug);
- $sql->db_Update("menus", "menu_order=menu_order+1 WHERE menu_id='{$this->menuId}' AND menu_location='{$location}' AND menu_layout = '".$this->dbLayout."' ");
- $admin_log->log_event('MENU_08',$location.'[!br!]'.$position.'[!br!]'.$this->menuId,E_LOG_INFORMATIVE,'');
- }
- if ($menu_act == "inc")
- {
- $sql->db_Update("menus", "menu_order=menu_order+1 WHERE menu_order='".($position-1)."' AND menu_location='{$location}' AND menu_layout = '".$this->dbLayout."' ",$this->debug);
- $sql->db_Update("menus", "menu_order=menu_order-1 WHERE menu_id='{$this->menuId}' AND menu_location='{$location}' AND menu_layout = '".$this->dbLayout."' ");
- $admin_log->log_event('MENU_07',$location.'[!br!]'.$position.'[!br!]'.$this->menuId,E_LOG_INFORMATIVE,'');
- }
- if (!isset($_GET['configure']))
- { // Scan plugin directories to see if menus to add
- $this->menuScanMenus();
- }
- }
- // ----------------------------------------------------------------------------
- function menuSetPreset()
- {
- global $location,$admin_log;
- $pref = e107::getPref();
- $sql = e107::getDb();
- if(!$menuAreas = $this->getMenuPreset())
- {
- e107::getMessage()->addDebug("No Menu Preset Found");
- return FALSE;
- }
- $sql->db_Update("menus", "menu_location='0' WHERE menu_layout = '".$this->dbLayout."' "); // Clear All existing.
- foreach($menuAreas as $val)
- {
- if($sql->select("menus", 'menu_name, menu_path' , "menu_name = '".$val['menu_name']."' LIMIT 1"))
- {
- $row=$sql->fetch();
- if(!$sql->db_Update('menus', "menu_order='{$val['menu_order']}', menu_location = ".$val['menu_location'].", menu_class= ".$val['menu_class']." WHERE menu_name='".$val['menu_name']."' AND menu_layout = '".$this->dbLayout."' LIMIT 1 "))
- {
- $insert = array(
- 'menu_id' => 0,
- 'menu_name' => $val['menu_name'],
- 'menu_location' => $val['menu_location'],
- 'menu_order' => $val['menu_order'],
- 'menu_class' => $val['menu_class'],
- 'menu_pages' => '',
- 'menu_path' => $row['menu_path'],
- 'menu_layout' => $this->dbLayout,
- 'menu_parms' => ''
- );
- $sql->db_Insert("menus",$insert);
- $admin_log->log_event('MENU_01',$row['menu_name'].'[!br!]'.$location.'[!br!]'.$menu_count.'[!br!]'.$row['menu_path'],E_LOG_INFORMATIVE,'');
- }
- }
- }
- return $menuAreas;
- }
- // ----------------------------------------------------------------------------
- function menuScanMenus()
- {
- global $sql2;
- $sql = e107::getDb();
- $efile = new e_file;
- $efile->dirFilter = array('/', 'CVS', '.svn', 'languages');
- $fileList = $efile->get_files(e_PLUGIN,"_menu\.php$",'standard',2);
-
- foreach($fileList as $file)
- {
- list($parent_dir) = explode('/',str_replace(e_PLUGIN,"",$file['path']));
- $file['path'] = str_replace(e_PLUGIN,"",$file['path']);
- $file['fname'] = str_replace(".php","",$file['fname']);
- $valid_menu = FALSE;
- $existing_menu = $sql->count("menus", "(*)", "WHERE menu_name='{$file['fname']}'");
- if (file_exists(e_PLUGIN.$parent_dir.'/plugin.xml') || file_exists(e_PLUGIN.$parent_dir.'/plugin.php'))
- {
- if (e107::isInstalled($parent_dir))
- { // Its a 'new style' plugin with a plugin.php file, or an even newer one with plugin.xml file - only include if plugin installed
- $valid_menu = TRUE; // Whether new or existing, include in list
- // echo "Include {$parent_dir}:{$file['fname']}<br />";
- }
- }
- else // Just add the menu anyway
- {
- $valid_menu = TRUE;
- // echo "Default Include {$parent_dir}:{$file['fname']}<br />";
- }
- if ($valid_menu)
- {
- $menustr .= "&".str_replace(".php", "", $file['fname']);
- if (!$existing_menu) // New menu to add to list
- {
- $insert = array(
- 'menu_id' => 0,
- 'menu_name' => $file['fname'],
- 'menu_location' => 0,
- 'menu_order' => 0,
- 'menu_class' => 0,
- 'menu_pages' => '',
- 'menu_path' => $file['path'],
- 'menu_layout' => '',
- 'menu_parms' => ''
- );
- if($sql->db_Insert("menus",$insert))
- {
- // Could do admin logging here - but probably not needed
- $message .= MENLAN_10." - ".$file['fname']."<br />"; //FIXME
- }
- }
- }
- }
- //Reorder all menus into 1...x order
- if (!is_object($sql2)) $sql2 = new db; // Shouldn't be needed
- if (!is_object($sql3)) $sql3 = new db;
- $location_count = $sql3->select("menus", "menu_location", "menu_location>0 GROUP BY menu_location");
- while ($location_count)
- {
- if ($sql->select("menus", "menu_id", "menu_location={$location_count} ORDER BY menu_order ASC"))
- {
- $c = 1;
- while ($row = $sql->fetch())
- {
- $sql2->db_Update("menus", "menu_order={$c} WHERE menu_id=".$row['menu_id']);
- $c++;
- }
- }
- $location_count--;
- }
- $sql->select("menus", "*", "menu_path NOT REGEXP('[0-9]+') ");
- while (list($menu_id, $menu_name, $menu_location, $menu_order) = $sql->fetch(MYSQL_NUM))
- {
- if (stristr($menustr, $menu_name) === FALSE)
- {
- $sql2->db_Delete("menus", "menu_name='$menu_name'");
- $message .= MENLAN_11." - ".$menu_name."<br />"; // FIXME
- }
- }
- $this->menuAddMessage(vartrue($message), E_MESSAGE_INFO); //FIXME
- }
- // ---------------------------------------------------------------------------
- function menuPresetPerms($val)
- {
- $link_class = strtolower(trim($val));
- $menu_perm['everyone'] = e_UC_PUBLIC;
- $menu_perm['guest'] = e_UC_GUEST;
- $menu_perm['member'] = e_UC_MEMBER;
- $menu_perm['mainadmin'] = e_UC_MAINADMIN;
- $menu_perm['admin'] = e_UC_ADMIN;
- $menu_perm['nobody'] = e_UC_NOBODY;
- $link_class = ($menu_perm[$link_class]) ? $menu_perm[$link_class] : e_UC_PUBLIC;
- return $link_class;
- }
- /**
- * This one will be greatly extended, allowing menus to offer UI and us
- * settings per instance later ($parm variable available for menus - same as shortcode's $parm)
- */
- function menuInstanceParameters()
- {
- if(!vartrue($_GET['parmsId'])) return;
- $id = intval($_GET['parmsId']);
- $frm = e107::getForm();
- $sql = e107::getDb();
-
- if(!$sql->select("menus", "*", "menu_id=".$id))
- {
- $this->menuAddMessage("Couldn't Load Menu",E_MESSAGE_ERROR);
- return;
- };
- $row = $sql->fetch();
-
- // TODO lan
- $text = "<div style='text-align:center;'>
- <form id='e-save-form' method='post' action='".e_SELF."?lay=".$this->curLayout."'>
- <fieldset id='core-menus-parametersform'>
- <legend>Menu parameters ".$row['menu_name']."</legend>
- <table class='table adminform'>
- <tr>
- <td>
- Parameters (query string format):
- ".$frm->text('menu_parms', $row['menu_parms'], 900, 'class=e-save span7')."
- </td>
- </tr>
- </table>";
- /*
-
- $text .= "
- <div class='buttons-bar center'>";
- $text .= $frm->admin_button('parms_submit', LAN_SAVE, 'update');
- $text .= "<input type='hidden' name='menu_id' value='".$id."' />
- </div>";
-
- */
- $text .= $frm->hidden('mode','parms');
- $text .= $frm->hidden('menu_id',$id);
- $text .= "
- </fieldset>
- </form>
- </div>";
-
- return $text;
-
- }
- function menuVisibilityOptions()
- {
- if(!vartrue($_GET['vis'])) return;
- $sql = e107::getDb();
- $ns = e107::getRender();
- $frm = e107::getForm();
-
- require_once(e_HANDLER."userclass_class.php");
-
- if(!$sql->select("menus", "*", "menu_id=".intval($_GET['vis'])))
- {
- $this->menuAddMessage("Couldn't Load Menu",E_MESSAGE_ERROR);
- return;
- }
-
- $row = $sql->fetch();
-
- $listtype = substr($row['menu_pages'], 0, 1);
- $menu_pages = substr($row['menu_pages'], 2);
- $menu_pages = str_replace("|", "\n", $menu_pages);
- $text = "<div>
- <form class='form-horizontal' id='e-save-form' method='post' action='".e_SELF."?lay=".$this->curLayout."&iframe=1'>
- <fieldset>
- <legend>". MENLAN_7." ".$row['menu_name']."</legend>
- <table class='table adminform'>
- <tr>
- <td>
- <input type='hidden' name='menuAct[{$row['menu_id']}]' value='sv.{$row['menu_id']}' />
- ".MENLAN_4." ".
- r_userclass('menu_class', $row['menu_class'], "off", "public,member,guest,admin,main,classes,nobody")."
- </td>
- </tr>
- <tr><td><div class='radio'>
- ";
- $checked = ($listtype == 1) ? " checked='checked' " : "";
-
- $text .= $frm->radio('listtype', 1, $checked, array('label'=>MENLAN_26, 'class'=> 'e-save'));
- $text .= "<br />";
- // $text .= "<input type='radio' class='e-save' {$checked} name='listtype' value='1' /> ".MENLAN_26."<br />";
- $checked = ($listtype == 2) ? " checked='checked' " : "";
-
- $text .= $frm->radio('listtype', 2, $checked, array('label'=>MENLAN_27, 'class'=> 'e-save'));
-
-
- // $text .= "<input type='radio' class='e-save' {$checked} name='listtype' value='2' /> ".MENLAN_27."<br />";
-
- $text .= "</div>
- <div class='row' style='padding:10px'>
-
- <div class='pull-left span3' >
-
- <textarea name='pagelist' class='e-save span3' cols='60' rows='8' class='tbox'>$menu_pages</textarea>
- </div>
- <div class=' span4'><small>".MENLAN_28."</small></div>
- </div></td></tr>
- </table>";
-
- $text .= $frm->hidden('mode','visibility');
- $text .= $frm->hidden('menu_id',intval($_GET['vis'])); // "<input type='hidden' name='menu_id' value='".intval($_GET['vis'])."' />";
-
- /*
- $text .= "
- <div class='buttons-bar center'>";
- $text .= $frm->admin_button('class_submit', MENLAN_6, 'update');
-
- </div>";
- */
- $text .= "
- </fieldset>
- </form>
- </div>";
-
-
- return $text;
- //$caption = MENLAN_7." ".$row['menu_name'];
- //$ns->tablerender($caption, $text);
- //echo $text;
- }
- // -----------------------------------------------------------------------------
- function menuActivate() // Activate Multiple Menus.
- {
- global $admin_log;
- $pref = e107::getPref();
- $sql = e107::getDb();
- $location = $this->menuActivateLoc;
- $menu_count = $sql->count("menus", "(*)", " WHERE menu_location=".$location." AND menu_layout = '".$this->dbLayout."' ");
- $menu_count++; // Need to add 1 to create NEW order number.
-
- foreach($this->menuActivateIds as $sel_mens)
- {
- //Get info from menu being activated
- if($sql->select("menus", 'menu_name, menu_path' , "menu_id = ".intval($sel_mens)." "))
- {
- $row=$sql->fetch();
- //If menu is not already activated in that area, add the record.
- //$query = "SELECT menu_name,menu_path FROM #menus WHERE menu_name='".$row['menu_name']."' AND menu_layout = '".$this->dbLayout."' AND menu_location = ".$location." LIMIT 1 ";
- //if(!$sql->gen($query, $this->debug))
- {
- $insert = array(
- 'menu_id' => 0,
- 'menu_name' => $row['menu_name'],
- 'menu_location' => $location,
- 'menu_order' => $menu_count,
- 'menu_class' => $row['menu_class'],
- 'menu_pages' => '',
- 'menu_path' => $row['menu_path'],
- 'menu_layout' => $this->dbLayout,
- 'menu_parms' => ''
- );
- $sql->db_Insert("menus",$insert, $this->debug);
- $admin_log->log_event('MENU_01',$row['menu_name'].'[!br!]'.$location.'[!br!]'.$menu_count.'[!br!]'.$row['menu_path'],E_LOG_INFORMATIVE,'');
- $menu_count++;
- }
- }
- }
- }
- // -----------------------------------------------------------------------------
- function menuSetCustomPages($array)
- {
- $pref = e107::getPref();
- $key = key($array);
- $pref['sitetheme_custompages'][$key] = array_filter(explode(" ",$array[$key]));
- save_prefs();
- }
- // ------------------------------------------------------------------------------
- function getMenuPreset()
- {
- $pref = e107::getPref();
- $layout = $this->curLayout;
- if(!isset($pref['sitetheme_layouts'][$layout]['menuPresets']))
- {
- e107::getMessage()->addDebug(print_a($pref['sitetheme_layouts'],true));
- return FALSE;
- }
- $temp = $pref['sitetheme_layouts'][$layout]['menuPresets']['area'];
- // print_a($temp);
- $multiple = isset($temp['menu'][1]);
- foreach($temp as $key=>$val)
- {
- if($val['id'])
- {
- $iD = $val['id'];
- }
- // $iD = $val['id'];
-
- if($key == 'menu')
- {
- if($multiple) // More than one menu item under <area> in theme.xml.
- {
- foreach($val as $k=>$v)
- {
-
- // $uclass = (defined(trim($v['@attributes']['perm']))) ? constant(trim($v['@attributes']['userclass'])) : 0;
- $menuArea[] = array(
- 'menu_location' => $iD,
- 'menu_order' => $k,
- 'menu_name' => $v['@attributes']['name']."_menu",
- 'menu_class' => $this->menuPresetPerms($v['@attributes']['perm'])
- );
- }
- }
- else // Only one menu item under <area> in theme.xml.
- {
- // $uclass = (defined(trim($val['menu']['@attributes']['userclass']))) ? constant(trim($val['menu']['@attributes']['userclass'])) : 0;
- $menuArea[] = array(
- 'menu_location' => $iD,
- 'menu_order' => 0,
- 'menu_name' => $val['menu']['@attributes']['name']."_menu",
- 'menu_class' => $this->menuPresetPerms($v['@attributes']['perm'])
- );
- }
- }
- }
-
- // print_a($menuArea);
- return $menuArea;
- }
- // ------------------------------------------------------------------------------
- function checkMenuPreset($array,$name)
- {
- if(!is_array($array))
- {
- return;
- }
- foreach($array as $key=>$val)
- {
- if($val['menu_name']==$name)
- {
- return $val['menu_location'];
- }
- }
- return FALSE;
- }
-
- // --------------------------------------------------------------------------
-
- function menuSaveParameters()
- {
- $sql = e107::getDb();
- $parms = $sql->escape(strip_tags($_POST['menu_parms']));
-
- $check = $sql->db_Update("menus", "menu_parms='".$parms."' WHERE menu_id=".intval($_POST['menu_id'])."");
-
-
- if($check)
- {
- return array('msg'=>'All Okay','error'=>false);
- // FIXME - menu log
- //$admin_log->log_event('MENU_02',$_POST['menu_parms'].'[!br!]'.$parms.'[!br!]'.$this->menuId,E_LOG_INFORMATIVE,'');
- // $this->menuAddMessage(LAN_SAVED,E_MESSAGE_SUCCESS);
- }
- elseif(false === $check)
- {
- return array('msg'=>LAN_UPDATED_FAILED,'error'=>true);
-
- }
- else
- {
- return array('msg'=>'No Changes Made','error'=>false); // $this->menuAddMessage(LAN_NOCHANGE_NOTSAVED,E_MESSAGE_INFO);
- }
- }
- // --------------------------------------------------------------------------
- function menuSaveVisibility() // Used by Ajax
- {
- global $admin_log;
- $sql = e107::getDb();
- $pagelist = explode("\r\n", $_POST['pagelist']);
- for ($i = 0 ; $i < count($pagelist) ; $i++)
- {
- $pagelist[$i] = trim($pagelist[$i]);
- }
- $plist = implode("|", $pagelist);
- $pageparms = $_POST['listtype'].'-'.$plist;
- $pageparms = preg_replace("#\|$#", "", $pageparms);
- $pageparms = (trim($_POST['pagelist']) == '') ? '' : $pageparms;
- if($sql->db_Update("menus", "menu_class='".intval($_POST['menu_class'])."', menu_pages='{$pageparms}' WHERE menu_id=".intval($_POST['menu_id'])))
- {
- $admin_log->log_event('MENU_02',$_POST['menu_class'].'[!br!]'.$pageparms.'[!br!]'.$this->menuId,E_LOG_INFORMATIVE,'');
-
- return array('msg'=>LAN_UPDATED, 'error'=> false);
- //$this->menuAddMessage($message,E_MESSAGE_SUCCESS);
- }
- else
- {
- return array('msg'=>LAN_UPDATED_FAILED, 'error'=> true, 'posted'=>$_POST);
- // $this->menuAddMessage($message,E_MESSAGE_ERROR);
- }
- }
- function setMenuId($id)
- {
- $this->menuId = intval($id);
- }
- // -----------------------------------------------------------------------
- function menuDeactivate()
- { // Get current menu name
- global $admin_log;
- $sql = e107::getDb();
- $sql2 = e107::getDb();
-
- //echo "FOUND= ".$this->menuId;
- $error = false;
- if($sql->gen('SELECT menu_name, menu_location, menu_order FROM #menus WHERE menu_id = '.$this->menuId.' LIMIT 1'))
- {
- $row = $sql->fetch();
- //Check to see if there is already a menu with location = 0 (to maintain BC)
- if($sql2->select('menus', 'menu_id', "menu_name='{$row['menu_name']}' AND menu_location = 0 AND menu_layout ='".$this->dbLayout."' LIMIT 1"))
- {
- //menu_location=0 already exists, we can just delete this record
- if(!$sql2->db_Delete('menus', 'menu_id='.$this->menuId))
- {
- $message = "Deletion Failed";
- $error = true;
- }
- }
- else
- {
- //menu_location=0 does NOT exist, let's just convert this to it
- if(!$sql2->db_Update("menus", "menu_location=0, menu_order=0, menu_class=0, menu_pages='' WHERE menu_id=".$this->menuId))
- {
- $message = "FAILED";
- $error = true;
- }
- }
- //Move all menus up (reduces order number) that have a higher menu order number than one deactivated, in the selected location.
- $sql->db_Update("menus", "menu_order=menu_order-1 WHERE menu_location={$row['menu_location']} AND menu_order > {$row['menu_order']} AND menu_layout = '".$this->dbLayout."' ");
- $admin_log->log_event('MENU_04',$row['menu_name'].'[!br!]'.$row['menu_location'].'[!br!]'.$row['menu_order'].'[!br!]'.$this->menuId,E_LOG_INFORMATIVE,'');
- }
- else
- {
- $message = "NO CHANGES MADE : ".$this->menuId;
- $error = true;
-
- }
- return array('msg'=>$message,'error'=>$error);
- }
- // ----------------------------------------------------------------------
- function menuMove()
- {// Get current menu name
- global $admin_log,$sql;
- if($sql->select('menus', 'menu_name', 'menu_id='.$this->menuId, 'default'))
- {
- $row = $sql->fetch();
- //Check to see if menu is already active in the new area, if not then move it
- if(!$sql->select('menus', 'menu_id', "menu_name='{$row['menu_name']}' AND menu_location = ".$this->menuNewLoc." AND menu_layout='".$this->dbLayout ."' LIMIT 1"))
- {
- $menu_count = $sql->count("menus", "(*)", " WHERE menu_location=".$this->menuNewLoc);
- $sql->db_Update("menus", "menu_location='{$this->menuNewLoc}', menu_order=".($menu_count+1)." WHERE menu_id=".$this->menuId);
- $sql->db_Update("menus", "menu_order=menu_order-1 WHERE menu_location='{$location}' AND menu_order > {$position} AND menu_layout='".$this->dbLayout ."' ");
- }
- $admin_log->log_event('MENU_03',$row['menu_name'].'[!br!]'.$this->menuNewLoc.'[!br!]'.$this->menuId,E_LOG_INFORMATIVE,'');
- }
- }
- // =-----------------------------------------------------------------------------
-
- function renderOptionRow($row)
- {
- $sql = e107::getDb();
- $tp = e107::getParser();
- $ns = e107::getRender();
- $frm = e107::getForm();
-
-
- $text = "";
-
- $pdeta = "";
- $color = ($color == "white") ? "#DDDDDD" : "white";
- if($row['menu_pages'] == "dbcustom")
- {
- $pdeta = MENLAN_42;
- }
- else
- {
- $row['menu_name'] = preg_replace("#_menu$#i", "", $row['menu_name']);
- if($pnum = $this->checkMenuPreset($menuPreset,$row['menu_name'].'_menu'))
- {
- $pdeta = MENLAN_39." {$pnum}";
- }
- }
- if(!$this->dragDrop)
- {
- $menuInf = (!is_numeric($row['menu_path'])) ? ' ('.substr($row['menu_path'],0,-1).')' : " ( #".$row['menu_path']." )";
- // $menuInf = $row['menu_path'];
-
- $text .= "<tr style='background-color:$color;color:black'>
- <td style='text-align:left; color:black;' class='checkbox'>";
-
-
- // $text .= "
- //// <input type='checkbox' id='menuselect-{$row['menu_id']}' name='menuselect[]' value='{$row['menu_id']}' />
- // <label class='selection-row' for='menuselect-{$row['menu_id']}'>".$row['menu_name'].$menuInf."</label>";
-
- $text .= $frm->checkbox('menuselect[]',$row['menu_id'],'',array('label'=>$row['menu_name'].$menuInf));
-
- $text .= "
- </td>
- <td style='color:black'> ".$pdeta." </td>
- </tr>\n";
- }
- else
- {
- // Menu Choices box.
- $text .= "<div class='portlet block block-archive' id='block-".$row['menu_id']."' style='border:1px outset black;text-align:left;color:black'>";
- $text .= $this->menuRenderMenu($row, $menu_count,true);
- $text .= "</div>\n";
- }
-
- return $text;
- }
-
-
-
-
-
- function menuRenderPage()
- {
- global $HEADER, $FOOTER, $rs;
- $pref = e107::getPref();
- $sql = e107::getDb();
- $tp = e107::getParser();
- $ns = e107::getRender();
- $frm = e107::getForm();
-
-
-
- //FIXME - XHTML cleanup, front-end standards (elist, forms etc)
- echo "<div id='portal'>";
- $this->parseheader($HEADER); // $layouts_str;
-
- $layout = ($this->curLayout);
- $menuPreset = $this->getMenuPreset($layout);
- echo "<div style='text-align:center'>";
- echo $rs->form_open("post", e_SELF."?configure=".$this->curLayout, "menuActivation");
- $text = "<table style='width:100%;margin-left:auto;margin-right:auto'>";
- $text .= "<tr><td style='color:#2F2F2F;width:65%;text-align:center;padding-bottom:8px'>".MENLAN_36."...</td>
- <td style='color:#2F2F2F;width:50%;padding-bottom:8px;text-align:center'>...".MENLAN_37."</td></tr>";
- $text .= "<tr><td style='width:35%;vertical-align:top;text-align:center'>";
-
-
- if(!$this->dragDrop)
- {
- $text .= "<div class='column' id='portal-column-block-list' style='border:1px inset black;height:250px;display:block;overflow:auto;margin-bottom:20px'>";
- $text .= "<table class='table table-striped core-menumanager-main' id='core-menumanager-main' >
- <tbody>\n";
- }
- else
- {
- // $text .= "<div class='column' id='remove' style='border:1px solid silver'>\n";
- }
- $color = "";
-
- $pageMenu = array();
- $pluginMenu = array();
-
- $sql->select("menus", "menu_name, menu_id, menu_pages, menu_path", "1 GROUP BY menu_name ORDER BY menu_name ASC");
- while ($row = $sql->fetch())
- {
- if(is_numeric($row['menu_path']))
- {
- $pageMenu[] = $row;
- }
- else
- {
- $pluginMenu[] = $row;
- }
-
- }
- $text .= "<tr><th colspan='2'>Your Menus</th></tr>";
- foreach($pageMenu as $row)
- {
- $text .= $this->renderOptionRow($row);
- }
-
- $text .= "<tr><th colspan='2' >Plugin Menus</th></tr>";
- foreach($pluginMenu as $row)
- {
- $text .= $this->renderOptionRow($row);
- }
- $text .= (!$this->dragDrop) ? "</tbody></table>" : "";
- $text .= "</div>";
- $text .= "</td><td id='menu-manage-actions' ><br />";
- foreach ($this->menu_areas as $menu_act)
- {
- $text .= "<input type='submit' class='menu-btn' id='menuActivate_".trim($menu_act)."' name='menuActivate[".trim($menu_act)."]' value='".MENLAN_13." ".trim($menu_act)."' /><br /><br />\n";
- }
- if($layout)
- {
- if(isset($pref['sitetheme_layouts'][$layout]['menuPresets']))
- {
- $text .= "<input type='submit' class='menu-btn' name='menuUsePreset' value=\"".MENLAN_40."\" onclick=\"return jsconfirm('".$tp->toJS(MENLAN_41)."')\" /><br /><br />\n"; // Use Menu Presets
- $text .= "<input type='hidden' name='menuPreset' value='".$layout."' />";
- }
- $text .= "<input type='hidden' name='curLayout' value='".$layout."' />";
- }
- $text .= "<input type='hidden' id='dbLayout' value='".$this->dbLayout."' />";
- $text .= "</td>";
- $text .= "</tr></table>";
- if(!count($this->menu_areas))
- {
- $text = "<div class='alert alert-block alert-warning text-left'>";
- $text .= "This layout does NOT contain any dynamic {MENU} areas.<br />";
-
- if(count($this->customMenu))
- {
- $text .= "<p>It DOES contain the following custom menus: <ul ><li>".implode("</li><li>",$this->customMenu)."</li></ul></p>";
- $text .= "<p><a href='".e_ADMIN."cpage.php?mode=menu&action=list&tab=2' class='button btn btn-primary'>Go to Custom-Menu area</a></p>";
- }
-
- $text .= "</div>";
- }
- // $ns -> tablerender(MENLAN_22.'blabla', $text);
- echo $this->renderPanel(MENLAN_22, $text);
- echo $rs->form_close();
- echo "</div>";
- $this->parseheader($FOOTER);
- if($this->debug)
- {
- echo "<div id='debug' style='margin-left:0px;border:1px solid silver; overflow:scroll;height:250px'> </div>";
- }
- echo "</div>";
- }
- //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
- function menuSelectLayout()
- {
- global $rs;
- $pref = e107::getPref();
-
- // onchange=\"urljump(this.options[selectedIndex].value);\"
- $text = "<form class='form-inline' method='post' action='".e_SELF."?configure=".$this->curLayout."'>";
- $text .= "<div class='buttons-bar'>Theme Layout: ";
- $text .= "<select name='custom_select' style='width:auto' id='menuManagerSelect' >\n"; //tbox class will break links. // window.frames['menu_iframe'].location=this.options[selectedIndex].value ???
- $search = array("_","legacyDefault","legacyCustom");
- $replace = array(" ",MENLAN_31,MENLAN_33);
- foreach($pref['sitetheme_layouts'] as $key=>$val)
- {
- $url = "";
- $layoutName = str_replace($search,$replace,$key);
- $layoutName .=($key==$pref['sitetheme_deflayout']) ? " (".MENLAN_31.")" : "";
- $selected = ($this->curLayout == $key || ($key==$pref['sitetheme_deflayout'] && $this->curLayout=='')) ? "selected='selected'" : FALSE;
-
- // $url = e_SELF."?lay=".$key;
- $url = e_SELF."?configure=".$key;
-
- $text .= "<option value='".$url."' {$selected}>".$layoutName."</option>";
- }
- $text .= "</select>
- <div class='field-help'>".MENLAN_30."</div>
- </div></form>";
-
- // $text .= "<div id='visibility'>Something here</div>";
-
- return $text;
- }
- //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
- function parseheader($LAYOUT, $check = FALSE)
- {
- // $tmp = explode("\n", $LAYOUT);
- // Split up using the same function as the shortcode handler
- $tmp = preg_split('#(\{\S[^\x02]*?\S\})#', $LAYOUT, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
- $str = array();
- for($c = 0; $c < count($tmp); $c++)
- {
- if(preg_match("/[\{|\}]/", $tmp[$c]))
- {
- if($check)
- {
- if(strstr($tmp[$c], "{MENU="))
- {
- $matches = array();
- // Match all menu areas, menu number is limited to tinyint(3)
- preg_match_all("/\{MENU=([\d]{1,3})(:[\w\d]*)?\}/", $tmp[$c], $matches);
- $this->menuSetCode($matches, $str);
- }
- }
- else
- {
- $this->checklayout($tmp[$c]);
- }
- }
- else
- {
- if(!$check)
- {
- echo $tmp[$c];
- }
- }
- }
- if($check)
- {
- return $str;
- }
- }
-
- function menuSetCode($matches, &$ret)
- {
- if(!$matches || !varsettrue($matches[1]))
- {
- return;
- }
-
- foreach ($matches[1] as $match)
- {
- $ret[] = $match;
- }
- }
-
- function renderPanel($caption,$text)
- {
- $plugtext = "<div class='menu-panel'>";
- $plugtext .= "<div class='menu-panel-header' title=\"".MENLAN_34."\">".$caption."</div>";
- $plugtext .= $text;
- $plugtext .= "</div>";
- return $plugtext;
- }
- function checklayout($str)
- { // Displays a basic representation of the theme
- global $PLUGINS_DIRECTORY, $rs, $sc_style, $menu_order, $style; // global $style required.
- $PLUGINS_DIRECTORY = e107::getFolder('PLUGINS');
- $pref = e107::getPref();
- $tp = e107::getParser();
- $ns = e107::getRender();
-
- $menuLayout = ($this->curLayout != $pref['sitetheme_deflayout']) ? $this->curLayout : "";
-
- if(strstr($str, "LOGO"))
- {
- echo $tp->parseTemplate("{LOGO}");
- }
- elseif(strstr($str, "SITENAME"))
- {
- echo "[SiteName]";
- }
- elseif(strstr($str, "SITETAG"))
- {
- echo "<div style='padding: 2px'>[SiteTag]</div>";
- }
- elseif(strstr($str, "SITELINKS"))
- {
- echo "[SiteLinks]";
- }
- elseif(strstr($str, "NAVIGATION"))
- {
- echo "[Navigation Area]";
- }
- elseif(strstr($str, "LANGUAGELINKS"))
- {
- echo "<div class=text style='padding: 2px; text-align: center'>[Language]</div>";
- }
- elseif(strstr($str, "CUSTOM"))
- {
- $cust = preg_replace("/\W*\{CUSTOM=(.*?)(\+.*)?\}\W*/si", "\\1", $str);
- echo "<div style='padding: 2px'>[" . $cust . "]</div>";
- }
- elseif(strstr($str, "CMENU"))
- {
- $cust = preg_replace("/\W*\{CMENU=(.*?)(\+.*)?\}\W*/si", "\\1", $str);
- $this->customMenu[] = $cust;
- echo $tp->parseTemplate("{CMENU=".$cust."}",true);
- // echo $this->renderPanel('Embedded Custom Menu',$cust);
- }
- elseif(strstr($str, "SETIMAGE"))
- {
- $cust = preg_replace("/\W*\{SETIMAGE(.*?)(\+.*)?\}\W*/si", "\\1", $str);
- echo $tp->parseTemplate("{SETIMAGE".$cust."}",true);
- // echo $this->renderPanel('Embedded Custom Menu',$cust);
- }
- elseif(strstr($str, "{WMESSAGE"))
- {
- echo "<div class=text style='padding: 30px; text-align: center'>[Welcome Message Area]</div>";
- // echo $this->renderPanel('Embedded Custom Menu',$cust);
- }
- elseif(strstr($str, "{FEATUREBOX"))
- {
- echo "<div class=text style='padding: 80px; text-align: center'>[Featurebox Area]</div>";
- // echo $this->renderPanel('Embedded Custom Menu',$cust);
- }
- // Display embedded Plugin information.
- else if(strstr($str, "PLUGIN"))
- {
- $plug = preg_replace("/\{PLUGIN=(.*?)\}/si", "\\1", $str);
- $plug = trim($plug);
- if(file_exists((e_PLUGIN . "{$plug}/{$plug}_config.php")))
- {
- $link = e_PLUGIN . "{$plug}/{$plug}_config.php";
- }
-
- if(file_exists((e_PLUGIN . $plug . "/config.php")))
- {
- $link = e_PLUGIN . $plug . "/config.php";
- }
-
- // $plugtext = "<div class='menu-panel'>";
- // $plugtext .= "<div class='menu-panel-header' title=\"".MENLAN_34."\">".$plug."</div>";
- $plugtext = ($link) ? "(" . MENLAN_34 . ":<a href='$link btn-menu' title='" . LAN_CONFIGURE . "'>" . LAN_CONFIGURE . "</a>)" : "";
- // $plugtext .= "</div>";
- echo "<br />";
- echo $this->renderPanel($plug, $plugtext);
- // $ns->tablerender($plug, $plugtext);
- }
- else if(strstr($str, "MENU"))
- {
-
- $matches = array();
- if(preg_match_all("/\{MENU=([\d]{1,3})(:[\w\d]*)?\}/", $str, $matches))
- {
- $menuText = "";
- foreach($matches[1] as $menu)
- {
- $menu = preg_replace("/\{MENU=(.*?)(:.*?)?\}/si", "\\1", $str);
- if(isset($sc_style['MENU']['pre']) && strpos($str, 'ret') !== false)
- {
- $menuText .= $sc_style['MENU']['pre'];
- }
-
- // ---------------
- $menuText .= "\n\n<!-- START AREA ".$menu." -->";
- $menuText .= "<div id='start-area-".$menu."' class='menu-panel'>";
- $menuText .= "<div class='menu-panel-header' >" . MENLAN_14 . " " . $menu . "</div>\n\n";
- $sql9 = new db();
- // $sql9 = e107::getDb('sql9');
- if($sql9->count("menus", "(*)", " WHERE menu_location='$menu' AND menu_layout = '" . $this->dbLayout . "' "))
- {
- unset($text);
- $menuText .= $rs->form_open("post", e_SELF . "?configure=" . $this->curLayout, "frm_menu_" . intval($menu));
-
- $MODE = 1;
-
- $sql9->select("menus", "*", "menu_location='$menu' AND menu_layout='" . $this->dbLayout . "' ORDER BY menu_order");
- $menu_count = $sql9->db_Rows();
-
- $cl = ($this->dragDrop) ? "'portlet" : "regularMenu";
-
- $menuText .= "\n<div class='column' id='area-".$menu."'>\n\n";
- while($row = $sql9->fetch(MYSQL_ASSOC))
- {
- $menuText .= "\n\n\n <!-- Menu Start ".$row['menu_name']. "-->\n";
- $menuText .= "<div class='{$cl}' id='block-".$row['menu_id']."-".$menu."'>\n";
-
- // echo "<div class='ggportal'>";
-
- // $menuText .= "hi there";
- $menuText .= $this->menuRenderMenu($row, $menu_count);
-
- // echo "\n</div>";
- $menuText .= "\n</div>\n";
- $menuText .= "<!-- Menu end -->\n\n\n";
- // echo "<div><br /></div>";
-
- }
- $menuText .= "\n\n</div>\n\n"; // End Column
- $menuText .= $rs->form_close();
- }
- else
- { // placeholder
- $menuText .= "<div class='column' id='area-" . $menu . "'><!-- --></div>";
- }
-
- $menuText .= "</div><!-- END OF AREA -->\n\n";
-
- // ---------------
-
-
- if(isset($sc_style['MENU']['post']) && strpos($str, 'ret') !== false)
- {
- $menuText .= $sc_style['MENU']['post'];
- }
-
-
- }
- }
- echo $menuText;
- }
- else if(strstr($str, "SETSTYLE"))
- {
- $tmp = explode("=", $str);
- $style = preg_replace("/\{SETSTYLE=(.*?)\}/si", "\\1", $str);
-
- $this->style = $style;
-
- }
- else if(strstr($str, "SITEDISCLAIMER"))
- {
- echo "[Sitedisclaimer]";
- }
- }
- //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
- function menuRenderMenu($row,$menu_count,$rep = FALSE)
- {
-
- global $rs,$menu,$menu_info,$menu_act, $style;
- $ns = e107::getRender();
- $style = $this->style;
- // $menu_count is empty in here
- //FIXME extract
- extract($row);
- if(!$menu_id){ return; }
- $menu_name = preg_replace("#_menu#i", "", $menu_name);
- //TODO we need a CSS class for this
- $vis = ($menu_class || strlen($menu_pages) > 1) ? " <span class='required'><i class='icon-search'></i></span> " : "";
- //DEBUG div not allowed in final tags $caption = "<div style='text-align:center'>{$menu_name}{$vis}</div>";
- // use theme render style instead
-
- // Undocumented special parameter 'admin_title'
- $menuParms = array();
- if(!empty($row['menu_parms'])) parse_str($row['menu_parms'], $menuParms);
- if(isset($menuParms['admin_title']) && $menuParms['admin_title'])
- {
- $caption = deftrue($menuParms['admin_title'], $menuParms['admin_title']).$vis;
- }
- elseif(isset($menuParms['title']) && $menuParms['title'])
- {
- $caption = deftrue($menuParms['title'], $menuParms['title']).$vis;
- }
- else $caption = $menu_name.$vis;
-
- $menu_info = "{$menu_location}.{$menu_order}";
- $text = "";
- $conf = '';
- if (file_exists(e_PLUGIN.$menu_path.$menu_name.'_menu_config.php'))
- {
- $conf = $menu_path.$menu_name.'_menu_config';
- }
- if($conf == '' && file_exists(e_PLUGIN."{$menu_path}config.php"))
- {
- $conf = "{$menu_path}config";
- }
- //
- // $text = "<div style='white-space:nowrap'>";
- $text .= '<div class="menuOptions">';
- if(!$this->dragDrop)
- {
- $text .= "<select id='menuAct_".$menu_id."' name='menuAct[$menu_id]' class='menu-btn' onchange='this.form.submit()' >";
- $text .= $rs->form_option(MENLAN_25, TRUE, " ");
- // $text .= $rs->form_option(MENLAN_15, "", "deac.{$menu_info}");
-
- if ($conf)
- {
- // $text .= $rs->form_option("Configure", "", $conf); // TODO Check LAN availability
- }
-
- if ($menu_order != 1)
- {
- $text .= $rs->form_option(MENLAN_17, "", "inc.{$menu_info}");
- $text .= $rs->form_option(MENLAN_24, "", "top.{$menu_info}");
- }
- if ($menu_count != $menu_order)
- {
- $text .= $rs->form_option(MENLAN_18, "", "dec.{$menu_info}");
- $text .= $rs->form_option(MENLAN_23, "", "bot.{$menu_info}");
- }
- foreach ($this->menu_areas as $menu_act)
- {
- if ($menu != $menu_act)
- {
- $text .= $rs->form_option(MENLAN_19." ".$menu_act, "", "move.{$menu_info}.".$menu_act);
- }
- }
-
- // Visibility is an action icon now
- //$text .= $rs->form_option(MENLAN_20, "", "adv.{$menu_info}");
- $text .= $rs->form_select_close();
- }
- if($rep == true)
- {
- $text .= "<div id='check-".$menu_id."'><input type='checkbox' name='menuselect[]' value='{$menu_id}' />".$menu_id." {$pdeta}</div>
- <div id='option-".$menu_id."' style='display:none'>";
- }
-
- //DEBUG remove inline style, switch to simple quoted string for title text value
- //TODO hardcoded text
-
- // $visibilityLink = e_SELF.'?'.urlencode('lay='.$this->curLayout.'&vis='.$menu_id.'&iframe=1');
-
- $visibilityLink = e_SELF."?enc=".base64_encode('lay='.$this->curLayout.'&vis='.$menu_id.'&iframe=1');
-
- $text .= '<span class="menu-options-buttons">
- <a class="e-menumanager-option menu-btn" data-modal-caption="'.MENLAN_20.'" href="'.$visibilityLink.'" title="'.MENLAN_20.'"><i class="S16 e-search-16"></i></a>';
- if($conf)
- {
- $text .= '<a class="menu-btn" target="_top" href="'.e_SELF.'?lay='.$this->curLayout.'&mode=conf&path='.urlencode($conf).'&id='.$menu_id.'"
- title="Configure menu"><i class="S16 e-configure-16"></i></a>';
- }
-
- $editLink = e_SELF."?enc=".base64_encode('lay='.$this->curLayout.'&parmsId='.$menu_id.'&iframe=1');
- $text .= '<a data-modal-caption="Configure parameters" class="e-menumanager-option menu-btn e-tip" target="_top" href="'.$editLink.'" title="Configure parameters"><i class="S16 e-edit-16" ></i></a>';
- $text .= '<a title="'.LAN_DELETE.'" id="remove-'.$menu_id.'-'.$menu_location.'" class="e-tip delete e-menumanager-delete menu-btn" href="'.e_SELF.'?configure='.$this->curLayout.'&mode=deac&id='.$menu_id.'"><i class="S16 e-delete-16"></i></a>
-
- <span id="status-'.$menu_id.'" style="display:none">'.($rep == true ? "" : "insert").'</span>
- </span></div>';
- $text .= ($rep == true) ? "</div>" : "";
- // $text .= "</div>";
-
- if(!$this->dragDrop)
- {
-
- return "<b class='muted' style='color:#2F2F2F;text-align:left'>".$caption."</b><br />". $text;
- // return;
-
- // return $ns->tablerender($caption, $text,'', true); Theme style too unpredictable.
-
-
- }
- else
- {
-
- return "
- <div class='portlet-header'>".$caption."</div>
- <div class='portlet-content' >".$text."</div>";
- }
-
-
- }
- function menuSaveAjax($mode = null)
- {
-
-
- if($mode == 'visibility')
- {
-
- $ret = $this->menuSaveVisibility();
- // echo json_encode($ret);
- return;
- }
-
- if($mode == 'delete')
- {
- list($tmp,$area) = explode("-",$_POST['area']);
-
- if($_POST['area'] == 'remove')
- {
- list($tmp,$deleteID) = explode("-",$_POST['removeid']);
- $this->menuId = $deleteID;
- $ret = $this->menuDeactivate();
- // echo json_encode($ret);
-
- return;
- }
-
- }
-
-
- if($mode == 'parms')
- {
- $ret = $this->menuSaveParameters();
- // echo json_encode($ret);
- return;
- }
-
-
-
- // print_r($_POST);
- return;
-
-
- $this->debug = TRUE;
-
- $sql = e107::getDb();
-
- // Allow deletion by ajax, but not the rest when drag/drop disabled.
- if(!$this->dragDrop){ return; }
- $this -> dbLayout = $_POST['layout'];
- list($tmp,$insertID) = explode("-",$_POST['insert']);
- $insert[] = $insertID;
-
- if($_POST['mode'] == 'insert' && count($insert) && $area) // clear out everything before rewriting everything to db.
- {
- $this->menuActivateLoc = $area; // location
- $this->menuActivateIds = $insert; // array of ids, in order.
- $this->menuActivate();
-
- }
- elseif($_POST['mode'] == 'update')
- {
- $sql->db_Update("menus","menu_location = ".intval($area)." WHERE menu_id = ".intval($insertID)."",$this->debug);
- }
-
- $c = 0;
-
- if(count($_POST['list'])<2)
- {
- return;
- }
-
- // resort the menus in this 'Area"
- foreach($_POST['list'] as $val)
- {
- list($b,$id) = explode("-",$val);
- $order[] = $id;
- $sql->db_Update("menus","menu_order = ".$c." WHERE menu_id = ".intval($id)."",$this->debug);
- $c++;
- }
- // same for delete etc.
- // echo "<hr />";
- }
- function menuSetConfigList()
- {
- $sql = e107::getDb();
- $pref = e107::getPref();
- $sql -> select("menus", "*", "menu_location != 0 ORDER BY menu_path,menu_name");
- while($row = $sql-> fetch())
- {
- $link = "";
- extract($row);
- $id = substr($menu_path,0,-1);
- if (file_exists(e_PLUGIN."{$menu_path}{$menu_name}_menu_config.php"))
- {
- $link = "{$menu_path}{$menu_name}_menu_config.php";
- }
- if(file_exists(e_PLUGIN."{$menu_path}config.php"))
- {
- $link = "{$menu_path}config.php";
- }
- if($link)
- {
- $tmp[$id]['name'] = ucwords(str_replace("_menu","",$menu_name));
- if(vartrue($prev) == $id && ($tmp[$id]['name']!=$prev_name))
- {
- $tmp[$id]['name'] .= ":".$prev_name;
- }
- $tmp[$id]['link'] = $link;
- $prev = $id;
- $prev_name = $tmp[$id]['name'];
- }
- }
- $pref['menuconfig_list'] = vartrue($tmp);
-
- e107::getConfig()->setPref($pref)->save(false,true,false);
- // save_prefs();
- }
- } // end of Class.