]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/editpage.php
Refactor/cleanup of login code continues.
[SourceForge/phpwiki.git] / lib / editpage.php
1 <?php
2 rcs_id('$Id: editpage.php,v 1.28 2002-01-23 05:10:22 dairiki Exp $');
3
4 require_once('lib/transform.php');
5 require_once('lib/Template.php');
6
7 function editPage(&$request, $do_preview = false) {
8     // editpage relies on $pagename, $version
9     $pagename = $request->getArg('pagename');
10     $version  = $request->getArg('version');
11     
12     $page    = $request->getPage();
13     $current = $page->getCurrentRevision();
14
15     if ($version === false) {
16         $selected = $current;
17     }
18     else {
19         $selected = $page->getRevision($version);
20         if (!$selected)
21             NoSuchRevision($request, $page, $version); // noreturn
22     }
23
24     $user = $request->getUser();
25     $pagelink = LinkExistingWikiWord($pagename, '', $version);
26
27     $wrapper = new WikiTemplate('top');
28     $wrapper->setPageRevisionTokens($selected);
29
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');
34         $do_preview = false;
35     }
36     else {
37         $wrapper->qreplace('TITLE', sprintf(_("Edit: %s"), split_pagename($pagename)));
38         $wrapper->replace('HEADER', fmt("Edit: %s", $pagelink));
39         $template = new WikiTemplate('editpage');
40     }
41
42     if ($do_preview) {
43         foreach (array('minor_edit', 'convert') as $key)
44             $formvars[$key] = (bool) $request->getArg($key);
45         foreach (array('content', 'editversion', 'summary', 'pagename',
46                        'version') as $key)
47             $formvars[$key] = (string) $request->getArg($key);
48
49         $template->replace('PREVIEW_CONTENT',
50                            do_transform($request->getArg('content')));
51     }
52     else {
53         $age = time() - $current->get('mtime');
54         $minor_edit = ( $age < MINOR_EDIT_TIMEOUT && $current->get('author') == $user->getId() );
55
56         $formvars = array('content'     => $selected->getPackedContent(),
57                           'minor_edit'  => $minor_edit,
58                           'version'     => $selected->getVersion(),
59                           'editversion' => $current->getVersion(),
60                           'summary'     => '',
61                           'convert'     => '',
62                           'pagename'    => $pagename);
63     }
64
65     $template->replace('FORMVARS', $formvars);
66     $wrapper->printExpansion($template);
67 }
68
69 // Local Variables:
70 // mode: php
71 // tab-width: 8
72 // c-basic-offset: 4
73 // c-hanging-comment-ender-p: nil
74 // indent-tabs-mode: nil
75 // End:   
76 ?>