summaryrefslogtreecommitdiffstats
path: root/module/web/static
diff options
context:
space:
mode:
Diffstat (limited to 'module/web/static')
-rw-r--r--module/web/static/js/libs/handlebars.l48
-rw-r--r--module/web/static/js/utils/initHB.js4
-rw-r--r--module/web/static/js/views/settingsView.js27
3 files changed, 62 insertions, 17 deletions
diff --git a/module/web/static/js/libs/handlebars.l b/module/web/static/js/libs/handlebars.l
new file mode 100644
index 000000000..f0c04f91e
--- /dev/null
+++ b/module/web/static/js/libs/handlebars.l
@@ -0,0 +1,48 @@
+
+%x mu emu
+
+%%
+
+[^\x00]*?/("<%") {
+ if(yytext.slice(-1) !== "\\") this.begin("mu");
+ if(yytext.slice(-1) === "\\") yytext = yytext.substr(0,yyleng-1), this.begin("emu");
+ if(yytext) return 'CONTENT';
+ }
+
+[^\x00]+ { return 'CONTENT'; }
+
+<emu>[^\x00]{2,}?/("{{"|<<EOF>>) {
+ if(yytext.slice(-1) !== "\\") this.popState();
+ if(yytext.slice(-1) === "\\") yytext = yytext.substr(0,yyleng-1);
+ return 'CONTENT';
+ }
+
+<mu>"{{>" { return 'OPEN_PARTIAL'; }
+<mu>"<%=" { return 'OPEN_BLOCK'; }
+<mu>"<%/" { return 'OPEN_ENDBLOCK'; }
+<mu>"{{^" { return 'OPEN_INVERSE'; }
+<mu>"<%"\s*"else" { return 'OPEN_INVERSE'; }
+<mu>"{<%%" { return 'OPEN_UNESCAPED'; }
+<mu>"{{&" { return 'OPEN_UNESCAPED'; }
+<mu>"<%!"[\s\S]*?"%>" { yytext = yytext.substr(3,yyleng-5); this.popState(); return 'COMMENT'; }
+<mu>"<%" { return 'OPEN'; }
+
+<mu>"=" { return 'EQUALS'; }
+<mu>"."/[%} ] { return 'ID'; }
+<mu>".." { return 'ID'; }
+<mu>[\/.] { return 'SEP'; }
+<mu>\s+ { /*ignore whitespace*/ }
+<mu>"%%>" { this.popState(); return 'CLOSE'; }
+<mu>"%>" { this.popState(); return 'CLOSE'; }
+<mu>'"'("\\"["]|[^"])*'"' { yytext = yytext.substr(1,yyleng-2).replace(/\\"/g,'"'); return 'STRING'; }
+<mu>"'"("\\"[']|[^'])*"'" { yytext = yytext.substr(1,yyleng-2).replace(/\\"/g,'"'); return 'STRING'; }
+<mu>"@"[a-zA-Z]+ { yytext = yytext.substr(1); return 'DATA'; }
+<mu>"true"/[%}\s] { return 'BOOLEAN'; }
+<mu>"false"/[%}\s] { return 'BOOLEAN'; }
+<mu>[0-9]+/[%}\s] { return 'INTEGER'; }
+<mu>[a-zA-Z0-9_$-]+/[=%}\s\/.] { return 'ID'; }
+<mu>'['[^\]]*']' { yytext = yytext.substr(1, yyleng-2); return 'ID'; }
+<mu>. { return 'INVALID'; }
+
+<INITIAL,mu><<EOF>> { return 'EOF'; }
+
diff --git a/module/web/static/js/utils/initHB.js b/module/web/static/js/utils/initHB.js
index 6d9436835..784032ca0 100644
--- a/module/web/static/js/utils/initHB.js
+++ b/module/web/static/js/utils/initHB.js
@@ -1,8 +1,8 @@
// Loads all helper and set own handlebars rules
define(['underscore', 'handlebars', 'helpers/formatSize'],
function(_, Handlebars) {
- // TODO: create better lexer rules, these are just hacked
- Handlebars.Parser.lexer.rules = [/^(?:[^\x00]*?(?=(<%)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(<%|$)))/, /^(?:<%>)/, /^(?:<%#)/, /^(?:<%\/)/, /^(?:<%\^)/, /^(?:<%\s*else\b)/, /^(?:<%=)/, /^(?:<%&)/, /^(?:<%![\s\S]*?\}\})/, /^(?:<%)/, /^(?:=)/, /^(?:\.(?=[%> ]))/, /^(?:\.\.)/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:=%>)/, /^(?:%>)/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@[a-zA-Z]+)/, /^(?:true(?=[%>\s]))/, /^(?:false(?=[%>\s]))/, /^(?:[0-9]+(?=[%>\s]))/, /^(?:[a-zA-Z0-9_$-]+(?=[%>=}\s\/.]))/, /^(?:\[[^\]]*\])/, /^(?:.)/, /^(?:$)/];
+ // Replace with own lexer rules compiled from handlebars.l
+ Handlebars.Parser.lexer.rules = [/^(?:[^\x00]*?(?=(<%)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|$)))/, /^(?:\{\{>)/, /^(?:<%=)/, /^(?:<%\/)/, /^(?:\{\{\^)/, /^(?:<%\s*else\b)/, /^(?:\{<%%)/, /^(?:\{\{&)/, /^(?:<%![\s\S]*?%>)/, /^(?:<%)/, /^(?:=)/, /^(?:\.(?=[%} ]))/, /^(?:\.\.)/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:%%>)/, /^(?:%>)/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@[a-zA-Z]+)/, /^(?:true(?=[%}\s]))/, /^(?:false(?=[%}\s]))/, /^(?:[0-9]+(?=[%}\s]))/, /^(?:[a-zA-Z0-9_$-]+(?=[=%}\s\/.]))/, /^(?:\[[^\]]*\])/, /^(?:.)/, /^(?:$)/];
_.compile = Handlebars.compile;
return Handlebars
diff --git a/module/web/static/js/views/settingsView.js b/module/web/static/js/views/settingsView.js
index c6fe535b9..1b7f5e356 100644
--- a/module/web/static/js/views/settingsView.js
+++ b/module/web/static/js/views/settingsView.js
@@ -5,10 +5,10 @@ define(['jquery', 'underscore', 'backbone'],
return Backbone.View.extend({
el: "#content",
-// template: _.compile($("#template-package").html()),
+ template_menu: _.compile($("#template-menu").html()),
events: {
-
+ 'click .settings-menu li > a': 'change_section'
},
menu: null,
@@ -18,24 +18,21 @@ define(['jquery', 'underscore', 'backbone'],
this.menu = $('.settings-menu');
var self = this;
- $.ajax("/api/getCoreConfig", {success: function(data) {
- self.data = data;
- self.render()
- }});
+// $.ajax("/api/getCoreConfig", {success: function(data) {
+// self.data = data;
+// self.render()
+// }});
// $.ajax("/api/getPluginConfig");
console.log("Settings initialized");
},
+ // TODO: this is only a showcase
render: function() {
- if (this.data != null) {
- var self = this;
- this.menu.empty();
- this.menu.append($('<li class="nav-header"><i class="icon-globe icon-white"></i>General</li>'));
-
- _.each(this.data, function(section) {
- self.menu.append($('<li><a href="#">' + section.label + '</a></li>'));
- })
- }
+ this.menu.html(this.template_menu({core:false}));
+ },
+
+ change_section: function(el) {
+ console.log("Section changed");
}
});