diff --git a/inc/form.php b/inc/form.php index 312c42b6078a5f91aa83eb9917ae91a01bde1b30..25c65bd55b6f5d0e7936d60b1371273aaef81fbe 100644 --- a/inc/form.php +++ b/inc/form.php @@ -565,10 +565,11 @@ function form_makeListboxField($name, $values, $selected='', $label=null, $id='' if (is_null($label)) $label = $name; $options = array(); reset($values); - if (is_null($selected) || $selected == '') + if (is_null($selected) || $selected == '') { $selected = array(); - elseif (!is_array($selected)) + } elseif (!is_array($selected)) { $selected = array($selected); + } // FIXME: php doesn't know the difference between a string and an integer if (is_string(key($values))) { foreach ($values as $val=>$text) { @@ -576,11 +577,13 @@ function form_makeListboxField($name, $values, $selected='', $label=null, $id='' } } else { foreach ($values as $val) { - if (is_array($val)) - @list($val,$text) = $val; - else + $disabled = false; + if (is_array($val)) { + @list($val,$text,$disabled) = $val; + } else { $text = null; - $options[] = array($val,$text,in_array($val,$selected)); + } + $options[] = array($val,$text,in_array($val,$selected),$disabled); } } $elem = array('_elem'=>'listboxfield', '_options'=>$options, '_text'=>$label, '_class'=>$class, @@ -934,11 +937,12 @@ function form_listboxfield($attrs) { $s .= '<select '.buildAttributes($attrs,true).'>'.DOKU_LF; if (!empty($attrs['_options'])) { foreach ($attrs['_options'] as $opt) { - @list($value,$text,$select) = $opt; + @list($value,$text,$select,$disabled) = $opt; $p = ''; if(is_null($text)) $text = $value; $p .= ' value="'.formText($value).'"'; if (!empty($select)) $p .= ' selected="selected"'; + if ($disabled) $p .= ' disabled="disabled"'; $s .= '<option'.$p.'>'.formText($text).'</option>'; } } else { diff --git a/inc/html.php b/inc/html.php index b698d2e3d366342efb6e2ca60dacf97fb4ffeb8c..1c879e3d8fb0538e7e42f4953344e424a52b3d93 100644 --- a/inc/html.php +++ b/inc/html.php @@ -1220,14 +1220,23 @@ function html_diff($text='',$intro=true,$type=null){ ptln('<p><a class="wikilink1" href="'.$diffurl.'">'.$lang['difflink'].'</a><br />'); //revisions navigation + $r_rev = $r_rev ? $r_rev : $INFO['meta']['last_change']['date']; list($l_revs, $r_revs) = $pagelog->getRevisionsAround($l_rev, $r_rev); foreach($l_revs as $rev) { $info = $pagelog->getRevisionInfo($rev); - $l_revisions[$rev] = array($rev, dformat($info['date']).' '.editorinfo($info['user']).' '.$info['sum']); + $l_revisions[$rev] = array( + $rev, + dformat($info['date']).' '.editorinfo($info['user']).' '.$info['sum'], + $rev >= $r_rev + ); } foreach($r_revs as $rev) { $info = $pagelog->getRevisionInfo($rev); - $r_revisions[$rev] = array($rev, dformat($info['date']).' '.editorinfo($info['user']).' '.$info['sum']); + $r_revisions[$rev] = array( + $rev, + dformat($info['date']).' '.editorinfo($info['user']).' '.$info['sum'], + $rev <= $l_rev + ); } @@ -1240,7 +1249,7 @@ function html_diff($text='',$intro=true,$type=null){ )); ptln('<a class="wikilink1" href="'.$diffurlprev.'">↠'.$lang['diffpreviousedit'].'</a>'); } - var_dump($l_revisions); + $form = new Doku_Form(array('action'=>wl())); $form->addHidden('id',$ID); $form->addHidden('difftype',$type); @@ -1263,7 +1272,7 @@ function html_diff($text='',$intro=true,$type=null){ $form->addElement(form_makeListboxField( 'rev2[1]', $r_revisions, - $r_rev ? $r_rev : $INFO['meta']['last_change']['date'], + $r_rev, '','','', array('class'=>'quickselect'))); $form->addElement(form_makeButton('submit', 'diff','Go'));