Titel von aktueller Seite im HTML TITLE

Begonnen von moontear, 27 Januar 2017, 22:24:25

Vorheriges Thema - Nächstes Thema

moontear

In der Browser Historie nach Dingen in FHEM zu suchen ist die Hölle. Es steht immer "Home, Sweet Home" als title.

Besser wäre wenn immer der Browser Title der aktuellen detail page / room etc. Dann weiß ich auc was ich gerade mache in der Task Leiste.

"FHEM - Wohnzimmer" und "FHEM - Heizung_Thermostat" ist doch schöner als immer das gleiche "Home, Sweet Home" oder?

marvin78


betateilchen

Ich würde sagen, dynamische Seitentitel in einem System zu erzeugen, in dem es gar keine einzelnen Seiten gibt, wird schwierig.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

moontear

#3
"Siehe Doku" ist dann doch ein wenig allgemein. @marvin hast du einen direkten Link?

Das System hat doch Seiten? Seitentitle geht doch sogar mit JS (document.title). Ich bin immer auf -einer- dedizierten Seite. Sei es Detail Seite, room, dashboard oder wie auch immer. Der page title könnte da auch immer dynamisch gesetzt werden.

Benni

#4
Zitat von: moontear am 28 Januar 2017, 01:11:01
"Siehe Doku" ist dann doch ein wenig allgemein.

Nö! Doku ist die Commandref und die Standard-Weboberfläche wird durch FHEMWEB bereitgestellt.
Nachdem du den erzeugten Seiten-title ändern möchtest, würde ich mir dort mal die Liste der Attribute anschauen, ob evtl. was passendes dabei ist.
(Das gehört übrigens auch zu den Grundlagen ;))

Zusatzinfo: Vielleicht kannst du dabei die FHEMWEB-Variable $FW_room ganz gut gebrauchen.

moontear

#5
Ich hoffe ich trete keinem auf die Füße wenn ich sage dass "die Doku" eben nicht eindeutig ist bei FHEM. Es gibt die englische und die deutsche Commandref, beide haben verschiedene Abdeckungsgrade. Dann gibt es noch das Wiki (eigentlich nur Deutsch) wo nochmal mehr Informationen stehen. (Ich hab deswegen auch gerade mal einen Wiki Zugang beantragt weil ich die Qualität an vielen Stellen verbessern möchte). Öfters liest man auch von "such mal im Forum", was ja einige Male auch der offiziellen Doku entspricht insbesondere bei Modulen in der Entwicklung.
Ich finde es hilfreicher wenn man weiß wo es steht das auch kurz zu verlinken - wie du gerade gemacht hast. Wenn man weiß dass es ein title Attribut auf dem WEB gibt. Top! Die Verwendungsweise steht in der Doku - das kann man nachlesen. Passt.

Danke für den Hinweis @Benni. Ich habe das Atribut title gefunden.
attr WEB title {$FW_room}
Funktioniert schon einmal sehr gut bei Räumen, jetzt müsste ich noch ein riesen if/else bauen mit verschiednen Variablen (pseudocode: if DETAIL title=DETAIL.NAME... elseif ROOM title=ROOM.Name... etc.}.

Wo finde ich denn die Variablen die du gerade angemerkt hast? $FW_room ist in der Commandref z.B. nicht zu finden. Dort finde ich nur $FW_gplotdir und $FW_cssdir

marvin78

#6
Doku ist die englische Commandref. Es gibt da keine zwei Meinungen.

Verlinken macht dann Sinn, wenn es nicht leicht zu finden ist, andernfalls und wenn man nur schnell ggf. über das Handy helfen möchte, reicht das, was ich geschrieben habe. Zu wissen wo es steht, gehört bei FHEM aber ohnehin zu den Grundlagen.

Hier noch ein Beispiel:

attr WEB title {WebTitle()}

Dann in die myUtils:


use vars qw($FW_detail);
use vars qw($FW_room);
use vars qw(%FW_webArgs);

sub WebTitle()
{
  my $t = "";

  if ($FW_detail) {
    $t = "Detail: $FW_detail";
  } elsif ($FW_room) {
    $t = "Room: $FW_room";
  } elsif (defined $FW_webArgs{cmd}) {
    if ($FW_webArgs{cmd} =~ m/style edit (.*)/s) {
      $t = "Edit: $1";
    } elsif ($FW_webArgs{cmd} =~ m/style save (.*)/s) {
      $t = "Saved: $1";
    } elsif ($FW_webArgs{cmd} =~ m/style list.*/s) {
      $t = "File list";
    } elsif ($FW_webArgs{cmd} =~ m/style eventMonitor.*/s) {
      $t = "Event monitor";
    } else {
      $t = $FW_webArgs{cmd};
    }
  } elsif (defined $FW_webArgs{file}) {
    $t = "Log: $FW_webArgs{file}";
  } elsif (%FW_webArgs && ((keys %FW_webArgs)[0] =~ m#dashboard/(.*)#s)) {
    $t = $1;
  } else {
    $t = "Home";
  }
  return $t." - Haus";
}


Du findest noch mehr hier im Forum. Und ja, es ist nicht zu viel verlangt, danach zu suchen.

Edit: Wer ist eigentlich auf die seltsame Idee gekommen, den Code kursiv darzustellen? Das dient nun wirklich nicht der Übersicht.

Benni

#7
Zitat von: marvin78 am 28 Januar 2017, 12:14:55
Edit: Wer ist eigentlich auf die seltsame Idee gekommen, den Code kursiv darzustellen? Das dient nun wirklich nicht der Übersicht.

Bei mir sieht alles gut aus  ??? (s. Screenshot)

Zitat von: marvin78 am 28 Januar 2017, 12:14:55
Hier noch ein Beispiel:

Danke! Das habe ich direkt mal so bei mir eingebaut.  ;D
Hab' ich bisher zwar nicht vermisst, ist aber schon ganz praktisch.

marvin78

Ja. Ich denke, es kommt auf den Style an. Der "Standard" Style zeigt Code kursiv.

moontear

Wow! Richtig gut und beste Basis um weiterzuentwickeln. Könnte meines erachtes Standard sein. Genau das habe ich gesucht, so macht auch der Back Button Sinn: