AntonLV 7 年之前
父節點
當前提交
a0558e7a0d
共有 35 個文件被更改,包括 457 次插入 和 500 次删除
  1. 7 10
      modules/boonex/accounts/template/images/icons/std-icon.svg
  2. 0 10
      modules/boonex/analytics/template/images/icons/std-icon.svg
  3. 34 24
      modules/boonex/channels/template/images/icons/std-icon.svg
  4. 1 1
      modules/boonex/english/data/langs/system/en.xml
  5. 22 84
      modules/boonex/posts/template/images/icons/std-icon.svg
  6. 1 1
      modules/boonex/russian/data/langs/system/ru.xml
  7. 93 46
      studio/classes/BxDolStudioMenuTop.php
  8. 1 1
      studio/classes/BxDolStudioModules.php
  9. 29 4
      studio/classes/BxDolStudioPage.php
  10. 1 1
      studio/launcher.php
  11. 1 1
      studio/template/bp_blocks.html
  12. 7 0
      studio/template/css/builder_page.css
  13. 23 11
      studio/template/css/general.css
  14. 61 86
      studio/template/css/launcher.css
  15. 4 5
      studio/template/css/menu.css
  16. 64 33
      studio/template/css/menu_top.css
  17. 2 2
      studio/template/css/page_columns.css
  18. 二進制
      studio/template/images/bx-std-bg-columns.png
  19. 二進制
      studio/template/images/bx-std-widget-drag.png
  20. 3 0
      studio/template/images/bx-std-widget-drag.svg
  21. 二進制
      studio/template/images/icons/mi-empty.png
  22. 22 45
      studio/template/images/icons/wi-bld-forms.svg
  23. 22 36
      studio/template/images/icons/wi-bld-pages.svg
  24. 7 28
      studio/template/images/icons/wi-dashboard.svg
  25. 15 0
      studio/template/menu_floating_blocks.html
  26. 1 1
      studio/template/menu_side.html
  27. 2 2
      studio/template/menu_top.html
  28. 1 1
      studio/template/page_3.html
  29. 1 1
      studio/template/page_4.html
  30. 0 3
      studio/template/page_caption.html
  31. 2 2
      studio/template/scripts/BxBaseStudioConfig.php
  32. 1 1
      studio/template/scripts/BxBaseStudioMenu.php
  33. 9 4
      studio/template/scripts/BxBaseStudioMenuTop.php
  34. 10 41
      studio/template/scripts/BxBaseStudioPage.php
  35. 10 15
      studio/template/widgets.html

文件差異過大導致無法顯示
+ 7 - 10
modules/boonex/accounts/template/images/icons/std-icon.svg


文件差異過大導致無法顯示
+ 0 - 10
modules/boonex/analytics/template/images/icons/std-icon.svg


+ 34 - 24
modules/boonex/channels/template/images/icons/std-icon.svg

@@ -1,25 +1,35 @@
-<?xml version="1.0"?>
-<svg width="600" height="600" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
- <!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
- <title>Group 2 Copy 19</title>
- <desc>Created with Sketch.</desc>
- <defs>
-  <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
-   <stop stop-color="#FFFFFF" stop-opacity="0.2" offset="0%"/>
-   <stop stop-color="#000000" stop-opacity="0.13887" offset="100%"/>
-  </linearGradient>
-  <path d="m296.71269,208.4098c-12.62806,-4.39644 -26.28507,-4.67706 -38.91314,-9.0735c-3.83519,-1.30957 -11.41202,-2.89977 -13.00222,-7.29621c-1.49666,-4.3029 -1.49666,-9.35412 -1.77728,-13.8441c-0.18709,-3.55457 -0.28063,-7.10913 -0.28063,-10.6637c0,-2.33853 5.98664,-7.29621 7.29622,-9.44766c5.05122,-8.41871 5.51893,-19.73719 6.45434,-29.27839c8.13808,2.24498 9.16704,-12.81515 10.57015,-17.39867c1.02896,-3.1804 7.29622,-25.06904 -2.43207,-22.07572c2.33853,-4.11581 3.27394,-9.16704 3.92873,-13.75056c1.87083,-11.97327 2.61916,-25.06904 -1.02895,-36.76169c-7.57684,-24.32071 -30.8686,-37.97773 -55.46993,-38.72606c-24.97551,-0.84187 -50.04455,11.1314 -59.39867,35.35858c-4.48998,11.78619 -4.11581,24.60133 -2.61915,36.94877c0.65479,5.61247 1.5902,11.87973 4.39644,16.93096c-9.0735,-2.7127 -4.20936,16.55679 -3.18041,19.92427c1.49666,4.77061 2.80624,21.88865 11.31849,19.55012c0.74833,7.57683 1.5902,15.34075 3.64811,22.73051c1.40311,4.95768 4.30289,9.16704 7.67038,13.00223c1.68374,1.87082 2.52561,2.0579 2.43207,4.48997c-0.09354,7.29622 0.09354,15.15368 -1.77729,22.26281c-1.87082,7.10913 -17.4922,10.10245 -23.75946,11.41203c-16.83742,3.46102 -32.36526,5.05122 -46.39644,15.52784c-16.36971,12.06681 -24.88196,30.86859 -24.88196,51.16703l233.75947,0l26.28508,0c0,-27.59465 -16.65034,-51.91536 -42.84188,-60.98886l0,0z" id="path-3"/>
-  <path d="m104.11136,196.90423c-3.1804,1.5902 -7.01559,3.55457 0.74833,-0.37416c2.80623,-1.40312 2.24499,-1.1225 0.74833,-0.37417c6.3608,-2.99332 13.18931,-3.74165 20.01781,-4.39643c2.61916,-0.28063 3.83519,-2.05791 1.87083,-4.58352c-3.74165,-4.7706 -16.65034,-5.70602 -22.07572,-7.85746c-3.36749,-1.30958 -4.3029,-2.52562 -4.58352,-6.26727c-0.09354,-1.68374 -1.02896,-9.16703 0.28062,-10.38307c0.93541,-0.93541 6.82851,-0.56125 8.13808,-0.74833c5.33185,-0.65479 10.75724,-1.77728 15.80847,-3.74165c2.15145,-0.84187 4.20935,-1.87082 6.08018,-3.1804c2.24499,-1.68374 -1.68375,-5.79955 -2.7127,-8.04454c-3.1804,-7.01559 -4.58352,-14.68597 -5.05122,-22.35635c-0.93542,-15.06013 1.40311,-30.21381 -1.40312,-45.1804c-4.20936,-22.91759 -21.88864,-34.42316 -44.43207,-34.42316c-13.93764,0 -27.6882,4.7706 -35.45212,16.93096c-8.60579,13.37639 -8.13808,30.02672 -7.67038,45.27394c0.28063,8.69933 0.65479,17.4922 -0.56124,26.19154c-0.56125,3.74164 -1.40312,7.38975 -2.7127,10.94432c-1.02895,2.71269 -6.26726,9.44766 -4.20935,10.85077c7.76392,5.51894 20.85968,7.38976 30.2138,6.64143c0.28063,4.58352 1.1225,10.47662 -0.56124,14.77951c-2.61916,6.73497 -22.16927,8.51225 -28.06236,10.47661c-16.36971,5.42539 -28.53007,18.70825 -28.53007,37.41649l51.26058,0l23.10468,0c1.21603,0 5.89309,-8.69934 7.20267,-10.10245c6.3608,-7.01559 14.12472,-13.09577 22.54343,-17.49221l0,0z" id="path-5"/>
-  <path d="m390.34744,186.98886c-7.57684,-2.43207 -22.16927,-3.1804 -27.59466,-9.72828c-2.71269,-3.27394 -1.21603,-11.59911 -0.93541,-15.52784c4.11581,0.37416 8.60579,-0.28062 12.81515,-0.84187c3.83519,-0.56125 7.57683,-1.30958 11.22494,-2.61915c1.68374,-0.65479 3.36748,-1.30958 4.95768,-2.24499c3.64811,-2.15145 1.96437,-2.52562 0.09355,-5.70602c-10.196,-17.11804 -5.61248,-38.8196 -6.08018,-57.62138c-0.37417,-15.62138 -4.48998,-32.73942 -18.70824,-41.53229c-12.81515,-7.951 -31.80401,-8.23163 -45.55457,-2.61916c-39.66147,15.90201 -16.27617,68.47216 -29.83964,98.59243c-2.33853,5.05123 -5.70602,6.82851 0.18708,9.82183c3.27394,1.68374 6.82851,2.80623 10.38307,3.6481c5.42539,1.30958 11.03787,2.05791 16.65034,2.24499c0.93541,0 0.28062,11.78619 0,13.00223c-1.02895,4.58352 -11.03786,5.8931 -14.77951,6.92205c-3.83519,1.02895 -10.19599,1.30958 -12.06682,5.33185c-2.80623,5.98664 9.26058,4.48998 12.2539,5.05122c9.63474,1.77729 18.14699,7.10914 25.63029,13.18931c5.61247,4.58352 13.18931,10.75724 15.24722,18.24054l75.02004,0c-0.18708,-18.80178 -12.44098,-32.17818 -28.90423,-37.60357l0,0z" id="path-7"/>
- </defs>
- <g class="layer">
-  <title>Layer 1</title>
-  <path d="m552.26896,552.26896c47.73104,-47.73115 47.73104,-120.81063 47.73104,-252.26896c0,-131.45833 0,-204.53781 -47.73104,-252.26896c-47.73115,-47.73104 -120.81063,-47.73104 -252.26896,-47.73104c-131.45833,0 -204.53781,0 -252.26896,47.73104c-47.73104,47.73115 -47.73104,120.81063 -47.73104,252.26896c0,131.45833 0,204.53781 47.73104,252.26896c47.73115,47.73104 120.81063,47.73104 252.26896,47.73104c131.45833,0 204.53781,0 252.26896,-47.73104l0,0z" id="path" fill="#2BAF92"/>
-  <g id="svg_9"/>
-  <g id="svg_3"/>
-  <path d="m552.26896,552.26896c47.73104,-47.73115 47.73104,-120.81063 47.73104,-252.26896c0,-131.45833 0,-204.53781 -47.73104,-252.26896c-47.73115,-47.73104 -120.81063,-47.73104 -252.26896,-47.73104c-131.45833,0 -204.53781,0 -252.26896,47.73104c-47.73104,47.73115 -47.73104,120.81063 -47.73104,252.26896c0,131.45833 0,204.53781 47.73104,252.26896c47.73115,47.73104 120.81063,47.73104 252.26896,47.73104c131.45833,0 204.53781,0 252.26896,-47.73104l0,0z" id="path-copy" fill="url(#linearGradient-1)"/>
-  <g transform="matrix(0.3578164377493016,0,0,0.33433973237020886,125.5042074013726,426.10454648740676) " id="svg_5">
-   <path id="svg_6" fill="#fff" d="m552.103495,-281.945904l41.83269,-181.309196l-166.023489,0l-41.83269,181.309196l166.023489,0zm501.992283,-356.95248l-36.603604,158.645547q-4.57545,16.997737 -20.262709,16.997737l-213.738902,0l-41.83269,181.309196l203.280729,0q9.804537,0 16.340895,8.498869q6.536358,9.915347 3.921815,19.830693l-36.603604,158.645547q-3.268179,16.997737 -20.262709,16.997737l-213.738902,0l-52.944499,232.302408q-4.57545,16.997737 -20.262709,16.997737l-146.414416,0q-10.458173,0 -16.99453,-8.498869q-5.882722,-8.498869 -3.921815,-19.830693l50.983591,-220.970583l-166.023489,0l-52.944499,232.302408q-4.57545,16.997737 -20.262709,16.997737l-147.068052,0q-9.804537,0 -16.340895,-8.498869q-5.882722,-8.498869 -3.921815,-19.830693l50.983591,-220.970583l-203.280729,0q-9.804537,0 -16.340895,-8.498869q-5.882722,-8.498869 -3.921815,-19.830693l36.603604,-158.645547q4.57545,-16.997737 20.262709,-16.997737l213.738902,0l41.83269,-181.309196l-203.280729,0q-9.804537,0 -16.340895,-8.498869q-6.536358,-9.915347 -3.921815,-19.830693l36.603604,-158.645547q3.268179,-16.997737 20.262709,-16.997737l213.738902,0l52.944499,-232.302408q4.57545,-16.997737 20.916345,-16.997737l146.414416,0q9.804537,0 16.340895,8.498869q5.882722,8.498869 3.921815,19.830693l-50.983591,220.970583l166.023489,0l52.944499,-232.302408q4.57545,-16.997737 20.916345,-16.997737l146.414416,0q9.804537,0 16.340895,8.498869q5.882722,8.498869 3.921815,19.830693l-50.983591,220.970583l203.280729,0q9.804537,0 16.340895,8.498869q5.882722,8.498869 3.921815,19.830693z"/>
-  </g>
- </g>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="64px" height="64px" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 54.1 (76490) - https://sketchapp.com -->
+    <title>channels</title>
+    <desc>Created with Sketch.</desc>
+    <defs>
+        <path d="M32,64 C46.0222222,64 53.8173667,64 58.9086889,58.9086889 C64,53.8173667 64,46.0222222 64,32 C64,17.9777778 64,10.1826333 58.9086889,5.09131111 C53.8173667,0 46.0222222,0 32,0 C17.9777778,0 10.1826333,0 5.09131111,5.09131111 C0,10.1826333 0,17.9777778 0,32 C0,46.0222222 0,53.8173667 5.09131111,58.9086889 C10.1826333,64 17.9777778,64 32,64 Z" id="path-1"></path>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-3">
+            <stop stop-color="#FDFEFF" offset="0%"></stop>
+            <stop stop-color="#FBFCFD" stop-opacity="0.9" offset="100%"></stop>
+        </linearGradient>
+        <path d="M39.3452583,13.4025893 L39.9830259,9.83116071 C40.100258,9.17446429 39.5953475,8.57142857 38.9282943,8.57142857 L32.2488333,8.57142857 L33.5544576,1.25973214 C33.6716897,0.603035714 33.1667792,0 32.499726,0 L28.8718706,0 C28.352784,9.42915068e-06 27.9083685,0.372117744 27.817139,0.883125 L26.4441933,8.57142857 L17.6375012,8.57142857 L18.9431255,1.25973214 C19.0604469,0.603035714 18.5555364,0 17.8883939,0 L14.2605385,0 C13.7414519,9.42915068e-06 13.2970364,0.372117744 13.2058069,0.883125 L11.8328612,8.57142857 L4.77072178,8.57142857 C4.2516351,8.571438 3.80721964,8.94354632 3.71599016,9.45455357 L3.07822261,13.0259821 C2.96099053,13.6826786 3.46590099,14.2857143 4.13295424,14.2857143 L10.8124152,14.2857143 L8.77161267,25.7142857 L1.70947329,25.7142857 C1.19038661,25.7142951 0.745971146,26.0864035 0.654741663,26.5974107 L0.0169741193,30.1688393 C-0.100257966,30.8255357 0.4046525,31.4285714 1.07170574,31.4285714 L7.75116674,31.4285714 L6.44554238,38.7402679 C6.3283103,39.3969643 6.83322077,40 7.50027401,40 L11.1281294,40 C11.647216,39.9999906 12.0916315,39.6278823 12.182861,39.116875 L13.555896,31.4285714 L22.3624988,31.4285714 L21.0568745,38.7402679 C20.9395531,39.3969643 21.4444636,40 22.1116061,40 L25.7394615,40 C26.2585481,39.9999906 26.7029636,39.6278823 26.7941931,39.116875 L28.1671388,31.4285714 L35.2292782,31.4285714 C35.7483649,31.428562 36.1927804,31.0564537 36.2840098,30.5454464 L36.9217774,26.9740179 C37.0390095,26.3173214 36.534099,25.7142857 35.8670458,25.7142857 L29.1875848,25.7142857 L31.2283873,14.2857143 L38.2905267,14.2857143 C38.8096134,14.2857049 39.2540289,13.9135965 39.3452583,13.4025893 L39.3452583,13.4025893 Z M23.3829448,25.7142857 L14.576342,25.7142857 L16.6171445,14.2857143 L25.4237473,14.2857143 L23.3829448,25.7142857 Z" id="path-4"></path>
+        <filter x="-5.0%" y="-2.5%" width="110.0%" height="110.0%" filterUnits="objectBoundingBox" id="filter-5">
+            <feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+            <feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+        </filter>
+    </defs>
+    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="channels">
+            <mask id="mask-2" fill="white">
+                <use xlink:href="#path-1"></use>
+            </mask>
+            <use id="Path" fill="#00B356" xlink:href="#path-1"></use>
+            <g id="hashtag" mask="url(#mask-2)" fill-rule="nonzero">
+                <g transform="translate(12.000000, 12.000000)" id="Shape">
+                    <g>
+                        <use fill="black" fill-opacity="1" filter="url(#filter-5)" xlink:href="#path-4"></use>
+                        <use fill="url(#linearGradient-3)" xlink:href="#path-4"></use>
+                    </g>
+                </g>
+            </g>
+        </g>
+    </g>
 </svg>

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

@@ -1459,7 +1459,7 @@
 	<string name="_adm_tmi_cpt_logout"><![CDATA[Sign out]]></string>
 	<string name="_adm_tmi_cpt_site"><![CDATA[Go To Site]]></string>
 	<string name="_adm_tmi_cpt_tour"><![CDATA[Tour]]></string>
-	<string name="_adm_txt_back_to_launcher"><![CDATA[Back to Launcher]]></string>
+	<string name="_adm_tmi_cpt_launcher"><![CDATA[Back to Launcher]]></string>
 	<string name="_adm_txt_confirm_cancel"><![CDATA[Cancel]]></string>
 	<string name="_adm_txt_confirm_ok"><![CDATA[OK]]></string>
 	<string name="_adm_txt_forgot_password"><![CDATA[Forgot password?]]></string>

+ 22 - 84
modules/boonex/posts/template/images/icons/std-icon.svg

@@ -1,94 +1,32 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<svg width="600px" height="600px" viewBox="0 0 600 600" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
-    <title>Group 2 Copy 25</title>
+<svg width="64px" height="64px" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 54.1 (76490) - https://sketchapp.com -->
+    <title>posts</title>
     <desc>Created with Sketch.</desc>
     <defs>
-        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
-            <stop stop-color="#FFFFFF" stop-opacity="0.2" offset="0%"></stop>
-            <stop stop-color="#000000" stop-opacity="0.138870018" offset="100%"></stop>
+        <path d="M32,64 C46.0222222,64 53.8173667,64 58.9086889,58.9086889 C64,53.8173667 64,46.0222222 64,32 C64,17.9777778 64,10.1826333 58.9086889,5.09131111 C53.8173667,0 46.0222222,0 32,0 C17.9777778,0 10.1826333,0 5.09131111,5.09131111 C0,10.1826333 0,17.9777778 0,32 C0,46.0222222 0,53.8173667 5.09131111,58.9086889 C10.1826333,64 17.9777778,64 32,64 Z" id="path-1"></path>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-3">
+            <stop stop-color="#FDFEFF" offset="0%"></stop>
+            <stop stop-color="#FBFCFD" stop-opacity="0.9" offset="100%"></stop>
         </linearGradient>
-        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-2">
-            <stop stop-color="#FFFFFF" offset="0%"></stop>
-            <stop stop-color="#F6F6F6" offset="35.2427758%"></stop>
-            <stop stop-color="#E5E5E5" offset="100%"></stop>
-        </linearGradient>
-        <path d="M286.8,104.5 C286.1,101.6 284.8,99.5 283.3,97.7 L199.6,6 C197.7,3.9 195.5,2.9 193,1.6 C190.1,0.1 186.9,0 183.6,0 L23.7,0 C11.3,0 -2.84217094e-14,9.6 -2.84217094e-14,22.9 L-2.84217094e-14,358.1 C-2.84217094e-14,371.5 11.3,384 23.7,384 L266.8,384 C279.2,384 288,371.5 288,358.1 L288,114 C288,110.4 287.6,107.8 286.8,104.5 L286.8,104.5 Z M193,46.6 L251,110.1 L193,110.1 L193,46.6 L193,46.6 Z M32,352.1 L32,32.1 L161,32.1 L161,113.8 C161,128.6 174.4,142.1 189.1,142.1 L256,142.1 L256,352.1 L32,352.1 L32,352.1 Z" id="path-3"></path>
-        <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-4">
-            <feMorphology radius="1" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
-            <feOffset dx="0" dy="2" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
-            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.08 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
-        </filter>
-        <rect id="path-5" x="50" y="281" width="180" height="15"></rect>
-        <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-6">
-            <feMorphology radius="1" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
-            <feOffset dx="0" dy="2" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
-            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.08 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
-        </filter>
-        <rect id="path-7" x="50" y="250" width="180" height="15"></rect>
-        <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-8">
-            <feMorphology radius="1" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
-            <feOffset dx="0" dy="2" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
-            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.08 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
-        </filter>
-        <rect id="path-9" x="50" y="221" width="180" height="15"></rect>
-        <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-10">
-            <feMorphology radius="1" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
-            <feOffset dx="0" dy="2" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
-            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.08 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
-        </filter>
-        <rect id="path-11" x="50" y="190" width="180" height="15"></rect>
-        <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-12">
-            <feMorphology radius="1" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
-            <feOffset dx="0" dy="2" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
-            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.08 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
-        </filter>
-        <rect id="path-13" x="50" y="311" width="90" height="15"></rect>
-        <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-14">
-            <feMorphology radius="1" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
-            <feOffset dx="0" dy="2" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
-            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.08 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
-        </filter>
-        <rect id="path-15" x="50" y="60" width="90" height="106"></rect>
-        <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-16">
-            <feMorphology radius="1" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
-            <feOffset dx="0" dy="2" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
-            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.08 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
+        <path d="M17.7777778,10.625 L17.7777778,0 L1.9047619,0 C0.849206349,0 0,0.8359375 0,1.875 L0,38.125 C0,39.1640625 0.849206349,40 1.9047619,40 L28.5714286,40 C29.6269841,40 30.4761905,39.1640625 30.4761905,38.125 L30.4761905,12.5 L19.6825397,12.5 C18.6349206,12.5 17.7777778,11.65625 17.7777778,10.625 Z M22.8571429,29.0625 C22.8571429,29.578125 22.4285714,30 21.9047619,30 L8.57142857,30 C8.04761905,30 7.61904762,29.578125 7.61904762,29.0625 L7.61904762,28.4375 C7.61904762,27.921875 8.04761905,27.5 8.57142857,27.5 L21.9047619,27.5 C22.4285714,27.5 22.8571429,27.921875 22.8571429,28.4375 L22.8571429,29.0625 Z M22.8571429,24.0625 C22.8571429,24.578125 22.4285714,25 21.9047619,25 L8.57142857,25 C8.04761905,25 7.61904762,24.578125 7.61904762,24.0625 L7.61904762,23.4375 C7.61904762,22.921875 8.04761905,22.5 8.57142857,22.5 L21.9047619,22.5 C22.4285714,22.5 22.8571429,22.921875 22.8571429,23.4375 L22.8571429,24.0625 Z M22.8571429,18.4375 L22.8571429,19.0625 C22.8571429,19.578125 22.4285714,20 21.9047619,20 L8.57142857,20 C8.04761905,20 7.61904762,19.578125 7.61904762,19.0625 L7.61904762,18.4375 C7.61904762,17.921875 8.04761905,17.5 8.57142857,17.5 L21.9047619,17.5 C22.4285714,17.5 22.8571429,17.921875 22.8571429,18.4375 Z M30.4761905,9.5234375 L30.4761905,10 L20.3174603,10 L20.3174603,0 L20.8015873,0 C21.3095238,0 21.7936508,0.1953125 22.1507937,0.546875 L29.9206349,8.203125 C30.2777778,8.5546875 30.4761905,9.03125 30.4761905,9.5234375 Z" id="path-4"></path>
+        <filter x="-6.6%" y="-2.5%" width="113.1%" height="110.0%" filterUnits="objectBoundingBox" id="filter-5">
+            <feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+            <feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
         </filter>
     </defs>
     <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="Group-2-Copy-25">
-            <path d="M552.268958,552.268958 C600,504.537813 600,431.458333 600,300 C600,168.541667 600,95.4621875 552.268958,47.7310417 C504.537813,0 431.458333,0 300,0 C168.541667,0 95.4621875,0 47.7310417,47.7310417 C0,95.4621875 0,168.541667 0,300 C0,431.458333 0,504.537813 47.7310417,552.268958 C95.4621875,600 168.541667,600 300,600 C431.458333,600 504.537813,600 552.268958,552.268958 L552.268958,552.268958 Z" id="path" fill="#2BAF92"></path>
-            <path d="M552.268958,552.268958 C600,504.537813 600,431.458333 600,300 C600,168.541667 600,95.4621875 552.268958,47.7310417 C504.537813,0 431.458333,0 300,0 C168.541667,0 95.4621875,0 47.7310417,47.7310417 C0,95.4621875 0,168.541667 0,300 C0,431.458333 0,504.537813 47.7310417,552.268958 C95.4621875,600 168.541667,600 300,600 C431.458333,600 504.537813,600 552.268958,552.268958 L552.268958,552.268958 Z" id="path-copy" fill="url(#linearGradient-1)"></path>
-            <g id="document" transform="translate(156.000000, 105.000000)">
-                <g id="Layer_1">
-                    <g id="Shape">
-                        <use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
-                        <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-3"></use>
-                    </g>
-                    <g id="Rectangle-path" opacity="0.5">
-                        <use fill="black" fill-opacity="1" filter="url(#filter-6)" xlink:href="#path-5"></use>
-                        <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-5"></use>
-                    </g>
-                    <g id="Rectangle-path-Copy" opacity="0.5">
-                        <use fill="black" fill-opacity="1" filter="url(#filter-8)" xlink:href="#path-7"></use>
-                        <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-7"></use>
-                    </g>
-                    <g id="Rectangle-path-Copy-3" opacity="0.5">
-                        <use fill="black" fill-opacity="1" filter="url(#filter-10)" xlink:href="#path-9"></use>
-                        <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-9"></use>
-                    </g>
-                    <g id="Rectangle-path-Copy-2" opacity="0.5">
-                        <use fill="black" fill-opacity="1" filter="url(#filter-12)" xlink:href="#path-11"></use>
-                        <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-11"></use>
-                    </g>
-                    <g id="Rectangle-path" opacity="0.5">
-                        <use fill="black" fill-opacity="1" filter="url(#filter-14)" xlink:href="#path-13"></use>
-                        <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-13"></use>
-                    </g>
-                    <g id="Rectangle-path" opacity="0.5">
-                        <use fill="black" fill-opacity="1" filter="url(#filter-16)" xlink:href="#path-15"></use>
-                        <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-15"></use>
+        <g id="posts">
+            <mask id="mask-2" fill="white">
+                <use xlink:href="#path-1"></use>
+            </mask>
+            <use id="Path" fill="#00B356" xlink:href="#path-1"></use>
+            <g id="file-alt" mask="url(#mask-2)" fill-rule="nonzero">
+                <g transform="translate(17.000000, 12.000000)" id="Shape">
+                    <g>
+                        <use fill="black" fill-opacity="1" filter="url(#filter-5)" xlink:href="#path-4"></use>
+                        <use fill="url(#linearGradient-3)" xlink:href="#path-4"></use>
                     </g>
                 </g>
             </g>

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

@@ -1457,7 +1457,7 @@
 	<string name="_adm_tmi_cpt_logout"><![CDATA[Выйти]]></string>
 	<string name="_adm_tmi_cpt_site"><![CDATA[Перейти на сайт]]></string>
 	<string name="_adm_tmi_cpt_tour"><![CDATA[Инструкции]]></string>
-	<string name="_adm_txt_back_to_launcher"><![CDATA[Назад к загрузчику]]></string>
+	<string name="_adm_tmi_cpt_launcher"><![CDATA[Назад к загрузчику]]></string>
 	<string name="_adm_txt_confirm_cancel"><![CDATA[Отменить]]></string>
 	<string name="_adm_txt_confirm_ok"><![CDATA[OK]]></string>
 	<string name="_adm_txt_forgot_password"><![CDATA[Забыли пароль?]]></string>

+ 93 - 46
studio/classes/BxDolStudioMenuTop.php

@@ -7,6 +7,8 @@
  * @{
  */
 
+require_once(BX_DOL_DIR_STUDIO_INC . 'utils.inc.php');
+
 define('BX_DOL_STUDIO_MT_LEFT', 'left');
 define('BX_DOL_STUDIO_MT_CENTER', 'center');
 define('BX_DOL_STUDIO_MT_RIGHT', 'right');
@@ -16,79 +18,124 @@ define('BX_DOL_STUDIO_MTB_RECTANGLE', 'rect');
 
 class BxDolStudioMenuTop extends BxDol
 {
+    public static $sHistorySessionKey = 'sys_studio_history';
+    public static $iHistoryLength = 5;
+
     protected $aItems;
     protected $aVisible;
+    protected $aSelected;
 
-    function __construct()
+    public function __construct()
     {
         parent::__construct();
 
         $this->aVisible = array(
-            BX_DOL_STUDIO_MT_LEFT => false,
-            BX_DOL_STUDIO_MT_CENTER => false,
-            BX_DOL_STUDIO_MT_RIGHT => false
+            BX_DOL_STUDIO_MT_LEFT => true,
+            BX_DOL_STUDIO_MT_CENTER => true,
+            BX_DOL_STUDIO_MT_RIGHT => true
+        );
+
+        $this->aSelected = array(
+            BX_DOL_STUDIO_MT_LEFT => '',
+            BX_DOL_STUDIO_MT_CENTER => '',
+            BX_DOL_STUDIO_MT_RIGHT => ''
+        );
+
+        $this->aItems = array(
+            BX_DOL_STUDIO_MT_LEFT => '',
+            BX_DOL_STUDIO_MT_CENTER => '',
+            BX_DOL_STUDIO_MT_RIGHT => ''
         );
 
         $this->aItems[BX_DOL_STUDIO_MT_LEFT] = array(
-            'edit' => array(
-                'name' => 'edit',
-                'icon' => 'move',
-                'onclick' => $this->getJsObject() . '.clickEdit(this);',
-                'title' => '_adm_tmi_cpt_edit'
-            ),
-            'favorite' => array(
-                'name' => 'favorite',
-                'icon' => 'star',
-                'onclick' => $this->getJsObject() . '.clickFavorite(this);',
-                'title' => '_adm_tmi_cpt_favorite'
-            ),
-            'extensions' => array(
-                'name' => 'extensions',
-                'icon' => 'plus',
-                'link' => BX_DOL_URL_STUDIO . 'store.php?page=goodies',
-                'title' => '_adm_tmi_cpt_extensions'
-            ),
+            'template' => 'menu_floating_blocks.html',
+            'menu_items' => array(
+                'site' => array(
+                    'name' => 'site',
+                    'icon' => 'home',
+                    'link' => 'index.php',
+                    'title' => '_adm_tmi_cpt_site'
+                ),
+                'launcher' => array(
+                    'name' => 'launcher',
+                    'icon' => 'th',
+                    'link' => BX_DOL_URL_STUDIO,
+                    'title' => '_adm_tmi_cpt_launcher'
+                ),
+                'logout' => array(
+                    'name' => 'logout',
+                    'icon' => 'sign-out',
+                    'link' => 'logout.php',
+                    'onclick' => $this->getJsObject() . '.clickLogout(this);',
+                    'title' => '_adm_tmi_cpt_logout'
+                )
+            )
         );
 
+        $aHistory = BxDolSession::getInstance()->getValue(self::$sHistorySessionKey);
+        if(!empty($aHistory) && is_array($aHistory))
+            $this->aItems[BX_DOL_STUDIO_MT_LEFT]['menu_items'] = bx_array_insert_before(array_reverse($aHistory), $this->aItems[BX_DOL_STUDIO_MT_LEFT]['menu_items'], 'logout');
+
         $aMatch = array();
         $iResult = preg_match("/^(https?:\/\/)?(.*)\/$/", BX_DOL_URL_ROOT, $aMatch);
         $this->aItems[BX_DOL_STUDIO_MT_CENTER] = $iResult ? $aMatch[2] : '';
 
         $this->aItems[BX_DOL_STUDIO_MT_RIGHT] = array(
-            'tour' => array(
-                'name' => 'tour',
-                'icon' => 'question',
-                'link' => 'javascript:void(0);',
-                'onclick' => 'glTour.start()',
-                'title' => '_adm_tmi_cpt_tour'
-            ),
-            'site' => array(
-                'name' => 'site',
-                'icon' => 'home',
-                'link' => BX_DOL_URL_ROOT,
-                'title' => '_adm_tmi_cpt_site'
-            ),
-            'logout' => array(
-                'name' => 'logout',
-                'icon' => 'power-off',
-                'link' => BX_DOL_URL_ROOT . 'logout.php',
-                'onclick' => $this->getJsObject() . ".clickLogout(this);",
-                'title' => '_adm_tmi_cpt_logout'
+            'template' => 'menu_top_toolbar.html',
+            'menu_items' => array(
+                'edit' => array(
+                    'name' => 'edit',
+                    'icon' => 'magic',
+                    'onclick' => $this->getJsObject() . '.clickEdit(this);',
+                    'title' => '_adm_tmi_cpt_edit'
+                ),
+                'favorite' => array(
+                    'name' => 'favorite',
+                    'icon' => 'star',
+                    'onclick' => $this->getJsObject() . '.clickFavorite(this);',
+                    'title' => '_adm_tmi_cpt_favorite'
+                ),
+                'extensions' => array(
+                    'name' => 'extensions',
+                    'icon' => 'plus',
+                    'link' => BX_DOL_URL_STUDIO . 'store.php?page=goodies',
+                    'title' => '_adm_tmi_cpt_extensions'
+                ),
+                'tour' => array(
+                    'name' => 'tour',
+                    'icon' => 'question',
+                    'link' => 'javascript:void(0);',
+                    'onclick' => 'glTour.start()',
+                    'title' => '_adm_tmi_cpt_tour'
+                )
             )
         );
     }
 
-    function setVisible($sPosition, $bValue)
+    public function setContent($sPosition, $mixedContent)
+    {
+        $this->aItems[$sPosition] = $mixedContent;
+    }
+
+    public function setSelected($sPosition, $sValue)
+    {
+        if(!isset($this->aItems[$sPosition]['menu_items'][$sValue]))
+            return;
+
+        $this->aItems[$sPosition]['menu_items'][$sValue]['selected'] = true;
+    }
+
+    public function setVisible($sPosition, $bValue = true)
     {
         $this->aVisible[$sPosition] = $bValue;
     }
 
-    function setVisibleAll()
+    public function setVisibleAll($bValue = true)
     {
         $this->aVisible = array(
-            BX_DOL_STUDIO_MT_LEFT => true,
-            BX_DOL_STUDIO_MT_CENTER => true,
-            BX_DOL_STUDIO_MT_RIGHT => true
+            BX_DOL_STUDIO_MT_LEFT => $bValue,
+            BX_DOL_STUDIO_MT_CENTER => $bValue,
+            BX_DOL_STUDIO_MT_RIGHT => $bValue
         );
     }
 }

+ 1 - 1
studio/classes/BxDolStudioModules.php

@@ -31,7 +31,7 @@ class BxDolStudioModules extends BxDol
                 'caption' => _t('_adm_txt_uninstall'),
                 'link' => '',
                 'click' => $this->sJsObject . ".uninstall(" . $aWidget['id'] . ", '" . $aWidget['page_name'] . "', 0)",
-                'icon' => 'times-circle'
+                'icon' => 'times'
             )
         );
     }

+ 29 - 4
studio/classes/BxDolStudioPage.php

@@ -22,9 +22,9 @@ class BxDolStudioPage extends BxDol
     protected $sPageSelected;
 
     protected $sPageRssHelpObject;
-	protected $sPageRssHelpUrl;
+    protected $sPageRssHelpUrl;
     protected $iPageRssHelpLength;
-	protected $sPageRssHelpId;
+    protected $sPageRssHelpId;
 
     protected $aActions;
     protected $aMarkers;
@@ -37,9 +37,9 @@ class BxDolStudioPage extends BxDol
 
         $this->aPage = array();
         $this->bPageMultiple = false;
-        $this->sPageSelected = '';
+        $this->sPageSelected = '';       
 
-		$this->sPageRssHelpObject = 'sys_studio_page_help';
+        $this->sPageRssHelpObject = 'sys_studio_page_help';
         $this->sPageRssHelpUrl = 'http://feed.una.io/?section={page_name}';
         $this->iPageRssHelpLength = 5;
 
@@ -152,6 +152,31 @@ class BxDolStudioPage extends BxDol
     {
         return BxDolStudioUtils::getModules($bShowCustom, $bShowSystem);
     }
+    
+    protected function updateHistory()
+    {
+        if(empty($this->aPage['wid_id'])) 
+            return;
+
+        $sHistorySessionKey = BxTemplStudioMenuTop::$sHistorySessionKey;
+        $iHistoryLength = BxTemplStudioMenuTop::$iHistoryLength;
+
+        $oSession = BxDolSession::getInstance();
+        $aHistory = $oSession->getValue($sHistorySessionKey);
+        if(!empty($aHistory) && isset($aHistory[$this->aPage['name']]))
+            unset($aHistory[$this->aPage['name']]);
+
+        $aHistory[$this->aPage['name']] = array(
+            'name' => $this->aPage['name'],
+            'icon' => $this->aPage['wid_icon'],
+            'link' => $this->aPage['wid_url'],
+            'onclick' => $this->aPage['wid_click'],
+            'title' => $this->aPage['wid_caption']
+        );
+        if(count($aHistory) > $iHistoryLength)
+            $aHistory = array_slice($aHistory, -$iHistoryLength);
+        $oSession->setValue($sHistorySessionKey, $aHistory);
+    }
 }
 
 /** @} */

+ 1 - 1
studio/launcher.php

@@ -17,7 +17,7 @@ bx_require_authentication(true);
 
 bx_import('BxTemplStudioMenuTop');
 $oTopMenu = BxTemplStudioMenuTop::getInstance();
-$oTopMenu->setVisibleAll();
+$oTopMenu->setSelected(BX_DOL_STUDIO_MT_LEFT, 'launcher');
 
 $oPage = new BxTemplStudioLauncher();
 

+ 1 - 1
studio/template/bp_blocks.html

@@ -3,7 +3,7 @@
         <div class="adm-bpb-content">
             <div class="adm-bpb-icon">
             	<bx_if:icon>
-                    <img src="<bx_icon_url:mi-empty.png />" />
+                    <div class="adm-bpb-icon-bg"></div>
                     <i class="sys-icon __icon__ bx-def-margin-sec-right"></i>
                 </bx_if:icon>
                 <bx_if:image><img src="__icon_url__" /></bx_if:image>

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

@@ -57,6 +57,13 @@ div.adm-bpb-icon {
 	width: 32px;
 	height: 32px;
 }
+div.adm-bpb-icon-bg {
+    width: 32px;
+    height: 32px;
+
+    background-color: #323c46;
+    border-radius: 8px;
+}
 div.adm-bpb-icon img {
     width: 32px;
     height: 32px;

+ 23 - 11
studio/template/css/general.css

@@ -113,24 +113,36 @@ div.bx-std-pmen-item {
 	overflow: hidden;
 }
 div.bx-std-pmen-item-cnt {
-	padding-left: 66px;    
+    padding-left: 66px;    
 
-	white-space: nowrap;
+    white-space: nowrap;
     text-overflow: ellipsis;
-	overflow: hidden;
+    overflow: hidden;
+}
+div.bx-std-pmen-item-bg {
+    position: absolute;
+
+    top: 7px;
+    left: 20px;
+    width: 32px;
+    height: 32px;
+
+    background-color: #323c46;
+    border-radius: 8px;
 }
 
 span.bx-std-pmen-item-counter {}
 span.bx-std-pmen-ic-num {}
 div.bx-std-pmen-item img {
-	position: absolute;
-	top: 7px;
-	left: 20px;
-	width: 32px;
-	height: 32px;
+    position: absolute;
+
+    top: 7px;
+    left: 20px;
+    width: 32px;
+    height: 32px;
 }
 div.bx-std-pmen-item i.sys-icon {
-	position: absolute;
+    position: absolute;
     left: 20px;
     width:32px;
 
@@ -140,11 +152,11 @@ div.bx-std-pmen-item i.sys-icon {
     text-shadow:none;
 }
 div.bx-menu-tab-active {
-	background-color: #f2f2f2;
+    background-color: #fbfcfd;
 }
 div.bx-menu-tab-active a,
 div.bx-menu-tab-active:hover a {
-	color: #333333;
+    color: #333333;
     text-decoration:none;
 }
 

+ 61 - 86
studio/template/css/launcher.css

@@ -19,9 +19,9 @@ div.bx-std-launcher {
  */
 div.bx-std-widgets-wrp {
     position: relative;
-	float: left;
+    float: left;
     top: 0px;
-	width: 100%;
+    width: 100%;
 }
 div.bx-std-widgets-center {
     position: relative;
@@ -32,7 +32,7 @@ div.bx-std-widgets {
     position: relative;
     float: left;
     left: -50%;
-	min-height: 238px;
+    min-height: 238px;
     margin: 0px 30px;
 }
 div.bx-std-widgets-highlight {
@@ -41,14 +41,14 @@ div.bx-std-widgets-highlight {
 div.bx-std-widget {
     position: relative;
     float: left;
-	padding: 30px;
+    padding: 24px;
 }
 div.bx-std-widget-empty {
-    width: 128px;
-    height: 178px;
+    width: 96px;
+    height: 128px;
 }
 div.bx-std-widget-nl {
-	clear: both;
+    clear: both;
 }
 
 .bx-std-widget-dragging {
@@ -61,44 +61,26 @@ div.bx-std-widget-nl {
 .bx-std-widget-icon {
     position: relative;
     top:0px;
-    width: 128px;
-    height: 128px;
+    width: 96px;
+    height: 96px;
 
     background-color:transparent;
 
-    line-height: 128px;
+    line-height: 96px;
 }
 
 .bx-std-widget-icon i.sys-icon {
-	position: absolute;
-	z-index: 2;
-	left: 0px;
-	width: 128px;
+    position: absolute;
+    z-index: 2;
+    left: 0px;
+    width: 96px;
 
-    font-size: 96px;
+    font-size: 64px;
     text-align: center;
     text-shadow: none;
     color: white;
 }
 
-.bx-std-widget-shadow {
-    position:absolute;
-    top:2px;
-    left:2px;
-    width: 124px;
-    height: 124px;
-    z-index:1;
-
-    -moz-border-radius: 32px;
-    -webkit-border-radius: 32px;
-    border-radius: 32px;
-
-    /* big shadow */
-    -moz-box-shadow: 0px 15px 20px rgba(51, 51, 51, 0.55);
-    -webkit-box-shadow: 0px 15px 20px rgba(51, 51, 51, 0.55);
-    box-shadow: 0px 15px 20px rgba(51, 51, 51, 0.55);
-}
-
 .bx-std-widget-icon-trans {
     -webkit-transition: all 0.15s ease-out;
     -moz-transition: all 0.15s ease-out;
@@ -110,18 +92,6 @@ div.bx-std-widget-nl {
     top:3px;
 }
 
-.bx-std-widget-icon:hover .bx-std-widget-shadow {
-    -moz-box-shadow: 0px 12px 15px rgba(51, 51, 51, 0.55);
-    -webkit-box-shadow: 0px 12px 15px rgba(51, 51, 51, 0.55);
-    box-shadow: 0px 12px 15px rgba(51, 51, 51, 0.55);
-}
-
-.bx-std-widget-dragging .bx-std-widget-shadow {
-    -moz-box-shadow: 0px 25px 40px rgba(51, 51, 51, 0.55);
-    -webkit-box-shadow: 0px 25px 40px rgba(51, 51, 51, 0.55);
-    box-shadow: 0px 25px 40px rgba(51, 51, 51, 0.55);
-}
-
 .bx-std-widget-icon-disabled {
     -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
     filter: alpha(opacity=40);
@@ -134,8 +104,8 @@ div.bx-std-widget-nl {
     position:relative;
     z-index:2;
 
-    width: 128px;
-    height: 128px;
+    width: 96px;
+    height: 96px;
 
     background-color: transparent;
     background-position:0px 0px;
@@ -144,10 +114,10 @@ div.bx-std-widget-nl {
 
 div.bx-std-widget-icon-jitter {
     position: absolute;
-    top: 30px;
-    left: 30px;
-    width: 128px;
-    height: 128px;
+    top: 24px;
+    left: 24px;
+    width: 96px;
+    height: 96px;
     z-index: 5;
 
     background-color: transparent;
@@ -157,65 +127,72 @@ div.bx-std-widget-icon-jitter img {
     position:absolute;
 
     bottom:-5px;
-    left:24px;
-    width:80px;
-    height:40px;
+    left: 28px;
+    width: 40px;
+    height: 25px;
 
-    background-color: transparent;
-    background-image:url(../images/bx-std-widget-drag.png);
+    background-color: #fdfeff;
+    background-image:url(../images/bx-std-widget-drag.svg);
+    background-repeat: no-repeat; 
+    background-position: center;
 
     cursor: move;
 }
 
 div.bx-std-widget-notices {
     position: absolute;
-    top: 0px;
-    left: 45px;
-    width: 38px;
-    height: 27px;
+    top: 15px;
+    left: 15px;
+    width: 30px;
+    height: 30px;
     z-index: 3;
     overflow:visible;
     
     color:#fff;
     font-weight:bold;
     text-shadow: #633 0px -1px 0px;        
-    line-height:25px;
+    line-height:30px;
     text-align:center;
 
-    background-color: transparent;
-    background-image: url(../images/bx-std-bg-widget-notice.png);
+    background-color: #ff3b38;
+    border: 1px solid #fdfeff;
+    border-radius: 16px;
 }
 div.bx-std-widget-actions {
     position: absolute;
     display: none;
-    top: 10px;
-    right: 10px;
-    height: 40px;
+    top: 15px;
+    right: 15px;
+    height: 30px;
     z-index: 10;
 }
 div.bx-std-widget-action {
     position: relative;
     float: left;
-    width: 40px;
-    height: 40px;
-	line-height: 40px;
+    width: 30px;
+    height: 30px;
+
+    background-color: #fdfeff;
+    border-radius: 16px;
+
+    line-height: 30px;
 }
 div.bx-std-widget-action i.sys-icon {
-	position: absolute;
-	left: 0px;
-	width: 40px;
+    position: absolute;
+    left: 0px;
+    width: 30px;
 
-    font-size: 32px;
+    font-size: 20px;
     text-align: center;
     text-shadow: none;
-    color: white;
+    color: #323c46;
 }
 .bx-std-widget-loading {
-    display:none;
-    position:absolute;
-    top: 176px;
-    left: 30px;
-    width: 128px;
+    display: none;
+    position: absolute;
+    top: 128px;
+    left: 24px;
+    width: 96px;
     height: 15px;
 
     background-image: url(../images/loading.gif);
@@ -228,22 +205,20 @@ div.bx-std-widget-action i.sys-icon {
 }
 div.bx-std-widget-caption {
     position: relative;
-    width: 128px;
-    height: 50px;
-    line-height: 50px;
+    width: 96px;
+    height: 32px;
+    line-height: 32px;
     text-align: center; 
     white-space: nowrap;
     overflow: hidden;
     text-overflow: ellipsis;
-
-    text-shadow: #000 0px 5px 12px;
 }
 div.bx-std-widget-caption-jitter {
     position: absolute;
     top: 0px;
     left: 0px;
-    width: 128px;
-    height: 50px;
+    width: 96px;
+    height: 32px;
 }
 div.bx-std-widget-caption,
 div.bx-std-widget-caption a {

+ 4 - 5
studio/template/css/menu.css

@@ -2,16 +2,15 @@
 
 ul.bx-menu-toolbar li .sys-icon-a,
 ul.bx-menu-toolbar li .sys-icon {
-	font-size: 32px;
-    font-size: 2.0rem;
-    width: 2.0rem;
-    height: 2.0rem;
+    font-size: 1.5rem;
+    width: 1.5rem;
+    height: 1.5rem;
 }
 ul.bx-menu-toolbar li a .sys-icon-a {
     margin-top:0.5rem;
 }
 
 .bx-popup .bx-menu-ver li div {
-	padding: 10px 20px 10px 10px;
+    padding: 10px 20px 10px 10px;
     padding: 0.625rem 1.25rem 0.625rem 0.625rem;
 }

+ 64 - 33
studio/template/css/menu_top.css

@@ -1,43 +1,74 @@
 div.bx-std-menu-top-wrp {
     position: relative;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-flex-wrap: wrap;
+    flex-wrap: wrap;
+
     width: 100%;
-	min-height: 50px;
+    min-height: 4rem;
+
+    background: #232A32;
 }
 div.bx-std-menu-top {
-	height: 50px;
+    position: relative;
 }
 div.bx-std-menu-top-left {
-    position: absolute;
-	z-index: 3;
-    top: 0px;
-    left: 10px;
-	height: 50px;
-}
-div.bx-std-page-caption div.bx-std-menu-top-left {
-    position: absolute;
-    top: 10px;
-    left: 10px;
-	height: 50px;
+    height: 4rem;
+    -webkit-flex: 1 1 100%;
+    flex: 1 1 100%; 
+    width: 100%;
+}
+div.bx-std-menu-top-left ul {
+    text-align: center;
+}
+div.bx-std-menu-top-center,
+div.bx-std-menu-top-right {
+    -webkit-flex: 1 1 50%;
+    flex: 1 1 50%; 
+    width: 50%;
 }
 div.bx-std-menu-top-center {
-    position: relative;
-	margin: 0px auto;
-	line-height: 50px;
-	text-align: center;
-	font-size: 1.5rem;
+    padding-left: 1rem;
+    background: #334455;
+    line-height: 3rem;
+    text-align: left;
+    font-size: 1.5rem;
 }
 div.bx-std-menu-top-right {
-    position: absolute;
-    top: 0px;
-    right: 10px;
-	height: 50px;
-}
-div.bx-std-page-caption div.bx-std-menu-top-right {
-    position: absolute;
-    z-index: 3;
-    top: 10px;
-    right: 10px;
-	height: 50px;
+    padding-right: 1rem;
+    background: #334455;
+    text-align: right;
+}
+
+div.bx-std-menu-top .bx-menu-floating-blocks li {
+    width: 4rem;
+    height: 4rem;
+}
+div.bx-std-menu-top .bx-menu-floating-blocks li.bx-def-color-bg-active,
+div.bx-std-menu-top .bx-menu-floating-blocks li.bx-def-color-bg-hl-hover:hover {
+    background-color: #334455;   
+}
+div.bx-std-menu-top .bx-menu-floating-blocks li a,
+div.bx-std-menu-top .bx-menu-floating-blocks li img,
+div.bx-std-menu-top .bx-menu-floating-blocks li .sys-icon {
+    width: 100%;
+    height: 100%;
+}
+div.bx-std-menu-top .bx-menu-floating-blocks li img {
+    margin: 0;
+}
+div.bx-std-menu-top .bx-menu-floating-blocks li .sys-icon {
+    margin: 0px;
+    line-height: 4rem;
+    font-size: 1.5rem;
+    color: #ffffff;
+}
+
+div.bx-std-menu-top .bx-menu-toolbar li {
+    float: none;
+    display: inline-block;
+    vertical-align: top;
 }
 
 div.bx-std-menu-top i.sys-icon {
@@ -45,7 +76,7 @@ div.bx-std-menu-top i.sys-icon {
     transition: all 0.2s ease-in-out;
 }
 
-div.bx-std-menu-top li.bx-menu-tab-active i.sys-icon {
-	color: #ffe900;
-    text-shadow:0 0 4px #ffe900;
-}
+div.bx-std-menu-top-right li.bx-menu-tab-active i.sys-icon {
+    color: #ffe900;
+    text-shadow: 0 0 4px #ffe900;
+}

+ 2 - 2
studio/template/css/page_columns.css

@@ -24,8 +24,8 @@ div.bx-std-page-column-wrp {
 div.bx-std-page-column {}
 div.bx-std-page-column-cnt {}
 div.bx-std-page-menu {
-	position: relative;
-	float: left;
+    position: relative;
+    float: left;
     width: 230px;
 }
 div.bx-std-page-content {

二進制
studio/template/images/bx-std-bg-columns.png


二進制
studio/template/images/bx-std-widget-drag.png


+ 3 - 0
studio/template/images/bx-std-widget-drag.svg

@@ -0,0 +1,3 @@
+<svg width="18" height="14" viewBox="0 0 18 14" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M3.75 8.25H1.25C0.559766 8.25 0 8.80977 0 9.5V12C0 12.6902 0.559766 13.25 1.25 13.25H3.75C4.44023 13.25 5 12.6902 5 12V9.5C5 8.80977 4.44023 8.25 3.75 8.25ZM10 8.25H7.5C6.80977 8.25 6.25 8.80977 6.25 9.5V12C6.25 12.6902 6.80977 13.25 7.5 13.25H10C10.6902 13.25 11.25 12.6902 11.25 12V9.5C11.25 8.80977 10.6902 8.25 10 8.25ZM16.25 8.25H13.75C13.0598 8.25 12.5 8.80977 12.5 9.5V12C12.5 12.6902 13.0598 13.25 13.75 13.25H16.25C16.9402 13.25 17.5 12.6902 17.5 12V9.5C17.5 8.80977 16.9402 8.25 16.25 8.25ZM3.75 0.75H1.25C0.559766 0.75 0 1.30977 0 2V4.5C0 5.19023 0.559766 5.75 1.25 5.75H3.75C4.44023 5.75 5 5.19023 5 4.5V2C5 1.30977 4.44023 0.75 3.75 0.75ZM10 0.75H7.5C6.80977 0.75 6.25 1.30977 6.25 2V4.5C6.25 5.19023 6.80977 5.75 7.5 5.75H10C10.6902 5.75 11.25 5.19023 11.25 4.5V2C11.25 1.30977 10.6902 0.75 10 0.75ZM16.25 0.75H13.75C13.0598 0.75 12.5 1.30977 12.5 2V4.5C12.5 5.19023 13.0598 5.75 13.75 5.75H16.25C16.9402 5.75 17.5 5.19023 17.5 4.5V2C17.5 1.30977 16.9402 0.75 16.25 0.75Z" fill="#323C46"/>
+</svg>

二進制
studio/template/images/icons/mi-empty.png


+ 22 - 45
studio/template/images/icons/wi-bld-forms.svg

@@ -1,55 +1,32 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<svg width="600px" height="600px" viewBox="0 0 600 600" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
-    <title>Group 2 Copy 10</title>
+<svg width="64px" height="64px" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 54.1 (76490) - https://sketchapp.com -->
+    <title>dashboard copy 2</title>
     <desc>Created with Sketch.</desc>
     <defs>
-        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
-            <stop stop-color="#FFFFFF" stop-opacity="0.2" offset="0%"></stop>
-            <stop stop-color="#000000" stop-opacity="0.138870018" offset="100%"></stop>
+        <path d="M32,64 C46.0222222,64 53.8173667,64 58.9086889,58.9086889 C64,53.8173667 64,46.0222222 64,32 C64,17.9777778 64,10.1826333 58.9086889,5.09131111 C53.8173667,0 46.0222222,0 32,0 C17.9777778,0 10.1826333,0 5.09131111,5.09131111 C0,10.1826333 0,17.9777778 0,32 C0,46.0222222 0,53.8173667 5.09131111,58.9086889 C10.1826333,64 17.9777778,64 32,64 Z" id="path-1"></path>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-3">
+            <stop stop-color="#FDFEFF" offset="0%"></stop>
+            <stop stop-color="#FBFCFD" offset="100%"></stop>
         </linearGradient>
-        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-2">
-            <stop stop-color="#FFFFFF" offset="0%"></stop>
-            <stop stop-color="#F6F6F6" offset="35.2427758%"></stop>
-            <stop stop-color="#E5E5E5" offset="100%"></stop>
-        </linearGradient>
-        <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-3">
-            <feMorphology radius="1" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
-            <feOffset dx="0" dy="2" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
-            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.08 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix>
-            <feMerge>
-                <feMergeNode in="shadowMatrixOuter1"></feMergeNode>
-                <feMergeNode in="SourceGraphic"></feMergeNode>
-            </feMerge>
-        </filter>
-        <path d="M319.999688,319.999688 L40.0003125,319.999688 L40.0003125,40.0003125 L240,40.0003125 L240,0 L40.0003125,0 C17.998125,0 0,17.998125 0,40.0003125 L0,319.999687 C0,342.001875 17.998125,360 40.0003125,360 L319.999687,360 C342.001875,360 360,342.001875 360,319.999688 L360,160.000313 L319.999687,160.000313 L319.999687,319.999688 L319.999688,319.999688 Z" id="path-4"></path>
-        <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-5">
-            <feMorphology radius="1" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
-            <feOffset dx="0" dy="2" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
-            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.08 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
-        </filter>
-        <path d="M75.6575983,164.342402 C72.5331656,167.466834 72.5369491,172.536324 75.6557777,175.655153 L154.344847,254.344222 C157.468274,257.467649 162.529048,257.470952 165.66375,254.33625 L354.336563,65.6634371 C357.464393,62.5356072 357.466029,57.466029 354.342714,54.3427142 L337.659786,37.6597858 C334.535353,34.5353531 329.462852,34.5272809 326.32867,37.6431158 L160.000312,202.997813 L103.705893,147.617573 C100.553407,144.516281 95.4638415,144.536159 92.3405267,147.659473 L75.6575983,164.342402 Z" id="path-6"></path>
-        <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-7">
-            <feMorphology radius="1" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
-            <feOffset dx="0" dy="2" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
-            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.08 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
+        <path d="M25.9677419,5 L19.7849462,5 C19.7849462,2.2421875 17.5668683,0 14.8387097,0 C12.1105511,0 9.89247312,2.2421875 9.89247312,5 L3.70967742,5 C1.66162634,5 0,6.6796875 0,8.75 L0,36.25 C0,38.3203125 1.66162634,40 3.70967742,40 L25.9677419,40 C28.015793,40 29.6774194,38.3203125 29.6774194,36.25 L29.6774194,8.75 C29.6774194,6.6796875 28.015793,5 25.9677419,5 Z M14.8387097,3.125 C15.8665995,3.125 16.6935484,3.9609375 16.6935484,5 C16.6935484,6.0390625 15.8665995,6.875 14.8387097,6.875 C13.8108199,6.875 12.983871,6.0390625 12.983871,5 C12.983871,3.9609375 13.8108199,3.125 14.8387097,3.125 Z M5.06989247,16.359375 L6.05141129,15.375 C6.21370968,15.2109375 6.47647849,15.2109375 6.63877688,15.375 L8.23084677,17 L11.9096102,13.3125 C12.0719086,13.1484375 12.3346774,13.1484375 12.4969758,13.3125 L13.4707661,14.3046875 C13.6330645,14.46875 13.6330645,14.734375 13.4707661,14.8984375 L8.50907258,19.8671875 C8.34677419,20.03125 8.08400538,20.03125 7.92170699,19.8671875 L5.06989247,16.953125 C4.90759409,16.7890625 4.90759409,16.5234375 5.06989247,16.359375 Z M7.41935484,30.625 C6.39146505,30.625 5.56451613,29.7890625 5.56451613,28.75 C5.56451613,27.7109375 6.39146505,26.875 7.41935484,26.875 C8.44724462,26.875 9.27419355,27.7109375 9.27419355,28.75 C9.27419355,29.7890625 8.44724462,30.625 7.41935484,30.625 Z M24.7311828,29.375 C24.7311828,29.71875 24.452957,30 24.1129032,30 L12.983871,30 C12.6438172,30 12.3655914,29.71875 12.3655914,29.375 L12.3655914,28.125 C12.3655914,27.78125 12.6438172,27.5 12.983871,27.5 L24.1129032,27.5 C24.452957,27.5 24.7311828,27.78125 24.7311828,28.125 L24.7311828,29.375 Z M24.7311828,19.375 C24.7311828,19.71875 24.3988575,20 23.9892473,20 L11.9096102,20 L14.405914,17.5 L23.9892473,17.5 C24.3988575,17.5 24.7311828,17.78125 24.7311828,18.125 L24.7311828,19.375 Z" id="path-4"></path>
+        <filter x="-6.7%" y="-2.5%" width="113.5%" height="110.0%" filterUnits="objectBoundingBox" id="filter-5">
+            <feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+            <feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
         </filter>
     </defs>
     <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="Group-2-Copy-10">
-            <path d="M552.268958,552.268958 C600,504.537813 600,431.458333 600,300 C600,168.541667 600,95.4621875 552.268958,47.7310417 C504.537813,0 431.458333,0 300,0 C168.541667,0 95.4621875,0 47.7310417,47.7310417 C0,95.4621875 0,168.541667 0,300 C0,431.458333 0,504.537813 47.7310417,552.268958 C95.4621875,600 168.541667,600 300,600 C431.458333,600 504.537813,600 552.268958,552.268958 L552.268958,552.268958 Z" id="path" fill="#4990E2"></path>
-            <path d="M552.268958,552.268958 C600,504.537813 600,431.458333 600,300 C600,168.541667 600,95.4621875 552.268958,47.7310417 C504.537813,0 431.458333,0 300,0 C168.541667,0 95.4621875,0 47.7310417,47.7310417 C0,95.4621875 0,168.541667 0,300 C0,431.458333 0,504.537813 47.7310417,552.268958 C95.4621875,600 168.541667,600 300,600 C431.458333,600 504.537813,600 552.268958,552.268958 L552.268958,552.268958 Z" id="path-copy" fill="url(#linearGradient-1)"></path>
-            <g id="android-checkbox-outline" transform="translate(120.000000, 119.000000)">
-                <g id="Layer_1" filter="url(#filter-3)">
-                    <g id="Icon_24_">
-                        <g id="Path" opacity="0.5">
-                            <use fill="black" fill-opacity="1" filter="url(#filter-5)" xlink:href="#path-4"></use>
-                            <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-4"></use>
-                        </g>
-                        <g id="Path">
-                            <use fill="black" fill-opacity="1" filter="url(#filter-7)" xlink:href="#path-6"></use>
-                            <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-6"></use>
-                        </g>
+        <g id="dashboard-copy-2">
+            <mask id="mask-2" fill="white">
+                <use xlink:href="#path-1"></use>
+            </mask>
+            <use id="Path" fill="#2085FD" xlink:href="#path-1"></use>
+            <g id="clipboard-list-check" mask="url(#mask-2)" fill-rule="nonzero">
+                <g transform="translate(17.000000, 11.000000)" id="Shape">
+                    <g>
+                        <use fill="black" fill-opacity="1" filter="url(#filter-5)" xlink:href="#path-4"></use>
+                        <use fill="url(#linearGradient-3)" xlink:href="#path-4"></use>
                     </g>
                 </g>
             </g>

+ 22 - 36
studio/template/images/icons/wi-bld-pages.svg

@@ -1,46 +1,32 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<svg width="600px" height="600px" viewBox="0 0 600 600" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
-    <title>Group 2 Copy</title>
+<svg width="64px" height="64px" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 54.1 (76490) - https://sketchapp.com -->
+    <title>dashboard copy 3</title>
     <desc>Created with Sketch.</desc>
     <defs>
-        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
-            <stop stop-color="#FFFFFF" stop-opacity="0.2" offset="0%"></stop>
-            <stop stop-color="#000000" stop-opacity="0.138870018" offset="100%"></stop>
+        <path d="M32,64 C46.0222222,64 53.8173667,64 58.9086889,58.9086889 C64,53.8173667 64,46.0222222 64,32 C64,17.9777778 64,10.1826333 58.9086889,5.09131111 C53.8173667,0 46.0222222,0 32,0 C17.9777778,0 10.1826333,0 5.09131111,5.09131111 C0,10.1826333 0,17.9777778 0,32 C0,46.0222222 0,53.8173667 5.09131111,58.9086889 C10.1826333,64 17.9777778,64 32,64 Z" id="path-1"></path>
+        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-3">
+            <stop stop-color="#FDFEFF" offset="0%"></stop>
+            <stop stop-color="#FBFCFD" stop-opacity="0.9" offset="100%"></stop>
         </linearGradient>
-        <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-2">
-            <stop stop-color="#FFFFFF" offset="0%"></stop>
-            <stop stop-color="#F6F6F6" offset="35.2427758%"></stop>
-            <stop stop-color="#E5E5E5" offset="100%"></stop>
-        </linearGradient>
-        <path d="M0,352.004964 C0,356.420501 3.57643808,360 7.99240587,360 L276.913844,360 C281.327928,360 284.90625,356.422385 284.90625,352.004964 L284.90625,82.9950358 C284.90625,78.5794995 281.329812,75 276.913844,75 L7.99240587,75 C3.578322,75 0,78.5776149 0,82.9950358 L0,352.004964 Z" id="path-3"></path>
-        <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-4">
-            <feMorphology radius="1" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
-            <feOffset dx="0" dy="2" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
-            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.08 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
-        </filter>
-        <path d="M82.9950358,0 C78.5794995,0 75,3.57358932 75,7.99854961 L75,60 L300,60 L300,285 L352.00145,285 C356.418927,285 360,281.422385 360,277.004964 L360,7.99503582 C360,3.57949946 356.422385,0 352.004964,0 L82.9950358,0 Z" id="path-5"></path>
-        <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-6">
-            <feMorphology radius="1" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
-            <feOffset dx="0" dy="2" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
-            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.08 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
+        <path d="M25,35 L25,38.125 C25,39.1605469 24.1605469,40 23.125,40 L1.875,40 C0.839453125,40 0,39.1605469 0,38.125 L0,9.375 C0,8.33945312 0.839453125,7.5 1.875,7.5 L7.5,7.5 L7.5,30.625 C7.5,33.0374219 9.46257813,35 11.875,35 L25,35 Z M25,8.125 L25,0 L11.875,0 C10.8394531,0 10,0.839453125 10,1.875 L10,30.625 C10,31.6605469 10.8394531,32.5 11.875,32.5 L33.125,32.5 C34.1605469,32.5 35,31.6605469 35,30.625 L35,10 L26.875,10 C25.84375,10 25,9.15625 25,8.125 Z M34.4508594,5.70085937 L29.2991406,0.549140625 C28.9475151,0.197533215 28.4706202,2.59996977e-06 27.9733594,0 L27.5,0 L27.5,7.5 L35,7.5 L35,7.02664062 C34.9999974,6.52937984 34.8024668,6.0524849 34.4508594,5.70085937 L34.4508594,5.70085937 Z" id="path-4"></path>
+        <filter x="-5.7%" y="-2.5%" width="111.4%" height="110.0%" filterUnits="objectBoundingBox" id="filter-5">
+            <feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+            <feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+            <feColorMatrix values="0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
         </filter>
     </defs>
     <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="Group-2-Copy">
-            <path d="M552.268958,552.268958 C600,504.537813 600,431.458333 600,300 C600,168.541667 600,95.4621875 552.268958,47.7310417 C504.537813,0 431.458333,0 300,0 C168.541667,0 95.4621875,0 47.7310417,47.7310417 C0,95.4621875 0,168.541667 0,300 C0,431.458333 0,504.537813 47.7310417,552.268958 C95.4621875,600 168.541667,600 300,600 C431.458333,600 504.537813,600 552.268958,552.268958 L552.268958,552.268958 Z" id="path" fill="#4990E2"></path>
-            <path d="M552.268958,552.268958 C600,504.537813 600,431.458333 600,300 C600,168.541667 600,95.4621875 552.268958,47.7310417 C504.537813,0 431.458333,0 300,0 C168.541667,0 95.4621875,0 47.7310417,47.7310417 C0,95.4621875 0,168.541667 0,300 C0,431.458333 0,504.537813 47.7310417,552.268958 C95.4621875,600 168.541667,600 300,600 C431.458333,600 504.537813,600 552.268958,552.268958 L552.268958,552.268958 Z" id="path-copy" fill="url(#linearGradient-1)"></path>
-            <g id="ios-browsers" transform="translate(120.000000, 118.000000)">
-                <g id="Layer_1">
-                    <g id="Group">
-                        <g id="Shape">
-                            <use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
-                            <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-3"></use>
-                        </g>
-                        <g id="Shape" opacity="0.5">
-                            <use fill="black" fill-opacity="1" filter="url(#filter-6)" xlink:href="#path-5"></use>
-                            <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-5"></use>
-                        </g>
+        <g id="dashboard-copy-3">
+            <mask id="mask-2" fill="white">
+                <use xlink:href="#path-1"></use>
+            </mask>
+            <use id="Path" fill="#2085FD" xlink:href="#path-1"></use>
+            <g id="copy" mask="url(#mask-2)" fill-rule="nonzero">
+                <g transform="translate(15.000000, 12.000000)" id="Shape">
+                    <g>
+                        <use fill="black" fill-opacity="1" filter="url(#filter-5)" xlink:href="#path-4"></use>
+                        <use fill="url(#linearGradient-3)" xlink:href="#path-4"></use>
                     </g>
                 </g>
             </g>

文件差異過大導致無法顯示
+ 7 - 28
studio/template/images/icons/wi-dashboard.svg


+ 15 - 0
studio/template/menu_floating_blocks.html

@@ -0,0 +1,15 @@
+<ul class="bx-menu-floating-blocks bx-menu-object-__object__ bx-clearfix">
+    <bx_repeat:menu_items><li class="bx-def-color-bg-hl-hover bx-def-box-sizing __class_add__">
+        <a href="__link__" target="__target__" onclick="__onclick__" title="__title_attr__">
+            <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>
+        </a>
+    </li></bx_repeat:menu_items>
+</ul>
+
+<script language="javascript">
+    $(document).ready(function () {
+        // add default class to active menu items
+        $('.bx-menu-floating-blocks > li.bx-menu-tab-active').not('.bx-def-color-bg-active').addClass('bx-def-color-bg-active');
+    });
+</script>

+ 1 - 1
studio/template/menu_side.html

@@ -3,7 +3,7 @@
         <a href="__link__" target="__target__" onclick="__onclick__" title="__title_attr__">
             <div class="bx-std-pmen-item-cnt">
                 <bx_if:icon>
-                    <img src="<bx_icon_url:mi-empty.png />" />
+                    <div class="bx-std-pmen-item-bg"></div>
                     <i class="sys-icon __icon__ bx-def-margin-sec-right"></i>
                 </bx_if:icon>
                 <bx_if:image><img src="__icon_url__" /></bx_if:image>

+ 2 - 2
studio/template/menu_top.html

@@ -1,4 +1,4 @@
-<div class="bx-std-menu-top-wrp bx-def-margin-sec-top">
+<div class="bx-std-menu-top-wrp">
     <script defer type="text/javascript">
     <!--
     var oBxDolStudioMenuTop = new BxDolStudioMenuTop({
@@ -7,6 +7,6 @@
     -->
     </script>
     <bx_repeat:menus>
-        <div id="bx-std-menu-top-__name__" class="bx-std-menu-top bx-std-menu-top-__name__ bx-def-font-h1 bx-def-font-contrasted">__content__</div>
+        <div id="bx-std-menu-top bx-std-menu-top-__name__" class="bx-std-menu-top bx-std-menu-top-__name__ bx-def-font-h1 bx-def-font-contrasted bx-def-box-sizing">__content__</div>
     </bx_repeat:menus>
 </div>

+ 1 - 1
studio/template/page_3.html

@@ -7,7 +7,7 @@
     });
     -->
     </script>
-    <div class="bx-std-page-caption">__page_caption_code__</div>
+    __page_caption_code__
     <div class="bx-std-page-columns" id="bx-std-page-columns" __page_attributes__>
         <bx_include_auto:page_content_2_col.html />
     </div>

+ 1 - 1
studio/template/page_4.html

@@ -7,7 +7,7 @@
     });
     -->
     </script>
-    <div class="bx-std-page-caption">__page_caption_code__</div>
+    __page_caption_code__
     <div class="bx-std-page-content" id="bx-std-page-content" __page_attributes__>
     	<div class="bx-std-page-content-cnt bx-def-padding">__page_main_code__</div>
     </div>

+ 0 - 3
studio/template/page_caption.html

@@ -1,3 +0,0 @@
-<div class="bx-std-menu-top bx-std-menu-top-left">__menu_left__</div>
-<div class="bx-std-pcap-text bx-def-font-contrasted">__caption__</div>
-<div class="bx-std-menu-top bx-std-menu-top-right">__menu_right__</div>

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

@@ -23,8 +23,8 @@ class BxBaseStudioConfig extends BxBaseConfig
             'bx-padding-sec' => '20px',
             'bx-padding-thd' => '10px',
 
-        	'bx-color-page' => '#ffffff',
-        	'bx-border-color-layout' => '#cccccc',
+            'bx-color-page' => '#fbfcfd',
+            'bx-border-color-layout' => '#cccccc',
 
             'bx-size-widget' => '128px',
             'bx-round-corners-radius-widget' => '32px',

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

@@ -14,7 +14,7 @@ class BxBaseStudioMenu extends BxDolStudioMenu
     {
         parent::__construct ($aObject, $oTemplate);
     }
-
+    
     /**
      * Check if menu items is selected.
      * @param $a menu item array

+ 9 - 4
studio/template/scripts/BxBaseStudioMenuTop.php

@@ -49,11 +49,16 @@ class BxBaseStudioMenuTop extends BxDolStudioMenuTop implements iBxDolSingleton
                 continue;
 
             $sContent = "";
-            if(is_array($mixedItems)) {
-                $oMenu = new BxTemplStudioMenu(array('template' => 'menu_top_toolbar.html', 'menu_items' => $mixedItems));
-                $sContent = $oMenu->getCode();
-            } else if(is_string($mixedItems) && !empty($mixedItems))
+            if(is_string($mixedItems) && !empty($mixedItems))
                 $sContent = $mixedItems;
+            else if(is_array($mixedItems)) {
+                $oMenu = new BxTemplStudioMenu($mixedItems);
+                $oMenu->addMarkers(array(
+                    'url_studio' => BX_DOL_URL_STUDIO
+                ));
+
+                $sContent = $oMenu->getCode();
+            }
 
             $aTmplVars[] = array(
                 'name' => $sPosition,

+ 10 - 41
studio/template/scripts/BxBaseStudioPage.php

@@ -86,6 +86,8 @@ class BxBaseStudioPage extends BxDolStudioPage
         if(empty($this->aPage) || !is_array($this->aPage))
             return '';
 
+        $this->updateHistory();
+
         $oTemplate = BxDolStudioTemplate::getInstance();
         $oFunctions = BxTemplStudioFunctions::getInstance();
 
@@ -99,24 +101,11 @@ class BxBaseStudioPage extends BxDolStudioPage
 
         $oTemplate->addInjection('injection_header', 'text', $sHelp . $sActions);
 
-        //--- Menu Left ---//
-        $aItems = array(
-            'back' => array(
-                'name' => 'back',
-                'icon' => 'th',
-                'link' => BX_DOL_URL_STUDIO . 'launcher.php',
-                'title' => '_adm_txt_back_to_launcher'
-            )
-        );
-
-        $oMenu = new BxTemplStudioMenu(array('template' => 'menu_top_toolbar.html', 'menu_items' => $aItems));
-        $sMenuLeft = $oMenu->getCode();
-
         //--- Menu Right ---//
-        $aItems = array();
+        $aItemsRight = array();
 
         if($bActions)
-            $aItems['actions'] = array(
+            $aItemsRight['actions'] = array(
                 'name' => 'actions',
                 'icon' => 'cog',
                 'onclick' => BX_DOL_STUDIO_PAGE_JS_OBJECT . ".togglePopup('actions', this)",
@@ -124,39 +113,19 @@ class BxBaseStudioPage extends BxDolStudioPage
             );
 
         if($bHelp)
-            $aItems['help'] = array(
+            $aItemsRight['help'] = array(
                 'name' => 'help',
                 'icon' => 'question-circle',
                 'onclick' => BX_DOL_STUDIO_PAGE_JS_OBJECT . ".togglePopup('help', this)",
                 'title' => '_adm_txt_show_help'
             );
 
-        $aItems = array_merge($aItems, array(
-        	'home' => array(
-                'name' => 'home',
-                'icon' => 'home',
-                'link' => BX_DOL_URL_ROOT,
-                'onclick' => '',
-                'title' => '_adm_tmi_cpt_site'
-            ),
-            'logout' => array(
-                'name' => 'logout',
-                'icon' => 'power-off',
-                'link' => BX_DOL_URL_ROOT . 'logout.php',
-                'onclick' => '',
-                'title' => '_adm_tmi_cpt_logout'
-            )
-        ));
-
-        $oMenu = new BxTemplStudioMenu(array('template' => 'menu_top_toolbar.html', 'menu_items' => $aItems));
-        $sMenuRight = $oMenu->getCode();
+        $oTopMenu = BxTemplStudioMenuTop::getInstance();
+        $oTopMenu->setSelected(BX_DOL_STUDIO_MT_LEFT, $this->aPage['name']);
+        $oTopMenu->setContent(BX_DOL_STUDIO_MT_CENTER, _t($this->aPage['caption']));
+        $oTopMenu->setContent(BX_DOL_STUDIO_MT_RIGHT, array('template' => 'menu_top_toolbar.html', 'menu_items' => $aItemsRight));
 
-        $aTmplVars = array(
-            'menu_left' => $sMenuLeft,
-            'caption' => _t($this->aPage['caption']),
-            'menu_right' => $sMenuRight
-        );
-        return $oTemplate->parseHtmlByName('page_caption.html', $aTmplVars);
+        return '';
     }
 
     public function getPageAttributes()

+ 10 - 15
studio/template/widgets.html

@@ -2,15 +2,6 @@
 <div id="bx-std-widget-__id__" class="bx-std-widget __widget_disabled_class__ __widget_bookmarked_class__" style="__widget_styles__">
     <div class="bx-std-widget-cont">
         <div class="bx-std-widget-icon bx-std-widget-icon-trans">
-        	<!--
-        	//TODO: Remove completely with CSS if it's not needed anymore  
-            <div class="bx-std-widget-shadow bx-std-widget-icon-trans"></div>
-            -->
-            <bx_if:show_notice>
-                <div class="bx-std-widget-notices">
-                    __content__
-                </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>>
                 <bx_if:icon>
                     <img src="<bx_icon_url:wi-empty.png />" />
@@ -19,14 +10,19 @@
                 <bx_if:image><img src="__icon_url__" /></bx_if:image>
             </a>
         </div>
+        <bx_if:show_notice>
+           <div class="bx-std-widget-notices bx-def-box-sizing">
+               __content__
+           </div>
+        </bx_if:show_notice>
 
         <bx_if:show_actions>
             <div class="bx-std-widget-actions">
                 <bx_repeat:actions>
-                    <div class="bx-std-widget-action">
+                    <div class="bx-std-widget-action bx-def-box-sizing">
                         <a class="bx-std-widget-action" href="__url__" <bx_if:show_click>onClick="__content__"</bx_if:show_click> title="__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>
+                            <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>
@@ -35,11 +31,10 @@
         </bx_if:show_actions>
 
         <div class="bx-std-widget-icon-jitter" style="display:none">
-            <img src="<bx_image_url:bx-std-spacer.gif />" />
+            <img class="bx-def-round-corners" src="<bx_image_url:bx-std-spacer.gif />" />
         </div>
 
-        <div class="bx-std-widget-loading">
-        </div>
+        <div class="bx-std-widget-loading"></div>
 
         <div class="bx-std-widget-caption">
             <a class="bx-std-widget-link" href="__url__" <bx_if:show_click_link>onClick="__content__"</bx_if:show_click_link>>__caption__</a>

部分文件因文件數量過多而無法顯示