2 rcs_id('$Id: editpage.php,v 1.27 2002-01-22 03:17:47 dairiki Exp $');
4 require_once('lib/transform.php');
5 require_once('lib/Template.php');
7 function editPage($dbi, $request, $do_preview = false) {
8 // editpage relies on $pagename, $version
9 $pagename = $request->getArg('pagename');
10 $version = $request->getArg('version');
12 $page = $dbi->getPage($pagename);
13 $current = $page->getCurrentRevision();
15 if ($version === false) {
19 $selected = $page->getRevision($version);
21 NoSuchRevision($page, $version); // noreturn
24 global $user; // FIXME: make this non-global.
25 $pagelink = LinkExistingWikiWord($pagename, '', $version);
27 $wrapper = new WikiTemplate('top');
28 $wrapper->setPageRevisionTokens($selected);
30 if ($page->get('locked') && !$user->isAdmin()) {
31 $wrapper->qreplace('TITLE', sprintf(_("Page source for %s"), $pagename));
32 $wrapper->replace('HEADER', fmt("View Source: %s", $pagelink));
33 $template = new WikiTemplate('viewsource');
37 $wrapper->qreplace('TITLE', sprintf(_("Edit: %s"), split_pagename($pagename)));
38 $wrapper->replace('HEADER', fmt("Edit: %s", $pagelink));
39 $template = new WikiTemplate('editpage');
43 foreach (array('minor_edit', 'convert') as $key)
44 $formvars[$key] = (bool) $request->getArg($key);
45 foreach (array('content', 'editversion', 'summary', 'pagename',
47 $formvars[$key] = (string) $request->getArg($key);
49 $template->replace('PREVIEW_CONTENT',
50 do_transform($request->getArg('content')));
53 $age = time() - $current->get('mtime');
54 $minor_edit = ( $age < MINOR_EDIT_TIMEOUT && $current->get('author') == $user->getId() );
56 $formvars = array('content' => $selected->getPackedContent(),
57 'minor_edit' => $minor_edit,
58 'version' => $selected->getVersion(),
59 'editversion' => $current->getVersion(),
62 'pagename' => $pagename);
65 $template->replace('FORMVARS', $formvars);
66 $wrapper->printExpansion($template);
73 // c-hanging-comment-ender-p: nil
74 // indent-tabs-mode: nil