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 | 143 ++++++----- includes/sys_counter.php | 13 +- includes/sys_log.php | 28 ++- includes/sys_menu.php | 146 +++++++----- includes/sys_page.php | 22 +- includes/sys_template.php | 89 ++++--- public/css/base.css | 261 +++++++++++++-------- public/css/grossbild.js | 62 ----- public/css/style1.css | 84 +------ public/css/style10.css | 11 - public/css/style11.css | 53 ----- public/css/style2.css | 122 +++------- 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, 566 insertions(+), 1255 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']); - } + $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); + $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; + $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; + 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; + global $CurrentExternAuthPass; - header("Content-Type: application/json"); + header("Content-Type: application/json"); - $User = $_REQUEST['user']; - $Pass = $_REQUEST['pw']; - $SourceOuth = $_REQUEST['so']; + $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 (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']; + 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(); - } - } - } + $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(); + 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 = ''; - return $menu; + if ($menu != "") + $menu = ''; + 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="; + if (strpos($_SERVER["REQUEST_URI"], "?") > 0) + $URL = $_SERVER["REQUEST_URI"] . "&SetLanguage="; + else + $URL = $_SERVER["REQUEST_URI"] . "?SetLanguage="; - $html = '

DE'; - $html .= 'EN

'; - return ''; + $html = '

DE'; + $html .= 'EN

'; + return ''; } ?> 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 .= ''; - else - $html .= ''; + if (isset($row[$key])) + $html .= ''; + 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 '' . $translation . '' . (empty($extra_text)? '' : ' ' . $extra_text) . ''; + $translation = empty($text) ? '' : Get_Text($text); + return '' . $translation . '' . (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; } -article, details { - clear: none; - display: block; - float: none; +header .toolbar { + position: absolute; + right: 17px; + top: 17px; +} + +.toolbar a { + padding: 0 10px 0 0; +} + +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; -} - -#body { - margin: 0 20px 20px 20px; + background: url('../pic/engelsystem_logo_30c3.png') top left no-repeat; + display: block; + float: left; + height: 42px; + margin: 0; + width: 202px; } #menu { - float: left; - width: 200px; + float: left; + padding: 10px; + width: 180px; +} + +#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; -} -thead th { - vertical-align: bottom; + background: #f0f0f0; } -td, th { - border: 1px solid #888; +thead th { + vertical-align: bottom; +} + +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; + text-align: center; } -.background { - background: #f0f0f0; -} - -.container { - border: 1px solid #888; -} - -.content { - background: #fff; -} - -.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 -} - - - -a.title { - color:#ffa000; -} -.border { - background-color: #050509 - } - -.menu { - background-color: #bdd9ef; - color: #000022; - font-size: small +th,.hidden { + background-color: #333; } -h4.menu { - font-weight: bold; - font-size: small; - color: #3e9fef +tr:hover>td { + background-color: #333; } -.linkbox { - background-color: #ffffff +.selection ul li:nth-child(2n) { + background-color: #333; } -.linkboxtitle { - font-weight: bold; - background-color: #000000; - color: #bdd9ef +#shifts { + background-color: #222; } -.question { - font-weight: bold; - font-size: 9pt +#shifts td.free { + background-color: #322; } -.engeltreffen { - font-weight: bold; - font-size: 9pt; - color: #ff0000; +#shifts td.occupied { + background-color: #232; } -.answer { - font-size: 9pt; +#shifts td.own { + background-color: #223; } -.comment { - font-size : 6pt; +#shifts td.collides { + background-color: #333; } - + +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 @@
    + %header_toolbar% +
    ' . $row[$key] . ' ' . $row[$key] . '