123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- (function ($) {
- Drupal.behaviors.nodequeueDrag = {
- attach: function(context) {
- $('.nodequeue-dragdrop').each(function() {
- var table_id = $(this).attr('id');
- var tableDrag = Drupal.tableDrag[table_id];
- tableDrag.onDrop = function() {
- $('#' + table_id + ' td.position').each(function(i) {
- $(this).html(i + 1);
- });
- nodequeueUpdateNodePositions(table_id);
- }
- });
- }
- };
- Drupal.behaviors.nodequeueReverse = {
- attach: function(context) {
- $('#edit-actions-reverse').click(function() {
- var $table = $(this).parent().parent().find('.nodequeue-dragdrop:first');
- var table_id = $table.attr('id');
- // Reverse table rows.
- $table.find('tr.draggable').each(function(i) {
- $table.find('tbody').prepend(this);
- });
- nodequeueUpdateNodePositions(table_id);
- nodequeueInsertChangedWarning(table_id);
- nodequeueRestripeTable(table_id);
- return false;
- });
- }
- };
- Drupal.behaviors.nodequeueShuffle = {
- attach: function(context) {
- $('#edit-actions-shuffle').click(function() {
- var $table = $(this).parent().parent().find('.nodequeue-dragdrop:first');
- var table_id = $table.attr('id');
- // Randomize table rows.
- var rows = $('#' + table_id + ' tbody tr:not(:hidden)').get();
- rows.sort(function(){return (Math.round(Math.random())-0.5);});
- $.each(rows, function(i, row) {
- $('#' + table_id + ' tbody').prepend(this);
- });
- nodequeueUpdateNodePositions(table_id);
- nodequeueInsertChangedWarning(table_id);
- nodequeueRestripeTable(table_id);
- return false;
- });
- }
- };
- Drupal.behaviors.nodequeueClear = {
- attach: function(context) {
- $('#edit-actions-clear').click(function() {
- var $table = $(this).parent().parent().find('.nodequeue-dragdrop:first');
- var table_id = $table.attr('id');
- // Mark nodes for removal.
- $('#' + table_id + ' .node-position').each(function(i) {
- $(this).val('r');
- });
- // Remove table rows.
- rows = $('#' + table_id + ' tbody tr:not(:hidden)').hide();
- nodequeuePrependEmptyMessage(table_id);
- nodequeueInsertChangedWarning(table_id);
- return false;
- });
- }
- };
- Drupal.behaviors.nodequeueRemoveNode = {
- attach: function(context) {
- $('a.nodequeue-remove').css('display', 'block');
- $('a.nodequeue-remove').click(function() {
- a = $(this).attr('id');
- a = '#' + a.replace('nodequeue-remove-', 'edit-') + '-position';
- $(a).val('r');
- // Hide the current row.
- $(this).parent().parent().fadeOut('fast', function() {
- var $table = $(this).parent().parent();
- var table_id = $table.attr('id');
- if ($('#' + table_id + ' tbody tr:not(:hidden)').size() == 0) {
- nodequeuePrependEmptyMessage(table_id);
- }
- else {
- nodequeueRestripeTable(table_id)
- nodequeueInsertChangedWarning(table_id);
- }
- });
- return false;
- });
- }
- }
- Drupal.behaviors.nodequeueClearTitle = {
- attach: function(context) {
- $('.subqueue-add-nid').focus(function() {
- if (this.value == this.defaultValue) {
- this.value = '';
- $(this).css('color', '#000');
- }
- }).blur(function() {
- if (!this.value.length) {
- this.value = this.defaultValue;
- $(this).css('color', '#999');
- }
- });
- }
- }
- /**
- * Updates node positions after nodequeue has been rearranged.
- * It cares about the reverse order and populates nodes the other way round.
- */
- function nodequeueUpdateNodePositions(table_id) {
- // Check if reverse option is set.
- var reverse = Drupal.settings.nodequeue.reverse[table_id.replace(/-/g, '_')];
- var size = reverse ? $('#' + table_id + ' .node-position').size() : 1;
- $('#' + table_id + ' tr').filter(":visible").find('.node-position').each(function(i) {
- $(this).val(size);
- reverse ? size-- : size++;
- });
- }
- /**
- * Restripe the nodequeue table after removing an element or changing the
- * order of the elements.
- */
- function nodequeueRestripeTable(table_id) {
- $('#' + table_id + ' tbody tr:not(:hidden)')
- .filter(':odd')
- .removeClass('odd').addClass('even')
- .end()
- .filter(':even')
- .removeClass('even').addClass('odd')
- .end();
- $('#' + table_id + ' tr:visible td.position').each(function(i) {
- $(this).html(i + 1);
- });
- }
- /**
- * Add a row to the nodequeue table explaining that the queue is empty.
- */
- function nodequeuePrependEmptyMessage(table_id) {
- $('#' + table_id + ' tbody').prepend('<tr class="odd"><td colspan="6">'+Drupal.t('No nodes in this queue.')+'</td></tr>');
- }
- /**
- * Display a warning reminding the user to save the nodequeue.
- */
- function nodequeueInsertChangedWarning(table_id) {
- if (Drupal.tableDrag[table_id].changed == false) {
- $(Drupal.theme('tableDragChangedWarning')).insertAfter('#' + table_id).hide().fadeIn('slow');
- Drupal.tableDrag[table_id].changed = true;
- }
- }
- })(jQuery);
|