Renames in wrreport.body.php
[philipp/winterrodeln/mediawiki_extensions/wrreport.git] / wrreport.body.php
index 9bc63a56b25689e3397f7b0ff02a9fe26b7847ab..9c3e839493172046bfec5d4d8e27de35d419d7a9 100644 (file)
@@ -1,18 +1,23 @@
 <?php
 
 
-$wrReportMarkerList = array();
-
+// Init
+// ----
 
 function wrReportParserInit() {
        global $wgParser;
-       $wgParser->setHook('bahnberichtformular', 'wrReportFormRender');
-       $wgParser->setHook('bahnberichte', 'wrReportTableRender');
+       $wgParser->setHook('bahnberichtformular', 'bahnberichtformularParserHook');
+       $wgParser->setHook('bahnberichte', 'bahnberichteParserHook');
+       $wgParser->setHook('bahnbewertung', 'bahnbewertungParserHook');
        return true;
 }
 
 
-/// \todo: Remove this function: The table function could output wikitext directly.
+// Tool functions
+// --------------
+
+/// \brief This function is used to translate WikiText to HTML. Normally it should be avoided to do this
+/// but I found situations where I did not find an other possibility.
 function wrReportSandboxParse($wikiText) {
         global $wgTitle, $wgUser;
         $myParser = new Parser();
@@ -23,12 +28,39 @@ function wrReportSandboxParse($wikiText) {
 }
 
 
+/// List of markers - used by the functions replaceByMarker and wrReportAfterTidy
+$wrReportMarkerList = array();
+
+
+/// Returns a marker for a text and back-replaces the text in wrReportAfterTidy
+function replaceByMarker($text, $marker = 'marker') {
+       $marker = $marker . mt_rand(1e5, 1e7);
+       global $wrReportMarkerList;
+       $wrReportMarkerList[$marker] = $text;
+       return $marker;
+}
+
+
+/// Replaces the markers by its contents
+function wrReportAfterTidy(&$parser, &$text) {
+        // find markers in $text
+        // replace markers with actual output
+        global $wrReportMarkerList;
+        foreach ($wrReportMarkerList as $marker => $html) $text = str_replace($marker, $html, $text);
+        return true;
+}
+
+
+
+// Render Functions
+// ----------------
+
 /// \brief Returns a form to enter a report (string containing HTML).
 ///
 /// All parameters have to be UTF-8 encoded.
 /// \param $page_title Name of the sledding run.
 /// \return UTF-8 encoded HTML form
-function wrRenderReportForm($hide_save_button = TRUE, $page_id = NULL, $page_title = NULL, $date_report = NULL, $condition = NULL, $description = NULL, $author_name = NULL, $page_title_list = NULL) {
+function wrReportFormRender($hide_save_button = TRUE, $page_id = NULL, $page_title = NULL, $date_report = NULL, $condition = NULL, $description = NULL, $author_name = NULL, $page_title_list = NULL) {
        if ($page_id) $page_id = (int) $page_id;
        if ($page_title) $page_title = htmlspecialchars($page_title);
        // Date options
@@ -88,17 +120,14 @@ function wrRenderReportForm($hide_save_button = TRUE, $page_id = NULL, $page_tit
 </table>
 </form>
 EOT;
-       $marker = 'wrReportFormMarker' . mt_rand(1e5, 1e7);
-       global $wrReportMarkerList;
-       $wrReportMarkerList[$marker] = $form;
-       return $marker;
+       return $form;
 }
 
 
 
 /// \brief sub-function of wrRenderReportTable
 /// \return UTF-8 encoded titles of HTML table
-function wrRenderReportTableTitle($page_id, $page_title, $date_report, $date_entry, $date_invalid, $condition, $description, $author_name) {
+function wrReportTableTitleRender($page_id, $page_title, $date_report, $date_entry, $date_invalid, $condition, $description, $author_name) {
        $out = '<tr>';
        if ($page_id) $out .= '<th>ID</th>';
        if ($page_title) $out .= '<th>Bahn</th>';
@@ -113,7 +142,7 @@ function wrRenderReportTableTitle($page_id, $page_title, $date_report, $date_ent
 
 
 /// sub-function of wrRenderReportTable
-function wrRenderReportTableRow($page_id, $page_title, $date_report, $date_entry, $date_invalid, $condition, $description, $author_name) {
+function wrReportTableRowRender($page_id, $page_title, $date_report, $date_entry, $date_invalid, $condition, $description, $author_name) {
        $out = "<tr>";
        if (!is_null($page_id)) $out .= '<td>' . $page_id . '</td>';
        if (!is_null($page_title)) $out .= '<td>' . wrReportSandboxParse('[[' . $page_title . ']]') . '</td>';
@@ -133,7 +162,7 @@ function wrRenderReportTableRow($page_id, $page_title, $date_report, $date_entry
 /// 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
-function wrRenderReportTable($page_title = NULL) {
+function wrReportTableRender($page_title = NULL) {
        $out = '';
        $dbr = wfGetDB(DB_SLAVE);
        $conditions = array();
@@ -142,11 +171,11 @@ function wrRenderReportTable($page_title = NULL) {
        $admin = is_null($page_title);
        if ($res->numRows() > 0) {
                $out .= "<table class=\"wrreporttable\">\n";
-               $out .= wrRenderReportTableTitle($admin, $admin, TRUE, $admin, $admin, TRUE, TRUE, TRUE);
+               $out .= wrReportTableTitleRender($admin, $admin, TRUE, $admin, $admin, TRUE, TRUE, TRUE);
                while ($row = $dbr->fetchObject($res)) {
                        $author = $row->author_name;
                        if ($row->author_username) $author .= ' (' . $row->author_username . ')';
-                       $out .= wrRenderReportTableRow($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 .= 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 {
@@ -157,18 +186,37 @@ function wrRenderReportTable($page_title = NULL) {
 }
 
 
-/// Is called when the tag <bahnberichte/> is encounted.
-function wrReportFormRender($input, $args, $parser) {
-       return wrRenderReportForm(TRUE, $parser->getTitle()->getArticleID(), $parser->getTitle()->getText());
+// Parser Hook Functions
+// ---------------------
+
+/// \brief Is called when the tag <bahnberichtformular/> is encountered.
+///
+/// The current page name is taken.
+function bahnberichtformularParserHook($input, $args, $parser) {
+       return replaceByMarker(wrReportFormRender(TRUE, $parser->getTitle()->getArticleID(), $parser->getTitle()->getText()));
 }
 
 
+/// \brief Is called when the tag <bahnberichte/> is encountered.
+///
+/// The current page name is taken.
+function bahnberichteParserHook($input, $args, &$parser) {
+       return wrReportTableRender($parser->getTitle()->getText());
+}
 
-function wrReportTableRender($input, $args, &$parser) {
-       return wrRenderReportTable($parser->getTitle());
+
+/// \brief Is called when the tag <bahnbewertung/> is encountered.
+///
+/// * <bahnbewertung/>: The current page name is taken.
+/// * <bahnbewertung>page_name</bahnbewertung>: The given page name is taken.
+function bahnbewertungParserHook($input, $args, &$parser) {
+       if (!$input) $input = $parser->getTitle()->getText();
+       return wrReportConditionRender($input);
 }
 
 
+// Special page
+// ------------
 
 /// Specal Page to show reports
 class WrReport extends SpecialPage {
@@ -225,10 +273,10 @@ class WrReport extends SpecialPage {
                        }
                        if ($action == 'preview') {
                                $wgOut->addHTML("<h3>Vorschau (noch nicht gespeichert)</h3>\n");
-                               $wgOut->addHTML("<table>\n");
+                               $wgOut->addHTML("<table class=\"wrreporttable\">\n");
                                $wgOut->addHTML(wrRenderReportTableTitle(FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE));
-                               $wgOut->addHTML(wrRenderReportTableRow($page_id, $page_title, $date_report, NULL, NULL, $condition, $description, $author_name));
-                               $wgOut->addHTML("</table>\n");
+                               $wgOut->addHTML(wrRenderReportTableRow(NULL, $page_title, $date_report, NULL, NULL, $condition, $description, $author_name));
+                               $wgOut->addHTML("</table>\n\n\n");
                                $wgOut->addHTML(utf8_encode("<h3>Speichern oder Ă„ndern</h3>\n"));
                                $wgOut->addHTML(wrRenderReportForm(FALSE, $page_id, $page_title, $date_report, $condition, $description, $author_name));
                        } 
@@ -240,13 +288,4 @@ class WrReport extends SpecialPage {
 }
 
 
-function wrReportAfterTidy(&$parser, &$text) {
-        // find markers in $text
-        // replace markers with actual output
-        global $wrReportMarkerList;
-        foreach ($wrReportMarkerList as $marker => $html) $text = str_replace($marker, $html, $text);
-        return true;
-}
-
-
 ?>