68c6644fb391d97db10ff6c7bf0453e41edf0115
[oweals/luci.git] / applications / luci-app-adblock / htdocs / luci-static / resources / view / adblock / whitelist.js
1 'use strict';
2 'require view';
3 'require fs';
4 'require ui';
5
6 return view.extend({
7         load: function() {
8                 return L.resolveDefault(fs.read_direct('/etc/adblock/adblock.whitelist'), '');
9         },
10         handleSave: function(ev) {
11                 var value = ((document.querySelector('textarea').value || '').trim().toLowerCase().replace(/\r\n/g, '\n').replace(/[^a-z0-9\.\-\#\n]/g, '')) + '\n';
12                 return fs.write('/etc/adblock/adblock.whitelist', value)
13                         .then(function(rc) {
14                                 document.querySelector('textarea').value = value;
15                                 ui.addNotification(null, E('p', _('Whitelist changes have been saved. Refresh your adblock lists that changes take effect.')), 'info');
16                         }).catch(function(e) {
17                                 ui.addNotification(null, E('p', _('Unable to save changes: %s').format(e.message)));
18                         });
19         },
20         render: function(whitelist) {
21                 return E([
22                         E('p', {},
23                                 _('This is the local adblock whitelist to always allow certain (sub) domains.<br /> \
24                                 Please note: add only one domain per line. Comments introduced with \'#\' are allowed - ip addresses, wildcards and regex are not.')),
25                         E('p', {},
26                                 E('textarea', {
27                                         'style': 'width: 100% !important; padding: 5px; font-family: monospace',
28                                         'spellcheck': 'false',
29                                         'wrap': 'off',
30                                         'rows': 25
31                                 }, [ whitelist != null ? whitelist : '' ])
32                         )
33                 ]);
34         },
35         handleSaveApply: null,
36         handleReset: null
37 });