Seite 1 von 1

[3.2] Mailto-Link in viewtopic_body.html

Verfasst: 14.08.2019 13:52
von STK
Hallo zusammen,

ich habe versucht, in der viewtopic_body.html einen Mailto-Link einzubauen, um den Usern die Möglichkeit zu geben, einen Beitrag per Mail zu verschicken. Das wäre bei wichtigen Sachen differenzierter, als die Benachrichtigungsfunktion.
Leider funktioniert der Link nur im ersten Beitrag des Topics. In den folgenden zerschießt es mir das Layout.

Hier mein Code:

Code: Alles auswählen

<!-- EVENT viewtopic_body_post_buttons_list_before -->
		<!-- IF not S_IS_BOT -->
			<!-- IF $SHOW_POST_BUTTONS -->
				<ul class="post-buttons">
					<!-- EVENT viewtopic_body_post_buttons_before -->
						<li>
							<a href="mailto:?subject=Eintrag von {postrow.POST_AUTHOR} am {postrow.POST_DATE}, Titel: 					                                                   {postrow.POST_SUBJECT} &body={postrow.MESSAGE}" class="button button-icon-only">
								<i class="icon fa-envelope fa-fw" aria-hidden="true"></i><span class="sr-only">Beitrag versenden</span>
							</a>
						</li>
					<!-- IF postrow.U_EDIT -->
						<li>
							<a href="{postrow.U_EDIT}" title="{L_EDIT_POST}" class="button button-icon-only">
								<i class="icon fa-pencil fa-fw" aria-hidden="true"></i><span class="sr-only">{L_BUTTON_EDIT}</span>
							</a>
						</li>
					<!-- ENDIF -->
Was mach ich falsch?

Danke,
STK

Re: [3.2] Mailto-Link in viewtopic_body.html

Verfasst: 15.08.2019 10:44
von STK
Guten Morgen!

Hab noch etwas weiter experimentiert.
Zum einen hab ich in viewtopic.php eine Templatevariable zu $post_row hinzugefügt:

Code: Alles auswählen

		'MAILTO'			=> "Eintrag von ".get_username_string('username', $poster_id, $row['username'], $row['user_colour'], $row['post_username'])." am ".$user->format_date($row['post_time'], false, ($view == 'print') ? true : false).": ".$row['post_subject']."&body=".$message,
Zum anderen sieht der Part in der viewtopic_body.html jetzt so aus:

Code: Alles auswählen

<!-- IF not S_IS_BOT -->
			<!-- IF $SHOW_POST_BUTTONS -->
				<ul class="post-buttons">
						<li>
							<a href="mailto:?subject={postrow.MAILTO}" class="button button-icon-only">
								<i class="icon fa-envelope fa-fw" aria-hidden="true"></i><span class="sr-only">Beitrag versenden</span>
							</a>
						</li>
					<!-- EVENT viewtopic_body_post_buttons_before -->
Dadurch bleibt das Layout soweit intakt und der Button erscheint auch bei den eigenen Beiträgen - in dem Fall meinen als admin.
Bei den folgenden Beiträgen von Gästen zeigt es dann nur noch einen Button mit der Beschriftung "..." an, weil der ganze mailto-Link dann irgendwie in der Button-Beschriftung landet.

Hat jemand einen Tipp für mich?

Danke,
STK

Re: [3.2] Mailto-Link in viewtopic_body.html

Verfasst: 15.08.2019 12:35
von Kirk
Hallo
Ich denke mit reinem Text wäre dies kein Problem, bedenke aber das in Beiträgen Smilies oder Bilder auch vorhanden sind.
Schau dir mal diese Extension an, vielleicht hilft dir das weiter.

Re: [3.2] Mailto-Link in viewtopic_body.html

Verfasst: 15.08.2019 13:59
von STK
Danke für den Hinweis!
Jetzt ist mir zumindest klar, dass die BBCodes im Body des mailto-Links für die Layout-Sabotage verantwortlich sind. Es findet sich bestimmt die ein oder andere Funktion, um Smilies und Co aus $message zu entfernen.

Der Grund, die Mails nicht übers Board zu versenden, ist der, dass der Nutzer übers Outlook die Möglichkeit hat, die Empfänger innerhalb und außerhalb der Organisation frei zu wählen.
Der Zugriff aufs Board ist nur im Intranet möglich, aber bestimmte Inhalte sollen eben auch externen Kontakten geschickt werden können.

Das hier hab ich schon drin
http://www.mitjastachowiak.de/index.htm ... index.html

Auch flexibel innerhalb des Boards bzw. der Organisation, aber nur direkt beim Posten. Wenn das Recht, Beiträge zu bearbeiten fehlt, geht es danach nicht mehr.
Dabei ist mir klar, dass man in einer vorausgefüllten Mail den Text bearbeiten kann.

Grüße
STK

Re: [3.2] Mailto-Link in viewtopic_body.html

Verfasst: 15.08.2019 16:44
von STK
Hab es mit

Code: Alles auswählen

// Parse the message and subject
	$parse_flags = ($row['bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0) | OPTION_FLAG_SMILIES;
	$message = generate_text_for_display($row['post_text'], $row['bbcode_uid'], $row['bbcode_bitfield'], $parse_flags, true);
	$mailmessage = strip_bbcode($row['post_text'], $row['bbcode_uid']);
versucht. Aber $mailmessage scheint danach leer zu sein.

Gibt es noch eine andere Funktion, die post_text in reinen Text umwandelt?

Danke
STK

Re: [3.2] Mailto-Link in viewtopic_body.html

Verfasst: 16.08.2019 10:27
von STK

Code: Alles auswählen

$mailmessage=Strip_bbcode($message);

führt dazu, dass alle BB-Codes in der Topic-Anzeige perfekt entfernt werden, während

Code: Alles auswählen

.'&body='.$mailmessage
am Ende des Mailto-Links keinerlei Effekt hat.

Warum verändert sich offenbar $message, während $mailmessage gleichzeitig leer ist?

Verzweifelte Grüße
STK

Re: [3.2] Mailto-Link in viewtopic_body.html

Verfasst: 16.08.2019 14:01
von STK
...weil strip_bbcode den String selber ändert und keinen geänderten String zurückgibt.
Funktion kopiert, umbenannt und ein return $text eingefügt und es funktioniert.
Ob das sinnvoller Code ist, weiß ich nicht. Aber er erfüllt seinen Zweck :)

Gruß
STK