select-admin.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /**
  2. * @file
  3. * Enhancements for select list configuration options.
  4. */
  5. (function ($) {
  6. Drupal.behaviors.webformSelectLoadOptions = {};
  7. Drupal.behaviors.webformSelectLoadOptions.attach = function(context) {
  8. settings = Drupal.settings;
  9. $('#edit-extra-options-source', context).change(function() {
  10. var url = 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. if (result.options) {
  42. $('#' + result.elementId).val(result.options).attr('readonly', 'readonly');
  43. }
  44. else {
  45. $('#' + result.elementId).attr('readonly', '');
  46. }
  47. }
  48. }
  49. })(jQuery);