Project

General

Profile

Bug #15452 » 0002314_v2.patch

Administrator Admin, 2009-07-31 10:19

View differences:

t3lib/class.t3lib_tcemain.php (working copy)
$newVersion_placeholderFieldArray['t3ver_wsid'] = $this->BE_USER->workspace; // Setting workspace - only so display of place holders can filter out those from other workspaces.
$newVersion_placeholderFieldArray[$TCA[$table]['ctrl']['label']] = '[MOVE-TO PLACEHOLDER for #'.$uid.', WS#'.$this->BE_USER->workspace.']';
// moving localized records requires to "localize" the placeholder too
if( array_key_exists('languageField', $GLOBALS['TCA'][$table]['ctrl']) && array_key_exists('transOrigPointerField', $GLOBALS['TCA'][$table]['ctrl']) ) {
$l10nParentRec = t3lib_BEfunc::getRecord($table,$uid);
$newVersion_placeholderFieldArray[ $GLOBALS['TCA'][$table]['ctrl']['languageField'] ] = $l10nParentRec[ $GLOBALS['TCA'][$table]['ctrl']['languageField'] ];
$newVersion_placeholderFieldArray[ $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'] ] = $l10nParentRec[ $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'] ];
unset($l10nParentRec);
}
$newVersion_placeholderFieldArray['pid'] = 0; // Initially, create at root level.
$id = 'NEW_MOVE_PLH';
$this->insertDB($table,$id,$newVersion_placeholderFieldArray,FALSE); // Saving placeholder as 'original'
......
$updateFields['t3ver_state'] = 4; // Setting placeholder state value for version (so it can know it is currently a new version...)
$GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, 'uid='.intval($wsUid), $updateFields);
}
//check for the localizations of that element and move them as well
$this->moveL10nOverlayRecords($table,$uid,$destPid);
}
/**
......
$this->moveRecord_procFields($table,$uid,$destPid);
// Create query for update:
$GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, 'uid='.intval($uid), $updateFields);
// check for the localizations of that element
$this->moveL10nOverlayRecords($table,$uid,$destPid);
// Call post processing hooks:
foreach($hookObjectsArr as $hookObj) {
......
$this->moveRecord_procFields($table,$uid,$destPid);
// Create query for update:
$GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, 'uid='.intval($uid), $updateFields);
// check for the localizations of that element
$this->moveL10nOverlayRecords($table,$uid,$destPid);
// Call post processing hooks:
foreach($hookObjectsArr as $hookObj) {
......
}
/**
* Find l10n-overlay records and perform the requested move action for these records.
*
* @param string $table: Record Table
* @param string $uid: Record UID
* @param string $destPid: Position to move to
* @return void
*/
function moveL10nOverlayRecords($table,$uid,$destPid) {
//there's no need to perform this for table-records
if( $table == 'pages' ) return;
t3lib_div::loadTCA( $table );
$l10nRecords = t3lib_BEfunc::getRecordsByField( $table, $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'], $uid );
if( is_array($l10nRecords) ) {
foreach( $l10nRecords as $record ) {
$this->moveRecord( $table, $record['uid'], $destPid );
}
}
}
/**
* Localizes a record to another system language
* In reality it only works if transOrigPointerTable is not set. For "pages" the implementation is hardcoded
*
......
if ($TCA[$table]['ctrl']['sortby']) {
$keepFields[] = $TCA[$table]['ctrl']['sortby'];
}
// l10n-fields must be kept otherwise the localization will be lost during the publishing
if ( $TCA[$table]['ctrl']['transOrigPointerField'] ) {
$keepFields[] = $TCA[$table]['ctrl']['transOrigPointerField'];
}
// Swap "keepfields"
foreach($keepFields as $fN) {
(6-6/8)