Hi,
ich habe mich jetzt nochmal damit befasst, nicht zuletzt wegen der Doku. Dabei sind mir noch folgende Sachen aufgefallen:
Anzeige mehrerer Hilfetexte, wenn's mal nicht ganz so schnell geht
Wenn das Laden des ersten Hilfetextes etwas dauert (kann bei großen Modulen schnell mal passieren), dann klicke ich manchmal schon auf das nächste Attribut. Das Ergebnis sieht dann so aus, wie im Screenshot "DoppelteDoku".
Die zweite Doku geht erst weg, wenn man die ganze Seite aktualisiert. (Wenn man schnell klickt, kann man auch mehr als zwei hinbekommen.)
Das Problem liegt daran, dass das Laden der Doku asynchron passiert und man währenddessen ein anderes Attribut wählen kann. Das Löschen der "alten" Doku wird aber am Anfang synchron gemacht.
Lösen lässt sich das so:
if(!$(liTag).length)
liTag = $(aTag).parent().next("li");
if($(liTag).length) {
// PFE experiments begin
$("#devSpecHelp").remove();
// PFE experiments end
$(sel).closest("div[cmd='"+selType+"']")
.after('<div class="makeTable" id="devSpecHelp"></div>')
$("#devSpecHelp").html($(liTag).html());
}
}
wb.remove();
...wobei ich mir nicht 100% sicher bin, ob die Callbacks immer in der richtigen Reihenfolge kommen. Soweit ich es ausprobiert habe hat es immer gepasst.
Device specific help geht manchmal nicht auf
Ich hatte mich schon lange gewundert, warum die "Device specific help" manchmal erst beim zweiten Klick aufgeht. Das passiert dann, wenn man vorher schon eine Set-/Get- oder Attribut-Hilfe offen hat. Dann geht beim ersten Klick die offene Hilfe zu und erst der zweite Klick öffnet die richtige Hilfe.
Das kann man auch relativ einfach wegbekommen:
$("div.devSpecHelp a").each(function(){ // Help on detail window
var dev = FW_getLink(this).split("#").pop();
$(this).unbind("click");
$(this).attr("href", "#"); // Desktop: show underlined Text
$(this).removeAttr("onclick");
$(this).click(function(evt){
// PFE experiments begin
if($("#content > #devSpecHelp").length) {
// if($("#devSpecHelp").length) {
// PFE experiments end
$("#devSpecHelp").remove();
return;
}
// PFE experiments begin
$("#devSpecHelp").remove();
// PFE experiments end
FW_getHelp(dev, function(data){
$("#content").append('<div id="devSpecHelp"></div>');
$("#devSpecHelp").html(data);
var off = $("#devSpecHelp").position().top-20;
$('body, html').animate({scrollTop:off}, 500);
});
});
});
Dadurch bleibt die vorherige Funktionalität erhalten (d.h. man kann die "Device specific help" auch wieder zumachen), aber eben nur auf die "Device specific help" bezogen.
Attribut-Hilfe erscheint nicht, wenn man das Attribut über den Link auswählt
Bisher erscheint die Attribut-Hilfe nur, wenn man das Attribut über die Drop-Down-Liste auswählt. Das mache ich praktisch nie, wenn das Attribut schon gesetzt ist.
Man kann das auch relativ einfach ändern:
$("table.attributes tr div.dname") // Click on attribute fills input value
.each(function(){
$(this)
.html('<a>'+$(this).html()+'</a>')
.css({cursor:"pointer"})
.click(function(){
var attrName = $(this).text();
var sel = "#sel_attr"+$(this).attr("data-name").replace(/\./g,'_');
if($(sel+" option[value='"+attrName+"']").length == 0)
$(sel).append('<option value="'+attrName+'">'+attrName+'</option>');
$(sel).val(attrName);
FW_detailSelect(sel, true);
// PFE experiments begin
$(sel).trigger("change");
// PFE experiments end
});
});
Man könnte sich auch auf den Standpunkt stellen, dass man das Attribut ja schon kennt, wenn man es mal gesetzt hat. Komischerweise ist das bei mir oft nicht so. Außerdem schreiben einige Module Vorbelegungen explizit in die Attribute rein, wodurch die Attribute auch schon da sind, bevor man sie als Benutzer angefasst hat.
Gruß,
Thorsten