]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/editpage.php
finished moving LinkExistingWikiWord to Theme
[SourceForge/phpwiki.git] / lib / editpage.php
1 <?php
2 rcs_id('$Id: editpage.php,v 1.29 2002-01-23 05:32:08 carstenklapp 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     global $Theme;
25     $user = $request->getUser();
26     $pagelink = $Theme->LinkExistingWikiWord($pagename, '', $version);
27
28     $wrapper = new WikiTemplate('top');
29     $wrapper->setPageRevisionTokens($selected);
30
31     if ($page->get('locked') && !$user->isAdmin()) {
32         $wrapper->qreplace('TITLE', sprintf(_("Page source for %s"), $pagename));
33         $wrapper->replace('HEADER', fmt("View Source: %s", $pagelink));
34         $template = new WikiTemplate('viewsource');
35         $do_preview = false;
36     }
37     else {
38         $wrapper->qreplace('TITLE', sprintf(_("Edit: %s"), split_pagename($pagename)));
39         $wrapper->replace('HEADER', fmt("Edit: %s", $pagelink));
40         $template = new WikiTemplate('editpage');
41     }
42
43     if ($do_preview) {
44         foreach (array('minor_edit', 'convert') as $key)
45             $formvars[$key] = (bool) $request->getArg($key);
46         foreach (array('content', 'editversion', 'summary', 'pagename',
47                        'version') as $key)
48             $formvars[$key] = (string) $request->getArg($key);
49
50         $template->replace('PREVIEW_CONTENT',
51                            do_transform($request->getArg('content')));
52     }
53     else {
54         $age = time() - $current->get('mtime');
55         $minor_edit = ( $age < MINOR_EDIT_TIMEOUT && $current->get('author') == $user->getId() );
56
57         $formvars = array('content'     => $selected->getPackedContent(),
58                           'minor_edit'  => $minor_edit,
59                           'version'     => $selected->getVersion(),
60                           'editversion' => $current->getVersion(),
61                           'summary'     => '',
62                           'convert'     => '',
63                           'pagename'    => $pagename);
64     }
65
66     $template->replace('FORMVARS', $formvars);
67     $wrapper->printExpansion($template);
68 }
69
70 // Local Variables:
71 // mode: php
72 // tab-width: 8
73 // c-basic-offset: 4
74 // c-hanging-comment-ender-p: nil
75 // indent-tabs-mode: nil
76 // End:   
77 ?>