Makes clipboard container data
authorMatthias Schmidt <gravatronics@live.com>
Sun, 7 Oct 2012 12:58:31 +0000 (14:58 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Sun, 7 Oct 2012 12:58:31 +0000 (14:58 +0200)
Every data attribute that starts with `type` (like `data-type-foo-bar`) is treated as container type data which is available in the clipboard action interface implementation in the `$typeData` array via `$typeData['fooBar']`.

wcfsetup/install/files/js/WCF.js
wcfsetup/install/files/lib/action/ClipboardAction.class.php

index b5379f65ebebb600ae3ab2c226eefb75ff9d8254..51982d71ff12ca5a5d077bbe174099cc2f971149 100755 (executable)
@@ -916,9 +916,12 @@ WCF.Clipboard = {
                $container.find('.jsClipboardMarkAll').data('hasContainer', $containerID).click($.proxy(this._markAll, this));
                $container.find('input.jsClipboardItem').data('hasContainer', $containerID).click($.proxy(this._click, this));
                
-               if ($container.data('typeContainerID')) {
-                       this._containerData[$container.data('type')] = $container.data('typeContainerID');
-               }
+               this._containerData[$container.data('type')] = {};
+               $.each($container.data(), $.proxy(function(index, element) {
+                       if (index.match(/^type(.+)/)) {
+                               this._containerData[$container.data('type')][WCF.String.lcfirst(index.replace(/^type/, ''))] = element;
+                       }
+               }, this));
        },
        
        /**
index 4e27af8cb1f9b82d7633914775da57efa78d5e50..53f552881822942e24c3feb205ce2ed130b27149 100644 (file)
@@ -78,7 +78,7 @@ class ClipboardAction extends AbstractSecureAction {
                parent::readParameters();
                
                if (isset($_POST['action'])) $this->action = StringUtil::trim($_POST['action']);
-               if (isset($_POST['containerData']) && is_array($_POST['containerData'])) $this->containerData = ArrayUtil::toIntegerArray($_POST['containerData']);
+               if (isset($_POST['containerData']) && is_array($_POST['containerData'])) $this->containerData = $_POST['containerData'];
                if (isset($_POST['objectIDs']) && is_array($_POST['objectIDs'])) $this->objectIDs = ArrayUtil::toIntegerArray($_POST['objectIDs']);
                if (isset($_POST['pageClassName'])) $this->pageClassName = StringUtil::trim($_POST['pageClassName']);
                if (isset($_POST['type'])) $this->type = StringUtil::trim($_POST['type']);