diff --git a/wire/core/Fuel.php b/wire/core/Fuel.php
index 4f804471..4e7a2404 100644
--- a/wire/core/Fuel.php
+++ b/wire/core/Fuel.php
@@ -36,6 +36,7 @@
* @property Languages $languages If LanguageSupport installed
* @property Config $config
* @property Fuel $fuel
+ * @property WireProfilerInterface $profiler
*
*/
class Fuel implements \IteratorAggregate {
@@ -56,6 +57,16 @@ class Fuel implements \IteratorAggregate {
*/
protected $lock = array();
+ /**
+ * API vars that require specific interfaces
+ *
+ * @var array
+ *
+ */
+ protected $requiredInterfaces = array(
+ 'profiler' => 'WireProfilerInterface'
+ );
+
/**
* @param string $key API variable name to set - should be valid PHP variable name.
* @param object|mixed $value Value for the API variable.
@@ -68,6 +79,13 @@ class Fuel implements \IteratorAggregate {
if(isset($this->lock[$key]) && $value !== $this->data[$key]) {
throw new WireException("API variable '$key' is locked and may not be set again");
}
+ if(isset($this->requiredInterfaces[$key])) {
+ $requiredInterface = $this->requiredInterfaces[$key];
+ $hasInterfaces = wireClassImplements($value, false);
+ if(!isset($hasInterfaces[$requiredInterface]) && !in_array($requiredInterface, $hasInterfaces)) {
+ throw new WireException("API variable '$key' must implement interface: $requiredInterface");
+ }
+ }
$this->data[$key] = $value;
if($lock) $this->lock[$key] = true;
return $this;
diff --git a/wire/core/Interfaces.php b/wire/core/Interfaces.php
index 06af386a..e732e6d2 100644
--- a/wire/core/Interfaces.php
+++ b/wire/core/Interfaces.php
@@ -443,6 +443,43 @@ interface LanguagesValueInterface {
}
+/**
+ * Interface for tracking runtime events
+ *
+ */
+interface WireProfilerInterface {
+
+ /**
+ * Start profiling an event
+ *
+ * Return the event array to be used for stop profiling
+ *
+ * @param string $name Name of event in format "method" or "method.id" or "something"
+ * @param Wire|object|string|null Source of event (may be object instance)
+ * @param array $data
+ * @return mixed Event to be used for stop call
+ *
+ */
+ public function start($name, $source = null, $data = array());
+
+ /**
+ * Stop profiling an event
+ *
+ * @param array|object|string $event Event returned by start()
+ * @return void
+ *
+ */
+ public function stop($event);
+
+ /**
+ * End of request maintenance
+ *
+ * @return void
+ *
+ */
+ public function maintenance();
+}
+
/**
* Inputfields that implement this interface always have a $value attribute that is an array
*
diff --git a/wire/core/Modules.php b/wire/core/Modules.php
index 3b667fc6..6c7bc5b4 100644
--- a/wire/core/Modules.php
+++ b/wire/core/Modules.php
@@ -65,7 +65,13 @@ class Modules extends WireArray {
* When combined with flagsAutoload, indicates that the module's autoload state is temporarily disabled
*
*/
- const flagsDisabled = 16;
+ const flagsDisabled = 16;
+
+ /**
+ * Indicates module that maintains a configurable interface but with no interactive Inputfields
+ *
+ */
+ const flagsNoUserConfig = 32;
/**
* Filename for module info cache file
@@ -3521,60 +3527,88 @@ class Modules extends WireArray {
// check for file-based config
$file = $this->isConfigurable($moduleName, "file");
- if(!$file || !is_string($file) || !is_file($file)) return $form;
-
- $config = null;
- $ns = $this->getModuleNamespace($moduleName);
- $configClass = $ns . $moduleName . "Config";
- if(!class_exists($configClass)) {
- $configFile = $this->compile($moduleName, $file, $ns);
- if($configFile) {
- /** @noinspection PhpIncludeInspection */
- include_once($configFile);
- }
- }
- $configModule = null;
-
- if(wireClassExists($configClass)) {
- // file contains a ModuleNameConfig class
- $configModule = $this->wire(new $configClass());
-
+ if(!$file || !is_string($file) || !is_file($file)) {
+ // config is not file-based
} else {
- if(is_null($config)) {
+ // file-based config
+ $config = null;
+ $ns = $this->getModuleNamespace($moduleName);
+ $configClass = $ns . $moduleName . "Config";
+ if(!class_exists($configClass)) {
$configFile = $this->compile($moduleName, $file, $ns);
- // if(!$configFile) $configFile = $compile ? $this->wire('files')->compile($file) : $file;
if($configFile) {
/** @noinspection PhpIncludeInspection */
- include($configFile); // in case of previous include_once
+ include_once($configFile);
}
}
- if(is_array($config)) {
- // file contains a $config array
- $configModule = $this->wire(new ModuleConfig());
- $configModule->add($config);
+ $configModule = null;
+
+ if(wireClassExists($configClass)) {
+ // file contains a ModuleNameConfig class
+ $configModule = $this->wire(new $configClass());
+
+ } else {
+ if(is_null($config)) {
+ $configFile = $this->compile($moduleName, $file, $ns);
+ // if(!$configFile) $configFile = $compile ? $this->wire('files')->compile($file) : $file;
+ if($configFile) {
+ /** @noinspection PhpIncludeInspection */
+ include($configFile); // in case of previous include_once
+ }
+ }
+ if(is_array($config)) {
+ // file contains a $config array
+ $configModule = $this->wire(new ModuleConfig());
+ $configModule->add($config);
+ }
}
- }
+
+ if($configModule && $configModule instanceof ModuleConfig) {
+ $defaults = $configModule->getDefaults();
+ $data = array_merge($defaults, $data);
+ $configModule->setArray($data);
+ $fields = $configModule->getInputfields();
+ if($fields instanceof InputfieldWrapper) {
+ foreach($fields as $field) {
+ $form->append($field);
+ }
+ foreach($data as $key => $value) {
+ $f = $form->getChildByName($key);
+ if(!$f) continue;
+ if($f instanceof InputfieldCheckbox && $value) {
+ $f->attr('checked', 'checked');
+ } else {
+ $f->attr('value', $value);
+ }
+ }
+ } else {
+ $this->error("$configModule.getInputfields() did not return InputfieldWrapper");
+ }
+ }
+ } // file-based config
- if($configModule && $configModule instanceof ModuleConfig) {
- $defaults = $configModule->getDefaults();
- $data = array_merge($defaults, $data);
- $configModule->setArray($data);
- $fields = $configModule->getInputfields();
- if($fields instanceof InputfieldWrapper) {
- foreach($fields as $field) {
- $form->append($field);
- }
- foreach($data as $key => $value) {
- $f = $form->getChildByName($key);
- if(!$f) continue;
- if($f instanceof InputfieldCheckbox && $value) {
- $f->attr('checked', 'checked');
- } else {
- $f->attr('value', $value);
+ if($form) {
+ // determine how many visible Inputfields there are in the module configuration
+ // for assignment or removal of flagsNoUserConfig flag when applicable
+ $numVisible = 0;
+ foreach($form->getAll() as $inputfield) {
+ if($inputfield instanceof InputfieldHidden || $inputfield instanceof InputfieldWrapper) continue;
+ $numVisible++;
+ }
+ $flags = $this->getFlags($moduleName);
+ if($numVisible) {
+ if($flags & self::flagsNoUserConfig) {
+ $info = $this->getModuleInfoVerbose($moduleName);
+ if(empty($info['addFlag']) || !($info['addFlag'] & self::flagsNoUserConfig)) {
+ $this->setFlag($moduleName, self::flagsNoUserConfig, false); // remove flag
}
}
} else {
- $this->error("$configModule.getInputfields() did not return InputfieldWrapper");
+ if(!($flags & self::flagsNoUserConfig)) {
+ if(empty($info['removeFlag']) || !($info['removeFlag'] & self::flagsNoUserConfig)) {
+ $this->setFlag($moduleName, self::flagsNoUserConfig, true); // add flag
+ }
+ }
}
}
@@ -4298,6 +4332,23 @@ class Modules extends WireArray {
if($flags & self::flagsSingular) $this->setFlag($moduleID, self::flagsSingular, false);
}
+ // handle addFlag and removeFlag moduleInfo properties
+ foreach(array(0 => 'removeFlag', 1 => 'addFlag') as $add => $flagsType) {
+ if(empty($info[$flagsType])) continue;
+ if($flags & $info[$flagsType]) {
+ // already has the flags
+ if(!$add) {
+ // remove the flag(s)
+ $this->setFlag($moduleID, $info[$flagsType], false);
+ }
+ } else {
+ // does not have the flags
+ if($add) {
+ // add the flag(s)
+ $this->setFlag($moduleID, $info[$flagsType], true);
+ }
+ }
+ }
}
/**
diff --git a/wire/core/ProcessWire.php b/wire/core/ProcessWire.php
index 9a97a40f..6f023c67 100644
--- a/wire/core/ProcessWire.php
+++ b/wire/core/ProcessWire.php
@@ -430,9 +430,11 @@ class ProcessWire extends Wire {
$config = $this->wire('config');
$session = $this->wire('session');
$cache = $this->wire('cache');
+ $profiler = $this->wire('profiler');
if($session) $session->maintenance();
if($cache) $cache->maintenance();
+ if($profiler) $profiler->maintenance();
if($config->templateCompile) {
$compiler = new FileCompiler($this->wire('config')->paths->templates);
@@ -443,6 +445,7 @@ class ProcessWire extends Wire {
$compiler = new FileCompiler($this->wire('config')->paths->siteModules);
$compiler->maintenance();
}
+
}
/**
diff --git a/wire/core/Session.php b/wire/core/Session.php
index 15eecc5f..8721d874 100644
--- a/wire/core/Session.php
+++ b/wire/core/Session.php
@@ -954,6 +954,7 @@ class Session extends Wire implements \IteratorAggregate {
if(!strpos($url, 'modal=')) $url .= (strpos($url, '?') !== false ? '&' : '?') . 'modal=1';
}
}
+ $this->wire()->setStatus(ProcessWire::statusFinished);
if($http301) header("HTTP/1.1 301 Moved Permanently");
header("Location: $url");
exit(0);
diff --git a/wire/core/WireInput.php b/wire/core/WireInput.php
index fda85e79..d1b6a494 100644
--- a/wire/core/WireInput.php
+++ b/wire/core/WireInput.php
@@ -38,13 +38,59 @@
*/
class WireInput extends Wire {
+ /**
+ * @var WireInputVars|null
+ *
+ */
protected $getVars = null;
- protected $postVars = null;
- protected $cookieVars = null;
- protected $whitelist = null;
- protected $urlSegments = array();
- protected $pageNum = 1;
+ /**
+ * @var WireInputVars|null
+ *
+ */
+ protected $postVars = null;
+
+ /**
+ * @var WireInputVars|null
+ *
+ */
+ protected $cookieVars = null;
+
+ /**
+ * @var WireInputVars|null
+ *
+ */
+ protected $whitelist = null;
+
+ /**
+ * @var array
+ *
+ */
+ protected $urlSegments = array();
+
+ /**
+ * @var int
+ *
+ */
+ protected $pageNum = 1;
+
+ /**
+ * @var array
+ *
+ */
+ protected $requestMethods = array(
+ 'GET' => 'GET',
+ 'POST' => 'POST',
+ 'HEAD' => 'HEAD',
+ 'PUT' => 'PUT',
+ 'DELETE' => 'DELETE',
+ 'OPTIONS' => 'OPTIONS',
+ );
+
+ /**
+ * Construct
+ *
+ */
public function __construct() {
$this->useFuel(false);
$this->unregisterGLOBALS();
@@ -537,6 +583,22 @@ class WireInput extends Wire {
return $this->wire('config')->https ? 'https' : 'http';
}
+ /**
+ * Return the current request method (i.e. GET, POST) or blank if not known
+ *
+ * @return string
+ *
+ */
+ public function requestMethod() {
+ if(isset($_SERVER['REQUEST_METHOD'])) {
+ $m = strtoupper($_SERVER['REQUEST_METHOD']);
+ $requestMethod = isset($this->requestMethods[$m]) ? $this->requestMethods[$m] : '';
+ } else {
+ $requestMethod = '';
+ }
+ return $requestMethod;
+ }
+
/**
* Emulate register globals OFF
*
diff --git a/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.module b/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.module
index 12826bb1..11416c1e 100644
--- a/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.module
+++ b/wire/modules/Inputfield/InputfieldSelector/InputfieldSelector.module
@@ -63,6 +63,7 @@ class InputfieldSelector extends Inputfield implements ConfigurableModule {
'summary' => 'Build a page finding selector visually.',
'author' => 'Avoine + ProcessWire',
'autoload' => "template=admin",
+ 'addFlag' => Modules::flagsNoUserConfig
);
}
diff --git a/wire/modules/LanguageSupport/LanguageSupport.module b/wire/modules/LanguageSupport/LanguageSupport.module
index 4d623979..5ae64196 100644
--- a/wire/modules/LanguageSupport/LanguageSupport.module
+++ b/wire/modules/LanguageSupport/LanguageSupport.module
@@ -32,7 +32,8 @@ class LanguageSupport extends WireData implements Module, ConfigurableModule {
'installs' => array(
'ProcessLanguage',
'ProcessLanguageTranslator',
- )
+ ),
+ 'addFlag' => Modules::flagsNoUserConfig
);
}
diff --git a/wire/modules/Process/ProcessField/ProcessField.module b/wire/modules/Process/ProcessField/ProcessField.module
index 87ac1e7e..35649fca 100644
--- a/wire/modules/Process/ProcessField/ProcessField.module
+++ b/wire/modules/Process/ProcessField/ProcessField.module
@@ -26,6 +26,7 @@ class ProcessField extends Process implements ConfigurableModule {
'permission' => 'field-admin', // add this permission if you want this Process available for roles other than Superuser
'icon' => 'cube',
'useNavJSON' => true,
+ 'addFlag' => Modules::flagsNoUserConfig
);
}
diff --git a/wire/modules/Process/ProcessModule/ProcessModule.js b/wire/modules/Process/ProcessModule/ProcessModule.js
index 20e79fc4..2b44bda6 100644
--- a/wire/modules/Process/ProcessModule/ProcessModule.js
+++ b/wire/modules/Process/ProcessModule/ProcessModule.js
@@ -21,10 +21,10 @@ $(document).ready(function() {
$("button.ProcessModuleSettings").click(function() {
var $a = $(this).parents('tr').find('.ConfigurableModule').parent('a');
- window.location.href = $a.attr('href');
+ window.location.href = $a.attr('href') + '&collapse_info=1';
});
- if($('#modules_form').size() > 0) {
+ if($('#modules_form').length > 0) {
$('#modules_form').WireTabs({
items: $(".Inputfields li.WireTab"),
rememberTabs: true
diff --git a/wire/modules/Process/ProcessModule/ProcessModule.min.js b/wire/modules/Process/ProcessModule/ProcessModule.min.js
index 9cad5060..4f52b145 100644
--- a/wire/modules/Process/ProcessModule/ProcessModule.min.js
+++ b/wire/modules/Process/ProcessModule/ProcessModule.min.js
@@ -1 +1 @@
-$(document).ready(function(){$(".not_installed").parent("a").css("opacity",0.6).click(function(){var b=$(this).children(".not_installed").attr("data-name");var d=$(".install_"+b+":visible");var c=d.attr("disabled");if(d.size()){d.effect("highlight",1000)}else{var a=$(this).css("color");$(this).closest("tr").find(".requires").attr("data-color",$(this).css("color")).css("color",a).effect("highlight",1000)}return false});$("button.ProcessModuleSettings").click(function(){var a=$(this).parents("tr").find(".ConfigurableModule").parent("a");window.location.href=a.attr("href")});if($("#modules_form").size()>0){$("#modules_form").WireTabs({items:$(".Inputfields li.WireTab"),rememberTabs:true})}$("select.modules_section_select").change(function(){var b=$(this).val();var a=$(this).parent("p").siblings(".modules_section");if(b==""){a.show()}else{a.hide();a.filter(".modules_"+b).show()}document.cookie=$(this).attr("name")+"="+b;return true}).change();$(document).on("click","#head_button a",function(){document.cookie="WireTabs=tab_new_modules";return true});$("#Inputfield_new_seconds").change(function(){$(this).parents("form").submit()});$("#wrap_upload_module").removeClass("InputfieldItemList")});
\ No newline at end of file
+$(document).ready(function(){$(".not_installed").parent("a").css("opacity",0.6).click(function(){var b=$(this).children(".not_installed").attr("data-name");var d=$(".install_"+b+":visible");var c=d.attr("disabled");if(d.size()){d.effect("highlight",1000)}else{var a=$(this).css("color");$(this).closest("tr").find(".requires").attr("data-color",$(this).css("color")).css("color",a).effect("highlight",1000)}return false});$("button.ProcessModuleSettings").click(function(){var a=$(this).parents("tr").find(".ConfigurableModule").parent("a");window.location.href=a.attr("href")+"&collapse_info=1"});if($("#modules_form").length>0){$("#modules_form").WireTabs({items:$(".Inputfields li.WireTab"),rememberTabs:true})}$("select.modules_section_select").change(function(){var b=$(this).val();var a=$(this).parent("p").siblings(".modules_section");if(b==""){a.show()}else{a.hide();a.filter(".modules_"+b).show()}document.cookie=$(this).attr("name")+"="+b;return true}).change();$(document).on("click","#head_button a",function(){document.cookie="WireTabs=tab_new_modules";return true});$("#Inputfield_new_seconds").change(function(){$(this).parents("form").submit()});$("#wrap_upload_module").removeClass("InputfieldItemList")});
\ No newline at end of file
diff --git a/wire/modules/Process/ProcessModule/ProcessModule.module b/wire/modules/Process/ProcessModule/ProcessModule.module
index 7c4de3d3..26dd2fcb 100644
--- a/wire/modules/Process/ProcessModule/ProcessModule.module
+++ b/wire/modules/Process/ProcessModule/ProcessModule.module
@@ -188,10 +188,18 @@ class ProcessModule extends Process {
sort($moduleNames);
foreach($moduleNames as $moduleName) {
+
$info = $this->wire('modules')->getModuleInfoVerbose($moduleName);
+
if($site && $info['core']) continue;
if($core && !$info['core']) continue;
- if($configurable && (!$info['configurable'] || !$info['installed'])) continue;
+
+ if($configurable) {
+ if(!$info['configurable'] || !$info['installed']) continue;
+ $flags = $this->wire('modules')->getFlags($moduleName);
+ if($flags & Modules::flagsNoUserConfig) continue;
+ }
+
if($install) {
// exclude already installed modules
if($info['installed']) continue;
@@ -206,6 +214,7 @@ class ProcessModule extends Process {
$url = $install ? "installConfirm" : "edit";
$url .= "?name=$info[name]";
+ if($configurable) $url .= "&collapse_info=1";
$data['list'][$_label] = array(
'url' => $url,
@@ -366,7 +375,12 @@ class ProcessModule extends Process {
$siteModulesArray[$name] = $installed;
}
- if($info['configurable'] && $info['installed']) $configurableArray[$name] = $installed;
+ if($info['configurable'] && $info['installed']) {
+ $flags = $this->modules->getFlags($name);
+ if(!($flags & Modules::flagsNoUserConfig)) {
+ $configurableArray[$name] = $installed;
+ }
+ }
}
$form = $this->modules->get('InputfieldForm');
@@ -713,10 +727,12 @@ class ProcessModule extends Process {
$editUrl = '#';
} else if($configurable) {
-
- $buttons .=
- ""; // Text for 'Settings' button
+ $flags = $this->modules->getFlags($name);
+ if(!($flags & Modules::flagsNoUserConfig)) {
+ $buttons .=
+ ""; // Text for 'Settings' button
+ }
}
if($buttons) $buttons = "$buttons";
@@ -1132,7 +1148,11 @@ class ProcessModule extends Process {
$out = '';
$moduleId = $this->modules->getModuleID($moduleName);
$languages = $this->wire('languages');
- $collapseInfo = $this->wire('input')->get('collapse_info') || $this->wire('input')->get('modal') ? '&collapse_info=1': '';
+ $submitSave = $this->input->post('submit_save_module');
+ $collapseInfo = '';
+ if($submitSave || $this->wire('input')->get('collapse_info') || $this->wire('input')->get('modal')) {
+ $collapseInfo = '&collapse_info=1';
+ }
if(!$moduleId) {
$this->error("Unknown module");
return $this->session->redirect('./');
@@ -1254,7 +1274,6 @@ class ProcessModule extends Process {
}
// check for submitted form
- $submitSave = $this->input->post('submit_save_module');
if($submitSave) {
if(is_null($data)) $data = $this->modules->getModuleConfigData($moduleName);
diff --git a/wire/modules/Process/ProcessPageLister/ProcessPageLister.info.json b/wire/modules/Process/ProcessPageLister/ProcessPageLister.info.json
index ec3ae444..71a12857 100644
--- a/wire/modules/Process/ProcessPageLister/ProcessPageLister.info.json
+++ b/wire/modules/Process/ProcessPageLister/ProcessPageLister.info.json
@@ -10,5 +10,6 @@
"permissions": {
"page-lister": "Use Page Lister"
},
- "useNavJSON": true
+ "useNavJSON": true,
+ "addFlag": 32
}
diff --git a/wire/modules/Process/ProcessPageType/ProcessPageType.module b/wire/modules/Process/ProcessPageType/ProcessPageType.module
index 73d80a85..460fd595 100644
--- a/wire/modules/Process/ProcessPageType/ProcessPageType.module
+++ b/wire/modules/Process/ProcessPageType/ProcessPageType.module
@@ -22,6 +22,7 @@ class ProcessPageType extends Process implements ConfigurableModule, WirePageEdi
'summary' => __('List, Edit and Add pages of a specific type', __FILE__), // getModuleInfo summary
'permanent' => true,
'useNavJSON' => true,
+ 'addFlag' => Modules::flagsNoUserConfig
);
}
diff --git a/wire/modules/Process/ProcessTemplate/ProcessTemplate.js b/wire/modules/Process/ProcessTemplate/ProcessTemplate.js
index d503785c..9d3881ef 100644
--- a/wire/modules/Process/ProcessTemplate/ProcessTemplate.js
+++ b/wire/modules/Process/ProcessTemplate/ProcessTemplate.js
@@ -152,7 +152,7 @@ $(document).ready(function() {
// instantiate the WireTabs
var $templateEdit = $("#ProcessTemplateEdit");
- if($templateEdit.size() > 0) {
+ if($templateEdit.length > 0) {
$templateEdit.find('script').remove();
$templateEdit.WireTabs({
items: $(".Inputfields li.WireTab"),
diff --git a/wire/modules/Process/ProcessTemplate/ProcessTemplate.min.js b/wire/modules/Process/ProcessTemplate/ProcessTemplate.min.js
index 262672d2..abc2bd88 100644
--- a/wire/modules/Process/ProcessTemplate/ProcessTemplate.min.js
+++ b/wire/modules/Process/ProcessTemplate/ProcessTemplate.min.js
@@ -1 +1 @@
-$(document).ready(function(){$("#wrap_filter_system input").click(function(){$(this).parents("form").submit()});$("#filter_field").change(function(){$(this).parents("form").submit()});var a=function(){if($("#redirectLogin_-1:checked").size()>0){$("#wrap_redirectLoginURL").slideDown()}else{$("#wrap_redirectLoginURL").hide()}};var f=function(){var g=["#wrap_redirectLogin","#wrap_guestSearchable"];if($("#roles_37").is(":checked")){$("#wrap_redirectLoginURL").hide();$(g).each(function(i,j){var h=$(j);if(h.is(".InputfieldStateCollapsed")){h.hide()}else{h.slideUp()}});$("input.viewRoles").attr("checked","checked")}else{$(g).each(function(i,j){var h=$(j);if(h.is(":visible")){return}h.slideDown("fast",function(){if(!h.is(".InputfieldStateCollapsed")){return}h.find(".InputfieldStateToggle").click()})});a()}};$("#wrap_useRoles input").click(function(){if($("#useRoles_1:checked").size()>0){$("#wrap_redirectLogin").hide();$("#wrap_guestSearchable").hide();$("#useRolesYes").slideDown();$("#wrap_useRoles > label").click();$("input.viewRoles").attr("checked","checked")}else{$("#useRolesYes").slideUp();$("#accessOverrides:visible").slideUp()}});if($("#useRoles_0:checked").size()>0){$("#useRolesYes").hide();$("#accessOverrides").hide()}$("#roles_37").click(f);$("input.viewRoles:not(#roles_37)").click(function(){var g=$(this);if($("#roles_37").is(":checked")){return false}return true});var d=function(){var h=$("#roles_editor input.editRoles");var g=0;h.each(function(){var j=$(this);if(j.is(":disabled")){return false}var i=$("input.createRoles[value="+j.attr("value")+"]");if(j.is(":checked")){g++;i.removeAttr("disabled")}else{i.removeAttr("checked").attr("disabled","disabled")}});if(g){$("#accessOverrides").slideDown()}else{$("#accessOverrides").hide()}return true};var e=function(){var g=0;$("#roles_editor input.editRoles").each(function(){if(!$(this).is(":disabled")&&$(this).is(":checked")){g++}});$("#roles_editor input.addRoles").each(function(){if(!$(this).is(":disabled")&&$(this).is(":checked")){g++}});g>0?$("#wrap_noInherit").slideDown():$("#wrap_noInherit").hide()};$("#roles_editor input.editRoles").click(d);$("#roles_editor input.editRoles, #roles_editor input.addRoles").click(e);d();e();$("#wrap_redirectLogin input").click(a);var c=function(){$ol=$("#fieldgroup_fields").prev("ol.asmList");$ol.find("span.asmFieldsetIndent").remove();$ol.children("li").children("span.asmListItemLabel").children("a:contains('_END')").each(function(){var h=$(this).text();if(h.substring(h.length-4)!="_END"){return}h=h.substring(0,h.length-4);var j=$(this).parents("li.asmListItem");j.addClass("asmFieldset asmFieldsetEnd");while(1){j=j.prev("li.asmListItem");if(j.size()<1){break}var g=j.children("span.asmListItemLabel");var i=g.text();if(i==h){j.addClass("asmFieldset asmFieldsetStart");break}g.prepend($(''))}})};$("#fieldgroup_fields").change(c).bind("init",c);f();a();var b=$("#ProcessTemplateEdit");if(b.size()>0){b.find("script").remove();b.WireTabs({items:$(".Inputfields li.WireTab"),id:"TemplateEditTabs",skipRememberTabIDs:["WireTabDelete"]})}$("#export_data").click(function(){$(this).select()});$(".import_toggle input[type=radio]").change(function(){var g=$(this).parents("p.import_toggle").next("table");var h=$(this).closest(".InputfieldFieldset");if($(this).is(":checked")&&$(this).val()==0){g.hide();h.addClass("ui-priority-secondary")}else{g.show();h.removeClass("ui-priority-secondary")}}).change();$("#import_form table td:not(:first-child)").each(function(){var g=$(this).html();var h=false;if(g.substring(0,1)=="{"){g="
"+g+"
";g=g.replace(/
/g,"");h=true}if(h){$(this).html(g)}});$("#fieldgroup_fields").change(function(){$("#_fieldgroup_fields_changed").val("changed")})});
\ No newline at end of file
+$(document).ready(function(){$("#wrap_filter_system input").click(function(){$(this).parents("form").submit()});$("#filter_field").change(function(){$(this).parents("form").submit()});var a=function(){if($("#redirectLogin_-1:checked").size()>0){$("#wrap_redirectLoginURL").slideDown()}else{$("#wrap_redirectLoginURL").hide()}};var f=function(){var g=["#wrap_redirectLogin","#wrap_guestSearchable"];if($("#roles_37").is(":checked")){$("#wrap_redirectLoginURL").hide();$(g).each(function(i,j){var h=$(j);if(h.is(".InputfieldStateCollapsed")){h.hide()}else{h.slideUp()}});$("input.viewRoles").attr("checked","checked")}else{$(g).each(function(i,j){var h=$(j);if(h.is(":visible")){return}h.slideDown("fast",function(){if(!h.is(".InputfieldStateCollapsed")){return}h.find(".InputfieldStateToggle").click()})});a()}};$("#wrap_useRoles input").click(function(){if($("#useRoles_1:checked").size()>0){$("#wrap_redirectLogin").hide();$("#wrap_guestSearchable").hide();$("#useRolesYes").slideDown();$("#wrap_useRoles > label").click();$("input.viewRoles").attr("checked","checked")}else{$("#useRolesYes").slideUp();$("#accessOverrides:visible").slideUp()}});if($("#useRoles_0:checked").size()>0){$("#useRolesYes").hide();$("#accessOverrides").hide()}$("#roles_37").click(f);$("input.viewRoles:not(#roles_37)").click(function(){var g=$(this);if($("#roles_37").is(":checked")){return false}return true});var d=function(){var h=$("#roles_editor input.editRoles");var g=0;h.each(function(){var j=$(this);if(j.is(":disabled")){return false}var i=$("input.createRoles[value="+j.attr("value")+"]");if(j.is(":checked")){g++;i.removeAttr("disabled")}else{i.removeAttr("checked").attr("disabled","disabled")}});if(g){$("#accessOverrides").slideDown()}else{$("#accessOverrides").hide()}return true};var e=function(){var g=0;$("#roles_editor input.editRoles").each(function(){if(!$(this).is(":disabled")&&$(this).is(":checked")){g++}});$("#roles_editor input.addRoles").each(function(){if(!$(this).is(":disabled")&&$(this).is(":checked")){g++}});g>0?$("#wrap_noInherit").slideDown():$("#wrap_noInherit").hide()};$("#roles_editor input.editRoles").click(d);$("#roles_editor input.editRoles, #roles_editor input.addRoles").click(e);d();e();$("#wrap_redirectLogin input").click(a);var c=function(){$ol=$("#fieldgroup_fields").prev("ol.asmList");$ol.find("span.asmFieldsetIndent").remove();$ol.children("li").children("span.asmListItemLabel").children("a:contains('_END')").each(function(){var h=$(this).text();if(h.substring(h.length-4)!="_END"){return}h=h.substring(0,h.length-4);var j=$(this).parents("li.asmListItem");j.addClass("asmFieldset asmFieldsetEnd");while(1){j=j.prev("li.asmListItem");if(j.size()<1){break}var g=j.children("span.asmListItemLabel");var i=g.text();if(i==h){j.addClass("asmFieldset asmFieldsetStart");break}g.prepend($(''))}})};$("#fieldgroup_fields").change(c).bind("init",c);f();a();var b=$("#ProcessTemplateEdit");if(b.length>0){b.find("script").remove();b.WireTabs({items:$(".Inputfields li.WireTab"),id:"TemplateEditTabs",skipRememberTabIDs:["WireTabDelete"]})}$("#export_data").click(function(){$(this).select()});$(".import_toggle input[type=radio]").change(function(){var g=$(this).parents("p.import_toggle").next("table");var h=$(this).closest(".InputfieldFieldset");if($(this).is(":checked")&&$(this).val()==0){g.hide();h.addClass("ui-priority-secondary")}else{g.show();h.removeClass("ui-priority-secondary")}}).change();$("#import_form table td:not(:first-child)").each(function(){var g=$(this).html();var h=false;if(g.substring(0,1)=="{"){g=""+g+"
";g=g.replace(/
/g,"");h=true}if(h){$(this).html(g)}});$("#fieldgroup_fields").change(function(){$("#_fieldgroup_fields_changed").val("changed")})});
\ No newline at end of file
diff --git a/wire/templates-admin/scripts/inputfields.js b/wire/templates-admin/scripts/inputfields.js
index ef3a4b45..506d3732 100644
--- a/wire/templates-admin/scripts/inputfields.js
+++ b/wire/templates-admin/scripts/inputfields.js
@@ -1253,7 +1253,7 @@ jQuery(document).ready(function($) {
$(window).resize(windowResized);
$("ul.WireTabs > li > a").click(tabClicked);
- $(document).on('reload', '.Inputfield', function(event) {
+ $(document).on('reload', '.Inputfield', function(event, extraData) {
var $t = $(this);
var $form = $t.closest('form');
var fieldName = $t.attr('id').replace('wrap_Inputfield_', '');
@@ -1265,6 +1265,11 @@ jQuery(document).ready(function($) {
}
url += url.indexOf('?') > -1 ? '&' : '?';
url += 'field=' + fieldName + '&reloadInputfieldAjax=' + fieldName;
+ if(typeof extraData != "undefined") {
+ if(typeof extraData['queryString'] != "undefined") {
+ url += '&' + extraData['queryString'];
+ }
+ }
consoleLog('Inputfield reload: ' + fieldName);
$.get(url, function(data) {
var id = $t.attr('id');
diff --git a/wire/templates-admin/scripts/inputfields.min.js b/wire/templates-admin/scripts/inputfields.min.js
index b8302096..2f4faad9 100644
--- a/wire/templates-admin/scripts/inputfields.min.js
+++ b/wire/templates-admin/scripts/inputfields.min.js
@@ -1 +1 @@
-var InputfieldDebugMode=false;function consoleLog(a){if(InputfieldDebugMode){console.log(a)}}var InputfieldDependenciesProcessing=false;function InputfieldDependencies(d){if(InputfieldDependenciesProcessing){return}if(typeof d=="undefined"){var d=$(".InputfieldForm:not(.InputfieldFormNoDependencies)")}else{if(d.hasClass("InputfieldForm")){if(d.hasClass("InputfieldFormNoDependencies")){return}}else{if(d.closest(".InputfieldFormNoDependencies").length>0){return}}}function h(l){l=jQuery.trim(l);var m=l.substring(0,1);var k=l.substring(l.length-1,l.length);if((m=='"'||m=="'")&&m==k){l=l.substring(1,l.length-1)}return l}function i(k){return g(h(k))}function b(m){var l="";var k=m.indexOf(".");if(k>0){l=m.substring(k+1);m=m.substring(0,k)}return{field:m,subfield:l}}function g(n,l){n=jQuery.trim(n);if(n.length>0&&!jQuery.isNumeric(n)){return n}if(n.length==0){var k=typeof l;if(k!="undefined"){if(k=="integer"){return 0}if(k=="float"){return 0}return n}else{return n}}var o=n.indexOf(".");var m=n.lastIndexOf(".");if(o==-1&&/^-?\d+$/.test(n)){return parseInt(n)}if(m>-1&&o!=m){return n}if(/^-?[\d.]+$/.test(n)){return parseFloat(n)}return n}function c(n,l,m,o){var k=0;switch(l){case"=":if(m==o){k++}break;case"!=":if(m!=o){k++}break;case">":if(m>o){k++}break;case"<":if(m=":if(m>=o){k++}break;case"<=":if(m<=o){k++}break;case"*=":case"%=":if(m.indexOf(o)>-1){k++}break}consoleLog("Field "+n+" - Current value: "+m);consoleLog("Field "+n+" - Matched? "+(k>0?"YES":"NO"));return k}function e(p,s,m){var w=null;var z;consoleLog("getCheckboxFieldAndValue(see-next-line, "+s+", "+m+")");consoleLog(p);if(m=="count"||m=="count-checkbox"){consoleLog("Using count checkbox condition");w=$("#wrap_Inputfield_"+s+" :input");if(w.length){z=$("#wrap_Inputfield_"+s+" :checked").length;p.subfield="count-checkbox";return{field:w,value:z,condition:p}}return null}consoleLog("Using checkbox value or label comparison option");z=[];for(var q=0;q0){consoleLog("Subfield: "+E.subfield)}consoleLog("Operator: "+E.operator);consoleLog("Required value: "+E.value)}var s=0;for(var q=0;q=G){break}}consoleLog("----");if(E.type=="show"){if(s>=G){}else{J=false}}else{if(E.type=="required"){if(s>0){w++}else{u++}}}}var t=w>0&&u==0;if(J){consoleLog('Determined that field "'+C+'" should be visible.');if(y.is(".InputfieldStateHidden")){y.removeClass("InputfieldStateHidden").fadeIn();o++;consoleLog("Field is now visible.")}else{consoleLog("Field is already visible.")}}else{consoleLog('Determined that field "'+C+'" should be hidden.');if(!y.is(".InputfieldStateHidden")){y.addClass("InputfieldStateHidden").hide();consoleLog("Field is now hidden.");o++}else{consoleLog("Field is already hidden.")}if(t){consoleLog("Field is required but cancelling that since it is not visible.");t=false}}if(t&&w>0){consoleLog('Determined that field "'+C+'" should be required.');y.addClass("InputfieldStateRequired").find(":input:visible[type!=hidden]").addClass("required")}else{if(!t&&u>0){consoleLog('Determined that field "'+C+'" should not be required.');y.removeClass("InputfieldStateRequired").find(":input.required").removeClass("required")}}if(o>0){consoleLog(o+" visibility changes were made.");InputfieldColumnWidths();$(window).resize()}InputfieldDependenciesProcessing=false}function a(z,m,s){var A=s.attr("data-"+z+"-if");if(!A||A.length<1){return m}A=$("").html(A).text();consoleLog("-------------------------------------------------------------------");consoleLog('Analyzing "'+z+'" selector: '+A);var v=A.match(/(^|,)([^,]+)/g);for(var w=0;w=|<|>|%=)([^,]+),?$/);if(!o){continue}var k=o[1];var q=o[2];var x=o[3];var r="";var t=[];var l=[];if(k.indexOf("|")>-1){consoleLog("OR field dependency: "+k);t=k.split("|")}else{t=[k]}var D=b(k);k=D.field;r=D.subfield;if(InputfieldDebugMode){consoleLog("Field: "+k);if(r.length){consoleLog("Subfield: "+r)}consoleLog("Operator: "+q);consoleLog("value: "+x)}if(x.indexOf("|")>-1){consoleLog("OR value dependency: "+x);l=x.split("|");for(var B=0;B> "+p+" ("+n+")");if(n==p){return}if(m.hasClass("InputfieldStateCollapsed")){return}var q=p-n;if(q<0){q=0}var r=m.children(".InputfieldContent, .ui-widget-content");if(q==0){}else{consoleLog("Adjusting "+m.attr("id")+" from "+n+" to "+p);var o=$("");r.append(o);r.hide();o.height(q);r.show()}}function a(q){var u=q.nextUntil(".InputfieldColumnWidthFirst",".InputfieldColumnWidth:not(.InputfieldStateHidden)");var p=q.is(".InputfieldStateHidden")?0:h(q);var x=q.is(".InputfieldStateHidden")?null:q;var v=x==null?0:p;var w=u.length;if(q.is(".InputfieldStateHidden")){w--;var r=u.eq(0)}else{var r=q}if(l){r.find(".maxColHeightSpacer").remove();u.find(".maxColHeightSpacer").remove()}var n=100-(w*k);var m=l?d(r):0;u.removeClass("InputfieldColumnWidthFirstTmp");u.each(function(){x=$(this);v=h(x);p+=v;if(l){var y=d(x);if(y>m){m=y}}});if(l){if(InputfieldDebugMode){var s=r.find("label").text();consoleLog("maxColHeight: "+s+" = "+m)}if(m>0){g(r,m);u.each(function(){g($(this),m)})}}if(p0&&vn){consoleLog("Reduce width of row because rowWidth > maxRowWidth ("+p+" > "+n+")");if(!q.is(".InputfieldStateHidden")){u=q.add(u)}p=0;u.each(function(){x=$(this);v=j(x);if(v>0){e(x,v,false)}p+=v});var t=n-p;v+=t;var o=j(x);if(o>0&&v");var r=n.offset();var m;var o=10;var q=0;$("body").append(p.hide());p.css({position:"absolute",top:r.top-(p.height()+5),left:r.left+(n.width()/2)+(p.width()*0.8)}).fadeIn();m=setInterval(function(){if(++q>o||!s.hasClass("InputfieldAjaxLoading")){clearInterval(m);p.fadeOut("normal",function(){p.remove()})}},500)}var k=l.children(".InputfieldContent").children(".renderInputfieldAjax");var f=false;if(!k.length){k=l.children(".renderInputfieldAjax");f=true}var i=k.children("input").attr("value");if(typeof i=="undefined"||i.length<1){return false}var h=null;if(f){var g=$("#_"+l.attr("id"));j(g,l)}else{var g=l.children(".InputfieldHeader");h=$("");h.css("margin-left","0.5em");g.append(h)}l.removeClass("collapsed10 collapsed11").addClass("InputfieldAjaxLoading");$.get(i,function(n){l.removeClass("InputfieldAjaxLoading InputfieldStateCollapsed");k.replaceWith($(n)).hide();k.slideDown();var m=l.find(".Inputfield");if(m.length){m.trigger("reloaded",["InputfieldAjaxLoad"]);InputfieldStates(l);InputfieldColumnWidths()}else{l.trigger("reloaded",["InputfieldAjaxLoad"])}if(l.closest(".InputfieldFormNoDependencies").length==0){InputfieldDependencies(l.parent())}setTimeout(function(){if(h){h.fadeOut("fast",function(){h.remove()})}if(f){g.effect("highlight",500)}else{g.click()}},500)},"html");return true}$(".Inputfield:not(.collapsed9) > .InputfieldHeader, .Inputfield:not(.collapsed9) > .ui-widget-header",a).addClass("InputfieldStateToggle");var b=$(".Inputfields .InputfieldStateCollapsed > .InputfieldHeader i.toggle-icon, .Inputfields .InputfieldStateCollapsed > .ui-widget-header i.toggle-icon",a);b.toggleClass(b.attr("data-to"));if(typeof ProcessWire!="undefined"){var d=ProcessWire.config}if(typeof d!=="undefined"&&d.debug){$("label.InputfieldHeader > i.toggle-icon",a).hover(function(){var f=$(this).parent("label");if(f.length==0){return}var h=f.attr("for").replace(/^Inputfield_/,"");if(h.length){var g=$(" "+h+" ");g.css("float","right");f.append(g)}},function(){var f=$(this).parent("label");if(f.length==0){return}f.find(".InputfieldNameTip").remove()})}if(e){return}$(document).on("wiretabclick",function(h,g,f){if(g.hasClass("collapsed10")){c(g)}});$(document).on("click",".InputfieldStateToggle, .toggle-icon",function(){var m=$(this);var l=m.closest(".Inputfield");var k=m.hasClass("toggle-icon");var h=k?m:l.children(".InputfieldHeader, .ui-widget-header").find(".toggle-icon");var i=l.hasClass("InputfieldStateCollapsed");var j=l.hasClass("InputfieldStateWasCollapsed");if(l.hasClass("InputfieldAjaxLoading")){return false}if(i&&(l.hasClass("collapsed10")||l.hasClass("collapsed11"))){if(c(l)){return false}}if(i||j||k){l.addClass("InputfieldStateWasCollapsed");l.trigger(i?"openReady":"closeReady");l.toggleClass("InputfieldStateCollapsed",100,function(){if(i){l.trigger("opened");if(l.hasClass("InputfieldColumnWidth")){l.children(".InputfieldContent").show()}if(l.hasClass("InputfieldNoFocus")){return}var o=l.find(":input:visible");if(o.length==1&&!o.is("button")){var n=o.attr("type");if(o.is("textarea")||n=="text"||n=="email"||n=="url"||n=="number"){o.focus()}}}else{l.trigger("closed");if(l.hasClass("InputfieldColumnWidth")){l.children(".InputfieldContent").hide()}}});h.toggleClass(h.attr("data-to"));setTimeout("InputfieldColumnWidths()",500)}else{if(typeof jQuery.ui!="undefined"){var g=h.css("color");var f=l.children(".InputfieldHeader, .ui-widget-header").css("color");h.css("color",f);h.effect("pulsate",300,function(){h.css("color",g)})}if(!l.hasClass("InputfieldNoFocus")){l.find(":input:visible:eq(0)").focus()}}return false});$("#content .InputfieldFormFocusFirst:not(.InputfieldFormNoFocus)").find("input[type=text]:enabled:first:not(.hasDatepicker):not(.InputfieldNoFocus)").each(function(){var f=$(this);if(f.val()){return}if(f.offset().top<$(window).height()){window.setTimeout(function(){if(f.is(":visible")){f.focus()}},250)}});$(document).on("change",".InputfieldFormConfirm :input, .InputfieldFormConfirm .Inputfield",function(){var f=$(this);if(f.hasClass("Inputfield")){if(!f.hasClass("InputfieldIgnoreChanges")){f.addClass("InputfieldStateChanged")}return false}else{if(f.hasClass("InputfieldIgnoreChanges")||f.closest(".InputfieldIgnoreChanges").length){return false}f.closest(".Inputfield").addClass("InputfieldStateChanged")}});$(document).on("submit",".InputfieldFormConfirm",function(){$(this).addClass("InputfieldFormSubmitted")});window.addEventListener("beforeunload",InputfieldFormBeforeUnloadEvent)}function InputfieldIntentions(){$(".InputfieldForm").each(function(){var a=$(this);var b=null;var c=null;a.submit(function(){if(!$(this).hasClass("nosubmit")){return}if(!c){return}var e=null;var d=c.closest(".Inputfields");do{e=d.find("input[type=submit]:visible, button[type=submit]:visible");if(e.length>0){break}d=d.parent().closest(".Inputfields")}while(d.length>0);if(e.length>0){var f=e.eq(0);$("html, body").animate({scrollTop:f.offset().top},"fast");f.focus()}return false}).on("focus","input, select",function(){if(b===null){b=a.find("input[type=submit], button[type=submit]").length}if(b<2){return}a.addClass("nosubmit");c=$(this)}).on("blur","input, select",function(){a.removeClass("nosubmit")})})}var InputfieldWindowResizeQueued=false;function InputfieldWindowResizeActions1(){consoleLog("InputfieldWindowResizeActions1()");$(".Inputfield").trigger("resized")}function InputfieldWindowResizeActions2(){consoleLog("InputfieldWindowResizeActions2()");InputfieldColumnWidths();InputfieldWindowResizeQueued=false}function InputfieldsInit(a){InputfieldStates(a);InputfieldDependencies(a);setTimeout(function(){InputfieldColumnWidths()},100)}jQuery(document).ready(function(b){InputfieldStates();InputfieldDependencies(b(".InputfieldForm:not(.InputfieldFormNoDependencies)"));InputfieldIntentions();setTimeout(function(){InputfieldColumnWidths()},100);var c=function(){if(InputfieldWindowResizeQueued){return}InputfieldWindowResizeQueued=true;setTimeout("InputfieldWindowResizeActions1()",1000);setTimeout("InputfieldWindowResizeActions2()",2000)};var a=function(){if(InputfieldWindowResizeQueued){return}InputfieldWindowResizeQueued=true;setTimeout("InputfieldWindowResizeActions1()",250);setTimeout("InputfieldWindowResizeActions2()",500);return true};b(window).resize(c);b("ul.WireTabs > li > a").click(a);b(document).on("reload",".Inputfield",function(g){var i=b(this);var e=i.closest("form");var h=i.attr("id").replace("wrap_Inputfield_","");var f=e.attr("action");if(h.indexOf("_repeater")>0){var d=i.closest(".InputfieldRepeaterItem").attr("data-page");f=f.replace(/\?id=\d+/,"?id="+d);h=h.replace(/_repeater\d+$/,"")}f+=f.indexOf("?")>-1?"&":"?";f+="field="+h+"&reloadInputfieldAjax="+h;consoleLog("Inputfield reload: "+h);b.get(f,function(k){var l=i.attr("id");var j=b(k).find("#"+l).children(".InputfieldContent");if(!j.length&&l.indexOf("_repeater")>-1){l="wrap_Inputfield_"+h;j=b(k).find("#"+l).children(".InputfieldContent");if(!j.length){console.log("Unable to find #"+i.attr("id")+" in response from "+f)}}i.children(".InputfieldContent").html(j.html());if(typeof jQuery.ui!="undefined"){i.effect("highlight",1000)}i.trigger("reloaded",["reload"])});g.stopPropagation()})});
\ No newline at end of file
+var InputfieldDebugMode=false;function consoleLog(a){if(InputfieldDebugMode){console.log(a)}}var InputfieldDependenciesProcessing=false;function InputfieldDependencies(d){if(InputfieldDependenciesProcessing){return}if(typeof d=="undefined"){var d=$(".InputfieldForm:not(.InputfieldFormNoDependencies)")}else{if(d.hasClass("InputfieldForm")){if(d.hasClass("InputfieldFormNoDependencies")){return}}else{if(d.closest(".InputfieldFormNoDependencies").length>0){return}}}function h(l){l=jQuery.trim(l);var m=l.substring(0,1);var k=l.substring(l.length-1,l.length);if((m=='"'||m=="'")&&m==k){l=l.substring(1,l.length-1)}return l}function i(k){return g(h(k))}function b(m){var l="";var k=m.indexOf(".");if(k>0){l=m.substring(k+1);m=m.substring(0,k)}return{field:m,subfield:l}}function g(n,l){n=jQuery.trim(n);if(n.length>0&&!jQuery.isNumeric(n)){return n}if(n.length==0){var k=typeof l;if(k!="undefined"){if(k=="integer"){return 0}if(k=="float"){return 0}return n}else{return n}}var o=n.indexOf(".");var m=n.lastIndexOf(".");if(o==-1&&/^-?\d+$/.test(n)){return parseInt(n)}if(m>-1&&o!=m){return n}if(/^-?[\d.]+$/.test(n)){return parseFloat(n)}return n}function c(n,l,m,o){var k=0;switch(l){case"=":if(m==o){k++}break;case"!=":if(m!=o){k++}break;case">":if(m>o){k++}break;case"<":if(m=":if(m>=o){k++}break;case"<=":if(m<=o){k++}break;case"*=":case"%=":if(m.indexOf(o)>-1){k++}break}consoleLog("Field "+n+" - Current value: "+m);consoleLog("Field "+n+" - Matched? "+(k>0?"YES":"NO"));return k}function e(p,s,m){var w=null;var z;consoleLog("getCheckboxFieldAndValue(see-next-line, "+s+", "+m+")");consoleLog(p);if(m=="count"||m=="count-checkbox"){consoleLog("Using count checkbox condition");w=$("#wrap_Inputfield_"+s+" :input");if(w.length){z=$("#wrap_Inputfield_"+s+" :checked").length;p.subfield="count-checkbox";return{field:w,value:z,condition:p}}return null}consoleLog("Using checkbox value or label comparison option");z=[];for(var q=0;q0){consoleLog("Subfield: "+E.subfield)}consoleLog("Operator: "+E.operator);consoleLog("Required value: "+E.value)}var s=0;for(var q=0;q=G){break}}consoleLog("----");if(E.type=="show"){if(s>=G){}else{J=false}}else{if(E.type=="required"){if(s>0){w++}else{u++}}}}var t=w>0&&u==0;if(J){consoleLog('Determined that field "'+C+'" should be visible.');if(y.is(".InputfieldStateHidden")){y.removeClass("InputfieldStateHidden").fadeIn();o++;consoleLog("Field is now visible.")}else{consoleLog("Field is already visible.")}}else{consoleLog('Determined that field "'+C+'" should be hidden.');if(!y.is(".InputfieldStateHidden")){y.addClass("InputfieldStateHidden").hide();consoleLog("Field is now hidden.");o++}else{consoleLog("Field is already hidden.")}if(t){consoleLog("Field is required but cancelling that since it is not visible.");t=false}}if(t&&w>0){consoleLog('Determined that field "'+C+'" should be required.');y.addClass("InputfieldStateRequired").find(":input:visible[type!=hidden]").addClass("required")}else{if(!t&&u>0){consoleLog('Determined that field "'+C+'" should not be required.');y.removeClass("InputfieldStateRequired").find(":input.required").removeClass("required")}}if(o>0){consoleLog(o+" visibility changes were made.");InputfieldColumnWidths();$(window).resize()}InputfieldDependenciesProcessing=false}function a(z,m,s){var A=s.attr("data-"+z+"-if");if(!A||A.length<1){return m}A=$("").html(A).text();consoleLog("-------------------------------------------------------------------");consoleLog('Analyzing "'+z+'" selector: '+A);var v=A.match(/(^|,)([^,]+)/g);for(var w=0;w=|<|>|%=)([^,]+),?$/);if(!o){continue}var k=o[1];var q=o[2];var x=o[3];var r="";var t=[];var l=[];if(k.indexOf("|")>-1){consoleLog("OR field dependency: "+k);t=k.split("|")}else{t=[k]}var D=b(k);k=D.field;r=D.subfield;if(InputfieldDebugMode){consoleLog("Field: "+k);if(r.length){consoleLog("Subfield: "+r)}consoleLog("Operator: "+q);consoleLog("value: "+x)}if(x.indexOf("|")>-1){consoleLog("OR value dependency: "+x);l=x.split("|");for(var B=0;B> "+p+" ("+n+")");if(n==p){return}if(m.hasClass("InputfieldStateCollapsed")){return}var q=p-n;if(q<0){q=0}var r=m.children(".InputfieldContent, .ui-widget-content");if(q==0){}else{consoleLog("Adjusting "+m.attr("id")+" from "+n+" to "+p);var o=$("");r.append(o);r.hide();o.height(q);r.show()}}function a(q){var u=q.nextUntil(".InputfieldColumnWidthFirst",".InputfieldColumnWidth:not(.InputfieldStateHidden)");var p=q.is(".InputfieldStateHidden")?0:h(q);var x=q.is(".InputfieldStateHidden")?null:q;var v=x==null?0:p;var w=u.length;if(q.is(".InputfieldStateHidden")){w--;var r=u.eq(0)}else{var r=q}if(l){r.find(".maxColHeightSpacer").remove();u.find(".maxColHeightSpacer").remove()}var n=100-(w*k);var m=l?d(r):0;u.removeClass("InputfieldColumnWidthFirstTmp");u.each(function(){x=$(this);v=h(x);p+=v;if(l){var y=d(x);if(y>m){m=y}}});if(l){if(InputfieldDebugMode){var s=r.find("label").text();consoleLog("maxColHeight: "+s+" = "+m)}if(m>0){g(r,m);u.each(function(){g($(this),m)})}}if(p0&&vn){consoleLog("Reduce width of row because rowWidth > maxRowWidth ("+p+" > "+n+")");if(!q.is(".InputfieldStateHidden")){u=q.add(u)}p=0;u.each(function(){x=$(this);v=j(x);if(v>0){e(x,v,false)}p+=v});var t=n-p;v+=t;var o=j(x);if(o>0&&v");var r=n.offset();var m;var o=10;var q=0;$("body").append(p.hide());p.css({position:"absolute",top:r.top-(p.height()+5),left:r.left+(n.width()/2)+(p.width()*0.8)}).fadeIn();m=setInterval(function(){if(++q>o||!s.hasClass("InputfieldAjaxLoading")){clearInterval(m);p.fadeOut("normal",function(){p.remove()})}},500)}var k=l.children(".InputfieldContent").children(".renderInputfieldAjax");var f=false;if(!k.length){k=l.children(".renderInputfieldAjax");f=true}var i=k.children("input").attr("value");if(typeof i=="undefined"||i.length<1){return false}var h=null;if(f){var g=$("#_"+l.attr("id"));j(g,l)}else{var g=l.children(".InputfieldHeader");h=$("");h.css("margin-left","0.5em");g.append(h)}l.removeClass("collapsed10 collapsed11").addClass("InputfieldAjaxLoading");$.get(i,function(n){l.removeClass("InputfieldAjaxLoading InputfieldStateCollapsed");k.replaceWith($(n)).hide();k.slideDown();var m=l.find(".Inputfield");if(m.length){m.trigger("reloaded",["InputfieldAjaxLoad"]);InputfieldStates(l);InputfieldColumnWidths()}else{l.trigger("reloaded",["InputfieldAjaxLoad"])}if(l.closest(".InputfieldFormNoDependencies").length==0){InputfieldDependencies(l.parent())}setTimeout(function(){if(h){h.fadeOut("fast",function(){h.remove()})}if(f){g.effect("highlight",500)}else{g.click()}},500)},"html");return true}$(".Inputfield:not(.collapsed9) > .InputfieldHeader, .Inputfield:not(.collapsed9) > .ui-widget-header",a).addClass("InputfieldStateToggle");var b=$(".Inputfields .InputfieldStateCollapsed > .InputfieldHeader i.toggle-icon, .Inputfields .InputfieldStateCollapsed > .ui-widget-header i.toggle-icon",a);b.toggleClass(b.attr("data-to"));if(typeof ProcessWire!="undefined"){var d=ProcessWire.config}if(typeof d!=="undefined"&&d.debug){$("label.InputfieldHeader > i.toggle-icon",a).hover(function(){var f=$(this).parent("label");if(f.length==0){return}var h=f.attr("for").replace(/^Inputfield_/,"");if(h.length){var g=$(" "+h+" ");g.css("float","right");f.append(g)}},function(){var f=$(this).parent("label");if(f.length==0){return}f.find(".InputfieldNameTip").remove()})}if(e){return}$(document).on("wiretabclick",function(h,g,f){if(g.hasClass("collapsed10")){c(g)}});$(document).on("click",".InputfieldStateToggle, .toggle-icon",function(){var m=$(this);var l=m.closest(".Inputfield");var k=m.hasClass("toggle-icon");var h=k?m:l.children(".InputfieldHeader, .ui-widget-header").find(".toggle-icon");var i=l.hasClass("InputfieldStateCollapsed");var j=l.hasClass("InputfieldStateWasCollapsed");if(l.hasClass("InputfieldAjaxLoading")){return false}if(i&&(l.hasClass("collapsed10")||l.hasClass("collapsed11"))){if(c(l)){return false}}if(i||j||k){l.addClass("InputfieldStateWasCollapsed");l.trigger(i?"openReady":"closeReady");l.toggleClass("InputfieldStateCollapsed",100,function(){if(i){l.trigger("opened");if(l.hasClass("InputfieldColumnWidth")){l.children(".InputfieldContent").show()}if(l.hasClass("InputfieldNoFocus")){return}var o=l.find(":input:visible");if(o.length==1&&!o.is("button")){var n=o.attr("type");if(o.is("textarea")||n=="text"||n=="email"||n=="url"||n=="number"){o.focus()}}}else{l.trigger("closed");if(l.hasClass("InputfieldColumnWidth")){l.children(".InputfieldContent").hide()}}});h.toggleClass(h.attr("data-to"));setTimeout("InputfieldColumnWidths()",500)}else{if(typeof jQuery.ui!="undefined"){var g=h.css("color");var f=l.children(".InputfieldHeader, .ui-widget-header").css("color");h.css("color",f);h.effect("pulsate",300,function(){h.css("color",g)})}if(!l.hasClass("InputfieldNoFocus")){l.find(":input:visible:eq(0)").focus()}}return false});$("#content .InputfieldFormFocusFirst:not(.InputfieldFormNoFocus)").find("input[type=text]:enabled:first:not(.hasDatepicker):not(.InputfieldNoFocus)").each(function(){var f=$(this);if(f.val()){return}if(f.offset().top<$(window).height()){window.setTimeout(function(){if(f.is(":visible")){f.focus()}},250)}});$(document).on("change",".InputfieldFormConfirm :input, .InputfieldFormConfirm .Inputfield",function(){var f=$(this);if(f.hasClass("Inputfield")){if(!f.hasClass("InputfieldIgnoreChanges")){f.addClass("InputfieldStateChanged")}return false}else{if(f.hasClass("InputfieldIgnoreChanges")||f.closest(".InputfieldIgnoreChanges").length){return false}f.closest(".Inputfield").addClass("InputfieldStateChanged")}});$(document).on("submit",".InputfieldFormConfirm",function(){$(this).addClass("InputfieldFormSubmitted")});window.addEventListener("beforeunload",InputfieldFormBeforeUnloadEvent)}function InputfieldIntentions(){$(".InputfieldForm").each(function(){var a=$(this);var b=null;var c=null;a.submit(function(){if(!$(this).hasClass("nosubmit")){return}if(!c){return}var e=null;var d=c.closest(".Inputfields");do{e=d.find("input[type=submit]:visible, button[type=submit]:visible");if(e.length>0){break}d=d.parent().closest(".Inputfields")}while(d.length>0);if(e.length>0){var f=e.eq(0);$("html, body").animate({scrollTop:f.offset().top},"fast");f.focus()}return false}).on("focus","input, select",function(){if(b===null){b=a.find("input[type=submit], button[type=submit]").length}if(b<2){return}a.addClass("nosubmit");c=$(this)}).on("blur","input, select",function(){a.removeClass("nosubmit")})})}var InputfieldWindowResizeQueued=false;function InputfieldWindowResizeActions1(){consoleLog("InputfieldWindowResizeActions1()");$(".Inputfield").trigger("resized")}function InputfieldWindowResizeActions2(){consoleLog("InputfieldWindowResizeActions2()");InputfieldColumnWidths();InputfieldWindowResizeQueued=false}function InputfieldsInit(a){InputfieldStates(a);InputfieldDependencies(a);setTimeout(function(){InputfieldColumnWidths()},100)}jQuery(document).ready(function(b){InputfieldStates();InputfieldDependencies(b(".InputfieldForm:not(.InputfieldFormNoDependencies)"));InputfieldIntentions();setTimeout(function(){InputfieldColumnWidths()},100);var c=function(){if(InputfieldWindowResizeQueued){return}InputfieldWindowResizeQueued=true;setTimeout("InputfieldWindowResizeActions1()",1000);setTimeout("InputfieldWindowResizeActions2()",2000)};var a=function(){if(InputfieldWindowResizeQueued){return}InputfieldWindowResizeQueued=true;setTimeout("InputfieldWindowResizeActions1()",250);setTimeout("InputfieldWindowResizeActions2()",500);return true};b(window).resize(c);b("ul.WireTabs > li > a").click(a);b(document).on("reload",".Inputfield",function(h,g){var j=b(this);var e=j.closest("form");var i=j.attr("id").replace("wrap_Inputfield_","");var f=e.attr("action");if(i.indexOf("_repeater")>0){var d=j.closest(".InputfieldRepeaterItem").attr("data-page");f=f.replace(/\?id=\d+/,"?id="+d);i=i.replace(/_repeater\d+$/,"")}f+=f.indexOf("?")>-1?"&":"?";f+="field="+i+"&reloadInputfieldAjax="+i;if(typeof g!="undefined"){if(typeof g.queryString!="undefined"){f+="&"+g.queryString}}consoleLog("Inputfield reload: "+i);b.get(f,function(l){var m=j.attr("id");var k=b(l).find("#"+m).children(".InputfieldContent");if(!k.length&&m.indexOf("_repeater")>-1){m="wrap_Inputfield_"+i;k=b(l).find("#"+m).children(".InputfieldContent");if(!k.length){console.log("Unable to find #"+j.attr("id")+" in response from "+f)}}j.children(".InputfieldContent").html(k.html());if(typeof jQuery.ui!="undefined"){j.effect("highlight",1000)}j.trigger("reloaded",["reload"])});h.stopPropagation()})});
\ No newline at end of file