Project

General

Profile

Bug #19727 » 9991.diff

Administrator Admin, 2008-12-20 18:25

View differences:

typo3/sysext/version/cm1/index.php (working copy)
// Menu items:
$this->MOD_MENU = array(
'filter' => array(
1 => 'Drafts',
2 => 'Archive',
0 => 'All',
1 => $GLOBALS['LANG']->getLL('filter_drafts'),
2 => $GLOBALS['LANG']->getLL('filter_archive'),
0 => $GLOBALS['LANG']->getLL('filter_all'),
),
'display' => array(
0 => '[Live workspace]',
-98 => 'Draft Workspaces',
-99 => 'All',
-99 => $GLOBALS['LANG']->getLL('filter_all'),
-1 => '[Default Draft]'
),
'diff' => ''
......
$diff_2 = t3lib_div::_POST('diff_2');
if (t3lib_div::_POST('do_diff')) {
$content='';
$content.='<h3>DIFFING:</h3>';
$content.='<h3>' . $GLOBALS['LANG']->getLL('diffing') . ':</h3>';
if ($diff_1 && $diff_2) {
$diff_1_record = t3lib_BEfunc::getRecord($this->table, $diff_1);
$diff_2_record = t3lib_BEfunc::getRecord($this->table, $diff_2);
......
$tRows=array();
$tRows[] = '
<tr class="bgColor5 tableheader">
<td>Fieldname:</td>
<td width="98%">Colored diff-view:</td>
<td>' . $GLOBALS['LANG']->getLL('fieldname') . '</td>
<td width="98%">' . $GLOBALS['LANG']->getLL('coloredDiffView') . ':</td>
</tr>
';
foreach($diff_1_record as $fN => $fV) {
......
if (count($tRows)>1) {
$content.='<table border="0" cellpadding="1" cellspacing="1" width="100%">'.implode('',$tRows).'</table><br/><br/>';
} else {
$content.='Records matches completely on all editable fields!';
$content .= $GLOBALS['LANG']->getLL('recordsMatchesCompletely');
}
} else $content.='ERROR: Records could strangely not be found!';
} else $content .= $GLOBALS['LANG']->getLL('errorRecordsNotFound');
} else {
$content.='ERROR: You didn\'t select two sources for diffing!';
$content .= $GLOBALS['LANG']->getLL('errorDiffSources');
}
}
......
<tr class="bgColor5 tableheader">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>Title</td>
<td>' . $GLOBALS['LANG']->getLL('tblTitle') . '</td>
<td>UID</td>
<td title="t3ver_oid - Reference to live version UID">oid</td>
<td title="t3ver_id - Version number, incremental integer">id</td>
<td title="t3ver_wsid - Workspace ID. There can be only one version of an element per ID (except ID zero).">wsid</td>
<td title="t3ver_state - Special states of a version: 1=Placeholder for &quot;New&quot;. 2=Marked deleted.">state</td>
<td title="t3ver_stage - Publishing stage: Editing (0), review (1), publish (10), rejected (-1).">stage</td>
<td title="t3ver_count - Life cycle counter. Incremented each time element is unpublished.">count</td>
<td title="' . $GLOBALS['LANG']->getLL('t3ver_oid') . '">oid</td>
<td title="' . $GLOBALS['LANG']->getLL('t3ver_id') . '">id</td>
<td title="' . $GLOBALS['LANG']->getLL('t3ver_wsid') . '">wsid</td>
<td title="' . $GLOBALS['LANG']->getLL('t3ver_state') . '">state</td>
<td title="' . $GLOBALS['LANG']->getLL('t3ver_stage') . '">stage</td>
<td title="' . $GLOBALS['LANG']->getLL('t3ver_count') . '">count</td>
<td>pid</td>
<td>t3ver_label</td>
<td colspan="2"><input type="submit" name="do_diff" value="Diff" /></td>
<td>' . $GLOBALS['LANG']->getLL('t3ver_label') . '</td>
<td colspan="2"><input type="submit" name="do_diff" value="' . $GLOBALS['LANG']->getLL('diff') . '" /></td>
</tr>';
$versions = t3lib_BEfunc::selectVersionsOfRecord($this->table, $this->uid, '*', $GLOBALS['BE_USER']->workspace);
......
$content.='
<tr class="'.($row['uid']!=$this->uid ? 'bgColor4' : 'bgColor2 tableheader').'">
<td>'.($row['uid']!=$this->uid ? '<a href="'.$this->doc->issueCommand('&cmd['.$this->table.']['.$this->uid.'][version][swapWith]='.$row['uid'].'&cmd['.$this->table.']['.$this->uid.'][version][action]=swap').'">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/insert1.gif','width="14" height="14"').' alt="" title="SWAP with current" />'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/insert1.gif','width="14" height="14"').' alt="" title="' . $GLOBALS['LANG']->getLL('swapWithCurrent') . '" />'.
'</a>' /* (
$this->table == 'pages' ?
'<a href="'.$this->doc->issueCommand('&cmd['.$this->table.']['.$this->uid.'][version][action]=swap&cmd['.$this->table.']['.$this->uid.'][version][swapWith]='.$row['uid'].'&cmd['.$this->table.']['.$this->uid.'][version][swapContent]=1').'">'.
......
'</a>'.
'<a href="'.$this->doc->issueCommand('&cmd['.$this->table.']['.$this->uid.'][version][action]=swap&cmd['.$this->table.']['.$this->uid.'][version][swapWith]='.$row['uid'].'&cmd['.$this->table.']['.$this->uid.'][version][swapContent]=ALL').'">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/insert4.gif','width="14" height="14"').' alt="" title="Publish page AND content! - AND ALL SUBPAGES!" />'.
'</a>' : '') */ : '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/blinkarrow_left.gif','width="5" height="9"').' alt="" title="CURRENT ONLINE VERSION!"/>').'</td>
'</a>' : '') */ : '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/blinkarrow_left.gif','width="5" height="9"').' alt="" title="' . $GLOBALS['LANG']->getLL('currentOnlineVersion') . '"/>').'</td>
<td nowrap="nowrap">'.$adminLinks.'</td>
<td nowrap="nowrap">'.t3lib_BEfunc::getRecordTitle($this->table,$row,TRUE).'</td>
<td>'.$row['uid'].'</td>
......
<td>'.$row['t3ver_stage'].'</td>
<td>'.$row['t3ver_count'].'</td>
<td>'.$row['pid'].'</td>
<td nowrap="nowrap"><a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick('&edit['.$this->table.']['.$row['uid'].']=edit&columnsOnly=t3ver_label',$this->doc->backPath)).'"><img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/edit2.gif','width="11" height="12"').' alt="" title="Edit"/></a>'.htmlspecialchars($row['t3ver_label']).'</td>
<td nowrap="nowrap"><a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick('&edit['.$this->table.']['.$row['uid'].']=edit&columnsOnly=t3ver_label',$this->doc->backPath)).'"><img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/edit2.gif','width="11" height="12"').' alt="" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:cm.edit'). '"/></a>' . htmlspecialchars($row['t3ver_label']).'</td>
<td class="version-diff-1"><input type="radio" name="diff_1" value="'.$row['uid'].'"'.($diff_1==$row['uid'] ? ' checked="checked"':'').'/></td>
<td class="version-diff-2"><input type="radio" name="diff_2" value="'.$row['uid'].'"'.($diff_2==$row['uid'] ? ' checked="checked"':'').'/></td>
</tr>';
......
<form action="'.$this->doc->backPath.'tce_db.php" method="post">
Label: <input type="text" name="cmd['.$this->table.']['.$this->uid.'][version][label]" /><br/>
'.($this->table == 'pages' ? '<select name="cmd['.$this->table.']['.$this->uid.'][version][treeLevels]">
'.($GLOBALS['BE_USER']->workspaceVersioningTypeAccess(0) ? '<option value="0">Page: Page + content</option>' : '').'
'.($GLOBALS['BE_USER']->workspaceVersioningTypeAccess(1) ? '<option value="100">Branch: All subpages</option>' : '').'
'.($GLOBALS['BE_USER']->workspaceVersioningTypeAccess(-1) ? '<option value="-1">Element: Just record</option>' : '').'
'.($GLOBALS['BE_USER']->workspaceVersioningTypeAccess(0) ? '<option value="0">' . $GLOBALS['LANG']->getLL('cmdPid0') . '</option>' : '').'
'.($GLOBALS['BE_USER']->workspaceVersioningTypeAccess(1) ? '<option value="100">' . $GLOBALS['LANG']->getLL('cmdPid100') . '</option>' : '').'
'.($GLOBALS['BE_USER']->workspaceVersioningTypeAccess(-1) ? '<option value="-1">' . $GLOBALS['LANG']->getLL('cmdPid1') . '</option>' : '').'
</select>' : '').'
<br/><input type="hidden" name="cmd['.$this->table.']['.$this->uid.'][version][action]" value="new" />
<input type="hidden" name="prErr" value="1" />
<input type="hidden" name="redirect" value="'.htmlspecialchars($this->REQUEST_URI).'" />
<input type="submit" name="_" value="Create new version" />
<input type="submit" name="_" value="' . $GLOBALS['LANG']->getLL('createNewVersion') . '" />
</form>
';
$this->content.=$this->doc->spacer(15);
$this->content.=$this->doc->section('Create new version',$content,0,1);
$this->content.=$this->doc->section($GLOBALS['LANG']->getLL('createNewVersion'), $content,0,1);
}
......
// Edit link:
$adminLink = '<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick('&edit['.$table.']['.$row['uid'].']=edit',$this->doc->backPath)).'">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/edit2.gif','width="11" height="12"').' alt="" title="Edit"/>'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/edit2.gif','width="11" height="12"').' alt="" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:cm.edit'). '"/>'.
'</a>';
// Delete link:
$adminLink.= '<a href="'.htmlspecialchars($this->doc->issueCommand('&cmd['.$table.']['.$row['uid'].'][delete]=1')).'">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/garbage.gif','width="11" height="12"').' alt="" title="Delete"/>'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/garbage.gif','width="11" height="12"').' alt="" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:cm.delete'). '"/>'.
'</a>';
......
$actionLinks = '<br/>';
if ($GLOBALS['BE_USER']->workspace!==0) {
if ($this->publishAccess) {
$actionLinks.= '<input type="submit" name="_publish" value="Publish page" onclick="return confirm(\'Are you sure you want to publish all content '.($GLOBALS['BE_USER']->workspaceRec['publish_access']&1 ? 'in &quot;Publish&quot; stage ':'').'from this page?\');"/>';
$actionLinks.= '<input type="submit" name="_publish" value="' . $GLOBALS['LANG']->getLL('publishPage') . '" onclick="return confirm(\'' . sprintf($GLOBALS['LANG']->getLL('publishPageQuestion'), $GLOBALS['BE_USER']->workspaceRec['publish_access'] & 1 ? $GLOBALS['LANG']->getLL('publishPageQuestionStage') : '') . '\');"/>';
if ($GLOBALS['BE_USER']->workspaceSwapAccess()) {
$actionLinks.= '<input type="submit" name="_swap" value="Swap page" onclick="return confirm(\'Are you sure you want to publish (swap) all content '.($GLOBALS['BE_USER']->workspaceRec['publish_access']&1 ? 'in &quot;Publish&quot; stage ':'').'from this page?\');" />';
$actionLinks.= '<input type="submit" name="_swap" value="' . $GLOBALS['LANG']->getLL('swapPage') . '" onclick="return confirm(\'' . sprintf($GLOBALS['LANG']->getLL('swapPageQuestion'), $GLOBALS['BE_USER']->workspaceRec['publish_access'] & 1 ? $GLOBALS['LANG']->getLL('publishPageQuestionStage') : '') . '\');" />';
}
} else {
$actionLinks.= $this->doc->icons(1).'You are not permitted to publish from this workspace';
$actionLinks.= $this->doc->icons(1) . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_user_ws.xml:no_publish_permission');
}
}
$actionLinks.= '<input type="submit" name="_" value="Refresh" />';
$actionLinks.= '<input type="submit" name="_previewLink" value="Preview Link" />';
$actionLinks.= '<input type="submit" name="_previewLink" value="' . $GLOBALS['LANG']->getLL('previewLink') . '" />';
$actionLinks.= $this->displayWorkspaceOverview_allStageCmd();
if ($actionLinks || count($errors)) {
......
$params = 'id='.$this->id.'&ADMCMD_previewWS='.$GLOBALS['BE_USER']->workspace;
$previewUrl = t3lib_div::getIndpEnv('TYPO3_SITE_URL').'index.php?ADMCMD_prev='.t3lib_BEfunc::compilePreviewKeyword($params, $GLOBALS['BE_USER']->user['uid'],60*60*$ttlHours);
$this->content.= $this->doc->section('Preview Url:','You can preview this page from the workspace using this link for the next '.$ttlHours.' hours (does not require backend login):<br/><br/><a target="_blank" href="'.htmlspecialchars($previewUrl).'">'.$previewUrl.'</a>',0,1);
$this->content.= $this->doc->section($GLOBALS['LANG']->getLL('previewUrl'), sprintf($GLOBALS['LANG']->getLL('previewInstruction'), $ttlHours) . '<br/><br/><a target="_blank" href="'.htmlspecialchars($previewUrl).'">'.$previewUrl.'</a>',0,1);
}
// Output overview content:
$this->content.= $this->doc->spacer(15);
$this->content.= $this->doc->section($this->details ? 'Details for version' : 'Workspace management', $WSoverview,0,1);
$this->content.= $this->doc->section($this->details ? $GLOBALS['LANG']->getLL('versionDetails') : $GLOBALS['LANG']->getLL('wsManagement'), $WSoverview,0,1);
}
......
$menu.= t3lib_BEfunc::getFuncMenu($this->id,'SET[display]',$this->MOD_SETTINGS['display'],$this->MOD_MENU['display']);
}
if (!$this->details && $GLOBALS['BE_USER']->workspace && !$this->diffOnly) {
$menu.= t3lib_BEfunc::getFuncCheck($this->id,'SET[diff]',$this->MOD_SETTINGS['diff'],'','','id="checkDiff"').' <label for="checkDiff">Show difference view</label>';
$menu.= t3lib_BEfunc::getFuncCheck($this->id,'SET[diff]',$this->MOD_SETTINGS['diff'],'','','id="checkDiff"').' <label for="checkDiff">' . $GLOBALS['LANG']->getLL('showDiffView') . '</label>';
}
if ($menu) {
......
if (count($pArray)) {
$tableRows[] = '
<tr class="bgColor5 tableheader">
'.($this->diffOnly?'':'<td nowrap="nowrap" colspan="2">Live Version:</td>').'
<td nowrap="nowrap" colspan="2">Workspace Versions:</td>
<td nowrap="nowrap"'.($this->diffOnly?' colspan="2"':' colspan="4"').'>Controls:</td>
'.($this->diffOnly?'':'<td nowrap="nowrap" colspan="2">' . $GLOBALS['LANG']->getLL('liveVersion') . '</td>').'
<td nowrap="nowrap" colspan="2">' . $GLOBALS['LANG']->getLL('wsVersions') . '</td>
<td nowrap="nowrap"'.($this->diffOnly?' colspan="2"':' colspan="4"').'>' . $GLOBALS['LANG']->getLL('controls') . '</td>
</tr>';
// Add lines from overview:
......
$table = '<table border="0" cellpadding="0" cellspacing="1" class="lrPadding workspace-overview">'.implode('',$tableRows).'</table>';
} else $table = '';
$linkBack = t3lib_div::_GP('returnUrl') ? '<a href="'.htmlspecialchars(t3lib_div::_GP('returnUrl')).'" class="typo3-goBack"><img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/goback.gif','width="14" height="14"').' alt="" />Click here to go back</a><br/><br/>' : '';
$resetDiffOnly = $this->diffOnly ? '<a href="index.php?id='.intval($this->id).'" class="typo3-goBack">Show all information</a><br/><br/>' : '';
$linkBack = t3lib_div::_GP('returnUrl') ? '<a href="'.htmlspecialchars(t3lib_div::_GP('returnUrl')).'" class="typo3-goBack"><img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/goback.gif','width="14" height="14"').' alt="" />' . $GLOBALS['LANG']->getLL('goBack') . '</a><br/><br/>' : '';
$resetDiffOnly = $this->diffOnly ? '<a href="index.php?id='.intval($this->id).'" class="typo3-goBack">' . $GLOBALS['LANG']->getLL('showAllInformation') . '</a><br/><br/>' : '';
$versionSelector = $GLOBALS['BE_USER']->workspace ? $this->doc->getVersionSelector($this->id) : '';
......
$diffCode = '';
list($diffHTML,$diffPct) = $this->createDiffView($table, $rec_off, $rec_on);
if ($rec_on['t3ver_state']==1) { // New record:
$diffCode.= $this->doc->icons(1).'New element<br/>'; // TODO Localize?
$diffCode.= $this->doc->icons(1) . $GLOBALS['LANG']->getLL('newElement') . '<br/>';
$diffCode.= $diffHTML;
} elseif ($rec_off['t3ver_state']==2) {
$diffCode.= $this->doc->icons(2).'Deleted element<br/>';
$diffCode.= $this->doc->icons(2) . $GLOBALS['LANG']->getLL('deletedElement') . '<br/>';
} elseif ($rec_on['t3ver_state']==3) {
$diffCode.= $this->doc->icons(1).'Move-to placeholder (destination)<br/>';
$diffCode.= $this->doc->icons(1) . $GLOBALS['LANG']->getLL('moveToPlaceholder') . '<br/>';
} elseif ($rec_off['t3ver_state']==4) {
$diffCode.= $this->doc->icons(1).'Move-to pointer (source)<br/>';
$diffCode.= $this->doc->icons(1) . $GLOBALS['LANG']->getLL('moveToPointer') . '<br/>';
} else {
$diffCode.= ($diffPct<0 ? 'N/A' : ($diffPct ? $diffPct.'% change:' : ''));
$diffCode.= ($diffPct<0 ? 'N/A' : ($diffPct ? $diffPct . '% ' . $GLOBALS['LANG']->getLL('change') : ''));
$diffCode.= $diffHTML;
}
} else $diffCode = '';
switch($vType) {
case 'element':
$swapLabel = ' [Element]';
$swapLabel = $GLOBALS['LANG']->getLL('element');
$swapClass = 'ver-element';
$warnAboutVersions_nonPages = $warnAboutVersions_page; // Setting this if sub elements are found with a page+content (must be rendered prior to this of course!)
break;
case 'page':
$swapLabel = ' [Page]';
$swapLabel = $GLOBALS['LANG']->getLL('page');
$swapClass = 'ver-page';
$warnAboutVersions_page = !$this->showWorkspaceCol; // This value is true only if multiple workspaces are shown and we need the opposite here.
break;
case 'branch':
$swapLabel = ' [Branch]';
$swapLabel = $GLOBALS['LANG']->getLL('branch');
$swapClass = 'ver-branch';
break;
}
......
}
$mainCell = str_replace('###SUB_ELEMENTS###', $subElements['on'], $mainCell);
// Create version element:
// Create version element: $GLOBALS['LANG']->getLL('liveVersion')
$versionsInOtherWS = $this->versionsInOtherWS($table, $rec_on['uid']);
$versionsInOtherWSWarning = $versionsInOtherWS && $GLOBALS['BE_USER']->workspace!==0 ? '<br/>'.$this->doc->icons(2).'Other version(s) in workspace '.$versionsInOtherWS : '';
$multipleWarning = (!$mainCell && $GLOBALS['BE_USER']->workspace!==0? '<br/>'.$this->doc->icons(3).'<b>Multiple versions in same workspace!</b>' : '');
$verWarning = $warnAboutVersions || ($warnAboutVersions_nonPages && $GLOBALS['TCA'][$table]['ctrl']['versioning_followPages'])? '<br/>'.$this->doc->icons(3).'<b>Version inside version!</b>' : '';
$versionsInOtherWSWarning = $versionsInOtherWS && $GLOBALS['BE_USER']->workspace!==0 ? '<br/>'.$this->doc->icons(2) . $GLOBALS['LANG']->getLL('otherVersions') . $versionsInOtherWS : '';
$multipleWarning = (!$mainCell && $GLOBALS['BE_USER']->workspace!==0? '<br/>'.$this->doc->icons(3).'<b>' . $GLOBALS['LANG']->getLL('multipleVersions') . '</b>' : '');
$verWarning = $warnAboutVersions || ($warnAboutVersions_nonPages && $GLOBALS['TCA'][$table]['ctrl']['versioning_followPages'])? '<br/>'.$this->doc->icons(3).'<b>' . $GLOBALS['LANG']->getLL('versionInVersion') . '</b>' : '';
$verElement = $icon.
(!$this->details ? '<a href="'.htmlspecialchars($this->doc->backPath.t3lib_extMgm::extRelPath('version').'cm1/index.php?id='.($table==='pages'?$rec_on['uid']:$rec_on['pid']).'&details='.rawurlencode($table.':'.$rec_off['uid']).'&returnUrl='.rawurlencode($this->REQUEST_URI)).'">' : '').
t3lib_BEfunc::getRecordTitle($table,$rec_off,TRUE).
......
$this->displayWorkspaceOverview_commandLinks($table,$rec_on,$rec_off,$vType).
htmlspecialchars($swapLabel).
'&nbsp;&nbsp;</td>
'.(!$this->diffOnly?'<td nowrap="nowrap"><b>Lifecycle:</b> '.htmlspecialchars($this->formatCount($rec_off['t3ver_count'])).'</td>'. // Lifecycle
'.(!$this->diffOnly?'<td nowrap="nowrap"><b>' . $GLOBALS['LANG']->getLL('lifecycle') . ':</b> '.htmlspecialchars($this->formatCount($rec_off['t3ver_count'])).'</td>'. // Lifecycle
($this->showWorkspaceCol ? '
<td nowrap="nowrap">&nbsp;&nbsp;<b>Workspace:</b> '.htmlspecialchars($this->formatWorkspace($rec_off['t3ver_wsid'])).'</td>' : ''):'');
<td nowrap="nowrap">&nbsp;&nbsp;<b>' . $GLOBALS['LANG']->getLL('workspace') . ':</b> '.htmlspecialchars($this->formatWorkspace($rec_off['t3ver_wsid'])).'</td>' : ''):'');
if ($diffCode) {
$verElement = $verElement.'
<br/><b>Difference to live element:</b>
<br/><b>' . $GLOBALS['LANG']->getLL('diffToLiveElement') . '</b>
<table border="0" cellpadding="0" cellspacing="0" class="ver-verElement">
<tr>
<td class="c-diffCell">'.$diffCode.'</td>
......
$sId = $this->recIndex[$table][$uid];
switch($sId) {
case 1:
$label = 'Comment for Reviewer:';
$label = $GLOBALS['LANG']->getLL('commentForReviewer');
break;
case 10:
$label = 'Comment for Publisher:';
$label = $GLOBALS['LANG']->getLL('commentForPublisher');
break;
}
} else $sId = 0;
......
if (count($this->stageIndex[1])) { // Review:
$sId = 1;
$color = '#666666';
$label = 'Sending %s item(s) to review. Comment for Reviewer:';
$titleAttrib = 'Send all to Review';
$label = $GLOBALS['LANG']->getLL('sendItemsToReview') . $GLOBALS['LANG']->getLL('commentForReviewer');
$titleAttrib = $GLOBALS['LANG']->getLL('sendAllToReview');
} elseif(count($this->stageIndex[10])) { // Publish:
$sId = 10;
$color = '#6666cc';
$label = 'Approving %s item(s) to publishing. Comment for Publisher:';
$titleAttrib = 'Approve all for Publishing';
$label = $GLOBALS['LANG']->getLL('approveToPublish') . $GLOBALS['LANG']->getLL('commentForPublisher');
$titleAttrib = $GLOBALS['LANG']->getLL('approveAllToPublish');
} else {
$sId = 0;
}
......
if (!isset($this->formatWorkspace_cache[$wsid])) {
switch($wsid) {
case -1:
$this->formatWorkspace_cache[$wsid] = '[Offline]';
$this->formatWorkspace_cache[$wsid] = $GLOBALS['LANG']->getLL('offline');
break;
case 0:
$this->formatWorkspace_cache[$wsid] = ''; // Does not output anything for ONLINE because it might confuse people to think that the elemnet IS online which is not the case - only that it exists as an offline version in the online workspace...
......
if (!isset($this->formatCount_cache[$count])) {
switch($count) {
case 0:
$this->formatCount_cache[$count] = 'Draft';
$this->formatCount_cache[$count] = $GLOBALS['LANG']->getLL('draft');
break;
case 1:
$this->formatCount_cache[$count] = 'Archive';
$this->formatCount_cache[$count] = $GLOBALS['LANG']->getLL('archive');
break;
default:
$this->formatCount_cache[$count] = 'Published '.$count.' times';
$this->formatCount_cache[$count] = sprintf($GLOBALS['LANG']->getLL('publishedXTimes'), $count);
break;
}
}
......
switch($data['stage']) {
case 1:
$text = 'sent element to "Review"';
$text = $GLOBALS['LANG']->getLL('stage.sentToReview');
break;
case 10:
$text = 'approved for "Publish"';
$text = $GLOBALS['LANG']->getLL('stage.approvedForPublish');
break;
case -1:
$text = 'rejected element!';
$text = $GLOBALS['LANG']->getLL('stage.rejectedElement');
break;
case 0:
$text = 'reset to "Editing"';
$text = $GLOBALS['LANG']->getLL('stage.resetToEdit');
break;
default:
$text = '[undefined]';
$text = $GLOBALS['LANG']->getLL('stage.undefined');
break;
}
$text = t3lib_BEfunc::dateTime($dat['tstamp']).': "'.$username.'" '.$text;
$text.= ($data['comment']?'<br/>User Comment: <em>'.htmlspecialchars($data['comment']).'</em>':'');
$text.= ($data['comment']?'<br/>' . $GLOBALS['LANG']->getLL('userComment') . ': <em>'.htmlspecialchars($data['comment']).'</em>':'');
$entry[] = $text;
}
......
<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/ol/joinbottom.gif','width="18" height="16"').' align="top" alt="" title="" />'.
($origId ?
'<a href="'.htmlspecialchars($this->doc->backPath.t3lib_extMgm::extRelPath('version').'cm1/index.php?id='.$uid.'&details='.rawurlencode('pages:'.$uid).'&returnUrl='.rawurlencode($this->REQUEST_URI)).'">'.
'<span class="typo3-dimmed"><em>[Sub elements, click for details]</em><span></a>' :
'<span class="typo3-dimmed"><em>[Sub elements]</em><span>');
'<span class="typo3-dimmed"><em>' . $GLOBALS['LANG']->getLL('subElementsClick') . '</em><span></a>' :
'<span class="typo3-dimmed"><em>' . $GLOBALS['LANG']->getLL('subElements') . '</em><span>');
} else { // For an offline workspace, show sub elements:
$tCell = array();
......
'</div>';
} else {
$diffCode =
($diffPct<0 ? 'N/A' : ($diffPct ? $diffPct.'% change:' : '')).
($diffPct<0 ? 'N/A' : ($diffPct ? $diffPct . '% ' . $GLOBALS['LANG']->getLL('change') : '')).
$diffHTML;
}
}
......
$tRows = array();
$tRows[] = '
<tr class="bgColor5 tableheader">
<td>Fieldname:</td>
<td width="98%" nowrap="nowrap">Colored diff-view:</td>
<td>' . $GLOBALS['LANG']->getLL('fieldname') . ':</td>
<td width="98%" nowrap="nowrap">' . $GLOBALS['LANG']->getLL('coloredDiffView') . ':</td>
</tr>
';
......
if (count($tRows)>1) {
$content.= '<table border="0" cellpadding="1" cellspacing="1" class="diffTable">'.implode('',$tRows).'</table>';
} else {
$content.= '<span class="nobr">'.$this->doc->icons(1).'Complete match on editable fields.</span>';
$content.= '<span class="nobr">'.$this->doc->icons(1) . $GLOBALS['LANG']->getLL('completeMatch') . '</span>';
}
} else $content.= $this->doc->icons(3).'ERROR: Records could strangely not be found!';
} else $content.= $this->doc->icons(3) . $GLOBALS['LANG']->getLL('errorRecordsNotFound');
// Return value:
return array($content,$pctChange);
......
switch((int)$rec_off['t3ver_stage']) {
case 0:
$sId = 1;
$sLabel = 'Editing';
$sLabel = $GLOBALS['LANG']->getLL('editing');
$color = '#666666';
$label = 'Comment for Reviewer:';
$titleAttrib = 'Send to Review';
$label = $GLOBALS['LANG']->getLL('commentForReviewer');
$titleAttrib = $GLOBALS['LANG']->getLL('sendToReview');
break;
case 1:
$sId = 10;
$sLabel = 'Review';
$sLabel = $GLOBALS['LANG']->getLL('review');
$color = '#6666cc';
$label = 'Comment for Publisher:';
$titleAttrib = 'Approve for Publishing';
$label = $GLOBALS['LANG']->getLL('commentForPublisher');
$titleAttrib = $GLOBALS['LANG']->getLL('approveForPublishing');
break;
case 10:
$sLabel = 'Publish';
$sLabel = $GLOBALS['LANG']->getLL('publish');
$color = '#66cc66';
break;
case -1:
$sLabel = $this->doc->icons(2).'Rejected';
$sLabel = $this->doc->icons(2) . $GLOBALS['LANG']->getLL('rejected');
$sId = 0;
$color = '#ff0000';
$label = 'Comment:';
$titleAttrib = 'Reset stage';
$label = $GLOBALS['LANG']->getLL('comment');
$titleAttrib = $GLOBALS['LANG']->getLL('resetStage');
break;
default:
$sLabel = 'Undefined';
$sLabel = $GLOBALS['LANG']->getLL('undefined');
$sId = 0;
$color = '';
break;
......
$raiseOk = !$GLOBALS['BE_USER']->workspaceCannotEditOfflineVersion($table,$rec_off);
if ($raiseOk && $rec_off['t3ver_stage']!=-1) {
$onClick = 'var commentTxt=window.prompt("Please explain why you reject:","");
$onClick = 'var commentTxt=window.prompt("' . $GLOBALS['LANG']->getLL('rejectExplain') . '","");
if (commentTxt!=null) {window.location.href="'.$this->doc->issueCommand(
'&cmd['.$table.']['.$rec_off['uid'].'][version][action]=setStage'.
'&cmd['.$table.']['.$rec_off['uid'].'][version][stageId]=-1'
......
// Reject:
$actionLinks.=
'<a href="#" onclick="'.htmlspecialchars($onClick).'">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/down.gif','width="14" height="14"').' alt="" align="top" title="Reject" />'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/down.gif','width="14" height="14"').' alt="" align="top" title="' . $GLOBALS['LANG']->getLL('reject') . '" />'.
'</a>';
} else {
// Reject:
......
'&cmd['.$table.']['.$rec_on['uid'].'][version][action]=swap'.
'&cmd['.$table.']['.$rec_on['uid'].'][version][swapWith]='.$rec_off['uid']
)).'">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/insert1.gif','width="14" height="14"').' alt="" align="top" title="Publish" />'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/insert1.gif','width="14" height="14"').' alt="" align="top" title="' . $GLOBALS['LANG']->getLL('publish') . '" />'.
'</a>';
if ($GLOBALS['BE_USER']->workspaceSwapAccess()) {
$actionLinks.=
......
'&cmd['.$table.']['.$rec_on['uid'].'][version][swapWith]='.$rec_off['uid'].
'&cmd['.$table.']['.$rec_on['uid'].'][version][swapIntoWS]=1'
)).'">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/swap.png','width="14" height="14"').' alt="" align="top" title="Swap" />'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/swap.png','width="14" height="14"').' alt="" align="top" title="' . $GLOBALS['LANG']->getLL('swap') . '" />'.
'</a>';
}
}
......
if (!$GLOBALS['BE_USER']->workspaceCannotEditOfflineVersion($table,$rec_off)) {
// Release
$actionLinks.=
'<a href="'.htmlspecialchars($this->doc->issueCommand('&cmd['.$table.']['.$rec_off['uid'].'][version][action]=clearWSID')).'" onclick="return confirm(\'Remove from workspace?\');">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/group_clear.gif','width="14" height="14"').' alt="" align="top" title="Remove from workspace" />'.
'<a href="'.htmlspecialchars($this->doc->issueCommand('&cmd['.$table.']['.$rec_off['uid'].'][version][action]=clearWSID')).'" onclick="return confirm(\'' . $GLOBALS['LANG']->getLL('removeFromWorkspace') . '?\');">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/group_clear.gif','width="14" height="14"').' alt="" align="top" title="' . $GLOBALS['LANG']->getLL('removeFromWorkspace') . '" />'.
'</a>';
// Edit
......
$tempUid = ($vType==='branch' || $GLOBALS['BE_USER']->workspace===0 ? $rec_off['uid'] : $rec_on['uid']);
$actionLinks.=
'<a href="#" onclick="top.loadEditId('.$tempUid.');top.goToModule(\''.$this->pageModule.'\'); return false;">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,t3lib_extMgm::extRelPath('cms').'layout/layout.gif','width="14" height="12"').' title="Edit page" alt="" />'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,t3lib_extMgm::extRelPath('cms').'layout/layout.gif','width="14" height="12"').' title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_user_ws.xml:img_title_edit_page'). '" alt="" />'.
'</a>';
} else {
$params = '&edit['.$table.']['.$rec_off['uid'].']=edit';
$actionLinks.=
'<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick($params,$this->doc->backPath)).'">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/edit2.gif','width="12" height="12"').' title="Edit element" alt="" />'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/edit2.gif','width="12" height="12"').' title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_user_ws.xml:img_title_edit_element'). '" alt="" />'.
'</a>';
}
}
......
// History/Log
$actionLinks.=
'<a href="'.htmlspecialchars($this->doc->backPath.'show_rechis.php?element='.rawurlencode($table.':'.$rec_off['uid']).'&returnUrl='.rawurlencode($this->REQUEST_URI)).'">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/history2.gif','width="13" height="12"').' title="Show Log" alt="" />'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/history2.gif','width="13" height="12"').' title="' . $GLOBALS['LANG']->getLL('showLog') . '" alt="" />'.
'</a>';
// View
......
if ($table==='pages') {
$actionLinks.=
'<a href="#" onclick="top.loadEditId('.$uid.');top.goToModule(\''.$this->pageModule.'\'); return false;">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,t3lib_extMgm::extRelPath('cms').'layout/layout.gif','width="14" height="12"').' title="Edit page" alt="" />'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,t3lib_extMgm::extRelPath('cms').'layout/layout.gif','width="14" height="12"').' title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_user_ws.xml:img_title_edit_page'). '" alt="" />'.
'</a>';
} else {
$params = '&edit['.$table.']['.$uid.']=edit';
$actionLinks.=
'<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick($params,$this->doc->backPath)).'">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/edit2.gif','width="12" height="12"').' title="Edit element" alt="" />'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/edit2.gif','width="12" height="12"').' title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_user_ws.xml:img_title_edit_element'). '" alt="" />'.
'</a>';
}
}
......
// History/Log
$actionLinks.=
'<a href="'.htmlspecialchars($this->doc->backPath.'show_rechis.php?element='.rawurlencode($table.':'.$uid).'&returnUrl='.rawurlencode($this->REQUEST_URI)).'">'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/history2.gif','width="13" height="12"').' title="Show Log" alt="" />'.
'<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/history2.gif','width="13" height="12"').' title="' . $GLOBALS['LANG']->getLL('showLog') . '" alt="" />'.
'</a>';
}
typo3/sysext/version/locallang.xml (working copy)
<label index="mlang_labels_tablabel">Page and content versioning and workspace management for pages.</label>
<label index="mlang_labels_tabdescr">The Web&gt;Versioning module provides access to versioning features for the page tree.</label>
<label index="mlang_tabs_tab">Versioning</label>
<label index="function1">Function #1</label>
<label index="function2">Function #2</label>
<label index="function3">Function #3</label>
<label index="clickAPage_header">Web&gt;Versioning module</label>
<label index="clickAPage_content">Please click a page in the pagetree frame to see the versioning module.</label>
<label index="filter_drafts">Drafts</label>
<label index="filter_archive">Archive</label>
<label index="filter_all">All</label>
<label index="diffing">DIFFING</label>
<label index="fieldname">Fieldname</label>
<label index="coloredDiffView">Colored diff-view</label>
<label index="recordsMatchesCompletely">Records matches completely on all editable fields!</label>
<label index="errorRecordsNotFound">ERROR: Records could strangely not be found!</label>
<label index="errorDiffSources">ERROR: You didn't select two sources for diffing!</label>
<label index="tblTitle">Title</label>
<label index="t3ver_oid">t3ver_oid - Reference to live version UID</label>
<label index="t3ver_id">t3ver_id - Version number, incremental integer</label>
<label index="t3ver_wsid">t3ver_wsid - Workspace ID. There can be only one version of an element per ID (except ID zero).</label>
<label index="t3ver_state">t3ver_state - Special states of a version: 1=Placeholder for &quot;New&quot;. 2=Marked deleted.</label>
<label index="t3ver_stage">t3ver_stage - Publishing stage: Editing (0), review (1), publish (10), rejected (-1).</label>
<label index="t3ver_count">t3ver_count - Life cycle counter. Incremented each time element is unpublished.</label>
<label index="t3ver_label">Label</label>
<label index="diff">Diff</label>
<label index="swapWithCurrent">SWAP with current</label>
<label index="currentOnlineVersion">CURRENT ONLINE VERSION!</label>
<label index="cmdPid0">Page: Page + content</label>
<label index="cmdPid100">Branch: All subpages</label>
<label index="cmdPid1">Element: Just record</label>
<label index="createNewVersion">Create new version</label>
<label index="previewLink">Preview Link</label>
<label index="publishPage">Publish Page</label>
<label index="swapPage">Swap page</label>
<label index="publishPageQuestion">Are you sure you want to publish all content %sfrom this page?</label>
<label index="swapPageQuestion">Are you sure you want to publish (swap) all content %sfrom this page?</label>
<label index="publishPageQuestionStage">in &quot;Publish&quot; stage </label>
<label index="previewUrl">Preview Url:</label>
<label index="previewInstruction">You can preview this page from the workspace using this link for the next %s hours (does not require backend login):</label>
<label index="versionDetails">Details for version</label>
<label index="wsManagement">Workspace management</label>
<label index="showDiffView">Show difference view</label>
<label index="liveVersion">Live Version:</label>
<label index="wsVersions">Workspace Versions:</label>
<label index="controls">Controls:</label>
<label index="goBack">Click here to go back</label>
<label index="showAllInformation">Show all information</label>
<label index="newElement">New element</label>
<label index="deletedElement">Deleted element</label>
<label index="moveToPlaceholder">Move-to placeholder (destination)</label>
<label index="moveToPointer">Move-to pointer (source)</label>
<label index="change">change:</label>
<label index="element"> [Element]</label>
<label index="page"> [Page]</label>
<label index="branch"> [Branch]</label>
<label index="otherVersions">Other version(s) in workspace </label>
<label index="multipleVersions">Multiple versions in same workspace!</label>
<label index="versionInVersion">Version inside version!</label>
<label index="lifecycle">Lifecycle</label>
<label index="workspace">Workspace</label>
<label index="diffToLiveElement">Difference to live element:</label>
<label index="commentForReviewer">Comment for Reviewer:</label>
<label index="commentForPublisher">Comment for Publisher:</label>
<label index="sendItemsToReview">Sending %s item(s) to review. </label>
<label index="sendAllToReview">Send all to Review</label>
<label index="approveToPublish">Approving %s item(s) to publishing. </label>
<label index="approveAllToPublish">Approve all for Publishing</label>
<label index="offline">[Offline]</label>
<label index="draft">Draft</label>
<label index="archive">Archive</label>
<label index="publishedXTimes">Published %s times</label>
<label index="stage.sentToReview">sent element to &quot;Review&quot;</label>
<label index="stage.approvedForPublish">approved for &quot;Publish&quot;</label>
<label index="stage.rejectedElement">rejected element!</label>
<label index="stage.resetToEdit">reset to &quot;Editing&quot;</label>
<label index="stage.undefined">[undefined]</label>
<label index="userComment">User Comment</label>
<label index="subElementsClick">[Sub elements, click for details]</label>
<label index="subElements">[Sub elements]</label>
<label index="completeMatch">Complete match on editable fields.</label>
<label index="editing">Editing</label>
<label index="sendToReview">Send to Review</label>
<label index="review">Review</label>
<label index="swap">Swap</label>
<label index="approveForPublishing">Approve for Publishing</label>
<label index="publish">Publish</label>
<label index="rejected">Rejected</label>
<label index="comment">Comment:</label>
<label index="resetStage">Reset stage</label>
<label index="undefined">Undefined</label>
<label index="rejectExplain">Please explain why you reject:</label>
<label index="removeFromWorkspace">Remove from workspace</label>
<label index="showLog">Show Log</label>
</languageKey>
</data>
</T3locallang>
(1-1/2)