Hallo Rudi,
ich habe in der modularen Commandref mit meinen Modulen immer das Problem gehabt, dass Links auf direkte Attribute/Readings/etc. nicht funktionieren, da er das dazugehörige Modul in den hinterlegten modLinks nicht finden kann.
Ich rufe also beispielhaft folgende URL auf: /fhem/docs/commandref.html#FB_CALLLIST_create-readings
Dann erscheint in der JS-Konsole folgender Output:
fhemdoc_modular.js:25 fd_fC:help FB_CALLLIST_create-readings EN
Um hieraus auf den richtigen Modulnamen zu schließen, wird in fhemdoc_modular.js ja die Variable fd_modLinks mit einer Zuordnung von Ankerbezeichnung zu zugehörigem Modulname herangezogen. Diese entstammt ja aus commandref_modular.pl beim durchgehen der Moduldateien:
$modData{$mName}{modLinks}{$1} = 1
if($l =~ m/<a\s+name=['"]([^ '"]+)['"]>/ && $1 !~ /^$mName/)
Warum werden hier explizit Ankerbezeichnungen die mit dem Modulnamen beginnen übergangen? Was ist der Hintergund herizu? Wenn ich die Prüfung auf !~ /^$mName/ entferne, werden die Anker korrekt gefunden und dem Modul richtig zugeordnet, sodass die entsprechende URL problemlos aufgerufen werden kann. Ich kann es mir nur so erklären, dass Ankerbezeichnungen die dem Modulnamen entsprechen übergangen werden sollen, was ich nachvollziehbar finde, aber dann sollte man besser "$1 ne $mName" nehmen.
Kannst Du mir weiterhelfen?
Viele Grüße
Markus
ZitatIch kann es mir nur so erklären, dass Ankerbezeichnungen die dem Modulnamen entsprechen übergangen werden sollen, was ich nachvollziehbar finde, aber dann sollte man besser "$1 ne $mName" nehmen.
Es geht um mehr:
<a name="FS20"></a>
<a name="FS20define"></a>
<a name="FS20set"></a>
<a name="FS20attr"></a>
<a name="FS20events"></a>
Mir faellt keine schoene Loesung ein, nur dass du den zu "exportierenden" Anker zusaetzlich mit dem exp_ Praefix versiehst.
Meine Lösung währe:
$modData{$mName}{modLinks}{$1} = 1
if($l =~ m/<a\s+name=['"]([^ '"]+)['"]>/ && $1 ne $mName)
Damit könnte das hinzufügen von den genannten Ankern in fhemdoc_modular.js entfallen.
Das sind Millisekunden über die wir hier diskutieren.
Habs geaendert und eingecheckt ich meine auch, dass es keine negativen Nebeneffekte hat, ausser einen etwas groesseren commandref.html (wg. dem hidden div am Anfang).
Was mir aufgefallen ist:
- @martinp876: in CUL_HM und HMInfo wird auch der <a name=""> Link mit # gestartet, das ist mindestens ueberfluessig, wenn nicht schaedlich.
- betateilchen: Seit MAINTAINER & co in help auftauchen, rutscht der Name des Moduls am Ende der Zeile (siehe Anhang), ich wuerde ihn lieber am Anfang der Zeilen sehen.
Zitat von: rudolfkoenig am 25 Januar 2018, 16:38:14
- betateilchen: Seit MAINTAINER & co in help auftauchen, rutscht der Name des Moduls am Ende der Zeile (siehe Anhang), ich wuerde ihn lieber am Anfang der Zeilen sehen.
Hallo Rudi,
- der von Dir angegebene Zeitpunkt des Auftretens dieses Phänomens ist falsch, das hat lange Zeit korrekt funktioniert
- das Verhalten ist Style-anhängig - siehe Anhang. Im dark-Style funktioniert das Ganze problemlos.
- wegen 2. betrachte ich das nicht wirklich als meine Baustelle, das Verhalten zu beheben.
- Markus hatte das Problem diese Woche bereits analysiert und festgestellt, dass es nicht an help liegt.Dabei ist er auf folgende Diskussion von Mitte Dezember gestoßen, mit der ich aber nichts anfangen kann. https://forum.fhem.de/index.php/topic,81087.msg729527.html#msg729527
Viele Grüße
Udo
Danke fuer den Link, habs gefixt.
Ich wollte damals die in dem commandref_join Version vorhandenen en/de links dichter unter dem Header platzieren, habe aber die falsche Methode gewaehlt.
Zitat von: rudolfkoenig am 25 Januar 2018, 23:16:18
Ich wollte damals die in dem commandref_join Version vorhandenen en/de links dichter unter dem Header platzieren, habe aber die falsche Methode gewaehlt.
da hast du meine hemdsärmelige css-änderung leider übernommen. ich hatte damals schon die böse vorahnung das das noch nebenwirkungen hat.
danke für den fix :)
Noch einen kleinen Schönheitsfehler entdeckt:
Wenn man die Commandref geöffnet und manuell den URL-Hash ändert (z.B."commandref.html#PRESENCE" in "commandref.html#Pushbullet" ändert und <ENTER> drückt), wird das entsprechende Modul nicht nachgeladen und angezeigt.
Folgender Patch behebt dies:
Index: www/pgm2/fhemdoc_modular.js
===================================================================
--- www/pgm2/fhemdoc_modular.js (revision 16009)
+++ www/pgm2/fhemdoc_modular.js (working copy)
@@ -207,6 +207,10 @@
if(location.hash)
loadOneDoc(location.hash.substr(1), fd_lang);
+
+ $(window).bind('hashchange', function() {
+ loadOneDoc(location.hash.substr(1), fd_lang);
+ });
$("a[name=loadAll]").show().click(function(e){
e.preventDefault();
Viele Grüße
Markus
Danke, habs eingecheckt.