_hasMarkedItems: false,
/**
- * list of ids of marked objects
- * @var array
+ * list of ids of marked objects grouped by object type
+ * @var object
*/
- _markedObjectIDs: [],
+ _markedObjectIDs: { },
/**
* current page
for (var $typeName in data.markedItems) {
var $objectData = data.markedItems[$typeName];
for (var $i in $objectData) {
- this._markedObjectIDs.push($objectData[$i]);
+ this._markedObjectIDs[$typeName].push($objectData[$i]);
}
// loop through all containers
// mark items as marked
$container.find('input.jsClipboardItem').each($.proxy(function(innerIndex, item) {
var $item = $(item);
- if (WCF.inArray($item.data('objectID'), this._markedObjectIDs)) {
+ if (WCF.inArray($item.data('objectID'), this._markedObjectIDs[$typeName])) {
$item.prop('checked', true);
// add marked class for element container
* Resets all checkboxes.
*/
_resetMarkings: function() {
- this._containers.each(function(index, container) {
+ this._containers.each($.proxy(function(index, container) {
var $container = $(container);
+ this._markedObjectIDs[$container.data('type')] = [ ];
$container.find('input.jsClipboardItem, input.jsClipboardMarkAll').prop('checked', false);
$container.find('.jsClipboardObject').removeClass('jsMarked');
- });
+ }, this));
},
/**
if (!this._trackedElements[$containerID]) {
$container.find('.jsClipboardMarkAll').data('hasContainer', $containerID).click($.proxy(this._markAll, this));
+ this._markedObjectIDs[$container.data('type')] = [ ];
this._containerData[$container.data('type')] = {};
$.each($container.data(), $.proxy(function(index, element) {
if (index.match(/^type(.+)/)) {
var $isMarked = ($item.prop('checked')) ? true : false;
var $objectIDs = [ $objectID ];
+ if ($item.data('hasContainer')) {
+ var $container = $('#' + $item.data('hasContainer'));
+ var $type = $container.data('type');
+ }
+ else {
+ var $type = $item.data('type');
+ }
+
if ($isMarked) {
- this._markedObjectIDs.push($objectID);
+ this._markedObjectIDs[$type].push($objectID);
$item.parents('.jsClipboardObject').addClass('jsMarked');
}
else {
- this._markedObjectIDs = $.removeArrayValue(this._markedObjectIDs, $objectID);
+ this._markedObjectIDs[$type] = $.removeArrayValue(this._markedObjectIDs[$type], $objectID);
$item.parents('.jsClipboardObject').removeClass('jsMarked');
}
// item is part of a container
if ($item.data('hasContainer')) {
- var $container = $('#' + $item.data('hasContainer'));
- var $type = $container.data('type');
-
// check if all items are marked
var $markedAll = true;
$container.find('input.jsClipboardItem').each(function(index, containerItem) {
}
});
}
- else {
- // standalone item
- var $type = $item.data('type');
- }
this._saveState($type, $objectIDs, $isMarked);
},
$isMarked = $item.prop('checked');
}
- // handle item containers
if ($item.data('hasContainer')) {
var $container = $('#' + $item.data('hasContainer'));
var $type = $container.data('type');
-
+ }
+ else {
+ var $type = $item.data('type');
+ }
+
+ // handle item containers
+ if ($item.data('hasContainer')) {
// toggle state for all associated items
$container.find('input.jsClipboardItem').each($.proxy(function(index, containerItem) {
var $containerItem = $(containerItem);
if ($isMarked) {
if (!$containerItem.prop('checked')) {
$containerItem.prop('checked', true);
- this._markedObjectIDs.push($objectID);
+ this._markedObjectIDs[$type].push($objectID);
$objectIDs.push($objectID);
}
}
else {
if ($containerItem.prop('checked')) {
$containerItem.prop('checked', false);
- this._markedObjectIDs = $.removeArrayValue(this._markedObjectIDs, $objectID);
+ this._markedObjectIDs[$type] = $.removeArrayValue(this._markedObjectIDs[$type], $objectID);
$objectIDs.push($objectID);
}
}