$buttons .= '" /> ';
if (!$hide_save_button) $buttons .= '<input name="store" type="submit" value="Speichern"/>';
+ // TODO: Get rid of absolute URL
$form = <<<EOT
<form action="/wiki/Spezial:Bahnberichte" method="post">
<table class="wrreportform" summary="Formular zum Eintragen eines Rodelbahnberichtes">
$delete_reason_public_html = htmlspecialchars($delete_reason_public);
$delete_person_name_html = htmlspecialchars($delete_person_name);
+ // TODO: Get rid of absolute URL
$form = <<<EOT
<form action="/wiki/Spezial:Bahnberichte" method="post">
<table class="wrreportform" summary="$summary">
-/// \brief sub-function of wrReportTableRender - renders the table head
-///
-/// The input variables are either NULL (-> the column is not present) or a UTF-8 encoded string (that is ignored ;-) ).
-/// \return UTF-8 encoded titles of HTML table
-/// \todo: Delete
-function wrReportTableTitleRender($page_id, $page_title, $date_report, $date_entry, $date_invalid, $condition, $description, $author_name, $delete = NULL) {
- $out = '<tr>';
- if ($page_id) $out .= '<th>ID</th>';
- if ($page_title) $out .= '<th>Bahn</th>';
- if ($date_report) $out .= '<th>Datum</th>';
- if ($date_entry) $out .= '<th>Datum Eintrag</th>';
- if ($date_invalid) $out .= '<th>Datum Ungültig</th>';
- if ($condition) $out .= '<th>Zustand</th>';
- if ($description) $out .= '<th>Beschreibung</th>';
- if ($author_name) $out .= '<th>Autor</th>';
- if ($delete) $out .= '<th>Aktion</th>';
- return utf8_encode($out . "</tr>\n");
-}
-
-
-/// \brief sub-function of wrReportTableRender - renders a table row
-///
-/// * The in- and output parameters are expected to be UTF-8 encoded.
-/// * If one parameter is NULL, the corresponding column is omitted.
-/// \param $page_id
-/// \param $page_title
-/// \param $date_report
-/// \param $date_entry
-/// \param $date_invalid
-/// \param $condition
-/// \param $description
-/// \param $author_name
-/// \param $delete
-/// \todo delete
-function wrReportTableRowRender($page_id, $page_title, $date_report, $date_entry, $date_invalid, $condition, $description, $author_name, $delete = NULL) {
- $out = "<tr>";
- if (!is_null($page_id)) $out .= '<td>' . $page_id . '</td>';
- if (!is_null($page_title)) $out .= '<td>' . wrReportSandboxParse('[[' . $page_title . ']]') . '</td>';
- $dayOfWeek = array('Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So');
- $date_report = strtotime($date_report);
- $date_report = $dayOfWeek[strftime('%u', $date_report)-1] . strftime(', %d.%m.', $date_report);
- $out .= '<td>' . $date_report . '</td>';
- if (!is_null($date_entry)) $out .= '<td>' . date('Y-m-d, H:i', strtotime($date_entry)) . '</td>';
- if (!is_null($date_invalid)) $out .= '<td>' . date('Y-m-d, H:i', strtotime($date_invalid)) . '</td>';
- global $wrConditions;
- $condition_text = '---';
- if (isset($wrConditions[$condition])) $condition_text = $wrConditions[$condition];
- $out .= '<td>' . htmlspecialchars($condition_text) . '</td>';
- $out .= '<td class="wrreportdescription">' . wrReportSandboxParse($description) . '</td>';
- $out .= '<td>' . htmlspecialchars($author_name) . '</td>';
- if (!is_null($delete)) $out .= '<td>(Löschen)</td>';
- $out .= "</tr>\n";
- return $out;
-}
-
-
-/// \brief It returns a table (string containing HTML) showing the results.
-///
-/// Is called when the tag <bahnberichte/> is encounted and renders a table /
-/// \param $page_title If the name is specified (UTF-8 encoded), only reports of this "page" (e.g. 'Birgitzer Alm') is shown. Default: NULL
-/// \return UTF-8 encoded HTML result table
-/// \todo delte
-function wrReportTableRender($page_title = NULL) {
- $out = '';
- $dbr = wfGetDB(DB_SLAVE);
- $conditions = array();
- if ($page_title) $conditions['page_title'] = $page_title;
- $res = $dbr->select('wrreport', array('id', 'page_title', 'date_report', 'date_entry', 'date_invalid', 'condition', 'description', 'author_name', 'author_username'), $conditions, $fname = 'Database::select', $options = array('ORDER BY' => 'date_report desc, date_entry desc'));
- $admin = is_null($page_title);
- if ($res->numRows() > 0) {
- $out .= "<table class=\"wrreporttable\">\n";
- $out .= wrReportTableTitleRender($admin, $admin, TRUE, $admin, $admin, TRUE, TRUE, TRUE);
- while ($row = $dbr->fetchObject($res)) {
- $author = $row->author_name;
- $out .= wrReportTableRowRender($admin ? $row->id : NULL, $admin ? $row->page_title : NULL, $row->date_report, $admin ? $row->date_entry : NULL, $admin ? $row->date_invalid : NULL, $row->condition, $row->description, $author);
- }
- $out .= "</table>\n";
- } else {
- $out .= wrReportSandboxParse("''Es wurden keine Bahnberichte in der Datenbank gefunden.''\n\n");
- }
- $dbr->freeResult($res);
- return $out;
-}
-
-
// Constants for wrReportTableRender2
define(WRREPORT_COMPACT_PAGE, 1); ///< includes the page name
define(WRREPORT_COMPACT, 2); ///< shown on a single page
else $out .= htmlspecialchars($author_name);
$out .= '</td>';
// actions
- if ($showActions) $out .= '<td>' . utf8_encode('(Löschen)') . '</td>';
+ // wiki/Spezial:Bahnberichte?action=deletepreview&reportid=42
+ if ($showActions) {
+ if (!isset($row['delete_date'])) $out .= '<td><a href="/wiki/Spezial:Bahnberichte?action=deletepreview&reportid=' . $row['id'] . '">' . utf8_encode('Löschen...') . '</a></td>'; // TODO: Get rid of absolute URL
+ }
return $out . "</tr>\n";
}
if ($wgWrReportMode == 'summer') return wrReportSandboxParse(utf8_encode("''An dieser Stelle kann während des Winters die Schneelage von Rodelbahnen eingetragen werden.''\n\n"));
if ($wgWrReportMode == 'deny') return wrReportSandboxParse(utf8_encode("''Rodelbahnberichte sind derzeit leider nicht erlaubt.''\n\n"));
- // The following was changed because for testing purposes, we have 'loggedin' instead of 'summer' in the $wgWrReportMode. TODO: Change back!
- // if ($wgWrReportMode == 'loggedin' && !$wgUser->isLoggedIn()) return wrReportSandboxParse(utf8_encode("''Derzeit sind Rodelbahnberichte nur für angemeldete Benutzer erlaubt.''\n\n"));
- if ($wgWrReportMode == 'loggedin' && !$wgUser->isLoggedIn()) return wrReportSandboxParse(utf8_encode("''An dieser Stelle kann während des Winters die Schneelage von Rodelbahnen eingetragen werden.''\n\n"));
+ if ($wgWrReportMode == 'loggedin' && !$wgUser->isLoggedIn()) return wrReportSandboxParse(utf8_encode("''Derzeit sind Rodelbahnberichte nur für angemeldete Benutzer erlaubt.''\n\n"));
if (in_array($parser->getTitle()->getText(), $wgWrReportBlackListAll)) return wrReportSandboxParse(utf8_encode("''Bei dieser Rodelbahn dürfen derzeit leider keine Rodelbahnberichte abgegeben werden.''\n"));
if (!$wgUser->isLoggedIn() && in_array($parser->getTitle()->getText(), $wgWrReportBlackListStrangers)) return wrReportSandboxParse(utf8_encode("''Bei der angegebenen Rodelbahn dürfen derzeit nur angemeldete Benutzer Rodelbahnberichte abgebe.''\n\n"));
///
/// The current page name is taken.
function bahnberichteParserHook($input, $args, &$parser) {
- return wrReportTableRender($parser->getTitle()->getText()); // TODO: Replace
+ $page_title = $parser->getTitle()->getText();
+ $conditions = array('page_title' => $page_title, 'date_invalid > now()');
+ $order = 'date_report desc, date_entry desc';
+ $rows = wrReportGetReports($conditions, $order);
+ if (count($rows) == 0) return wrReportSandboxParse("''Es wurden keine Bahnberichte in der Datenbank gefunden.''\n\n");
+ return wrReportTableRender2($rows, WRREPORT_COMPACT, true);
}
// Action view
if ($action == 'view') {
- $wgOut->addHTML(wrReportTableRender()); // TODO: Replace
- }
-
- elseif ($action == 'test') { // TODO: delete
- $conditions = array('page_title' => 'Axamer Lizum', 'date_invalid > now()');
- $order = 'date_report desc, date_entry desc';
+ $conditions = array('date_invalid > now()');
+ $order = 'date_entry desc, date_report desc';
$rows = wrReportGetReports($conditions, $order);
- $format = WRREPORT_COMPACT_PAGE; // WRREPORT_COMPACT WRREPORT_DETAIL
- $format = WRREPORT_DETAIL;
- $wgOut->addHTML(wrReportTableRender2($rows, $format, True));
- $wgOut->addHTML('OK');
+ if (count($rows) == 0) $wgOut->addWikiText("''Es wurden keine Bahnberichte in der Datenbank gefunden.''\n\n");
+ $wgOut->addHTML(wrReportTableRender2($rows, WRREPORT_DETAIL, True));
}
-
+
// Action deletepreview or delete
elseif ($action == 'deletepreview' || $action == 'delete') {
$reportid = (int) $wgRequest->getText('reportid');
$this->execute($par, 'showerror', utf8_encode('Der angegebende Bericht ist bereits gelöscht.'));
return;
}
- // $row = array_fill_keys(wrReportGetColumnNames(), NULL); // TODO: Delete
$delete_reason_public = $wgRequest->getText('delete_reason_public');
$delete_person_name = $wgRequest->getText('delete_person_name');
$delete_invisible = $wgRequest->getText('delete_invisible') ? TRUE : FALSE;
global $wgWrReportDeleteMode;
if ($wgWrReportDeleteMode == 'deny') $errorMsg = utf8_encode('Das Löschen von Rodelbahnberichten ist derzeit leider nicht erlaubt.');
elseif ($wgWrReportDeleteMode == 'loggedin' && !$wgUser->isLoggedIn()) $errorMsg = utf8_encode('Derzeit dürfen nur angemeldete Benutzer Rodelbahnberichte löschen.');
- elseif (!$delete_person_name && !$delete_reason_public) $errorMsg = utf8_encode('Es müssen sowohl die Begründung als auch der Name angegeben werden.');
+ elseif (!$delete_person_name || !$delete_reason_public) $errorMsg = utf8_encode('Es müssen sowohl die Begründung als auch der Name angegeben werden.');
if ($errorMsg) {
- $this->execute($par, 'preview', $errorMsg);
+ $this->execute($par, 'deletepreview', $errorMsg);
return;
}
$wgOut->addWikiText(utf8_encode('<div class="successbox">Der Bahnbericht für [[') . $row['page_title'] . '#' . $wrShowReportsSection . '|' . $row['page_title'] . utf8_encode("]] wurde erfolgreich gelöscht.</div>\n"));
}
if ($action == 'deletepreview') {
+ $preview_msg = "Bitte nur dann einen Bericht löschen, wenn Gründe vorliegen wie\n" .
+ "* Beschimpfungen, Verleumdungen (wir wollen ''Rodelbahnen'' bewerten, nicht Personen)\n" .
+ "* Werbung oder Spam (wenn jemand allerdings ''werbend'' zu gute Noten vergibt, lieber eigenen Bericht eintragen als löschen).\n\n";
+ $wgOut->addWikiText(utf8_encode($preview_msg));
$wgOut->addWikiText(utf8_encode("== Schneelagebericht, um den es beim Löschen geht ==\n"));
$format = WRREPORT_COMPACT_PAGE;
$wgOut->addHTML(wrReportTableRender2(array($row), $format, FALSE));
- $wgOut->addWikiText(utf8_encode("\n\n== Vorschau (noch nicht gelöscht) ==\n"));
+ $wgOut->addWikiText(utf8_encode("\n\n== Vorschau (derzeit noch nicht gelöscht) ==\n"));
$row['delete_date'] = date('c');
$row['delete_reason_public'] = $delete_reason_public;
$row['delete_person_name'] = $delete_person_name;
$row['delete_invisible'] = $delete_invisible;
- $wgOut->addHTML("<table class=\"wrreporttable\">\n");
$wgOut->addHTML(wrReportTableRender2(array($row), $format, FALSE));
- $wgOut->addHTML("</table>");
- $wgOut->addWikiText("\n");
$wgOut->addWikiText(utf8_encode("== Löschen ==\n"));
$wgOut->addWikiText(utf8_encode("Die Begründung und der Name scheinen nicht in den normalen Listen auf, allerdings dienen sie den Administratoren dazu, sich schnell einen Überblick zu verschaffen, wer was warum gelöscht hat.\n"));
$wgOut->addHTML(wrDeleteReportFormRender($reportid, $delete_person_name, $delete_reason_public, $delete_invisible));
'author_ip' => $_SERVER['REMOTE_ADDR'],
'author_userid' => $author_userid,
'author_username' => $author_username
+ // 'delete_*' => // use database defaults (NULL)
)
);
}
if ($action == 'preview') {
$wgOut->addWikiText(utf8_encode("== Vorschau (noch nicht gespeichert) ==\n"));
- $wgOut->addHTML("<table class=\"wrreporttable\">\n");
- $wgOut->addHTML(wrReportTableTitleRender(FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE));
- $wgOut->addHTML(wrReportTableRowRender(NULL, $page_title, $date_report, NULL, NULL, $condition, $description, $author_name));
- $wgOut->addHTML("</table>");
- $wgOut->addWikiText("\n");
+ $format = WRREPORT_COMPACT_PAGE;
+ $row = array_fill_keys(wrReportGetColumnNames(), NULL);
+ $row['page_title'] = $page_title;
+ $row['date_report'] = $date_report;
+ $row['condition'] = $condition;
+ $row['description'] = $description;
+ $row['author_name'] = $author_name;
+ $wgOut->addHTML(wrReportTableRender2(array($row), $format, FALSE));
$wgOut->addWikiText(utf8_encode("== Speichern oder Ändern ==\n"));
$wgOut->addHTML(wrReportFormRender(FALSE, $page_title, $date_report, $condition, $description, $author_name));
}