mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-06-10 22:50:46 +02:00
1cc0cbe8fc
web router has things like sessions etc added onto it. Api router is minimal, doesn't include things like csrf
39 lines
1.2 KiB
CoffeeScript
39 lines
1.2 KiB
CoffeeScript
fs = require "fs"
|
|
Path = require "path"
|
|
jade = require "jade"
|
|
|
|
MODULE_BASE_PATH = Path.resolve(__dirname + "/../../../modules")
|
|
|
|
module.exports = Modules =
|
|
modules: []
|
|
loadModules: () ->
|
|
for moduleName in fs.readdirSync(MODULE_BASE_PATH)
|
|
if fs.existsSync(Path.join(MODULE_BASE_PATH, moduleName, "index.js"))
|
|
loadedModule = require(Path.join(MODULE_BASE_PATH, moduleName, "index"))
|
|
loadedModule.name = moduleName
|
|
@modules.push loadedModule
|
|
|
|
applyRouter: (webRouter, apiRouter) ->
|
|
for module in @modules
|
|
module.router?.apply(webRouter, apiRouter)
|
|
|
|
viewIncludes: {}
|
|
loadViewIncludes: (app) ->
|
|
@viewIncludes = {}
|
|
for module in @modules
|
|
for view, partial of module.viewIncludes or {}
|
|
@viewIncludes[view] ||= []
|
|
@viewIncludes[view].push fs.readFileSync(Path.join(MODULE_BASE_PATH, module.name, "app/views", partial + ".jade"))
|
|
|
|
moduleIncludes: (view, locals) ->
|
|
partials = Modules.viewIncludes[view] or []
|
|
html = ""
|
|
for partial in partials
|
|
compiler = jade.compile(partial, doctype: "html")
|
|
html += compiler(locals)
|
|
return html
|
|
|
|
moduleIncludesAvailable: (view) ->
|
|
return (Modules.viewIncludes[view] or []).length > 0
|
|
|
|
Modules.loadModules() |