summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerrit Uitslag <klapinklapin@gmail.com>2014-02-15 20:10:25 +0100
committerGerrit Uitslag <klapinklapin@gmail.com>2014-02-15 20:10:25 +0100
commit4fc1354a1dd021f7a1a04f18aa4ffe3f1891a5b6 (patch)
treefb746c51144bef71286e017f06b2611b7312768b
parenteeb8f429f3a505770c8dcf81998b009ba9d884fd (diff)
downloadrpg-4fc1354a1dd021f7a1a04f18aa4ffe3f1891a5b6.tar.gz
rpg-4fc1354a1dd021f7a1a04f18aa4ffe3f1891a5b6.tar.bz2
diff navigation: move prev/next on one side or both side
-rw-r--r--inc/html.php98
1 files changed, 54 insertions, 44 deletions
diff --git a/inc/html.php b/inc/html.php
index 1c879e3d8..5ea8ece4c 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -1165,18 +1165,6 @@ 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');
}
@@ -1211,13 +1199,10 @@ function html_diff($text='',$intro=true,$type=null){
$form->addElement(form_makeButton('submit', 'diff','Go'));
$form->printForm();
- $diffurl = wl($ID, array(
- 'do' => 'diff',
- 'rev2[0]' => $l_rev,
- 'rev2[1]' => $r_rev ? $r_rev : $INFO['lastmod'], // link to exactly this view FS#2835
- 'difftype' => $type,
- ));
- ptln('<p><a class="wikilink1" href="'.$diffurl.'">'.$lang['difflink'].'</a><br />');
+ ptln('<p>');
+ // link to exactly this view FS#2835
+ html_diff_navigationlink($type, $lang['difflink'], $l_rev, $r_rev ? $r_rev : $INFO['lastmod']);
+ ptln('</p><br />');
//revisions navigation
$r_rev = $r_rev ? $r_rev : $INFO['meta']['last_change']['date'];
@@ -1239,15 +1224,16 @@ function html_diff($text='',$intro=true,$type=null){
);
}
+ $l_index = array_search($l_rev, $l_revs);
+ $l_prev = $l_revs[$l_index - 1];
+ $l_next = $l_revs[$l_index + 1];
+ $r_index = array_search($r_rev, $r_revs);
+ $r_prev = $r_revs[$r_index - 1];
+ $r_next = $r_revs[$r_index + 1];
- 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>');
+ if($l_prev) {
+ html_diff_navigationlink($type, '←← ', $l_prev, $r_prev);
+ html_diff_navigationlink($type, '← ', $l_prev, $r_rev);
}
$form = new Doku_Form(array('action'=>wl()));
@@ -1264,6 +1250,13 @@ function html_diff($text='',$intro=true,$type=null){
$form->addElement(form_makeButton('submit', 'diff','Go'));
$form->printForm();
+ if($l_next < $r_rev) {
+ html_diff_navigationlink($type, ' →', $l_next, $r_rev);
+ }
+ if($l_rev < $r_prev) {
+ html_diff_navigationlink($type, '← ', $l_rev, $r_prev);
+ }
+
$form = new Doku_Form(array('action'=>wl()));
$form->addHidden('id',$ID);
$form->addHidden('rev2[0]',$l_rev);
@@ -1278,27 +1271,16 @@ function html_diff($text='',$intro=true,$type=null){
$form->addElement(form_makeButton('submit', 'diff','Go'));
$form->printForm();
- if($next_rev){
- if($pagelog->isCurrentRevision($next_rev)) {
- $diffurlnextparam = array(
- 'do' => 'diff',
- 'rev' => $r_rev,
- 'difftype' => $type,
- );
- $navnexttitle = $lang['difflastedit'];
+ if($r_next) {
+ if($pagelog->isCurrentRevision($r_next)) {
+ html_diff_navigationlink($type, ' →', $l_rev); //last
} else {
- $diffurlnextparam = array(
- 'do' => 'diff',
- 'rev2[0]' => $r_rev,
- 'rev2[1]' => $next_rev,
- 'difftype' => $type,
- );
- $navnexttitle = $lang['diffnextedit'];
+ html_diff_navigationlink($type, ' →', $l_rev, $r_next); //next
}
- ptln('<a class="wikilink1" href="'.wl($ID, $diffurlnextparam).'">'.$navnexttitle.' →</a>');
+ html_diff_navigationlink($type, ' →→', $l_next, $r_next);
}
- ptln('</p>');
+ ptln('</p>'); //todo paragraphs are a mess..
ptln('</div>');
}
?>
@@ -1331,6 +1313,34 @@ function html_diff($text='',$intro=true,$type=null){
<?php
}
+/**
+ * Create html link to a diff defined by two revisions
+ *
+ * @param string $type display type
+ * @param int $lrev oldest revision
+ * @param int $rrev newest revision or null for diff with current revision
+ * @param string $name
+ * @return string html of link to a diff
+ */
+function html_diff_navigationlink($type, $name, $lrev, $rrev = null) {
+ global $ID;
+ if($rrev === null) {
+ $urlparam = array(
+ 'do' => 'diff',
+ 'rev' => $lrev,
+ 'difftype' => $type,
+ );
+ } else {
+ $urlparam = array(
+ 'do' => 'diff',
+ 'rev2[0]' => $lrev,
+ 'rev2[1]' => $rrev,
+ 'difftype' => $type,
+ );
+ }
+ ptln('<a class="wikilink1" href="' . wl($ID, $urlparam) . '">' . $name . '</a>');
+}
+
function html_insert_softbreaks($diffhtml) {
// search the diff html string for both:
// - html tags, so these can be ignored