Bitte geben Sie einen Grund für die Verwarnung an
Der Grund erscheint unter dem Beitrag.Bei einer weiteren Verwarnung wird das Mitglied automatisch gesperrt.
Grundkurs Plugins schreiben
#77 RE: Grundkurs Plugins schreiben - Grundlagen
Ich habe Deine Funktion "getUserinformation" mal erweitert,um einzelne Daten (hier der Username) aus den Object "result" anzeigen zu lassen.Mit der "for" Schleife kann man dann alle Usernamen ermitteln.Ist dann aber,wenn man z.B. 1000 Mitglieder hat,eine recht zeitintensive Aktion.
2
3
4
5
6
7
8
9
10
11
function getUserinformation(result) {
var ausgabe ="";
for (var zaehler in result) {
var start = result[zaehler].toSource().indexOf("uname")+7;
var ende = result[zaehler].toSource().indexOf ('"', start)
var username = result[zaehler].toSource().substring(start, ende);
ausgabe = ausgabe + " ," +username;
}
alert(ausgabe);
}
Deshalb meine Frage,ob man der "getDeep()" oder der "getDeepList()" Funktion noch einen Parameter mit angeben kann,das z.B. nur die Usernamen von der Datenbank ausgelesen werden?
Gruß
Olaf
Nein die Felder kann man nicht bestimmen allerdings kann man das auch gut verarbeiten. Ich muss dir allerdings sagen, dass man so nicht mit einem js-object arbeitet.
Das macht man so.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var obj = {max:{userid:1,titel:'blubb'}, moriz:{userid:2,titel:'bli'}};
// am besten immer mit each!
var alertVar = '';
$.each(obj, function(key, value) {
console.log('key: ', key, 'value: ', value);
alertVar += key + ', ';
});
alert(alertVar);
// man kann auf ein Object wie auf ein Assoziatives Array zugreifen
console.log(obj['max']);
// oder
console.log(obj.max);
// usw.
console.log(obj['max']['userid']);
console.log(obj.max.userid);
Ich möchte die Objecte ja nicht in der Konsole ausgeben lassen,das funktioniert ja einwandfrei,sondern mit dem Inhalt "result" arbeiten.
Die Funktion "indexOf()" holt mir ohne viel Umwege die Objecte aus den Container "result" heraus und ich kann sie weiterverarbeiten.
Testweise habe ich in meinem Forum damit ein Plugin geschrieben,das mir eine Topposter-Liste in der Statistikbox im Footer vom Forum ausgibt.
Nachteil ist,das es nur im FF funktioniert.Ich habe es auch mit einer "for in" Schleife probiert,um die Objecte in einen Array zu schieben,aber auch diese Variante funktioniert nur einwandfrei im FF.
Wie bekomme ich die Objecte aus "result" in einen Array,der in jeden Browser funktioniert?
Gruß
Olaf
#80 RE: Grundkurs Plugins schreiben - Grundlagen
2
3
4
5
6
7
8
9
10
11
// ein verschachteltes js-object
var obj = {max:{userid:1,titel:'blubb'}, moriz:{userid:2,titel:'bli'}};
// greift auf den Key "max" zu und liefert dessen value zurück, was ebenfalls ein Object ist
obj.max // = Object {userid:1, titel:'blubb'}
// greift auf den Key "max" zu ... weiter greifen wir von Max auf den key vom value-object von max zu ... also den titel
// jetzt ist die Ausgabe nichts weiter als ein String
obj.max.titel // = String 'blubb'
wie gesagt ... das was du da versuchst ist ein komplett falscher Ansatz
#81 RE: Grundkurs Plugins schreiben - Grundlagen
Das habe ich begriffen.So kann man gezielt auf Daten im Object zugreifen ohne z.B. mit meiner "Suchfunktion" in den Objecten.
Nun möchte ich ja die Mitgliederdaten bearbeiten und mir keine Daten in der Console anschauen.
Ich habe mit Deinem Beispielscript von der Vorseite mit den Object-Container "result" mal versucht,die value Daten auszulesen.
2
3
4
5
6
7
8
function getUserinformation(result) {
var alertVar = '';
$.each(result, function(key, value) {
console.log('key: ', key, 'value: ', value);
alertVar += key + ',' + value;
});
}
In der Console werden mir die Objecte (value) richtig angezeigt.
Gebe ich zum Beispiel "alert(alertVar)" noch zu den Code,dann werden mir die Key's richtig angezeigt,aber der Inhalt mit "[object Object]" ausgegeben.
Gebe ich nach Deinen Prinzip "console.log(result.1.name)" (result=Objecte,1= Key,name=name aus den Object 1 mit Wert Username) meckert die Konsole "SyntaxError: missing ) after argument list".
Irgendwie lassen sich die Inhalte der Objecte nicht auslesen.
Gruß
Olaf
#82 RE: Grundkurs Plugins schreiben - Grundlagen
Ich habe es hinbekommen:
2
3
4
5
6
7
8
9
10
function getUserinformation(result) {
var userids = [];
var user = [];
var posts =[];
$.each(result, function(key,value) {
user.push(value["uname"]);
posts.push(value["user_posts"]);
userids.push(key);
});
Ich danke Dir für Deine wirklich guten Beispiele!
Gruß
Olaf
Meine Tests habe ich alle im Plugin System im FF gemacht und dort läuft alles einwandfrei.Deshalb auch meine Euphorie,die aber schlagartig zu Ende war,als ich mir das Ergebniss in allen anderen Browsern angesehen habe.
Wieso ist "value" für alle Browser leer und der FF liest aber den Inhalt einwandfrei aus den Objecten?
Dagegen wird die Ausgabe der Key's in allen Browsern wiederum vollständig angezeigt.
Gruß
Olaf
Ich habe hier mal zwei Screenshots gemacht.Einmal vom FF wo alles so läuft wie es sein soll und einmal von Opera,wo alle Objecte leer sind.
Ich habe die Abfrage so eingesetzt,wie ich sie in meinem letzten Posting gezeigt habe.
Kannst Du mir eventuell sagen,wieso das so ist?
Gruß
Olaf
Aufgrund eingeschränkter Benutzerrechte werden nur die Namen und (falls vorhanden) Vorschau-Grafiken der Dateianhänge angezeigt Jetzt anmelden!
Ich habe das Problem gelöst!
Da die Objecte mit den Mitgliederlistenrechten im Adminmenü belegt sind und ich sie für Gäste nicht freigegeben hatte,wurden mir natürlich die Objecte nicht angezeigt.
Es hat mir vor kurzen ein netter Techniker einen treffenden Satz geschrieben:
"Manchmal ist die Lösung einfacher als man denkt..."
Gruß
Olaf
Für alles was du über die API abfragen möchtest, benötigst bzw. der User natürlich auch die entsprechenden Rechte. Das wird vorher immer geprüft, bevor der Server eine Antwort gibt.
Ich habe das Plugin "Topposter" fertig und habe dazu noch ein paar Fragen.
Zitat von Christian im Beitrag #86
Für alles was du über die API abfragen möchtest, benötigst bzw. der User natürlich auch die entsprechenden Rechte. Das wird vorher immer geprüft, bevor der Server eine Antwort gibt.
1.Gibt es vielleicht eine andere Möglichkeit,die Userliste im Plugin per "getDeep()/getDeepList()" auch ohne Gruppenrechte (Adminmenü) auszulesen?
2.Ich habe das Script so geschrieben,das die gesamte Userliste ausgelesen wird und dann per Logik die 10 Besten User herausgeholt werden und in ein Sitzungscookie abgespeichert und so dann nach jeden weiteren Aufruf die Topposter nur noch aus den Cookie geladen werden.
Würde sich die Last der Server oder sich die Ladezeit der Foren sehr ungünstig auswirken,wenn ich die Userliste bei jeden Aufruf komplett neu lade?
Gruß
Olaf
Zitat von Christian im Beitrag #88
Zu 2. .... sowas kann im Store zu einer Ablehnung führen!
Bedenke wenn ein Forum das Plugin nutzen würde, dass z.B. 50.000 User hat, dann werden jedesmal 50.000 Einträge mit jedem Seitenaufruf geladen werden.
Deshalb habe ich es über einen Zwischenspeicher (Cookie) gelöst.
Ich weiß sowieso noch nicht,ob ich das Plugin frei gebe,weil es mir nicht gefällt,das man die Userliste für Gäste freigeben müsste ,wenn man die Anzeige für Gäste haben will.
Aber eine Frage habe ich noch,wie man per Javascript abfragen kann,welche Template geladen ist "{{template==144.start}}...{{template==144.end}}?
Gruß
Olaf
- Informationen
- Aktuelle News
- Forum Tutorials - Tipps und Anleitungen
- SEO / Werbung fürs Forum
- Verwaltung
- Extras
- Design
- Plugin(system)
- Eure Fragen zu Tutorials
- Forum Support
- Fragen und Antworten
- Pluginsystem
- Plugins
- Templates & Sprachen
- Bugreport
- Verbesserungsvorschläge
- Sponsoren gesucht
- Das neue Xobor Business-Template
- News und Updates
- Bugreport
- Allgemeines Feedback
- Verbesserungsvorschläge
- Sonstiges
- Kaffeeklatsch
- Lob & Kritik
- Verbesserungsvorschläge
- Allgemeine Fragen
- Fehlermeldungen
- Verbesserungsvorschläge Responsive Design
- Bugreport Responsive Design
- Archiv - Alter Betatest
- Responsive Design - Verbesserungsvorschläge
- Responsive Design - Bugreport
- Fragen zum neuen Template
- Neue Administration Beta Test
- Bugreport Neue Administration
- Allgemeines Fragen & Feedback
- Verbesserungsvorschläge zur neuen Administration
- Shoutbox
Ähnliche Themen
Jetzt anmelden!
Jetzt registrieren!
© 2017 Xobor | Forum-Software