[TYPO3-dam] Sorting of items in list view (and frontend)

axel at zwo-null.de axel at zwo-null.de
Fri Jun 9 18:51:33 CEST 2006


Hi Frank,

	i didn't connect to the author, since i already made some updates
and contacted
	the author concerning the problems with field length in the DAM and
got no response

	The changes are the following:

	Place the following source line in class.tx_dam_actionsRecord.php
after the class: tx_dam_action_lockWarningRec

/***************************************************************************
***/
/**
 * MoveUp record action
 *
 * @author	Axel Klarmann
 * @package DAM-Component
 * @subpackage  Action
 * @see tx_dam_actionbase
 */
class tx_dam_action_moveUpRec extends tx_dam_action_recordBase {

	/**
	 * Returns true if the action is of the wanted type
	 *
	 * @param	string		$type Action type
	 * @param	array		$itemInfo Item info array. Eg
pathInfo, meta data array
	 * @param	array		$env Environment array. Can be set
with setEnv() too.
	 * @return	boolean
	 */
	function isValid ($type, $itemInfo=NULL, $env=NULL) {
		global $TCA;

		$valid = parent::isValid ($type, $itemInfo, $env);
		if ($valid)	{
			 $valid = ($this->env['permsEdit']);
		}
		if($valid)
		{
			$valid = isset($itemInfo['prevSorting']);
		};
		return $valid;
	}

	/**
	 * Returns the icon image tag.
	 * Additional attributes to the image tagcan be added.
	 *
	 * @param	string		$addAttribute Additional attributes
	 * @return	string
	 */
	function getIcon ($addAttribute='') {
		global $TCA;

		if ($this->disabled) {
			$icon = '<img src="clear.gif"
'.t3lib_iconWorks::skinImg($this->backPath,'gfx/button_up.gif','width="11"
height="10"',2).' alt="" />';
		} else {
			$iconFile = 'gfx/button_up.gif';
			$icon =
'<img'.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], $iconFile,
'width="12" height="12"').$this->_cleanAttribute($addAttribute).' alt=""
/>';
		}
		return $icon;
	}


	/**
	 * Returns a short description for tooltips for example like: Delete
folder recursivley
	 *
	 * @return	string
	 */
	function getDescription () {
		return
$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:cm.moveup');
	}


	/**
	 * Returns a command array for the current type
	 *
	 * @return	array		Command array
	 * @access private
	 */
	function _getCommand() {
		$params =
'&cmd['.$this->itemInfo['__table'].']['.$this->itemInfo['uid'].'][move]='.$t
his->itemInfo["prev"];
		$title = $this->itemInfo['title'].'
('.$this->itemInfo['file_name'].')';
		$onClick =
'jumpToUrl(\''.$GLOBALS['SOBE']->doc->issueCommand($params, -1).'\'); return
false;';

		$commands['href'] = '#';
		$commands['onclick'] = $onClick;

		return $commands;
	}
}

/**
 * MoveDown record action
 *
 * @author	Axel Klarmann
 * @package DAM-Component
 * @subpackage  Action
 * @see tx_dam_actionbase
 */
class tx_dam_action_moveDownRec extends tx_dam_action_recordBase {

	/**
	 * Returns true if the action is of the wanted type
	 *
	 * @param	string		$type Action type
	 * @param	array		$itemInfo Item info array. Eg
pathInfo, meta data array
	 * @param	array		$env Environment array. Can be set
with setEnv() too.
	 * @return	boolean
	 */

	function isValid ($type, $itemInfo=NULL, $env=NULL) {
		global $TCA;

		$valid = parent::isValid ($type, $itemInfo, $env);
		if ($valid)	{
			 $valid = ($this->env['permsEdit']);
		}
		if($valid)
		{
			$valid = isset($itemInfo['nextSorting']);
		};
		return $valid;
	}


	/**
	 * Returns the icon image tag.
	 * Additional attributes to the image tagcan be added.
	 *
	 * @param	string		$addAttribute Additional attributes
	 * @return	string
	 */
	function getIcon ($addAttribute='') {
		global $TCA;

		if ($this->disabled) {
			$icon = '<img src="clear.gif"
'.t3lib_iconWorks::skinImg($this->backPath,'gfx/button_down.gif','width="11"
height="10"',2).' alt="" />';
		} else {
			$iconFile = 'gfx/button_down.gif';
			$icon =
'<img'.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], $iconFile,
'width="12" height="12"').$this->_cleanAttribute($addAttribute).' alt=""
/>';
		}
		return $icon;
	}

	/**
	 * Returns a short description for tooltips for example like: Delete
folder recursivley
	 *
	 * @return	string
	 */
	function getDescription () {
		return
$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:cm.movedown');
	}


	/**
	 * Returns a command array for the current type
	 *
	 * @return	array		Command array
	 * @access private
	 */
	function _getCommand() {
		$params =
'&cmd['.$this->itemInfo['__table'].']['.$this->itemInfo['uid'].'][move]='.$t
his->itemInfo["next"];
		$title = $this->itemInfo['title'].'
('.$this->itemInfo['file_name'].')';
		$onClick =
'jumpToUrl(\''.$GLOBALS['SOBE']->doc->issueCommand($params, -1).'\'); return
false;';

		$commands['href'] = '#';
		$commands['onclick'] = $onClick;

		return $commands;
	}
}
/***************************************************************************
*********/


	This will add the appropriate actions to the control.

	Then add this actions to the ext_tables.php file. To get the order
of the buttons like the 
	file menu you should place this lines 
	
		tx_dam::register_action ('tx_dam_action_moveUpRec',
'EXT:dam/components/class.tx_dam_actionsRecord.php:&tx_dam_action_moveUpRec'
);
		tx_dam::register_action ('tx_dam_action_moveDownRec',
'EXT:dam/components/class.tx_dam_actionsRecord.php:&tx_dam_action_moveDownRe
c');
	
	before 

		tx_dam::register_action ('tx_dam_action_hideRec',
'EXT:dam/components/class.tx_dam_actionsRecord.php:&tx_dam_action_hideRec');



	Finally the most importend point is to update the way the DAM
delivers records for listing in class.tx_dam_listrecords.php

	Look for the following lines in function renderList:

		$this->currentTable['prev'][$row['uid']] = $prevPrevUid;
		$this->currentTable['next'][$prevUid] = '-'.$row['uid'];
		$this->currentTable['prevUid'][$row['uid']] = $prevUid;

	And append 

		$accRows[$row['uid']]['prev'] 		= $prevPrevUid;
		$accRows[$prevUid]['next'] 			=
'-'.$row['uid'];

	right after this lines. That will store the previous and next item
in the row delivered to
	the actions .. so the chain is closed :o)

	I can also send the full files if required to the persons
interested.

Hope that helps,
Axel




More information about the TYPO3-project-dam mailing list