Entwickler.HowToJavascript History

Hide minor edits - Show changes to markup

 
 
April 01, 2011, at 11:17 PM by tthelen -
Added lines 1-2:

(:redirect 'http://docs.studip.de/develop/Entwickler/HowToJavascript':)

 
 
March 07, 2011, at 02:02 PM by aklassen -
Changed line 141 from:

TODO (aklassen)

to:

Diese Bibliothek stellt eine barrierefreie dynamische Validierungslogik für Formularfelder bereit. Genaueres ist hier dokumentiert: Wiki

 
 
March 07, 2011, at 10:17 AM by mlunzena -
Changed lines 117-119 from:

Das placeholder-Attribut wird nicht in allen Browsern unterstützt. Dieses Plugin ermöglicht dennoch dessen Verwendung.

to:

Das placeholder-Attribut wird nicht in allen Browsern unterstützt. Dieses Plugin ermöglicht dennoch dessen Verwendung. Damit kann man also Texteingabefelder einfach mit einem placeholder-Attribut garnieren und erhält dann das gewünschte Verhalten:

<input type="text" name="email" placeholder="E-Mail-Adresse">

 
 
February 22, 2011, at 12:08 PM by mlunzena -
Changed lines 78-80 from:
to:

Das Prototype Framework wird seit Stud.IP Version 1.11 nicht mehr verwendet und befindet sich nur aus Gründen der Kompatibilität zu vorhandenen Plugins, die noch Prototype verwenden, in Stud.IP. Prototype darf nicht mehr verwendet werden und wird in der nächsten Version aus Stud.IP entfernt.

Changed lines 92-93 from:
to:

Das script.aculo.us UI Framework wird seit Stud.IP Version 1.11 nicht mehr verwendet und befindet sich nur aus Gründen der Kompatibilität zu vorhandenen Plugins, die noch script.aculo.us verwenden, in Stud.IP. script.aculo.us darf nicht mehr verwendet werden und wird in der nächsten Version aus Stud.IP entfernt.

Added lines 98-99:

TableKit wurde zum clientseitigen Sortieren von Tabellen verwendet. Da es auf Prototype aufbaut, darf TableKit nicht mehr verwendet werden und wird in der nächsten Version aus Stud.IP entfernt.

Added lines 105-106:

Derzeit wird die aktuelle jQuery Version 1.5 verwendet.

Added lines 112-113:

Damit können die in HTML-Elementen gespeicherten data-*-Attribute einfach ausgelesen werden. Sobald alle Browser den diesbezüglichen HTML5-Standard implementieren, wird das Metadata-Plugin entfernt (bzw. nur für Progressive Enhancement verwendet).

Added lines 117-118:

Das placeholder-Attribut wird nicht in allen Browsern unterstützt. Dieses Plugin ermöglicht dennoch dessen Verwendung.

Changed lines 122-127 from:

TODO TableSorter-Pagination-Plugin

  • jquery.tablesorter.pager.js
to:
  • jquery.tablesorter.pager.js TableSorter-Pagination-Plugin

Dieses Plugin stellt ähnliche Möglichkeiten wie das vormalige TableKit-Plugin (s.o.) zur Verfügung und ermöglicht das flexible client-seitige Sortieren von Tabellen.

Added lines 132-140:

Das jQuery-UI-Multiselect-Plugin wandelt "multiple select inputs" in sexier aussehende Äquivalente um. Das Plugin wurde in den folgenden Changesets gepatchet:

  • https://develop.studip.de/trac/changeset/18594/trunk/public/assets/javascripts/ui.multiselect.js r18594
  • https://develop.studip.de/trac/changeset/18635/trunk/public/assets/javascripts/ui.multiselect.js r18635

jQuery Tools: Validator (Link)

  • validator.min.js

TODO (aklassen)

Added lines 144-145:

Diese Bibliothek wird verwendet, um lokalisierte Strings in JS verwenden zu können. Weiteres ist bereits im Wiki dokumentiert.

Deleted lines 148-150:

jQuery Tools: Validator (Link)

  • validator.min.js
 
 
February 22, 2011, at 11:53 AM by mlunzena -
Changed lines 74-132 from:

to:

Prototype Framework (Link)

  • prototype.js

script.aculo.us UI Framework (Link)

  • builder.js
  • controls.js
  • dragdrop.js
  • effects.js
  • scriptaculous.js
  • slider.js
  • sound.js
  • unittest.js

TableKit (aufbauend auf Prototype) (Link)

  • tablekit.js

jQuery (Link)

  • jquery-1.5.js
  • jquery-1.5.min.js

jQuery-Plugins

Metadata (Link)

  • jquery.metadata.js

Placehold (Link)

  • jquery.placehold-0.3.js

TableSorter (Link)

  • jquery.tablesorter.js
  • jquery.tablesorter.min.js

TODO TableSorter-Pagination-Plugin

  • jquery.tablesorter.pager.js

jQuery UI (Link)

  • jquery-ui-1.8.7.custom.min.js

jQuery UI Multiselect (Link)

  • ui.multiselect.js

JS-L10n (Link)

  • l10n.js

Altlasten

  • md5.js
  • overlib.js

jQuery Tools: Validator (Link)

  • validator.min.js
 
 
February 22, 2011, at 11:18 AM by mlunzena -
Added lines 71-74:

Weitere verwendete JS-Bibliotheken

 
 
February 21, 2011, at 11:07 AM by Krassmus -
Added lines 66-70:

Das jQuery-Framework in Stud.IP

Zur Zeit (Stud.IP 2.1) wird jQuery 1.5 und jQuery-UI 1.8.7 verwendet. Von jQuery-UI sind alle Funktionen bis auf die Tabs in Stud.IP geladen. Und die Tabs hauptsächlich deswegen nicht, weil es in Stud.IP andere Möglichkeiten gibt, die Tabs zu implementieren. Auf dieses Feature sollte man also aus Designgründen auch in Plugins verzichten.

Kleine Änderungen am Aussehen von jQuery-UI sind auf einer Parallelseite dokumentiert.

 
 
July 20, 2010, at 03:00 PM by mlunzena -
Deleted lines 41-42:
.focus Alle ElementeDas Element wird beim Laden der Seite fokussiert.Sind mehrere Elemente mittels .focus markiert, so wird nur das erste fokussiert.
.focus.if-emptyAlle ElementeDas Element wird beim Laden der Seite fokussiert, sofern es nicht leer ist.Dient als spezialisierte Erweiterung von .focus, reiht sich nahtlos in dessen Verhalten ein. Sprich: Sind mehrere Elemente mit .focus markiert, so wird in der durch das HTML definierte Reihenfolge das erste Element fokussiert, das nicht als .if-empty definiert ist bzw. als if-empty definiert wurde und leer ist.
 
 
July 20, 2010, at 10:50 AM by mlunzena -
Deleted line 41:
.defaultValueActsAsHint <input />, <textarea />Der vordefinierte Wert (aus value="") wird als Hint das Elementes verwendet. Sprich: Solange das Element diesen Wert hat, wird beim Klick darauf das Feld geleert bzw. beim Verlassen des Feldes wird der vordefinierte Wert wieder hergestellt, sofern das Element in dem Zeitpunkt leer ist.-
 
 
July 20, 2010, at 10:50 AM by mlunzena -
Deleted line 42:
.effect_highlightAlle ElementeDas Element wird für einen kurzen Zeitraum hervorgehoben, um die Aufmerksamkeit des Benutzers zu erlangen.-
 
 
May 18, 2010, at 01:28 PM by Krassmus -
Changed line 68 from:
  • Alle Variablen eines Abschnittes des Dokumentes mit aktuellem Parameter zu versehen. Nach einem oder mehreren addLinkParam-Aufrufen könnte man STUDIP.URLHelper.updateAllLinks("#container"); aufrufen, wodurch alle Links innerhalb des CSS-Selektors "#container" einmal durch die STUDIP.URLHelper.getLink(…) Methode ersetzt werden und dadurch aktuelle Parameter bekommen. Gibt man keinen Selektor an, werden die Links des ganzen Dokuments ersetzt.
to:
  • Alle Hyperlinks eines Abschnittes des Dokumentes mit aktuellem Parameter zu versehen. Nach einem oder mehreren addLinkParam-Aufrufen könnte man STUDIP.URLHelper.updateAllLinks("#container"); aufrufen, wodurch alle Links innerhalb des CSS-Selektors "#container" einmal durch die STUDIP.URLHelper.getLink(…) Methode ersetzt werden und dadurch aktuelle Parameter bekommen. Gibt man keinen Selektor an, werden die Links des ganzen Dokuments ersetzt.
 
 
May 11, 2010, at 12:06 PM by Krassmus -
Added lines 3-4:

(:toc:)

Changed line 62 from:

Das Objekt STUDIP.URLHelper bietet für Javascript ähnliche Funktionalität wie der URLHelper in PHP. Dennoch darf man nicht vergessen, dass beide URLHelper gänzlich unabhängig voneinander sind und nicht miteinander kommunizieren können. Wozu braucht man dann einen URLHelper in Javascript? Zum Beispiel, um:

to:

Das Objekt STUDIP.URLHelper bietet für Javascript ähnliche Funktionalität wie der URLHelper in PHP. Dennoch darf man nicht vergessen, dass beide URLHelper gänzlich unabhängig voneinander sind und nicht miteinander kommunizieren können. Wozu braucht man dann einen URLHelper in Javascript? Zum Beispiel, um:

 
 
May 11, 2010, at 12:00 PM by Krassmus -
Changed line 63 from:
  • Variablen zu einer beliebigen URL hinzuzufügen, ohne sich Gedanken darüber zu machen, welche Variablen schon in der URL sind und welche nicht. Also wird aus STUDIP.URLHelper.getLink(alte_url, {hallo: "welt"}) ein http:…/about.php?hallo=welt, selbst wenn alte_url schon einen Wert für hallo angegeben hatte oder auch nicht. Auch muss man sich dann keine Gedanken darüber machen, ob man den Parameter mit "?" oder einem "&" anhängt. Beachten Sie zudem, dass Parameter in der alte_url weniger Priorität haben als Parameter im zweiten Argument.
to:
  • Variablen zu einer beliebigen URL hinzuzufügen, ohne sich Gedanken darüber zu machen, welche Variablen schon in der URL sind und welche nicht. Also wird aus STUDIP.URLHelper.getLink(alte_url, {hallo: "welt"}) ein http:…/about.php?hallo=welt, egal ob alte_url schon einen Wert für hallo angegeben hatte oder auch nicht. Auch muss man sich dann keine Gedanken darüber machen, ob man den Parameter mit "?" oder einem "&" anhängt. Beachten Sie zudem, dass Parameter in der alte_url weniger Priorität haben als Parameter im zweiten Argument.
 
 
May 11, 2010, at 11:59 AM by Krassmus -
Changed line 62 from:
  • Einen Link zu generieren, wo eine Javascript-Datei sonst nicht wüsste, wie die Adresse des Servers ist. Schreiben Sie also STUDIP.URLHelper.getLink("about.php"), um einen Pfad zu http://www.studip……de/about.php zu bekommen.
to:
  • Einen Link zu generieren, wo eine Javascript-Datei sonst nicht wüsste, wie die Adresse des Servers ist. Schreiben Sie also STUDIP.URLHelper.getLink("about.php"), um einen URI-kodierten Pfad zu http://www.studip……de/about.php zu bekommen, oder STUDIP.URLHelper.getURL("about.php"), um das selbe als nicht URI-kodiert zu erhalten.
 
 
May 11, 2010, at 11:57 AM by Krassmus -
Changed line 22 from:

und fülle diese Methoden dann mit Leben. An diese Konvention sollten sich auch Plugin-Programmierer halten, wobei die noch speziell darauf zu achten haben, dass ihre Methodennamen auch tatsächlich eindeutig sind. Implementieren zwei unterschiedliche Plugins eine Methode STUDIP.my_plugin.go , so wird mindestens eines der beiden Plugins weinen. Sinnvoll ist es da, den eindeutigen Klassennamen des Plugins zwischen zu schieben, entweder über STUDIP.pluginclassname.go oder eventuell auch einfach nur pluginclassname.go.

to:

und fülle diese Methoden dann mit Leben. An diese Konvention sollten sich auch Plugin-Programmierer halten, wobei die noch speziell darauf zu achten haben, dass ihre Methodennamen auch tatsächlich eindeutig sind. Implementieren zwei unterschiedliche Plugins eine Methode STUDIP.go , so wird mindestens eines der beiden Plugins weinen. Sinnvoll ist es da, den eindeutigen Klassennamen des Plugins zwischen zu schieben, entweder über STUDIP.pluginclassname.go oder eventuell auch einfach nur pluginclassname.go.

 
 
May 11, 2010, at 11:53 AM by Krassmus -
Changed line 65 from:
  • Variablen dauerhaft von generierten URLs abzuziehen, wenn sie denn vorher drin gewesen sein sollten. Dazu gibt man analog zu oben addLinkParam("hallo", "") an und der Parameter hallo wird stets als leer angesehen und auch aus bestehenden URLs gestrichen, wenn vorher vorhanden.
to:
  • Variablen dauerhaft von generierten URLs abzuziehen, wenn sie denn vorher drin gewesen sein sollten. Dazu gibt man analog zu oben addLinkParam("hallo", "") an und der Parameter hallo wird stets als zwingend leer angesehen und auch aus bestehenden URLs gestrichen, wenn vorher vorhanden.
 
 
May 11, 2010, at 11:51 AM by Krassmus -
Added lines 57-67:

URLHelper in Javascript

Das Objekt STUDIP.URLHelper bietet für Javascript ähnliche Funktionalität wie der URLHelper in PHP. Dennoch darf man nicht vergessen, dass beide URLHelper gänzlich unabhängig voneinander sind und nicht miteinander kommunizieren können. Wozu braucht man dann einen URLHelper in Javascript? Zum Beispiel, um:

  • Einen Link zu generieren, wo eine Javascript-Datei sonst nicht wüsste, wie die Adresse des Servers ist. Schreiben Sie also STUDIP.URLHelper.getLink("about.php"), um einen Pfad zu http://www.studip……de/about.php zu bekommen.
  • Variablen zu einer beliebigen URL hinzuzufügen, ohne sich Gedanken darüber zu machen, welche Variablen schon in der URL sind und welche nicht. Also wird aus STUDIP.URLHelper.getLink(alte_url, {hallo: "welt"}) ein http:…/about.php?hallo=welt, selbst wenn alte_url schon einen Wert für hallo angegeben hatte oder auch nicht. Auch muss man sich dann keine Gedanken darüber machen, ob man den Parameter mit "?" oder einem "&" anhängt. Beachten Sie zudem, dass Parameter in der alte_url weniger Priorität haben als Parameter im zweiten Argument.
  • Variablen dauerhaft (also solange die HTML-Seite in Benutzung ist) zu generierten URLs hinzuzufügen. Das geht mit der Methode STUDIP.URLHelper.addLinkParam("hallo", "welt"). Nach diesem Aufruf wird jedes STUDIP.URLHelper.getLink("about.php") zum Beispiel http://…./about.php?hallo=welt zurück geben. Mit dieser Methode werden auch Parameter aus der abgegebenen URL überschrieben, also STUDIP.URLHelper.getLink("about.php?hallo=ich") würde trotzdem Welt als Inhalt des Parameters hallo wider geben. Nicht so jedoch mit STUDIP.URLHelper.getLink("about.php", {hallo: "ich"}), wobei der zweite Parameter wieder einmal Priorität hat.
  • Variablen dauerhaft von generierten URLs abzuziehen, wenn sie denn vorher drin gewesen sein sollten. Dazu gibt man analog zu oben addLinkParam("hallo", "") an und der Parameter hallo wird stets als leer angesehen und auch aus bestehenden URLs gestrichen, wenn vorher vorhanden.
  • Alle Variablen eines Abschnittes des Dokumentes mit aktuellem Parameter zu versehen. Nach einem oder mehreren addLinkParam-Aufrufen könnte man STUDIP.URLHelper.updateAllLinks("#container"); aufrufen, wodurch alle Links innerhalb des CSS-Selektors "#container" einmal durch die STUDIP.URLHelper.getLink(…) Methode ersetzt werden und dadurch aktuelle Parameter bekommen. Gibt man keinen Selektor an, werden die Links des ganzen Dokuments ersetzt.
 
 
April 29, 2010, at 04:11 PM by Krassmus -
Added line 63:
 
 
April 29, 2010, at 04:11 PM by Krassmus -
Added lines 58-65:

Javascript in älteren Stud.IP-Versionen

Bis einschließlich Version 1.11 wurde in Stud.IP nicht jQuery verwendet, sondern Prototype und Scriptaculous. Verwenden Sie für AJAX und alle anderen optischen Effekte die von dieser Bibliothek vorgefertigten Funktionen, die hier dokumentiert sind:

http://api.prototypejs.org/ http://wiki.github.com/madrobby/scriptaculous/

Für den Aufbau des Javascript-Namespace und die Code-Konventionen gilt das selbe wie oben schon erwähnt.

 
 
April 28, 2010, at 01:15 PM by Krassmus -
Changed line 22 from:

und fülle diese Methoden dann mit Leben. An diese Konvention sollten sich auch Plugin-Programmierer halten, wobei die noch speziell darauf zu achten haben, dass ihre Methodennamen auch tatsächlich eindeutig sind. Implementieren zwei unterschiedliche Plugins eine Methode STUDIP.test_plugin.go , so wird mindestens eines der beiden Plugins weinen. Sinnvoll ist es da, den eindeutigen Klassennamen des Plugins zwischen zu schieben, entweder über STUDIP.pluginclassname.go oder auch einfach nur pluginclassname.go.

to:

und fülle diese Methoden dann mit Leben. An diese Konvention sollten sich auch Plugin-Programmierer halten, wobei die noch speziell darauf zu achten haben, dass ihre Methodennamen auch tatsächlich eindeutig sind. Implementieren zwei unterschiedliche Plugins eine Methode STUDIP.my_plugin.go , so wird mindestens eines der beiden Plugins weinen. Sinnvoll ist es da, den eindeutigen Klassennamen des Plugins zwischen zu schieben, entweder über STUDIP.pluginclassname.go oder eventuell auch einfach nur pluginclassname.go.

 
 
April 26, 2010, at 02:37 PM by Krassmus -
Changed line 50 from:

AJAX-Anfragen sollten über jQuery mit den Methoden .load .get oder .ajax durchgeführt werden. Die meisten AJAX-Aufrufe haben einen AJAX-Indicator, der dem Nutzer mitteilt, dass gerade etwas geladen wird. Falls dieser Indicator ungebeten sein sollte, kann man die AJAX-Methode einbetten wie folgt:

to:

AJAX-Anfragen sollten über jQuery mit den Methoden .load .get oder .ajax durchgeführt werden. Die meisten AJAX-Aufrufe haben einen AJAX-Indicator, der dem Nutzer mitteilt, dass gerade etwas geladen wird. Falls dieser Indicator ungebeten sein sollte, kann man die AJAX-Methode einbetten wie folgt:

 
 
April 26, 2010, at 02:34 PM by Krassmus -
Added line 51:
Changed lines 56-57 from:

@]

to:

@]

 
 
April 26, 2010, at 02:33 PM by Krassmus -
Changed lines 46-55 from:
.resizable<textarea />Das Element kann durch einen Schieber am unteren Rand in der Höhe verändert werden.-
to:
.resizable<textarea />Das Element kann durch einen Schieber am unteren Rand in der Höhe verändert werden.-

AJAX-Anfragen

AJAX-Anfragen sollten über jQuery mit den Methoden .load .get oder .ajax durchgeführt werden. Die meisten AJAX-Aufrufe haben einen AJAX-Indicator, der dem Nutzer mitteilt, dass gerade etwas geladen wird. Falls dieser Indicator ungebeten sein sollte, kann man die AJAX-Methode einbetten wie folgt:

STUDIP.ajax_indicator = false;
$('#dynamischer_bereich').load(url);
STUDIP.ajax_indicator = true;
 
 
April 25, 2010, at 12:10 AM by tleilax -
Changed line 44 from:
.load_via_ajax<a />Eine angegebene URL (entweder metadata.url oder die URL des gegebenen Links) wird via AJAX in ein Element (entweder metadata.target oder das auf das gegebene Elemente folgende Element) geladen.Über metadata.indicator kann via CSS-Regel das Element angegeben werden, welches den AJAX-Indikator erhält. Über metadata können weitere Parameter für den Aufruf der URL angegeben werden.
to:
.load_via_ajax<a />Eine angegebene URL (entweder metadata.url oder die URL des gegebenen Links) wird via AJAX in ein Element (entweder metadata.target oder das auf das gegebene Elemente folgende Element) geladen.Über metadata.indicator kann via CSS-Regel das Element angegeben werden, welches den AJAX-Indikator erhält. Über metadata können weitere Parameter für den Aufruf der URL angegeben werden.
 
 
April 25, 2010, at 12:09 AM by tleilax -
Changed line 40 from:
.defaultValueActsAsHint <input />, <textarea />Der vordefinierte Wert (aus value="") wird als Hint das Elementes verwendet. Sprich: Solange das Element diesen Wert hat, wird beim Klick darauf das Feld geleert bzw. beim Verlassen des Feldes wird der vordefinierte Wert wieder hergestellt, sofern das Element in dem Zeitpunkt leer ist.-
to:
.defaultValueActsAsHint <input />, <textarea />Der vordefinierte Wert (aus value="") wird als Hint das Elementes verwendet. Sprich: Solange das Element diesen Wert hat, wird beim Klick darauf das Feld geleert bzw. beim Verlassen des Feldes wird der vordefinierte Wert wieder hergestellt, sofern das Element in dem Zeitpunkt leer ist.-
Changed lines 42-43 from:
.focus Alle ElementeDas Element wird beim Laden der Seite fokussiert.Sind mehrere Elemente mittels .focus markiert, so wird nur das erste fokussiert.
.focus.if-emptyAlle ElementeDas Element wird beim Laden der Seite fokussiert, sofern es nicht leer ist.Dient als spezialisierte Erweiterung von .focus, reiht sich nahtlos in dessen Verhalten ein. Sprich: Sind mehrere Elemente mit .focus markiert, so wird in der durch das HTML definierte Reihenfolge das erste Element fokussiert, das nicht als .if-empty definiert ist bzw. als if-empty definiert wurde und leer ist.
to:
.focus Alle ElementeDas Element wird beim Laden der Seite fokussiert.Sind mehrere Elemente mittels .focus markiert, so wird nur das erste fokussiert.
.focus.if-emptyAlle ElementeDas Element wird beim Laden der Seite fokussiert, sofern es nicht leer ist.Dient als spezialisierte Erweiterung von .focus, reiht sich nahtlos in dessen Verhalten ein. Sprich: Sind mehrere Elemente mit .focus markiert, so wird in der durch das HTML definierte Reihenfolge das erste Element fokussiert, das nicht als .if-empty definiert ist bzw. als if-empty definiert wurde und leer ist.
.load_via_ajax<a />Eine angegebene URL (entweder metadata.url oder die URL des gegebenen Links) wird via AJAX in ein Element (entweder metadata.target oder das auf das gegebene Elemente folgende Element) geladen.Über metadata.indicator kann via CSS-Regel das Element angegeben werden, welches den AJAX-Indikator erhält. Über metadata können weitere Parameter für den Aufruf der URL angegeben werden.
.load_via_ajax.internal_message<a />Spezialfall für interne Nachrichten.Die Parameter werden an die Gegebenheiten in lib/sms_func.inc.php angepasst.
 
 
April 24, 2010, at 09:26 PM by tleilax -
Changed lines 32-33 from:
$.showAjaxNotification(position=left);Alle Elemente Dem Element wird ein AJAX-Indikator vorangestellt. Der Indikator wird absolut positioniert, was zu Problemen bei Veränderungen von Elementen in der Umgebung des eigentlichen Elements führen kann.
$.hideAjaxNotification();Alle ElementeDer dem Element zugehörende AJAX-Indikator wird entfernt, sofern vorhanden.Der Indikator kann mittels des Parameters position="right" auch hinter dem Element positioniert werden.
to:
$.showAjaxNotification(position=left);Alle Elemente Dem Element wird ein AJAX-Indikator vorangestellt.Der Indikator kann mittels des Parameters position="right" auch hinter dem Element positioniert werden. Der Indikator wird absolut positioniert, was zu Problemen bei Veränderungen von Elementen in der Umgebung des eigentlichen Elements führen kann.
$.hideAjaxNotification();Alle ElementeDer dem Element zugehörende AJAX-Indikator wird entfernt, sofern vorhanden.-
 
 
April 24, 2010, at 09:25 PM by tleilax -
Changed lines 32-33 from:
$.showAjaxNotification();Alle Elemente Dem Element wird ein AJAX-Indikator vorangestellt. Der Indikator wird absolut positioniert, was zu Problemen bei Veränderungen von Elementen in der Umgebung des eigentlichen Elements führen kann.
$.hideAjaxNotification();Alle ElementeDer dem Element zugehörende AJAX-Indikator wird entfernt, sofern vorhanden.-
to:
$.showAjaxNotification(position=left);Alle Elemente Dem Element wird ein AJAX-Indikator vorangestellt. Der Indikator wird absolut positioniert, was zu Problemen bei Veränderungen von Elementen in der Umgebung des eigentlichen Elements führen kann.
$.hideAjaxNotification();Alle ElementeDer dem Element zugehörende AJAX-Indikator wird entfernt, sofern vorhanden.Der Indikator kann mittels des Parameters position="right" auch hinter dem Element positioniert werden.
 
 
April 24, 2010, at 08:31 PM by tleilax -
Changed lines 30-31 from:

to:
MethodeAnwendbar aufVerhaltenZu beachten
$.showAjaxNotification();Alle Elemente Dem Element wird ein AJAX-Indikator vorangestellt. Der Indikator wird absolut positioniert, was zu Problemen bei Veränderungen von Elementen in der Umgebung des eigentlichen Elements führen kann.
$.hideAjaxNotification();Alle ElementeDer dem Element zugehörende AJAX-Indikator wird entfernt, sofern vorhanden.-
Changed line 37 from:
to:
 
 
April 23, 2010, at 08:02 PM by tleilax -
Changed lines 40-41 from:
.focus.if-emptyAlle ElementeDas Element wird beim Laden der Seite fokussiert, sofern es nicht leer ist.Dient als spezialisierte Erweiterung von .focus, reiht sich nahtlos in dessen Verhalten ein. Sprich: Sind mehrere Elemente mit .focus markiert, so wird in der durch das HTML definierte Reihenfolge das erste Element fokussiert, das nicht als .if-empty definiert ist bzw. als if-empty definiert wurde und leer ist.
to:
.focus.if-emptyAlle ElementeDas Element wird beim Laden der Seite fokussiert, sofern es nicht leer ist.Dient als spezialisierte Erweiterung von .focus, reiht sich nahtlos in dessen Verhalten ein. Sprich: Sind mehrere Elemente mit .focus markiert, so wird in der durch das HTML definierte Reihenfolge das erste Element fokussiert, das nicht als .if-empty definiert ist bzw. als if-empty definiert wurde und leer ist.
.resizable<textarea />Das Element kann durch einen Schieber am unteren Rand in der Höhe verändert werden.-
 
 
April 23, 2010, at 04:19 PM by tleilax -
Changed lines 26-40 from:

Für alle Javascript-Programmierer wird von Interesse sein, dass einige Funktionen schon in Stud.IP implementiert sind, die auch an anderer Stelle nützlich sein könnten. Der Vorteil liegt auf der Hand: der Code bleibt klein und kann später besser um Funktionalitäten erweitert werden.

to:

Für alle Javascript-Programmierer wird von Interesse sein, dass einige Funktionen schon in Stud.IP implementiert sind, die auch an anderer Stelle nützlich sein könnten. Der Vorteil liegt auf der Hand: der Code bleibt klein und kann später besser um Funktionalitäten erweitert werden.

Vorhandene Methoden

Vorhandene Verhaltsmuster über CSS-Klassen

KlasseAnwendbar aufVerhaltenZu beachten
.add_toolbar <textarea />Dem Element wird eine Menüleiste mit vereinfachten Formatiermöglichkeiten vorangestellt.Auf diese Art und Weise kann nur das Standard-Buttonset von Stud.IP verwendet werden.
.defaultValueActsAsHint <input />, <textarea />Der vordefinierte Wert (aus value="") wird als Hint das Elementes verwendet. Sprich: Solange das Element diesen Wert hat, wird beim Klick darauf das Feld geleert bzw. beim Verlassen des Feldes wird der vordefinierte Wert wieder hergestellt, sofern das Element in dem Zeitpunkt leer ist.-
.effect_highlightAlle ElementeDas Element wird für einen kurzen Zeitraum hervorgehoben, um die Aufmerksamkeit des Benutzers zu erlangen.-
.focus Alle ElementeDas Element wird beim Laden der Seite fokussiert.Sind mehrere Elemente mittels .focus markiert, so wird nur das erste fokussiert.
.focus.if-emptyAlle ElementeDas Element wird beim Laden der Seite fokussiert, sofern es nicht leer ist.Dient als spezialisierte Erweiterung von .focus, reiht sich nahtlos in dessen Verhalten ein. Sprich: Sind mehrere Elemente mit .focus markiert, so wird in der durch das HTML definierte Reihenfolge das erste Element fokussiert, das nicht als .if-empty definiert ist bzw. als if-empty definiert wurde und leer ist.
 
 
April 23, 2010, at 03:54 PM by Krassmus -
Changed lines 16-18 from:
    openclose: function(id) {},
    open: function(id) {},
    close: function(id) {}
to:
    openclose: function (id) {},
    open: function (id) {},
    close: function (id) {}
 
 
April 23, 2010, at 03:53 PM by Krassmus -
Changed lines 16-18 from:
  openclose: function(id) {},
  open: function(id) {},
  close: function(id) {}
to:
    openclose: function(id) {},
    open: function(id) {},
    close: function(id) {}
 
 
April 23, 2010, at 03:49 PM by Krassmus -
Added lines 1-2:

How to: Javascript in Stud.IP

 
 
April 23, 2010, at 03:49 PM by Krassmus -
Added lines 1-24:

In Stud.IP wird mit der Zeit mehr und mehr Javascript für erweiterte und vereinfachte Bedienung oder auch einfach für besonders schöne Effekte benutzt.

Ab Oktober 2010 verwendet Stud.IP das meistbenutzte Javascript-Framework jQuery und sammelt eine eigene Bibliothek und eigene Funktionen in der Datei public/assets/javascript/application.js.

Code-Konventionen für JavaScript

Als Programmierer hat man sich im Grunde nur daran zu richten, dass der globale Namespace einigermaßen sauber gehalten wird (also globale Variablen müssen vermieden werden) und dass die Code-Konventionen eingehalten werden, die im Lifters005 zusammen gefasst sind. Die Code-Konventionen sind von Douglas Crockfords "Code Conventions for the JavaScript Programming Language" komplett übernommen.

Was den Namespace angeht, so sollen alle speziellen Stud.IP Funktionen unterhalb des STUDIP-Objektes angehängt werden. Programmiere ich also einige Funktionen für die News, fange ich an mit:

STUDIP.News = {
  openclose: function(id) {},
  open: function(id) {},
  close: function(id) {}
}

und fülle diese Methoden dann mit Leben. An diese Konvention sollten sich auch Plugin-Programmierer halten, wobei die noch speziell darauf zu achten haben, dass ihre Methodennamen auch tatsächlich eindeutig sind. Implementieren zwei unterschiedliche Plugins eine Methode STUDIP.test_plugin.go , so wird mindestens eines der beiden Plugins weinen. Sinnvoll ist es da, den eindeutigen Klassennamen des Plugins zwischen zu schieben, entweder über STUDIP.pluginclassname.go oder auch einfach nur pluginclassname.go.

Eigene Stud.IP Bibliothek

Für alle Javascript-Programmierer wird von Interesse sein, dass einige Funktionen schon in Stud.IP implementiert sind, die auch an anderer Stelle nützlich sein könnten. Der Vorteil liegt auf der Hand: der Code bleibt klein und kann später besser um Funktionalitäten erweitert werden.

 

 

Source: Basis-Wiki-Hilfe | Last change: April 01, 2011, at 11:17 PM, tthelen | Local view: Basis-Hilfe