941197116f47af885cbb91505d53907363989c5e
[atutor.git] / mods / wiki / plugins / page / addnewpage.php
1 <?php
2
3 /*
4    This plugin provides the virtual "CreatePage" and "AddNewPage" pages to
5    allow immediately adding of a new page. It also automatically inserts
6    a link to the new page from another (pre-defined) Root page, so the
7    Wiki won't end up with lots of not interconnected pages (which used
8    to be the drawback of a plugin like this).
9 */
10
11
12 $ewiki_plugins["page"]["AddNewPage"] = "ewiki_addpage";
13 $ewiki_plugins["page"]["CreatePage"] = "ewiki_addpage";
14 $ewiki_plugins["page"]["EineSeiteHinzufügen"] = "ewiki_addpage";
15
16 $ewiki_t["de"]["name of the new page"] = "Name der neuen Seite";
17 $ewiki_t["de"]["link it from"] = "verlinken von";
18 $ewiki_t["de"]["create"] = "erstellen";
19 $ewiki_t["de"]["AddedPages"] = "HinzugefügteSeiten";
20
21
22 function ewiki_addpage($id, &$data, $version) {
23
24    $o = ewiki_make_title($id, $id, 2);
25
26    #-- output page creation dialog
27    if (empty($_REQUEST["new_id"])) {
28
29       $o .= ewiki_t(
30          '<form action="'.ewiki_script("",$id).'" method="POST" enctype="multipart/formdata"> '
31          .'_{name of the new page} <input type="text" name="new_id" size="26" value="">'
32          .'<br />'
33          .'<input type="submit" value="_{create}">'
34          .'<br /><br />'
35          .'<input type="checkbox" name="add_link_from" value="1" checked="checked">'
36          .' _{link it from} '
37          .'<input type="text" name="link_from" size="20" value="_{AddedPages}">'
38          .'</form>'
39       );
40
41    }
42    else {
43       $new_id = trim($_REQUEST["new_id"]);
44
45       #-- add a link to new page
46       if ($_REQUEST["add_link_from"] && ($from = $_REQUEST["link_from"])) {
47          $row = ewiki_db::GET($from);
48          if ($row && $row["version"]) {
49             if (($row["flags"] & EWIKI_DB_F_TYPE) == EWIKI_DB_F_TEXT) {
50                $row["version"]++;
51                $row["content"] .= "\n* [$new_id]";
52                ewiki_scan_wikiwords($row["content"], $row["refs"], "_STRIP_EMAIL=1");
53                $row["refs"] = "\n\n".implode("\n", array_keys($row["refs"]))."\n\n";
54             }
55             else {
56                $row = false;
57             }
58          }
59          else {
60             $row = array(
61                "id" => $from,
62                "version" => 1,
63                "flags" => EWIKI_DB_F_TEXT,
64                "created" => time(),
65                "lastmodified" => time(),
66                "hits" => 0,
67                "meta"=>"",
68                "content" => "\n* [$new_id]",
69                "refs" => "\n\n$new_id\n\n",
70             );
71          }
72          if ($row) {
73             ewiki_db::WRITE($row);
74          }
75       }
76
77       #-- call edit <form>
78       $o = ewiki_page($new_id);
79    }
80
81    return($o);
82 }
83
84 ?>