=====Minor Changes Hack: The file /handlers/page/edit.php===== here is the file edit.php which I tweaked a bit during my MinorEditHack: New lines are commented with ""FishPete"", so search for this name and you should find the new lines. **TO DO** The Checkbox "minor_change_flag" doesn't appear in the preview mode. should be no problem... **done** %%(php) to templating class; * - optimization using history.back(); * - use central regex library for validation; */ // defaults if(!defined('VALID_PAGENAME_PATTERN')) define ('VALID_PAGENAME_PATTERN', '/^[A-Za-zÄÖÜßäöü]+[A-Za-z0-9ÄÖÜßäöü]*$/s'); if(!defined('MAX_TAG_LENGTH')) define ('MAX_TAG_LENGTH', 75); if(!defined('MAX_EDIT_NOTE_LENGTH')) define ('MAX_EDIT_NOTE_LENGTH', 50); //i18n if(!defined('PREVIEW_HEADER')) define('PREVIEW_HEADER', 'Preview'); if(!defined('LABEL_EDIT_NOTE')) define('LABEL_EDIT_NOTE', 'Please add a note on your edit'); if (!defined('INPUT_ERROR_STYLE')) define('INPUT_ERROR_STYLE', 'class="highlight"'); if(!defined('ERROR_INVALID_PAGENAME')) define('ERROR_INVALID_PAGENAME', 'This page name is invalid. Valid page names must start with a letter and contain only letters and numbers.'); if(!defined('ERROR_OVERWRITE_ALERT')) define('ERROR_OVERWRITE_ALERT', 'OVERWRITE ALERT: This page was modified by someone else while you were editing it.
Please copy your changes and re-edit this page.'); if(!defined('ERROR_MISSING_EDIT_NOTE')) define('ERROR_MISSING_EDIT_NOTE', 'MISSING EDIT NOTE: Please fill in an edit note!'); if(!defined('ERROR_TAG_TOO_LONG')) define('ERROR_TAG_TOO_LONG', 'Tag too long! %d characters max.'); if(!defined('ERROR_NO_WRITE_ACCESS')) define('ERROR_NO_WRITE_ACCESS', 'You don\'t have write access to this page. You might need to register an account to be able to edit this page.'); if(!defined('MESSAGE_AUTO_RESIZE')) define('MESSAGE_AUTO_RESIZE', 'Clicking on %s will automatically truncate the tag to the correct size'); if(!defined('INPUT_SUBMIT_PREVIEW')) define('INPUT_SUBMIT_PREVIEW', 'Preview'); if(!defined('INPUT_SUBMIT_STORE')) define('INPUT_SUBMIT_STORE', 'Store'); if(!defined('INPUT_SUBMIT_REEDIT')) define('INPUT_SUBMIT_REEDIT', 'Re-edit'); if(!defined('INPUT_BUTTON_CANCEL')) define('INPUT_BUTTON_CANCEL', 'Cancel'); if(!defined('INPUT_SUBMIT_RENAME')) define('INPUT_SUBMIT_RENAME', 'Rename'); if(!defined('ACCESSKEY_STORE')) define('ACCESSKEY_STORE', 's'); if(!defined('ACCESSKEY_REEDIT')) define('ACCESSKEY_REEDIT', 'r'); if(!defined('ACCESSKEY_PREVIEW')) define('ACCESSKEY_PREVIEW', 'p'); if(!defined('SHOWCODE_LINK')) define('SHOWCODE_LINK', 'View formatting code for this page'); if(!defined('SHOWCODE_LINK_TITLE')) define('SHOWCODE_LINK_TITLE', 'Click to view page formatting code'); if(!defined('MINOR_CHANGE_FLAG_TEXT')) define('MINOR_CHANGE_FLAG_TEXT', 'Please check if your change is a minor one');//edit by FishPete //initialization $error = ''; $highlight_note = ''; $ondblclick = ''; //#123 if (isset($_POST['submit']) && ($_POST['submit'] == 'Preview') && ($user = $this->GetUser()) && ($user['doubleclickedit'] != 'N')) { $ondblclick = ' ondblclick=\'document.getElementById("reedit_id").click();\''; //history.back() not working on IE. (changes are lost) //however, history.back() works fine in FF, and this is the optimized choice //TODO Optimization: Look $_SERVER['HTTP_USER_AGENT'] and use history.back() for good browsers like FF. } ?>
> tag))) { //TODO use central regex library echo ''.ERROR_INVALID_PAGENAME.''; } elseif ($this->HasAccess("write") && $this->HasAccess("read")) { $newtag = $output = ''; if (isset($_POST['newtag'])) $newtag = $_POST['newtag']; if ($newtag !== '') $this->Redirect($this->Href('edit', $newtag)); if ($_POST) { // strip CRLF line endings down to LF to achieve consistency ... plus it saves database space. // Note: these codes must remain enclosed in double-quotes to work! $body = str_replace("\r\n", "\n", $_POST['body']); $body = preg_replace("/\n[ ]{4}/", "\n\t", $body); // @@@ FIXME: misses first line and multiple sets of four spaces // we don't need to escape here, we do that just before display (i.e., treat note just like body!) $note = trim($_POST['note']); // only if saving: if ($_POST['submit'] == 'Store') { // check for overwriting if ($this->page) { if ($this->page['id'] != $_POST['previous']) { $error = ERROR_OVERWRITE_ALERT; } } // check for edit note if (($this->config['require_edit_note'] == 1) && $_POST['note'] == '') { $error .= ERROR_MISSING_EDIT_NOTE; $highlight_note= INPUT_ERROR_STYLE; } // store if (!$error) { // only save if new body differs from old body if ($body != $this->page['body']) { // add page (revisions) //begin edit by FishPete //$this->SavePage($this->tag, $body, $note); if ($_POST['minor_change_flag']=='minor_change') //checkbox 'minor_change_flag' was cklicked by User { $this->SavePage($this->tag, $body, $note, '1');// save page as a minor change } else //checkbox was not clicked { $this->SavePage($this->tag, $body, $note, '0');// save page as major change } // end edit by FishPete // now we render it internally so we can write the updated link table. $this->ClearLinkTable(); $this->StartLinkTracking(); $dummy = $this->Header(); $dummy .= $this->Format($body); $dummy .= $this->Footer(); $this->StopLinkTracking(); $this->WriteLinkTable(); $this->ClearLinkTable(); } // forward $this->Redirect($this->Href()); } } } // fetch fields $previous = $this->page['id']; if (isset($_POST['previous'])) $previous = $_POST['previous']; if (!isset($body)) $body = $this->page['body']; $body = preg_replace("/\n[ ]{4}/", "\n\t", $body); // @@@ FIXME: misses first line and multiple sets of four spaces - JW 2005-01-16 if ($result = mysql_query("describe ".$this->config['table_prefix']."pages tag")) { $field = mysql_fetch_assoc($result); if (preg_match("/varchar\((\d+)\)/", $field['Type'], $matches)) $maxtaglen = $matches[1]; } else { $maxtaglen = MAX_TAG_LENGTH; } if (isset($_POST['submit']) && $_POST['submit'] == INPUT_SUBMIT_PREVIEW) # preview output { $preview_buttons = '
'."\n"; // We need to escape ALL entity refs before display so we display them _as_ entities instead of interpreting them // so we use htmlspecialchars on the edit note (as on the body) if ($this->config['require_edit_note'] != 2) //check if edit_notes are enabled { $preview_buttons .= ''.LABEL_EDIT_NOTE.'
'."\n"; } $preview_buttons .= ' '.MINOR_CHANGE_FLAG_TEXT.'
'."\n";// Edit by FishPete, added 29.6.06 $preview_buttons .= ''."\n". ''."\n". ''."\n"; $output .= '
'.PREVIEW_HEADER.'
'."\n"; $output .= $this->Format($body); $output .= $this->FormOpen('edit')."\n". ''."\n". // We need to escape ALL entity refs before display so we display them _as_ entities instead of interpreting them // hence htmlspecialchars() instead of htmlspecialchars_ent() which UNescapes entities! ''."\n"; $output .= "
\n".$preview_buttons.$this->FormClose()."\n"; } elseif (!$this->page && strlen($this->tag) > $maxtaglen) # rename page { $this->tag = substr($this->tag, 0, $maxtaglen); // truncate tag to feed a backlinks-handler with the correct value. may be omited. it only works if the link to a backlinks-handler is built in the footer. $output = ''.sprintf(ERROR_TAG_TOO_LONG, $maxtaglen).'
'."\n"; $output .= sprintf(MESSAGE_AUTO_RESIZE, INPUT_SUBMIT_RENAME).'

'."\n"; $output .= $this->FormOpen('edit'); $output .= ''; $output .= ''."\n"; $output .= $this->FormClose(); } else # edit page { // display form if ($error) { $output .= ''.$error.''."\n"; } // append a comment? if (isset($_REQUEST['appendcomment'])) { $body = trim($body)."\n\n----\n\n--".$this->GetUserName().' ('.strftime("%c").')'; } $output .= $this->FormOpen('edit'). ''."\n". // We need to escape ALL entity refs before display so we display them _as_ entities instead of interpreting them // hence htmlspecialchars() instead of htmlspecialchars_ent() which UNescapes entities! '
'."\n"; //note add Edit // We need to escape ALL entity refs before display so we display them _as_ entities instead of interpreting them // so we use htmlspecialchars on the edit note (as on the body) if ($this->config['require_edit_note'] != 2) //check if edit_notes are enabled { $output .= ' '.LABEL_EDIT_NOTE.'
'."\n"; } $output .= ' '.MINOR_CHANGE_FLAG_TEXT.'
'."\n";// Edit by FishPete //finish $output .= ' '."\n". $this->FormClose(); if ($this->config['gui_editor'] == 1) { $output .= ''."\n". ''."\n"; $output .= ''."\n"; } } echo $output; } else { $message = ''.ERROR_NO_WRITE_ACCESS.'
'."\n". "
\n". ''.SHOWCODE_LINK.''. "
\n"; echo $message; } ?>
%% -edited 29.6.06. added the checkbox "minor_change_flag" to the preview mode.---the line is: %%(php) $preview_buttons .= ' '.MINOR_CHANGE_FLAG_TEXT.'
'."\n";// Edit by FishPete%% Insert it under %%(php)$preview_buttons .= ''.LABEL_EDIT_NOTE.'
'."\n";%%