<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Filebrowser - LuCI</title> <style type="text/css"> #path, #listing { font-size: 85%; } ul { padding-left: 0; list-style-type: none; } li img { vertical-align: bottom; margin-right: 0.2em; } </style> <script type="text/javascript"> function callback(path) { if( window.opener ) { var input = window.opener.document.getElementById('<%=luci.http.formvalue('field')%>'); if( input ) { input.value = path; window.close(); } } } </script> </head> <body> <% require("nixio.fs") require("nixio.util") require("luci.http") require("luci.dispatcher") local field = luci.http.formvalue('field') local request = luci.dispatcher.context.args local path = { '' } for i = 1, #request do if request[i] ~= '..' and #request[i] > 0 then path[#path+1] = request[i] end end local filepath = table.concat( path, '/' ) local filestat = nixio.fs.stat( filepath ) local baseurl = luci.dispatcher.build_url('admin', 'filebrowser') if filestat and filestat.type == "reg" then table.remove( path, #path ) filepath = table.concat( path, '/' ) .. '/' elseif not ( filestat and filestat.type == "dir" ) then path = { '' } filepath = '/' else filepath = filepath .. '/' end local entries = nixio.util.consume((nixio.fs.dir(filepath))) -%> <div id="path"> Location: <% for i, dir in ipairs(path) do %> <% if i == 1 then %> <a href="<%=baseurl%>?field=<%=field%>">(root)</a> <% elseif next(path, i) then %> <% baseurl = baseurl .. '/' .. dir %> / <a href="<%=baseurl%>?field=<%=field%>"><%=dir%></a> <% else %> <% baseurl = baseurl .. '/' .. dir %> / <%=dir%> <% end %> <% end %> </div> <hr /> <div id="listing"> <ul> <% for _, e in luci.util.vspairs(entries) do local stat = nixio.fs.stat(filepath..e) if stat and stat.type == 'dir' then -%> <li class="dir"> <img src="<%=resource%>/cbi/folder.gif" alt="<%:Directory%>" /> <a href="<%=baseurl%>/<%=e%>?field=<%=field%>"><%=e%>/</a> </li> <% end end -%> <% for _, e in luci.util.vspairs(entries) do local stat = nixio.fs.stat(filepath..e) if stat and stat.type ~= 'dir' then -%> <li class="file"> <img src="<%=resource%>/cbi/file.gif" alt="<%:File%>" /> <a href="#" onclick="callback('<%=filepath..e%>')"><%=e%></a> </li> <% end end -%> </ul> </div> </body> </html>