Skip to content

Commit

Permalink
Add (experimental) @visibility field option
Browse files Browse the repository at this point in the history
  • Loading branch information
aheinze committed Nov 20, 2018
1 parent 73a7df5 commit 718babf
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 3 deletions.
21 changes: 20 additions & 1 deletion modules/Collections/assets/collection-entrypreview.tag
Expand Up @@ -145,7 +145,7 @@

<div class="uk-grid uk-grid-match uk-grid-gutter">

<div class="uk-width-1-1" each="{field,idx in fields}" show="{!group || (group == field.group) }" if="{ hasFieldAccess(field.name) }" no-reorder>
<div class="uk-width-1-1" each="{field,idx in fields}" show="{checkVisibilityRule(field) && (!group || (group == field.group)) }" if="{ hasFieldAccess(field.name) }" no-reorder>

<div class="uk-panel">

Expand Down Expand Up @@ -316,6 +316,25 @@

return false;
}

checkVisibilityRule(field) {

if (field.options && field.options['@visibility']) {

try {
return (new Function('$', 'v','return ('+field.options['@visibility']+')'))(this.entry, function(key) {
var f = this.fieldsidx[key] || {};
return this.entry[(f.localize && this.lang ? (f.name+'_'+this.lang):f.name)];
}.bind(this));
} catch(e) {
return false;
}

return this.data.check;
}

return true;
}

</script>

Expand Down
21 changes: 20 additions & 1 deletion modules/Collections/views/entry.php
Expand Up @@ -54,7 +54,7 @@
<div class="uk-grid uk-grid-match uk-grid-gutter" if="{ !preview }">
<div class="uk-width-medium-{field.width}" each="{field,idx in fields}" show="{!group || (group == field.group) }" if="{ hasFieldAccess(field.name) }" no-reorder>
<div class="uk-width-medium-{field.width}" each="{field,idx in fields}" show="{checkVisibilityRule(field) && (!group || (group == field.group)) }" if="{ hasFieldAccess(field.name) }" no-reorder>
<div class="uk-panel">
Expand Down Expand Up @@ -329,6 +329,25 @@
this.entry[field+(this.lang ? '_':'')+this.lang] = JSON.parse(val);
}
checkVisibilityRule(field) {
if (field.options && field.options['@visibility']) {
try {
return (new Function('$', 'v','return ('+field.options['@visibility']+')'))(this.entry, function(key) {
var f = this.fieldsidx[key] || {};
return this.entry[(f.localize && this.lang ? (f.name+'_'+this.lang):f.name)];
}.bind(this));
} catch(e) {
return false;
}
return this.data.check;
}
return true;
}
</script>
</div>
21 changes: 20 additions & 1 deletion modules/Singletons/views/form.php
Expand Up @@ -55,7 +55,7 @@
<div class="uk-grid uk-grid-match uk-grid-gutter">
<div class="uk-width-medium-{field.width}" each="{field,idx in fields}" show="{!group || (group == field.group) }" if="{ hasFieldAccess(field.name) }" no-reorder>
<div class="uk-width-medium-{field.width}" each="{field,idx in fields}" show="{checkVisibilityRule(field) && (!group || (group == field.group)) }" if="{ hasFieldAccess(field.name) }" no-reorder>
<div class="uk-panel">
Expand Down Expand Up @@ -300,6 +300,25 @@
val = JSON.stringify(this.data[field+(lang ? '_':'')+lang]);
this.data[field+(this.lang ? '_':'')+this.lang] = JSON.parse(val);
},
checkVisibilityRule(field) {
if (field.options && field.options['@visibility']) {
try {
return (new Function('$', 'v','return ('+field.options['@visibility']+')'))(this.data, function(key) {
var f = this.fieldsidx[key] || {};
return this.data[(f.localize && this.lang ? (f.name+'_'+this.lang):f.name)];
}.bind(this));
} catch(e) {
return false;
}
return this.data.check;
}
return true;
}
</script>
Expand Down

0 comments on commit 718babf

Please sign in to comment.