71 lines
2 KiB
CoffeeScript
71 lines
2 KiB
CoffeeScript
window.h = maquette.h
|
|
|
|
class UiPluginManager extends ZeroFrame
|
|
init: ->
|
|
@plugin_list_builtin = new PluginList()
|
|
@plugin_list_custom = new PluginList()
|
|
@plugins_changed = null
|
|
@need_restart = null
|
|
@
|
|
|
|
onOpenWebsocket: =>
|
|
@cmd("wrapperSetTitle", "Plugin manager - ZeroNet")
|
|
@cmd "serverInfo", {}, (server_info) =>
|
|
@server_info = server_info
|
|
@updatePlugins()
|
|
|
|
updatePlugins: (cb) =>
|
|
@cmd "pluginList", [], (res) =>
|
|
@plugins_changed = (item for item in res.plugins when item.enabled != item.loaded or item.updated)
|
|
|
|
plugins_builtin = (item for item in res.plugins when item.source == "builtin")
|
|
@plugin_list_builtin.plugins = plugins_builtin.sort (a, b) ->
|
|
return a.name.localeCompare(b.name)
|
|
|
|
plugins_custom = (item for item in res.plugins when item.source != "builtin")
|
|
@plugin_list_custom.plugins = plugins_custom.sort (a, b) ->
|
|
return a.name.localeCompare(b.name)
|
|
|
|
@projector.scheduleRender()
|
|
cb?()
|
|
|
|
createProjector: =>
|
|
@projector = maquette.createProjector()
|
|
@projector.replace($("#content"), @render)
|
|
@projector.replace($("#bottom-restart"), @renderBottomRestart)
|
|
|
|
render: =>
|
|
if not @plugin_list_builtin.plugins
|
|
return h("div.content")
|
|
|
|
h("div.content", [
|
|
h("div.section", [
|
|
if @plugin_list_custom.plugins?.length
|
|
[
|
|
h("h2", "Installed third-party plugins"),
|
|
@plugin_list_custom.render()
|
|
]
|
|
h("h2", "Built-in plugins")
|
|
@plugin_list_builtin.render()
|
|
])
|
|
])
|
|
|
|
handleRestartClick: =>
|
|
@restart_loading = true
|
|
setTimeout ( =>
|
|
Page.cmd("serverShutdown", {restart: true})
|
|
), 300
|
|
Page.projector.scheduleRender()
|
|
return false
|
|
|
|
renderBottomRestart: =>
|
|
h("div.bottom.bottom-restart", {classes: {visible: @plugins_changed?.length}}, h("div.bottom-content", [
|
|
h("div.title", "Some plugins status has been changed"),
|
|
h("a.button.button-submit.button-restart",
|
|
{href: "#Restart", classes: {loading: @restart_loading}, onclick: @handleRestartClick},
|
|
"Restart ZeroNet client"
|
|
)
|
|
]))
|
|
|
|
window.Page = new UiPluginManager()
|
|
window.Page.createProjector()
|