/** * @param int $id * @param bool $verbose */ private function recalcAeText($id, $verbose) { /** @var Aenderungsantrag $aenderungsantrag */ $aenderungsantrag = Aenderungsantrag::model()->findByPk($id); if (!$aenderungsantrag) { die("Änderungsantrag nicht gefunden\n"); } $aenderungsantrag->antrag->text = HtmlBBcodeUtils::bbcode_normalize($aenderungsantrag->antrag->text); $aenderungsantrag->antrag->save(); $aenderungsantrag->calcDiffText(); $aenderungsantrag->save(false); if ($verbose) { echo "Erledigt. Neuer Änderungstext:\n"; echo $aenderungsantrag->aenderung_text . "\n"; } }
public function run($args) { foreach ($GLOBALS["TESTS"] as $test) { HtmlBBcodeUtils::initZeilenCounter(); $res = HtmlBBcodeUtils::bbcode2html_absaetze($test["src"], $test["presentation_hacks"], $test["line_length"]); $allesrichtig = true; if (count($res["html"]) != count($test["expected_html"])) { $allesrichtig = false; } if (count($res["html_plain"]) != count($test["expected_plain"])) { $allesrichtig = false; } if ($allesrichtig) { foreach ($res["html"] as $i => $line) { if ($test["expected_html"][$i] !== $line) { $allesrichtig = false; } } foreach ($res["html_plain"] as $i => $line) { if ($test["expected_plain"][$i] !== $line) { $allesrichtig = false; } } } if ($allesrichtig) { echo "Korrekt\n"; } else { echo "FEHLER!\n"; echo "Erwartet (HTML):\n"; var_dump($test["expected_html"]); echo "Bekommen (HTML):\n"; var_dump($res["html"]); echo "Erwartet (Plain): \n"; var_dump($test["expected_plain"]); echo "Bekommen (Plain):\n"; var_dump($res["html_plain"]); echo "\n"; } } }
public function run($args) { foreach ($GLOBALS["TESTS"] as $test) { $x = HtmlBBcodeUtils::text2zeilen($test["src"], 80, $test["is_bbcode"], false, true); $correct = true; if (count($x) != count($test["expected"])) { $correct = false; } else { for ($i = 0; $i < count($test["expected"]); $i++) { if ($test["expected"][$i] != $x[$i]) { $correct = false; } } } if ($correct) { echo "Korrekt\n"; } else { $x = HtmlBBcodeUtils::text2zeilen($test["src"], 80, $test["is_bbcode"], true, true); var_dump($x); } echo "\n"; } }
echo ", " . HtmlBBcodeUtils::formatMysqlDate($veranstaltung->datum_von) . " - " . HtmlBBcodeUtils::formatMysqlDate($veranstaltung->datum_bis); } else { echo ", " . HtmlBBcodeUtils::formatMysqlDate($veranstaltung->datum_von); } } $editlink = $einleitungstext->getEditLink(); if ($editlink !== null) { echo "<a style='font-size: 10px;' href='" . CHtml::encode($this->createUrl($editlink[0], $editlink[1])) . "'>Bearbeiten</a>"; } ?> </h1> <div class='content' style='overflow: auto;'> <?php if ($veranstaltung->antragsschluss != "") { echo '<p class="antragsschluss_kreis">Antrags­schluss: ' . HtmlBBcodeUtils::formatMysqlDateTime($veranstaltung->antragsschluss) . "</p>\n"; } echo $einleitungstext->getHTMLText(); ?> </div> <?php if (veranstaltungsspezifisch_hat_tags_startseite($this->veranstaltung)) { require_once __DIR__ . "/index_layout_tags.php"; } elseif ($this->veranstaltung->getEinstellungen()->bdk_startseiten_layout) { require_once __DIR__ . "/index_layout_bdk.php"; } else { require_once __DIR__ . "/index_layout_std.php"; } ?> <?php
} $doc->setCell($row, $COL_AE_NR, OdsTemplateEngine::$TYPE_TEXT, $ae->revision_name); $doc->setCell($row, $COL_ANTRAGSTELLERIN, OdsTemplateEngine::$TYPE_TEXT, implode(", ", $initiatorInnen_namen)); $doc->setCell($row, $COL_KONTAKT, OdsTemplateEngine::$TYPE_TEXT, implode("\n", $initiatorInnen_kontakt)); $doc->setCell($row, $COL_ZEILE, OdsTemplateEngine::$TYPE_TEXT, $ae->getFirstDiffLine()); $absae = $ae->getAntragstextParagraphs_diff(); $diffhtml = ""; foreach ($absae as $i => $abs) { if ($abs !== null) { $diffhtml .= $abs->getDiffHTMLForODS(); } } if ($ae->aenderung_begruendung_html) { $text_begruendung = $ae->aenderung_begruendung; } else { $text_begruendung = '<div>' . HtmlBBcodeUtils::bbcode2html($ae->aenderung_begruendung) . '</div>'; } if (!isset($COL_BEGRUENDUNG)) { $text = '<p><strong>Änderungsantrag:</strong></p>' . $diffhtml; $text .= '<p><strong>Begründung:</strong></p>' . $text_begruendung; $doc->setCell($row, $COL_ANTRAGSTEXT, OdsTemplateEngine::$TYPE_HTML, $text); } else { if ($DEBUG) { echo CHtml::encode($text_begruendung); } $doc->setCell($row, $COL_ANTRAGSTEXT, OdsTemplateEngine::$TYPE_HTML, $diffhtml); $doc->setCell($row, $COL_BEGRUENDUNG, OdsTemplateEngine::$TYPE_HTML, $text_begruendung); } } if (!$antraege_separat) { /** @var int $antrag_row_from */
} echo ">"; echo "<p class='datum'>" . HtmlBBcodeUtils::formatMysqlDate($aenderungsantrag->antrag->datum_einreichung) . "</p>\n"; echo "<p class='titel'>\n"; echo CHtml::link(CHtml::encode($aenderungsantrag->revision_name . " zu " . $aenderungsantrag->antrag->nameMitRev()), $this->createUrl("aenderungsantrag/anzeige", array("antrag_id" => $aenderungsantrag->antrag->id, "aenderungsantrag_id" => $aenderungsantrag->id))); echo CHtml::link("PDF", $this->createUrl("aenderungsantrag/pdf", array("antrag_id" => $aenderungsantrag->antrag->id, "aenderungsantrag_id" => $aenderungsantrag->id)), array("class" => "pdfLink")); echo "</p>\n"; echo "<p class='info'>"; $text = $aenderungsantrag->aenderung_text . "\n" . $aenderungsantrag->aenderung_begruendung; $last_found = 0; for ($i = 0; $i < 3 && $last_found !== false; $i++) { $last_found = mb_stripos($text, $suchbegriff, $last_found); if ($last_found !== false) { $from = $last_found > 65 ? $last_found - 65 : 0; $substr = CHtml::encode(HtmlBBcodeUtils::removeBBCode(mb_substr($text, $from, $last_found > 65 ? 65 : $last_found))); $substr .= "<strong>" . CHtml::encode(mb_substr($text, $last_found, mb_strlen($suchbegriff))) . "</strong>"; $substr .= CHtml::encode(HtmlBBcodeUtils::removeBBCode(mb_substr($text, $last_found + mb_strlen($suchbegriff), 65))); echo "<i>..." . $substr . "...</i><br style='margin-bottom: 3px;'>"; } $last_found++; } echo "</p>"; echo "</li>"; } echo "</ul>"; } else { echo "<div class='content'><i>keine Anträge gefunden</i></div> "; } ?>
<?php /** * @var IndexController $this * @var Antrag[] $antraege * @var Aenderungsantrag[] $aenderungsantraege */ Header("Content-Type: text/plain; charset=UTF-8"); foreach ($antraege as $antrag) { echo $antrag->name . "\n"; echo HtmlBBcodeUtils::removeBBCode($antrag->text) . "\n\n"; echo HtmlBBcodeUtils::removeBBCode($antrag->begruendung) . "\n\n\n"; } foreach ($aenderungsantraege as $ae) { $diff = $ae->getDiffParagraphs(); foreach ($diff as $line) { if ($line != "") { echo HtmlBBcodeUtils::removeBBCode($line) . "\n\n"; } } echo HtmlBBcodeUtils::removeBBCode($ae->aenderung_begruendung) . "\n\n\n"; }
<th><?php echo GxHtml::encode($data->getAttributeLabel('datum_einreichung')); ?> :</th> <td><?php echo HtmlBBcodeUtils::formatMysqlDateTime($data->datum_einreichung); ?> </td> </tr> <tr> <th><?php echo GxHtml::encode($data->getAttributeLabel('datum_beschluss')); ?> :</th> <td><?php echo HtmlBBcodeUtils::formatMysqlDate($data->datum_beschluss); ?> </td> </tr> <tr> <th>Formate:</th> <td> <?php echo CHtml::link("PDF", $this->createUrl("antrag/pdf", array("antrag_id" => $data->id))); ?> , <a href="<?php echo CHtml::encode($this->createUrl("antrag/plainHtml", array("antrag_id" => $data->id))); ?> " download="<?php echo $data->revision_name;
/** * @static * @param string $text_alt * @param string $text_neu * @param bool $compact * @param int $css_width_hack * @param string $pre_str_html * @param bool $wrapWithCssClass * @param bool $debug * @return string */ public static function renderBBCodeDiff2HTML($text_alt, $text_neu, $compact = false, $css_width_hack = 0, $pre_str_html = "", $wrapWithCssClass = true, $debug = false) { $text_alt = static::bbNormalizeForDiff($text_alt); $text_neu = static::bbNormalizeForDiff($text_neu); $diff = DiffUtils::getTextDiff($text_alt, $text_neu); if ($compact) { $renderer = new Horde_Text_Diff_Renderer_Inline_Antrag15(); $absatz = $renderer->render($diff); } else { $absatz = DiffUtils::renderAbsatzDiff($diff); } if ($debug) { echo "\n\n============== Nach DIFF ===============\n\n"; var_dump($absatz); } $split_lists = function ($matches) use($debug) { $lis = explode("[*]", $matches["inhalt"]); if (count($lis) == 1) { return $matches[0]; } $output = ""; for ($i = 0; $i < count($lis); $i++) { if ($i == 0) { if (trim($lis[$i]) == "") { $output .= $lis[$i]; } else { $output .= $matches["anfang"] . $lis[$i] . $matches["ende"]; } } elseif ($i == count($lis) - 1) { if (trim($lis[$i]) == "") { $output .= "[*]" . $lis[$i]; } else { $output .= "[*]" . $matches["anfang"] . $lis[$i] . $matches["ende"]; } } else { $output .= "[*]" . $matches["anfang"] . $lis[$i] . $matches["ende"]; } } if ($debug) { echo "-----------------\n"; var_dump($matches); var_dump($lis); var_dump($output); } return $output; }; $absatz = preg_replace_callback("/(?<anfang><del>)(?<inhalt>.*)(?<ende><\\/del>)/siU", $split_lists, $absatz); $absatz = preg_replace_callback("/(?<anfang><ins>)(?<inhalt>.*)(?<ende><\\/ins>)/siU", $split_lists, $absatz); $diffstr = HtmlBBcodeUtils::bbcode2html($absatz); $diffstr = str_ireplace(array("<ins>", "</ins>", "<del>", "</del>"), array("<ins>", "</ins>", "<del>", "</del>"), $diffstr); if ($debug) { echo "\n\n============== In HTML ===============\n\n"; var_dump($diffstr); } static::$ins_mode_active = false; static::$del_mode_active = false; $diffstr = preg_replace_callback("/(<li>)(.*)(<\\/li>)/siuU", function ($matches) { $pos_del_open = mb_stripos($matches[2], "<del>"); $pos_del_close = mb_stripos($matches[2], "</del>"); $pos_ins_open = mb_stripos($matches[2], "<ins>"); $pos_ins_close = mb_stripos($matches[2], "</ins>"); $middle = $matches[2]; if ($pos_del_close !== false && ($pos_del_open === false || $pos_del_open > $pos_del_close)) { $middle = "<del>" . $middle; static::$del_mode_active = false; } if ($pos_del_open !== false && ($pos_del_close === false || $pos_del_open > $pos_del_close)) { $middle .= "</del>"; static::$del_mode_active = true; } if ($pos_del_close === false && $pos_del_open === false && static::$del_mode_active) { $middle = "<del>{$middle}</del>"; } if ($pos_ins_close !== false && ($pos_ins_open === false || $pos_ins_open > $pos_ins_close)) { $middle = "<ins>" . $middle; static::$ins_mode_active = false; } if ($pos_ins_open !== false && ($pos_ins_close === false || $pos_ins_open > $pos_ins_close)) { $middle .= "</ins>"; static::$ins_mode_active = true; } if ($pos_ins_close === false && $pos_ins_open === false && static::$ins_mode_active) { $middle = "<ins>{$middle}</ins>"; } return $matches[1] . $middle . $matches[3]; }, $diffstr); if ($diffstr == "") { $diffstr = HtmlBBcodeUtils::bbcode2html($text_alt); } if ($wrapWithCssClass) { $diffstr = HtmlBBcodeUtils::wrapWithTextClass($pre_str_html . $diffstr, $css_width_hack); } return $diffstr; }
/** * @param Veranstaltung $veranstaltung * @return array */ private function getFeedAntragKommentarData(&$veranstaltung) { $veranstaltung_id = IntVal($veranstaltung->id); $antraege = AntragKommentar::holeNeueste($veranstaltung, 20); $data = array(); foreach ($antraege as $ant) { $data[AntraegeUtils::date_sql2timestamp($ant->datum) . "_kommentar_" . $ant->id] = array("title" => "Kommentar von " . $ant->verfasserIn->name . " zu: " . $ant->antrag->nameMitRev(), "link" => Yii::app()->getBaseUrl(true) . $this->createUrl("antrag/anzeige", array("antrag_id" => $ant->antrag->id, "kommentar_id" => $ant->id, "#" => "komm" . $ant->id)), "dateCreated" => AntraegeUtils::date_sql2timestamp($ant->datum), "content" => HtmlBBcodeUtils::bbcode2html($ant->text)); } return $data; }
} else { $x[] = $unt->getNameMitBeschlussdatum(true); } } } echo implode(", ", $x); ?> </td> </tr> <tr> <th><?php echo GxHtml::encode($data->getAttributeLabel('aenderung_text')); ?> :</th> <td><?php echo HtmlBBcodeUtils::bbcode2html($data->aenderung_text); ?> </td> </tr> <tr> <th><?php echo GxHtml::encode($data->getAttributeLabel('datum_einreichung')); ?> :</th> <td><?php echo GxHtml::encode($data->datum_einreichung); ?> </td> </tr> <tr> <th><?php
} echo "</p>\n"; echo "<p class='info'>von "; $vons = array(); foreach ($antrag->getAntragstellerInnen() as $p) { $vons[] = $p->getNameMitOrga(); } echo implode(", ", $vons); echo ", " . CHtml::encode(IAntrag::$STATI[$antrag->status]); echo "</p>"; if (count($antrag->aenderungsantraege) > 0) { echo "<ul class='aenderungsantraege'>"; $aes = $antrag->sortierteAenderungsantraege(); foreach ($aes as $ae) { echo "<li" . ($ae->status == IAntrag::$STATUS_ZURUECKGEZOGEN ? " class='zurueckgezogen'" : "") . ">"; echo "<span class='datum'>" . HtmlBBcodeUtils::formatMysqlDate($ae->datum_einreichung) . "</span>\n"; $name = trim($ae->revision_name) == "" ? "-" : $ae->revision_name; echo CHtml::link($name, $this->createUrl('aenderungsantrag/anzeige', array("antrag_id" => $ae->antrag->id, "aenderungsantrag_id" => $ae->id))); $vons = array(); foreach ($ae->getAntragstellerInnen() as $p) { $vons[] = $p->getNameMitOrga(); } echo "<span class='info'>" . implode(", ", $vons) . "</span>\n"; echo "</li>\n"; } echo "</ul>"; } echo "</li>\n"; } echo "</ul>"; }
/** * @static * @param string $text * @param bool $praesentations_hacks * @param int $zeilenlaenge * @return array|string[] */ static function bbcode2html_absaetze($text, $praesentations_hacks = false, $zeilenlaenge) { $text = static::bbNormalizeForAbsaetze($text); $x = explode("\n\n", $text); $absaetze_html = array(); $absaetze_bbcode = array(); $absaetze_html_plain = array(); HtmlBBcodeUtils::$br_implicit = $praesentations_hacks ? " <br class='implicit'>" : "<br>"; // wird bei responsiver Ansicht manchmal ausgeblendet HtmlBBcodeUtils::$br_explicit = "<br>"; HtmlBBcodeUtils::$zeilenlaenge = $zeilenlaenge; foreach ($x as $i => $y) { $absaetze_bbcode[] = $y; $abs = HtmlBBcodeUtils::bbcode2html($y); $absaetze_html_plain[] = $abs; if (mb_stripos($abs, "<ul") === 0 || mb_stripos($abs, "<ol") === 0 || mb_stripos($abs, "<blockquote") === 0) { $str_neu = str_ireplace("<ul", "<ul class='text'", $abs); $str_neu = str_ireplace("<ol", "<ol class='text'", $str_neu); $str_neu = str_ireplace("<blockquote", "<blockquote class='text'", $str_neu); $str_neu = preg_replace("/( |<br>)*<\\/li>/", "</li>", $str_neu); $str_neu = preg_replace_callback("/(<(blockquote|li)[^>]*>)(.*)(<\\/\\2>)/siU", function ($matches) { $out = $matches[1]; $zeils = explode("<br>", $matches[3]); $zeils_neu = array(); foreach ($zeils as $zeile) { $x = HtmlBBcodeUtils::text2zeilen($zeile, HtmlBBcodeUtils::$zeilenlaenge - 10, false); $zeils_neu[] = "###ZEILENNUMMER###" . implode(HtmlBBcodeUtils::$br_implicit . "###ZEILENNUMMER###", $x); } $out .= implode("<br>", $zeils_neu); $out .= $matches[4]; return $out; }, $str_neu); } else { $zeils = explode("<br>", $abs); $zeils_neu = array(); foreach ($zeils as $zeile) { $x = HtmlBBcodeUtils::text2zeilen($zeile, HtmlBBcodeUtils::$zeilenlaenge, false); $zeils_neu[] = "###ZEILENNUMMER###" . implode(HtmlBBcodeUtils::$br_implicit . "###ZEILENNUMMER###", $x); } $str_neu = "<div class='text'>"; $str_neu .= implode("<br>", $zeils_neu); $str_neu .= "</div>"; } $str_neu = preg_replace_callback("/###ZEILENNUMMER###/", function () { return "<span class='zeilennummer'>" . HtmlBBcodeUtils::$zeilen_counter++ . "</span>"; }, $str_neu); $absaetze_html[] = $str_neu; } return array("html" => $absaetze_html, "html_plain" => $absaetze_html_plain, "bbcode" => $absaetze_bbcode); }
/** * @param bool $runValidation * @param null $attributes * @return bool */ public function save($runValidation = true, $attributes = null) { HtmlBBcodeUtils::initZeilenCounter(); list($anzahl_absaetze, $anzahl_zeilen) = HtmlBBcodeUtils::getBBCodeStats(trim($this->text), $this->veranstaltung->getEinstellungen()->zeilenlaenge); $this->cache_anzahl_absaetze = $anzahl_absaetze; $this->cache_anzahl_zeilen = $anzahl_zeilen + 1; // + Überschrift Yii::app()->cache->delete("pdf_" . $this->veranstaltung->id); Yii::app()->cache->delete("pdf_" . $this->veranstaltung->id . "_" . $this->id); return parent::save($runValidation, $attributes); }
/** * @return AenderungsantragAbsatz[] */ public function getAntragstextParagraphs_diff() { $abs_alt = $this->antrag->getParagraphs(); $abs_neu = json_decode($this->text_neu); $this->absaetze = array(); if (trim($this->aenderung_metatext) != "") { $a = HtmlBBcodeUtils::bbcode2html_absaetze($this->aenderung_metatext, true, $this->antrag->veranstaltung->getEinstellungen()->zeilenlaenge); foreach ($a["bbcode"] as $i => $b) { $kommentare = array(); foreach ($this->aenderungsantragKommentare as $komm) { if ($komm->absatz == count($this->absaetze)) { $kommentare[] = $komm; } } $this->absaetze[] = new AenderungsantragAbsatz($b, $b, $this->id, count($this->absaetze), null, null, $kommentare); } } for ($i = 0; $i < count($abs_alt); $i++) { $ae_absatz_nr = count($this->absaetze) + $i; if ($abs_neu[$i] == "") { $this->absaetze[] = null; } else { preg_match_all("/<span class='zeilennummer'>([0-9]+)<\\/span>/siu", $abs_alt[$i]->str_html, $matches); $zeile_von = isset($matches[1][0]) ? IntVal($matches[1][0]) : "????"; $zeile_bis = isset($matches[1]) ? $matches[1][count($matches[1]) - 1] : "???"; $kommentare = array(); foreach ($this->aenderungsantragKommentare as $komm) { if ($komm->absatz == $ae_absatz_nr) { $kommentare[] = $komm; } } $this->absaetze[] = new AenderungsantragAbsatz($abs_alt[$i]->str_bbcode, $abs_neu[$i], $this->id, $ae_absatz_nr, $zeile_von, $zeile_bis, $kommentare); } } return $this->absaetze; }
* @var int $absatz_nr * @var bool $js_protection * @var array $hiddens * @var Person $kommentar_person * @var Antrag $antrag * @var AntragKommentar $kommentare */ foreach ($kommentare as $komm) { $komm_link = $this->createUrl("antrag/anzeige", array("antrag_id" => $antrag->id, "kommentar_id" => $komm->id, "#" => "komm" . $komm->id)); ?> <div class="kommentarform" id="komm<?php echo $komm->id; ?> "> <div class="datum"><?php echo HtmlBBcodeUtils::formatMysqlDateTime($komm->datum); ?> </div> <h3>Kommentar von <?php echo CHtml::encode($komm->verfasserIn->getNameMitOrga()); if ($komm->status == IKommentar::$STATUS_NICHT_FREI) { echo " <em>(noch nicht freigeschaltet)</em>"; } ?> </h3> <?php echo nl2br(CHtml::encode($komm->text)); if (!is_null($komm_del_link) && $komm->kannLoeschen(Yii::app()->user)) { echo "<div class='del_link'><a href='" . CHtml::encode(str_replace(rawurlencode("#komm_id#"), $komm->id, $komm_del_link)) . "'>x</a></div>"; }
$html .= "</ul></div>"; $this->menus_html[] = $html; } if ($veranstaltung->typ == Veranstaltung::$TYP_PROGRAMM) { if ($veranstaltung->getPolicyAntraege()->checkCurUserHeuristically()) { $this->menus_html[] = '<a class="neuer-antrag" href="' . CHtml::encode($this->createUrl("antrag/neu")) . '"></a>'; } } if (!in_array($veranstaltung->policy_kommentare, array(0, 4))) { $html = "<div><ul class='nav nav-list neue-kommentare'><li class='nav-header'>Neue Kommentare</li>"; if (count($neueste_kommentare) == 0) { $html .= "<li><i>keine</i></li>"; } else { foreach ($neueste_kommentare as $komm) { $html .= "<li class='komm'>"; $html .= "<strong>" . CHtml::encode($komm->verfasserIn->name) . "</strong>, " . HtmlBBcodeUtils::formatMysqlDateTime($komm->datum); $html .= "<div>Zu " . CHtml::link(CHtml::encode($komm->antrag->name), $this->createUrl("antrag/anzeige", array("antrag_id" => $komm->antrag_id, "kommentar_id" => $komm->id, "#" => "komm" . $komm->id))) . "</div>"; $html .= "</li>\n"; } } $html .= "</ul></div>"; $this->menus_html[] = $html; } $html = "<div><ul class='nav nav-list neue-kommentare'><li class='nav-header'>Benachrichtigungen</li>"; $html .= "<li class='benachrichtigung'>" . CHtml::link($sprache->get("E-Mail-Benachrichtigung bei neuen Anträgen"), $this->createUrl("veranstaltung/benachrichtigungen")) . "</li>"; $html .= "</ul></div>"; $this->menus_html[] = $html; $html = ""; if ($veranstaltung->getEinstellungen()->feeds_anzeigen) { $feeds = 0; if (!in_array($veranstaltung->policy_antraege, array("Admins"))) {
if (!$letztes_leer) { $letztes_leer = true; echo "<div class='absatz_ueberspringen'>.<br>.<br>.</div>"; } } } ?> </div> </div> <div class="begruendungs_text_holder"> <h3>Begründung</h3> <div class="textholder consolidated content"> <?php echo HtmlBBcodeUtils::bbcode2html($aenderungsantrag->aenderung_begruendung); ?> </div> <br><br> </div> <?php $zustimmung_von = $aenderungsantrag->getZustimmungen(); $ablehnung_von = $aenderungsantrag->getAblehnungen(); $unterstuetzerInnen = $aenderungsantrag->getUnterstuetzerInnen(); $eintraege = count($unterstuetzerInnen) > 0 || count($zustimmung_von) > 0 || count($ablehnung_von) > 0; $unterstuetzen_policy = $aenderungsantrag->antrag->veranstaltung->getPolicyUnterstuetzen(); $kann_unterstuetzen = $unterstuetzen_policy->checkCurUserHeuristically(); $kann_nicht_unterstuetzen_msg = $unterstuetzen_policy->getPermissionDeniedMsg(); if ($eintraege || $kann_unterstuetzen || $kann_nicht_unterstuetzen_msg != "") {
/** * @param string [] * @param string * @return string */ public function convert($antrag_absaetze, $begruendung) { $this->appendTextStyleNode("Antragsgruen_fett", array("fo:font-weight" => "bold", "style:font-weight-asian" => "bold", "style:font-weight-complex" => "bold")); $this->appendTextStyleNode("Antragsgruen_kursiv", array("fo:font-style" => "italic", "style:font-style-asian" => "italic", "style:font-style-complex" => "italic")); $this->appendTextStyleNode("Antragsgruen_unterstrichen", array("style:text-underline-width" => "auto", "style:text-underline-color" => "font-color", "style:text-underline-style" => "solid")); $this->appendTextStyleNode("Antragsgruen_gruen", array("fo:color" => "#00ff00")); $this->appendTextStyleNode("Antragsgruen_rot", array("fo:color" => "#ff0000")); /** @var DOMNode[] $nodes */ $nodes = array(); foreach ($this->doc->getElementsByTagNameNS(static::$NS_TEXT, 'span') as $element) { $nodes[] = $element; } foreach ($this->doc->getElementsByTagNameNS(static::$NS_TEXT, 'p') as $element) { $nodes[] = $element; } foreach ($nodes as $node) { $children = $node->childNodes; foreach ($children as $child) { if ($child->nodeType == XML_TEXT_NODE) { /** @var DOMText $child */ $child->data = preg_replace(array_keys($this->replaces), array_values($this->replaces), $child->data); if (preg_match("/\\{\\{ANTRAGSGRUEN:BEGRUENDUNG( [^\\}]*)?/siu", $child->data)) { $this->node_begruendung = $node; } if (preg_match("/\\{\\{ANTRAGSGRUEN:ANTRAGSTEXT_1( [^\\}]*)?/siu", $child->data)) { $this->node_template_1 = $node; } if (preg_match("/\\{\\{ANTRAGSGRUEN:ANTRAGSTEXT_N( [^\\}]*)?/siu", $child->data)) { $this->node_template_n = $node; } } } } if ($this->node_begruendung) { if ($begruendung) { $new_nodes = $this->html2ooNodes($begruendung, static::$TEMPLATE_TYPE_BEGRUENDUNG); foreach ($new_nodes as $new_node) { $this->node_begruendung->parentNode->insertBefore($new_node, $this->node_begruendung); } } $this->node_begruendung->parentNode->removeChild($this->node_begruendung); } if ($this->node_template_1) { $html = HtmlBBcodeUtils::bbcode2html($antrag_absaetze[0]->str_bbcode); if ($this->DEBUG) { echo "======<br>" . nl2br(CHtml::encode($html)) . "<br>========<br>"; } $new_nodes = $this->html2ooNodes($html, static::$TEMPLATE_TYPE_ANTRAG); foreach ($new_nodes as $new_node) { $this->node_template_1->parentNode->insertBefore($new_node, $this->node_template_1); } $this->node_template_1->parentNode->removeChild($this->node_template_1); } if ($this->node_template_n) { for ($i = 1; $i < count($antrag_absaetze); $i++) { $html = HtmlBBcodeUtils::bbcode2html($antrag_absaetze[$i]->str_bbcode); if ($this->DEBUG) { echo "======<br>" . nl2br(CHtml::encode($html)) . "<br>========<br>"; } $new_nodes = $this->html2ooNodes($html, static::$TEMPLATE_TYPE_ANTRAG); foreach ($new_nodes as $new_node) { $this->node_template_n->parentNode->insertBefore($new_node, $this->node_template_n); } } $this->node_template_n->parentNode->removeChild($this->node_template_n); } return $this->doc->saveXML(); }
</td> </tr> <?php } ?> </table> <h2><?php echo $sprache->get("Antragstext"); ?> </h2> <?php $absae = $antrag->getParagraphs(true, false); foreach ($absae as $i => $abs) { echo $abs->str_html_plain; echo "<br><br>"; } if (trim($antrag->begruendung) != "") { ?> <h3>Begründung</h3> <?php if ($antrag->begruendung_html) { echo $antrag->begruendung; } else { echo HtmlBBcodeUtils::bbcode2html($antrag->begruendung); } } ?> </body> </html>
$zeilen_antrag = array(); foreach ($text_antrag as $t) { $x = explode("\n", $t); $zeilen_antrag = array_merge($zeilen_antrag, $x); } $text2_antrag = str_replace(array("[QUOTE]", "[/QUOTE]"), array("\n\n", "\n\n"), $antrag->text2); $text2_antrag = HtmlBBcodeUtils::removeBBCode($text2_antrag); $text2_antrag = HtmlBBcodeUtils::text2zeilen(trim($text2_antrag), 120, true); $zeilen2_antrag = array(); foreach ($text2_antrag as $t) { $x = explode("\n", $t); $zeilen2_antrag = array_merge($zeilen2_antrag, $x); } $text_begruendung = str_replace(array("[QUOTE]", "[/QUOTE]"), array("\n\n", "\n\n"), $antrag->begruendung); $text_begruendung = HtmlBBcodeUtils::removeBBCode($text_begruendung); $text_begruendung = HtmlBBcodeUtils::text2zeilen(trim($text_begruendung), 120, true); $zeilen_begruendung = array(); foreach ($text_begruendung as $t) { $x = explode("\n", $t); $zeilen_begruendung = array_merge($zeilen_begruendung, $x); } if ($text_begruendung_zusammen) { $text1name = veranstaltungsspezifisch_text1_name($this->veranstaltung, $antrag->typ); $text2name = veranstaltungsspezifisch_text2_name($this->veranstaltung, $antrag->typ); $begruendungname = veranstaltungsspezifisch_begruendung_name($this->veranstaltung, $antrag->typ); $zeilen = array(); if (count($zeilen2_antrag) > 0) { $zeilen = array_merge($zeilen, array($text2name . ":"), $zeilen2_antrag, array("", "")); } $zeilen = array_merge($zeilen, array($text1name . ":"), $zeilen_antrag, array("", "", $begruendungname . ":"), $zeilen_begruendung); $objPHPExcel->getActiveSheet()->SetCellValue($COL_ANTRAGSTEXT . $row, trim(implode("\n", $zeilen)));
$absatz_zeilen = $kommentar->absatz + 1 . " / Z. {$zeile_von} - {$zeile_bis}"; } else { $absatz_zeilen = "???"; } } if (is_a($kommentar, "AenderungsantragKommentar")) { /** @var AenderungsantragKommentar $kommentar */ if ($this->veranstaltung->getEinstellungen()->revision_name_verstecken) { $objPHPExcel->getActiveSheet()->SetCellValue('C' . $row, $kommentar->aenderungsantrag->revision_name); } else { $objPHPExcel->getActiveSheet()->SetCellValue('C' . $row, $kommentar->aenderungsantrag->revision_name . " zu " . $kommentar->aenderungsantrag->antrag->revision_name); } } $objPHPExcel->getActiveSheet()->SetCellValue('D' . $row, $absatz_zeilen); $objPHPExcel->getActiveSheet()->getStyle('D' . $row)->getAlignment()->setWrapText(true); $text = HtmlBBcodeUtils::text2zeilen($kommentar->text, 120, true); $zeilen = array(); foreach ($text as $t) { $x = explode("\n", $t); $zeilen = array_merge($zeilen, $x); } $objPHPExcel->getActiveSheet()->SetCellValue('E' . $row, trim(implode("\n", $zeilen))); $objPHPExcel->getActiveSheet()->getStyle('E' . $row)->getAlignment()->setWrapText(true); if ($this->veranstaltung->getEinstellungen()->kommentare_unterstuetzbar) { $positiv = $negativ = 0; if (is_a($kommentar, "AntragKommentar")) { /** @var AntragKommentar $kommentar */ foreach ($kommentar->unterstuetzerInnen as $unt) { if ($unt->dafuer) { $positiv++; } else {
/** * @param string $veranstaltungsreihe_id * @param string $veranstaltung_id * @param int $antrag_id * @param int $adoptInitiators */ public function actionNeu($veranstaltungsreihe_id = "", $veranstaltung_id, $antrag_id, $adoptInitiators = 0) { $this->layout = '//layouts/column2'; $this->testeWartungsmodus(); $antrag_id = IntVal($antrag_id); /** @var Antrag $antrag */ $antrag = Antrag::model()->findByPk($antrag_id); $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id, $antrag); if (!$antrag->veranstaltung->getPolicyAenderungsantraege()->checkCurUserHeuristically()) { $msg = $antrag->veranstaltung->getPolicyAenderungsantraege()->getPermissionDeniedMsg(); Yii::app()->user->setFlash("error", "Es kann kein Änderungsantrag werden: " . $msg); $this->redirect($this->createUrl("antrag/anzeige", array("antrag_id" => $antrag->id))); } $aenderungsantrag = new Aenderungsantrag(); $aenderungsantrag->aenderung_first_line_cache = -1; $aenderungsantrag->antrag = $antrag; $aenderungsantrag->antrag_id = $antrag->id; $aenderungsantrag->status = Aenderungsantrag::$STATUS_UNBESTAETIGT; $aenderungsantrag->status_string = ""; $unterstuetzerInnen = array(); $changed = false; if (AntiXSS::isTokenSet("antragneu")) { $aenderungsantrag->name_neu = $_REQUEST["Aenderungsantrag"]["name_neu"]; $aenderungsantrag->begruendung_neu = ""; $aenderungsantrag->aenderung_metatext = HtmlBBcodeUtils::html_normalize($_REQUEST["ae_metatext"]); if ($aenderungsantrag->antrag->veranstaltung->getEinstellungen()->begruendung_in_html && isset($_REQUEST["ae_begruendung_html"])) { $aenderungsantrag->aenderung_begruendung_html = 1; $aenderungsantrag->aenderung_begruendung = HtmlBBcodeUtils::html_normalize($_REQUEST["ae_begruendung"]); } else { $aenderungsantrag->aenderung_begruendung_html = 0; $aenderungsantrag->aenderung_begruendung = HtmlBBcodeUtils::bbcode_normalize($_REQUEST["ae_begruendung"]); } if ($aenderungsantrag->name_neu != $antrag->name) { $changed = true; } if (trim($aenderungsantrag->aenderung_metatext) != "") { $changed = true; } $orig_absaetze = $antrag->getParagraphs(); $neue_absaetze = array(); $neuer_text = ""; for ($i = 0; $i < count($orig_absaetze); $i++) { /** @var AntragAbsatz $abs */ $abs = $orig_absaetze[$i]; if (isset($_REQUEST["change_text"][$i])) { $abs_text = HtmlBBcodeUtils::bbcode_normalize($_REQUEST["neu_text"][$i]); $neue_absaetze[$i] = $abs_text; $neuer_text .= $abs_text . "\n\n"; $changed = true; } else { $neue_absaetze[$i] = ""; $neuer_text .= $abs->str_bbcode . "\n\n"; } } if ($changed) { $aenderungsantrag->setDiffParagraphs($neue_absaetze); $diff = DiffUtils::getTextDiffMitZeilennummern($antrag->text, $neuer_text, $antrag->veranstaltung->getEinstellungen()->zeilenlaenge); $diff_text = ""; if ($aenderungsantrag->name_neu != $antrag->name) { $diff_text .= "Neuer Titel des Antrags:\n[QUOTE]" . $aenderungsantrag->name_neu . "[/QUOTE]\n\n"; } if (trim($aenderungsantrag->aenderung_metatext) != "") { $diff_text = $aenderungsantrag->aenderung_metatext . "\n\n"; } $diff_text .= DiffUtils::diff2text($diff, $antrag->getFirstLineNo()); $aenderungsantrag->aenderung_text = $diff_text; $aenderungsantrag->datum_einreichung = new CDbExpression('NOW()'); } else { Yii::app()->user->setFlash("error", "Es wurde nichts am Text geändert."); } if (!$this->veranstaltung->getPolicyAenderungsantraege()->checkAenderungsantragSubmit()) { Yii::app()->user->setFlash("error", "Keine Berechtigung zum Anlegen von Änderungsanträgen."); $changed = false; } } $hiddens = array("antrag_id" => $antrag->id); $js_protection = Yii::app()->user->isGuest; if ($js_protection) { $hiddens["form_token"] = AntiXSS::createToken("antragneu"); } else { $hiddens[AntiXSS::createToken("antragneu")] = "1"; } if ($changed) { if (!$aenderungsantrag->save()) { foreach ($aenderungsantrag->getErrors() as $val) { foreach ($val as $val2) { Yii::app()->user->setFlash("error", "Änderungsantrag konnte nicht angelegt werden: " . $val2); } } $antragstellerIn = Yii::app()->user->isGuest ? null : Person::model()->findByAttributes(array("auth" => Yii::app()->user->id)); if ($antragstellerIn === null) { $antragstellerIn = new Person(); } $this->render('bearbeiten_form', array("mode" => "neu", "antrag" => $antrag, "aenderungsantrag" => $aenderungsantrag, "antragstellerIn" => $antragstellerIn, "unterstuetzerInnen" => $unterstuetzerInnen, "hiddens" => $hiddens, "js_protection" => $js_protection, "sprache" => $aenderungsantrag->antrag->veranstaltung->getSprache())); return; } $this->veranstaltung->getPolicyAenderungsantraege()->submitAntragsstellerInView_Aenderungsantrag($aenderungsantrag); $this->redirect($this->createUrl("aenderungsantrag/neuConfirm", array("antrag_id" => $antrag_id, "aenderungsantrag_id" => $aenderungsantrag->id))); } else { if (Yii::app()->user->isGuest || $this->veranstaltung->isAdminCurUser()) { $antragstellerIn = new Person(); $antragstellerIn->typ = Person::$TYP_PERSON; } else { $antragstellerIn = Person::model()->findByAttributes(array("auth" => Yii::app()->user->id)); } if ($adoptInitiators > 0 && $this->veranstaltung->isAdminCurUser()) { $templateAmendment = $this->veranstaltung->getAmendment($adoptInitiators); if ($templateAmendment) { foreach ($templateAmendment->aenderungsantragUnterstuetzerInnen as $unt) { if ($unt->rolle == AenderungsantragUnterstuetzerInnen::$ROLLE_INITIATORIN) { $antragstellerIn = $unt->person; } if ($unt->rolle == AenderungsantragUnterstuetzerInnen::$ROLLE_UNTERSTUETZERIN) { $unterstuetzerInnen[] = $unt->person; } } } } $aenderungsantrag->name_neu = $antrag->name; $this->render('bearbeiten_form', array("mode" => "neu", "antrag" => $antrag, "aenderungsantrag" => $aenderungsantrag, "antragstellerIn" => $antragstellerIn, "unterstuetzerInnen" => $unterstuetzerInnen, "hiddens" => $hiddens, "js_protection" => $js_protection, "sprache" => $aenderungsantrag->antrag->veranstaltung->getSprache())); } }
$von = implode(", ", $x); echo "<label><input type='radio' name='absatz_typ[{$i}]' value='" . $ant->id . "'> " . $ae_link . " (von " . CHtml::encode($von) . ")</label>"; $full_texts .= "<blockquote class='aenderung ae_" . $ant->id . "'>" . DiffUtils::renderBBCodeDiff2HTML($abs->str_bbcode, $par[$i]) . "</blockquote>"; } } echo "<label><input type='radio' name='absatz_typ[{$i}]' value='neu'> Neuer Text</label><br>"; echo "<blockquote class='original'>" . $abs->str_html_plain . "</blockquote>" . $full_texts; echo "<div><textarea class='neu_text' name='neu_text[{$i}]' id='neu_text_{$i}' style='width: 550px; height: 200px;'>" . CHtml::encode($abs->str_bbcode) . "</textarea></div>"; echo "</div>"; } echo "<h3>Begründung</h3><div class='absatz_selector_holder content absatz_begruendung'>"; /** @var AntragAbsatz $abs */ $full_texts = ""; echo "<label><input type='radio' name='begruendung_typ' value='original' checked> Original beibehalten</label>"; echo "<label><input type='radio' name='begruendung_typ' value='neu'> Neuer Text</label><br>"; echo "<blockquote class='original'>" . HtmlBBcodeUtils::bbcode2html($antrag->begruendung) . "</blockquote>" . $full_texts; echo "<div><textarea class='neu_text' name='neu_begruendung' id='neu_begruendung' style='width: 550px; height: 200px;'>" . CHtml::encode($antrag->begruendung) . "</textarea></div>"; echo "</div>"; ?> <h3> Stati der Änderunganträge setzen </h3> <div id="ae_status_setter" class="content"> <?php foreach ($antrag->aenderungsantraege as $ae) { if (!in_array($ae->status, IAntrag::$STATI_UNSICHTBAR)) { $absaetze = $ae->getAffectedParagraphs(); ?> <label><span class="ae"><?php echo CHtml::encode($ae->revision_name); ?> </span> <select
/** * @param string $veranstaltungsreihe_id * @param string $veranstaltung_id * @param int $adoptInitiators */ public function actionNeu($veranstaltungsreihe_id = "", $veranstaltung_id, $adoptInitiators = 0) { $this->layout = '//layouts/column2'; /** @var Veranstaltung $veranstaltung */ $this->veranstaltung = $veranstaltung = $this->loadVeranstaltung($veranstaltungsreihe_id, $veranstaltung_id); $this->testeWartungsmodus(); $model = new Antrag(); $model->status = Antrag::$STATUS_EINGEREICHT_UNGEPRUEFT; $model->typ = isset($_REQUEST["typ"]) ? IntVal($_REQUEST["typ"]) : Antrag::$TYP_ANTRAG; $model->veranstaltung_id = $veranstaltung->id; $model->veranstaltung = $veranstaltung; $model->text_unveraenderlich = $this->veranstaltung->getEinstellungen()->admins_duerfen_aendern ? 0 : 1; if (!$veranstaltung->getPolicyAntraege()->checkCurUserHeuristically()) { Yii::app()->user->setFlash("error", "Es kann kein Antrag angelegt werden."); $this->redirect($this->createUrl("veranstaltung/index")); } $unterstuetzerInnen = array(); $tags_pre = array(); if (AntiXSS::isTokenSet("antragneu")) { $model->attributes = $_REQUEST["Antrag"]; if ($veranstaltung->getEinstellungen()->antrag_begruendungen) { if ($this->veranstaltung->getEinstellungen()->begruendung_in_html && isset($_REQUEST["Antrag"]["begruendung_html"])) { $model->begruendung_html = 1; $model->begruendung = HtmlBBcodeUtils::html_normalize($_REQUEST["Antrag"]["begruendung"]); } else { $model->begruendung_html = 0; $model->begruendung = HtmlBBcodeUtils::bbcode_normalize($_REQUEST["Antrag"]["begruendung"]); } } $model->text = HtmlBBcodeUtils::bbcode_normalize($model->text); $model->datum_einreichung = new CDbExpression('NOW()'); $model->status = Antrag::$STATUS_UNBESTAETIGT; $model->revision_name = ""; if ($model->text2) { $model->text2 = HtmlBBcodeUtils::bbcode_normalize($model->text2); } $goon = true; if (!$this->veranstaltung->getPolicyAntraege()->checkAntragSubmit()) { Yii::app()->user->setFlash("error", "Keine Berechtigung zum Anlegen von Anträgen."); $goon = false; } if ($goon) { if ($model->save()) { $this->veranstaltung->getPolicyAntraege()->submitAntragsstellerInView_Antrag($model); /* $next_status = $_REQUEST["Antrag"]["status"] */ if ($this->veranstaltung->getEinstellungen()->antrag_hat_mehrere_tags) { if (isset($_REQUEST["tags"])) { foreach ($_REQUEST["tags"] as $tag_id) { foreach ($this->veranstaltung->tags as $tag) { if ($tag->id == $tag_id) { Yii::app()->db->createCommand()->insert("antrag_tags", array("antrag_id" => $model->id, "tag_id" => $tag_id)); } } } } } else { if (isset($_REQUEST["tag"])) { foreach ($this->veranstaltung->tags as $tag) { if ($tag->id == $_REQUEST["tag"]) { Yii::app()->db->createCommand()->insert("antrag_tags", array("antrag_id" => $model->id, "tag_id" => IntVal($_REQUEST["tag"]))); } } } } $next_status = Antrag::$STATUS_EINGEREICHT_UNGEPRUEFT; $this->redirect($this->createUrl("antrag/neuConfirm", array("antrag_id" => $model->id, "next_status" => $next_status, "from_mode" => "neu"))); } else { foreach ($model->getErrors() as $key => $val) { foreach ($val as $val2) { Yii::app()->user->setFlash("error", "Antrag konnte nicht angelegt werden: {$key}: " . $val2); } } } } } $hiddens = array(); $js_protection = Yii::app()->user->isGuest; if ($js_protection) { $hiddens["form_token"] = AntiXSS::createToken("antragneu"); } else { $hiddens[AntiXSS::createToken("antragneu")] = "1"; } if (Yii::app()->user->isGuest || $this->veranstaltung->isAdminCurUser()) { $antragstellerIn = new Person(); $antragstellerIn->typ = Person::$TYP_PERSON; } else { $antragstellerIn = Person::model()->findByAttributes(array("auth" => Yii::app()->user->id)); } if ($adoptInitiators > 0 && $this->veranstaltung->isAdminCurUser()) { $templateMotion = $this->veranstaltung->getMotion($adoptInitiators); if ($templateMotion) { $model->typ = $templateMotion->typ; foreach ($templateMotion->antragUnterstuetzerInnen as $unt) { if ($unt->rolle == AntragUnterstuetzerInnen::$ROLLE_INITIATORIN) { $antragstellerIn = $unt->person; } if ($unt->rolle == AntragUnterstuetzerInnen::$ROLLE_UNTERSTUETZERIN) { $unterstuetzerInnen[] = $unt->person; } } } } $force_type = null; if (isset($_REQUEST["typ"])) { if (isset(Antrag::$TYPEN[$_REQUEST["typ"]]) && !in_array($_REQUEST["typ"], $this->veranstaltung->getEinstellungen()->antrags_typen_deaktiviert)) { $force_type = IntVal($_REQUEST["typ"]); } } $this->render('bearbeiten_form', array("mode" => "neu", "model" => $model, "force_type" => $force_type, "antragstellerIn" => $antragstellerIn, "unterstuetzerInnen" => $unterstuetzerInnen, "veranstaltung" => $veranstaltung, "hiddens" => $hiddens, "tags_pre" => $tags_pre, "js_protection" => $js_protection, "login_warnung" => false, "sprache" => $model->veranstaltung->getSprache())); }