From 21bf57eb792bb422e3ace024aa2f2cf742d20082 Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Sun, 6 Nov 2016 07:23:36 -0500 Subject: [PATCH] Add support for OR-groups in "custom (field=value)" selections in InputfieldSelector. Simply use the existing "or" checkbox to apply the custom selector as an OR group. --- .../InputfieldSelector/InputfieldSelector.js | 15 ++++++-- .../InputfieldSelector.min.js | 2 +- .../InputfieldSelector.module | 37 +++++++++---------- 3 files changed, 31 insertions(+), 23 deletions(-) diff --git a/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.js b/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.js index 4778b6bc..92711d9a 100644 --- a/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.js +++ b/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.js @@ -480,7 +480,8 @@ var InputfieldSelector = { var $orCheckbox = $row.find(".input-or"); var useOrValue = mayOrValue && $orCheckbox.is(":checked"); var useOrField = mayOrField && $orCheckbox.is(":checked"); - + var isOrGroup = (useOrField || useOrValue) && fieldName == '_custom'; + if(useOrValue) { // && !$row.is('.has-or-value')) { $row.addClass('has-or-value'); $row.find(".select-field, .select-operator, .select-subfield").attr('disabled', 'disabled'); @@ -505,6 +506,7 @@ var InputfieldSelector = { mayOrField: mayOrField, useOrValue: useOrValue, useOrField: useOrField, + isOrGroup: isOrGroup, checkbox: $orCheckbox }; @@ -560,7 +562,9 @@ var InputfieldSelector = { if(i === n) continue; var si = selectors[i]; if(si === null || typeof si == "undefined" || typeof si.value == "undefined") continue; - if(si.mayOrField && si.value == s.value) { + if(si.field == '_custom' && si.isOrGroup) { + s.isOrGroup = true; + } else if(si.mayOrField && si.value == s.value) { si.checkbox.show(); if(si.useOrField) { s.field += '|' + si.field; @@ -582,7 +586,12 @@ var InputfieldSelector = { } if(s.field == '_custom') { - selector += s.value; + if(s.isOrGroup) { + s.value = s.value.replace('(', '').replace(')', ''); + selector += s.field + '=' + '(' + s.value + ')'; + } else { + selector += s.value; + } } else { selector += s.field + s.operator + $.trim(s.value); } diff --git a/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.min.js b/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.min.js index 3f1352c1..84f25943 100644 --- a/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.min.js +++ b/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.min.js @@ -1 +1 @@ -var InputfieldSelector={selector:"",spinner:"",borderColor:"#eee",init:function(){$(document).on("change",".InputfieldSelector select.select-field",InputfieldSelector.changeField);$(document).on("change",".InputfieldSelector select.select-subfield",InputfieldSelector.changeField);$(document).on("change",".InputfieldSelector :input:not(.select-field):not(.input-value-autocomplete)",function(){InputfieldSelector.changeAny($(this))});$(document).on("opened",".InputfieldSelector",function(){InputfieldSelector.normalizeHeightRows($(this))});var b=null;$(document).on("keyup",".InputfieldSelector input.input-value",function(){var d=$(this);clearTimeout(b);if(d.hasClass("input-value-subselect")&&InputfieldSelector.valueHasOperator(d.val())){var c=d.parents(".selector-list").siblings(".selector-preview");c.html('Subselect detected: when done click here to commit your change.');return}b=setTimeout(function(){InputfieldSelector.changeAny(d)},100)});$(document).on("click",".InputfieldSelector .selector-add",function(){InputfieldSelector.addRow($(this));return false});$(document).on("click",".InputfieldSelector a.delete-row",InputfieldSelector.deleteRow);$(".InputfieldSelector .selector-preview").hide();$(document).on("wiretabclick",function(f,d,c){var e=d.find(".InputfieldSelector");if(e.length==0){return}InputfieldSelector.normalizeHeightRows(e)});$(".InputfieldSelector .InputfieldContent").eq(0).each(function(){InputfieldSelector.borderColor=$(this).css("border-bottom-color")});var a=$(".InputfieldSelector .selector-row");if(a.length>0){a.eq(0).find(".select-field").each(function(){InputfieldSelector.changeAny($(this))});a.eq(1).find(".input-value").change();a.each(function(){var c=$(this);c.css("border-color",InputfieldSelector.borderColor);InputfieldSelector.normalizeHeightRow(c);var f=c.find(".input-value-autocomplete");if(f.length>0){var d=c.find(".select-subfield");var g=d.length?d.val():c.find(".select-field").val();var e=c.parents(".InputfieldSelector").find("input.selector-value").attr("name");InputfieldSelector.setupAutocomplete(f,g,e)}})}$(".InputfieldSelector").each(function(){if($(this).find(".selector-preview-disabled").length>0){return}$(this).find(".input-value:eq(0)").change()})},disableOption:function(a){a.attr("disabled","disabled")},enableOption:function(a){a.removeAttr("disabled")},valueHasOperator:function(b){var a=["=","<",">"];var d=false;for(n=0;n-1&&b.substring(c-1,1)!="\\"){d=true;break}}return d},addRow:function(b){var c=b.parents(".InputfieldSelector").find(".selector-list");var a=c.find(".selector-template-row");var d=a.clone();d.removeClass("selector-template-row");d.find(".opval").html("");d.find(".select-field").val("");d.hide();d.find("option[disabled=disabled]").remove();c.append(d);d.slideDown("fast");InputfieldSelector.normalizeHeightRow(d)},deleteRow:function(){var b=$(this).parents(".selector-row");var a=b.find(".select-field");if(a.val()=="template"){b.parents(".InputfieldSelector").find("select.select-field").each(function(){$(this).find("option[disabled=disabled]").each(function(){InputfieldSelector.enableOption($(this))})})}var c=b.siblings();b.slideUp("fast",function(){b.remove();InputfieldSelector.changeAny(c.eq(0))});return false},changeFieldToggle:function(b){var d=b.parents(".InputfieldSelector");var c=d.hasClass("InputfieldSelector_names")?"names":"labels";var a=(c==="labels"?"names":"labels");d.find(".select-field, .select-subfield").each(function(){$(this).find("option").each(function(){var e=$(this).attr("data-name");if(!e){if($(this).attr("value")=="toggle-names-labels"){$(this).html($(this).attr("data-"+c))}return}if(c=="labels"){$(this).html(e)}else{$(this).html($(this).attr("data-label"))}})});d.removeClass("InputfieldSelector_"+c).addClass("InputfieldSelector_"+a);b.val(b.attr("data-selected"));return false},changeField:function(f){var f=$(this);var i=f.val();if(!i||i.length==0){return}if(i=="toggle-names-labels"){return InputfieldSelector.changeFieldToggle(f)}var g=f.parents(".selector-row");var e="opval";g.children(".opval").html("");f.attr("data-selected",i);var c=f.parents(".InputfieldSelector").find(".selector-value");var a=c.attr("name");var h=f.attr("data-type");if(i.match(/\.$/)){e="subfield";if(i.indexOf("@")>-1){i=i.substring(1,i.length-1)}else{i=i.substring(0,i.length-1)}g.addClass("has-subfield")}else{if(i.match(/\.id$/)){i="id";e="opval";h="selector"}else{if(f.is(".select-field")){g.children(".subfield").html("");g.removeClass("has-subfield")}}}var b="./?InputfieldSelector="+e+"&field="+i+"&type="+h+"&name="+a;var d=$(InputfieldSelector.spinner);g.append(d);$.get(b,function(m){d.remove();var j=$(m);j.hide();if(e=="opval"){var l=g.children(".opval");l.html("").append(j);l.children(":not(.input-or)").fadeIn("fast");InputfieldSelector.changeAny(f);var k=l.find(".input-value-autocomplete");if(k.length>0){InputfieldSelector.setupAutocomplete(k,i,a)}}else{var o=g.children(".subfield");o.html("").append(j);j.fadeIn("fast")}InputfieldSelector.normalizeHeightRow(g);g.closest(".InputfieldContent").find(".hasDatepicker").datepicker("destroy").removeAttr("id").removeClass("hasDatepicker")})},normalizeHeightRow:function(a){InputfieldSelector.normalizeHeight(a.find(":input, i.fa"))},normalizeHeightRows:function(a){a.find(".selector-row").each(function(){InputfieldSelector.normalizeHeightRow($(this))})},normalizeHeight:function(b){var a=0;b.each(function(){$(this).css("margin-top",0);var c=$(this).outerHeight();if(c>a){a=c}});b.each(function(){var d=$(this).outerHeight();if(d0){f.push(B)}}if(D.is(".has-subfield")){var G=D.find(".select-subfield").val();if(G.length>0){if(G.indexOf(".")>0){if(J.indexOf("@")>-1){J="@"+G}else{J=G}}else{J+=G}if(J.indexOf(".data")>0){J=J.replace(/\.data$/,"")}}}var x=y.siblings(".opval").children(".select-operator");var A=x.val();var F=x.next(".input-value");var I=F.val();if(A&&A.indexOf('"')>-1){I=" ";F.attr("disabled","disabled")}else{if(F.is(":disabled")){F.removeAttr("disabled")}}if(typeof I!="undefined"){if(I.length){if(F.hasClass("input-value-subselect")&&InputfieldSelector.valueHasOperator(I)){I="["+I+"]"}else{if(I.indexOf(",")>-1&&J!="_custom"){if(I.indexOf('"')>-1){if(I.indexOf("'")==-1){I="'"+I+"'"}else{I='"'+I.replace(/"/g,"")+'"'}}else{I='"'+I+'"'}}}}}var C=","+J+"~"+A+"~";var E="~"+A+"~"+I+",";var z=I&&I.length>0&&q.indexOf(C)>-1;var w=I&&I.length>0&&q.indexOf(E)>-1;var H=D.find(".input-or");var s=z&&H.is(":checked");var i=w&&H.is(":checked");if(s){D.addClass("has-or-value");D.find(".select-field, .select-operator, .select-subfield").attr("disabled","disabled")}else{if(D.is(".has-or-value")){D.removeClass("has-or-value");D.find(".select-field, .select-operator, .select-subfield").removeAttr("disabled")}}if(i){D.addClass("has-or-field");D.find(".input-value, .select-operator").attr("disabled","disabled")}else{if(D.is(".has-or-field")){D.removeClass("has-or-field");D.find(".input-value, .select-operator").removeAttr("disabled")}}c[k++]={field:J,operator:A,value:I,mayOrValue:z,mayOrField:w,useOrValue:s,useOrField:i,checkbox:H};if(w||z){h=true}q+=","+J+"~"+A+"~"+I+",";m+=","+J+A+I});if(f.length>0){var d=null;t.each(function(){var i=$(this);var s=0;i.find("option").each(function(){var x=$(this);var w=x.attr("data-templates");if(typeof w!="undefined"&&w!="*"){InputfieldSelector.enableOption(x);var y=0;for(p=0;p-1){y++}}if(y){InputfieldSelector.enableOption(x)}else{if(!x.is(":selected")){InputfieldSelector.disableOption(x)}s++}}});if(s>0&&!i.parent().is(".selector-template-row")){i.find("option[disabled=disabled]").remove()}})}m="";for(k=0;k0){m+=", "}for(var p=0;p0&&m!=InputfieldSelector.selector){if(!j.is(".selector-preview-disabled")){j.html(""+e+m+"");j.fadeIn()}var u=j.siblings(".selector-counter");if(u.length>0&&!u.is(".selector-counter-disabled")){u.html(InputfieldSelector.spinner).fadeIn("fast");$.post("./?InputfieldSelector=test&name="+o.attr("name"),{selector:m},function(i){u.hide();u.html(i);u.show()})}}if(o.val()!=m){o.val(m);if(m.length==0){j.hide();j.siblings(".selector-counter").html("")}o.change()}InputfieldSelector.selector=m;var a=l.find(".or-notes");if(h){a.fadeIn()}else{a.hide()}}};$(document).ready(function(){InputfieldSelector.init()}); \ No newline at end of file +var InputfieldSelector={selector:"",spinner:"",borderColor:"#eee",init:function(){$(document).on("change",".InputfieldSelector select.select-field",InputfieldSelector.changeField);$(document).on("change",".InputfieldSelector select.select-subfield",InputfieldSelector.changeField);$(document).on("change",".InputfieldSelector :input:not(.select-field):not(.input-value-autocomplete)",function(){InputfieldSelector.changeAny($(this))});$(document).on("opened",".InputfieldSelector",function(){InputfieldSelector.normalizeHeightRows($(this))});var b=null;$(document).on("keyup",".InputfieldSelector input.input-value",function(){var d=$(this);clearTimeout(b);if(d.hasClass("input-value-subselect")&&InputfieldSelector.valueHasOperator(d.val())){var c=d.parents(".selector-list").siblings(".selector-preview");c.html('Subselect detected: when done click here to commit your change.');return}b=setTimeout(function(){InputfieldSelector.changeAny(d)},100)});$(document).on("click",".InputfieldSelector .selector-add",function(){InputfieldSelector.addRow($(this));return false});$(document).on("click",".InputfieldSelector a.delete-row",InputfieldSelector.deleteRow);$(".InputfieldSelector .selector-preview").hide();$(document).on("wiretabclick",function(f,d,c){var e=d.find(".InputfieldSelector");if(e.length==0){return}InputfieldSelector.normalizeHeightRows(e)});$(".InputfieldSelector .InputfieldContent").eq(0).each(function(){InputfieldSelector.borderColor=$(this).css("border-bottom-color")});var a=$(".InputfieldSelector .selector-row");if(a.length>0){a.eq(0).find(".select-field").each(function(){InputfieldSelector.changeAny($(this))});a.eq(1).find(".input-value").change();a.each(function(){var c=$(this);c.css("border-color",InputfieldSelector.borderColor);InputfieldSelector.normalizeHeightRow(c);var f=c.find(".input-value-autocomplete");if(f.length>0){var d=c.find(".select-subfield");var g=d.length?d.val():c.find(".select-field").val();var e=c.parents(".InputfieldSelector").find("input.selector-value").attr("name");InputfieldSelector.setupAutocomplete(f,g,e)}})}$(".InputfieldSelector").each(function(){if($(this).find(".selector-preview-disabled").length>0){return}$(this).find(".input-value:eq(0)").change()})},disableOption:function(a){a.attr("disabled","disabled")},enableOption:function(a){a.removeAttr("disabled")},valueHasOperator:function(b){var a=["=","<",">"];var d=false;for(n=0;n-1&&b.substring(c-1,1)!="\\"){d=true;break}}return d},addRow:function(b){var c=b.parents(".InputfieldSelector").find(".selector-list");var a=c.find(".selector-template-row");var d=a.clone();d.removeClass("selector-template-row");d.find(".opval").html("");d.find(".select-field").val("");d.hide();d.find("option[disabled=disabled]").remove();c.append(d);d.slideDown("fast");InputfieldSelector.normalizeHeightRow(d)},deleteRow:function(){var b=$(this).parents(".selector-row");var a=b.find(".select-field");if(a.val()=="template"){b.parents(".InputfieldSelector").find("select.select-field").each(function(){$(this).find("option[disabled=disabled]").each(function(){InputfieldSelector.enableOption($(this))})})}var c=b.siblings();b.slideUp("fast",function(){b.remove();InputfieldSelector.changeAny(c.eq(0))});return false},changeFieldToggle:function(b){var d=b.parents(".InputfieldSelector");var c=d.hasClass("InputfieldSelector_names")?"names":"labels";var a=(c==="labels"?"names":"labels");d.find(".select-field, .select-subfield").each(function(){$(this).find("option").each(function(){var e=$(this).attr("data-name");if(!e){if($(this).attr("value")=="toggle-names-labels"){$(this).html($(this).attr("data-"+c))}return}if(c=="labels"){$(this).html(e)}else{$(this).html($(this).attr("data-label"))}})});d.removeClass("InputfieldSelector_"+c).addClass("InputfieldSelector_"+a);b.val(b.attr("data-selected"));return false},changeField:function(f){var f=$(this);var i=f.val();if(!i||i.length==0){return}if(i=="toggle-names-labels"){return InputfieldSelector.changeFieldToggle(f)}var g=f.parents(".selector-row");var e="opval";g.children(".opval").html("");f.attr("data-selected",i);var c=f.parents(".InputfieldSelector").find(".selector-value");var a=c.attr("name");var h=f.attr("data-type");if(i.match(/\.$/)){e="subfield";if(i.indexOf("@")>-1){i=i.substring(1,i.length-1)}else{i=i.substring(0,i.length-1)}g.addClass("has-subfield")}else{if(i.match(/\.id$/)){i="id";e="opval";h="selector"}else{if(f.is(".select-field")){g.children(".subfield").html("");g.removeClass("has-subfield")}}}var b="./?InputfieldSelector="+e+"&field="+i+"&type="+h+"&name="+a;var d=$(InputfieldSelector.spinner);g.append(d);$.get(b,function(m){d.remove();var j=$(m);j.hide();if(e=="opval"){var l=g.children(".opval");l.html("").append(j);l.children(":not(.input-or)").fadeIn("fast");InputfieldSelector.changeAny(f);var k=l.find(".input-value-autocomplete");if(k.length>0){InputfieldSelector.setupAutocomplete(k,i,a)}}else{var o=g.children(".subfield");o.html("").append(j);j.fadeIn("fast")}InputfieldSelector.normalizeHeightRow(g);g.closest(".InputfieldContent").find(".hasDatepicker").datepicker("destroy").removeAttr("id").removeClass("hasDatepicker")})},normalizeHeightRow:function(a){InputfieldSelector.normalizeHeight(a.find(":input, i.fa"))},normalizeHeightRows:function(a){a.find(".selector-row").each(function(){InputfieldSelector.normalizeHeightRow($(this))})},normalizeHeight:function(b){var a=0;b.each(function(){$(this).css("margin-top",0);var c=$(this).outerHeight();if(c>a){a=c}});b.each(function(){var d=$(this).outerHeight();if(d0){f.push(C)}}if(E.is(".has-subfield")){var H=E.find(".select-subfield").val();if(H.length>0){if(H.indexOf(".")>0){if(K.indexOf("@")>-1){K="@"+H}else{K=H}}else{K+=H}if(K.indexOf(".data")>0){K=K.replace(/\.data$/,"")}}}var y=z.siblings(".opval").children(".select-operator");var B=y.val();var G=y.next(".input-value");var J=G.val();if(B&&B.indexOf('"')>-1){J=" ";G.attr("disabled","disabled")}else{if(G.is(":disabled")){G.removeAttr("disabled")}}if(typeof J!="undefined"){if(J.length){if(G.hasClass("input-value-subselect")&&InputfieldSelector.valueHasOperator(J)){J="["+J+"]"}else{if(J.indexOf(",")>-1&&K!="_custom"){if(J.indexOf('"')>-1){if(J.indexOf("'")==-1){J="'"+J+"'"}else{J='"'+J.replace(/"/g,"")+'"'}}else{J='"'+J+'"'}}}}}var D=","+K+"~"+B+"~";var F="~"+B+"~"+J+",";var A=J&&J.length>0&&q.indexOf(D)>-1;var x=J&&J.length>0&&q.indexOf(F)>-1;var I=E.find(".input-or");var s=A&&I.is(":checked");var i=x&&I.is(":checked");var w=(i||s)&&K=="_custom";if(s){E.addClass("has-or-value");E.find(".select-field, .select-operator, .select-subfield").attr("disabled","disabled")}else{if(E.is(".has-or-value")){E.removeClass("has-or-value");E.find(".select-field, .select-operator, .select-subfield").removeAttr("disabled")}}if(i){E.addClass("has-or-field");E.find(".input-value, .select-operator").attr("disabled","disabled")}else{if(E.is(".has-or-field")){E.removeClass("has-or-field");E.find(".input-value, .select-operator").removeAttr("disabled")}}c[k++]={field:K,operator:B,value:J,mayOrValue:A,mayOrField:x,useOrValue:s,useOrField:i,isOrGroup:w,checkbox:I};if(x||A){h=true}q+=","+K+"~"+B+"~"+J+",";m+=","+K+B+J});if(f.length>0){var d=null;t.each(function(){var i=$(this);var s=0;i.find("option").each(function(){var x=$(this);var w=x.attr("data-templates");if(typeof w!="undefined"&&w!="*"){InputfieldSelector.enableOption(x);var y=0;for(p=0;p-1){y++}}if(y){InputfieldSelector.enableOption(x)}else{if(!x.is(":selected")){InputfieldSelector.disableOption(x)}s++}}});if(s>0&&!i.parent().is(".selector-template-row")){i.find("option[disabled=disabled]").remove()}})}m="";for(k=0;k0){m+=", "}for(var p=0;p0&&m!=InputfieldSelector.selector){if(!j.is(".selector-preview-disabled")){j.html(""+e+m+"");j.fadeIn()}var u=j.siblings(".selector-counter");if(u.length>0&&!u.is(".selector-counter-disabled")){u.html(InputfieldSelector.spinner).fadeIn("fast");$.post("./?InputfieldSelector=test&name="+o.attr("name"),{selector:m},function(i){u.hide();u.html(i);u.show()})}}if(o.val()!=m){o.val(m);if(m.length==0){j.hide();j.siblings(".selector-counter").html("")}o.change()}InputfieldSelector.selector=m;var a=l.find(".or-notes");if(h){a.fadeIn()}else{a.hide()}}};$(document).ready(function(){InputfieldSelector.init()}); \ No newline at end of file diff --git a/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.module b/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.module index 11416c1e..fe8638fc 100644 --- a/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.module +++ b/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.module @@ -492,8 +492,7 @@ class InputfieldSelector extends Inputfield implements ConfigurableModule { 'label' => $this->_('Custom (field=value)'), 'operators' => array(), 'placeholder' => $this->_('field=value'), - ), - + ), //'parent' => $this->_('parent'), ); @@ -1125,12 +1124,12 @@ class InputfieldSelector extends Inputfield implements ConfigurableModule { $options[$item->id] = $inputfield->getPageLabel($item); // $item->get('title|name'); } if(count($options) < 2 - && ($field->parent_id || $field->template_id) - && ($field->findPagesCode || $field->findPagesSelector)) { + && ($field->get('parent_id') || $field->get('template_id')) + && ($field->get('findPagesCode') || $field->get('findPagesSelector'))) { // see if we can locate options purely with the parent or template $findSelector = array("include=unpublished, limit=500, sort=title, sort=name, "); - if($field->parent_id) $findSelector[] = "parent_id=" . (int) $field->parent_id; - if($field->template_id) $findSelector[] = "templates_id=" . (int) $field->template_id; + if($field->get('parent_id')) $findSelector[] = "parent_id=" . (int) $field->get('parent_id'); + if($field->get('template_id')) $findSelector[] = "templates_id=" . (int) $field->get('template_id'); foreach($this->wire('pages')->find(implode(', ', $findSelector)) as $item) { $options[$item->id] = $inputfield->getPageLabel($item); // $item->get('title|name'); } @@ -1400,35 +1399,35 @@ class InputfieldSelector extends Inputfield implements ConfigurableModule { $hasPageListSelect = strpos($field->get('inputfield'), 'PageListSelect') !== false; // determine autocomplete state based on field settings and quantity of pages involved - if($field->findPagesSelector) { + if($field->get('findPagesSelector')) { // user-specified selector determines which pages match - $selector = trim($field->findPagesSelector, ', '); + $selector = trim($field->get('findPagesSelector'), ', '); if(strpos($selector, 'page.') !== false) { // remove page.something impossible reference, if present $selector = preg_replace('/[_a-zA-Z0-9]+[=<>!]+page\.[_a-zA-Z0-9]+[\s,]*/', '', $selector); //$selector = preg_replace('/(^|,)\s*page\.[_a-zA-Z0-9][=<>!]+[^,]*/', '', $selector); } - if($field->parent_id) $selector .= ",has_parent=" . (int) $field->parent_id; - } else if($field->parent_id) { + if($field->get('parent_id')) $selector .= ",has_parent=" . (int) $field->get('parent_id'); + } else if($field->get('parent_id')) { if($hasPageListSelect) { - $selector = "has_parent=" . (int) $field->parent_id; + $selector = "has_parent=" . (int) $field->get('parent_id'); } else { - $selector = "parent_id=" . (int) $field->parent_id; + $selector = "parent_id=" . (int) $field->get('parent_id'); } } - if($field->template_id) { + if($field->get('template_id')) { $selector .= ",templates_id="; - if(is_array($field->template_id)) { - if(count($field->template_id)) $selector .= implode('|', $field->template_id); + if(is_array($field->get('template_id'))) { + if(count($field->get('template_id'))) $selector .= implode('|', $field->get('template_id')); } else { - $selector .= (int) $field->template_id; + $selector .= (int) $field->get('template_id'); } } if(empty($selector)) { // if it's using a runtime code to determine, then we can't use autocomplete - if($field->findPagesCode) return ''; + if($field->get('findPagesCode')) return ''; // otherwise just populate a selector that can match anything $selector = "id>0"; } @@ -1717,8 +1716,8 @@ class InputfieldSelector extends Inputfield implements ConfigurableModule { // render a row for each value in the selector (usually 1) foreach($values as $valueNum => $value) { - if($valueNum > 0) $rowClass .= " has-or-value"; - if($fieldNum > 0 || $valueNum > 0) $orChecked = true; + if($valueNum > 0 || $quote == '(') $rowClass .= " has-or-value"; + if($fieldNum > 0 || $valueNum > 0 || $quote == '(') $orChecked = true; if(!strlen($value) && $quote) $value = "$quote{$value}$quote"; $operator = $selector->operator; // convert to not operator when finding a not selector