12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /**
- * @file
- * Enhancements for select list configuration options.
- */
- (function ($) {
- "use strict";
- Drupal.behaviors.webformSelectLoadOptions = {};
- Drupal.behaviors.webformSelectLoadOptions.attach = function (context) {
- $('#edit-extra-options-source', context).change(function () {
- var url = Drupal.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 {
- var $element = $('#' + result.elementId);
- $element.webformProp('readonly', result.options);
- if (result.options) {
- $element.val(result.options);
- }
- }
- }
- /**
- * Make a prop shim for jQuery < 1.9.
- */
- $.fn.webformProp = $.fn.webformProp || function (name, value) {
- if (value) {
- return $.fn.prop ? this.prop(name, true) : this.attr(name, true);
- }
- else {
- return $.fn.prop ? this.prop(name, false) : this.removeAttr(name);
- }
- };
- })(jQuery);
|