summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorneoraider <devnull@localhost>2006-01-19 02:11:03 +0100
committerneoraider <devnull@localhost>2006-01-19 02:11:03 +0100
commit6185e517923e4bc2e64cfc6bcd39c6df4b455316 (patch)
tree16fbed1bb2fee5940ed08a91e69dd0604dc8bda3
parentc630a2d50349c57660cfc98eb13ec71444b27610 (diff)
downloadneon-6185e517923e4bc2e64cfc6bcd39c6df4b455316.tar
neon-6185e517923e4bc2e64cfc6bcd39c6df4b455316.zip
Cookie-Login aktiviert. Handler nochmal etwas ?berarbeitet. Seiten k?nnen jetzt bearbeitet werden.
-rw-r--r--code/pages.inc.php37
-rw-r--r--code/user.inc.php8
-rw-r--r--handlers/default.inc.php32
-rw-r--r--handlers/phpexec.inc.php26
-rw-r--r--styles/GreenGrid/style.css14
-rw-r--r--templates/default4
6 files changed, 99 insertions, 22 deletions
diff --git a/code/pages.inc.php b/code/pages.inc.php
index 541b0ea..f24f283 100644
--- a/code/pages.inc.php
+++ b/code/pages.inc.php
@@ -9,7 +9,7 @@
class Pages {
function Get($name, $type) {
if(!$this->Exists($name, $type)) {
- $message = $GLOBALS['handlers']['default']->HandleErrorMessage('PageNotFound', array('page' => $name));
+ $message = $GLOBALS['handlers']['default']->ErrorMessage('PageNotFound', array('page' => $name));
if(!$message['title']) $message['title'] = $name;
@@ -19,7 +19,7 @@
$res = DBQuery('SELECT handler, data FROM pages WHERE name = ? AND type = ?', array($name, $type));
if(!$this->HasAccess($name, $type)) {
- $message = $GLOBALS['handlers'][$res->fields[0]]->HandleErrorMessage('Forbidden', array('page' => $name));
+ $message = $GLOBALS['handlers'][$res->fields[0]]->ErrorMessage('Forbidden', array('page' => $name));
if(!$message['title']) $message['title'] = $name;
@@ -30,7 +30,33 @@
$data = array_map('stripslashes', $data);
$data['_page'] = $name;
- return $GLOBALS['handlers'][$res->fields[0]]->HandleContentData($data);
+ return $GLOBALS['handlers'][$res->fields[0]]->Get($data);
+ }
+
+ function Edit($name, $type) {
+ if(!$this->Exists($name, $type)) {
+ $message = $GLOBALS['handlers']['default']->ErrorMessage('PageNotFound', array('page' => $name));
+
+ if(!$message['title']) $message['title'] = $name;
+
+ return $message;
+ }
+
+ $res = DBQuery('SELECT handler, data FROM pages WHERE name = ? AND type = ?', array($name, $type));
+
+ if(!$GLOBALS['user']->IsAdmin()) {
+ $message = $GLOBALS['handlers'][$res->fields[0]]->ErrorMessage('Forbidden', array('page' => $name));
+
+ if(!$message['title']) $message['title'] = $name;
+
+ return $message;
+ }
+
+ parse_str($res->fields[1], $data);
+ $data = array_map('stripslashes', $data);
+ $data['_page'] = $name;
+
+ return $GLOBALS['handlers'][$res->fields[0]]->Edit($data);
}
function Exists($name, $type) {
@@ -40,12 +66,9 @@
}
function HasAccess($name, $type) {
- $user = $GLOBALS['user'];
-
$res = DBQuery('SELECT access FROM pages WHERE name = ? AND type = ?', array($name, $type));
- return ((($user->GetUid() != 0) && ($user->GetGid() == 0))
- || ($res->fields[0] & (1 << $user->GetGid())) != 0);
+ return ($GLOBALS['user']->IsAdmin() || ($res->fields[0] & (1 << $GLOBALS['user']->GetGid())) != 0);
}
}
diff --git a/code/user.inc.php b/code/user.inc.php
index 34b12f2..4899612 100644
--- a/code/user.inc.php
+++ b/code/user.inc.php
@@ -53,6 +53,8 @@
$this->type = 'url';
$this->key = $sid . $id;
+ setcookie('login', $this->key);
+
return $id;
}
@@ -67,6 +69,12 @@
$this->type = '';
$this->key = '';
+
+ setcookie('login');
+ }
+
+ function IsAdmin() {
+ return ($this->uid != 0 && $this->gid == 0);
}
function GetUid() {
diff --git a/handlers/default.inc.php b/handlers/default.inc.php
index 2e2cd96..f273fdb 100644
--- a/handlers/default.inc.php
+++ b/handlers/default.inc.php
@@ -2,19 +2,37 @@
include('code/message.inc.php');
class default_handler {
- function HandleContentData($data) {
- $tr = array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;', "\n" => '<br />', "\r" => '');
-
+ function Get($data) {
if($data['title'])
- $title = strtr($data['title'], $tr);
+ $title = strtr($data['title'], array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
else
$title = strtr($data['_page'], array(':' => ' - '));
- $content = '<h2>' . $title . '</h2>' . strtr($data['content'], $tr);
+ $content = '<h2>' . $title . '</h2>' . strtr($data['content'], array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;',
+ '"' => '&quot;', "\n" => '<br />', "\r" => ''));
return array('title' => $title, 'content' => $content);
}
-
- function HandleErrorMessage($type, $data = array()) {
+
+ function Edit($data) {
+ $title = 'Edit \'' . $data['_page'] . '\'';
+
+ $content = '<form method="post" action="' . $GLOBALS['links']->GetNeonLink('Pages:Do') . '">';
+ $content .= '<input type="hidden" name="do" value="edit" />';
+ $content .= '<input type="hidden" name="id" value="' . $_POST['id'] . '" />';
+ $content .= 'Titel: ';
+ $content .= '<input type="text" name="title" value="';
+ $content .= strtr($data['title'], array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
+ $content .= '" size="70" /><br />';
+ $content .= '<textarea name="content" class="pageedit" rows="25" cols="70">';
+ $content .= strtr($data['content'], array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
+ $content .= '</textarea><br />';
+ $content .= '<input type="submit" value="Änderungen übernehmen" />';
+ $content .= '</form>';
+
+ return array('title' => $title, 'content' => $content);
+ }
+
+ function ErrorMessage($type, $data = array()) {
return array('content' => '<span class="error">' . Message($type, $data) . '</span>', 'title' => Message('error'));
}
}
diff --git a/handlers/phpexec.inc.php b/handlers/phpexec.inc.php
index 76ac18e..3754fd4 100644
--- a/handlers/phpexec.inc.php
+++ b/handlers/phpexec.inc.php
@@ -1,12 +1,11 @@
<?PHP
include('code/message.inc.php');
+ include('code/links.inc.php');
class phpexec_handler {
- function HandleContentData($data) {
- $tr = array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;', "\n" => '<br />', "\r" => '');
-
+ function Get($data) {
if($data['title'])
- $title = strtr($data['title'], $tr);
+ $title = strtr($data['title'], array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
else
$title = strtr($data['_page'], array(':' => ' - '));
@@ -19,8 +18,23 @@
return array('title' => $title, 'content' => $content);
}
-
- function HandleErrorMessage($type, $data = array()) {
+
+ function Edit($data) {
+ $title = 'Edit \'' . $data['_page'] . '\'';
+
+ $content = '<form method="post" action="' . $GLOBALS['links']->GetNeonLink('Pages:Do') . '">';
+ $content .= '<input type="hidden" name="do" value="edit" />';
+ $content .= '<input type="hidden" name="id" value="' . $_POST['id'] . '" />';
+ $content .= '<textarea name="code" class="pageedit_phpexec" rows="25" cols="70">';
+ $content .= strtr($data['code'], array('<' => '&lt;', '>' => '&gt;', '&' => '&amp;', '"' => '&quot;'));
+ $content .= '</textarea><br />';
+ $content .= '<input type="submit" value="Änderungen übernehmen" />';
+ $content .= '</form>';
+
+ return array('title' => $title, 'content' => $content);
+ }
+
+ function ErrorMessage($type, $data = array()) {
return array('content' => '<span class="error">' . Message($type, $data) . '</span>', 'title' => Message('error'));
}
}
diff --git a/styles/GreenGrid/style.css b/styles/GreenGrid/style.css
index 6a91eb0..4cb9f78 100644
--- a/styles/GreenGrid/style.css
+++ b/styles/GreenGrid/style.css
@@ -28,6 +28,20 @@ input, textarea, select {
font-family:Larabiefont, Westminster, Courier, monospace;
}
+select.pagelist {
+ width:50%;
+ margin-bottom:0.8em;
+}
+
+textarea.pageedit {
+ width:100%;
+ margin:0.8em 0;
+}
+
+textarea.pageedit_phpexec {
+ width:100%;
+ margin-bottom:0.8em;
+}
div#content {
text-align:justify;
diff --git a/templates/default b/templates/default
index 8768a7e..4392474 100644
--- a/templates/default
+++ b/templates/default
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>$title</title>