diff --git a/typo3/sysext/pagetree/classes/class.t3lib_tree_extdirect_node.php b/typo3/sysext/pagetree/classes/class.t3lib_tree_extdirect_node.php deleted file mode 100644 index f6cdf2fe3afffb0f0ce18c42c67ced1f5adb8a96..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/classes/class.t3lib_tree_extdirect_node.php +++ /dev/null @@ -1,630 +0,0 @@ -<?php -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ - -/** - * Node for the usage with ExtDirect and ExtJS - * - * @author Stefan Galinski <stefan.galinski@gmail.com> - * @package TYPO3 - * @subpackage t3lib - */ -class t3lib_tree_ExtDirect_Node extends t3lib_tree_Node { - /** - * Node type - * - * @var string - */ - protected $type = ''; - - /** - * Leaf Node Indicator - * - * @var bool - */ - protected $leaf = TRUE; - - /** - * Indicator if the node is expanded - * - * @var bool - */ - protected $expanded = FALSE; - - /** - * Indicator if the node can be expanded - * - * @var bool - */ - protected $expandable = FALSE; - - /** - * Indicator if the node is draggable - * - * @var bool - */ - protected $draggable = TRUE; - - /** - * Indicator if the node is allowed as a drop target - * - * @var bool - */ - protected $isDropTarget = TRUE; - - /** - * Label - * - * @var string - */ - protected $text = ''; - - /** - * Editable Label text - * - * @var string - */ - protected $editableText = ''; - - /** - * Prefix text of the label - * - * @var string - */ - protected $prefix = ''; - - /** - * Suffix text of the label - * - * @var string - */ - protected $suffix = ''; - - /** - * CSS Class - * - * @var string - */ - protected $cls = ''; - - /** - * Quick Tip - * - * @var string - */ - protected $qtip = ''; - - /** - * Sprite Icon HTML - * - * @var string - */ - protected $spriteIconCode = ''; - - /** - * Text source field (title, nav_title, ...) - * - * @var string - */ - protected $t3TextSourceField = ''; - - /** - * Indicator if the copy mode is activated - * - * @var bool - */ - protected $t3InCopyMode = FALSE; - - /** - * Indicator if the cut mode is activated - * - * @var bool - */ - protected $t3InCutMode = FALSE; - - /** - * Database record (not serialized or merged into the result array!) - * - * @var array - */ - protected $record = array(); - - /** - * Context Info - * - * @var array - */ - protected $contextInfo = array(); - - /** - * Indicator if the label is editable - * - * @var bool - */ - protected $labelIsEditable = TRUE; - - /** - * Indicator if the node can have children's - * - * @var bool - */ - protected $allowChildren = TRUE; - - /** - * Set's the node type - * - * @param string $type - * @return void - */ - public function setType($type) { - $this->type = $type; - } - - /** - * Returns the node type - * - * @return string - */ - public function getType() { - return $this->type; - } - - /** - * Sets the leaf node indicator - * - * @param bool $isLeaf - * @return void - */ - public function setLeaf($isLeaf) { - $this->leaf = ($isLeaf == TRUE); - } - - /** - * Returns if the node is a leaf node - * - * @return bool - */ - public function isLeafNode() { - return $this->leaf; - } - - /** - * Sets the expandable indicator - * - * @param bool $expandable - * @return void - */ - public function setExpandable($expandable) { - $this->expandable = ($expandable == TRUE); - } - - /** - * Returns the expandable indicator - * - * @return bool - */ - public function isExpandable() { - return $this->expandable; - } - - /** - * Sets the expanded indicator - * - * @param bool $expanded - * @return void - */ - public function setExpanded($expanded) { - $this->expanded = ($expanded == TRUE); - } - - /** - * Returns the expanded indicator - * - * @return bool - */ - public function isExpanded() { - if ($this->isLeafNode()) { - return TRUE; - } - - return $this->expanded; - } - - /** - * Sets the draggable indicator - * - * @param bool $draggable - * @return void - */ - public function setDraggable($draggable) { - $this->draggable = ($draggable == TRUE); - } - - /** - * Returns the draggable indicator - * - * @return bool - */ - public function isDraggable() { - return $this->draggable; - } - - /** - * Sets the indicator if the node can be a drop target - * - * @param bool $isDropTarget - * @return void - */ - public function setIsDropTarget($isDropTarget) { - $this->isDropTarget = ($isDropTarget == TRUE); - } - - /** - * Returns the indicator if the node is a drop target - * - * @return bool - */ - public function isDropTarget() { - return $this->isDropTarget; - } - - /** - * Sets the label of the node with the source field and the prefix - * - * @param string $text - * @param string $textSourceField - * @param string $prefix - * @param string $suffix - * @return void - */ - public function setText($text, $textSourceField = 'title', $prefix = '', $suffix = '') { - $this->text = $text; - $this->t3TextSourceField = $textSourceField; - $this->prefix = $prefix; - $this->suffix = $suffix; - } - - /** - * Returns the label - * - * @return string - */ - public function getText() { - return $this->text; - } - - /** - * Sets the editable text - * - * @param string $editableText - * @return void - */ - public function setEditableText($editableText) { - $this->editableText = $editableText; - } - - /** - * Returns the editable text - * - * @return string - */ - public function getEditableText() { - return $this->editableText; - } - - /** - * Returns the source field of the label - * - * @return string - */ - public function getTextSourceField() { - return $this->t3TextSourceField; - } - - /** - * Sets the paste copy indicator - * - * @param boolean $inCopyMode - * @return void - */ - public function setInCopyMode($inCopyMode) { - $this->t3InCopyMode = ($inCopyMode == TRUE); - } - - /** - * Returns the copy mode indicator - * - * @return bool - */ - public function isInCopyMode() { - return $this->t3InCopyMode; - } - - /** - * Sets the paste cut indicator - * - * @param boolean $inCutMode - * @return void - */ - public function setInCutMode($inCutMode) { - $this->t3InCutMode = ($inCutMode == TRUE); - } - - /** - * Returns the cut mode indicator - * - * @return bool - */ - public function isInCutMode() { - return $this->t3InCutMode; - } - - /** - * Returns the prefix text of the label - * - * @return string - */ - public function getPrefix() { - return $this->prefix; - } - - /** - * Returns the suffix text of the label - * - * @return string - */ - public function getSuffix() { - return $this->suffix; - } - - /** - * Sets the css class(es) - * - * @param string $class - * @return void - */ - public function setCls($class) { - $this->cls = $class; - } - - /** - * Returns the css class(es) - * - * @return string - */ - public function getCls() { - return $this->cls; - } - - /** - * Sets the quick tip - * - * @param string $qtip - * @return void - */ - public function setQTip($qtip) { - $this->qtip = $qtip; - } - - /** - * Returns the quick tip - * - * @return string - */ - public function getQTip() { - return $this->qtip; - } - - /** - * Sets the sprite icon code - * - * @param string $spriteIcon - * @return void - */ - public function setSpriteIconCode($spriteIcon) { - $this->spriteIconCode = $spriteIcon; - } - - /** - * Returns the sprite icon code - * - * @return string - */ - public function getSpriteIconCode() { - return $this->spriteIconCode; - } - - /** - * Sets the indicator if the label is editable - * - * @param bool $labelIsEditable - * @return void - */ - public function setLabelIsEditable($labelIsEditable) { - $this->labelIsEditable = ($labelIsEditable == TRUE); - } - - /** - * Returns the editable label indicator - * - * @return bool - */ - public function isLabelEditable() { - return $this->labelIsEditable; - } - - /** - * Sets the database record array - * - * @param array $record - * @return void - */ - public function setRecord($record) { - $this->record = (array) $record; - } - - /** - * Returns the database record array - * - * @return array - */ - public function getRecord() { - return $this->record; - } - - /** - * Sets the context info - * - * @param array $contextInfo - * @return void - */ - public function setContextInfo($contextInfo) { - $this->contextInfo = (array) $contextInfo; - } - - /** - * Returns the context info - * - * @return array - */ - public function getContextInfo() { - return (array) $this->contextInfo; - } - - /** - * Sets the child nodes collection - * - * @param t3lib_tree_NodeCollection $childNodes - * @return void - */ - public function setChildNodes(t3lib_tree_NodeCollection $childNodes) { - parent::setChildNodes($childNodes); - - if ($childNodes->count()) { - $this->setLeaf(FALSE); - } - } - - /** - * Sets the indicator if the node can have child nodes - * - * @param boolean $allowChildren - * @return void - */ - public function setAllowChildren($allowChildren) { - $this->allowChildren = ($allowChildren == TRUE); - } - - /** - * Checks if the node can have child nodes - * - * @return bool - */ - public function canHaveChildren() { - return $this->allowChildren; - } - - /** - * Returns the node in an array representation that can be used for serialization - * - * @return array - */ - public function toArray() { - $arrayRepresentation = array( - 'serializeClassName' => get_class($this), - 'id' => $this->getId(), - 'type' => $this->getType(), - 'editableText' => $this->getEditableText(), - 'text' => $this->getPrefix() . $this->getText() . $this->getSuffix(), - 'cls' => $this->getCls(), - 'prefix' => $this->getPrefix(), - 'suffix' => $this->getSuffix(), - 'qtip' => $this->getQTip(), - 'expanded' => $this->isExpanded(), - 'expandable' => $this->isExpandable(), - 'draggable' => $this->isDraggable(), - 'isTarget' => $this->isDropTarget(), - 'spriteIconCode' => $this->getSpriteIconCode(), - 't3TextSourceField' => $this->getTextSourceField(), - 't3InCopyMode' => $this->isInCopyMode(), - 't3InCutMode' => $this->isInCutMode(), - 't3ContextInfo' => $this->getContextInfo(), - 'editable' => $this->isLabelEditable(), - 'allowChildren' => $this->canHaveChildren(), - ); - - // only set the leaf attribute if the node has children's, - // otherwise you cannot add child's to real leaf nodes - if (!$this->isLeafNode()) { - $arrayRepresentation['leaf'] = FALSE; - } - $arrayRepresentation['nodeData'] = $arrayRepresentation; - - if ($this->hasChildNodes()) { - $arrayRepresentation['children'] = $this->childNodes->toArray(); - } - - return $arrayRepresentation; - } - - /** - * Sets data of the node by a given data array - * - * @param array $data - * @return void - */ - public function dataFromArray($data) { - parent::dataFromArray($data); - - $this->setType($data['type']); - $this->setText($data['label'], $data['t3TextSourceField'], $data['prefix'], $data['suffix']); - $this->setEditableText($data['editableText']); - $this->setCls($data['cls']); - $this->setQTip($data['qtip']); - $this->setExpanded($data['expanded']); - $this->setExpandable($data['expandable']); - $this->setDraggable($data['draggable']); - $this->setIsDropTarget($data['isTarget']); - $this->setSpriteIconCode($data['spriteIconCode']); - $this->setInCopyMode($data['t3InCopyMode']); - $this->setInCutMode($data['t3InCutMode']); - $this->setContextInfo($data['t3ContextInfo']); - $this->setLabelIsEditable($data['editable']); - $this->setAllowChildren($data['allowChildren']); - - // only set the leaf attribute if it's applied - // otherwise you cannot insert nodes into this one - if (isset($data['leaf'])) { - $this->setLeaf(FALSE); - } - } -} - -if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/class.t3lib_tree_extdirect_node.php'])) { - include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/class.t3lib_tree_extdirect_node.php']); -} - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/classes/class.tx_pagetree_commands.php b/typo3/sysext/pagetree/classes/class.tx_pagetree_commands.php deleted file mode 100644 index a02dffc402bdaf202c53b5e7b981d4660a0c32a8..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/classes/class.tx_pagetree_commands.php +++ /dev/null @@ -1,340 +0,0 @@ -<?php -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ - -/** - * Page Tree and Context Menu Commands - * - * @author Stefan Galinski <stefan.galinski@gmail.com> - * @package TYPO3 - * @subpackage tx_pagetree - */ -final class tx_pagetree_Commands { - /** - * Visibly the page - * - * @param tx_pagetree_Node $nodeData - * @return void - */ - public static function visiblyNode(tx_pagetree_Node $node) { - $data['pages'][$node->getWorkspaceId()]['hidden'] = 0; - self::processTceCmdAndDataMap(array(), $data); - } - - /** - * Hide the page - * - * @param tx_pagetree_Node $nodeData - * @return void - */ - public static function disableNode(tx_pagetree_Node $node) { - $data['pages'][$node->getWorkspaceId()]['hidden'] = 1; - self::processTceCmdAndDataMap(array(), $data); - } - - /** - * Delete the page - * - * @param tx_pagetree_Node $nodeData - * @return void - */ - public static function deleteNode(tx_pagetree_Node $node) { - $cmd['pages'][$node->getId()]['delete'] = 1; - self::processTceCmdAndDataMap($cmd); - } - - /** - * Restore the page - * - * @param tx_pagetree_Node $nodeData - * @param int $targetId - * @return void - */ - public static function restoreNode(tx_pagetree_Node $node, $targetId) { - $cmd['pages'][$node->getId()]['undelete'] = 1; - self::processTceCmdAndDataMap($cmd); - - if ($node->getId() !== $targetId) { - self::moveNode($node, $targetId); - } - } - - /** - * Updates the node label - * - * @param tx_pagetree_Node $nodeData - * @param string $updatedLabel - * @return void - */ - public static function updateNodeLabel(tx_pagetree_Node $node, $updatedLabel) { - $data['pages'][$node->getWorkspaceId()][$node->getTextSourceField()] = $updatedLabel; - self::processTceCmdAndDataMap(array(), $data); - } - - /** - * Copies a page and returns the id of the new page - * - * Node: Use a negative target id to specify a sibling target else the parent is used - * - * @param tx_pagetree_Node $sourceNode - * @param int $targetId - * @return int - */ - public static function copyNode(tx_pagetree_Node $sourceNode, $targetId) { - $cmd['pages'][$sourceNode->getId()]['copy'] = $targetId; - $returnValue = self::processTceCmdAndDataMap($cmd); - - return $returnValue['pages'][$sourceNode->getId()]; - } - - /** - * Moves a page - * - * Node: Use a negative target id to specify a sibling target else the parent is used - * - * @param tx_pagetree_Node $sourceNode - * @param int $targetId - * @return void - */ - public static function moveNode(tx_pagetree_Node $sourceNode, $targetId) { - $cmd['pages'][$sourceNode->getId()]['move'] = $targetId; - self::processTceCmdAndDataMap($cmd); - } - - /** - * Creates a page of the given doktype and returns the id of the created page - * - * @param tx_pagetree_Node $parentNode - * @param int $targetId - * @param int $pageType - * @return int - */ - public static function createNode(tx_pagetree_Node $parentNode, $targetId, $pageType) { - $placeholder = 'NEW12345'; - $data['pages'][$placeholder] = array( - 'pid' => $parentNode->getWorkspaceId(), - 'doktype' => $pageType, - 'title' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:tree.defaultPageTitle', TRUE), - ); - $newPageId = self::processTceCmdAndDataMap(array(), $data); - $node = self::getNode($newPageId[$placeholder]); - - if ($parentNode->getWorkspaceId() !== $targetId) { - self::moveNode($node, $targetId); - } - - return $newPageId[$placeholder]; - } - - /** - * Process TCEMAIN commands and data maps - * - * Command Map: - * Used for moving, recover, remove and some more operations. - * - * Data Map: - * Used for creating and updating records, - * - * This API contains all necessary access checks. - * - * @param array $cmd - * @param array $data - * @throws Exception if an error happened while the TCE processing - * @return array - */ - protected static function processTceCmdAndDataMap(array $cmd, array $data = array()) { - /** @var $tce t3lib_TCEmain */ - $tce = t3lib_div::makeInstance('t3lib_TCEmain'); - $tce->stripslashes_values = 0; - $tce->start($data, $cmd); - $tce->copyTree = t3lib_div::intInRange($GLOBALS['BE_USER']->uc['copyLevels'], 0, 100); - - if (count($cmd)) { - $tce->process_cmdmap(); - $returnValues = $tce->copyMappingArray_merged; - } elseif (count($data)) { - $tce->process_datamap(); - $returnValues = $tce->substNEWwithIDs; - } - - // check errors - if (count($tce->errorLog)) { - throw new Exception(implode(chr(10), $tce->errorLog)); - } - - return $returnValues; - } - - /** - * Returns a node from the given node id - * - * @param int $nodeId - * @param boolean $unsetMovePointers - * @return tx_pagetree_Node - */ - public static function getNode($nodeId, $unsetMovePointers = TRUE) { - $record = self::getNodeRecord($nodeId, $unsetMovePointers); - return self::getNewNode($record); - } - - /** - * Returns the mount point path for a temporary mount or the given id - * - * @static - * @param int $uid - * @return void - */ - public static function getMountPointPath($uid = -1) { - if ($uid === -1) { - $uid = intval($GLOBALS['BE_USER']->uc['pageTree_temporaryMountPoint']); - } - - if ($uid <= 0) { - return ''; - } - - $useNavTitle = $GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.showNavTitle'); - $rootline = array_reverse(t3lib_BEfunc::BEgetRootLine($uid)); - array_shift($rootline); - - $path = array(); - foreach ($rootline as $rootlineElement) { - $record = tx_pagetree_Commands::getNodeRecord($rootlineElement['uid']); - - $text = $record['title']; - if ($useNavTitle && trim($record['nav_title']) !== '') { - $text = $record['nav_title']; - } - - $path[] = $text; - } - - return htmlspecialchars('/' . implode('/', $path)); - } - - /** - * Returns a node record from a given id - * - * @param int $nodeId - * @param boolean $unsetMovePointers - * @return array - */ - public static function getNodeRecord($nodeId, $unsetMovePointers = TRUE) { - $record = t3lib_BEfunc::getRecordWSOL('pages', $nodeId, '*', '', TRUE, $unsetMovePointers); - return $record; - } - - /** - * Returns the first configured domain name for a page - * - * @static - * @param integer $uid - * @return string - */ - public static function getDomainName($uid) { - $whereClause = $GLOBALS['TYPO3_DB']->quoteStr( - 'pid=' . intval($uid) . t3lib_BEfunc::deleteClause('sys_domain') . - t3lib_BEfunc::BEenableFields('sys_domain'), - 'sys_domain' - ); - - $domain = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow( - 'domainName', - 'sys_domain', - $whereClause, - '', - 'sorting' - ); - - return htmlspecialchars($domain['domainName']); - } - - /** - * Creates a node with the given record information's - * - * @param array $record - * @return tx_pagetree_Node - */ - public static function getNewNode($record, $mountPoint = 0) { - $useNavTitle = $GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.showNavTitle'); - $addIdAsPrefix = $GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.showPageIdWithTitle'); - $addDomainName = $GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.showDomainNameWithTitle'); - $titleLength = intval($GLOBALS['BE_USER']->uc['titleLen']); - - /** @var $subNode tx_pagetree_Node */ - $subNode = t3lib_div::makeInstance('tx_pagetree_Node'); - $subNode->setRecord($record); - $subNode->setCls($record['_CSSCLASS']); - $subNode->setQTip(str_replace(' - ', '<br />', t3lib_BEfunc::titleAttribForPages($record, '', FALSE))); - $subNode->setType('pages'); - - $subNode->setId($record['uid']); - $subNode->setMountPoint($mountPoint); - $subNode->setWorkspaceId(($record['_ORIG_uid'] ? $record['_ORIG_uid'] : $record['uid'])); - - $field = 'title'; - $text = $record['title']; - if ($useNavTitle && trim($record['nav_title']) !== '') { - $field = 'nav_title'; - $text = $record['nav_title']; - } - $visibleText = t3lib_div::fixed_lgd_cs($text, $titleLength); - - $suffix = ''; - if ($addDomainName) { - $domain = self::getDomainName($record['uid']); - $suffix = ($domain !== '' ? ' [' . $domain . ']' : ''); - } - - $prefix = ($addIdAsPrefix ? '[' . $record['uid'] . '] ' : ''); - $subNode->setEditableText($text); - $subNode->setText( - htmlspecialchars($visibleText), - $field, - htmlspecialchars($prefix), - htmlspecialchars($suffix) - ); - - if ($record['uid'] !== 0) { - $spriteIconCode = t3lib_iconWorks::getSpriteIconForRecord('pages', $record); - } else { - $spriteIconCode = t3lib_iconWorks::getSpriteIcon('apps-pagetree-root'); - } - $subNode->setSpriteIconCode($spriteIconCode); - - if (!$subNode->canCreateNewPages() || intval($record['t3ver_state']) === 2) { - $subNode->setIsDropTarget(FALSE); - } - - if (!$subNode->canBeEdited() || !$subNode->canBeRemoved() || intval($record['t3ver_state']) === 2) { - $subNode->setDraggable(FALSE); - } - - return $subNode; - } -} - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/classes/class.tx_pagetree_dataprovider.php b/typo3/sysext/pagetree/classes/class.tx_pagetree_dataprovider.php deleted file mode 100644 index 6dbdc645993df9c4388538612f9d96c1dc89b9e6..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/classes/class.tx_pagetree_dataprovider.php +++ /dev/null @@ -1,358 +0,0 @@ -<?php -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ - -/** - * Abstract Tree Data Provider - * - * @author Stefan Galinski <stefan.galinski@gmail.com> - * @package TYPO3 - * @subpackage tx_pagetree - */ -class tx_pagetree_DataProvider extends t3lib_tree_AbstractDataProvider { - /** - * Node limit that should be loaded for this request per mount - * - * @var int - */ - protected $nodeLimit = 500; - - /** - * Current amount of nodes - * - * @var int - */ - protected $nodeCounter = 0; - - /** - * Hidden Records - * - * @var array - */ - protected $hiddenRecords = array(); - - /** - * Constructor - */ - public function __construct() { - $this->hiddenRecords = t3lib_div::trimExplode( - ',', - $GLOBALS['BE_USER']->getTSConfigVal('options.hideRecords.pages') - ); - } - - /** - * Returns the root node - * - * @return t3lib_tree_Node - */ - public function getRoot() { - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node'); - $node->setId('root'); - $node->setExpanded(true); - - return $node; - } - - /** - * Fetches the sub-nodes of the given node - * - * @param t3lib_tree_Node $node - * @param int $mountPoint - * @param int $level internally used variable as a recursion limiter - * @return t3lib_tree_NodeCollection - */ - public function getNodes(t3lib_tree_Node $node, $mountPoint = 0, $level = 0) { - /** @var $nodeCollection tx_pagetree_NodeCollection */ - $nodeCollection = t3lib_div::makeInstance('tx_pagetree_NodeCollection'); - if ($level >= 99) { - return $nodeCollection; - } - - $subpages = $this->getSubpages($node->getId()); - if (!is_array($subpages) || !count($subpages)) { - return $nodeCollection; - } - - foreach ($subpages as $subpage) { - if (in_array($subpage['uid'], $this->hiddenRecords)) { - continue; - } - - $subpage = t3lib_befunc::getRecordWSOL('pages', $subpage['uid'], '*', '', TRUE, TRUE); - if (!$subpage) { - continue; - } - - $subNode = tx_pagetree_Commands::getNewNode($subpage, $mountPoint); - if ($this->nodeCounter < $this->nodeLimit) { - $childNodes = $this->getNodes($subNode, $mountPoint, $level + 1); - $subNode->setChildNodes($childNodes); - $this->nodeCounter += $childNodes->count(); - } else { - $subNode->setLeaf(!$this->hasNodeSubPages($subNode->getId())); - } - - $nodeCollection->append($subNode); - } - - return $nodeCollection; - } - - /** - * Returns a node collection of filtered nodes - * - * @param t3lib_tree_Node $node - * @param string $searchFilter - * @param int $mountPoint - * @return void - */ - public function getFilteredNodes(t3lib_tree_Node $node, $searchFilter, $mountPoint = 0) { - /** @var $nodeCollection tx_pagetree_NodeCollection */ - $nodeCollection = t3lib_div::makeInstance('tx_pagetree_NodeCollection'); - - $records = $this->getSubpages(-1, $searchFilter); - if (!is_array($records) || !count($records)) { - return $nodeCollection; - } - - $nodeId = intval($node->getId()); - foreach ($records as $record) { - $record = tx_pagetree_Commands::getNodeRecord($record['uid']); - if (intval($record['pid']) === -1 || in_array($record['uid'], $this->hiddenRecords)) { - continue; - } - - $rootline = t3lib_BEfunc::BEgetRootLine($record['uid'], ' AND uid != ' . intval($nodeId)); - $rootline = array_reverse($rootline); - if ($nodeId === 0) { - array_shift($rootline); - } - $reference = $nodeCollection; - - $inFilteredRootline = FALSE; - $amountOfRootlineElements = count($rootline); - for ($i = 0; $i < $amountOfRootlineElements; ++$i) { - $rootlineElement = $rootline[$i]; - if (intval($rootlineElement['pid']) === $nodeId) { - $inFilteredRootline = TRUE; - } - - if (!$inFilteredRootline) { - continue; - } - - $rootlineElement = tx_pagetree_Commands::getNodeRecord($rootlineElement['uid']); - $ident = intval($rootlineElement['sorting']) . intval($rootlineElement['uid']); - if ($reference->offsetExists($ident)) { - /** @var $refNode tx_pagetree_Node */ - $refNode = $reference->offsetGet($ident); - $refNode->setExpanded(TRUE); - $refNode->setLeaf(FALSE); - - $reference = $refNode->getChildNodes(); - continue; - } - - $refNode = tx_pagetree_Commands::getNewNode($rootlineElement, $mountPoint); - $replacement = '<span class="typo3-pagetree-filteringTree-highlight">$1</span>'; - $text = preg_replace('/(' . $searchFilter . ')/i', $replacement, $refNode->getText()); - $refNode->setText($text, $refNode->getTextSourceField(), $refNode->getPrefix(), $refNode->getSuffix()); - - /** @var $childCollection tx_pagetree_NodeCollection */ - $childCollection = t3lib_div::makeInstance('tx_pagetree_NodeCollection'); - - if (($i +1) >= $amountOfRootlineElements) { - $childNodes = $this->getNodes($refNode, $mountPoint); - foreach ($childNodes as $childNode) { - /** @var $childNode tx_pagetree_Node */ - $childRecord = $childNode->getRecord(); - $childIdent = intval($childRecord['sorting']) . intval($childRecord['uid']); - $childCollection->offsetSet($childIdent, $childNode); - } - $refNode->setChildNodes($childNodes); - } - - $refNode->setChildNodes($childCollection); - $reference->offsetSet($ident, $refNode); - $reference->ksort(); - - $reference = $childCollection; - } - } - - return $nodeCollection; - } - - /** - * Returns the page tree mounts for the current user - * - * Note: If you add the search filter parameter, the nodes will be filtered by this string. - * - * @param string $searchFilter - * @return array - */ - public function getTreeMounts($searchFilter = '') { - /** @var $nodeCollection tx_pagetree_NodeCollection */ - $nodeCollection = t3lib_div::makeInstance('tx_pagetree_NodeCollection'); - - $isTemporaryMountPoint = FALSE; - $mountPoints = intval($GLOBALS['BE_USER']->uc['pageTree_temporaryMountPoint']); - if (!$mountPoints) { - $mountPoints = array_map('intval', $GLOBALS['BE_USER']->returnWebmounts()); - $mountPoints = array_unique($mountPoints); - } else { - $isTemporaryMountPoint = TRUE; - $mountPoints = array($mountPoints); - } - - if (!count($mountPoints)) { - return $nodeCollection; - } - - $showRootlineAboveMounts = $GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.showPathAboveMounts'); - $class = (count($mountPoints) <= 1 ? 'typo3-pagetree-node-notExpandable' : ''); - foreach ($mountPoints as $mountPoint) { - if ($mountPoint === 0) { - $sitename = 'TYPO3'; - if ($GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] !== '') { - $sitename = $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename']; - } - - $record = array( - 'uid' => 0, - 'title' => $sitename, - ); - $subNode = tx_pagetree_Commands::getNewNode($record); - $subNode->setLabelIsEditable(FALSE); - $subNode->setType('pages_root'); - } else { - $record = t3lib_BEfunc::getRecordWSOL('pages', $mountPoint, '*', '', TRUE); - if (!$record) { - continue; - } - - $subNode = tx_pagetree_Commands::getNewNode($record, $mountPoint); - if ($showRootlineAboveMounts && !$isTemporaryMountPoint) { - $rootline = tx_pagetree_Commands::getMountPointPath($record['uid']); - $subNode->setReadableRootline($rootline); - } - } - - $subNode->setIsMountPoint(TRUE); - $subNode->setExpanded(TRUE); - $subNode->setDraggable(FALSE); - $subNode->setIsDropTarget(FALSE); - $subNode->setCls($class); - - if ($searchFilter === '') { - $childNodes = $this->getNodes($subNode, $mountPoint); - } else { - $childNodes = $this->getFilteredNodes($subNode, $searchFilter, $mountPoint); - $subNode->setExpanded(TRUE); - } - - $subNode->setChildNodes($childNodes); - $nodeCollection->append($subNode); - } - - return $nodeCollection; - } - - /** - * Returns the where clause for fetching pages - * - * @param int $id - * @param string $searchFilter - * @return string - */ - protected function getWhereClause($id, $searchFilter = '') { - $where = $GLOBALS['BE_USER']->getPagePermsClause(1) . - t3lib_BEfunc::deleteClause('pages') . - t3lib_BEfunc::versioningPlaceholderClause('pages'); - - if (is_numeric($id) && $id >= 0) { - $where .= ' AND pid= ' . $GLOBALS['TYPO3_DB']->fullQuoteStr(intval($id), 'pages'); - } - - if ($searchFilter !== '') { - $searchFilter = $GLOBALS['TYPO3_DB']->fullQuoteStr('%' . $searchFilter . '%', 'pages'); - $useNavTitle = $GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.showNavTitle'); - - if ($useNavTitle) { - $where .= ' AND (nav_title LIKE ' . $searchFilter . - ' OR (nav_title = "" && title LIKE ' . $searchFilter . '))'; - } else { - $where .= ' AND title LIKE ' . $searchFilter; - } - } - - return $where; - } - - /** - * Returns all sub-pages of a given id - * - * @param int $id - * @param string $searchFilter - * @return array - */ - protected function getSubpages($id, $searchFilter = '') { - $where = $this->getWhereClause($id, $searchFilter); - $subpages = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows( - 'uid', 'pages', $where, '', 'sorting', '', 'uid' - ); - - return $subpages; - } - - /** - * Returns true if the node has child's - * - * @param int $id - * @return bool - */ - protected function hasNodeSubPages($id) { - $where = $this->getWhereClause($id); - $subpage = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow( - 'uid', 'pages', $where, '', 'sorting', '', 'uid' - ); - - $returnValue = TRUE; - if (!$subpage['uid']) { - $returnValue = FALSE; - } - - return $returnValue; - } -} - -if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/class.tx_pagetree_dataprovider.php'])) { - include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/class.tx_pagetree_dataprovider.php']); -} - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/classes/class.tx_pagetree_indicator.php b/typo3/sysext/pagetree/classes/class.tx_pagetree_indicator.php deleted file mode 100644 index 7fc16e9c11ca177522003ff2ef8e84d7c95d1037..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/classes/class.tx_pagetree_indicator.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php -/*************************************************************** - * Copyright notice - * - * (c) 2010 Susanne Moog <typo3@susanne-moog.de> - * All rights reserved - * - * This script is part of the TYPO3 project. The TYPO3 project is - * free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * The GNU General Public License can be found at - * http://www.gnu.org/copyleft/gpl.html. - * A copy is found in the textfile GPL.txt and important notices to the license - * from the author is found in LICENSE.txt distributed with these scripts. - * - * - * This script is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * This copyright notice MUST APPEAR in all copies of the script! - ***************************************************************/ - -/** - * Class for pagetree indicator - * - * @author Susanne Moog <typo3@susanne-moog.de> - * @package TYPO3 - * @subpackage tx_pagetree - */ -class tx_pagetree_Indicator { - /** - * Indicator Providers - * - * @var array - */ - protected $indicatorProviders = array(); - - /** - * Constructor for class tx_reports_report_Status - */ - public function __construct() { - $this->getIndicatorProviders(); - } - - /** - * Gets all registered indicator providers and instantiates them - * - */ - protected function getIndicatorProviders() { - $providers = $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['pagetree']['tx_pagetree']['indicator']['providers']; - if (!is_array($providers)) { - return; - } - - foreach ($providers as $indicatorProvider) { - /** @var $indicatorProviderInstance tx_pagetree_IndicatorProvider */ - $indicatorProviderInstance = t3lib_div::makeInstance($indicatorProvider); - if ($indicatorProviderInstance instanceof tx_pagetree_IndicatorProvider) { - $this->indicatorProviders[] = $indicatorProviderInstance; - } - } - } - - /** - * Runs through all indicator providers and returns all indicators collected. - * - * @return array An array of - */ - public function getAllIndicators() { - $indicators = array(); - foreach ($this->indicatorProviders as $indicatorProvider) { - $indicator = $indicatorProvider->getIndicator(); - if($indicator) { - $indicators[] = $indicator; - } - } - - return $indicators; - } -} - -if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/class.tx_pagetree_indicator.php'])) { - include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/class.tx_pagetree_indicator.php']); -} - - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/classes/class.tx_pagetree_node.php b/typo3/sysext/pagetree/classes/class.tx_pagetree_node.php deleted file mode 100644 index 6bd92a234e4a2bf1515a9531cae698d3514ad39b..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/classes/class.tx_pagetree_node.php +++ /dev/null @@ -1,343 +0,0 @@ -<?php -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ - -/** - * Node designated for the page tree - * - * @author Stefan Galinski <stefan.galinski@gmail.com> - * @package TYPO3 - * @subpackage tx_pagetree - */ -class tx_pagetree_Node extends t3lib_tree_ExtDirect_Node { - /** - * Cached access rights to save some performance - * - * @var array - */ - protected $cachedAccessRights = array(); - - /** - * Workspace Overlay Id - * - * @var int - */ - protected $workspaceId = 0; - - /** - * Mount Point Id - * - * @var int - */ - protected $mountPoint = 0; - - /** - * Readable Rootline - * - * @var string - */ - protected $readableRootline = ''; - - /** - * Indicator if the node is a mount point - * - * @var bool - */ - protected $isMountPoint = FALSE; - - /** - * Set's the original id of the element - * - * @param int $workspaceId - * @return void - */ - public function setWorkspaceId($workspaceId) { - $this->workspaceId = intval($workspaceId); - } - - /** - * Returns the original id of the element - * - * @return int - */ - public function getWorkspaceId() { - return $this->workspaceId; - } - - /** - * Sets the mount point id - * - * @param int $mountPoint - * @return void - */ - public function setMountPoint($mountPoint) { - $this->mountPoint = intval($mountPoint); - } - - /** - * Returns the mount point id - * - * @return int - */ - public function getMountPoint() { - return $this->mountPoint; - } - - /** - * Sets the indicator if the node is a mount point - * - * @param boolean $isMountPoint - * @return void - */ - public function setIsMountPoint($isMountPoint) { - $this->isMountPoint = ($isMountPoint == TRUE); - } - - /** - * Returns true if the node is a mount point - * - * @return bool - */ - public function isMountPoint() { - return $this->isMountPoint; - } - - /** - * Sets the readable rootline - * - * @param string $rootline - * @return void - */ - public function setReadableRootline($rootline) { - $this->readableRootline = $rootline; - } - - /** - * Returns the readable rootline - * - * @return string - */ - public function getReadableRootline() { - return $this->readableRootline; - } - - /** - * Checks if the user may create pages below the given page - * - * @return void - */ - protected function canCreate() { - if (!isset($this->cachedAccessRights['create'])) { - $this->cachedAccessRights['create'] = - $GLOBALS['BE_USER']->doesUserHaveAccess($this->record, 8); - } - - return $this->cachedAccessRights['create']; - } - - /** - * Checks if the user has editing rights - * - * @return void - */ - protected function canEdit() { - if (!isset($this->cachedAccessRights['edit'])) { - $this->cachedAccessRights['edit'] = - $GLOBALS['BE_USER']->doesUserHaveAccess($this->record, 2); - } - - return $this->cachedAccessRights['edit']; - } - - /** - * Checks if the user has the right to delete the page - * - * @return void - */ - protected function canRemove() { - if (!isset($this->cachedAccessRights['remove'])) { - $this->cachedAccessRights['remove'] = - $GLOBALS['BE_USER']->doesUserHaveAccess($this->record, 4); - - if (!$this->isLeafNode() && !$GLOBALS['BE_USER']->uc['recursiveDelete']) { - $this->cachedAccessRights['remove'] = FALSE; - } - } - - return $this->cachedAccessRights['remove']; - } - - /** - * Checks if the page can be disabled - * - * @return void - */ - public function canBeDisabledAndEnabled() { - return $this->canEdit($this->record); - } - - /** - * Checks if the page is allowed to can be cut - * - * @return void - */ - public function canBeCut() { - return $this->canEdit($this->record) && intval($this->record['t3ver_state']) !== 2; - } - - /** - * Checks if the page is allowed to be edited - * - * @return void - */ - public function canBeEdited() { - return $this->canEdit($this->record); - } - - /** - * Checks if the page is allowed to be copied - * - * @return void - */ - public function canBeCopied() { - return $this->canCreate($this->record) && intval($this->record['t3ver_state']) !== 2; - } - - /** - * Checks if there can be new pages created - * - * @return void - */ - public function canCreateNewPages() { - return $this->canCreate($this->record); - } - - /** - * Checks if the page is allowed to be removed - * - * @return void - */ - public function canBeRemoved() { - return $this->canRemove($this->record) && intval($this->record['t3ver_state']) !== 2; - } - - /** - * Checks if something can be pasted into the node - * - * @return bool - */ - public function canBePastedInto() { - return intval($this->record['t3ver_state']) !== 2; - } - - /** - * Checks if something can be pasted after the node - * - * @return bool - */ - public function canBePastedAfter() { - return intval($this->record['t3ver_state']) !== 2; - } - - /** - * Checks if the page is allowed to show history - * - * @return void - */ - public function canShowHistory() { - return TRUE; - } - - /** - * Checks if the page is allowed to be viewed - * - * @return void - */ - public function canBeViewed() { - return TRUE; - } - - /** - * Checks if the page is allowed to show info - * - * @return void - */ - public function canShowInfo() { - return TRUE; - } - - /** - * Checks if the page is allowed to be a temporary mount point - * - * @return void - */ - public function canBeTemporaryMountPoint() { - return TRUE; - } - - /** - * Returns the node in an array representation that can be used for serialization - * - * @return array - */ - public function toArray() { - $arrayRepresentation = parent::toArray(); - - $arrayRepresentation['id'] = 'mp-' . $this->getMountPoint() . '-' . $this->getId(); - $arrayRepresentation['realId'] = $this->getId(); - $arrayRepresentation['nodeData']['id'] = $this->getId(); - - $arrayRepresentation['readableRootline'] = $this->getReadableRootline(); - $arrayRepresentation['nodeData']['readableRootline'] = $this->getReadableRootline(); - - $arrayRepresentation['nodeData']['mountPoint'] = $this->getMountPoint(); - $arrayRepresentation['nodeData']['workspaceId'] = $this->getWorkspaceId(); - $arrayRepresentation['nodeData']['isMountPoint'] = $this->isMountPoint(); - $arrayRepresentation['nodeData']['serializeClassName'] = get_class($this); - - return $arrayRepresentation; - } - - /** - * Sets data of the node by a given data array - * - * @param array $data - * @return void - */ - public function dataFromArray($data) { - parent::dataFromArray($data); - $this->setWorkspaceId($data['workspaceId']); - $this->setMountPoint($data['mountPoint']); - $this->setReadableRootline($data['readableRootline']); - $this->setIsMountPoint($data['isMountPoint']); - } -} - -if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/class.tx_pagetree_node.php'])) { - include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/class.tx_pagetree_node.php']); -} - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/classes/class.tx_pagetree_nodecollection.php b/typo3/sysext/pagetree/classes/class.tx_pagetree_nodecollection.php deleted file mode 100644 index 70097bc1bdc7aaf6f16a07b88e5a9e09fe8ffe15..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/classes/class.tx_pagetree_nodecollection.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ - -/** - * Tree Node Collection - * - * @author Stefan Galinski <stefan.galinski@gmail.com> - * @package TYPO3 - * @subpackage t3lib - */ -class tx_pagetree_NodeCollection extends t3lib_tree_NodeCollection { - /** - * Returns the collection in an array representation for e.g. serialization - * - * @return array - */ - public function toArray() { - $arrayRepresentation = parent::toArray(); - unset($arrayRepresentation['serializeClassName']); - return $arrayRepresentation; - } -} - -if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/class.tx_pagetree_nodecollection.php'])) { - include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/class.tx_pagetree_nodecollection.php']); -} - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/classes/contextmenu/class.tx_pagetree_contextmenu_action.php b/typo3/sysext/pagetree/classes/contextmenu/class.tx_pagetree_contextmenu_action.php deleted file mode 100644 index 5ed1f8fc8f0059bac30b4538b658f206c1d68915..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/classes/contextmenu/class.tx_pagetree_contextmenu_action.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php -/*************************************************************** - * Copyright notice - * - * (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> - * All rights reserved - * - * This script is part of the TYPO3 project. The TYPO3 project is - * free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * The GNU General Public License can be found at - * http://www.gnu.org/copyleft/gpl.html. - * A copy is found in the textfile GPL.txt and important notices to the license - * from the author is found in LICENSE.txt distributed with these scripts. - * - * - * This script is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * This copyright notice MUST APPEAR in all copies of the script! - ***************************************************************/ - -/** - * Context Menu Action for the Page Tree - * - * @author Stefan Galinski <stefan.galinski@gmail.com> - * @package TYPO3 - * @subpackage t3lib - */ -class tx_pagetree_ContextMenu_Action extends t3lib_contextmenu_Action { -} - -if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/class.tx_pagetree_contextmenu_action.php']) { - include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/class.tx_pagetree_contextmenu_action.php']); -} - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/classes/contextmenu/class.tx_pagetree_contextmenu_dataprovider.php b/typo3/sysext/pagetree/classes/contextmenu/class.tx_pagetree_contextmenu_dataprovider.php deleted file mode 100644 index 2e8b9f65c7e31d15cd81fda24076823123f64992..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/classes/contextmenu/class.tx_pagetree_contextmenu_dataprovider.php +++ /dev/null @@ -1,267 +0,0 @@ -<?php -/*************************************************************** - * Copyright notice - * - * (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> - * All rights reserved - * - * This script is part of the TYPO3 project. The TYPO3 project is - * free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * The GNU General Public License can be found at - * http://www.gnu.org/copyleft/gpl.html. - * A copy is found in the textfile GPL.txt and important notices to the license - * from the author is found in LICENSE.txt distributed with these scripts. - * - * - * This script is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * This copyright notice MUST APPEAR in all copies of the script! - ***************************************************************/ - -// @TODO the most functionality should be moved to the parent data provider class - -/** - * Context Menu Data Provider for the Page Tree - * - * @author Stefan Galinski <stefan.galinski@gmail.com> - * @package TYPO3 - * @subpackage t3lib - */ -class tx_pagetree_ContextMenu_DataProvider extends t3lib_contextmenu_AbstractDataProvider { - /** - * List of actions that are generally disabled - * - * @var array - */ - protected $disableItems = array(); - - /** - * Old Context Menu Options (access mapping) - * - * Note: Only option with different namings are mapped! - * - * @var array - */ - protected $legacyContextMenuMapping = array( - 'hide' => 'disable', - 'paste' => 'pasteInto,pasteAfter', - 'mount_as_treeroot' => 'mountAsTreeroot', - ); - - /** - * Fetches the items that should be disabled from the context menu - * - * @return array - */ - protected function getDisableActions() { - $tsConfig = $GLOBALS['BE_USER']->getTSConfig( - 'options.contextMenu.' . $this->getContextMenuType() . '.disableItems' - ); - - $disableItems = array(); - if (trim($tsConfig['value']) !== '') { - $disableItems = t3lib_div::trimExplode(',', $tsConfig['value']); - } - - $tsConfig = $GLOBALS['BE_USER']->getTSConfig('options.contextMenu.pageTree.disableItems'); - $oldDisableItems = array(); - if (trim($tsConfig['value']) !== '') { - $oldDisableItems = t3lib_div::trimExplode(',', $tsConfig['value']); - } - - $additionalItems = array(); - foreach ($oldDisableItems as $item) { - if (!isset($this->legacyContextMenuMapping[$item])) { - $additionalItems[] = $item; - continue; - } - - if (strpos($this->legacyContextMenuMapping[$item], ',')) { - $actions = t3lib_div::trimExplode(',', $this->legacyContextMenuMapping[$item]); - $additionalItems = array_merge($additionalItems, $actions); - } else { - $additionalItems[] = $item; - } - } - - return array_merge($disableItems, $additionalItems); - } - - /** - * Returns the actions for the node - * - * @param tx_pagetree_Node $node - * @return t3lib_contextmenu_ActionCollection - */ - public function getActionsForNode(t3lib_tree_Node $node) { - $this->disableItems = $this->getDisableActions(); - $configuration = $this->getConfiguration(); - $contextMenuActions = array(); - if (is_array($configuration)) { - $contextMenuActions = $this->getNextContextMenuLevel($configuration, $node); - } - - return $contextMenuActions; - } - - /** - * Evaluates a given display condition and returns true if the condition matches - * - * Examples: - * getContextInfo|inCutMode:1 || isInCopyMode:1 - * isLeafNode:1 - * isLeafNode:1 && isInCutMode:1 - * - * @param tx_pagetree_Node $node - * @param string $displayCondition - * @return boolean - */ - protected function evaluateDisplayCondition(tx_pagetree_Node $node, $displayCondition) { - if ($displayCondition === '') { - return TRUE; - } - - // parse condition string - $conditions = array(); - preg_match_all('/(.+?)(>=|<=|!=|=|>|<)(.+?)(\|\||&&|$)/is', $displayCondition, $conditions); - - $lastResult = FALSE; - $chainType = ''; - $amountOfConditions = count($conditions[0]); - for ($i = 0; $i < $amountOfConditions; ++$i) { - // check method for existence - $method = trim($conditions[1][$i]); - list($method, $index) = explode('|', $method); - if (!method_exists($node, $method)) { - continue; - } - - // fetch compare value - $returnValue = call_user_func(array($node, $method)); - if (is_array($returnValue)) { - $returnValue = $returnValue[$index]; - } - - // compare fetched and expected values - $operator = trim($conditions[2][$i]); - $expected = trim($conditions[3][$i]); - if ($operator === '=') { - $returnValue = ($returnValue == $expected); - } elseif ($operator === '>') { - $returnValue = ($returnValue > $expected); - } elseif ($operator === '<') { - $returnValue = ($returnValue < $expected); - } elseif ($operator === '>=') { - $returnValue = ($returnValue >= $expected); - } elseif ($operator === '<=') { - $returnValue = ($returnValue <= $expected); - } elseif ($operator === '!=') { - $returnValue = ($returnValue != $expected); - } else { - $returnValue = FALSE; - $lastResult = FALSE; - } - - // chain last result and the current if requested - if ($chainType === '||') { - $lastResult = ($lastResult || $returnValue); - } elseif ($chainType === '&&') { - $lastResult = ($lastResult && $returnValue); - } else { - $lastResult = $returnValue; - } - - // save chain type for the next condition - $chainType = trim($conditions[4][$i]); - } - - return $lastResult; - } - - /** - * Returns the next context menu level - * - * @param array $actions - * @param tx_pagetree_Node $node - * @param int $level - * @return t3lib_contextmenu_ActionCollection - */ - protected function getNextContextMenuLevel(array $actions, tx_pagetree_Node $node, $level = 0) { - /** @var $actionCollection t3lib_contextmenu_ActionCollection */ - $actionCollection = t3lib_div::makeInstance('t3lib_contextmenu_ActionCollection'); - - if ($level > 5) { - return $actionCollection; - } - - $type = ''; - foreach ($actions as $index => $actionConfiguration) { - if (substr($index, -1) !== '.') { - $type = $actionConfiguration; - if ($type !== 'DIVIDER') { - continue; - } - } - - if (!in_array($type, array('DIVIDER', 'SUBMENU', 'ITEM'))) { - continue; - } - - /** @var $action tx_pagetree_ContextMenu_Action */ - $action = t3lib_div::makeInstance('tx_pagetree_ContextMenu_Action'); - $action->setId($index); - - if ($type === 'DIVIDER') { - $action->setType('divider'); - } else { - if (in_array($actionConfiguration['name'], $this->disableItems) - || (isset($actionConfiguration['displayCondition']) - && trim($actionConfiguration['displayCondition']) !== '' - && !$this->evaluateDisplayCondition($node, $actionConfiguration['displayCondition']) - ) - ) { - unset($action); - continue; - } - - $label = $GLOBALS['LANG']->sL($actionConfiguration['label'], TRUE); - if ($type === 'SUBMENU') { - $action->setType('submenu'); - $action->setChildActions( - $this->getNextContextMenuLevel($actionConfiguration, $node, $level + 1) - ); - } else { - $action->setType('action'); - $action->setCallbackAction($actionConfiguration['callbackAction']); - } - - $action->setLabel($label); - if (isset($actionConfiguration['icon']) && trim($actionConfiguration['icon']) !== '') { - $action->setIcon($actionConfiguration['icon']); - } elseif (isset($actionConfiguration['spriteIcon'])) { - $action->setClass( - t3lib_iconWorks::getSpriteIconClasses($actionConfiguration['spriteIcon']) - ); - } - } - - $actionCollection->offsetSet($level . intval($index), $action); - $actionCollection->ksort(); - } - - return $actionCollection; - } -} - -if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/class.tx_pagetree_contextmenu_dataprovider.php']) { - include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/class.tx_pagetree_contextmenu_dataprovider.php']); -} - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_commands.php b/typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_commands.php deleted file mode 100644 index ae6cd38777b48649b0baeb7728d695d6ffa7fefd..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_commands.php +++ /dev/null @@ -1,375 +0,0 @@ -<?php -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ - -/** - * Commands for the Page tree - * - * @author Stefan Galinski <stefan.galinski@gmail.com> - * @package TYPO3 - * @subpackage tx_pagetree - */ -class tx_pagetree_ExtDirect_Commands { - /** - * Visibly the page - * - * @param stdClass $nodeData - * @return array - */ - public function visiblyNode($nodeData) { - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node', (array) $nodeData); - - /** @var $dataProvider tx_pagetree_DataProvider */ - $dataProvider = t3lib_div::makeInstance('tx_pagetree_DataProvider'); - - try { - tx_pagetree_Commands::visiblyNode($node); - $newNode = tx_pagetree_Commands::getNode($node->getId()); - $newNode->setLeaf($node->isLeafNode()); - $returnValue = $newNode->toArray(); - } catch (Exception $exception) { - $returnValue = array( - 'success' => FALSE, - 'error' => $exception->getMessage(), - ); - } - - return $returnValue; - } - - /** - * Hide the page - * - * @param stdClass $nodeData - * @return array - */ - public function disableNode($nodeData) { - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node', (array) $nodeData); - - /** @var $dataProvider tx_pagetree_DataProvider */ - $dataProvider = t3lib_div::makeInstance('tx_pagetree_DataProvider'); - - try { - tx_pagetree_Commands::disableNode($node); - $newNode = tx_pagetree_Commands::getNode($node->getId()); - $newNode->setLeaf($node->isLeafNode()); - $returnValue = $newNode->toArray(); - } catch (Exception $exception) { - $returnValue = array( - 'success' => FALSE, - 'message' => $exception->getMessage(), - ); - } - - return $returnValue; - } - - /** - * Delete the page - * - * @param stdClass $nodeData - * @return array - */ - public function deleteNode($nodeData) { - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node', (array) $nodeData); - - try { - tx_pagetree_Commands::deleteNode($node); - - $returnValue = array(); - if ($GLOBALS['BE_USER']->workspace) { - $record = tx_pagetree_Commands::getNodeRecord($node->getId()); - if ($record['_ORIG_uid']) { - $newNode = tx_pagetree_Commands::getNewNode($record); - $returnValue = $newNode->toArray(); - } - } - } catch (Exception $exception) { - $returnValue = array( - 'success' => FALSE, - 'message' => $exception->getMessage(), - ); - } - - return $returnValue; - } - - /** - * Restore the page - * - * @param stdClass $nodeData - * @param int $destination - * @return array - */ - public function restoreNode($nodeData, $destination) { - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node', (array) $nodeData); - - try { - tx_pagetree_Commands::restoreNode($node, $destination); - $newNode = tx_pagetree_Commands::getNode($node->getId()); - $returnValue = $newNode->toArray(); - } catch (Exception $exception) { - $returnValue = array( - 'success' => FALSE, - 'message' => $exception->getMessage(), - ); - } - - return $returnValue; - } - - /** - * Updates the given field with a new text value, may be used to inline update - * the title field in the new page tree - * - * @param stdClass $nodeData - * @param string $updatedLabel - * @return array - */ - public function updateLabel($nodeData, $updatedLabel) { - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node', (array) $nodeData); - - try { - tx_pagetree_Commands::updateNodeLabel($node, $updatedLabel); - - $shortendedText = t3lib_div::fixed_lgd_cs($updatedLabel, intval($GLOBALS['BE_USER']->uc['titleLen'])); - $returnValue = array( - 'editableText' => $updatedLabel, - 'updatedText' => htmlspecialchars($shortendedText), - ); - } catch (Exception $exception) { - $returnValue = array( - 'success' => FALSE, - 'message' => $exception->getMessage(), - ); - } - - return $returnValue; - } - - /** - * Sets a temporary mount point - * - * @param stdClass $nodeData - * @return array - */ - public static function setTemporaryMountPoint($nodeData) { - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node', (array) $nodeData); - $GLOBALS['BE_USER']->uc['pageTree_temporaryMountPoint'] = $node->getId(); - $GLOBALS['BE_USER']->writeUC($GLOBALS['BE_USER']->uc); - - return tx_pagetree_Commands::getMountPointPath(); - } - - /** - * Moves the source node directly as the first child of the destination node - * - * @param stdClass $nodeData - * @param int $destination - * @return array - */ - public function moveNodeToFirstChildOfDestination($nodeData, $destination) { - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node', (array) $nodeData); - - try { - tx_pagetree_Commands::moveNode($node, $destination); - $newNode = tx_pagetree_Commands::getNode($node->getId(), FALSE); - $newNode->setLeaf($node->isLeafNode()); - $returnValue = $newNode->toArray(); - } catch (Exception $exception) { - $returnValue = array( - 'success' => FALSE, - 'message' => $exception->getMessage(), - ); - } - - return $returnValue; - } - - /** - * Moves the source node directly after the destination node - * - * @param stdClass $nodeData - * @param int $destination - * @return void - */ - public function moveNodeAfterDestination($nodeData, $destination) { - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node', (array) $nodeData); - - try { - tx_pagetree_Commands::moveNode($node, -$destination); - $newNode = tx_pagetree_Commands::getNode($node->getId(), FALSE); - $newNode->setLeaf($node->isLeafNode()); - $returnValue = $newNode->toArray(); - } catch (Exception $exception) { - $returnValue = array( - 'success' => FALSE, - 'message' => $exception->getMessage(), - ); - } - - return $returnValue; - } - - /** - * Copies the source node directly as the first child of the destination node and - * returns the created node. - * - * @param stdClass $nodeData - * @param int $destination - * @return array - */ - public function copyNodeToFirstChildOfDestination($nodeData, $destination) { - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node', (array) $nodeData); - - /** @var $dataProvider tx_pagetree_DataProvider */ - $dataProvider = t3lib_div::makeInstance('tx_pagetree_DataProvider'); - - try { - $newPageId = tx_pagetree_Commands::copyNode($node, $destination); - $newNode = tx_pagetree_Commands::getNode($newPageId); - $newNode->setLeaf($node->isLeafNode()); - $returnValue = $newNode->toArray(); - } catch (Exception $exception) { - $returnValue = array( - 'success' => FALSE, - 'message' => $exception->getMessage(), - ); - } - - return $returnValue; - } - - /** - * Copies the source node directly after the destination node and returns the - * created node. - * - * @param stdClass $nodeData - * @param int $destination - * @return array - */ - public function copyNodeAfterDestination($nodeData, $destination) { - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node', (array) $nodeData); - - /** @var $dataProvider tx_pagetree_DataProvider */ - $dataProvider = t3lib_div::makeInstance('tx_pagetree_DataProvider'); - - try { - $newPageId = tx_pagetree_Commands::copyNode($node, -$destination); - $newNode = tx_pagetree_Commands::getNode($newPageId); - $newNode->setLeaf($node->isLeafNode()); - $returnValue = $newNode->toArray(); - } catch (Exception $exception) { - $returnValue = array( - 'success' => FALSE, - 'message' => $exception->getMessage(), - ); - } - - return $returnValue; - } - - /** - * Inserts a new node as the first child node of the destination node and returns the created node. - * - * @param stdClass $parentNodeData - * @param int $pageType - * @return array - */ - public function insertNodeToFirstChildOfDestination($parentNodeData, $pageType) { - /** @var $parentNode tx_pagetree_Node */ - $parentNode = t3lib_div::makeInstance('tx_pagetree_Node', (array) $parentNodeData); - - try { - $newPageId = tx_pagetree_Commands::createNode($parentNode, $parentNode->getId(), $pageType); - $returnValue = tx_pagetree_Commands::getNode($newPageId)->toArray(); - } catch (Exception $exception) { - $returnValue = array( - 'success' => FALSE, - 'message' => $exception->getMessage(), - ); - } - - return $returnValue; - } - - /** - * Inserts a new node directly after the destination node and returns the created node. - * - * @param stdClass $parentNodeData - * @param int $destination - * @param int $pageType - * @return array - */ - public function insertNodeAfterDestination($parentNodeData, $destination, $pageType) { - /** @var $parentNode tx_pagetree_Node */ - $parentNode = t3lib_div::makeInstance('tx_pagetree_Node', (array) $parentNodeData); - - try { - $newPageId = tx_pagetree_Commands::createNode($parentNode, -$destination, $pageType); - $returnValue = tx_pagetree_Commands::getNode($newPageId)->toArray(); - } catch (Exception $exception) { - $returnValue = array( - 'success' => FALSE, - 'message' => $exception->getMessage(), - ); - } - - return $returnValue; - } - - /** - * Returns the view link of a given node - * - * @param stdClass $nodeData - * @return string - */ - public static function getViewLink($nodeData) { - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node', (array) $nodeData); - - $javascriptLink = t3lib_BEfunc::viewOnClick($node->getId()); - preg_match('/window\.open\(\'([^\']+)\'/i', $javascriptLink, $match); - - return $match[1]; - } -} - -if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_commands.php'])) { - include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_commands.php']); -} - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_contextmenu.php b/typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_contextmenu.php deleted file mode 100644 index 36917125026f3ae76ee6eccdf354a416528c40a2..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_contextmenu.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php -/*************************************************************** - * Copyright notice - * - * (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> - * All rights reserved - * - * This script is part of the TYPO3 project. The TYPO3 project is - * free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * The GNU General Public License can be found at - * http://www.gnu.org/copyleft/gpl.html. - * A copy is found in the textfile GPL.txt and important notices to the license - * from the author is found in LICENSE.txt distributed with these scripts. - * - * - * This script is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * This copyright notice MUST APPEAR in all copies of the script! - ***************************************************************/ - -/** - * Context Menu of the Page Tree - * - * @author Stefan Galinski <stefan.galinski@gmail.com> - * @package TYPO3 - * @subpackage t3lib - */ -class tx_pagetree_ExtDirect_ContextMenu extends t3lib_contextmenu_extdirect_ContextMenu { - /** - * Sets the data provider - * - * @return void - */ - protected function initDataProvider() { - /** @var $dataProvider tx_pagetree_ContextMenu_DataProvider */ - $dataProvider = t3lib_div::makeInstance('tx_pagetree_ContextMenu_DataProvider'); - $this->setDataProvider($dataProvider); - } - - /** - * Returns the actions for the given node information's - * - * @param stdClass $node - * @return array - */ - public function getActionsForNodeArray($nodeData) { - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node', (array) $nodeData); - $node->setRecord(tx_pagetree_Commands::getNodeRecord($node->getId())); - - $this->initDataProvider(); - $this->dataProvider->setContextMenuType('table.' . $node->getType()); - $actionCollection = $this->dataProvider->getActionsForNode($node); - - if ($actionCollection instanceof t3lib_contextmenu_ActionCollection) { - $actions = $actionCollection->toArray(); - } - - return $actions; - } -} - - -if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_contextmenu.php'])) { - include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_contextmenu.php']); -} - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_tree.php b/typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_tree.php deleted file mode 100644 index b71c5dd6486c7f0bb72d5841366e4469ce9246ce..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_tree.php +++ /dev/null @@ -1,231 +0,0 @@ -<?php -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ - -/** - * Data Provider of the Page Tree - * - * @author Stefan Galinski <stefan.galinski@gmail.com> - * @package TYPO3 - * @subpackage tx_pagetree - */ -class tx_pagetree_ExtDirect_Tree extends t3lib_tree_ExtDirect_AbstractExtJsTree { - /** - * Sets the data provider - * - * @return void - */ - protected function initDataProvider() { - /** @var $dataProvider tx_pagetree_DataProvider */ - $dataProvider = t3lib_div::makeInstance('tx_pagetree_DataProvider'); - $this->setDataProvider($dataProvider); - } - - /** - * Data Provider - * - * @return tx_pagetree_DataProvider - */ - protected $dataProvider = NULL; - - /** - * Returns the root node of the tree - * - * @return array - */ - public function getRoot() { - $this->initDataProvider(); - $node = $this->dataProvider->getRoot(); - - return $node->toArray(); - } - - /** - * Fetches the next tree level - * - * @param int $nodeId - * @param stdClass $nodeData - * @return array - */ - public function getNextTreeLevel($nodeId, $nodeData) { - $this->initDataProvider(); - - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node', (array) $nodeData); - - if ($nodeId === 'root') { - $nodeCollection = $this->dataProvider->getTreeMounts(); - } else { - $nodeCollection = $this->dataProvider->getNodes($node); - } - - return $nodeCollection->toArray(); - } - - /** - * Returns a tree that only contains elements that match the given search string - * - * @param int $nodeId - * @param stdClass $nodeData - * @param string $searchFilter - * @return array - */ - public function getFilteredTree($nodeId, $nodeData, $searchFilter) { - if (strval($searchFilter) === '') { - return array(); - } - - /** @var $node tx_pagetree_Node */ - $node = t3lib_div::makeInstance('tx_pagetree_Node', (array) $nodeData); - - $this->initDataProvider(); - if ($nodeId === 'root') { - $nodeCollection = $this->dataProvider->getTreeMounts($searchFilter); - } else { - $nodeCollection = $this->dataProvider->getFilteredNodes($node, $searchFilter, $node->getMountPoint()); - } - - return $nodeCollection->toArray(); - } - - /** - * Returns the localized list of doktypes to display - * - * Note: The list can be filtered by the user typoscript - * option "options.pageTree.doktypesToShowInNewPageDragArea". - * - * @return array - */ - public function getNodeTypes() { - $map = array( - 1 => 'LLL:EXT:lang/locallang_tca.php:doktype.I.0', - 3 => 'LLL:EXT:cms/locallang_tca.php:pages.doktype.I.8', - 4 => 'LLL:EXT:cms/locallang_tca.php:pages.doktype.I.2', - 6 => 'LLL:EXT:cms/locallang_tca.php:pages.doktype.I.4', - 7 => 'LLL:EXT:cms/locallang_tca.php:pages.doktype.I.5', - 199 => 'LLL:EXT:cms/locallang_tca.php:pages.doktype.I.7', - 254 => 'LLL:EXT:lang/locallang_tca.php:doktype.I.folder', - 255 => 'LLL:EXT:lang/locallang_tca.php:doktype.I.2' - ); - - $doktypes = t3lib_div::trimExplode( - ',', $GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.doktypesToShowInNewPageDragArea') - ); - - $output = array(); - $allowedDoktypes = t3lib_div::trimExplode(',', $GLOBALS['BE_USER']->groupData['pagetypes_select']); - $isAdmin = $GLOBALS['BE_USER']->isAdmin(); - foreach ($doktypes as $doktype) { - if (!$isAdmin && !in_array($doktype, $allowedDoktypes)) { - continue; - } - - $label = $GLOBALS['LANG']->sL($map[$doktype], TRUE); - $spriteIcon = t3lib_iconWorks::getSpriteIconClasses( - $GLOBALS['TCA']['pages']['ctrl']['typeicon_classes'][$doktype] - ); - - $output[] = array( - 'nodeType' => $doktype, - 'cls' => 'typo3-pagetree-topPanel-button', - 'iconCls' => $spriteIcon, - 'title' => $label, - 'tooltip' => $label, - ); - } - - return $output; - } - - /** - * Returns - * - * @return array - */ - public function getIndicators() { - /** @var $indicatorProvider tx_pagetree_Indicator */ - $indicatorProvider = t3lib_div::makeInstance('tx_pagetree_indicator'); - $indicatorHtmlArr = $indicatorProvider->getAllIndicators(); - $indicator = array( - 'html' => implode(' ', $indicatorHtmlArr), - '_COUNT' => count($indicatorHtmlArr) - ); - - return $indicator; - } - - /** - * Returns the language labels, sprites and configuration options for the pagetree - * - * @return void - */ - public function loadResources() { - $file = 'LLL:EXT:lang/locallang_core.xml:'; - $indicators = $this->getIndicators(); - $configuration = array( - 'LLL' => array( - 'copyHint' => $GLOBALS['LANG']->sL($file . 'tree.copyHint', TRUE), - 'fakeNodeHint' => $GLOBALS['LANG']->sL($file . 'mess.please_wait', TRUE), - 'activeFilterMode' => $GLOBALS['LANG']->sL($file . 'tree.activeFilterMode', TRUE), - 'dropToRemove' => $GLOBALS['LANG']->sL($file . 'tree.dropToRemove', TRUE), - 'buttonRefresh' => $GLOBALS['LANG']->sL($file . 'labels.refresh', TRUE), - 'buttonNewNode' => $GLOBALS['LANG']->sL($file . 'tree.buttonNewNode', TRUE), - 'buttonFilter' => $GLOBALS['LANG']->sL($file . 'tree.buttonFilter', TRUE), - 'dropZoneElementRemoved' => $GLOBALS['LANG']->sL($file . 'tree.dropZoneElementRemoved', TRUE), - 'dropZoneElementRestored' => $GLOBALS['LANG']->sL($file . 'tree.dropZoneElementRestored', TRUE), - 'searchTermInfo' => $GLOBALS['LANG']->sL($file . 'tree.searchTermInfo', TRUE), - 'temporaryMountPointIndicatorInfo' => $GLOBALS['LANG']->sl($file . 'labels.temporaryDBmount', TRUE), - ), - - 'Configuration' => array( - 'hideFilter' => $GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.hideFilter'), - 'disableIconLinkToContextmenu' => $GLOBALS['BE_USER']->getTSConfigVal( - 'options.pageTree.disableIconLinkToContextmenu' - ), - 'indicator' => $indicators['html'], - 'temporaryMountPoint' => tx_pagetree_Commands::getMountPointPath(), - ), - - 'Sprites' => array( - 'Filter' => t3lib_iconWorks::getSpriteIconClasses('actions-system-tree-search-open'), - 'NewNode' => t3lib_iconWorks::getSpriteIconClasses('actions-page-new'), - 'Refresh' => t3lib_iconWorks::getSpriteIconClasses('actions-system-refresh'), - 'InputClear' => t3lib_iconWorks::getSpriteIconClasses('actions-input-clear'), - 'TrashCan' => t3lib_iconWorks::getSpriteIconClasses('actions-edit-delete'), - 'TrashCanRestore' => t3lib_iconWorks::getSpriteIconClasses('actions-edit-restore'), - 'Info' => t3lib_iconWorks::getSpriteIconClasses('actions-document-info'), - ) - ); - - return $configuration; - } -} - -if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_tree.php'])) { - include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/pagetree/classes/extdirect/class.tx_pagetree_extdirect_tree.php']); -} - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/classes/interface.tx_pagetree_indicatorprovider.php b/typo3/sysext/pagetree/classes/interface.tx_pagetree_indicatorprovider.php deleted file mode 100644 index 1c19f9776672ec5eaa5e058857386d29c0797957..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/classes/interface.tx_pagetree_indicatorprovider.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php -/*************************************************************** - * Copyright notice - * - * (c) 2010 Susanne Moog <typo3@susanne-moog.de> - * All rights reserved - * - * This script is part of the TYPO3 project. The TYPO3 project is - * free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * The GNU General Public License can be found at - * http://www.gnu.org/copyleft/gpl.html. - * A copy is found in the textfile GPL.txt and important notices to the license - * from the author is found in LICENSE.txt distributed with these scripts. - * - * - * This script is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * This copyright notice MUST APPEAR in all copies of the script! - ***************************************************************/ - -/** - * Interface for classes which provide a pagetree indicator. - * - * @author Susanne Moog <typo3@susanne-moog.de> - * @package TYPO3 - * @subpackage tx_pagetree - */ -interface tx_pagetree_IndicatorProvider { - /** - * Returns the indicator html code - * - * @return string - */ - function getIndicator(); -} - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/components/pagetree/css/common.css b/typo3/sysext/pagetree/components/pagetree/css/common.css deleted file mode 100644 index 48f2b5e0f3ca56ab7e7f53c5bb790412f2fc7f7d..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/components/pagetree/css/common.css +++ /dev/null @@ -1,113 +0,0 @@ -/** - * Common EXTJS tree styles. Whole file can be removed if http://forge.typo3.org/issues/11787 gets integrated - * - */ - -.x-tree-node .x-tree-node-inline-icon { - background-image: none; -} - -.x-tree-node-loading a span { - font-style: italic; - color: #444444; -} - -.ext-ie .x-tree-node-el input { - width: 15px; - height: 15px; -} - -.x-tree-node-el { - line-height: 18px; - height: 18px; - margin-right: 0; -} - -.x-tree-lines .x-tree-elbow-end, -.x-tree-lines .x-tree-elbow-end-minus, -.x-tree-lines .x-tree-elbow-end-plus, -.x-tree-lines .x-tree-elbow-line, -.x-tree-lines .x-tree-elbow, -.x-tree-lines .x-tree-elbow-plus, -.x-tree-lines .x-tree-elbow-minus { - background-repeat: repeat-y; - background-position: 0 1px; - height: 20px; -} - -.x-tree-lines .x-tree-elbow-minus { - background-image: url('../icons/gfx/ol/minus.gif'); -} - -.x-tree-lines .x-tree-elbow-plus { - background-image: url('../icons/gfx/ol/plus.gif'); -} - -.x-tree-lines .x-tree-elbow-end { - background: url('../icons/gfx/ol/joinbottom.gif') left top no-repeat; -} - -.x-tree-lines .x-tree-elbow-end-minus { - background: url('../icons/gfx/ol/minusbottom.gif') left top no-repeat; -} - -.x-tree-lines .x-tree-elbow-end-plus { - background: url('../icons/gfx/ol/plusbottom.gif') left top no-repeat; -} - -.x-tree-lines .x-tree-elbow-line { - background-image: url('../icons/gfx/ol/line.gif'); -} - -.x-tree-lines .x-tree-elbow { - background-image: url('../icons/gfx/ol/join.gif'); -} - -.x-tree-node { - color: #000; - font: normal 10px verdana, arial, tahoma, helvetica, sans-serif; -} - -.x-tree-node a, .x-dd-drag-ghost a { - color: #000; - vertical-align: -1px; - font-size: 11px; - display: inline-block; -} - -.x-tree-node a span, .x-dd-drag-ghost a span { - color: #000; -} - -.x-tree-node .x-tree-node-disabled a span { - color: gray !important; -} - -.x-tree-node div.x-tree-drag-insert-below { - border-bottom-color: #686868; -} - -.x-tree-node div.x-tree-drag-insert-above { - border-top-color: #686868; -} - -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a { - border-bottom-color: #686868; -} - -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a { - border-top-color: #686868; -} - -.x-tree-node .x-tree-drag-append a span { - background-color: #ddd; - border-color: gray; -} - -.x-tree-node .x-tree-node-over { - background-color: #EFEFF4; -} - -.x-tree-node .x-tree-selected { - background-color: #e6e6e6; -} \ No newline at end of file diff --git a/typo3/sysext/pagetree/components/pagetree/css/structure.css b/typo3/sysext/pagetree/components/pagetree/css/structure.css deleted file mode 100644 index 4f18d9576d5d824c97d1dbb79370c699b645c00b..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/components/pagetree/css/structure.css +++ /dev/null @@ -1,181 +0,0 @@ -#typo3-pagetree, -#typo3-pagetree .x-panel-bwrap, -#typo3-pagetree .x-panel-body { - height: 100%; -} - -#typo3-pagetree .x-panel-tbar { - padding: 0; - margin: 0; -} - -.x-tree-node .x-tree-node-el { - margin-right: 0; -} - -.x-tree-node-readableRootline { - padding: 10px 0 3px 10px; -} - -.x-tree-lines .typo3-pagetree-node-notExpandable .x-tree-ec-icon { - visibility: hidden; -} - -.x-tree-lines .typo3-pagetree-node-notExpandable ul .x-tree-ec-icon { - visibility: visible; -} - -#typo3-pagetree span.t3-icon { - margin-bottom: 2px; -} - -#typo3-pagetree .x-toolbar, -.typo3-pagetree-topPanel-item .x-toolbar { - padding-bottom: 0; -} - -/** - * - * section drag and drop - * - */ - -.typo3-pagetree-tree-copy { - margin-top: 5px; -} - -.x-dd-drag-ghost-pagetree-text { - display: inline-block; - vertical-align: middle; -} - -.x-dd-drag-ghost-pagetree, -.x-dd-drag-ghost { - padding-bottom: 5px; -} - -.x-dd-drop-icon { - padding-top: 6px; -} - -.x-dd-drag-ghost span { - margin: 0 1px 0 3px; -} - -.x-dd-drag-ghost-pagetree span { - margin: 3px 3px 0 3px; -} - -/** - * - * @section Top Panel - * - */ - -#typo3-pagetree-topPanel .x-toolbar-left { - height: 20px; -} - -.typo3-pagetree-topPanel-button { - margin: 0 5px 0 0; - padding: 1px 2px; - height: 18px; -} - -.typo3-pagetree-topPanel-button button { - height: 16px; - width: 16px; -} - -.typo3-pagetree-topPanel-item { - padding: 5px 3px 0 3px; - height: 22px; -} - -#typo3-pagetree-topPanel-filterWrap { - padding-top: 3px; - height: 24px; -} - -#typo3-pagetree-topPanel-filter { - height: 16px; - width: 98% !important; - padding: 1px 0 1px 2px; -} - -#typo3-pagetree-topPanel-filterWrap .t3-icon-input-clear { - right: 2%; -} - -#typo3-pagetree .typo3-pagetree-topPanel-button { - margin-right: 1px; - margin-top: -2px; - padding: 2px 3px; -} - -#typo3-pagetree-topPanel-defaultPanel { - padding-left: 6px; -} - -#typo3-pagetree-topPanel-filterWrap .x-form-field-trigger-wrap { - width: 100% !important; - margin: 0 20px 0 0; -} - -.typo3-pagetree-topPanel-item .x-form-trigger { - margin: 4px 0 0; - display: none; -} - -.typo3-pagetree-topPanel-item .x-form-field-trigger-wrap:hover .x-form-trigger { - display: block; -} - -#typo3-pagetree .typo3-pagetree-filteringTree-highlight { - padding: 0; -} - -/** - * - * @section Indicator Bar - * - */ - -.typo3-pagetree-indicatorBar-item p { - padding: 5px 10px; -} - -#typo3-pagetree-indicatorBar-filter p, -#typo3-pagetree-indicatorBar-temporaryMountPoint p { - padding: 10px 35px; -} - -.typo3-pagetree-indicatorBar-item .typo3-pagetree-indicatorBar-item-leftIcon { - left: 10px; - top: 9px; - position: absolute; -} - -.typo3-pagetree-indicatorBar-item .typo3-pagetree-indicatorBar-item-rightIcon { - right: 10px; - top: 5px; - position: absolute; -} - -#typo3-pagetree-indicatorBar-indicatorTitle span { - margin-right: 10px; -} - -/** - * - * @section Deletion Drop Zone - * - */ -#typo3-pagetree-deletionDropZone p { - padding: 5px; - height: 25px; -} - -#typo3-pagetree-deletionDropZone-text { - padding: 0 0 0 5px; -} \ No newline at end of file diff --git a/typo3/sysext/pagetree/components/pagetree/css/visual.css b/typo3/sysext/pagetree/components/pagetree/css/visual.css deleted file mode 100644 index 1b1a1cbe934c8def7dcd64cd55f2288b76dcbb62..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/components/pagetree/css/visual.css +++ /dev/null @@ -1,281 +0,0 @@ -#typo3-pagetree-treeContainer, -#typo3-pagetree-topPanelItems { - background-color: #EBEBEB; -} - -#typo3-pagetree .x-tree .x-panel-body { - background: none; -} - -#typo3-pagetree .x-tree-node .x-tree-node-el { - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; -} - -#typo3-pagetree .x-tree-node .x-tree-node-over, -#typo3-pagetree .x-tree-node .x-tree-selected { - background-color: #F8F8F8; - border-bottom: 1px solid #D7D7D7; - border-top: 1px solid #D7D7D7; -} - -#typo3-pagetree .x-panel-tbar { - background-color: #585858; - border: none; -} - -/** - * - * @section drag and drop - * - */ -.typo3-pagetree-tree-copy { - color: #666; -} - -.x-dd-drag-ghost { - background-color: inherit; - border: none; -} - -.x-dd-drop-nodrop { - background-color: #f6d3cf; - border: 1px solid #d66c68; -} - -.typo3-pagetree-deletionDropZone-proxyOver, -.x-tree-drop-ok-append, -.x-tree-drop-ok-between, -.x-tree-drop-ok-below, -.x-tree-drop-ok-above { - background-color: #dce8f4; - border: 1px solid #9eb2c5; -} - -.x-dd-drop-nodrop .x-dd-drop-icon { - background-image: url(../images/icons/apps/pagetree-drag-place-denied.png); -} - -.x-tree-drop-ok-append.typo3-pagetree-copy .x-dd-drop-icon { - background-image: url(../images/icons/apps/pagetree-drag-new-inside.png); -} - -.x-tree-drop-ok-between.typo3-pagetree-copy .x-dd-drop-icon, -.x-tree-drop-ok-below.typo3-pagetree-copy .x-dd-drop-icon, -.x-tree-drop-ok-above.typo3-pagetree-copy .x-dd-drop-icon { - background-image: url(../images/icons/apps/pagetree-drag-new-between.png); -} - -.x-tree-drop-ok-append .x-dd-drop-icon { - background-image: url(../images/icons/apps/pagetree-drag-move-into.png); -} - -.x-tree-drop-ok-between .x-dd-drop-icon, -.x-tree-drop-ok-below .x-dd-drop-icon, -.x-tree-drop-ok-above .x-dd-drop-icon { - background-image: url(../images/icons/apps/pagetree-drag-move-between.png); -} - -#typo3-pagetree .x-tree-node .x-tree-drag-insert-below, -.x-tree-node div.x-tree-drag-insert-below, -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a { - border-bottom: 1px solid #9eb2c5; -} - -#typo3-pagetree .x-tree-node .x-tree-drag-insert-above, -.x-tree-node .x-tree-drag-insert-above, -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a { - border-top: 1px solid #9eb2c5; -} - -.x-tree-node .x-tree-drag-append { - background: #d7e4f1; -} - -.x-tree-node .x-tree-drag-append a span { - background-color: inherit; - border: none; -} - -.typo3-pagetree-deletionDropZone-proxyOver .x-dd-drop-icon { - background-image: url(../images/icons/apps/edit-delete.png); -} - -/** - * - * @section Top Panel - * - */ -#typo3-pagetree .x-toolbar { - background: none; - border: none; -} - -.typo3-pagetree-topPanel-button { - background: none; - border: none; -} - -#typo3-pagetree-topPanel .x-btn-pressed { - background-image: url('../icons/gfx/toolbar_item_active_bg.png'); -} - -#typo3-pagetree-topPanel .x-btn-click { - border: none; - top: 0; - left: 0; -} - -#typo3-pagetree-topPanel button:focus { - outline: none; -} - -#typo3-pagetree-topPanel button::-moz-focus-inner { - border: 0; -} - -.typo3-pagetree-topPanel-button button { - border: none; -} - -#typo3-pagetree .typo3-pagetree-topPanel-item { - background-color: #dadada; - line-height: normal; -} - -#typo3-pagetree-topPanel-filter { - border: 1px solid #AEAEAE; - -moz-box-shadow: inset 0 1px 4px #AEAEAE; - -ms-box-shadow: inset 0 1px 4px #AEAEAE; - -webkit-box-shadow: inset 0 1px 4px #AEAEAE; - box-shadow: inset 0 2px 1px #AEAEAE; -} - -.typo3-pagetree-topPanel-filter-defaultText { - color: gray; -} - -#typo3-pagetree-topPanelItems, -.typo3-pagetree-indicatorBar-item, -#typo3-pagetree-topPanel .typo3-pagetree-topPanel-item, -#typo3-pagetree-treeContainer { - -moz-box-shadow: inset -2px 0 0px #C4C4C4; - -ms-box-shadow: inset -2px 0 0px #C4C4C4; - -webkit-box-shadow: inset -2px 0 0px #C4C4C4; - box-shadow: inset -2px 0 0px #C4C4C4; -} - -#typo3-pagetree .typo3-pagetree-topPanel-button { - border: none; - border-radius: 0; -} - -#typo3-pagetree .typo3-pagetree-topPanel-button button { - vertical-align: middle; -} - -#typo3-pagetree-topPanel-defaultPanel { - color: #A2AAB8; - line-height: 18px; -} - -#typo3-pagetree-topPanel-item-newNode .x-btn-over { - background: inherit; -} - -#typo3-pagetree-topPanel-item-newNode button { - cursor: move; -} - -#typo3-pagetree-topPanel-button-refresh, -#typo3-pagetree-topPanel-button-refresh.x-btn-over { - background: inherit; -} - -/** - * - * @section Tree Highlighting - * - */ - -#typo3-pagetree .ver-element, -#typo3-pagetree .ver-versions, -#typo3-pagetree .ver-page { - background-color: #f7c898; -} - -#typo3-pagetree .x-tree-node-over.ver-element, -#typo3-pagetree .x-tree-node-over.ver-versions, -#typo3-pagetree .x-tree-node-over.ver-page, -#typo3-pagetree .x-tree-selected.ver-element, -#typo3-pagetree .x-tree-selected.ver-versions, -#typo3-pagetree .x-tree-selected.ver-page { - background-color: #fee4c9; -} - -.x-tree-node-readableRootline { - font-style: italic; -} - -#typo3-pagetree .typo3-pagetree-filteringTree-highlight { - background-color: #F48E0C; - color: #FFF; -} - -/** - * - * @section Indicator Bar - * - */ - -#typo3-pagetree-indicatorBar-temporaryMountPoint p { - line-height: 13px; -} - -#typo3-pagetree-indicatorBar-temporaryMountPoint, -#typo3-pagetree-indicatorBar-filter { - background-color: #EAF7FF; - border-bottom: 1px solid #C5DBE6; - color: #4C73A1; -} - -.typo3-pagetree-indicatorBar-item .typo3-pagetree-indicatorBar-item-leftIcon, -.typo3-pagetree-indicatorBar-item .typo3-pagetree-indicatorBar-item-rightIcon { - cursor: pointer; -} - -#typo3-pagetree-indicatorBar-indicatorTitle { - background-color: #ffec97; - font-weight: bold; -} - -/** - * - * @section Deletion Drop Zone - * - */ - -#typo3-pagetree-deletionDropZone { - color: #FFF; - background-color: #585858; - -moz-box-shadow: inset 0 2px 5px #414141; - -ms-box-shadow: inset 0 2px 5px #414141; - -webkit-box-shadow: inset 0 2px 5px #414141; - box-shadow: inset 0 2px 5px #414141; -} - -#typo3-pagetree-deletionDropZone p { - line-height: 25px; -} - -#typo3-pagetree-deletionDropZone-text { - font-size: .9em; -} - -#typo3-pagetree .x-panel-tbar, -#typo3-pagetree-deletionDropZone .x-panel-body { - -moz-box-shadow: inset -2px 0 1px #414141; - -ms-box-shadow: inset -2px 0 1px #414141; - -webkit-box-shadow: inset -2px 0 1px #414141; - box-shadow: inset -2px 0 1px #414141; -} \ No newline at end of file diff --git a/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/join.gif b/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/join.gif deleted file mode 100644 index 45c0b9a00d06d374054eaff4dee8d080d85522bd..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/join.gif and /dev/null differ diff --git a/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/joinbottom.gif b/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/joinbottom.gif deleted file mode 100644 index a0ddcdf21821ad6d862d3c6731a1e4f65fba7989..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/joinbottom.gif and /dev/null differ diff --git a/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/line.gif b/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/line.gif deleted file mode 100644 index c08adb8f05d5df9db660396a7cc0430f2805835a..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/line.gif and /dev/null differ diff --git a/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/minus.gif b/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/minus.gif deleted file mode 100644 index a0a83da067246d651c226168cc8d421643307227..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/minus.gif and /dev/null differ diff --git a/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/minusbottom.gif b/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/minusbottom.gif deleted file mode 100644 index 7331c814aef3c01341b80cce29fe256d21183d09..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/minusbottom.gif and /dev/null differ diff --git a/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/plus.gif b/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/plus.gif deleted file mode 100644 index b0df90193e123573ffecaf138dff39474184a3c2..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/plus.gif and /dev/null differ diff --git a/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/plusbottom.gif b/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/plusbottom.gif deleted file mode 100644 index ce6e68484e920ffd08edea276e3dc081226c2339..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/components/pagetree/icons/gfx/ol/plusbottom.gif and /dev/null differ diff --git a/typo3/sysext/pagetree/components/pagetree/icons/gfx/toolbar_item_active_bg.png b/typo3/sysext/pagetree/components/pagetree/icons/gfx/toolbar_item_active_bg.png deleted file mode 100644 index 9d44c717303aae933653c2ebeffe1b596bd1db76..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/components/pagetree/icons/gfx/toolbar_item_active_bg.png and /dev/null differ diff --git a/typo3/sysext/pagetree/components/pagetree/images/icons/apps/edit-delete.png b/typo3/sysext/pagetree/components/pagetree/images/icons/apps/edit-delete.png deleted file mode 100755 index 1c7a5848dd2c608a2a51e24448bb8ed2274110dd..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/components/pagetree/images/icons/apps/edit-delete.png and /dev/null differ diff --git a/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-move-between.png b/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-move-between.png deleted file mode 100755 index b3d79a445d6852c11a03f93c4665c9171090edf4..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-move-between.png and /dev/null differ diff --git a/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-move-into.png b/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-move-into.png deleted file mode 100755 index aecca46d5a2337d0d36976f8063cfdb4cf6aaad0..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-move-into.png and /dev/null differ diff --git a/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-new-between.png b/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-new-between.png deleted file mode 100755 index 29425be3320431bbdd143e3a468063be3976383d..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-new-between.png and /dev/null differ diff --git a/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-new-inside.png b/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-new-inside.png deleted file mode 100755 index ffc6ffa931c21d3ace91124d72ec5d015a291b10..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-new-inside.png and /dev/null differ diff --git a/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-place-denied.png b/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-place-denied.png deleted file mode 100755 index 9ed0c0fa3bec15cde06f723f099f6099469e0ca7..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/components/pagetree/images/icons/apps/pagetree-drag-place-denied.png and /dev/null differ diff --git a/typo3/sysext/pagetree/components/pagetree/javascript/Ext.ux.state.TreePanel.js b/typo3/sysext/pagetree/components/pagetree/javascript/Ext.ux.state.TreePanel.js deleted file mode 100644 index e41df63e11e867c2da89254ae6ce077af0c62006..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/components/pagetree/javascript/Ext.ux.state.TreePanel.js +++ /dev/null @@ -1,145 +0,0 @@ -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ -Ext.ns('Ext.ux.state'); - -// dummy constructor -Ext.ux.state.TreePanel = function() {}; - -/** - * State Provider for a tree panel - */ -Ext.override(Ext.ux.state.TreePanel, { - /** - * Initializes the plugin - * @param {Ext.tree.TreePanel} tree - * @private - */ - init:function(tree) { - tree.lastSelectedNode = null; - tree.isRestoringState = false; - tree.stateHash = {}; - - // install event handlers on TreePanel - tree.on({ - // add path of expanded node to stateHash - beforeexpandnode:function(n) { - if (this.isRestoringState) { - return; - } - - this.stateHash[n.id] = n.getPath(); - }, - - // delete path and all subpaths of collapsed node from stateHash - beforecollapsenode:function(n) { - if (this.isRestoringState) { - return; - } - - delete this.stateHash[n.id]; - var cPath = n.getPath(); - for(var p in this.stateHash) { - if(this.stateHash.hasOwnProperty(p)) { - if(this.stateHash[p].indexOf(cPath) !== -1) { - delete this.stateHash[p]; - } - } - } - }, - - beforeclick: function(node) { - if (this.isRestoringState) { - return; - } - this.stateHash['lastSelectedNode'] = node.id; - } - }); - - // update state on node expand or collapse - tree.stateEvents = tree.stateEvents || []; - tree.stateEvents.push('expandnode', 'collapsenode', 'click'); - - // add state related props to the tree - Ext.apply(tree, { - // keeps expanded nodes paths keyed by node.ids - stateHash:{}, - - restoreState: function() { - this.isRestoringState = true; - for(var p in this.stateHash) { - if(this.stateHash.hasOwnProperty(p)) { - this.expandPath(this.stateHash[p]); - } - } - // get last selected node - if (this.stateHash['lastSelectedNode']) { - var node = this.getNodeById(this.stateHash['lastSelectedNode']); - if (node) { - this.selectPath(node.getPath()); - - var contentId = TYPO3.Backend.ContentContainer.getIdFromUrl() || - String(fsMod.recentIds['web']) || '-1'; - - var isCurrentSelectedNode = ( - String(node.attributes.nodeData.id) === contentId || - contentId.indexOf('pages' + String(node.attributes.nodeData.id)) !== -1 - ); - - if (contentId !== '-1' && !isCurrentSelectedNode && - this.commandProvider && this.commandProvider.singleClick - ) { - this.commandProvider.singleClick(node, this); - } - } - } - - this.isRestoringState = false; - }, - - // apply state on tree initialization - applyState:function(state) { - if(state) { - Ext.apply(this, state); - - // it is too early to expand paths here - // so do it once on root load - this.root.on({ - load: { - single:true, - scope:this, - fn: this.restoreState - } - }); - } - }, - - // returns stateHash for save by state manager - getState:function() { - return {stateHash:this.stateHash}; - } - }); - } -}); \ No newline at end of file diff --git a/typo3/sysext/pagetree/components/pagetree/javascript/actions.js b/typo3/sysext/pagetree/components/pagetree/javascript/actions.js deleted file mode 100644 index 09ef669a1ba1cdda621509928d3c67dcfa36b07a..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/components/pagetree/javascript/actions.js +++ /dev/null @@ -1,659 +0,0 @@ -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ -Ext.namespace('TYPO3.Components.PageTree'); - -/** - * @class TYPO3.Components.PageTree.Actions - * - * Actions dedicated for the page tree - * - * @namespace TYPO3.Components.PageTree - * @author Stefan Galinski <stefan.galinski@gmail.com> - */ -TYPO3.Components.PageTree.Actions = { - /** - * Evaluates a response from an ext direct call and shows a flash message - * if it was an exceptional result - * - * @param {Object} response - * @return {Boolean} - */ - evaluateResponse: function(response) { - if (response.success === false) { - TYPO3.Flashmessage.display(4, 'Exception', response.message); - return false; - } - - return true; - }, - - /** - * Releases the cut and copy mode from the context menu - * - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - releaseCutAndCopyModes: function(tree) { - tree.t3ContextInfo.inCutMode = false; - tree.t3ContextInfo.inCopyMode = false; - - if (tree.t3ContextNode) { - tree.t3ContextNode.attributes.nodeData.t3InCutMode = false; - tree.t3ContextNode.attributes.nodeData.t3InCopyMode = false; - tree.t3ContextNode = null; - } - }, - - /** - * Updates an existing node with the given alternative. The new tree node - * is returned afterwards. - * - * @param {Ext.tree.TreeNode} node - * @param {Boolean} isExpanded - * @param {Object} updatedNode - * @return {Ext.tree.TreeNode} - */ - updateNode: function(node, isExpanded, updatedNode) { - if (!updatedNode) { - return null; - } - - updatedNode.uiProvider = node.ownerTree.uiProvider; - var newTreeNode = new Ext.tree.TreeNode(updatedNode); - - node.parentNode.replaceChild(newTreeNode, node); - newTreeNode.ownerTree.refreshNode(newTreeNode, function() { - newTreeNode.parentNode.expand(false, false); - if (isExpanded) { - newTreeNode.expand(false, false); - } else { - newTreeNode.collapse(false, false); - } - }); - - return newTreeNode; - }, - - /** - * Removes a node - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - removeNode: function(node, tree) { - TYPO3.Components.PageTree.Commands.deleteNode( - node.attributes.nodeData, - function(response) { - if (this.evaluateResponse(response)) { - // the node may not be removed in workspace mode - if (top.TYPO3.configuration.inWorkspace && response.id) { - this.updateNode(node, node.isExpanded(), response); - } else { - node.remove(); - } - } - }, - this - ); - }, - - /** - * Restores a given node and moves it to the given destination inside the tree. Use this - * method if you want to add it as the first child of the destination. - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @param {Ext.tree.TreeNode} destination - * @return {void} - */ - restoreNodeToFirstChildOfDestination: function(node, tree, destination) { - TYPO3.Components.PageTree.Commands.restoreNode( - node.attributes.nodeData, - destination.attributes.nodeData.id, - function(updatedNode) { - if (this.evaluateResponse(updatedNode)) { - var newTreeNode = new Ext.tree.TreeNode( - Ext.apply(node.attributes, updatedNode) - ); - destination.insertBefore(newTreeNode, destination.firstChild); - } - }, - this - ); - }, - - /** - * Restores a given node and moves it to the given destination inside the tree. Use this - * method if you want to add the node after the destination node. - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @param {Ext.tree.TreeNode} destination - * @return {void} - */ - restoreNodeAfterDestination: function(node, tree, destination) { - TYPO3.Components.PageTree.Commands.restoreNode( - node.attributes.nodeData, - -destination.attributes.nodeData.id, - function(updatedNode) { - if (this.evaluateResponse(updatedNode)) { - var newTreeNode = new Ext.tree.TreeNode( - Ext.apply(node.attributes, updatedNode) - ); - destination.parentNode.insertBefore(newTreeNode, destination.nextSibling); - } - }, - this - ); - }, - - /** - * Collapses a whole tree branch - * - * @param {Ext.tree.TreeNode} node - * @return {void} - */ - collapseBranch: function(node) { - node.collapseChildNodes(true); - node.collapse(); - }, - - /** - * Expands a whole tree branch - * - * @param {Ext.tree.TreeNode} node - * @return {void} - */ - expandBranch: function(node) { - node.expand(); - node.expandChildNodes(true); - }, - - /** - * Opens a popup windows for previewing the given node/page - * - * @param {Ext.tree.TreeNode} node - * @return {void} - */ - viewPage: function(node) { - TYPO3.Components.PageTree.Commands.getViewLink( - node.attributes.nodeData, - function(result) { - openUrlInWindow(result, 'typo3ContextMenuView'); - } - ); - }, - - /** - * Creates a temporary tree mount point - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - mountAsTreeRoot: function(node, tree) { - TYPO3.Components.PageTree.Commands.setTemporaryMountPoint( - node.attributes.nodeData, - function(response) { - if (TYPO3.Components.PageTree.Configuration.temporaryMountPoint) { - TYPO3.Backend.NavigationContainer.PageTree.removeIndicator( - TYPO3.Backend.NavigationContainer.PageTree.temporaryMountPointInfoIndicator - ); - } - - TYPO3.Components.PageTree.Configuration.temporaryMountPoint = response; - TYPO3.Backend.NavigationContainer.PageTree.addTemporaryMountPointIndicator(); - - var selectedNode = TYPO3.Backend.NavigationContainer.PageTree.getSelected(); - tree.stateId = 'Pagetree' + TYPO3.Components.PageTree.Configuration.temporaryMountPoint; - tree.refreshTree(function() { - var nodeIsSelected = false; - if (selectedNode) { - nodeIsSelected = TYPO3.Backend.NavigationContainer.PageTree.select( - selectedNode.attributes.nodeData.id - ); - } - - var node = (nodeIsSelected ? TYPO3.Backend.NavigationContainer.PageTree.getSelected() : null); - if (node) { - this.singleClick(node, tree); - } else { - this.singleClick(tree.getRootNode().firstChild, tree); - } - }, this); - }, - this - ); - }, - - /** - * Opens the edit page properties dialog - * - * @param {Ext.tree.TreeNode} node - * @return {void} - */ - editPageProperties: function(node) { - node.select(); - TYPO3.Backend.ContentContainer.setUrl( - 'alt_doc.php?edit[pages][' + node.attributes.nodeData.id + ']=edit' - ); - }, - - /** - * Opens the new page wizard - * - * @param {Ext.tree.TreeNode} node - * @return {void} - */ - newPageWizard: function(node) { - node.select(); - TYPO3.Backend.ContentContainer.setUrl( - 'db_new.php?id=' + node.attributes.nodeData.id + '&pagesOnly=1' - ); - }, - - /** - * Opens the info popup - * - * @param {Ext.tree.TreeNode} node - * @return {void} - */ - openInfoPopUp: function(node) { - launchView('pages', node.attributes.nodeData.id); - }, - - /** - * Opens the history popup - * - * @param {Ext.tree.TreeNode} node - * @return {void} - */ - openHistoryPopUp: function(node) { - node.select(); - TYPO3.Backend.ContentContainer.setUrl( - 'show_rechis.php?element=pages:' + node.attributes.nodeData.id - ); - }, - - /** - * Opens the export .t3d file dialog - * - * @param {Ext.tree.TreeNode} node - * @return {void} - */ - exportT3d: function(node) { - node.select(); - TYPO3.Backend.ContentContainer.setUrl( - 'sysext/impexp/app/index.php?tx_impexp[action]=export&' + - 'id=0&tx_impexp[pagetree][id]=' + node.attributes.nodeData.id + - '&tx_impexp[pagetree][levels]=' + node.attributes.nodeData.id + - '&tx_impexp[pagetree][tables][]=_ALL' - ); - }, - - /** - * Opens the import .t3d file dialog - * - * @param {Ext.tree.TreeNode} node - * @return {void} - */ - importT3d: function(node) { - node.select(); - TYPO3.Backend.ContentContainer.setUrl( - 'sysext/impexp/app/index.php?id=' + node.attributes.nodeData.id + - '&table=pages&tx_impexp[action]=import' - ); - }, - - /** - * Enables the cut mode of a node - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - enableCutMode: function(node, tree) { - this.disableCopyMode(node, tree); - node.attributes.nodeData.t3InCutMode = true; - tree.t3ContextInfo.inCutMode = true; - tree.t3ContextNode = node; - }, - - /** - * Disables the cut mode of a node - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - disableCutMode: function(node, tree) { - this.releaseCutAndCopyModes(tree); - node.attributes.nodeData.t3InCutMode = false; - }, - - /** - * Enables the copy mode of a node - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - enableCopyMode: function(node, tree) { - this.disableCutMode(node, tree); - node.attributes.nodeData.t3InCopyMode = true; - tree.t3ContextInfo.inCopyMode = true; - tree.t3ContextNode = node; - }, - - /** - * Disables the copy mode of a node - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - disableCopyMode: function(node, tree) { - this.releaseCutAndCopyModes(tree); - node.attributes.nodeData.t3InCopyMode = false; - }, - - /** - * Pastes the cut/copy context node into the given node - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - pasteIntoNode: function(node, tree) { - if (!tree.t3ContextNode) { - return; - } - - if (tree.t3ContextInfo.inCopyMode) { - var newNode = tree.t3ContextNode = new Ext.tree.TreeNode(tree.t3ContextNode.attributes); - newNode.id = 'fakeNode'; - node.insertBefore(newNode, node.childNodes[0]); - node.attributes.nodeData.t3InCopyMode = false; - this.copyNodeToFirstChildOfDestination(newNode, tree); - - } else if (tree.t3ContextInfo.inCutMode) { - node.appendChild(tree.t3ContextNode); - node.attributes.nodeData.t3InCutMode = false; - this.moveNodeToFirstChildOfDestination(node, tree); - } - }, - - /** - * Pastes a cut/copy context node after the given node - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - pasteAfterNode: function(node, tree) { - if (!tree.t3ContextNode) { - return; - } - - if (tree.t3ContextInfo.inCopyMode) { - var newNode = tree.t3ContextNode = new Ext.tree.TreeNode(tree.t3ContextNode.attributes); - newNode.id = 'fakeNode'; - node.parentNode.insertBefore(newNode, node.nextSibling); - node.attributes.nodeData.t3InCopyMode = false; - this.copyNodeAfterDestination(newNode, tree); - - } else if (tree.t3ContextInfo.inCutMode) { - node.parentNode.insertBefore(tree.t3ContextNode, node.nextSibling); - node.attributes.nodeData.t3InCutMode = false; - this.moveNodeAfterDestination(node, tree); - } - }, - - /** - * Moves the current tree context node after the given node - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - moveNodeAfterDestination: function(node, tree) { - TYPO3.Components.PageTree.Commands.moveNodeAfterDestination( - tree.t3ContextNode.attributes.nodeData, - node.attributes.nodeData.id, - function(response) { - if (this.evaluateResponse(response) && tree.t3ContextNode) { - this.updateNode(tree.t3ContextNode, tree.t3ContextNode.isExpanded(), response); - } - this.releaseCutAndCopyModes(tree); - }, - this - ); - }, - - /** - * Moves the current tree context node as the first child of the given node - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - moveNodeToFirstChildOfDestination: function(node, tree) { - TYPO3.Components.PageTree.Commands.moveNodeToFirstChildOfDestination( - tree.t3ContextNode.attributes.nodeData, - node.attributes.nodeData.id, - function(response) { - if (this.evaluateResponse(response) && tree.t3ContextNode) { - this.updateNode(tree.t3ContextNode, tree.t3ContextNode.isExpanded(), response); - } - this.releaseCutAndCopyModes(tree); - }, - this - ); - }, - - /** - * Inserts a new node after the given node - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - insertNodeAfterDestination: function(node, tree) { - TYPO3.Components.PageTree.Commands.insertNodeAfterDestination( - tree.t3ContextNode.attributes.nodeData, - node.previousSibling.attributes.nodeData.id, - tree.t3ContextInfo.serverNodeType, - function(response) { - if (this.evaluateResponse(response)) { - this.updateNode(node, node.isExpanded(), response); - } - this.releaseCutAndCopyModes(tree); - }, - this - ); - }, - - /** - * Inserts a new node as the first child of the given node - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - insertNodeToFirstChildOfDestination: function(node, tree) { - TYPO3.Components.PageTree.Commands.insertNodeToFirstChildOfDestination( - tree.t3ContextNode.attributes.nodeData, - tree.t3ContextInfo.serverNodeType, - function(response) { - if (this.evaluateResponse(response)) { - node = this.updateNode(node, true, response); - } - this.releaseCutAndCopyModes(tree); - }, - this - ); - }, - - /** - * Copies the current tree context node after the given node - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - copyNodeAfterDestination: function(node, tree) { - TYPO3.Components.PageTree.Commands.copyNodeAfterDestination( - tree.t3ContextNode.attributes.nodeData, - node.previousSibling.attributes.nodeData.id, - function(response) { - if (this.evaluateResponse(response)) { - this.updateNode(node, true, response); - } - this.releaseCutAndCopyModes(tree); - }, - this - ); - }, - - /** - * Copies the current tree context node as the first child of the given node - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - copyNodeToFirstChildOfDestination: function(node, tree) { - TYPO3.Components.PageTree.Commands.copyNodeToFirstChildOfDestination( - tree.t3ContextNode.attributes.nodeData, - node.parentNode.attributes.nodeData.id, - function(response) { - if (this.evaluateResponse(response)) { - this.updateNode(node, true, response); - } - this.releaseCutAndCopyModes(tree); - }, - this - ); - }, - - /** - * Visibilizes a page - * - * @param {Ext.tree.TreeNode} node - * @return {void} - */ - enablePage: function(node) { - TYPO3.Components.PageTree.Commands.visiblyNode( - node.attributes.nodeData, - function(response) { - if (this.evaluateResponse(response)) { - this.updateNode(node, node.isExpanded(), response); - } - }, - this - ); - }, - - /** - * Disables a page - * - * @param {Ext.tree.TreeNode} node - * @return {void} - */ - disablePage: function(node) { - TYPO3.Components.PageTree.Commands.disableNode( - node.attributes.nodeData, - function(response) { - if (this.evaluateResponse(response)) { - this.updateNode(node, node.isExpanded(), response); - } - }, - this - ); - }, - - /** - * Reloads the content frame with the current module and node id - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - singleClick: function(node, tree) { - var separator = '?'; - if (currentSubScript.indexOf('?') !== -1) { - separator = '&'; - } - - node.select(); - if (tree.stateHash) { - tree.stateHash.lastSelectedNode = node.id; - } - - TYPO3.Backend.ContentContainer.setUrl( - TS.PATH_typo3 + currentSubScript + separator + 'id=' + node.attributes.nodeData.id - ); - }, - - /** - * Updates the title of a node - * - * @param {Ext.tree.TreeNode} node - * @param {String} newText - * @param {String} oldText - * @param {TYPO3.Components.PageTree.TreeEditor} treeEditor - * @return {void} - */ - saveTitle: function(node, newText, oldText, treeEditor) { - this.singleClick(node.editNode, node.editNode.ownerTree); - if (newText === oldText) { - treeEditor.updateNodeText( - node, - node.editNode.attributes.nodeData.editableText, - Ext.util.Format.htmlEncode(oldText) - ); - return; - } - - TYPO3.Components.PageTree.Commands.updateLabel( - node.editNode.attributes.nodeData, - newText, - function(response) { - if (this.evaluateResponse(response)) { - treeEditor.updateNodeText(node, response.editableText, response.updatedText); - } else { - treeEditor.updateNodeText( - node, - node.editNode.attributes.nodeData.editableText, - Ext.util.Format.htmlEncode(oldText) - ); - } - }, - this - ); - } -}; \ No newline at end of file diff --git a/typo3/sysext/pagetree/components/pagetree/javascript/app.js b/typo3/sysext/pagetree/components/pagetree/javascript/app.js deleted file mode 100644 index 2f2bb87a9dc5a274001806dfde80656cb7517034..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/components/pagetree/javascript/app.js +++ /dev/null @@ -1,397 +0,0 @@ -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ -Ext.namespace('TYPO3.Components.PageTree'); - -/** - * @class TYPO3.Components.PageTree.App - * - * Page tree main application that controls setups the components - * - * @namespace TYPO3.Components.PageTree - * @extends Ext.Panel - * @author Stefan Galinski <stefan.galinski@gmail.com> - */ -TYPO3.Components.PageTree.App = Ext.extend(Ext.Panel, { - /** - * Panel id - * - * @type {String} - */ - id: 'typo3-pagetree', - - /** - * Border - * - * @type {Boolean} - */ - border: false, - - /** - * Layout Type - * - * @type {String} - */ - layout:'fit', - - /** - * Listeners - * - * The afterlayout wizard relayoutes the navigation container to fix some nasty - * scrollbar issues. - * - * @type {Object} - */ - listeners: { - afterlayout: { - fn: function() { - this.ownerCt.doLayout(); - }, - buffer: 250 - } - }, - - /** - * Initializes the application - * - * Set's the necessary language labels, configuration options and sprite icons by an - * external call and initializes the needed components. - * - * @return {void} - */ - initComponent: function() { - TYPO3.Components.PageTree.DataProvider.loadResources(function(response) { - TYPO3.Components.PageTree.LLL = response['LLL']; - TYPO3.Components.PageTree.Configuration = response['Configuration']; - TYPO3.Components.PageTree.Sprites = response['Sprites']; - - var tree = new TYPO3.Components.PageTree.Tree({ - id: this.id + '-tree', - ddGroup: this.id, - stateful: true, - stateId: 'Pagetree' + TYPO3.Components.PageTree.Configuration.temporaryMountPoint, - stateEvents: [], - autoScroll: true, - autoHeight: false, - plugins: new Ext.ux.state.TreePanel(), - commandProvider: TYPO3.Components.PageTree.Actions, - contextMenuProvider: TYPO3.Components.PageTree.ContextMenuDataProvider, - treeDataProvider: TYPO3.Components.PageTree.DataProvider, - listeners: { - resize: { - fn: function() { - var treeContainer = Ext.getCmp(this.id + '-treeContainer'); - Ext.getCmp(this.id + '-filteringTree').setSize(treeContainer.getSize()); - treeContainer.doLayout(); - }, - scope: this, - buffer: 250 - } - } - }); - - var filteringTree = new TYPO3.Components.PageTree.FilteringTree({ - id: this.id + '-filteringTree', - ddGroup: this.id, - autoScroll: true, - autoHeight: false, - commandProvider: TYPO3.Components.PageTree.Actions, - contextMenuProvider: TYPO3.Components.PageTree.ContextMenuDataProvider, - treeDataProvider: TYPO3.Components.PageTree.DataProvider - }).hide(); - - var topPanel = new TYPO3.Components.PageTree.TopPanel({ - dataProvider: TYPO3.Components.PageTree.DataProvider, - filteringTree: filteringTree, - ddGroup: this.id, - tree: tree, - app: this - }); - - var deletionDropZone = new TYPO3.Components.PageTree.DeletionDropZone({ - commandProvider: TYPO3.Components.PageTree.Actions, - ddGroup: this.id, - tree: tree, - region: 'south', - height: 35 - }); - - var topPanelItems = new Ext.Panel({ - id: this.id + '-topPanelItems', - border: false, - region: 'north', - height: 64, - items: [ - topPanel, { - border: false, - id: this.id + '-indicatorBar' - } - ] - }); - - this.add({ - layout: 'border', - items: [ - topPanelItems, - { - border: false, - id: this.id + '-treeContainer', - region: 'center', - layout: 'fit', - items: [tree, filteringTree] - }, - deletionDropZone - ] - }); - - if (TYPO3.Components.PageTree.Configuration.temporaryMountPoint) { - topPanelItems.on('afterrender', function() { - this.addTemporaryMountPointIndicator(); - }, this); - } - - if (TYPO3.Components.PageTree.Configuration.indicator !== '') { - this.addIndicatorItems(); - } - }, this); - - TYPO3.Components.PageTree.App.superclass.initComponent.apply(this, arguments); - }, - - /** - * Adds the default indicator items - * - * @return {void} - */ - addIndicatorItems: function() { - this.addIndicator({ - border: false, - id: this.id + '-indicatorBar-indicatorTitle', - cls: this.id + '-indicatorBar-item', - html: TYPO3.Components.PageTree.Configuration.indicator - }); - }, - - /** - * Adds the temporary mount point indicator item - * - * @return {void} - */ - addTemporaryMountPointIndicator: function() { - this.temporaryMountPointInfoIndicator = this.addIndicator({ - border: false, - id: this.id + '-indicatorBar-temporaryMountPoint', - cls: this.id + '-indicatorBar-item', - - listeners: { - afterrender: { - fn: function() { - var element = Ext.fly(this.id + '-indicatorBar-temporaryMountPoint-clear'); - element.on('click', function() { - TYPO3.BackendUserSettings.ExtDirect.unsetKey( - 'pageTree_temporaryMountPoint', - function() { - TYPO3.Components.PageTree.Configuration.temporaryMountPoint = null; - this.removeIndicator(this.temporaryMountPointInfoIndicator); - this.getTree().refreshTree(); - this.getTree().stateId = 'Pagetree'; - }, - this - ); - }, this); - }, - scope: this - } - }, - - html: '<p>' + - '<span id="' + this.id + '-indicatorBar-temporaryMountPoint-info' + '" ' + - 'class="' + this.id + '-indicatorBar-item-leftIcon ' + - TYPO3.Components.PageTree.Sprites.Info + '"> ' + - '</span>' + - '<span id="' + this.id + '-indicatorBar-temporaryMountPoint-clear' + '" ' + - 'class="' + this.id + '-indicatorBar-item-rightIcon ' + '">X' + - '</span>' + - TYPO3.Components.PageTree.LLL.temporaryMountPointIndicatorInfo + '<br />' + - TYPO3.Components.PageTree.Configuration.temporaryMountPoint + - '</p>' - }); - }, - - /** - * Adds an indicator item - * - * @param {Object} component - * @return {void} - */ - addIndicator: function(component) { - if (component.listeners && component.listeners.afterrender) { - component.listeners.afterrender.fn = component.listeners.afterrender.fn.createSequence( - this.afterTopPanelItemAdded, this - ); - } else { - if (component.listeners) { - component.listeners = {} - } - - component.listeners.afterrender = { - fn: this.afterTopPanelItemAdded - } - } - - return Ext.getCmp(this.id + '-indicatorBar').add(component); - }, - - /** - * Recalculates the top panel items height after an indicator was added - * - * @param {Ext.Component} component - * @return {void} - */ - afterTopPanelItemAdded: function(component) { - var topPanelItems = Ext.getCmp(this.id + '-topPanelItems'); - topPanelItems.setHeight(topPanelItems.getHeight() + component.getHeight() + 3); - }, - - /** - * Removes an indicator item from the indicator bar - * - * @param {Ext.Component} component - * @return {void} - */ - removeIndicator: function(component) { - var topPanelItems = Ext.getCmp(this.id + '-topPanelItems'); - topPanelItems.setHeight(topPanelItems.getHeight() - component.getHeight() - 3); - Ext.getCmp(this.id + '-indicatorBar').remove(component); - }, - - /** - * Compatibility method that calls refreshTree() - * - * @return {void} - */ - refresh: function() { - this.refreshTree(); - }, - - /** - * Another compatibility method that calls refreshTree() - * - * @return {void} - */ - refresh_nav: function() { - this.refreshTree(); - }, - - /** - * Refreshes the tree and selects the node defined by fsMod.recentIds['web'] - * - * @return {void} - */ - refreshTree: function() { - if (!isNaN(fsMod.recentIds['web']) && fsMod.recentIds['web'] !== '') { - this.select(fsMod.recentIds['web'], true); - } - - TYPO3.Components.PageTree.DataProvider.getIndicators(function(response) { - var indicators = Ext.getCmp(this.id + '-indicatorBar-indicatorTitle'); - if (indicators) { - this.removeIndicator(indicators); - } - - if (response._COUNT > 0) { - TYPO3.Components.PageTree.Configuration.indicator = response.html; - this.addIndicatorItems(); - } - }, this); - - Ext.getCmp('typo3-pagetree-topPanel').activeTree.refreshTree(); - }, - - /** - * Returns the current active tree - * - * @return {TYPO3.Components.PageTree.Tree} - */ - getTree: function() { - return Ext.getCmp('typo3-pagetree-topPanel').activeTree; - }, - - /** - * Selects a node defined by the page id. If the second parameter is set, we - * store the new location into the state hash. - * - * @param {int} pageId - * @param {Boolean} saveState - * @return {Boolean} - */ - select: function(pageId, saveState) { - if (saveState !== false) { - saveState = true; - } - - var tree = this.getTree(); - var succeeded = false; - var node = tree.getRootNode().findChild('realId', pageId, true); - if (node) { - succeeded = true; - tree.selectPath(node.getPath()); - if (!!saveState && tree.stateHash) { - tree.stateHash.lastSelectedNode = node.id; - } - } - - return succeeded; - }, - - /** - * Returns the currently selected node - * - * @return {Ext.tree.TreeNode} - */ - getSelected: function() { - var node = this.getTree().getSelectionModel().getSelectedNode(); - return node ? node : null; - } -}); - -/** - * Callback method for the module menu - * - * @return {TYPO3.Components.PageTree.App} - */ -TYPO3.ModuleMenu.App.registerNavigationComponent('typo3-pagetree', function() { - TYPO3.Backend.NavigationContainer.PageTree = new TYPO3.Components.PageTree.App(); - - // compatibility code - top.nav = TYPO3.Backend.NavigationContainer.PageTree; - top.nav_frame = TYPO3.Backend.NavigationContainer.PageTree; - top.content.nav_frame = TYPO3.Backend.NavigationContainer.PageTree; - - return TYPO3.Backend.NavigationContainer.PageTree; -}); - -// XTYPE Registration -Ext.reg('TYPO3.Components.PageTree.App', TYPO3.Components.PageTree.App); \ No newline at end of file diff --git a/typo3/sysext/pagetree/components/pagetree/javascript/contextmenu.js b/typo3/sysext/pagetree/components/pagetree/javascript/contextmenu.js deleted file mode 100644 index 8f57c633b61c5e17ff6eb6f82200d2a7766d5754..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/components/pagetree/javascript/contextmenu.js +++ /dev/null @@ -1,188 +0,0 @@ -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ -Ext.namespace('TYPO3.Components.PageTree'); - -/** - * @class TYPO3.Components.PageTree.ContextMenu - * - * Context menu implementation - * - * @namespace TYPO3.Components.PageTree - * @extends Ext.menu.Menu - * @author Stefan Galinski <stefan.galinski@gmail.com> - */ -TYPO3.Components.PageTree.ContextMenu = Ext.extend(Ext.menu.Menu, { - /** - * Context menu node - * - * @cfg {Ext.tree.TreeNode} - */ - node: null, - - /** - * Page Tree - * - * @cfg {TYPO3.Components.PageTree.Tree} - */ - pageTree: null, - - /** - * Component Id - * - * @type {String} - */ - id: 'typo3-pagetree-contextmenu', - - /** - * Listeners - * - * The itemclick event triggers the configured single click action - */ - listeners: { - itemclick: { - fn: function (item) { - if (this.pageTree.commandProvider[item.callbackAction]) { - if (item.parentMenu.pageTree.stateHash) { - fsMod.recentIds['web'] = item.parentMenu.node.attributes.nodeData.id; - item.parentMenu.pageTree.stateHash['lastSelectedNode'] = item.parentMenu.node.id; - } - - this.pageTree.commandProvider[item.callbackAction]( - item.parentMenu.node, - item.parentMenu.pageTree - ); - } - } - } - }, - - /** - * Fills the menu with the actions - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} pageTree - * @param {Object} contextMenuConfiguration - * @return {void} - */ - fill: function(node, pageTree, contextMenuConfiguration) { - this.node = node; - this.pageTree = pageTree; - - var components = this.preProcessContextMenuConfiguration(contextMenuConfiguration); - if (components.length) { - for (var component in components) { - if (components[component] === '-') { - this.addSeparator(); - } else if (typeof components[component] === 'object') { - this.addItem(components[component]); - } - } - } - }, - - /** - * Parses the context menu actions array recursively and generates the - * components for the context menu including separators/dividers and sub menus - * - * @param {Object} contextMenuConfiguration - * @param {int} level - * @return {Object} - */ - preProcessContextMenuConfiguration: function(contextMenuConfiguration, level) { - level = level || 0; - if (level > 5) { - return []; - } - - var components = []; - var index = 0; - - var modulesInsideGroup = false; - var subMenus = 0; - for (var singleAction in contextMenuConfiguration) { - if (contextMenuConfiguration[singleAction]['type'] === 'submenu') { - var subMenuComponents = this.preProcessContextMenuConfiguration( - contextMenuConfiguration[singleAction]['childActions'], - level + 1 - ); - - if (subMenuComponents.length) { - var subMenu = new TYPO3.Components.PageTree.ContextMenu({ - id: this.id + '-sub' + ++subMenus, - items: subMenuComponents, - node: this.node, - pageTree: this.pageTree - }); - - components[index++] = { - text: contextMenuConfiguration[singleAction]['label'], - cls: 'contextMenu-subMenu', - menu: subMenu, - icon: contextMenuConfiguration[singleAction]['icon'], - iconCls: contextMenuConfiguration[singleAction]['class'] - }; - } - } else if (contextMenuConfiguration[singleAction]['type'] === 'divider') { - if (modulesInsideGroup) { - components[index++] = '-'; - modulesInsideGroup = false; - } - } else { - modulesInsideGroup = true; - - if (typeof contextMenuConfiguration[singleAction] === 'object') { - var component = { - 'text': contextMenuConfiguration[singleAction]['label'], - 'icon': contextMenuConfiguration[singleAction]['icon'], - 'iconCls': contextMenuConfiguration[singleAction]['class'], - 'callbackAction': contextMenuConfiguration[singleAction]['callbackAction'] - }; - - component.itemTpl = Ext.menu.Item.prototype.itemTpl = new Ext.XTemplate( - '<a id="{id}" class="{cls}" hidefocus="true" unselectable="on" href="{href}">', - '<span class="{hrefTarget}">', - '<img src="{icon}" class="x-menu-item-icon {iconCls}" unselectable="on" />', - '</span>', - '<span class="x-menu-item-text">{text}</span>', - '</a>' - ); - - components[index++] = component; - } - } - } - - // remove divider if it's the last item of the context menu - if (components.last() === '-') { - components[components.length - 1] = ''; - } - - return components; - } -}); - -// XTYPE Registration -Ext.reg('TYPO3.Components.PageTree.ContextMenu', TYPO3.Components.PageTree.ContextMenu); \ No newline at end of file diff --git a/typo3/sysext/pagetree/components/pagetree/javascript/deletiondropzone.js b/typo3/sysext/pagetree/components/pagetree/javascript/deletiondropzone.js deleted file mode 100644 index 6519b1c8997f7d28f931026738a17665072712d3..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/components/pagetree/javascript/deletiondropzone.js +++ /dev/null @@ -1,253 +0,0 @@ -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ -Ext.namespace('TYPO3.Components.PageTree'); - -/** - * @class TYPO3.Components.PageTree.DeletionDropZone - * - * Deletion Drop Zone - * - * @namespace TYPO3.Components.PageTree - * @extends Ext.Panel - * @author Stefan Galinski <stefan.galinski@gmail.com> - */ -TYPO3.Components.PageTree.DeletionDropZone = Ext.extend(Ext.Panel, { - /** - * Component Id - * - * @type {String} - */ - id: 'typo3-pagetree-deletionDropZone', - - /** - * Border - * - * @type {Boolean} - */ - border: true, - - /** - * Command Provider - * - * @cfg {Object} - */ - commandProvider: null, - - /** - * Drag and Drop Group - * - * @cfg {String} - */ - ddGroup: '', - - /** - * Page Tree - * - * @cfg {TYPO3.Components.PageTree.Tree} - */ - tree: null, - - /** - * Removed node had a previous sibling - * - * @type {Boolean} - */ - isPreviousSibling: false, - - /** - * Removed node - * - * @type {Ext.tree.TreeNode} - */ - previousNode: null, - - /** - * Click Handler for the recovery text - * - * @type {Function} - */ - textClickHandler: null, - - /** - * Listeners - * - * The "afterrender" event creates the drop zone - */ - listeners: { - afterrender: { - fn: function() { - this.createDropZone(); - } - } - }, - - /** - * Initializes the component - * - * @return {void} - */ - initComponent: function() { - this.html = '<p><span id="' + this.id + '-icon" class="' + - TYPO3.Components.PageTree.Sprites.TrashCan + - '"> </span><span id="' + this.id + '-text">' + - TYPO3.Components.PageTree.LLL.dropToRemove + '</span></p>'; - - TYPO3.Components.PageTree.DeletionDropZone.superclass.initComponent.apply(this, arguments); - }, - - /** - * Creates the drop zone and it's functionality - * - * @return {void} - */ - createDropZone: function() { - (new Ext.dd.DropTarget(this.getEl(), { - ddGroup: this.ddGroup, - - notifyOver: function(ddProxy, e) { - ddProxy.setDragElPos(e.xy[0], e.xy[1] - 60); - - return this.id + '-proxyOver'; - }, - - notifyEnter: function() { - return this.id + '-proxyOver'; - }.createDelegate(this), - - notifyDrop: function(ddProxy, e, n) { - var node = n.node; - if (!node) { - return; - } - - var tree = node.ownerTree; - if (this.textClickHandler) { - this.toOriginState(false); - } - - if (!top.TYPO3.configuration.inWorkspace) { - this.updateText(TYPO3.Components.PageTree.LLL.dropZoneElementRemoved); - this.updateIcon(TYPO3.Components.PageTree.Sprites.TrashCanRestore); - - (function() { - if (this.textClickHandler) { - this.toOriginState(); - } - }).defer(5000, this); - - this.textClickHandler = this.restoreNode.createDelegate(this, [node, tree]); - Ext.get(this.id + '-text').on('click', this.textClickHandler); - - this.isPreviousSibling = false; - this.previousNode = node.parentNode; - if (node.previousSibling) { - this.previousNode = node.previousSibling; - this.isPreviousSibling = true; - } - } - - node.ownerTree.commandProvider.removeNode(node, tree); - }.createDelegate(this) - })); - }, - - /** - * Updates the drop zone text label - * - * @param {String} text - * @param {Boolean} animate - * @return {void} - */ - updateText: function(text, animate) { - animate = animate || false; - - var elementText = Ext.get(this.id + '-text'); - if (animate) { - elementText.animate({opacity: {to: 0}}, 1, function(elementText) { - elementText.update(text); - elementText.setStyle('opacity', 1); - }); - } else { - elementText.update(text); - } - }, - - /** - * Updates the drop zone icon with another sprite icon - * - * @param {String} classes - * @return {void} - */ - updateIcon: function(classes) { - var icon = Ext.get(this.id + '-icon'); - icon.set({ - 'class': classes - }); - }, - - /** - * Resets the drop zone to the initial state - * - * @param {Boolean} animate - * @return {void} - */ - toOriginState: function(animate) { - if (animate !== false) { - animate = true; - } - - this.updateText(TYPO3.Components.PageTree.LLL.dropToRemove, animate); - this.updateIcon(TYPO3.Components.PageTree.Sprites.TrashCan); - Ext.get(this.id + '-text').un('click', this.textClickHandler); - this.previousNode = this.textClickHandler = null; - this.isPreviousSibling = false; - }, - - /** - * Restores the last removed node - * - * @param {Ext.tree.TreeNode} node - * @param {TYPO3.Components.PageTree.Tree} tree - * @return {void} - */ - restoreNode: function(node, tree) { - if (this.isPreviousSibling) { - this.commandProvider.restoreNodeAfterDestination(node, tree, this.previousNode); - } else { - this.commandProvider.restoreNodeToFirstChildOfDestination(node, tree, this.previousNode); - } - this.updateText(TYPO3.Components.PageTree.LLL.dropZoneElementRestored); - - (function() { - if (this.textClickHandler) { - this.toOriginState(); - } - }).defer(3000, this); - } -}); - -// XTYPE Registration -Ext.reg('TYPO3.Components.PageTree.DeletionDropZone', TYPO3.Components.PageTree.DeletionDropZone); \ No newline at end of file diff --git a/typo3/sysext/pagetree/components/pagetree/javascript/filteringtree.js b/typo3/sysext/pagetree/components/pagetree/javascript/filteringtree.js deleted file mode 100644 index 5ca66b166cdc5a432ef563436e88f21693fa4354..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/components/pagetree/javascript/filteringtree.js +++ /dev/null @@ -1,69 +0,0 @@ -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ -Ext.namespace('TYPO3.Components.PageTree'); - -/** - * @class TYPO3.Components.PageTree.FilteringTree - * - * Filtering Tree - * - * @namespace TYPO3.Components.PageTree - * @extends TYPO3.Components.PageTree.Tree - * @author Stefan Galinski <stefan.galinski@gmail.com> - */ -TYPO3.Components.PageTree.FilteringTree = Ext.extend(TYPO3.Components.PageTree.Tree, { - /** - * Search word - * - * @type {String} - */ - searchWord: '', - - /** - * Tree loader implementation for the filtering tree - * - * @return {void} - */ - addTreeLoader: function() { - this.loader = new Ext.tree.TreeLoader({ - directFn: this.treeDataProvider.getFilteredTree, - paramOrder: 'attributes,searchWord', - baseAttrs: { - uiProvider: this.uiProvider - }, - - listeners: { - beforeload: function(treeLoader, node) { - treeLoader.baseParams.searchWord = node.ownerTree.searchWord; - treeLoader.baseParams.attributes = node.attributes.nodeData; - } - } - }); - } -}); - -// XTYPE Registration -Ext.reg('TYPO3.Components.PageTree.FilteringTree', TYPO3.Components.PageTree.FilteringTree); \ No newline at end of file diff --git a/typo3/sysext/pagetree/components/pagetree/javascript/loadorder.txt b/typo3/sysext/pagetree/components/pagetree/javascript/loadorder.txt deleted file mode 100644 index 679453f27d27b171e40693fa8f59301872fc1ed7..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/components/pagetree/javascript/loadorder.txt +++ /dev/null @@ -1,10 +0,0 @@ -treeeditor.js -tree.js -filteringtree.js -nodeui.js -deletiondropzone.js -toppanel.js -contextmenu.js -actions.js -Ext.ux.state.TreePanel.js -app.js \ No newline at end of file diff --git a/typo3/sysext/pagetree/components/pagetree/javascript/nodeui.js b/typo3/sysext/pagetree/components/pagetree/javascript/nodeui.js deleted file mode 100644 index 76052638c3c547e3343ef1dcc232405471bc1bd1..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/components/pagetree/javascript/nodeui.js +++ /dev/null @@ -1,151 +0,0 @@ -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ -Ext.namespace('TYPO3.Components.PageTree'); - -/** - * @class TYPO3.Components.PageTree.DeletionDropZone - * - * Tree Node User Interface that can handle sprite icons and more - * - * @namespace TYPO3.Components.PageTree - * @extends Ext.tree.TreeNodeUI - * @author Stefan Galinski <stefan.galinski@gmail.com> - */ -TYPO3.Components.PageTree.PageTreeNodeUI = Ext.extend(Ext.tree.TreeNodeUI, { - /** - * Adds the sprite icon and adds an event to open the context menu on a single click at the icon node - * - * @param {Ext.tree.TreeNode} n - * @param {Object} a - * @param {Ext.tree.TreeNode} targetNode - * @param {Boolean} bulkRender - * @return {void} - */ - renderElements : function(n, a, targetNode, bulkRender) { - // add some indent caching, this helps performance when rendering a large tree - this.indentMarkup = n.parentNode ? n.parentNode.ui.getChildIndent() : ''; - - var cb = Ext.isBoolean(a.checked), - nel, - href = this.getHref(a.href), - buf = ['<li class="x-tree-node"><div ext:tree-node-id="',n.id,'" class="x-tree-node-el x-tree-node-leaf x-unselectable ', a.cls,'" unselectable="on">', - '<span class="x-tree-node-indent">',this.indentMarkup,"</span>", - '<img alt="" src="', this.emptyIcon, '" class="x-tree-ec-icon x-tree-elbow" />', -// '<img alt="" src="', a.icon || this.emptyIcon, '" class="x-tree-node-icon',(a.icon ? " x-tree-node-inline-icon" : ""),(a.iconCls ? " "+a.iconCls : ""),'" unselectable="on" />', - a.spriteIconCode, // TYPO3: add sprite icon code - cb ? ('<input class="x-tree-node-cb" type="checkbox" ' + (a.checked ? 'checked="checked" />' : '/>')) : '', - '<a hidefocus="on" class="x-tree-node-anchor" href="',href,'" tabIndex="1" ', - a.hrefTarget ? ' target="'+a.hrefTarget+'"' : "", '><span unselectable="on">',n.text,"</span></a></div>", - '<ul class="x-tree-node-ct" style="display:none;"></ul>', - "</li>"].join(''); - - if(bulkRender !== true && n.nextSibling && (nel = n.nextSibling.ui.getEl())){ - this.wrap = Ext.DomHelper.insertHtml("beforeBegin", nel, buf); - }else{ - this.wrap = Ext.DomHelper.insertHtml("beforeEnd", targetNode, buf); - } - - // TYPO3 modification to show the readable rootline above the user mounts - if (a.readableRootline !== '') { - var rootline = '<div class="x-tree-node-readableRootline">' + a.readableRootline + '</div>'; - Ext.DomHelper.insertHtml("beforeBegin", this.wrap, rootline); - } - - this.elNode = this.wrap.childNodes[0]; - this.ctNode = this.wrap.childNodes[1]; - var cs = this.elNode.childNodes; - this.indentNode = cs[0]; - this.ecNode = cs[1]; -// this.iconNode = cs[2]; - this.iconNode = (cs[2].firstChild.tagName === 'SPAN' ? cs[2].firstChild : cs[2]); // TYPO3: get possible overlay icon - var index = 3; // TYPO3: index 4? - if(cb){ - this.checkbox = cs[3]; - // fix for IE6 - this.checkbox.defaultChecked = this.checkbox.checked; - index++; - } - this.anchor = cs[index]; - this.textNode = cs[index].firstChild; - - // TYPO3: call the context menu on a single click (Beware of drag&drop!) - if (!TYPO3.Components.PageTree.Configuration.disableIconLinkToContextmenu - || TYPO3.Components.PageTree.Configuration.disableIconLinkToContextmenu === '0' - ) { - Ext.fly(this.iconNode).on('click', function(event) { - this.getOwnerTree().fireEvent('contextmenu', this, event); - event.stopEvent(); - }, n); - } - }, - - /** - * Adds a quick tip to the sprite icon - * - * @param {Ext.tree.TreeNode} node - * @param {Object} tip - * @param {String} title - * @return {void} - */ - onTipChange : function(node, tip, title) { - TYPO3.Components.PageTree.PageTreeNodeUI.superclass.onTipChange.apply(this, arguments); - - if(this.rendered){ - var hasTitle = Ext.isDefined(title); - if(this.iconNode.setAttributeNS){ - this.iconNode.setAttributeNS("ext", "qtip", tip); - if(hasTitle){ - this.iconNode.setAttributeNS("ext", "qtitle", title); - } - }else{ - this.iconNode.setAttribute("ext:qtip", tip); - if(hasTitle){ - this.iconNode.setAttribute("ext:qtitle", title); - } - } - } - }, - - /** - * Returns the drag and drop handles - * - * @return {Object} - */ - getDDHandles: function() { - var ddHandles = [this.iconNode, this.textNode, this.elNode]; - var textNode = Ext.get(this.textNode); - for (var i = 0; i < textNode.dom.childNodes.length; ++i) { - if (textNode.dom.childNodes[i].nodeName === 'SPAN') { - ddHandles[3] = textNode.dom.childNodes[i]; - } - } - - return ddHandles; - } -}); - -// XTYPE Registration -Ext.reg('TYPO3.Components.PageTree.PageTreeNodeUI', TYPO3.Components.PageTree.PageTreeNodeUI); \ No newline at end of file diff --git a/typo3/sysext/pagetree/components/pagetree/javascript/toppanel.js b/typo3/sysext/pagetree/components/pagetree/javascript/toppanel.js deleted file mode 100644 index c98826e289289489f51f24d643ded78f801d9c7c..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/components/pagetree/javascript/toppanel.js +++ /dev/null @@ -1,474 +0,0 @@ -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ -Ext.namespace('TYPO3.Components.PageTree'); - -/** - * @class TYPO3.Components.PageTree.TopPanel - * - * Top Panel - * - * @namespace TYPO3.Components.PageTree - * @extends Ext.Panel - * @author Stefan Galinski <stefan.galinski@gmail.com> - */ -TYPO3.Components.PageTree.TopPanel = Ext.extend(Ext.Panel, { - /** - * Component Id - * - * @type {String} - */ - id: 'typo3-pagetree-topPanel', - - /** - * Border - * - * @type {Boolean} - */ - border: false, - - /** - * Toolbar Object - * - * @type {Ext.Toolbar} - */ - tbar: new Ext.Toolbar(), - - /** - * Currently Clicked Toolbar Button - * - * @type {Ext.Button} - */ - currentlyClickedButton: null, - - /** - * Currently Shown Panel - * - * @type {Ext.Component} - */ - currentlyShownPanel: null, - - /** - * Active tree (often used from outside, too) - * - * @type {TYPO3.Components.PageTree.Tree} - */ - activeTree: null, - - /** - * Filtering Indicator Item - * - * @type {Ext.Panel} - */ - filteringIndicator: null, - - /** - * Drag and Drop Group - * - * @cfg {String} - */ - ddGroup: '', - - /** - * Data Provider - * - * @cfg {Object} - */ - dataProvider: null, - - /** - * Filtering Tree - * - * @cfg {TYPO3.Components.PageTree.FilteringTree} - */ - filteringTree: null, - - /** - * Page Tree - * - * @cfg {TYPO3.Components.PageTree.Tree} - */ - tree: null, - - /** - * Application Panel - * - * @cfg {TYPO3.Components.PageTree.App} - */ - app: null, - - /** - * Initializes the component - * - * @return {void} - */ - initComponent: function() { - this.activeTree = this.tree; - - this.currentlyShownPanel = new Ext.Panel({ - id: this.id + '-defaultPanel', - cls: this.id + '-item' - }); - this.items = [this.currentlyShownPanel]; - - TYPO3.Components.PageTree.TopPanel.superclass.initComponent.apply(this, arguments); - - this.addDragDropNodeInsertionFeature(); - - if (!TYPO3.Components.PageTree.Configuration.hideFilter - || TYPO3.Components.PageTree.Configuration.hideFilter === '0' - ) { - this.addFilterFeature(); - } - - this.getTopToolbar().addItem({xtype: 'tbfill'}); - this.addRefreshTreeFeature(); - }, - - /** - * Returns a custom button template to fix some nasty webkit issues - * by removing some useless wrapping html code - * - * @return {void} - */ - getButtonTemplate: function() { - return new Ext.Template( - '<div id="{4}" class="x-btn {3}"><button type="{0}""> </button></div>' - ); - }, - - /** - * Adds a button to the components toolbar with a related component - * - * @param {Object} button - * @param {Object} connectedWidget - * @return {void} - */ - addButton: function(button, connectedWidget) { - button.template = this.getButtonTemplate(); - if (!button.hasListener('click')) { - button.on('click', this.topbarButtonCallback); - } - - if (connectedWidget) { - connectedWidget.hidden = true; - button.connectedWidget = connectedWidget; - this.add(connectedWidget); - } - - this.getTopToolbar().addItem(button); - this.doLayout(); - }, - - /** - * Usual button callback method that triggers the assigned component of the - * clicked toolbar button - * - * @return {void} - */ - topbarButtonCallback: function() { - var topPanel = this.ownerCt.ownerCt; - - topPanel.currentlyShownPanel.hide(); - if (topPanel.currentlyClickedButton) { - topPanel.currentlyClickedButton.toggle(false); - } - - if (topPanel.currentlyClickedButton === this) { - topPanel.currentlyClickedButton = null; - topPanel.currentlyShownPanel = topPanel.get(topPanel.id + '-defaultPanel'); - } else { - this.toggle(true); - topPanel.currentlyClickedButton = this; - topPanel.currentlyShownPanel = this.connectedWidget; - } - - topPanel.currentlyShownPanel.show(); - }, - - /** - * Loads the filtering tree nodes with the given search word - * - * @param {Ext.form.TextField} textField - * @return {void} - */ - createFilterTree: function(textField) { - var searchWord = textField.getValue(); - if ((searchWord.length <= 2 && searchWord.length > 0) || - searchWord === this.filteringTree.searchWord - ) { - return; - } - - this.filteringTree.searchWord = searchWord; - if (this.filteringTree.searchWord === '') { - this.activeTree = this.tree; - - textField.setHideTrigger(true); - this.filteringTree.hide(); - this.tree.show().refreshTree(function() { - textField.focus(false, 500); - }, this); - - if (this.filteringIndicator) { - this.app.removeIndicator(this.filteringIndicator); - this.filteringIndicator = null; - } - } else { - var selectedNode = this.ownerCt.ownerCt.ownerCt.getSelected(); - this.activeTree = this.filteringTree; - - if (!this.filteringIndicator) { - this.filteringIndicator = this.ownerCt.ownerCt.ownerCt.addIndicator( - this.createIndicatorItem(textField) - ); - } - - textField.setHideTrigger(false); - this.tree.hide(); - this.app.ownerCt.getEl().mask('', 'x-mask-loading-message'); - this.app.ownerCt.getEl().addClass('t3-mask-loading'); - this.filteringTree.show().refreshTree(function() { - if (selectedNode) { - this.app.select(selectedNode.attributes.nodeData.id, false); - } - textField.focus(); - this.app.ownerCt.getEl().unmask(); - }, this); - } - - this.doLayout(); - }, - - /** - * Adds an indicator item to the page tree application for the filtering feature - * - * @param {Ext.form.TextField} textField - * @return {void} - */ - createIndicatorItem: function(textField) { - return { - border: false, - id: this.app.id + '-indicatorBar-filter', - cls: this.app.id + '-indicatorBar-item', - html: '<p>' + - '<span id="' + this.app.id + '-indicatorBar-filter-info' + '" ' + - 'class="' + this.app.id + '-indicatorBar-item-leftIcon ' + - TYPO3.Components.PageTree.Sprites.Info + '"> ' + - '</span>' + - '<span id="' + this.app.id + '-indicatorBar-filter-clear' + '" ' + - 'class="' + this.app.id + '-indicatorBar-item-rightIcon ' + '">X' + - '</span>' + - TYPO3.Components.PageTree.LLL.activeFilterMode + - '</p>', - filteringTree: this.filteringTree, - - listeners: { - afterrender: { - scope: this, - fn: function() { - var element = Ext.fly(this.app.id + '-indicatorBar-filter-clear'); - element.on('click', function() { - textField.setValue(''); - this.createFilterTree(textField); - }, this); - } - } - } - }; - }, - - /** - * Adds the necessary functionality and components for the filtering feature - * - * @return {void} - */ - addFilterFeature: function() { - var topPanelButton = new Ext.Button({ - id: this.id + '-button-filter', - cls: this.id + '-button', - iconCls: TYPO3.Components.PageTree.Sprites.Filter, - tooltip: TYPO3.Components.PageTree.LLL.buttonFilter - }); - - var textField = new Ext.form.TriggerField({ - id: this.id + '-filter', - enableKeyEvents: true, - triggerClass: TYPO3.Components.PageTree.Sprites.InputClear, - value: TYPO3.Components.PageTree.LLL.searchTermInfo, - - listeners: { - blur: { - scope: this, - fn:function(textField) { - if (textField.getValue() === '') { - textField.setValue(TYPO3.Components.PageTree.LLL.searchTermInfo); - textField.addClass(this.id + '-filter-defaultText'); - } - } - }, - - focus: { - scope: this, - fn: function(textField) { - if (textField.getValue() === TYPO3.Components.PageTree.LLL.searchTermInfo) { - textField.setValue(''); - textField.removeClass(this.id + '-filter-defaultText'); - } - } - }, - - keydown: { - fn: this.createFilterTree, - scope: this, - buffer: 1000 - } - } - }); - - textField.setHideTrigger(true); - textField.onTriggerClick = function() { - textField.setValue(''); - this.createFilterTree(textField); - }.createDelegate(this); - - var topPanelWidget = new Ext.Panel({ - border: false, - id: this.id + '-filterWrap', - cls: this.id + '-item', - items: [textField], - - listeners: { - show: { - scope: this, - fn: function(panel) { - panel.get(this.id + '-filter').focus(); - } - } - } - }); - - this.addButton(topPanelButton, topPanelWidget); - }, - - /** - * Creates the entries for the new node drag zone toolbar - * - * @return {void} - */ - createNewNodeToolbar: function() { - (new Ext.dd.DragZone(this.getEl(), { - ddGroup: this.ownerCt.ddGroup, - - getDragData: function(event) { - this.proxyElement = document.createElement('div'); - - var node = Ext.getCmp(event.getTarget('.x-btn').id); - node.shouldCreateNewNode = true; - - return { - ddel: this.proxyElement, - item: node - } - }, - - onInitDrag: function() { - var clickedButton = this.dragData.item; - var cls = clickedButton.initialConfig.iconCls; - - this.proxyElement.innerHTML = '<div class="x-dd-drag-ghost-pagetree">' + - '<span class="x-dd-drag-ghost-pagetree-icon ' + cls + '"> </span>' + - '<span class="x-dd-drag-ghost-pagetree-text">' + clickedButton.title + '</span>' + - '</div>'; - - this.proxy.update(this.proxyElement); - } - })); - }, - - /** - * Creates the necessary components for new node drag and drop feature - * - * @return {void} - */ - addDragDropNodeInsertionFeature: function() { - var newNodeToolbar = new Ext.Toolbar({ - border: false, - id: this.id + '-item-newNode', - cls: this.id + '-item', - - listeners: { - render: { - fn: this.createNewNodeToolbar - } - } - }); - - this.dataProvider.getNodeTypes(function(response) { - for (var i = 0; i < response.length; ++i) { - response[i].template = this.getButtonTemplate(); - newNodeToolbar.addItem(response[i]); - } - newNodeToolbar.doLayout(); - }, this); - - var topPanelButton = new Ext.Button({ - id: this.id + '-button-newNode', - cls: this.id + '-button', - iconCls: TYPO3.Components.PageTree.Sprites.NewNode, - tooltip: TYPO3.Components.PageTree.LLL.buttonNewNode - }); - - this.addButton(topPanelButton, newNodeToolbar); - }, - - /** - * Adds a button to the toolbar for the refreshing feature - * - * @return {void} - */ - addRefreshTreeFeature: function() { - var topPanelButton = new Ext.Button({ - id: this.id + '-button-refresh', - cls: this.id + '-button', - iconCls: TYPO3.Components.PageTree.Sprites.Refresh, - tooltip: TYPO3.Components.PageTree.LLL.buttonRefresh, - - listeners: { - click: { - scope: this, - fn: function() { - this.activeTree.refreshTree(); - } - } - } - }); - - this.addButton(topPanelButton); - } -}); - -// XTYPE Registration -Ext.reg('TYPO3.Components.PageTree.TopPanel', TYPO3.Components.PageTree.TopPanel); \ No newline at end of file diff --git a/typo3/sysext/pagetree/components/pagetree/javascript/tree.js b/typo3/sysext/pagetree/components/pagetree/javascript/tree.js deleted file mode 100644 index c1f438b54dc63321b7a608980644566240ab4ea4..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/components/pagetree/javascript/tree.js +++ /dev/null @@ -1,506 +0,0 @@ -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ -Ext.namespace('TYPO3.Components.PageTree'); - -/** - * @class TYPO3.Components.PageTree.Tree - * - * Generic Tree Panel - * - * @namespace TYPO3.Components.PageTree - * @extends Ext.tree.TreePanel - * @author Stefan Galinski <stefan.galinski@gmail.com> - */ -TYPO3.Components.PageTree.Tree = Ext.extend(Ext.tree.TreePanel, { - /** - * Border - * - * @type {Boolean} - */ - border: false, - - /** - * Indicates if the root node is visible - * - * @type {Boolean} - */ - rootVisible: false, - - /** - * Enable the drag and drop feature - * - * @cfg {Boolean} - */ - enableDD: true, - - /** - * Drag and Drop Group - * - * @cfg {String} - */ - ddGroup: '', - - /** - * Indicates if the label should be editable - * - * @cfg {Boolean} - */ - labelEdit: true, - - /** - * User Interface Provider - * - * @cfg {Ext.tree.TreeNodeUI} - */ - uiProvider: null, - - /** - * Data Provider - * - * @cfg {Object} - */ - treeDataProvider: null, - - /** - * Command Provider - * - * @cfg {Object} - */ - commandProvider : null, - - /** - * Context menu provider - * - * @cfg {Object} - */ - contextMenuProvider: null, - - /** - * Root Node Configuration - * - * @type {Object} - */ - rootNodeConfig: { - id: 'root', - expanded: true, - nodeData: {} - }, - - /** - * Indicator if the control key is pressed - * - * @type {Boolean} - */ - isControlPressed: false, - - /** - * Context Node - * - * @type {Ext.tree.TreeNode} - */ - t3ContextNode: null, - - /** - * Context Information - * - * @type {Object} - */ - t3ContextInfo: { - inCopyMode: false, - inCutMode: false - }, - - /** - * Registered clicks for the double click feature - * - * @type {int} - */ - clicksRegistered: 0, - - /** - * Listeners - * - * Event handlers that handle click events and synchronizes the label edit, - * double click and single click events in a useful way. - */ - listeners: { - // single click handler that only triggers after a delay to let the double click event - // a possibility to be executed (needed for label edit) - click: { - fn: function(node, event) { - if (this.clicksRegistered === 2) { - this.clicksRegistered = 0; - event.stopEvent(); - return false; - } - - this.clicksRegistered = 0; - if (this.commandProvider.singleClick) { - this.commandProvider.singleClick(node, this); - } - }, - delay: 400 - }, - - // prevent the expanding / collapsing on double click - beforedblclick: { - fn: function() { - return false; - } - }, - - // prevents label edit on a selected node - beforeclick: { - fn: function(node, event) { - if (!this.clicksRegistered && this.getSelectionModel().isSelected(node)) { - node.fireEvent('click', node, event); - ++this.clicksRegistered; - return false; - } - ++this.clicksRegistered; - } - } - }, - - /** - * Initializes the component - * - * @return {void} - */ - initComponent: function() { - if (!this.uiProvider) { - this.uiProvider = TYPO3.Components.PageTree.PageTreeNodeUI; - } - - this.root = new Ext.tree.AsyncTreeNode(this.rootNodeConfig); - this.addTreeLoader(); - - if (this.labelEdit) { - this.enableInlineEditor(); - } - - if (this.enableDD) { - this.dragConfig = {ddGroup: this.ddGroup}; - this.enableDragAndDrop(); - } - - if (this.contextMenuProvider) { - this.enableContextMenu(); - } - - TYPO3.Components.PageTree.Tree.superclass.initComponent.apply(this, arguments); - }, - - /** - * Refreshes the tree - * - * @param {Function} callback - * @param {Object} scope - * return {void} - */ - refreshTree: function(callback, scope) { - // remove readable rootline elements while refreshing - if (!this.inRefreshingMode) { - var rootlineElements = Ext.select('.x-tree-node-readableRootline'); - if (rootlineElements) { - rootlineElements.each(function(element) { - element.remove(); - }); - } - } - - this.refreshNode(this.root, callback, scope); - }, - - /** - * Refreshes a given node - * - * @param {Ext.tree.TreeNode} node - * @param {Function} callback - * @param {Object} scope - * return {void} - */ - refreshNode: function(node, callback, scope) { - if (this.inRefreshingMode) { - return; - } - - scope = scope || node; - this.inRefreshingMode = true; - var loadCallback = function(node) { - node.ownerTree.inRefreshingMode = false; - if (node.ownerTree.restoreState) { - node.ownerTree.restoreState(node.getPath()); - } - }; - - if (callback) { - loadCallback = callback.createSequence(loadCallback); - } - - this.getLoader().load(node, loadCallback, scope); - }, - - /** - * Adds a tree loader implementation that uses the directFn feature - * - * return {void} - */ - addTreeLoader: function() { - this.loader = new Ext.tree.TreeLoader({ - directFn: this.treeDataProvider.getNextTreeLevel, - paramOrder: 'attributes', - baseAttrs: { - uiProvider: this.uiProvider - }, - - // an id can never be zero in ExtJS, but this is needed - // for the root line feature or it will never be working! - createNode: function(attr) { - if (attr.id == 0) { - attr.id = 'siteRootNode'; - } - - return Ext.tree.TreeLoader.prototype.createNode.call(this, attr); - }, - - listeners: { - beforeload: function(treeLoader, node) { - treeLoader.baseParams.attributes = node.attributes.nodeData; - } - } - }); - }, - - /** - * Enables the context menu feature - * - * return {void} - */ - enableContextMenu: function() { - this.contextMenu = new TYPO3.Components.PageTree.ContextMenu(); - - this.on('contextmenu', function(node, event) { - this.openContextMenu(node, event); - }); - }, - - /** - * Open a context menu for the given node - * - * @param {Ext.tree.TreeNode} node - * @param {Ext.EventObject} event - * return {void} - */ - openContextMenu: function(node, event) { - var attributes = Ext.apply(node.attributes.nodeData, { - t3ContextInfo: node.ownerTree.t3ContextInfo - }); - - this.contextMenuProvider.getActionsForNodeArray( - attributes, - function(configuration) { - this.contextMenu.removeAll(); - this.contextMenu.fill(node, this, configuration); - if (this.contextMenu.items.length) { - this.contextMenu.showAt(event.getXY()); - - } - }, - this - ); - }, - - /** - * Initialize the inline editor for the given tree. - * - * @return {void} - */ - enableInlineEditor: function() { - (new TYPO3.Components.PageTree.TreeEditor(this)); - }, - - /** - * Enables the drag and drop feature - * - * return {void} - */ - enableDragAndDrop: function() { - // init proxy element - this.on('startdrag', this.initDDProxyElement, this); - - // node is moved - this.on('movenode', this.moveNode, this); - - // new node is created/copied - this.on('beforenodedrop', this.beforeDropNode, this); - this.on('nodedrop', this.dropNode, this); - - // listens on the ctrl key to toggle the copy mode - (new Ext.KeyMap(document, { - key: Ext.EventObject.CONTROL, - scope: this, - buffer: 250, - fn: function() { - if (this.dragZone.dragging && this.copyHint) { - this.shouldCopyNode = !this.shouldCopyNode; - this.copyHint.toggle(); - this.dragZone.proxy.el.toggleClass('typo3-pagetree-copy'); - } - } - }, 'keydown')); - - // listens on the escape key to stop the dragging - (new Ext.KeyMap(document, { - key: Ext.EventObject.ESC, - scope: this, - buffer: 250, - fn: function(event) { - if (this.dragZone.dragging) { - Ext.dd.DragDropMgr.stopDrag(event); - this.dragZone.onInvalidDrop(event); - } - } - }, 'keydown')); - }, - - /** - * Adds the copy hint to the proxy element - * - * @return {void} - */ - initDDProxyElement: function() { - this.shouldCopyNode = false; - this.copyHint = new Ext.Element(document.createElement('div')).addClass(this.id + '-copy'); - this.copyHint.dom.appendChild(document.createTextNode(TYPO3.Components.PageTree.LLL.copyHint)); - this.copyHint.setVisibilityMode(Ext.Element.DISPLAY); - this.dragZone.proxy.ghost.dom.appendChild(this.copyHint.dom); - }, - - /** - * Creates a Fake Node - * - * This must be done to prevent the calling of the moveNode event. - * - * @param {object} dragElement - */ - beforeDropNode: function(dragElement) { - if (dragElement.data && dragElement.data.item && dragElement.data.item.shouldCreateNewNode) { - this.t3ContextInfo.serverNodeType = dragElement.data.item.nodeType; - dragElement.dropNode = new Ext.tree.TreeNode({ - text: TYPO3.Components.PageTree.LLL.fakeNodeHint, - leaf: true, - isInsertedNode: true - }); - - // fix incorrect cancel value - dragElement.cancel = false; - - } else if (this.shouldCopyNode) { - dragElement.dropNode.unselect(); - var attributes = dragElement.dropNode.attributes; - attributes.isCopiedNode = true; - attributes.id = 'fakeNode'; - dragElement.dropNode = new Ext.tree.TreeNode(attributes); - } - - return true; - }, - - /** - * Differentiate between the copy and insert event - * - * @param {Ext.tree.TreeDropZone} dragElement - * return {void} - */ - dropNode: function(dragElement) { - if (dragElement.dropNode.attributes.isInsertedNode) { - dragElement.dropNode.attributes.isInsertedNode = false; - this.insertNode(dragElement.dropNode); - } else if (dragElement.dropNode.attributes.isCopiedNode) { - dragElement.dropNode.attributes.isCopiedNode = false; - this.copyNode(dragElement.dropNode) - } - }, - - /** - * Moves a node - * - * @param {TYPO3.Components.PageTree.Tree} tree - * @param {Ext.tree.TreeNode} movedNode - * @param {Ext.tree.TreeNode} oldParent - * @param {Ext.tree.TreeNode} newParent - * @param {int} position - * return {void} - */ - moveNode: function(tree, movedNode, oldParent, newParent, position) { - tree.t3ContextNode = movedNode; - - if (position === 0) { - this.commandProvider.moveNodeToFirstChildOfDestination(newParent, tree); - } else { - var previousSiblingNode = newParent.childNodes[position - 1]; - this.commandProvider.moveNodeAfterDestination(previousSiblingNode, tree); - } - }, - - /** - * Inserts a node - * - * @param {Ext.tree.TreeNode} movedNode - * return {void} - */ - insertNode: function(movedNode) { - this.t3ContextNode = movedNode.parentNode; - - movedNode.disable(); - if (movedNode.previousSibling) { - this.commandProvider.insertNodeAfterDestination(movedNode, this); - } else { - this.commandProvider.insertNodeToFirstChildOfDestination(movedNode, this); - } - }, - - /** - * Copies a node - * - * @param {Ext.tree.TreeNode} movedNode - * return {void} - */ - copyNode: function(movedNode) { - this.t3ContextNode = movedNode; - - movedNode.disable(); - if (movedNode.previousSibling) { - this.commandProvider.copyNodeAfterDestination(movedNode, this); - } else { - this.commandProvider.copyNodeToFirstChildOfDestination(movedNode, this); - } - } -}); - -// XTYPE Registration -Ext.reg('TYPO3.Components.PageTree.Tree', TYPO3.Components.PageTree.Tree); \ No newline at end of file diff --git a/typo3/sysext/pagetree/components/pagetree/javascript/treeeditor.js b/typo3/sysext/pagetree/components/pagetree/javascript/treeeditor.js deleted file mode 100644 index ff4c00288927cfd9363c65f532a484e490049f1b..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/components/pagetree/javascript/treeeditor.js +++ /dev/null @@ -1,119 +0,0 @@ -/*************************************************************** -* Copyright notice -* -* (c) 2010 TYPO3 Tree Team <http://forge.typo3.org/projects/typo3v4-extjstrees> -* All rights reserved -* -* This script is part of the TYPO3 project. The TYPO3 project is -* free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* The GNU General Public License can be found at -* http://www.gnu.org/copyleft/gpl.html. -* A copy is found in the textfile GPL.txt and important notices to the license -* from the author is found in LICENSE.txt distributed with these scripts. -* -* -* This script is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* This copyright notice MUST APPEAR in all copies of the script! -***************************************************************/ -Ext.namespace('TYPO3.Components.PageTree'); - -/** - * @class TYPO3.Components.PageTree.TreeEditor - * - * Custom Tree Editor implementation to enable different source fields for the - * editable label. - * - * @namespace TYPO3.Components.PageTree - * @extends Ext.tree.TreeEditor - * @author Stefan Galinski <stefan.galinski@gmail.com> - */ -TYPO3.Components.PageTree.TreeEditor = Ext.extend(Ext.tree.TreeEditor, { - /** - * Don't send any save events if the value wasn't changed - * - * @type {Boolean} - */ - ignoreNoChange: true, - - /** - * Edit delay - * - * @type {int} - */ - editDelay: 250, - - /** - * Indicates if an underlying shadow should be shown - * - * @type {Boolean} - */ - shadow: false, - - /** - * Listeners - * - * Handles the synchronization between the edited label and the shown label. - */ - listeners: { - beforecomplete: function(node) { - this.updatedValue = this.getValue(); - }, - - complete: { - fn: function(node, newValue, oldValue) { - this.editNode.ownerTree.commandProvider.saveTitle(node, this.updatedValue, oldValue, this); - } - } - }, - - /** - * Updates the edit node - * - * @param {Ext.tree.TreeNode} node - * @param {String} editableText - * @param {String} updatedNode - * @return {void} - */ - updateNodeText: function(node, editableText, updatedNode) { - this.editNode.setText(this.editNode.attributes.prefix + updatedNode + this.editNode.attributes.suffix); - this.editNode.attributes.editableText = editableText; - }, - - /** - * Overridden method to set another editable text than the node text attribute - * - * @param {Ext.tree.TreeNode} node - * @return {Boolean} - */ - triggerEdit: function(node) { - this.completeEdit(); - if (node.attributes.editable !== false) { - this.editNode = node; - if (this.tree.autoScroll) { - Ext.fly(node.ui.getEl()).scrollIntoView(this.tree.body); - } - - var value = node.text || ''; - if (!Ext.isGecko && Ext.isEmpty(node.text)) { - node.setText(' '); - } - - // TYPO3 MODIFICATION to use another attribute - value = node.attributes.editableText; - - this.autoEditTimer = this.startEdit.defer(this.editDelay, this, [node.ui.textNode, value]); - return false; - } - } -}); - -// XTYPE Registration -Ext.reg('TYPO3.Components.PageTree.TreeEditor', TYPO3.Components.PageTree.TreeEditor); \ No newline at end of file diff --git a/typo3/sysext/pagetree/ext_autoload.php b/typo3/sysext/pagetree/ext_autoload.php deleted file mode 100644 index eab8ab08fd015cb50ac13b19c40de0b0368c8296..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/ext_autoload.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php - -$extensionPath = t3lib_extMgm::extPath('pagetree'); -return array( - 'tx_pagetree_extdirect_tree' => $extensionPath . 'classes/extdirect/class.tx_pagetree_extdirect_tree.php', - 'tx_pagetree_extdirect_commands' => $extensionPath . 'classes/extdirect/class.tx_pagetree_extdirect_commands.php', - 'tx_pagetree_extdirect_contextmenu' => $extensionPath . 'classes/extdirect/class.tx_pagetree_extdirect_contextmenu.php', - 'tx_pagetree_dataprovider' => $extensionPath . 'classes/class.tx_pagetree_dataprovider.php', - 'tx_pagetree_node' => $extensionPath . 'classes/class.tx_pagetree_node.php', - 't3lib_tree_extdirect_node' => $extensionPath . 'classes/class.t3lib_tree_extdirect_node.php', - 'tx_pagetree_nodecollection' => $extensionPath . 'classes/class.tx_pagetree_nodecollection.php', - 'tx_pagetree_commands' => $extensionPath . 'classes/class.tx_pagetree_commands.php', - 'tx_pagetree_contextmenu_action' => $extensionPath . 'classes/contextmenu/class.tx_pagetree_contextmenu_action.php', - 'tx_pagetree_contextmenu_dataprovider' => $extensionPath . 'classes/contextmenu/class.tx_pagetree_contextmenu_dataprovider.php', - 'tx_pagetree_indicator' => $extensionPath . 'classes/class.tx_pagetree_indicator.php', - 'tx_pagetree_indicatorprovider' => $extensionPath . 'classes/interface.tx_pagetree_indicatorprovider.php', -); - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/ext_emconf.php b/typo3/sysext/pagetree/ext_emconf.php deleted file mode 100644 index f4a9e22c955e4ead6a1d187eca407b7c2ff74fb8..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/ext_emconf.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php - -######################################################################## -# Extension Manager/Repository config file for ext "pagetree". -# -# Auto generated 13-01-2011 00:07 -# -# Manual updates: -# Only the data in the array - everything else is removed by next -# writing. "version" and "dependencies" must not be touched! -######################################################################## - -$EM_CONF[$_EXTKEY] = array( - 'title' => 'Pagetree', - 'description' => 'Pagetree based on ExtJS', - 'category' => 'be', - 'dependencies' => 'cms', - 'conflicts' => '', - 'priority' => 'top', - 'loadOrder' => '', - 'module' => '', - 'doNotLoadInFE' => 1, - 'state' => 'stable', - 'internal' => 0, - 'uploadfolder' => 0, - 'createDirs' => '', - 'modify_tables' => '', - 'clearCacheOnLoad' => 0, - 'lockType' => '', - 'author' => 'TYPO3 Core Team', - 'author_email' => '', - 'author_company' => '', - 'CGLcompliance' => '', - 'CGLcompliance_note' => '', - 'version' => '1.99.0', - '_md5_values_when_last_written' => 'a:45:{s:16:"ext_autoload.php";s:4:"2721";s:12:"ext_icon.gif";s:4:"39bd";s:17:"ext_localconf.php";s:4:"6923";s:14:"ext_tables.php";s:4:"bf86";s:16:"pagetree_ie6.css";s:4:"0496";s:43:"classes/class.t3lib_tree_extdirect_node.php";s:4:"8ec5";s:38:"classes/class.tx_pagetree_commands.php";s:4:"c60b";s:42:"classes/class.tx_pagetree_dataprovider.php";s:4:"261a";s:39:"classes/class.tx_pagetree_indicator.php";s:4:"66c3";s:34:"classes/class.tx_pagetree_node.php";s:4:"e29e";s:44:"classes/class.tx_pagetree_nodecollection.php";s:4:"2ef6";s:51:"classes/interface.tx_pagetree_indicatorprovider.php";s:4:"4218";s:60:"classes/contextmenu/class.tx_pagetree_contextmenu_action.php";s:4:"efa8";s:66:"classes/contextmenu/class.tx_pagetree_contextmenu_dataprovider.php";s:4:"a228";s:58:"classes/extdirect/class.tx_pagetree_extdirect_commands.php";s:4:"0b85";s:61:"classes/extdirect/class.tx_pagetree_extdirect_contextmenu.php";s:4:"1f34";s:54:"classes/extdirect/class.tx_pagetree_extdirect_tree.php";s:4:"d8b4";s:34:"components/pagetree/css/common.css";s:4:"8da6";s:37:"components/pagetree/css/structure.css";s:4:"108a";s:34:"components/pagetree/css/visual.css";s:4:"85a7";s:56:"components/pagetree/icons/gfx/toolbar_item_active_bg.png";s:4:"f8c0";s:41:"components/pagetree/icons/gfx/ol/join.gif";s:4:"84b4";s:47:"components/pagetree/icons/gfx/ol/joinbottom.gif";s:4:"e279";s:41:"components/pagetree/icons/gfx/ol/line.gif";s:4:"2961";s:42:"components/pagetree/icons/gfx/ol/minus.gif";s:4:"20e3";s:48:"components/pagetree/icons/gfx/ol/minusbottom.gif";s:4:"8dbc";s:41:"components/pagetree/icons/gfx/ol/plus.gif";s:4:"bad0";s:47:"components/pagetree/icons/gfx/ol/plusbottom.gif";s:4:"7e6e";s:53:"components/pagetree/images/icons/apps/edit-delete.png";s:4:"33a3";s:68:"components/pagetree/images/icons/apps/pagetree-drag-move-between.png";s:4:"f2e3";s:65:"components/pagetree/images/icons/apps/pagetree-drag-move-into.png";s:4:"46d8";s:67:"components/pagetree/images/icons/apps/pagetree-drag-new-between.png";s:4:"2e6d";s:66:"components/pagetree/images/icons/apps/pagetree-drag-new-inside.png";s:4:"16d4";s:68:"components/pagetree/images/icons/apps/pagetree-drag-place-denied.png";s:4:"0ae9";s:56:"components/pagetree/javascript/Ext.ux.state.TreePanel.js";s:4:"de12";s:41:"components/pagetree/javascript/actions.js";s:4:"a4c4";s:37:"components/pagetree/javascript/app.js";s:4:"2d7e";s:45:"components/pagetree/javascript/contextmenu.js";s:4:"a923";s:50:"components/pagetree/javascript/deletiondropzone.js";s:4:"3c45";s:47:"components/pagetree/javascript/filteringtree.js";s:4:"8829";s:44:"components/pagetree/javascript/loadorder.txt";s:4:"fcba";s:40:"components/pagetree/javascript/nodeui.js";s:4:"79b5";s:42:"components/pagetree/javascript/toppanel.js";s:4:"d3ed";s:38:"components/pagetree/javascript/tree.js";s:4:"1f54";s:44:"components/pagetree/javascript/treeeditor.js";s:4:"c05d";}', - 'constraints' => array( - 'depends' => array( - 'cms' => '', - ), - 'conflicts' => array( - ), - 'suggests' => array( - ), - ), - 'suggests' => array( - ), -); - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/ext_icon.gif b/typo3/sysext/pagetree/ext_icon.gif deleted file mode 100644 index 4b7b78360590032814e86f22676fd328ef330204..0000000000000000000000000000000000000000 Binary files a/typo3/sysext/pagetree/ext_icon.gif and /dev/null differ diff --git a/typo3/sysext/pagetree/ext_localconf.php b/typo3/sysext/pagetree/ext_localconf.php deleted file mode 100644 index 0ffe96fbc966495c4ca07d111f96415aaf6e7729..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/ext_localconf.php +++ /dev/null @@ -1,257 +0,0 @@ -<?php - -if (!defined('TYPO3_MODE')) { - die ('Access denied.'); -} - - // special context menu actions for the import/export module -if (t3lib_extMgm::isLoaded('impexp')) { - $importExportActions = ' - 9000 = DIVIDER - - 9100 = ITEM - 9100 { - name = exportT3d - label = LLL:EXT:impexp/app/locallang.xml:export - spriteIcon = actions-document-export-t3d - callbackAction = exportT3d - } - - 9200 = ITEM - 9200 { - name = importT3d - label = LLL:EXT:impexp/app/locallang.xml:import - spriteIcon = actions-document-import-t3d - callbackAction = importT3d - } - '; -} - - // context menu user default configuration -$GLOBALS['TYPO3_CONF_VARS']['BE']['defaultUserTSconfig'] .= ' - options.pageTree { - doktypesToShowInNewPageDragArea = 1,6,4,7,3,254,255,199 - } - - options.contextMenu { - table { - pages_root { - disableItems = - - items { - 100 = ITEM - 100 { - name = view - label = LLL:EXT:lang/locallang_core.xml:cm.view - spriteIcon = actions-document-view - displayCondition = canBeViewed != 0 - callbackAction = viewPage - } - - 200 = ITEM - 200 { - name = new - label = LLL:EXT:lang/locallang_core.xml:cm.new - spriteIcon = actions-document-new - displayCondition = canCreateNewPages != 0 - callbackAction = newPageWizard - } - - 300 = DIVIDER - - 400 = ITEM - 400 { - name = history - label = LLL:EXT:lang/locallang_misc.xml:CM_history - spriteIcon = actions-document-history-open - displayCondition = canShowHistory != 0 - callbackAction = openHistoryPopUp - } - - ' . $importExportActions . ' - } - } - - pages { - disableItems = - - items { - 100 = ITEM - 100 { - name = view - label = LLL:EXT:lang/locallang_core.xml:cm.view - spriteIcon = actions-document-view - displayCondition = canBeViewed != 0 - callbackAction = viewPage - } - - 200 = DIVIDER - - 300 = ITEM - 300 { - name = disable - label = LLL:EXT:lang/locallang_core.xml:cm.hide - spriteIcon = actions-edit-hide - displayCondition = getRecord|hidden = 0 && canBeDisabledAndEnabled != 0 - callbackAction = disablePage - } - - 400 = ITEM - 400 { - name = enable - label = LLL:EXT:lang/locallang_core.xml:cm.unhide - spriteIcon = actions-edit-unhide - displayCondition = getRecord|hidden = 1 && canBeDisabledAndEnabled != 0 - callbackAction = enablePage - } - - 500 = ITEM - 500 { - name = edit - label = LLL:EXT:lang/locallang_core.xml:cm.edit - spriteIcon = actions-document-open - displayCondition = canBeEdited != 0 - callbackAction = editPageProperties - } - - 600 = ITEM - 600 { - name = info - label = LLL:EXT:lang/locallang_core.xml:cm.info - spriteIcon = actions-document-info - displayCondition = canShowInfo != 0 - callbackAction = openInfoPopUp - } - - 700 = ITEM - 700 { - name = history - label = LLL:EXT:lang/locallang_misc.xml:CM_history - spriteIcon = actions-document-history-open - displayCondition = canShowHistory != 0 - callbackAction = openHistoryPopUp - } - - 800 = DIVIDER - - 900 = SUBMENU - 900 { - label = LLL:EXT:lang/locallang_core.xml:cm.copyPasteActions - - 100 = ITEM - 100 { - name = new - label = LLL:EXT:lang/locallang_core.xml:cm.new - spriteIcon = actions-document-new - displayCondition = canCreateNewPages != 0 - callbackAction = newPageWizard - } - - 200 = DIVIDER - - 300 = ITEM - 300 { - name = cut - label = LLL:EXT:lang/locallang_core.xml:cm.cut - spriteIcon = actions-edit-cut - displayCondition = isInCutMode = 0 && canBeCut != 0 && isMountPoint != 1 - callbackAction = enableCutMode - } - - 400 = ITEM - 400 { - name = cut - label = LLL:EXT:lang/locallang_core.xml:cm.cut - spriteIcon = actions-edit-cut-release - displayCondition = isInCutMode = 1 && canBeCut != 0 - callbackAction = disableCutMode - } - - 500 = ITEM - 500 { - name = copy - label = LLL:EXT:lang/locallang_core.xml:cm.copy - spriteIcon = actions-edit-copy - displayCondition = isInCopyMode = 0 && canBeCopied != 0 - callbackAction = enableCopyMode - } - - 600 = ITEM - 600 { - name = copy - label = LLL:EXT:lang/locallang_core.xml:cm.copy - spriteIcon = actions-edit-copy-release - displayCondition = isInCopyMode = 1 && canBeCopied != 0 - callbackAction = disableCopyMode - } - - 700 = ITEM - 700 { - name = pasteInto - label = LLL:EXT:lang/locallang_core.xml:cm.pasteinto - spriteIcon = actions-document-paste-after - displayCondition = getContextInfo|inCopyMode = 1 || getContextInfo|inCutMode = 1 && canBePastedInto != 0 - callbackAction = pasteIntoNode - } - - 800 = ITEM - 800 { - name = pasteAfter - label = LLL:EXT:lang/locallang_core.xml:cm.pasteafter - spriteIcon = actions-document-paste-into - displayCondition = getContextInfo|inCopyMode = 1 || getContextInfo|inCutMode = 1 && canBePastedAfter != 0 - callbackAction = pasteAfterNode - } - - 900 = DIVIDER - - 1000 = ITEM - 1000 { - name = delete - label = LLL:EXT:lang/locallang_core.xml:cm.delete - spriteIcon = actions-edit-delete - displayCondition = canBeRemoved != 0 && isMountPoint != 1 - callbackAction = removeNode - } - } - - 1000 = SUBMENU - 1000 { - label = LLL:EXT:lang/locallang_core.xml:cm.branchActions - - 100 = ITEM - 100 { - name = mountAsTreeroot - label = LLL:EXT:lang/locallang_core.xml:cm.tempMountPoint - spriteIcon = actions-system-extension-documentation - displayCondition = canBeTemporaryMountPoint != 0 && isMountPoint = 0 - callbackAction = mountAsTreeRoot - } - - 200 = DIVIDER - - 300 = ITEM - 300 { - name = expandBranch - label = LLL:EXT:lang/locallang_core.xml:cm.expandBranch - displayCondition = - callbackAction = expandBranch - } - - 400 = ITEM - 400 { - name = collapseBranch - label = LLL:EXT:lang/locallang_core.xml:cm.collapseBranch - displayCondition = - callbackAction = collapseBranch - } - - ' . $importExportActions . ' - } - } - } - } - } -'; - -?> \ No newline at end of file diff --git a/typo3/sysext/pagetree/ext_tables.php b/typo3/sysext/pagetree/ext_tables.php deleted file mode 100644 index e1091516a33c532e03c51d0faafa05cfe43f3917..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/ext_tables.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -if (!defined('TYPO3_MODE')) { - die ('Access denied.'); -} - -if (TYPO3_MODE === 'BE') { - - t3lib_extMgm::addNavigationComponent('web', 'typo3-pagetree', array( - 'TYPO3.Components.PageTree' - )); - - $absoluteExtensionPath = t3lib_extMgm::extPath($_EXTKEY); - $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ExtDirect'] = array_merge( - $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ExtDirect'], array( - 'TYPO3.Components.PageTree.DataProvider' => - $absoluteExtensionPath . 'classes/extdirect/class.tx_pagetree_extdirect_tree.php:tx_pagetree_ExtDirect_Tree', - 'TYPO3.Components.PageTree.Commands' => - $absoluteExtensionPath . 'classes/extdirect/class.tx_pagetree_extdirect_tree.php:tx_pagetree_ExtDirect_Commands', - 'TYPO3.Components.PageTree.ContextMenuDataProvider' => - $absoluteExtensionPath . 'classes/extdirect/class.tx_pagetree_extdirect_contextmenu.php:tx_pagetree_ExtDirect_ContextMenu', - ) - ); -} - -?> diff --git a/typo3/sysext/pagetree/pagetree_ie6.css b/typo3/sysext/pagetree/pagetree_ie6.css deleted file mode 100644 index 35f511fb7b7f2c4368b15e33f77441862d6742de..0000000000000000000000000000000000000000 --- a/typo3/sysext/pagetree/pagetree_ie6.css +++ /dev/null @@ -1,34 +0,0 @@ -/** - * this has to be added to the t3skin ie6 folder - * - */ -#typo3-pagetree .typo3-pagetree-topPanel-button { - margin: 0; - padding: 0 2px; -} - -#typo3-pagetree .typo3-pagetree-topPanel-button button { - margin: 0; - padding: 0; - width: 16px; - height: 16px; - overflow: hidden; -} - -#typo3-pagetree #typo3-pagetree-indicatorBar { - padding: 0; - line-height: normal; -} - -#typo3-pagetree #typo3-pagetree-topPanel { - height: 53px; -} - -#typo3-pagetree .x-tree-node .x-tree-node-el { - border-top: 1px solid #F0F0F0; - border-bottom: 1px solid #F0F0F0; -} - -#typo3-pagetree-topPanel-filterWrap .x-form-field-trigger-wrap { - display: inline-block; -} \ No newline at end of file