From e009a169724ad8c3d60d8af45b82d6032221e9a8 Mon Sep 17 00:00:00 2001 From: rxf Date: Mon, 17 Nov 2025 17:24:55 +0100 Subject: [PATCH] =?UTF-8?q?=C3=9Cberfl=C3=BCssige=20Files=20entfernt=20DB4?= =?UTF-8?q?js=5Fall.php=20weiter=20angepasst?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sternwarte/DB4js_all.php | 229 ++- sternwarte/Scripts/expressInstall.swf | Bin 773 -> 0 bytes sternwarte/Scripts/swfobject_modified.js | 669 -------- sternwarte/beoanswer_old/beoanswer.html | 377 ----- sternwarte/beoanswer_old/beoanswer.md | 41 - sternwarte/beoanswer_old/beoanswer.php | 176 -- .../beoanswer_old/css/basscss-custom.css | 1471 ----------------- sternwarte/beoanswer_old/css/mystyle.css | 53 - sternwarte/beoanswer_old/js/beoanswer.js | 318 ---- .../js/jquery-ui-slider-access-addon.js | 103 -- sternwarte/beoanswer_old/js/version.js | 17 - sternwarte/intern/anmeld/js/anmeld.js | 20 +- sternwarte/javascript/anmeldung.js | 471 ------ sternwarte/javascript/bootstrap.min.js | 7 - sternwarte/javascript/index.js | 40 - sternwarte/javascript/index.php | 184 --- sternwarte/javascript/initprettyphoto.js | 9 - sternwarte/javascript/jquery-1.11.0.min.js | 4 - .../javascript/jquery-ui-1.10.0.custom.min.js | 6 - sternwarte/javascript/jquery.js | 1 - sternwarte/javascript/jquery.prettyPhoto.js | 7 - .../javascript/jquery.prettyPhoto_2.4.2.js | 562 ------- .../javascript/jquery.prettyPhoto_3.1.6.js | 911 ---------- sternwarte/javascript/moment.min.js | 2 - sternwarte/javascript/sofueds.js | 33 - sternwarte/javascript/sternwarte.js | 100 -- 26 files changed, 239 insertions(+), 5572 deletions(-) delete mode 100755 sternwarte/Scripts/expressInstall.swf delete mode 100755 sternwarte/Scripts/swfobject_modified.js delete mode 100755 sternwarte/beoanswer_old/beoanswer.html delete mode 100755 sternwarte/beoanswer_old/beoanswer.md delete mode 100755 sternwarte/beoanswer_old/beoanswer.php delete mode 100755 sternwarte/beoanswer_old/css/basscss-custom.css delete mode 100755 sternwarte/beoanswer_old/css/mystyle.css delete mode 100755 sternwarte/beoanswer_old/js/beoanswer.js delete mode 100755 sternwarte/beoanswer_old/js/jquery-ui-slider-access-addon.js delete mode 100755 sternwarte/beoanswer_old/js/version.js delete mode 100644 sternwarte/javascript/anmeldung.js delete mode 100644 sternwarte/javascript/bootstrap.min.js delete mode 100644 sternwarte/javascript/index.js delete mode 100755 sternwarte/javascript/index.php delete mode 100644 sternwarte/javascript/initprettyphoto.js delete mode 100644 sternwarte/javascript/jquery-1.11.0.min.js delete mode 100644 sternwarte/javascript/jquery-ui-1.10.0.custom.min.js delete mode 120000 sternwarte/javascript/jquery.js delete mode 100644 sternwarte/javascript/jquery.prettyPhoto.js delete mode 100644 sternwarte/javascript/jquery.prettyPhoto_2.4.2.js delete mode 100644 sternwarte/javascript/jquery.prettyPhoto_3.1.6.js delete mode 100644 sternwarte/javascript/moment.min.js delete mode 100644 sternwarte/javascript/sofueds.js delete mode 100644 sternwarte/javascript/sternwarte.js diff --git a/sternwarte/DB4js_all.php b/sternwarte/DB4js_all.php index 2d6398a..b904e02 100644 --- a/sternwarte/DB4js_all.php +++ b/sternwarte/DB4js_all.php @@ -56,8 +56,10 @@ ini_set('display_errors', 0); // Keine direkten Fehlerausgaben const TBL_SOFUE = 'SoFue2'; const TBL_ANMELD = 'anmeldungen'; const TBL_FDATUM = 'fdatum1'; +const TBL_SONNEDATUM = 'sonnedatum'; const TBL_BEOS = 'beos'; const TBL_SOFIANMELD = 'sofianmeld'; +const TBL_FDATES = 'fdates'; const URL_KALENDER = 'https://sternwarte-welzheim.de/kalender/'; const URL_BEO_FORM = 'beoform/beoFormular.php?id='; @@ -190,10 +192,20 @@ class RepoAnmeld { return DB::all("SELECT * FROM " . TBL_ANMELD . " WHERE fid=? ORDER BY angemeldet DESC", [$fid]); } + public static function getByDate(string $date): array + { + // expects $date as YYYYMMDD numeric string + $dateNum = (int)preg_replace('/[^0-9]/', '', (string)$date); + return DB::all("SELECT * FROM " . TBL_ANMELD . " WHERE fdatum=? ORDER BY angemeldet DESC", [$dateNum]); + } public static function getById(int $id): ?array { return DB::one("SELECT * FROM " . TBL_ANMELD . " WHERE id=?", [$id]); } + public static function getByName(string $name): array + { + return DB::all("SELECT * FROM " . TBL_ANMELD . " WHERE name=? OR vorname=?", [$name, $name]); + } public static function countByFid(int $fid): int { $r = DB::one("SELECT SUM(anzahl) c FROM " . TBL_ANMELD . " WHERE fid=?", [$fid]); @@ -201,9 +213,45 @@ class RepoAnmeld } public static function countByDate(string $date): int { - $r = DB::one("SELECT SUM(a.anzahl) c FROM " . TBL_ANMELD . " a JOIN " . TBL_FDATUM . " f ON a.fid=f.id WHERE f.datum=?", [$date]); + $dateNum = (int)preg_replace('/[^0-9]/', '', (string)$date); + $r = DB::one("SELECT SUM(anzahl) c FROM " . TBL_ANMELD . " WHERE fdatum=?", [$dateNum]); return (int)($r['c'] ?? 0); } + public static function lastAnmeldungAfter(string $date): ?int + { + $dateNum = (int)preg_replace('/[^0-9]/', '', (string)$date); + $r = DB::one("SELECT MAX(fdatum) lastdate FROM " . TBL_ANMELD . " WHERE fdatum>=? AND anzahl!=0", [$dateNum]); + return isset($r['lastdate']) ? (int)$r['lastdate'] : null; + } + public static function getNew(string $special, string $date) + { + // Implement only the commonly used variant from legacy: 'alllater' + $dateNum = (int)preg_replace('/[^0-9]/', '', (string)$date); + if ($special === 'alllater') { + return DB::all("SELECT * FROM " . TBL_ANMELD . " WHERE fdatum > ? AND name != '-' ORDER BY fdatum", [$dateNum]); + } + if ($special === 'normal') { + return DB::all("SELECT * FROM " . TBL_ANMELD . " WHERE fdatum = ?", [$dateNum]); + } + if ($special === 'all') { + return DB::all("SELECT * FROM " . TBL_ANMELD . " WHERE name != '-'", []); + } + if ($special === 'abgesagt') { + // Legacy had '=1'; be robust and accept non-null values as abgesagt + return DB::all("SELECT * FROM " . TBL_ANMELD . " WHERE name != '-' AND (abgesagt = 1 OR abgesagt IS NOT NULL)"); + } + if ($special === 'nichtda') { + // Keep simple and approximate legacy behavior: older than yesterday and not participated + return DB::all("SELECT * FROM " . TBL_ANMELD . " WHERE fdatum < ? AND COALESCE(teilgenommen,0)=0 AND name != '-'", [(int)date('Ymd', strtotime('-1 day'))]); + } + if ($special === 'zualt') { + // Interpret date as day-offset + $days = (int)$date; + $cut = (int)date('Ymd', strtotime("-$days day")); + return DB::all("SELECT * FROM " . TBL_ANMELD . " WHERE fdatum <= ? AND name != '-'", [$cut]); + } + return []; + } public static function insert(array $d): int { $sql = "INSERT INTO " . TBL_ANMELD . " (name,vorname,strasse,plz,stadt,telefon,email,anzahl,remarks,fid,angemeldet) VALUES (?,?,?,?,?,?,?,?,?,?,CURDATE())"; @@ -242,6 +290,20 @@ class RepoAnmeld { return DB::exec("DELETE FROM " . TBL_ANMELD . " WHERE id=?", [$id]); } + public static function bulkUpdateField(array $ids, string $field, $value): int + { + // Whitelist to avoid arbitrary column updates + $allowed = ['abgesagt', 'teilgenommen', 'remarks']; + if (!in_array($field, $allowed, true)) { + return 0; + } + $ids = array_values(array_filter(array_map('intval', $ids), function ($v) { return $v > 0; })); + if (empty($ids)) return 0; + $placeholders = implode(',', array_fill(0, count($ids), '?')); + $sql = "UPDATE " . TBL_ANMELD . " SET $field=? WHERE id IN ($placeholders)"; + $params = array_merge([$value], $ids); + return DB::exec($sql, $params); + } } class RepoSoFiAnmeld @@ -313,6 +375,23 @@ class RepoTermine $sql .= " ORDER BY datum"; return DB::all($sql); } + public static function getNextDates(int $amount = 50, ?string $fromDate = null, string $typ = 'regular'): array + { + // sanitize and clamp + $limit = max(1, min((int)$amount, 365)); + // incoming date can be like YYYYMMDD or YYYY-MM-DD, keep only digits + $fromNum = $fromDate ? (int)preg_replace('/[^0-9]/', '', (string)$fromDate) : (int)date('Ymd'); + + if ($typ === 'sonnen') { + // Sonnenführungen: Tabelle 'sonnedatum' enthält Datumswerte + $sql = "SELECT datum FROM " . TBL_SONNEDATUM . " WHERE datum >= ? ORDER BY datum ASC LIMIT $limit"; + return DB::all($sql, [$fromNum]); + } + + // Reguläre Führungen aus fdatum1 mit Zusatzinfos + $sql = "SELECT wtag, datum, uhrzeit, grp FROM " . TBL_FDATUM . " WHERE datum >= ? ORDER BY datum ASC LIMIT $limit"; + return DB::all($sql, [$fromNum]); + } public static function getById(int $id): ?array { return DB::one("SELECT * FROM " . TBL_FDATUM . " WHERE id=?", [$id]); @@ -332,6 +411,14 @@ class RepoTermine $r = self::getByDate($date); return $r['uhrzeit'] ?? ''; } + public static function decCountByDate(string $date, int $anzahl): int + { + $dateNum = (int)preg_replace('/[^0-9]/', '', (string)$date); + // Ensure positive decrement + $anz = max(0, (int)$anzahl); + $sql = "UPDATE " . TBL_FDATUM . " SET count = CASE WHEN count >= ? THEN count - ? ELSE 0 END WHERE datum = ?"; + return DB::exec($sql, [$anz, $anz, $dateNum]); + } } class RepoBeos @@ -400,6 +487,15 @@ class RepoBeos } } +class RepoFdates +{ + public static function groupByDate(string $dateTime): ?string + { + $r = DB::one("SELECT grp FROM " . TBL_FDATES . " WHERE dateTime=?", [$dateTime]); + return $r['grp'] ?? null; + } +} + class RepoSoFue { public static function getById(int $id): ?array @@ -410,6 +506,18 @@ class RepoSoFue { return DB::one("SELECT * FROM " . TBL_SOFUE . " WHERE wtermin=? AND deleted=0", [$termin]); } + public static function getAfterDate(string $date) + { + // Accept YYYYMMDD or YYYY-MM-DD; compare by DATE(wtermin) + $digits = preg_replace('/[^0-9]/', '', (string)$date); + if (strlen($digits) >= 8) { + $norm = substr($digits, 0, 4) . '-' . substr($digits, 4, 2) . '-' . substr($digits, 6, 2); + } else { + $norm = date('Y-m-d'); + } + $sql = "SELECT * FROM " . TBL_SOFUE . " WHERE deleted=0 AND DATE(wtermin) > ? ORDER BY wtermin"; + return DB::all($sql, [$norm]); + } public static function getRecords(string $status = 'all', int $rows = 10, int $page = 1, ?string $termin = null): array { $offset = ($page - 1) * $rows; @@ -520,6 +628,35 @@ class Mailer return true; } + + public static function sendAdvanced(array $toList, string $subject, string $body, array $ccList = [], array $bccList = []): bool + { + require_once __DIR__ . '/phpmailer/dosendmail.php'; + + // sanitize lists + $toList = array_values(array_filter($toList, fn($v) => is_string($v) && trim($v) !== '')); + $ccList = array_values(array_filter($ccList, fn($v) => is_string($v) && trim($v) !== '')); + $bccList = array_values(array_filter($bccList, fn($v) => is_string($v) && trim($v) !== '')); + + if (empty($toList)) { + return false; + } + + $result = sendmail( + $subject, + 'info@sternwarte-welzheim.de', + $body, + $ccList, + $bccList, + $toList + ); + + if ($result['error']) { + error_log('Mailer Error (adv): ' . ($result['errortext'] ?? 'Unknown error')); + return false; + } + return true; + } } // ---- Command Registry (Beschreibung für LIST_COMMANDS) ---- @@ -528,12 +665,21 @@ class Commands public const MAP = [ 'PING' => 'Health-Check', 'GET_ANMELD' => 'Liste Anmeldungen für fid', + 'GET_ANMELDNEW' => 'Anmeldungen-Varianten (legacy: special/date)', + 'GET_SONDERNEW' => 'Sonderführungen-Varianten (legacy: special/date)', + 'GET_TEILN_ID' => 'Teilnehmer nach id', + 'GET_TEILN_NAME' => 'Teilnehmer nach Name/Vorname', + 'GET_GROUP' => 'Gruppenbezeichnung für fdates dateTime', 'GET_ONEANMELD' => 'Eine Anmeldung nach id', 'GET_COUNTS' => 'Summe Anmeldungen für fid', 'GET_COUNTS_DATE' => 'Summe Anmeldungen für Datum (YYYY-MM-DD)', 'INSERT_TLN' => 'Anmeldung anlegen', 'UPDATE_TLN' => 'Anmeldung ändern', 'DELETE_TLN' => 'Anmeldung löschen', + 'UPDATE_TLN_BULK' => 'Mehrere Anmeldungen Feld-Update (legacy updateEntries)', + 'DELETEONE' => 'Teilnehmer löschen (Alias)', + 'GET_LASTANMELDUNG' => 'Letzte Anmeldung (Datum) ab Start', + 'UPDATECOUNT' => 'Zähler in fdatum1 für Datum reduzieren', 'GET_SOFIANMELD' => 'Alle/sofue_id bezogene Sonderführungs-Anmeldungen', 'GET_ONESOFIANMELD' => 'Eine Sonderführungs-Anmeldung', 'GET_SOFIANMELD_COUNT' => 'Zähler Sonderführungs-Anmeldungen', @@ -541,6 +687,7 @@ class Commands 'UPDATE_SOFIANMELD' => 'Sonderführungs-Anmeldung ändern', 'DELETE_SOFIANMELD' => 'Sonderführungs-Anmeldung löschen', 'GET_TERMINE' => 'Termine öffentliche Führungen', + 'GET_DATES' => 'Nächste Führungstermine (limit + ab Datum)', 'GET_ONETERMIN' => 'Termin nach id', 'GET_FID' => 'Fid für Datum', 'GET_TIME' => 'Uhrzeit für Datum', @@ -575,12 +722,53 @@ try { // Öffentliche Führungen case 'GET_ANMELD': - respond(RepoAnmeld::getByFid((int)$input['id'])); + // Backcompat: if an 8+ digit numeric 'id' is passed, treat it as date (fdatum) + if (isset($input['fid'])) { + respond(RepoAnmeld::getByFid((int)$input['fid'])); + } + if (isset($input['id'])) { + $digits = preg_replace('/[^0-9]/', '', (string)$input['id']); + if (strlen($digits) >= 8) { + respond(RepoAnmeld::getByDate($digits)); + } else { + respond(RepoAnmeld::getByFid((int)$input['id'])); + } + } + respondError('id or fid missing'); + case 'GET_ANMELDNEW': + $special = $input['special'] ?? 'alllater'; + $date = $input['date'] ?? date('Ymd'); + respond(RepoAnmeld::getNew($special, $date)); + case 'GET_SONDERNEW': + $special = $input['special'] ?? 'alllater'; + $date = $input['date'] ?? date('Ymd'); + if ($special !== 'alllater') respond([]); + respond(RepoSoFue::getAfterDate($date)); + case 'GET_TEILN_ID': + $r = RepoAnmeld::getById((int)$input['id']); + respond($r ? [$r] : []); + case 'GET_TEILN_NAME': + respond(RepoAnmeld::getByName($input['name'])); + case 'GET_GROUP': + $grp = RepoFdates::groupByDate($input['date']); + respond(['grp' => $grp]); case 'GET_ONEANMELD': $r = RepoAnmeld::getById((int)$input['id']); respond($r ?: ['error' => 'Not found']); case 'GET_COUNTS': - respond(['count' => RepoAnmeld::countByFid((int)$input['fid'])]); + if (isset($input['fdate'])) { + respond(RepoAnmeld::countByDate($input['fdate'])); + } + if (isset($input['date'])) { + respond(RepoAnmeld::countByDate($input['date'])); + } + if (isset($input['fid'])) { + respond(RepoAnmeld::countByFid((int)$input['fid'])); + } + if (isset($input['id'])) { + respond(RepoAnmeld::countByFid((int)$input['id'])); + } + respondError('Missing identifier for GET_COUNTS'); case 'GET_COUNTS_DATE': respond(['count' => RepoAnmeld::countByDate($input['date'])]); case 'INSERT_TLN': @@ -595,6 +783,16 @@ try { case 'DELETE_TLN': RepoAnmeld::delete((int)$input['id']); respond(['success' => true]); + case 'DELETEONE': // alias for legacy + RepoAnmeld::delete((int)$input['id']); + respond(['success' => true]); + case 'UPDATE_TLN_BULK': + if (!isset($input['ids'], $input['field'], $input['values'])) respondError('Missing fields'); + $ids = is_array($input['ids']) ? $input['ids'] : []; + $val = is_array($input['values']) ? ($input['values'][0] ?? null) : $input['values']; + if ($val === null) respondError('Missing value'); + $n = RepoAnmeld::bulkUpdateField($ids, (string)$input['field'], $val); + respond(['success' => $n > 0, 'updated' => $n]); // Sonderführungs-Anmeldungen case 'GET_SOFIANMELD': @@ -621,6 +819,11 @@ try { // Termine case 'GET_TERMINE': respond(RepoTermine::getAll(($input['includeOld'] ?? 'false') === 'true')); + case 'GET_DATES': + $amount = isset($input['anzahl']) ? (int)$input['anzahl'] : 50; + $from = $input['date'] ?? date('Ymd'); + $typ = $input['typ'] ?? 'regular'; + respond(RepoTermine::getNextDates($amount, $from, $typ)); case 'GET_ONETERMIN': $r = RepoTermine::getById((int)$input['id']); respond($r ?: ['error' => 'Not found']); @@ -628,6 +831,13 @@ try { respond(['fid' => RepoTermine::fidByDate($input['datum'])]); case 'GET_TIME': respond(['time' => RepoTermine::timeByDate($input['date'], $input['typ'] ?? '')]); + case 'GET_LASTANMELDUNG': + $val = RepoAnmeld::lastAnmeldungAfter($input['date'] ?? date('Ymd')); + respond($val); + case 'UPDATECOUNT': + if (!isset($input['date'], $input['anzahl'])) respondError('Missing fields'); + RepoTermine::decCountByDate($input['date'], (int)$input['anzahl']); + respond(['success' => true]); // BEOs case 'GET_BEOS': @@ -681,6 +891,19 @@ try { if (!isset($input['to'], $input['subject'], $input['body'])) respondError('Missing mail fields'); $ok = Mailer::sendPlain($input['to'], $input['subject'], $input['body']); respond(['success' => $ok]); + case 'SENDMYMAIL': + // Legacy-compatible mail send with BCC list + $subject = $input['subject'] ?? ($input['betreff'] ?? null); + if (!$subject) respondError('Missing subject'); + $body = $input['body'] ?? ''; + $to = $input['to'] ?? []; + if (!is_array($to)) $to = [$to]; + $bcc = $input['bcc'] ?? []; + if (!is_array($bcc)) $bcc = [$bcc]; + $cc = $input['cc'] ?? []; + if (!is_array($cc)) $cc = [$cc]; + $ok = Mailer::sendAdvanced($to, $subject, $body, $cc, $bcc); + respond(['success' => $ok]); case 'SENDMAILZUSAGE': $info = RepoSoFue::getById((int)$input['id']); if (!$info) respondError('Führung nicht gefunden', 404); diff --git a/sternwarte/Scripts/expressInstall.swf b/sternwarte/Scripts/expressInstall.swf deleted file mode 100755 index 86958bf3a726d6e946e36fb5d34aaf315c9f0b24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 773 zcmV+g1N!_!S5pQ-1pokeoP|`)Pt-sZ|8;lSEwI4K*P@gUAu&n}HSvZZ1PFwL1zA83 z#=~qoK%v_y{QdanFT+{w@Z$&6T61KWAk)|Bv_e13 zkzQ;4o&u7j&L%&Rbo@gZgY7bt`wO<^ArQVUco)Icx1Iz$4zdt3Vd!_J~za6aTSF^ zv*wWj_qQlBDW*%Qh0S3w+b%KVVDs71dTF1GvFIK}IVLX)XduinxNUQ@0WC30>N}o! zfs~oyyJbqvCJncY%}OA6838v!-x3v2KKE$REi=oZhS;l>^CCrO`0sUmoQT`uOOu;q$6 z<1wpLl5wyqJ7`kX;<6{Fxuz}PE2`~CqyDMTstKsdnp_h_xh7Y--z9J#Qch{r3^Ix| zY?;Y7Ii^WhkbL|$fhUn|CW@qLyV8B;f9`SK)?zc-Ru5WDQM`J@cCFfi%&#QSu{?Cr z+dO47+WT0El2ODo)ND#oJJ!}4Kqmp6SAi}9x(K+2g<_uQx;mdgu9>dfO#WmHmO~fB zwl@V6VL+ECF##orl&8!NIZCpil=6m7F5}+VAx1_(hoWP3OC?`ddg2}8P?yWZU&#pU zyAA|S`>(kLz(c%xfPHqz0>igFF-4=}MthU|rRVb?Scz+2sQcc%_lSyYh1whUsV`!p zKbnU;b*BUBKqL9hX!lleS`s;^YU+TtJS}a8{^W9)Z0I-Gn1C1`i8`)kF72nuKvgp> z7h-#+EfR^Hl - Copyright (c) 2007 Geoff Stearns, Michael Williams, and Bobby van der Sluis - This software is released under the MIT License -*/ - -var swfobject = function() { - - var UNDEF = "undefined", - OBJECT = "object", - SHOCKWAVE_FLASH = "Shockwave Flash", - SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash", - FLASH_MIME_TYPE = "application/x-shockwave-flash", - EXPRESS_INSTALL_ID = "SWFObjectExprInst", - - win = window, - doc = document, - nav = navigator, - - domLoadFnArr = [], - regObjArr = [], - timer = null, - storedAltContent = null, - storedAltContentId = null, - isDomLoaded = false, - isExpressInstallActive = false; - - /* Centralized function for browser feature detection - - Proprietary feature detection (conditional compiling) is used to detect Internet Explorer's features - - User agent string detection is only used when no alternative is possible - - Is executed directly for optimal performance - */ - var ua = function() { - var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF && typeof doc.appendChild != UNDEF && typeof doc.replaceChild != UNDEF && typeof doc.removeChild != UNDEF && typeof doc.cloneNode != UNDEF, - playerVersion = [0,0,0], - d = null; - if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) { - d = nav.plugins[SHOCKWAVE_FLASH].description; - if (d) { - d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); - playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10); - playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10); - playerVersion[2] = /r/.test(d) ? parseInt(d.replace(/^.*r(.*)$/, "$1"), 10) : 0; - } - } - else if (typeof win.ActiveXObject != UNDEF) { - var a = null, fp6Crash = false; - try { - a = new ActiveXObject(SHOCKWAVE_FLASH_AX + ".7"); - } - catch(e) { - try { - a = new ActiveXObject(SHOCKWAVE_FLASH_AX + ".6"); - playerVersion = [6,0,21]; - a.AllowScriptAccess = "always"; // Introduced in fp6.0.47 - } - catch(e) { - if (playerVersion[0] == 6) { - fp6Crash = true; - } - } - if (!fp6Crash) { - try { - a = new ActiveXObject(SHOCKWAVE_FLASH_AX); - } - catch(e) {} - } - } - if (!fp6Crash && a) { // a will return null when ActiveX is disabled - try { - d = a.GetVariable("$version"); // Will crash fp6.0.21/23/29 - if (d) { - d = d.split(" ")[1].split(","); - playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; - } - } - catch(e) {} - } - } - var u = nav.userAgent.toLowerCase(), - p = nav.platform.toLowerCase(), - webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // returns either the webkit version or false if not webkit - ie = false, - windows = p ? /win/.test(p) : /win/.test(u), - mac = p ? /mac/.test(p) : /mac/.test(u); - /*@cc_on - ie = true; - @if (@_win32) - windows = true; - @elif (@_mac) - mac = true; - @end - @*/ - return { w3cdom:w3cdom, pv:playerVersion, webkit:webkit, ie:ie, win:windows, mac:mac }; - }(); - - /* Cross-browser onDomLoad - - Based on Dean Edwards' solution: http://dean.edwards.name/weblog/2006/06/again/ - - Will fire an event as soon as the DOM of a page is loaded (supported by Gecko based browsers - like Firefox -, IE, Opera9+, Safari) - */ - var onDomLoad = function() { - if (!ua.w3cdom) { - return; - } - addDomLoadEvent(main); - if (ua.ie && ua.win) { - try { // Avoid a possible Operation Aborted error - doc.write(""); // String is split into pieces to avoid Norton AV to add code that can cause errors - var s = getElementById("__ie_ondomload"); - if (s) { - s.onreadystatechange = function() { - if (this.readyState == "complete") { - this.parentNode.removeChild(this); - callDomLoadFunctions(); - } - }; - } - } - catch(e) {} - } - if (ua.webkit && typeof doc.readyState != UNDEF) { - timer = setInterval(function() { if (/loaded|complete/.test(doc.readyState)) { callDomLoadFunctions(); }}, 10); - } - if (typeof doc.addEventListener != UNDEF) { - doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, null); - } - addLoadEvent(callDomLoadFunctions); - }(); - - function callDomLoadFunctions() { - if (isDomLoaded) { - return; - } - if (ua.ie && ua.win) { // Test if we can really add elements to the DOM; we don't want to fire it too early - var s = createElement("span"); - try { // Avoid a possible Operation Aborted error - var t = doc.getElementsByTagName("body")[0].appendChild(s); - t.parentNode.removeChild(t); - } - catch (e) { - return; - } - } - isDomLoaded = true; - if (timer) { - clearInterval(timer); - timer = null; - } - var dl = domLoadFnArr.length; - for (var i = 0; i < dl; i++) { - domLoadFnArr[i](); - } - } - - function addDomLoadEvent(fn) { - if (isDomLoaded) { - fn(); - } - else { - domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+ - } - } - - /* Cross-browser onload - - Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/ - - Will fire an event as soon as a web page including all of its assets are loaded - */ - function addLoadEvent(fn) { - if (typeof win.addEventListener != UNDEF) { - win.addEventListener("load", fn, false); - } - else if (typeof doc.addEventListener != UNDEF) { - doc.addEventListener("load", fn, false); - } - else if (typeof win.attachEvent != UNDEF) { - win.attachEvent("onload", fn); - } - else if (typeof win.onload == "function") { - var fnOld = win.onload; - win.onload = function() { - fnOld(); - fn(); - }; - } - else { - win.onload = fn; - } - } - - /* Main function - - Will preferably execute onDomLoad, otherwise onload (as a fallback) - */ - function main() { // Static publishing only - var rl = regObjArr.length; - for (var i = 0; i < rl; i++) { // For each registered object element - var id = regObjArr[i].id; - if (ua.pv[0] > 0) { - var obj = getElementById(id); - if (obj) { - regObjArr[i].width = obj.getAttribute("width") ? obj.getAttribute("width") : "0"; - regObjArr[i].height = obj.getAttribute("height") ? obj.getAttribute("height") : "0"; - if (hasPlayerVersion(regObjArr[i].swfVersion)) { // Flash plug-in version >= Flash content version: Houston, we have a match! - if (ua.webkit && ua.webkit < 312) { // Older webkit engines ignore the object element's nested param elements - fixParams(obj); - } - setVisibility(id, true); - } - else if (regObjArr[i].expressInstall && !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) { // Show the Adobe Express Install dialog if set by the web page author and if supported (fp6.0.65+ on Win/Mac OS only) - showExpressInstall(regObjArr[i]); - } - else { // Flash plug-in and Flash content version mismatch: display alternative content instead of Flash content - displayAltContent(obj); - } - } - } - else { // If no fp is installed, we let the object element do its job (show alternative content) - setVisibility(id, true); - } - } - } - - /* Fix nested param elements, which are ignored by older webkit engines - - This includes Safari up to and including version 1.2.2 on Mac OS 10.3 - - Fall back to the proprietary embed element - */ - function fixParams(obj) { - var nestedObj = obj.getElementsByTagName(OBJECT)[0]; - if (nestedObj) { - var e = createElement("embed"), a = nestedObj.attributes; - if (a) { - var al = a.length; - for (var i = 0; i < al; i++) { - if (a[i].nodeName.toLowerCase() == "data") { - e.setAttribute("src", a[i].nodeValue); - } - else { - e.setAttribute(a[i].nodeName, a[i].nodeValue); - } - } - } - var c = nestedObj.childNodes; - if (c) { - var cl = c.length; - for (var j = 0; j < cl; j++) { - if (c[j].nodeType == 1 && c[j].nodeName.toLowerCase() == "param") { - e.setAttribute(c[j].getAttribute("name"), c[j].getAttribute("value")); - } - } - } - obj.parentNode.replaceChild(e, obj); - } - } - - /* Fix hanging audio/video threads and force open sockets and NetConnections to disconnect - - Occurs when unloading a web page in IE using fp8+ and innerHTML/outerHTML - - Dynamic publishing only - */ - function fixObjectLeaks(id) { - if (ua.ie && ua.win && hasPlayerVersion("8.0.0")) { - win.attachEvent("onunload", function () { - var obj = getElementById(id); - if (obj) { - for (var i in obj) { - if (typeof obj[i] == "function") { - obj[i] = function() {}; - } - } - obj.parentNode.removeChild(obj); - } - }); - } - } - - /* Show the Adobe Express Install dialog - - Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75 - */ - function showExpressInstall(regObj) { - isExpressInstallActive = true; - var obj = getElementById(regObj.id); - if (obj) { - if (regObj.altContentId) { - var ac = getElementById(regObj.altContentId); - if (ac) { - storedAltContent = ac; - storedAltContentId = regObj.altContentId; - } - } - else { - storedAltContent = abstractAltContent(obj); - } - if (!(/%$/.test(regObj.width)) && parseInt(regObj.width, 10) < 310) { - regObj.width = "310"; - } - if (!(/%$/.test(regObj.height)) && parseInt(regObj.height, 10) < 137) { - regObj.height = "137"; - } - doc.title = doc.title.slice(0, 47) + " - Flash Player Installation"; - var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn", - dt = doc.title, - fv = "MMredirectURL=" + win.location + "&MMplayerType=" + pt + "&MMdoctitle=" + dt, - replaceId = regObj.id; - // For IE when a SWF is loading (AND: not available in cache) wait for the onload event to fire to remove the original object element - // In IE you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work - if (ua.ie && ua.win && obj.readyState != 4) { - var newObj = createElement("div"); - replaceId += "SWFObjectNew"; - newObj.setAttribute("id", replaceId); - obj.parentNode.insertBefore(newObj, obj); // Insert placeholder div that will be replaced by the object element that loads expressinstall.swf - obj.style.display = "none"; - win.attachEvent("onload", function() { obj.parentNode.removeChild(obj); }); - } - createSWF({ data:regObj.expressInstall, id:EXPRESS_INSTALL_ID, width:regObj.width, height:regObj.height }, { flashvars:fv }, replaceId); - } - } - - /* Functions to abstract and display alternative content - */ - function displayAltContent(obj) { - if (ua.ie && ua.win && obj.readyState != 4) { - // For IE when a SWF is loading (AND: not available in cache) wait for the onload event to fire to remove the original object element - // In IE you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work - var el = createElement("div"); - obj.parentNode.insertBefore(el, obj); // Insert placeholder div that will be replaced by the alternative content - el.parentNode.replaceChild(abstractAltContent(obj), el); - obj.style.display = "none"; - win.attachEvent("onload", function() { obj.parentNode.removeChild(obj); }); - } - else { - obj.parentNode.replaceChild(abstractAltContent(obj), obj); - } - } - - function abstractAltContent(obj) { - var ac = createElement("div"); - if (ua.win && ua.ie) { - ac.innerHTML = obj.innerHTML; - } - else { - var nestedObj = obj.getElementsByTagName(OBJECT)[0]; - if (nestedObj) { - var c = nestedObj.childNodes; - if (c) { - var cl = c.length; - for (var i = 0; i < cl; i++) { - if (!(c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "param") && !(c[i].nodeType == 8)) { - ac.appendChild(c[i].cloneNode(true)); - } - } - } - } - } - return ac; - } - - /* Cross-browser dynamic SWF creation - */ - function createSWF(attObj, parObj, id) { - var r, el = getElementById(id); - if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content - attObj.id = id; - } - if (ua.ie && ua.win) { // IE, the object element and W3C DOM methods do not combine: fall back to outerHTML - var att = ""; - for (var i in attObj) { - if (attObj[i] != Object.prototype[i]) { // Filter out prototype additions from other potential libraries, like Object.prototype.toJSONString = function() {} - if (i == "data") { - parObj.movie = attObj[i]; - } - else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword - att += ' class="' + attObj[i] + '"'; - } - else if (i != "classid") { - att += ' ' + i + '="' + attObj[i] + '"'; - } - } - } - var par = ""; - for (var j in parObj) { - if (parObj[j] != Object.prototype[j]) { // Filter out prototype additions from other potential libraries - par += ''; - } - } - el.outerHTML = '' + par + ''; - fixObjectLeaks(attObj.id); // This bug affects dynamic publishing only - r = getElementById(attObj.id); - } - else if (ua.webkit && ua.webkit < 312) { // Older webkit engines ignore the object element's nested param elements: fall back to the proprietary embed element - var e = createElement("embed"); - e.setAttribute("type", FLASH_MIME_TYPE); - for (var k in attObj) { - if (attObj[k] != Object.prototype[k]) { // Filter out prototype additions from other potential libraries - if (k == "data") { - e.setAttribute("src", attObj[k]); - } - else if (k.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword - e.setAttribute("class", attObj[k]); - } - else if (k != "classid") { // Filter out IE specific attribute - e.setAttribute(k, attObj[k]); - } - } - } - for (var l in parObj) { - if (parObj[l] != Object.prototype[l]) { // Filter out prototype additions from other potential libraries - if (l != "movie") { // Filter out IE specific param element - e.setAttribute(l, parObj[l]); - } - } - } - el.parentNode.replaceChild(e, el); - r = e; - } - else { // Well-behaving browsers - var o = createElement(OBJECT); - o.setAttribute("type", FLASH_MIME_TYPE); - for (var m in attObj) { - if (attObj[m] != Object.prototype[m]) { // Filter out prototype additions from other potential libraries - if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword - o.setAttribute("class", attObj[m]); - } - else if (m != "classid") { // Filter out IE specific attribute - o.setAttribute(m, attObj[m]); - } - } - } - for (var n in parObj) { - if (parObj[n] != Object.prototype[n] && n != "movie") { // Filter out prototype additions from other potential libraries and IE specific param element - createObjParam(o, n, parObj[n]); - } - } - el.parentNode.replaceChild(o, el); - r = o; - } - return r; - } - - function createObjParam(el, pName, pValue) { - var p = createElement("param"); - p.setAttribute("name", pName); - p.setAttribute("value", pValue); - el.appendChild(p); - } - - function getElementById(id) { - return doc.getElementById(id); - } - - function createElement(el) { - return doc.createElement(el); - } - - function hasPlayerVersion(rv) { - var pv = ua.pv, v = rv.split("."); - v[0] = parseInt(v[0], 10); - v[1] = parseInt(v[1], 10); - v[2] = parseInt(v[2], 10); - return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false; - } - - /* Cross-browser dynamic CSS creation - - Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php - */ - function createCSS(sel, decl) { - if (ua.ie && ua.mac) { - return; - } - var h = doc.getElementsByTagName("head")[0], s = createElement("style"); - s.setAttribute("type", "text/css"); - s.setAttribute("media", "screen"); - if (!(ua.ie && ua.win) && typeof doc.createTextNode != UNDEF) { - s.appendChild(doc.createTextNode(sel + " {" + decl + "}")); - } - h.appendChild(s); - if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) { - var ls = doc.styleSheets[doc.styleSheets.length - 1]; - if (typeof ls.addRule == OBJECT) { - ls.addRule(sel, decl); - } - } - } - - function setVisibility(id, isVisible) { - var v = isVisible ? "visible" : "hidden"; - if (isDomLoaded) { - getElementById(id).style.visibility = v; - } - else { - createCSS("#" + id, "visibility:" + v); - } - } - - function getTargetVersion(obj) { - if (!obj) - return 0; - var c = obj.childNodes; - var cl = c.length; - for (var i = 0; i < cl; i++) { - if (c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "object") { - c = c[i].childNodes; - cl = c.length; - i = 0; - } - if (c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "param" && c[i].getAttribute("name") == "swfversion") { - return c[i].getAttribute("value"); - } - } - return 0; - } - - function getExpressInstall(obj) { - if (!obj) - return ""; - var c = obj.childNodes; - var cl = c.length; - for (var i = 0; i < cl; i++) { - if (c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "object") { - c = c[i].childNodes; - cl = c.length; - i = 0; - } - if (c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "param" && c[i].getAttribute("name") == "expressinstall") { - return c[i].getAttribute("value"); - } - } - return ""; - } - - return { - /* Public API - - Reference: http://code.google.com/p/swfobject/wiki/SWFObject_2_0_documentation - */ - registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr) { - if (!ua.w3cdom || !objectIdStr) { - return; - } - var obj = document.getElementById(objectIdStr); - var xi = getExpressInstall(obj); - var regObj = {}; - regObj.id = objectIdStr; - regObj.swfVersion = swfVersionStr ? swfVersionStr : getTargetVersion(obj); - regObj.expressInstall = xiSwfUrlStr ? xiSwfUrlStr : ((xi != "") ? xi : false); - regObjArr[regObjArr.length] = regObj; - setVisibility(objectIdStr, false); - }, - - getObjectById: function(objectIdStr) { - var r = null; - if (ua.w3cdom && isDomLoaded) { - var o = getElementById(objectIdStr); - if (o) { - var n = o.getElementsByTagName(OBJECT)[0]; - if (!n || (n && typeof o.SetVariable != UNDEF)) { - r = o; - } - else if (typeof n.SetVariable != UNDEF) { - r = n; - } - } - } - return r; - }, - - embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj) { - if (!ua.w3cdom || !swfUrlStr || !replaceElemIdStr || !widthStr || !heightStr || !swfVersionStr) { - return; - } - widthStr += ""; // Auto-convert to string to make it idiot proof - heightStr += ""; - if (hasPlayerVersion(swfVersionStr)) { - setVisibility(replaceElemIdStr, false); - var att = (typeof attObj == OBJECT) ? attObj : {}; - att.data = swfUrlStr; - att.width = widthStr; - att.height = heightStr; - var par = (typeof parObj == OBJECT) ? parObj : {}; - if (typeof flashvarsObj == OBJECT) { - for (var i in flashvarsObj) { - if (flashvarsObj[i] != Object.prototype[i]) { // Filter out prototype additions from other potential libraries - if (typeof par.flashvars != UNDEF) { - par.flashvars += "&" + i + "=" + flashvarsObj[i]; - } - else { - par.flashvars = i + "=" + flashvarsObj[i]; - } - } - } - } - addDomLoadEvent(function() { - createSWF(att, par, replaceElemIdStr); - if (att.id == replaceElemIdStr) { - setVisibility(replaceElemIdStr, true); - } - }); - } - else if (xiSwfUrlStr && !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) { - setVisibility(replaceElemIdStr, false); - addDomLoadEvent(function() { - var regObj = {}; - regObj.id = regObj.altContentId = replaceElemIdStr; - regObj.width = widthStr; - regObj.height = heightStr; - regObj.expressInstall = xiSwfUrlStr; - showExpressInstall(regObj); - }); - } - }, - - getFlashPlayerVersion: function() { - return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] }; - }, - - hasFlashPlayerVersion:hasPlayerVersion, - - createSWF: function(attObj, parObj, replaceElemIdStr) { - if (ua.w3cdom && isDomLoaded) { - return createSWF(attObj, parObj, replaceElemIdStr); - } - else { - return undefined; - } - }, - - createCSS: function(sel, decl) { - if (ua.w3cdom) { - createCSS(sel, decl); - } - }, - - addDomLoadEvent:addDomLoadEvent, - - addLoadEvent:addLoadEvent, - - getQueryParamValue: function(param) { - var q = doc.location.search || doc.location.hash; - if (param == null) { - return q; - } - if(q) { - var pairs = q.substring(1).split("&"); - for (var i = 0; i < pairs.length; i++) { - if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) { - return pairs[i].substring((pairs[i].indexOf("=") + 1)); - } - } - } - return ""; - }, - - // For internal usage only - expressInstallCallback: function() { - if (isExpressInstallActive && storedAltContent) { - var obj = getElementById(EXPRESS_INSTALL_ID); - if (obj) { - obj.parentNode.replaceChild(storedAltContent, obj); - if (storedAltContentId) { - setVisibility(storedAltContentId, true); - if (ua.ie && ua.win) { - storedAltContent.style.display = "block"; - } - } - storedAltContent = null; - storedAltContentId = null; - isExpressInstallActive = false; - } - } - } - - }; - -}(); diff --git a/sternwarte/beoanswer_old/beoanswer.html b/sternwarte/beoanswer_old/beoanswer.html deleted file mode 100755 index 4de1a9e..0000000 --- a/sternwarte/beoanswer_old/beoanswer.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - -beoanswer - - - - - - - - - -

Anleitung

- -

Die Webseite hilft bei der Nachbearbeitung von Sonderführungen auf der Sternwarte. Es werden der Reihe nach die relevanten Fragen gestellt, die dann zu beantworten sind.

- -
    -
  • Fand die Führung statt?
    -Wird benatwortet durch Klick auf ja oder nein.
  • -
- -

Falls die Führung statt fand, gehts weiter mit:

- -
    -
  • Besucher-Anzahl
    -Hier bitte die tatsächliche Anzahl der Besucher eintragen. Bestätigen mit Return oder durch Klick auf OK. Danach folgt:

  • -
  • Eine Spende
    -Es kann gewählt werden, ob eine Barspende eingegangen ist, ob eine Spende überwiesen wird, ob eine Spende in die Spendenkasse -geworfen wurde oder ob keine Spende ausgemacht wurde (z.B. private Führungen). Falls "ist in bar eingegangen" gewäht wurde, kommt:

  • -
  • Höhe der Barspende
    -Hier bitte den Betrag in EUR eingeben und wieder mit Return oder Klich aif OK abschließen.

    - -

    Als Letztes kann noch eine Bemerkung zu der Führung eingegeben werden:

  • -
  • Bemerkungen (optional)
    -Diese kann auch leer bleiben. Allerdings muss unbeding mit Klick auf OK abgeschlossen werden, sonst gehts nicht weiter.
    -Danach werden durch Klick auf den Senden-Button die Daten an die Datenbank gesendet.

  • -
- -

Falls die Führung nicht stattgefunden hat, gehts weiter mit

- -
    -
  • Die Führung wurde
    -abgestagt oder verschoben
    -Wird abgesagt gewählt, erscheint gleich der Senden-Button. Die Führung wird dann in der Datenbank als abgesagt markiert.
    -Wird verwschoben gewählt, so erscheint

  • -
  • Verschoben auf:
    -und es kann ein neues Datum (mit Uhrzeit) über die aufpoppende Datums-Auswahl gewählt werden. Nach Abschluss mit OK erscheint nun wieder der Sende-Button. Durch Klick darauf wird die Führung mit dem neuen Datum als zugesagt in die Datenbank übernommen. Der verantwortliche BEO erhält eine Erinnerungs-Mail.

    - -

    Während der gesamten Eingabe-Prozedur kann über den Abbruch-Button jederzeit der Vorgang abgebrochen und neu begonnen werden.

  • -
- -

rxf 2019-02-04

- - - - - - - diff --git a/sternwarte/beoanswer_old/beoanswer.md b/sternwarte/beoanswer_old/beoanswer.md deleted file mode 100755 index 3413898..0000000 --- a/sternwarte/beoanswer_old/beoanswer.md +++ /dev/null @@ -1,41 +0,0 @@ -#Anleitung - -Die Webseite hilft bei der Nachbearbeitung von Sonderführungen auf der Sternwarte. Es werden der Reihe nach die relevanten Fragen gestellt, die dann zu beantworten sind. - - * **Fand die Führung statt?** - Wird benatwortet durch Klick auf **ja** oder **nein**. - -Falls die Führung statt fand, gehts weiter mit: - - * **Besucher-Anzahl** - Hier bitte die tatsächliche Anzahl der Besucher eintragen. Bestätigen mit *Return* oder durch Klick auf OK. Danach folgt: - - * **Eine Spende** - Es kann gewählt werden, ob eine Barspende eingegangen ist, ob eine Spende überwiesen wird oder ob keine Spende ausgemacht wurde (z.B. private Führungen). Falss "*ist in bar eingegangen*" gewäht wurde, kommt: - - * **Höhe der Barspende** - Hier bitte den Betrag in EUR eingeben und wieder mit *Return* oder Klich aif OK abschließen. - - Als Letztes kann noch eine Bemerkung zu der Führung eingegeben werden: - - * **Bemerkungen (optional)** - Diese kann auch leer bleiben. Allerdings **muss** unbeding mit Klick auf OK abgeschlossen werden, sonst gehts nicht weiter. - Danach werden durch Klick auf den **Senden**-Button die Daten an die Datenbank gesendet. - -Falls die Führung **nicht** stattgefunden hat, gehts weiter mit - - * **Die Führung wurde** - **abgestagt** oder **verschoben** - Wird **abgesagt** gewählt, erscheint gleich der **Senden**-Button. Die Führung wird dann in der Datenbank als *abgesagt* markiert. - Wird **verwschoben** gewählt, so erscheint - - * **Verschoben auf:** - und es kann ein neues Datum (mit Uhrzeit) über die aufpoppende Datums-Auswahl gewählt werden. Nach Abschluss mit OK erscheint nun wieder der **Sende**-Button. Durch Klick darauf wird die Führung mit dem neuen Datum als *zugesagt* in die Datenbank übernommen. Der verantwortliche BEO erhält eine Erinnerungs-Mail. - - Während der gesamten Eingabe-Prozedur kann über den **Abbruch**-Button jederzeit der Vorgang abgebrochen und neu begonnen werden. - - - - - -rxf 2018-10-17 \ No newline at end of file diff --git a/sternwarte/beoanswer_old/beoanswer.php b/sternwarte/beoanswer_old/beoanswer.php deleted file mode 100755 index e9a773f..0000000 --- a/sternwarte/beoanswer_old/beoanswer.php +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - Nachbearbeitung - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -

Sonderführung vom

-

für

-

Nachbearbeitung

- -
-
-
-
Fand die Führung statt?
-
- - -
-
- -
-
Die Führung wurde
-
- - -
-
- -
-
- -
-
- -
-
-
- -
-
- -
-
- - -
-
- -
-
-
Eine Spende
-
-
- - - - -
-
-
- -
-
- -
-
- € - -
-
- -
-
-
- -
-
- - -
-
- -
-
- Fertig -
-
- -
- -
-
- Daten in die Datenbank übernommen.
- Vielen Dank -
-
-
- -
- - - -
- - - - -
- - -
- -
-
-
-
-
-
- - - - \ No newline at end of file diff --git a/sternwarte/beoanswer_old/css/basscss-custom.css b/sternwarte/beoanswer_old/css/basscss-custom.css deleted file mode 100755 index a0751a8..0000000 --- a/sternwarte/beoanswer_old/css/basscss-custom.css +++ /dev/null @@ -1,1471 +0,0 @@ -/* - - Basscss - http://basscss.com - - 5.16 kB - 523 Rules - 603 Selectors - 748 Declarations - Generated with http://basscss.com/customize - -*/ - -body { margin: 0 } -img { max-width: 100% } -svg { max-height: 100% } - -input, -select, -textarea, -fieldset { - font-family: inherit; - font-size: 1rem; - box-sizing: border-box; - margin-top: 0; - margin-bottom: 0; -} - -label { - vertical-align: middle; -} - -input[type=text], -input[type=date], -input[type=datetime], -input[type=datetime-local], -input[type=email], -input[type=month], -input[type=number], -input[type=password], -input[type=search], -input[type=tel], -input[type=time], -input[type=url], -input[type=week] { - height: 2.25rem; - padding: .5rem .5rem; - vertical-align: middle; - -webkit-appearance: none; -} - -select { - line-height: 1.75; - padding: .5rem .5rem; -} - -select:not([multiple]) { - height: 2.25rem; - vertical-align: middle; -} - -textarea { - line-height: 1.75; - padding: .5rem .5rem; -} - -table { - border-collapse: separate; - border-spacing: 0; - max-width: 100%; - width: 100%; -} - -th { - text-align: left; - font-weight: bold; -} - -th, -td { - padding: .25rem 1rem; - line-height: inherit; -} - -th { vertical-align: bottom } -td { vertical-align: top } - -body { - font-family: 'Helvetica Neue', Helvetica, sans-serif; - line-height: 1.5; - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - font-family: 'Helvetica Neue', Helvetica, sans-serif; - font-weight: bold; - line-height: 1.25; - margin-top: 1em; - margin-bottom: .5em; -} - -p { - margin-top: 0; - margin-bottom: 1rem; -} - -dl, ol, ul { - margin-top: 0; - margin-bottom: 1rem; -} - -pre, code, samp { - font-family: 'Source Code Pro', Consolas, monospace; - font-size: inherit; -} - -pre { - margin-top: 0; - margin-bottom: 1rem; - overflow-x: scroll; -} - -h1 { font-size: 2rem } -h2 { font-size: 1.5rem } -h3 { font-size: 1.25rem } -h4 { font-size: 1rem } -h5 { font-size: .875rem } -h6 { font-size: .75rem } - -body { - color: #111; - background-color: #fff; -} - -a { - color: #0074d9; - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -pre, code { - background-color: transparent; - border-radius: 3px; -} - -hr { - border: 0; - border-bottom-style: solid; - border-bottom-width: 1px; - border-bottom-color: rgba(0,0,0,.125); -} - -.field { - border-style: solid; - border-width: 1px; - border-color: rgba(0,0,0,.125); - border-radius: 3px; -} - -.field:focus, -.field.is-focused { - outline: none; - border-color: #0074d9; - box-shadow: 0 0 0 2px rgba(0, 116, 217, 0.5); -} - -.field:disabled, -.field.is-disabled { - background-color: rgba(0,0,0,.125); - opacity: .5; -} - -.field:read-only:not(select), -.field.is-read-only { - background-color: rgba(0,0,0,.125); -} - - -.field.is-success { - border-color: #2ecc40; -} - -.field.is-success:focus, -.field.is-success.is-focused { - box-shadow: 0 0 0 2px rgba(46, 204, 64, 0.5); -} - -.field.is-warning { - border-color: #ffdc00; -} - -.field.is-warning:focus, -.field.is-warning.is-focused { - box-shadow: 0 0 0 2px rgba(255, 220, 0, 0.5); -} - -.field:invalid, -.field.is-error { - border-color: #ff4136; -} - -.field:invalid:focus, -.field:invalid.is-focused, -.field.is-error:focus, -.field.is-error.is-focused { - box-shadow: 0 0 0 2px rgba(255, 65, 54, 0.5); -} - -.table-light th, -.table-light td { - border-bottom-width: 1px; - border-bottom-style: solid; - border-bottom-color: rgba(0,0,0,.125); -} - -.table-light tr:last-child td { - border-bottom: 0; -} - -.btn { - font-family: inherit; - font-size: inherit; - font-weight: bold; - text-decoration: none; - cursor: pointer; - display: inline-block; - line-height: 1.125rem; - padding: .5rem 1rem; - margin: 0; - height: auto; - border: 1px solid transparent; - vertical-align: middle; - -webkit-appearance: none; - color: inherit; - background-color: transparent; -} - -.btn:hover { - text-decoration: none; -} - -.btn:focus { - outline: none; - border-color: rgba(0,0,0,.125); - box-shadow: 0 0 0 3px rgba(0,0,0,.25); -} - -::-moz-focus-inner { - border: 0; - padding: 0; -} - -.btn-primary { - color: #fff; - background-color: #0074d9; - border-radius: 3px; -} - -.btn-primary:hover { - box-shadow: inset 0 0 0 20rem rgba(0,0,0,.0625); -} - -.btn-primary:active { - box-shadow: inset 0 0 0 20rem rgba(0,0,0,.125), - inset 0 3px 4px 0 rgba(0,0,0,.25), - 0 0 1px rgba(0,0,0,.125); -} - -.btn-primary:disabled, -.btn-primary.is-disabled { - opacity: .5; -} - -.btn-outline, -.btn-outline:hover { - border-color: currentcolor; -} - -.btn-outline { - border-radius: 3px; -} - -.btn-outline:hover { - box-shadow: inset 0 0 0 20rem rgba(0,0,0,.0625); -} - -.btn-outline:active { - box-shadow: inset 0 0 0 20rem rgba(0,0,0,.125), - inset 0 3px 4px 0 rgba(0,0,0,.25), - 0 0 1px rgba(0,0,0,.125); -} - -.btn-outline:disabled, -.btn-outline.is-disabled { - opacity: .5; -} - -.h1 { font-size: 2rem } -.h2 { font-size: 1.5rem } -.h3 { font-size: 1.25rem } -.h4 { font-size: 1rem } -.h5 { font-size: .875rem } -.h6 { font-size: .75rem } - -.bold { font-weight: bold } -.regular { font-weight: normal } -.italic { font-style: italic } -.caps { text-transform: uppercase; letter-spacing: .2em; } - -.left-align { text-align: left } -.center { text-align: center } -.right-align { text-align: right } -.justify { text-align: justify } - -.nowrap { white-space: nowrap } -.break-word { word-wrap: break-word } - -.truncate { - max-width: 100%; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.list-reset { - list-style: none; - padding-left: 0; -} - -.inline { display: inline } -.block { display: block } -.inline-block { display: inline-block } -.table { display: table } -.table-cell { display: table-cell } - -.overflow-hidden { overflow: hidden } -.overflow-scroll { overflow: scroll } -.overflow-auto { overflow: auto } - -.clearfix:before, -.clearfix:after { - content: " "; - display: table -} -.clearfix:after { clear: both } - -.left { float: left } -.right { float: right } - -.fit { max-width: 100% } - -.border-box { box-sizing: border-box } - -.align-baseline { vertical-align: baseline } -.align-top { vertical-align: top } -.align-middle { vertical-align: middle } -.align-bottom { vertical-align: bottom } - -.m0 { margin: 0 } -.mt0 { margin-top: 0 } -.mr0 { margin-right: 0 } -.mb0 { margin-bottom: 0 } -.ml0 { margin-left: 0 } - -.m1 { margin: .5rem } -.mt1 { margin-top: .5rem } -.mr1 { margin-right: .5rem } -.mb1 { margin-bottom: .5rem } -.ml1 { margin-left: .5rem } - -.m2 { margin: 1rem } -.mt2 { margin-top: 1rem } -.mr2 { margin-right: 1rem } -.mb2 { margin-bottom: 1rem } -.ml2 { margin-left: 1rem } - -.m3 { margin: 2rem } -.mt3 { margin-top: 2rem } -.mr3 { margin-right: 2rem } -.mb3 { margin-bottom: 2rem } -.ml3 { margin-left: 2rem } - -.m4 { margin: 4rem } -.mt4 { margin-top: 4rem } -.mr4 { margin-right: 4rem } -.mb4 { margin-bottom: 4rem } -.ml4 { margin-left: 4rem } - -.mxn1 { margin-left: -.5rem; margin-right: -.5rem; } -.mxn2 { margin-left: -1rem; margin-right: -1rem; } -.mxn3 { margin-left: -2rem; margin-right: -2rem; } -.mxn4 { margin-left: -4rem; margin-right: -4rem; } - -.mx-auto { margin-left: auto; margin-right: auto; } -.p0 { padding: 0 } - -.p1 { padding: .5rem } -.py1 { padding-top: .5rem; padding-bottom: .5rem } -.px1 { padding-left: .5rem; padding-right: .5rem } - -.p2 { padding: 1rem } -.py2 { padding-top: 1rem; padding-bottom: 1rem } -.px2 { padding-left: 1rem; padding-right: 1rem } - -.p3 { padding: 2rem } -.py3 { padding-top: 2rem; padding-bottom: 2rem } -.px3 { padding-left: 2rem; padding-right: 2rem } - -.p4 { padding: 4rem } -.py4 { padding-top: 4rem; padding-bottom: 4rem } -.px4 { padding-left: 4rem; padding-right: 4rem } - -.relative { position: relative } -.absolute { position: absolute } -.fixed { position: fixed } - -.top-0 { top: 0 } -.right-0 { right: 0 } -.bottom-0 { bottom: 0 } -.left-0 { left: 0 } - -.z1 { z-index: 1 } -.z2 { z-index: 2 } -.z3 { z-index: 3 } -.z4 { z-index: 4 } - -.sm-show, .md-show, .lg-show { - display: none !important -} - -@media (min-width: 40em) { - .sm-show { display: block !important } -} - -@media (min-width: 52em) { - .md-show { display: block !important } -} - -@media (min-width: 64em) { - .lg-show { display: block !important } -} - - -@media (min-width: 40em) { - .sm-hide { display: none !important } -} - -@media (min-width: 52em) { - .md-hide { display: none !important } -} - -@media (min-width: 64em) { - .lg-hide { display: none !important } -} - -.display-none { display: none !important } - -.hide { - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); -} - -.container { - max-width: 64em; - margin-left: auto; - margin-right: auto; -} -.col { - float: left; - box-sizing: border-box; -} - -.col-right { - float: right; - box-sizing: border-box; -} - -.col-1 { - width: 8.33333%; -} - -.col-2 { - width: 16.66667%; -} - -.col-3 { - width: 25%; -} - -.col-4 { - width: 33.33333%; -} - -.col-5 { - width: 41.66667%; -} - -.col-6 { - width: 50%; -} - -.col-7 { - width: 58.33333%; -} - -.col-8 { - width: 66.66667%; -} - -.col-9 { - width: 75%; -} - -.col-10 { - width: 83.33333%; -} - -.col-11 { - width: 91.66667%; -} - -.col-12 { - width: 100%; -} -@media (min-width: 40em) { - - .sm-col { - float: left; - box-sizing: border-box; - } - - .sm-col-right { - float: right; - box-sizing: border-box; - } - - .sm-col-1 { - width: 8.33333%; - } - - .sm-col-2 { - width: 16.66667%; - } - - .sm-col-3 { - width: 25%; - } - - .sm-col-4 { - width: 33.33333%; - } - - .sm-col-5 { - width: 41.66667%; - } - - .sm-col-6 { - width: 50%; - } - - .sm-col-7 { - width: 58.33333%; - } - - .sm-col-8 { - width: 66.66667%; - } - - .sm-col-9 { - width: 75%; - } - - .sm-col-10 { - width: 83.33333%; - } - - .sm-col-11 { - width: 91.66667%; - } - - .sm-col-12 { - width: 100%; - } - -} -@media (min-width: 52em) { - - .md-col { - float: left; - box-sizing: border-box; - } - - .md-col-right { - float: right; - box-sizing: border-box; - } - - .md-col-1 { - width: 8.33333%; - } - - .md-col-2 { - width: 16.66667%; - } - - .md-col-3 { - width: 25%; - } - - .md-col-4 { - width: 33.33333%; - } - - .md-col-5 { - width: 41.66667%; - } - - .md-col-6 { - width: 50%; - } - - .md-col-7 { - width: 58.33333%; - } - - .md-col-8 { - width: 66.66667%; - } - - .md-col-9 { - width: 75%; - } - - .md-col-10 { - width: 83.33333%; - } - - .md-col-11 { - width: 91.66667%; - } - - .md-col-12 { - width: 100%; - } - -} -@media (min-width: 64em) { - - .lg-col { - float: left; - box-sizing: border-box; - } - - .lg-col-right { - float: right; - box-sizing: border-box; - } - - .lg-col-1 { - width: 8.33333%; - } - - .lg-col-2 { - width: 16.66667%; - } - - .lg-col-3 { - width: 25%; - } - - .lg-col-4 { - width: 33.33333%; - } - - .lg-col-5 { - width: 41.66667%; - } - - .lg-col-6 { - width: 50%; - } - - .lg-col-7 { - width: 58.33333%; - } - - .lg-col-8 { - width: 66.66667%; - } - - .lg-col-9 { - width: 75%; - } - - .lg-col-10 { - width: 83.33333%; - } - - .lg-col-11 { - width: 91.66667%; - } - - .lg-col-12 { - width: 100%; - } - -} - -.flex { display: flex } - -.flex-column { flex-direction: column } -.flex-wrap { flex-wrap: wrap } - -.flex-center { align-items: center } -.flex-baseline { align-items: baseline } -.flex-stretch { align-items: stretch } -.flex-start { align-items: flex-start } -.flex-end { align-items: flex-end } - -.flex-justify { justify-content: space-between } - -.flex-auto { - flex: 1 1 auto; - min-width: 0; - min-height: 0; -} -.flex-grow { flex: 1 0 auto } -.flex-none { flex: none } - -.flex-first { order: -1 } -.flex-last { order: 99999 } -@media (min-width: 40em) { - .sm-flex { display: flex } -} -@media (min-width: 52em) { - .md-flex { display: flex } -} -@media (min-width: 64em) { - .lg-flex { display: flex } -} - -.border { - border-style: solid; - border-width: 1px; - border-color: rgba(0,0,0,.125); -} - -.border-top { - border-top-style: solid; - border-top-width: 1px; - border-top-color: rgba(0,0,0,.125); -} - -.border-right { - border-right-style: solid; - border-right-width: 1px; - border-right-color: rgba(0,0,0,.125); -} - -.border-bottom { - border-bottom-style: solid; - border-bottom-width: 1px; - border-bottom-color: rgba(0,0,0,.125); -} - -.border-left { - border-left-style: solid; - border-left-width: 1px; - border-left-color: rgba(0,0,0,.125); -} - -.border-none { border: 0 } - -.rounded { border-radius: 3px } -.circle { border-radius: 50% } - -.rounded-top { border-radius: 3px 3px 0 0 } -.rounded-right { border-radius: 0 3px 3px 0 } -.rounded-bottom { border-radius: 0 0 3px 3px } -.rounded-left { border-radius: 3px 0 0 3px } - -.not-rounded { border-radius: 0 } - -.black { color: #111 } -.gray { color: #aaa } -.silver { color: #ddd } -.white { color: #fff } - -.aqua { color: #7fdbff } -.blue { color: #0074d9 } -.navy { color: #001f3f } -.teal { color: #39cccc } -.green { color: #2ecc40 } -.olive { color: #3d9970 } -.lime { color: #01ff70 } - -.yellow { color: #ffdc00 } -.orange { color: #ff851b } -.red { color: #ff4136 } -.fuchsia { color: #f012be } -.purple { color: #b10dc9 } -.maroon { color: #85144b } - -.color-inherit { color: inherit } -.muted { opacity: .5 } - -.bg-black { background-color: #111 } -.bg-gray { background-color: #aaa } -.bg-silver { background-color: #ddd } -.bg-white { background-color: #fff } - -.bg-aqua { background-color: #7fdbff } -.bg-blue { background-color: #0074d9 } -.bg-navy { background-color: #001f3f } -.bg-teal { background-color: #39cccc } -.bg-green { background-color: #2ecc40 } -.bg-olive { background-color: #3d9970 } -.bg-lime { background-color: #01ff70 } - -.bg-yellow { background-color: #ffdc00 } -.bg-orange { background-color: #ff851b } -.bg-red { background-color: #ff4136 } -.bg-fuchsia { background-color: #f012be } -.bg-purple { background-color: #b10dc9 } -.bg-maroon { background-color: #85144b } - -.bg-darken-1 { background-color: rgba(0,0,0,.0625) } -.bg-darken-2 { background-color: rgba(0,0,0,.125) } -.bg-darken-3 { background-color: rgba(0,0,0,.25) } -.bg-darken-4 { background-color: rgba(0,0,0,.5) } - -.bg-lighten-1 { background-color: rgba(255,255,255,.0625) } -.bg-lighten-2 { background-color: rgba(255,255,255,.125) } -.bg-lighten-3 { background-color: rgba(255,255,255,.25) } -.bg-lighten-4 { background-color: rgba(255,255,255,.5) } - -.bg-cover { background-size: cover } -.bg-contain { background-size: contain } - -.bg-center { background-position: center } -.bg-top { background-position: top } -.bg-right { background-position: right } -.bg-bottom { background-position: bottom } -.bg-left { background-position: left } - -.border-black { border-color: #111 } -.border-gray { border-color: #aaa } -.border-silver { border-color: #ddd } -.border-white { border-color: #fff } - -.border-aqua { border-color: #7fdbff } -.border-blue { border-color: #0074d9 } -.border-navy { border-color: #001f3f } -.border-teal { border-color: #39cccc } -.border-green { border-color: #2ecc40 } -.border-olive { border-color: #3d9970 } -.border-lime { border-color: #01ff70 } - -.border-yellow { border-color: #ffdc00 } -.border-orange { border-color: #ff851b } -.border-red { border-color: #ff4136 } -.border-fuchsia { border-color: #f012be } -.border-purple { border-color: #b10dc9 } -.border-maroon { border-color: #85144b } - -.border-darken-1 { border-color: rgba(0,0,0,.0625) } -.border-darken-2 { border-color: rgba(0,0,0,.125) } -.border-darken-3 { border-color: rgba(0,0,0,.25) } -.border-darken-4 { border-color: rgba(0,0,0,.5) } - -.border-lighten-1 { border-color: rgba(255,255,255,.0625) } -.border-lighten-2 { border-color: rgba(255,255,255,.125) } -.border-lighten-3 { border-color: rgba(255,255,255,.25) } -.border-lighten-4 { border-color: rgba(255,255,255,.5) } - -.btn-small { - padding: .25rem .5rem; -} - -.btn-big { - padding: 1rem 1.25rem; -} - -.btn-narrow { - padding-left: .5rem; - padding-right: .5rem; -} - -.field-dark { - color: white; - background-color: rgba(0,0,0,.25); - border: 1px solid rgba(0,0,0,.0625); - border-radius: 3px; -} - -.field-dark::placeholder { - color: rgba(255,255,255,.75); -} - -.field-dark:focus { - outline: 0; - border: 1px solid rgba(255,255,255,.5); - box-shadow: 0 0 0 2px rgba(255,255,255,.25); -} - -.field-dark:read-only:not(select) { - background-color: rgba(255,255,255,.25); -} - -.field-dark.is-success { - border-color: #2ecc40; -} - -.field-dark.is-success:focus { - box-shadow: 0 0 0 2px rgba(46, 204, 64, 0.5); -} - -.field-dark.is-warning { - border-color: #ffdc00; -} - -.field-dark.is-warning:focus { - box-shadow: 0 0 0 2px rgba(255, 220, 0, 0.5); -} - -.field-dark:invalid, -.field-dark.is-error { - border-color: #ff4136; -} - -.field-dark.is-error:focus { - box-shadow: 0 0 0 2px rgba(255, 65, 54, 0.5); -} - -.range-light { - color: inherit; - background-color: transparent; - -webkit-appearance: none; -} - -.range-light::-webkit-slider-thumb { - -webkit-appearance: none; - border-radius: 3px; - background-color: currentcolor; -} - -.range-light::-moz-range-thumb { - border-radius: 3px; - border-color: transparent; - border-width: 0; - background-color: currentcolor; -} - -.range-light::-webkit-slider-runnable-track { - border-radius: 3px; - background-color: rgba(0,0,0,.25); -} - -.range-light::-moz-range-track { - border-radius: 3px; - background-color: rgba(0,0,0,.25); -} - -.range-light:focus { - outline: none; -} - -.range-light:focus::-webkit-slider-thumb { - outline: none; - border: 0; - box-shadow: 0 0 1px 2px currentcolor; -} - -.range-light:focus::-moz-range-thumb { - outline: none; - border: 0; - box-shadow: 0 0 0 3px rgba(0,0,0,.25); -} - -.progress { - background-color: rgba(0,0,0,.125); - border: 0; - border-radius: 10000px; -} - -.progress::-webkit-progress-bar { - -webkit-appearance: none; - background-color: rgba(0,0,0,.125) -} - -.progress::-webkit-progress-value { - -webkit-appearance: none; - background-color: currentColor; -} - -.progress::-moz-progress-bar { - background-color: currentColor; -} - -.hljs { - -webkit-text-size-adjust: none; -} - -.hljs-comment, -.diff .hljs-header, -.hljs-javadoc { - color: #aaa; - font-style: italic; -} - -.hljs-keyword, -.css .rule .hljs-keyword, -.hljs-winutils, -.nginx .hljs-title, -.hljs-subst, -.hljs-request, -.hljs-status { - color: #111; - font-weight: bold; -} - -.hljs-number, -.hljs-hexcolor, -.ruby .hljs-constant { - color: #3d9970; -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-phpdoc, -.hljs-dartdoc, -.tex .hljs-formula { - color: #ff4136; -} - -.hljs-title, -.hljs-id, -.scss .hljs-preprocessor { - color: #ff4136; - font-weight: bold; -} - -.hljs-list .hljs-keyword, -.hljs-subst { - font-weight: normal; -} - -.hljs-class .hljs-title, -.hljs-type, -.vhdl .hljs-literal, -.tex .hljs-command { - color: #001f3f; - font-weight: bold; -} - -.hljs-tag, -.hljs-tag .hljs-title, -.hljs-rules .hljs-property, -.django .hljs-tag .hljs-keyword { - color: #001f3f; - font-weight: normal; -} - -.hljs-attribute, -.hljs-variable, -.lisp .hljs-body { - color: #3d9970; -} - -.hljs-regexp { - color: #3d9970; -} - -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.lisp .hljs-keyword, -.clojure .hljs-keyword, -.scheme .hljs-keyword, -.tex .hljs-special, -.hljs-prompt { - color: #b10dc9; -} - -.hljs-built_in { - color: #001f3f; -} - -.hljs-preprocessor, -.hljs-pragma, -.hljs-pi, -.hljs-doctype, -.hljs-shebang, -.hljs-cdata { - color: #aaa; - font-weight: bold; -} - -.hljs-deletion { - background: #f012be; -} - -.hljs-addition { - background: #01ff70; -} - -.diff .hljs-change { - background: #001f3f; -} - -.hljs-chunk { - color: #ddd; -} - -input[type=range] { - vertical-align: middle; - background-color: transparent; -} - -.range-light { - color: inherit; - -webkit-appearance: none; - padding-top: .5rem; - padding-bottom: .5rem; -} - -.range-light::-webkit-slider-thumb { - -webkit-appearance: none; - position: relative; - width: .5rem; - height: 1.25rem; - border-radius: 3px; - background-color: currentcolor; - cursor: pointer; - margin-top: -0.5rem; -} -.range-light::-webkit-slider-thumb:before { - content: ''; - display: block; - position: absolute; - top: -0.5rem; - left: -0.875rem; - width: 2.25rem; - height: 2.25rem; - opacity: 0; -} - -.range-light::-moz-range-thumb { - width: .5rem; - height: 1.25rem; - border-radius: 3px; - border-color: transparent; - border-width: 0; - background-color: currentcolor; - cursor: pointer; -} - -.range-light::-webkit-slider-runnable-track { - height: 0.25rem; - cursor: pointer; - border-radius: 3px; - background-color: rgba(0,0,0,.25); -} - -.range-light::-moz-range-track { - height: 0.25rem; - cursor: pointer; - border-radius: 3px; - background-color: rgba(0,0,0,.25); -} - -.range-light:focus { - outline: none; -} - -.range-light:focus::-webkit-slider-thumb { - outline: none; - border: 0; - box-shadow: 0 0 1px 2px currentcolor; -} - -.range-light:focus::-moz-range-thumb { - outline: none; - border: 0; - box-shadow: 0 0 0 3px rgba(0,0,0,.25); -} - -.progress { - display: block; - width: 100%; - height: 0.5625rem; - margin: .5rem 0; - background-color: rgba(0,0,0,.125); - border: 0; - border-radius: 10000px; - overflow: hidden; - -webkit-appearance: none; -} - -.progress::-webkit-progress-bar { - -webkit-appearance: none; - background-color: rgba(0,0,0,.125) -} - -.progress::-webkit-progress-value { - -webkit-appearance: none; - background-color: currentColor; -} - -.progress::-moz-progress-bar { - background-color: currentColor; -} - -@media (min-width: 40em) { - - .sm-m0 { margin: 0 } - .sm-mt0 { margin-top: 0 } - .sm-mr0 { margin-right: 0 } - .sm-mb0 { margin-bottom: 0 } - .sm-ml0 { margin-left: 0 } - - .sm-m1 { margin: .5rem } - .sm-mt1 { margin-top: .5rem } - .sm-mr1 { margin-right: .5rem } - .sm-mb1 { margin-bottom: .5rem } - .sm-ml1 { margin-left: .5rem } - - .sm-m2 { margin: 1rem } - .sm-mt2 { margin-top: 1rem } - .sm-mr2 { margin-right: 1rem } - .sm-mb2 { margin-bottom: 1rem } - .sm-ml2 { margin-left: 1rem } - - .sm-m3 { margin: 2rem } - .sm-mt3 { margin-top: 2rem } - .sm-mr3 { margin-right: 2rem } - .sm-mb3 { margin-bottom: 2rem } - .sm-ml3 { margin-left: 2rem } - - .sm-m4 { margin: 4rem } - .sm-mt4 { margin-top: 4rem } - .sm-mr4 { margin-right: 4rem } - .sm-mb4 { margin-bottom: 4rem } - .sm-ml4 { margin-left: 4rem } - - .sm-mxn1 { margin-left: -.5rem; margin-right: -.5rem; } - .sm-mxn2 { margin-left: -1rem; margin-right: -1rem; } - .sm-mxn3 { margin-left: -2rem; margin-right: -2rem; } - .sm-mxn4 { margin-left: -4rem; margin-right: -4rem; } - - .sm-mx-auto { margin-left: auto; margin-right: auto; } - -} -@media (min-width: 52em) { - - .md-m0 { margin: 0 } - .md-mt0 { margin-top: 0 } - .md-mr0 { margin-right: 0 } - .md-mb0 { margin-bottom: 0 } - .md-ml0 { margin-left: 0 } - - .md-m1 { margin: .5rem } - .md-mt1 { margin-top: .5rem } - .md-mr1 { margin-right: .5rem } - .md-mb1 { margin-bottom: .5rem } - .md-ml1 { margin-left: .5rem } - - .md-m2 { margin: 1rem } - .md-mt2 { margin-top: 1rem } - .md-mr2 { margin-right: 1rem } - .md-mb2 { margin-bottom: 1rem } - .md-ml2 { margin-left: 1rem } - - .md-m3 { margin: 2rem } - .md-mt3 { margin-top: 2rem } - .md-mr3 { margin-right: 2rem } - .md-mb3 { margin-bottom: 2rem } - .md-ml3 { margin-left: 2rem } - - .md-m4 { margin: 4rem } - .md-mt4 { margin-top: 4rem } - .md-mr4 { margin-right: 4rem } - .md-mb4 { margin-bottom: 4rem } - .md-ml4 { margin-left: 4rem } - - .md-mxn1 { margin-left: -.5rem; margin-right: -.5rem; } - .md-mxn2 { margin-left: -1rem; margin-right: -1rem; } - .md-mxn3 { margin-left: -2rem; margin-right: -2rem; } - .md-mxn4 { margin-left: -4rem; margin-right: -4rem; } - - .md-mx-auto { margin-left: auto; margin-right: auto; } - -} -@media (min-width: 64em) { - - .lg-m0 { margin: 0 } - .lg-mt0 { margin-top: 0 } - .lg-mr0 { margin-right: 0 } - .lg-mb0 { margin-bottom: 0 } - .lg-ml0 { margin-left: 0 } - - .lg-m1 { margin: .5rem } - .lg-mt1 { margin-top: .5rem } - .lg-mr1 { margin-right: .5rem } - .lg-mb1 { margin-bottom: .5rem } - .lg-ml1 { margin-left: .5rem } - - .lg-m2 { margin: 1rem } - .lg-mt2 { margin-top: 1rem } - .lg-mr2 { margin-right: 1rem } - .lg-mb2 { margin-bottom: 1rem } - .lg-ml2 { margin-left: 1rem } - - .lg-m3 { margin: 2rem } - .lg-mt3 { margin-top: 2rem } - .lg-mr3 { margin-right: 2rem } - .lg-mb3 { margin-bottom: 2rem } - .lg-ml3 { margin-left: 2rem } - - .lg-m4 { margin: 4rem } - .lg-mt4 { margin-top: 4rem } - .lg-mr4 { margin-right: 4rem } - .lg-mb4 { margin-bottom: 4rem } - .lg-ml4 { margin-left: 4rem } - - .lg-mxn1 { margin-left: -.5rem; margin-right: -.5rem; } - .lg-mxn2 { margin-left: -1rem; margin-right: -1rem; } - .lg-mxn3 { margin-left: -2rem; margin-right: -2rem; } - .lg-mxn4 { margin-left: -4rem; margin-right: -4rem; } - - .lg-mx-auto { margin-left: auto; margin-right: auto; } - -} - -@media (min-width: 40em) { - - .sm-p1 { padding: .5rem } - .sm-py1 { padding-top: .5rem; padding-bottom: .5rem } - .sm-px1 { padding-left: .5rem; padding-right: .5rem } - - .sm-p2 { padding: 1rem } - .sm-py2 { padding-top: 1rem; padding-bottom: 1rem } - .sm-px2 { padding-left: 1rem; padding-right: 1rem } - - .sm-p3 { padding: 2rem } - .sm-py3 { padding-top: 2rem; padding-bottom: 2rem } - .sm-px3 { padding-left: 2rem; padding-right: 2rem } - - .sm-p4 { padding: 4rem } - .sm-py4 { padding-top: 4rem; padding-bottom: 4rem } - .sm-px4 { padding-left: 4rem; padding-right: 4rem } - -} -@media (min-width: 52em) { - - .md-p1 { padding: .5rem } - .md-py1 { padding-top: .5rem; padding-bottom: .5rem } - .md-px1 { padding-left: .5rem; padding-right: .5rem } - - .md-p2 { padding: 1rem } - .md-py2 { padding-top: 1rem; padding-bottom: 1rem } - .md-px2 { padding-left: 1rem; padding-right: 1rem } - - .md-p3 { padding: 2rem } - .md-py3 { padding-top: 2rem; padding-bottom: 2rem } - .md-px3 { padding-left: 2rem; padding-right: 2rem } - - .md-p4 { padding: 4rem } - .md-py4 { padding-top: 4rem; padding-bottom: 4rem } - .md-px4 { padding-left: 4rem; padding-right: 4rem } - -} -@media (min-width: 64em) { - - .lg-p1 { padding: .5rem } - .lg-py1 { padding-top: .5rem; padding-bottom: .5rem } - .lg-px1 { padding-left: .5rem; padding-right: .5rem } - - .lg-p2 { padding: 1rem } - .lg-py2 { padding-top: 1rem; padding-bottom: 1rem } - .lg-px2 { padding-left: 1rem; padding-right: 1rem } - - .lg-p3 { padding: 2rem } - .lg-py3 { padding-top: 2rem; padding-bottom: 2rem } - .lg-px3 { padding-left: 2rem; padding-right: 2rem } - - .lg-p4 { padding: 4rem } - .lg-py4 { padding-top: 4rem; padding-bottom: 4rem } - .lg-px4 { padding-left: 4rem; padding-right: 4rem } - -} - -.table { - display: table; - width: 100%; -} -.table-cell { - display: table-cell; - vertical-align: middle; -} - -.table-fixed { table-layout: fixed } -@media (min-width: 40em) { - - .sm-table { - display: table; - width: 100%; - } - .sm-table-cell { - display: table-cell; - vertical-align: middle; - } - -} -@media (min-width: 52em) { - - .md-table { - display: table; - width: 100%; - } - .md-table-cell { - display: table-cell; - vertical-align: middle; - } - -} -@media (min-width: 64em) { - - .lg-table { - display: table; - width: 100%; - } - .lg-table-cell { - display: table-cell; - vertical-align: middle; - } - -} - -.x-group-item { margin-left: -1px } -.x-group-item:first-of-type { margin-left: 0 } - -.y-group-item { margin-top: -1px } -.y-group-item:first-of-type { margin-top: 0 } - -.x-group-item:focus, -.y-group-item:focus { - position: relative; - z-index: 1; -} - -.h00 { font-size: 4rem } -.h0 { font-size: 3rem } - -@media (min-width: 52em) { - .h00-responsive { font-size: 8vw } - .h0-responsive { font-size: 6vw } - .h1-responsive { font-size: 4vw } -} - -@media (min-width: 96em) { - .h00-responsive { font-size: 7.68rem } - .h0-responsive { font-size: 5.76rem } - .h1-responsive { font-size: 3.84rem } -} - diff --git a/sternwarte/beoanswer_old/css/mystyle.css b/sternwarte/beoanswer_old/css/mystyle.css deleted file mode 100755 index 643c4be..0000000 --- a/sternwarte/beoanswer_old/css/mystyle.css +++ /dev/null @@ -1,53 +0,0 @@ -:root { - --height-w0:45px; - --height-w1:60px; - --height-w2:100px; - --container-width: 30em; - --button-color: black; - --button-background-color: aqua; -} - -.btn-primary { - color: #000; - background-color: skyblue; - border-radius: 3px; -} - -#master { - border-width: 2px; -} - -#author { - border-top: 1px blue solid; -} - -.container { - max-width: 30em; -} - - -#remark { - width: 200px; -/* border: solid 1px blue; */ -} - -textarea { - line-height: 1.1; - padding: .5rem .5rem; -} - -#remarks, #beszahl, #barsp { -/* border: solid 1px green; */ -/* float: left; */ - -} - -#btnOK2, #btnOK1, #btnOK0 { -/* border: solid 1px red; */ -/* float: left; */ -} - - -#diespende { - clear: both; -} \ No newline at end of file diff --git a/sternwarte/beoanswer_old/js/beoanswer.js b/sternwarte/beoanswer_old/js/beoanswer.js deleted file mode 100755 index fff6b6a..0000000 --- a/sternwarte/beoanswer_old/js/beoanswer.js +++ /dev/null @@ -1,318 +0,0 @@ -/* - * -******************* -2025-06-16: -Da leider kein CRON auf dem Webserver läuft, kann 'checkfuehrung' bis auf -Weiteres nicht weiter gepflegt bzw. ausgeführt werden. 'checkfuehrung' ist -für dieses Programm )beoanswer) hier notwendig. -******************* - - */ -$(document).ready(function() { - - let sendobject = { - stattgefunden: false, - anzahl: 0, - spende:0, - betrag:0, - rem:'', - newtermin: '1900-01-01', - }; - let ajaxURL = '../../intern/sofue/php/sofueDB.php' - $('#versn').html("Version: " + VERSION + ' vom ' + VDATE); - - console.log("von php:", url_id); - - // Daten der Führung holen - if(url_id != null) { - doAjaxCall_arr(ajaxURL,{cmd: 'GET_ONE', id: url_id}, enterajaxerg); - } else { - alert("Keine ID übergeben"); - return false -// throw new Error("Keine ID übergeben"); - } - - function enterajaxerg(erg) { - console.log(erg) - let t = $('#sofueHead').html(); - $('#sofueHead').html(t+(erg.wtermin).substr(0,10)); - $('#sofueName').html('für ' + erg.name); - - } - - // Change bei 'stattgefunden' - $('#inputstatt').change(function() { - let s = $('input[name="statt"]:checked').val(); - console.log(s); - if(s == "nein") { - showAbsage(); - sendobject.stattgefunden=false; - } else if (s=='ja') { - showBesucher(); - sendobject.stattgefunden=true; - } - }); - - // der JA-Zweig - function showBesucher() { - $('#besucher').removeClass("hide"); - } - - $('#beszahl').keydown(e=>{ - let keycode = e.keyCode || e.which; - if(keycode == 13) { - besucher = $('#beszahl').val(); - if($.isNumeric(besucher)) { - console.log(besucher); - sendobject.anzahl = besucher; - showSpende(); - } else { - alert("Nur Ziffern eingeben"); - } - } - }); - - $('#btnOK0').click(()=>{ - besucher = $('#beszahl').val(); - if($.isNumeric(besucher)) { - console.log(besucher); - sendobject.anzahl = besucher; - showSpende(); - } else { - alert("Nur Ziffern eingeben"); - } - }); - - - function showSpende() { - $('#diespende').removeClass("hide"); - } - - $('#inputspend').change(function() { - let spende=0; - let s = $('input[name="spend"]:checked').val(); - console.log(s); - if(s == "bar") { - spende=1; - showBarspende(); - } else { - showRemark(); - if (s=='ueberweis') { - spende=2; - } else if (s=='kasse') { - spende=3; - } - } - sendobject.spende = spende; - }); - - function showBarspende() { - $('#barspend').removeClass("hide"); - } - - $('#barsp').keydown(e=>{ - let keycode = e.keyCode || e.which; - if(keycode == 13) { - let barsp = $('#barsp').val(); - if($.isNumeric(barsp)) { - console.log(barsp); - sendobject.betrag = barsp; - showRemark(); - } else { - alert("Nur Ziffern eingeben"); - } - } - }); - - $('#btnOK1').click(()=>{ - let barsp = $('#barsp').val(); - if($.isNumeric(barsp)) { - console.log(barsp); - sendobject.betrag = barsp; - showRemark(); - } else { - alert("Nur Ziffern eingeben"); - } - }); - - $('#btnOK2').click(()=>{ - sendobject.rem = $('#remark').val(); - showFertig(); - }); - - function showRemark() { - let p = $('#btnOK2').offset(); - $('#btnOK2').offset({top: p.top-10, left: p.left}); - $('#remarks').removeClass('hide'); - } - - function showFertig() { - $('#fertig').removeClass("hide"); - $('#btnsend').removeClass("hide"); - } - - // der NEIN-Zweig - function showAbsage() { - $('input[name="nostatt"]').prop('checked',""); - $('#inputabs').removeClass("hide"); - } - - // Change bei 'nicht stattt' - $('#inputabs').change(function() { - let s = $('input[name="nostatt"]:checked').val(); - console.log(s); - if(s == "abgesagt") { - showFertig(); - } else if (s == "verschoben") { - showVerschoben(); - } - }); - - function showVerschoben() { - $('#verschbn').removeClass("hide"); - - - // Picker für den neuen Termin - $('#newtermin').datetimepicker( // Initialisierung des datetimepickers - { - addSliderAccess: true, - sliderAccessArgs: { touchonly: false }, - showOn: 'focus' , // onFocus wird der Picker angezeigt - timeFormat: 'HH:mm', - showMinute: true, - stepMinute: 15, -// showSecond: false, -// showMillisec: false, -// showMicrosec: false, -// showTimezone: false, - hourMin: 13, - dateFormat: "yy-mm-dd", // angezeigt wird in diesem Format - minDate: "+1d", // min Datum: morgen - closeText: "OK", // erst wenn OK geklickt wird, dann gehts weiter - timeText: "Uhrzeit", // Texte dazu - hourText: "Stunde", - onClose: function (dateText, inst) { // was passiert, wenn OK gedrückt wird: - if(dateText != "") { - var dt = moment(dateText).format('YYYY-MM-DD HH:mm'); - $("#newtermin").html(dt); - sendobject.newtermin=dt; - showFertig(); - } - } - }); - } - - // Datepicker auf Deutsch einstellen - $.datepicker.regional['de'] = { - closeText: '', - prevText: '<', - nextText: '>', - currentText: '', - monthNames: ['Januar','Februar','März','April','Mai','Juni', - 'Juli','August','September','Oktober','November','Dezember'], - monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun', - 'Jul','Aug','Sep','Okt','Nov','Dez'], - dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], - dayNamesShort: ['SON','MON','DIE','MIT','DON','FRE','SAM'], - dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'], - weekHeader: 'KW', - dateFormat: 'yyyy-mm-dd', - firstDay: 1, - isRTL: false, - showMonthAfterYear: false, - yearSuffix: '' - }; - $.datepicker.setDefaults($.datepicker.regional['de']); // diese Einstellung nun übernehmen - - // Buttons - $('#btncancel').click(()=>location.reload()); - - $('#btnsend').click(()=>{ - console.log("Sende an Datenbank:"); - console.log(sendobject); - clearAll(0); - let cmd = { - stattgefunden: sendobject.stattgefunden ? 1 : 0, - id: url_id, - cmd: 'UPDATEAFTER' - }; - if(sendobject.stattgefunden) { // der Termin hat stattgefunden - cmd.besucher = sendobject.anzahl; - cmd.remark = sendobject.rem; - cmd.bezahlt = (function() { - console.log("sendobjc:", sendobject); - if( sendobject.spende == 1 ) { - return `bar Kasse (€${sendobject.betrag})`; - } else if (sendobject.spende == 2) { - return 'Überweisung'; - } else if (sendobject.spende == 3) { - return 'Spendenkasse'; - } else return 'Keine'; - })() - } else { // der Termin hat NICHT stattgefunden - cmd.besucher = sendobject.anzahl; - cmd.remark = ''; - cmd.bezahlt = 'Keine'; - if(sendobject.newtermin != '1900-01-01') { - cmd.wtermin = sendobject.newtermin; // er wurde verlegt, also gibts einen neuen Wunschtermin - } else { - cmd.status = 3; // nicht stattgefunden -> abgesagt - } - } - console.log(cmd); - if(url_id != null) { - doAjaxCall_arr(ajaxURL,cmd,showajaxerg); - } - }); - - function clearAll(was) { - $('#tosend').addClass('hide'); - $('#inputstatt').addClass('hide'); - $('#fertig').addClass('hide'); - $('#verschbn').addClass('hide'); - $('#inputabs').addClass('hide'); - $('#besucher').addClass('hide'); - $('#diespende').addClass('hide'); - $('#barspend').addClass('hide'); - $('#remarks').addClass('hide'); - } - - - function showajaxerg(erg) { - console.log("AjaxErg: ", erg); - $('#beendet').removeClass('hide'); - } - - // Klick auf den Anleitungs-Button - $('#btnMan').click(function() { - $("#anleitung").dialog('open'); - }); - - - // 3. Dialog für die Anleitung - // Dieser hat KEINEN Button (wird über das Schließkreuz beendet) und - // eine etwas kleinere Schrift - $("#anleitung").dialog({ - autoOpen: false, - width: 400, - modal: true, - position: {my: 'top', at: 'top', of: window }, - title: 'Anleitung', - open: - function() { - $(this).load('beoanswer.html'); - }, - buttons: [ - { - text: "Abbrechen", - click : function() { - $(this).dialog("close"); - }, - width: 150, - } - ], - }); - - - -}); diff --git a/sternwarte/beoanswer_old/js/jquery-ui-slider-access-addon.js b/sternwarte/beoanswer_old/js/jquery-ui-slider-access-addon.js deleted file mode 100755 index 8f3526d..0000000 --- a/sternwarte/beoanswer_old/js/jquery-ui-slider-access-addon.js +++ /dev/null @@ -1,103 +0,0 @@ -/* - * jQuery UI Slider Access - * By: Trent Richardson [http://trentrichardson.com] - * Version 0.2 - * Last Modified: 12/12/2011 - * - * Copyright 2011 Trent Richardson - * Dual licensed under the MIT and GPL licenses. - * http://trentrichardson.com/Impromptu/GPL-LICENSE.txt - * http://trentrichardson.com/Impromptu/MIT-LICENSE.txt - * - */ - (function ($) { - - $.fn.extend({ - sliderAccess: function (options) { - options = options || {}; - options.touchonly = options.touchonly !== undefined ? options.touchonly : true; // by default only show it if touch device - - if (options.touchonly === true && !("ontouchend" in document)) - return $(this); - - return $(this).each(function (i, obj) { - var $t = $(this), - o = $.extend({}, { - where: 'after', - step: $t.slider('option', 'step'), - upIcon: 'ui-icon-plus', - downIcon: 'ui-icon-minus', - text: false, - upText: '+', - downText: '-', - buttonset: true, - buttonsetTag: 'span', - speed: 150 - }, options), - $buttons = $('<' + o.buttonsetTag + ' class="ui-slider-access">' + - '' + - '' + - ''); - - $buttons.children('button').each(function (j, jobj) { - var $jt = $(this), - timeout = null, - increment = function($jt, $t, e) { - var step = $jt.data('step'), - curr = $t.slider('value'), - newval = curr += step * 1, - minval = $t.slider('option', 'min'), - maxval = $t.slider('option', 'max'); - e.preventDefault(); - if (newval < minval || newval > maxval) - return; - $t.slider('value', newval); - $t.slider("option", "slide").call($t, null, { value: newval }); - }; - - $jt.button({ - text: o.text, - icons: { primary: $jt.data('icon') } - }) - .bind('touchstart mousedown', function (e) { - increment($jt, $t, e); - timeout = setInterval(function () { - increment($jt, $t, e); - }, o.speed); - }); - - $(document).bind('touchend mouseup', function (e) { - clearInterval(timeout); - return e.type == 'touchend'; - }); - - }); - - // before or after - $t[o.where]($buttons); - - if (o.buttonset) { - $buttons.removeClass('ui-corner-right').removeClass('ui-corner-left').buttonset(); - $buttons.eq(0).addClass('ui-corner-left'); - $buttons.eq(1).addClass('ui-corner-right'); - } - - // adjust the width so we don't break the original layout - var bOuterWidth = $buttons.css({ - marginLeft: (o.where == 'after' ? 10 : 0), - marginRight: (o.where == 'before' ? 10 : 0) - }).outerWidth(true) + 5; - var tOuterWidth = $t.outerWidth(true); - - // support "always" hide the slider - if (o.hideSlider == 'always' || (o.hideSlider == 'touch' && ("ontouchend" in document))) { - $t.css('display', 'none'); - } - else { - $t.css('display', 'inline-block').width(tOuterWidth - bOuterWidth); - } - }); - } - }); - - })(jQuery); \ No newline at end of file diff --git a/sternwarte/beoanswer_old/js/version.js b/sternwarte/beoanswer_old/js/version.js deleted file mode 100755 index 3f4eb64..0000000 --- a/sternwarte/beoanswer_old/js/version.js +++ /dev/null @@ -1,17 +0,0 @@ -// VersiosNummern und -Geschichte - -var VERSION="1.2"; -var VDATE="2024-11-01"; - -/* History - -Rev. Datum Entwickler - - 1.2 2024-11-01 rxf - - Nur noch ID zur identifizierung der Führung - - Name des Besuchers mit anzeigen - 1.1 2018-12-11 rxf - - kleinere Anpassungen - 1.0 2018-09-27 rxf - - Los gehts -*/ diff --git a/sternwarte/intern/anmeld/js/anmeld.js b/sternwarte/intern/anmeld/js/anmeld.js index 4e3cdcd..302527f 100644 --- a/sternwarte/intern/anmeld/js/anmeld.js +++ b/sternwarte/intern/anmeld/js/anmeld.js @@ -25,7 +25,8 @@ document.addEventListener('DOMContentLoaded', async () => { let absagegrund = ""; const useDatum = query.datum - const ajaxURL = "php/anmeldDB.php"; + // Unified API endpoint + const ajaxURL = "../../DB4js_all.php"; const ANZAHL_DATES = query.typ === 'sonnen' ? 25 : 50; bodytext = "" betreff = "" @@ -100,7 +101,7 @@ Beobachtergruppe Sternwarte Welzheim` async function storeAbsage(ids) { const dt = DateTime.now() const jetzt = dt.toFormat('yyyy-LL-dd HH:mm') - const update = { cmd: 'UPDATE', field: 'abgesagt', ids: ids, values: [`"${jetzt}"`] }; + const update = { cmd: 'UPDATE_TLN_BULK', field: 'abgesagt', ids: ids, values: [`"${jetzt}"`] }; await putToDbase(update); abgesagt = jetzt } @@ -123,7 +124,7 @@ Beobachtergruppe Sternwarte Welzheim` const austragen = async (teilnehmer) => { let update = {cmd: 'DELETEONE', id: parseInt(teilnehmer.id)} const erg1 = await putToDbase(update) -// update = {cmd: 'UPDATECOUNT',date: parseInt(teilnehmer.fdatum), anzahl: parseInt(teilnehmer.anzahl)} + update = {cmd: 'UPDATECOUNT', date: parseInt(teilnehmer.fdatum), anzahl: parseInt(teilnehmer.anzahl)} const erg2 = await putToDbase(update) console.log("Storno Ergebisse: ",erg1,erg2) showAktAnmeldungen(actualdate) @@ -146,6 +147,7 @@ Beobachtergruppe Sternwarte Welzheim` liste.emails.push(e.email); liste.ids.push(e.id); abgesagt = e.abgesagt ? e.abgesagt.slice(0,16) : null + abgesagt = (abgesagt === '1900-01-01 00:00') ? null : abgesagt // const selected = e.teilgenommen === "1" ? "checked" : ""; const row = document.createElement('tr'); @@ -382,10 +384,14 @@ Beobachtergruppe Sternwarte Welzheim` // t -> Uhrzeit // Return // neu formatierter Datums-String - const bauDate = (w,d,t) => { - let dd = d.replace(/^(\d{4})(\d{2})(\d{2})$/, '$3.$2.$1',); - let dt = w.substr(0,2) + ', ' + dd + ' ' + t.substr(0,2) + ':00'; - return dt; + const bauDate = (w, d, t) => { + const ds = String(d ?? ''); + const ts = String(t ?? ''); + const ws = String(w ?? ''); + const dd = ds.replace(/^(\d{4})(\d{2})(\d{2})$/, '$3.$2.$1'); + const hh = ts.substr(0, 2); + const ww = ws.substr(0, 2); + return `${ww}, ${dd} ${hh}:00`; } diff --git a/sternwarte/javascript/anmeldung.js b/sternwarte/javascript/anmeldung.js deleted file mode 100644 index 305e7d2..0000000 --- a/sternwarte/javascript/anmeldung.js +++ /dev/null @@ -1,471 +0,0 @@ -// anmeldung.js rxf 2020-10.12 -// Dynamik für die Anmelde-Seite -// - -$(document).ready(() => { - - const ajaxURL="../DB4js.php"; - const maxPersonen = 10; - - const dummyTln = { - name:"Zuname{z}", - vorname:"", - email:"rxf{z}@gmx.de", - telefon:"0711123456789", - plz:"12345", - stadt:"Ort{z}", - strasse:"Straße {z}", - fid: "", - anzahl:1, - teilgenommen: 0, - remarks:"Bemerkung Nr {z}", - abgesagt: 0, - angemeldet: moment().format("YYYY-MM-DD") - }; - - let aktualTln = { - name:"", - vorname:"", - email:"", - telefon:"", - plz:"", - stadt:"", - strasse:"", - fid: "", - anzahl:1, - teilgenommen: 0, - remarks:"", - abgesagt: 0, - angemeldet: "" - }; - - const mandatory = { - name:true, - vorname:false, - email:true, - telefon:false, - plz:true, - stadt:true, - strasse:true, - fid: false, - anzahl:false, - teilgenommen: false, - remarks:false, - abgesagt: false, - angemeldet: true - }; - - let allParticipants = []; - let errtext = ""; - - - // Von der Datenbank Werte abholen - // Param: - // body: Object mit cmd und param - // Return: - // angeforderte Daten als JSON - const fetchFromDbase = async (body) => { - const response = await fetch(ajaxURL,{ - method: 'POST', - headers: {'Content-Type': 'application/js'}, - body: JSON.stringify(body) - }); - return await response.json(); - } - - - // In die Datenbank Werte eintragen - // Param: - // body: Object mit cmd und param - // Return: - // angeforderte Daten als JSON - const putToDbase = async (body) => { - const response = await fetch(ajaxURL,{ - method: 'POST', - headers: {'Content-Type': 'application/js'}, - body: JSON.stringify(body) - }); - return await response.json(); - } - - - // Beim Senden der Anmeldeseite die Nummer der Führung mit schicken - $('form').submit((event) => { - let nr = $('#ftermin').find(':selected'); - console.log('nr: ', nr[0].value); - $('#fid').val(nr[0].value); - }); - - - // zum Testen die Anmelde-Seite automatisch ausfüllen - $('#autofillbutton').click(() => { - let rand = Math.floor(Math.random() * 100); - for (let f in dummyTln) { - if (f=='fid') { - continue; - } - let x = dummyTln[f].toString(); - aktualTln[f] = x.replace("{z}",rand); - $('#'+f).val(x.replace("{z}",rand)); - } - }); - - - // Aus dem rohen Führungsdatum von der Datenbank ein besser - // leserliches Format erzeugen - // Params: - // w -> Wocjentag - // d -> Datum in DBase-Format - // t -> Uhrzeit - // Return - // neu formatierter Datums-String - const bauDate = (w,d,t) => { - let dd = d.replace(/^(\d{4})(\d{2})(\d{2})$/, '$3.$2.$1',); - return w.substr(0,2) + ', ' + dd + ' ' + t; - } - - - // Aus der Datenbank die nächsten 'n' Führungsdaten holen und - // in den