| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477 | 
							
- /**
 
-  * @files js for collapsible tree view with some helper functions for updating tree structure
 
-  */
 
- (function ($) {
 
- Drupal.behaviors.TaxonomyManagerTree = {
 
-   attach: function(context, settings) {
 
-     var treeSettings = settings.taxonomytree || [];
 
-     if (treeSettings instanceof Array) {
 
-       for (var i=0; i<treeSettings.length; i++) {
 
-         if (!$('#'+ treeSettings[i].id +'.tm-processed').length) {
 
-           new Drupal.TaxonomyManagerTree(treeSettings[i].id, treeSettings[i].vid, treeSettings[i].parents);
 
-         }
 
-       }
 
-     }
 
-     //only add throbber for TM sites
 
-     var throbberSettings = settings.TMAjaxThrobber || [];
 
-     if (throbberSettings['add']) {
 
-       if (!$('#taxonomy-manager-toolbar-throbber.tm-processed').length) {
 
-         $('#taxonomy-manager-toolbar-throbber').addClass('tm-processed');
 
-         Drupal.attachThrobber();
 
-         Drupal.attachResizeableTreeDiv();
 
-         Drupal.attachGlobalSelectAll();
 
-       }
 
-     }
 
-     Drupal.attachMsgCloseLink(context);
 
-   }
 
- }
 
- Drupal.TaxonomyManagerTree = function(id, vid, parents) {
 
-   this.div = $("#"+ id);
 
-   this.ul = $(this.div).children();
 
-   this.form = $(this.div).parents('form');
 
-   this.form_build_id = $(this.form).children().children(':input[name="form_build_id"]').val();
 
-   this.form_id = $(this.form).children().children(' :input[name="form_id"]').val();
 
-   this.form_token = $(this.form).children().children(' :input[name="form_token"]').val();
 
-   this.language = this.getLanguage();
 
-   this.treeId = id;
 
-   this.vocId = vid;
 
-   this.formParents = parents;
 
-   this.childFormUrl = Drupal.settings.childForm['url'];
 
-   this.siblingsFormUrl = Drupal.settings.siblingsForm['url'];
 
-   this.attachTreeview(this.ul);
 
-   this.attachSiblingsForm(this.ul);
 
-   this.attachSelectAllChildren(this.ul);
 
-   this.attachLanguageSelector();
 
-   //attach term data js, if enabled
 
-   var term_data_settings = Drupal.settings.termData || [];
 
-   if (term_data_settings['url']) {
 
-     Drupal.attachTermData(this.ul);
 
-   }
 
-   $(this.div).addClass("tm-processed");
 
- }
 
- /**
 
-  * adds collapsible treeview to a given list
 
-  */
 
- Drupal.TaxonomyManagerTree.prototype.attachTreeview = function(ul, currentIndex) {
 
-   var tree = this;
 
-   if (currentIndex) {
 
-     ul = $(ul).slice(currentIndex);
 
-   }
 
-   var expandableParent = $(ul).find("div.hitArea");
 
-   $(expandableParent).click(function() {
 
-     var li = $(this).parent();
 
-     tree.loadChildForm(li);
 
-     tree.toggleTree(li);
 
-   });
 
-   $(expandableParent).parent("li.expandable, li.lastExpandable").children("ul").hide();
 
- }
 
- /**
 
-  * toggles a collapsible/expandable tree element by swaping classes
 
-  */
 
- Drupal.TaxonomyManagerTree.prototype.toggleTree = function(node) {
 
-   $(node).children("ul").toggle();
 
-   this.swapClasses(node, "expandable", "collapsable");
 
-   this.swapClasses(node, "lastExpandable", "lastCollapsable");
 
- }
 
- /**
 
-  * helper function for swapping two classes
 
-  */
 
- Drupal.TaxonomyManagerTree.prototype.swapClasses = function(node, c1, c2) {
 
-   if ($(node).hasClass(c1)) {
 
-     $(node).removeClass(c1).addClass(c2);
 
-   }
 
-   else if ($(node).hasClass(c2)) {
 
-     $(node).removeClass(c2).addClass(c1);
 
-   }
 
- }
 
- /**
 
-  * loads child terms and appends html to list
 
-  * adds treeview, weighting etc. js to inserted child list
 
-  */
 
- Drupal.TaxonomyManagerTree.prototype.loadChildForm = function(li, update, callback) {
 
-   var tree = this;
 
-   if ($(li).is(".has-children") || update == true) {
 
-     $(li).removeClass("has-children");
 
-     if (update) {
 
-       $(li).children("ul").remove();
 
-     }
 
-     var parentId = Drupal.getTermId(li);
 
-     var url = tree.childFormUrl +'/'+ this.treeId +'/'+ this.vocId +'/'+ parentId;
 
-     var param = new Object();
 
-     param['form_build_id'] = this.form_build_id;
 
-     param['form_id'] = this.form_id;
 
-     param['tree_id'] = this.treeId;
 
-     param['form_parents'] = this.formParents;
 
-     param['language'] = this.language;
 
-     $.ajax({
 
-       data: param,
 
-       type: "GET",
 
-       url: url,
 
-       dataType: 'json',
 
-       success: function(response, status) {
 
-          $(li).append(response.data);
 
-         var ul = $(li).children("ul");
 
-         tree.attachTreeview(ul);
 
-         tree.attachSiblingsForm(ul);
 
-         tree.attachSelectAllChildren(ul);
 
-         //only attach other features if enabled!
 
-         var weight_settings = Drupal.settings.updateWeight || [];
 
-         if (weight_settings['up']) {
 
-           Drupal.attachUpdateWeightTerms(li);
 
-         }
 
-         var term_data_settings = Drupal.settings.termData || [];
 
-         if (term_data_settings['url']) {
 
-           Drupal.attachTermDataLinks(ul);
 
-         }
 
-         if (typeof(callback) == "function") {
 
-           callback(li, tree);
 
-         }
 
-       }
 
-     });
 
-   }
 
- }
 
- /**
 
-  * function for reloading root tree elements
 
-  */
 
- Drupal.TaxonomyManagerTree.prototype.loadRootForm = function(tids) {
 
-   var tree = this;
 
-   var url = this.childFormUrl +'/'+ this.treeId +'/'+ this.vocId +'/0/';
 
-   var param = new Object();
 
-   param['form_build_id'] = this.form_build_id;
 
-   param['form_id'] = this.form_id;
 
-   param['tree_id'] = this.treeId;
 
-   param['form_parents'] = this.formParents;
 
-   param['language'] = this.language;
 
-   param['terms_to_expand'] = tids; // can either be a single term id or concatinated ids
 
-    $.ajax({
 
-       data: param,
 
-       type: "GET",
 
-       url: url,
 
-       dataType: 'json',
 
-       success: function(response, status) {
 
-         $('#'+ tree.treeId).html(response.data);
 
-         var ul = $('#'+ tree.treeId).children("ul");
 
-         tree.attachTreeview(ul);
 
-         tree.attachSiblingsForm(ul);
 
-         tree.attachSelectAllChildren(ul);
 
-         Drupal.attachUpdateWeightTerms(ul);
 
-         Drupal.attachTermDataLinks(ul);
 
-         var lang = $('#edit-'+ tree.treeId +'-language').val();
 
-         if (lang != "" && lang != tree.langauge) {
 
-           $(tree.div).parent().siblings("div.taxonomy-manager-tree-top").find("select.language-selector option[value="+ lang +"]").attr("selected", "selected");
 
-         }
 
-       }
 
-   });
 
- }
 
- /**
 
-  * adds link for loading next siblings terms, when click terms get loaded through ahah
 
-  * adds all needed js like treeview, weightning, etc.. to new added terms
 
-  */
 
- Drupal.TaxonomyManagerTree.prototype.attachSiblingsForm = function(ul) {
 
-   var tree = this;
 
-   var url = this.siblingsFormUrl;
 
-   var list = "li.has-more-siblings div.term-has-more-siblings";
 
-   if (ul) {
 
-     list = $(ul).find(list);
 
-   }
 
-   $(list).bind('click', function() {
 
-     $(this).unbind("click");
 
-     var li = this.parentNode;
 
-     var all = $('li', li.parentNode);
 
-     var currentIndex = all.index(li);
 
-     var page = Drupal.getPage(li);
 
-     var prev_id = Drupal.getTermId(li);
 
-     var parentId = Drupal.getParentId(li);
 
-     url += '/'+ tree.treeId +'/'+ page +'/'+ prev_id +'/'+ parentId;
 
-     var param = new Object();
 
-     param['form_build_id'] = tree.form_build_id;
 
-     param['form_id'] = tree.form_id;
 
-     param['tree_id'] = tree.treeId;
 
-     param['form_parents'] = tree.formParents;
 
-     param['language'] = tree.language;
 
-     $.ajax({
 
-       data: param,
 
-       type: "GET",
 
-       url: url,
 
-       dataType: 'json',
 
-       success: function(response, status) {
 
-         $(list).remove();
 
-         $(li).after(response.data);
 
-         tree.attachTreeview($('li', li.parentNode), currentIndex);
 
-         tree.attachSelectAllChildren($('li', li.parentNode), currentIndex);
 
-         //only attach other features if enabled!
 
-         var weight_settings = Drupal.settings.updateWeight || [];
 
-         if (weight_settings['up']) {
 
-           Drupal.attachUpdateWeightTerms($('li', li.parentNode), currentIndex);
 
-         }
 
-         var term_data_settings = Drupal.settings.termData || [];
 
-         if (term_data_settings['url']) {
 
-           Drupal.attachTermDataToSiblings($('li', li.parentNode), currentIndex);
 
-         }
 
-         $(li).removeClass("last").removeClass("has-more-siblings");
 
-         $(li).children().children('.term-operations').hide();
 
-         tree.swapClasses(li, "lastExpandable", "expandable");
 
-         tree.attachSiblingsForm($(li).parent());
 
-       }
 
-     });
 
-   });
 
- }
 
- /**
 
-  * helper function for getting out the current page
 
-  */
 
- Drupal.getPage = function(li) {
 
-   return $(li).find("input:hidden[class=page]").attr("value");
 
- }
 
- /**
 
-  * returns terms id of a given list element
 
-  */
 
- Drupal.getTermId = function(li) {
 
-   return $(li).children().children("input:hidden[class=term-id]").attr("value");
 
- }
 
- /**
 
-  * return term id of a prent of a given list element
 
-  * if no parent exists (root level), returns 0
 
-  */
 
- Drupal.getParentId = function(li) {
 
-   var parentId;
 
-   try {
 
-     var parentLi = $(li).parent("ul").parent("li");
 
-     parentId = Drupal.getTermId(parentLi);
 
-   } catch(e) {
 
-     return 0;
 
-   }
 
-   return parentId;
 
- }
 
- /**
 
-  * update classes for tree view, if list elements get swaped
 
-  */
 
- Drupal.updateTree = function(upTerm, downTerm) {
 
-   if ($(upTerm).is(".last")) {
 
-     $(upTerm).removeClass("last");
 
-     Drupal.updateTreeDownTerm(downTerm);
 
-   }
 
-   else if ($(upTerm).is(".lastExpandable")) {
 
-     $(upTerm).removeClass("lastExpandable").addClass("expandable");
 
-     Drupal.updateTreeDownTerm(downTerm);
 
-   }
 
-   else if ($(upTerm).is(".lastCollapsable")) {
 
-     $(upTerm).removeClass("lastCollapsable").addClass("collapsable");
 
-     Drupal.updateTreeDownTerm(downTerm);
 
-   }
 
- }
 
- /**
 
-  * update classes for tree view for a list element moved downwards
 
-  */
 
- Drupal.updateTreeDownTerm = function(downTerm) {
 
-   if ($(downTerm).is(".expandable")) {
 
-     $(downTerm).removeClass("expandable").addClass("lastExpandable");
 
-   }
 
-   else if ($(downTerm).is(".collapsable")) {
 
-     $(downTerm).removeClass("collapsable").addClass("lastCollapsable");
 
-   }
 
-   else {
 
-     $(downTerm).addClass("last");
 
-   }
 
- }
 
- /**
 
-  * Adds button next to parent term to select all available child checkboxes
 
-  */
 
- Drupal.TaxonomyManagerTree.prototype.attachSelectAllChildren = function(parent, currentIndex) {
 
-   var tree = this;
 
-   if (currentIndex) {
 
-     parent = $(parent).slice(currentIndex);
 
-   }
 
-   $(parent).find('span.select-all-children').click(function() {
 
-     tree.SelectAllChildrenToggle(this);
 
-   });
 
- }
 
- /**
 
-  * (un-)selects nested checkboxes
 
-  */
 
- Drupal.TaxonomyManagerTree.prototype.SelectAllChildrenToggle = function(span) {
 
-   var tree = this;
 
-   if ($(span).hasClass("select-all-children")) {
 
-     var li = $(span).parents("li:first");
 
-     if ($(li).hasClass("has-children")) {
 
-       this.loadChildForm(li, true, function(li, tree) {
 
-         tree.swapClasses(li, "expandable", "collapsable");
 
-         tree.swapClasses(li, "lastExpandable", "lastCollapsable");
 
-         var this_span = $(li).find('span.select-all-children:first');
 
-         tree.SelectAllChildrenToggle(this_span);
 
-         return;
 
-       });
 
-     }
 
-     else {
 
-       $(span).removeClass("select-all-children").addClass("deselect-all-children");
 
-       $(span).attr("title", Drupal.t("Deselect all children"));
 
-       $(span).parents("li:first").find('ul:first').each(function() {
 
-         var first_element = $(this).find('.term-line:first');
 
-         $(first_element).parent().siblings("li").find('div.term-line:first :checkbox').attr('checked', true);
 
-         $(first_element).find(' :checkbox').attr('checked', true);
 
-       });
 
-     }
 
-   }
 
-   else {
 
-     $(span).removeClass("deselect-all-children").addClass("select-all-children");
 
-     $(span).parents(".term-line").siblings("ul").find(':checkbox').attr("checked", false);
 
-     $(span).attr("title", Drupal.t("Select all children"));
 
-   }
 
- }
 
- /**
 
-  * language selector
 
-  */
 
- Drupal.TaxonomyManagerTree.prototype.attachLanguageSelector = function() {
 
-   var tree = this;
 
-   var selector = $(tree.div).parent().siblings("div.taxonomy-manager-tree-top").find("select.language-selector");
 
-   $(selector).not(".selector-processed").change(function() {
 
-     tree.language = $(this).val();
 
-     tree.loadRootForm();
 
-   });
 
-   $(selector).addClass("selector-processed");
 
- }
 
- Drupal.TaxonomyManagerTree.prototype.getLanguage = function() {
 
-   var lang = $('#edit-taxonomy-manager-top-language').val();
 
-   if (typeof(lang) == "undefined") {
 
-     return "";
 
-   }
 
-   return lang;
 
- }
 
- /**
 
-  * return array of selected terms
 
-  */
 
- Drupal.TaxonomyManagerTree.prototype.getSelectedTerms = function() {
 
-   var terms = new Array();
 
-   $(this.div).find("input[type=checkbox][checked]").each(function() {
 
-     var term = $(this).parents("li").eq(0);
 
-     terms.push(term);
 
-   });
 
-   return terms;
 
- }
 
- /**
 
-  * returns li node for a given term id, if it exists in the tree
 
-  */
 
- Drupal.TaxonomyManagerTree.prototype.getLi = function(termId) {
 
-   return $(this.div).find("input:hidden[class=term-id][value="+ termId +"]").parent().parent();
 
- }
 
- Drupal.attachMsgCloseLink = function(context) {
 
-   $(context).find('div.messages').once(function() {
 
-     $('<span class="taxonomy-manager-message-close"><a href="" title="'+ Drupal.t('Close') +'">x</a></span>').appendTo(this).click(function() {
 
-       $(this).parent().fadeOut('fast', function() {
 
-         $(this).remove();
 
-       });
 
-       return false;
 
-     });
 
-   });
 
- }
 
- /**
 
-  * attaches a throbber element to the taxonomy manager
 
-  */
 
- Drupal.attachThrobber = function() {
 
-   var div = $('#taxonomy-manager');
 
-   var throbber = $('<img src="'+ Drupal.settings.taxonomy_manager['modulePath'] +'images/ajax-loader.gif" alt="" height="25">');
 
-   throbber.appendTo("#taxonomy-manager-toolbar-throbber").hide();
 
-   throbber.ajaxStart(function() {
 
-     $(this).show();
 
-   });
 
-   throbber.ajaxStop(function() {
 
-     $(this).hide();
 
-   });
 
-   throbber.ajaxError(function() {
 
-     alert("An AJAX error occurred. Reload the page and check your logs.");
 
-     $(this).hide();
 
-   });
 
- }
 
- /**
 
- * makes the div resizeable
 
- */
 
- Drupal.attachResizeableTreeDiv = function() {
 
-   $('img.div-grippie').each(function() {
 
-     var staticOffset = null;
 
-     var div = $(this).parents("fieldset").parent();
 
-     $(this).mousedown(startDrag);
 
-     function startDrag(e) {
 
-       staticOffset = div.width() - e.pageX;
 
-       div.css('opacity', 0.5);
 
-       $(document).mousemove(performDrag).mouseup(endDrag);
 
-       return false;
 
-     }
 
-     function performDrag(e) {
 
-       div.width(Math.max(200, staticOffset + e.pageX) + 'px');
 
-       return false;
 
-     }
 
-     function endDrag(e) {
 
-       $(document).unbind("mousemove", performDrag).unbind("mouseup", endDrag);
 
-       div.css('opacity', 1);
 
-     }
 
-   });
 
- }
 
- /**
 
-  * Adds select all / remove selection functionality.
 
-  */
 
- Drupal.attachGlobalSelectAll = function() {
 
-   $('span.taxonomy-manager-select-helpers').once(function() {
 
-     var form = $(this).parents('.form-wrapper:first');
 
-     $(this).find('span.select-all-children').click(function() {
 
-       // Only select those that are visible to the end user.
 
-       $(form).parent().find(' :checkbox:visible').attr('checked', true);
 
-     });
 
-     $(this).find('span.deselect-all-children').click(function() {
 
-       $(form).parent().find(':checkbox').attr("checked", false);
 
-     });
 
-   });
 
- }
 
- })(jQuery);
 
 
  |