From ae3645bb4a44b69f04a6e38928085462ac7a42c9 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Thu, 22 Feb 2024 15:39:22 +0700 Subject: [PATCH 01/14] Add icon for iStore --- luasrc/gaya/icon/sidebar-icon/istore.svg | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 luasrc/gaya/icon/sidebar-icon/istore.svg diff --git a/luasrc/gaya/icon/sidebar-icon/istore.svg b/luasrc/gaya/icon/sidebar-icon/istore.svg new file mode 100644 index 0000000..289c420 --- /dev/null +++ b/luasrc/gaya/icon/sidebar-icon/istore.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file From a3a8ed6b93c0d0a11a8f2cb97a9c0dc61ac16702 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Thu, 22 Feb 2024 15:50:09 +0700 Subject: [PATCH 02/14] Add iStore and Fix Logout --- luasrc/gaya/gaya.css | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/luasrc/gaya/gaya.css b/luasrc/gaya/gaya.css index 35aa735..848cc35 100755 --- a/luasrc/gaya/gaya.css +++ b/luasrc/gaya/gaya.css @@ -827,7 +827,7 @@ user-select: none; } - .main>.main-left>.nav>li:last-child { + .main>.main-left>.nav>li>[data-title="Logout"] { display: flex; padding: 0.5rem 1rem; } @@ -837,7 +837,8 @@ color: #cbcbcb; } - .main>.main-left>.nav>li>[data-title="Logout"] { + .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"] { font-size: 1rem; color: #fff; } @@ -852,6 +853,7 @@ .main>.main-left>.nav>.slide>.menu, .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"], .main>.main-left>.nav>li>[data-title="Dashboard"] { font-size: 1rem; font-weight: 500; @@ -957,6 +959,16 @@ background-size: 25px; } + .main>.main-left>.nav>.slide>[data-title="iStore"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/istore.svg) no-repeat; + background-size: 25px; + } + /* End Sidebar */ .modemenu-buttons { @@ -1032,7 +1044,7 @@ transition: transform 0.2s ease-in-out; } - .main>.main-left>.nav>li:last-child::before { + .main>.main-left>.nav>li>[data-title="Logout"]::before { position: absolute; right: 14px; width: 25px; @@ -1062,7 +1074,8 @@ .main>.main-left>.nav>.slide>.menu, .main>.main-left>.nav>.slide>.slide-menu>li, - .main>.main-left>.nav>li:last-child { + .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"] { position: relative; overflow: hidden; transform: translate3d(0, 0, 0); @@ -1070,7 +1083,8 @@ .main>.main-left>.nav>.slide>.menu::after, .main>.main-left>.nav>.slide>.slide-menu>li::after, - .main>.main-left>.nav>li:last-child::after { + .main>.main-left>.nav>li>[data-title="Logout"]::after, + .main>.main-left>.nav>li>[data-title="iStore"]::after { position: absolute; top: 0; left: 0; @@ -1089,7 +1103,8 @@ .main>.main-left>.nav>.slide>.menu:active::after, .main>.main-left>.nav>.slide>.slide-menu>li:active::after, - .main>.main-left>.nav>li:last-child:active::after { + .main>.main-left>.nav>li>[data-title="Logout"]:active::after, + .main>.main-left>.nav>li>[data-title="iStore"]:active::after { transition: 0s; transform: scale(0, 0); opacity: 0.2; @@ -3117,7 +3132,8 @@ .main>.main-left>.nav>li, .main>.main-left>.nav>li a, .main>.main-left>.nav>.slide>.menu, - .main>.main-left>.nav>li>[data-title="Logout"] { + .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"] { font-size: 1rem; color: #fff; } @@ -3389,7 +3405,8 @@ } .main>.main-left>.nav>.slide>.menu, - .main>.main-left>.nav>li>[data-title="Logout"] { + .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"] { font-size: 1.1rem; } @@ -3590,4 +3607,4 @@ ::-webkit-scrollbar-thumb:active { background: #424242; } - } \ No newline at end of file + } From c5b13b0665a89cf4237b4c62dd8538fae3ac14e6 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Thu, 22 Feb 2024 15:57:46 +0700 Subject: [PATCH 03/14] Update iStore --- luasrc/gaya/gaya.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/luasrc/gaya/gaya.css b/luasrc/gaya/gaya.css index 848cc35..b7ba4fe 100755 --- a/luasrc/gaya/gaya.css +++ b/luasrc/gaya/gaya.css @@ -959,7 +959,7 @@ background-size: 25px; } - .main>.main-left>.nav>.slide>[data-title="iStore"]:before { + .main>.main-left>.nav>li>[data-title="iStore"]:before { position: absolute; right: 14px; width: 25px; From 9d9d94e6fccd4672ad0411eeaa61c017c25e1b22 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Thu, 22 Feb 2024 16:22:39 +0700 Subject: [PATCH 04/14] Update Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 921e68a..bde6f9f 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ THEME_NAME:=alpha THEME_TITLE:=Alpha PKG_NAME:=luci-theme-$(THEME_NAME) -PKG_VERSION:=3.9.2-beta +PKG_VERSION:=3.9.3-beta PKG_RELEASE:=9 include $(INCLUDE_DIR)/package.mk From 40350a9c9125908408f1395df1db3a0e49ce778e Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Thu, 22 Feb 2024 22:47:02 +0700 Subject: [PATCH 05/14] luci-app-alpha-config: Migration for navbar --- template/footer.htm | 77 ++++++++++++++++++++++++++------------------- 1 file changed, 45 insertions(+), 32 deletions(-) diff --git a/template/footer.htm b/template/footer.htm index 55e3ec2..635f9d4 100644 --- a/template/footer.htm +++ b/template/footer.htm @@ -17,49 +17,62 @@ Licensed to the public under the Apache License 2.0 -%> +<% +local ver = require "luci.version" +local uci = require "luci.model.uci".cursor() +local config = uci:get_all("alpha", "config") +local icon = { + ['/cgi-bin/luci/admin/status/overview'] = '/gaya/icon/navbar/status.png', + ['/cgi-bin/luci/admin/services/ttyd'] = '/gaya/icon/navbar/terminal.png', + ['/cgi-bin/luci/admin/services/openclash'] = '/gaya/icon/navbar/oc.png', + ['/cgi-bin/luci/admin/nas/tinyfm'] = '/gaya/icon/navbar/nas.png', + ['/cgi-bin/luci/admin/modem/main'] = '/gaya/icon/navbar/modem.png', + ['/cgi-bin/luci/admin/network/network'] = '/gaya/icon/navbar/interface.png' +} -<% local ver = require "luci.version" %> - - +local function getLink(nav) + local link = config[nav] + return (link ~= "none") and link or nil +end +%> + + - - - - From 01e7171238007a2601fe4e67eb3acf0748cbd5e6 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Thu, 22 Feb 2024 22:51:38 +0700 Subject: [PATCH 06/14] luci-app-alpha-config: Add uci config --- root/etc/config/alpha | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 root/etc/config/alpha diff --git a/root/etc/config/alpha b/root/etc/config/alpha new file mode 100644 index 0000000..f8c350c --- /dev/null +++ b/root/etc/config/alpha @@ -0,0 +1,8 @@ + +config alpha 'config' + option nav_01 '/cgi-bin/luci/admin/status/overview' + option nav_02 '/cgi-bin/luci/admin/services/ttyd' + option nav_03 '/cgi-bin/luci/admin/services/openclash' + option nav_04 '/cgi-bin/luci/admin/nas/tinyfm' + option nav_05 '/cgi-bin/luci/admin/modem/main' + option nav_06 '/cgi-bin/luci/admin/network/network' From aabed8229a7a34bf9f7f38bf2ae89e84af2a9c3c Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Thu, 22 Feb 2024 23:12:26 +0700 Subject: [PATCH 07/14] luci-app-alpha-config: Add uci alpha --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index bde6f9f..f00ad23 100644 --- a/Makefile +++ b/Makefile @@ -40,6 +40,8 @@ define Package/luci-theme-$(THEME_NAME)/install $(CP) -a ./template/* $(1)/usr/lib/lua/luci/view/themes/$(THEME_NAME)/ 2>/dev/null || true $(INSTALL_DIR) $(1)/www/luci-static/resources $(CP) -a ./js/* $(1)/www/luci-static/resources/ 2>/dev/null || true + $(INSTALL_DIR) $(1)/etc/config + $(CP) -a ./root/etc/config/* $(1)/etc/config/ 2>/dev/null || true endef define Package/luci-theme-$(THEME_NAME)/postinst From 5c69f7deb5aa4f253ce62e2f90b175d8dc26e618 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Fri, 23 Feb 2024 19:10:04 +0700 Subject: [PATCH 08/14] luci-app-alpha-config: Replace css Move CSS navbar a to footer.htm --- luasrc/gaya/gaya.css | 2 -- 1 file changed, 2 deletions(-) diff --git a/luasrc/gaya/gaya.css b/luasrc/gaya/gaya.css index b7ba4fe..ab19254 100755 --- a/luasrc/gaya/gaya.css +++ b/luasrc/gaya/gaya.css @@ -688,9 +688,7 @@ float: left; text-align: center; padding: 8px 0; - width: calc(100% / 6); text-decoration: none; - max-width: 100px; } .navbar a img { From a196aa4e25b666746715ae5e6c53480a53838a5e Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Fri, 23 Feb 2024 19:11:54 +0700 Subject: [PATCH 09/14] luci-app-alpha-config: Add CSS --- template/footer.htm | 90 +++++++++++++++++++++++++++------------------ 1 file changed, 55 insertions(+), 35 deletions(-) diff --git a/template/footer.htm b/template/footer.htm index 635f9d4..3ba0cf7 100644 --- a/template/footer.htm +++ b/template/footer.htm @@ -34,43 +34,63 @@ local function getLink(nav) local link = config[nav] return (link ~= "none") and link or nil end + +local num_links = 0 +for i = 1, 6 do + local nav_key = 'nav_0' .. i + local link = getLink(nav_key) + if link then + num_links = num_links + 1 + end +end + +local link_width = string.format("calc(100%% / %d)", num_links) %> - - - - - + + + + + + + From 665b516e76086c28886894d09c320ba70b2c6a86 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Fri, 23 Feb 2024 19:39:42 +0700 Subject: [PATCH 10/14] luci-app-alpha-config: Add neko icon --- luasrc/gaya/icon/navbar/neko.png | Bin 0 -> 29160 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 luasrc/gaya/icon/navbar/neko.png diff --git a/luasrc/gaya/icon/navbar/neko.png b/luasrc/gaya/icon/navbar/neko.png new file mode 100644 index 0000000000000000000000000000000000000000..1fbab6bdd502424194b65910c6cea25c62faf86f GIT binary patch literal 29160 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 DzmdS{ literal 0 HcmV?d00001 From fcd3e54b60f2852ed856681eff03864b765c1d0a Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Fri, 23 Feb 2024 19:49:35 +0700 Subject: [PATCH 11/14] luci-app-alpha-config: Add neko --- template/footer.htm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/template/footer.htm b/template/footer.htm index 3ba0cf7..c89ac89 100644 --- a/template/footer.htm +++ b/template/footer.htm @@ -27,7 +27,8 @@ local icon = { ['/cgi-bin/luci/admin/services/openclash'] = '/gaya/icon/navbar/oc.png', ['/cgi-bin/luci/admin/nas/tinyfm'] = '/gaya/icon/navbar/nas.png', ['/cgi-bin/luci/admin/modem/main'] = '/gaya/icon/navbar/modem.png', - ['/cgi-bin/luci/admin/network/network'] = '/gaya/icon/navbar/interface.png' + ['/cgi-bin/luci/admin/network/network'] = '/gaya/icon/navbar/interface.png', + ['/cgi-bin/luci/admin/services/neko'] = '/gaya/icon/navbar/neko.png' } local function getLink(nav) From bd6a92977b5002beb92c5bf0eeeb14bd893ac115 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Sat, 24 Feb 2024 15:07:29 +0700 Subject: [PATCH 12/14] luci-app-alpha-config: Add themes configure --- root/etc/config/alpha | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/root/etc/config/alpha b/root/etc/config/alpha index f8c350c..8fb5864 100644 --- a/root/etc/config/alpha +++ b/root/etc/config/alpha @@ -1,8 +1,10 @@ config alpha 'config' option nav_01 '/cgi-bin/luci/admin/status/overview' - option nav_02 '/cgi-bin/luci/admin/services/ttyd' - option nav_03 '/cgi-bin/luci/admin/services/openclash' - option nav_04 '/cgi-bin/luci/admin/nas/tinyfm' - option nav_05 '/cgi-bin/luci/admin/modem/main' - option nav_06 '/cgi-bin/luci/admin/network/network' + option nav_02 '/cgi-bin/luci/admin/services/ttyd' + option nav_03 '/cgi-bin/luci/admin/services/openclash' + option nav_04 '/cgi-bin/luci/admin/nas/tinyfm' + option nav_05 '/cgi-bin/luci/admin/modem/main' + option nav_06 '/cgi-bin/luci/admin/network/network' + option blur '20' + option color '#2222359a' From 06ef56c22327df4888197293a2b00abc49ed1d44 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Sat, 24 Feb 2024 15:08:47 +0700 Subject: [PATCH 13/14] luci-app-alpha-config: Add theme configure --- template/footer.htm | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/template/footer.htm b/template/footer.htm index c89ac89..0166861 100644 --- a/template/footer.htm +++ b/template/footer.htm @@ -33,7 +33,7 @@ local icon = { local function getLink(nav) local link = config[nav] - return (link ~= "none") and link or nil + return (link and link ~= "none") and link or nil end local num_links = 0 @@ -46,14 +46,23 @@ for i = 1, 6 do end local link_width = string.format("calc(100%% / %d)", num_links) +local blur_value = tonumber(config.blur) +local link_blur = string.format("blur(%dpx)", blur_value) +local background_color = config.color %> From fe592a9b97a41fc52413a522462bad7f767387f0 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Sat, 24 Feb 2024 15:09:20 +0700 Subject: [PATCH 14/14] luci-app-alpha-config: Add theme configure --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f00ad23..4417497 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ THEME_NAME:=alpha THEME_TITLE:=Alpha PKG_NAME:=luci-theme-$(THEME_NAME) -PKG_VERSION:=3.9.3-beta +PKG_VERSION:=3.9.4-beta PKG_RELEASE:=9 include $(INCLUDE_DIR)/package.mk