Browse Source

#3530 Use inline SVG and Emoji in Icons

RomanL 5 years ago
parent
commit
dd5e79e1c2
57 changed files with 181 additions and 90 deletions
  1. 27 2
      inc/classes/BxDolTemplate.php
  2. 5 1
      modules/boonex/artificer/data/template/bx_timeline/menu_custom_item_bx_timeline_menu_view.html
  3. 1 2
      modules/boonex/artificer/data/template/system/menu_add_content.html
  4. 1 2
      modules/boonex/artificer/data/template/system/menu_buttons_hor.html
  5. 1 2
      modules/boonex/artificer/data/template/system/menu_buttons_icon_hor.html
  6. 5 1
      modules/boonex/artificer/data/template/system/menu_custom_item_sys_create_post.html
  7. 1 2
      modules/boonex/artificer/data/template/system/menu_dropdown_site.html
  8. 1 2
      modules/boonex/artificer/data/template/system/menu_floating_blocks_dash.html
  9. 1 0
      modules/boonex/artificer/data/template/system/menu_floating_blocks_wide.html
  10. 1 1
      modules/boonex/artificer/data/template/system/menu_horizontal.html
  11. 1 2
      modules/boonex/artificer/data/template/system/menu_main.html
  12. 1 0
      modules/boonex/artificer/data/template/system/menu_profile_followings.html
  13. 1 0
      modules/boonex/artificer/data/template/system/menu_profile_followings_subitems.html
  14. 1 0
      modules/boonex/artificer/data/template/system/menu_profile_stats.html
  15. 6 1
      modules/boonex/artificer/data/template/system/menu_toolbar.html
  16. 4 1
      modules/boonex/artificer/data/template/system/menu_vertical.html
  17. 1 2
      modules/boonex/decorous/data/template/system/menu_site.html
  18. 1 2
      modules/boonex/decorous/data/template/system/menu_site_submenu.html
  19. 6 1
      modules/boonex/decorous/data/template/system/menu_toolbar.html
  20. 1 0
      modules/boonex/developer/template/menu_main.html
  21. 1 1
      modules/boonex/english/data/langs/system/en.xml
  22. 1 2
      modules/boonex/lucid/data/template/system/menu_dropdown_site.html
  23. 1 2
      modules/boonex/lucid/data/template/system/menu_floating_blocks.html
  24. 1 2
      modules/boonex/lucid/data/template/system/menu_floating_blocks_big.html
  25. 5 1
      modules/boonex/lucid/data/template/system/menu_main_submenu.html
  26. 6 1
      modules/boonex/lucid/data/template/system/menu_toolbar.html
  27. 5 1
      modules/boonex/protean/data/template/system/menu_toolbar.html
  28. 1 1
      modules/boonex/russian/data/langs/system/ru.xml
  29. 5 1
      modules/boonex/timeline/template/menu_custom_item_hor.html
  30. 4 0
      studio/template/css/forms.css
  31. 4 2
      studio/template/css/navigation.css
  32. 1 2
      studio/template/menu_floating_blocks.html
  33. 3 0
      studio/template/nav_item_icon_preview.html
  34. 15 6
      studio/template/scripts/BxBaseStudioNavigationItems.php
  35. 1 2
      template/menu_buttons_hor.html
  36. 1 2
      template/menu_buttons_hor_item.html
  37. 1 2
      template/menu_buttons_icon_hor.html
  38. 1 2
      template/menu_buttons_icon_hor_item.html
  39. 1 2
      template/menu_buttons_ver.html
  40. 1 1
      template/menu_custom_item.html
  41. 1 2
      template/menu_floating_blocks.html
  42. 1 2
      template/menu_floating_blocks_big.html
  43. 1 2
      template/menu_floating_blocks_dash.html
  44. 1 2
      template/menu_floating_blocks_wide.html
  45. 1 0
      template/menu_footer.html
  46. 1 0
      template/menu_footer_subitems.html
  47. 1 1
      template/menu_horizontal.html
  48. 3 0
      template/menu_icon.html
  49. 1 2
      template/menu_inline.html
  50. 1 2
      template/menu_inline_sbtn.html
  51. 1 2
      template/menu_profile_followings.html
  52. 1 2
      template/menu_profile_followings_subitems.html
  53. 1 2
      template/menu_profile_stats.html
  54. 4 1
      template/menu_toolbar.html
  55. 2 1
      template/menu_vertical.html
  56. 1 2
      template/menu_vertical_lite.html
  57. 33 10
      template/scripts/BxBaseMenu.php

+ 27 - 2
inc/classes/BxDolTemplate.php

@@ -1736,16 +1736,41 @@ class BxDolTemplate extends BxDolFactory implements iBxDolSingleton
      */
     function parseIcon($sName, $aAttrs = array())
     {
+		$sClass = '';
         if(!empty($aAttrs['class'])) {
-            $sName .= ' ' . $aAttrs['class'];
+            $sClass = ' ' . $aAttrs['class'] .' ';
             unset($aAttrs['class']);
         }
 
         $sAttrs = '';
         foreach($aAttrs as $sKey => $sValue)
             $sAttrs .= ' ' . $sKey . '="' . bx_html_attribute($sValue) . '"';
+		
+		
+		if (strpos($sName, '<svg') !== false){
+			$sSvg = htmlspecialchars_decode($sName);
+			$sClass .= 'sys-icon sys-icon-svg ';
+			if (strpos($sSvg, 'class="') !== false)
+				$sSvg = str_replace('class="', 'class="' . $sClass, $sSvg);
+			else
+				$sSvg = str_replace('<svg', '<svg class="' . $sClass . '" ', $sSvg);
+
+			if ($sAttrs != '')
+				$sSvg = str_replace('<svg', '<svg ' . $sAttrs . ' ', $sSvg);
+			return htmlspecialchars_decode($sSvg);
+		}
+		// emoji
+		if(preg_match('/([0-9#][\x{20E3}])|[\x{00ae}\x{00a9}\x{203C}\x{2047}\x{2048}\x{2049}\x{3030}\x{303D}\x{2139}\x{2122}\x{3297}\x{3299}][\x{FE00}-\x{FEFF}]?|[\x{2190}-\x{21FF}][\x{FE00}-\x{FEFF}]?|[\x{2300}-\x{23FF}][\x{FE00}-\x{FEFF}]?|[\x{2460}-\x{24FF}][\x{FE00}-\x{FEFF}]?|[\x{25A0}-\x{25FF}][\x{FE00}-\x{FEFF}]?|[\x{2600}-\x{27BF}][\x{FE00}-\x{FEFF}]?|[\x{2900}-\x{297F}][\x{FE00}-\x{FEFF}]?|[\x{2B00}-\x{2BF0}][\x{FE00}-\x{FEFF}]?|[\x{1F000}-\x{1F6FF}][\x{FE00}-\x{FEFF}]?/u', $sName, $a)){
+			return '<i class="sys-icon sys-icon-emoji' . $sClass . '"' . $sAttrs . '>' . $sName . '</i>';
+		}
+		
+		// font
+		if(!empty($aAttrs['class'])) {
+			$sName .= ' ' . $aAttrs['class'];
+			unset($aAttrs['class']);
+		}
+		return '<i class="sys-icon ' . $sName .' ' . $sClass . '"' . $sAttrs . '></i>';
 
-        return '<i class="sys-icon ' . $sName . '"' . $sAttrs . '></i>';
     }
 
     function getCacheFilePrefix($sType)

+ 5 - 1
modules/boonex/artificer/data/template/bx_timeline/menu_custom_item_bx_timeline_menu_view.html

@@ -1,4 +1,8 @@
 <div class="relative w-full __class_wrp__">
-    <a class="__class_link__ group text-gray-600 dark:text-gray-300 hover:bg-gray-100 dark:hover:text-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 flex items-center p-2 text-sm font-normal rounded" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__><bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon><bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image><bx_if:title><span class="ml-2 first:ml-0">__title__</span></bx_if:title></a>
+    <a class="__class_link__ group text-gray-600 dark:text-gray-300 hover:bg-gray-100 dark:hover:text-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 flex items-center p-2 text-sm font-normal rounded" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__>
+		<bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+		<bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+		<bx_if:icon-html>__icon__</bx_if:icon-html>
+		<bx_if:title><span class="ml-2 first:ml-0">__title__</span></bx_if:title></a>
     <bx_if:addon>__addon__</bx_if:addon>
 </div>

+ 1 - 2
modules/boonex/artificer/data/template/system/menu_add_content.html

@@ -2,8 +2,7 @@
     <bx_repeat:menu_items><li class="bx-menu-item bx-menu-item-__name__ rounded __class_add__">
         <a href="__link__" onclick="__onclick__" class="group text-gray-600 dark:text-gray-300 hover:bg-gray-100 dark:hover:text-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 flex items-center p-2 text-sm font-normal rounded"__attrs__>
             <div class="bx-menu-floating-blocks-icon flex items-center justify-center text-gray-500 group-hover:text-gray-600 dark:group-hover:text-gray-300 mr-2 h-5 w-5">
-                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                <bx_include_auto:menu_icon.html />
             </div>
             <div class="bx-menu-floating-blocks-title ml-1">__title__</div>
         </a>__popup__

+ 1 - 2
modules/boonex/artificer/data/template/system/menu_buttons_hor.html

@@ -1,7 +1,6 @@
 <ul class="bx-menu-btns-hor bx-menu-object-__object__ flex flex-row">
     <bx_repeat:menu_items><li class="bx-menu-item __name__ __class_add__ my-1 mr-4 last:mr-0"><a class="bx-btn __name__" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__>
-        <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
-        <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+        <bx_include_auto:menu_icon.html />
         <bx_if:title><u>__title__</u></bx_if:title>
     </a></li></bx_repeat:menu_items>
 </ul>

+ 1 - 2
modules/boonex/artificer/data/template/system/menu_buttons_icon_hor.html

@@ -1,6 +1,5 @@
 <ul class="bx-menu-btns-icon-hor bx-menu-object-__object__ flex flex-row">
     <bx_repeat:menu_items><li class="bx-menu-item __name__ my-1 __class_add__"><a class="bx-btn __name__ mr-4" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__>
-        <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
-        <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+        <bx_include_auto:menu_icon.html />
     </a></li></bx_repeat:menu_items>
 </ul>

+ 5 - 1
modules/boonex/artificer/data/template/system/menu_custom_item_sys_create_post.html

@@ -1,4 +1,8 @@
 <div class="relative w-full __class_wrp__">
-    <a class="__class_link__ group text-gray-600 dark:text-gray-300 hover:bg-gray-100 dark:hover:text-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 flex items-center p-2 text-sm font-normal rounded" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__><bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon><bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image><bx_if:title><span class="ml-2 first:ml-0">__title__</span></bx_if:title></a>
+    <a class="__class_link__ group text-gray-600 dark:text-gray-300 hover:bg-gray-100 dark:hover:text-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 flex items-center p-2 text-sm font-normal rounded" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__>
+		<bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+		<bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+		<bx_if:icon-html>__icon__</bx_if:icon-html>
+		<bx_if:title><span class="ml-2 first:ml-0">__title__</span></bx_if:title></a>
     <bx_if:addon>__addon__</bx_if:addon>
 </div>

+ 1 - 2
modules/boonex/artificer/data/template/system/menu_dropdown_site.html

@@ -1,8 +1,7 @@
 <bx_repeat:menu_items>
     <li class="bx-menu-item-cd bx-menu-item-cd-__name__ __class_add__">
         <a href="__link__" onclick="__onclick__"__attrs__>
-            <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-            <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+            <bx_include_auto:menu_icon.html />
             <span>__title__</span>
         </a>
         <bx_if:show_submenu>

+ 1 - 2
modules/boonex/artificer/data/template/system/menu_floating_blocks_dash.html

@@ -4,8 +4,7 @@
             <div class="bx-menu-floating-blocks-dash-item group bg-white hover: bg-gray-50 dark:bg-gray-800 dark:hover:bg-gray-700 p-2 mx-2 rounded box-border bx-def-box __class_add__">
                 <a class="flex items-center" href="__link__" onclick="__onclick__"__attrs__>
                     <div class="bx-menu-floating-blocks-icon flex items-center justify-center w-10 h-10 mx-1 bg-gray-100 group-hover:bg-gray-200 dark:bg-gray-700 dark:group-hover:bg-gray-600 rounded-full text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-800 focus:ring-white">
-                        <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                        <bx_if:image><img style="background-image:url(__icon_url__)" src="><bx_icon_url:spacer.gif />" /></bx_if:image>
+                        <bx_include_auto:menu_icon.html />
                     </div>
                     <div class="bx-menu-floating-blocks-dash-title">
                         <div class="bx-menu-floating-blocks-title text-gray-400 group-hover:text-gray-600 dark:group-hover:text-gray-100">__title__</div>

+ 1 - 0
modules/boonex/artificer/data/template/system/menu_floating_blocks_wide.html

@@ -4,6 +4,7 @@
             <div class="bx-menu-floating-blocks-icon mr-3 h-5 w-5">
                 <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
                 <bx_if:image><img class="h-5 w-5" style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+				<bx_if:icon-html>__icon__</bx_if:icon-html>
             </div>
             <div class="bx-menu-floating-blocks-title bx-def-font-middle">__title__</div>
         </a>

+ 1 - 1
modules/boonex/artificer/data/template/system/menu_horizontal.html

@@ -1,7 +1,7 @@
 <ul class="bx-menu-hor bx-menu-object-__object__ flex flex-row">
     <bx_repeat:menu_items>
         <li class="bx-def-margin-right-auto __class_add__">
-            <a href="__link__" onclick="__onclick__"__attrs__><bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon><bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image><bx_if:title><span>__title__</span></bx_if:title></a>
+            <a href="__link__" onclick="__onclick__"__attrs__><bx_include_auto:menu_icon.html /><bx_if:title><span>__title__</span></bx_if:title></a>
         </li>
     </bx_repeat:menu_items>
 </ul>

+ 1 - 2
modules/boonex/artificer/data/template/system/menu_main.html

@@ -2,8 +2,7 @@
     <bx_repeat:menu_items><li class="bx-menu-item bx-menu-item-__name__ rounded __class_add__">
         <a href="__link__" onclick="__onclick__" class="group text-gray-600 dark:text-gray-300 hover:bg-gray-100 dark:hover:text-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 flex items-center p-2 text-sm font-normal rounded"__attrs__>
             <div class="bx-menu-floating-blocks-icon flex items-center justify-center text-gray-500 group-hover:text-gray-600 dark:group-hover:text-gray-300 mr-2 h-5 w-5">
-                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                <bx_include_auto:menu_icon.html />
             </div>
             <div class="bx-menu-floating-blocks-title">__title__</div>
         </a>__popup__

+ 1 - 0
modules/boonex/artificer/data/template/system/menu_profile_followings.html

@@ -6,6 +6,7 @@
                     <a class="flex items-center w-full uppercase" href="__link__" onclick="__onclick__"__attrs__>
                         <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
                         <bx_if:image><img class="w-6 bg-contain bx-no-repeat bg-center" style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+						<bx_if:icon-html>__icon__</bx_if:icon-html>
                         <span class="ml-2">__title__</span>
                     </a>
                     <span class="bx-menu-collapse pl-2">

+ 1 - 0
modules/boonex/artificer/data/template/system/menu_profile_followings_subitems.html

@@ -5,6 +5,7 @@
                 <a class="flex items-center" href="__link__" onclick="__onclick__"__attrs__>
                     <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
                     <bx_if:image><img class="w-6 bg-contain bx-no-repeat bg-center" style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+					<bx_if:icon-html>__icon__</bx_if:icon-html>
                     <span class="ml-2">__title__</span>
                 </a>
                 <bx_if:addon>

+ 1 - 0
modules/boonex/artificer/data/template/system/menu_profile_stats.html

@@ -6,6 +6,7 @@
                     <span class="mr-3 h-5 w-5">
                         <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
                         <bx_if:image><img class="h-5 w-5" style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+						<bx_if:icon-html>__icon__</bx_if:icon-html>
                     </span>
                     <span class="truncate">__title__</span>
                 </a>

+ 6 - 1
modules/boonex/artificer/data/template/system/menu_toolbar.html

@@ -1,7 +1,12 @@
 <ul class="bx-menu-toolbar bx-menu-object-__object__ flex items-center pr-0 md:pr-2">
     <bx_repeat:menu_items>
         <li id="bx-menu-toolbar-item-__name__" class="bx-menu-toolbar-item bx-menu-item-__name__ group relative inline-flex items-center ml-3 first:ml-0 text-gray-500 dark:text-gray-300 hover:text-gray-800 dark:hover:text-gray-100 border border-transparent rounded-full bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 __class_add__">
-            <a href="__link__" onclick="__onclick__" class="inline-block rounded-full __class_add_a__"__attrs__><bx_if:icon><span class="relative block h-8 w-8 flex items-center justify-center"><i class="sys-icon __icon__"></i></bx_if:icon><bx_if:icon-a><i class="sys-icon-a" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a><bx_if:image><img class="" src="__icon_url__" /></bx_if:image><bx_if:unit><div class="bx-menu-toolbar-item-unit">__unit__</div></bx_if:unit><bx_if:addon>__addonf__</bx_if:addon><bx_if:title><span class="bx-menu-toolbar-item-title sr-only">__title__</span></bx_if:title></a>
+            <a href="__link__" onclick="__onclick__" class="inline-block rounded-full __class_add_a__"__attrs__>
+				<bx_if:icon><span class="relative block h-8 w-8 flex items-center justify-center"><i class="sys-icon __icon__"></i></bx_if:icon>
+					<bx_if:icon-a><i class="sys-icon-a" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a>
+					<bx_if:image><img class="" src="__icon_url__" /></bx_if:image>
+					<bx_if:icon-html>__icon__</bx_if:icon-html>
+					<bx_if:unit><div class="bx-menu-toolbar-item-unit">__unit__</div></bx_if:unit><bx_if:addon>__addonf__</bx_if:addon><bx_if:title><span class="bx-menu-toolbar-item-title sr-only">__title__</span></bx_if:title></a>
         </li>
     </bx_repeat:menu_items>
 </ul>

+ 4 - 1
modules/boonex/artificer/data/template/system/menu_vertical.html

@@ -2,7 +2,10 @@
     <bx_repeat:menu_items>
         <li class="bx-menu-item __name__ __class_add__ group text-gray-600 dark:text-gray-300 hover:bg-gray-200 dark:hover:text-gray-100 dark:hover:bg-gray-600 hover:text-gray-900 flex items-center px-2 py-2 text-sm font-normal rounded">
             <a class="__name__" href="__link__" onclick="__onclick__"__attrs__>
-                <bx_if:icon><i class="sys-icon __icon__ mr-3 h-5 w-5"></i></bx_if:icon><bx_if:image><img class="mr-3 h-5 w-5" style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image><span>__title__</span>
+                <bx_if:icon><i class="sys-icon __icon__ mr-3 h-5 w-5"></i></bx_if:icon>
+				<bx_if:image><img class="mr-3 h-5 w-5" style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+				<bx_if:icon-html>__icon__</bx_if:icon-html>
+				<span>__title__</span>
             </a>
         </li>
     </bx_repeat:menu_items>

+ 1 - 2
modules/boonex/decorous/data/template/system/menu_site.html

@@ -2,8 +2,7 @@
     <bx_repeat:menu_items><li class="bx-def-round-corners bx-def-color-bg-hl-hover bx-def-box-sizing __class_add__">
         <a href="__link__" target="__target__" onclick="__onclick__">
             <div class="bx-menu-floating-blocks-icon">
-                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                <bx_include_auto:menu_icon.html />
             </div>
             <div class="bx-menu-floating-blocks-title bx-def-font-middle">__title__</div>
 			<bx_if:show_toggler>

+ 1 - 2
modules/boonex/decorous/data/template/system/menu_site_submenu.html

@@ -2,8 +2,7 @@
     <bx_repeat:submenu_items>
         <li class="__class_add__"><a class="bx-def-round-corners bx-def-color-bg-hl-hover " href="__link__" target="__target__" onclick="__onclick__">
             <div class="bx-menu-floating-blocks-icon">
-                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                <bx_include_auto:menu_icon.html />
             </div>
             <div class="bx-menu-floating-blocks-title">__title__</div>
         </a></li>

+ 6 - 1
modules/boonex/decorous/data/template/system/menu_toolbar.html

@@ -1,7 +1,12 @@
 <ul class="bx-menu-toolbar bx-menu-object-__object__">
     <bx_repeat:menu_items>
         <li id="bx-menu-toolbar-item-__name__" class="bx-menu-toolbar-item bx-menu-item-__name__ bx-def-padding-thd-leftright __class_add__">
-            <a href="__link__" onclick="__onclick__" class="bx-def-font-contrasted __class_add_a__"__attrs__><bx_if:title><span class="bx-menu-toolbar-item-title bx-def-margin-thd-leftright">__title__</span></bx_if:title><bx_if:icon><i class="sys-icon __icon__ bx-def-margin-thd-leftright"></i></bx_if:icon><bx_if:icon-a><i class="sys-icon-a bx-def-margin-thd-leftright" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a><bx_if:image><img class="bx-def-margin-thd-leftright" src="__icon_url__" /></bx_if:image><bx_if:unit><div class="bx-menu-toolbar-item-unit bx-def-margin-thd-leftright">__unit__</div></bx_if:unit><bx_if:addon>__addonf__</bx_if:addon></a>
+            <a href="__link__" onclick="__onclick__" class="bx-def-font-contrasted __class_add_a__"__attrs__><bx_if:title><span class="bx-menu-toolbar-item-title bx-def-margin-thd-leftright">__title__</span></bx_if:title>
+				<bx_if:icon><i class="sys-icon __icon__ bx-def-margin-thd-leftright"></i></bx_if:icon>
+				<bx_if:icon-a><i class="sys-icon-a bx-def-margin-thd-leftright" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a>
+				<bx_if:image><img class="bx-def-margin-thd-leftright" src="__icon_url__" /></bx_if:image>
+				<bx_if:icon-html>__icon__</bx_if:icon-html>
+				<bx_if:unit><div class="bx-menu-toolbar-item-unit bx-def-margin-thd-leftright">__unit__</div></bx_if:unit><bx_if:addon>__addonf__</bx_if:addon></a>
         </li>
     </bx_repeat:menu_items>
 </ul>

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

@@ -10,6 +10,7 @@
                             	<i class="sys-icon __icon__ bx-def-margin-sec-right"></i>
                             </bx_if:icon>
                             <bx_if:image><img src="__icon_url__" /></bx_if:image>
+							<bx_if:icon-html>__icon__</bx_if:icon-html>
                         </div>
                     </a>
                 </li>

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

@@ -843,7 +843,7 @@
   <string name="_adm_form_txt_badges_icon_image"><![CDATA[]]></string>
   <string name="_adm_form_txt_badges_icon_image_new"><![CDATA[]]></string>
   <string name="_adm_form_txt_badges_icon_image_old"><![CDATA[Current Icon]]></string>
-  <string name="_adm_form_dsc_badges_icon"><![CDATA[You may use font icon here]]></string>
+  <string name="_adm_form_dsc_badges_icon"><![CDATA[You may use: 1) font icon, 2) Inline SVG code, 3) Emoji]]></string>
   <string name="_adm_form_dsc_badges_items_icon_image_current"><![CDATA[]]></string>
   <string name="_adm_form_dsc_badges_icon_image"><![CDATA[or upload a small image to be displayed near the link.]]></string>
   <string name="_adm_form_dsc_badges_icon_image_current"><![CDATA[No icon uploaded. Text is used in menu item.]]></string>

+ 1 - 2
modules/boonex/lucid/data/template/system/menu_dropdown_site.html

@@ -1,8 +1,7 @@
 <bx_repeat:menu_items>
     <li class="bx-menu-item-cd bx-menu-item-cd-__name__ __class_add__">
         <a href="__link__" onclick="__onclick__"__attrs__>
-            <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-            <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+            <bx_include_auto:menu_icon.html />
             <span>__title__</span>
         </a>
         <bx_if:show_submenu>

+ 1 - 2
modules/boonex/lucid/data/template/system/menu_floating_blocks.html

@@ -2,8 +2,7 @@
     <bx_repeat:menu_items><li class="bx-menu-item bx-menu-item-__name__ bx-def-round-corners bx-def-color-bg-hl-hover bx-def-box-sizing __class_add__">
         <a href="__link__" onclick="__onclick__"__attrs__>
             <div class="bx-menu-floating-blocks-icon">
-                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+				<bx_include_auto:menu_icon.html />
             </div>
             <div class="bx-menu-floating-blocks-title">__title__</div>
         </a>__popup__                

+ 1 - 2
modules/boonex/lucid/data/template/system/menu_floating_blocks_big.html

@@ -3,8 +3,7 @@
     <bx_repeat:menu_items><li class="bx-def-box-sizing __class_add__">
         <a href="__link__" onclick="__onclick__"__attrs__>
             <div class="bx-menu-floating-blocks-icon">
-                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                <bx_include_auto:menu_icon.html />
             </div><div class="bx-menu-floating-blocks-title">__title__</div>
             <bx_if:show_arrow>
                 <div class="bx-menu-floating-blocks-arrow bx-def-padding-sec-left">

+ 5 - 1
modules/boonex/lucid/data/template/system/menu_main_submenu.html

@@ -2,7 +2,11 @@
 	<div class="bx-menu-main-submenu-group">
 		<ul id="bx-menu-main-submenu" class="bx-menu-main-submenu bx-menu-object-__object__ bx-clearfix">
 		    <bx_repeat:menu_items>
-		        <li class="bx-def-padding-sec-right bx-def-padding-sec-left __class_add__"><a href="__link__" onclick="__onclick__"__attrs__><bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon><bx_if:image><img src="__icon_url__" /></bx_if:image><span>__title__</span></a><div class="bx-mms-item-hr"></div></li>
+		        <li class="bx-def-padding-sec-right bx-def-padding-sec-left __class_add__"><a href="__link__" onclick="__onclick__"__attrs__>
+					<bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+					<bx_if:image><img src="__icon_url__" /></bx_if:image>
+					<bx_if:icon-html>__icon__</bx_if:icon-html>
+					<span>__title__</span></a><div class="bx-mms-item-hr"></div></li>
 		    </bx_repeat:menu_items>
 		</ul>
 		<div class="bx-menu-main-submenu-hr"></div>

+ 6 - 1
modules/boonex/lucid/data/template/system/menu_toolbar.html

@@ -1,7 +1,12 @@
 <ul class="bx-menu-toolbar bx-menu-object-__object__">
     <bx_repeat:menu_items>
         <li id="bx-menu-toolbar-item-__name__" class="bx-menu-toolbar-item bx-menu-item-__name__ bx-def-padding-sec __class_add__">
-            <a href="__link__" onclick="__onclick__" class="bx-def-align-center bx-def-font-contrasted __class_add_a__"__attrs__><bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon><bx_if:icon-a><i class="sys-icon-a" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a><bx_if:image><img class="" src="__icon_url__" /></bx_if:image><bx_if:unit><div class="bx-menu-toolbar-item-unit">__unit__</div></bx_if:unit><bx_if:addon>__addonf__</bx_if:addon><bx_if:title><span class="bx-menu-toolbar-item-title bx-def-margin-thd-left-auto">__title__</span></bx_if:title></a>
+            <a href="__link__" onclick="__onclick__" class="bx-def-align-center bx-def-font-contrasted __class_add_a__"__attrs__>
+				<bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+				<bx_if:icon-a><i class="sys-icon-a" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a>
+				<bx_if:image><img class="" src="__icon_url__" /></bx_if:image>
+				<bx_if:icon-html>__icon__</bx_if:icon-html>
+				<bx_if:unit><div class="bx-menu-toolbar-item-unit">__unit__</div></bx_if:unit><bx_if:addon>__addonf__</bx_if:addon><bx_if:title><span class="bx-menu-toolbar-item-title bx-def-margin-thd-left-auto">__title__</span></bx_if:title></a>
         </li>
     </bx_repeat:menu_items>
 </ul>

+ 5 - 1
modules/boonex/protean/data/template/system/menu_toolbar.html

@@ -1,7 +1,11 @@
 <ul class="bx-menu-toolbar bx-menu-object-__object__">
     <bx_repeat:menu_items>
         <li id="bx-menu-toolbar-item-__name__" class="bx-menu-toolbar-item bx-menu-item-__name__ bx-def-padding-thd-leftright __class_add__">
-            <a href="__link__" onclick="__onclick__" class="bx-def-font-contrasted"__attrs__><bx_if:title><span class="bx-menu-toolbar-item-title bx-def-margin-thd-leftright">__title__</span></bx_if:title><bx_if:icon><i class="sys-icon __icon__ bx-def-margin-thd-leftright"></i></bx_if:icon><bx_if:icon-a><i class="sys-icon-a bx-def-margin-thd-leftright" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a><bx_if:image><img class="bx-def-margin-thd-leftright" src="__icon_url__" /></bx_if:image><bx_if:unit><div class="bx-menu-toolbar-item-unit bx-def-margin-thd-leftright">__unit__</div></bx_if:unit><bx_if:addon>__addonf__</bx_if:addon></a>
+            <a href="__link__" onclick="__onclick__" class="bx-def-font-contrasted"__attrs__><bx_if:title><span class="bx-menu-toolbar-item-title bx-def-margin-thd-leftright">__title__</span></bx_if:title><bx_if:icon><i class="sys-icon __icon__ bx-def-margin-thd-leftright"></i></bx_if:icon>
+				<bx_if:icon-a><i class="sys-icon-a bx-def-margin-thd-leftright" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a>
+				<bx_if:image><img class="bx-def-margin-thd-leftright" src="__icon_url__" /></bx_if:image>
+				<bx_if:icon-html>__icon__</bx_if:icon-html>
+				<bx_if:unit><div class="bx-menu-toolbar-item-unit bx-def-margin-thd-leftright">__unit__</div></bx_if:unit><bx_if:addon>__addonf__</bx_if:addon></a>
         </li>
     </bx_repeat:menu_items>
 </ul>

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

@@ -836,7 +836,7 @@
   <string name="_adm_form_txt_badges_icon_image"><![CDATA[]]></string>
   <string name="_adm_form_txt_badges_icon_image_new"><![CDATA[]]></string>
   <string name="_adm_form_txt_badges_icon_image_old"><![CDATA[Текущая иконка]]></string>
-  <string name="_adm_form_dsc_badges_icon"><![CDATA[Вы можете использовать здесь иконку для шрифта]]></string>
+  <string name="_adm_form_dsc_badges_icon"><![CDATA[Вы можете использовать здесь: 1) иконку для шрифта, 2) html код SVG, 3) эмодзи]]></string>
   <string name="_adm_form_dsc_badges_items_icon_image_current"><![CDATA[]]></string>
   <string name="_adm_form_dsc_badges_icon_image"><![CDATA[или загрузить маленькую картинку для отображения рядом со ссылкой.]]></string>
   <string name="_adm_form_dsc_badges_icon_image_current"><![CDATA[Картинка не загружена. В бейдже будет использован текст.]]></string>

+ 5 - 1
modules/boonex/timeline/template/menu_custom_item_hor.html

@@ -1,4 +1,8 @@
 <span class="__class_wrp__ bx-def-margin-thd-topbottom">
-    <a class="__class_link__" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__><span class="bx-def-valign-center"><bx_if:icon><span class="bx-menu-item-icon bx-def-align-center"><i class="sys-icon __icon__"></i></span></bx_if:icon><bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image><bx_if:title><span class="bx-menu-item-title bx-def-margin-sec-left-auto">__title__</span></bx_if:title></span></a>
+    <a class="__class_link__" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__><span class="bx-def-valign-center">
+		<bx_if:icon><span class="bx-menu-item-icon bx-def-align-center"><i class="sys-icon __icon__"></i></span></bx_if:icon>
+		<bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+		<bx_if:icon-html>__icon__</bx_if:icon-html>
+		<bx_if:title><span class="bx-menu-item-title bx-def-margin-sec-left-auto">__title__</span></bx_if:title></span></a>
     <bx_if:addon>__addon__</bx_if:addon>
 </span>

+ 4 - 0
studio/template/css/forms.css

@@ -41,6 +41,10 @@
     line-height:normal;
 }
 
+.bx-form-value .bx-form-input-textarea-small {
+    height: 4.5rem;
+}
+
 .bx-form-value .bx-form-input-wrapper-textarea .CodeMirror {
     height: 30rem;
 }

+ 4 - 2
studio/template/css/navigation.css

@@ -25,12 +25,14 @@ div.bx-grid-header div#bx-form-element-keyword {
 }
 
 /*--- Items page ---*/
-img.bx-nav-item-icon {
+img.bx-nav-item-icon,
+svg.bx-nav-item-icon{
     width: 32px;
     height: 32px;
 }
 div.bx-nav-item-icon-preview {}
-div.bx-nav-item-icon-preview img {
+div.bx-nav-item-icon-preview img,
+div.bx-nav-item-icon-preview svg{
 	max-width:128px; 
     max-height:128px;
 }

+ 1 - 2
studio/template/menu_floating_blocks.html

@@ -2,8 +2,7 @@
     <bx_repeat:menu_items><li id="bx-menu-item-__name__" class="__class__ bx-def-color-bg-hl-hover bx-def-box-sizing __class_add__">
         <a class="bx-def-box-sizing" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__>
             <div class="bx-mi-icon">
-                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                <bx_include_auto:menu_icon.html />
             </div>
             <div class="bx-mi-title">__title__</div>
         </a>

+ 3 - 0
studio/template/nav_item_icon_preview.html

@@ -15,4 +15,7 @@
 	<bx_if:show_icon_font>
 		<i class="sys-icon __icon__"></i>
 	</bx_if:show_icon_font>
+	<bx_if:show_icon_svg>
+		__icon__
+	</bx_if:show_icon_svg>
 </div>

+ 15 - 6
studio/template/scripts/BxBaseStudioNavigationItems.php

@@ -720,11 +720,12 @@ class BxBaseStudioNavigationItems extends BxDolStudioNavigationItems
                     )
                 ),
                 'icon' => array(
-                    'type' => 'text',
+                    'type' => 'textarea',
                     'name' => 'icon',
                     'caption' => _t('_adm_nav_txt_items_icon'),
                     'info' => _t('_adm_nav_dsc_items_icon'),
                     'value' => '',
+					'code' => 1,
                     'required' => '0',
                     'db' => array (
                         'pass' => 'Xss',
@@ -734,6 +735,7 @@ class BxBaseStudioNavigationItems extends BxDolStudioNavigationItems
                         'params' => array(),
                         'error' => _t('_adm_nav_err_items_icon'),
                     ),
+					'attrs' => array('class' => 'bx-form-input-textarea-small'),
                 ),
                 'icon_image' => array(
                     'type' => 'file',
@@ -843,15 +845,16 @@ class BxBaseStudioNavigationItems extends BxDolStudioNavigationItems
         return  new BxTemplStudioFormView($aForm);
     }
 
-    protected function _getIconPreview($iId, $sIconImage = '', $sIconFont = '')
+    protected function _getIconPreview($iId, $sIconImage = '', $sIconFontOrSvg = '')
     {
         $bIconImage = !empty($sIconImage);
-        $bIconFont = !empty($sIconFont);
-
+		$bIconSvg = !empty($sIconFontOrSvg) && strpos($sIconFontOrSvg, '<svg') !== false;
+        $bIconFont = !empty($sIconFontOrSvg) && !$bIconSvg;
+		
         return $this->_oTemplate->parseHtmlByName('nav_item_icon_preview.html', array(
             'id' => $iId,
             'bx_if:show_icon_empty' => array(
-                'condition' => !$bIconImage && !$bIconFont,
+                'condition' => !$bIconImage && !$bIconFont && !$bIconSvg,
                 'content' => array()
             ),
             'bx_if:show_icon_image' => array(
@@ -865,7 +868,13 @@ class BxBaseStudioNavigationItems extends BxDolStudioNavigationItems
             'bx_if:show_icon_font' => array(
                 'condition' => $bIconFont,
                 'content' => array(
-                    'icon' => $sIconFont
+                    'icon' => $sIconFontOrSvg
+                )
+            ),
+			'bx_if:show_icon_svg' => array(
+                'condition' => $bIconSvg,
+                'content' => array(
+                    'icon' => $sIconFontOrSvg
                 )
             )
         ));

+ 1 - 2
template/menu_buttons_hor.html

@@ -1,7 +1,6 @@
 <ul class="bx-menu-btns-hor bx-menu-object-__object__ bx-clearfix">
     <bx_repeat:menu_items><li class="bx-menu-item __name__ bx-def-margin-thd-topbottom __class_add__"><a class="bx-btn __name__ bx-def-margin-right" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__>
-        <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
-        <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+		<bx_include_auto:menu_icon.html />
         <bx_if:title><u>__title__</u></bx_if:title>
     </a></li></bx_repeat:menu_items>
 </ul>

+ 1 - 2
template/menu_buttons_hor_item.html

@@ -1,4 +1,3 @@
 <a class="bx-btn bx-def-margin-right" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__>
-    <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
-    <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+    <bx_include_auto:menu_icon.html />
 </a>

+ 1 - 2
template/menu_buttons_icon_hor.html

@@ -1,6 +1,5 @@
 <ul class="bx-menu-btns-icon-hor bx-menu-object-__object__ bx-clearfix">
     <bx_repeat:menu_items><li class="bx-menu-item __name__ bx-def-margin-thd-topbottom __class_add__"><a class="bx-btn __name__ bx-def-margin-right" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__>
-        <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
-        <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+        <bx_include_auto:menu_icon.html />
     </a></li></bx_repeat:menu_items>
 </ul>

+ 1 - 2
template/menu_buttons_icon_hor_item.html

@@ -1,5 +1,4 @@
 <a class="bx-btn bx-def-margin-right" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__>
-    <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
-    <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+    <bx_include_auto:menu_icon.html />
     <bx_if:title><u>__title__</u></bx_if:title>
 </a>

+ 1 - 2
template/menu_buttons_ver.html

@@ -2,8 +2,7 @@
     <bx_repeat:menu_items>
         <li class="bx-def-margin-thd-topbottom __class_add__">
             <a class="bx-btn bx-def-margin-right" href="__link__" onclick="__onclick__"__attrs__>
-                <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
-                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+                <bx_include_auto:menu_icon.html />
                 <u>__title__</u>
             </a>
         </li>

+ 1 - 1
template/menu_custom_item.html

@@ -1,4 +1,4 @@
 <span class="__class_wrp__ bx-def-margin-thd-topbottom">
-    <a class="__class_link__" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__><bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon><bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image><bx_if:title><span class="bx-def-margin-sec-left-auto">__title__</span></bx_if:title></a>
+    <a class="__class_link__" href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__><bx_include_auto:menu_icon.html /><bx_if:title><span class="bx-def-margin-sec-left-auto">__title__</span></bx_if:title></a>
     <bx_if:addon>__addon__</bx_if:addon>
 </span>

+ 1 - 2
template/menu_floating_blocks.html

@@ -3,8 +3,7 @@
     <bx_repeat:menu_items><li class="bx-menu-item bx-menu-item-__name__ bx-def-round-corners bx-def-color-bg-hl-hover bx-def-box-sizing __class_add__">
         <a href="__link__" onclick="__onclick__"__attrs__>
             <div class="bx-menu-floating-blocks-icon">
-                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                <bx_include_auto:menu_icon.html />
             </div>
             <div class="bx-menu-floating-blocks-title">__title__</div>
         </a>                

+ 1 - 2
template/menu_floating_blocks_big.html

@@ -3,8 +3,7 @@
     <bx_repeat:menu_items><li class="bx-def-round-corners bx-def-color-bg-hl-hover bx-def-box-sizing __class_add__">
         <a href="__link__" onclick="__onclick__"__attrs__>
             <div class="bx-menu-floating-blocks-icon">
-                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                <bx_include_auto:menu_icon.html />
             </div>
             <div class="bx-menu-floating-blocks-title">__title__</div>
         </a>                

+ 1 - 2
template/menu_floating_blocks_dash.html

@@ -4,8 +4,7 @@
             <div class="bx-menu-floating-blocks-dash-item bx-def-padding-sec bx-def-margin-sec-leftright bx-def-round-corners bx-def-box bx-def-box-sizing __class_add__">
                 <a href="__link__" onclick="__onclick__"__attrs__>
                     <div class="bx-menu-floating-blocks-icon bx-def-margin-sec-right">
-                        <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                        <bx_if:image><img style="background-image:url(__icon_url__)" src="><bx_icon_url:spacer.gif />" /></bx_if:image>
+                        <bx_include_auto:menu_icon.html />
                     </div>
                     <div class="bx-menu-floating-blocks-dash-title">
                         <div class="bx-menu-floating-blocks-title">__title__</div>

+ 1 - 2
template/menu_floating_blocks_wide.html

@@ -3,8 +3,7 @@
     <bx_repeat:menu_items><li class="bx-menu-item bx-menu-item-__name__ bx-def-round-corners bx-def-color-bg-hl-hover bx-def-box-sizing __class_add__">
         <a href="__link__" onclick="__onclick__"__attrs__>
             <div class="bx-menu-floating-blocks-icon">
-                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                <bx_include_auto:menu_icon.html />
             </div>
             <div class="bx-menu-floating-blocks-title bx-def-font-middle">__title__</div>
         </a>

+ 1 - 0
template/menu_footer.html

@@ -4,6 +4,7 @@
             <a href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__>
                 <bx_if:image><img title="__title_attr__" src="__icon_url__" /></bx_if:image>
                 <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+				<bx_if:icon-html>__icon__</bx_if:icon-html>
                 <bx_if:title>__title__</bx_if:title>
             </a>
             <bx_if:show_subitems>

+ 1 - 0
template/menu_footer_subitems.html

@@ -4,6 +4,7 @@
             <a href="__link__" onclick="__onclick__" title="__title_attr__"__attrs__>
                 <bx_if:image><img title="__title_attr__" src="__icon_url__" /></bx_if:image>
                 <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+				<bx_if:icon-html>__icon__</bx_if:icon-html>
                 <bx_if:title>__title__</bx_if:title>
             </a>
             <bx_if:show_subitems>

+ 1 - 1
template/menu_horizontal.html

@@ -1,7 +1,7 @@
 <ul class="bx-menu-hor bx-menu-object-__object__ bx-clearfix">
     <bx_repeat:menu_items>
         <li class="bx-def-margin-right-auto __class_add__">
-            <a href="__link__" onclick="__onclick__"__attrs__><bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon><bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image><bx_if:title><span>__title__</span></bx_if:title></a>
+            <a href="__link__" onclick="__onclick__"__attrs__><bx_include_auto:menu_icon.html /><bx_if:title><span>__title__</span></bx_if:title></a>
         </li>
     </bx_repeat:menu_items>
 </ul>

+ 3 - 0
template/menu_icon.html

@@ -0,0 +1,3 @@
+<bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+<bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+<bx_if:icon-html>__icon__</bx_if:icon-html>

+ 1 - 2
template/menu_inline.html

@@ -2,8 +2,7 @@
     <bx_repeat:menu_items>
         <li class="bx-def-margin-left-auto __class_add__">
             <a href="__link__" onclick="__onclick__" title="__title__"__attrs__>
-                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                <bx_include_auto:menu_icon.html />
             </a>
             <bx_if:addon>__addon__</bx_if:addon>
         </li>

+ 1 - 2
template/menu_inline_sbtn.html

@@ -2,8 +2,7 @@
     <bx_repeat:menu_items>
         <li class="bx-def-margin-thd-left-auto __class_add__">
             <a class="bx-def-padding-sec-leftright" href="__link__" onclick="__onclick__" title="__title__"__attrs__>
-                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                <bx_include_auto:menu_icon.html />
             </a>
             <bx_if:addon>__addon__</bx_if:addon>
         </li>

+ 1 - 2
template/menu_profile_followings.html

@@ -4,8 +4,7 @@
             <div class="bx-menu-item-cnt">
                 <div class="bx-menu-item-link bx-def-padding-thd-topbottom bx-def-padding-sec-leftright bx-def-color-bg-hl-hover">
                     <a href="__link__" onclick="__onclick__"__attrs__>
-                        <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                        <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                        <bx_include_auto:menu_icon.html />
                         <span class="bx-def-margin-sec-left-auto">__title__</span>
                     </a>
                     <span class="bx-menu-collapse bx-def-padding-sec-left">

+ 1 - 2
template/menu_profile_followings_subitems.html

@@ -3,8 +3,7 @@
         <li class="bx-menu-subitem bx-menu-subitem-__name__ bx-def-round-corners bx-def-color-bg-hl-hover __class_add__">
             <div class="bx-menu-item-cnt bx-def-padding-thd-topbottom bx-def-padding-left bx-def-padding-sec-right">
                 <a href="__link__" onclick="__onclick__"__attrs__>
-                    <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                    <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                    <bx_include_auto:menu_icon.html />
                     <span class="bx-def-margin-sec-left-auto">__title__</span>
                 </a>
                 <bx_if:addon>

+ 1 - 2
template/menu_profile_stats.html

@@ -3,8 +3,7 @@
         <li class="bx-menu-item-__name__ bx-def-round-corners bx-def-color-bg-hl-hover __class_add__">
             <div class="bx-menu-item-cnt bx-def-padding-thd-topbottom bx-def-padding-sec-leftright">
                 <a href="__link__" onclick="__onclick__"__attrs__>
-                    <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                    <bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                    <bx_include_auto:menu_icon.html />
                     <span class="bx-def-margin-sec-left-auto">__title__</span>
                 </a>
                 <bx_if:addon>

+ 4 - 1
template/menu_toolbar.html

@@ -1,7 +1,10 @@
 <ul class="bx-menu-toolbar bx-menu-object-__object__">
     <bx_repeat:menu_items>
         <li id="bx-menu-toolbar-item-__name__" class="bx-menu-toolbar-item bx-menu-item-__name__ bx-def-padding-thd-leftright bx-def-color-bg-hl-hover __class_add__">
-            <a href="__link__" onclick="__onclick__"__attrs__><bx_if:title><span class="bx-menu-toolbar-item-title bx-def-margin-thd-leftright bx-def-font-contrasted">__title__</span></bx_if:title><bx_if:icon><i class="sys-icon __icon__ bx-def-margin-thd-leftright"></i></bx_if:icon><bx_if:icon-a><i class="sys-icon-a bx-def-margin-thd-leftright" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a><bx_if:image><img class="bx-def-margin-thd-leftright" src="__icon_url__" /></bx_if:image><bx_if:unit><div class="bx-menu-toolbar-item-unit bx-def-margin-thd-leftright">__unit__</div></bx_if:unit><bx_if:addon>__addonf__</bx_if:addon></a>
+            <a href="__link__" onclick="__onclick__"__attrs__><bx_if:title><span class="bx-menu-toolbar-item-title bx-def-margin-thd-leftright bx-def-font-contrasted">__title__</span></bx_if:title><bx_if:icon><i class="sys-icon __icon__ bx-def-margin-thd-leftright"></i></bx_if:icon>
+			<bx_if:icon-a><i class="sys-icon-a bx-def-margin-thd-leftright" data-rotate="down" data-icon="__icon-a__" data-color="#fff"></i></bx_if:icon-a>
+			<bx_if:image><img class="bx-def-margin-thd-leftright" src="__icon_url__" /></bx_if:image>
+			<bx_if:unit><div class="bx-menu-toolbar-item-unit bx-def-margin-thd-leftright">__unit__</div></bx_if:unit><bx_if:addon>__addonf__</bx_if:addon></a>
         </li>
     </bx_repeat:menu_items>
 </ul>

+ 2 - 1
template/menu_vertical.html

@@ -3,7 +3,8 @@
         <li class="bx-menu-item __name__ bx-def-round-corners bx-def-color-bg-hl-hover __class_add__">
             <a class="__name__" href="__link__" onclick="__onclick__"__attrs__>
                 <div class="bx-def-padding-sec">
-                    <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon><bx_if:image><img style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image><span>__title__</span>
+                    <bx_include_auto:menu_icon.html />
+					<span>__title__</span>
                 </div>
             </a>
         </li>

+ 1 - 2
template/menu_vertical_lite.html

@@ -2,8 +2,7 @@
     <bx_repeat:menu_items>
         <li class="bx-def-margin-sec-top __class_add__">
             <a href="__link__" onclick="__onclick__"__attrs__>
-                <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
-                <bx_if:image><img class="bx-def-margin-sec-right" style="background-image:url(__icon_url__)" src="<bx_icon_url:spacer.gif />" /></bx_if:image>
+                <bx_include_auto:menu_icon.html />
                 <bx_if:image_inline>__image__</bx_if:image_inline>
                 <span>__title__</span>
             </a>

+ 33 - 10
template/scripts/BxBaseMenu.php

@@ -183,7 +183,7 @@ class BxBaseMenu extends BxDolMenu
             $a = $this->_replaceMarkers($a);
         }
 
-        list ($sIcon, $sIconUrl, $sIconA) = $this->_getMenuIcon($a);
+        list ($sIcon, $sIconUrl, $sIconA, $sIconHtml) = $this->_getMenuIcon($a);
 
         $a['class_add'] = $this->_isSelected($a) ? 'bx-menu-tab-active' : '';
 
@@ -210,6 +210,10 @@ class BxBaseMenu extends BxDolMenu
         $a['bx_if:icon'] = array (
             'condition' => (bool)$sIcon,
             'content' => array('icon' => $sIcon),
+        );
+		$a['bx_if:icon-html'] = array (
+            'condition' => (bool)$sIconHtml,
+            'content' => array('icon' => $sIconHtml),
         );
         $a['bx_if:icon-a'] = array (
             'condition' => (bool)$sIconA,
@@ -263,22 +267,41 @@ class BxBaseMenu extends BxDolMenu
         $sIcon = false;
         $sIconA = false;
         $sIconUrl = false;
+		$sIconHtml = false;
+		
         if (!empty($a['icon'])) {
             if ((int)$a['icon'] > 0 ) {
                 $oStorage = BxDolStorage::getObjectInstance(BX_DOL_STORAGE_OBJ_IMAGES);
                 $sIconUrl = $oStorage ? $oStorage->getFileUrlById((int)$a['icon']) : false;
             } else {
-                if (false === strpos($a['icon'], '.')) { 
-                    if (0 === strncmp($a['icon'], 'a:', 2))
-                        $sIconA = substr($a['icon'], 2); // animated icon
-                    else
-                        $sIcon = $a['icon']; // font icons
-                } else {
-                    $sIconUrl = $this->_oTemplate->getIconUrl($a['icon']);
-                }
+				//svg
+				if (strpos($a['icon'], '<svg') !== false){
+					$sIconHtml = $a['icon'];
+					$sClass = 'sys-icon sys-icon-svg-inline ';
+					if ($sClass != '' && strpos($sIconHtml, 'class="') !== false)
+						$sIconHtml = str_replace('class="', 'class="' . $sClass, $sIconHtml);
+					else
+						$sIconHtml = str_replace('<svg', '<svg class="' . $sClass . '" ', $sIconHtml);
+				}
+				else{
+					//emoji
+					if(preg_match('/([0-9#][\x{20E3}])|[\x{00ae}\x{00a9}\x{203C}\x{2047}\x{2048}\x{2049}\x{3030}\x{303D}\x{2139}\x{2122}\x{3297}\x{3299}][\x{FE00}-\x{FEFF}]?|[\x{2190}-\x{21FF}][\x{FE00}-\x{FEFF}]?|[\x{2300}-\x{23FF}][\x{FE00}-\x{FEFF}]?|[\x{2460}-\x{24FF}][\x{FE00}-\x{FEFF}]?|[\x{25A0}-\x{25FF}][\x{FE00}-\x{FEFF}]?|[\x{2600}-\x{27BF}][\x{FE00}-\x{FEFF}]?|[\x{2900}-\x{297F}][\x{FE00}-\x{FEFF}]?|[\x{2B00}-\x{2BF0}][\x{FE00}-\x{FEFF}]?|[\x{1F000}-\x{1F6FF}][\x{FE00}-\x{FEFF}]?/u', $a['icon'], $aTmp)){
+						$sIconHtml = '<i class="sys-icon sys-icon-emoji">' . $a['icon'] . '</i>';
+					}
+						else{
+						if (false === strpos($a['icon'], '.')) { 
+							if (0 === strncmp($a['icon'], 'a:', 2))
+								$sIconA = substr($a['icon'], 2); // animated icon
+							else
+								$sIcon = $a['icon']; // font icons
+						} else {
+							$sIconUrl = $this->_oTemplate->getIconUrl($a['icon']);
+						}
+					}
+				}
             }
         }
-        return array ($sIcon, $sIconUrl, $sIconA);
+        return array ($sIcon, $sIconUrl, $sIconA, $sIconHtml);
     }
 
     protected function _getMenuAddon ($aMenuItem)