PageSourceSearch

https://www.wasem.de/wp-content/plugins/tq-tools/src/Domain/EasyREST/js/easyrest-v1-20210521.js

js wasem.de collected 2026-10-07 19:28:44 UTC 5,757 bytes, 162 lines download raw bytes

1/**
2 *  Zu tq-tools EasyREST
3 */
4
5//  ID des zuletzt gesendeten AJAX-Requests merken
6var tqtools_easyrest_mailster_add_lastid;
7//  Formular-Objekt (für Ausgabe der Antwort)
8var tqtools_easyrest_mailster_add_formobject;
9
10jQuery(function () {
11    //  In's Submit der Mailster-Add-Formulare hängen
12    jQuery('.tq-tools-easyrest-mailster-add').on('submit', tqtools_easyrest_mailster_add_submit);
13});
14
15/**
16 * Erstellt aus den Daten des übergebenen Formular-Objekts (DOM) ein Objekt mit Namen und Daten der Felder
17 *
18 * Eigentlich sollte man meinen dafür gibt es eine fertige Lösung aber weder mittels jQuery.serializeArray()
19 * noch mittels der FormData-Klasse lässt sich das so handhaben, dass man es bequem an den Ajax-Aufruf übergeben
20 * und dann serverseitig als Hash empfangen kann.
21 *
22 * Vermutlich liegt's an der grundsätzlichen Komplexität der x-mehrdimensionaler Daten.
23 *
24 * Hiermit wird definiert: Wir arbeiten intern mit einem Objekt welches Properties mit den Namen der
25 * Felder enthält, denen je der Wert zugeordnet ist.
26 * Implementiert wird erst mal nur eine ein-dimensionale* Lösung, die derzeit aber völlig ausreicht.
27 * Wenn man mehr braucht erweitert man das eben aber die Grundidee des Objekts bleibt erhalten
28 *
29 * 2021-05-20: Ich sehe eben im tq-mailsform, dass bei Matthias ein einfaches:
30 *     formdata = new FormData(document.getElementById('tqmailform_form'));
31 * funktioniert!
32 *
33 * @param oform Das Formularobjekt
34 */
35function tqtools_easyrest_collectFormData(oform) {
36    var arrayData = jQuery(oform).serializeArray();            //  Liefert ein Array mit 0: {name: "mylist", value: "thevalue"} ...
37    var objectData = {};
38    var element = null;
39    for (var i = 0; i < arrayData.length; i++) {
40        element = arrayData[i];
41        if (typeof element === 'object') {                                    //  Wir nehmen erst mal nur die {name: "mylist", value: "thevalue"}-Dinger
42            objectData[element.name] = element.value;
43        }
44    }
45    return objectData;
46}
47
48/**
49 * Dummy-Funktion als Beispiel wie man ein onsuccess-Event im Formular verwenden kann.
50 * @param oForm
51 */
52function tqtools_easyrest_onsuccessdummy(oForm) {
53    alert('This is the dummy implementation for onsuccess.\nPlease rebuild with your own function.');
54    console.log(oForm);
55}
56
57/**
58 *  Rest-Aufruf um eine Eintragung in den Mailster-Newsletter durchzuführen.
59 *  Callback ist tqtools_easyrest_cb_checkemail()
60 */
61function tqtools_easyrest_mailster_add_submit(e) {
62
63    var urlRequest = g_tqtools_easyrest_url_restv1 + '/mailster-add';
64
65    var objectData = tqtools_easyrest_collectFormData(e.target);
66
67    //  DOM-Objekt des Formulars merken
68    tqtools_easyrest_mailster_add_formobject = e.target;
69
70    //  Im Paylout direkt sind die Metas und ein 'data' mit den Formulardaten
71    var payload = {
72        'source': 'form-submit',
73        'data': objectData
74    };
75
76    e.preventDefault();
77
78    tqtools_easyrest_mailster_add_lastid = tqtools_easyrest_sendREST(urlRequest, payload, tqtools_easyrest_cb_mailster_add);
79
80}
81
82//  CALLBACK für AJAX-Aufruf von tqtools_easyrest_mailster_add_submit()
83function tqtools_easyrest_cb_mailster_add(oJSON, textStatus, jqXHR) {
84
85    if (!oJSON) {
86        return;
87    }
88
89    if (oJSON.clientid != tqtools_easyrest_mailster_add_lastid) {  //  War nicht der letzte Aufruf
90        return;
91    }
92
93    var source = oJSON.source;        //  Von uns mitgegebener 'source'-Wert
94
95    var status = oJSON.status;        //  'OK' oder 'ERROR'
96    var statuskey = oJSON.statuskey;     //  Feinerer Status, z.B. 'INVALID_EMAIL'. Details in EasyREST->rest_mailster_add().
97    var message = oJSON.message;       //  Nachricht als Text/html. Ist zur Ausgabe an den Benutzer gedacht
98
99//    var oData                   =   oJSON.data;          //  Rückgabe-Daten des RESTs. Müssten gesetzt sein aber hier keine Verwendung
100
101    var jListForm = jQuery(tqtools_easyrest_mailster_add_formobject);
102
103    var html = '';
104
105    if (status === 'OK') {
106
107        //  Die Erfolgsmeldung ersetzt das komplette <form>
108
109        html = '<div class="alert alert-success">' + message + '</div>';
110        jListForm.html(html);
111
112        //  Sollen wir eine bestimmte Funktion aufrufen, z.B. um ein Event zu melden?
113        var onsuccess = jListForm.data('onsuccess');
114        if (onsuccess) {
115            if (typeof window[onsuccess] == 'function') {
116                window[onsuccess](tqtools_easyrest_mailster_add_formobject);
117            }
118        }
119
120    } else {
121
122        //  Die Fehlermeldung als erstes Kind des Forms
123
124        var jListChildren = jListForm.children('div.alert-danger');
125        if (jListChildren.length === 0) {                              //  Wir haben noch kein Error-Kind
126            html = '<div class="alert alert-danger">' + message + '</div>';
127            jListForm.prepend(html);
128        } else {
129            html = message;                    //  Div ist schon da
130            jListChildren.html(html);
131        }
132
133    }
134
135}
136
137/**
138 * Erledigt das, was allen Posts an unsere REST-API gemeinsam ist.
139 *
140 * @param oPayload object die zu schickenden Daten. Die Properties des Objects selbst sind verschiedene Metas wie 'source'
141 *                 und dann in 'data' ein Objekt der eigentlichen Daten (Formulardaten)
142 * @return die last-id zur Identifikation des (letzten) Aufrufs
143 */
144function tqtools_easyrest_sendREST(urlRequest, oPayload, callback_success) {
145
146    var lastclientid = new Date().getTime();
147
148    oPayload.clientid = lastclientid;
149    oPayload.lang = g_tqtools_easyrest_lang;
150
151    var settings = {
152        type: 'POST',
153        url: urlRequest,
154        data: oPayload,
155        success: callback_success,
156        dataType: 'json'
157    }
158    jQuery.ajax(settings);
159
160    return lastclientid;
161
162}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.