LCARS is a template for the GetSimple CMS that mimics the monitor appearance in the television series Star Trek: The Next Generation
		
			
				
	
	
		
			655 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			655 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
/*
 | 
						|
    revs:
 | 
						|
    
 | 
						|
    Fix for font end cookie expiring in 1 day, bumped to 180 days
 | 
						|
    Added ability to modify top menu, see satb_hook_test()
 | 
						|
 | 
						|
    todo:
 | 
						|
    
 | 
						|
    cache menus on backend, so they are all available on the front end always
 | 
						|
    do something about session timing out on front end when doing nothing on back end, dev testing etc.
 | 
						|
    blind logout, using redirect for now.
 | 
						|
    icons line wrap text on IOS, why
 | 
						|
 | 
						|
*/
 | 
						|
 | 
						|
/*
 | 
						|
* @Plugin Name: sa_toolbar
 | 
						|
* @Description: Admin toolbar
 | 
						|
* @Version: 1.1
 | 
						|
* @Author: Shawn Alverson
 | 
						|
* @Author URI: http://tablatronix.com/getsimple-cms/sa-toolbar/
 | 
						|
*
 | 
						|
* @hook callouts: satb_toolbar_disp
 | 
						|
*/
 | 
						|
 | 
						|
$SATB                = array();
 | 
						|
$SATB['PLUGIN_ID']   = "sa_toolbar";
 | 
						|
$SATB['PLUGIN_PATH'] = $SITEURL.'plugins/'.$SATB['PLUGIN_ID'].'/';
 | 
						|
$SATB['PLUGIN_URL']  = "http://tablatronix.com/getsimple-cms/sa-toolbar-plugin/";
 | 
						|
$SATB['owner']       = '';
 | 
						|
$SATB['gsback']      = true;
 | 
						|
 | 
						|
 | 
						|
// DEBUGGING GLOBAL
 | 
						|
// ----------------------
 | 
						|
$SATB['DEBUG'] = false;
 | 
						|
// ----------------------
 | 
						|
 | 
						|
define('SATB_DEBUG',$SATB['DEBUG']);
 | 
						|
 | 
						|
# get correct id for plugin
 | 
						|
$thisfile      = basename(__FILE__, ".php"); // Plugin File
 | 
						|
$satb_pname    = 'SA Toolbar';               //Plugin name
 | 
						|
$satb_pversion = '1.1';                      //Plugin version
 | 
						|
$satb_pauthor  = 'Shawn Alverson';           //Plugin author
 | 
						|
$satb_purl     = $SATB['PLUGIN_URL'];        //author website
 | 
						|
$satb_pdesc    = 'SA Toolbar';               //Plugin description
 | 
						|
$satb_ptype    = '';                         //page type - on which admin tab to display
 | 
						|
$satb_pfunc    = '';                         //main function (administration)
 | 
						|
 | 
						|
# register plugin
 | 
						|
register_plugin($thisfile,$satb_pname,$satb_pversion,$satb_pauthor,$satb_purl,$satb_pdesc,$satb_ptype,$satb_pfunc);
 | 
						|
 | 
						|
  
 | 
						|
if(defined('SATB_DEBUG') and SATB_DEBUG == true){
 | 
						|
  error_reporting(E_ALL);
 | 
						|
  ini_set("display_errors", 1);
 | 
						|
}
 | 
						|
 | 
						|
// INIT
 | 
						|
 | 
						|
$SA_ADMINPATH = $SITEURL.$GSADMIN.'/';
 | 
						|
 | 
						|
add_action('logout','satb_logout');
 | 
						|
 | 
						|
if(sa_tb_user_is_admin()){
 | 
						|
 | 
						|
    satb_setTbCookie();
 | 
						|
    
 | 
						|
    $SATB_MENU_ADMIN = array(); // global admin menu
 | 
						|
    $SATB_MENU_STATIC = array(); // global toolbar menu
 | 
						|
    
 | 
						|
    add_action('theme-footer', 'sa_toolbar');
 | 
						|
    add_action('index-pretemplate', 'sa_init_i18n');
 | 
						|
    if($SATB['gsback'] == true){
 | 
						|
        add_action('footer', 'sa_toolbar');
 | 
						|
        add_action('admin-pre-header', 'sa_init_i18n');
 | 
						|
    }   
 | 
						|
 | 
						|
    add_action('sa_toolbar_disp','satb_hook_test');
 | 
						|
    
 | 
						|
    // asset queing
 | 
						|
    // use header hook if older than 3.1
 | 
						|
    if(floatval(GSVERSION) < 3.1){
 | 
						|
        add_action('header', 'sa_tb_executeheader');
 | 
						|
        $SATB['owner'] = "SA_tb_";
 | 
						|
    }  
 | 
						|
    else{ sa_tb_executeheader(); }
 | 
						|
 | 
						|
} 
 | 
						|
else if (satb_checkTbCookie()){ 
 | 
						|
    if(floatval(GSVERSION) < 3.1){
 | 
						|
        add_action('header', 'sa_tb_executeheader');
 | 
						|
        $SATB['owner'] = "SA_tb_";
 | 
						|
    }  
 | 
						|
    else{ sa_tb_executeheader(); }
 | 
						|
    
 | 
						|
    add_action('theme-footer', 'sa_toolbar',array(true));
 | 
						|
}
 | 
						|
 | 
						|
// FUNCTIONS
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
 | 
						|
function satb_logout(){
 | 
						|
    // On logout redirect to page before logout redirects to index
 | 
						|
    // requires get[toolbar'] presence
 | 
						|
    if(isset($_GET['toolbar']) and isset($_GET['close']))   satb_clearTbCookie();
 | 
						|
    if(isset($_GET['toolbar']) and isset($_SERVER['HTTP_REFERER'])) redirect($_SERVER['HTTP_REFERER']);
 | 
						|
}
 | 
						|
 | 
						|
function satb_checkTbCookie(){
 | 
						|
    satb_debugLog(isset($_COOKIE['GS_ADMIN_TOOLBAR']) and $_COOKIE['GS_ADMIN_TOOLBAR'] == '1'); 
 | 
						|
    return isset($_COOKIE['GS_ADMIN_TOOLBAR']) and $_COOKIE['GS_ADMIN_TOOLBAR'] == '1';
 | 
						|
}
 | 
						|
 | 
						|
function satb_setTbCookie(){
 | 
						|
    // set cookie to 180 days
 | 
						|
    setcookie('GS_ADMIN_TOOLBAR', 1, time() + 15552000,'/');
 | 
						|
}
 | 
						|
 | 
						|
function satb_clearTbCookie(){
 | 
						|
    setcookie('GS_ADMIN_TOOLBAR', 'null', time() - 3600,'/');   
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function satb_debugLog(){
 | 
						|
    GLOBAL $debugLogFunc;
 | 
						|
        
 | 
						|
    if(!defined('SATB_DEBUG') or SATB_DEBUG != true) return;
 | 
						|
    if(function_exists('_debugLog')){
 | 
						|
        $debugLogFunc = __FUNCTION__;
 | 
						|
        _debugLog($args = func_get_args());
 | 
						|
    } else {
 | 
						|
        $args = func_get_args();
 | 
						|
        $args = is_array($args) ? print_r($args,true) : $args;
 | 
						|
        debugLog($args);
 | 
						|
    }   
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function sa_init_i18n(){
 | 
						|
    global $LANG;
 | 
						|
        // PRELOAD DEFAULT LANG FILES HERE
 | 
						|
        // i18n_merge('anonymous_data') || i18n_merge('anonymous_data', 'en_US'); 
 | 
						|
}
 | 
						|
 | 
						|
function sa_toolbar($login=null){
 | 
						|
    // todo : refactor this a bit, whew
 | 
						|
    
 | 
						|
  GLOBAL $SATB,$SA_ADMINPATH,$SITEURL,$LANG,$USR,$datau,$SATB_MENU_ADMIN,$SATB_MENU_STATIC;
 | 
						|
 | 
						|
    $EMAIL = isset($datau) ? $datau->EMAIL : '';
 | 
						|
    
 | 
						|
    $gstarget = '_blank'; 
 | 
						|
 | 
						|
    // logo 
 | 
						|
    $logo  = '<li><ul class="satb_nav"><li class="satb_menu satb_icon"><a class="satb_logo" title="GetSImple CMS ver. '.GSVERSION.'" href="#"><img src="'.$SATB['PLUGIN_PATH'].'assets/img/gsicon.png"></a><ul id="satb_logo_sub">';
 | 
						|
    $logo .= '<li class=""><a href="http://get-simple.info" target="'.$gstarget.'">GetSimple CMS</a></li>';
 | 
						|
    $logo .= '<li class=""><a href="http://get-simple.info/forums" target="'.$gstarget.'">Forums<span class="iconright">▸</span></a>';
 | 
						|
    $logo .= '<ul><li class=""><a href="http://get-simple.info/forum/search/new/" target="'.$gstarget.'">New Posts</a></li>';
 | 
						|
    $logo .= '</ul></li>';
 | 
						|
    $logo .= '<li class=""><a href="http://get-simple.info/extend/" target="'.$gstarget.'">Extend</a></li>';
 | 
						|
    $logo .= '<li class=""><a href="http://get-simple.info/wiki/" target="'.$gstarget.'">Wiki</a></li>';
 | 
						|
    $logo .= '<li class=""><a href="https://github.com/GetSimpleCMS/GetSimpleCMS" target="'.$gstarget.'">SVN</a></li>';
 | 
						|
    $logo .= '<li class=""><a class="" href="http://get-simple.info/forum/topic/4141/sa-gs-admin-toolbar/" target="'.$gstarget.'"><i class="cssicon info"></i>About SA_toolbar</a></li>';
 | 
						|
 | 
						|
    // icon test
 | 
						|
    /*  
 | 
						|
    $test = '<li class=""><a class="" href="http://get-simple.info/forum/topic/4141/sa-gs-admin-toolbar/" target="'.$target.'"><i class="cssicon info"></i>Info Icon</a></li>';
 | 
						|
    $test .= '<li class=""><a class="" href="http://get-simple.info/forum/topic/4141/sa-gs-admin-toolbar/" target="'.$target.'"><i class="cssicon help"></i>Help Icon</a></li>';
 | 
						|
    $test .= '<li class=""><a class="" href="http://get-simple.info/forum/topic/4141/sa-gs-admin-toolbar/" target="'.$target.'"><i class="cssicon success"></i>Success Icon</a></li>';
 | 
						|
    $test .= '<li class=""><a class="" href="http://get-simple.info/forum/topic/4141/sa-gs-admin-toolbar/" target="'.$target.'"><i class="cssicon success-alt"></i>Success Alt Icon</a></li>';
 | 
						|
    $test .= '<li class=""><a class="" href="http://get-simple.info/forum/topic/4141/sa-gs-admin-toolbar/" target="'.$target.'"><i class="cssicon alert"></i>Alert Icon</a></li>';
 | 
						|
    $test .= '<li class=""><a class="" href="http://get-simple.info/forum/topic/4141/sa-gs-admin-toolbar/" target="'.$target.'"><i class="cssicon warning"></i>Warning Icon</a></li>';
 | 
						|
    $test .= '<li class=""><a class="" href="http://get-simple.info/forum/topic/4141/sa-gs-admin-toolbar/" target="'.$target.'"><i class="cssicon denied"></i>Denied Icon</a></li>';
 | 
						|
    $test .= '<li class=""><a class="" href="http://get-simple.info/forum/topic/4141/sa-gs-admin-toolbar/" target="'.$target.'"><i class="cssicon ribbon"></i>Ribbon Icon</a></li>';
 | 
						|
    */
 | 
						|
    
 | 
						|
    $logo .= '</ul></ul></li>'; 
 | 
						|
    
 | 
						|
    // login form
 | 
						|
    if($login){
 | 
						|
        echo '<div id="sa_toolbar"><ul class="">'.$logo.'</ul>
 | 
						|
            <ul class="right">
 | 
						|
            <ul class="satb_nav">
 | 
						|
                <li id="satb_login" class="satb_menu">
 | 
						|
                <a id="satb_login_link" href="#">'.i18n_r('LOGIN').'</a>
 | 
						|
                    <ul id="satb_login_menu">           
 | 
						|
                        <form action="'.$SA_ADMINPATH.'index.php?redirect='.$_SERVER['REQUEST_URI'].'" method="post">
 | 
						|
                            <b>Username:</b><input type="text" id="userid" name="userid">
 | 
						|
                            <b>Password:</b><input type="password" id="pwd" name="pwd">
 | 
						|
                            <input class="submit" id="satb_login_submit" type="submit" name="submitted" value="Login">
 | 
						|
                        </form>
 | 
						|
                    </ul>
 | 
						|
                </li>
 | 
						|
            <li class="satb_menu tb_close"><a href="'.$SA_ADMINPATH.'logout.php?toolbar&close" title="Remove Bar"><strong>×</strong></a></li>                
 | 
						|
            </ul>
 | 
						|
            </ul>
 | 
						|
        </div>';
 | 
						|
        satb_jsOutput();        
 | 
						|
        return; 
 | 
						|
    }
 | 
						|
    
 | 
						|
    $editpath = $SA_ADMINPATH.'edit.php';
 | 
						|
    
 | 
						|
    if(function_exists('return_page_slug')){
 | 
						|
        $pageslug = return_page_slug();
 | 
						|
    } else {
 | 
						|
        $pageslug = '';
 | 
						|
    }   
 | 
						|
    
 | 
						|
    $tm = array(); // holds all tabs
 | 
						|
    $sm = array(); // holds all sidemenus   
 | 
						|
    
 | 
						|
    $ptabs = sa_tb_get_PluginTabs();    // hold plugin tabs
 | 
						|
        
 | 
						|
    // tabs
 | 
						|
    $tm = sa_tb_addMenu($tm,'pages','TAB_PAGES',$SA_ADMINPATH.'pages.php');
 | 
						|
    $tm = sa_tb_addMenu($tm,'files','TAB_FILES',$SA_ADMINPATH.'upload.php');
 | 
						|
    $tm = sa_tb_addMenu($tm,'theme','TAB_THEME',$SA_ADMINPATH.'theme.php');
 | 
						|
    $tm = sa_tb_addMenu($tm,'backups','TAB_BACKUPS',$SA_ADMINPATH.'backups.php');
 | 
						|
    $tm = sa_tb_addMenu($tm,'plugins','PLUGINS_NAV',$SA_ADMINPATH.'plugins.php');
 | 
						|
 | 
						|
    // merge in plugin nav-tabs
 | 
						|
    $tm = array_merge($tm,$ptabs);  
 | 
						|
        
 | 
						|
    $tm = sa_tb_addMenu($tm,'support','TAB_SUPPORT',$SA_ADMINPATH.'support.php'); // custom
 | 
						|
    $tm = sa_tb_addMenu($tm,'settings','TAB_SETTINGS',$SA_ADMINPATH.'settings.php'); // custom
 | 
						|
    $tm = sa_tb_addMenu($tm,'logs','LOGS',$SA_ADMINPATH.'log.php'); // custom
 | 
						|
    
 | 
						|
    # satb_debugLog($ptabs);
 | 
						|
    # satb_debugLog($tm);
 | 
						|
    
 | 
						|
    // default sidemenus
 | 
						|
    $sm = sa_tb_addMenu($sm,'pages','SIDE_VIEW_PAGES',$SA_ADMINPATH.'pages.php');
 | 
						|
    $sm = sa_tb_addMenu($sm,'pages','SIDE_CREATE_NEW',$SA_ADMINPATH.'edit.php');
 | 
						|
    $sm = sa_tb_addMenu($sm,'pages','MENU_MANAGER',$SA_ADMINPATH.'menu-manager.php');
 | 
						|
    $sm = sa_tb_addMenu($sm,'files','FILE_MANAGEMENT',$SA_ADMINPATH.'upload.php');
 | 
						|
    $sm = sa_tb_addMenu($sm,'theme','SIDE_CHOOSE_THEME',$SA_ADMINPATH.'theme.php');
 | 
						|
    $sm = sa_tb_addMenu($sm,'theme','SIDE_EDIT_THEME',$SA_ADMINPATH.'theme-edit.php');
 | 
						|
    $sm = sa_tb_addMenu($sm,'theme','SIDE_COMPONENTS',$SA_ADMINPATH.'components.php');
 | 
						|
    $sm = sa_tb_addMenu($sm,'theme','SIDE_VIEW_SITEMAP','../sitemap.xml');
 | 
						|
    $sm = sa_tb_addMenu($sm,'backups','SIDE_PAGE_BAK',$SA_ADMINPATH.'backups.php');
 | 
						|
    $sm = sa_tb_addMenu($sm,'backups','SIDE_WEB_ARCHIVES',$SA_ADMINPATH.'archive.php');
 | 
						|
    $sm = sa_tb_addMenu($sm,'plugins','SHOW_PLUGINS',$SA_ADMINPATH.'plugins.php');
 | 
						|
    // $sm = sa_tb_addMenu($sm,'plugins','anonymous_data/ANONY_TITLE',$SA_ADMINPATH.'load.php?id=anonymous_data'); // oops, forgot this was a plugin
 | 
						|
    $sm = sa_tb_addMenu($sm,'support','SUPPORT',$SA_ADMINPATH.'support.php');
 | 
						|
    $sm = sa_tb_addMenu($sm,'support','WEB_HEALTH_CHECK',$SA_ADMINPATH.'health-check.php');
 | 
						|
    $sm = sa_tb_addMenu($sm,'settings','GENERAL_SETTINGS',$SA_ADMINPATH.'settings.php');
 | 
						|
    $sm = sa_tb_addMenu($sm,'settings','SIDE_USER_PROFILE',$SA_ADMINPATH.'settings.php#profile');
 | 
						|
    $sm = sa_tb_addMenu($sm,'logs','VIEW_FAILED_LOGIN',$SA_ADMINPATH.'log.php?log=failedlogins.log'); // custom
 | 
						|
    
 | 
						|
    $sm = sa_tb_get_PluginMenus($sm); // add plugin sidemenus to core sidemenus
 | 
						|
 | 
						|
    // these core sidemenus go at bottom
 | 
						|
    $sm = sa_tb_addMenu($sm,'plugins','GET_PLUGINS_LINK','http://get-simple.info/extend');
 | 
						|
    $sm = sa_tb_addMenu($sm,'settings','TAB_LOGOUT',$SA_ADMINPATH.'logout.php?toolbar'); // logout for convienence
 | 
						|
 | 
						|
    $logoutitem = $sm['settings'][count($sm['settings'])-1]; // logout is always last item
 | 
						|
    $profileitem = $sm['settings'][1];  
 | 
						|
    
 | 
						|
    satb_automerge(array_merge($sm,$ptabs)); // auto load language files for found lang tokens
 | 
						|
        
 | 
						|
    // define menu parts
 | 
						|
 | 
						|
    // link target
 | 
						|
    $target = satb_is_frontend() ? '_blank' : '_self'; 
 | 
						|
    
 | 
						|
    // init master admin menu
 | 
						|
    $menu = '<li><ul class="satb_nav">
 | 
						|
    <li class="satb_menu"><a href="#">Admin ▾</a>
 | 
						|
    <ul>
 | 
						|
    ';
 | 
						|
        
 | 
						|
    // DO HOOKS
 | 
						|
    $SATB_MENU_ADMIN = $sm; // assign to global
 | 
						|
    
 | 
						|
    $SATB_MENU_STATIC['new'] = array('title'=>'+ '.satb_cleanStr(satb_geti18n('NEW_PAGE')),'url'=>$editpath);   
 | 
						|
    if(function_exists('return_page_slug')){    
 | 
						|
        $SATB_MENU_STATIC['edit'] = array('title'=>satb_cleanStr(satb_geti18n('EDIT')),'url'=>$editpath.'?id='.return_page_slug()); 
 | 
						|
    }
 | 
						|
    
 | 
						|
    exec_action('sa_toolbar_disp'); // call hook        
 | 
						|
    
 | 
						|
    $sm = $SATB_MENU_ADMIN; // set back from global
 | 
						|
        
 | 
						|
    $separator = '<li class="separator"></li>';
 | 
						|
    
 | 
						|
    // debug mode indicator
 | 
						|
    $debugicon = '<li class="satb_icon" title="'.ucwords(satb_cleanStr(satb_geti18n('DEBUG_MODE'))).' ON"><img src="'.$SATB['PLUGIN_PATH'].'assets/img/sa_tb_debugmode.png"></li>'; 
 | 
						|
    
 | 
						|
    // welcome user
 | 
						|
    $sig  = '<ul class="satb_nav"><a id="avatar" href="http://gravatar.com/emails/"><li class="satb_menu"><img src="'.satb_get_gravatar( $EMAIL, 20, 'mm', 'g', false).'" style="width:20px;height:20px;" /></a>';
 | 
						|
    $sig .= '<a class="welcome" href="#">'.i18n_r('WELCOME').', <strong>'.$USR.'</strong></a><ul>';
 | 
						|
    $sig .= '<li class=""><a href="'.$profileitem['func'].'" target="'.$target.'">'.satb_cleanStr(satb_geti18n($profileitem['title'])).'</a></li>';
 | 
						|
    $sig .= '<li class=""><a href="'.$logoutitem['func'].'"><i class="cssicon alert"></i>'.satb_cleanStr(satb_geti18n($logoutitem['title'])).'</a></li>';
 | 
						|
    $sig .= '</ul></li>';
 | 
						|
        
 | 
						|
    $tm = satb_update_tabs($tm); // handle any empty or new tabs
 | 
						|
 | 
						|
    satb_debugLog('tabs array',$tm);
 | 
						|
    satb_debugLog('sidemenus array',$sm);
 | 
						|
    
 | 
						|
    foreach($tm as $key=>$page){
 | 
						|
        // loop tabs array
 | 
						|
        
 | 
						|
        $iscustomtab = sa_tb_array_index(sa_tb_array_index($page,0),'iscustom');
 | 
						|
        
 | 
						|
        // check if tab is plugin tab
 | 
						|
        // picky note: built in tabs all use the first level sidemenu item as the default action, all plugins should follow this, arghhh        
 | 
						|
        if( isset($ptabs[$key]) ){
 | 
						|
            // tab is plugin, so convert lang wrapped titles only and set func and action url parts
 | 
						|
            $tablink = $SA_ADMINPATH.'load.php?id=' . sa_tb_array_index(sa_tb_array_index($ptabs[$key],0),'func');
 | 
						|
            $tablink .=  '&' . sa_tb_array_index(sa_tb_array_index($ptabs[$key],0),'action');
 | 
						|
            $title_i18n = true;
 | 
						|
        } else {
 | 
						|
            // tab is core
 | 
						|
            $tablink = sa_tb_array_index(sa_tb_array_index($page,0),'func');
 | 
						|
            // is tab custom
 | 
						|
            if($iscustomtab){
 | 
						|
                $title_i18n = true;
 | 
						|
            } else {
 | 
						|
                $title_i18n = false;
 | 
						|
            }           
 | 
						|
        }
 | 
						|
        
 | 
						|
        if($key != 'link'){
 | 
						|
            $menu.= '<li' . (isset($ptabs[$key])? ' class="plugin" ':'') . '><a href="'.$tablink.'" target="'.$target.'">'.satb_cleanStr(satb_geti18n($tm[$key][0]['title'],$title_i18n));
 | 
						|
            $menu.= (count($page) > 0) ? '<span class="iconright">▸</span></a><ul>' : '</a><ul>';
 | 
						|
        }
 | 
						|
        
 | 
						|
        // loop sidemenus for page
 | 
						|
        if(isset($sm[$key])){
 | 
						|
                
 | 
						|
            foreach($sm[$key] as $submenu){
 | 
						|
            
 | 
						|
                $iscustomsm = sa_tb_array_index($submenu,'iscustom');
 | 
						|
                $ispluginsm = sa_tb_array_index($submenu,'isplugin');           
 | 
						|
            
 | 
						|
                if( (isset($submenu['isplugin']) and $submenu['isplugin'] == true) or $iscustomtab or $iscustomsm) {
 | 
						|
                    $title = satb_cleanStr(satb_geti18n($submenu['title'],true));               
 | 
						|
                    $class = $iscustomtab || $iscustomsm ? 'custom' : 'plugin';
 | 
						|
                    
 | 
						|
                    if($iscustomtab and $key == 'link'){
 | 
						|
                        $menu.='<li class="'.$class.'"><a href="'.$SA_ADMINPATH.'load.php?id='.$submenu['func'].(isset($submenu['action']) ? '&'.$submenu['action'] : '').'" target="'.$target.'">'.$title.'</a></li>';                                        
 | 
						|
                    } else {
 | 
						|
                        $menu.='<li class="'.$class.'"><a href="'.$SA_ADMINPATH.'load.php?id='.$submenu['func'].(isset($submenu['action']) ? '&'.$submenu['action'] : '').'" target="'.$target.'">'.$title.'</a></li>';                    
 | 
						|
                    }   
 | 
						|
                } else {
 | 
						|
                    $title = satb_cleanStr(satb_geti18n($submenu['title']));    
 | 
						|
                    $menu.='<li><a href="'.$submenu['func'].'" target="'.$target.'">'.$title.'</a></li>';
 | 
						|
             }
 | 
						|
            }
 | 
						|
        }       
 | 
						|
        
 | 
						|
        if($key == 'link'){
 | 
						|
            $menu.='</li>';
 | 
						|
        } else {
 | 
						|
            $menu.='</ul></li>';
 | 
						|
        }
 | 
						|
        
 | 
						|
    }
 | 
						|
    
 | 
						|
    $menu.='</ul></li></ul>';
 | 
						|
    
 | 
						|
    echo '<div id="sa_toolbar">
 | 
						|
    <ul class="">';
 | 
						|
    echo $logo;
 | 
						|
    echo $menu;
 | 
						|
    echo $separator;
 | 
						|
    
 | 
						|
    // create top menu
 | 
						|
    foreach($SATB_MENU_STATIC as $key=>$menutop){
 | 
						|
        echo '<li class="satb_menu top_'.$key.'"><a href="'.$menutop['url'].'" target="'.$target.'">'.$menutop['title'].'</a></li>';        
 | 
						|
        echo $separator;    
 | 
						|
    }
 | 
						|
 | 
						|
    echo '</ul>';
 | 
						|
    echo '<ul class="right">'.$sig.'</ul>';
 | 
						|
    
 | 
						|
    // debug indicator logic
 | 
						|
    if((defined('GSDEBUG') and GSDEBUG == 1)){
 | 
						|
        echo '<ul class="right">';
 | 
						|
        echo $debugicon;
 | 
						|
        echo '</ul>';
 | 
						|
    }
 | 
						|
    echo '</div>';
 | 
						|
    
 | 
						|
    satb_jsOutput();
 | 
						|
    
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Get either a Gravatar URL or complete image tag for a specified email address.
 | 
						|
 *
 | 
						|
 * @param string $email The email address
 | 
						|
 * @param string $s Size in pixels, defaults to 80px [ 1 - 2048 ]
 | 
						|
 * @param string $d Default imageset to use [ 404 | mm | identicon | monsterid | wavatar ]
 | 
						|
 * @param string $r Maximum rating (inclusive) [ g | pg | r | x ]
 | 
						|
 * @param boole $img True to return a complete IMG tag False for just the URL
 | 
						|
 * @param array $atts Optional, additional key/value attributes to include in the IMG tag
 | 
						|
 * @return String containing either just a URL or a complete image tag
 | 
						|
 * @source http://gravatar.com/site/implement/images/php/
 | 
						|
 */
 | 
						|
function satb_get_gravatar( $email, $s = 80, $d = 'mm', $r = 'g', $img = false, $atts = array() ) {
 | 
						|
    $url = 'http://www.gravatar.com/avatar/';
 | 
						|
    $url .= md5( strtolower( trim( $email ) ) );
 | 
						|
    $url .= "?s=$s&d=$d&r=$r";
 | 
						|
    if ( $img ) {
 | 
						|
        $url = '<img src="' . $url . '"';
 | 
						|
        foreach ( $atts as $key => $val )
 | 
						|
            $url .= ' ' . $key . '="' . $val . '"';
 | 
						|
        $url .= ' />';
 | 
						|
    }
 | 
						|
    return $url;
 | 
						|
}
 | 
						|
 | 
						|
    
 | 
						|
function satb_jsOutput(){
 | 
						|
?>
 | 
						|
    
 | 
						|
    <script type="text/javascript">
 | 
						|
        $(document).ready(function() {
 | 
						|
 | 
						|
            $.fn.csspixels = function(property) {
 | 
						|
                    return parseInt(this.css(property).slice(0,-2));
 | 
						|
            };   
 | 
						|
 | 
						|
            $('body').append($('#sa_toolbar')); // prevents inheriting styles from #footer
 | 
						|
            $('ul#pill').hide(); // hide backend header
 | 
						|
            
 | 
						|
            if ( $('#sa_toolbar').length > 0 ) {
 | 
						|
 | 
						|
                $('body').addClass('gs-toolbar'); // for special theme styling when toolbar is present, body.gs-toolbar elements{}
 | 
						|
            
 | 
						|
                // add margin to body to push down content
 | 
						|
                bodytop = $('body').csspixels('margin-top');
 | 
						|
                $('body').css('margin-top', (bodytop+28)+'px'); //todo: make the height dynamic based on navbar css
 | 
						|
                
 | 
						|
                // move background
 | 
						|
                // $('body').css('background-position', '0px 28px');    
 | 
						|
                
 | 
						|
                // assign body z-index in case its auto
 | 
						|
                // console.log($('body').css('z-index'));
 | 
						|
                // $('body').css('z-index', 9998);  
 | 
						|
            }   
 | 
						|
        
 | 
						|
        });
 | 
						|
    </script>
 | 
						|
 | 
						|
<?php
 | 
						|
    
 | 
						|
}
 | 
						|
 | 
						|
function satb_cleanStr($str){
 | 
						|
    return strip_tags($str);
 | 
						|
}
 | 
						|
 | 
						|
function satb_automerge($array){
 | 
						|
    global $LANG;
 | 
						|
    
 | 
						|
    // loop plugins for i18n text {}
 | 
						|
    // index unique for single merge
 | 
						|
    // merge plugin lang files in string for posible lang combinations ( which is inefficient )
 | 
						|
    
 | 
						|
    $i18n_merges = array();
 | 
						|
        
 | 
						|
    foreach($array as $menu){
 | 
						|
        # satb_debugLog($menu);
 | 
						|
        foreach($menu as $item){
 | 
						|
        # satb_debugLog($item);         
 | 
						|
            if(preg_match('/^\{(.*)\/(.*)\}$/',$item['title'],$matches)){
 | 
						|
                # satb_debugLog($item);         
 | 
						|
                if(isset($matches[1]) and isset($matches[2])){
 | 
						|
                    $i18n_merges[] = trim($matches[1]);
 | 
						|
                }   
 | 
						|
            }   
 | 
						|
        }   
 | 
						|
    }
 | 
						|
 | 
						|
    $i18n_merges = array_unique($i18n_merges);
 | 
						|
    
 | 
						|
    foreach($i18n_merges as $merge){
 | 
						|
        satb_debugLog('satb_automerge_custom',$merge);
 | 
						|
        i18n_merge($merge, $LANG);      
 | 
						|
        i18n_merge($merge, substr($LANG,0,2));                  
 | 
						|
        # i18n_merge($matches[1],'en_US');      
 | 
						|
    }
 | 
						|
    
 | 
						|
}
 | 
						|
 | 
						|
function satb_geti18n($str,$intags=false){
 | 
						|
        if($intags == false){
 | 
						|
            return i18n_r($str);    
 | 
						|
        }
 | 
						|
        else if(preg_match('/^\{(.*\/.*)\}$/',$str,$matches) ){
 | 
						|
            return i18n_r($matches[1]);     
 | 
						|
        }   
 | 
						|
        else return $str;
 | 
						|
}
 | 
						|
 | 
						|
function sa_tb_addMenu($array,$page,$title,$func){
 | 
						|
    $array[$page][] = array('func'=>$func,'title'=>$title);
 | 
						|
    return $array;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function satb_update_tabs($tm){
 | 
						|
    // adds or removes tabs as needed
 | 
						|
    
 | 
						|
    GLOBAL $SATB_MENU_ADMIN;
 | 
						|
    $smkeys = array_keys($SATB_MENU_ADMIN);
 | 
						|
    $tmkeys = array_keys($tm);
 | 
						|
        
 | 
						|
    // new tabs
 | 
						|
    foreach(array_diff($smkeys,$tmkeys) as $tab){
 | 
						|
        # $tm = sa_tb_addMenu($tm,$tab,$tab,'');
 | 
						|
        $tm[$tab][] = array('func'=>$tab,'title'=>$tab,'iscustom'=>true);
 | 
						|
    }
 | 
						|
 | 
						|
    // empty tabs
 | 
						|
    foreach(array_diff($tmkeys,$smkeys) as $tab){
 | 
						|
        unset($tm[$tab]);
 | 
						|
    }
 | 
						|
    
 | 
						|
    return $tm; 
 | 
						|
}
 | 
						|
 | 
						|
function sa_tb_get_PluginTabs(){
 | 
						|
  global $plugins;    
 | 
						|
  $sa_plugins = $plugins;
 | 
						|
  $plugintabs = array();
 | 
						|
    
 | 
						|
  foreach ($sa_plugins as $hook)    {
 | 
						|
        if($hook['hook'] == 'nav-tab' and (isset($hook['args']) and isset($hook['args'][1]) and isset($hook['args'][2])) ){
 | 
						|
            # $plugintabs[$hook['args'][1]] = $hook['args'][2];
 | 
						|
            $plugintabs[$hook['args'][1]][] = array('title'=>$hook['args'][2],'func'=>$hook['args'][0],'action'=> isset($hook['args'][3]) ? $hook['args'][3] : null );
 | 
						|
        }   
 | 
						|
    }
 | 
						|
    return $plugintabs;
 | 
						|
}
 | 
						|
 | 
						|
function sa_tb_get_PluginMenus($pluginsidemenus = array(),$page = null){
 | 
						|
  global $plugins;
 | 
						|
  $sa_plugins = $plugins;
 | 
						|
 | 
						|
    # satb_debuglog($sa_plugins);
 | 
						|
    
 | 
						|
  foreach ($sa_plugins as $hook)    {
 | 
						|
    if(substr($hook['hook'],-8,9) == '-sidebar'){
 | 
						|
            # satb_debuglog($hook);     
 | 
						|
            $tab = str_replace('-sidebar','',$hook['hook']);
 | 
						|
            if(isset($hook['args']) and isset($hook['args'][0]) and isset($hook['args'][1])){
 | 
						|
                $allowAll = true; // allow plugins that use their own callbacks instead of createSideMenu, even though it is a terrible idea
 | 
						|
                if($hook['function'] == 'createSideMenu' or $allowAll){
 | 
						|
                    $pluginsidemenus[$tab][] = array('title'=>$hook['args'][1],'func'=>$hook['args'][0],'action'=> isset($hook['args'][2]) ? $hook['args'][2] : null,'isplugin' => true,'file' => $hook['file'] );
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }   
 | 
						|
    }
 | 
						|
    
 | 
						|
    # satb_debuglog($pluginsidemenus);
 | 
						|
    return $pluginsidemenus;
 | 
						|
}
 | 
						|
 | 
						|
function sa_tb_executeheader(){ // assigns assets to queue or header
 | 
						|
  GLOBAL $SATB;
 | 
						|
 | 
						|
  # debugLog("sa_dev_executeheader");
 | 
						|
 | 
						|
  $PLUGIN_ID   = $SATB['PLUGIN_ID'];
 | 
						|
  $PLUGIN_PATH = $SATB['PLUGIN_PATH'];
 | 
						|
  $owner       = $SATB['owner'];
 | 
						|
  
 | 
						|
  $regscript = $owner."register_script";
 | 
						|
  $regstyle  = $owner."register_style";
 | 
						|
  $quescript = $owner."queue_script";
 | 
						|
  $questyle  = $owner."queue_style";
 | 
						|
 | 
						|
  $regstyle($PLUGIN_ID, $PLUGIN_PATH.'assets/css/sa_toolbar.css', '0.1', 'screen');
 | 
						|
  $questyle($PLUGIN_ID,GSBOTH);   
 | 
						|
  
 | 
						|
 $quescript('jquery',GSBOTH);   
 | 
						|
}
 | 
						|
 | 
						|
function SA_tb_register_style($handle, $src, $ver){echo '<link rel="stylesheet" href="'.$src.'" type="text/css" charset="utf-8" />'."\n";}
 | 
						|
function SA_tb_queue_style($name,$where){}
 | 
						|
function SA_tb_register_script($handle, $src, $ver, $in_footer=FALSE){echo '<script type="text/javascript" src="'.$src.'"></script>'."\n";}
 | 
						|
function SA_tb_queue_script($name,$where){}
 | 
						|
 | 
						|
 | 
						|
function sa_tb_user_is_admin(){
 | 
						|
  GLOBAL $USR;
 | 
						|
    
 | 
						|
  if (isset($USR) && $USR == get_cookie('GS_ADMIN_USERNAME')) {
 | 
						|
    return true;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function sa_tb_array_index($ary,$idx){ // handles all the isset error avoidance bullshit when checking an array for a key that might not exist
 | 
						|
  if( isset($ary) and isset($idx) and isset($ary[$idx]) ) return $ary[$idx];
 | 
						|
}
 | 
						|
 | 
						|
function satb_is_frontend() {
 | 
						|
  GLOBAL $base;
 | 
						|
        if(isset($base)) {
 | 
						|
                return true;
 | 
						|
        } else {
 | 
						|
                return false;
 | 
						|
        }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
//  add_action('sa_toolbar_disp','satb_hook_test');
 | 
						|
 | 
						|
function satb_hook_test(){
 | 
						|
    GLOBAL $SITEURL,$GSADMIN,$SATB,$SATB_MENU_ADMIN,$SATB_MENU_STATIC;
 | 
						|
    if(SATB_DEBUG == false) return;
 | 
						|
    
 | 
						|
    // known issues / limitations
 | 
						|
    // If you do not specify isplugin or iscustom, your string will be i18n decoded and wrapped in {} at this time
 | 
						|
    
 | 
						|
    // To add a link to an existing sub menu, use the pages name or plugin name as the arrays key
 | 
						|
    $SATB_MENU_ADMIN['pages'][] = array('title'=>'my custom pages item','func'=>'#','iscustom'=>true);
 | 
						|
    $SATB_MENU_ADMIN['backups'][] = array('title'=>'my custom backup item','func'=>'#','iscustom'=>true);
 | 
						|
    
 | 
						|
    // To add a link to a new sub menu, use the arkey for the menu name eg. "custom"
 | 
						|
    $SATB_MENU_ADMIN['custom'][] = array('title'=>'my custom sub menu item','func'=>'#','iscustom'=>true);
 | 
						|
    
 | 
						|
    // TO add a single menu item link use 'link' as the page
 | 
						|
    $SATB_MENU_ADMIN['link'][] = array('title'=>'my custom menu item link','func'=>'#','iscustom'=>true);
 | 
						|
    
 | 
						|
    // To remove an entire menu, remove it from the array
 | 
						|
    unset($SATB_MENU_ADMIN['settings']); // remove settings entirely
 | 
						|
    
 | 
						|
    // To remove specific sub-menu items, you will have to loop through the array and remove items based on your criteria
 | 
						|
    // * menu items contain a 'file' attribute which can help identify a specific plugins submenus
 | 
						|
    
 | 
						|
    // To change the edit button
 | 
						|
    # $SATB_MENU_STATIC['edit'] = array('title'=> 'Custom Edit','url'=>'javascript:alert(\'javacript example\');');
 | 
						|
    
 | 
						|
    // To change the new page button
 | 
						|
    # $SATB_MENU_STATIC['new'] = array('title'=> 'Custom New','url'=>$SA_ADMINPATH.'load.php?id=blog&create_post');
 | 
						|
    $SATB_MENU_STATIC['blog'] = array('title'=> '+ New Blog Post','url'=>$SITEURL.$GSADMIN.'/'.'load.php?id=blog&create_post');
 | 
						|
    $SATB_MENU_STATIC['special'] = array('title'=> '+ New Special Page','url'=>$SITEURL.$GSADMIN.'/'.'load.php?id=i18n_specialpages&create');
 | 
						|
    
 | 
						|
    // There is no way to add new top buttons yet, but its in the works.
 | 
						|
    
 | 
						|
    satb_debugLog($SATB_MENU_ADMIN);
 | 
						|
}
 | 
						|
 | 
						|
?>
 |