]> git.mxchange.org Git - friendica-addons.git/blob - advancedcontentfilter/advancedcontentfilter.js
67a2b8d24c1384f9b28db9c28daaec6b61eaf40f
[friendica-addons.git] / advancedcontentfilter / advancedcontentfilter.js
1 $.ajaxSetup({headers: {'X-CSRF-Token': document.querySelector('#csrf').getAttribute('value')}});
2
3 $.extend({
4         ajaxJSON: function(method, url, data) {
5                 return $.ajax({
6                         type: method.toUpperCase(),
7                         url: url,
8                         data: JSON.stringify(data),
9                         contentType: 'application/json; charset=utf-8',
10                         dataType: 'json'
11                 });
12         }
13 });
14
15 new Vue({
16         el: '#rules',
17
18         data: {
19                 showModal: false,
20                 errorMessage: '',
21                 editedIndex: null,
22                 rule: {id: '', name: '', expression: '', created: ''},
23                 rules: existingRules || [],
24                 itemUrl: '',
25                 itemJson: ''
26         },
27
28         watch: {
29                 showModal: function () {
30                         if (this.showModal) {
31                                 $(this.$refs.vuemodal).modal('show');
32                         } else {
33                                 $(this.$refs.vuemodal).modal('hide');
34                         }
35                 }
36         },
37
38         methods: {
39                 resetForm: function() {
40                         this.rule = {id: '', name: '', expression: '', created: ''};
41                         this.showModal = false;
42                         this.editedIndex = null;
43                 },
44
45                 addRule: function () {
46                         if (this.rule.name.trim()) {
47                                 this.errorMessage = '';
48
49                                 var self = this;
50                                 $.ajaxJSON('post', '/advancedcontentfilter/api/rules', this.rule)
51                                 .then(function (responseJSON) {
52                                         self.rules.push(responseJSON.rule);
53                                         self.resetForm();
54                                 }, function (response) {
55                                         self.errorMessage = response.responseJSON.message;
56                                 });
57                         }
58                 },
59
60                 editRule: function (rule) {
61                         this.editedIndex = this.rules.indexOf(rule);
62                         this.rule = Object.assign({}, rule);
63                         this.showModal = true;
64                 },
65
66                 saveRule: function (rule) {
67                         this.errorMessage = '';
68
69                         var self = this;
70                         $.ajaxJSON('put', '/advancedcontentfilter/api/rules/' + rule.id, rule)
71                         .then(function () {
72                                 self.rules[self.editedIndex] = rule;
73                                 self.resetForm();
74                         }, function (response) {
75                                 self.errorMessage = response.responseJSON.message;
76                         });
77                 },
78
79                 toggleActive: function (rule) {
80                         var previousValue = this.rules[this.rules.indexOf(rule)].active;
81                         var newValue = Math.abs(parseInt(rule.active) - 1);
82
83                         this.rules[this.rules.indexOf(rule)].active = newValue;
84
85                         var self = this;
86                         $.ajaxJSON('put', '/advancedcontentfilter/api/rules/' + rule.id, {'active': newValue})
87                         .fail(function (response) {
88                                 self.rules[self.rules.indexOf(rule)].active = previousValue;
89                                 console.log(response.responseJSON.message);
90                         });
91                 },
92
93                 deleteRule: function (rule) {
94                         if (confirm('Are you sure you want to delete this rule?')) {
95                                 var self = this;
96                                 $.ajaxJSON('delete', '/advancedcontentfilter/api/rules/' + rule.id)
97                                 .then(function () {
98                                         self.rules.splice(self.rules.indexOf(rule), 1);
99                                 }, function (response) {
100                                         console.log(response.responseJSON.message);
101                                 });
102                         }
103                 },
104
105                 showVariables: function () {
106                         var urlParts = this.itemUrl.split('/');
107                         var guid = urlParts[urlParts.length - 1];
108
109                         this.itemJson = '';
110
111                         var self = this;
112                         $.ajaxJSON('get', '/advancedcontentfilter/api/variables/' + guid)
113                         .then(function (responseJSON) {
114                                 self.itemJson = responseJSON.variables;
115                         }, function (response) {
116                                 self.itemJson = response.responseJSON.message;
117                         });
118
119                         return false;
120                 }
121         }
122 });