diff options
Diffstat (limited to 'inc')
-rw-r--r-- | inc/actions.php | 2 | ||||
-rw-r--r-- | inc/common.php | 76 | ||||
-rw-r--r-- | inc/html.php | 60 | ||||
-rw-r--r-- | inc/lang/en/lang.php | 1 | ||||
-rw-r--r-- | inc/template.php | 2 |
5 files changed, 108 insertions, 33 deletions
diff --git a/inc/actions.php b/inc/actions.php index 3636406db..636858106 100644 --- a/inc/actions.php +++ b/inc/actions.php @@ -190,7 +190,7 @@ function act_save($act){ return 'conflict'; //save it - saveWikiText($ID,con($PRE,$TEXT,$SUF,1),$SUM); //use pretty mode for con + saveWikiText($ID,con($PRE,$TEXT,$SUF,1),$SUM,$_REQUEST['minor']); //use pretty mode for con //unlock it unlock($ID); diff --git a/inc/common.php b/inc/common.php index d6a367566..3589eae14 100644 --- a/inc/common.php +++ b/inc/common.php @@ -14,6 +14,13 @@ require_once(DOKU_INC.'inc/parserutils.php'); /** + * These constants are used with the recents function + */ +define('RECENTS_SKIP_DELETED',2); +define('RECENTS_SKIP_MINORS',4); +define('RECENTS_SKIP_SUBSPACES',8); + +/** * Return info about the current document as associative * array. * @@ -66,6 +73,7 @@ function pageinfo(){ $info['ip'] = $revinfo['ip']; $info['user'] = $revinfo['user']; $info['sum'] = $revinfo['sum']; + $info['minor'] = $revinfo['minor']; if($revinfo['user']){ $info['editor'] = $revinfo['user']; @@ -578,7 +586,7 @@ function dbg($msg,$hidden=false){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function addLogEntry($date,$id,$summary=""){ +function addLogEntry($date,$id,$summary='',$minor=false){ global $conf; if(!@is_writable($conf['changelog'])){ @@ -590,11 +598,33 @@ function addLogEntry($date,$id,$summary=""){ $remote = $_SERVER['REMOTE_ADDR']; $user = $_SERVER['REMOTE_USER']; + if($conf['useacl'] && $user && $minor){ + $summary = '*'.$summary; + }else{ + $summary = ' '.$summary; + } + $logline = join("\t",array($date,$remote,$id,$user,$summary))."\n"; io_saveFile($conf['changelog'],$logline,true); } /** + * Checks an summary entry if it was a minor edit + * + * The summary is cleaned of the marker char + * + * @author Andreas Gohr <andi@splitbrain.org> + */ +function isMinor(&$summary){ + if(substr($summary,0,1) == '*'){ + $summary = substr($summary,1); + return true; + } + $summary = trim($summary); + return false; +} + +/** * Internal function used by getRecents * * don't call directly @@ -602,7 +632,7 @@ function addLogEntry($date,$id,$summary=""){ * @see getRecents() * @author Andreas Gohr <andi@splitbrain.org> */ -function _handleRecent($line,$incdel,$ns,$subNS){ +function _handleRecent($line,$ns,$flags){ static $seen = array(); //caches seen pages and skip them if(empty($line)) return false; //skip empty lines @@ -611,6 +641,16 @@ function _handleRecent($line,$incdel,$ns,$subNS){ // skip seen ones if($seen[$id]) return false; + $recent = array(); + + // check minors + if(isMinor($sum)){ + // skip minors + if($flags & RECENTS_SKIP_MINORS) return false; + $recent['minor'] = true; + }else{ + $recent['minor'] = false; + } // remember in seen to skip additional sights $seen[$id] = 1; @@ -619,21 +659,19 @@ function _handleRecent($line,$incdel,$ns,$subNS){ if (($ns) && (strpos($id,$ns.':') !== 0)) return false; // exclude subnamespaces - if ((!$subNS) && (getNS($id) != $ns)) return false; + if (($flags & RECENTS_SKIP_SUBSPACES) && (getNS($id) != $ns)) return false; // check ACL if (auth_quickaclcheck($id) < AUTH_READ) return false; // check existance if(!@file_exists(wikiFN($id))){ - if(!$incdel){ + if($flags & RECENTS_SKIP_DELETED){ return false; }else{ - $recent = array(); $recent['del'] = true; } }else{ - $recent = array(); $recent['del'] = false; } @@ -646,19 +684,26 @@ function _handleRecent($line,$incdel,$ns,$subNS){ return $recent; } + /** * returns an array of recently changed files using the * changelog * + * The following constants can be used to control which changes are + * included. Add them together as needed. + * + * RECENTS_SKIP_DELETED - don't include deleted pages + * RECENTS_SKIP_MINORS - don't include minor changes + * RECENTS_SKIP_SUBSPACES - don't include subspaces + * * @param int $first number of first entry returned (for paginating * @param int $num return $num entries - * @param bool $incdel include deleted pages? * @param string $ns restrict to given namespace - * @param bool $subNS include subnamespaces + * @param bool $flags see above * * @author Andreas Gohr <andi@splitbrain.org> */ -function getRecents($first,$num,$incdel=false,$ns='',$subNS=true){ +function getRecents($first,$num,$ns='',$flags=0){ global $conf; $recent = array(); $count = 0; @@ -696,7 +741,7 @@ function getRecents($first,$num,$incdel=false,$ns='',$subNS=true){ // handle lines for($i = $cnt-1; $i >= 0; $i--){ - $rec = _handleRecent($lines[$i],$incdel,$ns,$subNS); + $rec = _handleRecent($lines[$i],$ns,$flags); if($rec !== false){ if(--$first >= 0) continue; // skip first entries $recent[] = $rec; @@ -735,10 +780,11 @@ function getRevisionInfo($id,$rev){ $loglines = preg_grep("/$rev\t\d+\.\d+\.\d+\.\d+\t$id\t/",$loglines); $loglines = array_reverse($loglines); //reverse sort on timestamp (shouldn't be needed) $line = split("\t",$loglines[0]); - $info['date'] = $line[0]; - $info['ip'] = $line[1]; - $info['user'] = $line[3]; + $info['date'] = $line[0]; + $info['ip'] = $line[1]; + $info['user'] = $line[3]; $info['sum'] = $line[4]; + $info['minor'] = isMinor($info['sum']); return $info; } @@ -747,7 +793,7 @@ function getRevisionInfo($id,$rev){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function saveWikiText($id,$text,$summary){ +function saveWikiText($id,$text,$summary,$minor=false){ global $conf; global $lang; umask($conf['umask']); @@ -778,7 +824,7 @@ function saveWikiText($id,$text,$summary){ $del = false; } - addLogEntry(@filemtime($file),$id,$summary); + addLogEntry(@filemtime($file),$id,$summary,$minor); // send notify mails notify($id,'admin',$old,$summary); notify($id,'subscribers',$old,$summary); diff --git a/inc/html.php b/inc/html.php index 1e48b548c..d4fafdaf3 100644 --- a/inc/html.php +++ b/inc/html.php @@ -56,11 +56,11 @@ function html_login(){ <legend><?php echo $lang['btn_login']?></legend> <input type="hidden" name="id" value="<?php echo $ID?>" /> <input type="hidden" name="do" value="login" /> - <label> + <label class="block"> <span><?php echo $lang['user']?></span> <input type="text" name="u" value="<?php echo formText($_REQUEST['u'])?>" class="edit" /> </label><br /> - <label> + <label class="block"> <span><?php echo $lang['pass']?></span> <input type="password" name="p" class="edit" /> </label><br /> @@ -392,7 +392,7 @@ function html_revisions(){ print p_locale_xhtml('revisions'); print '<ul>'; if($INFO['exists']){ - print '<li>'; + print ($INFO['minor']) ? '<li class="minor">' : '<li>'; print $date; @@ -413,8 +413,7 @@ function html_revisions(){ $date = date($conf['dformat'],$rev); $info = getRevisionInfo($ID,$rev); - print '<li>'; - + print ($info['minor']) ? '<li class="minor">' : '<li>'; print $date; print ' <a href="'.wl($ID,"rev=$rev,do=diff").'">'; @@ -459,10 +458,10 @@ function html_recent($first=0){ * decide if this is the last page or is there another one. * This is the cheapest solution to get this information. */ - $recents = getRecents($first,$conf['recent'] + 1,true,getNS($ID)); + $recents = getRecents($first,$conf['recent'] + 1,getNS($ID)); if(count($recents) == 0 && $first != 0){ $first=0; - $recents = getRecents(0,$conf['recent'] + 1,true,getNS($ID)); + $recents = getRecents(0,$conf['recent'] + 1,getNS($ID)); } $cnt = count($recents) <= $conf['recent'] ? count($recents) : $conf['recent']; @@ -471,7 +470,7 @@ function html_recent($first=0){ foreach($recents as $recent){ $date = date($conf['dformat'],$recent['date']); - print '<li>'; + print ($recent['minor']) ? '<li class="minor">' : '<li>'; print $date.' '; @@ -500,8 +499,8 @@ function html_recent($first=0){ print '</a> '; print html_wikilink(':'.$recent['id'],$conf['useheading']?NULL:$recent['id']); - print ' '.htmlspecialchars($recent['sum']); + print ' <span class="user">'; if($recent['user']){ print $recent['user']; @@ -795,7 +794,7 @@ function html_register(){ <input type="hidden" name="save" value="1" /> <fieldset> <legend><?php echo $lang['register']?></legend> - <label> + <label class="block"> <?php echo $lang['user']?> <input type="text" name="login" class="edit" size="50" value="<?php echo formText($_POST['login'])?>" /> </label><br /> @@ -803,11 +802,11 @@ function html_register(){ <?php if (!$conf['autopasswd']) { ?> - <label> + <label class="block"> <?php echo $lang['pass']?> <input type="password" name="pass" class="edit" size="50" /> </label><br /> - <label> + <label class="block"> <?php echo $lang['passchk']?> <input type="password" name="passchk" class="edit" size="50" /> </label><br /> @@ -815,11 +814,11 @@ function html_register(){ } ?> - <label> + <label class="block"> <?php echo $lang['fullname']?> <input type="text" name="fullname" class="edit" size="50" value="<?php echo formText($_POST['fullname'])?>" /> </label><br /> - <label> + <label class="block"> <?php echo $lang['email']?> <input type="text" name="email" class="edit" size="50" value="<?php echo formText($_POST['email'])?>" /> </label><br /> @@ -943,8 +942,8 @@ function html_edit($text=null,$include='edit'){ //FIXME: include needed? <tr id="wikieditbar"> <td> <?php if($wr){?> - <input class="button" type="submit" name="do" value="<?php echo $lang['btn_save']?>" accesskey="s" title="[ALT+S]" onclick="textChanged=false" onkeypress="textChanged=false" tabindex="3" /> - <input class="button" type="submit" name="do" value="<?php echo $lang['btn_preview']?>" accesskey="p" title="[ALT+P]" onclick="textChanged=false" onkeypress="textChanged=false" tabindex="4" /> + <input class="button" type="submit" name="do" value="<?php echo $lang['btn_save']?>" accesskey="s" title="[ALT+S]" onclick="textChanged=false" onkeypress="textChanged=false" tabindex="4" /> + <input class="button" type="submit" name="do" value="<?php echo $lang['btn_preview']?>" accesskey="p" title="[ALT+P]" onclick="textChanged=false" onkeypress="textChanged=false" tabindex="5" /> <input class="button" type="submit" name="do" value="<?php echo $lang['btn_cancel']?>" tabindex="5" /> <?php } ?> </td> @@ -952,6 +951,7 @@ function html_edit($text=null,$include='edit'){ //FIXME: include needed? <?php if($wr){ ?> <?php echo $lang['summary']?>: <input type="text" class="edit" name="summary" id="summary" size="50" onkeyup="summaryCheck();" value="<?php echo formText($SUM)?>" tabindex="2" /> + <?php html_minoredit()?> <?php }?> </td> <td align="right"> @@ -976,6 +976,34 @@ function html_edit($text=null,$include='edit'){ //FIXME: include needed? } /** + * Adds a checkbox for minor edits for logged in users + * + * @author Andrea Gohr <andi@splitbrain.org> + */ +function html_minoredit(){ + global $conf; + global $lang; + // minor edits are for logged in users only + if(!$conf['useacl'] || !$_SERVER['REMOTE_USER']){ + return; + } + + $p = array(); + $p['name'] = 'minor'; + $p['type'] = 'checkbox'; + $p['id'] = 'minoredit'; + $p['tabindex'] = 3; + $p['value'] = '1'; + if($_REQUEST['minor']) $p['checked']='checked'; + $att = buildAttributes($p); + + print "<input $att />"; + print '<label for="minoredit">'; + print $lang['minoredit']; + print '</label>'; +} + +/** * prepares the signature string as configured in the config * * @author Andreas Gohr <andi@splitbrain.org> diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php index b7fe08225..9cfae794e 100644 --- a/inc/lang/en/lang.php +++ b/inc/lang/en/lang.php @@ -45,6 +45,7 @@ $lang['fullname'] = 'Full name'; $lang['email'] = 'E-Mail'; $lang['register'] = 'Register'; $lang['badlogin'] = 'Sorry, username or password was wrong.'; +$lang['minoredit'] = 'Minor Edit'; $lang['regmissing'] = 'Sorry, you must fill in all fields.'; $lang['reguexists'] = 'Sorry, a user with this login already exists.'; diff --git a/inc/template.php b/inc/template.php index e14d0d0ad..8b9aab635 100644 --- a/inc/template.php +++ b/inc/template.php @@ -800,7 +800,7 @@ function tpl_mediauploadform(){ ptln('<input type="text" name="id" class="edit" />',4); ptln('<input type="submit" class="button" value="'.$lang['btn_upload'].'" accesskey="s" />',4); if($AUTH >= AUTH_DELETE){ - ptln('<label for="ow" class="simple"><input type="checkbox" name="ow" value="1" id="ow">'.$lang['txt_overwrt'].'</label>',4); + ptln('<label for="ow"><input type="checkbox" name="ow" value="1" id="ow">'.$lang['txt_overwrt'].'</label>',4); } ptln('</form>',2); } |