2 rcs_id('$Id: editpage.php,v 1.21 2002-01-13 20:41:26 carstenklapp Exp $');
4 require_once('lib/transform.php');
5 require_once('lib/Template.php');
7 function editPage($dbi, $request) {
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 if ($page->get('locked') && !$user->is_admin()) {
26 // Perhaps this can be worked into display.php. It would be nice if:
27 // 'Note: You are viewing an old revision of this page. "View the current version".'
28 // would link to "View source of the current version".
29 // Also the <h1> is hard-coded in brwose.html / editpage.html
30 // so we can't get a nice title like "Page source for %s".
35 array('version' => $version))),$pagename);
37 $link = LinkExistingWikiWord($pagename);
39 $html = QElement('p');
40 $html .= QElement('strong', _("Note:")) . " ";
41 $html .= sprintf(_("%s has been locked by the administrator and cannot be edited."), $link);
44 $template = new WikiTemplate('BROWSE');
45 $template->replace('TITLE', sprintf(_("Page source for %s"), $pagename));
46 $template->replace('EDIT_FAIL_MESSAGES', $html
47 . QElement('hr', array('noshade' => 'noshade'))
49 $prefs = $user->getPreferences();
50 $template->replace('CONTENT',
53 array('class' => 'wikiedit',
54 'rows' => $prefs['edit_area.height'],
55 'cols' => $prefs['edit_area.width'],
58 $selected->getPackedContent())));
59 $template->setPageRevisionTokens($selected);
61 require_once("lib/display.php");
62 $template->qreplace('PAGE_DESCRIPTION', GleanDescription($selected));
63 echo $template->getExpansion();
69 $age = time() - $current->get('mtime');
70 $minor_edit = ( $age < MINOR_EDIT_TIMEOUT && $current->get('author') == $user->id() );
72 $formvars = array('content' => htmlspecialchars($selected->getPackedContent()),
73 'minor_edit' => $minor_edit ? 'checked' : '',
74 'version' => $selected->getVersion(),
75 'editversion' => $current->getVersion(),
78 'pagename' => htmlspecialchars($pagename));
80 $template = new WikiTemplate('EDITPAGE');
81 $template->setPageRevisionTokens($selected);
82 $template->replace('FORMVARS', $formvars);
83 echo $template->getExpansion();
90 // c-hanging-comment-ender-p: nil
91 // indent-tabs-mode: nil