From c7686ac1482eea421fa245b2a448d55ad2b483b7 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Mon, 17 Feb 2014 16:56:32 +0100 Subject: Reorganise generation and displaying of html. Added comments --- inc/html.php | 193 +++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 107 insertions(+), 86 deletions(-) (limited to 'inc/html.php') diff --git a/inc/html.php b/inc/html.php index fb44cd655..cda971f3d 100644 --- a/inc/html.php +++ b/inc/html.php @@ -1095,6 +1095,9 @@ function html_diff($text = '', $intro = true, $type = null) { global $INFO; $pagelog = new PageChangeLog($ID); + /* + * Determine diff type + */ if(!$type) { $type = $INPUT->str('difftype'); if(empty($type)) { @@ -1106,6 +1109,9 @@ function html_diff($text = '', $intro = true, $type = null) { } if($type != 'inline') $type = 'sidebyside'; + /* + * Determine requested revision(s) + */ // we're trying to be clever here, revisions to compare can be either // given as rev and rev2 parameters, with rev2 being optional. Or in an // array in rev2. @@ -1124,6 +1130,9 @@ function html_diff($text = '', $intro = true, $type = null) { $rev2 = $INPUT->int('rev2'); } + /* + * Determine left and right revision, its texts and the header + */ $r_minor = ''; $l_minor = ''; @@ -1168,58 +1177,14 @@ function html_diff($text = '', $intro = true, $type = null) { list($l_head, $r_head, $l_minor, $r_minor) = html_diff_head($l_rev, $r_rev, null, false, $type == 'inline'); } - $diff = new Diff(explode("\n", $l_text), explode("\n", $r_text)); - - if($type == 'inline') { - $diffformatter = new InlineDiffFormatter(); - } else { - $diffformatter = new TableDiffFormatter(); - } - - if($intro) print p_locale_xhtml('diff'); - - if(!$text) { - ptln('
'); - - /* - * display type and exact reference - */ - $form = new Doku_Form(array('action' => wl())); - $form->addHidden('id', $ID); - $form->addHidden('rev2[0]', $l_rev); - $form->addHidden('rev2[1]', $r_rev); - $form->addHidden('do', 'diff'); - $form->addElement( - form_makeListboxField( - 'difftype', - array( - 'sidebyside' => $lang['diff_side'], - 'inline' => $lang['diff_inline'] - ), - $type, - $lang['diff_type'], - '', '', - array('class' => 'quickselect') - ) - ); - $form->addElement(form_makeButton('submit', 'diff', 'Go')); - $form->printForm(); - - ptln('

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

'); - - ptln('
'); // .diffoptions - } - + /* + * Build navigation + */ $l_nav = ''; $r_nav = ''; if(!$text) { - /* - * Revisions navigation - */ $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) { @@ -1247,13 +1212,13 @@ function html_diff($text = '', $intro = true, $type = null) { $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); } - //left dropdown + //dropdown $form = new Doku_Form(array('action' => wl())); $form->addHidden('id', $ID); $form->addHidden('difftype', $type); @@ -1275,11 +1240,12 @@ function html_diff($text = '', $intro = true, $type = null) { $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); } - //rigth dropdown + //dropdown $form = new Doku_Form(array('action' => wl())); $form->addHidden('id', $ID); $form->addHidden('rev2[0]', $l_rev); @@ -1306,54 +1272,109 @@ function html_diff($text = '', $intro = true, $type = null) { $r_nav .= html_diff_navigationlink($type, 'diffbothnextrev', $l_next, $r_next); } } + /* + * Create diff object and the formatter + */ + $diff = new Diff(explode("\n", $l_text), explode("\n", $r_text)); + + if($type == 'inline') { + $diffformatter = new InlineDiffFormatter(); + } else { + $diffformatter = new TableDiffFormatter(); + } + /* + * Display intro + */ + if($intro) print p_locale_xhtml('diff'); /* - * Diff view + * Display type and exact reference + */ + if(!$text) { + ptln('
'); + + + $form = new Doku_Form(array('action' => wl())); + $form->addHidden('id', $ID); + $form->addHidden('rev2[0]', $l_rev); + $form->addHidden('rev2[1]', $r_rev); + $form->addHidden('do', 'diff'); + $form->addElement( + form_makeListboxField( + 'difftype', + array( + 'sidebyside' => $lang['diff_side'], + 'inline' => $lang['diff_inline'] + ), + $type, + $lang['diff_type'], + '', '', + array('class' => 'quickselect') + ) + ); + $form->addElement(form_makeButton('submit', 'diff', 'Go')); + $form->printForm(); + + ptln('

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

'); + + ptln('
'); // .diffoptions + } + + /* + * Display diff view table */ ?>
- + + + + + + + + + + + - - + + - - + - - - - - - - - - - + + + + + + - - + + - - - - - - format($diff)); ?> + format($diff)); ?> +
-
-> + +
-+
-> - + +> +
+
+> - -
> + + > + +
> - - > - -