owls

annotate Owls.php @ 10:144bc36a6c27

moved login form from nav to top of content added last modified date
author meillo@marmaro.de
date Sun, 27 May 2007 02:13:46 +0200
parents 3cacc24e1774
children 46617062bef5
rev   line source
meillo@0 1 <?php
meillo@2 2
meillo@2 3 define('DB_PREFIX', 'rem__1_');
meillo@2 4 define('TITLE', 'Owls');
meillo@2 5
meillo@10 6 require_once '../../Db.inc.php';
meillo@2 7 require_once 'Includes/Loginsys.class.php';
meillo@2 8 include_once 'Includes/Bbcodeparser.inc.php';
meillo@2 9
meillo@2 10 $lsys = &new Loginsys();
meillo@2 11
meillo@2 12 ?>
meillo@2 13 <!--
meillo@2 14
meillo@2 15 `Owls' - some kind of wiki system
meillo@2 16
meillo@2 17
meillo@2 18 (c) Copyright 2006 &> by Meillo r e t u r n s
meillo@2 19
meillo@2 20 This program is free software; you can redistribute it and/or
meillo@2 21 modify it under the terms of the GNU General Public License
meillo@2 22 as published by the Free Software Foundation; either version 2
meillo@2 23 of the License, or (at your option) any later version.
meillo@2 24
meillo@2 25 This program is distributed in the hope that it will be useful,
meillo@2 26 but WITHOUT ANY WARRANTY; without even the implied warranty of
meillo@2 27 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
meillo@2 28 GNU General Public License for more details.
meillo@2 29
meillo@2 30
meillo@2 31 http://prog.marmaro.de/owls/
meillo@2 32
meillo@2 33 -->
meillo@2 34
meillo@2 35 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
meillo@2 36
meillo@2 37 <html xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">
meillo@2 38 <head>
meillo@2 39 <title><?php echo htmlentities(TITLE); ?></title>
meillo@2 40 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
meillo@2 41 <link rel="shortcut icon" href="favicon.ico" />
meillo@2 42 <link rel="stylesheet" type="text/css" href="Owls.css.php" />
meillo@2 43 <script type="text/javascript">
meillo@2 44 <!--
meillo@2 45 function sureToDelete(id) {
meillo@2 46 if (window.prompt("Type 'delete' to delete","") == "delete") {
meillo@2 47 location.href = id +"d";
meillo@2 48 }
meillo@2 49 }
meillo@2 50
meillo@2 51 /* I want to use this function later ... perhaps
meillo@2 52 function toggleVisibility(boxId) {
meillo@2 53 if (document.getElementById('node'+ boxId).style.display == 'none') {
meillo@2 54 document.getElementById('node'+ boxId).style.display = "";
meillo@2 55 document.getElementById('ctrl'+ boxId).firstChild.nodeValue = "-";
meillo@2 56 } else{
meillo@2 57 document.getElementById('node'+ boxId).style.display = "none";
meillo@2 58 document.getElementById('ctrl'+ boxId).firstChild.nodeValue = "+";
meillo@2 59 }
meillo@2 60 }
meillo@2 61 */
meillo@2 62 //-->
meillo@2 63 </script>
meillo@2 64 </head>
meillo@2 65
meillo@2 66 <body>
meillo@2 67 <div id="websiteContainer">
meillo@2 68
meillo@2 69 <!-- Banner -->
meillo@2 70 <img src="Owls.png" id="banner" alt="<?php echo htmlentities(TITLE); ?>" />
meillo@2 71
meillo@2 72 <?php
meillo@2 73
meillo@2 74
meillo@0 75 if ($_GET['action'] == 'show') { // show
meillo@0 76 show($lsys);
meillo@0 77
meillo@0 78 } else if ($_GET['action'] == 'new' && $lsys->loggedIn()) { // new
meillo@0 79 create($lsys);
meillo@0 80
meillo@0 81 } else if ($_GET['action'] == 'edit' && $lsys->loggedIn()) { // edit
meillo@0 82 edit($lsys);
meillo@0 83
meillo@0 84 } else if ($_GET['action'] == 'delete' && $lsys->loggedIn()) { // delete
meillo@0 85 delete($lsys);
meillo@0 86
meillo@0 87 } else if ($_GET['action'] == 'login') { // login
meillo@0 88 $lsys->login($_POST['login_loginname'], md5($_POST['login_password']));
meillo@0 89 show($lsys);
meillo@0 90
meillo@0 91 } else if ($_GET['action'] == 'logout') { // logout
meillo@0 92 $lsys->logout();
meillo@0 93 show($lsys);
meillo@0 94
meillo@0 95 } else { // startpage
meillo@0 96 $_GET['id'] = 1;
meillo@0 97 show($lsys);
meillo@0 98
meillo@0 99 }
meillo@0 100
meillo@0 101
meillo@2 102
meillo@2 103
meillo@2 104
meillo@2 105 ?>
meillo@2 106
meillo@2 107 </div>
meillo@2 108
meillo@2 109
meillo@2 110 </div>
meillo@2 111
meillo@2 112 </body>
meillo@2 113 </html>
meillo@2 114 <?php
meillo@0 115
meillo@0 116
meillo@0 117
meillo@0 118
meillo@0 119
meillo@0 120
meillo@0 121
meillo@0 122
meillo@0 123 /*
meillo@0 124 displays content of the node
meillo@0 125 performs action 'edit'
meillo@0 126 shows admincontrols if logged in
meillo@0 127 */
meillo@0 128 function show($lsys) {
meillo@0 129
meillo@10 130
meillo@0 131 // perform action: write edited node to db
meillo@0 132 if (isset($_POST['editDoc']) && $lsys->loggedIn()) {
meillo@0 133 $_POST['editDoc_title'] = addslashes($_POST['editDoc_title']);
meillo@0 134 $_POST['editDoc_text'] = addslashes($_POST['editDoc_text']);
meillo@0 135 mysql_query("update ". DB_PREFIX ."Owls set
meillo@0 136 name='$_POST[editDoc_title]',
meillo@0 137 text='$_POST[editDoc_text]',
meillo@0 138 idParent='$_POST[editDoc_idCategory]',
meillo@0 139 date=". time() ."
meillo@0 140 where id='$_GET[id]'") or die(mysql_error());
meillo@0 141 }
meillo@0 142
meillo@0 143 // print nav
meillo@0 144 include 'Includes/Nav.inc.php';
meillo@0 145
meillo@0 146
meillo@10 147
meillo@10 148
meillo@0 149 // query data of the node
meillo@0 150 $result = mysql_query("select * from ". DB_PREFIX ."Owls where id=$_GET[id]");
meillo@0 151
meillo@0 152 // catch nodes that not exist
meillo@0 153 if (!mysql_num_rows($result)) {
meillo@0 154
meillo@0 155 $fnord = array('',
meillo@0 156 'Fnord is the space between the pixels on your screen.',
meillo@0 157 'Fnord is the echo of silence.',
meillo@0 158 'Fnord is evaporated herbal tea without the herbs.',
meillo@0 159 'Fnord is what you see when you close your eyes.',
meillo@0 160 'Fnord is the empty pages at the end of the book.',
meillo@0 161 'Fnord is why ducks eat trees.',
meillo@0 162 'Fnord is the bucket where they keep the unused serifs for H*lvetica.',
meillo@0 163 'Fnord is the source of all the zero bits in your computer.'
meillo@0 164 );
meillo@0 165
meillo@0 166 ?>
meillo@0 167 <div id="content">
meillo@0 168 <h2>Error 23 - fnord found</h2>
meillo@0 169 <p>
meillo@0 170 <?php echo $fnord[rand(0, sizeof($fnord)-1)]; ?>
meillo@0 171 </p>
meillo@0 172 <?php
meillo@0 173
meillo@0 174 } else {
meillo@0 175
meillo@0 176 $row = mysql_fetch_array($result);
meillo@0 177 echo ' <div id="content">'."\n";
meillo@0 178
meillo@10 179 // display admin controls or login form
meillo@10 180 ?>
meillo@10 181 <div class="ctrl">
meillo@10 182
meillo@10 183 <?php
meillo@10 184 // display last update
meillo@10 185 if ($_GET['id'] == 1) {
meillo@10 186 // root node displays date of last modification of any node
meillo@10 187 $sql = sprintf("
meillo@10 188 select
meillo@10 189 max(date)
meillo@10 190 from %sOwls
meillo@10 191 ",
meillo@10 192 DB_PREFIX
meillo@10 193 );
meillo@10 194 } else {
meillo@10 195 $sql = sprintf("
meillo@10 196 select
meillo@10 197 date
meillo@10 198 from %sOwls
meillo@10 199 where
meillo@10 200 id = ". $_GET['id'] ."
meillo@10 201 ",
meillo@10 202 DB_PREFIX
meillo@10 203 );
meillo@10 204 }
meillo@10 205 $result = mysql_query($sql) or die(mysql_error());
meillo@10 206 unset($sql);
meillo@10 207
meillo@10 208 $rowUpdate = mysql_fetch_row($result);
meillo@10 209 $lastUpdate = $rowUpdate[0];
meillo@10 210 ?>
meillo@10 211 <span style="font-size: 0.8em;">
meillo@10 212 last update: <?php echo date('d.m.Y H:i', $lastUpdate); ?>
meillo@10 213 </span>
meillo@10 214
meillo@10 215 <?php
meillo@0 216 if ($lsys->loggedIn()) {
meillo@0 217 ?>
meillo@0 218 <a href="<?php echo $row['id'] .'n'; ?>">new</a>
meillo@0 219 <a href="<?php echo $row['id'] .'e'; ?>">edit</a>
meillo@0 220 <?php
meillo@0 221 if ($row['id'] != 1) {
meillo@0 222 echo '<a href="javascript:sureToDelete('. $row['id'] .')">delete</a>';
meillo@0 223 }
meillo@10 224 echo ' <a href="'. $_GET['id'] .'logout" style="color: #c00;">logout</a>';
meillo@10 225 } else {
meillo@10 226 ?>
meillo@10 227 <form name="loginform" id="loginform" action="<?php echo $_GET['id']; ?>login" method="post" enctype="multipart/form-data" style="display: inline;">
meillo@10 228 <input name="login_loginname" type="text" />
meillo@10 229 <input name="login_password" type="password" />
meillo@10 230 <input name="login" type="submit" value="login" style="padding: 0; cursor: pointer; width: 5em;" />
meillo@10 231 </form>
meillo@10 232 <?php
meillo@10 233 }
meillo@0 234 ?>
meillo@0 235 </div>
meillo@0 236 <?php
meillo@0 237
meillo@0 238 // print content of the node
meillo@0 239 echo ' <h2>'.stripslashes($row['name']).'</h2>'."\n";
meillo@0 240 if (!empty($row['text'])) {
meillo@0 241 echo ' <p>'.bbcode(stripslashes($row['text']), 1, 1).'</p>';
meillo@0 242 }
meillo@0 243 }
meillo@0 244 echo "\n\n";
meillo@0 245
meillo@0 246 }
meillo@0 247
meillo@0 248
meillo@0 249
meillo@0 250
meillo@0 251
meillo@0 252 /*
meillo@0 253 displays edit form
meillo@0 254 */
meillo@0 255 function edit($lsys) {
meillo@0 256
meillo@0 257 include 'Includes/Nav.inc.php';
meillo@0 258
meillo@0 259 $sql = "select * from ". DB_PREFIX ."Owls where id=$_GET[id]";
meillo@0 260 $result = mysql_query($sql) or die(mysql_error());
meillo@0 261 $row = mysql_fetch_array($result);
meillo@0 262 echo '<div id="content">';
meillo@0 263 ?>
meillo@4 264 <div id="edit" style="position: relative; width: 99%">
meillo@0 265 <form action="<?php echo $row['id']; ?>" method="post" enctype="multipart/form-data">
meillo@0 266 <?php
meillo@0 267 if ($_GET['id'] != 1) {
meillo@0 268 ?>
meillo@0 269 <select name="editDoc_idCategory" style="width: 99%;">
meillo@0 270 <?php
meillo@2 271 $sql = sprintf("
meillo@2 272 select
meillo@2 273 *
meillo@2 274 from %sOwls
meillo@2 275 where
meillo@2 276 id != %d
meillo@2 277 and idParent != %d
meillo@2 278 -- not in (
meillo@2 279 -- select idParent from %sOwls
meillo@2 280 -- )
meillo@2 281 order by name asc
meillo@2 282 ",
meillo@2 283 DB_PREFIX,
meillo@2 284 $row['id'],
meillo@2 285 $row['id'],
meillo@2 286 DB_PREFIX
meillo@2 287 );
meillo@2 288 $result = mysql_query($sql) or die(mysql_error());
meillo@2 289 unset($sql);
meillo@0 290 while($rowCats = mysql_fetch_array($result)) {
meillo@2 291 echo ' <option value="'.$rowCats['id'].'"'. (($row['idParent'] == $rowCats['id']) ? ' selected="selected" style="font-weight: bold;"' : '') .'>'.stripslashes($rowCats['name']).'</option>';
meillo@0 292 }
meillo@0 293 ?>
meillo@0 294 </select><br /><br />
meillo@0 295 <?php
meillo@0 296 }
meillo@0 297 ?>
meillo@2 298 <input name="editDoc_title" type="text" value="<?php echo stripslashes($row['name']); ?>" style="width: 99%; font-weight: bold;" /><br />
meillo@0 299 <textarea name="editDoc_text" cols="60" rows="15" style="width: 99%; height: 30em;"><?php
meillo@0 300 echo stripslashes($row['text']);
meillo@0 301 ?></textarea><br /><br />
meillo@0 302 <input name="editDoc" type="submit" value="edit" class="button" style="width: 99%;" />
meillo@0 303 </form>
meillo@0 304 </div>
meillo@0 305 <?php
meillo@0 306 unset($row);
meillo@0 307 unset($result);
meillo@0 308 }
meillo@0 309
meillo@0 310
meillo@0 311
meillo@0 312
meillo@0 313
meillo@0 314
meillo@0 315 /*
meillo@0 316 performs action 'new'
meillo@0 317 */
meillo@0 318 function create($lsys) {
meillo@0 319
meillo@0 320 // perform action: new node
meillo@0 321 mysql_query("
meillo@0 322 insert into ". DB_PREFIX ."Owls
meillo@0 323 (idParent, date)
meillo@0 324 values('$_GET[id]',". time() .")
meillo@0 325 ") or die(mysql_error());
meillo@0 326
meillo@0 327 // set node to jump to (new created node)
meillo@0 328 $_GET['id'] = mysql_insert_id();
meillo@0 329 edit($lsys);
meillo@0 330 }
meillo@0 331
meillo@0 332
meillo@0 333
meillo@0 334
meillo@0 335
meillo@0 336 /*
meillo@0 337 performs action 'delete'
meillo@0 338 */
meillo@0 339 function delete($lsys) {
meillo@0 340 // not allowed to delete the root
meillo@0 341 if ($_GET['id'] != 1) {
meillo@0 342 // TODO: get the parent of the one which is to delete
meillo@0 343
meillo@0 344 // delete
meillo@0 345 mysql_query("delete from ". DB_PREFIX ."Owls where id='$_GET[id]'") or die(mysql_error());
meillo@0 346 }
meillo@0 347 // set node to jump to (TODO: parent from above)
meillo@0 348 $_GET['id'] = 1;
meillo@0 349 show($lsys);
meillo@0 350 }
meillo@0 351
meillo@0 352
meillo@0 353
meillo@0 354
meillo@0 355 ?>
meillo@0 356