mirror of
https://github.com/overleaf/overleaf.git
synced 2024-10-31 21:21:03 -04:00
1cc0cbe8fc
web router has things like sessions etc added onto it. Api router is minimal, doesn't include things like csrf
39 lines
No EOL
1.2 KiB
CoffeeScript
39 lines
No EOL
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() |