hideForm.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /**
  2. * @file shows / hides form elements
  3. */
  4. (function ($) {
  5. Drupal.behaviors.TaxonomyManagerHideForm = {
  6. attach: function(context, settings) {
  7. $('#edit-toolbar', context).once('hideForm', function() {
  8. for (var key in settings.hideForm) {
  9. Drupal.attachHideForm(settings.hideForm[key].div, settings.hideForm[key].show_button, settings.hideForm[key].hide_button);
  10. }
  11. });
  12. }
  13. }
  14. /**
  15. * adds click events to show / hide button
  16. */
  17. Drupal.attachHideForm = function(div, show_button, hide_button) {
  18. var hide = true;
  19. var div = $("#"+ div);
  20. var show_button = $("#"+ show_button);
  21. var hide_button = $("#"+ hide_button);
  22. // don't hide if there is an error in the form
  23. $(div).find("input").each(function() {
  24. if ($(this).hasClass("error")) {
  25. hide = false;
  26. }
  27. });
  28. if (!hide) {
  29. $(div).show();
  30. }
  31. $(show_button).click(function() {
  32. Drupal.hideOtherForms(div);
  33. $(div).toggle();
  34. return false;
  35. });
  36. $(hide_button).click(function() {
  37. $(div).hide();
  38. return false;
  39. });
  40. }
  41. /**
  42. * Helper function that hides all forms, except the current one.
  43. */
  44. Drupal.hideOtherForms = function(currentFormDiv) {
  45. var currentFormDivId = $(currentFormDiv).attr('id');
  46. var settings = Drupal.settings.hideForm || [];
  47. for (var key in settings) {
  48. var div = settings[key].div;
  49. if (div != currentFormDivId) {
  50. $('#' + div).hide();
  51. }
  52. }
  53. }
  54. })(jQuery);