1
0
mirror of https://github.com/e107inc/e107.git synced 2025-05-01 09:48:19 +02:00

Merge pull request from lonalore/dashboard

New Dashboard feature. "Flexpanel" for a movable configurable dashboard.
This commit is contained in:
Cameron 2016-11-15 11:31:59 -08:00 committed by GitHub
commit 5ddff50320
27 changed files with 1795 additions and 338 deletions

@ -15,6 +15,22 @@
*/
require_once('../class2.php');
if(varset($_GET['mode']) == 'customize')
{
$adminPref = e107::getConfig()->get('adminpref', 0);
// If not Main Admin and "Apply dashboard preferences to all administrators"
// is checked in admin theme settings.
if(!getperms("1") && $adminPref == 1)
{
e107::redirect('admin');
exit;
}
}
include_once(e107::coreTemplatePath('admin_icons')); // Needs to be loaded before infopanel AND in boot.php
if(vartrue($_GET['iframe']) == 1)
@ -31,15 +47,19 @@ if (varset($pref['adminstyle'])=='cascade' || varset($pref['adminstyle'])=='begi
$pref['adminstyle'] = 'infopanel';
}
if(strpos($pref['adminstyle'], 'infopanel') === 0)
if(in_array($pref['adminstyle'], array('infopanel', 'flexpanel')))
{
require_once(e_ADMIN.'includes/'.$pref['adminstyle'].'.php');
$_class = 'adminstyle_'.$pref['adminstyle'];
require_once(e_ADMIN . 'includes/' . $pref['adminstyle'] . '.php');
$_class = 'adminstyle_' . $pref['adminstyle'];
if(class_exists($_class, false))
{
$adp = new $_class;
$adp = new $_class;
}
else
{
$adp = new adminstyle_infopanel;
}
else $adp = new adminstyle_infopanel;
}
@ -396,7 +416,7 @@ function render_clean() // still used by classis, tabbed etc.
if(is_object($adp))
{
$adp->render();
$adp->render();
}
else
{

@ -0,0 +1,592 @@
<?php
/**
* @file
* Flexpanel dashboard style.
*/
if(!defined('e107_INIT'))
{
exit;
}
// Get "Apply dashboard preferences to all administrators" setting.
$adminPref = e107::getConfig()->get('adminpref', 0);
$flepanelEnabled = true;
// If not Main Admin and "Apply dashboard preferences to all administrators" is checked.
if(!getperms('1') && $adminPref == 1)
{
$flepanelEnabled = false;
}
define('FLEXPANEL_ENABLED', $flepanelEnabled);
// Save rearranged menus to user.
if(e_AJAX_REQUEST)
{
if(FLEXPANEL_ENABLED && varset($_POST['core-flexpanel-order'], false))
{
// If "Apply dashboard preferences to all administrators" is checked.
if($adminPref == 1)
{
e107::getConfig()
->setPosted('core-flexpanel-order', $_POST['core-flexpanel-order'])
->save();
}
else
{
e107::getUser()
->getConfig()
->set('core-flexpanel-order', $_POST['core-flexpanel-order'])
->save();
}
exit;
}
}
// Flexpanel uses infopanel's methods to avoid code duplication.
e107_require_once(e_ADMIN . 'includes/infopanel.php');
/**
* Class adminstyle_flexpanel.
*/
class adminstyle_flexpanel extends adminstyle_infopanel
{
private $iconlist = array();
/**
* Constructor.
*/
public function __construct()
{
parent::__construct();
$this->iconlist = $this->getIconList();
if(FLEXPANEL_ENABLED)
{
e107::css('inline', '.draggable-panels .panel-heading { cursor: move; }');
e107::js('core', 'core/admin.flexpanel.js', 'jquery', 4);
if(varset($_GET['mode']) == 'customize')
{
e107::css('inline', '.layout-container { display: table; margin-left: auto; margin-right: auto; }');
e107::css('inline', '.layout-container label.radio { float: left; padding: 0; width: 120px; margin: 7px; cursor: pointer; text-align: center; }');
e107::css('inline', '.layout-container label.radio img { margin-left: auto; margin-right: auto; display: block; }');
e107::css('inline', '.layout-container label.radio input { width: 100%; margin-left: auto; margin-right: auto; display: block; }');
e107::css('inline', '.layout-container label.radio p { width: 100%; text-align: center; display: block; margin: 20px 0 0 0; }');
}
// Save posted Layout type.
if(varset($_POST['e-flexpanel-layout']))
{
$user_pref = $this->getUserPref();
// If Layout has been changed, we clear previous arrangement in order to use defaults.
if($user_pref['core-flexpanel-layout'] != $_POST['e-flexpanel-layout'])
{
$this->savePref('core-flexpanel-order', array());
}
$this->savePref('core-flexpanel-layout', $_POST['e-flexpanel-layout']);
}
}
}
/**
* Render contents.
*/
public function render()
{
$admin_sc = e107::getScBatch('admin');
$tp = e107::getParser();
$ns = e107::getRender();
$mes = e107::getMessage();
$pref = e107::getPref();
$frm = e107::getForm();
$user_pref = $this->getUserPref();
if(varset($_GET['mode']) == 'customize')
{
echo $frm->open('infopanel', 'post', e_SELF);
echo $ns->tablerender(LAN_DASHBOARD_LAYOUT, $this->renderLayoutPicker(), 'personalize', true);
echo '<div class="clear">&nbsp;</div>';
echo $this->render_infopanel_options(true);
echo $frm->close();
return;
}
// Default menu areas.
$panels = array(
'menu-area-01' => array(), // Sidebar.
'menu-area-02' => array(),
'menu-area-03' => array(),
'menu-area-04' => array(),
'menu-area-05' => array(),
'menu-area-06' => array(),
'menu-area-07' => array(), // Content left.
'menu-area-08' => array(), // Content right.
'menu-area-09' => array(),
'menu-area-10' => array(),
'menu-area-11' => array(),
'menu-area-12' => array(),
'menu-area-13' => array(),
);
// "Help" box.
$tp->parseTemplate("{SETSTYLE=flexpanel}");
$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.
$tp->parseTemplate("{SETSTYLE=flexpanel}");
$info = $this->getMenuPosition('e-latest-list');
$panels[$info['area']][$info['weight']] .= $tp->parseTemplate('{ADMIN_LATEST=infopanel}', true, $admin_sc);
// "Status" box.
$tp->parseTemplate("{SETSTYLE=flexpanel}");
$info = $this->getMenuPosition('e-status-list');
$panels[$info['area']][$info['weight']] .= $tp->parseTemplate('{ADMIN_STATUS=infopanel}', true, $admin_sc);
// --------------------- Personalized Panel -----------------------
if(empty(varset($user_pref['core-infopanel-mye107'], array()))) // Set default icons.
{
$defArray = array(
0 => 'e-administrator',
1 => 'e-cpage',
2 => 'e-frontpage',
3 => 'e-mailout',
4 => 'e-image',
5 => 'e-menus',
6 => 'e-meta',
7 => 'e-newspost',
8 => 'e-plugin',
9 => 'e-prefs',
10 => 'e-links',
11 => 'e-theme',
12 => 'e-userclass2',
13 => 'e-users',
14 => 'e-wmessage'
);
$user_pref['core-infopanel-mye107'] = $defArray;
}
$tp->parseTemplate("{SETSTYLE=flexpanel}");
$mainPanel = "<div id='core-infopanel_mye107'>";
$mainPanel .= "<div class='left'>";
foreach($this->iconlist as $key => $val)
{
if(!vartrue($user_pref['core-infopanel-mye107']) || in_array($key, $user_pref['core-infopanel-mye107']))
{
$mainPanel .= e107::getNav()->renderAdminButton($val['link'], $val['title'], $val['caption'], $val['perms'], $val['icon_32'], "div");
}
}
$mainPanel .= "</div></div>";
// Rendering the saved configuration.
$tp->parseTemplate("{SETSTYLE=flexpanel}");
$caption = $tp->lanVars(LAN_CONTROL_PANEL, ucwords(USERNAME));
$ns->setUniqueId('core-infopanel_mye107');
$coreInfoPanelMyE107 = $ns->tablerender($caption, $mainPanel, "core-infopanel_mye107", true);
$info = $this->getMenuPosition('core-infopanel_mye107');
$panels[$info['area']][$info['weight']] .= $coreInfoPanelMyE107;
// --------------------- e107 News --------------------------------
$newsTabs = array();
$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['themeFeed'] = array('caption' => LAN_THEMES, 'text' => "<div id='e-adminfeed-theme'></div>");
$tp->parseTemplate("{SETSTYLE=flexpanel}");
$ns->setUniqueId('core-infopanel_news');
$coreInfoPanelNews = $ns->tablerender(LAN_LATEST_e107_NEWS, e107::getForm()->tabs($newsTabs, array('active' => 'coreFeed')), "core-infopanel_news", true);
$info = $this->getMenuPosition('core-infopanel_news');
$panels[$info['area']][$info['weight']] .= $coreInfoPanelNews;
// --------------------- Website Status ---------------------------
$tp->parseTemplate("{SETSTYLE=flexpanel}");
$ns->setUniqueId('core-infopanel_website_status');
$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 --------------------------
// $panels['Area01'] .= $this->renderLatestComments(); // TODO
// --------------------- User Selected Menus ----------------------
if(varset($user_pref['core-infopanel-menus']))
{
$tp->parseTemplate("{SETSTYLE=flexpanel}");
foreach($user_pref['core-infopanel-menus'] as $val)
{
// Custom menu.
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);
}
else
{
$id = $frm->name2id($val);
$inc = $tp->parseTemplate("{PLUGIN=$val|TRUE}");
}
$info = $this->getMenuPosition($id);
$panels[$info['area']][$info['weight']] .= $inc;
}
}
// Sorting panels.
foreach($panels as $key => $value)
{
ksort($panels[$key]);
}
$layout = varset($user_pref['core-flexpanel-layout'], 'default');
$layout_file = e_ADMIN . 'includes/layouts/flexpanel_' . $layout . '.php';
if(is_readable($layout_file))
{
include_once($layout_file);
$template = varset($FLEXPANEL_LAYOUT);
$template = str_replace('{MESSAGES}', $mes->render(), $template);
foreach($panels as $key => $value)
{
$token = '{' . strtoupper(str_replace('-', '_', $key)) . '}';
$template = str_replace($token, implode("\n", $value), $template);
}
echo $template;
}
}
/**
* Get selected area and position for a menu item.
*
* @param $id
* Menu ID.
* @return array
* Contains menu area and weight.
*/
function getMenuPosition($id)
{
$user_pref = $this->getUserPref();
if(varset($user_pref['core-flexpanel-order'][$id]))
{
return $user_pref['core-flexpanel-order'][$id];
}
$default = array(
'area' => 'menu-area-01',
'weight' => 1000,
);
switch(varset($user_pref['core-flexpanel-layout'], 'default'))
{
case 'two_col_bricks':
if($id == 'core-infopanel_help')
{
$default['area'] = 'menu-area-01';
$default['weight'] = 0;
}
if($id == 'e-latest-list')
{
$default['area'] = 'menu-area-04';
$default['weight'] = 1;
}
if($id == 'e-status-list')
{
$default['area'] = 'menu-area-04';
$default['weight'] = 2;
}
if($id == 'core-infopanel_mye107')
{
$default['area'] = 'menu-area-02';
$default['weight'] = 0;
}
if($id == 'core-infopanel_news')
{
$default['area'] = 'menu-area-03';
$default['weight'] = 0;
}
if($id == 'core-infopanel_website_status')
{
$default['area'] = 'menu-area-03';
$default['weight'] = 1;
}
break;
case 'two_col_stacked':
if($id == 'core-infopanel_help')
{
$default['area'] = 'menu-area-01';
$default['weight'] = 1;
}
if($id == 'e-latest-list')
{
$default['area'] = 'menu-area-04';
$default['weight'] = 0;
}
if($id == 'e-status-list')
{
$default['area'] = 'menu-area-05';
$default['weight'] = 0;
}
if($id == 'core-infopanel_mye107')
{
$default['area'] = 'menu-area-02';
$default['weight'] = 0;
}
if($id == 'core-infopanel_news')
{
$default['area'] = 'menu-area-03';
$default['weight'] = 0;
}
if($id == 'core-infopanel_website_status')
{
$default['area'] = 'menu-area-12';
$default['weight'] = 1;
}
break;
case 'three_col_bricks':
if($id == 'core-infopanel_help')
{
$default['area'] = 'menu-area-02';
$default['weight'] = 0;
}
if($id == 'e-latest-list')
{
$default['area'] = 'menu-area-03';
$default['weight'] = 0;
}
if($id == 'e-status-list')
{
$default['area'] = 'menu-area-04';
$default['weight'] = 0;
}
if($id == 'core-infopanel_mye107')
{
$default['area'] = 'menu-area-01';
$default['weight'] = 0;
}
if($id == 'core-infopanel_news')
{
$default['area'] = 'menu-area-09';
$default['weight'] = 0;
}
if($id == 'core-infopanel_website_status')
{
$default['area'] = 'menu-area-13';
$default['weight'] = 0;
}
break;
case 'three_col_stacked':
if($id == 'core-infopanel_help')
{
$default['area'] = 'menu-area-03';
$default['weight'] = 0;
}
if($id == 'e-latest-list')
{
$default['area'] = 'menu-area-04';
$default['weight'] = 0;
}
if($id == 'e-status-list')
{
$default['area'] = 'menu-area-05';
$default['weight'] = 0;
}
if($id == 'core-infopanel_mye107')
{
$default['area'] = 'menu-area-02';
$default['weight'] = 0;
}
if($id == 'core-infopanel_news')
{
$default['area'] = 'menu-area-12';
$default['weight'] = 0;
}
if($id == 'core-infopanel_website_status')
{
$default['area'] = 'menu-area-13';
$default['weight'] = 0;
}
break;
case 'one_col':
if($id == 'core-infopanel_help')
{
$default['area'] = 'menu-area-01';
$default['weight'] = 0;
}
if($id == 'e-latest-list')
{
$default['area'] = 'menu-area-02';
$default['weight'] = 0;
}
if($id == 'e-status-list')
{
$default['area'] = 'menu-area-03';
$default['weight'] = 0;
}
if($id == 'core-infopanel_mye107')
{
$default['area'] = 'menu-area-04';
$default['weight'] = 0;
}
if($id == 'core-infopanel_news')
{
$default['area'] = 'menu-area-05';
$default['weight'] = 0;
}
if($id == 'core-infopanel_website_status')
{
$default['area'] = 'menu-area-06';
$default['weight'] = 0;
}
break;
case 'wider_sidebar':
case 'default':
default:
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;
}
break;
}
return $default;
}
/**
* Render layout-picker widget.
*
* @return string
*/
function renderLayoutPicker()
{
$tp = e107::getParser();
$fr = e107::getForm();
$fl = e107::getFile();
$user_pref = $this->getUserPref();
$default = varset($user_pref['core-flexpanel-layout'], 'default');
$html = '<div class="layout-container">';
$layouts = array(
'default',
'wider_sidebar',
'two_col_bricks',
'two_col_stacked',
'three_col_bricks',
'three_col_stacked',
'one_col',
);
$files = $fl->get_files(e_ADMIN . 'includes/layouts/', "flexpanel_(.*).php", "standard", 1);
foreach($files as $num => $val)
{
$filename = basename($val['fname']);
$layout = str_replace('flexpanel_', '', $filename);
$layout = str_replace('.php', '', $layout);
if(!in_array($layout, $layouts))
{
$layouts[] = $layout;
}
}
foreach($layouts as $layout)
{
$html .= '<label class="radio">';
$html .= $tp->toImage('{e_ADMIN}includes/layouts/flexpanel_' . $layout . '.png', array(
'legacy' => '{e_ADMIN}includes/layouts/',
'w' => 75,
));
$checked = ($default == $layout);
$html .= $fr->radio('e-flexpanel-layout', $layout, $checked);
$name = str_replace('_', ' ', $layout);
$html .= '<p>' . ucwords($name) . '</p>';
$html .= '</label>';
}
$html .= '<div class="clear"></div>';
$html .= '</div>';
return $html;
}
}

@ -31,45 +31,86 @@ class adminstyle_infopanel
function __construct()
{
// e107::js('core','zrssfeed/jquery.zrssfeed.min.js'); // http://www.zazar.net/developers/jquery/zrssfeed/
$code = "
jQuery(function($){
$('#e-adminfeed').load('".e_ADMIN."admin.php?mode=core&type=feed');
$('#e-adminfeed-plugin').load('".e_ADMIN."admin.php?mode=addons&type=plugin');
$('#e-adminfeed-theme').load('".e_ADMIN."admin.php?mode=addons&type=theme');
});
";
global $user_pref; // quick fix.
$pref = e107::getPref();
";
e107::js('inline',$code,'jquery');
if (isset($_POST['submit-mye107']) || varset($_POST['submit-mymenus']))
{
$user_pref['core-infopanel-mye107'] = $_POST['e-mye107'];
$user_pref['core-infopanel-menus'] = $_POST['e-mymenus'];
save_prefs('user');
$this->savePref('core-infopanel-mye107', $_POST['e-mye107']);
$this->savePref('core-infopanel-menus', $_POST['e-mymenus']);
}
// $array_functions_assoc = e107::getNav()->adminLinks('assoc');
// $this->iconlist = array_merge($array_functions_assoc, e107::getNav()->pluginLinks(E_16_PLUGMANAGER, "array"));
$this->iconlist = e107::getNav()->adminLinks();
}
/**
* Save preferences.
*
* @param $key
* @param $value
*/
public function savePref($key, $value)
{
// Get "Apply dashboard preferences to all administrators" setting.
$adminPref = e107::getConfig()->get('adminpref', 0);
// If "Apply dashboard preferences to all administrators" is checked.
// Save as $pref.
if($adminPref == 1)
{
e107::getConfig()
->setPosted($key, $value)
->save();
}
// Save as $user_pref.
else
{
e107::getUser()
->getConfig()
->set($key, $value)
->save();
}
}
/**
* Get preferences.
*
* @return mixed
*/
public function getUserPref()
{
// Get "Apply dashboard preferences to all administrators" setting.
$adminPref = e107::getConfig()->get('adminpref', 0);
// If "Apply dashboard preferences to all administrators" is checked.
// Get $pref.
if($adminPref == 1)
{
$user_pref = e107::getPref();
}
// Get $user_pref.
else
{
$user_pref = e107::getUser()->getPref();
}
return $user_pref;
}
/**
* Allow to get Icon List.
*/
function getIconList()
{
return $this->iconlist;
}
function render()
{
@ -120,33 +161,32 @@ class adminstyle_infopanel
';
*/
//TODO LANs throughout.
global $style, $user_pref;
$user_pref = $this->getUserPref();
// ---------------------- Start Panel --------------------------------
// $text = "<div >";
if (getperms('0') && !vartrue($user_pref['core-infopanel-mye107'])) // Set default icons.
if(empty(varset($user_pref['core-infopanel-mye107'], array()))) // Set default icons.
{
$defArray = array (
0 => 'e-administrator',
1 => 'e-cpage',
2 => 'e-frontpage',
3 => 'e-mailout',
4 => 'e-image',
5 => 'e-menus',
6 => 'e-meta',
7 => 'e-newspost',
8 => 'e-plugin',
9 => 'e-prefs',
10 => 'e-links',
11 => 'e-theme',
12 => 'e-userclass2',
13 => 'e-users',
14 => 'e-wmessage'
);
$user_pref['core-infopanel-mye107'] = vartrue($pref['core-infopanel-default'],$defArray);
$defArray = array(
0 => 'e-administrator',
1 => 'e-cpage',
2 => 'e-frontpage',
3 => 'e-mailout',
4 => 'e-image',
5 => 'e-menus',
6 => 'e-meta',
7 => 'e-newspost',
8 => 'e-plugin',
9 => 'e-prefs',
10 => 'e-links',
11 => 'e-theme',
12 => 'e-userclass2',
13 => 'e-users',
14 => 'e-wmessage'
);
$user_pref['core-infopanel-mye107'] = $defArray;
}
@ -305,7 +345,7 @@ class adminstyle_infopanel
}
else
{
echo $frm->open('infopanel','post',e_SELF);
echo $frm->open('infopanel','post', e_SELF);
echo $this->render_infopanel_options(true);
echo $frm->close();
}
@ -585,37 +625,20 @@ class adminstyle_infopanel
function render_infopanel_options($render = false) //TODO LAN
{
// $frm = e107::getSingleton('e_form');
$frm = e107::getForm();
$mes = e107::getMessage();
$ns = e107::getRender();
$start = "<div>
To customize this page, please <a title = 'Customize Admin' href='".e_SELF."?mode=customize&amp;iframe=1' class='e-modal-iframe'>click here</a>.
</div>
";
if($render == false){ return ""; }
$text2 = "<div id='customize_icons' class='forumheader3' style='border:0px;margin:0px'>
<form method='post' id='e-modal-form' action='".e_SELF."'>";
$text2 .= $ns->tablerender(LAN_PERSONALIZE_ICONS, $this->render_infopanel_icons(),'personalize',true);
$text2 = $ns->tablerender(LAN_PERSONALIZE_ICONS, $this->render_infopanel_icons(),'personalize',true);
$text2 .= "<div class='clear'>&nbsp;</div>";
$text2 .= $ns->tablerender(LAN_PERSONALIZE_MENUS, $this->render_infopanel_menu_options(),'personalize',true);
// $text2 .= render_infopanel_icons();
//$text2 .= "<div class='clear'>&nbsp;</div>";
// $text2 .= "<h3>Menus</h3>";
// $text2 .= render_infopanel_menu_options();
$text2 .= "<div class='clear'>&nbsp;</div>";
$text2 .= "<div id='button' class='buttons-bar center'>";
$text2 .= $frm->admin_button('submit-mye107', LAN_SAVE, 'create');
$text2 .= "</div></form>";
// $text2 .= "</div>";
// $end = "</div>";
$text2 .= "</div>";
return $mes->render().$text2;
}
@ -624,11 +647,32 @@ class adminstyle_infopanel
{
$frm = e107::getForm();
global $user_pref;
$user_pref = $this->getUserPref();
$text = "<div style='padding-left:20px'>";
if(empty(varset($user_pref['core-infopanel-mye107'], array()))) // Set default icons.
{
$defArray = array(
0 => 'e-administrator',
1 => 'e-cpage',
2 => 'e-frontpage',
3 => 'e-mailout',
4 => 'e-image',
5 => 'e-menus',
6 => 'e-meta',
7 => 'e-newspost',
8 => 'e-plugin',
9 => 'e-prefs',
10 => 'e-links',
11 => 'e-theme',
12 => 'e-userclass2',
13 => 'e-users',
14 => 'e-wmessage'
);
$user_pref['core-infopanel-mye107'] = $defArray;
}
foreach ($this->iconlist as $key=>$icon)
@ -642,7 +686,7 @@ class adminstyle_infopanel
}
}
if (is_array($pluglist))
if (isset($pluglist) && is_array($pluglist))
{
foreach ($pluglist as $key=>$icon)
{
@ -669,7 +713,7 @@ class adminstyle_infopanel
}
$frm = e107::getForm();
global $user_pref;
$user_pref = $this->getUserPref();
$text = "<div style='padding-left:20px'>";

@ -0,0 +1,115 @@
<?php
/**
* @file
* Default layout for "flexpanel" admin dashboard style.
*/
$FLEXPANEL_LAYOUT = '
<div class="row">
<div class="col-md-3 col-lg-2 admin-left-panel">
<div class="draggable-panels" id="menu-area-01">
{MENU_AREA_01}
</div>
</div>
<div class="col-md-9 col-lg-10 admin-right-panel">
<div class="sidebar-toggle">
<a href="#" title="Toggle Sidebar" data-toggle-sidebar="true">&nbsp;</a>
</div>
<div>
<div class="row">
<div class="col-sm-12">
{MESSAGES}
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels" id="menu-area-02">
{MENU_AREA_02}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="draggable-panels" id="menu-area-03">
{MENU_AREA_03}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels" id="menu-area-04">
{MENU_AREA_04}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels" id="menu-area-05">
{MENU_AREA_05}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels" id="menu-area-06">
{MENU_AREA_06}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="draggable-panels" id="menu-area-07">
{MENU_AREA_07}
</div>
</div>
<div class="col-sm-6">
<div class="draggable-panels" id="menu-area-08">
{MENU_AREA_08}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels" id="menu-area-09">
{MENU_AREA_09}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="draggable-panels" id="menu-area-10">
{MENU_AREA_10}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels" id="menu-area-11">
{MENU_AREA_11}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels" id="menu-area-12">
{MENU_AREA_12}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels" id="menu-area-13">
{MENU_AREA_13}
</div>
</div>
</div>
</div>
</div>
</div>
';

Binary file not shown.

After

(image error) Size: 2.3 KiB

@ -0,0 +1,112 @@
<?php
/**
* @file
* Layout for "flexpanel" admin dashboard style.
*/
$FLEXPANEL_LAYOUT = '
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-01">
{MENU_AREA_01}
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-02">
{MENU_AREA_02}
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-03">
{MENU_AREA_03}
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-04">
{MENU_AREA_04}
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-05">
{MENU_AREA_05}
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-06">
{MENU_AREA_06}
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-07">
{MENU_AREA_07}
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-08">
{MENU_AREA_08}
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-09">
{MENU_AREA_09}
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-10">
{MENU_AREA_10}
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-11">
{MENU_AREA_11}
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-12">
{MENU_AREA_12}
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-13">
{MENU_AREA_13}
</div>
</div>
</div>
';

Binary file not shown.

After

(image error) Size: 2.4 KiB

@ -0,0 +1,100 @@
<?php
/**
* @file
* Layout for "flexpanel" admin dashboard style.
*/
$FLEXPANEL_LAYOUT = '
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-01">
{MENU_AREA_01}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-02">
{MENU_AREA_02}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-03">
{MENU_AREA_03}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-04">
{MENU_AREA_04}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels bg-blue" id="menu-area-05">
{MENU_AREA_05}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-06">
{MENU_AREA_06}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-07">
{MENU_AREA_07}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-08">
{MENU_AREA_08}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels bg-blue" id="menu-area-09">
{MENU_AREA_09}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-10">
{MENU_AREA_10}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-11">
{MENU_AREA_11}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-12">
{MENU_AREA_12}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels bg-blue" id="menu-area-13">
{MENU_AREA_13}
</div>
</div>
</div>
';

Binary file not shown.

After

(image error) Size: 1.9 KiB

@ -0,0 +1,90 @@
<?php
/**
* @file
* Layout for "flexpanel" admin dashboard style.
*/
$FLEXPANEL_LAYOUT = '
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-01">
{MENU_AREA_01}
</div>
<div class="draggable-panels bg-blue" id="menu-area-02">
{MENU_AREA_02}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-03">
{MENU_AREA_03}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-04">
{MENU_AREA_04}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-05">
{MENU_AREA_05}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-06">
{MENU_AREA_06}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-07">
{MENU_AREA_07}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-08">
{MENU_AREA_08}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-09">
{MENU_AREA_09}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-10">
{MENU_AREA_10}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels bg-blue" id="menu-area-11">
{MENU_AREA_11}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels bg-blue" id="menu-area-12">
{MENU_AREA_12}
</div>
<div class="draggable-panels bg-blue" id="menu-area-13">
{MENU_AREA_13}
</div>
</div>
</div>
';

Binary file not shown.

After

(image error) Size: 2.1 KiB

@ -0,0 +1,104 @@
<?php
/**
* @file
* Layout for "flexpanel" admin dashboard style.
*/
$FLEXPANEL_LAYOUT = '
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-01">
{MENU_AREA_01}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-02">
{MENU_AREA_02}
</div>
</div>
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-03">
{MENU_AREA_03}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels bg-blue" id="menu-area-04">
{MENU_AREA_04}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-05">
{MENU_AREA_05}
</div>
</div>
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-06">
{MENU_AREA_06}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels bg-blue" id="menu-area-07">
{MENU_AREA_07}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-08">
{MENU_AREA_08}
</div>
</div>
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-09">
{MENU_AREA_09}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels bg-blue" id="menu-area-10">
{MENU_AREA_10}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-11">
{MENU_AREA_11}
</div>
</div>
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-12">
{MENU_AREA_12}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels bg-blue" id="menu-area-13">
{MENU_AREA_13}
</div>
</div>
</div>
';

Binary file not shown.

After

(image error) Size: 2.5 KiB

@ -0,0 +1,97 @@
<?php
/**
* @file
* Layout for "flexpanel" admin dashboard style.
*/
$FLEXPANEL_LAYOUT = '
<div class="row">
<div class="col-md-12">
<div class="draggable-panels bg-blue" id="menu-area-01">
{MENU_AREA_01}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-02">
{MENU_AREA_02}
</div>
</div>
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-03">
{MENU_AREA_03}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-04">
{MENU_AREA_04}
</div>
</div>
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-05">
{MENU_AREA_05}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-06">
{MENU_AREA_06}
</div>
</div>
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-07">
{MENU_AREA_07}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-08">
{MENU_AREA_08}
</div>
</div>
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-09">
{MENU_AREA_09}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-10">
{MENU_AREA_10}
</div>
</div>
<div class="col-sm-6">
<div class="draggable-panels bg-blue" id="menu-area-11">
{MENU_AREA_11}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels bg-blue" id="menu-area-12">
{MENU_AREA_12}
</div>
<div class="draggable-panels bg-blue" id="menu-area-13">
{MENU_AREA_13}
</div>
</div>
</div>
';

Binary file not shown.

After

(image error) Size: 2.4 KiB

@ -0,0 +1,115 @@
<?php
/**
* @file
* Layout for "flexpanel" admin dashboard style.
*/
$FLEXPANEL_LAYOUT = '
<div class="row">
<div class="col-md-3 col-lg-3 admin-left-panel">
<div class="draggable-panels" id="menu-area-01">
{MENU_AREA_01}
</div>
</div>
<div class="col-md-9 col-lg-9 admin-right-panel">
<div class="sidebar-toggle">
<a href="#" title="Toggle Sidebar" data-toggle-sidebar="true">&nbsp;</a>
</div>
<div>
<div class="row">
<div class="col-sm-12">
{MESSAGES}
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels" id="menu-area-02">
{MENU_AREA_02}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="draggable-panels" id="menu-area-03">
{MENU_AREA_03}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels" id="menu-area-04">
{MENU_AREA_04}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels" id="menu-area-05">
{MENU_AREA_05}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels" id="menu-area-06">
{MENU_AREA_06}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="draggable-panels" id="menu-area-07">
{MENU_AREA_07}
</div>
</div>
<div class="col-sm-6">
<div class="draggable-panels" id="menu-area-08">
{MENU_AREA_08}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels" id="menu-area-09">
{MENU_AREA_09}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="draggable-panels" id="menu-area-10">
{MENU_AREA_10}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels" id="menu-area-11">
{MENU_AREA_11}
</div>
</div>
<div class="col-sm-4">
<div class="draggable-panels" id="menu-area-12">
{MENU_AREA_12}
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="draggable-panels" id="menu-area-13">
{MENU_AREA_13}
</div>
</div>
</div>
</div>
</div>
</div>
';

Binary file not shown.

After

(image error) Size: 2.4 KiB

@ -405,18 +405,17 @@ class admin_shortcodes
if(isset($params['nomenu'])) { return $select; }
if($select) { $text .= "<div class='center'>{$select}</div>"; }
return $ns->tablerender(UTHEME_MENU_L2, $text, '', true);
return $ns->tablerender(UTHEME_MENU_L2, $text, 'core-menu-lang', true);
}
function sc_admin_latest($parm)
{
if($parm == 'infopanel' && e_PAGE != 'admin.php')
if(($parm == 'infopanel' || $parm == 'flexpanel') && e_PAGE != 'admin.php')
{
return;
}
if (ADMIN) {
if (!function_exists('admin_latest')) //XXX Is this still necessary?
{
@ -508,8 +507,7 @@ class admin_shortcodes
// $text .= "</div>";
$ns->setUniqueId('e-latest-list');
return ($parm != 'norender') ? $ns -> tablerender(ADLAN_LAT_1, $text, '', TRUE) : $text;
return ($parm != 'norender') ? $ns -> tablerender(ADLAN_LAT_1, $text, '', TRUE) : $text;
}
}
@ -1096,7 +1094,7 @@ class admin_shortcodes
function sc_admin_status($parm)
{
if($parm == 'infopanel' && e_PAGE != 'admin.php')
if(($parm == 'infopanel' || $parm == 'flexpanel') && e_PAGE != 'admin.php')
{
return;
}
@ -1681,16 +1679,22 @@ Inverse 10 <span class="badge badge-inverse">10</span>
$tmp[1]['image_large'] = '';
$tmp[1]['image_src'] = '';
$tmp[1]['image_large_src'] = '';
$tmp[2]['text'] = LAN_PERSONALIZE;
$tmp[2]['description'] = "Customize administration panels";
$tmp[2]['link'] = e_ADMIN.'admin.php?mode=customize';
$tmp[2]['image'] = "<i class='S16 e-admins-16'></i>"; //E_16_ADMIN; // "<img src='".E_16_NAV_ADMIN."' alt='".ADLAN_151."' class='icon S16' />";
$tmp[2]['image_large'] = '';
$tmp[2]['image_src'] = '';
$tmp[2]['image_large_src'] = '';
// $tmp[2]['perm'] = '';
// If not Main Admin and "Apply dashboard preferences to all administrators"
// is checked in admin theme settings.
$adminPref = e107::getConfig()->get('adminpref', 0);
if(getperms("1") || $adminPref == 0)
{
$tmp[2]['text'] = LAN_PERSONALIZE;
$tmp[2]['description'] = "Customize administration panels";
$tmp[2]['link'] = e_ADMIN . 'admin.php?mode=customize';
$tmp[2]['image'] = "<i class='S16 e-admins-16'></i>"; //E_16_ADMIN; // "<img src='".E_16_NAV_ADMIN."' alt='".ADLAN_151."' class='icon S16' />";
$tmp[2]['image_large'] = '';
$tmp[2]['image_src'] = '';
$tmp[2]['image_large_src'] = '';
// $tmp[2]['perm'] = '';
}
$tmp[3]['text'] = LAN_LOGOUT;

@ -542,8 +542,12 @@ class e_menu
//{
// $mpath .= '/';
//}
$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::getDB()->db_Mark_Time("(After ".$mname.")");

@ -706,7 +706,7 @@ class themeHandler
$text = $this->renderTheme(1, $theme);
}
}
echo "<form enctype='multipart/form-data' method='post' action='".e_SELF."?".$mode."'>\n";
echo "<form enctype='multipart/form-data' method='post' action='".e_SELF."?mode=".$mode."'>\n";
$ns->tablerender(TPVLAN_26.SEP.TPVLAN_33, $mes->render().$text);
echo "</form>";
}
@ -722,7 +722,7 @@ class themeHandler
$text = $this->renderTheme(2, $theme);
}
}
echo "<form enctype='multipart/form-data' method='post' action='".e_SELF."?".$mode."'>\n";
echo "<form enctype='multipart/form-data' method='post' action='".e_SELF."?mode=".$mode."'>\n";
$ns->tablerender(TPVLAN_26.SEP.TPVLAN_34, $mes->render().$text);
echo "</form>";
}
@ -744,7 +744,7 @@ class themeHandler
// print_a($theme);
}
$text .= "<div class='clear'>&nbsp;</div>";
echo "<form enctype='multipart/form-data' method='post' action='".e_SELF."?".$mode."'>\n";
echo "<form enctype='multipart/form-data' method='post' action='".e_SELF."?mode=".$mode."'>\n";
$ns->tablerender(TPVLAN_26.SEP.TPVLAN_39, $mes->render().$text);
$text .= "</form>";
@ -1210,10 +1210,10 @@ class themeHandler
<col class='col-control' />
<col class='col-control' />
</colgroup>
<tr>
<td><b>".TPVLAN_11."</b></td>
<td>".$theme['version']."</td>
<td class='well center middle' rowspan='9' style='text-align:center; vertical-align:middle;width:25%'>".$thumbnail."</td>
<tr>
<td><b>".TPVLAN_11."</b></td>
<td>".$theme['version']."</td>
<td class='well center middle' rowspan='9' style='text-align:center; vertical-align:middle;width:25%'>".$thumbnail."</td>
</tr>";
$text .= "<tr><td style='vertical-align:top; width:25%'><b>".LAN_AUTHOR."</b>:</td><td style='vertical-align:top'>".$author."</td></tr>";
@ -1225,8 +1225,7 @@ class themeHandler
$text .= "<tr><td style='vertical-align:top; width:25%'><b>".LAN_FOLDER."</b>:</td><td style='vertical-align:top'>".$theme['path']."</td></tr>";
// $text .= "<tr><td style='vertical-align:top; width:25%'><b>Price</b>:</td><td style='vertical-align:top'>".$price."</td></tr>";
$text .= "<tr><td style='vertical-align:top; width:25%'><b>".TPVLAN_49."</b>:</td>
<td style='vertical-align:top' colspan='2'>";
$text .= "<tr><td style='vertical-align:top; width:25%'><b>".TPVLAN_49."</b>:</td><td style='vertical-align:top'>";
$text .= ($theme['xhtmlcompliant']) ? "W3C XHTML ".$theme['xhtmlcompliant'] : TPVLAN_71;
$text .= ($theme['csscompliant']) ? " &amp; CSS ".$theme['csscompliant'] : "";
$text .= "</td></tr>";
@ -1246,7 +1245,7 @@ class themeHandler
$text .= "
<tr>
<td style='vertical-align:top; width:24%;'><b>".TPVLAN_53."</b></td>
<td colspan='2' style='vertical-align:top width:auto;'>";
<td style='vertical-align:top width:auto;'>";
if(varset($theme['plugins']))
{
@ -1410,13 +1409,24 @@ class themeHandler
$text .= "
<tr>
<td><b>".TPVLAN_41.":</b></td>
<td colspan='2'>".$astext."</td>
<td>".$astext."</td>
</tr>
\n";
$text .= "
<tr>
<td><b>" . TPVLAN_89 . "</b></td>
<td colspan='2'>
<label class='checkbox'>
" . $frm->checkbox('adminpref', 1, (varset($pref['adminpref'], 0) == 1)) . "
</label>
</td>
</tr>
\n";
}
$text .= $itext;
$text .= varset($itext, '');
$theme['css'] = $this->filterStylesheets($mode, $theme);
@ -1443,16 +1453,12 @@ class themeHandler
switch($mode)
{
case 2: // admin mode.
$for = $frm->name2id("admincss-".$css['name']);
$text2 = "
<td class='center'>".
$frm->radio('admincss', $css['name'], vartrue($pref['admincss'])== $css['name'])."
</td>
<td><label for='".$for."'>".$css['info']."</label></td>";
$text2 = "<td class='center'>";
$text2 .= $frm->radio('admincss', $css['name'], vartrue($pref['admincss'])== $css['name']);
$text2 .= "</td>";
$text2 .= "<td><label for='".$for."'>".$css['info']."</label></td>";
$text2 .= "<td>".($css['info'] ? $css['info'] : ($css['name'] == "admin_style.css" ? TPVLAN_23 : TPVLAN_24))."</td>\n";
break;
case 1: // front 'sitetheme' mode.
@ -1981,9 +1987,14 @@ class themeHandler
//TODO adminlog
e107::getConfig()->setPosted('admincss', $_POST['admincss'])->setPosted('adminstyle', $_POST['adminstyle']);
e107::getConfig()
->setPosted('admincss', $_POST['admincss'])
->setPosted('adminstyle', $_POST['adminstyle'])
->setPosted('adminpref', varset($_POST['adminpref'], 0));
return (e107::getConfig()->dataHasChangedFor('admincss') || e107::getConfig()->dataHasChangedFor('adminstyle'));
return (e107::getConfig()->dataHasChangedFor('admincss')
|| e107::getConfig()->dataHasChangedFor('adminstyle')
|| e107::getConfig()->dataHasChangedFor('adminpref'));
}
function SetCustomPages($array)

@ -458,6 +458,7 @@ define("LAN_PERSONALIZE", "Personalize");
define("LAN_SELECT_COLUMNS_TO_DISPLAY", "Select columns to display");
define("LAN_DISPLAY_COLUMNS", "Display Columns");
define("LAN_SETTINGS_NOT_SAVED_NO_CHANGES_MADE", "Settings not saved as no changes were made.");
define("LAN_DASHBOARD_LAYOUT", "Dashboard Layout");
define("LAN_AFTER_SUBMIT", "After submit:");
define("LAN_UNAVAILABLE", "Unavailable");
define("LAN_READY_UP_FOLDER_FIELDS", "Ready to use upload form fields, optional - file list view");
@ -470,4 +471,3 @@ define("LAN_GO_TO_LIST", "go to list");
define("LAN_CREATE_ANOTHER", "create another");
define("LAN_EDIT_CURRENT", "edit current");
define("LAN_MAINTENANCE", "Maintenance");

@ -122,4 +122,4 @@ define("TPVLAN_86","Could not change site theme.");
define("TPVLAN_87","Rendering Theme Config");
define("TPVLAN_88","Converter");
?>
define("TPVLAN_89", "Apply dashboard preferences to all administrators");

@ -1176,10 +1176,10 @@ li.rssRow > div {
.core-mainpanel-link-icon img { margin-bottom: 5px }
.sidebar-toggle { width: 14px; height:300px; display: block; position: absolute; margin-left: -25px; margin-top:130px }
.sidebar-toggle { width: 14px; height:300px; display: block; position: absolute; margin-left: -25px; margin-top:130px; z-index: 1; }
.sidebar-toggle a {color:#C6C6C6; height:300px; display:block; width:100%; border-right:7px double #77ACD9; opacity: 0; transition:.5s; z-index:5000; outline:0 }
.sidebar-toggle a:hover { opacity: .8; outline:0 }
#left-panel.toggled { display: none }
.admin-left-panel.toggled { display: none }
/* ######## selectize.js ######## */
@ -1278,9 +1278,8 @@ li.after-submit:hover { background-color: #337AB7; color:white }
.plugin-manager .fa-refresh { padding-top: 4px }
#left-panel .panel-title span { display: inline-block; vertical-align: middle; color:white;text-shadow:0 1px 1px #000}
#left-panel .panel-title .S24, #left-panel .panel-title img { margin-right:6px; width:24px; height:24px; vertical-align:middle}
.admin-left-panel .panel-title span { display: inline-block; vertical-align: middle; color:white;text-shadow:0 1px 1px #000}
.admin-left-panel .panel-title .S24, .admin-left-panel .panel-title img { margin-right:6px; width:24px; height:24px; vertical-align:middle}
/*

@ -208,121 +208,115 @@ $ADMIN_MODAL = '<div id="uiModal" class="modal hide fade" tabindex="-1" role="d
</div>';*/
$ADMIN_MODAL = '<div id="uiModal" class="modal fade">
<div id="admin-ui-modal" class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title modal-caption">&nbsp;</h4>
</div>
<div class="modal-body">
<p>Loading...</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->';
// <li>{ADMIN_COREUPDATE=icon}</li>
$ADMIN_HEADER = $ADMIN_MODAL. '
// TODO - LANs
$ADMIN_MODAL = '
<div id="uiModal" class="modal fade">
<div id="admin-ui-modal" class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title modal-caption">&nbsp;</h4>
</div>
<div class="modal-body">
<p>Loading...</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
';
// TODO - LANs
$ADMIN_HEADER = $ADMIN_MODAL . '
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container" >
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="brand navbar-brand" href="'.e_ADMIN_ABS.'admin.php" title="Return to Front Panel"><img class="admin-logo" src="'.e_THEME_ABS.'bootstrap3/images/e107_adminlogo.png" alt="e107" /></a>
</div>
<div class="navbar-collapse collapse">
{ADMIN_NAVIGATION=no-main}
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="brand navbar-brand" href="'.e_ADMIN_ABS.'admin.php" title="Return to Front Panel">
<img class="admin-logo" src="'.e_THEME_ABS.'bootstrap3/images/e107_adminlogo.png" alt="e107"/>
</a>
</div>
<div class="navbar-collapse collapse">
{ADMIN_NAVIGATION=no-main}
<div>
{ADMIN_NAVIGATION=logout}
{ADMIN_NAVIGATION=language}
{ADMIN_NAVIGATION=home}
{ADMIN_PM}
{ADMIN_DEBUG}
{ADMIN_NAVIGATION=home}
{ADMIN_PM}
{ADMIN_DEBUG}
</div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
';
</div><!--/.navbar-collapse -->
</div>
</div>';
$ADMIN_HEADER .= '<div class="container-fluid">
<div class="row">
<div class="col-md-3 col-lg-2" id="left-panel">
{SETSTYLE=admin_menu}
$adminstyle = e107::getConfig()->get('adminstyle', 'infopanel');
if(defset('e_PAGE') == 'admin.php' && $adminstyle == 'flexpanel' && varset($_GET['mode']) != 'customize')
{
$ADMIN_HEADER .= '
<div class="col-sm-12">
<div class="admin-main-content">
';
}
else
{
// TODO - LANs
$ADMIN_HEADER .= '
<div class="col-md-3 col-lg-2 admin-left-panel">
{SETSTYLE=admin_menu}
{ADMIN_MENU}
{ADMIN_PWORD}
{ADMIN_MENUMANAGER}
<div class="e-scroll-fixed">
{SETSTYLE=site_info}
{ADMINUI_HELP}
{ADMIN_HELP}
{SETSTYLE=site_info}
{ADMINUI_HELP}
{ADMIN_HELP}
</div>
{ADMIN_SITEINFO=creditsonly}
{SETSTYLE=admin_menu}
{ADMIN_LATEST=infopanel}
{ADMIN_STATUS=infopanel}
{ADMIN_LOG=request}
{ADMIN_MSG=request}
{ADMIN_PLUGINS}
{SETSTYLE=default}
</div>
<div class="col-md-9 col-lg-10" id="right-panel" >
<div class="sidebar-toggle"><a href="#" title="Toggle Sidebar" data-toggle-sidebar="true">&nbsp;</a></div>
<div>
';
{SETSTYLE=default}
</div>
<div class="col-md-9 col-lg-10 admin-right-panel">
<div class="sidebar-toggle">
<a href="#" title="Toggle Sidebar" data-toggle-sidebar="true">&nbsp;</a>
</div>
<div class="admin-main-content">
';
}
// TODO - LANs
$ADMIN_FOOTER = '
</div><!--/row-->
</div><!--/span-->
</div><!--/row-->
</div><!--/.fluid-container-->
<footer class="center mute">
Copyright &copy; 2008-2015 e107 Inc (e107.org)<br />
</footer>';
</div>
</div>
</div><!--/.row-->
</div><!--/.fluid-container-->
<footer class="center mute">
Copyright &copy; 2008-2015 e107 Inc (e107.org)<br />
</footer>
';
//{FS_ADMIN_ALT_NAV}

@ -98,174 +98,116 @@ class bootstrap3_admintheme
function tablestyle($caption, $text, $mode, $data)
{
// global $style;
$style = $data['setStyle'];
$style = $data['setStyle'];
// echo "Style: ".$style;
echo "\n\n<!-- UniqueID: ".$data['uniqueId']." -->\n\n";
$class = '';
if(is_string($mode) && $mode == 'admin_help') $class = ' '.str_replace('_', '-', $mode);
if(is_string($mode) && $mode == 'admin_help')
{
$class = ' ' . str_replace('_', '-', $mode);
}
if($mode == 'e_help')
{
$style = 'admin_menu';
$style = 'admin_menu';
}
if($mode == 'core-infopanel_latest' || $mode == 'core-infopanel_status')
{
//return;
echo '
<!-- Start Mode: '.$mode.' -->
<div class="well" style="padding:10px;min-height:220px;" >
<div class="nav-header">'.$caption.'</div>
echo '<!-- Start Mode: ' . $mode . ' -->
<div class="well" style="padding:10px;min-height:220px;">
<div class="nav-header">' . $caption . '</div>
<!-- Content Start -->
'.$text.'
' . $text . '
<!-- Content End -->
</div>
<!-- End Mode: '.$mode.' -->
</div>
<!-- End Mode: ' . $mode . ' -->
';
return;
}
}
if($mode == 'personalize')
{
/*echo '
<!-- Mode: '.$mode.' -->
<div class="well" style="padding:10px">
<div class="nav-header">'.$caption.'</div>
<!-- Content Start -->
'.$text.'
<!-- Content End -->
</div>
<!-- End Mode: '.$mode.' -->
';*/
$style = 'admin_menu';
// return;
}
/*
if($style == 'core-infopanel')
{
echo '
<!-- Start Style: '.$style.' -->
<li class="span12 col-md-12">
<div class="well" >
<div class="nav-header">'.$caption.'</div>
<!-- Content Start -->
'.$text.'
<!-- Content End -->
</div>
</li>
<!-- End Style: '.$style.' -->
';
return;
}
*/
if(deftrue('e_IFRAME'))
{
echo '<!-- Start Style: '.$style.' Mode: '.$mode.' and iFrame active -->
echo '<!-- Start Style: ' . $style . ' Mode: ' . $mode . ' and iFrame active -->
<div class="block">
<div class="block-text">
'.$text.'
' . $text . '
</div>
</div>
';
return;
}
if(trim($caption) == '')
{
$style = 'no_caption';
$style = 'no_caption';
}
$panelType = array('core-infopanel'=>'panel-default','admin_menu'=>'panel-primary', 'site_info'=>'panel-default');
$panelType = array(
'core-infopanel' => 'panel-default',
'admin_menu' => 'panel-primary',
'site_info' => 'panel-default',
'flexpanel' => 'panel-default',
);
switch(varset($style, 'admin_content'))
{
case 'core-infopanel' :
case 'admin_menu' :
case 'site_info' :
echo '<div class="panel '.$panelType[$style].'">
case 'flexpanel':
echo '<div class="panel ' . $panelType[$style] . '" id="' . $data['uniqueId'] . '">
<div class="panel-heading">
<h3 class="panel-title">'.$caption.'</h3>
<h3 class="panel-title">' . $caption . '</h3>
</div>
<div class="panel-body">
'.$text.'
' . $text . '
</div>
</div>';
/*
echo '
<div class="well sidebar-nav" >
<div class="nav-header">'.$caption.'</div>
'.$text.'
</div>
';
**/
break;
/*case 'site_info' :
echo '
<div class="panel panel-primary" >
<div class="panel-heading">'.$caption.'</div>
<p style="padding:10px">
'.$text.'
</p>
</div>
';
break;*/
/*
case 'admin_content':
echo '
break;
case 'core-infopanel':
case 'admin_menu':
case 'site_info':
echo '<div class="panel ' . $panelType[$style] . '">
<div class="panel-heading">
<h3 class="panel-title">' . $caption . '</h3>
</div>
<div class="panel-body">
' . $text . '
</div>
</div>';
break;
case 'no_caption':
echo '<!-- Start Style: ' . $style . ' Mode: ' . $mode . ' -->
<div class="block">
<h2 class="caption">'.$caption.'</h2>
<div class="block-text">
'.$text.'
' . $text . '
</div>
</div>
';
break;
*/
case 'no_caption' :
echo '<!-- Start Style: '.$style.' Mode: '.$mode.' -->
<div class="block">
<div class="block-text">
'.$text.'
</div>
</div>
';
break;
break;
default:
echo '<!-- Start Style: '.$style.' Mode: '.$mode.' -->
echo '<!-- Start Style: ' . $style . ' Mode: ' . $mode . ' -->
<div class="block">
<h4 class="caption">'.$caption.'</h4>
<h4 class="caption">' . $caption . '</h4>
<div class="block-text">
'.$text.'
' . $text . '
</div>
</div>
';
break;
break;
}
}
}

@ -0,0 +1,100 @@
var e107 = e107 || {'settings': {}, 'behaviors': {}};
(function ($)
{
'use strict';
e107.callbacks = e107.callbacks || {};
e107.settings.flexPanel = {
selector: '.draggable-panels',
items: '> .panel'
};
/**
* Behavior to initialize draggable panels on the dashboard.
*
* @type {{attach: e107.behaviors.flexPanelDraggablePanels.attach}}
*/
e107.behaviors.flexPanelDraggablePanels = {
attach: function (context, settings)
{
var selector = e107.settings.flexPanel.selector;
var onceKey = 'admin-dashboard-draggable-panels';
$(context).find(selector).once(onceKey).each(function ()
{
var $panel = $(this);
$panel.sortable({
connectWith: selector,
items: e107.settings.flexPanel.items,
handle: '.panel-heading',
accept: e107.settings.flexPanel.selector,
cursor: 'move',
placeholder: 'draggable-placeholder',
forcePlaceholderSize: true,
helper: 'clone',
forceHelperSize: true,
opacity: 0.4,
tolerance: 'pointer',
start: function (event, ui)
{
var $placeholders = $('.draggable-placeholder');
var $draggablePanels = $(e107.settings.flexPanel.selector);
$placeholders.css('margin', '15px');
$placeholders.css('background-color', '#337ab7');
$draggablePanels.css('min-height', '20px');
$draggablePanels.css('border', '1px dashed #CCCCCC');
$draggablePanels.css('margin-bottom', '30px');
$panel.sortable("refreshPositions");
},
stop: function (event, ui)
{
var $draggablePanels = $(e107.settings.flexPanel.selector);
$draggablePanels.css('min-height', '0');
$draggablePanels.css('border', 'none');
$draggablePanels.css('margin-bottom', '0');
e107.callbacks.flexPanelSavePanelOrder();
}
});
});
}
};
e107.callbacks.flexPanelSavePanelOrder = function ()
{
var selector = e107.settings.flexPanel.selector;
var NewOrder = {};
$(selector).each(function ()
{
var $this = $(this);
var area = $this.attr('id');
var weight = 0;
if(area)
{
$('#' + area + ' ' + e107.settings.flexPanel.items).each(function ()
{
var $item = $(this);
var panelID = $item.attr('id');
NewOrder[panelID] = {
area: area,
weight: weight
};
weight++;
});
}
});
$.post(window.location.href, {'core-flexpanel-order': NewOrder});
};
})(jQuery);

@ -154,9 +154,23 @@ $(document).ready(function()
$('a[data-toggle-sidebar]').on('click', function(e)
{
e.preventDefault();
$("#left-panel").toggle(1000);
$("#right-panel").toggleClass("col-md-10 col-md-12"); //XXX Control animation direction?
var $leftPanel = $(".admin-left-panel");
var $rightPanel = $(".admin-right-panel");
if ($rightPanel.hasClass('col-md-12'))
{
$rightPanel.toggleClass("col-md-9 col-md-12");
$rightPanel.toggleClass("col-lg-10 col-lg-12");
$leftPanel.toggle(1000);
}
else
{
$leftPanel.toggle(1000, function() {
$rightPanel.toggleClass("col-md-9 col-md-12");
$rightPanel.toggleClass("col-lg-10 col-lg-12");
});
}
});