L.ui.view.extend({
- execute: function() {
- var m = new L.cbi.Map('system', {
- caption: L.tr('System'),
- description: L.tr('Here you can configure the basic aspects of your device like its hostname or the timezone.'),
- collabsible: true
- });
-
- var s = m.section(L.cbi.TypedSection, 'system', {
- caption: L.tr('System Properties'),
- teasers: [ 'hostname', 'zonename', 'languages', 'themes' ],
- readonly: !this.options.acls.system
- });
-
- s.tab({
- id: 'general',
- caption: L.tr('General Settings')
- });
-
- var t = s.taboption('general', L.cbi.DummyValue, '__time', {
- caption: L.tr('Local Time')
- });
-
- t.load = function(sid)
- {
- var id = this.id(sid);
-
- return L.system.getInfo(function(info) {
- var date = new Date();
- var time = info.localtime;
-
- window.setInterval(function() {
- date.setTime(++time * 1000);
-
- $('#' + id).text('%04d/%02d/%02d %02d:%02d:%02d'.format(
- date.getUTCFullYear(),
- date.getUTCMonth() + 1,
- date.getUTCDate(),
- date.getUTCHours(),
- date.getUTCMinutes(),
- date.getUTCSeconds()
- ));
- }, 1000);
- });
- };
-
-
- s.taboption('general', L.cbi.InputValue, 'hostname', {
- caption: L.tr('Hostname'),
- datatype: 'hostname'
- });
-
-
- var z = s.taboption('general', L.cbi.ListValue, 'zonename', {
- caption: L.tr('Timezone')
- });
-
- z.load = function(sid) {
- return L.system.getZoneInfo(function(zones) {
- var znames = [ ];
-
- for (var i = 0; i < zones.length; i++)
- for (var j = 5; j < zones[i].length; j++)
- znames.push(zones[i][j]);
-
- znames.sort();
-
- for (var i = 0; i < znames.length; i++)
- z.value(znames[i]);
-
- z.zones = zones;
- });
- };
-
- z.save = function(sid)
- {
- var uci = this.ucipath(sid);
- var val = this.formvalue(sid);
-
- if (!this.callSuper('save', sid))
- return false;
-
- for (var i = 0; i < z.zones.length; i++)
- for (var j = 5; j < z.zones[i].length; j++)
- if (z.zones[i][j] == val)
- {
- m.set(uci.config, uci.section, 'timezone', z.zones[i][0]);
- return true;
- }
-
- m.set(uci.config, uci.section, 'timezone', 'GMT0');
- return true;
- };
-
-
- s.tab({
- id: 'logging',
- caption: L.tr('Logging')
- });
-
- s.taboption('logging', L.cbi.InputValue, 'log_size', {
- caption: L.tr('System log buffer size'),
- description: L.tr('kiB'),
- placeholder: 16,
- optional: true,
- datatype: 'range(0, 32)'
- });
-
- s.taboption('logging', L.cbi.InputValue, 'log_ip', {
- caption: L.tr('External system log server'),
- placeholder: '0.0.0.0',
- optional: true,
- datatype: 'ip4addr'
- });
-
- s.taboption('logging', L.cbi.InputValue, 'log_port', {
- caption: L.tr('External system log server port'),
- placeholder: 514,
- optional: true,
- datatype: 'port'
- });
-
- s.taboption('logging', L.cbi.ListValue, 'conloglevel', {
- caption: L.tr('Log output level')
- }).value(8, L.tr('Debug'))
- .value(7, L.tr('Info'))
- .value(6, L.tr('Notice'))
- .value(5, L.tr('Warning'))
- .value(4, L.tr('Error'))
- .value(3, L.tr('Critical'))
- .value(2, L.tr('Alert'))
- .value(1, L.tr('Emergency'));
-
- s.taboption('logging', L.cbi.ListValue, 'cronloglevel', {
- caption: L.tr('Cron Log level')
- }).value(5, L.tr('Debug'))
- .value(8, L.tr('Normal'))
- .value(9, L.tr('Warning'));
-
- s.tab({
- id: 'language',
- caption: L.tr('Language and Style')
- });
-
-
- var l = s.taboption('language', L.cbi.ListValue, 'languages', {
- caption: L.tr('Language'),
- uci_package: 'luci',
- uci_section: 'main',
- uci_option: 'lang'
- }).value('auto', L.tr('Automatic'));
-
- l.load = function(sid)
- {
- var langs = m.get('luci', 'languages');
- for (var key in langs)
- if (key.charAt(0) != '.')
- l.value(key, langs[key]);
- };
-
-
- var t = s.taboption('language', L.cbi.ListValue, 'themes', {
- caption: L.tr('Design'),
- uci_package: 'luci',
- uci_section: 'main',
- uci_option: 'mediaurlbase'
- });
-
- t.load = function(sid)
- {
- var themes = m.get('luci', 'themes');
- for (var key in themes)
- if (key.charAt(0) != '.')
- t.value(themes[key], key);
- };
-
-
- var s2 = m.section(L.cbi.NamedSection, 'ntp', {
- caption: L.tr('Time Synchronization'),
- readonly: !this.options.acls.system
- });
-
- var e = s2.option(L.cbi.CheckboxValue, '.enable', {
- caption: L.tr('Enable NTP client'),
- optional: true
- });
-
- e.load = function(sid) {
- return L.system.initEnabled('sysntpd', function(enabled) {
- e.options.initial = enabled;
- });
- };
-
- e.save = function(sid) {
- if (this.formvalue(sid))
- return L.system.initEnable('sysntpd');
- else
- return L.system.initDisable('sysntpd');
- };
-
- s2.option(L.cbi.CheckboxValue, 'enable_server', {
- caption: L.tr('Enable NTP server')
- }).depends('.enable');
-
- s2.option(L.cbi.DynamicList, 'server', {
- caption: L.tr('NTP server candidates'),
- datatype: 'host'
- }).depends('.enable');
-
- return m.insertInto('#map');
- }
+ execute: function() {
+ var m = new L.cbi.Map('system', {
+ caption: L.tr('System'),
+ description: L.tr('Here you can configure the basic aspects of your device like its hostname or the timezone.'),
+ collabsible: true
+ });
+
+ var s = m.section(L.cbi.TypedSection, 'system', {
+ caption: L.tr('System Properties'),
+ teasers: [ 'hostname', 'zonename', 'languages', 'themes' ],
+ readonly: !this.options.acls.system
+ });
+
+ s.tab({
+ id: 'general',
+ caption: L.tr('General Settings')
+ });
+
+ var t = s.taboption('general', L.cbi.DummyValue, '__time', {
+ caption: L.tr('Local Time')
+ });
+
+ t.load = function(sid)
+ {
+ var id = this.id(sid);
+
+ return L.system.getSystemInfo().then(function(info) {
+ var date = new Date();
+ var time = info.localtime;
+
+ window.setInterval(function() {
+ date.setTime(++time * 1000);
+
+ $('#' + id).text('%04d/%02d/%02d %02d:%02d:%02d'.format(
+ date.getUTCFullYear(),
+ date.getUTCMonth() + 1,
+ date.getUTCDate(),
+ date.getUTCHours(),
+ date.getUTCMinutes(),
+ date.getUTCSeconds()
+ ));
+ }, 1000);
+ });
+ };
+
+
+ s.taboption('general', L.cbi.InputValue, 'hostname', {
+ caption: L.tr('Hostname'),
+ datatype: 'hostname'
+ });
+
+
+ var z = s.taboption('general', L.cbi.ListValue, 'zonename', {
+ caption: L.tr('Timezone')
+ });
+
+ z.load = function(sid) {
+ return $.getJSON(L.globals.resource + '/zoneinfo.json').then(function(zones) {
+ var znames = [ ];
+
+ for (var i = 0; i < zones.length; i++)
+ for (var j = 5; j < zones[i].length; j++)
+ znames.push(zones[i][j]);
+
+ znames.sort();
+
+ for (var i = 0; i < znames.length; i++)
+ z.value(znames[i]);
+
+ z.zones = zones;
+ });
+ };
+
+ z.save = function(sid)
+ {
+ var uci = this.ucipath(sid);
+ var val = this.formvalue(sid);
+
+ if (!this.callSuper('save', sid))
+ return false;
+
+ for (var i = 0; i < z.zones.length; i++)
+ for (var j = 5; j < z.zones[i].length; j++)
+ if (z.zones[i][j] == val)
+ {
+ m.set(uci.config, uci.section, 'timezone', z.zones[i][0]);
+ return true;
+ }
+
+ m.set(uci.config, uci.section, 'timezone', 'GMT0');
+ return true;
+ };
+
+
+ s.tab({
+ id: 'logging',
+ caption: L.tr('Logging')
+ });
+
+ s.taboption('logging', L.cbi.InputValue, 'log_size', {
+ caption: L.tr('System log buffer size'),
+ description: L.tr('kiB'),
+ placeholder: 16,
+ optional: true,
+ datatype: 'range(0, 32)'
+ });
+
+ s.taboption('logging', L.cbi.InputValue, 'log_ip', {
+ caption: L.tr('External system log server'),
+ placeholder: '0.0.0.0',
+ optional: true,
+ datatype: 'ip4addr'
+ });
+
+ s.taboption('logging', L.cbi.InputValue, 'log_port', {
+ caption: L.tr('External system log server port'),
+ placeholder: 514,
+ optional: true,
+ datatype: 'port'
+ });
+
+ s.taboption('logging', L.cbi.ListValue, 'conloglevel', {
+ caption: L.tr('Log output level')
+ }).value(8, L.tr('Debug'))
+ .value(7, L.tr('Info'))
+ .value(6, L.tr('Notice'))
+ .value(5, L.tr('Warning'))
+ .value(4, L.tr('Error'))
+ .value(3, L.tr('Critical'))
+ .value(2, L.tr('Alert'))
+ .value(1, L.tr('Emergency'));
+
+ s.taboption('logging', L.cbi.ListValue, 'cronloglevel', {
+ caption: L.tr('Cron Log level')
+ }).value(5, L.tr('Debug'))
+ .value(8, L.tr('Normal'))
+ .value(9, L.tr('Warning'));
+
+ s.tab({
+ id: 'language',
+ caption: L.tr('Language and Style')
+ });
+
+
+ var l = s.taboption('language', L.cbi.ListValue, 'languages', {
+ caption: L.tr('Language'),
+ uci_package: 'luci',
+ uci_section: 'main',
+ uci_option: 'lang'
+ }).value('auto', L.tr('Automatic'));
+
+ l.load = function(sid)
+ {
+ var langs = m.get('luci', 'languages');
+ for (var key in langs)
+ if (key.charAt(0) != '.')
+ l.value(key, langs[key]);
+ };
+
+
+ var t = s.taboption('language', L.cbi.ListValue, 'themes', {
+ caption: L.tr('Design'),
+ uci_package: 'luci',
+ uci_section: 'main',
+ uci_option: 'mediaurlbase'
+ });
+
+ t.load = function(sid)
+ {
+ var themes = m.get('luci', 'themes');
+ for (var key in themes)
+ if (key.charAt(0) != '.')
+ t.value(themes[key], key);
+ };
+
+
+ var s2 = m.section(L.cbi.NamedSection, 'ntp', {
+ caption: L.tr('Time Synchronization'),
+ readonly: !this.options.acls.system
+ });
+
+ var e = s2.option(L.cbi.CheckboxValue, '.enable', {
+ caption: L.tr('Enable NTP client'),
+ optional: true
+ });
+
+ e.load = function(sid) {
+ return L.system.initEnabled('sysntpd').then(function(enabled) {
+ e.options.initial = enabled;
+ });
+ };
+
+ e.save = function(sid) {
+ if (this.formvalue(sid))
+ return L.system.initEnable('sysntpd');
+ else
+ return L.system.initDisable('sysntpd');
+ };
+
+ s2.option(L.cbi.CheckboxValue, 'enable_server', {
+ caption: L.tr('Enable NTP server')
+ }).depends('.enable');
+
+ s2.option(L.cbi.DynamicList, 'server', {
+ caption: L.tr('NTP server candidates'),
+ datatype: 'host'
+ }).depends('.enable');
+
+ return m.insertInto('#map');
+ }
});