Mercurial > hg > rr-repo
diff sites/all/modules/webform/js/select-admin.js @ 0:ff03f76ab3fe
initial version
author | danieleb <danielebarchiesi@me.com> |
---|---|
date | Wed, 21 Aug 2013 18:51:11 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sites/all/modules/webform/js/select-admin.js Wed Aug 21 18:51:11 2013 +0100 @@ -0,0 +1,56 @@ + +/** + * @file + * Enhancements for select list configuration options. + */ + +(function ($) { + +Drupal.behaviors.webformSelectLoadOptions = {}; +Drupal.behaviors.webformSelectLoadOptions.attach = function(context) { + settings = Drupal.settings; + + $('#edit-extra-options-source', context).change(function() { + var url = settings.webform.selectOptionsUrl + '/' + this.value; + $.ajax({ + url: url, + success: Drupal.webform.selectOptionsLoad, + dataType: 'json' + }); + }); +} + +Drupal.webform = Drupal.webform || {}; + +Drupal.webform.selectOptionsOriginal = false; +Drupal.webform.selectOptionsLoad = function(result) { + if (Drupal.optionsElement) { + if (result.options) { + // Save the current select options the first time a new list is chosen. + if (Drupal.webform.selectOptionsOriginal === false) { + Drupal.webform.selectOptionsOriginal = $(Drupal.optionElements[result.elementId].manualOptionsElement).val(); + } + $(Drupal.optionElements[result.elementId].manualOptionsElement).val(result.options); + Drupal.optionElements[result.elementId].disable(); + Drupal.optionElements[result.elementId].updateWidgetElements(); + } + else { + Drupal.optionElements[result.elementId].enable(); + if (Drupal.webform.selectOptionsOriginal) { + $(Drupal.optionElements[result.elementId].manualOptionsElement).val(Drupal.webform.selectOptionsOriginal); + Drupal.optionElements[result.elementId].updateWidgetElements(); + Drupal.webform.selectOptionsOriginal = false; + } + } + } + else { + if (result.options) { + $('#' + result.elementId).val(result.options).attr('readonly', 'readonly'); + } + else { + $('#' + result.elementId).attr('readonly', ''); + } + } +} + +})(jQuery);