Version 3.4.5

This commit is contained in:
Neo committed 2025-12-19 00:38:12 -08:00
1 parent fb6b5baabc
commit e4478369d8
1360 files changed
+228921 -179445

No files matched your search

+196 -4
View File
@@ -27,6 +27,8 @@ img { vertical-align: middle }
/* Basic styles */
/*-----------------------------------------------*/
#bookManagePop_popup ul > li { margin-top: 8px; }
#ajax_loading {
background-color: #6f8f52;
padding: 5px;
@@ -227,7 +229,9 @@ a {
padding-right: 17px;
background: transparent url( images/app_tab_right.png ) no-repeat top right;
}
#edit_tabs {
line-height: 40px; /* 52px height - 12px padding on parent */
color: #6390bf;
@@ -1209,6 +1213,7 @@ tr.ipsControlRow {
background: #849cb7;
overflow: hidden !important;
position: relative;
white-space: nowrap;
}
.ipsTabBar ul {
@@ -1781,6 +1786,18 @@ tr.ipsControlRow {
.ipsExpandable .item_wrap .item {
border-bottom: 1px solid #ecf1f5;
}
.parentCat .toggle {
background: url( images/folder_open.png ) no-repeat;
background-position: 0px 5px;
text-indent: -3000em;
width: 15px;
display: inline-block;
}
.parentCat.collapsed .toggle {
background-image: url( images/folder_closed.png );
}
/****************************************************/
/* MESSAGES */
@@ -2719,6 +2736,18 @@ ins, .diffgreen {
text-decoration: none;
}
#diffPopUp_inner > pre {
overflow: scroll;
}
.ips_merge_wrap {
position: relative;
width: 100%;
}
.ips_merge_new > p, .ips_merge_custom > p {
overflow: auto;
}
.ips_merge_new {
background-color: #f3dddd;
color: black;
@@ -2948,7 +2977,7 @@ ins, .diffgreen {
display: inline-block;
}
#ips_switchEditor {
clear: top;
clear: both;
text-align: left;
margin-left: 10px;
}
@@ -3396,7 +3425,6 @@ ipsBox { background: #ebf0f3; }
.ipsReset { margin: 0px !important; padding: 0px !important; }
.
.desc, .desc.blend_links a, p.posted_info {
font-size: 12px;
color: #777777;
@@ -3410,7 +3438,7 @@ ipsBox { background: #ebf0f3; }
border-width: 1px 1px 0 1px;
border-style: solid;
border-color: #316897;
/*padding: 8px 10px 9px;*/
padding: 8px 10px 9px;
font-size: 16px;
font-weight: 300;
text-shadow: 0 1px 2px rgba(0,0,0,0.3);
@@ -3418,3 +3446,167 @@ ipsBox { background: #ebf0f3; }
box-shadow: inset 0px 1px 0 #528cbc;
-moz-box-shadow: inset 0px 1px 0 #528cbc;
}
.swfupload {
position: absolute;
z-index: 1;
}
#attachments { }
#attachments li {
background-color: #e4ebf2;
border: 1px solid #d5dde5;
padding: 6px 20px 6px 42px;
margin-bottom: 10px;
position: relative;
}
#attachments li p.info {
color: #69727b;
font-size: 0.8em;
width: 300px;
}
#attachments li .links, #attachments li.error .links, #attachments.traditional .progress_bar {
display: none;
}
#attachments li.complete .links {
font-size: 0.9em;
margin-right: 15px;
right: 0px;
top: 12px;
display: block;
position: absolute;
}
#attachments li .progress_bar {
margin-right: 15px;
width: 200px;
right: 0px;
top: 15px;
position: absolute;
}
#attachments li.complete, #attachments li.in_progress, #attachments li.error {
background-repeat: no-repeat;
background-position: 12px 12px;
}
#attachments li.in_progress {
background-image: url({$this->settings['public_dir']}style_images/master/loading.gif);
}
#attachments li.error {
background-image: url({$this->settings['public_dir']}style_images/master/exclamation.png);
background-color: #e8caca;
border: 1px solid #ddafaf;
}
#attachments li.error .info {
color: #8f2d2d;
}
#attachments li.complete {
background-image: url({$this->settings['public_dir']}style_images/master/accept.png);
}
#attachments li .thumb_img {
left: 6px;
top: 6px;
width: 30px;
height: 30px;
overflow: hidden;
position: absolute;
}
/*div.post_form fieldset.attachments span.desc {
margin: 0 0 0 15px;
display: inline;
clear: none;
}*/
.attach_controls {
background: url( {$this->settings['public_dir']}style_images/master/icon_attach.png ) no-repeat 3px;
padding-left: 35px;
min-height: 82px;
}
.attach_controls .ipsType_subtitle { margin-bottom: 5px; }
.attach_controls iframe { display: block; margin-bottom: 5px; }
.attach_button { font-weight: bold; }
#help_msg { margin-top: 8px; }
#attach_wrap {
background: #eef3f8;
padding: 6px;
margin-top: 8px;
}
#attach_wrap h4 {
font-size: 1em;
font-weight: bold;
}
#attach_wrap li {
margin: 5px 6px;
float: left;
}
#attach_wrap .desc.info {
margin-left: 24px;
}
/** TAB PREFS STYLES **/
#tabBar, #otherMenu { list-style-type: none; margin: 0; padding: 0; }
#tabBar li, #otherMenu li { margin: 3px 3px 3px 0; padding: 1px; float: left; width: 100px; height: 90px; font-size: 1em; text-align: center; }
#tabPrefSave { height: 30px; }
#tabPrefSave input[type=button] {
margin-right: 6px;
}
#otherMenu,
#tabBar {
background: rgb( 42, 77, 124 );
height: 52px;
padding: 12px 15px 3px;
width: 800px;
margin: 10px auto;
}
#otherMenu > li,
#tabBar > li {
background: rgb( 42, 77, 124 );
cursor: move;
float: left;
font-size: 12px;
font-weight: 300;
width: 70px;
height: 17px;
color: #fff;
margin-right: 15px;
padding: 10px;
text-shadow: 0px 1px 1px rgba(0,0,0,0.6);
border:1px dotted #ddd;
}
#tabBar > li.ui-state-disabled {
cursor: text;
background: transparent;
color: #ddd;
background-color: rgb( 68, 119, 185 );
}
#otherMenu {
background: #f7eff5;
color: #811052;
}
#otherMenu > li {
background: #ce1b7b url( images/app_menu_highlight.png ) repeat-x bottom;
}
+178 -145
View File
@@ -3,9 +3,9 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.3.4
* IP.Board v3.4.5
* Admin CP global skin templates
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* Last Updated: $Date: 2013-05-20 18:47:20 -0400 (Mon, 20 May 2013) $
* </pre>
*
* @author $Author: bfarber $
@@ -13,7 +13,7 @@
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
* @version $Rev: 12262 $
* @since 3.0.0
*
*/
@@ -61,6 +61,60 @@ EOF;
return $IPBHTML;
}
/**
* manageBookmarks
*
* @param array Bookmarks
* @return @e string
*/
public function manageBookmarks( $bookmarks )
{
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<h3>{$this->lang->words['bookmarks_title']}</h3>
<div class='ipsPad fixed_inner'>
<div class='right desctext'>{$this->lang->words['bookmarks_make_home']}</div>
<br />
<ul id='sortable'>
EOF;
foreach( $bookmarks as $id => $data )
{
$url = IPSText::truncate( $data['bookmark_url'], 42 );
$sel = ( $data['bookmark_home'] ) ? ' checked="checked" ' : '';
$pos = intval( $data['bookmark_pos'] );
$IPBHTML .= <<<EOF
<li data-rowid='{$id}' id='bookmark_{$id}'>
<span class="draghandle"></span>
<div class='right'>
<input type='checkbox' data-cboxid='{$id}' name='bookmarkHome[{$id}]' value='{$id}' {$sel}>
&nbsp; <img src="{$this->settings['skin_acp_url']}/images/aff_cross.png" data-deleteid="{$id}" class='clickable' />
</div>
<input type='text' class='input_text' size='60' data-inputname="{$id}" name='bookmarkName[{$id}]' value='{$data['bookmark_title']}' />
<span class='desctext'><a href="{$this->settings['_base_url']}&amp;{$data['bookmark_url']}" target="_blank">{$url}</a></span>
</li>
EOF;
}
$IPBHTML .= <<<EOF
</ul>
<div class='ipsPad'><input type='button' id='saveBookmarksManage' class='realbutton right' value='{$this->lang->words['bookmarks_save']}' /></div>
</div>
<script type="text/javascript">
(function($){
$("#sortable").sortable();
}(jQuery));
</script>
EOF;
//--endhtml--//
return $IPBHTML;
}
//===========================================================================
// <ips:ips_editor:desc::trigger:>
//===========================================================================
@@ -83,32 +137,39 @@ if ( ! $this->_editorJsLoaded )
if ( defined("CK_LOAD_SOURCE") AND CK_LOAD_SOURCE )
{
$IPBHTML .= <<<EOF
<script type="text/javascript" src="{$this->settings['public_dir']}js/3rd_party/ckeditor/ckeditor_source.js"></script>
<script type="text/javascript" src="{$this->settings['js_base_url']}js/3rd_party/ckeditor/ckeditor_source.js"></script>
EOF;
}
else
{
$IPBHTML .= <<<EOF
<script type="text/javascript" src="{$this->settings['public_dir']}js/3rd_party/ckeditor/ckeditor.js"></script>
<script type="text/javascript" src="{$this->settings['js_base_url']}js/3rd_party/ckeditor/ckeditor.js"></script>
EOF;
}
$CmdVAsPlainText = ( $this->memberData['bw_paste_plain'] ) ? 'true' : 'false';
$IPBHTML .= <<<EOF
<script type="text/javascript" src='{$this->settings['cache_dir']}lang_cache/{$this->lang->lang_id}/ipb.lang.js' charset='{$this->settings['gb_char_set']}'></script>
<script type="text/javascript" src="{$this->settings['public_dir']}js/ips.textEditor.js"></script>
<script type="text/javascript" src="{$this->settings['js_base_url']}js/ips.textEditor.js"></script>
<script type="text/javascript" src="{$this->settings['js_base_url']}js/ips.textEditor.bbcode.js"></script>
<script type="text/javascript">
/* Dynamic items */
CKEDITOR.config.IPS_BBCODE = {$bbcode};
CKEDITOR.config.IPS_BBCODE_IMG_URL = "{$this->settings['public_dir']}style_extra/bbcode_icons";
CKEDITOR.config.IPS_BBCODE_IMG_URL = "{$this->settings['js_base_url']}style_extra/bbcode_icons";
CKEDITOR.config.IPS_BBCODE_BUTTONS = [];
/* Has to go before config load */
var IPS_smiley_path = "{$this->settings['emoticons_url']}/";
var IPS_smiles = {$options['smilies']};
var IPS_remove_plugins = [];
var IPS_extra_plugins = [];
/* Load our configuration */
CKEDITOR.config.customConfig = '{$this->settings['public_dir']}js/3rd_party/ckeditor/ips_config.js';
CKEDITOR.config.customConfig = '{$this->settings['js_base_url']}js/3rd_party/ckeditor/ips_config.js';
/* Override with prefs */
CKEDITOR.config.CmdVAsPlainText = {$CmdVAsPlainText};
</script>
<style type="text/css">
@import url("{$this->settings['css_base_url']}style_css/css_{$defaultSkin}/ipb_ckeditor.css");
@@ -117,19 +178,25 @@ EOF;
}
$options['noSmilies'] = intval($options['noSmilies']);
$options['isRte'] = intval($options['isRte']);
$options['isHtml'] = intval($options['isHtml']);
$options['autoSaveKey'] = $options['autoSaveKey'] ? $options['autoSaveKey'] : '';
$jsonEncoded = IPSText::jsonEncodeForTemplate( $autoSaveData );
$IPBHTML .= <<<EOF
<input type='hidden' name='noSmilies' id='noSmilies_{$options['editorName']}' value='{$options['noSmilies']}' />
<textarea id="{$options['editorName']}" name="{$formField}" class='ips_EditorTextArea'>{$content}</textarea>
<a id="ips_switchEditor" style="display:none" href="javascript:void()">Switch to Rich Text Editor</a>
<span id='editor_html_message_{$options['editorName']}'>&nbsp;</span>
<script type="text/javascript">
ipb.textEditor.initialize('{$options['editorName']}', { type: '{$options['type']}',
minimize: {$options['minimize']},
bypassCKEditor: {$options['bypassCKEditor']},
isRte: {$options['isRte']},
isHtml: {$options['isHtml']},
noSmilies: {$options['noSmilies']},
ips_AutoSaveKey: '',
ips_AutoSaveData: {} } );
ips_AutoSaveKey: '{$options['autoSaveKey']}',
ips_AutoSaveData: {$jsonEncoded} } );
</script>
EOF;
//--endhtml--//
@@ -365,7 +432,7 @@ $boardurl = ($this->registry->output->isHTTPS) ? $this->settings['board_url_http
$IPBHTML .= <<<EOF
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<html xml:lang="ru" lang="ru" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset={$IPS_DOC_CHAR_SET}" />
<meta http-equiv="Pragma" content="no-cache" />
@@ -498,9 +565,9 @@ HTML;
else
{*/
$IPBHTML .= <<<HTML
<script type="text/javascript" src="{$this->settings['public_dir']}js/3rd_party/prototype.js?ipbv={$this->registry->output->antiCacheHash}"></script>
<script type='text/javascript' src='{$this->settings['public_dir']}js/3rd_party/scriptaculous/scriptaculous-cache.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type="text/javascript" src='{$this->settings['public_dir']}js/ipb.js?ipbv={$this->registry->output->antiCacheHash}&amp;load={$this->settings['extraJsModules']}'></script>
<script type="text/javascript" src="{$this->settings['js_base_url']}js/3rd_party/prototype.js?ipbv={$this->registry->output->antiCacheHash}"></script>
<script type='text/javascript' src='{$this->settings['js_base_url']}js/3rd_party/scriptaculous/scriptaculous-cache.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type="text/javascript" src='{$this->settings['js_base_url']}js/ipb.js?ipbv={$this->registry->output->antiCacheHash}&amp;load={$this->settings['extraJsModules']}'></script>
<script type='text/javascript' src='{$this->settings['js_main_url']}acp.menu.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type='text/javascript' src='{$this->settings['js_main_url']}acp.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type="text/javascript" src='{$this->settings['js_main_url']}acp.tabs.js?ipbv={$this->registry->output->antiCacheHash}'></script>
@@ -568,7 +635,7 @@ return $IPBHTML;
* @param array Order of tabs
* @return string HTML
*/
public function global_main_wrapper($IPS_DOC_CHAR_SET=IPS_DOC_CHAR_SET, $cssFiles=array(), $gbl_sub_menu='', $tabOrder=array() ) {
public function global_main_wrapper($IPS_DOC_CHAR_SET=IPS_DOC_CHAR_SET, $cssFiles=array(), $gbl_sub_menu='', $mainTabData, $otherTabData, $bookMarks=array() ) {
$IPBHTML = "";
//--starthtml--//
@@ -648,14 +715,21 @@ else
if( ( !$licenseData OR !$licenseData['key']['_expires'] OR $licenseData['key']['_expires'] < IPS_UNIX_TIME_NOW and $licenseData['key']['_expires'] != -1 ) AND !IPSCookie::get( 'ignore-license-notice' ) )
{
$extra_class = 'expired_license';
$license_html = <<<HTML
<div id='license_notice_expired'>
<div class='right'><a id='license-close' href='#'>Close</a></div>
<h4>{$this->lang->words['license_expired_header']}</h4>
<p>{$this->lang->words['license_expired_info']}</p>
</div>
if ( $licenseData['_cached_date'] < $licenseData['key']['_expires'] )
{
$this->cache->rebuildCache( 'licenseData' );
}
else
{
$extra_class = 'expired_license';
$license_html = <<<HTML
<div id='license_notice_expired'>
<div class='right'><a id='license-close' href='#'>Close</a></div>
<h4>{$this->lang->words['license_expired_header']}</h4>
<p>{$this->lang->words['license_expired_info']}</p>
</div>
HTML;
}
}
}
@@ -663,7 +737,7 @@ $boardurl = ($this->registry->output->isHTTPS) ? $this->settings['board_url_http
$IPBHTML .= <<<HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<html xml:lang="ru" lang="ru" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset={$IPS_DOC_CHAR_SET}" />
<meta http-equiv="Pragma" content="no-cache" />
@@ -807,9 +881,9 @@ HTML;
else
{*/
$IPBHTML .= <<<HTML
<script type="text/javascript" src="{$this->settings['public_dir']}js/3rd_party/prototype.js?ipbv={$this->registry->output->antiCacheHash}"></script>
<script type='text/javascript' src='{$this->settings['public_dir']}js/3rd_party/scriptaculous/scriptaculous-cache.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type="text/javascript" src='{$this->settings['public_dir']}js/ipb.js?ipbv={$this->registry->output->antiCacheHash}&amp;load={$this->settings['extraJsModules']}'></script>
<script type="text/javascript" src="{$this->settings['js_base_url']}js/3rd_party/prototype.js?ipbv={$this->registry->output->antiCacheHash}"></script>
<script type='text/javascript' src='{$this->settings['js_base_url']}js/3rd_party/scriptaculous/scriptaculous-cache.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type="text/javascript" src='{$this->settings['js_base_url']}js/ipb.js?ipbv={$this->registry->output->antiCacheHash}&amp;load={$this->settings['extraJsModules']}'></script>
<script type='text/javascript' src='{$this->settings['js_main_url']}acp.menu.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type='text/javascript' src='{$this->settings['js_main_url']}acp.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type="text/javascript" src='{$this->settings['js_main_url']}acp.tabs.js?ipbv={$this->registry->output->antiCacheHash}'></script>
@@ -833,8 +907,10 @@ else
}
$mem_info = json_encode( array( 'g_mem_info' => $this->memberData['g_mem_info'] ) );
$base_url = str_replace( '&amp;', '&', $this->settings['_base_url'] );
$IPBHTML .= <<<HTML
<script type='text/javascript' src='{$this->settings['cache_dir']}lang_cache/{$this->lang->lang_id}/ipb.lang.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type="text/javascript" src="{$this->settings['cache_dir']}lang_cache/{$this->lang->lang_id}/acp.lang.js?ipbv={$this->registry->output->antiCacheHash}" charset="{$IPS_DOC_CHAR_SET}"></script>
<script type='text/javascript' src='{$this->settings['js_main_url']}3rd_party/jquery.min.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type='text/javascript' src='{$this->settings['js_main_url']}3rd_party/jquery-ui.min.js?ipbv={$this->registry->output->antiCacheHash}'></script>
@@ -845,9 +921,10 @@ $IPBHTML .= <<<HTML
<script type='text/javascript'>
//<![CDATA[
ipb.vars['st'] = "{$this->request['st']}";
ipb.vars['base_url'] = "{$this->settings['_base_url']}";
ipb.vars['base_url'] = "{$base_url}";
ipb.vars['front_url'] = "{$this->settings['board_url']}/index.php?";
ipb.vars['app_url'] = "{$this->settings['base_url']}";
ipb.vars['upload_url'] = "{$this->settings['upload_url']}";
ipb.vars['image_url'] = "{$this->settings['skin_app_url']}images/";
ipb.vars['image_acp_url'] = "{$this->settings['skin_acp_url']}/images/";
ipb.vars['md5_hash'] = "{$this->member->form_hash}";
@@ -864,6 +941,7 @@ $IPBHTML .= <<<HTML
ipb.templates['ajax_loading'] = "<div id='ajax_loading'>{$this->lang->words['gl_loading']}</div>";
ipb.templates['global_notify'] = new Template("<div class='popupWrapper'><div class='popupInner'><div class='ipsPad'>#{message} #{close}</div></div></div>");
ipb.templates['global_notify_close'] = "<span id='ipsGlobalNotification_close' class='realbutton'>{$this->lang->words['gbl_ok']}</span>";
ipb.templates['acp_bookmark_add'] = new Template("<h3>{$this->lang->words['bookmarks_add_title']}</h3><div class='ipsPad' id='bmcontent'>{$this->lang->words['bookmarks_add_field_title']} <input type='text' class='input_text' style='width:99%' name='bookmarkTitle' value='#{title}' /><br /><input type='checkbox' name='homePage' value='1' /> <span class='desctext'>{$this->lang->words['bookmarks_add_field_home']}</span><br /><br /><div style='text-align:center'><input type='button' class='realbutton' value='{$this->lang->words['bookmarks_save']}' /></div></div>" );
//]]>
</script>
<script type='text/javascript'>
@@ -871,7 +949,7 @@ $IPBHTML .= <<<HTML
acp = new IPBACP;
</script>
</head>
<body id='ipboard_body' class='{$extra_class} clearfix'>
<body id='ipboard_body' data-bookmarkurl="{$bookMarks['url']}" data-bookmarkable="{$bookMarks['can']}" data-bookmarked="{$bookMarks['has']}" class='{$extra_class} clearfix'>
<!-- Inline Form Box -->
<div id='modal' style='display: none'></div>
{$license_html}
@@ -979,10 +1057,14 @@ $IPBHTML .= <<<HTML
</div>
<img src='{$this->settings['skin_acp_url']}/images/live_search_stem.png' id='ls_stem' />
</div>
<!-- pre load -->
<img src='{$this->settings['skin_acp_url']}/images/icons/bookmark_white_20.png' style='display:none' />
<img src='{$this->settings['skin_acp_url']}/images/icons/bookmark_grey_20.png' style='display:none' />
<div id='app_bar'>
<!--<a class='right' id='edit_tabs' href='#' title="Set up the app bar just the way you want">Edit Tabs</a>-->
<a class='right' id='edit_tabs' href='#' title="{$this->lang->words['set_up_tabs']}">{$this->lang->words['edit_tabs']}</a>
HTML;
$IPBHTML .= $this->global_app_menu_html( $gbl_sub_menu, $tabOrder );
$IPBHTML .= $this->global_app_menu_html( $gbl_sub_menu, $mainTabData, $otherTabData );
$IPBHTML .= <<<HTML
</div>
@@ -1013,13 +1095,26 @@ $IPBHTML .= <<<HTML
HTML;
}
$acpUrl = str_replace( '&amp;', '&', $this->settings['_base_url'] );
$IPBHTML .= <<<HTML
</div>
<script type='text/javascript'>
jQuery.extend(true, ips,
{
member: { member_id: parseInt( $this->memberData['member_id'] ) },
acpUrl: '{$acpUrl}',
rootUrl: '{$this->settings['board_url']}',
publicUrl: '{$this->settings['board_url']}/index.php?}',
publicImageUrl: "{$this->settings['skin_app_url']}images/",
acpImageUrl: "{$this->settings['skin_acp_url']}/images/",
formToken: '{$this->member->form_hash}',
bookmarksJSON: {$bookMarks['jsn']}
} );
</script>
</body>
</html>
HTML;
//--endhtml--//
return $IPBHTML;
}
@@ -1153,7 +1248,7 @@ return $return;
* @param array Tab order
* @return string HTML
*/
public function global_app_menu_html( $raw_menu, $tabOrder ) {
public function global_app_menu_html( $raw_menu, $mainTabData, $otherTabData ) {
$fakeAppAccess = array();
@@ -1162,84 +1257,48 @@ $IPBHTML = "";
$menus = $this->global_menu_sub_navigation( $raw_menu );
$curApp = array();
$defaultFakeApp = array();
$defaultFakeModule = array();
switch( ipsRegistry::$current_application )
{
case 'forums':
$curApp['forums'] = 'active';
break;
case 'core':
$curApp['core'] = 'active';
break;
case 'members':
$curApp['members'] = 'active';
break;
default:
$curApp['other'] = 'active';
break;
}
//print_r( $menus );
$fakeApps = $this->registry->output->fetchFakeApps();
foreach( $fakeApps as $fa => $data )
{
$fakeAppAccess[ $fa ] = FALSE;
foreach( $data as $appData )
{
if ( !$fakeAppAccess[ $fa ] and ipsRegistry::getClass('class_permissions')->checkForModuleAccess( $appData['app'], $appData['module'] ) )
{
$fakeAppAccess[ $fa ] = TRUE;
}
if ( ! $defaultFakeApp[ $fa ] )
{
$defaultFakeApp[ $fa ] = $appData['app'];
$defaultFakeModule[ $fa ] = $appData['module'];
}
if ( $appData['app'] == ipsRegistry::$current_application && $appData['module'] == ipsRegistry::$current_module )
{
$curApp = array();
$curApp[ $fa ] = 'active';
}
}
}
$IPBHTML .= <<<HTML
<ul id='app_menu' class='app_menu'>
<li>
<a href='#' id='bookmarks_button'><img src='{$this->settings['skin_acp_url']}/images/icons/bookmark_white_20.png' /></a>
<ul id='bookmarks_items' class='right' style='display:none'></ul>
</li>
HTML;
$applications = ipsRegistry::$applications;
$count = 0;
$this->registry->getClass('class_permissions')->return = 1;
$other_menu = "";
$count = 0;
$other_menu = "";
$otherIsActive = false;
/* Loop */
foreach( $applications as $app_dir => $app_data )
foreach( $otherTabData as $tabkey => $data )
{
$tag = '';
if ( in_array( $app_data['app_directory'], array( 'core', 'forums', 'members' ) ) || $this->registry->getClass('class_permissions')->checkForAppAccess( $app_data['app_directory'] ) !== TRUE || ! $applications[ $app_dir ]['app_enabled'] )
if ( ! $data['isEnabled'] || ! $data['permCheck'] )
{
continue;
}
if( $app_data['app_location'] == 'ips' )
if ( $data['active'] )
{
$otherIsActive = true;
}
if ( ipsRegistry::$applications[ $data['appDir'] ]['app_location'] == 'ips' || ipsRegistry::$applications[ $data['appDir'] ]['app_location'] == 'root' )
{
$tag = "<span class='ipsBadge badge_purple'>{$this->lang->words['gl_ipsapp']}</span>&nbsp;&nbsp;";
}
$other_menu .= <<<EOF
<li id='app_{$app_dir}'>
<a href='{$this->settings['_base_url']}app={$app_data['app_directory']}'>
<li id='app_{$data['appDir']}'>
<a href='{$data['url']}'>
{$tag}
{$app_data['app_title']}
{$data['title']}
</a>
{$menus[ $app_dir ]}
{$menus[ $tabkey ]}
</li>
EOF;
$count++;
@@ -1249,62 +1308,29 @@ EOF;
// Draw tabs based on order preference
//-----------------------------------------
foreach( $tabOrder as $tabkey )
foreach( $mainTabData as $tabkey => $data )
{
if( $tabkey == 'other' AND !$count )
if ( $tabkey == 'other' )
{
continue;
if ( ! $count )
{
continue;
}
$data['active'] = $otherIsActive;
}
$permCheck = TRUE;
switch( $tabkey )
{
case 'core':
$title = $this->lang->words['gl_system'];
$link = "{$this->settings['_base_url']}app=core";
$permCheck = ipsRegistry::getClass('class_permissions')->checkForAppAccess( 'core' );
break;
case 'forums':
$title = $this->lang->words['gl_forums'];
$link = "{$this->settings['_base_url']}app=forums";
$permCheck = ipsRegistry::getClass('class_permissions')->checkForAppAccess( 'forums' );
break;
case 'members':
$title = $this->lang->words['gl_members'];
$link = "{$this->settings['_base_url']}app=members";
$permCheck = ipsRegistry::getClass('class_permissions')->checkForAppAccess( 'members' );
break;
case 'lookfeel':
$title = $this->lang->words['gl_lookandfeel'];
$link = "{$this->settings['_base_url']}app={$defaultFakeApp['lookfeel']}&amp;module={$defaultFakeModule['lookfeel']}";
$permCheck = $fakeAppAccess['lookfeel'];
break;
case 'support':
$title = $this->lang->words['gl_support'];
$link = "{$this->settings['_base_url']}app=core&amp;module=diagnostics";
$permCheck = $fakeAppAccess['support'];
break;
case 'reports':
$title = $this->lang->words['gl_reportsmenu'];
$link = "{$this->settings['_base_url']}app={$defaultFakeApp['reports']}&amp;module={$defaultFakeModule['reports']}";
$permCheck = $fakeAppAccess['reports'];
break;
}
if ( !$permCheck )
if ( ! $data['isEnabled'] || ! $data['permCheck'] )
{
continue;
}
$class = ( $data['active'] ) ? 'active' : '';
if( $tabkey == 'other' )
{
$IPBHTML .= <<<HTML
<li class='{$curApp['other']}'>
<li class='{$class}'>
<a href='{$this->settings['_base_url']}app=core&amp;module=applications&amp;section=applications&amp;do=applications_overview'>{$this->lang->words['other_applications']}</a>
<ul id='menu__other' style='display: none'>
{$other_menu}
@@ -1315,8 +1341,8 @@ HTML;
else
{
$IPBHTML .= <<<HTML
<li class='{$curApp[$tabkey]}'>
<a href='{$link}'>{$title}</a>
<li class='{$class}'>
<a href='{$data['url']}'>{$data['title']}</a>
{$menus[ $tabkey ]}
</li>
HTML;
@@ -1391,7 +1417,7 @@ $IPBHTML = "";
$IPBHTML .= <<<EOF
<br /><br />
<div align='center' style='margin-left:auto;margin-right:0'>
<div align='center' class='clear' style='margin-left:auto;margin-right:0'>
<div class='acp-box' style='text-align:left;'>
<h3>{$this->lang->words['gbl_queries']}</h3>
<div style='overflow:auto'>{$queries}</div>
@@ -1480,9 +1506,16 @@ $IPBHTML = "";
$IPS_DOC_CHAR_SET = IPS_DOC_CHAR_SET;
$publicDirectory = PUBLIC_DIRECTORY;
if ( $this->settings['logins_over_https'] )
{
$this->settings['skin_acp_url'] = str_replace( 'http://', 'https://', $this->settings['skin_acp_url'] );
$this->settings['public_dir'] = str_replace( 'http://', 'https://', $this->settings['public_dir'] );
$this->settings['js_main_url'] = str_replace( 'http://', 'https://', $this->settings['js_main_url'] );
}
$IPBHTML .= <<<HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<html xml:lang="ru" lang="ru" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset={$IPS_DOC_CHAR_SET}" />
<meta http-equiv="Pragma" content="no-cache" />
@@ -1554,9 +1587,9 @@ HTML;
else
{*/
$IPBHTML .= <<<HTML
<script type="text/javascript" src="{$this->settings['public_dir']}js/3rd_party/prototype.js?ipbv={$this->registry->output->antiCacheHash}"></script>
<script type='text/javascript' src='{$this->settings['public_dir']}js/3rd_party/scriptaculous/scriptaculous-cache.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type="text/javascript" src='{$this->settings['public_dir']}js/ipb.js?ipbv={$this->registry->output->antiCacheHash}&amp;load={$this->settings['extraJsModules']}'></script>
<script type="text/javascript" src="{$this->settings['js_base_url']}js/3rd_party/prototype.js?ipbv={$this->registry->output->antiCacheHash}"></script>
<script type='text/javascript' src='{$this->settings['js_base_url']}js/3rd_party/scriptaculous/scriptaculous-cache.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type="text/javascript" src='{$this->settings['js_base_url']}js/ipb.js?ipbv={$this->registry->output->antiCacheHash}&amp;load={$this->settings['extraJsModules']}'></script>
<script type='text/javascript' src='{$this->settings['js_main_url']}acp.menu.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type='text/javascript' src='{$this->settings['js_main_url']}acp.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type="text/javascript" src='{$this->settings['js_main_url']}acp.tabs.js?ipbv={$this->registry->output->antiCacheHash}'></script>
@@ -1691,9 +1724,9 @@ $IPBHTML .= <<<EOF
jsDebug = 0;
USE_RTE = 0;
</script>
<script type="text/javascript" src="{$this->settings['public_dir']}js/3rd_party/prototype.js?ipbv={$this->registry->output->antiCacheHash}"></script>
<script type='text/javascript' src='{$this->settings['public_dir']}js/3rd_party/scriptaculous/scriptaculous-cache.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type="text/javascript" src='{$this->settings['public_dir']}js/ipb.js?ipbv={$this->registry->output->antiCacheHash}&amp;load={$this->settings['extraJsModules']}'></script>
<script type="text/javascript" src="{$this->settings['js_base_url']}js/3rd_party/prototype.js?ipbv={$this->registry->output->antiCacheHash}"></script>
<script type='text/javascript' src='{$this->settings['js_base_url']}js/3rd_party/scriptaculous/scriptaculous-cache.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type="text/javascript" src='{$this->settings['js_base_url']}js/ipb.js?ipbv={$this->registry->output->antiCacheHash}&amp;load={$this->settings['extraJsModules']}'></script>
<script type='text/javascript' src='{$this->settings['js_main_url']}acp.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type="text/javascript" src='{$this->settings['js_main_url']}acp.tabs.js?ipbv={$this->registry->output->antiCacheHash}'></script>
<script type="text/javascript">
Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B