Archive for the ‘jQuery’ Category.
14. Dezember 2010, 10:06
Aus gegebenem Anlass beschäftige ich mich grade mit jsTree. Ich glaub, das kann ziemlich viel, allerdings find ich die Doku etwas dürftig. Aber da es sich um JavaScript handelt, hab ich damit weit weniger Probleme als mit der Doku von, sagen wir mal, Typo3.
1. Wie erstelle ich einen jsTree ?
Zuerst baue ich mir im HTML eine einfache Liste
-
<div id="treenav">
-
<ul>
-
<li id="Inhalte" rel="basis"><a href="">Inhalte</a>
-
<ul>
-
<li rel="seite"><a href="">Seiten</a></li>
-
<li rel="news"><a href="">News</a></li>
-
</ul>
-
</li>
-
<li id="Benutzerverwaltung" rel="basis"><a href="">Benutzerverwaltung</a>
-
<ul>
-
<li rel="benutzer"><a href="">Benutzer</a></li>
-
</ul>
-
</li>
-
</ul>
-
</div>
Anschließend initalisiere ich den Tree
-
$('#treenav').jstree({
-
"themes" : {
-
"theme": "classic",
-
"dots" : false
-
},
-
"types": {
-
"types" : {
-
"basis" : { "icon" : { "image" : "_drive.png"} },
-
"seite" : { "icon" : { "image" : "icon_seite.png"} },
-
"news" : { "icon" : { "image" : "icon_news.png"} }
-
}
-
},
-
"plugins" : [ "themes", "html_data", "types" ]
-
});
Mit "types" definiere ich die Node Typen und kann so für einzelne Listeneinträge unterschiedliche Icons definieren.
2. Wie sorge ich dafür, dass gleich alles aufgeklappt ist ?
Nun wollte ich noch, dass der Tree gleich komplett aufgeklappt ist und das geht so:
-
$("#treenav").jstree("open_all");
Mehr Einträge zu jsTree werden sicher noch folgen....
21. Oktober 2010, 10:27
Die chgallery ist, anders als die meisten Galerie Extensions, ziemlich cool. Ich vermute stark, dass ich die noch öfter brauchen werde, daher ein paar kleine Details zum Aufsetzen der Galerie:
1. Sprachen
Grundsätzlich gibts alle deutschen Übersetzungen bereits in der locallang.xml. Damit aber auch deutsch angezeigt wird, muss man im Typoscript die Standardsprache definieren:
-
config.language = de
-
config.locale_all = de_DE
Dann klappts auch mit der Sprache.
2. Bilder verlinken
Vielleicht hab ich auch einfach was falsch gemacht, aber bei mir waren die Bilder nicht von Anfang an verlinkt. Erst als ich im TS angegeben habe, dass sie verlinkt sein sollen, konnte man auch klicken um sie in Originalgröße anzusehen:
-
plugin.tx_chgallery_pi1 {
-
gallery.image {
-
imageLinkWrap = 1
-
imageLink Wrap {
-
enable = 1
-
typolink {
-
title.field= tx_chgalleryFilename #tx_chgalleryTitle
-
parameter.override.cObject = IMG_RESOURCE
-
parameter.override.cObject.file.import.data = TSFE:lastImageInfo|origFile
-
parameter.override.cObject.file.maxW = 800
-
parameter.override.cObject.file.maxH = 600
-
# used lightbox is pmkslimbox
-
ATagParams = rel="lightbox"
-
ATagParams.override = class = "lightbox"
-
ATagParams.insertData = 1
-
}
-
}
-
}
Man beachte insbesondere Zeile 13, wo ich den Links direkt ein rel=lightbox zuweise, das werde ich später nämlich noch brauchen.
3. Lightbox
Ich bin sicher, das kann man mit Extensions auch einfacher haben, aber ich hab selber dafür gesorgt, dass die Lightbox funktioniert. Zuerst hab ich jquery und jquery lightbox eingebunden:
-
page.includeCSS.20 = fileadmin/templates/jquery.lightbox-0.5.css
-
page.includeJS.35 = fileadmin/templates/js/jquery-1.4.2.min.js
-
page.includeJS.40 = fileadmin/templates/js/jquery.lightbox-0.5.js
-
Dann sorge ich dafür, dass alle meine rel=lightbox Links auch mit der Lightbox aufgerufen werden:
-
page{
-
headerData.200 = TEXT
-
headerData.200.value (
-
<script type="text/javascript">$(function() { $('a.lightbox').lightBox(); });</script>
-
)
-
}
-
Und das Ergebnis ist eine Galerie auf deutsch, die die Bilder in Originalgröße in der Lightbox öffnet. Whee.
13. Oktober 2010, 13:26
Großer Gott. Ich hab dereinst mal ein Plugin für tinyMCE geschrieben, so ne kleine Bildverwaltung, wo man Bilder uploaden, beschneiden, verkleinern etc. kann. Und jetzt stell ich fest, dass das ganze im IE8 nicht mehr funktioniert. Warum? Weil IE8 ein Problem mit innerhtml hat...
Beschrieben wird das ganze hier.
Meine Lösung, und es ist keine gute Lösung, aber ich hatte wenig Zeit: behelfsmäßig jquery einbauen und anstatt innerHTML zu nutzen das entsprechende div über jquery einbauen. Das ganze ist jetzt eine grauenvolle Mischung aus javascript und jquery Syntax aber irgendwie klappts.
Vorher:
-
par = document.createElement("p");
-
par.innerHTML = "<div style= 'clear:both;' >" + akt_src + "</div>";
-
par.innerHTML+= "<a href=''>test</a>...";
-
td = document.createElement("td");
-
td.appendChild(par);
Nachher:
-
par = "<div style='clear:both;'>"+akt_src+"</div>";
-
par += "<a href=''>test</a>...";
-
td = document.createElement("td");
-
$(par).appendTo(td);
Unglaublich aber wahr, so klappts. Für den Moment muss es reichen. Bis ich mal die Zeit kriege, das komplett in jquery zu übertragen.
29. September 2010, 09:14
Um mir das mal zu notieren:
Ich habe eine Checkbox. Beim Klicken der Checkbox soll eine Aktion ausgeführt werden und zwar abhängig davon, ob die Checkbox durch den Klick angekreuzt wurde oder nicht. Und es geht so:
-
$("input[name='infos']").click( function(){
-
if($(this).attr("checked")){
-
alert("checkbox ist checked");
-
}else{
-
alert("checkbox ist nicht checked");
-
}
-
});
24. September 2010, 08:56
Ich war sehr erstaunt, dass elRTE bei mir eine JavaScript Fehlermeldung erzeugte - allerdings nur im IE und das auch nur manchmal. Nach einigem Herumprobieren stieß ich dann auf das Problem: Wenn kein Inhalt drinsteht, dann entsteht diese Fehlermeldung.
-
<div class="editor">Das ist ein Test!</div>
funktioniert, aber
-
<div class="editor"></div>
erzeugt die Fehlermeldung. In meinem Fall brauchte ich elRTE, um eine WYSIWYG Eingabe in einem User Interface zu ermöglichen. Da kann es auch vorkommen, dass das Editor Feld leer bleibt, also musste ich mir etwas einfallen lassen.
Die Lösung: Ich prüfe, ob mein editor einen Inhalt hat und wenn nicht, schreibe ich statt nichts ein leerse Div hinein. Das sieht keiner und die Fehlermeldung bleibt weg:
-
<div class="editor"><div></div></div>
3. August 2010, 12:22
Noch hab ich nicht rausgefunden, wie ich bei der jqGrid Suche das zweite dropdown (mit den Optionen wie "gleich", "größer als", etc.) komplett entfernen kann. Zumindest aber hab ichs geschafft, die Optionen auf eine zu beschränken und zwar so:
Zuerst erstelle ich ganz normal mein grid
-
jQuery("#list_1").jqGrid({
-
url:'inc/gridData.php?art=l1&typ=test',
-
datatype: "xml",
-
height: "auto",
-
colNames:['ID','Shop', 'Status', 'Start', 'Ende'],
-
colModel:[
-
{name:'shops_promotions_id', index:'shops_promotions_id', width:75},
-
{name:'shopname',index:'shopname', width:90},
-
{name:'status',index:'status', width:60},
-
{name:'start', index:'start', width:75},
-
{name:'ende', index:'ende', width:75}
-
],
-
rowNum:10,
-
autowidth: true,
-
rowList:[10,20,30,50,100],
-
pager: '#gridpager',
-
sortname: 'shops_id',
-
viewrecords: true,
-
sortorder: "desc",
-
multiselect: true
-
});
-
Ich aktiviere das kleine Icon Menü Links unten, wo auch die Suche ist und gebe bei den Optionen für die Suche (fünfte geschwungene Klammer) ein, dass sopt nur aus 'cn' bestehen soll:
-
jQuery("#list_1").jqGrid('navGrid','#gridpager',{add: false, edit:false, del: false}, {}, {}, {}, {sopt: ['cn']});
Das beschränkt mir meine Suchoptionen auf genau einen Begriff: "enthält". Welcher Begriff wie heißt, kann man hier nachlesen.
All available option are:
['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc']
The corresponding texts are in language file and mean the following:
['equal','not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','contains','does not contain']