mirror of
https://github.com/e107inc/e107.git
synced 2025-08-04 13:47:31 +02:00
Drag-and-drop panel moving/sorting now works fine.
This commit is contained in:
@@ -10,6 +10,17 @@ if(!defined('e107_INIT'))
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(e_AJAX_REQUEST)
|
||||||
|
{
|
||||||
|
if(varset($_POST['core-flexpanel-order'], false))
|
||||||
|
{
|
||||||
|
global $user_pref;
|
||||||
|
$user_pref['core-flexpanel-order'] = $_POST['core-flexpanel-order'];
|
||||||
|
save_prefs('user');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Flexpanel uses infopanel's methods to avoid code duplication.
|
// Flexpanel uses infopanel's methods to avoid code duplication.
|
||||||
e107_require_once(e_ADMIN . 'includes/infopanel.php');
|
e107_require_once(e_ADMIN . 'includes/infopanel.php');
|
||||||
|
|
||||||
@@ -48,34 +59,39 @@ class adminstyle_flexpanel extends adminstyle_infopanel
|
|||||||
|
|
||||||
global $user_pref;
|
global $user_pref;
|
||||||
|
|
||||||
|
// Default menu areas.
|
||||||
$panels = array(
|
$panels = array(
|
||||||
'Area01' => '', // Sidebar.
|
'menu-area-01' => array(), // Sidebar.
|
||||||
'Area02' => '',
|
'menu-area-02' => array(),
|
||||||
'Area03' => '',
|
'menu-area-03' => array(),
|
||||||
'Area04' => '',
|
'menu-area-04' => array(),
|
||||||
'Area05' => '',
|
'menu-area-05' => array(),
|
||||||
'Area06' => '',
|
'menu-area-06' => array(),
|
||||||
'Area07' => '', // Content left.
|
'menu-area-07' => array(), // Content left.
|
||||||
'Area08' => '', // Content right.
|
'menu-area-08' => array(), // Content right.
|
||||||
'Area09' => '',
|
'menu-area-09' => array(),
|
||||||
'Area10' => '',
|
'menu-area-10' => array(),
|
||||||
'Area11' => '',
|
'menu-area-11' => array(),
|
||||||
'Area12' => '',
|
'menu-area-12' => array(),
|
||||||
'Area13' => '',
|
'menu-area-13' => array(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// "Help" box.
|
// "Help" box.
|
||||||
$tp->parseTemplate("{SETSTYLE=flexpanel}");
|
$tp->parseTemplate("{SETSTYLE=flexpanel}");
|
||||||
$panels['Area01'] .= $tp->parseTemplate('{ADMIN_HELP}', true, $admin_sc);
|
$ns->setUniqueId('core-infopanel_help');
|
||||||
|
$info = $this->getMenuPosition('core-infopanel_help');
|
||||||
|
$panels[$info['area']][$info['weight']] .= $tp->parseTemplate('{ADMIN_HELP}', true, $admin_sc);
|
||||||
|
|
||||||
// "Latest" box.
|
// "Latest" box.
|
||||||
$tp->parseTemplate("{SETSTYLE=flexpanel}");
|
$tp->parseTemplate("{SETSTYLE=flexpanel}");
|
||||||
$panels['Area01'] .= $tp->parseTemplate('{ADMIN_LATEST=infopanel}', true, $admin_sc);
|
$info = $this->getMenuPosition('e-latest-list');
|
||||||
|
$panels[$info['area']][$info['weight']] .= $tp->parseTemplate('{ADMIN_LATEST=infopanel}', true, $admin_sc);
|
||||||
|
|
||||||
// "Status" box.
|
// "Status" box.
|
||||||
$tp->parseTemplate("{SETSTYLE=flexpanel}");
|
$tp->parseTemplate("{SETSTYLE=flexpanel}");
|
||||||
$panels['Area01'] .= $tp->parseTemplate('{ADMIN_STATUS=infopanel}', true, $admin_sc);
|
$info = $this->getMenuPosition('e-status-list');
|
||||||
|
$panels[$info['area']][$info['weight']] .= $tp->parseTemplate('{ADMIN_STATUS=infopanel}', true, $admin_sc);
|
||||||
|
|
||||||
|
|
||||||
// --------------------- Personalized Panel -----------------------
|
// --------------------- Personalized Panel -----------------------
|
||||||
@@ -118,8 +134,10 @@ class adminstyle_flexpanel extends adminstyle_infopanel
|
|||||||
$tp->parseTemplate("{SETSTYLE=flexpanel}");
|
$tp->parseTemplate("{SETSTYLE=flexpanel}");
|
||||||
|
|
||||||
$caption = $tp->lanVars(LAN_CONTROL_PANEL, ucwords(USERNAME));
|
$caption = $tp->lanVars(LAN_CONTROL_PANEL, ucwords(USERNAME));
|
||||||
$coreInfoPanelMyE107 = $ns->tablerender($caption, $mainPanel, "core-my-e107", true);
|
$ns->setUniqueId('core-infopanel_mye107');
|
||||||
$panels['Area07'] .= $coreInfoPanelMyE107;
|
$coreInfoPanelMyE107 = $ns->tablerender($caption, $mainPanel, "core-infopanel_mye107", true);
|
||||||
|
$info = $this->getMenuPosition('core-infopanel_mye107');
|
||||||
|
$panels[$info['area']][$info['weight']] .= $coreInfoPanelMyE107;
|
||||||
|
|
||||||
|
|
||||||
// --------------------- e107 News --------------------------------
|
// --------------------- e107 News --------------------------------
|
||||||
@@ -127,14 +145,17 @@ class adminstyle_flexpanel extends adminstyle_infopanel
|
|||||||
$newsTabs['coreFeed'] = array('caption' => LAN_GENERAL, 'text' => "<div id='e-adminfeed' style='min-height:300px'></div><div class='right'><a rel='external' href='" . ADMINFEEDMORE . "'>" . LAN_MORE . "</a></div>");
|
$newsTabs['coreFeed'] = array('caption' => LAN_GENERAL, 'text' => "<div id='e-adminfeed' style='min-height:300px'></div><div class='right'><a rel='external' href='" . ADMINFEEDMORE . "'>" . LAN_MORE . "</a></div>");
|
||||||
$newsTabs['pluginFeed'] = array('caption' => LAN_PLUGIN, 'text' => "<div id='e-adminfeed-plugin'></div>");
|
$newsTabs['pluginFeed'] = array('caption' => LAN_PLUGIN, 'text' => "<div id='e-adminfeed-plugin'></div>");
|
||||||
$newsTabs['themeFeed'] = array('caption' => LAN_THEMES, 'text' => "<div id='e-adminfeed-theme'></div>");
|
$newsTabs['themeFeed'] = array('caption' => LAN_THEMES, 'text' => "<div id='e-adminfeed-theme'></div>");
|
||||||
|
$ns->setUniqueId('core-infopanel_news');
|
||||||
$coreInfoPanelNews = $ns->tablerender(LAN_LATEST_e107_NEWS, e107::getForm()->tabs($newsTabs, array('active' => 'coreFeed')), "core-e107-news", true);
|
$coreInfoPanelNews = $ns->tablerender(LAN_LATEST_e107_NEWS, e107::getForm()->tabs($newsTabs, array('active' => 'coreFeed')), "core-infopanel_news", true);
|
||||||
$panels['Area08'] .= $coreInfoPanelNews;
|
$info = $this->getMenuPosition('core-infopanel_news');
|
||||||
|
$panels[$info['area']][$info['weight']] .= $coreInfoPanelNews;
|
||||||
|
|
||||||
|
|
||||||
// --------------------- Website Status ---------------------------
|
// --------------------- Website Status ---------------------------
|
||||||
$coreInfoPanelWebsiteStatus = $ns->tablerender(LAN_WEBSITE_STATUS, $this->renderWebsiteStatus(), "core-website-status", true);
|
$ns->setUniqueId('core-infopanel_website_status');
|
||||||
$panels['Area08'] .= $coreInfoPanelWebsiteStatus;
|
$coreInfoPanelWebsiteStatus = $ns->tablerender(LAN_WEBSITE_STATUS, $this->renderWebsiteStatus(), "core-infopanel_website_status", true);
|
||||||
|
$info = $this->getMenuPosition('core-infopanel_website_status');
|
||||||
|
$panels[$info['area']][$info['weight']] .= $coreInfoPanelWebsiteStatus;
|
||||||
|
|
||||||
|
|
||||||
// --------------------- Latest Comments --------------------------
|
// --------------------- Latest Comments --------------------------
|
||||||
@@ -149,22 +170,40 @@ class adminstyle_flexpanel extends adminstyle_infopanel
|
|||||||
// Custom menu.
|
// Custom menu.
|
||||||
if(is_numeric($val))
|
if(is_numeric($val))
|
||||||
{
|
{
|
||||||
|
$menu = e107::getDb()->retrieve('page', 'menu_name', 'page_id = ' . (int) $val);
|
||||||
|
$id = 'cmenu-' . $menu;
|
||||||
$inc = e107::getMenu()->renderMenu($val, null, null, true);
|
$inc = e107::getMenu()->renderMenu($val, null, null, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
$id = $frm->name2id($val);
|
||||||
$inc = $tp->parseTemplate("{PLUGIN=$val|TRUE}");
|
$inc = $tp->parseTemplate("{PLUGIN=$val|TRUE}");
|
||||||
}
|
}
|
||||||
|
|
||||||
$panels['Area01'] .= $inc;
|
$info = $this->getMenuPosition($id);
|
||||||
|
$panels[$info['area']][$info['weight']] .= $inc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ksort($panels['menu-area-01']);
|
||||||
|
ksort($panels['menu-area-02']);
|
||||||
|
ksort($panels['menu-area-03']);
|
||||||
|
ksort($panels['menu-area-04']);
|
||||||
|
ksort($panels['menu-area-05']);
|
||||||
|
ksort($panels['menu-area-06']);
|
||||||
|
ksort($panels['menu-area-07']);
|
||||||
|
ksort($panels['menu-area-08']);
|
||||||
|
ksort($panels['menu-area-09']);
|
||||||
|
ksort($panels['menu-area-10']);
|
||||||
|
ksort($panels['menu-area-11']);
|
||||||
|
ksort($panels['menu-area-12']);
|
||||||
|
ksort($panels['menu-area-13']);
|
||||||
|
|
||||||
// Sidebar.
|
// Sidebar.
|
||||||
echo '<div class="row">';
|
echo '<div class="row">';
|
||||||
echo '<div class="col-md-3 col-lg-2" id="left-panel">';
|
echo '<div class="col-md-3 col-lg-2" id="left-panel">';
|
||||||
echo '<div class="draggable-panels" id="menu-area-01">';
|
echo '<div class="draggable-panels" id="menu-area-01">';
|
||||||
echo $panels['Area01'];
|
echo implode("\n", $panels['menu-area-01']);
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '<div class="col-md-9 col-lg-10" id="right-panel">';
|
echo '<div class="col-md-9 col-lg-10" id="right-panel">';
|
||||||
@@ -182,7 +221,7 @@ class adminstyle_flexpanel extends adminstyle_infopanel
|
|||||||
echo '<div class="row">';
|
echo '<div class="row">';
|
||||||
echo '<div class="col-sm-12">';
|
echo '<div class="col-sm-12">';
|
||||||
echo '<div class="draggable-panels" id="menu-area-02">';
|
echo '<div class="draggable-panels" id="menu-area-02">';
|
||||||
echo $panels['Area02'];
|
echo implode("\n", $panels['menu-area-02']);
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
@@ -191,17 +230,17 @@ class adminstyle_flexpanel extends adminstyle_infopanel
|
|||||||
echo '<div class="row">';
|
echo '<div class="row">';
|
||||||
echo '<div class="col-sm-4">';
|
echo '<div class="col-sm-4">';
|
||||||
echo '<div class="draggable-panels" id="menu-area-03">';
|
echo '<div class="draggable-panels" id="menu-area-03">';
|
||||||
echo $panels['Area03'];
|
echo implode("\n", $panels['menu-area-03']);
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '<div class="col-sm-4">';
|
echo '<div class="col-sm-4">';
|
||||||
echo '<div class="draggable-panels" id="menu-area-04">';
|
echo '<div class="draggable-panels" id="menu-area-04">';
|
||||||
echo $panels['Area04'];
|
echo implode("\n", $panels['menu-area-04']);
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '<div class="col-sm-4">';
|
echo '<div class="col-sm-4">';
|
||||||
echo '<div class="draggable-panels" id="menu-area-05">';
|
echo '<div class="draggable-panels" id="menu-area-05">';
|
||||||
echo $panels['Area05'];
|
echo implode("\n", $panels['menu-area-05']);
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
@@ -210,7 +249,7 @@ class adminstyle_flexpanel extends adminstyle_infopanel
|
|||||||
echo '<div class="row">';
|
echo '<div class="row">';
|
||||||
echo '<div class="col-sm-12">';
|
echo '<div class="col-sm-12">';
|
||||||
echo '<div class="draggable-panels" id="menu-area-06">';
|
echo '<div class="draggable-panels" id="menu-area-06">';
|
||||||
echo $panels['Area06'];
|
echo implode("\n", $panels['menu-area-06']);
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
@@ -219,12 +258,12 @@ class adminstyle_flexpanel extends adminstyle_infopanel
|
|||||||
echo '<div class="row">';
|
echo '<div class="row">';
|
||||||
echo '<div class="col-sm-6">';
|
echo '<div class="col-sm-6">';
|
||||||
echo '<div class="draggable-panels" id="menu-area-07">';
|
echo '<div class="draggable-panels" id="menu-area-07">';
|
||||||
echo $panels['Area07'];
|
echo implode("\n", $panels['menu-area-07']);
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '<div class="col-sm-6">';
|
echo '<div class="col-sm-6">';
|
||||||
echo '<div class="draggable-panels" id="menu-area-08">';
|
echo '<div class="draggable-panels" id="menu-area-08">';
|
||||||
echo $panels['Area08'];
|
echo implode("\n", $panels['menu-area-08']);
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
@@ -233,7 +272,7 @@ class adminstyle_flexpanel extends adminstyle_infopanel
|
|||||||
echo '<div class="row">';
|
echo '<div class="row">';
|
||||||
echo '<div class="col-sm-12">';
|
echo '<div class="col-sm-12">';
|
||||||
echo '<div class="draggable-panels" id="menu-area-09">';
|
echo '<div class="draggable-panels" id="menu-area-09">';
|
||||||
echo $panels['Area09'];
|
echo implode("\n", $panels['menu-area-09']);
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
@@ -242,17 +281,17 @@ class adminstyle_flexpanel extends adminstyle_infopanel
|
|||||||
echo '<div class="row">';
|
echo '<div class="row">';
|
||||||
echo '<div class="col-sm-4">';
|
echo '<div class="col-sm-4">';
|
||||||
echo '<div class="draggable-panels" id="menu-area-10">';
|
echo '<div class="draggable-panels" id="menu-area-10">';
|
||||||
echo $panels['Area10'];
|
echo implode("\n", $panels['menu-area-10']);
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '<div class="col-sm-4">';
|
echo '<div class="col-sm-4">';
|
||||||
echo '<div class="draggable-panels" id="menu-area-11">';
|
echo '<div class="draggable-panels" id="menu-area-11">';
|
||||||
echo $panels['Area11'];
|
echo implode("\n", $panels['menu-area-11']);
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '<div class="col-sm-4">';
|
echo '<div class="col-sm-4">';
|
||||||
echo '<div class="draggable-panels" id="menu-area-12">';
|
echo '<div class="draggable-panels" id="menu-area-12">';
|
||||||
echo $panels['Area12'];
|
echo implode("\n", $panels['menu-area-12']);
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
@@ -261,7 +300,7 @@ class adminstyle_flexpanel extends adminstyle_infopanel
|
|||||||
echo '<div class="row">';
|
echo '<div class="row">';
|
||||||
echo '<div class="col-sm-12">';
|
echo '<div class="col-sm-12">';
|
||||||
echo '<div class="draggable-panels" id="menu-area-13">';
|
echo '<div class="draggable-panels" id="menu-area-13">';
|
||||||
echo $panels['Area13'];
|
echo implode("\n", $panels['menu-area-13']);
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
@@ -277,4 +316,58 @@ class adminstyle_flexpanel extends adminstyle_infopanel
|
|||||||
echo '</div>';
|
echo '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getMenuPosition($id)
|
||||||
|
{
|
||||||
|
global $user_pref;
|
||||||
|
|
||||||
|
if(varset($user_pref['core-flexpanel-order'][$id]))
|
||||||
|
{
|
||||||
|
return $user_pref['core-flexpanel-order'][$id];
|
||||||
|
}
|
||||||
|
|
||||||
|
$default = array(
|
||||||
|
'area' => 'menu-area-01',
|
||||||
|
'weight' => 1000,
|
||||||
|
);
|
||||||
|
|
||||||
|
if($id == 'core-infopanel_help')
|
||||||
|
{
|
||||||
|
$default['area'] = 'menu-area-01';
|
||||||
|
$default['weight'] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($id == 'e-latest-list')
|
||||||
|
{
|
||||||
|
$default['area'] = 'menu-area-01';
|
||||||
|
$default['weight'] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($id == 'e-status-list')
|
||||||
|
{
|
||||||
|
$default['area'] = 'menu-area-01';
|
||||||
|
$default['weight'] = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($id == 'core-infopanel_mye107')
|
||||||
|
{
|
||||||
|
$default['area'] = 'menu-area-07';
|
||||||
|
$default['weight'] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($id == 'core-infopanel_news')
|
||||||
|
{
|
||||||
|
$default['area'] = 'menu-area-08';
|
||||||
|
$default['weight'] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($id == 'core-infopanel_website_status')
|
||||||
|
{
|
||||||
|
$default['area'] = 'menu-area-08';
|
||||||
|
$default['weight'] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $default;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -544,6 +544,10 @@ class e_menu
|
|||||||
//}
|
//}
|
||||||
|
|
||||||
$mpath = trim($mpath, '/').'/'; // faster...
|
$mpath = trim($mpath, '/').'/'; // faster...
|
||||||
|
|
||||||
|
$id = e107::getForm()->name2id($mpath . $mname);
|
||||||
|
$ns->setUniqueId($id);
|
||||||
|
|
||||||
$e107_debug ? include(e_PLUGIN.$mpath.$mname.'.php') : @include(e_PLUGIN.$mpath.$mname.'.php');
|
$e107_debug ? include(e_PLUGIN.$mpath.$mname.'.php') : @include(e_PLUGIN.$mpath.$mname.'.php');
|
||||||
}
|
}
|
||||||
e107::getDB()->db_Mark_Time("(After ".$mname.")");
|
e107::getDB()->db_Mark_Time("(After ".$mname.")");
|
||||||
|
@@ -164,7 +164,7 @@ class bootstrap3_admintheme
|
|||||||
switch(varset($style, 'admin_content'))
|
switch(varset($style, 'admin_content'))
|
||||||
{
|
{
|
||||||
case 'flexpanel':
|
case 'flexpanel':
|
||||||
echo '<div class="panel ' . $panelType[$style] . '" id="' . $mode . '">
|
echo '<div class="panel ' . $panelType[$style] . '" id="' . $data['uniqueId'] . '">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<h3 class="panel-title">' . $caption . '</h3>
|
<h3 class="panel-title">' . $caption . '</h3>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -69,28 +69,32 @@ var e107 = e107 || {'settings': {}, 'behaviors': {}};
|
|||||||
e107.callbacks.flexPanelSavePanelOrder = function ()
|
e107.callbacks.flexPanelSavePanelOrder = function ()
|
||||||
{
|
{
|
||||||
var selector = e107.settings.flexPanel.selector;
|
var selector = e107.settings.flexPanel.selector;
|
||||||
var NewOrder = [];
|
var NewOrder = {};
|
||||||
|
|
||||||
$(selector).each(function ()
|
$(selector).each(function ()
|
||||||
{
|
{
|
||||||
var $this = $(this);
|
var $this = $(this);
|
||||||
var key = $this.attr('id');
|
var area = $this.attr('id');
|
||||||
|
var weight = 0;
|
||||||
|
|
||||||
if(key)
|
if(area)
|
||||||
{
|
{
|
||||||
NewOrder[key] = [];
|
$('#' + area + ' ' + e107.settings.flexPanel.items).each(function ()
|
||||||
|
|
||||||
$('#' + key + ' ' + e107.settings.flexPanel.items).each(function ()
|
|
||||||
{
|
{
|
||||||
var $item = $(this);
|
var $item = $(this);
|
||||||
var title = $item.find('.panel-title').eq(0).text();
|
var panelID = $item.attr('id');
|
||||||
|
|
||||||
NewOrder[key].push(title);
|
NewOrder[panelID] = {
|
||||||
|
area: area,
|
||||||
|
weight: weight
|
||||||
|
};
|
||||||
|
|
||||||
|
weight++;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(NewOrder);
|
$.post(window.location.href, {'core-flexpanel-order': NewOrder});
|
||||||
};
|
};
|
||||||
|
|
||||||
})(jQuery);
|
})(jQuery);
|
||||||
|
Reference in New Issue
Block a user