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

#31 - Replace Image based icons with Font based one.

AntonLV 12 лет назад
Родитель
Сommit
39456c1fa3
97 измененных файлов с 447 добавлено и 146 удалено
  1. 1 1
      install/sql/system.sql
  2. 1 1
      modules/boonex/antispam/classes/BxAntispamStudioPage.php
  3. 7 7
      modules/boonex/developer/classes/BxDevModule.php
  4. 1 1
      modules/boonex/developer/classes/BxDevPolyglot.php
  5. 4 4
      modules/boonex/developer/classes/BxDevStudioPage.php
  6. 1 1
      modules/boonex/developer/classes/BxDevTemplate.php
  7. 14 2
      modules/boonex/developer/template/css/main.css
  8. BIN
      modules/boonex/developer/template/images/icons/bx-dev-mi-general.png
  9. BIN
      modules/boonex/developer/template/images/icons/std-mi-editor.png
  10. BIN
      modules/boonex/developer/template/images/icons/std-mi-general.png
  11. BIN
      modules/boonex/developer/template/images/icons/std-mi-links.png
  12. 4 1
      modules/boonex/developer/template/menu_main.html
  13. 1 0
      modules/boonex/english/data/langs/system.xml
  14. 1 3
      modules/boonex/russian/data/langs/system.xml
  15. 19 3
      studio/classes/BxDolStudioBuilderPage.php
  16. 4 1
      studio/classes/BxDolStudioDesign.php
  17. 2 0
      studio/classes/BxDolStudioInstallerUtils.php
  18. 4 1
      studio/classes/BxDolStudioLanguage.php
  19. 5 2
      studio/classes/BxDolStudioModule.php
  20. 2 2
      studio/classes/BxDolStudioModules.php
  21. 3 12
      studio/classes/BxDolStudioPage.php
  22. 2 2
      studio/classes/BxDolStudioPolyglot.php
  23. 1 0
      studio/classes/BxDolStudioSettings.php
  24. 42 7
      studio/classes/BxDolStudioUtils.php
  25. 5 1
      studio/template/bp_blocks.html
  26. 13 0
      studio/template/css/builder_page.css
  27. 14 0
      studio/template/css/designer.css
  28. 25 0
      studio/template/css/launcher.css
  29. 12 0
      studio/template/css/store.css
  30. BIN
      studio/template/images/bx-std-cross.png
  31. BIN
      studio/template/images/bx-std-menu-top.png
  32. BIN
      studio/template/images/icons/bi-bp-html.png
  33. BIN
      studio/template/images/icons/bi-bp-image.png
  34. BIN
      studio/template/images/icons/bi-bp-lang.png
  35. BIN
      studio/template/images/icons/bi-bp-menu.png
  36. BIN
      studio/template/images/icons/bi-bp-raw.png
  37. BIN
      studio/template/images/icons/bi-bp-rss.png
  38. BIN
      studio/template/images/icons/bx-std-wai-cross.png
  39. BIN
      studio/template/images/icons/ics-star-act.png
  40. BIN
      studio/template/images/icons/ics-star-pas.png
  41. BIN
      studio/template/images/icons/mi-bp-custom.png
  42. BIN
      studio/template/images/icons/mi-bp-skeletons.png
  43. BIN
      studio/template/images/icons/mi-bp-system.png
  44. BIN
      studio/template/images/icons/mi-dsg-general.png
  45. BIN
      studio/template/images/icons/mi-dsg-icon.png
  46. BIN
      studio/template/images/icons/mi-dsg-logo.png
  47. BIN
      studio/template/images/icons/mi-dsg-settings.png
  48. BIN
      studio/template/images/icons/mi-empty.png
  49. BIN
      studio/template/images/icons/mi-form-displays.png
  50. BIN
      studio/template/images/icons/mi-form-fields.png
  51. BIN
      studio/template/images/icons/mi-form-forms.png
  52. BIN
      studio/template/images/icons/mi-form-pre_lists.png
  53. BIN
      studio/template/images/icons/mi-form-pre_values.png
  54. BIN
      studio/template/images/icons/mi-lang-general.png
  55. BIN
      studio/template/images/icons/mi-mod-empty.png
  56. BIN
      studio/template/images/icons/mi-mod-general.png
  57. BIN
      studio/template/images/icons/mi-nav-items.png
  58. BIN
      studio/template/images/icons/mi-nav-menus.png
  59. BIN
      studio/template/images/icons/mi-nav-sets.png
  60. BIN
      studio/template/images/icons/mi-pgt-etemplates.png
  61. BIN
      studio/template/images/icons/mi-pgt-general.png
  62. BIN
      studio/template/images/icons/mi-pgt-keys.png
  63. BIN
      studio/template/images/icons/mi-prm-actions.png
  64. BIN
      studio/template/images/icons/mi-prm-levels.png
  65. BIN
      studio/template/images/icons/mi-prm-prices.png
  66. BIN
      studio/template/images/icons/mi-stg-system.png
  67. BIN
      studio/template/images/icons/mi-str-checkout.png
  68. BIN
      studio/template/images/icons/mi-str-downloaded.png
  69. BIN
      studio/template/images/icons/mi-str-featured.png
  70. BIN
      studio/template/images/icons/mi-str-goodies.png
  71. BIN
      studio/template/images/icons/mi-str-purchases.png
  72. BIN
      studio/template/images/icons/mi-str-updates.png
  73. BIN
      studio/template/images/icons/mi-templ-colors.png
  74. BIN
      studio/template/images/icons/mi-templ-fonts.png
  75. BIN
      studio/template/images/icons/mi-templ-general.png
  76. BIN
      studio/template/images/icons/pi-mod-empty.png
  77. BIN
      studio/template/images/icons/si-mod-empty.png
  78. BIN
      studio/template/images/icons/wi-empty.png
  79. 73 22
      studio/template/scripts/BxBaseStudioBuilderPage.php
  80. 5 5
      studio/template/scripts/BxBaseStudioDesign.php
  81. 17 7
      studio/template/scripts/BxBaseStudioDesigner.php
  82. 7 7
      studio/template/scripts/BxBaseStudioForms.php
  83. 5 5
      studio/template/scripts/BxBaseStudioLanguage.php
  84. 2 2
      studio/template/scripts/BxBaseStudioModule.php
  85. 5 5
      studio/template/scripts/BxBaseStudioNavigation.php
  86. 4 4
      studio/template/scripts/BxBaseStudioPermissions.php
  87. 6 6
      studio/template/scripts/BxBaseStudioPolyglot.php
  88. 12 4
      studio/template/scripts/BxBaseStudioSettings.php
  89. 55 14
      studio/template/scripts/BxBaseStudioStore.php
  90. 36 6
      studio/template/scripts/BxBaseStudioWidgets.php
  91. 5 1
      studio/template/str_product_v1.html
  92. 5 1
      studio/template/str_product_v2.html
  93. 5 1
      studio/template/str_update_v1.html
  94. 5 1
      studio/template/str_update_v2.html
  95. 5 1
      studio/template/templates.html
  96. 7 2
      studio/template/widgets.html
  97. BIN
      template/images/icons/std-mi.png

+ 1 - 1
install/sql/system.sql

@@ -203,7 +203,7 @@ CREATE TABLE `sys_options_types` (
 --
 -- Dumping data for tables `sys_options_types`
 --
-INSERT INTO `sys_options_types`(`group`, `name`, `caption`, `icon`, `order`) VALUES ('system', 'system', '_adm_stg_cpt_type_system', 'mi-stg-system.png', 1);
+INSERT INTO `sys_options_types`(`group`, `name`, `caption`, `icon`, `order`) VALUES ('system', 'system', '_adm_stg_cpt_type_system', 'cogs', 1);
 SET @iTypeId = LAST_INSERT_ID();
 
 --

+ 1 - 1
modules/boonex/antispam/classes/BxAntispamStudioPage.php

@@ -25,7 +25,7 @@ class BxAntispamStudioPage extends BxTemplStudioModule
         bx_import('BxDolPermalinks');
 
         $this->aMenuItems = array(
-            array('name' => 'general', 'icon' => 'cogs', 'title' => '_adm_lmi_cpt_settings'),
+            array('name' => 'settings', 'icon' => 'cogs', 'title' => '_adm_lmi_cpt_settings'),
             array('name' => 'ip_table', 'icon' => 'align-justify', 'title' => '_bx_antispam_ip_table', 'link' => BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=antispam-ip-table')),
             array('name' => 'dnsbl_list', 'icon' => 'align-justify', 'title' => '_bx_antispam_dnsbl_list', 'link' => BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=antispam-dnsbl-list')),
             array('name' => 'block_log', 'icon' => 'clock-o', 'title' => '_bx_antispam_block_log', 'link' => BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=antispam-block-log')),

+ 7 - 7
modules/boonex/developer/classes/BxDevModule.php

@@ -18,7 +18,7 @@ require_once('BxDevNavigation.php');
 require_once('BxDevPolyglot.php');
 require_once('BxDevPermissions.php');
 
-define('BX_DEV_TOOLS_GENERAL', 'general');
+define('BX_DEV_TOOLS_SETTINGS', 'settings');
 define('BX_DEV_TOOLS_FORMS', 'forms');
 define('BX_DEV_TOOLS_PAGES', 'pages');
 define('BX_DEV_TOOLS_NAVIGATION', 'navigation');
@@ -34,12 +34,12 @@ class BxDevModule extends BxDolModule
         parent::__construct($aModule);
 
         $this->aTools = array(
-            array('name' => BX_DEV_TOOLS_GENERAL, 'title' => ''),
-            array('name' => BX_DEV_TOOLS_FORMS, 'title' => ''),
-            array('name' => BX_DEV_TOOLS_NAVIGATION, 'title' => ''),
-            array('name' => BX_DEV_TOOLS_PAGES, 'title' => ''),
-            array('name' => BX_DEV_TOOLS_POLYGLOT, 'title' => ''),
-            //array('name' => BX_DEV_TOOLS_PERMISSIONS, 'title' => ''),
+            array('name' => BX_DEV_TOOLS_SETTINGS, 'title' => '', 'icon' => 'cogs'),
+            array('name' => BX_DEV_TOOLS_FORMS, 'title' => '', 'icon' => 'bx-dev-mi-forms.png'),
+            array('name' => BX_DEV_TOOLS_NAVIGATION, 'title' => '', 'icon' => 'bx-dev-mi-navigation.png'),
+            array('name' => BX_DEV_TOOLS_PAGES, 'title' => '', 'icon' => 'bx-dev-mi-pages.png'),
+            array('name' => BX_DEV_TOOLS_POLYGLOT, 'title' => '', 'icon' => 'bx-dev-mi-polyglot.png'),
+            //array('name' => BX_DEV_TOOLS_PERMISSIONS, 'title' => '', 'icon' => 'bx-dev-mi-permissions.png'),
         );
     }
 

+ 1 - 1
modules/boonex/developer/classes/BxDevPolyglot.php

@@ -66,7 +66,7 @@ class BxDevPolyglot extends BxTemplStudioPolyglot
         return parent::getPageJsCode($aOptions, $bWrap);
     }
 
-    protected function getGeneral()
+    protected function getManager()
     {
         return $this->getGrid($this->aGridObjects['manage']);
     }

+ 4 - 4
modules/boonex/developer/classes/BxDevStudioPage.php

@@ -32,9 +32,9 @@ class BxDevStudioPage extends BxTemplStudioModule
         foreach($this->oModule->aTools as $aTool)
             $this->aMenuItems[] = array(
                 'name' => $aTool['name'],
-                'icon' => 'bx-dev-mi-' . $aTool['name'] . '.png',
+                'icon' => $aTool['icon'],
                 'link' => sprintf($this->sUrl, $this->sModule, $aTool['name']),
-                'title' => '',
+                'title' => $aTool['title'],
                 'selected' => $aTool['name'] == $this->sPage
             );
 
@@ -43,7 +43,7 @@ class BxDevStudioPage extends BxTemplStudioModule
         return $oMenu->getCode();
     }
 
-    protected function getGeneral()
+    protected function getSettings()
     {
         bx_import('BxTemplStudioSettings');
         $oContent = new BxTemplStudioSettings($this->sModule);
@@ -98,7 +98,7 @@ class BxDevStudioPage extends BxTemplStudioModule
         $sType = $sType !== false ? bx_process_input($sType) : '';
 
         $sPage = bx_get('pgt_page');
-        $sPage = $sPage !== false ? bx_process_input($sPage) : '';
+        $sPage = $sPage !== false ? bx_process_input($sPage) : 'manager';
 
         $oContent = new BxDevPolyglot(array(
             'page' => $sPage,

+ 1 - 1
modules/boonex/developer/classes/BxDevTemplate.php

@@ -27,7 +27,7 @@ class BxDevTemplate extends BxDolModuleTemplate
 
         $sMenu = $oContent->getPageMenu();
         $sContent = $oContent->getPageJsCode() . $oContent->getPageCode();
-        if(in_array($sPage, array('general')) || empty($sMenu)) {
+        if(in_array($sPage, array(BX_DEV_TOOLS_SETTINGS)) || empty($sMenu)) {
             $this->addStudioInjection('injection_body_style', 'text', ' bx-dev-page-body-single');
             return $sContent;
         }

+ 14 - 2
modules/boonex/developer/template/css/main.css

@@ -54,7 +54,6 @@ div.bx-dev-menu-main li {
 
 div.bx-dev-menu-main li:hover,
 div.bx-dev-menu-main li.bx-def-color-bg-active {
-    background-color:gray;
     opacity:1;
     -moz-box-shadow: 0 0 9px 0px #ffffff;
     -webkit-box-shadow: 0 0 9px 0px #ffffff;
@@ -65,13 +64,26 @@ div.bx-dev-menu-main div.bx-dev-mm-item {
 	position: relative;
 	width: 32px;
 	height: 32px;
-}
+} 
 
 div.bx-dev-menu-main div.bx-dev-mm-item img {
 	width: 32px;
     height: 32px;
 }
 
+div.bx-dev-menu-main div.bx-dev-mm-item i.sys-icon {
+	position: absolute;
+	top: 0px;
+    left: 0px;
+    width:32px;
+	height: 32px;
+
+    color:white;
+    font-size:20px;
+    text-align:center;
+    text-shadow:none;
+	line-height: 32px;
+}
 
 /*--- Page Content ---*/
 div.bx-dev-page-columns-cnt {

BIN
modules/boonex/developer/template/images/icons/bx-dev-mi-general.png


BIN
modules/boonex/developer/template/images/icons/std-mi-editor.png


BIN
modules/boonex/developer/template/images/icons/std-mi-general.png


BIN
modules/boonex/developer/template/images/icons/std-mi-links.png


+ 4 - 1
modules/boonex/developer/template/menu_main.html

@@ -5,7 +5,10 @@
                 <li class="bx-def-round-corners bx-def-margin-sec-bottom __class_add__">
                     <a href="__link__" target="__target__" onclick="__onclick__">
                         <div class="bx-dev-mm-item">
-                            <bx_if:icon><i class="sys-icon __icon__ bx-def-margin-sec-right"></i></bx_if:icon>
+                            <bx_if:icon>
+                            	<img src="<bx_icon_url:mi-empty.png />" />
+                            	<i class="sys-icon __icon__ bx-def-margin-sec-right"></i>
+                            </bx_if:icon>
                             <bx_if:image><img src="__icon_url__" /></bx_if:image>
                         </div>
                     </a>

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

@@ -1249,6 +1249,7 @@
 	<string name="_adm_txt_select_module"><![CDATA[Select Module...]]></string>
 	<string name="_adm_txt_show_help"><![CDATA[Help]]></string>
 	<string name="_adm_txt_show_help_content_empty"><![CDATA[Help is not available]]></string>
+	<string name="_adm_txt_uninstall"><![CDATA[Uninstall]]></string>
 	<string name="_adm_wgt_cpt_builder_forms"><![CDATA[Forms]]></string>
 	<string name="_adm_wgt_cpt_builder_menus"><![CDATA[Navigation]]></string>
 	<string name="_adm_wgt_cpt_builder_pages"><![CDATA[Pages]]></string>

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

@@ -1509,6 +1509,7 @@ Please click "Continue" below to navigate to the home page of the site.]]></stri
     <string name="_adm_txt_form_view_iu_delete"><![CDATA[Delete]]></string>
     <string name="_adm_err_form_view_iu_delete"><![CDATA[Cannot remove current image.]]></string>
     <string name="_adm_err_form_view_iu_save"><![CDATA[Cannot save: ]]></string>
+    <string name="_adm_txt_uninstall"><![CDATA[Uninstall]]></string>
 
     <!-- Settings -->
 	<string name="_adm_wgt_cpt_settings"><![CDATA[Settings]]></string>
@@ -1629,11 +1630,9 @@ Please click "Continue" below to navigate to the home page of the site.]]></stri
     <!-- Extensions -->
 	<string name="_adm_mod_err_cannot_process_action"><![CDATA[Cannot process action. It does not have an associated handler.]]></string>
     <string name="_adm_mod_err_process_operation_failed"><![CDATA[Cannot {0} module from "{1}" directory]]></string>
-    <string name="_adm_mod_txt_uninstall"><![CDATA[Uninstall]]></string>
     <string name="_adm_mod_cnf_uninstall"><![CDATA[<h3>Uninstall "{0}" module?</h3><p>Uninstalling "{0}" module will also delete all of its data. Do you want to continue?</p>]]></string>
 
     <!-- Templates -->
-    <string name="_adm_dsn_txt_uninstall"><![CDATA[Uninstall]]></string>
     <string name="_adm_dsn_cnf_uninstall"><![CDATA[<h3>Uninstall "{0}" template?</h3><p>Uninstalling "{0}" template will also delete all of its data. Do you want to continue?</p>]]></string>
 
     <!-- Designer -->
@@ -1662,7 +1661,6 @@ Please click "Continue" below to navigate to the home page of the site.]]></stri
 	<string name="_adm_dsg_scs_save"><![CDATA[The changes were successfully saved]]></string>
 
     <!-- Languages -->
-    <string name="_adm_lang_txt_uninstall"><![CDATA[Uninstall]]></string>
     <string name="_adm_lang_cnf_uninstall"><![CDATA[<h3>Uninstall "{0}" language?</h3><p>Uninstalling "{0}" language will also delete all of its data. Do you want to continue?</p>]]></string>
 
 	<!-- Polyglot -->

+ 19 - 3
studio/classes/BxDolStudioBuilderPage.php

@@ -153,10 +153,26 @@ class BxDolStudioBuilderPage extends BxTemplStudioPage
 
     protected function getModuleIcon($sName, $sType = 'menu')
     {
-        if(in_array($sName, array(BX_DOL_STUDIO_MODULE_SYSTEM, BX_DOL_STUDIO_MODULE_CUSTOM, BX_DOL_STUDIO_BP_SKELETONS)))
-            return BxDolStudioTemplate::getInstance()->getIconUrl('mi-bp-' . $sName . '.png');
+    	$sResult = '';
 
-        return BxDolStudioUtils::getModuleIcon($sName);
+    	switch($sName) {
+    		case BX_DOL_STUDIO_MODULE_SYSTEM:
+    			$sResult = 'cog';
+    			break;
+
+    		case BX_DOL_STUDIO_MODULE_CUSTOM:
+    			$sResult = 'wrench';
+    			break;
+
+    		case BX_DOL_STUDIO_BP_SKELETONS:
+    			$sResult = 'qrcode';
+    			break;
+
+    		default:
+    			$sResult = BxDolStudioUtils::getModuleIcon($sName);
+    	}
+
+        return $sResult;
     }
 }
 

+ 4 - 1
studio/classes/BxDolStudioDesign.php

@@ -12,7 +12,10 @@ bx_import('BxTemplStudioPage');
 bx_import('BxDolStudioDesignsQuery');
 
 define('BX_DOL_STUDIO_TEMPL_DEFAULT', 'basic');
-define('BX_DOL_STUDIO_TEMPL_TYPE_DEFAULT', 'general');
+
+define('BX_DOL_STUDIO_TEMPL_TYPE_SETTINGS', 'settings');
+
+define('BX_DOL_STUDIO_TEMPL_TYPE_DEFAULT', BX_DOL_STUDIO_TEMPL_TYPE_SETTINGS);
 
 class BxDolStudioDesign extends BxTemplStudioPage
 {

+ 2 - 0
studio/classes/BxDolStudioInstallerUtils.php

@@ -174,6 +174,7 @@ class BxDolStudioInstallerUtils extends BxDolInstallerUtils implements iBxDolSin
         }
 
         return array(
+        	'type' => $aConfig['type'],
             'name' => isset($aConfig['name']) ? $aConfig['name'] : $aConfig['home_uri'],
             'title' => $sTitle,
             'vendor' => $aConfig['vendor'],
@@ -205,6 +206,7 @@ class BxDolStudioInstallerUtils extends BxDolInstallerUtils implements iBxDolSin
             'version_from' => $aConfig['version_from'],
             'version_to' => $aConfig['version_to'],
             'dir' => $aConfig['home_dir'],
+        	'module_type' => $aModule['type'],
             'module_name' => $aModule['name'],
             'module_dir' => $aModule['dir'],
             'module_link_market' => $aModule['link_market'],

+ 4 - 1
studio/classes/BxDolStudioLanguage.php

@@ -12,7 +12,10 @@ bx_import('BxTemplStudioPage');
 bx_import('BxDolStudioLanguagesQuery');
 
 define('BX_DOL_STUDIO_LANG_DEFAULT', 'en');
-define('BX_DOL_STUDIO_LANG_TYPE_DEFAULT', 'general');
+
+define('BX_DOL_STUDIO_LANG_TYPE_SETTINGS', 'settings');
+
+define('BX_DOL_STUDIO_LANG_TYPE_DEFAULT', BX_DOL_STUDIO_LANG_TYPE_SETTINGS);
 
 class BxDolStudioLanguage extends BxTemplStudioPage
 {

+ 5 - 2
studio/classes/BxDolStudioModule.php

@@ -10,13 +10,16 @@
 bx_import('BxTemplStudioPage');
 bx_import('BxDolStudioModulesQuery');
 
-define('BX_DOL_STUDIO_MOD_TYPE_DEFAULT', 'general');
+define('BX_DOL_STUDIO_MOD_TYPE_SETTINGS', 'settings');
+
+define('BX_DOL_STUDIO_MOD_TYPE_DEFAULT', BX_DOL_STUDIO_MOD_TYPE_SETTINGS);
 
 class BxDolStudioModule extends BxTemplStudioPage
 {
     protected $sModule;
     protected $aModule;
     protected $sPage;
+    protected $sPageDefault = BX_DOL_STUDIO_MOD_TYPE_DEFAULT;
 
     function __construct($sModule = "", $sPage = "")
     {
@@ -28,7 +31,7 @@ class BxDolStudioModule extends BxTemplStudioPage
         if(is_string($sModule) && !empty($sModule))
             $this->sModule = $sModule;
 
-        $this->sPage = BX_DOL_STUDIO_MOD_TYPE_DEFAULT;
+        $this->sPage = $this->sPageDefault;
         if(is_string($sPage) && !empty($sPage))
             $this->sPage = $sPage;
     }

+ 2 - 2
studio/classes/BxDolStudioModules.php

@@ -31,10 +31,10 @@ class BxDolStudioModules extends BxDol
     {
         return array(
             array (
-                'caption' => _t('_adm_' . $this->sLangPrefix . '_txt_uninstall'),
+                'caption' => _t('_adm_txt_uninstall'),
                 'link' => '',
                 'click' => $this->sJsObject . ".uninstall(" . $aWidget['id'] . ", '" . $aWidget['page_name'] . "', 0)",
-                'icon' => 'bx-std-wai-cross.png'
+                'icon' => 'times-circle'
             )
         );
     }

+ 3 - 12
studio/classes/BxDolStudioPage.php

@@ -91,16 +91,7 @@ class BxDolStudioPage extends BxDol
         bx_import('BxDolStudioTemplate');
         $oTemplate = BxDolStudioTemplate::getInstance();
 
-        $aResult = array('code' => 0, 'message' => _t('_adm_scs_operation_done'));
-        if($this->aPage['bookmarked']) {
-            $aResult['icon'] = $oTemplate->getIconUrl('ics-star-act.png');
-            $aResult['title'] = bx_js_string(_t('_adm_txt_favorites_remove'));
-        } else {
-            $aResult['icon'] = $oTemplate->getIconUrl('ics-star-pas.png');
-            $aResult['title'] = bx_js_string(_t('_adm_txt_favorites_add'));
-        }
-
-        return $aResult;
+        return array('code' => 0, 'message' => _t('_adm_scs_operation_done'));
     }
 
     protected function getSystemName($sValue)
@@ -118,9 +109,9 @@ class BxDolStudioPage extends BxDol
         return BxDolStudioUtils::getModuleTitle($sName);
     }
 
-    protected function getModuleIcon($sName, $sType = 'menu')
+    protected function getModuleIcon($sName, $sType = 'menu', $bReturnAsUrl = true)
     {
-        return BxDolStudioUtils::getModuleIcon($sName, $sType);
+        return BxDolStudioUtils::getModuleIcon($sName, $sType, $bReturnAsUrl);
     }
 
     protected function getModules($bShowCustom = true, $bShowSystem = true)

+ 2 - 2
studio/classes/BxDolStudioPolyglot.php

@@ -10,11 +10,11 @@
 bx_import('BxTemplStudioPage');
 bx_import('BxDolStudioPolyglotQuery');
 
-define('BX_DOL_STUDIO_PGT_TYPE_GENERAL', 'general');
+define('BX_DOL_STUDIO_PGT_TYPE_SETTINGS', 'settings');
 define('BX_DOL_STUDIO_PGT_TYPE_KEYS', 'keys');
 define('BX_DOL_STUDIO_PGT_TYPE_ETEMPLATES', 'etemplates');
 
-define('BX_DOL_STUDIO_PGT_TYPE_DEFAULT', BX_DOL_STUDIO_PGT_TYPE_GENERAL);
+define('BX_DOL_STUDIO_PGT_TYPE_DEFAULT', BX_DOL_STUDIO_PGT_TYPE_SETTINGS);
 
 class BxDolStudioPolyglot extends BxTemplStudioPage
 {

+ 1 - 0
studio/classes/BxDolStudioSettings.php

@@ -16,6 +16,7 @@ define('BX_DOL_STUDIO_STG_TYPE_DEFAULT', BX_DOL_STUDIO_STG_TYPE_SYSTEM);
 define('BX_DOL_STUDIO_STG_GROUP_SYSTEM', 'system');
 define('BX_DOL_STUDIO_STG_GROUP_MODULES', 'modules');
 define('BX_DOL_STUDIO_STG_GROUP_LANGUAGES', 'languages');
+define('BX_DOL_STUDIO_STG_GROUP_TEMPLATES', 'templates');
 
 define('BX_DOL_STUDIO_STG_CATEGORY_SYSTEM', 'system');
 define('BX_DOL_STUDIO_STG_CATEGORY_LANGUAGES', 'languages');

+ 42 - 7
studio/classes/BxDolStudioUtils.php

@@ -12,6 +12,8 @@ bx_import('BxDol');
 define('BX_DOL_STUDIO_MODULE_SYSTEM', 'system');
 define('BX_DOL_STUDIO_MODULE_CUSTOM', 'custom');
 
+define('BX_DOL_STUDIO_MODULE_ICON_DEFAULT', 'lightbulb-o');
+
 define('BX_DOL_STUDIO_VISIBLE_ALL', 'all');
 define('BX_DOL_STUDIO_VISIBLE_SELECTED', 'selected');
 
@@ -32,20 +34,53 @@ class BxDolStudioUtils extends BxDol
         return bx_gen_method_name($sValue);
     }
 
-    public static function getModuleIcon($sName, $sType = 'menu')
+    public static function getIconDefault($sType = '')
+    {
+    	$sIcon = '';
+
+		switch ($sType) {
+			case BX_DOL_MODULE_TYPE_MODULE:
+				$sIcon = 'cube';
+				break;
+
+			case BX_DOL_MODULE_TYPE_LANGUAGE:
+				$sIcon = 'language';
+				break;
+
+			case BX_DOL_MODULE_TYPE_TEMPLATE:
+				$sIcon = 'adjust';
+				break;
+
+			default:
+				$sIcon = BX_DOL_STUDIO_MODULE_ICON_DEFAULT;
+		}
+
+		return $sIcon;
+    }
+    
+    public static function getModuleIcon($mixedModule, $sType = 'menu', $bReturnAsUrl = true)
     {
         $aType2Prefix = array('menu' => 'mi', 'page' => 'pi', 'store' => 'si');
 
-        $oTemplate = BxDolStudioTemplate::getInstance();
-        $sDefaultIcon = $oTemplate->getIconUrl($aType2Prefix[$sType] . '-mod-empty.png');
+        if(!is_array($mixedModule)) {
+	        bx_import('BxDolModuleQuery');
+	        $aModule = BxDolModuleQuery::getInstance()->getModuleByName($mixedModule);
+        }
+        else 
+        	$aModule = $mixedModule;
 
-        bx_import('BxDolModuleQuery');
-        $aModule = BxDolModuleQuery::getInstance()->getModuleByName($sName);
+		$sDefaultIcon = self::getIconDefault(isset($aModule['type']) ? $aModule['type'] : '');
         if(empty($aModule))
             return $sDefaultIcon;
 
-        $sModuleIcon = isset($aModule['path']) ? $oTemplate->getIconUrl($aModule['name'] . '@modules/' . $aModule['path'] . '|std-' . $aType2Prefix[$sType] . '.png') : '';
-        return !empty($sModuleIcon) ? $sModuleIcon : $sDefaultIcon;
+        $sModuleIcon = '';
+        if(isset($aModule['path']))
+			$sModuleIcon = $aModule['name'] . '@modules/' . $aModule['path'] . '|std-' . $aType2Prefix[$sType] . '.png';
+		else if(isset($aModule['dir']))
+			$sModuleIcon = $aModule['name'] . '@modules/' . $aModule['dir'] . '|std-' . $aType2Prefix[$sType] . '.png';
+        $sModuleIconUrl = BxDolStudioTemplate::getInstance()->getIconUrl($sModuleIcon);
+
+        return !empty($sModuleIcon) && !empty($sModuleIconUrl) ? ($bReturnAsUrl ? $sModuleIconUrl : $sModuleIcon) : $sDefaultIcon;
     }
 
     public static function getModuleTitle($sName)

+ 5 - 1
studio/template/bp_blocks.html

@@ -2,7 +2,11 @@
     <div id="__html_id__" class="adm-bp-block<bx_if:is_inactive> adm-bpb-inactive</bx_if:is_inactive>">
         <div class="adm-bpb-content">
             <div class="adm-bpb-icon">
-                <img src="__icon__" />
+            	<bx_if:icon>
+                    <img src="<bx_icon_url:mi-empty.png />" />
+                    <i class="sys-icon __icon__ bx-def-margin-sec-right"></i>
+                </bx_if:icon>
+                <bx_if:image><img src="__icon_url__" /></bx_if:image>
             </div>
             <div class="adm-bpb-info">
                 <div class="adm-bpb-title">

+ 13 - 0
studio/template/css/builder_page.css

@@ -61,6 +61,19 @@ div.adm-bpb-icon img {
     width: 32px;
     height: 32px;
 }
+div.adm-bpb-icon i.sys-icon {
+	position: absolute;
+    width:32px;
+	height: 32px;
+	top: 0px;
+	left: 0px;
+
+    color:white;
+    font-size:20px;
+    text-align:center;
+    text-shadow:none;
+	line-height: 32px;
+}
 div.adm-bpb-info {
 	min-height: 32px;
 	padding-left: 40px; 

+ 14 - 0
studio/template/css/designer.css

@@ -9,7 +9,21 @@ div.bx-dsg-icon {
 	top: 0px;
 	left: 0px;
 	overflow: hidden;
+	line-height: 8rem;
 }
+
+div.bx-dsg-icon i.sys-icon {
+	position: absolute;
+	top: 0px;
+	left: 0px;
+	height: auto;
+
+    font-size: 96px;
+    text-align: center;
+    text-shadow: none;
+	color: white;
+}
+
 div.bx-dsg-template-info {
 	overflow: hidden;
 }

+ 25 - 0
studio/template/css/launcher.css

@@ -61,6 +61,20 @@ div.bx-std-widget-nl {
     height: 128px;
 
     background-color:transparent;
+
+    line-height: 128px;
+}
+
+.bx-std-widget-icon i.sys-icon {
+	position: absolute;
+	z-index: 2;
+	left: 0px;
+	width: 128px;
+
+    font-size: 96px;
+    text-align: center;
+    text-shadow: none;
+    color: white;
 }
 
 .bx-std-widget-shadow {
@@ -180,6 +194,17 @@ div.bx-std-widget-action {
     float: left;
     width: 40px;
     height: 40px;
+	line-height: 40px;
+}
+div.bx-std-widget-action i.sys-icon {
+	position: absolute;
+	left: 0px;
+	width: 40px;
+
+    font-size: 32px;
+    text-align: center;
+    text-shadow: none;
+    color: white;
 }
 .bx-std-widget-loading {
     display:none;

+ 12 - 0
studio/template/css/store.css

@@ -17,6 +17,18 @@ div.bx-stdp-icon {
 	top: 0px;
 	left: 0px;
 	overflow: hidden;
+	line-height: 8rem;
+}
+div.bx-stdp-icon i.sys-icon {
+	position: absolute;
+	z-index: 2;
+	left: 0px;
+	width: 128px;
+
+    font-size: 96px;
+    text-align: center;
+    text-shadow: none;
+    color: white;
 }
 div.bx-stdp-content {
 	overflow: hidden;

BIN
studio/template/images/bx-std-cross.png


BIN
studio/template/images/bx-std-menu-top.png


BIN
studio/template/images/icons/bi-bp-html.png


BIN
studio/template/images/icons/bi-bp-image.png


BIN
studio/template/images/icons/bi-bp-lang.png


BIN
studio/template/images/icons/bi-bp-menu.png


BIN
studio/template/images/icons/bi-bp-raw.png


BIN
studio/template/images/icons/bi-bp-rss.png


BIN
studio/template/images/icons/bx-std-wai-cross.png


BIN
studio/template/images/icons/ics-star-act.png


BIN
studio/template/images/icons/ics-star-pas.png


BIN
studio/template/images/icons/mi-bp-custom.png


BIN
studio/template/images/icons/mi-bp-skeletons.png


BIN
studio/template/images/icons/mi-bp-system.png


BIN
studio/template/images/icons/mi-dsg-general.png


BIN
studio/template/images/icons/mi-dsg-icon.png


BIN
studio/template/images/icons/mi-dsg-logo.png


BIN
studio/template/images/icons/mi-dsg-settings.png


BIN
studio/template/images/icons/mi-empty.png


BIN
studio/template/images/icons/mi-form-displays.png


BIN
studio/template/images/icons/mi-form-fields.png


BIN
studio/template/images/icons/mi-form-forms.png


BIN
studio/template/images/icons/mi-form-pre_lists.png


BIN
studio/template/images/icons/mi-form-pre_values.png


BIN
studio/template/images/icons/mi-lang-general.png


BIN
studio/template/images/icons/mi-mod-empty.png


BIN
studio/template/images/icons/mi-mod-general.png


BIN
studio/template/images/icons/mi-nav-items.png


BIN
studio/template/images/icons/mi-nav-menus.png


BIN
studio/template/images/icons/mi-nav-sets.png


BIN
studio/template/images/icons/mi-pgt-etemplates.png


BIN
studio/template/images/icons/mi-pgt-general.png


BIN
studio/template/images/icons/mi-pgt-keys.png


BIN
studio/template/images/icons/mi-prm-actions.png


BIN
studio/template/images/icons/mi-prm-levels.png


BIN
studio/template/images/icons/mi-prm-prices.png


BIN
studio/template/images/icons/mi-stg-system.png


BIN
studio/template/images/icons/mi-str-checkout.png


BIN
studio/template/images/icons/mi-str-downloaded.png


BIN
studio/template/images/icons/mi-str-featured.png


BIN
studio/template/images/icons/mi-str-goodies.png


BIN
studio/template/images/icons/mi-str-purchases.png


BIN
studio/template/images/icons/mi-str-updates.png


BIN
studio/template/images/icons/mi-templ-colors.png


BIN
studio/template/images/icons/mi-templ-fonts.png


BIN
studio/template/images/icons/mi-templ-general.png


BIN
studio/template/images/icons/pi-mod-empty.png


BIN
studio/template/images/icons/si-mod-empty.png


BIN
studio/template/images/icons/wi-empty.png


+ 73 - 22
studio/template/scripts/BxBaseStudioBuilderPage.php

@@ -80,28 +80,34 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
         $aMenuItems = array(
             BX_DOL_STUDIO_MODULE_SYSTEM => array(
                 'name' => BX_DOL_STUDIO_MODULE_SYSTEM,
-                'icon' => 'std-mi.png',
+                'icon' => 'cog',
             ),
             BX_DOL_STUDIO_MODULE_CUSTOM => array(
                 'name' => BX_DOL_STUDIO_MODULE_CUSTOM,
-                'icon' => 'mi-bp-custom.png',
+                'icon' => 'wrench',
                 'title' => '_adm_bp_cpt_type_' . BX_DOL_STUDIO_MODULE_CUSTOM,
             )
         );
 
         bx_import('BxDolModuleQuery');
         $aModulesDb = BxDolModuleQuery::getInstance()->getModulesBy(array('type' => 'modules'));
-        foreach($aModulesDb as $aModuleDb)
-            if(!empty($aMenuItems[$aModuleDb['name']]))
-                $aMenuItems[$aModuleDb['name']] = array_merge($aMenuItems[$aModuleDb['name']], $aModuleDb);
+        foreach($aModulesDb as $aModuleDb) {
+        	$sName = $aModuleDb['name'];
+
+            if(!empty($aMenuItems[$sName]))
+                $aMenuItems[$sName] = array_merge($aMenuItems[$sName], $aModuleDb);
             else
-                $aMenuItems[$aModuleDb['name']] = $aModuleDb;
+                $aMenuItems[$sName] = $aModuleDb;
+
+			if(empty($aMenuItems[$sName]['icon']))
+				$aMenuItems[$sName]['icon'] = BxDolStudioUtils::getModuleIcon($aModuleDb, 'menu', false); 
+        }
 
         $aMenu = array();
         foreach($aMenuItems as $aMenuItem)
             $aMenu[] = array(
                 'name' => $aMenuItem['name'],
-                'icon' => isset($aMenuItem['path']) && $aMenuItem['path'] != '' && $aMenuItem['uri'] != '' ? $aMenuItem['uri'] . '@modules/' . $aMenuItem['path'] . '|std-mi.png' : $aMenuItem['icon'],
+                'icon' => $aMenuItem['icon'],
                 'link' =>  sprintf($this->sTypeUrl, $aMenuItem['name']),
                 'title' => $aMenuItem['title'],
                 'selected' => $aMenuItem['name'] == $this->sType
@@ -126,7 +132,9 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
                 $this->oDb->getBlocks(array('type' => 'by_object_cell', 'object' => $this->aPageRebuild['object'], 'cell' => $i), $aBlocks, false);
 
                 $aTmplVarsCell = array('id' => $i, 'bx_repeat:blocks' => array());
-                foreach($aBlocks as $aBlock)
+                foreach($aBlocks as $aBlock) {
+                	list($sIcon, $sIconUrl) = $this->getBlockIcon($aBlock);
+
                     $aTmplVarsCell['bx_repeat:blocks'][] = array(
                         'html_id' => $this->aHtmlIds['block_id'] . $aBlock['id'],
                         'bx_if:is_inactive' => array(
@@ -144,7 +152,14 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
                             'condition' => false,
                             'content' => array()
                         ),
-                        'icon' => $this->getBlockIcon($aBlock),
+                        'bx_if:image' => array (
+			                'condition' => (bool)$sIconUrl,
+			                'content' => array('icon_url' => $sIconUrl),
+			            ),
+						'bx_if:icon' => array (
+			                'condition' => (bool)$sIcon,
+			                'content' => array('icon' => $sIcon),
+			            ),
                         'module' => $this->getModuleTitle($aBlock['module']),
                         'visible_for' => _t('_adm_bp_txt_visible_for', BxDolStudioUtils::getVisibilityTitle($aBlock['visible_for_levels'])),
                         'bx_if:show_checkbox' => array(
@@ -156,6 +171,7 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
                             'content' => array()
                         )
                     );
+                }
 
                 $aTmplVars['cell_' . $i] = $oTemplate->parseHtmlByName('bp_cell.html', $aTmplVarsCell);
             }
@@ -558,19 +574,19 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
         $aMenu = array(
             BX_DOL_STUDIO_BP_SKELETONS => array(
                 'name' => BX_DOL_STUDIO_BP_SKELETONS,
-                'icon' => 'mi-bp-skeletons.png',
+                'icon' => 'qrcode',
                 'title' => '_sys_block_types_skeletons',
                 'selected' => $sSelected == BX_DOL_STUDIO_BP_SKELETONS,
             ),
             BX_DOL_STUDIO_MODULE_SYSTEM => array(
                 'name' => BX_DOL_STUDIO_MODULE_SYSTEM,
-                'icon' => 'std-mi.png',
+                'icon' => 'cog',
                 'title' => '_sys_block_types_system',
                 'selected' => $sSelected == BX_DOL_STUDIO_MODULE_SYSTEM,
             ),
             BX_DOL_STUDIO_MODULE_CUSTOM => array(
                 'name' => BX_DOL_STUDIO_MODULE_CUSTOM,
-                'icon' => 'mi-bp-custom.png',
+                'icon' => 'wrench',
                 'title' => '_sys_block_types_custom',
                 'selected' => $sSelected == BX_DOL_STUDIO_MODULE_CUSTOM,
             )
@@ -579,13 +595,15 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
         bx_import('BxDolModuleQuery');
         $aModules = BxDolModuleQuery::getInstance()->getModulesBy(array('type' => 'modules'));
         foreach($aModules as $aModule) {
-            if($aModule['path'] != '' && $aModule['uri'] != '')
-                $aModule['icon'] = $aModule['uri'] . '@modules/' . $aModule['path'] . '|std-mi.png';
+        	$sName = $aModule['name'];
 
             if(!empty($aMenu[$aModule['name']]))
-                $aMenu[$aModule['name']] = array_merge($aMenu[$aModule['name']], $aModule);
+                $aMenu[$sName] = array_merge($aMenu[$sName], $aModule);
             else
-                $aMenu[$aModule['name']] = $aModule;
+                $aMenu[$sName] = $aModule;
+                
+			if(empty($aMenu[$sName]['icon']))
+				$aMenu[$sName]['icon'] = BxDolStudioUtils::getModuleIcon($aModule, 'menu', false); 
         }
 
         foreach($aMenu as $sKey => $aItem)
@@ -1217,21 +1235,45 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
 
     protected function getBlockIcon($aBlock)
     {
-        $sImageUrl = "";
+        $sIcon = $sIconUrl = "";
+
+        $sResult = '';
         switch($aBlock['type']) {
             case BX_DOL_STUDIO_BP_BLOCK_RAW:
+            	$sResult = 'file-text-o';
+            	break;
+
             case BX_DOL_STUDIO_BP_BLOCK_HTML:
+            	$sResult = 'code';
+            	break;
+
             case BX_DOL_STUDIO_BP_BLOCK_RSS:
+            	$sResult = 'rss';
+            	break;
+
             case BX_DOL_STUDIO_BP_BLOCK_IMAGE:
+            	$sResult = 'picture-o';
+            	break;
+
             case BX_DOL_STUDIO_BP_BLOCK_LANG:
+            	$sResult = 'globe';
+            	break;
+
             case BX_DOL_STUDIO_BP_BLOCK_MENU:
-                $sImageUrl = BxDolStudioTemplate::getInstance()->getIconUrl('bi-bp-' . $aBlock['type'] . '.png');
-                break;
+            	$sResult = 'list-alt';
+            	break;
+
             case BX_DOL_STUDIO_BP_BLOCK_SERVICE:
-                $sImageUrl = $this->getModuleIcon($aBlock['module'], 'page');
+                $sResult = $this->getModuleIcon($aBlock['module'], 'page');
                 break;
         }
-        return $sImageUrl;
+
+        if(strpos($sResult, '.') === false)
+			$sIcon = $sResult;
+		else
+        	$sIconUrl = $sResult;
+
+        return array($sIcon, $sIconUrl);
     }
 
     protected function getBlockModule($aBlock)
@@ -1451,6 +1493,8 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
 
         $aBlocks = $this->getBlocks($sModule);
         foreach($aBlocks as $aBlock) {
+        	list($sIcon, $sIconUrl) = $this->getBlockIcon($aBlock);
+
             $aInputCheckbox['value'] = $aBlock['id'];
 
             $aTmplParams['bx_repeat:blocks'][] = array(
@@ -1470,7 +1514,14 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
                         'title' => _t($aBlock['title']),
                     )
                 ),
-                'icon' => $this->getBlockIcon($aBlock),
+                'bx_if:image' => array (
+	                'condition' => (bool)$sIconUrl,
+	                'content' => array('icon_url' => $sIconUrl),
+	            ),
+				'bx_if:icon' => array (
+	                'condition' => (bool)$sIcon,
+	                'content' => array('icon' => $sIcon),
+	            ),
                 'module' => $this->getModuleTitle($aBlock['module']),
                 'visible_for' => _t('_adm_bp_txt_visible_for', BxDolStudioUtils::getVisibilityTitle($aBlock['visible_for_levels'])),
                 'bx_if:show_checkbox' => array(

+ 5 - 5
studio/template/scripts/BxBaseStudioDesign.php

@@ -14,7 +14,7 @@ bx_import('BxDolStudioDesign');
 class BxBaseStudioDesign extends BxDolStudioDesign
 {
     protected $aMenuItems = array(
-        'general' => '_adm_lmi_cpt_general'
+        BX_DOL_STUDIO_TEMPL_TYPE_SETTINGS => array('caption' => '_adm_lmi_cpt_settings', 'icon' => 'cogs')
     );
 
     function __construct($sTemplate = "", $sPage = "")
@@ -55,12 +55,12 @@ class BxBaseStudioDesign extends BxDolStudioDesign
         $sJsObject = $this->getPageJsObject();
 
         $aMenu = array();
-        foreach($this->aMenuItems as $sName => $sCaption)
+        foreach($this->aMenuItems as $sName => $aItem)
             $aMenu[] = array(
                 'name' => $sName,
-                'icon' => 'mi-templ-' . $sName . '.png',
+                'icon' => $aItem['icon'],
                 'link' => BX_DOL_URL_STUDIO . 'design.php?name=' . $this->sTemplate . '&page=' . $sName,
-                'title' => _t($sCaption),
+                'title' => _t($aItem['caption']),
                 'selected' => $sName == $this->sPage
             );
 
@@ -78,7 +78,7 @@ class BxBaseStudioDesign extends BxDolStudioDesign
         return $this->$sMethod();
     }
 
-    protected function getGeneral()
+    protected function getSettings()
     {
         $oTemplate = BxDolStudioTemplate::getInstance();
 

+ 17 - 7
studio/template/scripts/BxBaseStudioDesigner.php

@@ -41,15 +41,15 @@ class BxBaseStudioDesigner extends BxDolStudioDesigner
 
         $aMenu = array();
         $aMenuItems = array(
-            BX_DOL_STUDIO_DSG_TYPE_GENERAL,
-            BX_DOL_STUDIO_DSG_TYPE_LOGO,
-            BX_DOL_STUDIO_DSG_TYPE_ICON,
-            BX_DOL_STUDIO_DSG_TYPE_SETTINGS
+            BX_DOL_STUDIO_DSG_TYPE_GENERAL => array('icon' => 'globe'),
+            BX_DOL_STUDIO_DSG_TYPE_LOGO => array('icon' => 'pencil'),
+            BX_DOL_STUDIO_DSG_TYPE_ICON => array('icon' => 'picture-o'),
+            BX_DOL_STUDIO_DSG_TYPE_SETTINGS => array('icon' => 'cogs'),
         );
-        foreach($aMenuItems as $sMenuItem)
+        foreach($aMenuItems as $sMenuItem => $aItem)
             $aMenu[] = array(
                 'name' => $sMenuItem,
-                'icon' => 'mi-dsg-' . $sMenuItem . '.png',
+                'icon' => $aItem['icon'],
                 'link' => BX_DOL_URL_STUDIO . 'designer.php?page=' . $sMenuItem,
                 'title' => _t('_adm_lmi_cpt_' . $sMenuItem),
                 'selected' => $sMenuItem == $this->sPage
@@ -78,12 +78,22 @@ class BxBaseStudioDesigner extends BxDolStudioDesigner
 
         $aTmplVarsTemplates = array ();
         foreach($aTemplates as $sUri => $aTemplate) {
+        	$sIcon = $this->getModuleIcon($aTemplate, 'store');
+	        $bIcon = strpos($sIcon, '.') === false;
+
             $aTmplVarsTemplates[] = array(
                 'uri' => $sUri,
                 'title' => htmlspecialchars_adv($aTemplate['title']),
                 'version' => htmlspecialchars_adv($aTemplate['version']),
                 'vendor' => htmlspecialchars_adv($aTemplate['vendor']),
-                'icon' => $this->getModuleIcon($aTemplate['name'], 'store'),
+            	'bx_if:icon' => array (
+	                'condition' => $bIcon,
+	                'content' => array('icon' => $sIcon),
+	            ),
+                'bx_if:image' => array (
+	                'condition' => !$bIcon,
+	                'content' => array('icon_url' => $sIcon),
+	            ),
                 'bx_if:default' => array (
                     'condition' => $sUri == $sTemplate,
                     'content' => array (),

+ 7 - 7
studio/template/scripts/BxBaseStudioForms.php

@@ -45,16 +45,16 @@ class BxBaseStudioForms extends BxDolStudioForms
 
         $aMenu = array();
         $aMenuItems = array(
-            BX_DOL_STUDIO_FORM_TYPE_FORMS,
-            BX_DOL_STUDIO_FORM_TYPE_DISPLAYS,
-            BX_DOL_STUDIO_FORM_TYPE_FIELDS,
-            BX_DOL_STUDIO_FORM_TYPE_PRE_LISTS,
-            BX_DOL_STUDIO_FORM_TYPE_PRE_VALUES
+            BX_DOL_STUDIO_FORM_TYPE_FORMS => array('icon' => 'list-alt'),
+            BX_DOL_STUDIO_FORM_TYPE_DISPLAYS => array('icon' => 'desktop'),
+            BX_DOL_STUDIO_FORM_TYPE_FIELDS => array('icon' => 'check-square'),
+            BX_DOL_STUDIO_FORM_TYPE_PRE_LISTS => array('icon' => 'align-justify'),
+            BX_DOL_STUDIO_FORM_TYPE_PRE_VALUES => array('icon' => 'indent'),
         );
-        foreach($aMenuItems as $sMenuItem)
+        foreach($aMenuItems as $sMenuItem => $aItem)
             $aMenu[] = array(
                 'name' => $sMenuItem,
-                'icon' => 'mi-form-' . $sMenuItem . '.png',
+                'icon' => $aItem['icon'], 'mi-form-' . $sMenuItem . '.png',
                 'link' => $this->sSubpageUrl . $sMenuItem,
                 'title' => _t('_adm_lmi_cpt_' . $sMenuItem),
                 'selected' => $sMenuItem == $this->sPage

+ 5 - 5
studio/template/scripts/BxBaseStudioLanguage.php

@@ -14,7 +14,7 @@ bx_import('BxDolStudioLanguage');
 class BxBaseStudioLanguage extends BxDolStudioLanguage
 {
     protected $aMenuItems = array(
-        'general' => '_adm_lmi_cpt_general'
+        BX_DOL_STUDIO_LANG_TYPE_SETTINGS => array('caption' => '_adm_lmi_cpt_settings', 'icon' => 'cogs')
     );
 
     function __construct($sLanguage = "", $sPage = "")
@@ -56,12 +56,12 @@ class BxBaseStudioLanguage extends BxDolStudioLanguage
         $sJsObject = $this->getPageJsObject();
 
         $aMenu = array();
-        foreach($this->aMenuItems as $sName => $sCaption)
+        foreach($this->aMenuItems as $sName => $aItem)
             $aMenu[] = array(
                 'name' => $sName,
-                'icon' => 'mi-lang-' . $sName . '.png',
+                'icon' => $aItem['icon'],
                 'link' => BX_DOL_URL_STUDIO . 'languages.php?name=' . $this->sLanguage . '&page=' . $sName,
-                'title' => _t($sCaption),
+                'title' => _t($aItem['caption']),
                 'selected' => $sName == $this->sPage
             );
 
@@ -80,7 +80,7 @@ class BxBaseStudioLanguage extends BxDolStudioLanguage
         return $this->$sMethod();
     }
 
-    protected function getGeneral()
+    protected function getSettings()
     {
         $oTemplate = BxDolStudioTemplate::getInstance();
 

+ 2 - 2
studio/template/scripts/BxBaseStudioModule.php

@@ -13,7 +13,7 @@ bx_import('BxDolStudioModule');
 class BxBaseStudioModule extends BxDolStudioModule
 {
     protected $aMenuItems = array(
-        array('name' => 'general', 'icon' => 'mi-mod-general.png', 'title' => '_adm_lmi_cpt_general')
+        array('name' => BX_DOL_STUDIO_MOD_TYPE_SETTINGS, 'icon' => 'cogs', 'title' => '_adm_lmi_cpt_settings')
     );
 
     function __construct($sModule = "", $sPage = "")
@@ -84,7 +84,7 @@ class BxBaseStudioModule extends BxDolStudioModule
         return $this->$sMethod();
     }
 
-    protected function getGeneral()
+    protected function getSettings()
     {
         $oTemplate = BxDolStudioTemplate::getInstance();
 

+ 5 - 5
studio/template/scripts/BxBaseStudioNavigation.php

@@ -43,14 +43,14 @@ class BxBaseStudioNavigation extends BxDolStudioNavigation
 
         $aMenu = array();
         $aMenuItems = array(
-            BX_DOL_STUDIO_NAV_TYPE_MENUS,
-            BX_DOL_STUDIO_NAV_TYPE_SETS,
-            BX_DOL_STUDIO_NAV_TYPE_ITEMS
+            BX_DOL_STUDIO_NAV_TYPE_MENUS => array('icon' => 'sitemap'),
+            BX_DOL_STUDIO_NAV_TYPE_SETS => array('icon' => 'align-justify'),
+            BX_DOL_STUDIO_NAV_TYPE_ITEMS => array('icon' => 'indent')
         );
-        foreach($aMenuItems as $sMenuItem)
+        foreach($aMenuItems as $sMenuItem => $aItem)
             $aMenu[] = array(
                 'name' => $sMenuItem,
-                'icon' => 'mi-nav-' . $sMenuItem . '.png',
+                'icon' => $aItem['icon'],
                 'link' => $this->sSubpageUrl . $sMenuItem,
                 'title' => _t('_adm_lmi_cpt_' . $sMenuItem),
                 'selected' => $sMenuItem == $this->sPage

+ 4 - 4
studio/template/scripts/BxBaseStudioPermissions.php

@@ -38,14 +38,14 @@ class BxBaseStudioPermissions extends BxDolStudioPermissions
 
         $aMenu = array();
         $aMenuItems = array(
-            BX_DOL_STUDIO_PRM_TYPE_LEVELS,
-            BX_DOL_STUDIO_PRM_TYPE_ACTIONS
+            BX_DOL_STUDIO_PRM_TYPE_LEVELS => array('icon' => 'sliders'),
+            BX_DOL_STUDIO_PRM_TYPE_ACTIONS => array('icon' => 'exchange')
         );
 
-        foreach($aMenuItems as $sMenuItem)
+        foreach($aMenuItems as $sMenuItem => $aItem)
             $aMenu[] = array(
                 'name' => $sMenuItem,
-                'icon' => 'mi-prm-' . $sMenuItem . '.png',
+                'icon' => $aItem['icon'],
                 'link' => $this->sSubpageUrl . $sMenuItem,
                 'title' => _t('_adm_lmi_cpt_' . $sMenuItem),
                 'selected' => $sMenuItem == $this->sPage

+ 6 - 6
studio/template/scripts/BxBaseStudioPolyglot.php

@@ -14,9 +14,9 @@ class BxBaseStudioPolyglot extends BxDolStudioPolyglot
 {
     protected $sSubpageUrl;
     protected $aMenuItems = array(
-        BX_DOL_STUDIO_PGT_TYPE_GENERAL,
-        BX_DOL_STUDIO_PGT_TYPE_KEYS,
-        BX_DOL_STUDIO_PGT_TYPE_ETEMPLATES
+        BX_DOL_STUDIO_PGT_TYPE_SETTINGS => array('icon' => 'cogs'),
+        BX_DOL_STUDIO_PGT_TYPE_KEYS => array('icon' => 'key'),
+        BX_DOL_STUDIO_PGT_TYPE_ETEMPLATES => array('icon' => 'envelope-o')
     );
     protected $aGridObjects = array(
         'keys' => 'sys_studio_lang_keys',
@@ -58,10 +58,10 @@ class BxBaseStudioPolyglot extends BxDolStudioPolyglot
         $sJsObject = $this->getPageJsObject();
 
         $aMenu = array();
-        foreach($this->aMenuItems as $sMenuItem)
+        foreach($this->aMenuItems as $sMenuItem => $aItem)
             $aMenu[] = array(
                 'name' => $sMenuItem,
-                'icon' => 'mi-pgt-' . $sMenuItem . '.png',
+                'icon' => $aItem['icon'],
                 'link' => $this->sSubpageUrl . $sMenuItem,
                 'title' => _t('_adm_lmi_cpt_' . $sMenuItem),
                 'selected' => $sMenuItem == $this->sPage
@@ -79,7 +79,7 @@ class BxBaseStudioPolyglot extends BxDolStudioPolyglot
         return $this->$sMethod();
     }
 
-    protected function getGeneral()
+    protected function getSettings()
     {
         $oTemplate = BxDolStudioTemplate::getInstance();
 

+ 12 - 4
studio/template/scripts/BxBaseStudioSettings.php

@@ -249,12 +249,20 @@ class BxBaseStudioSettings extends BxDolStudioSettings
     }
     protected function getMenuIcon($sGroup, &$aType)
     {
-        $oTemplate = BxDolStudioTemplate::getInstance();
-
-        if(empty($aType['icon']) || ($sUrl = $oTemplate->getIconUrl($aType['icon'])) == "")
+        bx_import('BxDolStudioUtils');
+        if(empty($aType['icon']) || ($sUrl = BxDolStudioTemplate::getInstance()->getIconUrl($aType['icon'])) == "")
             switch($sGroup) {
                 case BX_DOL_STUDIO_STG_GROUP_MODULES:
-                    $aType['icon'] = 'mi-mod-empty.png';
+                	$aType['icon'] = BxDolStudioUtils::getIconDefault(BX_DOL_MODULE_TYPE_MODULE);
+                	break;
+
+                case BX_DOL_STUDIO_STG_GROUP_LANGUAGES:
+                	$aType['icon'] = BxDolStudioUtils::getIconDefault(BX_DOL_MODULE_TYPE_LANGUAGE);
+                	break;
+
+                case BX_DOL_STUDIO_STG_GROUP_TEMPLATES:
+                    $aType['icon'] = BxDolStudioUtils::getIconDefault(BX_DOL_MODULE_TYPE_TEMPLATE);
+                	break;
             }
 
         return $aType['icon'];

+ 55 - 14
studio/template/scripts/BxBaseStudioStore.php

@@ -41,11 +41,18 @@ class BxBaseStudioStore extends BxDolStudioStore
         $oTemplate = BxDolStudioTemplate::getInstance();
 
         $aMenu = array();
-        $aMenuItems = array('goodies', 'featured', 'purchases', 'updates', 'checkout', 'downloaded');
-        foreach($aMenuItems as $sMenuItem)
+        $aMenuItems = array(
+	        'goodies' => array('icon' => 'home'), 
+	        'featured' => array('icon' => 'thumbs-up'), 
+	        'purchases' => array('icon' => 'shopping-cart'), 
+	        'updates' => array('icon' => 'refresh'), 
+	        'checkout' => array('icon' => 'credit-card'), 
+	        'downloaded' => array('icon' => 'list')
+        );
+        foreach($aMenuItems as $sMenuItem => $aItem)
             $aMenu[] = array(
                 'name' => $sMenuItem,
-                'icon' => 'mi-str-' . $sMenuItem . '.png',
+                'icon' => $aItem['icon'],
                 'link' => BX_DOL_URL_STUDIO . 'store.php?page=' . $sMenuItem,
                 'title' => _t('_adm_lmi_cpt_' . $sMenuItem),
                 'selected' => $sMenuItem == $this->sPage
@@ -321,14 +328,20 @@ class BxBaseStudioStore extends BxDolStudioStore
 
         //--- Prepare modules.
         foreach($aProducts['modules'] as $aModule) {
-            $sIcon = $oTemplate->getIconUrl($aModule['name'] . '@modules/' . $aModule['dir'] . '|std-si.png');
-            if(empty($sIcon))
-                $sIcon = $oTemplate->getIconUrl('si-mod-empty.png');
+        	$sIcon = BxDolStudioUtils::getModuleIcon($aModule, 'store');
+        	$bIcon = strpos($sIcon, '.') === false;
 
             $sModules .= $oTemplate->parseHtmlByName('str_product_v1.html', array(
                 'js_object' => $sJsObject,
                 'url' => $aModule['link_market'],
-                'icon' => $sIcon,
+                'bx_if:icon' => array (
+	                'condition' => $bIcon,
+	                'content' => array('icon' => $sIcon),
+	            ),
+                'bx_if:image' => array (
+	                'condition' => !$bIcon,
+	                'content' => array('icon_url' => $sIcon),
+	            ),
                 'title' => $aModule['title'],
                 'vendor' => $aModule['vendor'],
                 'version' => $aModule['version'],
@@ -346,14 +359,20 @@ class BxBaseStudioStore extends BxDolStudioStore
 
         //--- Prepare updates.
         foreach($aProducts['updates'] as $aUpdate) {
-            $sIcon = $oTemplate->getIconUrl($aUpdate['module_name'] . '@modules/' . $aUpdate['module_dir'] . '|std-si.png');
-            if(empty($sIcon))
-                $sIcon = $oTemplate->getIconUrl('si-mod-empty.png');
+        	$sIcon = BxDolStudioUtils::getModuleIcon(array('type' => $aUpdate['module_type'], 'name' => $aUpdate['module_name'], 'dir' => $aUpdate['module_dir']), 'store');
+        	$bIcon = strpos($sIcon, '.') === false;
 
             $sUpdates .= $oTemplate->parseHtmlByName('str_update_v1.html', array(
                 'js_object' => $sJsObject,
                 'url' => $aUpdate['module_link_market'],
-                'icon' => $sIcon,
+                'bx_if:icon' => array (
+	                'condition' => $bIcon,
+	                'content' => array('icon' => $sIcon),
+	            ),
+                'bx_if:image' => array (
+	                'condition' => !$bIcon,
+	                'content' => array('icon_url' => $sIcon),
+	            ),
                 'title' => $aUpdate['title'],
                 'vendor' => $aUpdate['vendor'],
                 'versions' => _t('_adm_str_txt_update_from_to', $aUpdate['version_from'], $aUpdate['version_to']),
@@ -394,7 +413,9 @@ class BxBaseStudioStore extends BxDolStudioStore
             'bx_repeat:blocks' => array(
                 array(
                     'caption' => $this->getBlockCaption(array('caption' => _t($sCaption), 'actions' => $aActions)),
-                    'items' => MsgBox(_t($sContent))
+                	'panel_top' => '',
+                    'items' => MsgBox(_t($sContent)),
+                	'panel_bottom' => ''
                 )
             )
         ));
@@ -534,11 +555,21 @@ class BxBaseStudioStore extends BxDolStudioStore
             $sPrice = !$bFree ? _t('_adm_str_txt_price_csign', $aItem['currency_sign'], $aItem['price']) : _t('_adm_str_txt_price_free');
             $sDiscount = !$bFree && !empty($aItem['discount']) ? _t('_adm_str_txt_discount_csign', $aItem['currency_sign'], $aItem['discount']['price']) : '';
 
+            $sIcon = !empty($aItem['thumbnail']['big']) ? $aItem['thumbnail']['big'] : BxDolStudioUtils::getIconDefault(BX_DOL_MODULE_TYPE_MODULE);
+			$bIcon = strpos($sIcon, '.') === false;
+
             $sResult .= $oTemplate->parseHtmlByName('str_product_v2.html', array(
                 'js_object' => $sJsObject,
                 'id' => $aItem['id'],
                 'url' => $aItem['url'],
-                'icon' => !empty($aItem['thumbnail']['big']) ? $aItem['thumbnail']['big'] : $oTemplate->getIconUrl('si-mod-empty.png'),
+                'bx_if:icon' => array (
+	                'condition' => $bIcon,
+	                'content' => array('icon' => $sIcon),
+	            ),
+                'bx_if:image' => array (
+	                'condition' => !$bIcon,
+	                'content' => array('icon_url' => $sIcon),
+	            ),
                 'title' => $aItem['title'],
                 'bx_if:show_vendor_price' => array(
                     'condition' => !$bShoppingCart,
@@ -598,11 +629,21 @@ class BxBaseStudioStore extends BxDolStudioStore
         foreach($aItems as $aItem) {
             $bDownloadable = (int)$aItem['is_file'] == 1;
 
+            $sIcon = !empty($aItem['thumbnail']['big']) ? $aItem['thumbnail']['big'] : BxDolStudioUtils::getIconDefault(BX_DOL_MODULE_TYPE_MODULE);
+			$bIcon = strpos($sIcon, '.') === false;
+
             $sResult .= $oTemplate->parseHtmlByName('str_update_v2.html', array(
                 'js_object' => $sJsObject,
                 'id' => $aItem['id'],
                 'url' => $aItem['url'],
-                'icon' => !empty($aItem['thumbnail']['big']) ? $aItem['thumbnail']['big'] : $oTemplate->getIconUrl('si-mod-empty.png'),
+            	'bx_if:icon' => array (
+	                'condition' => $bIcon,
+	                'content' => array('icon' => $sIcon),
+	            ),
+                'bx_if:image' => array (
+	                'condition' => !$bIcon,
+	                'content' => array('icon_url' => $sIcon),
+	            ),
                 'title' => $aItem['title'],
                 'vendor' => $aItem['author'],
                 'versions' => _t('_adm_str_txt_update_from_to', $aItem['file_version'], $aItem['file_version_to']),

+ 36 - 6
studio/template/scripts/BxBaseStudioWidgets.php

@@ -76,9 +76,16 @@ class BxBaseStudioWidgets extends BxDolStudioWidgets
                 $aService = unserialize($aWidget['cnt_actions']);
                 $aActions = BxDolService::call($aService['module'], $aService['method'], array_merge(array($aWidget), $aService['params']), $aService['class']);
 
-                foreach($aActions as $aAction)
+                foreach($aActions as $aAction) {
+                	$sActionIcon = $aAction['icon'];
+                	$bActionIcon = strpos($sActionIcon, '.') === false;
+
+                	if(!$bActionIcon)
+						$sActionIcon = $oTemplate->getIconUrl($sActionIcon);
+
+                	$sCaption = _t($aAction['caption']);
                     $aTmplVarsActions[] = array(
-                        'caption' => _t($aAction['caption']),
+                        'caption' => $sCaption,
                         'url' => !empty($aAction['url']) ? $oTemplate->parseHtmlByContent($aAction['url'], $aParseVars, array('{', '}')) : 'javascript:void(0)',
                         'bx_if:show_click' => array(
                             'condition' => !empty($aAction['click']),
@@ -86,10 +93,21 @@ class BxBaseStudioWidgets extends BxDolStudioWidgets
                                 'content' => 'javascript:' . $aAction['click'],
                             )
                         ),
-                        'icon' => $oTemplate->getIconUrl($aAction['icon'])
+                        'bx_if:action_icon' => array (
+			                'condition' => $bActionIcon,
+			                'content' => array('icon' => $sActionIcon, 'caption' => $sCaption),
+			            ),
+		                'bx_if:action_image' => array (
+			                'condition' => !$bActionIcon,
+			                'content' => array('icon_url' => $sActionIcon, 'caption' => $sCaption),
+			            ),
                     );
+                }
             }
 
+            $sIcon = $this->getIcon($aWidget);
+            $bIcon = strpos($sIcon, '.') === false;
+
             $aTmplVars[] = array(
                 'id' => $aWidget['id'],
                 'url' => !empty($aWidget['url']) ? $oTemplate->parseHtmlByContent($aWidget['url'], $aParseVars, array('{', '}')) : 'javascript:void(0)',
@@ -117,7 +135,14 @@ class BxBaseStudioWidgets extends BxDolStudioWidgets
                         'bx_repeat:actions' => $aTmplVarsActions,
                     )
                 ),
-                'icon' => $this->getIcon($aWidget),
+	            'bx_if:icon' => array (
+	                'condition' => $bIcon,
+	                'content' => array('icon' => $sIcon),
+	            ),
+                'bx_if:image' => array (
+	                'condition' => !$bIcon,
+	                'content' => array('icon_url' => $sIcon),
+	            ),
                 'caption' => _t($aWidget['caption']),
                 'widget_disabled_class' => !$this->isEnabled($aWidget) ? 'bx-std-widget-icon-disabled' : '',
                 'widget_bookmarked_class' => (int)$aWidget['bookmark'] == 1 ? 'bx-std-widget-icon-bookmarked' : '',
@@ -135,8 +160,13 @@ class BxBaseStudioWidgets extends BxDolStudioWidgets
         $oTemplate = BxDolStudioTemplate::getInstance();
 
         $sUrl = $oTemplate->getIconUrl($aWidget['icon']);
-        if(empty($sUrl))
-            $sUrl = $oTemplate->getIconUrl('wi-empty.png');
+        if(empty($sUrl)) {
+        	bx_import('BxDolModuleQuery');
+	        $aModule = BxDolModuleQuery::getInstance()->getModuleByName($aWidget['module']);
+
+        	bx_import('BxDolStudioUtils');
+            $sUrl = BxDolStudioUtils::getIconDefault($aModule['type']);
+        }
 
         return $sUrl;
     }

+ 5 - 1
studio/template/str_product_v1.html

@@ -1,7 +1,11 @@
 <div class="bx-std-product bx-def-widget-size-max-height bx-def-margin-bottom">
     <div class="bx-stdp-icon bx-def-widget-size bx-def-round-corners-widget">
         <a href="__url__">
-            <img class="bx-def-widget-size" src="__icon__" />
+			<bx_if:icon>
+				<img class="bx-def-widget-size" src="<bx_icon_url:wi-empty.png />" />
+				<i class="sys-icon __icon__"></i>
+			</bx_if:icon>
+			<bx_if:image><img class="bx-def-widget-size" src="__icon_url__" /></bx_if:image>
         </a>
     </div>
     <div class="bx-stdp-content bx-def-widget-size-min-height bx-def-widget-size-left-indent bx-def-margin-right">

+ 5 - 1
studio/template/str_product_v2.html

@@ -1,7 +1,11 @@
 <div class="bx-std-product bx-def-widget-size-max-height bx-def-margin-bottom" id="bx-std-product-__id__">
     <div class="bx-stdp-icon bx-def-widget-size bx-def-round-corners-widget">
         <a href="javascript:void(0)" onclick="javascript:__js_object__.info(__id__, this)">
-            <img class="bx-def-widget-size" src="__icon__" />
+            <bx_if:icon>
+				<img class="bx-def-widget-size" src="<bx_icon_url:wi-empty.png />" />
+				<i class="sys-icon __icon__"></i>
+			</bx_if:icon>
+			<bx_if:image><img class="bx-def-widget-size" src="__icon_url__" /></bx_if:image>
         </a>
     </div>
     <div class="bx-stdp-content bx-def-widget-size-min-height bx-def-widget-size-left-indent bx-def-margin-right">

+ 5 - 1
studio/template/str_update_v1.html

@@ -1,7 +1,11 @@
 <div class="bx-std-product bx-stdp-update bx-def-widget-size-max-height bx-def-margin-bottom">
     <div class="bx-stdp-icon bx-def-widget-size bx-def-round-corners-widget">
         <a  href="__url__">
-            <img class="bx-def-widget-size" src="__icon__" />
+            <bx_if:icon>
+				<img class="bx-def-widget-size" src="<bx_icon_url:wi-empty.png />" />
+				<i class="sys-icon __icon__"></i>
+			</bx_if:icon>
+			<bx_if:image><img class="bx-def-widget-size" src="__icon_url__" /></bx_if:image>
         </a>
     </div>
     <div class="bx-stdp-content bx-def-widget-size-min-height bx-def-widget-size-left-indent bx-def-margin-right">

+ 5 - 1
studio/template/str_update_v2.html

@@ -1,7 +1,11 @@
 <div class="bx-std-product bx-stdp-update bx-def-widget-size-max-height bx-def-margin-bottom" id="bx-std-product-__id__">
     <div class="bx-stdp-icon bx-def-widget-size bx-def-round-corners-widget">
         <a href="javascript:void(0)" onclick="javascript:__js_object__.info(__id__, this)">
-            <img class="bx-def-widget-size" src="__icon__" />
+            <bx_if:icon>
+				<img class="bx-def-widget-size" src="<bx_icon_url:wi-empty.png />" />
+				<i class="sys-icon __icon__"></i>
+			</bx_if:icon>
+			<bx_if:image><img class="bx-def-widget-size" src="__icon_url__" /></bx_if:image>
         </a>
     </div>
     <div class="bx-stdp-content bx-def-widget-size-min-height bx-def-widget-size-left-indent bx-def-margin-right">

+ 5 - 1
studio/template/templates.html

@@ -3,7 +3,11 @@
         <div class="bx-def-hr-auto bx-def-margin-top bx-def-margin-bottom"></div>
         <div class="bx-dsg-template">
             <div class="bx-dsg-icon bx-def-widget-size bx-def-round-corners-widget">
-				<img class="bx-def-widget-size" src="__icon__" />
+            	<bx_if:icon>
+                    <img class="bx-def-widget-size" src="<bx_icon_url:wi-empty.png />" />
+                    <i class="sys-icon __icon__ bx-def-widget-size"></i>
+                </bx_if:icon>
+                <bx_if:image><img class="bx-def-widget-size" src="__icon_url__" /></bx_if:image>
             </div>
             <div class="bx-dsg-template-info bx-def-widget-size-min-height bx-def-widget-size-left-indent">
                 <div class="bx-dsg-template-title bx-def-margin-sec-top">

+ 7 - 2
studio/template/widgets.html

@@ -8,7 +8,11 @@
                 </div>
             </bx_if:show_notice>
             <a class="bx-std-widget-link" href="__url__" <bx_if:show_click_icon>onClick="__content__"</bx_if:show_click_icon>>
-                <img src="__icon__"  />
+                <bx_if:icon>
+                    <img src="<bx_icon_url:wi-empty.png />" />
+                    <i class="sys-icon __icon__"></i>
+                </bx_if:icon>
+                <bx_if:image><img src="__icon_url__" /></bx_if:image>
             </a>
         </div>
 
@@ -17,7 +21,8 @@
                 <bx_repeat:actions>
                     <div class="bx-std-widget-action">
                         <a class="bx-std-widget-action" href="__url__" <bx_if:show_click>onClick="__content__"</bx_if:show_click> title="__caption__">
-                            <img src="__icon__" alt="__caption__" />
+	                        <bx_if:action_icon><i class="sys-icon __icon__" alt="__caption__"></i></bx_if:action_icon>
+			                <bx_if:action_image><img src="__icon_url__"  alt="__caption__" /></bx_if:action_image>
                         </a>
                     </div>
                 </bx_repeat:actions>

BIN
template/images/icons/std-mi.png