diff --git a/package/gluon-web-admin/luasrc/lib/gluon/web/controller/admin/upgrade.lua b/package/gluon-web-admin/luasrc/lib/gluon/web/controller/admin/upgrade.lua
index 6d8e1545..7c13377a 100644
--- a/package/gluon-web-admin/luasrc/lib/gluon/web/controller/admin/upgrade.lua
+++ b/package/gluon-web-admin/luasrc/lib/gluon/web/controller/admin/upgrade.lua
@@ -106,36 +106,27 @@ local function action_upgrade(http, renderer)
fs.unlink(tmpfile)
end
- renderer.render("layout", {
- content = "admin/upgrade",
- env = {
- bad_image = has_image and not has_support,
- },
- pkg = 'gluon-web-admin',
- })
+ renderer.render_layout('admin/upgrade', {
+ bad_image = has_image and not has_support,
+ }, 'gluon-web-admin')
-- Step 2: present uploaded file, show checksum, confirmation
elseif step == 2 then
- renderer.render("layout", {
- content = "admin/upgrade_confirm",
- env = {
- checksum = image_checksum(tmpfile),
- filesize = fs.stat(tmpfile).size,
- flashsize = storage_size(),
- keepconfig = (http:formvalue("keepcfg") == "1"),
- },
- pkg = 'gluon-web-admin',
- })
+ renderer.render_layout('admin/upgrade_confirm', {
+ checksum = image_checksum(tmpfile),
+ filesize = fs.stat(tmpfile).size,
+ flashsize = storage_size(),
+ keepconfig = (http:formvalue("keepcfg") == "1"),
+ }, 'gluon-web-admin')
+
elseif step == 3 then
if http:formvalue("keepcfg") == "1" then
fork_exec("/sbin/sysupgrade", tmpfile)
else
fork_exec("/sbin/sysupgrade", "-n", tmpfile)
end
- renderer.render("layout", {
- content = "admin/upgrade_reboot",
+ renderer.render_layout('admin/upgrade_reboot', nil, 'gluon-web-admin', {
hidenav = true,
- pkg = 'gluon-web-admin',
})
end
end
diff --git a/package/gluon-web-model/files/lib/gluon/web/view/model/wrapper.html b/package/gluon-web-model/files/lib/gluon/web/view/model/wrapper.html
index 2d0cfdd5..a49fe938 100644
--- a/package/gluon-web-model/files/lib/gluon/web/view/model/wrapper.html
+++ b/package/gluon-web-model/files/lib/gluon/web/view/model/wrapper.html
@@ -3,4 +3,4 @@
map:render(renderer)
end
%>
-
+
diff --git a/package/gluon-web-model/files/lib/gluon/web/www/static/resources/gluon-web.js b/package/gluon-web-model/files/lib/gluon/web/www/static/gluon-web-model.js
similarity index 100%
rename from package/gluon-web-model/files/lib/gluon/web/www/static/resources/gluon-web.js
rename to package/gluon-web-model/files/lib/gluon/web/www/static/gluon-web-model.js
diff --git a/package/gluon-web-model/javascript/gluon-web.js b/package/gluon-web-model/javascript/gluon-web-model.js
similarity index 98%
rename from package/gluon-web-model/javascript/gluon-web.js
rename to package/gluon-web-model/javascript/gluon-web-model.js
index 57bbf379..c05a171e 100644
--- a/package/gluon-web-model/javascript/gluon-web.js
+++ b/package/gluon-web-model/javascript/gluon-web-model.js
@@ -13,7 +13,7 @@
/*
Build using:
- uglifyjs javascript/gluon-web.js -o files/lib/gluon/web/www/static/resources/gluon-web.js -c -m --support-ie8
+ uglifyjs javascript/gluon-web-model.js -o files/lib/gluon/web/www/static/gluon-web-model.js -c -m --support-ie8
*/
diff --git a/package/gluon-web-model/luasrc/usr/lib/lua/gluon/web/model.lua b/package/gluon-web-model/luasrc/usr/lib/lua/gluon/web/model.lua
index 4914dee6..8c968dfe 100644
--- a/package/gluon-web-model/luasrc/usr/lib/lua/gluon/web/model.lua
+++ b/package/gluon-web-model/luasrc/usr/lib/lua/gluon/web/model.lua
@@ -58,11 +58,9 @@ return function(config, http, renderer, name, pkg)
hidenav = hidenav or map.hidenav
end
- renderer.render('layout', {
- content = 'model/wrapper',
- env = {
- maps = maps,
- },
+ renderer.render_layout('model/wrapper', {
+ maps = maps,
+ }, nil, {
hidenav = hidenav,
})
end
diff --git a/package/gluon-web-theme/Makefile b/package/gluon-web-theme/Makefile
index 87e97bbf..2dd47ab7 100644
--- a/package/gluon-web-theme/Makefile
+++ b/package/gluon-web-theme/Makefile
@@ -11,26 +11,27 @@ PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
include ../gluon.mk
+PKG_CONFIG_DEPENDS += $(GLUON_I18N_CONFIG)
+
define Package/gluon-web-theme
SECTION:=gluon
CATEGORY:=Gluon
TITLE:=gluon-web theme
- DEPENDS:=+gluon-core +gluon-web-model
+ DEPENDS:=+gluon-core +gluon-web
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
endef
-define Build/Configure
-endef
-
define Build/Compile
+ $(call GluonBuildI18N,gluon-web-theme,i18n)
endef
define Package/gluon-web-theme/install
$(CP) ./files/* $(1)/
+ $(call GluonInstallI18N,gluon-web-theme,$(1))
endef
$(eval $(call BuildPackage,gluon-web-theme))
diff --git a/package/gluon-web-theme/files/lib/gluon/web/view/themes/gluon/layout.html b/package/gluon-web-theme/files/lib/gluon/web/view/theme/layout.html
similarity index 95%
rename from package/gluon-web-theme/files/lib/gluon/web/view/themes/gluon/layout.html
rename to package/gluon-web-theme/files/lib/gluon/web/view/theme/layout.html
index fb24b3a3..874419a7 100644
--- a/package/gluon-web-theme/files/lib/gluon/web/view/themes/gluon/layout.html
+++ b/package/gluon-web-theme/files/lib/gluon/web/view/theme/layout.html
@@ -100,7 +100,7 @@ You may obtain a copy of the License at
-
+
<%| hostname .. ((rnode and rnode.title) and ' - ' .. title(rnode) or '') %>
@@ -140,7 +140,7 @@ You may obtain a copy of the License at
<%
- ok, err = pcall(renderer.render, content, env, pkg)
+ ok, err = pcall(renderer.render, content, scope, pkg)
if not ok then
renderer.render('error/500', {message = err}, 'gluon-web')
end
diff --git a/package/gluon-web-theme/files/lib/gluon/web/www/static/gluon/cascade.css b/package/gluon-web-theme/files/lib/gluon/web/www/static/gluon.css
similarity index 100%
rename from package/gluon-web-theme/files/lib/gluon/web/www/static/gluon/cascade.css
rename to package/gluon-web-theme/files/lib/gluon/web/www/static/gluon.css
diff --git a/package/gluon-web-theme/i18n/de.po b/package/gluon-web-theme/i18n/de.po
new file mode 100644
index 00000000..b18a346d
--- /dev/null
+++ b/package/gluon-web-theme/i18n/de.po
@@ -0,0 +1,20 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2013-03-29 12:13+0200\n"
+"Last-Translator: Matthias Schiffer \n"
+"Language-Team: German\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "JavaScript required!"
+msgstr "JavaScript benötigt!"
+
+msgid ""
+"You must enable JavaScript in your browser or the web interface will not "
+"work properly."
+msgstr "Bitte aktiviere JavaScript in deinem Browser, damit das Webinterface "
+"korrekt funktionieren kann."
diff --git a/package/gluon-web-theme/i18n/fr.po b/package/gluon-web-theme/i18n/fr.po
new file mode 100644
index 00000000..95e73b1a
--- /dev/null
+++ b/package/gluon-web-theme/i18n/fr.po
@@ -0,0 +1,19 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2013-12-22 17:11+0200\n"
+"Last-Translator: goofy \n"
+"Language-Team: French\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+msgid "JavaScript required!"
+msgstr ""
+
+msgid ""
+"You must enable JavaScript in your browser or the web interface will not "
+"work properly."
+msgstr ""
diff --git a/package/gluon-web-theme/i18n/gluon-web-theme.pot b/package/gluon-web-theme/i18n/gluon-web-theme.pot
new file mode 100644
index 00000000..1676d857
--- /dev/null
+++ b/package/gluon-web-theme/i18n/gluon-web-theme.pot
@@ -0,0 +1,10 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "JavaScript required!"
+msgstr ""
+
+msgid ""
+"You must enable JavaScript in your browser or the web interface will not "
+"work properly."
+msgstr ""
diff --git a/package/gluon-web-theme/sass/cascade.scss b/package/gluon-web-theme/sass/gluon.scss
similarity index 98%
rename from package/gluon-web-theme/sass/cascade.scss
rename to package/gluon-web-theme/sass/gluon.scss
index 3acd9c83..be29c990 100644
--- a/package/gluon-web-theme/sass/cascade.scss
+++ b/package/gluon-web-theme/sass/gluon.scss
@@ -4,7 +4,7 @@
Use sass like this to update it:
- sass --sourcemap=none -C -t compressed sass/cascade.scss files/lib/gluon/web/www/static/gluon/cascade.css
+ sass --sourcemap=none -C -t compressed sass/gluon.scss files/lib/gluon/web/www/static/gluon.css
When commiting changes to this file make sure to commit the respective
changes to the compilid version within the same commit!
diff --git a/package/gluon-web/files/lib/gluon/web/view/layout.html b/package/gluon-web/files/lib/gluon/web/view/layout.html
deleted file mode 100644
index 34f287c1..00000000
--- a/package/gluon-web/files/lib/gluon/web/view/layout.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<%
- include("themes/" .. theme .. "/layout")
-%>
diff --git a/package/gluon-web/luasrc/lib/gluon/web/www/cgi-bin/gluon b/package/gluon-web/luasrc/lib/gluon/web/www/cgi-bin/gluon
index 9f8c41ab..cceb2a68 100755
--- a/package/gluon-web/luasrc/lib/gluon/web/www/cgi-bin/gluon
+++ b/package/gluon-web/luasrc/lib/gluon/web/www/cgi-bin/gluon
@@ -2,4 +2,7 @@
require 'gluon.web.cgi' {
base_path = '/lib/gluon/web',
+
+ layout_package = 'gluon-web-theme',
+ layout_template = 'theme/layout',
}
diff --git a/package/gluon-web/luasrc/usr/lib/lua/gluon/web/dispatcher.lua b/package/gluon-web/luasrc/usr/lib/lua/gluon/web/dispatcher.lua
index 4acc2c6c..64449cd0 100644
--- a/package/gluon-web/luasrc/usr/lib/lua/gluon/web/dispatcher.lua
+++ b/package/gluon-web/luasrc/usr/lib/lua/gluon/web/dispatcher.lua
@@ -86,9 +86,6 @@ local function dispatch(config, http, request)
write = function(...) return http:write(...) end,
pcdata = util.pcdata,
urlencode = proto.urlencode,
- media = '/static/gluon',
- theme = 'gluon',
- resource = '/static/resources',
attr = attr,
url = function(path) return build_url(http, path) end,
}, { __index = _G }))
@@ -136,10 +133,10 @@ local function dispatch(config, http, request)
end
end,
- template = function(view)
+ template = function(view, scope)
local pkg = _pkg
return function()
- renderer.render("layout", {content = view, pkg = pkg})
+ renderer.render_layout(view, scope, pkg)
end
end,
@@ -178,15 +175,11 @@ local function dispatch(config, http, request)
if not node or not node.target then
http:status(404, "Not Found")
- renderer.render("layout", {
- content = "error/404",
- env = {
- message =
- "No page is registered at '/" .. table.concat(request, "/") .. "'.\n" ..
- "If this URL belongs to an extension, make sure it is properly installed.\n",
- },
- pkg = 'gluon-web',
- })
+ renderer.render_layout("error/404", {
+ message =
+ "No page is registered at '/" .. table.concat(request, "/") .. "'.\n" ..
+ "If this URL belongs to an extension, make sure it is properly installed.\n",
+ }, 'gluon-web')
return
end
@@ -195,15 +188,11 @@ local function dispatch(config, http, request)
local ok, err = pcall(node.target)
if not ok then
http:status(500, "Internal Server Error")
- renderer.render("layout", {
- content = "error/500",
- env = {
- message =
- "Failed to execute dispatcher target for entry '/" .. table.concat(request, "/") .. "'.\n" ..
- "The called action terminated with an exception:\n" .. tostring(err or "(unknown)"),
- },
- pkg = 'gluon-web',
- })
+ renderer.render_layout("error/500", {
+ message =
+ "Failed to execute dispatcher target for entry '/" .. table.concat(request, "/") .. "'.\n" ..
+ "The called action terminated with an exception:\n" .. tostring(err or "(unknown)"),
+ }, 'gluon-web')
end
end
diff --git a/package/gluon-web/luasrc/usr/lib/lua/gluon/web/template.lua b/package/gluon-web/luasrc/usr/lib/lua/gluon/web/template.lua
index 0aea336d..84a9b5c1 100644
--- a/package/gluon-web/luasrc/usr/lib/lua/gluon/web/template.lua
+++ b/package/gluon-web/luasrc/usr/lib/lua/gluon/web/template.lua
@@ -64,6 +64,7 @@ return function(config, env)
--- Render a certain template.
-- @param name Template name
-- @param scope Scope to assign to template (optional)
+ -- @param pkg i18n namespace package (optional)
function ctx.render(name, scope, pkg)
local sourcefile = viewdir .. name .. ".html"
local template, _, err = tparser.parse(sourcefile)
@@ -78,6 +79,7 @@ return function(config, env)
--- Render a template from a string.
-- @param template Template string
-- @param scope Scope to assign to template (optional)
+ -- @param pkg i18n namespace package (optional)
function ctx.render_string(str, scope, pkg)
local template, _, err = tparser.parse_string(str)
@@ -87,5 +89,20 @@ return function(config, env)
render_template('(local)', template, scope, pkg)
end
+ --- Render a template, wrapped in the configured layout.
+ -- @param name Template name
+ -- @param scope Scope to assign to template (optional)
+ -- @param pkg i18n namespace package (optional)
+ -- @param layout_scope Additional variables to pass to the layout template
+ function ctx.render_layout(name, scope, pkg, layout_scope)
+ ctx.render(config.layout_template, setmetatable({
+ content = name,
+ scope = scope,
+ pkg = pkg,
+ }, {
+ __index = layout_scope
+ }), config.layout_package)
+ end
+
return ctx
end