📄 history1.php
字号:
}//end function//// SINGLE REVISIONS//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// COMPARISON//function compareRevisions(){ global $page,$dbObject; if( isset($_GET['revNum1']) ){ $revNum1 = $_GET['revNum1']; $revNum2 = $page->cmdArg[0]; }else{ $revNum1 = $_GET['rev1']; $revNum2 = $_GET['rev2']; } //////// 1) Make sure times are set if( empty($revNum1) || empty($revNum2) ){ message('SELECT_TWO_VERSIONS'); return; }elseif( $revNum1 == $revNum2){ message('SELECT_TWO_VERSIONS'); return; } //////// 2) Find Min and Max times => get their events if( (wbStrtolower($revNum1) == 'current') ){ $max = $revNum1; $min = $revNum2; }else{ $max = max($revNum1,$revNum2); $min = min($revNum1,$revNum2); } getRevision($max); $newObject = php4_clone($dbObject); if( !$newObject){ return false; } getRevision($min); if( !$dbObject){ return false; } //////// Do Comparison compareTwo($dbObject,$newObject);}function compareTwo(&$oldObject,&$newObject,$title='',$oldHeader=false,$newHeader=false){ global $page,$dbObject,$lang; $page->css2 = true; includeFile('tool/DifferenceEngine.php'); ob_start(); if( empty($title) ){ $title = toDisplay($dbObject->title).' ('.$oldObject->revision.$lang['vs'].$newObject->revision.')'; $page->displayTitle = $title; } if( $oldObject->distanceToCurrent === 1){ $title = $lang['diff']; $dbObject->links[$title] = '/Edit'.$dbObject->uniqLink.'?cmd=difference'; //for compatibility with changelog links }elseif($oldObject->distanceToCurrent == 0){ //case when comparing current changes }else{ $dbObject->links[$title] = '/Edit'.$dbObject->uniqLink.'?cmd=compare&rev1='.$oldObject->revision.'&rev2='.$newObject->revision; } //Top of Differences // // echo '<table cellspacing="3" cellpadding="1" border="0" width="98%">'; echo '<tr><td></td><td style="text-align:center;width:50%">'; $isOwner = isOwner(); // Old Header // $editLink = false; if( $oldHeader ){ echo $oldHeader; }else{ if( $oldObject->revision == 'current'){ echo '<h4 class="heading">'.wbLinks::local($dbObject->uniqLink,$lang['current_revision']).'</h4>'; }else{ echo '<h4 class="heading">'; $temp = wbLang::text('revision_num_as_of',$oldObject->revision,dbFromDate($oldObject->modified,3)); echo wbLinks::local('/Edit'.$dbObject->uniqLink.'?cmd=show&revNum='.$oldObject->revision,$temp); echo '</h4>'; if( $isOwner ){ $editLink = wbLinks::local('/Edit'.$dbObject->uniqLink.'?cmd=editRevision&revNum='.$oldObject->revision,$lang['edit_revision']); } } if( !empty($oldObject->username) ){ echo wbLinks::local('/'.$oldObject->username.'/Home',$oldObject->username); $user = $oldObject->username; }else{ echo $oldObject->ip; $user = $oldObject->username; } if( isset($_SESSION['username']) && ($_SESSION['username'] != $oldObject->username) ){ echo ' <span class="sm">('.wbLinks::special('Permissions?guest='.$user,'user permissions','title="'.$lang['SET_USER_PERMISSIONS'].$user.'"',$_SESSION['username']).')</span> '; } echo '<br/> '.$oldObject->summary; if( $editLink ){ echo '<br/><span class="sm">'.$editLink.'</span>'; } if( $oldObject->revision > 1){ echo '<br/><span class="sm">'.wbLinks::local('/Edit'.$dbObject->uniqLink.'?cmd=compare&rev1='.($oldObject->revision-1).'&rev2='.$oldObject->revision,$lang['compare_with_prev']).' </span>'; }elseif($oldObject->revision == 'current'){ echo '<br/><span class="sm">'.wbLinks::local('/Edit'.$dbObject->uniqLink.'?cmd=difference',$lang['compare_with_prev']).' </span>'; } } echo '</td><td></td>'; echo '<td style="text-align:center;width:50%">'; // New Header // $editLink = false; if( $newHeader ){ echo $newHeader; }else{ if( $newObject->revision == 'current'){ echo '<h4 class="heading">'.wbLinks::local($dbObject->uniqLink,$lang['current_revision']).'</h4>'; }else{ echo '<h4 class="heading">'; $temp = wbLang::text('revision_num_as_of',$newObject->revision,dbFromDate($newObject->modified,3)); echo wbLinks::local('/Edit'.$dbObject->uniqLink.'?cmd=show&revNum='.$newObject->revision,$temp); echo '</h4>'; if( $isOwner ){ $editLink = wbLinks::local('/Edit'.$dbObject->uniqLink.'?cmd=editRevision&revNum='.$newObject->revision,$lang['edit_revision']); } } if( !empty($newObject->username) ){ echo wbLinks::local('/'.$newObject->username.'/Home',$newObject->username); $user = $newObject->username; }else{ echo $newObject->ip; $user = $newObject->ip; } if( isset($_SESSION['username']) && ($_SESSION['username'] != $newObject->username) ){ echo ' <span class="sm">('.wbLinks::special('Permissions?guest='.$user,'user permissions','title="'.$lang['SET_USER_PERMISSIONS'].$user.'"',$_SESSION['username']).')</span> '; } echo '<br/> '.$newObject->summary; if( $editLink ){ echo '<br/><span class="sm">'.$editLink.'</span>'; } if( $newObject->distanceToCurrent > 0){ if( $newObject->distanceToCurrent === 1){ echo '<br/><span class="sm">'.wbLinks::local('/Edit'.$newObject->uniqLink.'?cmd=difference',$lang['compare_with_next']).' </span>'; }else{ echo '<br/><span class="sm">'.wbLinks::local('/Edit'.$newObject->uniqLink.'?cmd=compare&rev1='.$newObject->revision.'&rev2='.($newObject->revision+1),$lang['compare_with_next']).' </span>'; } } } echo '</td></tr>'; // New Difference // // global $diffClasses; $diffClasses['context'] = 'historyNeut'; $diffClasses['deletedline'] = 'historyDelete'; $diffClasses['addedline'] = 'historyAdd'; $diffClasses['diffchange'] = 'historyChange'; $formatter = new TableDiffFormatter(); $i= 0; foreach($oldObject->userValues as $key => $nothing){ // We don't want to show difference when comparing NULL with '' (empty string) // NULL != '' also works // // if( getType($oldObject->$key) == 'NULL'){ // $oldObject->$key = ''; // } // if( getType($newObject->$key) == 'NULL'){ // $newObject->$key = ''; // } if( $oldObject->$key == $newObject->$key){ continue; } $i++; echo '<tr><td colspan="4">'; echo '<h3 class="heading">'; if( isset($lang[$key]) ){ echo $lang[$key]; }else{ echo $key; } echo '</h3><div class="underline"></div>'; echo '</td></tr>'; $oldArray = stringToArray($oldObject->$key); $newArray = stringToArray($newObject->$key); $diffs = new Diff( $oldArray,$newArray ); echo $formatter->format( $diffs ); } if( $i === 0){ echo '<tr><td colspan="4" style="text-align:center">'.$lang['NO_DIFFERENCES'].'</td></tr>'; } echo '</table>'; $page->contentA[$title] = wb::get_clean();}function getLastDifference(){ global $page, $dbObject,$lang; $current = php4_clone($dbObject); if( !getLastRevision() ){ message('NO_REVISIONS'); return false; } //compareTwo($dbObject,$current,toDisplay($dbObject->title).' (Diff)'); compareTwo($dbObject,$current,$lang['diff']);}function showLines($array){ $text = '<table border="0" cellpadding="7" ><tr><td><b>'.$lang['lines'].'</b></td><td><b>'.$lang['text'].'</b></td>'; $odd = null; foreach($array as $key => $value){ $text .= "\n"; if( isset($odd) ){ unset($odd); }else{ $odd = ' class="row2" '; } $text .= "<tr $odd><td>"; $text .= $key; $text .= '</td><td>'; $text .= htmlspecialchars($value); $text .= '</td></tr>'; } $text .= '</table>'; return $text; }//this needs toolEditPage if it's not an xmlHttp requestfunction showChanges(){ global $dbObject,$lang; $current = php4_clone($dbObject); $dbObject->setFromPost(); compareTwo($current,$dbObject,$lang['changes'],false,$lang['your_text'] ); if( !isset($_GET['wb']) ){ includeFile('tool/EditPage.php'); } }//// COMPARISON//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// FLOW CONTROL//global $lang;switch( $page->userCmd ){ case 'changes': case wbStrtolower($lang['changes']): showChanges(); break; case 'compare': case wbStrtolower($lang['compare']); case 'compare versions': compareRevisions(); break; case 'editrevision': editRevision(); break; case 'show': case 'revision': showRevision(); break; case 'difference': getLastDifference(); break;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -