Quellcode durchsuchen

Ticket #5528 - Studio: Unify selectors. Pages.

AntonLV vor 4 Monaten
Ursprung
Commit
f7ab04a276

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

@@ -1168,6 +1168,7 @@
     <string name="_adm_lmi_cpt_logo"><![CDATA[Logo]]></string>
     <string name="_adm_lmi_cpt_menus"><![CDATA[Menus]]></string>
     <string name="_adm_lmi_cpt_origins"><![CDATA[Origins]]></string>
+    <string name="_adm_lmi_cpt_pages"><![CDATA[Pages]]></string>
     <string name="_adm_lmi_cpt_pre_lists"><![CDATA[Data Lists]]></string>
     <string name="_adm_lmi_cpt_pre_values"><![CDATA[Data Items]]></string>
     <string name="_adm_lmi_cpt_providers"><![CDATA[Providers]]></string>

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

@@ -1151,6 +1151,7 @@
 	<string name="_adm_lmi_cpt_levels"><![CDATA[Уровни]]></string>
 	<string name="_adm_lmi_cpt_logo"><![CDATA[Лого]]></string>
 	<string name="_adm_lmi_cpt_menus"><![CDATA[Меню]]></string>
+        <string name="_adm_lmi_cpt_pages"><![CDATA[Страницы]]></string>
 	<string name="_adm_lmi_cpt_pre_lists"><![CDATA[Списки данных]]></string>
 	<string name="_adm_lmi_cpt_pre_values"><![CDATA[Элементы данных]]></string>
         <string name="_adm_lmi_cpt_providers"><![CDATA[Поставщики]]></string>

+ 4 - 0
studio/js/builder_page.js

@@ -44,6 +44,10 @@ function BxDolStudioBuilderPage(oOptions) {
 /**
  * Main page methods.
  */
+BxDolStudioBuilderPage.prototype.onChangeType = function(oSelect) {
+    document.location.href = this.parsePageUrl({type: $(oSelect).val()});
+};
+
 BxDolStudioBuilderPage.prototype.onChangePage = function(oSelect) {
     document.location.href = this.parsePageUrl({page: $(oSelect).val()});
 };

+ 18 - 15
studio/template/bp_block_panel_top.html

@@ -1,16 +1,19 @@
-<div class="bx-std-pt-cnt bx-clearfix">
-	<div class="bx-std-pt-pages">__selector__</div>
-	<div class="bx-std-pt-buttons">
-	    <button class="bx-btn bx-btn-primary bx-def-margin-thd-left" onclick="javascript:__js_object__.performAction('__action_page_create__');"><bx_text:_adm_bp_btn_create_new /></button>
-	    <bx_if:show_actions>
-                <bx_if:can_view>
-                    <button class="bx-btn bx-def-margin-thd-left" onclick="javascript:window.open('__url_view__','_blank');"><bx_text:_adm_bp_btn_view_page /></button>
-                </bx_if:can_view>
-	        <button class="bx-btn bx-def-margin-thd-left" onclick="javascript:__js_object__.performAction('__action_page_edit__')"><bx_text:_adm_bp_btn_settings /></button>
-	        <button class="bx-btn bx-def-margin-thd-left" onclick="javascript:__js_object__.performAction('__action_block_create__')"><bx_text:_adm_bp_btn_add_block /></button>
-	        <bx_if:can_delete>
-	            <button class="bx-btn bx-def-margin-thd-left" onclick="javascript:__js_object__.deletePage();"><bx_text:_adm_bp_btn_delete /></button>
-	        </bx_if:can_delete>
-	    </bx_if:show_actions>
-	</div>
+<div class="bx-std-pt-cnt flex justify-between items-center">
+    <div class="bx-std-pt-selects flex flex-wrap">
+        <div class="bx-std-pt-types m-1">__selector_types__</div>
+        <div class="bx-std-pt-pages m-1">__selector_pages__</div>
+    </div>
+    <div class="bx-std-pt-buttons flex flex-wrap -m-1">
+        <button class="bx-btn bx-btn-primary m-1" onclick="javascript:__js_object__.performAction('__action_page_create__');"><bx_text:_adm_bp_btn_create_new /></button>
+        <bx_if:show_actions>
+            <bx_if:can_view>
+                <button class="bx-btn m-1" onclick="javascript:window.open('__url_view__','_blank');"><bx_text:_adm_bp_btn_view_page /></button>
+            </bx_if:can_view>
+            <button class="bx-btn m-1" onclick="javascript:__js_object__.performAction('__action_page_edit__')"><bx_text:_adm_bp_btn_settings /></button>
+            <button class="bx-btn m-1" onclick="javascript:__js_object__.performAction('__action_block_create__')"><bx_text:_adm_bp_btn_add_block /></button>
+            <bx_if:can_delete>
+                <button class="bx-btn m-1" onclick="javascript:__js_object__.deletePage();"><bx_text:_adm_bp_btn_delete /></button>
+            </bx_if:can_delete>
+        </bx_if:show_actions>
+    </div>
 </div>

+ 1 - 1
studio/template/builder_page.html

@@ -6,6 +6,6 @@ __content__
 	    sType: '__type__',
 	    sPage: '__page__',
 	    oHtmlIds: __html_ids__,
-	    oLanguages: __languahes__
+	    oLanguages: __languages__
 	});
 </script>

+ 2 - 8
studio/template/css/builder_page.css

@@ -1,13 +1,7 @@
 /*--- Panel Top style ---*/
-div.bx-std-pt-pages {
-    position: relative;
-    float: left;
-}
+div.bx-std-pt-types div.bx-form-element-wrapper,
 div.bx-std-pt-pages div.bx-form-element-wrapper {
-    width: 165px;
-}
-div.bx-std-pt-buttons {
-    float: right;
+    width: 10rem;
 }
 
 /*--- Main section style ---*/

+ 65 - 50
studio/template/scripts/BxBaseStudioBuilderPage.php

@@ -118,40 +118,19 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
     function getPageMenu($aMenu = [], $aMarkers = [])
     {
         $aMenuItems = [
-            BX_DOL_STUDIO_MODULE_SYSTEM => [
-                'name' => BX_DOL_STUDIO_MODULE_SYSTEM,
-                'icon' => 'mi-bp-system.svg',
-                'icon_bg' => true,
-                'title' => '_adm_bp_cpt_type_' . BX_DOL_STUDIO_MODULE_SYSTEM,
-            ],
-            BX_DOL_STUDIO_MODULE_CUSTOM => [
-                'name' => BX_DOL_STUDIO_MODULE_CUSTOM,
-                'icon' => 'mi-bp-custom.svg',
-                'icon_bg' => true,
-                'title' => '_adm_bp_cpt_type_' . BX_DOL_STUDIO_MODULE_CUSTOM,
-            ]
+            'pages' => ['icon' => 'mi-bp-system.svg', 'link' => 'builder_page.php']
         ];
 
-        $aModulesDb = $this->oDb->getPages(['type' => 'modules_with_pages']);
-        foreach($aModulesDb as $aModuleDb) {
-            $sName = $aModuleDb['name'];
-            if($sName == BX_DOL_STUDIO_MODULE_SYSTEM)
-                continue;
-
-            $aMenuItems[] = [
-                'name' => $sName,
-                'icon' => BxDolStudioUtils::getModuleIcon($aModuleDb, 'menu', false),
-                'icon_bg' => false,
-                'title' => BxDolStudioUtils::getModuleTitle($sName)
-            ]; 
-        }
-
         $aMenu = [];
-        foreach($aMenuItems as $aMenuItem)
-            $aMenu[] = array_merge($aMenuItem, [
-                'link' =>  sprintf($this->sTypeUrl, $aMenuItem['name']),
-                'selected' => $aMenuItem['name'] == $this->sType
-            ]);
+        foreach($aMenuItems as $sMenuItem => $aItem)
+            $aMenu[] = [
+                'name' => $sMenuItem,
+                'icon' => $aItem['icon'],
+                'icon_bg' => true,
+                'link' => $aItem['link'],
+                'title' => _t('_adm_lmi_cpt_' . $sMenuItem),
+                'selected' => true
+            ];
 
         return parent::getPageMenu($aMenu);
     }
@@ -253,7 +232,7 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
             'type' => $this->sType,
             'page' => $this->sPage,
             'html_ids' => json_encode($this->aHtmlIds),
-            'languahes' => json_encode($aLanguages),
+            'languages' => json_encode($aLanguages),
             'content' => $this->getBlockCode(array(
                 'items' => $sContent
             ))
@@ -1985,12 +1964,45 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
     {
         $sJsObject = $this->getPageJsObject();
 
-        $oForm = new BxTemplStudioFormView(array());
+        /* */
+        
+        $aInputTypesValues = [[
+            'key' => BX_DOL_STUDIO_MODULE_SYSTEM,
+            'value' => _t('_adm_bp_cpt_type_' . BX_DOL_STUDIO_MODULE_SYSTEM)
+        ], [
+            'key' => BX_DOL_STUDIO_MODULE_CUSTOM,
+            'value' => _t('_adm_bp_cpt_type_' . BX_DOL_STUDIO_MODULE_CUSTOM)
+        ]];
+
+        $aModulesDb = $this->oDb->getPages(['type' => 'modules_with_pages']);
+        foreach($aModulesDb as $aModuleDb) {
+            $sName = $aModuleDb['name'];
+            if($sName == BX_DOL_STUDIO_MODULE_SYSTEM)
+                continue;
 
-        $aPages = $this->oDb->getPages(array('type' => 'by_module', 'value' => $this->sType));
+            $aInputTypesValues[] = [
+                'key' => $sName,
+                'value' => BxDolStudioUtils::getModuleTitle($sName)
+            ]; 
+        }
 
-        $aCounter = array();
-        $this->oDb->getBlocks(array('type' => 'counter_by_pages'), $aCounter, false);
+        $aInputTypes = [
+            'type' => 'select',
+            'name' => 'page',
+            'attrs' => [
+                'onChange' => 'javascript:' . $sJsObject . '.onChangeType(this)'
+            ],
+            'value' => $this->sType,
+            'values' => $aInputTypesValues
+        ];
+
+        
+        /* */
+
+        $aPages = $this->oDb->getPages(['type' => 'by_module', 'value' => $this->sType]);
+
+        $aCounter = [];
+        $this->oDb->getBlocks(['type' => 'counter_by_pages'], $aCounter, false);
         
         $aInputPagesValues = [];
         foreach($aPages as $aPage) {
@@ -1998,42 +2010,45 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
             if(empty($sTitle))
                 $sTitle = _t($aPage['title']);
 
-            $aInputPagesValues[] = array(
+            $aInputPagesValues[] = [
                 'key' => $aPage['object'], 
                 'value' => $sTitle . " (" . (isset($aCounter[$aPage['object']]) ? $aCounter[$aPage['object']] : "0") . ")"
-            );
+            ];
         }
 
         usort($aInputPagesValues, function($aV1, $aV2) {
             return strcmp($aV1['value'], $aV2['value']);
         });
 
-        $aInputPages = array(
+        $aInputPages = [
             'type' => 'select',
             'name' => 'page',
-            'attrs' => array(
-                'onChange' => 'javascript:' . $this->getPageJsObject() . '.onChangePage(this)'
-            ),
+            'attrs' => [
+                'onChange' => 'javascript:' . $sJsObject . '.onChangePage(this)'
+            ],
             'value' => $this->sPage,
             'values' => array_merge([[
                 'key' => '', 
                 'value' => _t('_adm_bp_txt_select_page')]
             ], $aInputPagesValues)
-        );       
+        ];
 
-        $aTmplVarsActions = array();
+        $aTmplVarsActions = [];
         if(($this->sPage != '' && !empty($this->aPageRebuild)) !== false)
             $aTmplVarsActions = $this->_getTmplVarsBlockPanelTopActions();
 
-        return array(
-            'js_object' => $this->getPageJsObject(),
-            'selector' => $oForm->genRow($aInputPages),
+        $oForm = new BxTemplStudioFormView([]);
+
+        return [
+            'js_object' => $sJsObject,
+            'selector_types' => $oForm->genRow($aInputTypes),
+            'selector_pages' => $oForm->genRow($aInputPages),
             'action_page_create' => $this->sActionPageCreate,
-            'bx_if:show_actions' => array(
+            'bx_if:show_actions' => [
                 'condition' => $this->sPage != '',
                 'content' => $aTmplVarsActions
-            )
-        );
+            ]
+        ];
     }
 
     protected function _getTmplVarsBlockPanelTopActions()

+ 1 - 0
template/scripts/BxBaseIconsetLucide.php

@@ -82,6 +82,7 @@ class BxBaseIconsetLucide extends BxBaseIconset
             'info-circle' => 'info',
             'keyround' => 'key-round',
             'language' => 'languages',
+            'list-alt' => 'list',
             'linkedin-in' => 'linkedin',
             'lockopen' => 'unlock',
             'mail-bulk' => 'mails',