' '.XL('Publish').' ')); SDVA($InputTags['e_saveeditbutton'], array('value' => ' '.XL('Save draft and edit').' ')); SDVA($InputTags['e_savedraftbutton'], array( ':html' => "", 'name' => 'postdraft', 'value' => ' '.XL('Save draft').' ', 'accesskey' => XL('ak_savedraft'))); ## with drafts enabled, the 'post' operation requires 'publish' permissions if ($_POST['post'] && $HandleAuth['edit'] == 'edit') $HandleAuth['edit'] = 'publish'; ## disable the 'publish' button if not authorized to publish if (!CondAuth($basename, 'publish')) SDVA($InputTags['e_savebutton'], array('disabled' => 'disabled')); ## add the draft handler into $EditFunctions array_unshift($EditFunctions, 'EditDraft'); function EditDraft(&$pagename, &$page, &$new) { global $WikiDir, $DraftSuffix, $DeleteKeyPattern, $EnableDraftAtomicDiff, $DraftRecentChangesFmt, $RecentChangesFmt, $Now; SDV($DeleteKeyPattern, "^\\s*delete\\s*$"); $basename = preg_replace("/$DraftSuffix\$/", '', $pagename); $draftname = $basename . $DraftSuffix; if (@$_POST['postdraft'] || @$_POST['postedit']) $pagename = $draftname; else if ($_POST['post'] && !preg_match("/$DeleteKeyPattern/", $new['text'])) { $pagename = $basename; if (IsEnabled($EnableDraftAtomicDiff, 0)) { $page = ReadPage($basename); foreach($new as $k=>$v) # delete draft history if (preg_match('/:\\d+(:\\d+:)?$/', $k) && ! preg_match("/:$Now(:\\d+:)?$/", $k)) unset($new[$k]); unset($new['rev']); SDVA($new, $page); } $WikiDir->delete($draftname); } else if (PageExists($draftname) && $pagename != $draftname) { Redirect($draftname, '$PageUrl?action=edit'); exit(); } if ($pagename == $draftname && isset($DraftRecentChangesFmt)) $RecentChangesFmt = $DraftRecentChangesFmt; }