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.
Fragen zur Kapselung
Fragen zur Dokumentation der Xobor Plugin API, Kapitel Tipps & Tricks - 1. 1 Kapselung
Ich habe in Plugins die Kapselung wie in der API-Docu verwendet. Da wird vorgeschlagen, eine Variable mit dem Namen des Plugin zu erstellen um Verwechsungen mit variablen aus anderen Scripten zu vermeiden.
Frage 1: Wie legt man eine Kapselung über mehrere Plugin-Elemente an?
Ich habe an den Variablennamen in jedem Element um eine zusätzliche Bezeichnung erweitert. Wenn man diese Variablen in anderen Elementen anspricht, muss man den kompletten Variablennamen verwenden und nicht nur zB. self.varname
Beim anlegen einer Pluginkopie werden die Variablennamen der Kapselung natürlich nicht auf die neue Plugin_ID automatisch angepasst.
Frage 2: Wie kann man das bewerkstelligen, dass die Variable automatisch die Plugin_ID bekommt?
Es ist aufwendig in allen Pluginelementen diese Variablennamen nachträglich anzupassen. Eine Besondere Herausforderung an die Admins die ein privates Plugin bekommen und wegen Mangels an Pluginspeicherplätzen eine Kopie anlegen müssen.
www.friends-of-xobor.de (621181 - Template kann wechsel bei Pluin Tests)
www.seniorenclub-sel-koeln.de (578865 - V6 Template)
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
// da die ID unserer Plugins "testplugin" ist, nennen wir die Variable dementpsrechend
var plugin_testplugin = new function() {
// eine Referenz auf sich selbst!
var self = this;
// so definiert man eine Variable!
self.version = '1.000 rc0';
// Auch Objects usw. sind kein Problem!
self.config = {
color: 'orange',
fontSize: 16,
fontWeight: 'bold'
};
// Es ist gut wenn man ein wenig Struktur in seinen Code bringt!
// Also sortieren wir allgemeine Funktionen die wir benötigen hier ein
self.helperFunctions = {
sayHello: function(name) {
if (typeof name === 'undefined' || !name) {
name = 'Gast';
}
var text = 'Hello '+name;
alert(text);
self.helperFunctions.printToDoc(text);
},
printToDoc: function(string) {
if ($('#testplugin').length) {
$('#testplugin').html(string);
} else {
$('body').prepend('<div id="testplugin" style="color:'+self.config.color+'; font-size:'+self.config.fontSize+'px; font-weight:'+self.config.fontWeight+';">'+string+'</div>');
}
}
};
// eine initialfunction
// in dieser initialfunction kommt der ausführende Code
// mit dem Document ready state stellen wir sicher, dass die Seite komplett
// geladen ist
self.run = function() {
$('document').ready(function(){
self.helperFunctions.sayHello(prompt('Wie lautet dein Name?'));
});
};
}
// jetzt müssen wir unser Programm nur noch ausführen!
plugin_testplugin.run();
2
3
4
5
6
7
8
9
10
11
12
var plugin_testplugin = new function() {
// eine Referenz auf sich selbst!
var self = this;
// so definiert man eine Variable!
self.version = '1.000 rc0';
// Auch Objects usw. sind kein Problem!
self.config = {
color: 'orange',
fontSize: 16,
fontWeight: 'bold'
};
Kann man das in allen Elementen eines Plugin gleich machen, die Plugin_ID für die "Var plugin_id=function" zu nehmen, wenn man darauf achtet dass es keine doppelten Variablennamen im gesamten Plugin gibt? Ist es dann auch möglich mit sel.variable im ganzen Plugin auf alle variablen zuzugreifen egal in welchem Element sie deklariert wurde.
www.friends-of-xobor.de (621181 - Template kann wechsel bei Pluin Tests)
www.seniorenclub-sel-koeln.de (578865 - V6 Template)
Zitat
Es wäre schön wenn man hier im Forum Pluginsystem auch mal eine Antwort bekommt sonst lohnt sich die Schreiberei hier nicht
Sorry, hast ja recht
Das Problem bei solchen Fragen ist, dass wir ja auch nicht gerade täglich neue Plugins schreiben und daher selbst erstmal testen müssen, bevor wir dir hier antworten können. Wenn dazu gerade keine Zeit ist bleibt die Frage unbeantwortet. Ich werde versuchen das in Zukunft mit einem "kann ich mir gerade nicht anschauen, du bekommst deine Antwort später" zu kommentieren!
Zu deinen Fragen:
Zitat
Frage 1: Wie legt man eine Kapselung über mehrere Plugin-Elemente an?
Das ist ja quasi auch die Frage im zweiten Beitrag...
Es werden immer nur die Plugin-Elemente geladen, die auf der aktuellen Seite benötigt werden. Legst du also eine Variable im Plugin Element an, welches nur im Kalender geladen wird, steht die Variable nur dort zur Verfügung.
Es gibt daher zwei Lösungsansätze:
1) Entweder du legst eine eigene .js-Datei mit Variablen-Definitionen und ggf. globalen Funktionen für dein Plugin an, die du dann in den benötigten Elementen einfach per Script-Tag einbindest.
2) Oder du definierst deine Variablen in einem Element, welches auf jeder Seite sowiso geladen wird, wie z.B. "obere Leiste". Dann stehen die dort definiereten Variablen in allen nachfolgenden Elementen zur Verfügung.
Zitat
Frage 2: Wie kann man das bewerkstelligen, dass die Variable automatisch die Plugin_ID bekommt?
Eine automatische Vergabe, die dann insbesondere auch beim Anlegen einer Plugin-Kopie noch klappt gibt es glaube ich nicht.
Was du machen kannst, ist z.B. eine Konfig-Variable z.B. "namespace" anzulegen. Dann kannst du z.B. mit
2
3
var plugin_{{plugin_testplugin_config_namespace}} = new function() {
...
}
deine Kapselung starten und musst dann im Falle eine Plugin-Kopie nur den namespace ändern um einen Namenskonflikt zu vermeiden.
Ich hoffe das hilft,
Zitat von Ingmar im Beitrag #3
Es werden immer nur die Plugin-Elemente geladen, die auf der aktuellen Seite benötigt werden. Legst du also eine Variable im Plugin Element an, welches nur im Kalender geladen wird, steht die Variable nur dort zur Verfügung.
Ich habe öffters mehrere Elemente die gleichzeitig geladen werden.
Zum Beispiel Obere und/oder Untere Leiste und noch ein besonderes Element wie Galerie, Kalender usw.
So wird zum Kalender auch die Obere und/oder Untere Leiste geladen.
Bei der Kapselung sind ja nicht nur die Variablen sonder auch die Funktionen in der Variablen mit der Plugin_ID enthalten. Kann man diese "Kapsel_variable" die man zB. in der Oberen leiste deklariert in Elementen die nach der Deklaration der Variablen geladen werden irgenwie erweitern, um dann in dem Element auch mit sel.xyz darauf zuzugreifen?
www.friends-of-xobor.de (621181 - Template kann wechsel bei Pluin Tests)
www.seniorenclub-sel-koeln.de (578865 - V6 Template)
Zitat von Mike48 im Beitrag #4
Kann man diese "Kapsel_variable" die man zB. in der Oberen leiste deklariert in Elementen die nach der Deklaration der Variablen geladen werden irgenwie erweitern, um dann in dem Element auch mit sel.xyz darauf zuzugreifen
Probier es mal so,das müsste eigentlich gehen:
plugin_testplugin.xyz = new function() {}
- 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