DataVar userseperatet fehlerhaft

06.01.2018 19:15 (zuletzt bearbeitet: 06.01.2018 19:26)
avatar  Mike48
#1 DataVar userseperatet fehlerhaft
avatar
Mitglied

In der Beschreibung steht, dass bei userseperatet für jeden User eine eigene Var angelegt wird.

Beispiel aus Wiki

Zitat
userseparated: Diese Funktion befindet sich noch in der Betaphase. Wenn userseparated aktiviert wird, wird für jedes Mitglied eine eigene Datenvariable angelegt. Um beim Beispiel des "forum_posts" zu bleiben: Man könnte somit z.B. ein Plugin realisieren, bei dem jedes Mitglied seine eigenen Kommentare zu Beiträgen hinzufügen kann, die dann später auch nur von diesem Mitglied gelesen werden können.



Ähnliches wollen wir in einem Plugin umsetzen.
Für jeden User soll ein Zustand zu jedem Beitrag gespeichert werden.
Der erste User hat gewonnen. Seine Zustände werden je Beitrag gespeichert.
Für alle anderen User ist die DataVar je Beitrag leer (Wert=null).

Es scheint so zu sein, dass nur ein User je Thema die DataVar je Beitrag verwenden kann.
Wer ein Thema als erstes aufruft und seine Zustände je Beitrag gespeichert werden, kann diese auch als einzigster dort wieder abrufen. Für alle anderen User ist dann in diesem Thema die DataVar (userseperatet) leer (=null).


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

 Antworten

 Beitrag melden
06.01.2018 19:27 (zuletzt bearbeitet: 06.01.2018 19:33)
avatar  Mike48
#2 RE: DataVar userseperatet fehlerhaft
avatar
Mitglied

Nachtrag

Hier der verwendete Code in unserem Plugin.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
/*
Die setDataVar()-Funktion ändert den Wert einer Data-Variablen
 
Parameter
---------
varname: 'beitrag_status' // der Name der Variablen, die abgefragt wird
originType: 2 // der Element-Typ, dem die Variable zugeordnet ist
originid: {{message:id}} // die Id des Elements, dem die Variable zugeordnet ist
val: 0/1 // der neue Wert der Variablen (false/true)
userseperatedID: {{user_id}} //
callback: Callback-Funktion
____________________________________________________________________
*/
xobor.plugin("pluginID").setDataVar('beitrag_status', 2, {{message:id}}, 1, function(res) (/* leer */), {{user_id}});
 


1
2
3
4
5
6
7
8
9
10
11
12
13
 
/*
Die getDataVar()-Funktion ruft den Wert einer Data-Variablen ab
 
Parameter
---------
varname: 'beitrag_status' // der Name der Variablen, die abgefragt wird
originType: 2 // der Element-Typ, dem die Variable zugeordnet ist
originid: {{message:id}} // die Id des Elements, dem die Variable zugeordnet ist
callback: Callback-Funktion
userseperatedID: {{user_id}} //
____________________________________________________________________
*/
xobor.plugin("pluginID").getDataVar('beitrag_status', 2, {{message:id}}, function(res) (beitrag_status=res;), {{user_id}});
 


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

 Antworten

 Beitrag melden
06.01.2018 22:02
avatar  Olaf
#3 RE: DataVar userseperatet fehlerhaft
Ol
Mitglied

Wird die "function" nicht in geschweifte Kammern geschrieben?

1
2
3
 
xobor.plugin("pluginID").getDataVar('beitrag_status', 2, {{message:id}}, function(res){
(res = der Inhalt der DataVar)
});
 


Und das Setzen der DataVar habe ich so gemacht:

1
2
 
var Daten = ["1"," ",{{user_id}}]
xobor.plugin("pluginID").setDataVar('beitrag_status', 2, {{message:id}}, Daten;
 



Gruß
Olaf

__________________________

http://138600.homepagemodules.de/

 Antworten

 Beitrag melden
07.01.2018 10:19 (zuletzt bearbeitet: 07.01.2018 10:34)
avatar  Mike48
#4 RE: DataVar userseperatet fehlerhaft
avatar
Mitglied

Kopierfehler mit den Klammern.

Die function ist im Plugin in geschweiften Klammern.

1
2
3
4
 
xobor.plugin("pluginID").setDataVar('beitrag_status', 2, {{message:id}}, 1, function(res) {/* leer */}, {{user_id}});
 
xobor.plugin("pluginID").getDataVar('beitrag_status', 2, {{message:id}}, function(res) {beitrag_status=res;}, {{user_id}});
 
 



In der API ist die setDataVar wiedersprüchlich.
Die Parameter sind in anderer Reihenfolge gelistet als sie in der function angeodnet sind.
In der Liste steht userseperatedID vor callback, in der function ist es umgekehrt.

Ich habe beide Varianten getestet, userseperatedID ,callback und callback, userseperatedID, aber es ändert sich nichts.

1
2
3
4
5
6
7
8
9
10
11
 
/*Parameter
varname: der Name der Variablen, die abgefragt wird
originType: der Element-Typ, dem die Variable zugeordnet ist
originid: die Id des Elements, dem die Variable zugeordnet ist
val: der neue Wert der Variablen
userseperatedID: wird später implementiert
callback: Callback-Funktion

*/

function xobor.plugin("pluginID").setDataVar(varname, origin_type, origin_id, val, callbackfn, userseperatedID)
 


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

 Antworten

 Beitrag melden
07.01.2018 10:52
avatar  Mike48
#5 RE: DataVar userseperatet fehlerhaft
avatar
Mitglied

Ich habe doch noch einen Unterschied festgestellt in Bezug der Reihenfolge userseperatedID ,callback und callback, userseperatedID bei setDataVar.

In der Variante userseperatedID ,callback funktioniert die callback function nicht.

In der Variante callback, userseperatedID funktioniert die callback function und gibt true als Paremter zurück, auch wenn die DataVar leer bleibt obwohl man einen Wert gespeichert hat.


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

 Antworten

 Beitrag melden
05.04.2018 14:04
avatar  Ali
#6 RE: DataVar userseperatet fehlerhaft
Al
Ali
Mitglied

Es scheint so zu sein, dass wenn eine userseparated-Variable neu angelegt wird, diese für den speziellen User erst angelegt wird, sobald dieser selbst auf die Variable zugegriffen hat.
Wenn man vorher versucht, auf die Variable, als Admin z.B., zuzugreifen, kommt bei mir 'null'.

?? Vielleicht ist das der Grund ??

Auch bei neu angemeldeten Test-Usern das gleiche Verhalten.
Wird die userseparated-Variable zum ersten mal verwendet vom "Eigentümer", dann wird das 'null' überschrieben, wenn ich aber stattdessen als allererstes als Administrator mit der Variable arbeiten will, zeigt er mir 'null'.
Auch wenn ich mich danach als Admin auslogge und als "Eigentümer" einlogge, lässt sich die Variable von 'null' nicht mehr wegbewegen. Es bleibt 'null'.

Ich bin mir nicht ganz sicher, aber eigentlich müsste die Variable für jeden User sofort dann angelegt werden, wenn ein Admin die userseparated-Variable im Plugin anlegt, oder bzw. sofort im Augenblick, in dem ein neuer User freigeschaltet wird (egal ob durch den Admin oder automatisch).

Weil dann würde sie grundsätzlich immer zur Verfügung stehen.

Aber dummerweise weiß ich halt nicht, ob ich nicht wiedermal irgendwo was vergessen habe, einen Haken oder so zu setzen!


 Antworten

 Beitrag melden
05.04.2018 17:14
avatar  Ali
#7 RE: DataVar userseperatet fehlerhaft
Al
Ali
Mitglied

Ich stelle fest:

Vor der Benutzung der userseparated-Variable eine Überprüfung, ob man selbst auf seine eigene Variable zugreift und diese nicht 'null' ist, reicht schon aus.

Wenn jemand anderes auf die Variable zugreift, muss man vorher überprüfen, ob sie vom Typ 'string' o.ä. ist.


 Antworten

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