]> git.mxchange.org Git - friendica-addons.git/commitdiff
[advancedcontentfilter] Move Vue template from DOM to compiled render functions ...
authorHypolite Petovan <mrpetovan@gmail.com>
Sun, 5 Aug 2018 12:26:48 +0000 (14:26 +0200)
committerHypolite Petovan <mrpetovan@gmail.com>
Sun, 5 Aug 2018 12:26:48 +0000 (14:26 +0200)
advancedcontentfilter/advancedcontentfilter.js
advancedcontentfilter/advancedcontentfilter.php
advancedcontentfilter/templates/settings.tpl

index 67a2b8d24c1384f9b28db9c28daaec6b61eaf40f..e3c2da540144beb37f157862960647b50ec92dca 100644 (file)
@@ -1,4 +1,4 @@
-$.ajaxSetup({headers: {'X-CSRF-Token': document.querySelector('#csrf').getAttribute('value')}});
+$.ajaxSetup({headers: {'X-CSRF-Token': csrfToken}});
 
 $.extend({
        ajaxJSON: function(method, url, data) {
@@ -22,7 +22,9 @@ new Vue({
                rule: {id: '', name: '', expression: '', created: ''},
                rules: existingRules || [],
                itemUrl: '',
-               itemJson: ''
+               itemJson: '',
+               currentTheme: currentTheme,
+               messages: messages,
        },
 
        watch: {
@@ -118,5 +120,13 @@ new Vue({
 
                        return false;
                }
-       }
-});
\ No newline at end of file
+       },
+
+       // These render functions have been compiled from templates/advancedcontentfilter.vue, check this file out for instructions
+       render: function () {
+               with(this){return _c('div',{attrs:{"id":"rules"}},[_c('p',[_c('a',{attrs:{"href":"settings/addon"}},[_v("🔙 "+_s(messages.backtosettings))])]),_c('h1',[_v(_s(messages.title)+" "),_c('a',{staticClass:"btn btn-default btn-sm",attrs:{"href":"advancedcontentfilter/help","title":messages.help}},[_c('i',{staticClass:"fa fa-question fa-2x",attrs:{"aria-hidden":"true"}})])]),_c('div',[_v(_s(messages.intro))]),_c('h2',[_v(_s(messages.your_rules)+" "),_c('button',{staticClass:"btn btn-primary btn-sm",attrs:{"title":messages.add_a_rule},on:{"click":function($event){showModal = true}}},[_c('i',{staticClass:"fa fa-plus fa-2x",attrs:{"aria-hidden":"true"}})])]),(rules.length === 0)?_c('div',{},[_v(_s(messages.no_rules))]):_e(),_c('ul',{staticClass:"list-group"},_l((rules),function(rule){return _c('li',{staticClass:"list-group-item"},[_c('p',{staticClass:"pull-right"},[(parseInt(rule.active))?_c('button',{staticClass:"btn btn-xs btn-primary",attrs:{"type":"button","aria-label":messages.disable_this_rule,"title":messages.disable_this_rule},on:{"click":function($event){toggleActive(rule)}}},[_c('i',{staticClass:"fa fa-toggle-on",attrs:{"aria-hidden":"true"}}),_v(" "+_s(messages.enabled))]):_c('button',{staticClass:"btn btn-xs btn-default",attrs:{"type":"button","aria-label":messages.enable_this_rule,"title":messages.enable_this_rule},on:{"click":function($event){toggleActive(rule)}}},[_c('i',{staticClass:"fa fa-toggle-off",attrs:{"aria-hidden":"true"}}),_v(" "+_s(messages.disabled))]),_v(" "),_c('button',{staticClass:"btn btn-xs btn-primary",attrs:{"type":"button","aria-label":messages.edit_this_rule,"title":messages.edit_this_rule},on:{"click":function($event){editRule(rule)}}},[_c('i',{staticClass:"fa fa-pencil",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('button',{staticClass:"btn btn-xs btn-default",attrs:{"type":"button","aria-label":messages.delete_this_rule,"title":messages.delete_this_rule},on:{"click":function($event){deleteRule(rule)}}},[_c('i',{staticClass:"fa fa-trash-o",attrs:{"aria-hidden":"true"}})])]),_c('h3',{staticClass:"list-group-item-heading"},[_v(_s(messages.rule)+" #"+_s(rule.id)+": "+_s(rule.name))]),(rule.expression)?_c('pre',{staticClass:"list-group-item-text"},[_v(_s(rule.expression))]):_e()])})),_c('div',{ref:"vuemodal",staticClass:"modal fade",attrs:{"tabindex":"-1","role":"dialog"}},[_c('div',{staticClass:"modal-dialog",attrs:{"role":"document"}},[_c('div',{staticClass:"modal-content"},[_c('div',{staticClass:"modal-header"},[(currentTheme === 'frio')?_c('button',{staticClass:"close",attrs:{"type":"button","data-dismiss":"modal","aria-label":messages.close},on:{"click":function($event){showModal = false}}},[_c('span',{attrs:{"aria-hidden":"true"}},[_v("×")])]):_e(),(rule.id)?_c('h3',[_v(_s(messages.edit_the_rule)+" \""+_s(rule.name)+"\"")]):_e(),(!rule.id)?_c('h3',[_v(_s(messages.add_a_rule))]):_e()]),_c('div',{staticClass:"modal-body"},[_c('form',[(errorMessage)?_c('div',{staticClass:"alert alert-danger",attrs:{"role":"alert"}},[_v(_s(errorMessage))]):_e(),_c('div',{staticClass:"form-group"},[_c('input',{directives:[{name:"model",rawName:"v-model",value:(rule.name),expression:"rule.name"}],staticClass:"form-control",attrs:{"placeholder":messages.rule_name},domProps:{"value":(rule.name)},on:{"input":function($event){if($event.target.composing)return;$set(rule, "name", $event.target.value)}}})]),_c('div',{staticClass:"form-group"},[_c('input',{directives:[{name:"model",rawName:"v-model",value:(rule.expression),expression:"rule.expression"}],staticClass:"form-control",attrs:{"placeholder":messages.rule_expression},domProps:{"value":(rule.expression)},on:{"input":function($event){if($event.target.composing)return;$set(rule, "expression", $event.target.value)}}})])])]),_c('div',{staticClass:"modal-footer"},[_c('button',{staticClass:"btn btn-default",attrs:{"type":"button","data-dismiss":"modal","aria-label":"Close"},on:{"click":function($event){resetForm()}}},[_v(_s(messages.cancel))]),(rule.id)?_c('button',{staticClass:"btn btn-primary",attrs:{"slot":"button","type":"button"},on:{"click":function($event){saveRule(rule)}},slot:"button"},[_v(_s(messages.save_this_rule))]):_e(),(!rule.id)?_c('button',{staticClass:"btn btn-primary",attrs:{"slot":"button","type":"button"},on:{"click":function($event){addRule()}},slot:"button"},[_v(_s(messages.add_a_rule))]):_e()])])])]),_c('form',{staticClass:"form-inline",on:{"submit":function($event){$event.preventDefault();showVariables()}}},[_c('fieldset',[_c('legend',[_v("Show post variables")]),_c('div',{staticClass:"form-group",staticStyle:{"width":"50%"}},[_c('label',{staticClass:"sr-only",attrs:{"for":"itemUrl"}},[_v("Post URL or item guid")]),_c('input',{directives:[{name:"model",rawName:"v-model",value:(itemUrl),expression:"itemUrl"}],staticClass:"form-control",staticStyle:{"width":"100%"},attrs:{"id":"itemUrl","placeholder":"Post URL or item guid"},domProps:{"value":(itemUrl)},on:{"input":function($event){if($event.target.composing)return;itemUrl=$event.target.value}}})]),_c('button',{staticClass:"btn btn-primary",attrs:{"type":"submit"}},[_v("Show Variables")])])]),_c('pre',{},[_v(_s(itemJson))])])}
+       },
+
+       staticRenderFns: [
+       ],
+});
index 3012b31201c9a8a1320ea7bed221154cd3f76e46..55a80a802ebc18f41587606766b4aa9117088e5b 100644 (file)
@@ -208,31 +208,31 @@ function advancedcontentfilter_content(App $a)
        } else {
                $t = get_markup_template('settings.tpl', 'addon/advancedcontentfilter/');
                return replace_macros($t, [
+                       '$messages' => [
+                               'backtosettings'    => L10n::t('Back to Addon Settings'),
+                               'title'             => L10n::t('Advanced Content Filter'),
+                               'add_a_rule'        => L10n::t('Add a Rule'),
+                               'help'              => L10n::t('Help'),
+                               'intro'             => L10n::t('Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the help page.'),
+                               'your_rules'        => L10n::t('Your rules'),
+                               'no_rules'          => L10n::t('You have no rules yet! Start adding one by clicking on the button above next to the title.'),
+                               'disabled'          => L10n::t('Disabled'),
+                               'enabled'           => L10n::t('Enabled'),
+                               'disable_this_rule' => L10n::t('Disable this rule'),
+                               'enable_this_rule'  => L10n::t('Enable this rule'),
+                               'edit_this_rule'    => L10n::t('Edit this rule'),
+                               'edit_the_rule'     => L10n::t('Edit the rule'),
+                               'save_this_rule'    => L10n::t('Save this rule'),
+                               'delete_this_rule'  => L10n::t('Delete this rule'),
+                               'rule'              => L10n::t('Rule'),
+                               'close'             => L10n::t('Close'),
+                               'addtitle'          => L10n::t('Add new rule'),
+                               'rule_name'         => L10n::t('Rule Name'),
+                               'rule_expression'   => L10n::t('Rule Expression'),
+                               'cancel'            => L10n::t('Cancel'),
+                       ],
                        '$current_theme' => $a->getCurrentTheme(),
-                       '$backtosettings' => L10n::t('Back to Addon Settings'),
-                       '$title' => L10n::t('Advanced Content Filter'),
-                       '$add_a_rule' => L10n::t('Add a Rule'),
-                       '$help' => L10n::t('Help'),
-                       '$advanced_content_filter_intro' => L10n::t('Add and manage your personal content filter rules in this screen. Rules have a name and an arbitrary expression that will be matched against post data. For a complete reference of the available operations and variables, check the <a href="advancedcontentfilter/help">help page</a>.'),
-                       '$your_rules' => L10n::t('Your rules'),
-                       '$no_rules' => L10n::t('You have no rules yet! Start adding one by clicking on the button above next to the title.'),
-                       '$disabled' => L10n::t('Disabled'),
-                       '$enabled' => L10n::t('Enabled'),
-                       '$disable_this_rule' => L10n::t('Disable this rule'),
-                       '$enable_this_rule' => L10n::t('Enable this rule'),
-                       '$edit_this_rule' => L10n::t('Edit this rule'),
-                       '$edit_the_rule' => L10n::t('Edit the rule'),
-                       '$save_this_rule' => L10n::t('Save this rule'),
-                       '$delete_this_rule' => L10n::t('Delete this rule'),
-                       '$rule' => L10n::t('Rule'),
-                       '$close' => L10n::t('Close'),
-                       '$addtitle' => L10n::t('Add new rule'),
-                       '$rule_name' => L10n::t('Rule Name'),
-                       '$rule_expression' => L10n::t('Rule Expression'),
-                       '$examples' => L10n::t('<p>Examples:</p><ul><li><pre>author_link == \'https://friendica.mrpetovan.com/profile/hypolite\'</pre></li><li>tags</li></ul>'),
-                       '$cancel' => L10n::t('Cancel'),
                        '$rules' => advancedcontentfilter_get_rules(),
-                       '$baseurl' => System::baseUrl(true),
                        '$form_security_token' => get_form_security_token()
                ]);
        }
index 813dc91991b18752749488fe22805ac27f9b5030..a04baf7de5ee8c157fc126e3029afe0fa13936d8 100644 (file)
@@ -1,96 +1,20 @@
 <div id="adminpage">
        <style>[v-cloak] { display: none; }</style>
-       <div id="rules">
-               <p><a href="settings/addon">🔙 {{$backtosettings}}</a></p>
-               <h1>
-                       {{$title}}
+       <div id="rules"></div>
 
-                       <a href="{{$baseurl}}/advancedcontentfilter/help" class="btn btn-default btn-sm" title="{{$help}}">
-                               <i class="fa fa-question fa-2x" aria-hidden="true"></i>
-                       </a>
-               </h1>
-               <div>{{$advanced_content_filter_intro}}</div>
-               <h2>
-                       {{$your_rules}}
-                       <button class="btn btn-primary btn-sm" title="{{$add_a_rule}}" @click="showModal = true">
-                               <i class="fa fa-plus fa-2x" aria-hidden="true"></i>
-                       </button>
-               </h2>
-               <div v-if="rules.length === 0" v-cloak>
-                       {{$no_rules}}
-               </div>
+       <script>
+               var existingRules = {{$rules}};
 
-               <ul class="list-group" v-cloak>
-                       <li class="list-group-item" v-for="rule in rules">
-                               <p class="pull-right">
-                                       <button type="button" class="btn btn-xs btn-primary" v-on:click="toggleActive(rule)" aria-label="{{$disable_this_rule}}" title="{{$disable_this_rule}}" v-if="parseInt(rule.active)">
-                                               <i class="fa fa-toggle-on" aria-hidden="true"></i> {{$enabled}}
-                                       </button>
-                                       <button type="button" class="btn btn-xs btn-default" v-on:click="toggleActive(rule)" aria-label="{{$enable_this_rule}}" title="{{$enable_this_rule}}" v-else>
-                                               <i class="fa fa-toggle-off" aria-hidden="true"></i> {{$disabled}}
-                                       </button>
+               var messages = {
+       {{foreach $messages as $key => $value}}
+                       {{$key}}: "{{$value}}",
+       {{/foreach}}
+               };
 
-                                       <button type="button" class="btn btn-xs btn-primary" v-on:click="editRule(rule)" aria-label="{{$edit_this_rule}}" title="{{$edit_this_rule}}">
-                                               <i class="fa fa-pencil" aria-hidden="true"></i>
-                                       </button>
-                                       <button type="button" class="btn btn-xs btn-default" v-on:click="deleteRule(rule)" aria-label="{{$delete_this_rule}}" title="{{$delete_this_rule}}">
-                                               <i class="fa fa-trash-o" aria-hidden="true"></i>
-                                       </button>
-                               </p>
-                               <h3 class="list-group-item-heading">
-                                       {{$rule}} #{{ rule.id }}: {{ rule.name }}
-                               </h3>
-                               <pre class="list-group-item-text" v-if="rule.expression">{{ rule.expression }}</pre>
-                       </li>
-               </ul>
+               var csrfToken = "{{$form_security_token}}";
 
-               <div class="modal fade" ref="vuemodal" tabindex="-1" role="dialog" v-cloak>
-                       <div class="modal-dialog" role="document">
-                               <div class="modal-content">
-                                       <div class="modal-header">
-               {{if $current_theme == 'frio'}}
-                                               <button type="button" class="close" data-dismiss="modal" aria-label="{{$close}}" @click="showModal = false"><span aria-hidden="true">&times;</span></button>
-               {{/if}}
-                                               <h3 v-if="rule.id">{{$edit_the_rule}} "{{ rule.name }}"</h3>
-                                               <h3 v-if="!rule.id">{{$add_a_rule}}</h3>
-                                       </div>
-                                       <div class="modal-body">
-                                               <form>
-                                                       <input type="hidden" name="form_security_token" id="csrf" value="{{$form_security_token}}" />
-                                                       <div class="alert alert-danger" role="alert" v-if="errorMessage">{{ errorMessage }}</div>
-                                                       <div class="form-group">
-                                                               <input class="form-control" placeholder="{{$rule_name}}" v-model="rule.name">
-                                                       </div>
-                                                       <div class="form-group">
-                                                               <input class="form-control" placeholder="{{$rule_expression}}" v-model="rule.expression">
-                                                       </div>
-                                               </form>
-                                       </div>
-                                       <div class="modal-footer">
-                                               <button type="button" class="btn btn-default" data-dismiss="modal" aria-label="Close" @click="resetForm()">{{$cancel}}</button>
-                                               <button slot="button" class="btn btn-primary" type="button" v-if="rule.id" v-on:click="saveRule(rule)">{{$save_this_rule}}</button>
-                                               <button slot="button" class="btn btn-primary" type="button" v-if="!rule.id" v-on:click="addRule()">{{$add_a_rule}}</button>
-                                       </div>
-                               </div><!-- /.modal-content -->
-                       </div><!-- /.modal-dialog -->
-               </div><!-- /.modal -->
-
-               <form class="form-inline" v-on:submit.prevent="showVariables()">
-                       <fieldset>
-                               <legend>Show post variables</legend>
-                               <div class="form-group" style="width: 50%">
-                                       <label for="itemUrl" class="sr-only">Post URL or item guid</label>
-                                       <input class="form-control" id="itemUrl" placeholder="Post URL or item guid" v-model="itemUrl" style="width: 100%">
-                               </div>
-                               <button type="submit" class="btn btn-primary">Show Variables</button>
-                       </fieldset>
-               </form>
-               <pre v-cloak>
-{{ itemJson }}
-               </pre>
-       </div>
-
-       <script> var existingRules = {{$rules}};</script>
+               var currentTheme = "{{$current_theme}}";
+       </script>
 
        <!-- JS -->
        <script src="{{$baseurl}}/view/asset/vue/dist/vue.min.js"></script>