UiFileManager plugin
This commit is contained in:
parent
85790f8866
commit
f0b0f57643
24 changed files with 2541 additions and 0 deletions
79
plugins/UiFileManager/media/js/UiFileManager.coffee
Normal file
79
plugins/UiFileManager/media/js/UiFileManager.coffee
Normal file
|
@ -0,0 +1,79 @@
|
|||
window.h = maquette.h
|
||||
|
||||
class UiFileManager extends ZeroFrame
|
||||
init: ->
|
||||
@url_params = new URLSearchParams(window.location.search)
|
||||
@list_site = @url_params.get("site")
|
||||
@list_address = @url_params.get("address")
|
||||
@list_inner_path = @url_params.get("inner_path")
|
||||
@editor_inner_path = @url_params.get("file")
|
||||
@file_list = new FileList(@list_site, @list_inner_path)
|
||||
|
||||
@site_info = null
|
||||
@server_info = null
|
||||
|
||||
@is_sidebar_closed = false
|
||||
|
||||
if @editor_inner_path
|
||||
@file_editor = new FileEditor(@editor_inner_path)
|
||||
|
||||
window.onbeforeunload = =>
|
||||
if @file_editor?.isModified()
|
||||
return true
|
||||
else
|
||||
return null
|
||||
|
||||
window.onresize = =>
|
||||
@checkBodyWidth()
|
||||
|
||||
@checkBodyWidth()
|
||||
|
||||
@cmd("wrapperSetViewport", "width=device-width, initial-scale=0.8")
|
||||
|
||||
@cmd "serverInfo", {}, (server_info) =>
|
||||
@server_info = server_info
|
||||
@cmd "siteInfo", {}, (site_info) =>
|
||||
@cmd("wrapperSetTitle", "List: /#{@list_inner_path} - #{site_info.content.title} - ZeroNet")
|
||||
@site_info = site_info
|
||||
if @file_editor then @file_editor.on_loaded.then =>
|
||||
@file_editor.cm.setOption("readOnly", not site_info.settings.own)
|
||||
@file_editor.mode = if site_info.settings.own then "Edit" else "View"
|
||||
@projector.scheduleRender()
|
||||
|
||||
checkBodyWidth: =>
|
||||
if not @file_editor
|
||||
return false
|
||||
|
||||
if document.body.offsetWidth < 960 and not @is_sidebar_closed
|
||||
@is_sidebar_closed = true
|
||||
@projector?.scheduleRender()
|
||||
else if document.body.offsetWidth > 960 and @is_sidebar_closed
|
||||
@is_sidebar_closed = false
|
||||
@projector?.scheduleRender()
|
||||
|
||||
onRequest: (cmd, message) =>
|
||||
if cmd == "setSiteInfo"
|
||||
@site_info = message
|
||||
RateLimitCb 1000, (cb_done) =>
|
||||
@file_list.update(cb_done)
|
||||
@projector.scheduleRender()
|
||||
else if cmd == "setServerInfo"
|
||||
@server_info = message
|
||||
@projector.scheduleRender()
|
||||
else
|
||||
@log "Unknown incoming message:", cmd
|
||||
|
||||
createProjector: =>
|
||||
@projector = maquette.createProjector()
|
||||
@projector.replace($("#content"), @render)
|
||||
|
||||
render: =>
|
||||
return h("div.content#content", [
|
||||
h("div.manager", {classes: {editing: @file_editor, sidebar_closed: @is_sidebar_closed}}, [
|
||||
@file_list.render(),
|
||||
if @file_editor then @file_editor.render()
|
||||
])
|
||||
])
|
||||
|
||||
window.Page = new UiFileManager()
|
||||
window.Page.createProjector()
|
Loading…
Add table
Add a link
Reference in a new issue