Issue #1344752 by pflame, JacobSingh: Fixed Drag and Drop of shortcuts between Enable and Disable Does not respect the Shortcuts Limit.

8.0.x
catch 2011-12-30 21:16:44 +09:00
parent 46c65ce410
commit 64c63139b8
1 changed files with 16 additions and 3 deletions

View File

@ -42,6 +42,15 @@ Drupal.behaviors.shortcutDrag = {
if (total == -1) {
var disabled = $(table).find('tr.shortcut-status-disabled');
disabled.after(disabled.prevAll().filter(':not(.shortcut-slot-empty)').get(0));
if ($(swappedRow).hasClass('draggable')) {
// The dropped element will automatically be marked as changed by
// the tableDrag system. However, the row that swapped with it
// has moved to the "disabled" section, so we need to force its
// status to be disabled and mark it also as changed.
swappedRowObject = new tableDrag.row(swappedRow, 'mouse', self.indentEnabled, self.maxDepth, true);
swappedRowObject.markChanged();
rowStatusChange(swappedRowObject);
}
}
else if (total != visibleLength) {
if (total > visibleLength) {
@ -59,13 +68,17 @@ Drupal.behaviors.shortcutDrag = {
// Add a handler so when a row is dropped, update fields dropped into new regions.
tableDrag.onDrop = function () {
rowStatusChange(this.rowObject);
return true;
};
function rowStatusChange(rowObject) {
// Use "status-message" row instead of "status" row because
// "status-{status_name}-message" is less prone to regexp match errors.
var statusRow = $(this.rowObject.element).prevAll('tr.shortcut-status').get(0);
var statusRow = $(rowObject.element).prevAll('tr.shortcut-status').get(0);
var statusName = statusRow.className.replace(/([^ ]+[ ]+)*shortcut-status-([^ ]+)([ ]+[^ ]+)*/, '$2');
var statusField = $('select.shortcut-status-select', this.rowObject.element);
var statusField = $('select.shortcut-status-select', rowObject.element);
statusField.val(statusName);
return true;
};
tableDrag.restripeTable = function () {