| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 | 
							
- /**
 
-  * @file js for changing weights of terms with Up and Down arrows
 
-  */
 
- (function ($) {
 
- //object to store weights (tid => weight)
 
- var termWeightsData = new Object();
 
- Drupal.behaviors.TaxonomyManagerWeights = {
 
-   attach: function(context, settings) {
 
-     var weightSettings = settings.updateWeight || [];
 
-     if (!$('#edit-toolbar.tm-weights-processed').length) {
 
-       $('#edit-toolbar').addClass('tm-weights-processed');
 
-       termWeightsData['form_token'] = $('input[name=form_token]').val();
 
-       termWeightsData['form_id'] = $('input[name=form_id]').val();
 
-       termWeightsData['weights'] = new Object();
 
-       Drupal.attachUpdateWeightToolbar(weightSettings['up'], weightSettings['down']);
 
-       Drupal.attachUpdateWeightTerms();
 
-     }
 
-   }
 
- }
 
- /**
 
-  * adds click events for Up and Down buttons in the toolbar, which
 
-  * allow the moving of selected (can be more) terms
 
-  */
 
- Drupal.attachUpdateWeightToolbar = function(upButton, downButton) {
 
-   var selected;
 
-   var url = Drupal.settings.updateWeight['url'];
 
-   $('#'+ upButton).click(function() {
 
-     selected = Drupal.getSelectedTerms();
 
-     for (var i=0; i < selected.length; i++) {
 
-       var upTerm = selected[i];
 
-       var downTerm = $(upTerm).prev();
 
-       Drupal.orderTerms(upTerm, downTerm);
 
-     }
 
-     if (selected.length > 0) {
 
-       $.post(url, termWeightsData);
 
-     }
 
-   });
 
-   $('#'+ downButton).click(function() {
 
-     selected = Drupal.getSelectedTerms();
 
-     for (var i=selected.length-1; i >= 0; i--) {
 
-       var downTerm = selected[i];
 
-       var upTerm = $(downTerm).next();
 
-       Drupal.orderTerms(upTerm, downTerm);
 
-     }
 
-     if (selected.length > 0) {
 
-       $.post(url, termWeightsData);
 
-     }
 
-   });
 
- }
 
- /**
 
-  * adds small up and down arrows to each term
 
-  * arrows get displayed on mouseover
 
-  */
 
- Drupal.attachUpdateWeightTerms = function(parent, currentIndex) {
 
-   var settings = Drupal.settings.updateWeight || [];
 
-   var disable = settings['disable_mouseover'];
 
-   if (!disable) {
 
-     var url = Drupal.settings.updateWeight['url'];
 
-     var termLineClass = 'div.term-line';
 
-     var termUpClass = 'img.term-up';
 
-     var termDownClass = 'img.term-down';
 
-     if (parent && currentIndex) {
 
-       parent = $(parent).slice(currentIndex);
 
-     }
 
-     if (parent) {
 
-       termLineClass = $(parent).find(termLineClass);
 
-       termUpClass = $(parent).find(termUpClass);
 
-       termDownClass = $(parent).find(termDownClass);
 
-     }
 
-     $(termLineClass).mouseover(function() {
 
-       $(this).find('div.term-operations').show();
 
-     });
 
-     $(termLineClass).mouseout(function() {
 
-       $(this).find('div.term-operations').hide();
 
-     });
 
-     $(termUpClass).click(function() {
 
-       var upTerm = $(this).parents("li").eq(0);
 
-       var downTerm = $(upTerm).prev();
 
-       Drupal.orderTerms(upTerm, downTerm);
 
-       $.post(url, termWeightsData);
 
-       $(downTerm).find(termLineClass).unbind('mouseover');
 
-       setTimeout(function() {
 
-         $(upTerm).find('div.term-operations').hide();
 
-         $(downTerm).find(termLineClass).mouseover(function() {
 
-           $(this).find('div.term-operations').show();
 
-         });
 
-       }, 1500);
 
-     });
 
-     $(termDownClass).click(function() {
 
-       var downTerm = $(this).parents("li").eq(0);
 
-       var upTerm = $(downTerm).next();
 
-       Drupal.orderTerms(upTerm, downTerm);
 
-       $.post(url, termWeightsData);
 
-       $(upTerm).find(termLineClass).unbind('mouseover');
 
-       setTimeout(function() {
 
-         $(downTerm).find('div.term-operations').hide();
 
-         $(upTerm).find(termLineClass).mouseover(function() {
 
-           $(this).find('div.term-operations').show();
 
-         });
 
-       }, 1500);
 
-     });
 
-   }
 
- }
 
- /**
 
-  * return array of selected terms
 
-  */
 
- Drupal.getSelectedTerms = function() {
 
-   var terms = new Array();
 
-   $('.treeview').find("input:checked").each(function() {
 
-     var term = $(this).parents("li").eq(0);
 
-     terms.push(term);
 
-   });
 
-   return terms;
 
- }
 
- /**
 
-  * reorders terms
 
-  *   - swap list elements in DOM
 
-  *   - post updated weights to callback in php
 
-  *   - update classes of tree view
 
-  */
 
- Drupal.orderTerms = function(upTerm, downTerm) {
 
-   try {
 
-     Drupal.getTermId(upTerm);
 
-     Drupal.swapTerms(upTerm, downTerm);
 
-     Drupal.swapWeights(upTerm, downTerm);
 
-     Drupal.updateTree(upTerm, downTerm);
 
-   } catch(e) {
 
-     //no next item, because term to update is last child, continue
 
-   }
 
- }
 
- /**
 
-  * simple swap of two elements
 
-  */
 
- Drupal.swapTerms = function(upTerm, downTerm) {
 
-   $(upTerm).after(downTerm);
 
-   $(downTerm).before(upTerm);
 
- }
 
- /**
 
-  * updating weights of swaped terms
 
-  * if two terms have different weights, then weights are being swapped
 
-  * else, if both have same weights, upTerm gets decreased
 
-  *
 
-  * if prev/next siblings of up/down terms have same weights as current
 
-  * swapped, they have to be updated by de/increasing weight (by 1) to ensure
 
-  * unique position of swapped terms
 
-  */
 
- Drupal.swapWeights = function(upTerm, downTerm) {
 
-   var upWeight = Drupal.getWeight(upTerm);
 
-   var downWeight = Drupal.getWeight(downTerm);
 
-   var downTid = Drupal.getTermId(downTerm);
 
-   var upTid = Drupal.getTermId(upTerm);
 
-   //same weight, decrease upTerm
 
-   if (upWeight == downWeight) {
 
-     termWeightsData['weights'][upTid] = --upWeight;
 
-   }
 
-   //different weights, swap
 
-   else {
 
-     termWeightsData['weights'][upTid] = downWeight;
 
-     termWeightsData['weights'][downTid] = upWeight;
 
-   }
 
-   //update prev siblings if necessary
 
-   try {
 
-     if (Drupal.getWeight($(upTerm).prev()) >= upWeight) {
 
-       $(upTerm).prevAll().each(function() {
 
-         var id = Drupal.getTermId(this);
 
-         var weight = Drupal.getWeight(this);
 
-         termWeightsData['weights'][id] = --weight;
 
-       });
 
-     }
 
-   } catch(e) {
 
-     //no prev
 
-   }
 
-   //update next siblings if necessary
 
-   try {
 
-     if (Drupal.getWeight($(downTerm).next()) <= downWeight) {
 
-       $(downTerm).nextAll().each(function() {
 
-         var id = Drupal.getTermId(this);
 
-         var weight = Drupal.getWeight(this);
 
-         termWeightsData['weights'][id] = ++weight;
 
-       });
 
-     }
 
-   } catch(e) {
 
-     //no next
 
-   }
 
- }
 
- /**
 
-  * helper to return weight of a term
 
-  */
 
- Drupal.getWeight = function(li) {
 
-   var id = Drupal.getTermId(li);
 
-   var weight;
 
-   if (termWeightsData['weights'][id] != null) {
 
-     weight = termWeightsData['weights'][id];
 
-   }
 
-   else {
 
-     weight = $(li).find("input:hidden[class=weight-form]").attr("value");
 
-   }
 
-   return weight;
 
- }
 
- })(jQuery);
 
 
  |