123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- /**
- * @file js support for term editing form for ajax saving and tree updating
- */
- (function ($) {
-
- //global var that holds the current term link object
- var active_term = new Object();
- /**
- * attaches term data form, used after 'Saves changes' submit
- */
- Drupal.behaviors.TaxonomyManagerTermData = {
- attach: function(context) {
- if (!$('#taxonomy-term-data-replace').hasClass('processed')) {
- $('#taxonomy-term-data-replace').addClass('processed');
- Drupal.attachTermDataForm();
- }
- }
- }
- /**
- * attaches Term Data functionality, called by tree.js
- */
- Drupal.attachTermData = function(ul) {
- Drupal.attachTermDataLinks(ul);
- }
- /**
- * adds click events to the term links in the tree structure
- */
- Drupal.attachTermDataLinks = function(ul) {
- $(ul).find('a.term-data-link').click(function() {
- Drupal.activeTermSwapHighlight(this);
- var li = $(this).parents("li:first");
- Drupal.loadTermDataForm(Drupal.getTermId(li), false);
- return false;
- });
- }
- /**
- * attaches click events to next siblings
- */
- Drupal.attachTermDataToSiblings = function(all, currentIndex) {
- var nextSiblings = $(all).slice(currentIndex);
- $(nextSiblings).find('a.term-data-link').click(function() {
- var li = $(this).parents("li:first");
- Drupal.loadTermDataForm(Drupal.getTermId(li), false);
- return false;
- });
- }
- /**
- * adds click events to term data form, which is already open, when page gets loaded
- */
- Drupal.attachTermDataForm = function() {
- active_term = $('div.highlightActiveTerm').find('a');
- var tid = $('#taxonomy-term-data').find('input:hidden[name="tid"]').val();
- if (tid) {
- new Drupal.TermData(tid).form();
- }
- }
- /**
- * loads term data form
- */
- Drupal.loadTermDataForm = function(tid, refreshTree) {
- // Triggers an AJAX button
- $('#edit-load-tid').val(tid);
- if (refreshTree) {
- $('#edit-load-tid-refresh-tree').attr("checked", "checked");
- }
- else {
- $('#edit-load-tid-refresh-tree').attr("checked", "");
- }
- $('#edit-load-tid-submit').click();
- }
- /**
- * TermData Object
- */
- Drupal.TermData = function(tid) {
- this.tid = tid;
- this.div = $('#taxonomy-term-data');
- }
- /**
- * adds events to possible operations
- */
- Drupal.TermData.prototype.form = function() {
- var termdata = this;
-
- $(this.div).find('#term-data-close span').click(function() {
- termdata.div.children().hide();
- });
-
- $(this.div).find('a.taxonomy-term-data-name-link').click(function() {
- var tid = this.href.split("/").pop();
- Drupal.loadTermDataForm(tid, true);
- return false;
- });
-
- $(this.div).find("legend").each(function() {
- var staticOffsetX, staticOffsetY = null;
- var left, top = 0;
- var div = termdata.div;
- var pos = $(div).position();
- $(this).mousedown(startDrag);
-
- function startDrag(e) {
- if (staticOffsetX == null && staticOffsetY == null) {
- staticOffsetX = e.pageX;
- staticOffsetY = e.pageY;
- }
- $(document).mousemove(performDrag).mouseup(endDrag);
- return false;
- }
-
- function performDrag(e) {
- left = e.pageX - staticOffsetX;
- top = e.pageY - staticOffsetY;
- $(div).css({position: "absolute", "left": pos.left + left +"px", "top": pos.top + top +"px"});
- return false;
- }
-
- function endDrag(e) {
- $(document).unbind("mousemove", performDrag).unbind("mouseup", endDrag);
- }
- });
- }
- /**
- * hightlights current term
- */
- Drupal.activeTermSwapHighlight = function(link) {
- try {
- $(active_term).parents('div.term-line').removeClass('highlightActiveTerm');
- } catch(e) {}
- active_term = link;
- $(active_term).parents('div.term-line:first').addClass('highlightActiveTerm');
- }
- })(jQuery);
|