2021-09-05 16:50:22 +08:00
local nxfs = require ' nixio.fs '
local wa = require ' luci.tools.webadmin '
local opkg = require ' luci.model.ipkg '
local sys = require ' luci.sys '
local http = require ' luci.http '
local nutil = require ' nixio.util '
local name = ' argon '
local uci = require ' luci.model.uci ' . cursor ( )
local fstat = nxfs.statvfs ( opkg.overlay_root ( ) )
local space_total = fstat and fstat.blocks or 0
local space_free = fstat and fstat.bfree or 0
local space_used = space_total - space_free
local free_byte = space_free * fstat.frsize
local primary , dark_primary , blur_radius , blur_radius_dark , blur_opacity , mode
2021-12-21 09:08:01 +08:00
if nxfs.access ( ' /etc/config/argon ' ) then
primary = uci : get_first ( ' argon ' , ' global ' , ' primary ' )
dark_primary = uci : get_first ( ' argon ' , ' global ' , ' dark_primary ' )
blur_radius = uci : get_first ( ' argon ' , ' global ' , ' blur ' )
blur_radius_dark = uci : get_first ( ' argon ' , ' global ' , ' blur_dark ' )
blur_opacity = uci : get_first ( ' argon ' , ' global ' , ' transparency ' )
blur_opacity_dark = uci : get_first ( ' argon ' , ' global ' , ' transparency_dark ' )
mode = uci : get_first ( ' argon ' , ' global ' , ' mode ' )
bing_background = uci : get_first ( ' argon ' , ' global ' , ' bing_background ' )
2021-09-05 16:50:22 +08:00
end
function glob ( ... )
local iter , code , msg = nxfs.glob ( ... )
if iter then
return nutil.consume ( iter )
else
return nil , code , msg
end
end
local transparency_sets = {
0 ,
0.1 ,
0.2 ,
0.3 ,
0.4 ,
0.5 ,
0.6 ,
0.7 ,
0.8 ,
0.9 ,
1
}
-- [[ 模糊设置 ]]--
2021-12-21 09:08:01 +08:00
br = SimpleForm ( ' config ' , translate ( ' Argon Config ' ) , translate ( ' Here you can set the blur and transparency of the login page of argon theme, and manage the background pictures and videos.[Chrome is recommended] ' ) )
2021-09-05 16:50:22 +08:00
br.reset = false
br.submit = false
s = br : section ( SimpleSection )
2021-12-18 20:30:02 +08:00
o = s : option ( ListValue , ' bing_background ' , translate ( ' Wallpaper Source ' ) )
o : value ( ' 0 ' , translate ( ' Built-in ' ) )
o : value ( ' 1 ' , translate ( ' Bing Wallpapers ' ) )
o.default = bing_background
o.rmempty = false
2021-09-05 16:50:22 +08:00
o = s : option ( ListValue , ' mode ' , translate ( ' Theme mode ' ) )
o : value ( ' normal ' , translate ( ' Follow System ' ) )
o : value ( ' light ' , translate ( ' Force Light ' ) )
o : value ( ' dark ' , translate ( ' Force Dark ' ) )
o.default = mode
o.rmempty = false
2021-12-21 09:08:01 +08:00
o.description = translate ( ' You can choose Theme color mode here ' )
2021-09-05 16:50:22 +08:00
2021-12-21 09:08:01 +08:00
o = s : option ( Value , ' primary ' , translate ( ' [Light mode] Primary Color ' ) , translate ( ' A HEX Color ; ( Default: #5e72e4 ) ' ) )
2021-09-05 16:50:22 +08:00
o.default = primary
o.datatype = ufloat
o.rmempty = false
2021-12-21 09:08:01 +08:00
o = s : option ( ListValue , ' transparency ' , translate ( ' [Light mode] Transparency ' ) , translate ( ' 0 transparent - 1 opaque ; ( Suggest: transparent: 0 or translucent preset: 0.5 ) ' ) )
2021-09-05 16:50:22 +08:00
for _ , v in ipairs ( transparency_sets ) do
o : value ( v )
end
o.default = blur_opacity
o.datatype = ufloat
o.rmempty = false
2021-12-21 09:08:01 +08:00
o = s : option ( Value , ' blur ' , translate ( ' [Light mode] Frosted Glass Radius ' ) , translate ( ' Larger value will more blurred ; ( Suggest: clear: 1 or blur preset: 10 ) ' ) )
2021-09-05 16:50:22 +08:00
o.default = blur_radius
o.datatype = ufloat
o.rmempty = false
2021-12-21 09:08:01 +08:00
o = s : option ( Value , ' dark_primary ' , translate ( ' [Dark mode] Primary Color ' ) , translate ( ' A HEX Color ; ( Default: #483d8b ) ' ) )
2021-09-05 16:50:22 +08:00
o.default = dark_primary
o.datatype = ufloat
o.rmempty = false
2021-12-21 09:08:01 +08:00
o = s : option ( ListValue , ' transparency_dark ' , translate ( ' [Dark mode] Transparency ' ) , translate ( ' 0 transparent - 1 opaque ; ( Suggest: Black translucent preset: 0.5 ) ' ) )
2021-09-05 16:50:22 +08:00
for _ , v in ipairs ( transparency_sets ) do
o : value ( v )
end
o.default = blur_opacity_dark
o.datatype = ufloat
o.rmempty = false
2021-12-21 09:08:01 +08:00
o = s : option ( Value , ' blur_dark ' , translate ( ' [Dark mode] Frosted Glass Radius ' ) , translate ( ' Larger value will more blurred ; ( Suggest: clear: 1 or blur preset: 10 ) ' ) )
2021-09-05 16:50:22 +08:00
o.default = blur_radius_dark
o.datatype = ufloat
o.rmempty = false
o = s : option ( Button , ' save ' , translate ( ' Save Changes ' ) )
o.inputstyle = ' reload '
function br . handle ( self , state , data )
if ( state == FORM_VALID and data.blur ~= nil and data.blur_dark ~= nil and data.transparency ~= nil and data.transparency_dark ~= nil and data.mode ~= nil ) then
nxfs.writefile ( ' /tmp/aaa ' , data )
for key , value in pairs ( data ) do
2021-12-21 09:08:01 +08:00
uci : set ( ' argon ' , ' @global[0] ' , key , value )
2021-09-05 16:50:22 +08:00
end
2021-12-21 09:08:01 +08:00
uci : commit ( ' argon ' )
2021-09-05 16:50:22 +08:00
end
return true
end
2022-05-05 11:24:58 +08:00
ful = SimpleForm ( ' upload ' , translate ( ' Upload (Free: ' ) .. wa.byte_format ( free_byte ) .. ' ) ' , translate ( " You can upload files such as jpg,png,gif,mp4,webm files, To change the login page background. " ) )
2021-09-05 16:50:22 +08:00
ful.reset = false
ful.submit = false
sul = ful : section ( SimpleSection , ' ' , translate ( " Upload file to '/www/luci-static/argon/background/' " ) )
fu = sul : option ( FileUpload , ' ' )
fu.template = ' argon-config/other_upload '
um = sul : option ( DummyValue , ' ' , nil )
um.template = ' argon-config/other_dvalue '
local dir , fd
dir = ' /www/luci-static/argon/background/ '
nxfs.mkdir ( dir )
http.setfilehandler (
function ( meta , chunk , eof )
if not fd then
if not meta then
return
end
if meta and chunk then
fd = nixio.open ( dir .. meta.file , ' w ' )
end
if not fd then
um.value = translate ( ' Create upload file error. ' )
return
end
end
if chunk and fd then
fd : write ( chunk )
end
if eof and fd then
fd : close ( )
fd = nil
um.value = translate ( ' File saved to ' ) .. ' "/www/luci-static/argon/background/ ' .. meta.file .. ' " '
end
end
)
if http.formvalue ( ' upload ' ) then
local f = http.formvalue ( ' ulfile ' )
if # f <= 0 then
um.value = translate ( ' No specify upload file. ' )
end
end
local function getSizeStr ( size )
local i = 0
local byteUnits = { ' kB ' , ' MB ' , ' GB ' , ' TB ' }
repeat
size = size / 1024
i = i + 1
until ( size <= 1024 )
return string.format ( ' %.1f ' , size ) .. byteUnits [ i ]
end
local inits , attr = { }
for i , f in ipairs ( glob ( dir .. ' * ' ) ) do
attr = nxfs.stat ( f )
if attr then
inits [ i ] = { }
inits [ i ] . name = nxfs.basename ( f )
inits [ i ] . mtime = os.date ( ' %Y-%m-%d %H:%M:%S ' , attr.mtime )
inits [ i ] . modestr = attr.modestr
inits [ i ] . size = getSizeStr ( attr.size )
inits [ i ] . remove = 0
inits [ i ] . install = false
end
end
form = SimpleForm ( ' filelist ' , translate ( ' Background file list ' ) , nil )
form.reset = false
form.submit = false
tb = form : section ( Table , inits )
nm = tb : option ( DummyValue , ' name ' , translate ( ' File name ' ) )
mt = tb : option ( DummyValue , ' mtime ' , translate ( ' Modify time ' ) )
sz = tb : option ( DummyValue , ' size ' , translate ( ' Size ' ) )
btnrm = tb : option ( Button , ' remove ' , translate ( ' Remove ' ) )
btnrm.render = function ( self , section , scope )
self.inputstyle = ' remove '
Button.render ( self , section , scope )
end
btnrm.write = function ( self , section )
local v = nxfs.unlink ( dir .. nxfs.basename ( inits [ section ] . name ) )
if v then
table.remove ( inits , section )
end
return v
end
return br , ful , form