Email Benachrichtigung bei Kommentaren von Autoren

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
User avatar
onli
Regular
Posts: 2254
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by onli » Mon Feb 08, 2016 5:52 pm

Können wir die Abfrage

Code: Select all

 if (! ($backend && $email != $row['email']))
nicht verallgemeinern und statt !$backend auf eine Session-Variable prüfen welcher Nutzer angemeldet ist? Dann spielt es gar keine Rolle ob aus dem Backend oder Frontend geantwortet wird.
Ja, genau das sollte gehen. $serendipity müsste die notwendigen Werte haben.
Im selben Zug würde ich es ganz gut finden, wenn bei der Anmeldung im Frontend im Kontaktformular die Felder Name, URL und Email bereits automatisch vorausgefüllt werden. Im Backend stehen diese Werte bereits in der Form wenn man auf Antworten klickt.
Stimmt. Das wurde auch schon mehrfach vorgeschlagen. Sollte ebenfalls mit $serendipity machbar sein.

Später könnte man das Kommentarformular für eingeloggte Nutzer sogar umgestalten, ich hätte da eine Idee (Statt den Eingabefeldern "Antworten als eingeloggter Nutzer" anzeigen, Button daneben um die Felder wenn gewünscht manuell abändern zu können). Aber das muss wirklich jetzt noch nicht sein, einfaches vorausfüllen wäre bereits toll.
Außerdem ist mit aufgefallen, dass ich im Backend immer zwei mal auf den Antwort-Button klicken muss... kannst du das bei dir nachstellen?
Ian hats ja schon bestätigt, aber ja, auch ich kanns nachstellen. Aber habe keine Idee woran es liegt.

Hast du Zeit und Lust, die beiden Zusatzfeatures oder eines davon anzugehen? Bin gerade etwas überlastet.

xoxyss
Regular
Posts: 91
Joined: Wed May 27, 2015 12:13 am
Location: Baden-Württemberg
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by xoxyss » Mon Feb 08, 2016 8:01 pm

Klar ich würde mich sehr gern mal daran versuchen. Ich schaue morgen vormittag mal rein :)

User avatar
onli
Regular
Posts: 2254
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by onli » Tue Feb 09, 2016 10:56 am

Super. Schreib (hier oder mir) wenn du eine Frage hast. Tipp: print_r($serendipity) zeigt dir den Inhalt der globalen Variable, in der sowas wie Nutzername und Loginstatus stehen sollte.

xoxyss
Regular
Posts: 91
Joined: Wed May 27, 2015 12:13 am
Location: Baden-Württemberg
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by xoxyss » Tue Feb 09, 2016 11:58 am

Guten Morgen,

der erste Teil ist umgestellt. Wenn ich angemeldet bin, bekomme ich nun keine Email mehr egal ob ich aus dem Backend oder Frontend antworte. Allerdings vergleiche ich jetzt mit $serendipity['serendipityEmail']. Das hat zur Folge, dass es egal ist welche Email in der Form eingetragen wird ich kann auch die Email weg lassen und werde trotzdem nicht benachrichtigt.

Danke für den Hinweis mit print_r :)
Im selben Zug würde ich es ganz gut finden, wenn bei der Anmeldung im Frontend im Kontaktformular die Felder Name, URL und Email bereits automatisch vorausgefüllt werden. Im Backend stehen diese Werte bereits in der Form wenn man auf Antworten klickt.
Müsste man das nicht eigentlich im Template anpassen? Die Form wird doch in der commentform.tpl erstellt oder nicht?

User avatar
onli
Regular
Posts: 2254
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by onli » Tue Feb 09, 2016 12:53 pm

Ich schau mir deinen PR nachher an. Klingt gut soweit.

Ja, die Variablen vorzufüllen würde in die commentform.tpl gehören. 2k11 ist das anzupassende Theme. Ich bin nicht sicher, ob die nötigen Variablen verfügbar sind; in der config.inc.php des Themes könnte man sie sonst setzen.

xoxyss
Regular
Posts: 91
Joined: Wed May 27, 2015 12:13 am
Location: Baden-Württemberg
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by xoxyss » Wed Feb 10, 2016 9:54 am

Guten Morgen,
also ich habe mal mit grep alle Dateien nach "serendipityEmail" durchsucht.

Interessant ist diese Zeile denke ich:

Code: Select all

./include/functions_config.inc.php:                    $_SESSION['serendipityEmail']        = $serendipity['serendipityEmail']        = $row['email']
Die Email-Adresse eines Autors, die nach dem DB-Query in $row['email'] steht, wird an $_SESSION['serendipityEmail'] und $serendipity['serendipityEmail'] übergeben. Soweit so gut...

Weiter gehts hier:

Code: Select all

./serendipity_config.inc.php:    $serendipity['email'] = $_SESSION['serendipityEmail'];
An dieser Stelle wird nach der Abfrage isset($_SESSION['serendipityEmail']) der Wert an $serendipity['email']. Damit befindet sich jetzt in $serendipity['email'] und $serendipity['serendipityEmail'] exakt der selbe Wert. Die entscheidende Frage ist für mich aber, warum zwei Felder in $serendipity den selben Wert haben :D

Zurück zur eigentlichen Frage, also ich denke wir machen mit $serendipity['serendipityEmail'] nichts falsch. Ich habe auch keine Codestelle gefunden wo der Wert überschrieben wird. Aber auch $serendipity['email'] wird genau ein Mal verwendet und das is bei der Deklaration :D also auch das wäre eine Möglichkeit. Die dritte möglichkeit wäre dann noch $_SESSION['serendipityEmail'] zu verwenden...

Was sagst du dazu?

User avatar
onli
Regular
Posts: 2254
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by onli » Wed Feb 10, 2016 12:26 pm

Was sagst du dazu?
Serendipity ist ein tolles System, dessen Code organisch gewachsen und daher manchmal chaotisch ist. Ich dachte erst, serendipity['email'] wäre vielleicht die Emai ldes Nutzers und serendipity['serendipityEmail'] die Email des Blogs, aber nein – es ist immer beides die Email des Nutzers.

In verschiedenen Plugins wird beides genutzt, also auch nicht aufräumbar.

Wir sollten jetzt erstmal serendipity['serendipityEmail'] nutzen, falls das in irgendwelchen Sonderfällen falsch ist sehen wir das später.

xoxyss
Regular
Posts: 91
Joined: Wed May 27, 2015 12:13 am
Location: Baden-Württemberg
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by xoxyss » Wed Feb 10, 2016 12:31 pm

onli wrote:
Was sagst du dazu?
Serendipity ist ein tolles System, dessen Code organisch gewachsen und daher manchmal chaotisch ist
Da hast du Recht und ich wollte das auch gar nicht in Frage stellen oder kritisieren falls das so rüber gekommen sein sollte :)

Gut dann ist das ja erstmal erledigt. Ich schaue mir die nächsten Tage noch das zweite Thema an.

User avatar
onli
Regular
Posts: 2254
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by onli » Wed Feb 10, 2016 2:26 pm

Wage es ja nicht s9y zu kritsieren! :D

Im Gegenteil, im ernst: Wenn dir Code auffällt der komisch aussieht, bitte frag nach. Wahrscheinlich ist der Code wirklich komisch und es wäre hilfreich, ihn zu verbessern. Hier ging das leider nicht einfach :/
Ich schaue mir die nächsten Tage noch das zweite Thema an.
Danke!

xoxyss
Regular
Posts: 91
Joined: Wed May 27, 2015 12:13 am
Location: Baden-Württemberg
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by xoxyss » Thu Feb 11, 2016 3:26 pm

Hi,
also gefühlt war das vorausfüllen der Kommentarform noch verzwickter :D

Die Ausgangssituation sieht gar nicht so schlecht aus. In der Datei include/functions_comments.php sieht die Funktion für die Kommenatre so aus:

Code: Select all

function serendipity_displayCommentForm($id, $url = '', $comments = NULL, $data = NULL, $showToolbar = true, $moderate_comments = true, $entry = null) {
    global $serendipity;
...
$commentform_data = array(
        'commentform_action'         => $url,
        'commentform_id'             => (int)$id,
        'commentform_name'           => isset($data['name'])      ? serendipity_specialchars($data['name'])       : (isset($serendipity['COOKIE']['name'])     ? serendipity_specialchars($serendipity['COOKIE']['name'])     : ''),
        'commentform_email'          => isset($data['email'])     ? serendipity_specialchars($data['email'])      : (isset($serendipity['COOKIE']['email'])    ? serendipity_specialchars($serendipity['COOKIE']['email'])    : ''),
        'commentform_url'            => isset($data['url'])       ? serendipity_specialchars($data['url'])        : (isset($serendipity['COOKIE']['url'])      ? serendipity_specialchars($serendipity['COOKIE']['url'])      : ''),
Wenn ich das richtig sehe, kann man der Funktion ein Array an $data übergeben und aus diesem Array wird dann versucht Name, Email und URL auszulesen. Das Ganze landet dann im Array $commentform_data und wird $serendipity['smarty']. Von da hat das entsprechende Template ja eigentlich Zugriff auf die Werte.

Im Template 2k11 werden diese auch schon genutzt:

Code: Select all

<input id="serendipity_commentform_name" name="serendipity[name]" type="text" value="{$commentform_name}"
Das Hauptproblem ist eigentlich, dass in $serendipity['POST'] nichts drin steht, zumindest bei mir nicht :)
include/functions_entries.inc.php

Code: Select all

serendipity_displayCommentForm(
                    $entry['id'],
                    $serendipity['serendipityHTTPPath'] . $serendipity['indexFile'] . '?url=' . $entry['commURL'],
                    true,
                    $serendipity['POST'],
                    true,
                    serendipity_db_bool($entry['moderate_comments']),
                    $entry
                );
Ich hab vorerst mal ein Array $codata angelegt und gefüllt.

Code: Select all

$codata = array();
				$codata['use'] = true;
				$codata['name'] = $serendipity['realname'];
				$codata['email'] = $serendipity['email'];

                serendipity_displayCommentForm(
                    $entry['id'],
                    $serendipity['serendipityHTTPPath'] . $serendipity['indexFile'] . '?url=' . $entry['commURL'],
                    true,
                    $codata,
                    true,
                    serendipity_db_bool($entry['moderate_comments']),
                    $entry
                );
Das wars. Sobald jetzt ein Autor angemeldet ist, werden Die Felder Name und Email im Kommentarformular vorausgefüllt. Allerdings habe ich keine Ahnung wo wir den Wert URL her bekommen sollen. Der Autor hat im Backend -> persönliche Einstellungen gar keine Einstellmöglichkeiten für eine URL. Wir könnten bei allen Autoren $serendipity['baseURL'] rein schreiben, aber ich persönlich brauche da gar keine URL :)

Was sagst du zu dem Lösungsansatz? Ich hoffe ich hab nicht komplett daneben gegriffen :) Sag bescheid wenn ich daraus einen Pull Request machen soll.

Viele Grüße

User avatar
onli
Regular
Posts: 2254
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by onli » Thu Feb 11, 2016 4:04 pm

Sieht gut aus!

In $serendipity['POST'] sollte etwas stehen, nachdem ein Kommentar abgesendet wurde. Auf der Bestätigungsseite zeigen manche Themes wieder das Kommentarformular an, und dort ist es dann vorgefüllt. Vorschlag: ersetze $serendipity['POST'] mit codata nur, wenn $serendipity['POST'] leer ist.

codata sollte aber noch einen anderen Namen bekommen, was hältst du von $userData?

Hast du ausprobiert, ob mit dem Patch die Erinnerungsfunktion für nicht-eingeloggte Nutzer noch funktioniert?

xoxyss
Regular
Posts: 91
Joined: Wed May 27, 2015 12:13 am
Location: Baden-Württemberg
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by xoxyss » Thu Feb 11, 2016 4:20 pm

Ah okay. Also ich habs angepasst:

Code: Select all

if (!$serendipity['POST']) {
					$userData = array();
		        	$userData['name'] = $serendipity['realname'];
		        	$userData['email'] = $serendipity['email'];
					$userData['url'] = '';
				} else {
					$userData = $serendipity['POST'];
				}

                $serendipity['smarty']->assign($comment_add_data);
                serendipity_displayCommentForm(
                    $entry['id'],
                    $serendipity['serendipityHTTPPath'] . $serendipity['indexFile'] . '?url=' . $entry['commURL'],
                    true,
                    $userData,
                    true,
                    serendipity_db_bool($entry['moderate_comments']),
                    $entry
                );
Wollen wir userData nicht lieber setzen wenn ein Benutzer angemeldet ist also so was wie

Code: Select all

if ($serendipity['serendipityAuthedUser'] === true) {
oder ist

Code: Select all

if (!$serendipity['POST']) {
besser?

Ja die Erinnerungsfunktion hab ich getestet und funktioniert noch :)

User avatar
onli
Regular
Posts: 2254
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by onli » Thu Feb 11, 2016 5:29 pm

Code: Select all

if ($serendipity['serendipityAuthedUser'] === true) {
gefällt mir etwas bessser. In der Praxis sollte es kaum einen Unterschied machen. Such dir eins aus ;)

Schicke dann doch bitte einen PR.

xoxyss
Regular
Posts: 91
Joined: Wed May 27, 2015 12:13 am
Location: Baden-Württemberg
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by xoxyss » Fri Feb 12, 2016 6:49 pm

Hi,
wenn ihr wollt kann ich mir das Thema noch weiter ansehen. Ich könnte probieren, in die persönlichen Einstellungen des Autors eine entsprechende Option einzubauen.

Viele Grüße

User avatar
onli
Regular
Posts: 2254
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Email Benachrichtigung bei Kommentaren von Autoren

Post by onli » Fri Feb 12, 2016 7:10 pm

Ich denke, dass das nicht konfigurierbar sein sollte. Das ist so eine Grundfunktion dass das wenig Sinn hat. Was man sich anschauen könnte: Wenn ein eingelogggter Autor einen anderen Namen eingibt und auf "Remember me" klickt, was wird dann vorausgefüllt – der Wert in den Cookies oder der aus s9y? Der aus den Cookies sollte Priorität haben.

Hatte das aber bewusst bisher ignoriert, weil das gut später änderbar ist.

Btw: Ich bin die nächsten Tage offline.

Post Reply