From baf0c3e506eee97c63d130af88fe3547c31579cc Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Tue, 18 Feb 2014 21:59:16 +0100 Subject: extract navigation html to separated method --- inc/html.php | 208 +++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 118 insertions(+), 90 deletions(-) (limited to 'inc/html.php') diff --git a/inc/html.php b/inc/html.php index 05688e0aa..7d533282e 100644 --- a/inc/html.php +++ b/inc/html.php @@ -1082,9 +1082,11 @@ function html_diff_head($l_rev, $r_rev, $id = null, $media = false, $inline = fa /** * Show diff + * between current page version and provided $text + * or between the revisions provided via GET or POST * * @author Andreas Gohr - * @param string $text compare with this text with most current version + * @param string $text when non-empty: compare with this text with most current version * @param bool $intro display the intro text * @param string $type type of the diff (inline or sidebyside) */ @@ -1184,94 +1186,7 @@ function html_diff($text = '', $intro = true, $type = null) { $l_nav = ''; $r_nav = ''; if(!$text) { - $r_rev = $r_rev ? $r_rev : $INFO['meta']['last_change']['date']; //last timestamp is not in changelog - //retrieve revisions with additional info - list($l_revs, $r_revs) = $pagelog->getRevisionsAround($l_rev, $r_rev); - $l_revisions = array(); - foreach($l_revs as $rev) { - $info = $pagelog->getRevisionInfo($rev); - $l_revisions[$rev] = array( - $rev, - dformat($info['date']) . ' ' . editorinfo($info['user']) . ' ' . $info['sum'], - $rev >= $r_rev //disable? - ); - } - $r_revisions = array(); - foreach($r_revs as $rev) { - $info = $pagelog->getRevisionInfo($rev); - $r_revisions[$rev] = array( - $rev, - dformat($info['date']) . ' ' . editorinfo($info['user']) . ' ' . $info['sum'], - $rev <= $l_rev //disable? - ); - } - //determine previous/next revisions - $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]; - - //Left side: - //move back - if($l_prev) { - $l_nav .= html_diff_navigationlink($type, 'diffbothprevrev', $l_prev, $r_prev); - $l_nav .= html_diff_navigationlink($type, 'diffprevrev', $l_prev, $r_rev); - } - //dropdown - $form = new Doku_Form(array('action' => wl())); - $form->addHidden('id', $ID); - $form->addHidden('difftype', $type); - $form->addHidden('rev2[1]', $r_rev); - $form->addHidden('do', 'diff'); - $form->addElement( - form_makeListboxField( - 'rev2[0]', - $l_revisions, - $l_rev, - '', '', '', - array('class' => 'quickselect') - ) - ); - $form->addElement(form_makeButton('submit', 'diff', 'Go')); - $l_nav .= $form->getForm(); - //move forward - if($l_next < $r_rev) { - $l_nav .= html_diff_navigationlink($type, 'diffnextrev', $l_next, $r_rev); - } - - //Right side: - //move back - if($l_rev < $r_prev) { - $r_nav .= html_diff_navigationlink($type, 'diffprevrev', $l_rev, $r_prev); - } - //dropdown - $form = new Doku_Form(array('action' => wl())); - $form->addHidden('id', $ID); - $form->addHidden('rev2[0]', $l_rev); - $form->addHidden('difftype', $type); - $form->addHidden('do', 'diff'); - $form->addElement( - form_makeListboxField( - 'rev2[1]', - $r_revisions, - $r_rev, - '', '', '', - array('class' => 'quickselect') - ) - ); - $form->addElement(form_makeButton('submit', 'diff', 'Go')); - $r_nav .= $form->getForm(); - //move forward - if($r_next) { - if($pagelog->isCurrentRevision($r_next)) { - $r_nav .= html_diff_navigationlink($type, 'difflastrev', $l_rev); //last revision is diff with current page - } else { - $r_nav .= html_diff_navigationlink($type, 'diffnextrev', $l_rev, $r_next); - } - $r_nav .= html_diff_navigationlink($type, 'diffbothnextrev', $l_next, $r_next); - } + list($l_nav, $r_nav) = html_diff_navigation($pagelog, $type, $l_rev, $r_rev); } /* * Create diff object and the formatter @@ -1318,7 +1233,7 @@ function html_diff($text = '', $intro = true, $type = null) { ptln('

'); // link to exactly this view FS#2835 - html_diff_navigationlink($type, 'difflink', $l_rev, $r_rev ? $r_rev : $INFO['lastmod']); + echo html_diff_navigationlink($type, 'difflink', $l_rev, $r_rev ? $r_rev : $INFO['lastmod']); ptln('

'); ptln(''); // .diffoptions @@ -1381,6 +1296,118 @@ function html_diff($text = '', $intro = true, $type = null) { getRevisionsAround($l_rev, $r_rev); + $l_revisions = array(); + foreach($l_revs as $rev) { + $info = $pagelog->getRevisionInfo($rev); + $l_revisions[$rev] = array( + $rev, + dformat($info['date']) . ' ' . editorinfo($info['user']) . ' ' . $info['sum'], + $rev >= $r_rev //disable? + ); + } + $r_revisions = array(); + foreach($r_revs as $rev) { + $info = $pagelog->getRevisionInfo($rev); + $r_revisions[$rev] = array( + $rev, + dformat($info['date']) . ' ' . editorinfo($info['user']) . ' ' . $info['sum'], + $rev <= $l_rev //disable? + ); + } + //determine previous/next revisions + $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]; + + + /* + * Left side: + */ + $l_nav = ''; + //move back + if($l_prev) { + $l_nav .= html_diff_navigationlink($type, 'diffbothprevrev', $l_prev, $r_prev); + $l_nav .= html_diff_navigationlink($type, 'diffprevrev', $l_prev, $r_rev); + } + //dropdown + $form = new Doku_Form(array('action' => wl())); + $form->addHidden('id', $ID); + $form->addHidden('difftype', $type); + $form->addHidden('rev2[1]', $r_rev); + $form->addHidden('do', 'diff'); + $form->addElement( + form_makeListboxField( + 'rev2[0]', + $l_revisions, + $l_rev, + '', '', '', + array('class' => 'quickselect') + ) + ); + $form->addElement(form_makeButton('submit', 'diff', 'Go')); + $l_nav .= $form->getForm(); + //move forward + if($l_next < $r_rev) { + $l_nav .= html_diff_navigationlink($type, 'diffnextrev', $l_next, $r_rev); + } + + /* + * Right side: + */ + $r_nav = ''; + //move back + if($l_rev < $r_prev) { + $r_nav .= html_diff_navigationlink($type, 'diffprevrev', $l_rev, $r_prev); + } + //dropdown + $form = new Doku_Form(array('action' => wl())); + $form->addHidden('id', $ID); + $form->addHidden('rev2[0]', $l_rev); + $form->addHidden('difftype', $type); + $form->addHidden('do', 'diff'); + $form->addElement( + form_makeListboxField( + 'rev2[1]', + $r_revisions, + $r_rev, + '', '', '', + array('class' => 'quickselect') + ) + ); + $form->addElement(form_makeButton('submit', 'diff', 'Go')); + $r_nav .= $form->getForm(); + //move forward + if($r_next) { + if($pagelog->isCurrentRevision($r_next)) { + $r_nav .= html_diff_navigationlink($type, 'difflastrev', $l_rev); //last revision is diff with current page + } else { + $r_nav .= html_diff_navigationlink($type, 'diffnextrev', $l_rev, $r_next); + } + $r_nav .= html_diff_navigationlink($type, 'diffbothnextrev', $l_next, $r_next); + } + return array($l_nav, $r_nav); +} + /** * Create html link to a diff defined by two revisions * @@ -1715,6 +1742,7 @@ function html_edit(){ * Display the default edit form * * Is the default action for HTML_EDIT_FORMSELECTION. + * @param mixed[] $param */ function html_edit_form($param) { global $TEXT; -- cgit v1.2.3 From af59854ba94dae9584db04d5688dddb581503d33 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Tue, 18 Feb 2014 22:25:53 +0100 Subject: Check if revision is defined at all before comparing --- inc/html.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'inc/html.php') diff --git a/inc/html.php b/inc/html.php index 7d533282e..e7d401594 100644 --- a/inc/html.php +++ b/inc/html.php @@ -1339,7 +1339,6 @@ function html_diff_navigation($pagelog, $type, $l_rev, $r_rev) { $r_prev = $r_revs[$r_index + 1]; $r_next = $r_revs[$r_index - 1]; - /* * Left side: */ @@ -1367,7 +1366,7 @@ function html_diff_navigation($pagelog, $type, $l_rev, $r_rev) { $form->addElement(form_makeButton('submit', 'diff', 'Go')); $l_nav .= $form->getForm(); //move forward - if($l_next < $r_rev) { + if($l_next && $l_next < $r_rev) { $l_nav .= html_diff_navigationlink($type, 'diffnextrev', $l_next, $r_rev); } -- cgit v1.2.3 From c130b0f8ec18ec66ac40422cf354a23268108866 Mon Sep 17 00:00:00 2001 From: Anika Henke Date: Wed, 19 Feb 2014 01:34:14 +0000 Subject: improved positioning of diff options --- inc/html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'inc/html.php') diff --git a/inc/html.php b/inc/html.php index e7d401594..1a549824e 100644 --- a/inc/html.php +++ b/inc/html.php @@ -1207,7 +1207,7 @@ function html_diff($text = '', $intro = true, $type = null) { * Display type and exact reference */ if(!$text) { - ptln('
'); + ptln('
'); $form = new Doku_Form(array('action' => wl())); -- cgit v1.2.3 From 621bbd2a24f6ceac0310c04b27e11a2c7c325294 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Wed, 19 Feb 2014 17:58:36 +0100 Subject: diff of removed page, require handling right rev=0 When page is removed, and diff can be requested between a revision and current situation. This results in right revision is 0. Similar case just after creating a page. A diff between the first version and nothing before, result in left revision is 0. In these cases a empty dummy revision is placed as selected value in dropdown. Otherwise user got distracted by the revisions details shown in select field, which are not related to the diff below. --- inc/html.php | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) (limited to 'inc/html.php') diff --git a/inc/html.php b/inc/html.php index 1a549824e..39d0eeada 100644 --- a/inc/html.php +++ b/inc/html.php @@ -1308,21 +1308,27 @@ function html_diff($text = '', $intro = true, $type = null) { function html_diff_navigation($pagelog, $type, $l_rev, $r_rev) { global $INFO, $ID; - //last timestamp is not in changelog + //last timestamp is not in changelog (note: when page is removed, the metadata timestamp is zero as well) $r_rev = $r_rev ? $r_rev : $INFO['meta']['last_change']['date']; //retrieve revisions with additional info list($l_revs, $r_revs) = $pagelog->getRevisionsAround($l_rev, $r_rev); $l_revisions = array(); + if(!$l_rev) { + $l_revisions[0] = array(0, "", false); //no left revision given, add dummy + } foreach($l_revs as $rev) { $info = $pagelog->getRevisionInfo($rev); $l_revisions[$rev] = array( $rev, dformat($info['date']) . ' ' . editorinfo($info['user']) . ' ' . $info['sum'], - $rev >= $r_rev //disable? + $r_rev ? $rev >= $r_rev : false //disable? ); } $r_revisions = array(); + if(!$r_rev) { + $r_revisions[0] = array(0, "", false); //no right revision given, add dummy + } foreach($r_revs as $rev) { $info = $pagelog->getRevisionInfo($rev); $r_revisions[$rev] = array( @@ -1331,13 +1337,24 @@ function html_diff_navigation($pagelog, $type, $l_rev, $r_rev) { $rev <= $l_rev //disable? ); } + //determine previous/next revisions $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($r_rev) { + $r_index = array_search($r_rev, $r_revs); + $r_prev = $r_revs[$r_index + 1]; + $r_next = $r_revs[$r_index - 1]; + } else { + //removed page + if($l_next) { + $r_prev = $r_revs[0]; + } else { + $r_prev = null; + } + $r_next = null; + } /* * Left side: @@ -1366,7 +1383,7 @@ function html_diff_navigation($pagelog, $type, $l_rev, $r_rev) { $form->addElement(form_makeButton('submit', 'diff', 'Go')); $l_nav .= $form->getForm(); //move forward - if($l_next && $l_next < $r_rev) { + if($l_next && ($l_next < $r_rev || !$r_rev)) { $l_nav .= html_diff_navigationlink($type, 'diffnextrev', $l_next, $r_rev); } @@ -1418,7 +1435,7 @@ function html_diff_navigation($pagelog, $type, $l_rev, $r_rev) { */ function html_diff_navigationlink($difftype, $linktype, $lrev, $rrev = null) { global $ID, $lang; - if($rrev === null) { + if(!$rrev) { $urlparam = array( 'do' => 'diff', 'rev' => $lrev, -- cgit v1.2.3 From 4d5954c8d1f8bcc5450f8cf70d8139cf5a1e697d Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Thu, 20 Feb 2014 14:03:29 +0100 Subject: improve comment in html_diff_navigation --- inc/html.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'inc/html.php') diff --git a/inc/html.php b/inc/html.php index 39d0eeada..2c7e8b1a6 100644 --- a/inc/html.php +++ b/inc/html.php @@ -1308,7 +1308,8 @@ function html_diff($text = '', $intro = true, $type = null) { function html_diff_navigation($pagelog, $type, $l_rev, $r_rev) { global $INFO, $ID; - //last timestamp is not in changelog (note: when page is removed, the metadata timestamp is zero as well) + // last timestamp is not in changelog, retrieve timestamp from metadata + // note: when page is removed, the metadata timestamp is zero $r_rev = $r_rev ? $r_rev : $INFO['meta']['last_change']['date']; //retrieve revisions with additional info -- cgit v1.2.3 From 01c9a118dacc1e2c07f2b0ddee84c514022e5927 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 23 Feb 2014 09:54:47 +0100 Subject: have most current revision always available in $INFO fixes fix for FS#2853 --- inc/html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'inc/html.php') diff --git a/inc/html.php b/inc/html.php index 0434f3b45..fcec29670 100644 --- a/inc/html.php +++ b/inc/html.php @@ -1189,7 +1189,7 @@ function html_diff($text='',$intro=true,$type=null){ $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 + 'rev2[1]' => $r_rev ? $r_rev : $INFO['currentrev'], // link to exactly this view FS#2835 'difftype' => $type, )); ptln('

'.$lang['difflink'].'

'); -- cgit v1.2.3 From d59dea9fddf885a836f7dc2d8be1f93afb7e9542 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Tue, 25 Feb 2014 20:00:56 +0100 Subject: added new html_denied() method as well --- inc/html.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'inc/html.php') diff --git a/inc/html.php b/inc/html.php index fcec29670..507ba511e 100644 --- a/inc/html.php +++ b/inc/html.php @@ -64,6 +64,25 @@ function html_login(){ print '
'.NL; } + +/** + * Denied page content + * + * @return string html + */ +function html_denied() { + global $lang; + $denied = p_locale_xhtml('denied'); + $notloggedin = isset($_SERVER['REMOTE_USER']) ? '' : $lang['notloggedin']; + + $denied = str_replace( + array('@NOTLOGGEDIN@'), + array($notloggedin), + $denied + ); + print $denied; +} + /** * inserts section edit buttons if wanted or removes the markers * -- cgit v1.2.3 From f019ab46c33b430831053cd41b5b04a163fd529f Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Tue, 4 Mar 2014 21:27:10 +0100 Subject: added login form at denied access page - restore lang string as well --- inc/html.php | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'inc/html.php') diff --git a/inc/html.php b/inc/html.php index 507ba511e..514f961e7 100644 --- a/inc/html.php +++ b/inc/html.php @@ -81,6 +81,10 @@ function html_denied() { $denied ); print $denied; + + if(!$_SERVER['REMOTE_USER']){ + html_login(); + } } /** -- cgit v1.2.3 From 0e80bb5e347ff00c6f81627d8e39dafaaa923bc5 Mon Sep 17 00:00:00 2001 From: Christopher Smith Date: Wed, 5 Mar 2014 21:58:46 +0000 Subject: use empty() where array values might not be set --- inc/html.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'inc/html.php') diff --git a/inc/html.php b/inc/html.php index fcec29670..41f26e5cd 100644 --- a/inc/html.php +++ b/inc/html.php @@ -691,7 +691,7 @@ function html_recent($first=0, $show_changes='both'){ $form->addElement(form_makeOpenTag('div', array('class' => 'li'))); - if ($recent['media']) { + if (!empty($recent['media'])) { $form->addElement(media_printicon($recent['id'])); } else { $icon = DOKU_BASE.'lib/images/fileicons/file.png'; @@ -705,7 +705,7 @@ function html_recent($first=0, $show_changes='both'){ $diff = false; $href = ''; - if ($recent['media']) { + if (!empty($recent['media'])) { $diff = (count(getRevisions($recent['id'], 0, 1, 8192, true)) && @file_exists(mediaFN($recent['id']))); if ($diff) { $href = media_managerURL(array('tab_details' => 'history', @@ -715,7 +715,7 @@ function html_recent($first=0, $show_changes='both'){ $href = wl($recent['id'],"do=diff", false, '&'); } - if ($recent['media'] && !$diff) { + if (!empty($recent['media']) && !$diff) { $form->addElement(''); } else { $form->addElement(form_makeOpenTag('a', array('class' => 'diff_link', 'href' => $href))); @@ -729,7 +729,7 @@ function html_recent($first=0, $show_changes='both'){ $form->addElement(form_makeCloseTag('a')); } - if ($recent['media']) { + if (!empty($recent['media'])) { $href = media_managerURL(array('tab_details' => 'history', 'image' => $recent['id'], 'ns' => getNS($recent['id'])), '&'); } else { @@ -745,7 +745,7 @@ function html_recent($first=0, $show_changes='both'){ ))); $form->addElement(form_makeCloseTag('a')); - if ($recent['media']) { + if (!empty($recent['media'])) { $href = media_managerURL(array('tab_details' => 'view', 'image' => $recent['id'], 'ns' => getNS($recent['id'])), '&'); $class = (file_exists(mediaFN($recent['id']))) ? 'wikilink1' : $class = 'wikilink2'; $form->addElement(form_makeOpenTag('a', array('class' => $class, 'href' => $href))); -- cgit v1.2.3 From d1e9181ef12479db0c36d6d93f0ecff84523bf73 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Thu, 6 Mar 2014 23:50:05 +0100 Subject: removed 'not logged in' text, loginform is shown already --- inc/html.php | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) (limited to 'inc/html.php') diff --git a/inc/html.php b/inc/html.php index 514f961e7..4a355bdaf 100644 --- a/inc/html.php +++ b/inc/html.php @@ -71,16 +71,7 @@ function html_login(){ * @return string html */ function html_denied() { - global $lang; - $denied = p_locale_xhtml('denied'); - $notloggedin = isset($_SERVER['REMOTE_USER']) ? '' : $lang['notloggedin']; - - $denied = str_replace( - array('@NOTLOGGEDIN@'), - array($notloggedin), - $denied - ); - print $denied; + print p_locale_xhtml('denied'); if(!$_SERVER['REMOTE_USER']){ html_login(); -- cgit v1.2.3