mirror of
https://github.com/lxsang/antd-web-apps
synced 2024-11-20 10:18:21 +01:00
91 lines
2.4 KiB
Lua
91 lines
2.4 KiB
Lua
|
BaseController:subclass(
|
||
|
"OfficeController",
|
||
|
{
|
||
|
registry = {},
|
||
|
models = {}
|
||
|
}
|
||
|
)
|
||
|
local docType = function(ext)
|
||
|
if ext == "doc" or ext=="docx" or ext =="odt" then
|
||
|
return "word"
|
||
|
elseif ext == "csv" or ext =="ods" or ext== "xls" or ext == "xlsx" then
|
||
|
return "cell"
|
||
|
elseif ext == "odp" or ext == "ppt" or ext == "pptx" then
|
||
|
return "slide"
|
||
|
else
|
||
|
return "none"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function OfficeController:index(sid)
|
||
|
-- doing nothing here
|
||
|
require("sqlite")
|
||
|
local ospath = require("shared").ospath(sid)
|
||
|
local ext = ospath:match("^.+%.(.+)$")
|
||
|
local name = ospath:match("^.+/(.+)$")
|
||
|
if(ulib.exists(ospath)) then
|
||
|
local stat = ulib.file_stat(ospath)
|
||
|
if stat.error == nil then
|
||
|
local key = std.sha1(ospath..":"..stat.mtime)
|
||
|
self.template:set("shareid", sid)
|
||
|
self.template:set("ext", ext )
|
||
|
self.template:set("doctype", docType(ext) )
|
||
|
self.template:set("name", name)
|
||
|
self.template:set("key", key)
|
||
|
end
|
||
|
end
|
||
|
self:switchLayout("office")
|
||
|
return true
|
||
|
end
|
||
|
|
||
|
function OfficeController:shared(id)
|
||
|
require("sqlite")
|
||
|
require(BASE_FRW.."shared").get(id)
|
||
|
return false
|
||
|
end
|
||
|
|
||
|
function OfficeController:save(sid)
|
||
|
require("sqlite")
|
||
|
local ospath = require("shared").ospath(sid)
|
||
|
std.json()
|
||
|
local obj = {
|
||
|
error = false,
|
||
|
result = false
|
||
|
}
|
||
|
|
||
|
if not REQUEST.json then
|
||
|
obj.error = "Invalid request"
|
||
|
echo(JSON.encode(obj))
|
||
|
return false
|
||
|
end
|
||
|
local data = JSON.decodeString(REQUEST.json)
|
||
|
if not data then
|
||
|
obj.error = "Invalid request"
|
||
|
echo(JSON.encode(obj))
|
||
|
return false
|
||
|
end
|
||
|
if data.status == 2 then
|
||
|
local tmpfile = "/tmp/"..std.sha1(ospath)
|
||
|
local cmd = "curl -o "..tmpfile..' "'..data.url..'"'
|
||
|
os.execute(cmd)
|
||
|
-- move file to correct position
|
||
|
if ulib.exists(tmpfile) then
|
||
|
cmd = "mv "..tmpfile.." "..ospath
|
||
|
os.execute(cmd)
|
||
|
print("File "..ospath.." sync with remote")
|
||
|
else
|
||
|
obj.error = "Unable to sync file"
|
||
|
echo(JSON.encode(obj))
|
||
|
return false
|
||
|
end
|
||
|
end
|
||
|
|
||
|
obj.result = "OK"
|
||
|
echo(JSON.encode(obj))
|
||
|
return false
|
||
|
end
|
||
|
|
||
|
function OfficeController:actionnotfound(...)
|
||
|
self.template:setView("index")
|
||
|
return self:index(table.unpack({...}))
|
||
|
end
|