select-admin.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /**
  2. * @file
  3. * Enhancements for select list configuration options.
  4. */
  5. (function ($) {
  6. "use strict";
  7. Drupal.behaviors.webformSelectLoadOptions = {};
  8. Drupal.behaviors.webformSelectLoadOptions.attach = function (context) {
  9. $('#edit-extra-options-source', context).change(function () {
  10. var url = Drupal.settings.webform.selectOptionsUrl + '/' + this.value;
  11. $.ajax({
  12. url: url,
  13. success: Drupal.webform.selectOptionsLoad,
  14. dataType: 'json'
  15. });
  16. });
  17. };
  18. Drupal.webform = Drupal.webform || {};
  19. Drupal.webform.selectOptionsOriginal = false;
  20. Drupal.webform.selectOptionsLoad = function (result) {
  21. if (Drupal.optionsElement) {
  22. if (result.options) {
  23. // Save the current select options the first time a new list is chosen.
  24. if (Drupal.webform.selectOptionsOriginal === false) {
  25. Drupal.webform.selectOptionsOriginal = $(Drupal.optionElements[result.elementId].manualOptionsElement).val();
  26. }
  27. $(Drupal.optionElements[result.elementId].manualOptionsElement).val(result.options);
  28. Drupal.optionElements[result.elementId].disable();
  29. Drupal.optionElements[result.elementId].updateWidgetElements();
  30. }
  31. else {
  32. Drupal.optionElements[result.elementId].enable();
  33. if (Drupal.webform.selectOptionsOriginal) {
  34. $(Drupal.optionElements[result.elementId].manualOptionsElement).val(Drupal.webform.selectOptionsOriginal);
  35. Drupal.optionElements[result.elementId].updateWidgetElements();
  36. Drupal.webform.selectOptionsOriginal = false;
  37. }
  38. }
  39. }
  40. else {
  41. var $element = $('#' + result.elementId);
  42. $element.webformProp('readonly', result.options);
  43. if (result.options) {
  44. $element.val(result.options);
  45. }
  46. }
  47. }
  48. /**
  49. * Make a prop shim for jQuery < 1.9.
  50. */
  51. $.fn.webformProp = $.fn.webformProp || function (name, value) {
  52. if (value) {
  53. return $.fn.prop ? this.prop(name, true) : this.attr(name, true);
  54. }
  55. else {
  56. return $.fn.prop ? this.prop(name, false) : this.removeAttr(name);
  57. }
  58. };
  59. })(jQuery);