<%# LuCI - Lua Configuration Interface Copyright 2008 Steven Barth <steven@midlink.org> Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 $Id$ -%> <?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.path local path = { '' } for i = 3, #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="/luci-static/resources/cbi/folder.png" 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="/luci-static/resources/cbi/file.png" alt="File" /> <a href="#" onclick="callback('<%=filepath..e%>')"><%=e%></a> </li> <% end end -%> </ul> </div> </body> </html>