Seite 2 von 3

Re: Signatur anzeigen

Verfasst: 22.04.2012 10:50
von Perlchamp
Hi BNa,
Kann ich nicht bestätigen. [...]
...doch !
<!-- IF post_review.PREV_SIGNATURE --><div id="sig{post_review_row.POST_ID}" class="signature">{post_review_row.PREV_SIGNATURE}</div><!-- ENDIF -->
... sollte wohl <!-- IF post_review_row.PREV_SIGNATURE --> heissen
Kann ich nicht bestätigen. Daher mal genaue Situation schildern [...]
... was gibt es da zu schildern ? => angemeldet, thema aufgerufen, auf "Antwort erstellen" geklickt.

die php-Datei(Template) ist jungfräulich; deshalb poste ich sie nicht. (andersrum wird ein Schuh draus: poste DEINE funktionierende .php-datei)

so long

Re: Signatur anzeigen

Verfasst: 22.04.2012 13:14
von BNa
<!-- IF post_review.PREV_SIGNATURE --><div id="sig{post_review_row.POST_ID}" class="signature">{post_review_row.PREV_SIGNATURE}</div><!-- ENDIF -->
... sollte wohl <!-- IF post_review_row.PREV_SIGNATURE --> heissen
Ein Flüchtigkeitsfehler. Ist ausgebessert.
angemeldet, thema aufgerufen, auf "Antwort erstellen" geklickt.
Hm sorry, keine Fehlermeldung bei mir. Probiere es aber auch nochmal an einer jungfräulichen Datei.

Re: Signatur anzeigen

Verfasst: 22.04.2012 13:34
von BNa
Negativ!
Neue Datei genommen > Keine Fehlermeldung, weder bei Quote, noch bei PostReply (heisst wohl Antworten)

Pastebin: functions_posting.php > https://www.phpbb.de/support/pastebin.p ... iew&s=1044

Ab hier wirds interessant. Vergleich mal:

Code: Alles auswählen

function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id = 0, $show_quote_button = true)
{
Edit: Habe mal einen ganz neuen Topic erstellt. Hier gehts nicht (weisse Seite), in allen bestehenden Topics arbeitet das Script tadellos.
Sehr merkwürdig das. Ich teste mal weiter und antworte bei einer Lösung hier. Danke nochmal für den Hinweis.

Edit: Habs nun. Das Problem ist wohl, das das kurz vorher in dem Code schonmal bbcode second pass instanziert wurde.
Daher läuft es wohl bei neu erstellten Topics unter für mich bisher ungeklärten Umständen ins Leere. Eventuell gibt es noch
andere Erklärungen, aber es hat wohl wenigstens indirekt damit zu tun. Die Anleitung wurde korrigiert.

Re: Signatur anzeigen

Verfasst: 22.04.2012 22:57
von Perlchamp
Hi,
gut (insofern, dass meine Dateien in Ordnung sind), dass es bei dir auch nicht geht/ging.
Ich kenne mich ja nicht aus, deswegen mal eine Frage über diese Code-Passage (direkt vor

Code: Alles auswählen

$template->assign_block_vars($mode . '_row', array(
) :

Code: Alles auswählen

		$poster_id		= $row['user_id'];
		$post_subject	= $row['post_subject'];
		$message		= censor_text($row['post_text']);

		$decoded_message = false;

		if ($show_quote_button && $auth->acl_get('f_reply', $forum_id))
		{
			$decoded_message = $message;
			decode_message($decoded_message, $row['bbcode_uid']);

			$decoded_message = bbcode_nl2br($decoded_message);
		}

		if ($row['bbcode_bitfield'])
		{
			$bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']);
		}

		$message = bbcode_nl2br($message);
		$message = smiley_text($message, !$row['enable_smilies']);

		if (!empty($attachments[$row['post_id']]))
		{
			$update_count = array();
			parse_attachments($forum_id, $message, $attachments[$row['post_id']], $update_count);
		}

		$post_subject = censor_text($post_subject);

		$post_anchor = ($mode == 'post_review') ? 'ppr' . $row['post_id'] : 'pr' . $row['post_id'];
		$u_show_post = append_sid($phpbb_root_path . 'viewtopic.' . $phpEx, "f=$forum_id&t=$topic_id&p={$row['post_id']}&view=show#p{$row['post_id']}");
... hier wird anscheinend der Beitrag "zusammengestellt" und auch BBCode-geparst (?). Ist es denn nicht möglich, hier

Code: Alles auswählen

		$poster_id		= $row['user_id'];
		$post_subject	= $row['post_subject'];
		$message		= censor_text($row['post_text']);

		$decoded_message = false;

		if ($show_quote_button && $auth->acl_get('f_reply', $forum_id))
		{
			$decoded_message = $message;
			decode_message($decoded_message, $row['bbcode_uid']);

			$decoded_message = bbcode_nl2br($decoded_message);
		}

		if ($row['bbcode_bitfield'])
		{
			$bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']);
		}

		$message = bbcode_nl2br($message);
		$message = smiley_text($message, !$row['enable_smilies']);

... die Signatur zu erstellen, und später im darauffolgenden

Code: Alles auswählen

assign_block_vars($mode . '_row',
... dem Kind einen Namen zu geben (PREV_SIGNATURE) (?), also z.b. hier

Code: Alles auswählen

$message		= censor_text($row['post_text']);
so etwas wie

Code: Alles auswählen

$prev_signature = blablub
und hier

Code: Alles auswählen

      if ($row['bbcode_bitfield'])
      {
         $bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']);
      }
so etwas wie

Code: Alles auswählen

$bbcode->bbcode_second_pass($prev_signature, $row['bbcode_uid'], $row['bbcode_bitfield']);
... und hier

Code: Alles auswählen

			$decoded_message = $message;
			decode_message($decoded_message, $row['bbcode_uid']);

			$decoded_message = bbcode_nl2br($decoded_message);
... so etwas wie

Code: Alles auswählen

$decoded_prev_signature = $prev_signature ...
... ?

Ansonsten werde ich morgen oder demnächst deine Verbesserungen mal ausprobieren und dann weiter berichten ...

so long

Re: Signatur anzeigen

Verfasst: 22.04.2012 23:40
von BNa
Müssig, von 5 Wegen nach Rom zwei nehmen zu müssen. Du weisst selbst, das es meist auch anders geht.

Re: Signatur anzeigen

Verfasst: 23.04.2012 01:30
von Perlchamp
Hi,
Müssig, von 5 Wegen nach Rom zwei nehmen zu müssen [...]
... ich verstehe deine Aussage nicht.
[...] Wie gesagt: Du weisst selbst, das es meist auch anders geht.
... ich habe keine Ahnung und wollte nur fragen in der Hoffnung, dass du es mir erklärst (natürlich ist ein einziger Weg die beste Lösung).
Du hattest bereits geschrieben, dass dieses

Code: Alles auswählen

bbcode_second_pass
anscheinend vorher schon initiiert wird. Und diese Code-Passage (ich denke, es ist die richtige?) habe ich u.a. aufgeführt.
Warum ist es müssig, etwas an der Stelle zu implementieren, an welcher der Beitrag bereits generiert wird ? Verstehe ich nicht ganz. Es handelt sich ja "nur" um einen Code-Abschnitt, aus dem ich in meinem Post die entsprechenden Stellen (ich denke jedenfalls, dass diese Stellen dafür verantwortlich sind) aufgeführt habe.

so long

Re: Signatur anzeigen

Verfasst: 23.04.2012 02:10
von BNa
So, habs nochmal gecheckt und mich inspirieren lassen:
http://www.4seven.de/forum/6test/viewto ... ?f=6&t=160
Nun läufts auch mit bbcode_second_parse, zumindest bei mir. Und wenn nicht, gibt es V2 oder auch Plan B.

Edit:
Zu früh gefreut. bbcode_second_parse darf scheinbar nicht zweimal hintereinander initialisiert werden.
Komisch auch, das es nach zwei, drei Posts anstandslos funktioniert. Also erstmal doch Plan B.

Edit:
Hab nun die Lösung gefunden. Die Initialisierung zB. $sig_bbcode = new bbcode... und andere Kleinigkeiten fehlten.
Ist etwas länger geworden der neue Code, aber er geht. Jetzt funktionieren V1 + V2, wobei V2 nun bedeutend weniger Edits hat.
Perlchamp hat geschrieben:... ich habe keine Ahnung
Seh ich anders, aber seis drum.

Re: Signatur anzeigen

Verfasst: 02.05.2012 14:48
von Perlchamp
hi,
sorry, dass ich mich erst jetzt melde. Also ich habe es soeben eingepflegt und probiert. Bei mir geht es jetzt auch! (ich habe nur V2 versucht).
Klasse Arbeit !

so long

Re: Signatur anzeigen

Verfasst: 04.05.2012 17:13
von Perlchamp
Hi BNa,
ja, alles ist doch nicht ok (von der Funktion her schon, aber programmier-technisch):
es ist halt nicht xhtml1-strict - valide, da die Signatur beim selben User auch immer dieselbe ist und leider nicht von der Beitrags-Id abhängig ist (referenziert wird). Und wenn nun in der Review mehrere Beiträge desselben Mitglieds vorhanden sind, dann gibt es ein Validierungsfehler, da mehrmals dieselbe id "auftaucht"/"verbraucht" wird.
Dies nur zur Info.

so long

Re: Signatur anzeigen

Verfasst: 04.05.2012 22:11
von BNa
Perlchamp hat geschrieben:es ist halt nicht xhtml1-strict - valide, da die Signatur beim selben User auch immer dieselbe ist und leider nicht von der Beitrags-Id abhängig ist (referenziert wird).
Bei mir wird die Post-ID sauber geparst. Im Quellcode zu sehen.
Ein zusammengefasster Ausschnitt mit 0 Fehlern beim validieren.

Code: Alles auswählen

			 <div id="sig74" class="signature">sadgsadg</div>

			 <div id="sig73" class="signature">sadgsadg</div>

			 <div id="sig72" class="signature">sadgsadg</div>

			 <div id="sig71" class="signature">sadgsadg</div>
div id="sig{topic_review_row.[b][color=#BF0000]POST_ID[/color][/b]}" class="signature">{topic_review_row.PREV_SIGNATURE}</div>

Das gilt für post_review und topic_review.
Da haben sich die Macher schon was bei gedacht.
Läuft wie bei der echten Signatur Row in der Viewtopic.