Просмотр исходного кода

Ticket #4980 - Studio: Layout changes.

AntonLV 3 месяцев назад
Родитель
Сommit
60d9fe1ccf

+ 6 - 5
install/sql/system.sql

@@ -454,7 +454,7 @@ INSERT INTO `sys_options`(`category_id`, `name`, `caption`, `value`, `type`, `ex
 
 (@iCategoryId, 'sys_form_lpc_enable', '_adm_stg_cpt_option_sys_form_lpc_enable', 'on', 'checkbox', '', '', '', '', 260),
 
-(@iCategoryId, 'sys_std_show_header_left', '_adm_stg_cpt_option_sys_std_show_header_left', '', 'checkbox', '', '', '', '', 270),
+(@iCategoryId, 'sys_std_show_header_left', '_adm_stg_cpt_option_sys_std_show_header_left', 'on', 'checkbox', '', '', '', '', 270),
 (@iCategoryId, 'sys_std_show_header_left_search', '_adm_stg_cpt_option_sys_std_show_header_left_search', '', 'checkbox', '', '', '', '', 271),
 (@iCategoryId, 'sys_std_show_header_center', '_adm_stg_cpt_option_sys_std_show_header_center', 'on', 'checkbox', '', '', '', '', 275),
 (@iCategoryId, 'sys_std_show_header_right', '_adm_stg_cpt_option_sys_std_show_header_right', 'on', 'checkbox', '', '', '', '', 280),
@@ -5181,8 +5181,9 @@ INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `tit
 ('sys_studio_account_popup', 'system', 'account', '_sys_menu_item_title_system_sa_account', '_sys_menu_item_title_sa_account', '{member_url}', '', '', 'ami-account.svg', '', 2147483647, 1, 0, 0, 1),
 ('sys_studio_account_popup', 'system', 'site', '_sys_menu_item_title_system_sa_site', '_sys_menu_item_title_sa_site', '{url_root}', '', '', 'ami-site.svg', '', 2147483647, 1, 0, 0, 2),
 ('sys_studio_account_popup', 'system', 'edit', '_sys_menu_item_title_system_sa_edit', '_sys_menu_item_title_sa_edit', 'javascript:void(0)', '{js_object}.clickEdit(this);', '', 'ami-edit.svg', '', 2147483647, 1, 0, 0, 3),
-('sys_studio_account_popup', 'system', 'language', '_sys_menu_item_title_system_sa_language', '_sys_menu_item_title_sa_language', 'javascript:void(0)', 'bx_menu_popup(''sys_switch_language_popup'', window);', '', 'ami-language.svg', '', 2147483647, 1, 0, 0, 4),
-('sys_studio_account_popup', 'system', 'logout', '_sys_menu_item_title_system_sa_logout', '_sys_menu_item_title_sa_logout', '{url_root}logout.php', '{js_object}.clickLogout(this);', '', 'ami-logout.svg', '', 2147483647, 1, 0, 0, 5);
+('sys_studio_account_popup', 'system', 'scheme', '_sys_menu_item_title_system_sa_scheme', '_sys_menu_item_title_sa_scheme', 'javascript:void(0)', 'bx_menu_popup_inline(''#bx-std-pcap-menu-popup-scheme'');', '', 'tmi-scheme-auto.svg', '', 2147483647, 1, 0, 0, 4),
+('sys_studio_account_popup', 'system', 'language', '_sys_menu_item_title_system_sa_language', '_sys_menu_item_title_sa_language', 'javascript:void(0)', 'bx_menu_popup(''sys_switch_language_popup'', window);', '', 'ami-language.svg', '', 2147483647, 1, 0, 0, 5),
+('sys_studio_account_popup', 'system', 'logout', '_sys_menu_item_title_system_sa_logout', '_sys_menu_item_title_sa_logout', '{url_root}logout.php', '{js_object}.clickLogout(this);', '', 'ami-logout.svg', '', 2147483647, 1, 0, 0, 6);
 -- --------------------------------------------------------
 
 
@@ -7826,8 +7827,8 @@ INSERT INTO `sys_std_pages_widgets`(`page_id`, `widget_id`, `order`) VALUES(@iId
 --
 -- Agents Page
 --
-INSERT INTO `sys_std_widgets`(`page_id`, `module`, `type`, `url`, `click`, `icon`, `caption`, `cnt_notices`, `cnt_actions`) VALUES
-(@iIdAgents, 'system', 'configuration', '{url_studio}agents.php', '', 'wi-agents.svg', '_adm_wgt_cpt_agents', '', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:11:"get_actions";s:6:"params";a:0:{}s:5:"class";s:18:"TemplStudioModules";}');
+INSERT INTO `sys_std_widgets`(`page_id`, `module`, `type`, `url`, `click`, `icon`, `caption`, `cnt_notices`, `cnt_actions`, `featured`) VALUES
+(@iIdAgents, 'system', 'configuration', '{url_studio}agents.php', '', 'wi-agents.svg', '_adm_wgt_cpt_agents', '', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:11:"get_actions";s:6:"params";a:0:{}s:5:"class";s:18:"TemplStudioModules";}', 1);
 INSERT INTO `sys_std_pages_widgets`(`page_id`, `widget_id`, `order`) VALUES(@iIdHome, LAST_INSERT_ID(), 15);
 
 -- Logger 

+ 9 - 5
modules/boonex/developer/classes/BxDevStudioPage.php

@@ -29,9 +29,6 @@ class BxDevStudioPage extends BxTemplStudioModule
     {
         $oTemplate = BxDolStudioTemplate::getInstance();
 
-        $sActions = $this->getPageCaptionActions();
-        $oTemplate->addInjection('injection_header', 'text', BxTemplStudioFunctions::getInstance()->transBox('bx-std-pmenu-popup-actions', $sActions, true));
-
         $this->aMenuItems = [];
         foreach($this->oModule->aTools as $aTool)
             $this->aMenuItems[] = [
@@ -44,9 +41,16 @@ class BxDevStudioPage extends BxTemplStudioModule
 
         $oMenu = new BxTemplStudioMenu(['template' => 'menu_main_dev.html', 'menu_items' => $this->aMenuItems], $this->oModule->_oTemplate);
 
+        $sActions = $this->bPageMenuTitle ? $this->getPageCaptionActions() : '';
+
         return $this->oModule->_oTemplate->parseHtmlByName('page_menu.html', [
-            'actions_onclick' => BX_DOL_STUDIO_PAGE_JS_OBJECT . ".togglePopup('actions', this)",
-            'actions_icon' => $oTemplate->getIconUrl('mi-cog.svg'),
+            'bx_if:show_title' => [
+                'condition' => (bool)$sActions,
+                'content' => [
+                    'actions_onclick' => $sActions,
+                    'actions_icon' => $oTemplate->getIconUrl('mi-cog.svg'),
+                ]
+            ],
             'menu' => $oMenu->getCode()
         ]);
     }

+ 8 - 6
modules/boonex/developer/template/page_menu.html

@@ -1,8 +1,10 @@
-<div class="bx-std-pcm-title" id="bx-std-pc-title">
-    <div class="bx-std-pcm-title-cnt mx-4 pb-6 border-b border-gray-100/20">
-        <a class="bx-std-pcm-actions flex justify-center items-center w-10 h-10 bg-gray-200 hover:bg-gray-100 border border-black/10 rounded-lg text-gray-600" href="javascript:void(0)" onclick="__actions_onclick__" title="<bx_text_attribute:_adm_txt_show_actions />">
-            <img src="__actions_icon__" />
-        </a>
+<bx_if:show_title>
+    <div class="bx-std-pcm-title" id="bx-std-pc-title">
+        <div class="bx-std-pcm-title-cnt mx-4 pb-6 border-b border-gray-100/20">
+            <a class="bx-std-pcm-actions flex justify-center items-center w-10 h-10 bg-gray-200 hover:bg-gray-100 border border-black/10 rounded-lg text-gray-600" href="javascript:void(0)" onclick="__actions_onclick__" title="<bx_text_attribute:_adm_txt_show_actions />">
+                <img src="__actions_icon__" />
+            </a>
+        </div>
     </div>
-</div>
+</bx_if:show_title>
 <div class="bx-std-pcm-menu" id="bx-std-pc-menu">__menu__</div>

+ 3 - 1
modules/boonex/english/data/langs/system/en.xml

@@ -1896,7 +1896,7 @@
     <string name="_adm_stg_cpt_option_sys_sockets_type_sys_sockets_disabled"><![CDATA[Disabled]]></string>
     <string name="_adm_stg_cpt_option_sys_sockets_type_sys_sockets_soketi"><![CDATA[Soketi]]></string>
     
-    <string name="_adm_stg_cpt_option_sys_std_show_header_left"><![CDATA[Studio: Show header left area]]></string>
+    <string name="_adm_stg_cpt_option_sys_std_show_header_left"><![CDATA[Studio: Show header left area (Breadcrumb)]]></string>
     <string name="_adm_stg_cpt_option_sys_std_show_header_left_search"><![CDATA[Studio: Show search in header left]]></string>
     <string name="_adm_stg_cpt_option_sys_std_show_header_center"><![CDATA[Studio: Show header center area]]></string>
     <string name="_adm_stg_cpt_option_sys_std_show_header_right"><![CDATA[Studio: Show header right area]]></string>
@@ -3743,6 +3743,8 @@ If it is not enabled then please consider implement this optimization, since it
     <string name="_sys_menu_item_title_sa_site"><![CDATA[Go To Site]]></string>
     <string name="_sys_menu_item_title_system_sa_edit"><![CDATA[Manage Apps]]></string>
     <string name="_sys_menu_item_title_sa_edit"><![CDATA[Manage Apps]]></string>
+    <string name="_sys_menu_item_title_system_sa_scheme"><![CDATA[Color Scheme]]></string>
+    <string name="_sys_menu_item_title_sa_scheme"><![CDATA[Color Scheme]]></string>
     <string name="_sys_menu_item_title_system_sa_language"><![CDATA[Language]]></string>
     <string name="_sys_menu_item_title_sa_language"><![CDATA[Language]]></string>
     <string name="_sys_menu_item_title_sa_scheme_auto"><![CDATA[System]]></string>

+ 3 - 1
modules/boonex/russian/data/langs/system/ru.xml

@@ -1871,7 +1871,7 @@
     <string name="_adm_stg_cpt_option_sys_sockets_type_sys_sockets_disabled"><![CDATA[Выключена]]></string>
     <string name="_adm_stg_cpt_option_sys_sockets_type_sys_sockets_soketi"><![CDATA[Soketi]]></string>
 
-    <string name="_adm_stg_cpt_option_sys_std_show_header_left"><![CDATA[Студия: Показать левую область заголовка]]></string>
+    <string name="_adm_stg_cpt_option_sys_std_show_header_left"><![CDATA[Студия: Показать левую область заголовка (Хлебные крошки)]]></string>
     <string name="_adm_stg_cpt_option_sys_std_show_header_left_search"><![CDATA[Студия: Показать поиск в заголовке слева]]></string>
     <string name="_adm_stg_cpt_option_sys_std_show_header_center"><![CDATA[Студия: Показать центральную область заголовка]]></string>
     <string name="_adm_stg_cpt_option_sys_std_show_header_right"><![CDATA[Студия: Показать правую область заголовка]]></string>
@@ -3703,6 +3703,8 @@
     <string name="_sys_menu_item_title_sa_site"><![CDATA[Перейти на сайт]]></string>
     <string name="_sys_menu_item_title_system_sa_edit"><![CDATA[Управление приложениями]]></string>
     <string name="_sys_menu_item_title_sa_edit"><![CDATA[Управление приложениями]]></string>
+    <string name="_sys_menu_item_title_system_sa_scheme"><![CDATA[Цветовая схема]]></string>
+    <string name="_sys_menu_item_title_sa_scheme"><![CDATA[Цветовая схема]]></string>
     <string name="_sys_menu_item_title_system_sa_language"><![CDATA[Язык]]></string>
     <string name="_sys_menu_item_title_sa_language"><![CDATA[Язык]]></string>
     <string name="_sys_menu_item_title_sa_scheme_auto"><![CDATA[Системный]]></string>

+ 21 - 7
studio/classes/BxDolStudioMenuTop.php

@@ -61,12 +61,14 @@ class BxDolStudioMenuTop extends BxDol implements iBxDolSingleton
             'menu_items' => []
         ];
 
-        $this->aItems[BX_DOL_STUDIO_MT_CENTER]['menu_items']['launcher'] = [
-            'name' => 'launcher',
-            'icon' => 'wi-home.svg',
-            'link' => '{url_studio}',
-            'title' => '_adm_tmi_cpt_launcher'
-        ];
+        $this->aItems[BX_DOL_STUDIO_MT_CENTER]['menu_items'] = [];
+        if(!$this->aVisible[BX_DOL_STUDIO_MT_LEFT])
+            $this->aItems[BX_DOL_STUDIO_MT_CENTER]['menu_items']['launcher'] = [
+                'name' => 'launcher',
+                'icon' => 'wi-home.svg',
+                'link' => '{url_studio}',
+                'title' => '_adm_tmi_cpt_launcher'
+            ];
 
         //--- Get Featured
         $aMenuItems = array();
@@ -104,6 +106,15 @@ class BxDolStudioMenuTop extends BxDol implements iBxDolSingleton
             );
         }
 
+        $aMenuItems['divider'] = [
+            'class' => 'bx-menu-item-divider',
+            'name' => 'divider',
+            'icon' => '',
+            'link' => '',
+            'onclick' => '',
+            'title' => ''
+        ];
+        
         //--- Get History
         $aHistory = self::historyGetList();
         if(!empty($aHistory) && is_array($aHistory))
@@ -119,7 +130,10 @@ class BxDolStudioMenuTop extends BxDol implements iBxDolSingleton
             if(count($aMenuItems) > BxTemplStudioMenuTop::$iToolbarLength)
                 $aMenuItems = array_slice($aMenuItems, 0, BxTemplStudioMenuTop::$iToolbarLength);
 
-            $this->aItems[BX_DOL_STUDIO_MT_CENTER]['menu_items'] = bx_array_insert_after($aMenuItems, $this->aItems[BX_DOL_STUDIO_MT_CENTER]['menu_items'], 'launcher');
+            if(($sKey = 'launcher') && isset($this->aItems[BX_DOL_STUDIO_MT_CENTER]['menu_items'][$sKey]))
+                $this->aItems[BX_DOL_STUDIO_MT_CENTER]['menu_items'] = bx_array_insert_after($aMenuItems, $this->aItems[BX_DOL_STUDIO_MT_CENTER]['menu_items'], $sKey);
+            else 
+                $this->aItems[BX_DOL_STUDIO_MT_CENTER]['menu_items'] = $aMenuItems;
         }
     }
 

+ 4 - 2
studio/classes/BxDolStudioPage.php

@@ -34,6 +34,7 @@ class BxDolStudioPage extends BxDol
 
     protected $_sTypesPreList;
 
+    protected $aActions;
     protected $aMarkers;
 
     protected $iError;
@@ -64,10 +65,11 @@ class BxDolStudioPage extends BxDol
 
         $this->_sTypesPreList = 'sys_studio_widget_types';
 
-        $this->aMarkers = array(
+        $this->aActions = [];
+        $this->aMarkers = [
             'url_root' => BX_DOL_URL_ROOT,
             'url_studio' => BX_DOL_URL_STUDIO
-        );
+        ];
 
         $this->iError = 0;
         $this->sError = false;

+ 2 - 1
studio/classes/BxDolStudioTemplate.php

@@ -204,6 +204,7 @@ class BxDolStudioTemplate extends BxDolTemplate implements iBxDolSingleton
         if(($mixedResult = $oPage->checkAction()) !== false)
             return echoJson($mixedResult);
 
+        $sPageMenu = $oPage->getPageMenu();
         $sPageCode = $oPage->getPageCode();
         if($sPageCode === false)
             $this->displayMsg(($sError = $oPage->getError(false)) !== false ? $sError : '_sys_txt_error_occured', true, BX_PAGE_DEFAULT, BX_DB_PADDING_NO_CAPTION);
@@ -212,7 +213,7 @@ class BxDolStudioTemplate extends BxDolTemplate implements iBxDolSingleton
         $this->setPageHeader($oPage->getPageHeader());
         $this->setPageContent('page_caption_code', $oPage->getPageCaption());
         $this->setPageContent('page_attributes', $oPage->getPageAttributes());
-        $this->setPageContent('page_menu_code', $oPage->getPageMenu());
+        $this->setPageContent('page_menu_code', $sPageMenu);
         $this->setPageContent('page_main_code', $sPageCode);
         $this->addCss($oPage->getPageCss());
         $this->addJs($oPage->getPageJs());

+ 0 - 4
studio/classes/BxDolStudioWidget.php

@@ -14,8 +14,6 @@ class BxDolStudioWidget extends BxTemplStudioPage
 {
     protected $sPage;
     protected $sPageDefault = BX_DOL_STUDIO_WGT_TYPE_DEFAULT;
-    
-    protected $aActions;
 
     public function __construct($mixedPageName)
     {
@@ -23,8 +21,6 @@ class BxDolStudioWidget extends BxTemplStudioPage
 
         $this->sPage = $this->sPageDefault;
 
-        $this->aActions = array();
-
         if(!$this->bPage)
             return;
 

+ 19 - 17
studio/template/css/menu_top.css

@@ -108,22 +108,32 @@ div.bx-std-menu-top .bx-menu-top-center li {
 }
 
 div.bx-std-menu-top .bx-menu-breadcrumb li.bx-menu-bc-div img {
-    height: 2.0rem;
+    height: 1.0rem;
 }
 
 div.bx-std-menu-top .bx-menu-breadcrumb li.bx-menu-bc-item.bx-menu-bc-page {
     width: auto;
-    padding-left: 0.5rem;
-    padding-right: 0.5rem;
+    padding-left: 0;
+    padding-right: 0;
+}
+div.bx-std-menu-top .bx-menu-breadcrumb li.bx-menu-bc-actions a {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+div.bx-std-menu-top .bx-menu-breadcrumb li.bx-menu-bc-actions img,
+div.bx-std-menu-top .bx-menu-breadcrumb li.bx-menu-bc-actions svg {
+    width: 1.0rem;
+    height: 1.0rem;
 }
 
-/*
- * Vertical divider between static and dynamic menu items.
- *
-div.bx-std-menu-top .bx-menu-top-center li.bx-menu-item-static + li.bx-menu-item-dynamic {
-    border-left: 1px solid rgba(240, 240, 240, 0.2);
+div.bx-std-menu-top .bx-menu-top-center li.bx-menu-item-divider {
+    width: auto;
+    height: 2.5rem;
+}
+div.bx-std-menu-top .bx-menu-top-center li.bx-menu-item-divider a {
+    display: none;
 }
-*/
 
 .bx-menu-breadcrumb li.bx-menu-bc-item > a,
 div.bx-std-menu-top .bx-menu-top-center li a {
@@ -152,17 +162,9 @@ div.bx-std-menu-top .bx-menu-breadcrumb li.bx-menu-bc-item .bx-mi-icon,
 div.bx-std-menu-top .bx-menu-top-center li .bx-mi-icon {
     overflow: hidden;
 }
-div.bx-std-menu-top .bx-menu-breadcrumb li.bx-menu-bc-item .bx-mi-icon {
-    border-radius: 1.5rem;
-}
 div.bx-std-menu-top .bx-menu-breadcrumb li.bx-menu-bc-item .bx-mi-title {    
     text-align: center;
     letter-spacing: -0.02em;
-
-    font-size: 1.5rem;
-    font-weight: 500;   
-
-    color: rgb(243, 244, 246);
 }
 div.bx-std-menu-top .bx-menu-breadcrumb li.bx-menu-bc-item img,
 div.bx-std-menu-top .bx-menu-breadcrumb li.bx-menu-bc-item:not(.bx-menu-tab-search) svg,

+ 1 - 3
studio/template/images/icons/bc-arrow.svg

@@ -1,3 +1 @@
-<svg width="2" height="32" viewBox="0 0 2 32" fill="none" xmlns="http://www.w3.org/2000/svg">
-<rect width="2" height="32" rx="1" fill="#1F2937"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right-icon lucide-chevron-right"><path d="m9 18 6-6-6-6"/></svg>

+ 55 - 8
studio/template/images/icons/bc-home.svg

@@ -1,9 +1,56 @@
-<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
-<rect width="40" height="40" rx="20" fill="#1F2937"/>
-<path d="M7.00024 20C7.00024 15.774 9.01676 12.0189 12.1401 9.64452C12.3193 9.50826 12.5717 9.63893 12.5717 9.86409V20.7699C12.5717 20.9059 12.4731 21.0214 12.34 21.0496C10.5158 21.436 9.02128 22.715 8.33491 24.408C8.2345 24.6557 7.86449 24.6783 7.77348 24.427C7.27308 23.0452 7.00024 21.5545 7.00024 20Z" fill="#D1D5DB"/>
-<path d="M20.0002 12.5714C18.0464 12.5714 16.2688 13.3257 14.9427 14.559C14.7547 14.7337 14.4288 14.6064 14.4288 14.3497V8.4271C14.4288 8.31956 14.4906 8.22138 14.5884 8.17656C16.2361 7.42113 18.069 7 20.0002 7C21.5547 7 23.0455 7.27284 24.4272 7.77324C24.6785 7.86424 24.6559 8.23425 24.4082 8.33466C22.7062 9.02469 21.4226 10.5316 21.0437 12.369C21.0131 12.5174 20.8751 12.6208 20.7242 12.6063C20.486 12.5832 20.2445 12.5714 20.0002 12.5714Z" fill="#D1D5DB"/>
-<path d="M27.4288 30.1359C27.4288 30.3611 27.6812 30.4917 27.8604 30.3555C30.9837 27.9811 33.0002 24.226 33.0002 20C33.0002 18.4455 32.7274 16.9548 32.227 15.573C32.136 15.3217 31.766 15.3443 31.6656 15.592C30.9792 17.285 29.4846 18.564 27.6605 18.9504C27.5274 18.9786 27.4288 19.0941 27.4288 19.2301V30.1359Z" fill="#D1D5DB"/>
-<path d="M25.5717 31.5729C25.5717 31.6804 25.5099 31.7786 25.4121 31.8234C23.7644 32.5789 21.9315 33 20.0002 33C18.4458 33 16.955 32.7272 15.5733 32.2268C15.322 32.1358 15.3446 31.7658 15.5923 31.6653C17.2943 30.9753 18.5779 29.4684 18.9568 27.631C18.9874 27.4826 19.1254 27.3792 19.2762 27.3937C19.5145 27.4168 19.756 27.4286 20.0002 27.4286C21.954 27.4286 23.7317 26.6743 25.0578 25.441C25.2458 25.2663 25.5717 25.3936 25.5717 25.6503V31.5729Z" fill="#D1D5DB"/>
-<path d="M30.2145 13.5C30.2145 15.5513 28.5516 17.2143 26.5002 17.2143C24.4489 17.2143 22.786 15.5513 22.786 13.5C22.786 11.4487 24.4489 9.78571 26.5002 9.78571C28.5516 9.78571 30.2145 11.4487 30.2145 13.5Z" fill="#D1D5DB"/>
-<path d="M13.5002 30.2143C15.5516 30.2143 17.2145 28.5513 17.2145 26.5C17.2145 24.4487 15.5516 22.7857 13.5002 22.7857C11.4489 22.7857 9.78596 24.4487 9.78596 26.5C9.78596 28.5513 11.4489 30.2143 13.5002 30.2143Z" fill="#D1D5DB"/>
+<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect width="80" height="80" fill="url(#paint0_linear_425_2730)"/>
+<g filter="url(#filter0_dd_425_2730)">
+<path d="M34 54C34 58.4183 30.4184 62 26 62C21.5816 62 18 58.4183 18 54C18 49.5817 21.5816 46 26 46C30.4184 46 34 49.5817 34 54Z" fill="url(#paint1_linear_425_2730)"/>
+<path d="M62 26C62 30.4183 58.4184 34 54 34C49.5816 34 46 30.4183 46 26C46 21.5817 49.5816 18 54 18C58.4184 18 62 21.5817 62 26Z" fill="url(#paint2_linear_425_2730)"/>
+<path d="M29.1282 29.0527C31.9172 26.2828 35.7588 24.5714 40.0001 24.5714C40.4432 24.5714 40.882 24.5901 41.3157 24.6267C41.7339 24.662 42.1154 24.3759 42.2069 23.9663C43.0832 20.0437 45.9509 16.8725 49.6935 15.5692C50.043 15.4475 50.0788 14.9412 49.7336 14.8077C46.714 13.6402 43.4318 13 40.0001 13C36.0323 13 32.2643 13.8559 28.8709 15.3931C28.5996 15.516 28.4286 15.7881 28.4286 16.0859V28.7748C28.4286 29.1301 28.8761 29.3031 29.1282 29.0527Z" fill="url(#paint3_linear_425_2730)"/>
+<path d="M56.0291 61.7292C55.7784 61.9143 55.4286 61.733 55.4286 61.421V40C55.4286 39.5568 55.41 39.118 55.3734 38.6843C55.3379 38.2661 55.6241 37.8847 56.0337 37.7932C59.9565 36.917 63.1274 34.0492 64.4308 30.3065C64.5523 29.957 65.0587 29.9213 65.1922 30.2664C66.3597 33.2861 67 36.5683 67 40C67 48.91 62.6842 56.8117 56.0291 61.7292Z" fill="url(#paint4_linear_425_2730)"/>
+<path d="M15.5692 49.6934C15.4476 50.0428 14.9412 50.0787 14.8077 49.7335C13.6402 46.7139 13 43.4317 13 40C13 31.0902 17.3158 23.1883 23.9709 18.2708C24.2216 18.0855 24.5715 18.2671 24.5715 18.5789V40C24.5715 40.4432 24.5901 40.882 24.6268 41.3157C24.6621 41.7339 24.3759 42.1154 23.9663 42.2069C20.0437 43.0831 16.8725 45.9508 15.5692 49.6934Z" fill="url(#paint5_linear_425_2730)"/>
+<path d="M51.1289 64.607C51.4004 64.484 51.5713 64.2121 51.5713 63.9143V51.2251C51.5713 50.8698 51.1239 50.697 50.8716 50.9474C48.0829 53.7172 44.2412 55.4286 39.9998 55.4286C39.5567 55.4286 39.1179 55.4101 38.6842 55.3734C38.266 55.3379 37.8845 55.6241 37.7931 56.0338C36.9168 59.9565 34.0491 63.1274 30.3064 64.4308C29.9569 64.5527 29.9211 65.0587 30.2663 65.1922C33.286 66.3597 36.5681 67 39.9998 67C43.9677 67 47.7357 66.1441 51.1289 64.607Z" fill="url(#paint6_linear_425_2730)"/>
+</g>
+<defs>
+<filter id="filter0_dd_425_2730" x="8" y="10" width="64" height="64" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_425_2730"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="2"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
+<feBlend mode="normal" in2="effect1_dropShadow_425_2730" result="effect2_dropShadow_425_2730"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow_425_2730" result="shape"/>
+</filter>
+<linearGradient id="paint0_linear_425_2730" x1="40" y1="0" x2="40" y2="80" gradientUnits="userSpaceOnUse">
+<stop stop-color="#4B5563"/>
+<stop offset="1" stop-color="#1F2937"/>
+</linearGradient>
+<linearGradient id="paint1_linear_425_2730" x1="26" y1="46" x2="26" y2="62" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FDE68A"/>
+<stop offset="1" stop-color="#D97706"/>
+</linearGradient>
+<linearGradient id="paint2_linear_425_2730" x1="54" y1="18" x2="54" y2="34" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FDE68A"/>
+<stop offset="1" stop-color="#D97706"/>
+</linearGradient>
+<linearGradient id="paint3_linear_425_2730" x1="40" y1="13" x2="40" y2="67" gradientUnits="userSpaceOnUse">
+<stop stop-color="#F3F4F6"/>
+<stop offset="1" stop-color="#9CA3AF"/>
+</linearGradient>
+<linearGradient id="paint4_linear_425_2730" x1="40" y1="13" x2="40" y2="67" gradientUnits="userSpaceOnUse">
+<stop stop-color="#F3F4F6"/>
+<stop offset="1" stop-color="#9CA3AF"/>
+</linearGradient>
+<linearGradient id="paint5_linear_425_2730" x1="40" y1="13" x2="40" y2="67" gradientUnits="userSpaceOnUse">
+<stop stop-color="#F3F4F6"/>
+<stop offset="1" stop-color="#9CA3AF"/>
+</linearGradient>
+<linearGradient id="paint6_linear_425_2730" x1="40" y1="13" x2="40" y2="67" gradientUnits="userSpaceOnUse">
+<stop stop-color="#F3F4F6"/>
+<stop offset="1" stop-color="#9CA3AF"/>
+</linearGradient>
+</defs>
 </svg>

+ 1 - 3
studio/template/images/icons/tmi-assistant.svg

@@ -1,3 +1 @@
-<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M23.9748 12.5259L17.7403 10.2597L15.4741 4.02521C15.3624 3.7243 15.1613 3.46477 14.8978 3.2815C14.6343 3.09823 14.321 3 14 3C13.679 3 13.3657 3.09823 13.1022 3.2815C12.8387 3.46477 12.6376 3.7243 12.5259 4.02521L10.2597 10.2597L4.02521 12.5259C3.7243 12.6376 3.46477 12.8387 3.2815 13.1022C3.09823 13.3657 3 13.679 3 14C3 14.321 3.09823 14.6343 3.2815 14.8978C3.46477 15.1613 3.7243 15.3624 4.02521 15.4741L10.2597 17.7413L12.5259 23.9748C12.6376 24.2757 12.8387 24.5352 13.1022 24.7185C13.3657 24.9018 13.679 25 14 25C14.321 25 14.6343 24.9018 14.8978 24.7185C15.1613 24.5352 15.3624 24.2757 15.4741 23.9748L17.7413 17.7403L23.9748 15.4741C24.2757 15.3624 24.5352 15.1613 24.7185 14.8978C24.9018 14.6343 25 14.321 25 14C25 13.679 24.9018 13.3657 24.7185 13.1022C24.5352 12.8387 24.2757 12.6376 23.9748 12.5259ZM16.8578 16.3881C16.75 16.4273 16.652 16.4897 16.5709 16.5709C16.4897 16.652 16.4273 16.75 16.3881 16.8578L14 23.4245L11.6119 16.8578C11.5727 16.75 11.5103 16.652 11.4291 16.5709C11.348 16.4897 11.25 16.4273 11.1422 16.3881L4.57555 14L11.1422 11.6119C11.25 11.5727 11.348 11.5103 11.4291 11.4291C11.5103 11.348 11.5727 11.25 11.6119 11.1422L14 4.57555L16.3881 11.1422C16.4273 11.25 16.4897 11.348 16.5709 11.4291C16.652 11.5103 16.75 11.5727 16.8578 11.6119L23.4245 14L16.8578 16.3881Z" fill="currentColor"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bot-message-square-icon lucide-bot-message-square"><path d="M12 6V2H8"/><path d="M15 11v2"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="M20 16a2 2 0 0 1-2 2H8.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 4 20.286V8a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2z"/><path d="M9 11v2"/></svg>

+ 1 - 0
studio/template/images/icons/ui-chevron-down.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down"><path d="m6 9 6 6 6-6"/></svg>

+ 1 - 1
studio/template/menu_top.html

@@ -7,6 +7,6 @@ var oBxDolStudioMenuTop = new BxDolStudioMenuTop({
 </script>
 <div class="bx-std-menu-top-wrp bg-white/90 dark:bg-gray-900/90">
     <bx_repeat:menus>
-        <div id="bx-std-menu-top bx-std-menu-top-__name__" class="bx-std-menu-top bx-std-menu-top-__name__ bx-def-font-contrasted bx-def-box-sizing">__content__</div>
+        <div id="bx-std-menu-top bx-std-menu-top-__name__" class="bx-std-menu-top bx-std-menu-top-__name__ bx-def-box-sizing">__content__</div>
     </bx_repeat:menus>
 </div>

+ 1 - 1
studio/template/menu_top_center.html

@@ -2,7 +2,7 @@
     <ul class="bx-menu-top-center bx-menu-object-__object__ bx-clearfix">
         <bx_repeat:menu_items>
             <li id="bx-menu-item-__name__" class="__class__ bx-def-box-sizing __class_add__">
-                <a href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__>
+                <a href="__link__" <bx_if:onclick>onclick="__onclick__"</bx_if:onclick> __attrs__>
                     <div class="bx-mi-icon rounded-lg hover:ring-4 hover:ring-gray-200 dark:hover:ring-gray-800 hover:ring-offset-2 hover:ring-offset-white dark:hover:ring-offset-black active:opacity-80 duration-300">
                         <div class="block ring-white/5 ring-1 ring-inset rounded-lg">
                             <bx_include_auto:menu_icon.html />

+ 30 - 9
studio/template/page_breadcrumb.html

@@ -2,24 +2,45 @@
     <ul class="bx-menu-hor bx-menu-breadcrumb">
         <bx_repeat:menu_items>
             <li class="bx-menu-bc-div px-2">
-                <img src="<bx_icon_url:bc-arrow.svg />" />
+                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right-icon lucide-chevron-right"><path d="m9 18 6-6-6-6"/></svg>
             </li>
             <li class="bx-menu-bc-item bx-menu-bc-__name__  __class_add__">
                 <a href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__>
-                    <div class="bx-mi-icon flex-0 hover:ring-4 hover:ring-gray-800 hover:ring-offset-4 hover:ring-offset-black active:opacity-80 duration-300">
-                        <bx_if:icon><i class="sys-icon __icon__ bx-def-round-corners bx-def-font-contrasted"></i></bx_if:icon>
-                        <bx_if:image><img src="__icon_url__" /></bx_if:image>
-                        <bx_if:image_inline>__image__</bx_if:image_inline>
-                    </div>
-                    <bx_if:title><div class="bx-mi-title flex-1">__title__</div></bx_if:title>
+                    <bx_if:icon>
+                        <div class="bx-mi-icon flex-0 rounded-lg hover:ring-4 hover:ring-gray-200 dark:hover:ring-gray-800 hover:ring-offset-2 hover:ring-offset-white dark:hover:ring-offset-black active:opacity-80 duration-300">
+                            <div class="block ring-white/5 ring-1 ring-inset rounded-lg">
+                                <i class="sys-icon __icon__ bx-def-round-corners bx-def-font-contrasted"></i>
+                            </div>
+                        </div>
+                    </bx_if:icon>
+                    <bx_if:image>
+                        <div class="bx-mi-icon flex-0 rounded-lg hover:ring-4 hover:ring-gray-200 dark:hover:ring-gray-800 hover:ring-offset-2 hover:ring-offset-white dark:hover:ring-offset-black active:opacity-80 duration-300">
+                            <div class="block ring-white/5 ring-1 ring-inset rounded-lg">
+                                <img src="__icon_url__" />
+                            </div>
+                        </div>
+                    </bx_if:image>
+                    <bx_if:image_inline>
+                        <div class="bx-mi-icon flex-0 rounded-lg hover:ring-4 hover:ring-gray-200 dark:hover:ring-gray-800 hover:ring-offset-2 hover:ring-offset-white dark:hover:ring-offset-black active:opacity-80 duration-300">
+                            <div class="block ring-white/5 ring-1 ring-inset rounded-lg">__image__</div>
+                        </div>
+                    </bx_if:image_inline>
+                    <bx_if:title><div class="bx-mi-title flex-1 text-lg font-semibold">__title__</div></bx_if:title>
                 </a>
             </li>
         </bx_repeat:menu_items>
+        <bx_if:show_page_action>
+            <li class="bx-menu-bc-actions pl-2">
+                <a class="w-6 h-6 bg-gray-200 dark:bg-gray-800 hover:bg-gray-100 dark:hover:bg-gray-700 border border-black/10 dark:border-white/10 rounded-full text-gray-600 dark:text-gray-400" href="javascript:void(0)" onclick="__onclick__" title="<bx_text_attribute:_adm_txt_show_actions />">
+                    <bx_icon_inline:ui-chevron-down.svg />
+                </a>
+            </li>
+        </bx_if:show_page_action>
         <bx_if:show_search>
             <li class="bx-menu-bc-div px-2">
-                <img src="<bx_icon_url:bc-arrow.svg />" />
+                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-separator-vertical-icon lucide-separator-vertical"><path d="M12 3v18"/></svg>
             </li>
-            <li class="bx-menu-bc-item bx-menu-tab-search bx-mt-active flex-auto">
+            <li class="bx-menu-bc-item bx-menu-tab-search<bx_if:show_active> bx-mt-active</bx_if:show_active> flex-auto">
                 <div class="bg-gray-200 hover:bg-gray-100 text-gray-600 border border-black/10 hover:text-gray-700 hover:ring-4 hover:ring-gray-200 hover:ring-offset-2 hover:ring-offset-white active:opacity-80 duration-300">
                     <a class="text-gray-600 hover:text-gray-700" href="javascript:void(0)" onclick="javascript:$(this).parents('li:first').toggleClass('bx-mt-active')">
                         <svg class="flex-none ltr:ml-1.5 rtl:mr-1.5" width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">

+ 13 - 11
studio/template/page_menu.html

@@ -1,13 +1,15 @@
-<div class="bx-std-pcm-title text-2xl font-bold" id="bx-std-pc-title">
-    <div class="bx-std-pcm-title-cnt flex justify-between px-2">
-        <div>__title__</div>
-        <bx_if:show_actions>
-            <div>
-                <a class="bx-std-pcm-actions flex justify-center items-center w-10 h-10 bg-gray-200 dark:bg-gray-800 hover:bg-gray-100 dark:hover:bg-gray-700 border border-black/10 dark:border-white/10 rounded-lg text-gray-600 dark:text-gray-400" href="javascript:void(0)" onclick="__onclick__" title="<bx_text_attribute:_adm_txt_show_actions />">
-                    <bx_icon_inline:mi-cog.svg />
-                </a>
-            </div>
-        </bx_if:show_actions>
+<bx_if:show_title>
+    <div class="bx-std-pcm-title text-2xl font-bold" id="bx-std-pc-title">
+        <div class="bx-std-pcm-title-cnt flex justify-between px-2">
+            <div>__title__</div>
+            <bx_if:show_actions>
+                <div>
+                    <a class="bx-std-pcm-actions flex justify-center items-center w-10 h-10 bg-gray-200 dark:bg-gray-800 hover:bg-gray-100 dark:hover:bg-gray-700 border border-black/10 dark:border-white/10 rounded-lg text-gray-600 dark:text-gray-400" href="javascript:void(0)" onclick="__onclick__" title="<bx_text_attribute:_adm_txt_show_actions />">
+                        <bx_icon_inline:mi-cog.svg />
+                    </a>
+                </div>
+            </bx_if:show_actions>
+        </div>
     </div>
-</div>
+</bx_if:show_title>
 <div class="bx-std-pcm-menu" id="bx-std-pc-menu">__menu__</div>

+ 1 - 1
studio/template/scripts/BxBaseStudioMenuTop.php

@@ -57,7 +57,7 @@ class BxBaseStudioMenuTop extends BxDolStudioMenuTop
                             'condition' => $this->sPageName == 'home' && getParam('sys_std_show_header_right_search') == 'on',
                             'content' => [
                                 'bx_if:show_active' => [
-                                    'condition' => true,
+                                    'condition' => false,
                                     'content' => []
                                 ]
                             ]

+ 46 - 8
studio/template/scripts/BxBaseStudioPage.php

@@ -134,13 +134,12 @@ class BxBaseStudioPage extends BxDolStudioPage
                 'title' => ''
             ];
 
-        if(!$bPageHome)
-            $aMenuItems['page'] = [
-                'name' => 'page',
-                'icon' => '', //$this->aPage['icon'],
-                'link' => $this->getPageUrl(),
-                'title' => _t($this->aPage['caption'])
-            ];
+        $aMenuItems['page'] = [
+            'name' => 'page',
+            'icon' => '', //$this->aPage['icon'],
+            'link' => $this->getPageUrl(),
+            'title' => _t($this->aPage['caption'])
+        ];
 
         $oMenu = new BxTemplStudioMenu([
             'template' => 'page_breadcrumb.html',
@@ -148,10 +147,23 @@ class BxBaseStudioPage extends BxDolStudioPage
         ]);
         $sMenu = $oMenu->getCode();
 
+        $sActions = getParam('sys_std_show_header_left') == 'on' ? $this->getPageCaptionActions() : '';
+
         return BxDolStudioTemplate::getInstance()->parseHtmlByContent($sMenu, [
+            'bx_if:show_page_action' => [
+                'condition' => (bool)$sActions,
+                'content' => [
+                    'onclick' => $sActions,
+                ]
+            ],
             'bx_if:show_search' => [
                 'condition' => $bPageHome && getParam('sys_std_show_header_left_search') == 'on',
-                'content' => [true]
+                'content' => [
+                    'bx_if:show_active' => [
+                        'condition' => false,
+                        'content' => []
+                    ]
+                ]
             ]
         ]); 
     }
@@ -177,6 +189,10 @@ class BxBaseStudioPage extends BxDolStudioPage
         if($aMenu === false)
             return '';
 
+        foreach($aMenu as $aItem)
+            if(($aItem['selected'] ?? false))
+                $this->aPage['subcaption'] = $aItem['title'] ?? '';
+
         return $this->getPageMenuObject($aMenu, $aMarkers)->getCode();
     }
 
@@ -198,6 +214,23 @@ class BxBaseStudioPage extends BxDolStudioPage
         return $oMenu;
     }
 
+    protected function getPageCaptionActions()
+    {
+        $sActions = $this->getPageActions();
+        if(empty($sActions))
+            return '';
+
+        $oTemplate = BxDolStudioTemplate::getInstance(); 
+
+        $sActions = $oTemplate->parseHtmlByName('page_caption_actions.html', [
+            'content' => $sActions
+        ]);
+
+        $oTemplate->addInjection('injection_header', 'text', BxTemplStudioFunctions::getInstance()->transBox('bx-std-pmenu-popup-actions', $sActions, true));
+
+        return BX_DOL_STUDIO_PAGE_JS_OBJECT . ".togglePopup('actions', this)";
+    }
+
     protected function getPageCaptionHelp()
     {
     	$sContent = BxDolRss::getObjectInstance($this->sPageRssHelpObject)->getHolder($this->sPageRssHelpId, $this->iPageRssHelpLength, 0, false);
@@ -229,6 +262,11 @@ class BxBaseStudioPage extends BxDolStudioPage
         ]);
     }
 
+    protected function getPageActions($iWidgetId = 0)
+    {
+        return '';
+    }
+
     protected function getJsResult($sMessage, $bTranslate = true, $bRedirect = false, $sRedirect = '', $sOnResult = '')
     {
         return bx_get_js_result(array(

+ 24 - 31
studio/template/scripts/BxBaseStudioWidget.php

@@ -19,7 +19,7 @@ class BxBaseStudioWidget extends BxDolStudioWidget
     {
         parent::__construct($mixedPageName);
 
-        $this->bPageMenuTitle = true;
+        $this->bPageMenuTitle = getParam('sys_std_show_header_left') != 'on';
         $this->bPageMenuIconsInline = true;
 
         $this->aPageCodeNoWrap = [];
@@ -100,14 +100,6 @@ class BxBaseStudioWidget extends BxDolStudioWidget
                 'title' => '_adm_tmi_cpt_site'
             ];
 
-        $aItemsRight['scheme'] = [
-            'name' => 'scheme',
-            'icon' => 'tmi-scheme-auto.svg',
-            'link' => 'javascript:void(0);',
-            'onclick' => 'bx_menu_popup_inline(\'#bx-std-pcap-menu-popup-scheme\', this);',
-            'title' => '_adm_tmi_cpt_scheme'
-        ];
-
         $aItemsRight['account'] = [
             'name' => 'account',
             'icon' => 'tmi-account.svg',
@@ -133,18 +125,19 @@ class BxBaseStudioWidget extends BxDolStudioWidget
         if(!$this->bPageMenuTitle && $aMenu === false)
             return '';
 
-        $oTemplate = BxDolStudioTemplate::getInstance();
-
-        $bActions = false;
-        if($this->bPageMenuTitle && ($sActions = $this->getPageCaptionActions()) && ($bActions = strlen($sActions)) > 0)
-            $oTemplate->addInjection('injection_header', 'text', BxTemplStudioFunctions::getInstance()->transBox('bx-std-pmenu-popup-actions', $sActions, true));
+        $sActions = $this->bPageMenuTitle ? $this->getPageCaptionActions() : '';           
 
-        return $oTemplate->parseHtmlByName('page_menu.html', [
-            'title' => _t($this->aPage['caption']),
-            'bx_if:show_actions' => [
-                'condition' => $bActions,
+        return BxDolStudioTemplate::getInstance()->parseHtmlByName('page_menu.html', [
+            'bx_if:show_title' => [
+                'condition' => $this->bPageMenuTitle,
                 'content' => [
-                    'onclick' => BX_DOL_STUDIO_PAGE_JS_OBJECT . ".togglePopup('actions', this)",
+                    'title' => _t($this->aPage['caption']),
+                    'bx_if:show_actions' => [
+                        'condition' => (bool)$sActions,
+                        'content' => [
+                            'onclick' => $sActions,
+                        ]
+                    ],
                 ]
             ],
             'menu' => parent::getPageMenu($aMenu, $aMarkers)
@@ -217,7 +210,8 @@ class BxBaseStudioWidget extends BxDolStudioWidget
             BX_DB_DEF => 'cnt-ttl-bg',
             BX_DB_NO_CAPTION => 'cnt-bg'
         ];
-        $iType = isset($aBlock['type'], $aTypeI2S[$aBlock['type']]) ? $aBlock['type'] : BX_DB_NO_CAPTION;
+
+        $iType = isset($aBlock['type'], $aTypeI2S[$aBlock['type']]) ? $aBlock['type'] : BX_DB_DEF;
 
         $sContent = '';
         if(!empty($aBlock['content']))
@@ -236,6 +230,16 @@ class BxBaseStudioWidget extends BxDolStudioWidget
 
     public function getBlockCaption($aBlock)
     {
+        if(($sK = 'caption') && empty($aBlock[$sK])) {
+            if(($sPageCaption = $this->aPage['subcaption'] ?? false))
+                $aBlock[$sK] = $sPageCaption;
+            else if(($sPageCaption = $this->aPage['caption'] ?? false)) {
+                $_sPageCaption = _t($sPageCaption);
+                if(strcmp($sPageCaption, $_sPageCaption) !== 0)
+                    $aBlock[$sK] = $_sPageCaption;
+            }
+        }
+
         if(empty($aBlock) || !is_array($aBlock) || (empty($aBlock['caption']) && empty($aBlock['actions'])))
             return '';
         
@@ -333,17 +337,6 @@ class BxBaseStudioWidget extends BxDolStudioWidget
     /**
      * Internal methods.
      */
-    protected function getPageCaptionActions()
-    {
-        $sActions = $this->getPageActions();
-        if(empty($sActions))
-            return "";
-
-        return BxDolStudioTemplate::getInstance()->parseHtmlByName('page_caption_actions.html', array(
-            'content' => $sActions
-        ));
-    }
-
     protected function getPageActions($iWidgetId = 0)
     {
         if(empty($this->aActions))

+ 0 - 11
studio/template/scripts/BxBaseStudioWidgets.php

@@ -95,13 +95,6 @@ class BxBaseStudioWidgets extends BxDolStudioWidgets
                     'link' => '{url_root}',
                     'title' => '_adm_tmi_cpt_site'
                 ),
-                'scheme' => array(
-                    'name' => 'scheme',
-                    'icon' => 'tmi-scheme-auto.svg',
-                    'link' => 'javascript:void(0);',
-                    'onclick' => 'bx_menu_popup_inline(\'#bx-std-pcap-menu-popup-scheme\', this);',
-                    'title' => '_adm_tmi_cpt_scheme'
-                ),
                 'account' => array(
                     'name' => 'account',
                     'icon' => 'tmi-account.svg',
@@ -120,10 +113,6 @@ class BxBaseStudioWidgets extends BxDolStudioWidgets
 
         if(!$this->_bShowHeaderRightSite)
             unset($aItemsRight['menu_items']['site']);
-        
-        
-
-        
 
         $oTopMenu = BxTemplStudioMenuTop::getInstance();
         $oTopMenu->setPageName($this->aPage['name']);

+ 7 - 0
template/css/tailwind.css

@@ -1366,11 +1366,18 @@
     .bx-std .bx-menu-top-center .bx-menu-tab-active .bx-mi-icon {
         @apply ring-4 ring-blue-500/50 ring-offset-2 ring-offset-white dark:ring-offset-black;
     }
+    .bx-std .bx-menu-top-center .bx-menu-item-divider {
+        @apply border-l border-black/10 dark:border-white/10;
+    }
     .bx-std .bx-menu-top-center .bx-menu-item-static,
     .bx-std .bx-menu-top-center .bx-menu-item-dynamic {
         @apply hidden md:flex;
     }
 
+    .bx-std .bx-std-menu-top-left li a {
+        @apply text-gray-800 dark:text-gray-200;
+    }
+
     .bx-std .bx-stg-icon-gray-bg {
         @apply h-8 w-8;
         @apply bg-gray-200 bg-no-repeat bg-center;