123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <?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(decodeURIComponent('<%=luci.http.urlencode(luci.http.formvalue('field'))%>'));
- if( input ) {
- input.value = decodeURIComponent(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 filestat = nixio.fs.stat(table.concat(path, '/'))
- local baseurl = { 'admin', 'filebrowser' }
- if filestat and filestat.type == "reg" then
- path[#path] = ''
- elseif not (filestat and filestat.type == "dir") then
- path = { '', '' }
- else
- path[#path+1] = ''
- end
- filepath = table.concat(path, '/')
- local entries = {}
- local _, e
- for _, e in luci.util.vspairs(nixio.util.consume((nixio.fs.dir(filepath)))) do
- local p = filepath .. e
- local s = nixio.fs.stat(p)
- if s then
- entries[#entries+1] = {
- name = e,
- path = p,
- type = s.type
- }
- end
- end
- -%>
- <div id="path">
- Location:
- <% for i, dir in ipairs(path) do %>
- <% if i == 1 then %>
- <a href="<%=url(unpack(baseurl))%>?field=<%=luci.http.urlencode(field)%>">(root)</a>
- <% elseif next(path, i) then %>
- <% baseurl[#baseurl+1] = luci.http.urlencode(dir) %>
- / <a href="<%=url(unpack(baseurl))%>?field=<%=luci.http.urlencode(field)%>"><%=pcdata(dir)%></a>
- <% else %>
- <% baseurl[#baseurl+1] = luci.http.urlencode(dir) %>
- / <%=pcdata(dir)%>
- <% end %>
- <% end %>
- </div>
- <hr />
- <div id="listing">
- <ul>
- <% for _, e in ipairs(entries) do if e.type == 'dir' then -%>
- <li class="dir">
- <img src="<%=resource%>/cbi/folder.gif" alt="<%:Directory%>" />
- <a href="<%=url(unpack(baseurl))%>/<%=luci.http.urlencode(e.name)%>?field=<%=luci.http.urlencode(field)%>"><%=pcdata(e.name)%>/</a>
- </li>
- <% end end -%>
- <% for _, e in ipairs(entries) do if e.type ~= 'dir' then -%>
- <li class="file">
- <img src="<%=resource%>/cbi/file.gif" alt="<%:File%>" />
- <a href="#" onclick="callback('<%=luci.http.urlencode(e.path)%>')"><%=pcdata(e.name)%></a>
- </li>
- <% end end -%>
- </ul>
- </div>
- </body>
- </html>
|