1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
admin_informer.php
См. документацию.
1<?
2
5
7
9{
10 private static $items=array();
11 public static $alertCounter = 0;
12
27 public static function AddItem($arParams)
28 {
29 if(!isset($arParams["TITLE"]) || empty($arParams["TITLE"]))
30 return false;
31
32 if(!isset($arParams["HTML"]) || empty($arParams["HTML"]))
33 return false;
34
35 $item = array(
36 "TITLE" => $arParams["TITLE"],
37 "HTML" => $arParams["HTML"],
38 "FOOTER" => $arParams["FOOTER"] ?? false,
39 "LINK" => $arParams["LINK"] ?? false,
40 "ALERT" => $arParams["ALERT"] ?? false,
41 "COLOR" => $arParams["COLOR"] ?? "green",
42 );
43 if($arParams["ALERT"])
44 {
45 $item["SORT"] = 10;
46 self::$alertCounter++;
47 }
48 else
49 $item["SORT"] = $arParams["SORT"] ?? 20;
50
51 self::$items[] = $item;
52
53 return count(self::$items)-1;
54 }
55
56 private static function PrintItemHtml($itemIdx, $bVisible)
57 {
58 $itemHtml = '
59 <div class="adm-informer-item'.(self::$items[$itemIdx]["COLOR"] ? " adm-informer-item-".self::$items[$itemIdx]["COLOR"] : '').'" style="display:'.($bVisible ? 'block' : 'none').'"'.(self::$items[$itemIdx]["LINK"] ? ' onclick="location.href=\''.self::$items[$itemIdx]["LINK"].'\';"' : '' ).'>
60 <div class="adm-informer-item-title">
61 '.self::$items[$itemIdx]["TITLE"].'
62 </div>
63 <div class="adm-informer-item-body">
64 <div class="adm-informer-item-html" id="adm-informer-item-html-'.$itemIdx.'">
65 '.self::$items[$itemIdx]["HTML"].'
66 <span class="adm-informer-icon"></span>
67 </div>';
68
69 if(self::$items[$itemIdx]["FOOTER"]!=false && !empty(self::$items[$itemIdx]["FOOTER"]))
70 {
71 $itemHtml .= '
72 <div class="adm-informer-item-footer" id="adm-informer-item-footer-'.$itemIdx.'">
73 '.self::$items[$itemIdx]["FOOTER"].'
74 </div>';
75 }
76
77 $itemHtml .= '
78 </div>
79 </div>';
80
81 return $itemHtml;
82 }
83
84 public static function PrintHtmlPublic($visCountParam = 3)
85 {
86 if(!$GLOBALS["APPLICATION"]->PanelShowed)
87 return "";
88
89 return self::PrintHtml($visCountParam);
90 }
91
92 public static function PrintHtml($visCountParam = 3)
93 {
94 sortByColumn(self::$items, "SORT");
95
96 $itemsCount = 0;
97 $visibleCount = 0;
98
99 $div = '
100<div class="adm-informer" id="admin-informer" style="display: none; top:48px; left:316px;" onclick="return BX.adminInformer.OnInnerClick(event);">
101 <div class="adm-informer-header">'.GetMessage("MAIN_AI_NEW_NOTIF").'</div>';
102
103 foreach (self::$items as $key => $item)
104 {
105 if( $itemsCount < $visCountParam || $item["ALERT"])
106 {
107 $bVisible = true;
108 $visibleCount++;
109 }
110 else
111 $bVisible = false;
112
113 $div .= self::PrintItemHtml($key, $bVisible);
114
115 $itemsCount++;
116 }
117
118 $div .= '
119 <a href="javascript:void(0);" class="adm-informer-footer adm-informer-footer-collapsed" hidefocus="true" id="adm-informer-footer" onclick="return BX.adminInformer.ToggleExtra();" '.( $itemsCount <= $visibleCount ? ' style="display:none;"' : '' ).'>'.GetMessage('MAIN_AI_ALL_NOTIF').' ('.$itemsCount.') </a>
120 <span class="adm-informer-arrow"></span>
121</div>
122
123<script>
124 BX.ready( function(){BX.adminInformer.Init('.$visibleCount.'); } );
125</script>';
126
127 return $div;
128 }
129
130 private static function CutErrorId($sError)
131 {
132 return preg_replace('/\[.*\]/', '', $sError);
133 }
134
135 private static function IsUpdateSystemNeedUpdate($sError)
136 {
137 return mb_strpos($sError, 'NEW_UPDATE_SYSTEM');
138 }
139
140 public static function InsertMainItems()
141 {
142 if(defined('BX_PUBLIC_MODE') && BX_PUBLIC_MODE == 1)
143 return false;
144
145 global $USER;
146
147 if(!$USER->IsAuthorized())
148 return false;
149
150 if ($USER->CanDoOperation("cache_control") && !Helper::isOn() && !Engine::isSelfHostedPortal())
151 {
152 self::AddItem(array(
153 "TITLE" => GetMessage("top_panel_ai_composite_title"),
154 "HTML" => GetMessage("top_panel_ai_composite_desc"),
155 "COLOR" => "red",
156 "FOOTER" => '<a href="/bitrix/admin/composite.php?lang='.LANGUAGE_ID.'">'.GetMessage("top_panel_ai_composite_switch_on").'</a>',
157 "ALERT" => true,
158 "SORT" => 1
159 ));
160 }
161
162 //Updates
163 if($USER->IsAdmin() || $USER->CanDoOperation('install_updates'))
164 {
165 $update_res = UpdateTools::GetUpdateResult();
166
167 $updAIParams = array(
168 "TITLE" => GetMessage("top_panel_ai_updates"),
169 "COLOR" => 'gray',
170 "SORT" => 12
171 );
172
173 //update_autocheck == true and we have something to show
174 if ($update_res['result'] === true && $update_res['tooltip'])
175 {
176 $updAIParams["HTML"] = $update_res['tooltip'];
177 $updAIParams["FOOTER"] = '<a href="/bitrix/admin/update_system.php?lang='.LANGUAGE_ID.'">'.GetMessage("top_panel_ai_upd_instl").'</a>';
178 $updAIParams["ALERT"] = true;
179 }
180 else if ($update_res['error'] <> '') // update error
181 {
182 $updAIParams["TITLE"] .= " - ".GetMessage("top_panel_ai_title_err");
183 $updAIParams["HTML"] = trim(self::CutErrorId($update_res['error']));
184 $updAIParams["FOOTER"] = '<a href="/bitrix/admin/update_system.php?refresh=Y&lang='.LANGUAGE_ID.'">'.GetMessage("top_panel_ai_upd_chk").'</a>';
185 $updAIParams["ALERT"] = true;
186 }
187 else // update_autocheck == false
188 {
189 //last update date time
190 $updateDate = COption::GetOptionInt("main", "update_system_update_time");
191
192 $updAIParams["HTML"] = '<span class="adm-informer-strong-text">'.GetMessage("top_panel_ai_sys_ver").' '.SM_VERSION."</span><br>";
193 $updAIParams["HTML"] .= $updateDate ? GetMessage("top_panel_ai_upd_last") . '<br>' . \Bitrix\Main\Type\DateTime::createFromTimestamp($updateDate) : GetMessage("top_panel_ai_upd_never");
194 $updAIParams["FOOTER"] = '<a href="/bitrix/admin/update_system.php?refresh=Y&lang='.LANGUAGE_ID.'">'.GetMessage("top_panel_ai_upd_chk").'</a>';
195 $updAIParams["ALERT"] = false;
196 }
197
198 self::AddItem($updAIParams);
199 }
200
201 //Disk space (quota)
202 $maxQuota = (int)COption::GetOptionInt("main", "disk_space", 0)*1048576;
203 if ($maxQuota > 0)
204 {
205 $quota = new CDiskQuota();
206 $free = $quota->GetDiskQuota();
207 $freeMB = CFile::FormatSize($free,1);
208 $free = round($free/($maxQuota)*100);
209
210 $qAIParams = array(
211 "TITLE" => GetMessage("top_panel_ai_used_space"),
212 "COLOR" => "green",
213 "ALERT" => ($free < 10 ? true : false)
214 );
215
216 $qAIParams["HTML"] = '
217 <div class="adm-informer-item-section">
218 <span class="adm-informer-item-l"><span class="adm-informer-strong-text">'.GetMessage("top_panel_ai_in_all").'</span> '.CFile::FormatSize($maxQuota,1).'</span>
219 <span class="adm-informer-item-r"><span class="adm-informer-strong-text">'.GetMessage("top_panel_ai_in_aviable").'</span> '.$freeMB.'</span>
220 </div>
221 <div class="adm-informer-status-bar-block" >
222 <div class="adm-informer-status-bar-indicator" style="width:'.(100-$free).'%; "></div>
223 <div class="adm-informer-status-bar-text">'.(100-$free).'%</div>
224 </div>
225 <div class="adm-informer-item-section"><span class="adm-informer-strong-text">'.GetMessage("top_panel_ai_in_recomend").'</span> '.GetMessage("top_panel_ai_in_no").'</div>';
226
227 self::AddItem($qAIParams);
228 }
229
230 if($USER->IsAdmin() && in_array(LANGUAGE_ID, array("ru", "ua")))
231 {
232 $cModules = COption::GetOptionString("main", "mp_modules_date", "");
233 $arModules = array();
234 if ($cModules <> '')
235 {
236 $arModules = unserialize($cModules, ['allowed_classes' => false]) ?: [];
237 }
238
239 $mCnt = count($arModules);
240 if($mCnt > 0)
241 {
242 foreach($arModules as $id => $module)
243 {
244 if(isModuleInstalled($module["ID"]))
245 {
246 if($module["TMS"]+3600*24*14 < time())
247 {
248 $script = "
249 <script>
250 function hideMpAnswer(el, module)
251 {
252 if(el.parentNode.parentNode.parentNode)
253 BX.hide(el.parentNode.parentNode.parentNode);
254 BX.ajax({
255 'method': 'POST',
256 'dataType': 'html',
257 'url': '/bitrix/admin/partner_modules.php',
258 'data': 'module='+module+'&".bitrix_sessid_get()."&act=unnotify',
259 'async': true,
260 'processData': false
261
262 });
263 }
264 </script>";
265
266 $arParams = array(
267 'TITLE' => GetMessage("top_panel_ai_marketplace"),
268 'COLOR' => 'green',
269 'FOOTER' => "<a href=\"javascript:void(0)\" onclick=\"hideMpAnswer(this, '".CUtil::JSEscape($module["ID"])."')\" ".
270 "style=\"float: right !important; font-size: 0.8em !important;\">".GetMessage("top_panel_ai_marketplace_hide")."</a>".
271 "<a href=\"https://marketplace.1c-bitrix.".LANGUAGE_ID."/solutions/".$module["ID"]."/#tab-rating-link\" target=\"_blank\" ".
272 "onclick=\"hideMpAnswer(this, '".CUtil::JSEscape($module["ID"])."')\">".GetMessage("top_panel_ai_marketplace_add")."</a>",
273 'ALERT' => true,
274 'HTML' => GetMessage("top_panel_ai_marketplace_descr", array("#NAME#" => $module["NAME"], "#ID#" => $module["ID"])).$script,
275 );
277 }
278 }
279 else
280 {
281 unset($arModules[$id]);
282 }
283 }
284 if($mCnt != count($arModules))
285 {
286 COption::SetOptionString("main", "mp_modules_date", serialize($arModules));
287 }
288 }
289
290 }
291
292 foreach(GetModuleEvents("main", "OnAdminInformerInsertItems", true) as $arHandler)
293 ExecuteModuleEventEx($arHandler);
294
295 return count(self::$items);
296 }
297}
$arParams
Определения access_dialog.php:21
change_password_forgot_link login popup forget pas AUTH_GOTO_FORGOT_FORM login btn wrap change_password_button login popup link login popup return auth javascript
Определения change_password.php:57
Определения admin_informer.php:9
static $alertCounter
Определения admin_informer.php:11
static AddItem($arParams)
Определения admin_informer.php:27
static SetOptionString($module_id, $name, $value="", $desc=false, $site="")
Определения option.php:29
bx popup label bx width30 PAGE_NEW_MENU_NAME text width
Определения file_new.php:677
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
bx_acc_lim_group_list limitGroupList[] multiple<?=$group[ 'ID']?> ID selected margin top
Определения file_new.php:657
hidden mSiteList<?=htmlspecialcharsbx(serialize( $siteList))?><?=htmlspecialcharsbx( $siteList[ $j]["ID"])?> _Propery<? if(((COption::GetOptionString( $module_id, "different_set", "N")=="Y") &&( $j !=0))||(COption::GetOptionString( $module_id, "different_set", "N")=="N")) echo "display: none;"?> top adm detail content cell l top adm detail content cell r heading center center ID left
Определения options.php:768
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
Определения action.php:3
<? endif;?> window document title
Определения prolog_main_admin.php:76
lang
Определения options.php:182
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
adm detail iblock types adm detail iblock list tr_SITE_ID display
Определения yandex_setup.php:388