Entstehung des Plugin PN mit Historie

06.07.2018 16:31 (zuletzt bearbeitet: 19.07.2018 10:07)
avatar  Mike48
#1
avatar
Der Fels in der Brandung

Postman

Es hat schon immer gestört, dass man nicht die Ursprungsnachricht sieht auf die geantwortet wird.

Die Idee war, wenn man auf den Speicher-Button klickt, dass dann die Ursprungsnachricht einfach an die Mail angehangen wird.
Die Ursprungsnachricht steht bei den meisten Templates beim Antworten unter dem Antwort-Formular.

Idee war (schon lange) da, jetzt ging es ans Plugin erstellen.
Benötigt wird dafür das Element Private Mails - Neue Nachricht.
Ich nehme dann gerne den Footer. Wenn der Footer geladen wird, ist in der Regel alles geladen was für das Plugin nötig ist und man kann sich das $( document ).ready( . . . ) sparen.

Als nächstes eine Config-Variable für die Gruppenrechte anlegen.

Mike


 Antworten

 Beitrag melden
06.07.2018 17:10 (zuletzt bearbeitet: 06.07.2018 20:43)
avatar  Mike48
#2
avatar
Der Fels in der Brandung

Postman

Mit der Elementuntersuchung ging ich auf die Suche um den Speicher-Button zu selektieren.
Im Business ist das der input-Tag mit der id=sendmailbutton.

Also eine Funktion geschrieben, die auf den Speicher-Button-Klick reagiert und das in der Konsole anzeigt.

1
2
3
 
$("#sendmailbutton").click(function() {
console.log("Speicher-Button gedrückt");
});
 


Den Klick konnte ich in auf der Konsole erst sehen, als ich die Option "Nicht leeren" aktiviert hatte, da beim Klick die Seite gewechselt wird und die Konsole sonst dabei geleert wurde.

Als nächstes kam das Problem dran, wie bekomme ich beim Speichern noch Text an die Nachricht gehangen.

Eine Variable deklarieren in die der Text der neuen Nachricht kommt. Also der Text aus der Textarea.
Dann an diese Variable noch etwas Zusätzliches anhängen.

Nach einigen Versuchen ist das dabei rausgekommen

1
2
3
4
5
6
 
var pn_textarea = ""; // Variable für den neuen Nachrichtentext
$("#sendmailbutton").click(function() { // Speicherbutton geklickt
pn_textarea = $('#messagetext').val(); // Text aus der Textarea in Variable schreiben
pn_textarea += "Hier kommt noch was Zusaetzliches dran"; // Zusaetzlichen Text anhaengen
$('#messagetext').val(pn_textarea); // alles in die neue Nachricht schreiben
});
 


und hat funktioniert. An der Antwort hing unten noch der Text dran, "Hier kommt noch was Zusaetzliches dran".

Mike


 Antworten

 Beitrag melden
06.07.2018 21:16 (zuletzt bearbeitet: 06.07.2018 22:27)
avatar  Mike48
#3
avatar
Der Fels in der Brandung

Postman

Da jetzt auch JS-Variablen und Funktionen zum Einzatz kommen, möchte ich den JS kapseln, um nicht mit anderen Scripten in Konflikt zu geraten. Dafür baue ich eine Funktion ein, die auch sofort ausgeführt wird

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<script>
(function () { // begin - Kapselung
 
/* Alles was zwischen begin - Kapselung und ende - Kapselung steht
* ist local und nur innerhalb dieser Funktion gueltig
* Das betrifft Variablen die mit var definiert sind
* und alle Funktionen
*/
 
var pn_textarea = ""; // Variable für den neuen Nachrichtentext
$("#sendmailbutton").click(function() { // begin - Speicherbutton geklickt
pn_textarea = $('#messagetext').val(); // Text aus der Textarea in Variable schreiben
pn_textarea += "Hier kommt noch was Zusaetzliches dran"; // Zusaetzlichen Text anhaengen
$('#messagetext').val(pn_textarea); // alles in die neue Nachricht schreiben
}); ende - Speicherbutton geklickt
 
})(); // ende - Kapselung
</script>
 


Als nächstes möchte ich die Ursprungsnachricht haben und wenn möglich, hinten anhängen.

Mike


 Antworten

 Beitrag melden
06.07.2018 22:13 (zuletzt bearbeitet: 08.07.2018 10:08)
avatar  Mike48
#4
avatar
Der Fels in der Brandung

Postman

Wenn man die Ursprungsnachricht aus dem HTML der Seite entnehmen will, dann steht der nur als HTML zur Verfügung. HTML kann aber nicht an die Nachricht gehangen werden.
Ich probiere Foren-Codes aus, so wie sie auch beim Nachrichten schreiben in der Iconbar zur Verfügung stehen und stelle fest, das funktioniert. Ich kann aber nicht die ganze Ursprungsnachricht von HTML in Foren-Code umwandeln. Vor allem nicht, wenn in den Nachrichten reichhaltiger Gebrauch von der Iconbar gemacht wurde. Ich erinnere mich an frühere Plugin Entwicklungen, dass es da wahrscheinlich eine reply-Funktion geben könnte, wo Werte von der Ursprungsnachricht enthalten sein könnten, die auch für das zitieren sein könnte. Ich mache mich in der Template Entwicklicklung im Element "Neue Nachricht" auf die Suche und werde fündig.

Beim durchforsten aller Templates (Business, Gaia, ProSilver, Standard) fand ich einige Forenvariablen. Ich schrieb also ein Script, mit dem ich alle Forenvariablen auf der Konsole ausgab, um zu sehen, was sie enthalten.
Da konnte man zB. den Unterschied zwischen reply_text und reply_quote sehen. reply_text war mit html-Code und reply_quote mit Foren-Code.

Diese Variablen habe ich gefunden

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
{{reply}}                           0/1 wenn Ursprung vorhanden (beim antworten)
{{reply_text}} Ursprung in html
{{reply_quote}} Ursprung in Forencodes
{{reply_messagetime}} Zeitstempel 10stellig (1529944499)
{{reply_messagetime|dateformat}} "vor einer Minute" oder "25.06.2018 18:34"
{{reply_title}} Ursprungstitel
{[pn_message_original_by]} "Ursprüngliche Mail von mike48"
{{reply_avatar}} url zum Avatar
{{reply_user_link}} (u11_mike--.html)
{{reply_user}}
{{reply_uname}}
{[pm_reply_title]} "In Antwort auf"
{[new_reply_quote]} "Diesen Beitrag zitieren"
{{reply_username_quote}}
 


Als erstes habe ich die Variable {{reply}} ausgewertet. Neue Nachricht und Antworten ist dass gleiche Element. Unser Plugin soll nur bei Antworten funktionieren, da nur dort etwas angehangen werden soll. Bei einer neuen Nachricht gibt es ja noch nichts zum anhängen.

1
2
3
4
5
6
7
8
9
 
{{reply==1.start}}
 
/* hier kommt der Code hin zum anhängen wenn reply 1 ist
*
* wenn reply 0 ist, dann handelt sich um eine neue Nachricht
* wenn reply 1 ist, dann handelt sich um eine Antwort
*/
 
{{reply==1.end}}
 

Mike


 Antworten

 Beitrag melden
08.07.2018 10:40 (zuletzt bearbeitet: 08.07.2018 13:08)
avatar  Mike48
#5
avatar
Der Fels in der Brandung

Postman

Die angehangene Ursprungsnachricht soll so formiert ausgeben werden, dass man sieht von wem sie ist, von wann sie ist und welchen Betreff bzw Titel sie hat. Außerdem sollen alle Ursprungsnachrichten eine optische Trennung haben.

Da kein html funktioniert nehmen wir aus der Iconbar das Icon "[ line]" um eine Trennlinie zwischen die Nachrichten zu bekommen. Das Icon "[ line]" ist im Default der Iconbar in den unsichtbaren Icons aller Templates enthalten und müsste in jedem Forum verfügbar sein, sofern ein Admin es nicht gelöscht hat. Das ist aber dann das Problem des Admin.

Zur Formatierung benöten wir auch Zeilenumbrüche. "<br>" geht nicht, da kein html möglich. Mit der String-Funktion "String.fromCharCode(num1[, ...[, numN]])" kann man jedes UTF-16 Zeichen in einen String einfügen. Eine Zeilenschaltung hat den Code 13.

Wir erstellen eine Variable für eine Zeilenschaltung und für eine Trennlinie

1
2
 
var zeile = String.fromCharCode(13);  // Zeilenschaltung mit CR
var line = "[line]"; // Trennline mit Icon line aus der Iconbar
 



Datum und Uhrzeit der Ursprungsnachricht.

Bei Tests mit der Forenvariablen und Datumsformatierun "{{reply_messagetime|dateformat}}" kamen keine brauchbaren Ergebniss zustande. Als Ergebnis hatte man wie im Forum auch, entweder Datum mit Urzeit im Format TT.MM.JJJJ SS:MM oder "vor xy Minaten. Das wird dann aber als Text eingebaut und im Gegenteil zu Forenbeiträgen nicht aktualisiert beim aufrufen der Nachricht.
{{reply_messagetime}} ergibt eine 10 stellige Zahl.
Mit new Date( {{reply_messagetime}} ) kam allerdings immer ein falsches Datum und falsch Zeit zurück oder es gab Fahler die auf ein falsches Format hin deuten. Für ein neues Dateobjekt new Date() wird ein Wert in Millisekunden benötigt. Dafür müsste die Zahl 13 stellig sein. Ich nahm an, dass {{reply_messagetime}} dann Sekunden sind und habe sie mit 1000 multipliziert um Millisekunden zu bekommen.

So bekam ich ein gültiges Datum mit Uhrzeit zB. dieses Sun Jul 08 2018 10:17:55 GMT+0200

1
 
var datestamp = new Date({{reply_messagetime}} * 1000); // millisec noch anhaengen sonst falsches Datum/Zeit
 



Aus dieser Variablen kann man nun mit dem Date-Objekt von JS die einzelnen Werte holen und zu einem Datum mit Urzeit formatieren.

1
2
3
4
5
6
7
8
9
 
var datestamp = new Date({{reply_messagetime}} * 1000); // millisec noch anhaengen sonst falsches Datum/Zeit
 
var tag = datestamp.getDate();
var monat = datestamp.getMonth();
var jahr = datestamp.getFullYear();
var stunde = datestamp.getHours();
var minute = datestamp.getMinutes();
 
var pn_zeit = tag + "." + monat + "." + jahr + " " + stunde + ":" + minute;
 


Oder gerkürzt

1
2
3
 
var datestamp = new Date({{reply_messagetime}} * 1000); // millisec noch anhaengen sonst falsches Datum/Zeit
 
var pn_zeit = datestamp.getDate() + "." + datestamp.getMonth() + "." + datestamp.getFullYear() + " " + datestamp.getHours() + ":" + datestamp.getMinutes();
 


Das ergab dann zB. 12.5.2018 9:2.

Das sah nicht schön aus und ich musste bei so einer Anzeige immer überlegen, um wieviel Uhr war das?
Der nächste Schritt war dann, außer das Jahr was immer vierstellig ist, alle anderen Werte auf zweistellig zu ändern.

Die Funktion für zweistellig

1
2
3
4
5
6
7
8
9
10
11
12
13
 
function zweistellig(tmp) {
// einstellige Werte von Tag, Monat, Std, Min, Sec in zweistellig
if (tmp < 10) {
// wenn keiner 10 dann von einstellig auf zweistellig
return "0" + tmp; // eine Null davor setzen
}else{
// wenn nicht kleiner 10 dann unbehandelt zurueck
return tmp;
}
}
 
// Datum und Uhrzeit mit zweistelligen Werten
var pn_zeit = zweistellig(datestamp.getDate()) + "." + zweistellig(datestamp.getMonth() +1 ) + "." + datestamp.getFullYear() + " " + zweistellig(datestamp.getHours()) + ":" + zweistellig(datestamp.getMinutes());
 

Mike


 Antworten

 Beitrag melden
08.07.2018 15:02 (zuletzt bearbeitet: 08.07.2018 15:10)
avatar  Mike48
#6
avatar
Der Fels in der Brandung

Postman

Betreff Zeile

In die Betreff Zeile soll der Titel der Nachricht, auf die geantwortet wird.
Für die Bezeichnung gibt es die Sprach-Variable {[name_subject]}. Die enthält im Business den Text Betreff.
Für den Betreff haben wird die Variable {{reply_title}}. Darin steht der Titel der Nachricht. Sonderzeichen und Umlaute sind als ESC-Sequenzen darin. Der Titel muss dekodiert werden.

Zum dekodieren verwenden wir wieder eine bewerte Funktion aus unseren anderen Plugins

1
2
3
4
5
6
 
function decodeString(encoded){  // escape Zeichen umwandeln in normale Zeichen.
var $helper = $("<div>").html(encoded);
return $helper.html();
}
 
var Titel = decodeString("{{reply_title}}")
 

Mike


 Antworten

 Beitrag melden
10.07.2018 13:41 (zuletzt bearbeitet: 10.07.2018 13:42)
avatar  Mike48
#7
avatar
Der Fels in der Brandung

Postman

Die Antwort mit den Ursprungsnachrichten verbinden und abschicken

Nachdem nun scheinbar alle Komponenten vorhanden waren, ging es darum, die Antwort mit der Ursprungsnachricht zu verbinden um sie dann abschicken zu können.

Unter die Antwort sollen folgende Komponenten
- 1 Leerzeile - var zeile
- Tennstrich - var linie
- 1 Leerzeile - var zeile
- Ursprüngliche Mail von . . . - Sprach-Variable {[pn_message_original_by]}
- Betreff: - Sprach-Variable {[name_subject]}
- Datum: - var pn_zeit
- Nachricht: - Foren-variable {{reply_quote}}

1
2
3
4
5
6
7
8
9
10
11
 

var datestamp = new Date({{reply_messagetime}} * 1000); // millisec noch anhaengen sonst falsches Datum/Zeit
// Datum und Uhrzeit in zweistelligem Format erstellen
var pn_zeit = zweistellig(datestamp.getDate()) + "." + zweistellig(datestamp.getMonth() +1 ) + "." + datestamp.getFullYear() + " " + zweistellig(datestamp.getHours()) + ":" + zweistellig(datestamp.getMinutes());
 
var zeile = String.fromCharCode(13); // 13 fuer Zeilenschaltung mit CR
var line = "[line]"; // Trennline mit Icon line aus der Iconbar

// Zusammensetzen der neuen Nachricht mit Angang
var txt = zeile + line + zeile + "[b]{[pn_message_original_by]}[/b]" + zeile + "[b]{[name_subject]}: [/b]"+decodeString("{{reply_title}}") + zeile + "[b]{[name_datetime]}: [/b]" + pn_zeit + zeile + "[b]Nachricht:[/b]" + zeile + "{{reply_quote}}";
 
 



Dann wurde festgestellt, dass in der Foren-Variable {{reply_quote}} alle Leerzeilen entfernt sind. Dadurch waren auch die Leerzeilen oberhalb und unterhalb der Trennline weg.
Durch die Erweiterung der Variable "Leerzeile" um ein geschütztes Leerzeichen "String.fromCharCode(160)" waren die Leerzeilen oberhalb und unterhalb der Trennline wieder da.

1
 
var zeile = String.fromCharCode(160,13);  // geschütztes Leerzeichen (160) plus CR-Code (13)
 

Mike


 Antworten

 Beitrag melden
17.07.2018 08:29 (zuletzt bearbeitet: 17.07.2018 09:35)
avatar  Mike48
#8
avatar
Der Fels in der Brandung

Postman

Im den Kopfdaten der Ursprungsnachricht wollen wir Teile mit Fett hervorheben. Dafür fügen wir die Forencodes "[ b] . . . [ /b] ein, die in allen Foren vorhanden sein müssten.

Die Leerzeilen oberhalb der Trennlinie sind nicht immer vorhanden. Es wurde festgestellt, dass es darauf ankommt, ob die Nachricht mit einer Zeilenschaltung am Ende abschließt oder nicht. Schließt sie ohne ab, dann fehlt eine Leerzeile über der Trennlinie.

Durch hinzufügen einer zusätzlichen Zeilenschaltung vor das geschützte Leerzeichen kann man das beheben. Dadurch schließen die Nachrichten immer mit Zeilenschaltungen ab, entweder mit einer, oder wenn schon eine vorhanden war, mit zwei. Da in der Foren-Variable {{reply_quote}} alle Leerzeilen entfernt werden, bleiben nur die Zeilen übrig mit dem geschütztrn Lerrzeichen und wir haben oberhalb und unterhalb der Trennlinie eine Zeile nur mit einem Leerzeichen. Sieht aus wie Leerzeilen.

Die Variable line für den Trennstrich besteht aus
- einer Zeilenschaltung (CharCode 13),
- einem geschützten Leerzeichen (CharCode 13),
- einer Zeilenschaltung (CharCode 13),
- ForenCode line aus der Iconbar,
- einem geschützten Leerzeichen (CharCode 13),
- einer Zeilenschaltung (CharCode 13)

1
 
var line = String.fromCharCode(13,160, 13) + "[line]" + String.fromCharCode(160,13);  // CR + Geschuetztes Leerzeichen + line + Geschuetztes Leerzeichen + CR
 



Wir umfassen unseren Code noch mit {{template==144.start}} und {{template==144.end}} damit er nur im Business ausgeführt wird.

Jetzt haben wir eine funktionierden Verson für das Business Templat.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
{{template==144.start}}
{{reply==1.start}}
{{plugin_pnhistorie01_config_rechte==true.start}}
<script>
(function () { // begin Kapsel
 
function decodeString(encoded){ // escape Zeichen umwandeln in norame zeichen.
var $helper = $("<div>").html(encoded);
return $helper.html();
}
 
function zweistellig(tmp) {
// einstellige Werte von Tag, Monat, Std, Min, Sec in zweistellig
if (tmp < 10) {
return "0" + tmp;
}else{
return tmp;
}
}
 
function diceAndSend() {
// Button Speichern betaetigt
// Historie an PN anhaengen
var zeile = String.fromCharCode(13); // CR-Code
var line = String.fromCharCode(13,160, 13) + "[line]" + String.fromCharCode(160,13); // CR + Geschuetztes Leerzeichen + line + Geschuetztes Leerzeichen + CR
var datestamp = new Date({{reply_messagetime}} * 1000); // millisec noch anhaengen sonst falsches Datum/Zeit
 
console.log("Datum und Zeit Ursprungsnachricht: "+datestamp);
 
var pn_zeit = zweistellig(datestamp.getDate()) + "." + zweistellig(datestamp.getMonth() +1 ) + "." + datestamp.getFullYear() + " " + zweistellig(datestamp.getHours()) + ":" + zweistellig(datestamp.getMinutes());
var txt = line + "[b]{[pn_message_original_by]}[/b]" + zeile + "[b]{[name_subject]}: [/b]"+decodeString("{{reply_title}}") + zeile + "[b]{[name_datetime]}: [/b]" + pn_zeit + zeile + "[b]Nachricht:[/b]" + zeile + "{{reply_quote}}";
var pn_textarea = $('#messagetext').val(); // Nachricht aus Textarea lesen
$('#messagetext').val(pn_textarea += txt); // Nachricht mit angehangener Ursprungsnachricht abschicken
}
 
$("#sendmailbutton").click(function() {
diceAndSend(); // Vorherige Mail anhaengen als Historie
});
 
})(); // ende Kapsel
 
</script>
{{plugin_pnhistorie01_config_rechte==true.end}}
{{reply==1.end}}
{{template==144.end}}
 
 


Als nächstes erkunden wir die Möglichkeiten, das Plugin auch in der mobilen Ansicht zu benutzen, damit alle User des Business, unabhängig ihrer benutzten Geräte in den Genuss des Plugin kommen.

Mike


 Antworten

 Beitrag melden
17.07.2018 09:27 (zuletzt bearbeitet: 17.07.2018 09:39)
avatar  Mike48
#9
avatar
Der Fels in der Brandung

Postman

Mobile Ansicht

In der mobilen Ansicht müssen wir Vorsorge treffen, dass unser Code ausgefürt wird, wenn auch jQuery geladen ist. Dafür verwenden wir folgenden Code

1
2
3
4
5
6
 
{{footerjs.start}}
{{footerjs}}
 
// hier kommt der Code hin
 
{{footerjs.end}}
 


Die script-Tags entfallen, da sie schon vorgegeben sind.
Hinter die Forenvariable {{footerjs}} schreiben unser Script. Dadurch ist gewährleistet, dass jQuery schon verfügbar ist, bevor unser Script ausgeführt wird.

In der mobilen Ansicht hat der Button "Mail schicken" und die Textarea eine andere id. Wir können also das gleiche Script wie im Business verwenden und passen lediglich die beiden IDs an.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
{{template==77.start}}
{{plugin_pnhistorie01_config_rechte==true.start}}
{{reply==1.start}}
console.log("reply_quote==true");
{{footerjs.start}}
{{footerjs}}
 
(function () { // begin Kapsel
 
function decodeString(encoded){ // escape Zeichen umwandeln in norame zeichen.
var $helper = $("<div>").html(encoded);
return $helper.html();
}
 
function zweistellig(tmp) {
// einstellige Werte von Tag, Monat, Std, Min, Sec in zweistellig
if (tmp < 10) {
return "0" + tmp;
}else{
return tmp;
}
}
 
function diceAndSend() {
// Button Speichern betaetigt
// Historie an PN anhaengen
var zeile = String.fromCharCode(13); // CR-Code
var line = String.fromCharCode(13,160, 13) + "[line]" + String.fromCharCode(160,13); // CR + Geschuetztes Leerzeichen + line + Geschuetztes Leerzeichen + CR
var datestamp = new Date({{reply_messagetime}} * 1000); // millisec noch anhaengen sonst falsches Datum/Zeit
var pn_zeit = zweistellig(datestamp.getDate()) + "." + zweistellig(datestamp.getMonth() +1 ) + "." + datestamp.getFullYear() + " " + zweistellig(datestamp.getHours()) + ":" + zweistellig(datestamp.getMinutes());
var txt = line + "[b]{[pn_message_original_by]}[/b]" + zeile + "[b]{[name_subject]}: [/b]"+decodeString("{{reply_title}}") + zeile + "[b]{[name_datetime]}: [/b]" + pn_zeit + zeile + "[b]Nachricht:[/b]" + zeile + "{{reply_quote}}";
var pn_textarea = $('#text').val(); // Nachricht aus Textarea lesen
$('#text').val(pn_textarea += txt); // Nachricht mit angehangener Ursprungsnachricht abschicken
}
 
$("#sendpm").click(function() {
diceAndSend(); // Vorherige Mail anhaengen als Historie
});
})(); // ende Kapsel
 
{{footerjs.end}}
{{reply==1.end}}
{{plugin_pnhistorie01_config_rechte==true.end}}
{{template==77.end}}
 



Damit das Script nur in der mobilen Ansicht ausgeführt wird, umfassen wir es mit {{template==77.start}} . . . {{template==77.end}}.
Der Code für Business wird mit {{template==144.start}} . . . {{template==144.end}} umfasst.
Die ID für den Button "Mail schicken ändern wir von #sendmailbutton in #sendpm, und für Textarea von #messagetext in #text.

Zusammengesetzt haben wir folgendes Script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
 
{{template==144.start}}
{{reply==1.start}}
{{plugin_pnhistorie01_config_rechte==true.start}}
<script>
(function () { // begin Kapsel
 
function decodeString(encoded){ // escape Zeichen umwandeln in norame zeichen.
var $helper = $("<div>").html(encoded);
return $helper.html();
}
 
function zweistellig(tmp) {
// einstellige Werte von Tag, Monat, Std, Min, Sec in zweistellig
if (tmp < 10) {
return "0" + tmp;
}else{
return tmp;
}
}
 
function diceAndSend() {
// Button Speichern betaetigt
// Historie an PN anhaengen
var zeile = String.fromCharCode(13); // CR-Code
var line = String.fromCharCode(13,160, 13) + "[line]" + String.fromCharCode(160,13); // CR + Geschuetztes Leerzeichen + line + Geschuetztes Leerzeichen + CR
var datestamp = new Date({{reply_messagetime}} * 1000); // millisec noch anhaengen sonst falsches Datum/Zeit
 
console.log("Datum und Zeit Ursprungsnachricht: "+datestamp);
 
var pn_zeit = zweistellig(datestamp.getDate()) + "." + zweistellig(datestamp.getMonth() +1 ) + "." + datestamp.getFullYear() + " " + zweistellig(datestamp.getHours()) + ":" + zweistellig(datestamp.getMinutes());
var txt = line + "[b]{[pn_message_original_by]}[/b]" + zeile + "[b]{[name_subject]}: [/b]"+decodeString("{{reply_title}}") + zeile + "[b]{[name_datetime]}: [/b]" + pn_zeit + zeile + "[b]Nachricht:[/b]" + zeile + "{{reply_quote}}";
var pn_textarea = $('#messagetext').val(); // Nachricht aus Textarea lesen
$('#messagetext').val(pn_textarea += txt); // Nachricht mit angehangener Ursprungsnachricht abschicken
}
 
$("#sendmailbutton").click(function() {
diceAndSend(); // Vorherige Mail anhaengen als Historie
});
 
})(); // ende Kapsel
 
</script>
{{plugin_pnhistorie01_config_rechte==true.end}}
{{reply==1.end}}
{{template==144.end}}
 
{{template==77.start}}
{{plugin_pnhistorie01_config_rechte==true.start}}
{{reply==1.start}}
console.log("reply_quote==true");
{{footerjs.start}}
{{footerjs}}
 
(function () { // begin Kapsel
 
function decodeString(encoded){ // escape Zeichen umwandeln in norame zeichen.
var $helper = $("<div>").html(encoded);
return $helper.html();
}
 
function zweistellig(tmp) {
// einstellige Werte von Tag, Monat, Std, Min, Sec in zweistellig
if (tmp < 10) {
return "0" + tmp;
}else{
return tmp;
}
}
 
function diceAndSend() {
// Button Speichern betaetigt
// Historie an PN anhaengen
var zeile = String.fromCharCode(13); // CR-Code
var line = String.fromCharCode(13,160, 13) + "[line]" + String.fromCharCode(160,13); // CR + Geschuetztes Leerzeichen + line + Geschuetztes Leerzeichen + CR
var datestamp = new Date({{reply_messagetime}} * 1000); // millisec noch anhaengen sonst falsches Datum/Zeit
var pn_zeit = zweistellig(datestamp.getDate()) + "." + zweistellig(datestamp.getMonth() +1 ) + "." + datestamp.getFullYear() + " " + zweistellig(datestamp.getHours()) + ":" + zweistellig(datestamp.getMinutes());
var txt = line + "[b]{[pn_message_original_by]}[/b]" + zeile + "[b]{[name_subject]}: [/b]"+decodeString("{{reply_title}}") + zeile + "[b]{[name_datetime]}: [/b]" + pn_zeit + zeile + "[b]Nachricht:[/b]" + zeile + "{{reply_quote}}";
var pn_textarea = $('#text').val(); // Nachricht aus Textarea lesen
$('#text').val(pn_textarea += txt); // Nachricht mit angehangener Ursprungsnachricht abschicken
}
 
$("#sendpm").click(function() {
diceAndSend(); // Vorherige Mail anhaengen als Historie
});
})(); // ende Kapsel
 
{{footerjs.end}}
{{reply==1.end}}
{{plugin_pnhistorie01_config_rechte==true.end}}
{{template==77.end}}
 

Mike


 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!