diff options
Diffstat (limited to 'inc/html.php')
-rw-r--r-- | inc/html.php | 105 |
1 files changed, 81 insertions, 24 deletions
diff --git a/inc/html.php b/inc/html.php index 928991ae2..3e239cac3 100644 --- a/inc/html.php +++ b/inc/html.php @@ -414,20 +414,23 @@ function html_revisions($first=0, $media_id = false){ global $conf; global $lang; $id = $ID; + if ($media_id) { + $id = $media_id; + $changelog = new MediaChangeLog($id); + } else { + $changelog = new PageChangeLog($id); + } + /* we need to get one additional log entry to be able to * decide if this is the last page or is there another one. * see html_recent() */ - if (!$media_id) $revisions = getRevisions($ID, $first, $conf['recent']+1); - else { - $revisions = getRevisions($media_id, $first, $conf['recent']+1, 8192, true); - $id = $media_id; - } + + $revisions = $changelog->getRevisions($first, $conf['recent']+1); if(count($revisions)==0 && $first!=0){ $first=0; - if (!$media_id) $revisions = getRevisions($ID, $first, $conf['recent']+1); - else $revisions = getRevisions($media_id, $first, $conf['recent']+1, 8192, true); + $revisions = $changelog->getRevisions($first, $conf['recent']+1); } $hasNext = false; if (count($revisions)>$conf['recent']) { @@ -486,15 +489,18 @@ function html_revisions($first=0, $media_id = false){ $form->addElement(form_makeCloseTag('span')); } + $changelog->setChunkSize(1024); + $form->addElement(form_makeOpenTag('span', array('class' => 'user'))); - if (!$media_id) $editor = $INFO['editor']; - else { - $revinfo = getRevisionInfo($id, @filemtime(fullpath(mediaFN($id))), 1024, true); - if($revinfo['user']){ + if($media_id) { + $revinfo = $changelog->getRevisionInfo(@filemtime(fullpath(mediaFN($id)))); + if($revinfo['user']) { $editor = $revinfo['user']; - }else{ + } else { $editor = $revinfo['ip']; } + } else { + $editor = $INFO['editor']; } $form->addElement((empty($editor))?('('.$lang['external_edit'].')'):editorinfo($editor)); $form->addElement(form_makeCloseTag('span')); @@ -509,12 +515,11 @@ function html_revisions($first=0, $media_id = false){ foreach($revisions as $rev){ $date = dformat($rev); - if (!$media_id) { - $info = getRevisionInfo($id,$rev,true); - $exists = page_exists($id,$rev); - } else { - $info = getRevisionInfo($id,$rev,true,true); - $exists = @file_exists(mediaFN($id,$rev)); + $info = $changelog->getRevisionInfo($rev); + if($media_id) { + $exists = @file_exists(mediaFN($id, $rev)); + } else { + $exists = page_exists($id, $rev); } if ($info['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) @@ -706,7 +711,8 @@ function html_recent($first=0, $show_changes='both'){ $href = ''; if ($recent['media']) { - $diff = (count(getRevisions($recent['id'], 0, 1, 8192, true)) && @file_exists(mediaFN($recent['id']))); + $medialog = new MediaChangeLog($recent['id']); + $diff = (count($medialog->getRevisions(0, 1)) && @file_exists(mediaFN($recent['id']))); if ($diff) { $href = media_managerURL(array('tab_details' => 'history', 'mediado' => 'diff', 'image' => $recent['id'], 'ns' => getNS($recent['id'])), '&'); @@ -1008,10 +1014,15 @@ function html_diff_head($l_rev, $r_rev, $id = null, $media = false, $inline = fa $ml_or_wl = $media ? 'ml' : 'wl'; $l_minor = $r_minor = ''; + if($media) { + $changelog = new MediaChangeLog($id); + } else { + $changelog = new PageChangeLog($id); + } if(!$l_rev){ $l_head = '—'; }else{ - $l_info = getRevisionInfo($id,$l_rev,true, $media); + $l_info = $changelog->getRevisionInfo($l_rev); if($l_info['user']){ $l_user = '<bdi>'.editorinfo($l_info['user']).'</bdi>'; if(auth_ismanager()) $l_user .= ' <bdo dir="ltr">('.$l_info['ip'].')</bdo>'; @@ -1029,7 +1040,7 @@ function html_diff_head($l_rev, $r_rev, $id = null, $media = false, $inline = fa } if($r_rev){ - $r_info = getRevisionInfo($id,$r_rev,true, $media); + $r_info = $changelog->getRevisionInfo($r_rev); if($r_info['user']){ $r_user = '<bdi>'.editorinfo($r_info['user']).'</bdi>'; if(auth_ismanager()) $r_user .= ' <bdo dir="ltr">('.$r_info['ip'].')</bdo>'; @@ -1045,7 +1056,7 @@ function html_diff_head($l_rev, $r_rev, $id = null, $media = false, $inline = fa $r_head_title.'</a></bdi>'. $head_separator.$r_user.' '.$r_sum; }elseif($_rev = @filemtime($media_or_wikiFN($id))){ - $_info = getRevisionInfo($id,$_rev,true, $media); + $_info = $changelog->getRevisionInfo($_rev); if($_info['user']){ $_user = '<bdi>'.editorinfo($_info['user']).'</bdi>'; if(auth_ismanager()) $_user .= ' <bdo dir="ltr">('.$_info['ip'].')</bdo>'; @@ -1082,6 +1093,7 @@ function html_diff($text='',$intro=true,$type=null){ global $lang; global $INPUT; global $INFO; + $pagelog = new PageChangeLog($ID); if(!$type) { $type = $INPUT->str('difftype'); @@ -1140,7 +1152,7 @@ function html_diff($text='',$intro=true,$type=null){ $l_rev = $rev1; }else{ // no revision was given, compare previous to current $r_rev = ''; - $revs = getRevisions($ID, 0, 1); + $revs = $pagelog->getRevisions(0, 1); $l_rev = $revs[0]; $REV = $l_rev; // store revision back in $REV } @@ -1153,6 +1165,18 @@ function html_diff($text='',$intro=true,$type=null){ } $r_text = rawWiki($ID,$r_rev); + //look for previous/next revision + if($r_rev) { + $next_rev = $pagelog->getRelativeRevision($r_rev, 1); + } else { + $next_rev = false; + } + if($l_rev) { + $prev_rev = $pagelog->getRelativeRevision($l_rev, -1); + } else { + $prev_rev = false; + } + list($l_head, $r_head, $l_minor, $r_minor) = html_diff_head($l_rev, $r_rev, null, false, $type == 'inline'); } @@ -1192,7 +1216,40 @@ function html_diff($text='',$intro=true,$type=null){ 'rev2[1]' => $r_rev, 'difftype' => $type, )); - ptln('<p><a class="wikilink1" href="'.$diffurl.'">'.$lang['difflink'].'</a></p>'); + ptln('<p><a class="wikilink1" href="'.$diffurl.'">'.$lang['difflink'].'</a><br />'); + if($prev_rev){ + $diffurlprev = wl($ID, array( + 'do' => 'diff', + 'rev2[0]' => $prev_rev, + 'rev2[1]' => $l_rev, + 'difftype' => $type, + )); + ptln('<a class="wikilink1" href="'.$diffurlprev.'">← '.$lang['diffpreviousedit'].'</a> - '); + } + $recenturl = wl($ID, array( + 'do' => 'revisions' + )); + ptln('<a class="wikilink1" href="'.$recenturl.'">'.$lang['overviewrevs'].'</a>'); + if($next_rev){ + if($pagelog->isCurrentRevision($next_rev)) { + $diffurlnextparam = array( + 'do' => 'diff', + 'rev' => $r_rev, + 'difftype' => $type, + ); + $navnexttitle = $lang['difflastedit']; + } else { + $diffurlnextparam = array( + 'do' => 'diff', + 'rev2[0]' => $r_rev, + 'rev2[1]' => $next_rev, + 'difftype' => $type, + ); + $navnexttitle = $lang['diffnextedit']; + } + ptln(' - <a class="wikilink1" href="'.wl($ID, $diffurlnextparam).'">'.$navnexttitle.' →</a>'); + } + ptln('</p>'); ptln('</div>'); } ?> |