From 3c4321ff76accb98ec3c99316766234ebcafae90 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Philip=20H=C3=A4usler?=
Date: Sun, 13 Oct 2013 00:52:44 +0200
Subject: [PATCH] 30c3 theme
---
db/install.sql | 2 +-
includes/controller/shifts_controller.php | 13 +-
includes/helper/error_helper.php | 1 +
includes/helper/message_helper.php | 8 +-
includes/model/LogEntries_model.php | 7 +-
includes/model/Sprache_model.php | 14 +-
includes/model/User_model.php | 15 +-
includes/mysql_provider.php | 38 +--
includes/sys_auth.php | 161 +++++++------
includes/sys_counter.php | 11 +-
includes/sys_log.php | 28 ++-
includes/sys_menu.php | 154 +++++++------
includes/sys_page.php | 22 +-
includes/sys_template.php | 89 ++++---
public/css/base.css | 255 +++++++++++++--------
public/css/grossbild.js | 62 -----
public/css/style1.css | 84 +------
public/css/style10.css | 11 -
public/css/style11.css | 53 -----
public/css/style2.css | 120 +++-------
public/css/style3.css | 105 ---------
public/css/style4.css | 70 ------
public/css/style5.css | 79 -------
public/css/style6.css | 76 ------
public/css/style7.css | 70 ------
public/css/style8.css | 70 ------
public/css/style9.css | 84 -------
public/index.php | 131 ++++-------
public/pic/engelsystem_logo_30c3.png | Bin 0 -> 6686 bytes
public/pic/icons/add.png | Bin 0 -> 733 bytes
public/pic/icons/application_form_edit.png | Bin 0 -> 714 bytes
public/pic/icons/door_in.png | Bin 0 -> 693 bytes
public/pic/icons/engel.png | Bin 0 -> 1678 bytes
templates/layout.html | 4 +-
34 files changed, 574 insertions(+), 1263 deletions(-)
delete mode 100644 public/css/grossbild.js
delete mode 100644 public/css/style10.css
delete mode 100644 public/css/style11.css
delete mode 100644 public/css/style3.css
delete mode 100644 public/css/style4.css
delete mode 100644 public/css/style5.css
delete mode 100644 public/css/style6.css
delete mode 100644 public/css/style7.css
delete mode 100644 public/css/style8.css
delete mode 100644 public/css/style9.css
create mode 100644 public/pic/engelsystem_logo_30c3.png
create mode 100755 public/pic/icons/add.png
create mode 100755 public/pic/icons/application_form_edit.png
create mode 100755 public/pic/icons/door_in.png
create mode 100644 public/pic/icons/engel.png
diff --git a/db/install.sql b/db/install.sql
index 0be9b891..a03d6e50 100644
--- a/db/install.sql
+++ b/db/install.sql
@@ -1230,7 +1230,7 @@ CREATE TABLE IF NOT EXISTS `User` (
--
INSERT INTO `User` (`UID`, `Nick`, `Name`, `Vorname`, `Alter`, `Telefon`, `DECT`, `Handy`, `email`, `ICQ`, `jabber`, `Size`, `Passwort`, `Gekommen`, `Aktiv`, `Tshirt`, `color`, `Sprache`, `Avatar`, `Menu`, `lastLogIn`, `CreateDate`, `Art`, `kommentar`, `Hometown`, `api_key`) VALUES
-(1, 'admin', 'Gates', 'Bill', 42, '', '', '', '', '', '', '', '$23PstrXfk7Nw', 1, 1, 0, 10, 'DE', 115, 'L', 1371899094, '0000-00-00 00:00:00', '', '', '', '');
+(1, 'admin', 'Gates', 'Bill', 42, '', '', '', '', '', '', '', '$23PstrXfk7Nw', 1, 1, 0, 1, 'DE', 115, 'L', 1371899094, '0000-00-00 00:00:00', '', '', '', '');
-- --------------------------------------------------------
diff --git a/includes/controller/shifts_controller.php b/includes/controller/shifts_controller.php
index 1cd7b5d6..0ffc3c75 100644
--- a/includes/controller/shifts_controller.php
+++ b/includes/controller/shifts_controller.php
@@ -1,25 +1,26 @@
' . $msg . '
';
} else {
- if (!isset ($_SESSION['msg']))
+ if (! isset($_SESSION['msg']))
$_SESSION['msg'] = "";
$_SESSION['msg'] .= info($msg, true);
}
@@ -35,7 +35,7 @@ function error($msg, $immediatly = false) {
return "";
return '' . $msg . '
';
} else {
- if (!isset ($_SESSION['msg']))
+ if (! isset($_SESSION['msg']))
$_SESSION['msg'] = "";
$_SESSION['msg'] .= error($msg, true);
}
@@ -50,7 +50,7 @@ function success($msg, $immediatly = false) {
return "";
return '' . $msg . '
';
} else {
- if (!isset ($_SESSION['msg']))
+ if (! isset($_SESSION['msg']))
$_SESSION['msg'] = "";
$_SESSION['msg'] .= success($msg, true);
}
diff --git a/includes/model/LogEntries_model.php b/includes/model/LogEntries_model.php
index 1fa97356..30e2b58c 100644
--- a/includes/model/LogEntries_model.php
+++ b/includes/model/LogEntries_model.php
@@ -2,8 +2,10 @@
/**
* Creates a log entry.
+ *
* @param $nick Username
- * @param $message Log Message
+ * @param $message Log
+ * Message
*/
function LogEntry_create($nick, $message) {
return sql_query("INSERT INTO `LogEntries` SET `timestamp`=" . sql_escape(time()) . ", `nick`='" . sql_escape($nick) . "', `message`='" . sql_escape($message) . "'");
@@ -13,8 +15,7 @@ function LogEntry_create($nick, $message) {
* Returns log entries of the last 24 hours with maximum count of 1000.
*/
function LogEntries() {
- return sql_select("SELECT * FROM `LogEntries` WHERE `timestamp` > " . (time() - 24*60*60) . " ORDER BY `timestamp` DESC LIMIT 1000");
+ return sql_select("SELECT * FROM `LogEntries` WHERE `timestamp` > " . (time() - 24 * 60 * 60) . " ORDER BY `timestamp` DESC LIMIT 1000");
}
-
?>
\ No newline at end of file
diff --git a/includes/model/Sprache_model.php b/includes/model/Sprache_model.php
index 55683411..0b18dbca 100644
--- a/includes/model/Sprache_model.php
+++ b/includes/model/Sprache_model.php
@@ -2,17 +2,23 @@
/**
* Load a string by key.
+ *
* @param string $textid
* @param string $sprache
*/
function Sprache($textid, $sprache) {
- $sprache_source = sql_select("SELECT * FROM `Sprache` WHERE `TextID`='" . sql_escape($textid) . "' AND `Sprache`='" . sql_escape($sprache) . "' LIMIT 1");
- if($sprache_source === false)
+ $sprache_source = sql_select("
+ SELECT *
+ FROM `Sprache`
+ WHERE `TextID`='" . sql_escape($textid) . "'
+ AND `Sprache`='" . sql_escape($sprache) . "'
+ LIMIT 1
+ ");
+ if ($sprache_source === false)
return false;
- if(count($sprache_source) == 1)
+ if (count($sprache_source) == 1)
return $sprache_source[0];
return null;
}
-
?>
\ No newline at end of file
diff --git a/includes/model/User_model.php b/includes/model/User_model.php
index 7eb31e8e..884aeae8 100644
--- a/includes/model/User_model.php
+++ b/includes/model/User_model.php
@@ -1,25 +1,29 @@
0)
+ if (count($user_source) > 0)
return $user_source[0];
return null;
}
/**
* Returns User by api_key.
- * @param string $api_key User api key
+ *
+ * @param string $api_key
+ * User api key
* @return Matching user, null or false on error
*/
function User_by_api_key($api_key) {
$user = sql_select("SELECT * FROM `User` WHERE `api_key`='" . sql_escape($api_key) . "' LIMIT 1");
- if($user === false)
+ if ($user === false)
return false;
if (count($user) == 0)
return null;
@@ -28,12 +32,13 @@ function User_by_api_key($api_key) {
/**
* Generates a new api key for given user.
+ *
* @param User $user
*/
function User_reset_api_key(&$user) {
$user['api_key'] = md5($user['Nick'] . time() . rand());
$result = sql_query("UPDATE `User` SET `api_key`='" . sql_escape($user['api_key']) . "' WHERE `UID`='" . sql_escape($user['UID']) . "' LIMIT 1");
- if($result === false)
+ if ($result === false)
return false;
engelsystem_log("API key resetted.");
}
diff --git a/includes/mysql_provider.php b/includes/mysql_provider.php
index d9e78fb4..9f901a40 100644
--- a/includes/mysql_provider.php
+++ b/includes/mysql_provider.php
@@ -15,7 +15,7 @@ function sql_close() {
function sql_transaction_start() {
global $sql_nested_transaction_level;
- if($sql_nested_transaction_level++ == 0)
+ if ($sql_nested_transaction_level ++ == 0)
return sql_query("BEGIN");
else
return true;
@@ -27,7 +27,7 @@ function sql_transaction_start() {
function sql_transaction_commit() {
global $sql_nested_transaction_level;
- if(--$sql_nested_transaction_level == 0)
+ if (-- $sql_nested_transaction_level == 0)
return sql_query("COMMIT");
else
return true;
@@ -39,7 +39,7 @@ function sql_transaction_commit() {
function sql_transaction_rollback() {
global $sql_nested_transaction_level;
- if(--$sql_nested_transaction_level == 0)
+ if (-- $sql_nested_transaction_level == 0)
return sql_query("ROLLBACK");
else
return true;
@@ -47,6 +47,7 @@ function sql_transaction_rollback() {
/**
* Logs an sql error.
+ *
* @param string $message
* @return false
*/
@@ -63,10 +64,15 @@ function sql_error($message) {
/**
* Connect to mysql server.
- * @param string $host Host
- * @param string $user Username
- * @param string $pass Password
- * @param string $db DB to select
+ *
+ * @param string $host
+ * Host
+ * @param string $user
+ * Username
+ * @param string $pass
+ * Password
+ * @param string $db
+ * DB to select
* @return mysqli The connection handler
*/
function sql_connect($host, $user, $pass, $db) {
@@ -89,18 +95,21 @@ function sql_connect($host, $user, $pass, $db) {
/**
* Change the selected db in current mysql-connection.
- * @param $db_name
+ *
+ * @param
+ * $db_name
* @return bool true on success, false on error
*/
function sql_select_db($db_name) {
global $sql_connection;
- if (!$sql_connection->select_db($db_name))
+ if (! $sql_connection->select_db($db_name))
return sql_error("No database selected.");
return true;
}
/**
* MySQL SELECT query
+ *
* @param string $query
* @return Result array or false on error
*/
@@ -119,8 +128,9 @@ function sql_select($query) {
/**
* MySQL execute a query
+ *
* @param string $query
- * @return mysqli_result|boolean Result resource or false on error
+ * @return mysqli_result boolean resource or false on error
*/
function sql_query($query) {
global $sql_connection;
@@ -129,7 +139,7 @@ function sql_query($query) {
if ($result) {
return $result;
} else
- usr_error("MySQL-query error: " . $query . " (" . $sql_connection->errno . ") " . $sql_connection->error);
+ return sql_error("MySQL-query error: " . $query . " (" . $sql_connection->errno . ") " . $sql_connection->error);
}
/**
@@ -165,12 +175,12 @@ function sql_num_query($query) {
}
function sql_select_single_col($query) {
- $result = sql_select($query);
- return array_map('array_shift', $result);
+ $result = sql_select($query);
+ return array_map('array_shift', $result);
}
function sql_select_single_cell($query) {
- return array_shift(array_shift(sql_select($query)));
+ return array_shift(array_shift(sql_select($query)));
}
?>
diff --git a/includes/sys_auth.php b/includes/sys_auth.php
index a2fd98d8..9718f0c0 100644
--- a/includes/sys_auth.php
+++ b/includes/sys_auth.php
@@ -1,110 +1,109 @@
0) {
- // User ist eingeloggt, Datensatz zur Verfügung stellen und Timestamp updaten
- list ($user) = $user;
- sql_query("UPDATE `User` SET " . "`lastLogIn` = '" . time() . "'" . " WHERE `UID` = '" . sql_escape($_SESSION['uid']) . "' LIMIT 1;");
- } else
- unset ($_SESSION['uid']);
- }
-
- $privileges = isset ($user) ? privileges_for_user($user['UID']) : privileges_for_group(-1);
+ global $user, $privileges;
+
+ $user = null;
+ if (isset($_SESSION['uid'])) {
+ $user = sql_select("SELECT * FROM `User` WHERE `UID`=" . sql_escape($_SESSION['uid']) . " LIMIT 1");
+ if (count($user) > 0) {
+ // User ist eingeloggt, Datensatz zur Verfügung stellen und Timestamp updaten
+ list ($user) = $user;
+ sql_query("UPDATE `User` SET " . "`lastLogIn` = '" . time() . "'" . " WHERE `UID` = '" . sql_escape($_SESSION['uid']) . "' LIMIT 1;");
+ } else
+ unset($_SESSION['uid']);
+ }
+
+ $privileges = isset($user) ? privileges_for_user($user['UID']) : privileges_for_group(- 1);
}
// generate a salt (random string) of arbitrary length suitable for the use with crypt()
function generate_salt($length = 16) {
- $alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- $salt = "";
- for ($i = 0; $i < $length; $i++) {
- $salt .= $alphabet[rand(0, strlen($alphabet)-1)];
- }
- return $salt;
+ $alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ $salt = "";
+ for($i = 0; $i < $length; $i ++) {
+ $salt .= $alphabet[rand(0, strlen($alphabet) - 1)];
+ }
+ return $salt;
}
// set the password of a user
function set_password($uid, $password) {
- return sql_query("UPDATE `User` SET `Passwort` = '" . sql_escape(crypt($password, CRYPT_ALG . '$' . generate_salt(16) . '$')) . "' WHERE `UID` = " . intval($uid) . " LIMIT 1");
+ return sql_query("UPDATE `User` SET `Passwort` = '" . sql_escape(crypt($password, CRYPT_ALG . '$' . generate_salt(16) . '$')) . "' WHERE `UID` = " . intval($uid) . " LIMIT 1");
}
// verify a password given a precomputed salt.
// if $uid is given and $salt is an old-style salt (plain md5), we convert it automatically
function verify_password($password, $salt, $uid = false) {
- $correct = false;
- if (substr($salt, 0, 1) == '$') // new-style crypt()
- $correct = crypt($password, $salt) == $salt;
- elseif (substr($salt, 0, 7) == '{crypt}') // old-style crypt() with DES and static salt - not used anymore
- $correct = crypt($password, '77') == $salt;
- elseif (strlen($salt) == 32) // old-style md5 without salt - not used anymore
- $correct = md5($password) == $salt;
-
- if($correct && substr($salt, 0, strlen(CRYPT_ALG)) != CRYPT_ALG && $uid) {
- // this password is stored in another format than we want it to be.
- // let's update it!
- // we duplicate the query from the above set_password() function to have the extra safety of checking the old hash
- sql_query("UPDATE `User` SET `Passwort` = '" . sql_escape(crypt($password, CRYPT_ALG . '$' . generate_salt() . '$')) . "' WHERE `UID` = " . intval($uid) . " AND `Passwort` = '" . sql_escape($salt) . "' LIMIT 1");
- }
- return $correct;
+ $correct = false;
+ if (substr($salt, 0, 1) == '$') // new-style crypt()
+ $correct = crypt($password, $salt) == $salt;
+ elseif (substr($salt, 0, 7) == '{crypt}') // old-style crypt() with DES and static salt - not used anymore
+ $correct = crypt($password, '77') == $salt;
+ elseif (strlen($salt) == 32) // old-style md5 without salt - not used anymore
+ $correct = md5($password) == $salt;
+
+ if ($correct && substr($salt, 0, strlen(CRYPT_ALG)) != CRYPT_ALG && $uid) {
+ // this password is stored in another format than we want it to be.
+ // let's update it!
+ // we duplicate the query from the above set_password() function to have the extra safety of checking the old hash
+ sql_query("UPDATE `User` SET `Passwort` = '" . sql_escape(crypt($password, CRYPT_ALG . '$' . generate_salt() . '$')) . "' WHERE `UID` = " . intval($uid) . " AND `Passwort` = '" . sql_escape($salt) . "' LIMIT 1");
+ }
+ return $correct;
}
// JSON Authorisierungs-Schnittstelle
function json_auth_service() {
- global $CurrentExternAuthPass;
-
- header("Content-Type: application/json");
-
- $User = $_REQUEST['user'];
- $Pass = $_REQUEST['pw'];
- $SourceOuth = $_REQUEST['so'];
-
- if (isset ($CurrentExternAuthPass) && $SourceOuth == $CurrentExternAuthPass) {
- $sql = "SELECT `UID`, `Passwort` FROM `User` WHERE `Nick`='" . sql_escape($User) . "'";
- $Erg = sql_select($sql);
-
- if (count($Erg) == 1) {
- $Erg = $Erg[0];
- if (verify_password($Pass, $Erg["Passwort"], $Erg["UID"])) {
- $user_privs = sql_select("SELECT `Privileges`.`name` FROM `User` JOIN `UserGroups` ON (`User`.`UID` = `UserGroups`.`uid`) JOIN `GroupPrivileges` ON (`UserGroups`.`group_id` = `GroupPrivileges`.`group_id`) JOIN `Privileges` ON (`GroupPrivileges`.`privilege_id` = `Privileges`.`id`) WHERE `User`.`UID`=" . sql_escape($UID) . ";");
- foreach ($user_privs as $user_priv)
- $privileges[] = $user_priv['name'];
-
- $msg = array (
- 'status' => 'success',
- 'rights' => $privileges
- );
- echo json_encode($msg);
- die();
- }
- }
- }
-
- echo json_encode(array (
- 'status' => 'failed',
- 'error' => "JSON Service GET syntax: https://engelsystem.de/?auth&user=&pw=&so=, POST is possible too"
- ));
- die();
+ global $CurrentExternAuthPass;
+
+ header("Content-Type: application/json");
+
+ $User = $_REQUEST['user'];
+ $Pass = $_REQUEST['pw'];
+ $SourceOuth = $_REQUEST['so'];
+
+ if (isset($CurrentExternAuthPass) && $SourceOuth == $CurrentExternAuthPass) {
+ $sql = "SELECT `UID`, `Passwort` FROM `User` WHERE `Nick`='" . sql_escape($User) . "'";
+ $Erg = sql_select($sql);
+
+ if (count($Erg) == 1) {
+ $Erg = $Erg[0];
+ if (verify_password($Pass, $Erg["Passwort"], $Erg["UID"])) {
+ $user_privs = sql_select("SELECT `Privileges`.`name` FROM `User` JOIN `UserGroups` ON (`User`.`UID` = `UserGroups`.`uid`) JOIN `GroupPrivileges` ON (`UserGroups`.`group_id` = `GroupPrivileges`.`group_id`) JOIN `Privileges` ON (`GroupPrivileges`.`privilege_id` = `Privileges`.`id`) WHERE `User`.`UID`=" . sql_escape($UID) . ";");
+ foreach ($user_privs as $user_priv)
+ $privileges[] = $user_priv['name'];
+
+ $msg = array (
+ 'status' => 'success',
+ 'rights' => $privileges
+ );
+ echo json_encode($msg);
+ die();
+ }
+ }
+ }
+
+ echo json_encode(array (
+ 'status' => 'failed',
+ 'error' => "JSON Service GET syntax: https://engelsystem.de/?auth&user=&pw=&so=, POST is possible too"
+ ));
+ die();
}
function privileges_for_user($user_id) {
- $privileges = array ();
- $user_privs = sql_select("SELECT `Privileges`.`name` FROM `User` JOIN `UserGroups` ON (`User`.`UID` = `UserGroups`.`uid`) JOIN `GroupPrivileges` ON (`UserGroups`.`group_id` = `GroupPrivileges`.`group_id`) JOIN `Privileges` ON (`GroupPrivileges`.`privilege_id` = `Privileges`.`id`) WHERE `User`.`UID`=" . sql_escape($user_id) . ";");
- foreach ($user_privs as $user_priv)
- $privileges[] = $user_priv['name'];
- return $privileges;
+ $privileges = array ();
+ $user_privs = sql_select("SELECT `Privileges`.`name` FROM `User` JOIN `UserGroups` ON (`User`.`UID` = `UserGroups`.`uid`) JOIN `GroupPrivileges` ON (`UserGroups`.`group_id` = `GroupPrivileges`.`group_id`) JOIN `Privileges` ON (`GroupPrivileges`.`privilege_id` = `Privileges`.`id`) WHERE `User`.`UID`=" . sql_escape($user_id) . ";");
+ foreach ($user_privs as $user_priv)
+ $privileges[] = $user_priv['name'];
+ return $privileges;
}
function privileges_for_group($group_id) {
- $privileges = array ();
- $groups_privs = sql_select("SELECT * FROM `GroupPrivileges` JOIN `Privileges` ON (`GroupPrivileges`.`privilege_id` = `Privileges`.`id`) WHERE `group_id`=" . sql_escape($group_id));
- foreach ($groups_privs as $guest_priv)
- $privileges[] = $guest_priv['name'];
- return $privileges;
+ $privileges = array ();
+ $groups_privs = sql_select("SELECT * FROM `GroupPrivileges` JOIN `Privileges` ON (`GroupPrivileges`.`privilege_id` = `Privileges`.`id`) WHERE `group_id`=" . sql_escape($group_id));
+ foreach ($groups_privs as $guest_priv)
+ $privileges[] = $guest_priv['name'];
+ return $privileges;
}
?>
diff --git a/includes/sys_counter.php b/includes/sys_counter.php
index abcb652b..40110165 100644
--- a/includes/sys_counter.php
+++ b/includes/sys_counter.php
@@ -1,10 +1,11 @@
diff --git a/includes/sys_log.php b/includes/sys_log.php
index 65c0aa41..60c765c0 100644
--- a/includes/sys_log.php
+++ b/includes/sys_log.php
@@ -1,13 +1,16 @@
\ No newline at end of file
diff --git a/includes/sys_menu.php b/includes/sys_menu.php
index 5c69be39..f2611397 100644
--- a/includes/sys_menu.php
+++ b/includes/sys_menu.php
@@ -1,89 +1,109 @@
' . Get_Text($page) . ' ';
+
+ return ' ';
}
function make_navigation_for($name, $pages) {
- global $privileges, $p;
+ global $privileges, $p;
- $specials = array (
- "faq"
- );
+ $specials = array(
+ "faq"
+ );
- $menu = "";
- foreach ($pages as $page)
- if (in_array($page, $privileges) || in_array($page, $specials))
- $menu .= '' . Get_Text($page) . ' ';
+ $menu = "";
+ foreach ($pages as $page)
+ if (in_array($page, $privileges) || in_array($page, $specials))
+ $menu .= '' . Get_Text($page) . ' ';
- if ($menu != "")
- $menu = '' . $name . ' ';
- return $menu;
+ if ($menu != "")
+ $menu = '' . $name . ' ';
+ return $menu;
}
function make_menu() {
- return make_navigation() . make_langselect();
+ return make_navigation() . make_langselect();
}
function make_langselect() {
- if (strpos($_SERVER["REQUEST_URI"], "?") > 0)
- $URL = $_SERVER["REQUEST_URI"] . "&SetLanguage=";
- else
- $URL = $_SERVER["REQUEST_URI"] . "?SetLanguage=";
-
- $html = ' ';
- $html .= '
';
- return '' . Get_Text("Sprache") . ' ' . $html . ' ';
+ if (strpos($_SERVER["REQUEST_URI"], "?") > 0)
+ $URL = $_SERVER["REQUEST_URI"] . "&SetLanguage=";
+ else
+ $URL = $_SERVER["REQUEST_URI"] . "?SetLanguage=";
+
+ $html = ' ';
+ $html .= '
';
+ return '' . Get_Text("Sprache") . ' ' . $html . ' ';
}
?>
diff --git a/includes/sys_page.php b/includes/sys_page.php
index a49e76cb..f9ee0ea6 100644
--- a/includes/sys_page.php
+++ b/includes/sys_page.php
@@ -1,49 +1,49 @@
diff --git a/includes/sys_template.php b/includes/sys_template.php
index e15af7f8..a7662e84 100644
--- a/includes/sys_template.php
+++ b/includes/sys_template.php
@@ -1,29 +1,46 @@
"Standard-Style",
- "2" => "ot/Gelber Style",
- "3" => "Club-Mate Style",
- "5" => "Debian Style",
- "6" => "c-base Style",
- "7" => "Blau/Gelber Style",
- "8" => "Pastel Style",
- "4" => "Test Style",
- "9" => "Test Style 21c3",
- "10" => "Engelsystem 2.0",
- "11" => "msquare (29c3)"
+$themes = array(
+ "1" => "30C3 light",
+ "2" => "30C3 dark"
);
+/**
+ * Render a toolbar.
+ *
+ * @param array $items
+ * @return string
+ */
+function toolbar($items = array()) {
+ return '' . join("\n", $items) . '
';
+}
+
+/**
+ * Render a link for a toolbar.
+ * @param string $href
+ * @param string $class
+ * @param string $label
+ * @param bool $selected
+ * @return string
+ */
+function toolbar_item_link($href, $class, $label, $selected = false) {
+ return '' . $label . ' ';
+}
+
/**
* Rendert eine Liste von Checkboxen für ein Formular
- * @param name Die Namen der Checkboxen werden aus name_key gebildet
- * @param label Die Beschriftung der Liste
- * @param items Array mit den einzelnen Checkboxen
- * @param selected Array mit den Keys, die ausgewählt sind
+ *
+ * @param
+ * name Die Namen der Checkboxen werden aus name_key gebildet
+ * @param
+ * label Die Beschriftung der Liste
+ * @param
+ * items Array mit den einzelnen Checkboxen
+ * @param
+ * selected Array mit den Keys, die ausgewählt sind
*/
function form_checkboxes($name, $label, $items, $selected) {
$html = "";
@@ -38,11 +55,17 @@ function form_checkboxes($name, $label, $items, $selected) {
/**
* Rendert eine Tabelle von Checkboxen für ein Formular
- * @param names Assoziatives Array mit Namen der Checkboxen als Keys und Überschriften als Values
- * @param label Die Beschriftung der gesamten Tabelle
- * @param items Array mit den Beschriftungen der Zeilen
- * @param selected Mehrdimensionales Array, wobei $selected[foo] ein Array der in der Datenreihe foo markierten Checkboxen ist
- * @param disabled Wie selected, nur dass die entsprechenden Checkboxen deaktiviert statt markiert sind
+ *
+ * @param
+ * names Assoziatives Array mit Namen der Checkboxen als Keys und Überschriften als Values
+ * @param
+ * label Die Beschriftung der gesamten Tabelle
+ * @param
+ * items Array mit den Beschriftungen der Zeilen
+ * @param
+ * selected Mehrdimensionales Array, wobei $selected[foo] ein Array der in der Datenreihe foo markierten Checkboxen ist
+ * @param
+ * disabled Wie selected, nur dass die entsprechenden Checkboxen deaktiviert statt markiert sind
*/
function form_multi_checkboxes($names, $label, $items, $selected, $disabled = array()) {
$html = "";
@@ -54,7 +77,7 @@ function form_multi_checkboxes($names, $label, $items, $selected, $disabled = ar
foreach ($names as $name => $title) {
$id = $name . '_' . $key;
$sel = array_search($key, $selected[$name]) !== false ? ' checked="checked"' : "";
- if (!empty($disabled) && !empty($disabled[$name]) && array_search($key, $disabled[$name]) !== false)
+ if (! empty($disabled) && ! empty($disabled[$name]) && array_search($key, $disabled[$name]) !== false)
$sel .= ' disabled="disabled"';
$html .= ' ';
}
@@ -131,7 +154,8 @@ function form($elements, $action = "") {
}
/**
- * Generiert HTML Code für eine "Seite". Fügt dazu die übergebenen Elemente zusammen.
+ * Generiert HTML Code für eine "Seite".
+ * Fügt dazu die übergebenen Elemente zusammen.
*/
function page($elements) {
return join($elements);
@@ -153,10 +177,10 @@ function table($columns, $rows, $data = true) {
foreach ($rows as $row) {
$html .= ' ';
foreach ($columns as $key => $column)
- if (isset ($row[$key]))
- $html .= '' . $row[$key] . ' ';
- else
- $html .= ' ';
+ if (isset($row[$key]))
+ $html .= '' . $row[$key] . ' ';
+ else
+ $html .= ' ';
$html .= ' ';
}
$html .= '';
@@ -184,8 +208,8 @@ function template_render($file, $data) {
$template = file_get_contents($file);
if (is_array($data))
foreach ($data as $name => $content) {
- $template = str_replace("%" . $name . "%", $content, $template);
- }
+ $template = str_replace("%" . $name . "%", $content, $template);
+ }
return $template;
} else {
die('Cannot find template file «' . $file . '».');
@@ -235,11 +259,10 @@ function html_select_key($id, $name, $rows, $selected) {
}
function img_button($link, $icon, $text, $extra_text = '') {
- $translation = empty($text)? '' : Get_Text($text);
- return ' ' . (empty($extra_text)? '' : ' ' . $extra_text) . ' ';
+ $translation = empty($text) ? '' : Get_Text($text);
+ return ' ' . (empty($extra_text) ? '' : ' ' . $extra_text) . ' ';
}
-
function ReplaceSmilies($neueckig) {
$neueckig = str_replace(";o))", " ", $neueckig);
$neueckig = str_replace(":-))", " ", $neueckig);
diff --git a/public/css/base.css b/public/css/base.css
index 8576f074..a08042fd 100644
--- a/public/css/base.css
+++ b/public/css/base.css
@@ -1,116 +1,160 @@
* {
- margin: 0;
- padding: 0;
+ margin: 0;
+ padding: 0;
}
body {
- font-family: Arial, sans-serif;
- font-size: 14px;
+ background: #fff;
+ font-family: Arial, sans-serif;
+ font-size: 14px;
}
header {
- display: block;
- width: 100%;
+ background: #f0f0f0;
+ border-bottom: 1px solid #000;
+ display: block;
+ padding: 5px;
+}
+
+header .toolbar {
+ position: absolute;
+ right: 17px;
+ top: 17px;
+}
+
+.toolbar a {
+ padding: 0 10px 0 0;
}
-article, details {
- clear: none;
- display: block;
- float: none;
+article,details {
+ clear: none;
+ display: block;
+ float: none;
}
.small {
- font-size: 12px;
+ font-size: 12px;
}
#logo {
- background: url('../pic/himmel.png') top left no-repeat;
- display: block;
- height: 32px;
- margin: 10px auto;
- width: 380px;
+ background: url('../pic/engelsystem_logo_30c3.png') top left no-repeat;
+ display: block;
+ float: left;
+ height: 42px;
+ margin: 0;
+ width: 202px;
}
-#body {
- margin: 0 20px 20px 20px;
+#menu {
+ float: left;
+ padding: 10px;
+ width: 180px;
}
-#menu {
- float: left;
- width: 200px;
+#menu p {
+ padding: 4px;
+}
+
+#menu h4 {
+ font-size: 14px;
+ padding: 3px;
+ text-transform: capitalize;
+}
+
+#menu ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+#menu li a {
+ display: block;
+ padding: 3px;
+}
+
+#menu li a:hover, .toolbar a:hover {
+ color: #900;
+}
+
+#menu li.selected a, .toolbar a.selected {
+ color: #900;
+ font-weight: bold;
}
#content {
- margin-left: 200px;
+ margin-left: 200px;
+ padding: 10px;
}
a {
- color: #000;
+ color: #000;
}
-th, td, dt, dd {
- padding: 4px;
+th,td,dt,dd {
+ padding: 4px;
vertical-align: top;
}
dt {
- font-weight: bold;
+ font-weight: bold;
}
dd {
- margin-left: 20px;
+ margin-left: 20px;
}
-h1, h2, h3, h4 {
- font-size: 16px;
+h1,h2,h3,h4 {
+ font-size: 16px;
+ padding: 3px;
}
-h1, h4 {
- padding: 0 4px;
+h1 {
+ font-size: 18px;
+ margin-bottom: 10px;
}
hr {
- margin: 10px 0;
+ margin: 10px 0;
}
ul {
- padding: 5px 0 5px 20px;
+ padding: 5px 0 5px 20px;
}
nav {
- margin: 0 10px 10px 0;
+ margin: 0 0 20px 0;
}
-#content > article {
- padding: 10px;
+#content>article {
+ padding: 3px;
}
#content h2 {
- margin-top: 15px;
+ margin-top: 15px;
}
#content h2:first-child {
- margin-top: 0;
+ margin-top: 0;
}
p {
- padding: 0 0 10px 0;
-}
-
-#menu p {
- padding: 4px;
+ padding: 0 0 10px 0;
}
a.sprache img {
- margin-right: 5px;
+ margin-right: 5px;
}
table {
- border-collapse: collapse;
+ border-collapse: collapse;
margin-top: 5px;
display: block;
}
+tr:hover > td {
+ background-color: #f0f0f0;
+}
+
#shifts {
background-color: #fff;
}
@@ -175,14 +219,15 @@ fieldset p label input {
}
th {
- background: #f0f0f0;
+ background: #f0f0f0;
}
+
thead th {
- vertical-align: bottom;
+ vertical-align: bottom;
}
-td, th {
- border: 1px solid #888;
+td,th {
+ border: 1px solid #888;
}
th.Gekommen {
@@ -202,9 +247,9 @@ div.rotate {
textarea {
font-family: inherit;
font-size: inherit;
- height: 200px;
+ height: 200px;
padding: 2px;
- width: 300px;
+ width: 300px;
}
.hidden {
@@ -224,26 +269,14 @@ tr:hover .hidden {
}
.clear {
- clear: both;
+ clear: both;
}
.pagination {
- text-align: center;
-}
-
-.background {
- background: #f0f0f0;
-}
-
-.container {
- border: 1px solid #888;
-}
-
-.content {
- background: #fff;
+ text-align: center;
}
-.error, .info, .success {
+.error,.info,.success {
background: #f0f0f0;
border: 1px solid #888;
border-radius: 2px;
@@ -253,46 +286,50 @@ tr:hover .hidden {
}
.error {
- background: #f99;
- border-color: #900;
+ background: #fff;
+ border-color: #ed1a3b;
+ color: #ed1a3b;
+ font-weight: bold;
}
.success {
- background: #9f9;
- border-color: #090;
+ background: #fff;
+ border-color: rgb(0, 178, 107);
+ color: rgb(0, 178, 107);
+ font-weight: bold;
}
.new_message {
- font-weight: bold;
+ font-weight: bold;
}
-.news_comment, .news {
- border: 1px solid #888;
- margin: 10px 0;
+.news_comment,.news {
+ border: 1px solid #888;
+ margin: 10px 0;
}
-.news_comment details, .news details {
- background: #f0f0f0;
- padding: 4px;
+.news_comment details,.news details {
+ background: #f0f0f0;
+ padding: 4px;
}
-.news_comment p, .news p, h3 {
- padding: 4px;
+.news_comment p,.news p,h3 {
+ padding: 4px;
}
-.news_comment p, .news_comment details {
- margin-left: 72px;
+.news_comment p,.news_comment details {
+ margin-left: 72px;
}
.avatar {
- float: left;
- margin: 4px;
- max-width: 64px;
+ float: left;
+ margin: 4px;
+ max-width: 64px;
}
.news.meeting {
- border: 1px solid #000;
- box-shadow: 1px 1px 5px #888;
+ border: 1px solid #000;
+ box-shadow: 1px 1px 5px #888;
}
.done {
@@ -320,7 +357,7 @@ tr:hover .hidden {
margin: 0 0 10px 0;
}
-.button {
+a.button {
background: #f0f0f0;
border: 1px solid #888;
border-radius: 4px;
@@ -340,18 +377,38 @@ tr:hover .hidden {
background: #fff;
}
+.button.add {
+ background: url('../pic/icons/add.png') 2px 2px no-repeat;
+ padding-left: 20px;
+}
+
.button.edit {
background: url('../pic/icons/pencil.png') 2px 2px no-repeat;
padding-left: 20px;
}
.button.ok {
- background: url('../pic/icons/tick.png') 2px 2px no-repeat;
- padding-left: 20px;
+ background: url('../pic/icons/tick.png') 2px 2px no-repeat;
+ padding-left: 20px;
}
.button.cancel {
- background: url('../pic/icons/cross.png') 2px 2px no-repeat;
+ background: url('../pic/icons/cross.png') 2px 2px no-repeat;
+ padding-left: 20px;
+}
+
+a.engel {
+ background: url('../pic/icons/engel.png') no-repeat;
+ padding-left: 20px;
+}
+
+a.logout {
+ background: url('../pic/icons/door_in.png') no-repeat;
+ padding-left: 20px;
+}
+
+a.settings {
+ background: url('../pic/icons/application_form_edit.png') no-repeat;
padding-left: 20px;
}
@@ -378,7 +435,7 @@ tr:hover .hidden {
margin-left: 250px;
}
-.form input[type="text"], .form input[type="password"], .form textarea {
+.form input[type="text"],.form input[type="password"],.form textarea {
background: #fff;
border: 1px solid #888;
color: inherit;
@@ -412,15 +469,21 @@ tr:hover .hidden {
padding: 0;
}
-.selection.rooms,
-.selection.days,
-.selection.types,
-.selection.filled {
+.selection.rooms,.selection.days,.selection.types,.selection.filled {
display: inline-block;
vertical-align: top;
margin-right: 15px;
}
+.selection ul li.heading {
+ text-align: center;
+ font-weight: bold;
+}
+
+.selection ul li:nth-child(even) {
+ background: #f0f0f0;
+}
+
#filter {
padding: 10px;
}
@@ -435,4 +498,4 @@ td .entries img {
td.time {
text-align: right;
-}
+}
\ No newline at end of file
diff --git a/public/css/grossbild.js b/public/css/grossbild.js
deleted file mode 100644
index 618ecc1f..00000000
--- a/public/css/grossbild.js
+++ /dev/null
@@ -1,62 +0,0 @@
- function isClass(object, className) {
- return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1);
- }
-
- var grossbild_an = 0
-
- function grossbild_over(e) {
- if(grossbild_an) return
- grossbild_an = 1
- if(!e) e = window.event;
- body = document.getElementsByTagName("body")[0]
- i = document.createElement("img")
- i.src = e.target.src;
- i.style.position = "absolute"
- /*a = ""
- for(b in e) a += b + " "
- alert(a)*/
- i.style.top = e.clientY + window.scrollY
- i.style.left = e.clientX + window.scrollX
- i.id = "mouseoverphoto"
- i.onmouseover = grossbild_over
- i.onmouseout = grossbild_out
- //i.onmousemove = grossbild_move
- body.appendChild(i);
- }
-
- function grossbild_out(e) {
- if(!grossbild_an) return
- grossbild_an = 0
- if(!e) e = window.event;
- body = document.getElementsByTagName("body")[0]
- i = document.getElementById("mouseoverphoto")
- body.removeChild(i)
- }
-
- function grossbild_move(e) {
- if(!e) e = window.event;
- i = document.getElementById("mouseoverphoto")
- i.style.top = e.clientY + window.scrollY
- i.style.left = e.clientX + window.scrollX
-}
-
- function grossbild_register(objekt) {
- objekt.onmouseover = grossbild_over
- objekt.onmouseout = grossbild_out
- objekt.onmousemove = grossbild_move
- }
-
- function grossbild_registrieren() {
- if(grossbild_altonload)
- grossbild_altonload()
-
- objekte = document.getElementsByTagName("img");
- for(var i = 0; i < objekte.length; i++) {
- if(isClass(objekte[i], "photo")) {
- grossbild_register(objekte[i])
- }
- }
- }
-
- var grossbild_altonload = window.onload
- window.onload = grossbild_registrieren
diff --git a/public/css/style1.css b/public/css/style1.css
index fd8426f1..738a3e36 100644
--- a/public/css/style1.css
+++ b/public/css/style1.css
@@ -1,83 +1,3 @@
-
-body, .background {
- background-color: #131313;
- color: #424242;
- line-height: 150%;
- font-family: Trebuchet MS, Lucida Grande, Arial, sans-serif;
-}
-
-a {
- text-decoration: none;
- color: #424242
-}
-
-td {
- font-size: small
-}
-
-a:active, a:hover {
- font-weight: bold
-}
-
-li {
- font-size: small
-}
-
-.content {
- background-color: #131313;
- color: #424242;
-}
-
-.contenttopic, h1 {
- font-weight: bold;
- font-size: small;
- color: #000000;
- background-color: #333333
-}
-
-.border, .container {
- background-color: #333333;
- border: 1px solid #424242;
-}
-
-.menu {
- background-color: #131313;
- color: #424242;
- font-size: small
-}
-
-h4 {
- background-color: #333333;
- font-weight: bold;
- font-size: small;
- color: #000000
-}
-
-.linkbox {
- background-color: #ffffff
-}
-
-.linkboxtitle {
- font-weight: bold;
- background-color: #000000;
- color: #ffffff
-}
-
-.question {
- font-weight: bold;
- font-size: 9pt
-}
-
-.engeltreffen {
- font-weight: bold;
- font-size: 9pt;
- color: #ff0000;
-}
-
-.answer {
- font-size: 9pt;
-}
-
-.comment {
- font-size: 6pt;
+#logo {
+ background-image: url('../pic/engelsystem_logo_30c3.png');
}
diff --git a/public/css/style10.css b/public/css/style10.css
deleted file mode 100644
index 38de4a13..00000000
--- a/public/css/style10.css
+++ /dev/null
@@ -1,11 +0,0 @@
-#logo {
- background: url('../pic/engelsystem_logo_cccamp2011.png') top left no-repeat;
- display: block;
- height: 69px;
- margin: 10px auto;
- width: 523px;
-}
-
-tr:hover > td {
- background: #f0f0f0;
-}
\ No newline at end of file
diff --git a/public/css/style11.css b/public/css/style11.css
deleted file mode 100644
index c69d4b8d..00000000
--- a/public/css/style11.css
+++ /dev/null
@@ -1,53 +0,0 @@
-body.background {
- background: #000532;
-}
-
-footer, footer a {
- color: #fff;
-}
-
-#body {
- background: #fff;
- border: 1px solid #fff;
- border-radius: 2px;
- padding: 20px;
-}
-
-.content {
- background: transparent;
-}
-
-#logo {
- background: url('../pic/engelsystem_logo_29c3.png') top left no-repeat #fff;
- display: block;
- height: 100px;
- margin: 10px;
- width: 900px;
-}
-
-tr:hover > td {
- background-color: #f0f0f0;
-}
-
-.selection ul li.heading {
- text-align: center;
- font-weight: bold;
-}
-
-.selection ul li:nth-child(even) {
- background: #f0f0f0;
-}
-
-.error {
- background: #fff;
- border-color: #ed1a3b;
- color: #ed1a3b;
- font-weight: bold;
-}
-
-.success {
- background: #fff;
- border-color: rgb(0, 178, 107);
- color: rgb(0, 178, 107);
- font-weight: bold;
-}
diff --git a/public/css/style2.css b/public/css/style2.css
index e8510809..aac84188 100644
--- a/public/css/style2.css
+++ b/public/css/style2.css
@@ -1,117 +1,65 @@
body {
- font-size : small;
- font-family : Arial;
- background-color : #f3b115;
- color : navy;
-}
-a {
- font-family : Arial;
- font-size : small;
- text-decoration : none;
- color : #0000a0;
+ background-color: #222;
+ color: #bbb;
}
-td {
- font-size : small;
+header, details,.news_comment details, .news details {
+ background-color: #333;
}
-A:Visited {
- font-family : Arial;
- font-size : small;
- color : #0000a0;
- text-decoration : none;
+#logo {
+ background-image: url('../pic/engelsystem_logo_30c3.png');
}
-A:Active {
- text-decoration : none;
- font-family : Arial;
- font-size : small;
+a {
+ color: #fff;
}
-A:Hover {
- font-family : Arial;
- font-size : small;
- color : #0000a0;
- text-decoration : underline;
- font-weight : bold;
-}
-
-li {
- font-size: small
+#menu li.selected a,.toolbar a.selected,#menu li a:hover,.toolbar a:hover
+ {
+ color: #090;
}
-
-H4 {
- font-family : Arial,Verdana;
+.form input[type="text"],.form input[type="password"],.form textarea {
+ background-color: #333;
}
-
-B {
- font-weight : bold;
- font-family : Arial;
- font-size : small;
-}
-
-.content {
- background-color: #aa8822;
-
- color: #000000
+.error,.success,.info {
+ background-color: #333;
}
-.contenttopic {
- font-weight: bold;
- font-size: small;
- color: #ffffff;
- background-color: #ff1111
+th,.hidden {
+ background-color: #333;
}
-
-
-a.title {
- color:#ffa000;
-}
-.border {
- background-color: #050509
- }
-
-.menu {
- background-color: #bdd9ef;
- color: #000022;
- font-size: small
+tr:hover>td {
+ background-color: #333;
}
-h4.menu {
- font-weight: bold;
- font-size: small;
- color: #3e9fef
+.selection ul li:nth-child(2n) {
+ background-color: #333;
}
-.linkbox {
- background-color: #ffffff
+#shifts {
+ background-color: #222;
}
-.linkboxtitle {
- font-weight: bold;
- background-color: #000000;
- color: #bdd9ef
+#shifts td.free {
+ background-color: #322;
}
-.question {
- font-weight: bold;
- font-size: 9pt
+#shifts td.occupied {
+ background-color: #232;
}
-.engeltreffen {
- font-weight: bold;
- font-size: 9pt;
- color: #ff0000;
+#shifts td.own {
+ background-color: #223;
}
-.answer {
- font-size: 9pt;
+#shifts td.collides {
+ background-color: #333;
}
-.comment {
- font-size : 6pt;
-}
-
+a.button {
+ background-color: #000;
+}
\ No newline at end of file
diff --git a/public/css/style3.css b/public/css/style3.css
deleted file mode 100644
index ca45d73c..00000000
--- a/public/css/style3.css
+++ /dev/null
@@ -1,105 +0,0 @@
-body {
- font-size : small;
- font-family : Arial;
- background-color : #f3b115;
- color : navy;
-}
-a {
- font-family : Arial;
- font-size : small;
- text-decoration : none;
- color : #0000a0;
-}
-
-td {
- font-size : small;
-}
-
-A:Visited {
- font-family : Arial;
- font-size : small;
- color : #0000a0;
- text-decoration : none;
-}
-
-A:Active {
- text-decoration : none;
- font-family : Arial;
- font-size : small;
-}
-
-A:Hover {
- font-family : Arial;
- font-size : small;
- color : #0000a0;
- text-decoration : underline;
- font-weight : bold;
-}
-
-li {
- font-size: small
-}
-
-
-H4 {
- font-family : Arial,Verdana;
-}
-
-
-B {
- font-weight : bold;
- font-family : Arial;
- font-size : small;
-}
-
-.content {
- background-color: #ffeba2;
- color: #000000
-}
-
-.contenttopic {
- font-weight: bold;
- font-size: small;
- color: #ffa000;
- background-color: navy
-}
-
-
-
-a.title {
- color:#ffa000;
-}
-.border {
- background-color: #050509
- }
-
-.menu {
- background-color: #ffeba2;
- color: navy;
- font-size: small
-}
-
-h4.menu {
- font-weight: bold;
- font-size: small;
-}
-
-.question {
- font-weight: bold;
- font-size: 9pt
-}
-
-.engeltreffen {
- font-weight: bold;
- font-size: 9pt;
- color: #ff0000;
-}
-
-.answer {
- font-size: 9pt;
-}
-
-.comment {
- font-size : 6pt;
-}
-
diff --git a/public/css/style4.css b/public/css/style4.css
deleted file mode 100644
index b818c9c9..00000000
--- a/public/css/style4.css
+++ /dev/null
@@ -1,70 +0,0 @@
-
-body {
- font-family: Arial;
- background-color: #00009f;
- color: #e0a09f;
- font-size: small
-}
-
-a {
- text-decoration: none;
- color: #e0ffff
-}
-
-td {
- font-size: small;
- color: #e0a09f
-
-}
-
-a:active, a:hover {
- font-weight: bold
-}
-
-li {
- font-size: small
-}
-
-.content {
- background-color: #90009f;
- color: #e0a09f
-}
-
-.contenttopic {
- font-weight: bold;
- font-size: small;
- color: #e0e09f;
- background-color: #740057
-}
-
-.border {
- background-color: #0000FF
-}
-
-.menu {
- background-color: #5f0043;
- color: #e0ff9f;
- font-size: small
-}
-h4.menu {
- font-weight: bold;
- font-size: small;
- color: #e0ff9f
-}
-.question {
- font-weight: bold;
- font-size: 9pt
-}
-
-.engeltreffen {
- font-weight: bold;
- font-size: 9pt;
- color: #ff0000;
-}
-
-.answer {
- font-size: 9pt;
-}
-.comment {
- font-size : 6pt;
-}
diff --git a/public/css/style5.css b/public/css/style5.css
deleted file mode 100644
index 4a8f7bcc..00000000
--- a/public/css/style5.css
+++ /dev/null
@@ -1,79 +0,0 @@
-
-body {
- font-family: Verdana,Helvetica,Arial;
- background-color: #e1d6d6;
- color: #8a0000;
- font-size: small
-}
-
-a {
- text-decoration: none;
- color: #583a3a
-}
-
-td {
- font-size: small
-}
-
-a:active, a:hover {
- font-weight: bold
-}
-
-li {
- font-size: small
-}
-
-.content {
- background-color: #e7e2e2;
- color: #8a0000
-}
-
-.contenttopic {
- font-weight: bold;
- font-size: small;
- color: #ffeded;
- background-color: #8a0000
-}
-
-.border {
- background-color: #8a0000
-}
-
-.menu {
- background-color: #e7e2e2;
- color: #8a0000;
- font-size: small
-}
-h4.menu {
- font-weight: bold;
- font-size: small;
- color: #8a0000
-}
-
-.linkbox {
- background-color: #e7e2e2
-}
-
-.linkboxtitle {
- font-weight: bold;
- background-color: #e7e2e2;
- color: #8a0000
-}
-
-.question {
- font-weight: bold;
- font-size: 9pt
-}
-
-.engeltreffen {
- font-weight: bold;
- font-size: 9pt;
- color: #ff0000;
-}
-
-.answer {
- font-size: 9pt;
-}
-.comment {
- font-size : 6pt;
-}
diff --git a/public/css/style6.css b/public/css/style6.css
deleted file mode 100644
index 8dc008e7..00000000
--- a/public/css/style6.css
+++ /dev/null
@@ -1,76 +0,0 @@
-
-body, .background {
- font-family: Arial, Helvetica, sans-serif;
- background-color: #121327;
- color: #FFFFFF;
- font-size: small
-}
-
-#logo {
- background-image: url('../pic/himmel_w.png');
-}
-
-a {
- text-decoration: none;
- color: #ff9900
-}
-
-td {
- font-size: small
-}
-
-a:active, a:hover {
- font-weight: bold
-}
-
-li {
- font-size: small
-}
-
-.content {
- background-color: #636e77;
- color: #FFFFFF
-}
-
-.contenttopic {
- font-weight: bold;
- font-size: small;
- color: #FF9900;
- background-color: #333e47
-}
-
-.border, .container {
- background-color: #000000
-}
-
-.menu {
- background-color: #1f203f;
- color: #fff3bf;
- font-size: small
-}
-h4.menu {
- font-weight: bold;
- font-size: small;
- color: #fff3bf
-}
-.question {
- font-weight: bold;
- font-size: 9pt
-}
-
-.engeltreffen {
- font-weight: bold;
- font-size: 9pt;
- color: #FF0000;
-}
-
-.answer {
- font-size: 9pt;
-}
-.comment {
- font-size : 6pt;
-}
-
-h4, h1, th {
- background: #333E47;
-}
diff --git a/public/css/style7.css b/public/css/style7.css
deleted file mode 100644
index 297f1d0c..00000000
--- a/public/css/style7.css
+++ /dev/null
@@ -1,70 +0,0 @@
-
-body {
- font-family: Arial;
- background-color: #353d87;
- color: #FFFFFF;
- font-size: small
-}
-
-a {
- text-decoration: none;
- color: #832fb8
-}
-
-td {
- font-size: small;
- color: #353d87
-
-}
-
-a:active, a:hover {
- font-weight: bold
-}
-
-li {
- font-size: small
-}
-
-.content {
- background-color: #fff3bf;
- color: #353d87
-}
-
-.contenttopic {
- font-weight: bold;
- font-size: small;
- color: #fff3bf;
- background-color: #353daa
-}
-
-.border {
- background-color: #0000FF
-}
-
-.menu {
- background-color: #c5bfff;
- color: #973cff;
- font-size: small
-}
-h4.menu {
- font-weight: bold;
- font-size: small;
- color: #973cff
-}
-.question {
- font-weight: bold;
- font-size: 9pt
-}
-
-.engeltreffen {
- font-weight: bold;
- font-size: 9pt;
- color: #ff0000;
-}
-
-.answer {
- font-size: 9pt;
-}
-.comment {
- font-size : 6pt;
-}
diff --git a/public/css/style8.css b/public/css/style8.css
deleted file mode 100644
index 91d3b325..00000000
--- a/public/css/style8.css
+++ /dev/null
@@ -1,70 +0,0 @@
-
-body {
- font-family: Arial;
- background-color: #a4ffff;
- color: #f7ff00;
- font-size: small
-}
-
-a {
- text-decoration: none;
- color: #a45f9f
-}
-
-td {
- font-size: small;
- color: #f7ff00
-
-}
-
-a:active, a:hover {
- font-weight: bold
-}
-
-li {
- font-size: small
-}
-
-.content {
- background-color: #bd9bff;
- color: #f7ff00
-}
-
-.contenttopic {
- font-weight: bold;
- font-size: small;
- color: #f7ff00;
- background-color: #ffb2ff
-}
-
-.border {
- background-color: #0000FF
-}
-
-.menu {
- background-color: #ffb2ff;
- color: #f7ff00;
- font-size: small
-}
-h4.menu {
- font-weight: bold;
- font-size: small;
- color: #f7ff00
-}
-.question {
- font-weight: bold;
- font-size: 9pt
-}
-
-.engeltreffen {
- font-weight: bold;
- font-size: 9pt;
- color: #ff0000;
-}
-
-.answer {
- font-size: 9pt;
-}
-.comment {
- font-size : 6pt;
-}
diff --git a/public/css/style9.css b/public/css/style9.css
deleted file mode 100644
index 4310ca8c..00000000
--- a/public/css/style9.css
+++ /dev/null
@@ -1,84 +0,0 @@
-
-body {
- background-color: #ffffff;
-
- color: black;
-
- line-height: 150%;
- font-family: Trebuchet MS, Lucida Grande, Arial, sans-serif;
-
- margin-bottom: 20px;
-}
-
-a {
- text-decoration: none;
- color: #304930
-}
-
-td {
- font-size: small
-}
-
-a:active, a:hover {
- font-weight: bold
-}
-
-li {
- font-size: small
-}
-
-.content {
- background-color: #ffffff;
- color: #000000
-}
-
-.contenttopic {
- font-weight: bold;
- font-size: small;
- color: #000000;
- background-color: #A4C93C
-}
-
-.border {
- background-color: #A4C93C
-}
-
-.menu {
- background-color: #ffffff;
- color: #000000;
- font-size: small
-}
-h4.menu {
- background-color: #A4C93C;
- font-weight: bold;
- font-size: small;
- color: #000000
-}
-
-.linkbox {
- background-color: #ffffff
-}
-
-.linkboxtitle {
- font-weight: bold;
- background-color: #000000;
- color: #ffffff
-}
-
-.question {
- font-weight: bold;
- font-size: 9pt
-}
-
-.engeltreffen {
- font-weight: bold;
- font-size: 9pt;
- color: #ff0000;
-}
-
-.answer {
- font-size: 9pt;
-}
-.comment {
- font-size : 6pt;
-}
diff --git a/public/index.php b/public/index.php
index c742a2c6..fb4c3c7f 100644
--- a/public/index.php
+++ b/public/index.php
@@ -35,12 +35,12 @@ sql_connect($config['host'], $config['user'], $config['pw'], $config['db']);
load_auth();
// JSON Authorisierung gewünscht?
-if (isset ($_REQUEST['auth']))
+if (isset($_REQUEST['auth']))
json_auth_service();
-// Gewünschte Seite/Funktion
-$p = isset ($user) ? "news" : "login";
-if (isset ($_REQUEST['p']) && preg_match("/^[a-z0-9_]*$/i", $_REQUEST['p']) && ($_REQUEST['p'] == 'stats' || (sql_num_query("SELECT * FROM `Privileges` WHERE `name`='" . sql_escape($_REQUEST['p']) . "' LIMIT 1") > 0)))
+ // Gewünschte Seite/Funktion
+$p = isset($user) ? "news" : "login";
+if (isset($_REQUEST['p']) && preg_match("/^[a-z0-9_]*$/i", $_REQUEST['p']) && ($_REQUEST['p'] == 'stats' || (sql_num_query("SELECT * FROM `Privileges` WHERE `name`='" . sql_escape($_REQUEST['p']) . "' LIMIT 1") > 0)))
$p = $_REQUEST['p'];
$title = Get_Text($p);
@@ -49,141 +49,109 @@ $content = "";
if ($p == "ical") {
require_once ('includes/pages/user_ical.php');
user_ical();
-}
-elseif ($p == "atom") {
+} elseif ($p == "atom") {
require_once ('includes/pages/user_atom.php');
user_atom();
-}
-elseif ($p == "shifts_json_export") {
+} elseif ($p == "shifts_json_export") {
require_once ('includes/controller/shifts_controller.php');
shifts_json_export_controller();
-}
-elseif ($p == "stats") {
+} elseif ($p == "stats") {
require_once ('includes/pages/guest_stats.php');
guest_stats();
-}
-// Recht dafür vorhanden?
+} // Recht dafür vorhanden?
elseif (in_array($p, $privileges)) {
if ($p == "news") {
require_once ('includes/pages/user_news.php');
$content = user_news();
- }
- elseif ($p == "news_comments") {
+ } elseif ($p == "news_comments") {
require_once ('includes/pages/user_news.php');
$content = user_news_comments();
- }
- elseif ($p == "user_meetings") {
+ } elseif ($p == "user_meetings") {
require_once ('includes/pages/user_news.php');
$content = user_meetings();
- }
- elseif ($p == "user_myshifts") {
+ } elseif ($p == "user_myshifts") {
require_once ('includes/pages/user_myshifts.php');
$content = user_myshifts();
- }
- elseif ($p == "user_shifts") {
+ } elseif ($p == "user_shifts") {
require_once ('includes/pages/user_shifts.php');
$content = user_shifts();
- }
- elseif ($p == "user_messages") {
+ } elseif ($p == "user_messages") {
$content = user_messages();
- }
- elseif ($p == "user_questions") {
+ } elseif ($p == "user_questions") {
require_once ('includes/pages/user_questions.php');
$content = user_questions();
- }
- elseif ($p == "user_wakeup") {
+ } elseif ($p == "user_wakeup") {
require_once ('includes/pages/user_wakeup.php');
$content = user_wakeup();
- }
- elseif ($p == "user_settings") {
+ } elseif ($p == "user_settings") {
require_once ('includes/pages/user_settings.php');
$content = user_settings();
- }
- elseif ($p == "login") {
+ } elseif ($p == "login") {
require_once ('includes/pages/guest_login.php');
$content = guest_login();
- }
- elseif ($p == "register") {
+ } elseif ($p == "register") {
require_once ('includes/pages/guest_login.php');
$content = guest_register();
- }
- elseif ($p == "logout") {
+ } elseif ($p == "logout") {
require_once ('includes/pages/guest_login.php');
$content = guest_logout();
- }
- elseif ($p == "admin_questions") {
+ } elseif ($p == "admin_questions") {
$content = admin_questions();
- }
- elseif ($p == "admin_user") {
+ } elseif ($p == "admin_user") {
require_once ('includes/pages/admin_user.php');
$content = admin_user();
- }
- elseif ($p == "admin_user_angeltypes") {
+ } elseif ($p == "admin_user_angeltypes") {
require_once ('includes/pages/admin_user_angeltypes.php');
$content = admin_user_angeltypes();
- }
- elseif ($p == "admin_arrive") {
+ } elseif ($p == "admin_arrive") {
require_once ('includes/pages/admin_arrive.php');
$content = admin_arrive();
- }
- elseif ($p == "admin_active") {
+ } elseif ($p == "admin_active") {
require_once ('includes/pages/admin_active.php');
$content = admin_active();
- }
- elseif ($p == "admin_free") {
+ } elseif ($p == "admin_free") {
require_once ('includes/pages/admin_free.php');
$content = admin_free();
- }
- elseif ($p == "admin_news") {
+ } elseif ($p == "admin_news") {
require_once ('includes/pages/admin_news.php');
$content = admin_news();
- }
- elseif ($p == "admin_angel_types") {
+ } elseif ($p == "admin_angel_types") {
require_once ('includes/pages/admin_angel_types.php');
$content = admin_angel_types();
- }
- elseif ($p == "admin_rooms") {
+ } elseif ($p == "admin_rooms") {
require_once ('includes/pages/admin_rooms.php');
$content = admin_rooms();
- }
- elseif ($p == "admin_groups") {
+ } elseif ($p == "admin_groups") {
require_once ('includes/pages/admin_groups.php');
$content = admin_groups();
- }
- elseif ($p == "admin_faq") {
+ } elseif ($p == "admin_faq") {
require_once ('includes/pages/admin_faq.php');
$content = admin_faq();
- }
- elseif ($p == "admin_language") {
+ } elseif ($p == "admin_language") {
require_once ('includes/pages/admin_language.php');
$content = admin_language();
- }
- elseif ($p == "admin_import") {
+ } elseif ($p == "admin_import") {
require_once ('includes/pages/admin_import.php');
$content = admin_import();
- }
- elseif ($p == "admin_shifts") {
+ } elseif ($p == "admin_shifts") {
require_once ('includes/pages/admin_shifts.php');
$content = admin_shifts();
- }
- elseif ($p == "admin_log") {
+ } elseif ($p == "admin_log") {
require_once ('includes/pages/admin_log.php');
$content = admin_log();
} else {
require_once ('includes/pages/guest_start.php');
$content = guest_start();
}
-}
-elseif ($p == "credits") {
+} elseif ($p == "credits") {
require_once ('includes/pages/guest_credits.php');
$content = guest_credits();
-}
-elseif ($p == "faq") {
+} elseif ($p == "faq") {
require_once ('includes/pages/guest_faq.php');
$content = guest_faq();
} else {
// Wenn schon eingeloggt, keine-Berechtigung-Seite anzeigen
- if (isset ($user)) {
+ if (isset($user)) {
$title = Get_Text("no_access_title");
$content = Get_Text("no_access_text");
} else {
@@ -193,27 +161,28 @@ elseif ($p == "faq") {
}
// Hinweis für ungelesene Nachrichten
-if (isset ($user) && $p != "user_messages")
+if (isset($user) && $p != "user_messages")
$content = user_unread_messages() . $content;
-// Hinweis für Engel, die noch nicht angekommen sind
-if(isset($user) && $user['Gekommen'] == 0)
+ // Hinweis für Engel, die noch nicht angekommen sind
+if (isset($user) && $user['Gekommen'] == 0)
$content = error("You are not marked as arrived. Please go to heaven's desk, get your angel badge and/or tell them that you arrived already.", true) . $content;
-// Erzengel Hinweis für unbeantwortete Fragen
-if (isset ($user) && $p != "admin_questions")
+ // Erzengel Hinweis für unbeantwortete Fragen
+if (isset($user) && $p != "admin_questions")
$content = admin_new_questions() . $content;
-// Erzengel Hinweis für freizuschaltende Engeltypen
-if (isset ($user) && $p != "admin_user_angeltypes")
+ // Erzengel Hinweis für freizuschaltende Engeltypen
+if (isset($user) && $p != "admin_user_angeltypes")
$content = admin_new_user_angeltypes() . $content;
echo template_render('../templates/layout.html', array (
- 'theme' => isset ($user) ? $user['color'] : $default_theme,
- 'title' => $title,
- 'atom_link' => ($p == 'news' || $p == 'user_meetings')? ' ' : '',
- 'menu' => make_menu(),
- 'content' => $content
+ 'theme' => isset($user) ? $user['color'] : $default_theme,
+ 'title' => $title,
+ 'atom_link' => ($p == 'news' || $p == 'user_meetings') ? ' ' : '',
+ 'menu' => make_menu(),
+ 'content' => $content,
+ 'header_toolbar' => header_toolbar()
));
counter();
diff --git a/public/pic/engelsystem_logo_30c3.png b/public/pic/engelsystem_logo_30c3.png
new file mode 100644
index 0000000000000000000000000000000000000000..b51296e3f719a6ddcccf424e180f1e98e13f13eb
GIT binary patch
literal 6686
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
literal 0
HcmV?d00001
diff --git a/public/pic/icons/add.png b/public/pic/icons/add.png
new file mode 100755
index 0000000000000000000000000000000000000000..6332fefea4be19eeadf211b0b202b272e8564898
GIT binary patch
literal 733
zcmV<30wVp1P)9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa
zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov
zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz
zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@
z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A
z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6<
zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv
z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ
P00000NkvXXu0mjf^IS-S
literal 0
HcmV?d00001
diff --git a/public/pic/icons/application_form_edit.png b/public/pic/icons/application_form_edit.png
new file mode 100755
index 0000000000000000000000000000000000000000..af486c940c60b746d56e757686d51801bf18ae72
GIT binary patch
literal 714
zcmV;*0yX`KP)MscT0g(~ZNI{bH#Y_Utm11j?0+FF&hK-qRX-TePYY3~f
zgtoM;)~2M+AJew!(sr+7^KN&$cgxoJcJAGZGzzQ(AD(j#=leYm&p8hTfchUO*=18r
zr!~koJq|$qh+zB()q@3G>7PU6y;(H$c~Nhe#3lU)C~l9VR_BJ=;N(S}WT3GGbJ~$L
zY!^k>SWYq!Z~hmmJ4PWHsEvN4)9Gy^Z?)wOR0E3;1OdDR51!|xxx?Z3jR~6$3lGcS
zw`wrecMQ|rMHQ4-uw*icvKH@8Qe-U(ejNgB1!Gqt;e8II!iaktI@}570bpEkH@7b5obwc$sUX75)sc{
zLoV$^I#`Q!&qeqKv2}x;Q6ZOcK?qbLvr>-a
zyc(hY)2O@Nn=hiGX9AH(WK#{q_3OcQFyqRCxB{6^XTi-jVaae3jL(UZMoZqHPUiu`
zFod;2WZ-*e#Qe)flJ*;9mgV@eat;ZSNkD%BUpZPjbEd(ZH>lOVM>tFq!k`K6p&rZ)
zt12-&(V<8oA9F-Oc!oCq@PvQW{0``D3AONE*fZt6-G6K6?>+q?gw;DtTL1t607*qoM6N<$g3ymi=>Px#
literal 0
HcmV?d00001
diff --git a/public/pic/icons/door_in.png b/public/pic/icons/door_in.png
new file mode 100755
index 0000000000000000000000000000000000000000..41676a0a5be0f026fb136315fafb6c4566522d7a
GIT binary patch
literal 693
zcmV;m0!safP)vaG^
z2pyX9GZt*w3IyWpBqouZ9TBDUCjj71ahpsggwSp?!_6p~6Ug^zToTz0k=O|cA@C)B
z=4SI+2S7F9CYUB%6Rwf$PD%xpU1zsvH^-J3qhIec&_95xadrGMyZiUG;F`#)xFk#y
zurJ!PJ?Af*(aYIc}SHy&e#bYkLxyZiN`;lMHCXuWKOBa9QbyiY}R8)+l!c;Lu
zGC@p$z~K6Ij22J0)wsbx511;JB7MDISvY@^uJR9Nq@bi~L`zglHEQK03t2do(0Qs6*PW_{1G!HjEs!rv9U46
z$HzPJ|EKO<)u6Ypk6L#x)$Sg;sx@Y2o4k8D`Z@f|JD)qaVu_iqHj_a!UF&Z3Ql+}r
bBu@VX$p^JhV-$eD00000NkvXXu0mjfw@)|D
literal 0
HcmV?d00001
diff --git a/public/pic/icons/engel.png b/public/pic/icons/engel.png
new file mode 100644
index 0000000000000000000000000000000000000000..ea6cc942cf9c2f2f13adc73a35b92616142a5ef6
GIT binary patch
literal 1678
zcmaJ?eNfY89IgloOcdOlDCf+DId#&eX`#?kV5Ke6X|a}0;9$744YWX-nx-~IZz60m
zaBNl(hoUFUIp);O2}1;wp4cS`Y$dh_tvG1!NeKj4Dw?
zYu(a_3K@*qZ|haDWUPF>K!al}#NorDFe8m-Foa>05z(ZgB%nr<^@b4eN%aK~&}&1$
zm;gCjZWNK6&h%vom~oocV47?b-7ttkj1bIXJ4%{zl*|9$6~m^zO{5ZimG6HN
zn^aaK3Mo+&ZYDJJ;F5eDp^O4Cfg&VMsBk=Os*4I8PU0pVZUn^9JYba^(dZ2h!|Dly
zTrQ9qOeA8^pfX7aNOQ3CdaZyb3E&3?1@bxJ;T#y2a>FAy+#peS1UpM^jlGF1c76~M9~8M%((>4$Tx}A&YVloj97?H26Bw{
zU!$Hf(fV<0r-e%&rlpS>XuT7(uzR#~Qt0o6A(Mzy)Sd0oacLeKy~msQru|hnq>FDB
zmKN48^olQkSFf`k5&7EMl<#MPq8deB{Q&S*&GjQT_o~52VVqi)B44*gSFz|jN>q_x
zNPb+)P3{RYbr@~K`C+}?VVy%`ongK6s?5MLgJYz9hZmQJve4Fx2a&HMFCUR}zA>NED?6?C%obDYbgV@E=z!Y)(1pz}a=4byZ)};1nY%`QELzw0&9xQO
zftXqE912dTccIpw`%Gr{-f8eGXbEl;o_Fi0gyN;y!8QGsI@gk1C}Zx1QFa9Exvx;e
zk$3gFwu(h#&Rlm5)iUU%>d$~npQlHXX;$o7?U{s%(5I>PBr4kF`H~Etb0ox263(0f
zms9?C>vec`^9_=JEXpr<_!6_GIyV2#u)1t${iW_Ku=T)D7e>n
sH9Zk7HQyZEyTSI`mA;FtC)u?A3$H~V^*(Q$@AyN=q*0Pn;U8uG1D=4HI{*Lx
literal 0
HcmV?d00001
diff --git a/templates/layout.html b/templates/layout.html
index f2bf73f1..e1ecd9b9 100644
--- a/templates/layout.html
+++ b/templates/layout.html
@@ -10,7 +10,6 @@
-
@@ -19,12 +18,15 @@