Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9ca6a3a995 | |||
| 7303dbae41 | |||
| 511f5a0c45 | |||
| 9ea5c1b59b | |||
| ade56062e3 | |||
| 481a2d2606 | |||
| 3a809bb92e | |||
| cc2ab04035 | |||
| 17a57f3685 | |||
| d41ecbbd9a | |||
| b6c6fc2486 | |||
| 918c55da3e | |||
| 385c27c691 | |||
| 54d702ba9f | |||
| c816c40c19 | |||
| aad27cd8b4 | |||
| 96fb33b80b | |||
| e10a5f1f62 | |||
| f133932884 | |||
| e287e27375 | |||
| 9ae4d7ee48 | |||
| 624bb52ec4 | |||
| ba34a3738a | |||
| 18c1cce715 | |||
| 7a906fb033 | |||
| c8536ae264 | |||
| 3703791a28 | |||
| 6dff33f9d7 | |||
| 05bd7c29e9 | |||
| 8380a4bf17 | |||
| ad7b5b7c52 | |||
| 871cf1f5b4 |
@@ -12,6 +12,8 @@ Comptatible with AppOrder.
|
||||
* [How to contribute?](#how-to-contribute)
|
||||
* [Screenshots](https://gitnet.fr/deblan/side_menu/src/branch/master/screenshots/)
|
||||
|
||||
You like this app and you want to support me? [Buy me a coffee](https://www.buymeacoffee.com/deblan) ☕
|
||||
|
||||
Installation and upgrade
|
||||
------------------------
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<info>
|
||||
<id>side_menu</id>
|
||||
<name>Side menu</name>
|
||||
<summary>Move the top menu to the left side.</summary>
|
||||
<summary>Modify the display of the menu.</summary>
|
||||
<description><![CDATA[Side menu allows you to modify the position of the main menu by creating a panel on the left of the interface or with a big menu on the top.
|
||||
You can also define apps that must be displayed in the top menu. Fully customisable.
|
||||
|
||||
@@ -17,7 +17,7 @@ You can report a bug or request a feature by opening an issue.
|
||||
]]></description>
|
||||
<licence>agpl</licence>
|
||||
<author mail="contact@deblan.fr" homepage="https://www.deblan.io/">Simon Vieille</author>
|
||||
<version>1.9.2</version>
|
||||
<version>1.12.2</version>
|
||||
<namespace>SideMenu</namespace>
|
||||
<category>customization</category>
|
||||
<website>https://gitnet.fr/deblan/side_menu</website>
|
||||
|
||||
@@ -41,4 +41,30 @@
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.side-menu-display {
|
||||
padding: 10px;
|
||||
border: 2px solid transparent;
|
||||
max-width: 100%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.side-menu-display.is-active {
|
||||
border: 2px solid #91cb7f;
|
||||
}
|
||||
|
||||
.info {
|
||||
margin-top: 8px;
|
||||
padding: 5px;
|
||||
background: #91cb7f;
|
||||
color: #fff;
|
||||
border-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
#side-menu-section h2 small {
|
||||
font-size: 11px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.side-menu-toggler {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@@ -195,6 +195,7 @@
|
||||
}
|
||||
|
||||
.side-menu-always-displayed .side-menu-apps-list {
|
||||
height: calc(100vh - 49px);
|
||||
top: 49px;
|
||||
}
|
||||
|
||||
@@ -210,17 +211,17 @@
|
||||
display: none;
|
||||
}
|
||||
|
||||
.side-menu-always-displayed #side-menu .side-menu-header {
|
||||
height: 49px;
|
||||
}
|
||||
|
||||
.side-menu-always-displayed #side-menu.open,
|
||||
.side-menu-always-displayed #side-menu.open .side-menu-apps-list,
|
||||
.side-menu-always-displayed #side-menu.open .side-menu-header,
|
||||
.side-menu-always-displayed #side-menu:hover,
|
||||
.side-menu-always-displayed #side-menu:hover .side-menu-apps-list,
|
||||
.side-menu-always-displayed #side-menu:hover .side-menu-header {
|
||||
.side-menu-always-displayed #side-menu.open .side-menu-header {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.side-menu-always-displayed #side-menu.open .side-menu-app-text,
|
||||
.side-menu-always-displayed #side-menu:hover .side-menu-app-text {
|
||||
.side-menu-always-displayed #side-menu.open .side-menu-app-text {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="571.907" height="156.921" viewBox="0 0 151.317 41.519">
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#fff" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M.18.18H58.71v41.16H.18z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#f9f9f9" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M.18.18H58.71v5.062H.18z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#4d4d4d" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M.18.18h6.128v41.16H.18z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#666" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M1.496 1.034h3.496V4.39H1.496z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#e6e6e6" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M2.297 7.455H4.19v1.81H2.297zM2.297 10.997H4.19v1.81H2.297zM2.297 14.404H4.19v1.81H2.297zM2.297 17.946H4.19v1.81H2.297zM2.297 21.353H4.19v1.81H2.297zM2.297 24.895H4.19v1.81H2.297zM2.297 28.302H4.19v1.81H2.297zM2.297 31.844H4.19v1.81H2.297zM7.136 1.034h6.102V4.39H7.136z"/>
|
||||
<g fill="#b3b3b3" stroke="#ccc" fill-rule="evenodd" stroke-width="1.465" stroke-linecap="round">
|
||||
<path d="M24.44 21.35l5.056-5.056M23.3 29.835l18.15-18.151M36.267 25.225l3.585-3.586"/>
|
||||
</g>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#fff" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M62.865.18h58.532v41.16H62.865z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#f9f9f9" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M62.865.18h58.532v5.062H62.865z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="none" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M62.865.18h58.532v41.16H62.865z"/>
|
||||
<g fill="#b3b3b3" stroke="#ccc" fill-rule="evenodd" stroke-width="1.465" stroke-linecap="round">
|
||||
<path d="M84.197 21.35l5.055-5.056M83.056 29.835l18.152-18.151M96.024 25.225l3.585-3.586"/>
|
||||
</g>
|
||||
<g color="#000" stroke-width=".359" stroke-linecap="square">
|
||||
<path style="marker:none" overflow="visible" fill="#4d4d4d" stroke="#b3b3b3" paint-order="fill markers stroke" d="M62.866.18h20.829v41.16h-20.83z"/>
|
||||
<path style="marker:none" overflow="visible" fill="#666" stroke="#ccc" paint-order="fill markers stroke" d="M64.044 1.034h3.496V4.39h-3.496z"/>
|
||||
<path style="marker:none" overflow="visible" fill="#e6e6e6" stroke="#ccc" paint-order="fill markers stroke" d="M64.578 8.076h1.893v1.81h-1.893zM67.507 8.407H79.97v1.148H67.507zM64.578 11.617h1.893v1.81h-1.893zM67.507 11.948h10.592v1.148H67.507zM64.578 15.025h1.893v1.81h-1.893zM67.507 15.356h12.997v1.148H67.507zM64.578 18.566h1.893v1.81h-1.893zM67.507 18.897h7.585v1.148h-7.585zM64.578 21.974h1.893v1.81h-1.893zM67.507 22.305h11.46v1.148h-11.46zM64.578 25.515h1.893v1.81h-1.893zM67.507 25.846h9.322v1.148h-9.322zM64.578 28.923h1.893v1.81h-1.893zM67.507 29.254h11.126v1.148H67.507zM64.578 32.464h1.893v1.81h-1.893zM67.507 32.795H80.37v1.148H67.507z"/>
|
||||
</g>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#fff" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M125.856.18h25.281v41.16h-25.28z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#f9f9f9" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M125.856.18h25.257v5.062h-25.257z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="none" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M125.856.18h25.257v41.16h-25.257z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#4d4d4d" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M125.856.18h20.83v41.16h-20.83z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#666" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M127.034 1.034h3.496V4.39h-3.496z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#e6e6e6" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M127.568 8.076h1.893v1.81h-1.893zM130.497 8.407h12.463v1.148h-12.463zM127.568 11.617h1.893v1.81h-1.893zM130.497 11.948h10.592v1.148h-10.592zM127.568 15.025h1.893v1.81h-1.893zM130.497 15.356h12.997v1.148h-12.997zM127.568 18.566h1.893v1.81h-1.893zM130.497 18.897h7.585v1.148h-7.585zM127.568 21.974h1.893v1.81h-1.893zM130.497 22.305h11.46v1.148h-11.46zM127.568 25.515h1.893v1.81h-1.893zM130.497 25.846h9.322v1.148h-9.322zM127.568 28.923h1.893v1.81h-1.893zM130.497 29.254h11.126v1.148h-11.126zM127.568 32.464h1.893v1.81h-1.893zM130.497 32.795h12.863v1.148h-12.863z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.0 KiB |
@@ -0,0 +1,30 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="571.907" height="156.921" viewBox="0 0 151.317 41.519">
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#fff" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M.18.18h58.532v41.16H.18zM62.735.18h58.532v41.16H62.735z"/>
|
||||
<g fill="#b3b3b3" stroke="#ccc" fill-rule="evenodd" stroke-width="1.465" stroke-linecap="round">
|
||||
<path d="M84.066 21.35l5.055-5.056M82.925 29.835l18.152-18.151M95.893 25.225l3.585-3.586"/>
|
||||
</g>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#4d4d4d" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M62.735.18h58.532v25.123H62.735z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="none" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M62.735.18h58.532v41.16H62.735z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#666" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M63.738 1.034h3.496V4.39h-3.496z"/>
|
||||
<g stroke-width=".401" color="#000" fill="#e6e6e6" stroke="#ccc" stroke-linecap="square">
|
||||
<path style="marker:none" overflow="visible" paint-order="fill markers stroke" d="M38.862 110.138h1.893v1.81h-1.893zM41.792 110.469h12.463v1.148H41.792zM38.862 113.679h1.893v1.81h-1.893zM41.792 114.01h10.592v1.148H41.792zM38.862 117.087h1.893v1.81h-1.893zM41.792 117.418h12.997v1.148H41.792zM38.862 120.628h1.893v1.81h-1.893zM41.792 120.959h7.585v1.148h-7.585z" transform="matrix(.89632 0 0 .8943 38.412 -87.8)"/>
|
||||
</g>
|
||||
<g stroke-width=".401" color="#000" fill="#e6e6e6" stroke="#ccc" stroke-linecap="square">
|
||||
<path style="marker:none" overflow="visible" paint-order="fill markers stroke" d="M65.723 110.272h1.893v1.81h-1.893zM68.652 110.602h11.46v1.148h-11.46zM65.723 113.813h1.893v1.81h-1.893zM68.652 114.144h9.322v1.148h-9.322zM65.723 117.221h1.893v1.81h-1.893zM68.652 117.551h11.126v1.148H68.652zM65.723 120.762h1.893v1.81h-1.893zM68.652 121.093h12.863v1.148H68.652z" transform="matrix(.89632 0 0 .8943 34.262 -87.919)"/>
|
||||
</g>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#666" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M116.257 1.034h3.496V4.39h-3.496z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#e6e6e6" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M72.715 6.186h11.518v1.148H72.715zM92.452 6.186h9.344v1.148h-9.344z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#f9f9f9" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M.18.18h58.532v5.063H.18z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="none" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M.18.18h58.532v41.16H.18z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#666" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M1.357 1.034h3.496V4.39H1.357z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#e6e6e6" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M6.068 1.034h6.102V4.39H6.068z"/>
|
||||
<g fill="#b3b3b3" stroke="#ccc" fill-rule="evenodd" stroke-width="1.465" stroke-linecap="round">
|
||||
<path d="M21.51 21.35l5.056-5.056M20.37 29.835L38.52 11.684M33.337 25.225l3.586-3.586"/>
|
||||
</g>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#fff" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M125.857.18h25.28v41.16h-25.28z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#f9f9f9" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M125.857.18h25.257v5.063h-25.257z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="none" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M125.857.18h25.257v41.16h-25.257z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#4d4d4d" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M125.857.18h20.829v41.16h-20.83z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#666" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M127.034 1.034h3.496V4.39h-3.496z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#e6e6e6" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M127.569 10.155h1.893v1.81h-1.893zM130.498 10.486h12.463v1.148h-12.463zM127.569 13.696h1.893v1.81h-1.893zM130.498 14.027h10.592v1.148h-10.592zM127.569 17.104h1.893v1.81h-1.893zM130.498 17.435h12.997v1.148h-12.997zM127.569 24.708h1.893v1.81h-1.893zM130.498 25.04h7.585v1.147h-7.585zM127.569 28.116h1.893v1.81h-1.893zM130.498 28.447h11.46v1.148h-11.46zM127.569 31.657h1.893v1.81h-1.893zM130.498 31.988h9.322v1.148h-9.322zM127.569 35.065h1.893v1.81h-1.893zM130.498 35.396h11.126v1.148h-11.126zM127.616 6.848h11.518v1.148h-11.518zM127.569 21.311h9.344v1.148h-9.344z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.3 KiB |
@@ -0,0 +1,24 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="571.907" height="156.921" viewBox="0 0 151.317 41.519">
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#fff" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M62.735.18h58.532v41.16H62.735zM.18.18h58.532v41.16H.18z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#f9f9f9" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M.18.18h58.532v5.063H.18z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="none" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M.18.18h58.532v41.16H.18z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#666" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M1.357 1.034h3.496V4.39H1.357z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#e6e6e6" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M6.068 1.034h6.102V4.39H6.068z"/>
|
||||
<g fill="#b3b3b3" stroke="#ccc" fill-rule="evenodd" stroke-width="1.465" stroke-linecap="round">
|
||||
<path d="M21.51 21.35l5.056-5.056M20.37 29.835L38.52 11.684M33.337 25.225l3.586-3.586"/>
|
||||
</g>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#f9f9f9" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M62.735.18h58.532v5.063H62.735z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="none" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M62.735.18h58.532v41.16H62.735z"/>
|
||||
<g fill="#b3b3b3" stroke="#ccc" fill-rule="evenodd" stroke-width="1.465" stroke-linecap="round">
|
||||
<path d="M84.066 21.35l5.055-5.056M82.925 29.835l18.152-18.151M95.893 25.225l3.585-3.586"/>
|
||||
</g>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#4d4d4d" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M62.735.18h20.829v41.16h-20.83z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#666" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M63.912 1.034h3.496V4.39h-3.496z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#e6e6e6" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M64.447 8.076h1.893v1.81h-1.893zM67.376 8.407h12.463v1.148H67.376zM64.447 11.617h1.893v1.81h-1.893zM67.376 11.948h10.592v1.148H67.376zM64.447 15.025h1.893v1.81h-1.893zM67.376 15.356h12.997v1.148H67.376zM64.447 18.566h1.893v1.81h-1.893zM67.376 18.897h7.585v1.148h-7.585zM64.447 21.974h1.893v1.81h-1.893zM67.376 22.305h11.46v1.148h-11.46zM64.447 25.515h1.893v1.81h-1.893zM67.376 25.846h9.322v1.148h-9.322zM64.447 28.923h1.893v1.81h-1.893zM67.376 29.254h11.126v1.148H67.376zM64.447 32.464h1.893v1.81h-1.893zM67.376 32.795h12.863v1.148H67.376z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#fff" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M125.857.18h25.28v41.16h-25.28z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#f9f9f9" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M125.857.18h25.257v5.063h-25.257z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="none" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M125.857.18h25.257v41.16h-25.257z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#4d4d4d" stroke="#b3b3b3" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M125.857.18h20.829v41.16h-20.83z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#666" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M127.034 1.034h3.496V4.39h-3.496z"/>
|
||||
<path style="marker:none" color="#000" overflow="visible" fill="#e6e6e6" stroke="#ccc" stroke-width=".359" stroke-linecap="square" paint-order="fill markers stroke" d="M127.569 8.076h1.893v1.81h-1.893zM130.498 8.407h12.463v1.148h-12.463zM127.569 11.617h1.893v1.81h-1.893zM130.498 11.948h10.592v1.148h-10.592zM127.569 15.025h1.893v1.81h-1.893zM130.498 15.356h12.997v1.148h-12.997zM127.569 18.566h1.893v1.81h-1.893zM130.498 18.897h7.585v1.148h-7.585zM127.569 21.974h1.893v1.81h-1.893zM130.498 22.305h11.46v1.148h-11.46zM127.569 25.515h1.893v1.81h-1.893zM130.498 25.846h9.322v1.148h-9.322zM127.569 28.923h1.893v1.81h-1.893zM130.498 29.254h11.126v1.148h-11.126zM127.569 32.464h1.893v1.81h-1.893zM130.498 32.795h12.863v1.148h-12.863z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.7 KiB |
@@ -54,6 +54,7 @@ class JsController extends Controller
|
||||
{
|
||||
$user = OC::$server[IUserSession::class]->getUser();
|
||||
$topMenuApps = (array) json_decode($this->config->getAppValue('side_menu', 'top-menu-apps', '[]'), true);
|
||||
$targetBlankApps = (array) json_decode($this->config->getAppValue('side_menu', 'target-blank-apps', '[]'), true);
|
||||
|
||||
if ($user) {
|
||||
$userTopMenuApps = (array) json_decode($this->config->getUserValue($user->getUid(), 'side_menu', 'top-menu-apps', '[]'), true);
|
||||
@@ -61,8 +62,16 @@ class JsController extends Controller
|
||||
if (!empty($userTopMenuApps)) {
|
||||
$topMenuApps = $userTopMenuApps;
|
||||
}
|
||||
|
||||
$userTargetBlankMode = (int) $this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank-mode', '1');
|
||||
$userTargetBlankApps = (array) json_decode($this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank-apps', '[]'), true);
|
||||
|
||||
if ($userTargetBlankMode === 2) {
|
||||
$targetBlankApps = $userTargetBlankApps;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$parameters = [
|
||||
'opener-position' => $this->config->getAppValue('side_menu', 'opener-position', 'before'),
|
||||
'opener-hover' => (bool) $this->config->getAppValue('side_menu', 'opener-hover', '0'),
|
||||
@@ -73,6 +82,7 @@ class JsController extends Controller
|
||||
'always-displayed' => (bool) $this->config->getAppValue('side_menu', 'always-displayed', '0'),
|
||||
'big-menu' => (bool) $this->config->getAppValue('side_menu', 'big-menu', '0'),
|
||||
'top-menu-apps' => $topMenuApps,
|
||||
'target-blank-apps' => $targetBlankApps,
|
||||
];
|
||||
|
||||
$response = new TemplateResponse('side_menu', 'js/script', $parameters, 'blank');
|
||||
|
||||
@@ -65,6 +65,29 @@ class PersonalSettingController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
if ('target-blank-mode' === $name) {
|
||||
$doSave = true;
|
||||
|
||||
if (!in_array($value, ['1', '2'])) {
|
||||
$value = '1';
|
||||
}
|
||||
}
|
||||
|
||||
if ('target-blank-apps' === $name) {
|
||||
$doSave = true;
|
||||
$data = json_decode($value, true);
|
||||
|
||||
if (!is_array($data)) {
|
||||
$doSave = false;
|
||||
} else {
|
||||
foreach ($data as $v) {
|
||||
if (!is_string($v)) {
|
||||
$doSave = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ('top-menu-apps' === $name) {
|
||||
$doSave = true;
|
||||
$data = json_decode($value, true);
|
||||
|
||||
@@ -83,6 +83,7 @@ class Admin implements ISettings
|
||||
'hide-when-no-apps' => $this->config->getAppValue('side_menu', 'hide-when-no-apps', '0'),
|
||||
'size-icon' => $this->config->getAppValue('side_menu', 'size-icon', 'normal'),
|
||||
'size-text' => $this->config->getAppValue('side_menu', 'size-text', 'normal'),
|
||||
'target-blank-apps' => (array) json_decode($this->config->getAppValue('side_menu', 'target-blank-apps', '[]'), true),
|
||||
'top-menu-apps' => (array) json_decode($this->config->getAppValue('side_menu', 'top-menu-apps', '[]'), true),
|
||||
'apps' => $this->appRepository->getVisibleApps(),
|
||||
];
|
||||
|
||||
@@ -72,6 +72,8 @@ class Personal implements ISettings
|
||||
$parameters = [
|
||||
'enabled' => $this->config->getUserValue($user->getUid(), 'side_menu', 'enabled', '1'),
|
||||
'top-menu-apps' => (array) json_decode($this->config->getUserValue($user->getUid(), 'side_menu', 'top-menu-apps', '[]'), true),
|
||||
'target-blank-mode' => $this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank-mode', '1'),
|
||||
'target-blank-apps' => (array) json_decode($this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank-apps', '[]'), true),
|
||||
'apps' => $this->appRepository->getVisibleApps(),
|
||||
];
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 58 KiB |
@@ -26,7 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
<ul class="side-menu-apps-list">
|
||||
<li v-for="app in apps" v-bind:class="{'side-menu-app': true, 'active': app.active}">
|
||||
<a v-bind:href="app.href" v-bind:title="app.name">
|
||||
<a v-bind:href="app.href" :target="targetBlankApps.indexOf(app.id) !== -1 ? '_blank' : undefined" v-bind:title="app.name">
|
||||
<span class="side-menu-app-icon" v-html="app.icon"></span>
|
||||
<span class="side-menu-app-text" v-html="app.name"></span>
|
||||
</a>
|
||||
@@ -45,6 +45,7 @@ export default {
|
||||
apps: [],
|
||||
logo: null,
|
||||
forceLightIcon: false,
|
||||
targetBlank: false,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -86,6 +87,7 @@ export default {
|
||||
}
|
||||
|
||||
this.apps.push({
|
||||
id: dataId,
|
||||
href: href,
|
||||
name: trim(element.querySelector('span').innerHTML),
|
||||
icon: svg,
|
||||
@@ -119,6 +121,7 @@ export default {
|
||||
this.retrieveApps()
|
||||
this.retrieveLogo()
|
||||
this.forceLightIcon = document.querySelector('#side-menu-container').getAttribute('data-forcelighticon') == 1;
|
||||
this.targetBlankApps = document.querySelector('#side-menu-container').getAttribute('data-targetblankapps').split(',');
|
||||
|
||||
const menu = document.querySelector('#appmenu')
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
<ul class="side-menu-apps-list">
|
||||
<li v-bind:class="{'side-menu-app': true, 'active': activeApp === appId}" v-for="(app, appId) in category.apps">
|
||||
<a v-bind:href="app.href" v-bind:title="app.name">
|
||||
<a v-bind:href="app.href" :target="targetBlankApps.indexOf(appId) !== -1 ? '_blank' : undefined" v-bind:title="app.name">
|
||||
<img class="side-menu-app-icon" v-bind:src="app.icon"></span>
|
||||
<span class="side-menu-app-text" v-html="app.name"></span>
|
||||
</a>
|
||||
@@ -50,6 +50,7 @@ export default {
|
||||
return {
|
||||
items: [],
|
||||
activeApp: null,
|
||||
targetBlank: false,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -79,6 +80,8 @@ export default {
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.targetBlankApps = document.querySelector('#side-menu-container').getAttribute('data-targetblankapps').split(',');
|
||||
|
||||
this.retrieveApps()
|
||||
this.retrieveActiveApp()
|
||||
}
|
||||
|
||||
@@ -35,9 +35,9 @@ const saveSettings = (key) => {
|
||||
let value
|
||||
let name
|
||||
|
||||
if ($(element).is('[data-checkbox]')) {
|
||||
name = $(element).attr('data-name')
|
||||
const inputs = $('input[name="' + name + '[]"]:checked')
|
||||
if (jQuery(element).is('[data-checkbox]')) {
|
||||
name = jQuery(element).attr('data-name')
|
||||
const inputs = jQuery('input[name="' + name + '[]"]:checked')
|
||||
value = []
|
||||
|
||||
inputs.each((i, v) => {
|
||||
@@ -46,8 +46,8 @@ const saveSettings = (key) => {
|
||||
|
||||
value = JSON.stringify(value)
|
||||
} else {
|
||||
name = $(element).attr('name')
|
||||
value = $(element).val()
|
||||
name = jQuery(element).attr('name')
|
||||
value = jQuery(element).val()
|
||||
}
|
||||
|
||||
const size = elements.length
|
||||
@@ -74,20 +74,59 @@ const saveSettings = (key) => {
|
||||
}
|
||||
}
|
||||
|
||||
if ($(element).is('[data-personal]')) {
|
||||
if (jQuery(element).is('[data-personal]')) {
|
||||
userConfig(name, value, callbacks)
|
||||
} else {
|
||||
appConfig(name, value, callbacks)
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(() => {
|
||||
elements = $('.side-menu-setting')
|
||||
const elementToggler = (element) => {
|
||||
jQuery(element).toggle()
|
||||
}
|
||||
|
||||
$('#side-menu-save').on('click', (event) => {
|
||||
jQuery(document).ready(() => {
|
||||
elements = jQuery('.side-menu-setting')
|
||||
|
||||
jQuery('#side-menu-save').on('click', (event) => {
|
||||
event.preventDefault()
|
||||
OC.msg.startSaving(selector)
|
||||
|
||||
saveSettings(0)
|
||||
});
|
||||
|
||||
jQuery('.side-menu-display').on('click', (event) => {
|
||||
var target = jQuery(event.target)
|
||||
|
||||
jQuery('.side-menu-display').removeClass('is-active')
|
||||
target.addClass('is-active')
|
||||
|
||||
jQuery('#side-menu-always-displayed').val(target.attr('data-alwaysdiplayed'))
|
||||
jQuery('#side-menu-big-menu').val(target.attr('data-bigmenu'))
|
||||
})
|
||||
|
||||
jQuery('.side-menu-setting-live').on('change', (event) => {
|
||||
var target = jQuery(event.target)
|
||||
var name = target.attr('name')
|
||||
var value = target.val()
|
||||
|
||||
if (name === 'opener') {
|
||||
var url = OC.generateUrl(`/apps/side_menu/img/${value}.svg`).replace('/index.php', '')
|
||||
|
||||
value = `url(${url})`;
|
||||
}
|
||||
|
||||
if (name === 'icon-invert-filter' || name === 'icon-opacity') {
|
||||
value/=100;
|
||||
}
|
||||
|
||||
document.documentElement.style.setProperty('--side-menu-' + name, value)
|
||||
})
|
||||
|
||||
jQuery('.side-menu-toggler').on('click', (event) => {
|
||||
var target = jQuery(event.target)
|
||||
var element = target.attr('data-target')
|
||||
|
||||
elementToggler(element)
|
||||
})
|
||||
});
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
"Side menu": "Seitenmenü"
|
||||
"Enable the side menu": "Aktivieren Sie das Seitenmenü"
|
||||
"Enable the side menu": "Aktiviere das Seitenmenü"
|
||||
"No": "Nein"
|
||||
"Yes": "Ja"
|
||||
"Menu": "Speisekarte"
|
||||
'Use the shortcut <span class="keyboard-key">Ctrl</span>+<span class="keyboard-key">o</span> to open and to hide the side menu. Use <span class="keyboard-key">tab</span> to navigate.': 'Verwenden Sie die Tastenkombination <span class="keyboard-key">Strg</span>+<span class="keyboard-key">o</span>, um das Seitenmenü zu öffnen und auszublenden. Verwenden Sie zum Navigieren die Registerkarte <span class="keyboard-key">tab</span>.'
|
||||
"Menu": "Menü"
|
||||
'Use the shortcut <span class="keyboard-key">Ctrl</span>+<span class="keyboard-key">o</span> to open and to hide the side menu. Use <span class="keyboard-key">tab</span> to navigate.': 'Verwende die Tastenkombination <span class="keyboard-key">Strg</span>+<span class="keyboard-key">o</span>, um das Seitenmenü ein- und auszublenden. Verwende <span class="keyboard-key">tab</span> zum Navigieren.'
|
||||
"Top menu": "Hauptmenü"
|
||||
"Apps that not must be moved in the side menu": "Apps, die nicht im Seitenmenü verschoben werden müssen"
|
||||
"Apps that not must be moved in the side menu": "Apps, die nicht ins Seitenmenü verschoben werden müssen"
|
||||
"If there is no selection then the global configuration is applied.": "Wenn keine Auswahl vorhanden ist, wird die globale Konfiguration angewendet."
|
||||
"Experimental": "Experimental"
|
||||
"Save": "Sparen"
|
||||
"Experimental": "Experimentell"
|
||||
"Save": "Speichern"
|
||||
"You like this app and you want to support me?": "Du magst diese App und möchtest mich unterstützen?"
|
||||
"Buy me a coffe ☕": "Gib mir einen Kaffee ☕"
|
||||
"Buy me a coffee ☕": "Gib mir einen Kaffee ☕"
|
||||
"Hidden": "Versteckt"
|
||||
"Small": "Klein"
|
||||
"Normal": "Normal"
|
||||
@@ -36,13 +36,13 @@
|
||||
"After the logo": "Nach dem Logo"
|
||||
"Position": "Position"
|
||||
"Show only the opener (hidden logo)": "Nur den Öffner anzeigen (verstecktes Logo)"
|
||||
"Do not display the side menu and the opener if there is no application (eg: public pages).": "Zeigen Sie das Seitenmenü und den Öffner nicht an, wenn keine Anwendung vorhanden ist (z. B. öffentliche Seiten)."
|
||||
"Do not display the side menu and the opener if there is no application (eg: public pages).": "Zeige das Seitenmenü und den Öffner nicht an, wenn keine Anwendung vorhanden ist (z.B. bei öffentlichen Seiten)."
|
||||
"Panel": "Panel"
|
||||
"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Öffnen Sie das Menü, wenn Sie die Maus über den Öffner bewegen (auf Touchscreens automatisch deaktiviert)."
|
||||
"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Öffne das Menü, wenn die Maus über den Öffner bewegt wird (auf Touchscreens automatisch deaktiviert)."
|
||||
"Display the big menu": "Großes Menü anzeigen"
|
||||
"The big menu is not compatible with AppOrder.": "Le menu large n'est pas compatible avec l'application AppOrder"
|
||||
"The big menu is not compatible with AppOrder.": "Das große Menü ist nicht mit AppOrder kompatibel."
|
||||
"Display the logo": "Logo anzeigen"
|
||||
"This feature is not compatible with the <code>big menu</code> display.": "Diese Funktion ist nicht mit der großen Menüanzeige kompatibel."
|
||||
"This feature is not compatible with the <code>big menu</code> display.": "Diese Funktion ist nicht mit <code>großes Menü</code> kompatibel."
|
||||
"Icons and texts": "Symbole und Texte"
|
||||
"Loader enabled": "Loader aktiviert"
|
||||
"Tips": "Tipps"
|
||||
@@ -50,3 +50,9 @@
|
||||
"The logo will be hidden when the menu is always displayed.": "Das Logo wird ausgeblendet, wenn das Menü immer angezeigt wird."
|
||||
"This is the automatic behavior when the menu is always displayed.": "Dies ist das automatische Verhalten, wenn das Menü immer angezeigt wird."
|
||||
"Not compatible with touch screens.": "Nicht kompatibel mit Touchscreens."
|
||||
"Big menu": "Großes Menü"
|
||||
"Live preview": "Live Vorschau"
|
||||
"Open apps in new tab": "Öffne Apps in einem neuen Tab"
|
||||
"Use the global setting": "Verwende die globale Einstellung"
|
||||
"Use my selection": "Verwende meine Auswahl"
|
||||
"Show and hide the list of applications": "Ein- und Ausblenden der Anwendungsliste"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
"Experimental": "Expérimental"
|
||||
"Save": "Sauvegarder"
|
||||
"You like this app and you want to support me?": "Vous aimer cette application et vous souhaitez m'aider ?"
|
||||
"Buy me a coffe ☕": "Offrez moi un café ☕"
|
||||
"Buy me a coffee ☕": "Offrez moi un café ☕"
|
||||
"Hidden": "Caché"
|
||||
"Small": "Petit"
|
||||
"Normal": "Normal"
|
||||
@@ -50,3 +50,9 @@
|
||||
"The logo will be hidden when the menu is always displayed.": "Le logo sera masque si le menu est toujours affiché."
|
||||
"This is the automatic behavior when the menu is always displayed.": "C'est le comportement automatique lorsque le menu est toujours affiché."
|
||||
"Not compatible with touch screens.": "Incompatible avec les écrans tactiles."
|
||||
"Big menu": "Menu large"
|
||||
"Live preview": "Aperçu en direct"
|
||||
"Open apps in new tab": "Ouvrir les applications dans un nouvel onglet"
|
||||
"Use the global setting": "Utiliser la configuration globale"
|
||||
"Use my selection": "Utiliser ma sélection"
|
||||
"Show and hide the list of applications": "Afficher et masquer la liste des applications"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
}
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if ($_['display-logo']): ?>
|
||||
<?php if (!$_['display-logo']): ?>
|
||||
.side-menu-logo {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -38,6 +38,10 @@ var updateTopMenu = function() {
|
||||
appShown.push(app)
|
||||
navigationApps.append(app.outerHTML)
|
||||
}
|
||||
|
||||
if (targetBlankApps.indexOf(dataId) !== -1) {
|
||||
jQuery(app).children('a').attr('target', '_blank');
|
||||
}
|
||||
})
|
||||
|
||||
var rightHeaderWidth = jQuery('.header-right').outerWidth()
|
||||
|
||||
@@ -14,6 +14,10 @@
|
||||
sideMenuContainer.attr('data-forcelighticon', '1')
|
||||
<?php endif; ?>
|
||||
|
||||
sideMenuContainer.attr('data-targetblankapps', '<?php p(implode(',', $_['target-blank-apps'])) ?>')
|
||||
|
||||
var targetBlankApps = <?php echo json_encode($_['target-blank-apps']) ?>;
|
||||
|
||||
body.on('side-menu.apps', function(e, apps) {
|
||||
<?php if ($_['hide-when-no-apps']): ?>
|
||||
sideMenu = jQuery('#side-menu')
|
||||
@@ -63,7 +67,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
<?php if ($_['opener-hover']): ?>
|
||||
<?php if ($_['opener-hover'] || ($_['always-displayed'] && !$_['big-menu'])): ?>
|
||||
var sideMenuMouseLeave = function() {
|
||||
sideMenu
|
||||
.removeClass('open')
|
||||
@@ -83,9 +87,14 @@
|
||||
}
|
||||
|
||||
if (!isTouchDevice) {
|
||||
headerMenuOpener.on('mouseenter', sideMenuOpenerMouseEnter)
|
||||
<?php if ($_['opener-hover']): ?>
|
||||
headerMenuOpener.on('mouseenter', sideMenuOpenerMouseEnter)
|
||||
|
||||
sideMenu.addClass('hide-opener')
|
||||
sideMenu.addClass('hide-opener')
|
||||
<?php else: ?>
|
||||
sideMenu.on('mouseleave', sideMenuMouseLeave)
|
||||
sideMenu.on('mouseenter', sideMenuOpenerMouseEnter)
|
||||
<?php endif ?>
|
||||
}
|
||||
<?php endif; ?>
|
||||
|
||||
|
||||
@@ -37,6 +37,8 @@ $choicesSizes = [
|
||||
<div class="section">
|
||||
<h2>
|
||||
<?php p($l->t('Colors')); ?>
|
||||
|
||||
<small><span class="info"><?php p($l->t('Live preview')); ?></span></small>
|
||||
</h2>
|
||||
|
||||
<div>
|
||||
@@ -49,13 +51,13 @@ $choicesSizes = [
|
||||
id="side-menu-background-color"
|
||||
name="background-color"
|
||||
type="color"
|
||||
class="side-menu-setting"
|
||||
class="side-menu-setting side-menu-setting-live"
|
||||
value="<?php print_unescaped($_['background-color']); ?>">
|
||||
<input
|
||||
id="side-menu-background-color-to"
|
||||
name="background-color-to"
|
||||
type="color"
|
||||
class="side-menu-setting"
|
||||
class="side-menu-setting side-menu-setting-live"
|
||||
value="<?php print_unescaped($_['background-color-to']); ?>">
|
||||
</div>
|
||||
|
||||
@@ -69,7 +71,7 @@ $choicesSizes = [
|
||||
id="side-menu-current-app-background-color"
|
||||
name="current-app-background-color"
|
||||
type="color"
|
||||
class="side-menu-setting"
|
||||
class="side-menu-setting side-menu-setting-live"
|
||||
value="<?php print_unescaped($_['current-app-background-color']); ?>">
|
||||
</div>
|
||||
|
||||
@@ -83,7 +85,7 @@ $choicesSizes = [
|
||||
id="side-menu-text-color"
|
||||
name="text-color"
|
||||
type="color"
|
||||
class="side-menu-setting"
|
||||
class="side-menu-setting side-menu-setting-live"
|
||||
value="<?php print_unescaped($_['text-color']); ?>">
|
||||
</div>
|
||||
|
||||
@@ -117,7 +119,7 @@ $choicesSizes = [
|
||||
min="0" max="100"
|
||||
id="side-menu-icon-invert-filter"
|
||||
name="icon-invert-filter"
|
||||
class="side-menu-setting"
|
||||
class="side-menu-setting side-menu-setting-live"
|
||||
value="<?php echo $_['icon-invert-filter'] ?>"
|
||||
>
|
||||
|
||||
@@ -136,7 +138,7 @@ $choicesSizes = [
|
||||
min="0" max="100"
|
||||
id="side-menu-icon-opacity"
|
||||
name="icon-opacity"
|
||||
class="side-menu-setting"
|
||||
class="side-menu-setting side-menu-setting-live"
|
||||
value="<?php echo $_['icon-opacity'] ?>"
|
||||
>
|
||||
|
||||
@@ -165,11 +167,13 @@ $choicesSizes = [
|
||||
<div>
|
||||
<label for="side-menu-opener">
|
||||
<?php p($l->t('Icon')); ?>
|
||||
|
||||
<small><span class="info"><?php p($l->t('Live preview')); ?></span></small>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<select id="side-menu-opener" name="opener" class="side-menu-setting">
|
||||
<select id="side-menu-opener" name="opener" class="side-menu-setting side-menu-setting-live">
|
||||
<?php foreach ($choices as $label => $value): ?>
|
||||
<option value="<?php echo $value ?>" <?php if ($value === $_['opener']): ?>selected<?php endif; ?>>
|
||||
<?php echo $l->t($label); ?>
|
||||
@@ -239,6 +243,68 @@ $choicesSizes = [
|
||||
<?php p($l->t('Panel')); ?>
|
||||
</h2>
|
||||
|
||||
<div>
|
||||
<label>
|
||||
<?php p($l->t('Default')); ?>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
$displays = [
|
||||
'default' => !$_['always-displayed'] && !$_['big-menu'],
|
||||
'always-displayed' => $_['always-displayed'] && !$_['big-menu'],
|
||||
'big-menu' => $_['big-menu'],
|
||||
];
|
||||
?>
|
||||
|
||||
<p>
|
||||
<img
|
||||
class="side-menu-display <?php echo $displays['default'] ? 'is-active' : '' ?>"
|
||||
data-alwaysdiplayed="0"
|
||||
data-bigmenu="0"
|
||||
src="<?php print_unescaped(image_path('side_menu', 'admin/layout-default.svg')); ?>" alt="<?php p($l->t('Default')); ?>">
|
||||
</p>
|
||||
|
||||
<div>
|
||||
<label for="side-menu-opener">
|
||||
<?php p($l->t('Big menu')); ?>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<p><em><?php p($l->t('The big menu is not compatible with AppOrder.')); ?></em></p>
|
||||
|
||||
<p>
|
||||
<img
|
||||
class="side-menu-display <?php echo $displays['big-menu'] ? 'is-active' : '' ?>"
|
||||
data-alwaysdiplayed="0"
|
||||
data-bigmenu="1"
|
||||
src="<?php print_unescaped(image_path('side_menu', 'admin/layout-big-menu.svg')); ?>" alt="<?php p($l->t('Big menu')); ?>">
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<label for="side-menu-opener">
|
||||
<?php p($l->t('Always displayed')); ?>
|
||||
<small><span class="warning"><?php p($l->t('Experimental')); ?></span></small>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<p><em><?php p($l->t('Not compatible with touch screens.')); ?></em></p>
|
||||
|
||||
<p>
|
||||
<img
|
||||
class="side-menu-display <?php echo $displays['always-displayed'] ? 'is-active' : '' ?>"
|
||||
data-alwaysdiplayed="1"
|
||||
data-bigmenu="0"
|
||||
src="<?php print_unescaped(image_path('side_menu', 'admin/layout-always-displayed.svg')); ?>" alt="<?php p($l->t('Always displayed')); ?>">
|
||||
</p>
|
||||
|
||||
<input type="hidden" class="side-menu-setting" name="always-displayed" id="side-menu-always-displayed" value="<?php echo (int) $_['always-displayed'] ?>">
|
||||
<input type="hidden" class="side-menu-setting" name="big-menu" id="side-menu-big-menu" value="<?php echo (int) $_['big-menu'] ?>">
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<label for="side-menu-opener">
|
||||
<?php p($l->t('Open the menu when the mouse is hover the opener (automatically disabled on touch screens)')); ?>
|
||||
@@ -257,52 +323,13 @@ $choicesSizes = [
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="side-menu-big-menu">
|
||||
<?php p($l->t('Always displayed')); ?>
|
||||
|
||||
<small><span class="warning"><?php p($l->t('Experimental')); ?></span></small>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<p><em><?php p($l->t('This feature is not compatible with the <code>big menu</code> display.')); ?></em></p>
|
||||
<p><em><?php p($l->t('Not compatible with touch screens.')); ?></em></p>
|
||||
|
||||
<div>
|
||||
<select id="side-menu-always-displayed" name="always-displayed" class="side-menu-setting">
|
||||
<?php foreach ($choicesYesNo as $label => $value): ?>
|
||||
<option value="<?php echo $value ?>" <?php if ($value === $_['always-displayed']): ?>selected<?php endif; ?>>
|
||||
<?php echo $l->t($label); ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="side-menu-big-menu">
|
||||
<?php p($l->t('Display the big menu')); ?>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<p><em><?php p($l->t('The big menu is not compatible with AppOrder.')); ?></em></p>
|
||||
|
||||
<div>
|
||||
<select id="side-menu-big-menu" name="big-menu" class="side-menu-setting">
|
||||
<?php foreach ($choicesYesNo as $label => $value): ?>
|
||||
<option value="<?php echo $value ?>" <?php if ($value === $_['big-menu']): ?>selected<?php endif; ?>>
|
||||
<?php echo $l->t($label); ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="side-menu-opener">
|
||||
<?php p($l->t('Display the logo')); ?>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<p><em><?php p($l->t('This feature is not compatible with the <code>big menu</code> display.')); ?></em></p>
|
||||
<p><em><?php echo $l->t('This feature is not compatible with the <code>big menu</code> display.'); ?></em></p>
|
||||
<p><em><?php p($l->t('The logo will be hidden when the menu is always displayed.')); ?></em></p>
|
||||
|
||||
<div>
|
||||
@@ -339,6 +366,38 @@ $choicesSizes = [
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="side-menu-target-blank">
|
||||
<?php p($l->t('Open apps in new tab')); ?>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<a class="side-menu-toggler" data-target="#target-blank-apps" href="#_">
|
||||
🖱️ <?php p($l->t('Show and hide the list of applications')); ?>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<div class="side-menu-setting" data-name="target-blank-apps" id="target-blank-apps" data-checkbox style="display: none">
|
||||
<?php foreach ($_['apps'] as $app): ?>
|
||||
<div>
|
||||
<input
|
||||
type="checkbox"
|
||||
name="target-blank-apps[]"
|
||||
value="<?php echo $app['id'] ?>"
|
||||
id="target-blank-app-<?php echo $app['id'] ?>"
|
||||
<?php if (in_array($app['id'], $_['target-blank-apps'])): ?>checked<?php endif; ?>
|
||||
/>
|
||||
|
||||
<label for="target-blank-app-<?php echo $app['id'] ?>">
|
||||
<?php echo p($l->t($app['name'])); ?>
|
||||
</label>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<label for="side-menu-loader-enabled">
|
||||
<?php p($l->t('Loader enabled')); ?>
|
||||
@@ -366,7 +425,13 @@ $choicesSizes = [
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="side-menu-setting" data-name="top-menu-apps" data-checkbox>
|
||||
<p>
|
||||
<a class="side-menu-toggler" data-target="#top-menu-apps" href="#_">
|
||||
🖱️ <?php p($l->t('Show and hide the list of applications')); ?>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<div class="side-menu-setting" data-name="top-menu-apps" id="top-menu-apps" data-checkbox style="display: none">
|
||||
<?php foreach ($_['apps'] as $app): ?>
|
||||
<div>
|
||||
<input
|
||||
@@ -410,7 +475,7 @@ $choicesSizes = [
|
||||
|
||||
<a style="margin-left: 10px" target="_blank" href="https://www.buymeacoffee.com/deblan">
|
||||
<button>
|
||||
<?php p($l->t('Buy me a coffe ☕')); ?>
|
||||
<?php p($l->t('Buy me a coffee ☕')); ?>
|
||||
</button>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
@@ -52,6 +52,51 @@ $choicesYesNo = [
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="side-menu-target-blank">
|
||||
<?php p($l->t('Open apps in new tab')); ?>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<?php $choices = [
|
||||
'Use the global setting' => '1',
|
||||
'Use my selection' => '2',
|
||||
]; ?>
|
||||
|
||||
<select id="side-menu-loader-enabled" name="target-blank-mode" class="side-menu-setting" data-personal>
|
||||
<?php foreach ($choices as $label => $value): ?>
|
||||
<option value="<?php echo $value ?>" <?php if ($value === $_['target-blank-mode']): ?>selected<?php endif; ?>>
|
||||
<?php echo $l->t($label); ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<a class="side-menu-toggler" data-target="#target-blank-apps" href="#_">
|
||||
🖱️ <?php p($l->t('Show and hide the list of applications')); ?>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<div class="side-menu-setting" data-name="target-blank-apps" id="target-blank-apps" data-personal data-checkbox style="display: none">
|
||||
<?php foreach ($_['apps'] as $app): ?>
|
||||
<div>
|
||||
<input
|
||||
type="checkbox"
|
||||
name="target-blank-apps[]"
|
||||
value="<?php echo $app['id'] ?>"
|
||||
id="target-blank-app-<?php echo $app['id'] ?>"
|
||||
<?php if (in_array($app['id'], $_['target-blank-apps'])): ?>checked<?php endif; ?>
|
||||
/>
|
||||
|
||||
<label for="target-blank-app-<?php echo $app['id'] ?>">
|
||||
<?php echo p($l->t($app['name'])); ?>
|
||||
</label>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
@@ -70,7 +115,13 @@ $choicesYesNo = [
|
||||
</em>
|
||||
</p>
|
||||
|
||||
<div class="side-menu-setting" data-name="top-menu-apps" data-checkbox data-personal>
|
||||
<p>
|
||||
<a class="side-menu-toggler" data-target="#top-menu-apps" href="#_">
|
||||
🖱️ <?php p($l->t('Show and hide the list of applications')); ?>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<div class="side-menu-setting" data-name="top-menu-apps" data-checkbox data-personal id="top-menu-apps" style="display: none">
|
||||
<?php foreach ($_['apps'] as $app): ?>
|
||||
<div>
|
||||
<input
|
||||
@@ -102,7 +153,7 @@ $choicesYesNo = [
|
||||
|
||||
<a style="margin-left: 10px" target="_blank" href="https://www.buymeacoffee.com/deblan">
|
||||
<button>
|
||||
<?php p($l->t('Buy me a coffe ☕')); ?>
|
||||
<?php p($l->t('Buy me a coffee ☕')); ?>
|
||||
</button>
|
||||
</a>
|
||||
</span>
|
||||
|
||||