Entwickler-Talk

  • Seite 6 von 8
20.03.2018 19:57
avatar  Mike48
#76 RE: Entwickler-Talk
avatar
Mitglied

Ist die globale Variable eine selbst definierte oder eine vorhandene?

Beispiel globale Variable Foren-Logo

Man spricht die entweder als TPL an:
{{global_header_logo}}

oder über JS
var heading = xobor.plugin("xobor").getGlob("global_header_logo");


www.friends-of-xobor.de (621181 - V4 Template)
www.seniorenclub-sel-koeln.de (578865 - V6 Template)

 Antworten

 Beitrag melden
20.03.2018 20:13
avatar  Ali
#77 RE: Entwickler-Talk
Al
Ali
Mitglied

Ich habe sie unter "Administration" - "Plugins" - "Plugin-Entwicklung" - ein eigenes Plugin erstellt - dort unter "neue globale Variable" erstellt.
Also selbst definiert.


 Antworten

 Beitrag melden
20.03.2018 20:13 (zuletzt bearbeitet: 20.03.2018 20:20)
avatar  Mike48
#78 RE: Entwickler-Talk
avatar
Mitglied

Oder handelt es sich um eine im Plugin erstellte globale Variable?

Dann spricht man sie so an:

Var xyz = xobor.plugin('PLUGIN_ID').getGlob('Variablen-Name')

Im Plugin fügt man die Variable ein, in dem man Rechts-Oben auf "Globale Variablen" geht und dann entweder TPL-Insert oder JS-insert an der variablen klickt.


www.friends-of-xobor.de (621181 - V4 Template)
www.seniorenclub-sel-koeln.de (578865 - V6 Template)

 Antworten

 Beitrag melden
20.03.2018 20:23 (zuletzt bearbeitet: 20.03.2018 20:28)
avatar  Ali
#79 RE: Entwickler-Talk
Al
Ali
Mitglied

Plugin_id ist nicht das gleiche wie der Plugin Name?
Wo finde ich dann die Plugin_id?
Und oben rechts sehe ich nur "Unterstützte Templates".

Außerdem wollte ich zuerst, jedesmal, wenn ein User sein Profil abspeichert, dass seine Userdaten in einer globalen Liste abgespeichert werden, und die Landkarte nur auf diese Liste zuzugreifen braucht. Dann braucht die Landkarte nicht immer alle Userprofile einzeln abklappern. Irgendwie stehe ich auf dem Schlauch.

Ich sehe gerade: Im Admin-Bereich unter "Template-Entwicklung" kann man in der "Kopie von Standard-Template" auch globale Variablen definieren.


 Antworten

 Beitrag melden
20.03.2018 21:37 (zuletzt bearbeitet: 20.03.2018 21:41)
avatar  Olaf
#80 RE: Entwickler-Talk
Ol
Mitglied

Zitat von Ali im Beitrag #79
Plugin_id ist nicht das gleiche wie der Plugin Name?


Nein!
Den Plugin Namen kannst Du Dir selber aussuchen und ist egal wie Du den schreibst.
Der Bezeichner einer Plugin_ID muß nach den Regeln genau geschrieben werden.Das hatte ich hier schon in Beitrag #77 geschrieben.
Die ID darf keine Sonderzeichen und keine Leerzeichen haben!

Zitat von Ali im Beitrag #79

Wo finde ich dann die Plugin_id?


In meinem Bild (Adresszeile) kannst Du es sehen,wenn Du in die jeweilige "Plugin-Entwicklung" gehst.

Gruß
Olaf

__________________________

http://138600.homepagemodules.de/
Bildanhänge
imagepreview

ID Bezeichner.jpg

download


Aufgrund eingeschränkter Benutzerrechte werden nur die Namen und (falls vorhanden) Vorschau-Grafiken der Dateianhänge angezeigt Jetzt anmelden!

 Antworten

 Beitrag melden
20.03.2018 22:01
avatar  Ali
#81 RE: Entwickler-Talk
Al
Ali
Mitglied

Jetzt hat's geklappt!

Ich kann jetzt speichern. Braucht noch nicht einmal innerhalb eines Formulars zu sein.

Ich bedanke mich bei euch allen!


 Antworten

 Beitrag melden
22.03.2018 22:37 (zuletzt bearbeitet: 22.03.2018 22:50)
avatar  Ali
#82 RE: Entwickler-Talk
Al
Ali
Mitglied

Wie warten auf Datenbankeintrag mit setGlob, damit damit an anderer Stelle daraus gelesen und weitergearbeitet werden kann?

var xyz = xobor.plugin('plugin_id').getGlob('Variablen-Name');


Hier wird die Anweisung rechts vom '='-Zeichen abgearbeitet, damit sie links in die Variable geschrieben werden kann. Da kann man davon ausgehen, dass der 'getGlob'-Befehl ausgeführt wurde.
Aber beim Senden mit 'setGlob' braucht der Client nur zu versenden, und schon kann er den nächsten Befehl abarbeiten. Obwohl es noch eine Weile dauert, bis der Befehl beim Server ankommt, und dann in die Datenbank geschrieben wird.

xobor.plugin("plugin_id").setGlob("liste",neuerwert,function(){var irgendeinevariable = xobor.plugin("plugin_id").getGlob("liste"); alert(irgendeinevariable);});


Callback funktioniert da nicht. Scheinbar. Er holt sich zwar in der callback-Funktion den Wert, es wird aber nicht 'neuerwert', sondern 'alterwert' angezeigt. Erst nach dem Aktualisieren (mit F5) hat er dann 'neuerwert' im Alert-Fenster angezeigt.

Gibt es da nicht einen Befehl, der abfragt, ob der Datenbankeintrag fertiggeschrieben wurde, und dann erst wird weitergemacht?

Liebe Grüße.


 Antworten

 Beitrag melden
23.03.2018 11:00 (zuletzt bearbeitet: 23.03.2018 11:04)
avatar  Mike48
#83 RE: Entwickler-Talk
avatar
Mitglied

Warum muss man auf die Variable auf dem Server zugreifen wenn man die Werte in einer Variablen auf dem Client hat, die man gerade auf dem Server gespeichert hat?

Sinnvoll finde ich höchstens, zu testen ob das Speichern erfolgreich war oder ein Fehler vorliegt.

1
2
3
4
5
6
7
8
 
xobor.plugin("plugin_id").setGlob("liste",neuerwert,function(res){
if(res) {
alert("Variable gespeichert" + res);
}else{
alert("Fehler bei Variable speichern" + res);
}
});
 
 


www.friends-of-xobor.de (621181 - V4 Template)
www.seniorenclub-sel-koeln.de (578865 - V6 Template)

 Antworten

 Beitrag melden
23.03.2018 15:17 (zuletzt bearbeitet: 23.03.2018 15:20)
avatar  Ali
#84 RE: Entwickler-Talk
Al
Ali
Mitglied

Vielen lieben Dank Mike48.

Ich finde auch, dass es sinnvoller ist, dass man einfach nur abfragt, ob der Wert erfolgreich gespeichert worden ist, und man kann weiterarbeiten.

Aber was ich nicht verstehe, sind 2 Sachen:

1. res ist doch nur ein Parameter? Was hat dieser Parameter mit 'Es wurde erfolgreich gespeichert' zu tun? Auf dem Server. Ich sehe da die Verbindung nicht.
2. Und wenn die Speicherung erfolgreich war auf dem Server, wieso funktioniert Folgendes nicht?

xobor.plugin("plugin_id").setGlob("liste",neuerwert,function(res){
// Wenn erfolgreich abgespeichert
if(res) {
// dann kann man sie auch abrufen
var irgendeinevariable = xobor.plugin("779078p001landk").getGlob("liste");
// und anzeigen
alert(irgendeinevariable);
}else{
alert("Fehler bei Variable speichern" + res);
}
});


Warum funktioniert dann das rot geschriebene nicht?
Er zeigt den alten Wert an, obwohl dieser überschrieben sein müsste.

Weiß nicht, ob das wichtig ist:
Wenn ein User bei seinem Profil auf "Speichern" klickt, sollen seine Landkartenkoordinaten an den Server geschickt werden, weil die Landkartendaten zentral auf dem Server für alle verfügbar sein müssen. Die Landkarte soll ja von allen abgerufen werden können. Aber ich kann erst dann der Landkarten-Funktion das Signal senden: "Du, schau mal! Ich hab dir neue Daten geschickt! Füg die mal ein!", wenn auch der Wert erfolgreich gespeichert wurde. Sonst greift die "Daten-in-die-Landkarte-integrier-Funktion" auf die Datenbank zu und die ist noch leer.


 Antworten

 Beitrag melden
23.03.2018 15:25 (zuletzt bearbeitet: 23.03.2018 15:30)
avatar  Olaf
#85 RE: Entwickler-Talk
Ol
Mitglied

Zitat von Ali im Beitrag #82

Callback funktioniert da nicht. Scheinbar. Er holt sich zwar in der callback-Funktion den Wert, es wird aber nicht 'neuerwert', sondern 'alterwert' angezeigt. Erst nach dem Aktualisieren (mit F5) hat er dann 'neuerwert' im Alert-Fenster angezeigt.



Das funktioniert auch nicht,weil Du noch in der setGlob Funktion auch gleich den noch nicht gespeicherten Wert abrufen willst.
Deshalb wird auch erst der Wert der Variablen bei Dir nach F5 angezeigt,weil sie dann erst gespeichert worden ist.

Du musst erst den Wert abspeichern,bevor Du ihn abrufen kannst:

1
2
3
4
5
6
 
<script>
var neuerwert = "TestGlob";
xobor.plugin("plugin_id").setGlob("liste",neuerwert);
alert(xobor.plugin("plugin_id").getGlob("liste"));
</script>
 
 



Das Beipiel von Mike ist eine Callbackfunktion,ob die Variable erfolgreich abgespeichert worden ist oder nicht (false/true).

Gruß
Olaf

__________________________

http://138600.homepagemodules.de/

 Antworten

 Beitrag melden
23.03.2018 15:35 (zuletzt bearbeitet: 23.03.2018 15:38)
avatar  Ali
#86 RE: Entwickler-Talk
Al
Ali
Mitglied

Genau so hatte ich ganz am Anfang programmiert, Olaf.

Funktioniert denn der Code bei dir?
Bei mir zeigt er, wenn ich z.B.

xobor.plugin("plugin_id").setGlob("liste","34534534");
alert(xobor.plugin("plugin_id").getGlob("liste"));

hinschreibe, noch den alten Wert an.
Erst wenn ich auf F5 drücke, zeigt er dann den neuen Wert an.


 Antworten

 Beitrag melden
23.03.2018 15:49 (zuletzt bearbeitet: 23.03.2018 15:50)
avatar  Mike48
#87 RE: Entwickler-Talk
avatar
Mitglied

Versuch mal folgendes:

1
2
3
4
 
xobor.plugin("plugin_id").setGlob("liste","34534534");
xobor.plugin("plugin_id").getGlob("liste",0,function(res) {
alert("Var liste = " + res);
});
 


www.friends-of-xobor.de (621181 - V4 Template)
www.seniorenclub-sel-koeln.de (578865 - V6 Template)

 Antworten

 Beitrag melden
23.03.2018 15:56
avatar  Ali
#88 RE: Entwickler-Talk
Al
Ali
Mitglied

Ja! Super!
Jetzt klappt's!
Danke.


 Antworten

 Beitrag melden
23.03.2018 16:00
avatar  Mike48
#89 RE: Entwickler-Talk
avatar
Mitglied

Ich glaube, mit der Callback-Funktion wird die Var vom Server neu gelesen.
Ohne wird sie aus dem Browser gelesen.

Es gibt auch einen Unterschied bei Hidden-Var.
Da muss man auch die Callback-Funktion verwenden.

Ist Globale Variable "liste" eine Hidden-Var?


www.friends-of-xobor.de (621181 - V4 Template)
www.seniorenclub-sel-koeln.de (578865 - V6 Template)

 Antworten

 Beitrag melden
23.03.2018 16:21
avatar  Olaf
#90 RE: Entwickler-Talk
Ol
Mitglied

Zitat von Ali im Beitrag #86
Genau so hatte ich ganz am Anfang programmiert, Olaf.

Funktioniert denn der Code bei dir?
Bei mir zeigt er, wenn ich z.B.
xobor.plugin("plugin_id").setGlob("liste","34534534");
alert(xobor.plugin("plugin_id").getGlob("liste"));

hinschreibe, noch den alten Wert an.
Erst wenn ich auf F5 drücke, zeigt er dann den neuen Wert an.


Gerade probiert und funktioniert.
Natürlich nicht als Hidden-Var und der "Typ" als Text.

Gruß
Olaf

__________________________

http://138600.homepagemodules.de/

 Antworten

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