1
0
mirror of https://github.com/e107inc/e107.git synced 2025-10-09 20:18:08 +02:00

More Menu-Manager work.

This commit is contained in:
Cameron
2013-05-10 04:38:04 -07:00
parent 16af1a3b11
commit b74aff7458
2 changed files with 109 additions and 71 deletions

View File

@@ -301,6 +301,18 @@ if(strpos(e_QUERY, 'configure') !== FALSE || vartrue($_GET['enc']))
color: white; color: white;
} }
ul.unstyled, ol.unstyled {
margin-left: 0px;
list-style: none outside none;
}
.pull-right { float: right }
.pull-left { float: left }
.menuOption { display: none }
.ui-draggable { background-color: rgb(245, 245, 245); min-width:100px;}
",'jquery'); ",'jquery');
@@ -308,6 +320,10 @@ if(strpos(e_QUERY, 'configure') !== FALSE || vartrue($_GET['enc']))
} }
if($_SERVER['E_DEV_MENU'] == 'true') if($_SERVER['E_DEV_MENU'] == 'true')
@@ -422,17 +438,11 @@ class e_layout
$ns = e107::getRender(); $ns = e107::getRender();
// $this->convertMenuTable(); // $this->convertMenuTable();
$this->menuData = e107::getPref('menu_layouts'); $this->menuData = e107::getPref('menu_layouts');
if(e_AJAX_REQUEST) if(e_AJAX_REQUEST)
{ {
if(varset($_POST['data'])) if(varset($_POST['data']))
{ {
$this->processPost(); $this->processPost();
@@ -442,14 +452,25 @@ class e_layout
} }
if(vartrue($_GET['configure'])) //ie Inside the IFRAME. if(vartrue($_GET['configure'])) //ie Inside the IFRAME.
{ {
global $HEADER,$FOOTER,$CUSTOMHEADER,$CUSTOMFOOTER,$style;
$this->HEADER = $HEADER;
$this->FOOTER = $FOOTER;
$this->CUSTOMHEADER = $CUSTOMHEADER;
$this->CUSTOMFOOTER = $CUSTOMFOOTER;
$this->style = $style;
unset($HEADER,$FOOTER,$CUSTOMHEADER,$CUSTOMFOOTER,$style);
e107::js('url',"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"); e107::js('url',"http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js");
e107::js('url', "http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/jquery-ui.css"); e107::js('url', "http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/jquery-ui.css");
e107::js('inline',' e107::js('inline','
$(function() $(function()
{ {
@@ -467,7 +488,8 @@ class e_layout
data: data data: data
}).done(function( msg ) }).done(function( msg )
{ {
// alert("POSTED: "+ msg ); $(".menuOption").show();
alert("POSTED: "+ msg );
}); });
} }
@@ -477,11 +499,11 @@ class e_layout
$(".sortable").sortable({ $(".sortable").sortable({
connectWith: $("#area-1,#area-2,#area-3,#area-4,#area-5"),
revert: true, revert: true,
cursor: "move", cursor: "move",
distance: 20, distance: 20,
containment: "parent", // containment: $(".sortable"),
update: function(ev,ui) update: function(ev,ui)
{ {
var areaid = $(this).attr("id"); var areaid = $(this).attr("id");
@@ -503,8 +525,8 @@ class e_layout
$( ".draggable", window.top.document).draggable({ $( ".draggable", window.top.document).draggable({
connectToSortable: ".sortable", connectToSortable: ".sortable",
helper: "clone", helper: "clone",
appendTo: ".sortable", // "#area-1", //FIXME Needs to be a specific area. appendTo: $(this), // ".sortable", // "#area-1", //FIXME Needs to be a specific area.
revert: true, revert: "invalid",
containment: "parent", containment: "parent",
delay: 0, delay: 0,
revertDuration: 100, revertDuration: 100,
@@ -514,7 +536,7 @@ class e_layout
stop: function(e, ui) { //TODO Rename layout and area in the hidden fields to that of the where the menu was dropped. stop: function(e, ui) { //TODO Rename layout and area in the hidden fields to that of the where the menu was dropped.
// Figure out positioning magic to determine if e.ui.position is in the iframe // Figure out positioning magic to determine if e.ui.position is in the iframe
// var what = $(this).parent().attr("id"); // var what = $(this).parent().attr("id");
// $(".sortable").draggable( "disable" );
// alert(what); // alert(what);
} }
@@ -559,14 +581,30 @@ class e_layout
*/ */
$this->curLayout = varsettrue($_GET['configure'], $pref['sitetheme_deflayout']); $this->curLayout = varsettrue($_GET['configure'], $pref['sitetheme_deflayout']);
$this->renderLayout($this->curLayout); $this->renderLayout($this->curLayout);
} }
else // Parent - ie. main admin page. else // Parent - ie. main admin page.
{ {
e107::css('inline',"
.menuOption { display: none }
");
$theme = e107::getPref('sitetheme');
require_once(e_THEME.$theme."/theme.php");
$this->HEADER = $HEADER;
$this->FOOTER = $FOOTER;
$this->CUSTOMHEADER = $CUSTOMHEADER;
$this->CUSTOMFOOTER = $CUSTOMFOOTER;
$this->style = $style;
// XXX HELP _ i don't work with iFrames. // XXX HELP _ i don't work with iFrames.
// $("#sortable") // $("#sortable")
@@ -606,9 +644,7 @@ class e_layout
','jquery'); ','jquery');
*/ */
$this->scanForNew(); $this->scanForNew();
@@ -617,34 +653,32 @@ class e_layout
} }
/**
* Save Menu Pref
*/
protected function processPost() protected function processPost()
{ {
$cnf = e107::getConfig('core'); $cnf = e107::getConfig('core');
$existing = $cnf->get('menu_layouts'); $existing = $cnf->get('menu_layouts');
// print_r($existing);
// $data = array_merge($existing,$_POST['data']);
$data = $_POST['data'];
$data = $_POST['data'];
$layout = $_POST['layout']; $layout = $_POST['layout'];
$area = $_POST['area']; $area = $_POST['area'];
$save = array(); $save = array();
foreach($_POST['data']['layout']['area'] as $v) // reset key values. foreach($_POST['data']['layout']['area'] as $v) // reset key values.
{ {
$save[$area][] = $v; $save[] = $v;
} }
// $save[$layout][$area] = $_POST['data']['layout']['area']; // $save[$layout][$area] = $_POST['data']['layout']['area'];
print_r($save); print_r($save);
// return;
e107::getConfig('core')->setPref('menu_layouts/'.$layout, $save)->save();
// e107::getConfig('core')->set('menu_layouts', $save)->save(); //TODO Save directly into multi-dimensional array. ie. $layout / $area / array.
e107::getConfig('core')->setPref('menu_layouts/'.$layout."/".$area, $save)->save();
} }
@@ -654,15 +688,21 @@ class e_layout
* Substitute all {MENU=X} and Render output. * Substitute all {MENU=X} and Render output.
*/ */
private function renderLayout($layout='') private function renderLayout($layout='')
{ {
$ALL = $this->getHeadFoot();
global $HEADER,$FOOTER,$style; // included by theme file in class2.
$HEADER = $ALL['HEADER'];
$FOOTER = $ALL['FOOTER'];
$tp = e107::getParser(); $tp = e107::getParser();
$head = preg_replace_callback("/\{MENU=([\d]{1,3})(:[\w\d]*)?\}/", array($this, 'renderMenuArea'), $HEADER[THEME_LAYOUT]); $head = preg_replace_callback("/\{MENU=([\d]{1,3})(:[\w\d]*)?\}/", array($this, 'renderMenuArea'), $HEADER[THEME_LAYOUT]);
$foot = preg_replace_callback("/\{MENU=([\d]{1,3})(:[\w\d]*)?\}/", array($this, 'renderMenuArea'), $FOOTER[THEME_LAYOUT]); $foot = preg_replace_callback("/\{MENU=([\d]{1,3})(:[\w\d]*)?\}/", array($this, 'renderMenuArea'), $FOOTER[THEME_LAYOUT]);
global $style;
$style = $this->style;
echo $tp->parsetemplate($head); echo $tp->parsetemplate($head);
// echo "<div>MAIN CONTENT</div>"; // echo "<div>MAIN CONTENT</div>";
echo $tp->parsetemplate($foot); echo $tp->parsetemplate($foot);
@@ -685,7 +725,7 @@ class e_layout
// return print_a($this->menuData,true); // return print_a($this->menuData,true);
$text = "<div class='menu-panel'>"; $text = "<div class='menu-panel'>";
$text .= "<div class='menu-panel-header' title=\"".MENLAN_34."\">Area ".$area."</div>\n"; $text .= "<div class='menu-panel-header' title=\"".MENLAN_34."\">Area ".$area."</div>\n";
$text .= $frm->open('form-area-'.$area,'post',e_SELF);
$count = 0; $count = 0;
if(vartrue($this->menuData[THEME_LAYOUT]) && is_array($this->menuData[THEME_LAYOUT][$area])) if(vartrue($this->menuData[THEME_LAYOUT]) && is_array($this->menuData[THEME_LAYOUT][$area]))
@@ -764,13 +804,8 @@ class e_layout
$text .= $frm->hidden('data[layout][area]['.$c.'][parms]',$row['parms'] ); $text .= $frm->hidden('data[layout][area]['.$c.'][parms]',$row['parms'] );
if(vartrue($_GET['configure'])) // Iframe Mode. $text .= "<a href='#' class='menuOption menu-btn btn-mini menu-btn-danger deleteMenu pull-right' data-area='area-".$area."' data-delete='".$uniqueId."'>&times;</a>"; // $('.hello').remove();
{
$text .= "<a href='#' class='menu-btn btn-mini menu-btn-danger deleteMenu pull-right' data-area='area-".$area."' data-delete='".$uniqueId."'>&times;</a>"; // $('.hello').remove();
}
return $text; return $text;
} }
@@ -829,9 +864,10 @@ class e_layout
{ {
$ns = e107::getRender(); $ns = e107::getRender();
$tp = e107::getParser(); $tp = e107::getParser();
$frm = e107::getForm(); $frm = e107::getForm();
$TEMPL = $this->getHeadFoot(); $TEMPL = $this->getHeadFoot();
$layouts = array_keys($TEMPL['HEADER']); $layouts = array_keys($TEMPL['HEADER']);
@@ -891,50 +927,46 @@ class e_layout
private function getHeadFoot($_MLAYOUT=null) private function getHeadFoot()
{ {
$theme = e107::getPref('sitetheme');
$H = array(); $H = array();
$F = array(); $F = array();
require(e_THEME.$theme."/theme.php"); if(is_string($this->HEADER))
if(is_string($HEADER))
{ {
$H['default'] = $HEADER; $H['default'] = $this->HEADER;
$F['default'] = $FOOTER; $F['default'] = $this->FOOTER;
} }
else else
{ {
$H = $HEADER; $H = $this->HEADER;
$F = $FOOTER; $F = $this->FOOTER;
} }
// 0.6 / 0.7-1.x // 0.6 / 0.7-1.x
if(isset($CUSTOMHEADER) && isset($CUSTOMHEADER)) if(isset($this->CUSTOMHEADER) && isset($this->CUSTOMHEADER))
{ {
if(!is_array($CUSTOMHEADER)) if(!is_array($this->CUSTOMHEADER))
{ {
$H['legacyCustom'] = $CUSTOMHEADER; $H['legacyCustom'] = $this->CUSTOMHEADER;
$F['legacyCustom'] = $CUSTOMFOOTER; $F['legacyCustom'] = $this->CUSTOMFOOTER;
} }
else else
{ {
foreach($CUSTOMHEADER as $k=>$v) foreach($this->CUSTOMHEADER as $k=>$v)
{ {
$H[$k] = $v; $H[$k] = $v;
$F[$k] = $v; }
} foreach($this->CUSTOMFOOTER as $k=>$v)
{
$F[$k] = $v;
}
} }
} }
if($_MLAYOUT)
{
// return array('HEADER'=>$H[$_MLAYOUT], 'FOOTER'=>$F[$_MLAYOUT]);
}
return array('HEADER'=>$H, 'FOOTER'=>$F); return array('HEADER'=>$H, 'FOOTER'=>$F);

View File

@@ -138,6 +138,12 @@ class e_menu
protected function getData($layout) protected function getData($layout)
{ {
$pref = e107::getPref('menu_layouts'); $pref = e107::getPref('menu_layouts');
if(!varset($pref[$layout]))
{
return array();
}
foreach($pref[$layout] as $area=>$v); foreach($pref[$layout] as $area=>$v);
{ {