Gunther: Molilys JavaScript-Erweiterung aktualisiert + erweitert

4 122

Molilys JavaScript-Erweiterung aktualisiert + erweitert

Gunther
  • zu diesem forum
  1. 2
    1UnitedPower
    1. 0
      tami
  2. 1

    Molilys JavaScript-Erweiterung erweitert / Screenshots

    Gunther
  3. 2

    Molilys JavaScript-Erweiterung erweitert / Danksagung

    Gunther
  4. 0
    Auge
    1. 0
      Matthias Apsel
      1. 0
        Auge
      2. 0
        Gunther
    2. 0
      Gunther
      1. 0
        Auge
        1. 0
          Gunther
          1. 0
            Gunther
            1. 0
              Felix Riesterer
              1. 0
                Matthias Apsel
              2. 0
                Gunther
            2. 0
              Matthias Apsel
              1. 0
                Gunther
                1. 0
                  Matthias Apsel
                  1. 0
                    Gunther
                  2. 0
                    Gunther
          2. 0
            Auge
            1. 0
              Gunther
              1. 0
                Matthias Apsel
                1. 0
                  Gunther
                  1. 0
                    Matthias Apsel
                    1. 0
                      Auge
                      1. 0
                        Gunther
    3. 0
      1UnitedPower
      1. 0
        Auge
    4. 0
      Matthias Apsel
      1. 0
        Auge
        1. 0
          Matthias Apsel
          1. 0
            Gunther
            1. 0
              Matthias Apsel
              1. 0
                Gunther
                1. 0
                  Auge
          2. 0
            Auge
  5. 0
    Christian Kruse
  6. 0
    Felix Riesterer
    1. 0
      Matthias Apsel
    2. 0
      Gunther
  7. 1

    [Update - Version 1.1] Molilys JavaScript-Erweiterung

    Gunther
    1. 0
      tami
      1. 0
        Gunther
        1. 0
          tami
          1. 0
            Gunther
            1. 0
              Auge
              1. 0
                Matthias Apsel
                1. 0
                  Auge
                  1. 0
                    Gunther
                    1. 0
                      Auge
                      1. 0
                        Gunther
            2. 0

              [Update - Version 1.1] Molilys JavaScript-Erweiterung - jslint

              tami
              1. 0
                1UnitedPower
                1. 0
                  Auge
              2. 0
                Matthias Apsel
                1. 0
                  tami
                  1. 0

                    jslint - details

                    tami
                    1. 0
                      Gunther
                      1. 0
                        tami
              3. 0
                Gunther
                1. 0
                  tami
                2. 1

                  jslint - kein beauty-tool sondern ein fehlervermeidungstool

                  tami
                  • programmiertechnik
                  1. 0
                    Gunther
                    1. 0
                      tami
          2. 0

            Semantic Versioning

            1UnitedPower
            1. 0
              Matthias Apsel
  8. 0

    meiner Neugier wegen …

    Auge
    1. 0
      Gunther
      1. 0
        Auge
        1. 0
          Gunther
          1. 0
            Auge
        2. 0
          Christian Kruse
          1. 0
            Auge
            1. 0
              Christian Kruse
              1. 0
                Auge
                1. 0
                  Christian Kruse
                  1. 0
                    Auge
                2. 0
                  Matthias Apsel
                  1. 0
                    Auge
                    1. 0
                      Matthias Apsel
              2. 0
                Gunther
          2. 0
            Gunther
            1. 0
              Matthias Apsel
              1. 0
                Gunther
                1. 0
                  Matthias Apsel
                2. 0
                  Auge
                  1. 0
                    Gunther
                    1. 0
                      Auge
                      1. 0
                        Gunther
                        1. 0
                          Auge
                          1. 0
                            Gunther
              2. 0
                Gunther
            2. 0
              Auge
              1. 0
                Gunther
  9. 0
    Auge
    1. 0

      Nö, is nich wegen dir

      Auge
      • zur info
      1. 0
        Matthias Apsel
        1. 0
          Matthias Apsel
          1. 0

            Fragen und ein kleines Rätsel

            Auge
            • menschelei
            1. 0
              Matthias Apsel
              1. 0
                Matthias Apsel
  10. 0

    [Update - Version 1.2] Molilys JavaScript-Erweiterung

    Gunther
  11. 0
    M.
    1. 0
      Gunther
      1. 0
        M.
        1. 0
          Gunther
          1. 0
            M.
            1. 0
              Gunther
              1. 0
                M.
                1. 0
                  Gunther
  12. 0
    Matthias Apsel
    1. 0
      Matthias
    2. 0
      Gunther
      1. 0
        Matthias Apsel
        1. 0
          Gunther
          1. 0
            Matthias Apsel
            1. 0
              Auge
              1. 0
                Matthias Apsel
                1. 0
                  Auge
            2. 0
              Gunther

Hallo werte Selfgemeinde!

Eigentlich nur aufgrund eines "Fehlers" (kurzfristig war hier im Forum eine veraltete und nicht mehr funktionierende Version des Skripts verlinkt), habe ich mich daran gemacht, und molilys JavaScript-Erweiterung aktualisiert. Und bei der Gelegenheit auch gleich etwas erweitert.

Die ursprüngliche Funktionalität ist dabei voll umfänglich erhalten geblieben.

Hier mal in loser Reihenfolge ein paar der Unterschiede gegenüber molilys Version:

Filter:
Es gibt einige neue Filter (unter "LIVE-FILTER", sofern in den Benutzer-Einstellungen aktiviert, ansonsten über die Script-Config oder per Button aktivierbar).
Die jeweiligen Filter werden nur angezeigt, sofern es entsprechende Threads/ Postings gibt, und dann mit der jeweiligen Anzahl.

Forum-Kopf:
Im Kopfbereich des Forums lassen sich etliche "Blöcke" auf-/ zuklappen.

Statistiken:
Die Themenbereich-Statistik enthält jetzt immer alle Kategorien, auch die, in denen es aktuell keine Threads gibt. Außerdem gibt es im Kopf (unter "TIPPS ZUM FORUM") einen Link zum Einblenden der Statistik.

Die Autoren-Statistik enthält jetzt zusätzlich die Anzahl der als "fachlich hilfreich" bewerteter Postings, sowie die Gesamtanzahl der "fachlich hilfreich" Bewertungen des jeweiligen Autors.

Threads öffnen/schließen:
Das Skript übernimmt die komplette Steuerung für das Öffnen & Schließen der Threads. Sollten Threads serverseitig geschlossen sein, so werden diese durch das Skript aufgeklappt.
Per Links lassen sich jeweils alle Threads auf-/ zuklappen. Zusätzlich kann man die Option aktivieren, alle Threads mit ungelesenen Beiträgen automatisch zu öffnen.

Bei Filtern, die sich auf Postings (also nicht auf Threads) beziehen, werden die jeweiligen Threads für die gefilterte Anzeige grundsätzlich geöffnet (und beim Beenden des Filters wieder in ihren Ausgangszustand zurückgesetzt, sprich wieder geschlossen, wenn sie vorher bereits zugeklappt waren).

Das Skript verwendet für all diese Geschichten den session-, bzw. localStorage des Browsers.
Das ermöglicht den Erhalt aller "Zustände", sowohl bei einem Reload der Seite, als auch über Sitzungen hinweg.

Da das Skript keinerlei Zugriff auf den SELF-Server hat, sind alle diese Sachen natürlich browserspezifisch!

Wer das Skript gerne mal testen möchte (was mich natürlich freuen würde), der kann dies gerne tun.

Dazu wie gehabt bitte in den Benutzer-Einstellungen unter "Experten-Optionen" die beiden folgenden Dateien einbinden:

Eigenes Stylesheet: http://pilz-privat.de/selfhtml/forum-js.css
(WICHTIG: Haken bei "Ergänzt das Standard-Stylesheet" setzen!!!)
Eigene JS-Datei: http://pilz-privat.de/selfhtml/forum.js

Feedback, insbesondere falls jemand noch Fehler entdeckt, ist natürlich immer willkommen ...!

Gruß
Gunther

  1. Meine Herren!

    Sehr, sehr cool! Teste nun seit gestern früh und vor allem die Live-Filter haben es mir angetan. Herzlichen Dank! Ich würde mich freuen, wenn wir dafür unter Selfhtmls oder deinem github-Account einen Platz finden würden.

    --
    “All right, then, I'll go to hell.” – Huck Finn
    1. hi 1UnitedPower,

      Sehr, sehr cool! Teste nun seit gestern früh und vor allem die Live-Filter haben es mir angetan. Herzlichen Dank! Ich würde mich freuen, wenn wir dafür unter Selfhtmls oder deinem github-Account einen Platz finden würden.

      jo.

      mfg

      tami

  2. Hallo werte Selfgemeinde!

    Nachfolgend einige Hinweise und Screenshots:

    Beim ersten Aufruf (und nur dann!) in einer neuen Session prüft das Skript einmalig, ob alle_zwingend_erforderlichen_Konfigurationseinstellungen korrekt sind.

    Sollte dies nicht der Fall sein, öffnet sich ein Modal-Window:

    Nur die Optionen unter "Erforderliche Einstellungen" sind unbedingt erforderlich. Zum Setzen der jeweiligen Einstellung einfach auf den 'ändern' Button klicken. Dadurch wird die entsprechende Option in deinen Benutzer-Einstellungen gesetzt.

    TIPP: Wer das Skript nur mal testen möchte, der kann_vorher_seine aktuelle Konfiguration exportieren (per Klick auf den Button oben), um später ganz einfach wieder auf seine derzeitigen Einstellungen zurückzuwechseln.

    Nachdem alle zwingend notwendigen Einstellungen korrekt sind, wechselt die Hintergrundfarbe des Fensters auf Grün, und oben rechts erscheint ein Button zum aktualisieren/ neu laden des Fensters:

    ACHTUNG: Aus Gründen der Performance wird dieser Check nur einmalig zu Beginn einer jeden neuen Session ausgeführt. Änderungen in den Benutzer-Einstellungen während einer Session, werden also nicht "erkannt", und können somit zum "nicht funktionieren" des Skripts führen (sofern eine der zwingend erforderlichen Einstellungen verändert wird)!

    Die Einstellungen lassen sich auch manuell aufrufen.
    Dazu gibt es unter "Optionen" links einen zusätzlichen Link: "Benutzer-Skript Konfiguration"

    WICHTIG: Alle Einstellungen lassen sich nur entsprechend setzen, also nicht wieder rückgängig machen! Wer Einstellungen anderweitig ändern möchte, der muss ganz normal die Benutzer-Einstellungen aufrufen.

    Wenn das Skript bei euch nun (hoffentlich) korrekt arbeitet, dann könnte das Forum z.B. so aussehen:

    Links, unter "LIVE_FILTER" seht ihr alle neuen Filter.
    Diese Filter erscheinen nur dann, wenn es mind. einen entsprechenden Thread/ entsprechendes Posting gibt!

    Falls es neue Antworten auf einen eurer Beiträge gibt, so werden diese wie gehabt unter "BEITRÄGE" angezeigt.

    Unter "TIPPS ZUM FORUM" befinden sich

    • der Themenbereichs-Filter
    • ein Link zum Einblenden der Themenbereich-Statistik
    • Auswahlfeld zum Einstellen der Thread-Sortierung
    • Links zum auf-/ zuklappen aller Threads
    • Checkbox um Threads mit ungelesenen Beiträgen automatisch zu öffnen

    Solltet ihr den "LIVE-FILTER" in euren Einstellungen (noch) nicht aktiviert haben, dann könnt ihr das jederzeit ganz einfach durch Klick auf den Button "Live-Filter aktivieren" machen (Seite automatisch neu geladen).

    Abschließend noch zwei Screenshots der Themenbereichs- und Autoren-Statistik:

    So, und nun viel Spaß weiterhin im Forum ...!

    Gruß
    Gunther

  3. An dieser Stelle möchte ich mich auch noch ganz herzlich bedanken bei:

    • Mathias (molily) natürlich, ohne dessen Skript das Ganze gar nicht zustande gekommen wäre
    • Matthias Apsel fürs Testen
    • Performer für die CSS-Anpassungen an das Forum Layout
    • Christian Kruse für den Einbau der Abfrage-Option von Benutzer-Einstellungen

    Besten Dank!
    Gunther

  4. Hallo

    Wo ich gerade heute dem Fehlen der Benachrichtung bei Antworten nachgegangen bin.

    Eigentlich nur aufgrund eines "Fehlers" (kurzfristig war hier im Forum eine veraltete und nicht mehr funktionierende Version des Skripts verlinkt), …

    Falls du die Version von molily.de meinst, die quittierte mit 404. Die auf selfhtml.org gehostete funktioniert aber (mit den alten Funktionen).

    Statistiken:
    Die Themenbereich-Statistik enthält jetzt immer alle Kategorien, auch die, in denen es aktuell keine Threads gibt.

    Berücksichtigt die Statistik von mir in der Benutzerkonfiguration ausgeblendete Themenbereiche?

    Die Autoren-Statistik enthält jetzt zusätzlich die Anzahl der als "fachlich hilfreich" bewerteter Postings, sowie die Gesamtanzahl der "fachlich hilfreich" Bewertungen des jeweiligen Autors.

    Da das immer nur mit den jeweils in der Hauptansicht vorhandenen Threads funktioniert, frage ich mich, worin der Unterschied in der Zählung der fachlich-hilfreich-Postings des Autors gegenüber der Gesamtanzahl der fachlich-hilfreich-Postings des Autors liegt. Beiden Zählungen liegt doch wohl die Hauptansicht zugrunde, oder?

    Threads öffnen/schließen:
    Das Skript übernimmt die komplette Steuerung für das Öffnen & Schließen der Threads. Sollten Threads serverseitig geschlossen sein, so werden diese durch das Skript aufgeklappt.

    Was ist, wenn ich das nicht will? Ich habe die Threads doch nicht aus Jux und Dallerei geschlossen, falls sie nicht sowieso geschlossen sein sollten, weil alle Postings gelesen sind. Oder verstehe ich dich nur einfach nicht?

    Das Skript verwendet für all diese Geschichten den session-, bzw. localStorage des Browsers.
    Das ermöglicht den Erhalt aller "Zustände", sowohl bei einem Reload der Seite, als auch über Sitzungen hinweg.

    Da das Skript keinerlei Zugriff auf den SELF-Server hat, sind alle diese Sachen natürlich browserspezifisch!

    Das heißt, dass der Reisenvorteil, den das Programm bisher hatte, dass man zu einem bestimmten Zeitpunkt an allen Geräten mit allen Browsern einen identischen Datenzustand hat, dahin ist? Sollte das so sein, ist das nichts für mich.

    Feedback, insbesondere falls jemand noch Fehler entdeckt, ist natürlich immer willkommen ...!

    In deinem Screenshot-Posting sind auf den Screenshots zu den Autoren- und Themenbereichsstatistiken die Überschriften vertauscht. Die Themenbereichsstatistik ist mit Autorenstatistik überschrieben und umgekehrt. Da das vom Skript generiert wird, solltest du die verdrehte Logik korrigieren. :-)

    	if(type == 'author')  html += '<a href="" class="switch">Zeige Themenbereich-Statistik</a>';  
    	else  html += '<a href="" class="switch">Zeige Autor(inn)en-Statistik</a>';
    

    Tschö, Auge

    --
    Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
    Terry Pratchett, "Wachen! Wachen!"
    ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
    Veranstaltungsdatenbank Vdb 0.3
    1. Om nah hoo pez nyeetz, Auge!

      Da das immer nur mit den jeweils in der Hauptansicht vorhandenen Threads funktioniert, frage ich mich, worin der Unterschied in der Zählung der fachlich-hilfreich-Postings des Autors gegenüber der Gesamtanzahl der fachlich-hilfreich-Postings des Autors liegt. Beiden Zählungen liegt doch wohl die Hauptansicht zugrunde, oder?

      Wenn genau einer deiner Beiträge von genau 3 Personen als fachlich hilfreich bewertet wird, steht bei dir (1|3).

      Matthias

      --
      Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Notar und Notarzt.

      1. Hallo

        Da das immer nur mit den jeweils in der Hauptansicht vorhandenen Threads funktioniert, frage ich mich, worin der Unterschied in der Zählung der fachlich-hilfreich-Postings des Autors gegenüber der Gesamtanzahl der fachlich-hilfreich-Postings des Autors liegt. Beiden Zählungen liegt doch wohl die Hauptansicht zugrunde, oder?

        Wenn genau einer deiner Beiträge von genau 3 Personen als fachlich hilfreich bewertet wird, steht bei dir (1|3).

        Ah ja, danke für die Info.

        Tschö, Auge

        --
        Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
        Terry Pratchett, "Wachen! Wachen!"
        ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
        Veranstaltungsdatenbank Vdb 0.3
      2. Om nah hoo pez nyeetz, alle!

        Da das immer nur mit den jeweils in der Hauptansicht vorhandenen Threads funktioniert, frage ich mich, worin der Unterschied in der Zählung der fachlich-hilfreich-Postings des Autors gegenüber der Gesamtanzahl der fachlich-hilfreich-Postings des Autors liegt. Beiden Zählungen liegt doch wohl die Hauptansicht zugrunde, oder?

        Wenn genau einer deiner Beiträge von genau 3 Personen als fachlich hilfreich bewertet wird, steht bei dir (1|3).

        Da gibt es übrigens aktuell noch einen "Fehler".
        Momentan werden nur die "fachlich hilfreich" Bewertungen aus Folgepostings, nicht aber des Ausgangspostings berücksichtigt.

        Das werde ich noch korrigieren - warte aber erstmal, ob noch weitere Fehler auftauchen.

        Gruß
        Gunther

    2. Hallo,

      vorab schon mal besten Dank für dein Feedback! :-)
      Ich werde mich bemühen, deine Fragen bestmöglich zu beantworten.

      Statistiken:
      Die Themenbereich-Statistik enthält jetzt immer alle Kategorien, auch die, in denen es aktuell keine Threads gibt.

      Berücksichtigt die Statistik von mir in der Benutzerkonfiguration ausgeblendete Themenbereiche?

      Nein.
      Das Ausblenden von Themenbereichen ist ja auch nur für den Thread-Baum gedacht.
      Die Statistik berücksichtigt alle Themenbereiche, die es aktuell im Forum gibt. Wenn dich davon welche nicht interessieren, kannst du sie ja getrost "überlesen". ;-)

      Die Autoren-Statistik enthält jetzt zusätzlich die Anzahl der als "fachlich hilfreich" bewerteter Postings, sowie die Gesamtanzahl der "fachlich hilfreich" Bewertungen des jeweiligen Autors.

      Da das immer nur mit den jeweils in der Hauptansicht vorhandenen Threads funktioniert, frage ich mich, worin der Unterschied in der Zählung der fachlich-hilfreich-Postings des Autors gegenüber der Gesamtanzahl der fachlich-hilfreich-Postings des Autors liegt. Beiden Zählungen liegt doch wohl die Hauptansicht zugrunde, oder?

      Das hat Matthias ja schon beantwortet.

      Threads öffnen/schließen:
      Das Skript übernimmt die komplette Steuerung für das Öffnen & Schließen der Threads. Sollten Threads serverseitig geschlossen sein, so werden diese durch das Skript aufgeklappt.

      Was ist, wenn ich das nicht will? Ich habe die Threads doch nicht aus Jux und Dallerei geschlossen, falls sie nicht sowieso geschlossen sein sollten, weil alle Postings gelesen sind. Oder verstehe ich dich nur einfach nicht?

      Das ist etwas "komplizierter" ...!
      Auch bereits die Version von molily setzt voraus, dass du in deinen Einstellungen die Threads per Default öffnest und Javascript zum Öffnen/ Schließen verwendest. Das führt dann aber dazu, dass jeder Klick auf das Ordner-Icon eines Threads einen XMLHttpRequest auslöst.

      Da es mir aber äußerst sinnvoll erschien, dass je nach Filter bestimmte Threads aber aufgeklappt werden, ist diese Methode "quälend langsam".

      Von daher habe ich mich dafür entschieden, das Auf- und Zuklappen komplett über das Skript zu steuern, mit dem Nachteil, dass es eine Browser spezifische Einstellung wird.

      Allerdings glaube ich, dass über den Link "alle Threads zuklappen", in Kombination mit der Option "Threads mit ungelesenen Beiträgen automatisch öffnen", man eine ausreichende Alternative hat.

      Das Skript verwendet für all diese Geschichten den session-, bzw. localStorage des Browsers.
      Das ermöglicht den Erhalt aller "Zustände", sowohl bei einem Reload der Seite, als auch über Sitzungen hinweg.

      Da das Skript keinerlei Zugriff auf den SELF-Server hat, sind alle diese Sachen natürlich browserspezifisch!

      Das heißt, dass der Reisenvorteil, den das Programm bisher hatte, dass man zu einem bestimmten Zeitpunkt an allen Geräten mit allen Browsern einen identischen Datenzustand hat, dahin ist? Sollte das so sein, ist das nichts für mich.

      Das kommt darauf an, was genau du unter "Datenzustand" verstehst?
      Alle serverseitigen Einstellungen & Zustände sind natürlich nach wie vor identisch (also bspw. als interessant markierte Threads, der un-/gelesen Zustand etc.). Einzig der Zustand auf-/ zugeklappt ist Browser individuell (aus o.g. Gründen).

      Feedback, insbesondere falls jemand noch Fehler entdeckt, ist natürlich immer willkommen ...!

      In deinem Screenshot-Posting sind auf den Screenshots zu den Autoren- und Themenbereichsstatistiken die Überschriften vertauscht. Die Themenbereichsstatistik ist mit Autorenstatistik überschrieben und umgekehrt.

      Nein. Das ist jeweils ein Link zum Wechseln der gerade angezeigten Statistik! ;-)

      Gruß
      Gunther

      1. Hallo

        Threads öffnen/schließen:

        Was ist, wenn ich das nicht will? Ich habe die Threads doch nicht aus Jux und Dallerei geschlossen, falls sie nicht sowieso geschlossen sein sollten, weil alle Postings gelesen sind. Oder verstehe ich dich nur einfach nicht?

        Auch bereits die Version von molily setzt voraus, dass du in deinen Einstellungen die Threads per Default öffnest und Javascript zum Öffnen/ Schließen verwendest.

        Jein. Bei mir sind die Threads per default geschlossen, jene mit ungelesenen Postings aber offen. Und ja, ich nutze (molilys) Javascript zum Öffnen und Schließen von Threads.

        Das führt dann aber dazu, dass jeder Klick auf das Ordner-Icon eines Threads einen XMLHttpRequest auslöst.

        Da es mir aber äußerst sinnvoll erschien, dass je nach Filter bestimmte Threads aber aufgeklappt werden, ist diese Methode "quälend langsam".

        Das ist nachvollziehbar. Bei den Filtern ist ja typischerweise nicht nur jeweils ein Thread betroffen.

        Von daher habe ich mich dafür entschieden, das Auf- und Zuklappen komplett über das Skript zu steuern, mit dem Nachteil, dass es eine Browser spezifische Einstellung wird.

        Ok, ich hoffe, dir nun folgen zu können. Diese clientseitige Speicherung des Zustands bezieht sich nur auf die Anwendung der Filter im Browser? Die clientseitige Speicherung betrifft nicht die grundsätzliche Ausgabe der Threads als zugeklappt, wenn es keine ungelesenen Beiträge gibt?

        Wenn es nach mir ginge, würde das so funktioneren: Das Laden der Hauptansicht erfolgt nach den serverseitigen Einstellungen, solange kein clientseitiger Filter aktiviert wurde. Das würde aber bedingen, dass der Server von den Filtern weiß. Mist.

        Allerdings glaube ich, dass über den Link "alle Threads zuklappen", in Kombination mit der Option "Threads mit ungelesenen Beiträgen automatisch öffnen", man eine ausreichende Alternative hat.

        Wie gesagt, mit Molilys Skript funktioniert das. Ich werde dein Skript auch mal testen. So viel wie heute habe ich an meiner Konfiguration seit ewig und drei Tagen nicht rumgefriemelt.

        Feedback, insbesondere falls jemand noch Fehler entdeckt, ist natürlich immer willkommen ...!

        In deinem Screenshot-Posting sind auf den Screenshots zu den Autoren- und Themenbereichsstatistiken die Überschriften vertauscht. Die Themenbereichsstatistik ist mit Autorenstatistik überschrieben und umgekehrt.

        Nein. Das ist jeweils ein Link zum Wechseln der gerade angezeigten Statistik! ;-)

        Dann ist er also nicht auf Anhieb als solcher erkennbar. Und das von dir, verwirrend … ;-)

        Tschö, Auge

        --
        Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
        Terry Pratchett, "Wachen! Wachen!"
        ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
        Veranstaltungsdatenbank Vdb 0.3
        1. Hallo!

          Threads öffnen/schließen:

          Was ist, wenn ich das nicht will? Ich habe die Threads doch nicht aus Jux und Dallerei geschlossen, falls sie nicht sowieso geschlossen sein sollten, weil alle Postings gelesen sind. Oder verstehe ich dich nur einfach nicht?

          Auch bereits die Version von molily setzt voraus, dass du in deinen Einstellungen die Threads per Default öffnest und Javascript zum Öffnen/ Schließen verwendest.

          Hab' gerade noch mal in der Doku zu molilys Skript nachgeschaut. Die Einstellung "Threads öffnen/schließen: Per default öffnen" war da nicht erforderlich.

          Jetzt ist sie es aber!

          Jein. Bei mir sind die Threads per default geschlossen, jene mit ungelesenen Postings aber offen. Und ja, ich nutze (molilys) Javascript zum Öffnen und Schließen von Threads.

          Ja, stimmt. Bei der ursprünglichen Variante war das möglich, da das Skript selber aber eben auch keine Threads aufgeklappt hat.

          Das führt dann aber dazu, dass jeder Klick auf das Ordner-Icon eines Threads einen XMLHttpRequest auslöst.

          Da es mir aber äußerst sinnvoll erschien, dass je nach Filter bestimmte Threads aber aufgeklappt werden, ist diese Methode "quälend langsam".

          Das ist nachvollziehbar. Bei den Filtern ist ja typischerweise nicht nur jeweils ein Thread betroffen.

          Von daher habe ich mich dafür entschieden, das Auf- und Zuklappen komplett über das Skript zu steuern, mit dem Nachteil, dass es eine Browser spezifische Einstellung wird.

          Ok, ich hoffe, dir nun folgen zu können. Diese clientseitige Speicherung des Zustands bezieht sich nur auf die Anwendung der Filter im Browser? Die clientseitige Speicherung betrifft nicht die grundsätzliche Ausgabe der Threads als zugeklappt, wenn es keine ungelesenen Beiträge gibt?

          Nein, da muss ich dich leider enttäuschen.
          Wenn du das Skript verwendest, sind serverseitig alle Threads geöffnet!

          Falls du verschiedene Browser und/ oder Geräte verwendest, ist der jeweilige Status also vom jeweiligen Browser abhängig.

          Wenn es nach mir ginge, würde das so funktioneren: Das Laden der Hauptansicht erfolgt nach den serverseitigen Einstellungen, solange kein clientseitiger Filter aktiviert wurde. Das würde aber bedingen, dass der Server von den Filtern weiß. Mist.

          Allerdings glaube ich, dass über den Link "alle Threads zuklappen", in Kombination mit der Option "Threads mit ungelesenen Beiträgen automatisch öffnen", man eine ausreichende Alternative hat.

          Wie gesagt, mit Molilys Skript funktioniert das. Ich werde dein Skript auch mal testen. So viel wie heute habe ich an meiner Konfiguration seit ewig und drei Tagen nicht rumgefriemelt.

          Haha ..., kann ich mir gut vorstellen.
          Ich hab' beim Schreiben und Testen Einstellungen gefunden, von denen ich vorher gar nicht wusste, dass es sie gibt! ;-)
          Das macht die Sache andererseits ja auch "leicht kompliziert", da es eben 1.000 verschiedene Einstellungs- und Kombinationsmöglichkeiten gibt, und ich dem User möglichst wenig Einstellungen "aufzwingen" wollte. Am Ende muss man halt einen Tod sterben, und ich habe mich für die diese Variante entschieden.

          Auch sei an dieser Stelle mal allgemein angemerkt:
          Es besteht natürlich selbstverständlich auch weiterhin die Möglichkeit, molilys Skript zu verwenden!
          Bei entsprechendem Interesse ist lediglich angedacht, beide Skripte anzubieten (direkt über den SELF-Server).

          Feedback, insbesondere falls jemand noch Fehler entdeckt, ist natürlich immer willkommen ...!

          In deinem Screenshot-Posting sind auf den Screenshots zu den Autoren- und Themenbereichsstatistiken die Überschriften vertauscht. Die Themenbereichsstatistik ist mit Autorenstatistik überschrieben und umgekehrt.

          Nein. Das ist jeweils ein Link zum Wechseln der gerade angezeigten Statistik! ;-)

          Dann ist er also nicht auf Anhieb als solcher erkennbar. Und das von dir, verwirrend … ;-)

          Keine Absicht! ;-)
          Falls du eine Idee hast, wie wir es weniger verwirrend gestalten können, immer gerne! :-)

          Gruß
          Gunther

          1. Hallo!

            Threads öffnen/schließen:

            Was ist, wenn ich das nicht will? Ich habe die Threads doch nicht aus Jux und Dallerei geschlossen, falls sie nicht sowieso geschlossen sein sollten, weil alle Postings gelesen sind. Oder verstehe ich dich nur einfach nicht?

            Auch bereits die Version von molily setzt voraus, dass du in deinen Einstellungen die Threads per Default öffnest und Javascript zum Öffnen/ Schließen verwendest.

            Hab' gerade noch mal in der Doku zu molilys Skript nachgeschaut. Die Einstellung "Threads öffnen/schließen: Per default öffnen" war da nicht erforderlich.

            Jetzt ist sie es aber!

            Jein. Bei mir sind die Threads per default geschlossen, jene mit ungelesenen Postings aber offen. Und ja, ich nutze (molilys) Javascript zum Öffnen und Schließen von Threads.

            IMHO einfachste Variante:
            Schritt 1: Haken bei "Threads mit ungelesenen Beiträgen automatisch öffnen" entfernen falls gesetzt
            Schritt 2: Auf "alle Threads zuklappen" klicken
            Schritt 3: Haken bei "Threads mit ungelesenen Beiträgen automatisch öffnen" setzen

            Und bei neuen Threads diese dann einmal zuklicken (wenn gelesen), oder von Zeit zu Zeit die obigen Schritte durchführen.

            Gruß
            Gunther

            1. Lieber Gunther,

              IMHO einfachste Variante:
              Schritt 1: Haken bei "Threads mit ungelesenen Beiträgen automatisch öffnen" entfernen falls gesetzt

              Du meinst sicherlich die Option "Threads öffnen/schließen" mit den beiden Optionen "per default öffnen" und "per default schließen". Nun, wenn ich die erste Option (Radio-Button) zugunsten der zweiten abstelle, dann meckert wieder Dein Modalfenster und zwingt mich, zur ersten Option zurückzukehren.

              Schritt 2: Auf "alle Threads zuklappen" klicken

              Wo steht das? Wenn ich bei Schritt eins die Option "per default schließen" wähle, bietet mir das Formular eine zusätzliche Option "Threads mit ungelesenen Postings automatisch öffnen" an, welche mit aktivierter Checkbox erscheint.

              Die in diesem Schritt ebenfalls verfügbare Option "Javascript zum Öffnen und Schließen von Threads benutzen" bleibt aktiviert (Checkbox).

              Schritt 3: Haken bei "Threads mit ungelesenen Beiträgen automatisch öffnen" setzen

              Tja, wenn die dafür notwendige zweite Option von Deinem Script anerkannt würde...

              Und bei neuen Threads diese dann einmal zuklicken (wenn gelesen), oder von Zeit zu Zeit die obigen Schritte durchführen.

              Die Notwendigkeit für dieses Tun empfinde ich noch nicht als Fortschritt. Was muss ich an meiner Erwartungshaltung dafür ändern? Hat das vielleicht mit der aktivierten devel-Ansicht zu tun?

              Liebe Grüße,

              Felix Riesterer.

              --
              "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)
              1. Om nah hoo pez nyeetz, Felix Riesterer!

                Hat das vielleicht mit der aktivierten devel-Ansicht zu tun?

                Nein, die Ansichten sind bis auf die CSS-Quelle identisch.

                Matthias

                --
                Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Volt und Voltaire.

              2. Lieber Felix,

                IMHO einfachste Variante:
                Schritt 1: Haken bei "Threads mit ungelesenen Beiträgen automatisch öffnen" entfernen falls gesetzt

                Du meinst sicherlich die Option "Threads öffnen/schließen" mit den beiden Optionen "per default öffnen" und "per default schließen". Nun, wenn ich die erste Option (Radio-Button) zugunsten der zweiten abstelle, dann meckert wieder Dein Modalfenster und zwingt mich, zur ersten Option zurückzukehren.

                Nein, falsche Baustelle ...! ;-)
                Siehe unter "TIPPS ZUM FORUM" (rechter Block im Forum-Kopf)

                Schritt 2: Auf "alle Threads zuklappen" klicken

                Wo steht das?

                s.o.

                Schritt 3: Haken bei "Threads mit ungelesenen Beiträgen automatisch öffnen" setzen

                Tja, wenn die dafür notwendige zweite Option von Deinem Script anerkannt würde...

                Wenn du an der "richtigen Stelle" bist, sollte das auch klappen!

                Und bei neuen Threads diese dann einmal zuklicken (wenn gelesen), oder von Zeit zu Zeit die obigen Schritte durchführen.

                Die Notwendigkeit für dieses Tun empfinde ich noch nicht als Fortschritt.

                Ja, hab' ich verstanden.
                Ich überlege zur Zeit, ob ich es "praktikabel" hinbekomme, Threads auch wieder "per Default" zu schließen.

                Was muss ich an meiner Erwartungshaltung dafür ändern?

                Du an deiner Erwartungshaltung gar nichts! ;-)
                Ich muss halt mal gucken, ob sich das umsetzen lässt ...!

                Hat das vielleicht mit der aktivierten devel-Ansicht zu tun?

                Nein, die nutze ich selber auch!

                Gruß
                Gunther

            2. Om nah hoo pez nyeetz, Gunther!

              Und bei neuen Threads diese dann einmal zuklicken (wenn gelesen),

              Das kannst du doch bestimmt deinem Script beibringen. Dafür gibt es ja die serverseitige gelesen-Markierung, die du auswerten kannst.

              Matthias

              --
              Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Reif und Reifrock.

              1. Om nah hoo pez nyeetz, Matthias!

                Und bei neuen Threads diese dann einmal zuklicken (wenn gelesen),

                Das kannst du doch bestimmt deinem Script beibringen. Dafür gibt es ja die serverseitige gelesen-Markierung, die du auswerten kannst.

                So einfach ist es leider nicht ...! :-(

                Die serverseitige Gelesen-Markierung ist kein signifikantes Kriterium.

                Zur Erläuterung:
                Aktuell ist aufgrund der entsprechend notwendigen Benutzer-Einstellung erst einmal jeder Thread aufgeklappt, d.h. es bedarf keiner Aktion.

                Um einen Thread zuzuklappen bedarf es aber einer expliziten Willensbekundung/ Aktion seitens des Users, indem er einen Thread zuklickt.
                Und das wird gespeichert, um bei einem Reload der Seite den entsprechenden Thread wieder zuzuklappen.

                Ob ein Thread ungelesene Postings enthält oder nicht, spielt dabei keine Rolle!
                Wenn die entsprechende Option aktiviert ist, wird der Thread (temporär), ungeachtet seines Auf-/ Zu-Status aufgeklappt.

                Das Problem:
                Wenn ein Thread jetzt per Default zugeklappt sein soll, dann gibt es aktuell zumindest kein Unterscheidungsmerkmal zwischen Threads, die der User absichtlich nicht zugeklappt, bzw. explizit aufgeklappt hat, und denen, die aufgrund der Default-Einstellung zugeklappt sein sollen!

                Klingt vermutlich etwas verwirrend, aber ich hoffe, die Problematik ist zumindest ansatzweise nachzuvollziehen? ;-)

                Gehen wir die möglichen Fälle mal durch:
                Es gibt einen neuen Thread (ungelesen).
                Dieser soll jetzt aufgrund der Default-Einstellung zugeklappt sein (was für sich alleine kein Problem darstellt).

                Jetzt klickt der User auf "alle Threads aufklappen", oder klickt explizit diesen Thread auf, dann reicht mein derzeitiges Kriterium (alle Threads, die nicht explizit zugeklappt wurden, sind geöffnet) nicht mehr aus.

                Vielmehr muss ich dann zusätzlich noch die Thread-IDs von den Threads speichern, die aufgeklappt wurden. Und dieses Array dann jedes Mal ebenfalls gegen die jeweils noch im Forum-Baum vorhandenen Thread-IDs abgleichen. Zusätzlich noch prüfen, ob ein Thread, der aufgrund des Defaults zugeklappt werden soll, nicht bereits durch den User explizit aufgeklappt wurde.

                Das ist natürlich alles machbar!
                Ich mache mir lediglich etwas Sorgen um die Performance ...!

                Aber ich bastel das mal ins Skript rein, und wenn es sich als "zu langsam" herausstellen sollte, dann können wir ja immer noch auf die derzeitige Version zurückwechseln. ;-)

                Gruß
                Gunther

                1. Om nah hoo pez nyeetz, Gunther!

                  Würde es nicht reichen, dass du den gerade gelesenen Thread zuklappst?

                  Matthias

                  --
                  Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Park und Parkinson.

                  1. Om nah hoo pez nyeetz, Matthias!

                    Würde es nicht reichen, dass du den gerade gelesenen Thread zuklappst?

                    Nein! :-P
                    Denn mal abgesehen davon, dass es beim ersten Laden der Seite in einer neuen Session keinen "gerade gelesenen Thread" gibt, müsste ich dann ja auch noch wissen, welcher der "gerade gelesene Thread" war/ ist.

                    Und was ist mit den ganzen Threads, die neu in meiner Abwesenheit dazugekommen sind?

                    Du darfst ja auch nicht vergessen, dass "Threads mit ungelesenen Beiträgen automatisch öffnen" nur eine Option und kein Muss ist. ;-)

                    Gruß
                    Gunther

                  2. Hallo Matthias!

                    Würde es nicht reichen, dass du den gerade gelesenen Thread zuklappst?

                    So, nachdem ich erst eine recht aufwendige Variante umgesetzt hatte, ist mir jetzt noch eine (zündende?) Idee gekommen ...! ;-)

                    Ich speichere jetzt lediglich zusätzlich einen Timestamp des letzten Besuchs, bzw. letzten Reloads der Seite, und prüfe dann (nur bei aktivierter Option "Threads per default schließen") den jeweiligen Zeitpunkt des Start-Postings. Ist dieses jünger, wird die Thread-ID zur Liste der zugeklappten Threads hinzugefügt - fertig!

                    Ich glaube/ hoffe, dass das so funktioniert.
                    Die Änderung ist in der Version 1.1 enthalten - siehe https://forum.selfhtml.org/?t=218508&m=1505002

                    Oder erkennst du irgendwo einen Denkfehler?

                    Gruß
                    Gunther

          2. Hallo

            Auch bereits die Version von molily setzt voraus, dass du in deinen Einstellungen die Threads per Default öffnest und Javascript zum Öffnen/ Schließen verwendest.

            Hab' gerade noch mal in der Doku zu molilys Skript nachgeschaut. Die Einstellung "Threads öffnen/schließen: Per default öffnen" war da nicht erforderlich.

            Jetzt ist sie es aber!

            *grml*

            Ok, ich hoffe, dir nun folgen zu können. Diese clientseitige Speicherung des Zustands bezieht sich nur auf die Anwendung der Filter im Browser? Die clientseitige Speicherung betrifft nicht die grundsätzliche Ausgabe der Threads als zugeklappt, wenn es keine ungelesenen Beiträge gibt?

            Nein, da muss ich dich leider enttäuschen.

            Och menno!1!!111 ;-)

            Wenn du das Skript verwendest, sind serverseitig alle Threads geöffnet!

            Falls du verschiedene Browser und/ oder Geräte verwendest, ist der jeweilige Status also vom jeweiligen Browser abhängig.

            (Wieder) Mal 'ne Frage. Im Eröffnungsposting schreibst du:

            Es gibt einige neue Filter (unter "LIVE-FILTER", sofern in den Benutzer-Einstellungen aktiviert, ansonsten über die Script-Config oder per Button aktivierbar).

            Bei „Script-Config“ horche ich auf. Lassen sich die Funktionen, die eine clientseitige Speicherung erfordern, im Skript selbst ein- und ausschalten? Ich als JavaScript-Legastheniker habe im Quelltext nichts gesehen, was darauf hindeutet.

            Oder mal sehr viel allgemeiner: Gibt es einen mit der Ausstattung dieser Forumsinstallation gangbaren Weg, ein Script mit einer – je nach Benutzer – eigenen INI oder ähnlichem zu verknüpfen und somit einzelne Features ab- und zuschaltbar zu machen? Frei nach dem Motto: ein Feature ist vom Skript aus eingeschaltet, außer es gibt eine INI, die die skripteigenen Einstellungen überschreibt. Das Ganze nur sehr generell, so dass voneinander abhängige Features nicht sterben.

            Das sollte doch grundsätzlich mit einem eigenen Skript mit den Einstellungen, das ein anderes aufruft, welches den Programmablauf enthält, machbar sein.

            … und jetzt noch eine Frage.

            Wie ich gerade gesehen habe, sind die Live-Filter bei mir eh seit Jahr und Tag abgeschaltet. Vorausgesetzt, es bleibt dabei, bin ich überhaupt von der clientseitigen Speicherung betroffen?

            Das zuklappen von Kästen im Seitenkopf könnte mir ja schon gefallen, wird aber wohl auch im Browser gespeichert werden, oder? Wobei, das in drei oder vier Browsern zu konfigurieren, brächte mich nicht um.

            … Ich werde dein Skript auch mal testen. So viel wie heute habe ich an meiner Konfiguration seit ewig und drei Tagen nicht rumgefriemelt.

            Haha ..., kann ich mir gut vorstellen.

            :-)

            Auch sei an dieser Stelle mal allgemein angemerkt:
            Es besteht natürlich selbstverständlich auch weiterhin die Möglichkeit, molilys Skript zu verwenden!
            Bei entsprechendem Interesse ist lediglich angedacht, beide Skripte anzubieten (direkt über den SELF-Server).

            So wäre es mir, wofür auch immer ich mich entscheide, schön.

            In deinem Screenshot-Posting sind auf den Screenshots zu den Autoren- und Themenbereichsstatistiken die Überschriften vertauscht. Die Themenbereichsstatistik ist mit Autorenstatistik überschrieben und umgekehrt.

            Nein. Das ist jeweils ein Link zum Wechseln der gerade angezeigten Statistik! ;-)

            Dann ist er also nicht auf Anhieb als solcher erkennbar. Und das von dir, verwirrend … ;-)

            Keine Absicht! ;-)
            Falls du eine Idee hast, wie wir es weniger verwirrend gestalten können, immer gerne! :-)

            Ich habe in Richtung Buttonoptik gedacht, aber das wären hier die einzigen Links, die so gestaltet wären. Also weg mit dem Gedanken. Wie wäre es mit einer Änderung des Textes? Der momentane Linktext in der Themenbereichsstatistik lautet „zeige Autor(inn)en-Statistik“. Für mich bezog sich das auf die darunter befindliche Liste statt auf die „Andere“. Mit „wechsle zur Autor(inn)enstatistik“ wäre zweifelsfrei klar, dass es woanders hin geht.

            Tschö, Auge

            --
            Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
            Terry Pratchett, "Wachen! Wachen!"
            ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
            Veranstaltungsdatenbank Vdb 0.3
            1. Hallo!

              (Wieder) Mal 'ne Frage. Im Eröffnungsposting schreibst du:

              Nur Fragen bringen uns weiter ...! ;-)

              Es gibt einige neue Filter (unter "LIVE-FILTER", sofern in den Benutzer-Einstellungen aktiviert, ansonsten über die Script-Config oder per Button aktivierbar).

              Bei „Script-Config“ horche ich auf.

              Die Formulierung ist vielleicht etwas missverständlich (und nur der Textlänge geschuldet) - "Config" bezieht sich auf_deine_Benutzer-Einstellungen. Und „Script-Config“ meint somit deine Benutzer-Einstellungen im Bezug auf das Funktionieren des Skripts.

              Das Skript selber besitzt keinerlei Einstellmöglichkeiten!

              Lassen sich die Funktionen, die eine clientseitige Speicherung erfordern, im Skript selbst ein- und ausschalten? Ich als JavaScript-Legastheniker habe im Quelltext nichts gesehen, was darauf hindeutet.

              Das hast du richtig gesehen! ;-)
              Es ist essentieller Bestandteil des Skripts (und der zugrunde liegenden Idee(n)), dass Threads vom Skript auf- und zugeklappt werden können. Und das ist halt wie gesagt aus Performancegründen nur so realisierbar, da das serverseitige Auf- und Zuklappen viel zu lange dauern würde.

              Oder mal sehr viel allgemeiner: Gibt es einen mit der Ausstattung dieser Forumsinstallation gangbaren Weg, ein Script mit einer – je nach Benutzer – eigenen INI oder ähnlichem zu verknüpfen und somit einzelne Features ab- und zuschaltbar zu machen? Frei nach dem Motto: ein Feature ist vom Skript aus eingeschaltet, außer es gibt eine INI, die die skripteigenen Einstellungen überschreibt. Das Ganze nur sehr generell, so dass voneinander abhängige Features nicht sterben.

              AFAIS nein.

              Das sollte doch grundsätzlich mit einem eigenen Skript mit den Einstellungen, das ein anderes aufruft, welches den Programmablauf enthält, machbar sein.

              … und jetzt noch eine Frage.

              Wie ich gerade gesehen habe, sind die Live-Filter bei mir eh seit Jahr und Tag abgeschaltet. Vorausgesetzt, es bleibt dabei, bin ich überhaupt von der clientseitigen Speicherung betroffen?

              Ja! ;-)
              Die Geschichte mit den Filtern unter LIVE-FILTER ist lediglich eine Frage der Ansicht/ Anzeige. Es wird grundsätzlich bei jedem Seitenaufruf der komplette Thread-Baum nach den entsprechenden Kriterien gefiltert (weil das unterm Strich auch nicht länger dauert, als bei jedem Posting zu prüfen, ob es für einen Filter relevant ist, oder nicht).

              Die "Steuerung" des Auf- und Zuklappens von Threads durch das Skript ist ein elementarer Bestandteil, ohne den die ganzen anderen "Features" nicht funktionieren würden.

              Das "Problem" liegt im Prinzip darin, dass es die Foren-Software nicht vorsieht, dass man mehr als eine Thread.ID zum Öffnen/ Schließen gleichzeitig an das Foren-Skript schickt.

              Das zuklappen von Kästen im Seitenkopf könnte mir ja schon gefallen, wird aber wohl auch im Browser gespeichert werden, oder?

              Natürlich! ;-)

              Wobei, das in drei oder vier Browsern zu konfigurieren, brächte mich nicht um.

              Siehste! :-P

              In deinem Screenshot-Posting sind auf den Screenshots zu den Autoren- und Themenbereichsstatistiken die Überschriften vertauscht. Die Themenbereichsstatistik ist mit Autorenstatistik überschrieben und umgekehrt.

              Nein. Das ist jeweils ein Link zum Wechseln der gerade angezeigten Statistik! ;-)

              Dann ist er also nicht auf Anhieb als solcher erkennbar. Und das von dir, verwirrend … ;-)

              Keine Absicht! ;-)
              Falls du eine Idee hast, wie wir es weniger verwirrend gestalten können, immer gerne! :-)

              Ich habe in Richtung Buttonoptik gedacht, aber das wären hier die einzigen Links, die so gestaltet wären. Also weg mit dem Gedanken. Wie wäre es mit einer Änderung des Textes? Der momentane Linktext in der Themenbereichsstatistik lautet „zeige Autor(inn)en-Statistik“. Für mich bezog sich das auf die darunter befindliche Liste statt auf die „Andere“. Mit „wechsle zur Autor(inn)enstatistik“ wäre zweifelsfrei klar, dass es woanders hin geht.

              Stimmt!
              Dann hießen aber die beiden Links, die dasselbe bewirken, unterschiedlich. Denn auf der Hauptseite der Link heißt ja "Zeige Themenbereich-Statistik".
              Wobei wir auch gerne deinen Vorschlag umsetzen können - wäre kein Problem.

              Gruß
              Gunther

              1. Om nah hoo pez nyeetz, Gunther!

                Wie wäre es mit einer Änderung des Textes? Der momentane Linktext in der Themenbereichsstatistik lautet „zeige Autor(inn)en-Statistik“. Für mich bezog sich das auf die darunter befindliche Liste statt auf die „Andere“. Mit „wechsle zur Autor(inn)enstatistik“ wäre zweifelsfrei klar, dass es woanders hin geht.

                Stimmt!
                Dann hießen aber die beiden Links, die dasselbe bewirken, unterschiedlich. Denn auf der Hauptseite der Link heißt ja "Zeige Themenbereich-Statistik".

                Sie bewirken nicht dasselbe.
                Der eine öffnet das Statistik-div, der andere wechselt den Inhalt dieses Elements ;-p

                Deshalb bin ich auch für eine zweifelsfreie Formulierung.

                Matthias

                --
                Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Star und Start.

                1. Om nah hoo pez nyeetz, alle!

                  Wie wäre es mit einer Änderung des Textes? Der momentane Linktext in der Themenbereichsstatistik lautet „zeige Autor(inn)en-Statistik“. Für mich bezog sich das auf die darunter befindliche Liste statt auf die „Andere“. Mit „wechsle zur Autor(inn)enstatistik“ wäre zweifelsfrei klar, dass es woanders hin geht.

                  Stimmt!
                  Dann hießen aber die beiden Links, die dasselbe bewirken, unterschiedlich. Denn auf der Hauptseite der Link heißt ja "Zeige Themenbereich-Statistik".

                  Sie bewirken nicht dasselbe.
                  Der eine öffnet das Statistik-div, der andere wechselt den Inhalt dieses Elements ;-p

                  Deshalb bin ich auch für eine zweifelsfreie Formulierung.

                  Überredet! ;-)

                  Wie hättet ihr es denn gerne?
                  "Zur XYZ-Statistik wechseln"
                  "Wechsel zur XYZ-Statistik"
                  oder ... ?

                  Gruß
                  Gunther

                  1. Om nah hoo pez nyeetz, Gunther!

                    Wie hättet ihr es denn gerne?
                    "Zur XYZ-Statistik wechseln"
                    "Wechsel zur XYZ-Statistik"
                    oder ... ?

                    „Wechsle zur XYZ-Statistik“

                    Matthias

                    --
                    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Notar und Notarzt.

                    1. Hallo

                      Wie hättet ihr es denn gerne?
                      "Zur XYZ-Statistik wechseln"
                      "Wechsel zur XYZ-Statistik"
                      oder ... ?

                      „Wechsle zur XYZ-Statistik“

                      dafür

                      Tschö, Auge

                      --
                      Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                      Terry Pratchett, "Wachen! Wachen!"
                      ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                      Veranstaltungsdatenbank Vdb 0.3
                      1. Hallo!

                        Wie hättet ihr es denn gerne?
                        "Zur XYZ-Statistik wechseln"
                        "Wechsel zur XYZ-Statistik"
                        oder ... ?

                        „Wechsle zur XYZ-Statistik“

                        dafür

                        Ja, schon erledigt! ;-)
                        Kommt mit dem nächsten Update.

                        Gruß
                        Gunther

    3. Meine Herren!

      Da das Skript keinerlei Zugriff auf den SELF-Server hat, sind alle diese Sachen natürlich browserspezifisch!

      Das heißt, dass der Reisenvorteil, den das Programm bisher hatte, dass man zu einem bestimmten Zeitpunkt an allen Geräten mit allen Browsern einen identischen Datenzustand hat, dahin ist? Sollte das so sein, ist das nichts für mich.

      Ich umgehe das Problem, indem ich auf allen meinen Endgeräten Chrome benutze und die automatische Synchronisierung nutze. Mit Firefox geht das meines Wissens nach auch. Vielleicht gibt es ja sogar Werkzeuge, die verschiedene Browser untereinander synchronisieren können.

      --
      “All right, then, I'll go to hell.” – Huck Finn
      1. Hallo

        Da das Skript keinerlei Zugriff auf den SELF-Server hat, sind alle diese Sachen natürlich browserspezifisch!

        Das heißt, dass der Reisenvorteil, …

        Das sollte natürlich ein Riesenvorteil sein, aber was soll's. Wenn ich von einem zum anderen Rechner „reise“, passt das auch.

        … den das Programm bisher hatte, dass man zu einem bestimmten Zeitpunkt an allen Geräten mit allen Browsern einen identischen Datenzustand hat, dahin ist? Sollte das so sein, ist das nichts für mich.

        Ich umgehe das Problem, indem ich auf allen meinen Endgeräten Chrome benutze und die automatische Synchronisierung nutze. Mit Firefox geht das meines Wissens nach auch. Vielleicht gibt es ja sogar Werkzeuge, die verschiedene Browser untereinander synchronisieren können.

        Vielleicht mag das ewig gestrig wirken, aber ich habe es über die letzten x Jahre [1], in denen hier die Registrierung möglich ist, als sehr angenehm empfunden, dass die Daten auf dem hiesigen Server blieben. Solche Dienste gab es damals auch nicht. Nun gibt es sie und ich finde es immer noch richtig, dass die Daten, die zu meiner Konfiguration dieses Forums gehören, hier bleiben. Ich brauche sie ja – von hier und da – auch nur für hier.

        Soweit ich lese, werden die Daten bei Firefox Sync verschlüsselt abgelegt (letzter Absatz des Abschnitts „Datenschutz“). Das geht bei Chrome optional auch (Abschnitt „Sie haben die Kontrolle über Ihre Daten.“), aber deswegen permanent bei Google eingeloggt zu bleiben, wo ich den Account sowieso nur wegen des Play Stores habe, wäre mir zu viel.

        [1] Irgendwann letztens hatten wir das Thema, seit wann es die Registrierung gibt, schon einmal. Die Zahl x habe ich bereits wieder erfolgreich verdrängt. Ich weiß aber, dass sie definitiv > 11 ist.

        Tschö, Auge

        --
        Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
        Terry Pratchett, "Wachen! Wachen!"
        ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
        Veranstaltungsdatenbank Vdb 0.3
    4. Om nah hoo pez nyeetz, Auge!

      Was ist, wenn ich das nicht will? Ich habe die Threads doch nicht aus Jux und Dallerei geschlossen, falls sie nicht sowieso geschlossen sein sollten, weil alle Postings gelesen sind. Oder verstehe ich dich nur einfach nicht?

      Ein Klick auf schließt, die entsprechenden Benutzereinstellungen vorausgesetzt, auch den kompletten Thread.

      Matthias

      --
      Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Gas und Gasthof.

      1. Hallo

        Was ist, wenn ich das nicht will? Ich habe die Threads doch nicht aus Jux und Dallerei geschlossen, falls sie nicht sowieso geschlossen sein sollten, weil alle Postings gelesen sind. Oder verstehe ich dich nur einfach nicht?

        Ein Klick auf schließt, die entsprechenden Benutzereinstellungen vorausgesetzt, auch den kompletten Thread.

        Ach, schau an. Wie müssen die lauten? Hier mal die meinen im vermutlich relevanten Abschnitt „Threads und Postings“:

        Sortierung der Threads: absteigend
        Sortierung der Postings: default
        Threads öffnen/schließen: per default öffnen
            Javascript zum Öffnen und Schließen von Threads benutzen
        Threads ein-/ausblenden: mittels Icon
            Dynamisches Javascript zum Ein-/Ausblenden benutzen
        Postings als gelesen markieren:
            Bereits besuchte Postings serverseitig als gelesen markieren
                Eigene Postings auch als gelesen markieren
                Javascript nutzen, um Threads als gelesen zu markieren
                    Mit 204 No Content beantworten

        Tschö, Auge

        --
        Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
        Terry Pratchett, "Wachen! Wachen!"
        ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
        Veranstaltungsdatenbank Vdb 0.3
        1. Om nah hoo pez nyeetz, Auge!

          Ach, schau an. Wie müssen die lauten? Hier mal die meinen im vermutlich relevanten Abschnitt „Threads und Postings“:

          Kein zusätzliches JS vorausgesetzt:

          • Threads öffnen/schließen: per default schließen*
          • Javascript nutzen, um Threads als gelesen zu markieren

          Falls du einen normalen Verweis nutzt, um Threads als gelesen zu markieren, erfolgt die Markierung erst beim nächsten Reload.

          Mit „Threads mit ungelesenen Postings automatisch öffnen“ sollte es auch keine Probleme geben.

          * beißt sich natürlich mit Gunthers Skript.

          Matthias

          --
          Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Kohl und Kohle.

          1. Om nah hoo pez nyeetz, Matthias!

            Ach, schau an. Wie müssen die lauten? Hier mal die meinen im vermutlich relevanten Abschnitt „Threads und Postings“:

            Kein zusätzliches JS vorausgesetzt:

            • Threads öffnen/schließen: per default schließen*

            Wieso sollte diese Option dafür erforderlich sein!?
            Bei mir funktioniert das auch ganz prima mit der Option "Threads öffnen/schließen: per default öffnen".

            • Javascript nutzen, um Threads als gelesen zu markieren

            Falls du einen normalen Verweis nutzt, um Threads als gelesen zu markieren, erfolgt die Markierung erst beim nächsten Reload.

            Mit „Threads mit ungelesenen Postings automatisch öffnen“ sollte es auch keine Probleme geben.

            Richtig, tut es auch nicht ...! ;-)

            * beißt sich natürlich mit Gunthers Skript.

            Wie gesagt, imho ist diese Einstellung nicht erforderlich. Somit "beißt" sich da auch nichts! :-P

            Gruß
            Gunther

            1. Om nah hoo pez nyeetz, Gunther!

              • Threads öffnen/schließen: per default schließen*
                Wieso sollte diese Option dafür erforderlich sein!?

              Wir reden von „Gelesen-Markierung klappt Thread zu“ und da ist die Option „Threads öffnen/schließen: per default öffnen“ kontraproduktiv.

              Matthias

              --
              Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Pol und Polizei.

              1. Om nah hoo pez nyeetz, Matthias !

                • Threads öffnen/schließen: per default schließen*
                  Wieso sollte diese Option dafür erforderlich sein!?

                Wir reden von „Gelesen-Markierung klappt Thread zu“

                Ah ja, stimmt (du bist bei "zuklappen" anstatt nur die "Gelesen-Markierung" zu meinen).
                Das ist natürlich unter dem Gesichtspunkt, dass es in diesem Thread um das JS-Skript etwas "kontraproduktiv" ...! :-P

                und da ist die Option „Threads öffnen/schließen: per default öffnen“ kontraproduktiv.

                Es ist nun mal so, dass sich das Skript um das auf- und zuklappen der Threads kümmert.
                Wert also, aus welchen Gründen auch immer, diese Einstellung verwenden möchte, der kann dann nicht gleichzeitig auch das JS-Skript verwenden - Punkt! ;-)

                Um bspw. neue Postings zu sehen, ist ja auch zwingend ein Reload der Seite erforderlich.
                Das heißt ja, wenn ich es richtig sehe, dann reden wir hier einzig von dem Punkt, dass Threads_ohne_ungelesene Postings "automatisch" zugeklappt werden, und das auch, wenn die Hauptseite nach dem Öffnen der ungelesenen Postings nicht neu geladen wird, richtig?

                Gruß
                Gunther

                1. Hallo

                  • Threads öffnen/schließen: per default schließen*
                    Wieso sollte diese Option dafür erforderlich sein!?

                  Wir reden von „Gelesen-Markierung klappt Thread zu“

                  Ah ja, stimmt (du bist bei "zuklappen" anstatt nur die "Gelesen-Markierung" zu meinen).
                  Das ist natürlich unter dem Gesichtspunkt, dass es in diesem Thread um das JS-Skript etwas "kontraproduktiv" ...! :-P

                  Ja, man kann hier offensichtlich „viel zu viel“ einstellen. Wobei es nicht viel zu viel ist, sondern vieles, was sich mit manch anderem beißt und damit selbst unter uns angeblich „Wissenden“™ Verwirrung stiftet.

                  Es ist nun mal so, dass sich das Skript um das auf- und zuklappen der Threads kümmert.
                  Wert also, aus welchen Gründen auch immer, diese Einstellung verwenden möchte, der kann dann nicht gleichzeitig auch das JS-Skript verwenden - Punkt! ;-)

                  Bei mir wird es darauf hinauslaufen. Ich habe mich zu sehr an das durch Molilys Skript herbeigeführte Verhalten gewöhnt. Deine Klappfunktion für den Forumskopf, die möchte ich nämlich behalten, werde ich mir raussuchen und in Molilys Skript einfügen. *Das* sollte ich noch selbst hinbekommen.

                  Um bspw. neue Postings zu sehen, ist ja auch zwingend ein Reload der Seite erforderlich.

                  Ich habe letztens ein Board gesehen (war ein WoltlabBB), bei dem unterhalb der Postings angezeigt wird, dass zwischen dem laden des Threads und jetzt (ein) weitere(s) Posting(s) eingegangen sind. Das ist in manchen Szenarien bestimmt praktisch, mich alten Knochen hat's aber eher verwirrt.

                  Das heißt ja, wenn ich es richtig sehe, dann reden wir hier einzig von dem Punkt, dass Threads_ohne_ungelesene Postings "automatisch" zugeklappt werden, und das auch, wenn die Hauptseite nach dem Öffnen der ungelesenen Postings nicht neu geladen wird, richtig?

                  Ja. Ja, das ist ein Spezialfall.

                  Tschö, Auge

                  --
                  Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                  Terry Pratchett, "Wachen! Wachen!"
                  ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                  Veranstaltungsdatenbank Vdb 0.3
          2. Hallo

            Ach, schau an. Wie müssen die lauten? Hier mal die meinen im vermutlich relevanten Abschnitt „Threads und Postings“:

            Kein zusätzliches JS vorausgesetzt:

            In welche Kategorie fällt das zusätzliche JS von Molily (http://forum.de.selfhtml.org/js/forum.js)?

            • Threads öffnen/schließen: per default schließen*
            • Javascript nutzen, um Threads als gelesen zu markieren

            So, wie es bei mir vor dem Test von Gunthers Skript eingestellt war.

            Falls du einen normalen Verweis nutzt, um Threads als gelesen zu markieren, erfolgt die Markierung erst beim nächsten Reload.

            Ich nutze zum alle-Postings-eines-Threads-als-gelesen-markieren das Häkchen hinter dem Eröffnungsposting. Allerdings hat der 'nen klassischen Eventhandler, funktioniert also mit JS.

            <a href="#" class="function-link-mark-visited" onclick="return visited(&quot;999999&quot;);" title="Thread als gelesen markieren"><img src="#" alt="Thread als gelesen markieren" height="12" width="12"></a>

            Tschö, Auge

            --
            Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
            Terry Pratchett, "Wachen! Wachen!"
            ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
            Veranstaltungsdatenbank Vdb 0.3
  5. Moin Gunther,

    ah, endlich. Gratuliere! :)

    LG,
     CK

  6. Lieber Gunther,

    ich habe das überarbeitete Script ausprobiert und wurde prompt mit einer Fehlermeldung begrüßt, die mich darüber informieren wollte, dass manche Einstellungen nun nicht mehr passen würden.

    So weit so gut. Überall "ändern" geklickt, Hauptseite lädt nun störungsfrei.

    Aber...

    Wenn ich einen Thread gelesen habe, bevorzuge ich, dass er nicht mehr aufgeklappt angezeigt wird, sondern geschlossen, es sei denn, es hätten sich mittlerweile neue und von mir noch ungelesene Beiträge eingefunden. Die zugehörige Einstellung mag das neue JavaScript aber nicht und blendet mir, nachdem ich die Einstellungen diesbezüglich wieder angepasst habe, erneut die Fehlerseite ein. Nach erneutem "ändern"-Button passen die Einstellungen zu den Befindlichkeiten des JavaScripts, aber anscheinend nicht mehr zu meinen, wie nachfolgender Screenshot zeigt:
    Screenshot
    Lieber hätte ich gerne das alte Verhalten beibehalten!

    Liebe Grüße,

    Felix Riesterer.

    --
    "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)
    1. Om nah hoo pez nyeetz, Felix Riesterer!

      Wenn ich einen Thread gelesen habe, bevorzuge ich, dass er nicht mehr aufgeklappt angezeigt wird, sondern geschlossen, es sei denn, es hätten sich mittlerweile neue und von mir noch ungelesene Beiträge eingefunden

      Lieber hätte ich gerne das alte Verhalten beibehalten!

      Die Hauptseite wird ja sowieso nur minütlich aktualisiert, man könnte sicher auch das Skript prüfen lassen, ob threads ungewünschterweise geöffnet sind.

      Matthias

      --
      Der Unterschied zwischen Java und JavaScript ist größer als der zwischen GUI und Guinan.

    2. Hallo Felix!

      ich habe das überarbeitete Script ausprobiert und wurde prompt mit einer Fehlermeldung begrüßt, die mich darüber informieren wollte, dass manche Einstellungen nun nicht mehr passen würden.

      So weit so gut. Überall "ändern" geklickt, Hauptseite lädt nun störungsfrei.

      Aber...

      Wenn ich einen Thread gelesen habe, bevorzuge ich, dass er nicht mehr aufgeklappt angezeigt wird, sondern geschlossen, es sei denn, es hätten sich mittlerweile neue und von mir noch ungelesene Beiträge eingefunden. Die zugehörige Einstellung mag das neue JavaScript aber nicht und blendet mir, nachdem ich die Einstellungen diesbezüglich wieder angepasst habe, erneut die Fehlerseite ein. Nach erneutem "ändern"-Button passen die Einstellungen zu den Befindlichkeiten des JavaScripts, aber anscheinend nicht mehr zu meinen, wie nachfolgender Screenshot zeigt:

      Also ..., kein Thread klappt von alleine zu, egal ob alle Beiträge gelesen wurden, oder nicht.
      Das Skript muss zuerst einmal eine Liste mit allen Thread-IDs im Browser anlegen, die zugeklappt werden sollen.

      Ich empfehle dazu folgende Vorgehensweise: https://forum.selfhtml.org/?t=218508&m=1504929

      Anschließend sollten alle Threads ohne "ungelesene Beiträge" zugeklappt sein (und automatisch wieder aufgeklappt, falls neue ungelesene Beiträge vorhanden sind, sofern du das Häkchen bei der  Option gesetzt hast).

      Ein einmal zugeklappter Thread, der aufgrund ungelesener Beiträge wieder aufgeklappt angezeigt wird, wird automatisch wieder zugeklappt, sobald alle Beiträge gelesen wurden (wenn er nicht zwischenzeitlich manuell wieder aufgeklappt wurde).

      Lieber hätte ich gerne das alte Verhalten beibehalten!

      Das birgt dasselbe (Performance)Problem, dass ich Auge schon erklärt habe, und ist der Grund, warum dieses Verhalten "nicht praktikabel" ist.

      Gruß
      Gunther

  7. Hallo werte Selfgemeinde!

    Auf "vielfachen Wunsch" hin, habe ich jetzt noch die Option "Threads per default schließen" mit in das Skript eingebaut.

    Wer schon die Vorgängerversion im Einsatz hat/ hatte, dem empfehle ich nach dem ersten Laden der Seite noch einmal einen Reload der Seite auszuführen.

    Die bisherige Version bleibt erstmal bis auf Weiteres verfügbar.

    Die neue Version findet ihr unter: http://pilz-privat.de/selfhtml/forum-1.1.js

    Ich hoffe, damit entspricht das Skript jetzt mehr euren Wünschen ...! ;-)

    Außerdem habe ich in der Version noch die folgenden Fehler gefixt, bzw. Änderungen vorgenommen:

    • "fachlich hilfreich" Bewertungen des Start-Postings werden jetzt auch erfasst
    • die Link-Texte zum wechseln von einer Statistik zur anderen wurden angepasst/ geändert

    Gruß
    Gunther

    1. hi Gunther,

      Die neue Version findet ihr unter: http://pilz-privat.de/selfhtml/forum-1.1.js

      Danke. Ich fragte mich, ob es nicht auch o.k. wäre, die ursprüngliche Datei zu ersetzen, oder für die, die es selbst entscheiden wollen eine .../forum-immer-up-to-date.js - version anzubieten. Dann braucht das nicht jeder in seinen Benutzereinstellungen zu ändern. Zumal man ja auch mal einen Thread dazu verpassen könnte ;-).

      Zudem frage ich mich, ob es schneller ginge, wenn man das Skript auf den selfhtml-Server packen könnte. Ich sehe halt immer unten im Browser "warten auf pilz-privat.de", das war bei molily auch schon so. Ist jetzt kein "Ding", nur so ein Idee ...;

      mfg

      tami

      1. Hallo tami!

        Die neue Version findet ihr unter: http://pilz-privat.de/selfhtml/forum-1.1.js

        Danke. Ich fragte mich, ob es nicht auch o.k. wäre, die ursprüngliche Datei zu ersetzen, oder für die, die es selbst entscheiden wollen eine .../forum-immer-up-to-date.js - version anzubieten. Dann braucht das nicht jeder in seinen Benutzereinstellungen zu ändern. Zumal man ja auch mal einen Thread dazu verpassen könnte ;-).

        Das ist ja nur jetzt während der "Beta-Phase" so!
        Wenn wir bei der endgültigen Version angekommen sind ...

        Zudem frage ich mich, ob es schneller ginge, wenn man das Skript auf den selfhtml-Server packen könnte. Ich sehe halt immer unten im Browser "warten auf pilz-privat.de", das war bei molily auch schon so. Ist jetzt kein "Ding", nur so ein Idee ...;

        ... wird es eine Datei geben, die dann auch direkt auf dem SELF-Server verfügbar ist (behaupte ich jetzt einfach mal).

        Aufgrund der schier unzähligen Kombinationsmöglichkeiten aus den Benutzereinstellungen, ist es für mich alleine nur sehr schwer bis gar nicht möglich, das Skript mit allen diesen Einstellungen zu testen. Deshalb brauche ich euch ...!

        Aktuell scheint auch noch der Wurm drin zu sein (in Version 1.1).
        Jedenfalls öffnet und schließt es bei mir die Threads nicht unbedingt so, wie es soll.
        Aber Dinge zu testen, die nur dann eine Rolle spielen, wenn es hier im Forum einen neuen Thread gibt, ist mitunter auch sehr zeitaufwendig.

        Gruß
        Gunther

        1. hi Gunther,

          Danke. Ich fragte mich, ob es nicht auch o.k. wäre, die ursprüngliche Datei zu ersetzen, oder für die, die es selbst entscheiden wollen eine .../forum-immer-up-to-date.js - version anzubieten. Dann braucht das nicht jeder in seinen Benutzereinstellungen zu ändern. Zumal man ja auch mal einen Thread dazu verpassen könnte ;-).

          Das ist ja nur jetzt während der "Beta-Phase" so!

          Ich dachte Beta-Versionsn heißen 0.??? ;-).

          Aktuell scheint auch noch der Wurm drin zu sein (in Version 1.1).
          Jedenfalls öffnet und schließt es bei mir die Threads nicht unbedingt so, wie es soll.
          Aber Dinge zu testen, die nur dann eine Rolle spielen, wenn es hier im Forum einen neuen Thread gibt, ist mitunter auch sehr zeitaufwendig.

          Jo! Weiter so ...;

          mfg

          tami

          1. Hallo tami!

            Das ist ja nur jetzt während der "Beta-Phase" so!

            Ich dachte Beta-Versionsn heißen 0.??? ;-).

            Dann denk' dir die "0." davor ...! :-P

            Aktuell scheint auch noch der Wurm drin zu sein (in Version 1.1).
            Jedenfalls öffnet und schließt es bei mir die Threads nicht unbedingt so, wie es soll.
            Aber Dinge zu testen, die nur dann eine Rolle spielen, wenn es hier im Forum einen neuen Thread gibt, ist mitunter auch sehr zeitaufwendig.

            Jo! Weiter so ...;

            Na klar - immer doch!

            Seit 11:05 Uhr sollte das o.g. Problem jetzt übrigens auch behoben sein.

            Es wäre daher nett, wenn du (und andere) bitte mal ein besonderes Augenmerk darauf legen könntest, ob neue Threads (nicht Postings!) auch tatsächlich automatisch geschlossen werden wenn sie gelesen wurden (dazu die beiden Optionen "Threads per default schließen" und "Threads mit ungelesenen Beiträgen automatisch öffnen" aktivieren)?

            Und ob es ansonsten noch zu irgendwelchen "unerwünschten Nebenwirkungen" kommt?

            Besten Dank!

            Gruß
            Gunther

            1. Hallo

              Es wäre daher nett, wenn du (und andere) bitte mal ein besonderes Augenmerk darauf legen könntest, ob neue Threads (nicht Postings!) auch tatsächlich automatisch geschlossen werden wenn sie gelesen wurden (dazu die beiden Optionen "Threads per default schließen" und "Threads mit ungelesenen Beiträgen automatisch öffnen" aktivieren)?

              Soeben einen neuen Thread detektiert, das Posting geöffnet und in der Hauptansicht das Posting als gelesen markiert vorgefunden. Das funktioniert also (FF 32.0.2, Win 7 Prof).

              Und ob es ansonsten noch zu irgendwelchen "unerwünschten Nebenwirkungen" kommt?

              Ja, da ich nun dein User-CSS statt meinem mit den diversen Ausblendungen von Bereichen nutze, ist der Forenkopf auf einem Full-HD-Display mit Browser im Vollbildmodus – man soll es nicht für möglich halten – tatsächlich höher als der Viewport des Browsers (etwa 890px).

              Tschö, Auge

              --
              Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
              Terry Pratchett, "Wachen! Wachen!"
              ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
              Veranstaltungsdatenbank Vdb 0.3
              1. Om nah hoo pez nyeetz, Auge!

                Ja, da ich nun dein User-CSS statt meinem mit den diversen Ausblendungen von Bereichen nutze, ist der Forenkopf auf einem Full-HD-Display mit Browser im Vollbildmodus – man soll es nicht für möglich halten – tatsächlich höher als der Viewport des Browsers (etwa 890px).

                Schon die kleinen ▼ entdeckt?

                Matthias

                --
                Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Mark und Markise.

                1. Hallo

                  Ja, da ich nun dein User-CSS statt meinem mit den diversen Ausblendungen von Bereichen nutze, ist der Forenkopf auf einem Full-HD-Display mit Browser im Vollbildmodus – man soll es nicht für möglich halten – tatsächlich höher als der Viewport des Browsers (etwa 890px).

                  Schon die kleinen ▼ entdeckt?

                  Ja, latürnich.

                  Das zuklappen von Kästen im Seitenkopf könnte mir ja schon gefallen

                  Das ist auch nicht bierernst gemeint. Gunther hat nach unerwünschten Nebenwirkungen gefragt und diese ist, wenn auch durch mich selbst behebbar, sowohl eine Nebenwirkung als zu allem Überfluss auch unerwünscht. ;-)

                  Tschö, Auge

                  --
                  Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                  Terry Pratchett, "Wachen! Wachen!"
                  ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                  Veranstaltungsdatenbank Vdb 0.3
                  1. Hallo Auge!

                    Das ist auch nicht bierernst gemeint. Gunther hat nach unerwünschten Nebenwirkungen gefragt und diese ist, wenn auch durch mich selbst behebbar, sowohl eine Nebenwirkung als zu allem Überfluss auch unerwünscht. ;-)

                    Deshalb gibt es ja auch den "Aktualisieren" Button, damit du http://forum.de.selfhtml.org/my/#aktuellenachrichten nutzen kannst ...! ;-)

                    Ja, da ich nun dein User-CSS statt meinem mit den diversen Ausblendungen von Bereichen nutze, ist der Forenkopf auf einem Full-HD-Display mit Browser im Vollbildmodus – man soll es nicht für möglich halten – tatsächlich höher als der Viewport des Browsers (etwa 890px).

                    Schon die kleinen ▼ entdeckt?

                    Ja, latürnich.

                    Das zuklappen von Kästen im Seitenkopf könnte mir ja schon gefallen

                    Und weil mir der Kopfbereich auch "viel zu hoch" ist, die Filter-Anzeigen und (zusätzlichen) Links aber auch irgendwo hinmüssen, gibt es eben die Möglichkeit, bestimmte Bereiche (vornehmlich die, die man imho nicht ständig "braucht") einzuklappen.

                    Wenn du

                    • QUICKLINKS
                    • OPTIONEN
                    • AKTUELLE MITTEILUNGEN
                      zuklappst, dann haben die 3 Bereiche im Kopfbereich (mit LIVE-FILTER) bei deiner Viewportgröße nämlich in etwa die gleiche Höhe ...! ;-)

                    Gruß
                    Gunther

                    1. Hallo

                      Das ist auch nicht bierernst gemeint. Gunther hat nach unerwünschten Nebenwirkungen gefragt und diese ist, wenn auch durch mich selbst behebbar, sowohl eine Nebenwirkung als zu allem Überfluss auch unerwünscht. ;-)

                      Deshalb gibt es ja auch den "Aktualisieren" Button, damit du http://forum.de.selfhtml.org/my/#aktuellenachrichten nutzen kannst ...! ;-)

                      … wie es bei mir auch als Startseite eingetragen ist …

                      Ja, da ich nun dein User-CSS statt meinem mit den diversen Ausblendungen von Bereichen nutze, ist der Forenkopf auf einem Full-HD-Display mit Browser im Vollbildmodus – man soll es nicht für möglich halten – tatsächlich höher als der Viewport des Browsers (etwa 890px).

                      Schon die kleinen ▼ entdeckt?

                      Ja, latürnich.

                      Das zuklappen von Kästen im Seitenkopf könnte mir ja schon gefallen

                      Und weil mir der Kopfbereich auch "viel zu hoch" ist, die Filter-Anzeigen und (zusätzlichen) Links aber auch irgendwo hinmüssen, gibt es eben die Möglichkeit, bestimmte Bereiche (vornehmlich die, die man imho nicht ständig "braucht") einzuklappen.

                      Wenn du

                      • QUICKLINKS
                      • OPTIONEN
                      • AKTUELLE MITTEILUNGEN
                        zuklappst, dann haben die 3 Bereiche im Kopfbereich (mit LIVE-FILTER) bei deiner Viewportgröße nämlich in etwa die gleiche Höhe ...! ;-)

                      Joah, das kommt ungefähr hin. Mit meinem User-CSS sähe das noch etwas anders aus. Links habe ich einige Links und in der Mitte und rechts ganze Blöcke ausgeblendet. Dafür wird bei meinem CSS der Kasten angezeigt, der die Zeitpunkte des letzten und nächsten Ladens der Hauptseite anzeigt.

                      Tschö, Auge

                      --
                      Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                      Terry Pratchett, "Wachen! Wachen!"
                      ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                      Veranstaltungsdatenbank Vdb 0.3
                      1. Hallo Auge!

                        Und weil mir der Kopfbereich auch "viel zu hoch" ist, die Filter-Anzeigen und (zusätzlichen) Links aber auch irgendwo hinmüssen, gibt es eben die Möglichkeit, bestimmte Bereiche (vornehmlich die, die man imho nicht ständig "braucht") einzuklappen.

                        Wenn du

                        • QUICKLINKS
                        • OPTIONEN
                        • AKTUELLE MITTEILUNGEN
                          zuklappst, dann haben die 3 Bereiche im Kopfbereich (mit LIVE-FILTER) bei deiner Viewportgröße nämlich in etwa die gleiche Höhe ...! ;-)

                        Joah, das kommt ungefähr hin. Mit meinem User-CSS sähe das noch etwas anders aus. Links habe ich einige Links und in der Mitte und rechts ganze Blöcke ausgeblendet. Dafür wird bei meinem CSS der Kasten angezeigt, der die Zeitpunkte des letzten und nächsten Ladens der Hauptseite anzeigt.

                        Ja, du meinst http://wiki.selfhtml.org/wiki/SELFHTML:Forum/Tipps_und_Tricks#Zeit_bis_zum_Neuladen_anzeigen.

                        Das kannst du ja auch weiterhin nutzen. Entweder temporär als "Inline-CSS" (Benutzer-Einstellungen), oder du packst das für das Skript erforderliche CSS mit in deine Datei.

                        Aber falls das Skript "genügend Anklang findet", wird Matthias ggf. so nett sein, und das CSS wieder mit in das Foren-CSS integrieren, sodass keine extra Datei mehr eingebunden werden muss. :-)

                        Gruß
                        Gunther

            2. hi Gunther,

              Und ob es ansonsten noch zu irgendwelchen "unerwünschten Nebenwirkungen" kommt?

              wenn nicht alle das völlig sinnlos fänden, hätte ich u.u. lust (habe grade schon angefangen, aber das ist ja doch recht mühsam), da script komplett jslint-konform zu "kriegen. macht natürlich nur dann sinn, wenn da grade mal ne atempause ist, und danach dann an der konformen version weitergearbeitet würde. wie ich es jetzt sehe, betrifft das in den ersten 60 zeilen:

              • umlaute
              • einrückungen
              • zusammenfassung der var-statements
              • prüfung auf hasOwnProperty bei dem property in object.

              ist vielleicht auch blödsinn, bei fast 2000 zeilen code, ich bin jetzt erst bei 4% angekommen, als ich es eben mal probiert habe. finde aber aus didaktisch-pädagogischen gründen durchaus einen reiz darin, auch als "lehrbeispiel" für selfhtml ...; aber ich rieche schon, dass es dafür "um die ohren" gibt ...;

              mfg

              tami

              1. Meine Herren!

                wenn nicht alle das völlig sinnlos fänden, hätte ich u.u. lust (habe grade schon angefangen, aber das ist ja doch recht mühsam), da script komplett jslint-konform zu "kriegen.

                Das hat meine Befürwortung.

                macht natürlich nur dann sinn, wenn da grade mal ne atempause ist, und danach dann an der konformen version weitergearbeitet würde.

                Da fällt mir ein: Gunnar, du hast dich noch nicht zu meinem Vorschlag über Github geäußert. Darf/Soll ich das als Desinteresse werten?

                --
                “All right, then, I'll go to hell.” – Huck Finn
                1. Hallo

                  Da fällt mir ein: Gunnar, du hast dich noch nicht zu meinem Vorschlag über Github geäußert. …

                  schon wieder dafür

                  Tschö, Auge

                  --
                  Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                  Terry Pratchett, "Wachen! Wachen!"
                  ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                  Veranstaltungsdatenbank Vdb 0.3
              2. Om nah hoo pez nyeetz, tami!

                finde aber aus didaktisch-pädagogischen gründen durchaus einen reiz darin, auch als "lehrbeispiel" für selfhtml ...; aber ich rieche schon, dass es dafür "um die ohren" gibt ...;

                Warum sollte es?

                SELFHTML hat ganz klar einen Bildungsauftrag. Und dazu zählt auch ein sauber eingerückter Code. In den Wikibeispielen achten wir sehr darauf, bei den anderen Sachen ist es nicht immer möglich.

                Matthias

                --
                Der Unterschied zwischen Java und JavaScript ist größer als der zwischen TeX und Textmarker.

                1. hi Matthias,

                  Om nah hoo pez nyeetz, tami!

                  finde aber aus didaktisch-pädagogischen gründen durchaus einen reiz darin, auch als "lehrbeispiel" für selfhtml ...; aber ich rieche schon, dass es dafür "um die ohren" gibt ...;

                  Warum sollte es?

                  SELFHTML hat ganz klar einen Bildungsauftrag. Und dazu zählt auch ein sauber eingerückter Code. In den Wikibeispielen achten wir sehr darauf, bei den anderen Sachen ist es nicht immer möglich.

                  Also ich bin bei Zeile 120. Es ist auch nicht nur die Einrückung, wie ich schrieb. typeof soll weg, das war das eine mal, wo ich in den Code eingeriffen habe.

                  "test.js:122:17:Unexpected 'typeof'. Use '===' to compare directly with undefined."

                  Und die dreifachen Gleichheitszeichen:

                  configChecked === 'false'
                  mit
                  configChecked = sessionStorage.getItem('config_checked');

                  ich gehe davon aus, das .getItem einen String in dem Fall zurück gibt.

                  "test.js:125:67:Expected '===' and instead saw '=='."

                  Für ein Gefühl, was jslint mir ausspuckt:

                  C:\Program Files\nodejs\node.exe C:\jslint-reporter\wrapper.js test.js

                  test.js:127:25:Combine this with the previous 'var' statement.
                  test.js:128:23:Expected exactly one space between 'if' and '('.
                  test.js:129:29:Combine this with the previous 'var' statement.
                  test.js:130:29:Combine this with the previous 'var' statement.
                  test.js:131:27:Expected exactly one space between 'if' and '('.
                  test.js:135:25:Unnecessary 'else' after disruption.
                  test.js:136:29:Expected 'sessionStorage' at column 33, not column 29.
                  test.js:137:25:Expected '}' at column 29, not column 25.
                  test.js:140:16:Unexpected character '(space)'.
                  test.js:145:19:Expected exactly one space between 'if' and '('.
                  test.js:145:49:Expected '{' and instead saw 'Storage'.
                  test.js:145:49:Stopping. (7% scanned).

                  Also ja: über 50% sind Einrückungen, es sind aber auch fehlende Semikola nach Funktionsbeendigungen, fehlende Blanks (und zuviele Blanks hinter einem Semikolon), Zusammenfassung der var-Statements am Anfang (das ist etwas mühselig, die alle da oben reinzuschreiben ...).

                  Ich paste hier mal die ersten 172 Zeilen jslint-konform und sehe grade, dass er mir einen Fehler gibt, den ich nicht zuordnen kann:

                  test.js:116:61:Uninitialized 'threads_open'.
                  test.js:116:75:Uninitialized 'Config'.

                  beide mit "undefined" zu initialisieren ist blödsinn, dass will "er" nicht:

                  test.js:116:74:It is not necessary to initialize 'threads_open' to 'undefined'.

                  ich hoffe zudem dass:
                  test.js:148:37:['HighlightVisitedPostings'] is better written in dot notation.
                  test.js:148:91:['HighlightOwnPostings'] is better written in dot notation.

                  mit dot notation auch "funzt":

                  if (Config.Settings.HighlightVisitedPostings !== 'yes' || Config.Settings.HighlightOwnPostings !== 'yes') {

                  Ansonsten hier die ersten 172 Zeilen (inkl. o.g. Fehler mit nichtinitialisierten Variablen);

                    
                  /*jslint browser : true, devel: true*/  
                  /*!  
                  JavaScript fuer die benutzerspezifische Ansicht des SELFHTML-Forums (http://forum.de.selfhtml.org/)  
                  Author: Mathias Schaefer (molily)  
                  Aenderungen & Ergaenzungen: Gunther Pilz (Gunther)  
                  Lizenz: MIT License  
                  */  
                    
                  (function () {  
                    
                      'use strict';  
                    
                  // ####################################################################################  
                    
                  // Check browser support  
                    
                      var  
                          div = document.createElement('div'),  
                          supported =  
                          div.querySelector && div.querySelectorAll &&  
                          div.classList && div.classList.contains &&  
                          div.textContent === '' &&  
                          div.addEventListener &&  
                          window.sessionStorage &&  
                          window.localStorage &&  
                          window.getComputedStyle &&  
                          window.XMLHttpRequest &&  
                          Function.prototype.bind,  
                          firstVisit = false,  
                          lastVisit = sessionStorage.getItem('session_start'),  
                          lastReload = sessionStorage.getItem('last_reload'),  
                          forEach, escapeHTML, slice, timeout, clearIntervals, getLength, Modules;  
                    
                      if (!supported) {  
                          if (window.console && console.error) {  
                              console.error('JavaScript-Erweitungen: Sie verwenden einen nicht unterstuetzten Browser. Bitte verwenden Sie eine aktuelle Browserversion.');  
                          }  
                          return;  
                      }  
                      div = undefined;  
                    
                      if (!lastVisit) {  
                          //lastVisit = Date.now();  
                          lastVisit = localStorage.getItem('logged_out');  
                          if (!lastVisit) {  
                              lastVisit = Date.now();  
                          }  
                          localStorage.setItem('last_visit', lastVisit);  
                          sessionStorage.setItem('session_start', Date.now());  
                          sessionStorage.setItem('config_checked', 'false');  
                          firstVisit = true;  
                      } else {  
                          lastVisit = localStorage.getItem('last_visit');  
                      }  
                    
                      if (!lastReload) {  
                          lastReload = lastVisit;  
                      }  
                    
                      // ####################################################################################  
                    
                      // Helfer  
                    
                      forEach = function (object, func) {  
                          var property;  
                          for (property in object) {  
                              if (object.hasOwnProperty(property)) {  
                                  func.call(object, property, object[property]);  
                              }  
                          }  
                      };  
                    
                      escapeHTML = function (string) {  
                          return string  
                              .replace(/&/g, '&amp;')  
                              .replace(/</g, '&lt;')  
                              .replace(/>/g, '&lt;')  
                              .replace(/'/g, '&quot;')  
                              .replace(/'/g, '&#39;');  
                      };  
                    
                      slice = Array.prototype.slice;  
                    
                      if (!Array.from) {  
                          Array.from = function (list) {  
                              return slice.call(list);  
                          };  
                      }  
                    
                      timeout = function (id) {  
                          window.clearTimeout(id);  
                      };  
                    
                      clearIntervals = function (id) {  
                          window.clearInterval(id);  
                      };  
                    
                      getLength = function (arr) {  
                          var len = arr.length;  
                          console.log('Config.activeXMLHttpRequests.length: ' + len);  
                          return len;  
                      };  
                      // ####################################################################################  
                    
                      // Modulverwaltung  
                    
                      Modules = {};  
                    
                      Modules.queue = [];  
                    
                      Modules.add = function (module) {  
                          Modules.queue.push(module);  
                      };  
                    
                      Modules.init = function () {  
                          var configMismatch = false, configChecked, root, a, threads_open, Config, tmp, ConfigDialog, ret;  
                          if (document.body.id === 'selfforum-hauptseite') {  
                              configChecked = sessionStorage.getItem('config_checked');  
                              root = document.getElementById('root');  
                              a = root.querySelector('a');  
                    
                              if ((threads_open === undefined || threads_open === false) || !a || !a.onclick) {  
                                  configMismatch = true;  
                              } else if (firstVisit || !configChecked || configChecked === 'false') {  
                                  Config.Check('Name', true);  
                                  if (!Config.Settings.Name) {  
                                      tmp = sessionStorage.getItem('name');  
                                      if (!tmp) {  
                                          ConfigDialog = 'Du hast keinen (Posting)Namen angegeben!\nWillst du jetzt die Benutzer-Einstellungen aufrufen,\num einen Namen einzugeben?';  
                                          ret = window.confirm(ConfigDialog);  
                                          if (ret) {  
                                              window.location = 'http://forum.de.selfhtml.org/cgi-bin/user/fo_userconf#neuepostings';  
                                              return;  
                                          }  
                                          sessionStorage.setItem('name', '');  
                                      }  
                                  }  
                    
                                  sessionStorage.setItem('name', Config.Settings.Name);  
                                  Config.Check('HighlightVisitedPostings', true);  
                                  Config.Check('HighlightOwnPostings', true);  
                                  Config.Check('SortThreads', true);  
                                  if (Config.Settings.SortThreads) {  
                                      Storage.setValue('thread_sort', Config.Settings.SortThreads);  
                                  } else {  
                                      Storage.setValue('thread_sort', 'newestfirst');  
                                  }  
                                  if (Config.Settings.HighlightVisitedPostings !== 'yes' || Config.Settings.HighlightOwnPostings !== 'yes') {  
                                      configMismatch = true;  
                                  } else {  
                                      sessionStorage.setItem('config_checked', 'true');  
                                  }  
                              }  
                    
                          }  
                          if (!configMismatch) {  
                              Modules.queue.forEach(function (module) {  
                                  if (module.documentType === 'all' || document.body.id === 'selfforum-' + module.documentType) {  
                                      module.init();  
                                  }  
                              });  
                          } else {  
                              Config.Show('mismatch');  
                          }  
                      };  
                    
                      document.addEventListener('DOMContentLoaded', Modules.init);  
                    
                      // ####################################################################################  
                    
                      // Hauptobjekt mit Caches  
                    
                  
                  

                  Matthias

                  mfg

                  tami

                  1. hi tami,

                    test.js:116:61:Uninitialized 'threads_open'.

                    threads_open taucht m.e. überhaupt nur dreimal auf, in der von mir vorgenommenen erwähnung bei den vars und dann in der funktion:

                    if ((threads_open === undefined || threads_open === false) || !a || !a.onclick) {

                    das kann also komplett raus.

                    test.js:116:75:Uninitialized 'Config'.

                    das macht wohl keinen Sinn, das in der Funktion Modules.init als var zu initilisieren.

                    var Config = {};
                    in Zeile 1433 bei mir gehört einfach nach ganz oben in die Variableninitialisierung, würde ich meinen ...;

                    mfg

                    tami

                    1. Hallo tami!

                      test.js:116:61:Uninitialized 'threads_open'.

                      threads_open taucht m.e. überhaupt nur dreimal auf, in der von mir vorgenommenen erwähnung bei den vars und dann in der funktion:

                      if ((threads_open === undefined || threads_open === false) || !a || !a.onclick) {

                      das kann also komplett raus.

                      Sieht so aus ...!
                      Das ist ein vergessener Rest von einem früheren Ansatz, der nach Änderung an anderer Stelle nicht mehr erforderlich ist.

                      test.js:116:75:Uninitialized 'Config'.

                      das macht wohl keinen Sinn, das in der Funktion Modules.init als var zu initilisieren.

                      var Config = {};
                      in Zeile 1433 bei mir gehört einfach nach ganz oben in die Variableninitialisierung, würde ich meinen ...;

                      Würde ich nicht meinen ..., zumindest was die "Übersichtlichkeit" anbelangt.
                      Das ganze Skript besteht ja aus einer einzigen Funktion. Und molily hat einzelne "Module" erstellt, die erst in einen Queue gesteckt werden, und wenn das DOMContentLoaded Ereignis gefeuert hat, initialisiert und ausgeführt werden.

                      Der Fehler mit 'Config' rührt aktuell noch daher, dass ich im Falle einer "fehlerhaften Konfiguration" (in den Benutzer-Einstellungen), diese Initialisierung und Ausführung verhindern möchte. Im Moment verwende ich da aber schon Teile von dem Config-Modul, die halt zu diesem Zeitpunkt noch nicht initialisiert sind.

                      Aber das bringe ich noch alles in Ordnung. Deshalb macht es imho im Augenblick wenig Sinn, jetzt schon hinzugehen, und das Skript "auf zu hübschen". It's still work in progress ..., oder mit anderen Worten, wir befinden uns ja noch mitten in der "Testphase" ...! ;-)

                      Gruß
                      Gunther

                      1. hi Gunther,

                        Aber das bringe ich noch alles in Ordnung. Deshalb macht es imho im Augenblick wenig Sinn,

                        es ist kein aufhübschen.

                        mfg

                        tami

              3. Hallo tami!

                wenn nicht alle das völlig sinnlos fänden, hätte ich u.u. lust (habe grade schon angefangen, aber das ist ja doch recht mühsam), da script komplett jslint-konform zu "kriegen. macht natürlich nur dann sinn, wenn da grade mal ne atempause ist, und danach dann an der konformen version weitergearbeitet würde. wie ich es jetzt sehe, betrifft das in den ersten 60 zeilen:

                • umlaute
                • einrückungen
                • zusammenfassung der var-statements
                • prüfung auf hasOwnProperty bei dem property in object.

                ist vielleicht auch blödsinn, bei fast 2000 zeilen code, ich bin jetzt erst bei 4% angekommen, als ich es eben mal probiert habe. finde aber aus didaktisch-pädagogischen gründen durchaus einen reiz darin, auch als "lehrbeispiel" für selfhtml ...;

                Dafür dann ausgerechnet ein von mir "vermurxtes" Skript zu nehmen ...! :-P
                Ich bin kein "Javascript'ler" und dann auch noch ohne jQuery.

                Ohne molilys sehr "solides Grundgerüst", wäre ich keinen Meter weit gekommen.

                Aber du solltest vlt. besser warten, bis wir sozusagen die endgültige Version stehen haben (mir schweben da noch ein paar kleine Änderungen/ Ergänzungen vor). ;-)

                Und ggf. reicht ja auch JSHint statt JSLint?

                Die doppelten Variablen Deklarationen räume ich bei der Gelegenheit gleich noch mit auf ...!

                Gruß
                Gunther

                1. hi Gunther,

                  wenn nicht alle das völlig sinnlos fänden, hätte ich u.u. lust (habe grade schon angefangen, aber das ist ja doch recht mühsam), da script komplett jslint-konform zu "kriegen. macht natürlich nur dann sinn, wenn da grade mal ne atempause ist, und danach dann an der konformen version weitergearbeitet würde. wie ich es jetzt sehe, betrifft das in den ersten 60 zeilen:

                  • umlaute
                  • einrückungen
                  • zusammenfassung der var-statements
                  • prüfung auf hasOwnProperty bei dem property in object.

                  ist vielleicht auch blödsinn, bei fast 2000 zeilen code, ich bin jetzt erst bei 4% angekommen, als ich es eben mal probiert habe. finde aber aus didaktisch-pädagogischen gründen durchaus einen reiz darin, auch als "lehrbeispiel" für selfhtml ...;

                  Dafür dann ausgerechnet ein von mir "vermurxtes" Skript zu nehmen ...! :-P
                  Ich bin kein "Javascript'ler" und dann auch noch ohne jQuery.

                  Ohne molilys sehr "solides Grundgerüst", wäre ich keinen Meter weit gekommen.

                  Aber du solltest vlt. besser warten, bis wir sozusagen die endgültige Version stehen haben (mir schweben da noch ein paar kleine Änderungen/ Ergänzungen vor). ;-)

                  Und ggf. reicht ja auch JSHint statt JSLint?

                  Also wenn es nach mir ginge, dann würde ich das "Original" nehmen. Habe ja grade die ersten 172 Zeilen gepostet. Würde jetzt erstmal sowieso nix machen weiter, war nur ein Testlauf und mal gucken, wie die Resonanz so ist. Geht aber eigentlich dann doch ganz fix. Habe es mit in meine SciTE so eingerichtet, dass er mit mit F5 das jslint ausspuckt und mit F4 springe ich dann zum ersten "Fehler", den er mir angibt.

                  Einrückungen sind ja schnell beseitigt (keine Tabs, 4 Blanks Standard-Indentation). Die vars will "er" immer all zusammen am Funktionsanfang haben, kommasepariert, egal, ob sie da initialisiert werden oder nicht. Wie ich aber grade sehe, besteht er schon darauf, dass eine var dann überhaupt initialisiert wird, bevor sie gegen "undefined" oder ähnliches getestet wird, was ja auch sinnvoll ist ...;

                  mfg

                  tami

                2. hi Gunther,

                  wenn nicht alle das völlig sinnlos fänden, hätte ich u.u. lust (habe grade schon angefangen, aber das ist ja doch recht mühsam), da script komplett jslint-konform zu "kriegen. macht natürlich nur dann sinn, wenn da grade mal ne atempause ist, und danach dann an der konformen version weitergearbeitet würde. wie ich es jetzt sehe, betrifft das in den ersten 60 zeilen:

                  • umlaute
                  • einrückungen
                  • zusammenfassung der var-statements
                  • prüfung auf hasOwnProperty bei dem property in object.

                  ist vielleicht auch blödsinn, bei fast 2000 zeilen code, ich bin jetzt erst bei 4% angekommen, als ich es eben mal probiert habe. finde aber aus didaktisch-pädagogischen gründen durchaus einen reiz darin, auch als "lehrbeispiel" für selfhtml ...;

                  Dafür dann ausgerechnet ein von mir "vermurxtes" Skript zu nehmen ...! :-P

                  naja, müsste eigentlich heißen "gerade weil ..."

                  Ich bin kein "Javascript'ler" und dann auch noch ohne jQuery.

                  Ohne molilys sehr "solides Grundgerüst", wäre ich keinen Meter weit gekommen.

                  naja, es wird ja m.e. endlich mal zeit, dass hier gemeinsame projekte angegangen werden. an denen jeder mitarbeiten kann, der grade mal 10 min. investieren möchte. hin und wieder ...;

                  Aber du solltest vlt. besser warten, bis wir sozusagen die endgültige Version stehen haben (mir schweben da noch ein paar kleine Änderungen/ Ergänzungen vor). ;-)

                  jslint ist ja zur fehlervermeidung beim programmieren gedacht. und auch zur einfacheren fehlerfindung. insofern ist es eigentlich quatsch, das script danach einfach nur "optisch aufzuhübschen". der "korrekte" weg wäre/ist, gleich beim "proggen" als erstes gegen jslint zu testen. danach ist der code zumindest 1: übersichtlich (und zwar dass es übersichtlicher nicht geht 2: gleichförmig (s. 1) 3: ein paar grundfehler sind garnicht erst gemacht worden.

                  das wäre der korrekte unterbau für die eigentliche arbeit ...;

                  mfg

                  tami

                  1. Hallo tami!

                    wenn nicht alle das völlig sinnlos fänden, hätte ich u.u. lust (habe grade schon angefangen, aber das ist ja doch recht mühsam), da script komplett jslint-konform zu "kriegen. macht natürlich nur dann sinn, wenn da grade mal ne atempause ist, und danach dann an der konformen version weitergearbeitet würde. wie ich es jetzt sehe, betrifft das in den ersten 60 zeilen:

                    • umlaute
                    • einrückungen
                    • zusammenfassung der var-statements
                    • prüfung auf hasOwnProperty bei dem property in object.

                    ist vielleicht auch blödsinn, bei fast 2000 zeilen code, ich bin jetzt erst bei 4% angekommen, als ich es eben mal probiert habe. finde aber aus didaktisch-pädagogischen gründen durchaus einen reiz darin, auch als "lehrbeispiel" für selfhtml ...;

                    Dafür dann ausgerechnet ein von mir "vermurxtes" Skript zu nehmen ...! :-P

                    naja, müsste eigentlich heißen "gerade weil ..."

                    Ich bin kein "Javascript'ler" und dann auch noch ohne jQuery.

                    Ohne molilys sehr "solides Grundgerüst", wäre ich keinen Meter weit gekommen.

                    naja, es wird ja m.e. endlich mal zeit, dass hier gemeinsame projekte angegangen werden. an denen jeder mitarbeiten kann, der grade mal 10 min. investieren möchte. hin und wieder ...;

                    Naja ..., ich sehe da immer eine gewisse Schwierigkeit, wenn anfangs jeder seine eigenen Ideen hat ...!

                    IMHO auch häufig ein Grund, warum viele Projekte zumindest zu Beginn nur von einer Person realisiert werden.
                    Wenn dann erstmal eine gewisse "Richtung" vorgegeben ist, finden sich dann manchmal Leute, die das Projekt mit weiterbringen/ -entwicklen ..., bis es dann irgendwann den ersten Fork gibt (weil man sich doch über die Richtung nicht mehr einig ist). ;-)

                    Das ist jetzt nicht auf das Skript hier bezogen.
                    Und außerdem steht es ja jedem frei, auf dessen Grundlage entweder seine "eigene Variante", bzw. Änderungen/ Ergänzungen für die Allgemeinheit zu erstellen.

                    Wenn (falls) das derzeitige Skript dann quasi mal fertig ist, wäre es sowieso höchst angebracht, dass da mal ein Javascript-Könner drüber guckt, um die Performance zu optimieren.

                    Aber du solltest vlt. besser warten, bis wir sozusagen die endgültige Version stehen haben (mir schweben da noch ein paar kleine Änderungen/ Ergänzungen vor). ;-)

                    jslint ist ja zur fehlervermeidung beim programmieren gedacht. und auch zur einfacheren fehlerfindung. insofern ist es eigentlich quatsch, das script danach einfach nur "optisch aufzuhübschen".

                    ACK

                    der "korrekte" weg wäre/ist, gleich beim "proggen" als erstes gegen jslint zu testen. danach ist der code zumindest 1: übersichtlich (und zwar dass es übersichtlicher nicht geht 2: gleichförmig (s. 1) 3: ein paar grundfehler sind garnicht erst gemacht worden.

                    das wäre der korrekte unterbau für die eigentliche arbeit ...;

                    Was in diesem Fall etwas schwierig gewesen wäre, da der eigentliche Unterbau ja schon vorhanden war! :-P

                    Und ehrlich gesagt wage ich auch den "Sinn" in einigen Bereichen zu bezweifeln.
                    So ist es in dem Editor (Notepad++), den ich verwende, ausgesprochen lästig und umständlich Leerzeichen anstelle von Tabs zu verwenden. Das kann man bei Bedarf für eine "Anguck-Version" binnen von Sekunden ändern.

                    Überhaupt jagst du doch die fertige Version hinterher durch einen JS-Minimizer, um die Dateigröße zu minimieren, bevor du sie auf den Server hochlädst - und tschüsss ihr schönen Leerzeichen und Einrückungen! :-P

                    Genauso die Tabulatorbreite/ Anzahl Leerzeichen. Und ob man zwischen einem 'if' und der nachfolgenden Klammer ein Leerzeichen macht oder nicht, sehe ich auch eher im Bereich der "persönlichen Vorlieben/ Gewohnheiten" angesiedelt, als dass das "eine feste Regel" wäre.

                    Wie gesagt, alles was das "rein optische Feintuning" anbelangt, kann man mit einem entsprechenden Editor innerhalb von ein paar Minuten so zurechtmachen, wie man es haben möchte.

                    Ich stimme dir insofern zu, als dass wenn man ein Skript als Anschauungsbeispiel verwenden möchte, dieses auch entsprechend "sauber" geschrieben/ programmiert sein sollte. Das war aber nicht mein Plan! ;-)

                    Ich sehe das in diesem Fall eher pragmatisch: Solange es das macht, was es soll, ohne dabei irgendwelche Fehler auszuspucken, ist das (mein) Ziel erreicht. :-)

                    Hinzukommt, dass ich anfangs weder einen Plan von molilys Skript, noch von der Forensoftware hatte, und auch keinen vorher feststehenden Plan, was am Ende herauskommen sollte.

                    Also hab' ich Stück für Stück, oder Idee für Idee geguckt, ob ich diese "eingebaut" kriege.
                    Und da das so manches Mal mit "Trial & Error" verbunden ist, hat mich "suabere Programmierung" zumindest nicht primär interessiert. Da ist Copy & Paste eben häufig erstmal der schnellere Weg ...(daher bspw. die mehrfachen Deklarationen)! ;-)

                    Gruß
                    Gunther

                    1. hi Gunther,

                      ich weiß.

                      mfg

                      tami

          2. Meine Herren!

            Das ist ja nur jetzt während der "Beta-Phase" so!

            Ich dachte Beta-Versionsn heißen 0.??? ;-).

            Zumindest nicht nach semver (Punkt 9), das allmählich zu einem defakto-Standard für Versionsbenennung heranwächst. Bei semver würde die Prelease-Version die Versionsnummer der angepeilten Version tragen, (optional) gefolgt von einem Bindestriche und einem Bezeichner. Also zum Beispiel: 1.1.0-beta oder 2.0.1-alpha oder einfach 3.0.0.

            Das ist insofern sinnvoll, als dass auch nach dem ersten Major-Release noch viele weitere Beta-Versionen folgen können.

            --
            “All right, then, I'll go to hell.” – Huck Finn
            1. Om nah hoo pez nyeetz, 1UnitedPower!

              Zumindest nicht nach semver (Punkt 9), das allmählich zu einem defakto-Standard für Versionsbenennung heranwächst.

              Dank Martin gibts das auch in deutsch.

              Matthias

              --
              Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Horn und Hornisse.

  8. Hallo

    Hier mal in loser Reihenfolge ein paar der Unterschiede gegenüber molilys Version:

    Ich habe einen klitzekleinen gefunden, den du mir hoffentlich erklären kannst. Wenn ich vor dem Eröffnungsposting das Symbol zum Aus- und Einklappen des Threads geklickt habe, musste ich das bei molilys Skript immer zweimal machen. Erst beim zweiten Klick reagierte das Skript und ja, ich habe jeweils beide Male das Icon getroffen. :-)

    Bei deinem Skript ist mir bei der Schließe-alle-gelesenen-Threads-per-Hand-Orgie sofort aufgefallen, dass ich nur einmal klicken muss (wie ich es auch erwarte). Hast du da etwas geändert und wenn ja, was?

    Tschö, Auge

    --
    Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
    Terry Pratchett, "Wachen! Wachen!"
    ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
    Veranstaltungsdatenbank Vdb 0.3
    1. Hallo Auge!

      Hier mal in loser Reihenfolge ein paar der Unterschiede gegenüber molilys Version:

      Ich habe einen klitzekleinen gefunden, den du mir hoffentlich erklären kannst. Wenn ich vor dem Eröffnungsposting das Symbol zum Aus- und Einklappen des Threads geklickt habe, musste ich das bei molilys Skript immer zweimal machen. Erst beim zweiten Klick reagierte das Skript und ja, ich habe jeweils beide Male das Icon getroffen. :-)

      Bei deinem Skript ist mir bei der Schließe-alle-gelesenen-Threads-per-Hand-Orgie sofort aufgefallen, dass ich nur einmal klicken muss (wie ich es auch erwarte). Hast du da etwas geändert und wenn ja, was?

      Hmmm ..., ich bin mir nicht ganz sicher, ob ich den geschilderten Fall richtig verstanden habe, aber ... .

      Molilys Skript hat sich gar nicht um das Auf-/ Zuklappen der Threads gekümmert. Das ist ja ansich eine Funktion des Forums/ der Forensoftware. Wie das jeweils abläuft hängt also von deinen jeweiligen Benutzer-Einstellungen ab (ob mit oder ohne JS).

      Der "Knackpunkt" dabei ist aber, dass man immer nur jeweils_einen_Thread auf- oder zuklappen kann, und jedes Mal eine "Kommunikation" (Request/ XMLHttpRequest) mit dem Server erforderlich ist.

      Das ist der Grund, warum ich mich entschlossen habe, das Auf- und Zuklappen rein über das Skript zu steuern, d.h. serverseitig sind immer alle Threads aufgeklappt.
      Den Nachteil dieser Variante hattest du ja glaube ich auch schon sofort entdeckt, nämlich dass es dadurch eine Browser spezifische Sache wird.

      Aber aufgrund der (neuen) Möglichkeit_alle_Threads auf einmal auf-, bzw. zuklappen zu können, halte ich das durchaus für eine akzeptable Variante.

      Gruß
      Gunther

      1. Hallo

        Ich habe einen klitzekleinen gefunden, den du mir hoffentlich erklären kannst. Wenn ich vor dem Eröffnungsposting das Symbol zum Aus- und Einklappen des Threads geklickt habe, musste ich das bei molilys Skript immer zweimal machen. Erst beim zweiten Klick reagierte das Skript und ja, ich habe jeweils beide Male das Icon getroffen. :-)

        Bei deinem Skript ist mir bei der Schließe-alle-gelesenen-Threads-per-Hand-Orgie sofort aufgefallen, dass ich nur einmal klicken muss (wie ich es auch erwarte). Hast du da etwas geändert und wenn ja, was?

        Hmmm ..., ich bin mir nicht ganz sicher, ob ich den geschilderten Fall richtig verstanden habe, aber ... .

        Molilys Skript hat sich gar nicht um das Auf-/ Zuklappen der Threads gekümmert.

        Ok, dann nicht. Komischer Zufall, dass es so war, dass mit Molilys Skript zwei einzelne Klicks auf das Auf-und-Zuklapp-Symbol nötig waren, mit deinem aber nicht.

        Der "Knackpunkt" dabei ist aber, dass man immer nur jeweils_einen_Thread auf- oder zuklappen kann, und jedes Mal eine "Kommunikation" (Request/ XMLHttpRequest) mit dem Server erforderlich ist.

        Wenn ich auf das Symbol für einen Thread klicke, ist es das Verhalten, das ich erwarte. Dass das bei dir grundsätzlich anders funktionieren soll, ist schon klar.

        Aber aufgrund der (neuen) Möglichkeit_alle_Threads auf einmal auf-, bzw. zuklappen zu können, halte ich das durchaus für eine akzeptable Variante.

        Wenn man das will. Wenn die Einstellung so ist, dass per se alle Threads zugeklappt sind, die vollständig gelesen sind, braucht man das ja nicht. Wo wir gerade dabei sind. Folgendes Szenario:

        Beim laden der Seite sind ungelesene Postings vorhanden. Diese lese ich und die Postings gelten folglich CSS-seitig als gelesen. Ob browserseitig a:visited oder, per JS gesetzt, a.visited gültig ist, habe ich allerdings nicht geprüft. Wenn ich den Thread über das Symbol vor dem Eröffnungsposting schließen will, bekomme ich die Meldung, dass ungelesene Postings sind. Dies, obwohl ich die Postings gelesen habe.

        Meine Vermutung ist nun, dass die serverseitige Markierung mit der Klasse .visited nicht sofort gesetzt wird. Funktioniert das nicht so, dass per JS die Klasse gesetzt und die Nachricht, dass das Posting geöffnet wurde, per AJAX an den Server gesendet wird?

        Tschö, Auge

        --
        Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
        Terry Pratchett, "Wachen! Wachen!"
        ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
        Veranstaltungsdatenbank Vdb 0.3
        1. Hallo Auge!

          Ich habe einen klitzekleinen gefunden, den du mir hoffentlich erklären kannst. Wenn ich vor dem Eröffnungsposting das Symbol zum Aus- und Einklappen des Threads geklickt habe, musste ich das bei molilys Skript immer zweimal machen. Erst beim zweiten Klick reagierte das Skript und ja, ich habe jeweils beide Male das Icon getroffen. :-)

          Bei deinem Skript ist mir bei der Schließe-alle-gelesenen-Threads-per-Hand-Orgie sofort aufgefallen, dass ich nur einmal klicken muss (wie ich es auch erwarte). Hast du da etwas geändert und wenn ja, was?

          Hmmm ..., ich bin mir nicht ganz sicher, ob ich den geschilderten Fall richtig verstanden habe, aber ... .

          Molilys Skript hat sich gar nicht um das Auf-/ Zuklappen der Threads gekümmert.

          Ok, dann nicht. Komischer Zufall, dass es so war, dass mit Molilys Skript zwei einzelne Klicks auf das Auf-und-Zuklapp-Symbol nötig waren, mit deinem aber nicht.

          Nein, kein Zufall ...! ;-)
          Ohne 'mein Skript' hast du die "normale" Funktionalität des Forenskripts (, die abhängig von deinen Benutzer-EInstellungen ist). Dabei sind dann ggf. zwei Klicks nötig, bis der Browser die Seite neu rendert und den Thread dann als geschlossen anzeigt.

          Mein Skript "überschreibt" diese Funktion komplett mit einer eigenen. Da keine Kommunikation mit dem Server stattfinden muss, sondern alles direkt per JS im Browser abläuft, reicht hierbei ein Klick.

          Der "Knackpunkt" dabei ist aber, dass man immer nur jeweils_einen_Thread auf- oder zuklappen kann, und jedes Mal eine "Kommunikation" (Request/ XMLHttpRequest) mit dem Server erforderlich ist.

          Wenn ich auf das Symbol für einen Thread klicke, ist es das Verhalten, das ich erwarte. Dass das bei dir grundsätzlich anders funktionieren soll, ist schon klar.

          Aber aufgrund der (neuen) Möglichkeit_alle_Threads auf einmal auf-, bzw. zuklappen zu können, halte ich das durchaus für eine akzeptable Variante.

          Wenn man das will. Wenn die Einstellung so ist, dass per se alle Threads zugeklappt sind, die vollständig gelesen sind, braucht man das ja nicht. Wo wir gerade dabei sind. Folgendes Szenario:

          Beim laden der Seite sind ungelesene Postings vorhanden. Diese lese ich und die Postings gelten folglich CSS-seitig als gelesen. Ob browserseitig a:visited oder, per JS gesetzt, a.visited gültig ist, habe ich allerdings nicht geprüft.

          Das "Verhalten" hierbei kann, abhängig von den jeweiligen Benutzer-EInstellungen, aber stark variieren (Thread-, Listen- oder Nested-Ansicht, bei Nested alle Postings des Threads als gelesen markieren).

          Wenn ich den Thread über das Symbol vor dem Eröffnungsposting schließen will, bekomme ich die Meldung, dass ungelesene Postings sind. Dies, obwohl ich die Postings gelesen habe.

          Und wie bist du zurück auf die Hauptseite gekommen?
          Wenn du den Back-Button deines Browsers verwendet hast, dann wurde die Hauptseite nicht neu geladen, wodurch auch die "gelesen" Markierung noch nicht vorhanden ist. Ein Reload der Seite schafft Abhilfe.

          Meine Vermutung ist nun, dass die serverseitige Markierung mit der Klasse .visited nicht sofort gesetzt wird. Funktioniert das nicht so, dass per JS die Klasse gesetzt und die Nachricht, dass das Posting geöffnet wurde, per AJAX an den Server gesendet wird?

          Keine Ahnung! Das musst du am besten mal Christian Kruse (ck) fragen ...! ;-)

          BTW: Hast du die Version 1.1 eingebunden, oder noch die erste Version?

          Gruß
          Gunther

          1. Hallo

            … Wo wir gerade dabei sind. Folgendes Szenario:

            Beim laden der Seite sind ungelesene Postings vorhanden. Diese lese ich und die Postings gelten folglich CSS-seitig als gelesen. Ob browserseitig a:visited oder, per JS gesetzt, a.visited gültig ist, habe ich allerdings nicht geprüft.

            Wenn ich den Thread über das Symbol vor dem Eröffnungsposting schließen will, bekomme ich die Meldung, dass ungelesene Postings sind. Dies, obwohl ich die Postings gelesen habe.

            Und wie bist du zurück auf die Hauptseite gekommen?

            Ok, Missverständnis. Mit „schließen“ meinte ich das zuklappen eines Threads über das passende Icon in der Hauptansicht, nicht das Schließen des Fensters oder Tabs mit dem Thread oder das zurücknavigieren auf die Hauptseite.

            Ich habe also für ein ungelesenes Posting einen neuen Tab geöffnet. In der Hauptansicht wird daraufhin für den Link zu diesem Posting (vermutlich) :visisted wirksam. Will ich nun den Thread in der Hauptansicht zuklappen, noch bevor die Seite neu vom Server geladen wurde, wird mir ein ungelesenes Posting vermeldet.

            Wenn du den Back-Button deines Browsers verwendet hast, dann wurde die Hauptseite nicht neu geladen, wodurch auch die "gelesen" Markierung noch nicht vorhanden ist. Ein Reload der Seite schafft Abhilfe.

            Nein, auch wenn das Szenarioanders ist, die Seite wurde nicht neu geladen. Dennoch ist das ein uneleganter Umweg. „Schick“ wäre, wenn das Laden eines Postings automatisch die Klasse .visited setzte. Ob das aufgrund der vielen Einstellungsmöglichkeiten, die sich da vermutlich überlagern können, möglich ist, möchte ich vorsichtshalber mal bezweifeln.

            Meine Vermutung ist nun, dass die serverseitige Markierung mit der Klasse .visited nicht sofort gesetzt wird. Funktioniert das nicht so, dass per JS die Klasse gesetzt und die Nachricht, dass das Posting geöffnet wurde, per AJAX an den Server gesendet wird?

            Keine Ahnung! Das musst du am besten mal Christian Kruse (ck) fragen ...! ;-)

            Steht ja nun hier.

            BTW: Hast du die Version 1.1 eingebunden, oder noch die erste Version?

            1.1

            Tschö, Auge

            --
            Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
            Terry Pratchett, "Wachen! Wachen!"
            ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
            Veranstaltungsdatenbank Vdb 0.3
        2. Moin Auge,

          Meine Vermutung ist nun, dass die serverseitige Markierung mit der Klasse .visited nicht sofort gesetzt wird. Funktioniert das nicht so, dass per JS die Klasse gesetzt und die Nachricht, dass das Posting geöffnet wurde, per AJAX an den Server gesendet wird?

          visited wird nicht via JS gesetzt, gar nicht. Zumindest nicht von meiner Seite aus, wenn das passiert, dann macht Gunthers Script das. Dafür brauchts einen Reload (oder das klicken des „als gelesen markieren”-Häckchens, da wird via HTTP request der Schnipsel für den Thread vom Server geladen).

          LG,
           CK

          1. Hallo

            Ich klabuster das mal auseinander, damit ich als JS-Laie es verstehe.

            Meine Vermutung ist nun, dass die serverseitige Markierung mit der Klasse .visited nicht sofort gesetzt wird. Funktioniert das nicht so, dass per JS die Klasse gesetzt und die Nachricht, dass das Posting geöffnet wurde, per AJAX an den Server gesendet wird?

            visited wird nicht via JS gesetzt, gar nicht. Zumindest nicht von meiner Seite aus, …

            Zur Klarstellung, wir reden von .visited. Die Pseudoklasse :visited wird ja vom Browser verwandt.

            … wenn das passiert, dann macht Gunthers Script das.

            Wenn ich ihn richtig verstehe, macht auch sein Skript das nicht.

            Dafür brauchts einen Reload (oder das klicken des „als gelesen markieren”-Häckchens, da wird via HTTP request der Schnipsel für den Thread vom Server geladen).

            Das deckt sich mit meiner Beobachtung bezüglich des zuklappens von Threads mit Gunthers Skript. Solange ein Posting nicht serverseitig als gelesen gilt, somit also auch .visited gesetzt ist, meldet Gunthers Skript ungelesene Postings.

            Ist es sinnvoll, den gelesen-Status und somit die Vergabe von .visited beim Aufruf eines Postings per JS zu setzen? Das frühere Verhalten, ein Posting in der Hauptansicht binnen ein bis zwei Sekunden nach dem Aufruf des Postings in einem anderen Tab mit den Regeln für die serverseitige Markierung als gelesen zu markieren, lässt mich vermuten, dass das schon einmal genau so funktionierte.

            Tschö, Auge

            --
            Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
            Terry Pratchett, "Wachen! Wachen!"
            ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
            Veranstaltungsdatenbank Vdb 0.3
            1. Moin Auge,

              Dafür brauchts einen Reload (oder das klicken des „als gelesen markieren”-Häckchens, da wird via HTTP request der Schnipsel für den Thread vom Server geladen).

              Das deckt sich mit meiner Beobachtung bezüglich des zuklappens von Threads mit Gunthers Skript. Solange ein Posting nicht serverseitig als gelesen gilt, somit also auch .visited gesetzt ist, meldet Gunthers Skript ungelesene Postings.

              Du musst unterscheiden zwischen "gilt serverseitig als gelesen" und der Klasse. Serverseitig als gelesen gilt ein Posting, sobald es via HTTP abgerufen wurde, egal ob via JS oder via Klick auf den Link. Die Klasse wird allerdings erst gesetzt, wenn die Hauptseite neu geladen wird.

              Ist es sinnvoll, den gelesen-Status und somit die Vergabe von .visited beim Aufruf eines Postings per JS zu setzen?

              Klar, es würde ja nur die Realität abbilden.

              Das frühere Verhalten, ein Posting in der Hauptansicht binnen ein bis zwei Sekunden nach dem Aufruf des Postings in einem anderen Tab mit den Regeln für die serverseitige Markierung als gelesen zu markieren, lässt mich vermuten, dass das schon einmal genau so funktionierte.

              Das ist ein Irrtum. Das ist ein Browser-Feature gewesen, das Links entsprechend :visited eingefärbt hat.

              LG,
               CK

              1. Hallo

                Dafür brauchts einen Reload (oder das klicken des „als gelesen markieren”-Häckchens, da wird via HTTP request der Schnipsel für den Thread vom Server geladen).

                Das deckt sich mit meiner Beobachtung bezüglich des zuklappens von Threads mit Gunthers Skript. Solange ein Posting nicht serverseitig als gelesen gilt, somit also auch .visited gesetzt ist, meldet Gunthers Skript ungelesene Postings.

                Du musst unterscheiden zwischen "gilt serverseitig als gelesen" und der Klasse. Serverseitig als gelesen gilt ein Posting, sobald es via HTTP abgerufen wurde, egal ob via JS oder via Klick auf den Link. Die Klasse wird allerdings erst gesetzt, wenn die Hauptseite neu geladen wird.

                Streng auf die offensichtliche Funktionsweise Gunthers Skripts, vor dem zuklappen des Threads zu prüfen, ob alle Postings gelesen sind, bezogen, kann ich mir nur vorstellen, dass die Klasse .visited zur Unterscheidung von gelesenen und ungelesenen Postings verwendet wird. An dieser Stelle würde es reichen, beim öffnen eines Postings zu vermerken, dass dies soeben stattgefunden hat und mit JS die Klasse .visited in der Hauptansicht zu setzen, auch wenn noch kein Reload vom Server stattgefunden hat.

                Ist es sinnvoll, den gelesen-Status und somit die Vergabe von .visited beim Aufruf eines Postings per JS zu setzen?

                Klar, es würde ja nur die Realität abbilden.

                S.o.. Abgesehen vom bösen R-Wort … ach nee, das war woanders …

                … ich wollte nicht auf die Abbildung der Realität hinaus. Es ging mir eher um die Performance auf dem Server. Auch wenn heutzutage weit weniger im Forum los ist, als z.B. vor etwa acht bis zehn jahren, kann ich mir vorstellen, dass zu Stoßzeiten viele solcher Anfragen mehr oder minder gleichzeitig bearbeitet werden müssten. Inwieweit das ein Problem darstellt, weiß ich natürlich nicht. Kann ja auch sein, dass das im Grundrauschen unterginge.

                Das frühere Verhalten, ein Posting in der Hauptansicht binnen ein bis zwei Sekunden nach dem Aufruf des Postings in einem anderen Tab mit den Regeln für die serverseitige Markierung als gelesen zu markieren, lässt mich vermuten, dass das schon einmal genau so funktionierte.

                Das ist ein Irrtum. Das ist ein Browser-Feature gewesen, das Links entsprechend :visited eingefärbt hat.

                Das kann nicht sein™. Wenn binnen ein oder zwei Sekunden ohne Reload der Hauptseite in dieser ein soeben in einem anderen Tab geöffnetes Posting mit der für die serverseitige Markierung festgelegten CSS-Regel versehen wird, die sich definitiv von der für a:visisted unterscheidet, ist da mehr passiert. Das hat bis vor etwa drei oder vier Jahren so funktioniert.

                Tschö, Auge

                --
                Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                Terry Pratchett, "Wachen! Wachen!"
                ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                Veranstaltungsdatenbank Vdb 0.3
                1. Moin Auge,

                  … ich wollte nicht auf die Abbildung der Realität hinaus. Es ging mir eher um die Performance auf dem Server. Auch wenn heutzutage weit weniger im Forum los ist, als z.B. vor etwa acht bis zehn jahren, kann ich mir vorstellen, dass zu Stoßzeiten viele solcher Anfragen mehr oder minder gleichzeitig bearbeitet werden müssten. Inwieweit das ein Problem darstellt, weiß ich natürlich nicht. Kann ja auch sein, dass das im Grundrauschen unterginge.

                  Warum sollte es den Server belasten, wenn man via JS (Client-seitig) .visited setzt? Der wird da doch gar nicht befragt.

                  Ausserdem muss der das ab können, das neue Forum ist ja in Ruby mit Rails geschrieben, und da werden viel mehr Ressourcen gebraucht.

                  Das frühere Verhalten, ein Posting in der Hauptansicht binnen ein bis zwei Sekunden nach dem Aufruf des Postings in einem anderen Tab mit den Regeln für die serverseitige Markierung als gelesen zu markieren, lässt mich vermuten, dass das schon einmal genau so funktionierte.

                  Das ist ein Irrtum. Das ist ein Browser-Feature gewesen, das Links entsprechend :visited eingefärbt hat.

                  Das kann nicht sein™. Wenn binnen ein oder zwei Sekunden ohne Reload der Hauptseite in dieser ein soeben in einem anderen Tab geöffnetes Posting mit der für die serverseitige Markierung festgelegten CSS-Regel versehen wird, die sich definitiv von der für a:visisted unterscheidet, ist da mehr passiert. Das hat bis vor etwa drei oder vier Jahren so funktioniert.

                  Die ein bis zwei Sekunden erklären sich anhand der load time des Postings. Ansonsten kann ich dazu nur sagen: ich habe da nichts eingebaut. Wenn da wirklich etwas via JS passiert ist, dann musst du von irgendwo her JS eingebunden haben, dass das implementiert hat.

                  LG,
                   CK

                  1. Hallo

                    … ich wollte nicht auf die Abbildung der Realität hinaus. Es ging mir eher um die Performance auf dem Server. Auch wenn heutzutage weit weniger im Forum los ist, als z.B. vor etwa acht bis zehn jahren, kann ich mir vorstellen, dass zu Stoßzeiten viele solcher Anfragen mehr oder minder gleichzeitig bearbeitet werden müssten. Inwieweit das ein Problem darstellt, weiß ich natürlich nicht. Kann ja auch sein, dass das im Grundrauschen unterginge.

                    Warum sollte es den Server belasten, wenn man via JS (Client-seitig) .visited setzt? Der wird da doch gar nicht befragt.

                    Ich bin wegen der Verzögerung von einer Kommunikation zwischen JS und Server ausgegangen. Aber klar, zum auschließlichen Setzen der Klasse muss er nicht. Und mehr muss andieser Stelle nicht passieren.

                    Das frühere Verhalten, ein Posting in der Hauptansicht binnen ein bis zwei Sekunden nach dem Aufruf des Postings in einem anderen Tab mit den Regeln für die serverseitige Markierung als gelesen zu markieren, lässt mich vermuten, dass das schon einmal genau so funktionierte.

                    … Ansonsten kann ich dazu nur sagen: ich habe da nichts eingebaut. Wenn da wirklich etwas via JS passiert ist, dann musst du von irgendwo her JS eingebunden haben, dass das implementiert hat.

                    Hm, ich hatte zum SelfHTML-eigenen Kram (dauerhaft) immer nur das JS von Molily zu laufen. Das scheint dann, wo auch immer dieses Verhalten erzeugt wurde, weggefallen zu sein.

                    Tschö, Auge

                    --
                    Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                    Terry Pratchett, "Wachen! Wachen!"
                    ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                    Veranstaltungsdatenbank Vdb 0.3
                2. Om nah hoo pez nyeetz, Auge!

                  Das kann nicht sein™. Wenn binnen ein oder zwei Sekunden ohne Reload der Hauptseite in dieser ein soeben in einem anderen Tab geöffnetes Posting mit der für die serverseitige Markierung festgelegten CSS-Regel versehen wird, die sich definitiv von der für a:visisted unterscheidet, ist da mehr passiert. Das hat bis vor etwa drei oder vier Jahren so funktioniert.

                  aktuelles CSS:

                  .visited, a.visited, #root a:visited {  
                      color: #888;  
                  }
                  

                  In den Threadbäumen der Thread-Ansicht greift nur

                  a:link, a:visited {  
                      color: #3481CD;  
                  }
                  

                  Allgemein lässt sich sagen, dass bei Verwendung der Thread-Ansicht die einzelnen Postings serverseitig als gelesen markiert werden, bei Verwendung der nested- oder Listenansicht alle, die es gerade im aktuellen Thread gibt.

                  Matthias

                  --
                  Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Not und Note.

                  1. Hallo

                    Das kann nicht sein™. Wenn binnen ein oder zwei Sekunden ohne Reload der Hauptseite in dieser ein soeben in einem anderen Tab geöffnetes Posting mit der für die serverseitige Markierung festgelegten CSS-Regel versehen wird, die sich definitiv von der für a:visisted unterscheidet, ist da mehr passiert. Das hat bis vor etwa drei oder vier Jahren so funktioniert.

                    aktuelles CSS:

                    .visited, a.visited, #root a:visited {

                    color: #888;
                    }

                      
                    Ich sprach von der alten Struktur von vor dem großen Ausfall \_in\_Kombination\_(!)\_ mit den in den Benutzereinstellungen von mir festgelegten Regeln für Vorder- und Hintergrundfarbe. Ich habe nie gesehen, wie die Standardformatierung für .visisted aussah, da ich vor Anfang an eine Hintergrundfarbe für Links zu gelesenen Postings definiert hatte. Dass die Regeln jetzt so sind, wie du sie zeigst, ist mir beim (nicht zufriedenstellend gelungenen \*gnarf\*) herumspielen mit meinem eigenen CSS-Regelset aufgefallen. :-)  
                      
                    
                    > In den Threadbäumen der Thread-Ansicht greift nur  
                    >   
                    > ~~~css
                    
                    a:link, a:visited {  
                    
                    >     color: #3481CD;  
                    > }
                    
                    

                    Redest du vom Aufbau der Threadbäume in der Hauptansicht oder von den Bäumen der einzelnen Threads in der Einzelansicht der Postings? Dort sollte doch nach dem Laden eines neuen Postings auch *sofort* die Klasse .visited vorhanden sein. Sie wird ja grundsätzlich genutzt.

                    Tschö, Auge

                    --
                    Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                    Terry Pratchett, "Wachen! Wachen!"
                    ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                    Veranstaltungsdatenbank Vdb 0.3
                    1. Om nah hoo pez nyeetz, Auge!

                      In den Threadbäumen der Thread-Ansicht greift nur

                      a:link, a:visited {

                      color: #3481CD;
                      }

                      
                      >   
                      > Redest du vom Aufbau der Threadbäume in der Hauptansicht oder von den Bäumen der einzelnen Threads in der Einzelansicht der Postings?  
                        
                      Von letzerem  
                        
                      
                      > Dort sollte doch nach dem Laden eines neuen Postings auch \*sofort\* die Klasse .visited vorhanden sein. Sie wird ja grundsätzlich genutzt.  
                        
                      Sie wird in der nested oder Listen-Ansicht für alle zu diesem Zeitpunkt existierenden Postings des Threads gesetzt, in der thread-Ansicht nur für das eine Posting, das gerade angeschaut wird. Die Threadbäume der Hauptansicht stecken in #root.  
                        
                      Matthias
                      
                      -- 
                      Der Unterschied zwischen Java und JavaScript ist größer als der zwischen [Hund und Hundertwasser](http://selfhtml.apsel-mv.de/java-javascript/index.php?buchstabe=H#hund).  
                      ![](http://www.billiger-im-urlaub.de/kreis_sw.gif)  
                      
                      
              2. Moin,

                Ist es sinnvoll, den gelesen-Status und somit die Vergabe von .visited beim Aufruf eines Postings per JS zu setzen?

                Klar, es würde ja nur die Realität abbilden.

                Ich habe das gerade mal getestet. Das Einfügen des Klassennamens sind gerade mal 2 zusätzliche Codezeilen, aber ...

                ... das bringt zumindest alleine auch nichts (außer dass der Postingseintrag vom CSS her schon wie ein gelesener angezeigt wird), denn auch das JS wird ja nur jeweils einmal beim Laden der Seite ausgeführt.

                Sprich ohne Reload der Seite, keine wirkliche Ver-/ Änderung!

                Wollte man das (auch) erreichen, würde es wesentlich aufwendiger. Persönlich sehe ich "diesen Aufwand" in keiner Relation zum Nutzen, denn ein Reload der Seite ist äußerst einfach & schnell gemacht.

                Gruß
                Gunther

          2. Hallo Christian!

            Meine Vermutung ist nun, dass die serverseitige Markierung mit der Klasse .visited nicht sofort gesetzt wird. Funktioniert das nicht so, dass per JS die Klasse gesetzt und die Nachricht, dass das Posting geöffnet wurde, per AJAX an den Server gesendet wird?

            visited wird nicht via JS gesetzt, gar nicht. Zumindest nicht von meiner Seite aus, wenn das passiert, dann macht Gunthers Script das.

            Nein, macht es (auch) nicht ...! ;-)
            Es filtert lediglich anhand des Klassennamens 'visited'.

            Dafür brauchts einen Reload (oder das klicken des „als gelesen markieren”-Häckchens, da wird via HTTP request der Schnipsel für den Thread vom Server geladen).

            Also würde die "Empfehlung" lauten, Postings nicht in einem separaten Tab zu öffnen, und den Link 'Forum' zu klicken, um auf die Hauptseite zurückzugehen?

            Oder würde es "Sinn machen", quasi das von Auge gewünschte Verhalten zu implementieren, und die Klasse 'visited' vorab per JS zu ergänzen (beim nächsten Reload müsste sie ja dann eh bereits serverseitig vorhanden sein)?

            Kann es eigentlich sein, dass die Benutzer-Einstellung "Listed-/Nested-Darstellung: In der Listen- bzw. Nested-Darstellung den kompletten Thread als gelesen markieren" nicht funktioniert?

            Meinen Beobachtungen nach, macht es keinen Unterschied, ob die Option aktiviert ist oder nicht. Sobald man einen Thread in der Listen- bzw. Nested-Darstellung anzeigen lässt, wird er automatisch auch komplett als gelesen markiert.

            Andere Frage:
            Sehe ich das richtig, dass es keine andere Möglichkeit gibt ein einzelnes Posting als gelesen zu markieren, als dieses zu laden (also vom Server anzufordern)?

            Gruß
            Gunther

            1. Om nah hoo pez nyeetz, Gunther!

              Oder würde es "Sinn machen", quasi das von Auge gewünschte Verhalten zu implementieren, und die Klasse 'visited' vorab per JS zu ergänzen (beim nächsten Reload müsste sie ja dann eh bereits serverseitig vorhanden sein)?

              Das wäre möglich und aus meiner Sicht sinnvoll, kollidiert aber u.U. mit gewünschtem Verhalten.

              Kann es eigentlich sein, dass die Benutzer-Einstellung "Listed-/Nested-Darstellung: In der Listen- bzw. Nested-Darstellung den kompletten Thread als gelesen markieren" nicht funktioniert?

              Meinen Beobachtungen nach, macht es keinen Unterschied, ob die Option aktiviert ist oder nicht. Sobald man einen Thread in der Listen- bzw. Nested-Darstellung anzeigen lässt, wird er automatisch auch komplett als gelesen markiert.

              Ja, denn du hast ja den kompletten Thread auf dem Schirm. Bei umfangreichen und nicht ausschließlich linear verlaufenden Gesprächen könnte es ungelesene Postings etwa an den Stellen 21-25 und 75-80 geben. Dann nutze ich in der nested-Ansicht den Zurück-Button des Browsers, mit dem Ergebnis, dass das Posting 21 die Pseudoklasse :visited bekommen hat und ich erkennen kann, dass es das Posting Nr. 75 ist, welches ich als nächstes anklicken möchte. Eine gelesen-Markierung per JS würde diese Möglichkeit zunichte machen.

              Sehe ich das richtig, dass es keine andere Möglichkeit gibt ein einzelnes Posting als gelesen zu markieren, als dieses zu laden (also vom Server anzufordern)?

              Ja, du kannst zwar komplette Threads als gelesen markieren, diese Markierung aber -soweit ich weiß- nicht wieder löschen.

              Matthias

              --
              Der Unterschied zwischen Java und JavaScript ist größer als der zwischen neu und neutral.

              1. Om nah hoo pez nyeetz, Matthias !

                Oder würde es "Sinn machen", quasi das von Auge gewünschte Verhalten zu implementieren, und die Klasse 'visited' vorab per JS zu ergänzen (beim nächsten Reload müsste sie ja dann eh bereits serverseitig vorhanden sein)?

                Das wäre möglich und aus meiner Sicht sinnvoll, kollidiert aber u.U. mit gewünschtem Verhalten.

                Wie ich gerade schon in meinem anderen Posting geschrieben habe, reicht diese Maßnahme alleine ja nicht aus.

                Kann es eigentlich sein, dass die Benutzer-Einstellung "Listed-/Nested-Darstellung: In der Listen- bzw. Nested-Darstellung den kompletten Thread als gelesen markieren" nicht funktioniert?

                Meinen Beobachtungen nach, macht es keinen Unterschied, ob die Option aktiviert ist oder nicht. Sobald man einen Thread in der Listen- bzw. Nested-Darstellung anzeigen lässt, wird er automatisch auch komplett als gelesen markiert.

                Ja, denn du hast ja den kompletten Thread auf dem Schirm. Bei umfangreichen und nicht ausschließlich linear verlaufenden Gesprächen könnte es ungelesene Postings etwa an den Stellen 21-25 und 75-80 geben. Dann nutze ich in der nested-Ansicht den Zurück-Button des Browsers, mit dem Ergebnis, dass das Posting 21 die Pseudoklasse :visited bekommen hat und ich erkennen kann, dass es das Posting Nr. 75 ist, welches ich als nächstes anklicken möchte. Eine gelesen-Markierung per JS würde diese Möglichkeit zunichte machen.

                Versteh' ich jetzt nicht ganz ...!?
                Die Gelesen-Markierung wird/ würde ja nur bei dem Posting eingefügt, welches du auf der Hauptseite auch angeklickt hast.

                Wenn du also Posting Nr. 21 angeklickt hast, und per Back-Button zurück gehst, ist Posting Nr. 75 doch (immer noch) als ungelesen da!

                Sehe ich das richtig, dass es keine andere Möglichkeit gibt ein einzelnes Posting als gelesen zu markieren, als dieses zu laden (also vom Server anzufordern)?

                Ja, du kannst zwar komplette Threads als gelesen markieren, diese Markierung aber -soweit ich weiß- nicht wieder löschen.

                Ja, sehe ich auch so.
                Also "braucht" das Foren-Skript einen Request mit der Thread-ID und Posting-ID, um die Gelesen-Markierung zu setzen. Und rückgängig machen ist ja sowieso per se nicht vorgesehen ...! :-P

                Gruß
                Gunther

                1. Om nah hoo pez nyeetz, Gunther!

                  Versteh' ich jetzt nicht ganz ...!?
                  Die Gelesen-Markierung wird/ würde ja nur bei dem Posting eingefügt, welches du auf der Hauptseite auch angeklickt hast.

                  Wenn du also Posting Nr. 21 angeklickt hast, und per Back-Button zurück gehst, ist Posting Nr. 75 doch (immer noch) als ungelesen da!

                  Genau. Wenn ich aber in der nested-Ansicht unterwegs bin, werden alle Postings des Threads, die zu diesem Zeitpunkt vorhanden sind, als gelesen markiert, was ja auch sinnvoll ist, denn ich hatte sie ja alle auf dem Schirm (=vom Server angefordert). Du kannst eben nicht mit vertretbarem Aufwand prüfen, ob sich ein bestimmtes Posting ganz oder teilweise im Viewport befand. (nested-Ansicht!)

                  Matthias

                  --
                  Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Barbie und Barbier.

                2. Hallo

                  Oder würde es "Sinn machen", quasi das von Auge gewünschte Verhalten zu implementieren, und die Klasse 'visited' vorab per JS zu ergänzen (beim nächsten Reload müsste sie ja dann eh bereits serverseitig vorhanden sein)?

                  Das wäre möglich und aus meiner Sicht sinnvoll, kollidiert aber u.U. mit gewünschtem Verhalten.

                  Wie ich gerade schon in meinem anderen Posting geschrieben habe, reicht diese Maßnahme alleine ja nicht aus.

                  *Wozu* reicht sie nicht aus? Die Frage ist mMn an dieser Stelle, wozu das Setzen der Klasse ohne Reload dienen soll. Ist es dazu da, deiner clientseitigen Prüfung auf offene Postings vor dem zuklappen eines Threads zu genügen, reicht die Maßnahme. Für andere Anwendungsfälle, mag das nicht zutreffen …

                  Kann es eigentlich sein, dass die Benutzer-Einstellung "Listed-/Nested-Darstellung: In der Listen- bzw. Nested-Darstellung den kompletten Thread als gelesen markieren" nicht funktioniert?

                  … und die Markierung funktioniert für die Nestedansicht eh nicht, wie sie mal für die Threadansicht entwickelt wurde.

                  Tschö, Auge

                  --
                  Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                  Terry Pratchett, "Wachen! Wachen!"
                  ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                  Veranstaltungsdatenbank Vdb 0.3
                  1. Hallo Auge!

                    Oder würde es "Sinn machen", quasi das von Auge gewünschte Verhalten zu implementieren, und die Klasse 'visited' vorab per JS zu ergänzen (beim nächsten Reload müsste sie ja dann eh bereits serverseitig vorhanden sein)?

                    Das wäre möglich und aus meiner Sicht sinnvoll, kollidiert aber u.U. mit gewünschtem Verhalten.

                    Wie ich gerade schon in meinem anderen Posting geschrieben habe, reicht diese Maßnahme alleine ja nicht aus.

                    *Wozu* reicht sie nicht aus? Die Frage ist mMn an dieser Stelle, wozu das Setzen der Klasse ohne Reload dienen soll. Ist es dazu da, deiner clientseitigen Prüfung auf offene Postings vor dem zuklappen eines Threads zu genügen, reicht die Maßnahme. Für andere Anwendungsfälle, mag das nicht zutreffen …

                    Nein, sie reicht eben auch nicht für "deine clientseitige Prüfung auf offene Postings" aus!
                    Denn diese wird ja auch nur_einmalig_beim Laden der (Forums-)Hauptseite durchgeführt.

                    Also "ändert" sich da auch nichts dran, solange die Seite nicht neu geladen wird, und dadurch auch das Skript erneut ausgeführt wird.

                    Um das zu ändern, steht der nötige Aufwand imho in keiner Relation gegenüber dem Aufwand, die Seite gerade mal neu zu laden!

                    Wie gesagt, ich kann die Klasse problemlos einfügen (habe ich bereits in meiner Testversion drin). Das hat aber nicht dein gewünschtes Ergebnis zur Folge, sondern "hilft" quasi nur bei dem von Matthias angesprochenem Verhalten, wenn ich einen Thread mit mehreren ungelesenen Postings habe, und per Back-Button im Browser navigiere, um diese der Reihe nach zu lesen.

                    Gruß
                    Gunther

                    1. Hallo

                      Oder würde es "Sinn machen", quasi das von Auge gewünschte Verhalten zu implementieren, und die Klasse 'visited' vorab per JS zu ergänzen (beim nächsten Reload müsste sie ja dann eh bereits serverseitig vorhanden sein)?

                      Das wäre möglich und aus meiner Sicht sinnvoll, kollidiert aber u.U. mit gewünschtem Verhalten.

                      Wie ich gerade schon in meinem anderen Posting geschrieben habe, reicht diese Maßnahme alleine ja nicht aus.

                      *Wozu* reicht sie nicht aus? Die Frage ist mMn an dieser Stelle, wozu das Setzen der Klasse ohne Reload dienen soll. Ist es dazu da, deiner clientseitigen Prüfung auf offene Postings vor dem zuklappen eines Threads zu genügen, reicht die Maßnahme. Für andere Anwendungsfälle, mag das nicht zutreffen …

                      Nein, sie reicht eben auch nicht für "deine clientseitige Prüfung auf offene Postings" aus!
                      Denn diese wird ja auch nur_einmalig_beim Laden der (Forums-)Hauptseite durchgeführt.

                      Ahh ja. Ich dachte, die Prüfung würde beim Klick auf das Zuklappen-Icon erfolgen. Du ziehst sie gleich – aber nur einmalig – durch, um beim laden zu entscheiden, was auf- oder zugeklappt wird.

                      Tschö, Auge

                      --
                      Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                      Terry Pratchett, "Wachen! Wachen!"
                      ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                      Veranstaltungsdatenbank Vdb 0.3
                      1. Hallo Auge!

                        Nein, sie reicht eben auch nicht für "deine clientseitige Prüfung auf offene Postings" aus!
                        Denn diese wird ja auch nur_einmalig_beim Laden der (Forums-)Hauptseite durchgeführt.

                        Ahh ja. Ich dachte, die Prüfung würde beim Klick auf das Zuklappen-Icon erfolgen. Du ziehst sie gleich – aber nur einmalig – durch, um beim laden zu entscheiden, was auf- oder zugeklappt wird.

                        Genau! ;-)

                        Das Skript läuft genau einmal durch, sobald nach dem Laden das 'DOMContentLoaded' Event gefeuert hat.

                        Dabei wird einmal der komplette Thread-Baum des Forums durchlaufen, und alle "relevanten" Infos in entsprechenden Objekten/ Arrays gespeichert, auf die dann für die jeweiligen Filter zurückgegriffen wird.

                        Wollte man jetzt also "(Zustands-)Änderungen"_ohne_Reload der Seite erfassen, müsste man u.a.

                        • den jeweils betroffenen Thread und seine Postings analysieren
                        • die Änderungen in allen betroffenen Objekten/ Arrays durchführen
                        • die Anzeige der betroffenen Filter aktualisieren

                        Das ist zwar theoretisch alles machbar, aber wie schon gesagt, halte ich den Aufwand für zu hoch, wenn ein einfacher Reload der Seite das alles überflüssig macht.

                        Man könnte höchstens mal überlegen, ob und wann es ggf. Sinn machen würde, den Reload per JS auszulösen (, um dir die "Arbeit" auch noch abzunehmen)?

                        Gruß
                        Gunther

                        1. Hallo

                          Wollte man jetzt also "(Zustands-)Änderungen"_ohne_Reload der Seite erfassen, müsste man u.a.

                          • den jeweils betroffenen Thread und seine Postings analysieren
                          • die Änderungen in allen betroffenen Objekten/ Arrays durchführen
                          • die Anzeige der betroffenen Filter aktualisieren

                          Das ist zwar theoretisch alles machbar, aber wie schon gesagt, halte ich den Aufwand für zu hoch, wenn ein einfacher Reload der Seite das alles überflüssig macht.

                          Man könnte höchstens mal überlegen, ob und wann es ggf. Sinn machen würde, den Reload per JS auszulösen (, um dir die "Arbeit" auch noch abzunehmen)?

                          Ach, du bist so gut zu mir <seufz />. Lass mal, das wäre, nur damit es bei *mir* funktioniert, wie offensichtlich *nur ich* es wünsche, eindeutig zu viel des Guten. ;-)

                          Tschö, Auge

                          --
                          Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                          Terry Pratchett, "Wachen! Wachen!"
                          ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                          Veranstaltungsdatenbank Vdb 0.3
                          1. Hallo Auge!

                            Ach, du bist so gut zu mir <seufz />. Lass mal, das wäre, nur damit es bei *mir* funktioniert, wie offensichtlich *nur ich* es wünsche, eindeutig zu viel des Guten. ;-)

                            Zu spät ...! ;-)
                            Siehe: https://forum.selfhtml.org/?t=218508&m=1505316

                            Gruß
                            Gunther

              2. Om nah hoo pez nyeetz, Matthias!

                Oder würde es "Sinn machen", quasi das von Auge gewünschte Verhalten zu implementieren, und die Klasse 'visited' vorab per JS zu ergänzen (beim nächsten Reload müsste sie ja dann eh bereits serverseitig vorhanden sein)?

                Das wäre möglich und aus meiner Sicht sinnvoll, kollidiert aber u.U. mit gewünschtem Verhalten.

                Kollidiert mit deinem CSS (Zeile 535):

                #root a .date {  
                   color: inherit;  
                }
                

                Ob auch noch an anderer Stelle, hab' ich jetzt erstmal nicht weiter geguckt.

                Gruß
                Gunther

            2. Hallo

              Es filtert lediglich anhand des Klassennamens 'visited'.

              … wie ich an anderer Stelle vermutete. :-)

              Dafür brauchts einen Reload (oder das klicken des „als gelesen markieren”-Häckchens, da wird via HTTP request der Schnipsel für den Thread vom Server geladen).

              Also würde die "Empfehlung" lauten, Postings nicht in einem separaten Tab zu öffnen, und den Link 'Forum' zu klicken, um auf die Hauptseite zurückzugehen?

              Das würde das Feature „Tabbed Browsing“ so ziemlich aller nicht ganz uralten Browser ad absurdum führen. Mach das mal jemandem, der das, wie ich seit über 10 Jahren, ständig nutzt, klar. Viel Spaß. :-)

              Oder würde es "Sinn machen", quasi das von Auge gewünschte Verhalten zu implementieren, und die Klasse 'visited' vorab per JS zu ergänzen (beim nächsten Reload müsste sie ja dann eh bereits serverseitig vorhanden sein)?

              *Wenn* das umgesetzt werden sollte, dann wohl so. Man braucht ja beim Event nur zu prüfen, ob die Klasse .visited existiert und sie, falls das nicht der Fall ist, zu setzen.

              Andere Frage:
              Sehe ich das richtig, dass es keine andere Möglichkeit gibt ein einzelnes Posting als gelesen zu markieren, als dieses zu laden (also vom Server anzufordern)?

              Ja

              Tschö, Auge

              --
              Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
              Terry Pratchett, "Wachen! Wachen!"
              ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
              Veranstaltungsdatenbank Vdb 0.3
              1. Hallo Auge!

                Es filtert lediglich anhand des Klassennamens 'visited'.

                … wie ich an anderer Stelle vermutete. :-)

                Jep, hast du genau richtig vermutet ...! ;-)

                Oder würde es "Sinn machen", quasi das von Auge gewünschte Verhalten zu implementieren, und die Klasse 'visited' vorab per JS zu ergänzen (beim nächsten Reload müsste sie ja dann eh bereits serverseitig vorhanden sein)?

                *Wenn* das umgesetzt werden sollte, dann wohl so. Man braucht ja beim Event nur zu prüfen, ob die Klasse .visited existiert und sie, falls das nicht der Fall ist, zu setzen.

                Siehe https://forum.selfhtml.org/?t=218508&m=1505283

                Gruß
                Gunther

  9. Hallo

    Noch ein Bugreport, obwohl ich nicht weiß, ob das von deinem Skript kommt. Mir ist zumindest nicht aufgefallen, dass das Folgende vor der Umstellung auf dein Skript so passiert wäre. Wenn es nicht dein Skript ist, möge man mir berichten, wo die Meldung hin soll.

    Vorausgesetzt sei, dass ich das JS, um gleichbleibende Postingtitel auszublenden, aktiviert habe. Es werden also neben dem Titel des Eröffnungspostings nur jene Postingtitel angezeigt, in denen sich die Kategorie oder der Titel selbst geändert hat. Wenn ich über das Häckchensymbol hinter dem Eröffnungsposting eines Threads diesen als vollständig gelesen markiere, werden die geänderten Postingtitel nicht mehr angezeigt.

    Kommen sich die beiden Skripte eventuell an dieser Stelle in die Quere?

    Tschö, Auge

    --
    Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
    Terry Pratchett, "Wachen! Wachen!"
    ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
    Veranstaltungsdatenbank Vdb 0.3
    1. Hallo

      Noch ein Bugreport, obwohl ich nicht weiß, ob das von deinem Skript kommt.

      Mittlerweile weiß ich, dass das nichts mit deinem Skript zu tun hat. Auch mit dem normalen Forums-JS werden die Änderungen, die mit der Verkürzung der Texte der Postinglinks einhergehen, mit der Gelesen-Markierung überschrieben.

      Tschö, Auge

      --
      Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
      Terry Pratchett, "Wachen! Wachen!"
      ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
      Veranstaltungsdatenbank Vdb 0.3
      1. Om nah hoo pez nyeetz, Auge!

        Noch ein Bugreport, obwohl ich nicht weiß, ob das von deinem Skript kommt.

        Mittlerweile weiß ich, dass das nichts mit deinem Skript zu tun hat. Auch mit dem normalen Forums-JS werden die Änderungen, die mit der Verkürzung der Texte der Postinglinks einhergehen, mit der Gelesen-Markierung überschrieben.

        Ja, das kann ich bestätigen. Das JavaScript ersetzt einfach die vorhandenen Klassen, etwa "title geändert" durch "visited".

        Matthias

        --
        Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Marl und Marlboro man.

        1. Om nah hoo pez nyeetz, Matthias Apsel!

          Ja, das kann ich bestätigen. Das JavaScript ersetzt einfach die vorhandenen Klassen, etwa "title geändert" durch "visited".

          Man könnte innerhalb der Funktion

          /* {{{ Threads als gelesen markieren */  
          function visited(tid) {  
            if(!xmlhttp) return true;  
            
            var date = new Date();  
            var li   = document.getElementById('t'+tid);  
            var list = li.parentNode;  
            var uri  = forum_base_url+'?mv='+tid+'&t='+tid+'&mode=xmlhttp&unique='+date.getTime();  
            if(csrftoken) uri += "&csrftoken=" + encodeURIComponent(csrftoken);  
            
            var cnt  = xmlhttp_get_contents(xmlhttp,uri,null,null);  
            
            var el   = document.createElement('div');  
            el.innerHTML = cnt;  
            
            list.replaceChild(el.getElementsByTagName('li')[0],li);  
            return false;  
          }
          

          diese Funktionen

          // geänderte Kategorien und titel  
          $(document).ready(function(){  
          	$('#root').addClass('js');  
          	$('.thread-start > ul ul .category, .thread-start > ul ul .cathigh').each(function(){  
          		if ($(this).html() != $(this).parents().eq(4).find(".category, .cathigh").first().html()) $(this).addClass('geändert');  
          	})  
            
          	$('.thread-start > ul ul .title').each(function(){  
          		if ($(this).html() != $(this).parents().eq(4).find(".title").first().html()) $(this).addClass('geändert');  
          	})  
          })  
            
          // TO hervorheben  
          $(document).ready(function(){  
          	var $author = $('.thread-start .author').first().html();  
          	$('.thread-start > ul ul .author').each(function(){  
          		if ($(this).html() == $(this).parents('.thread-start').find('.author').first().html()) $(this).addClass('to');  
          	})  
          	$('.nachricht-autor > strong:first-child, .nachricht-autor > a > strong, .antwort-auf > strong + a + strong').each(function(){  
          		if ($(this).html() == $author) $(this).addClass('to');  
          	})  
          })
          

          aufrufen. Allerdings ist da noch etwas Umschreibearbeit notwendig. Zum Beispiel brauchen die Funktionen einen Namen, damit sie aufgerufen werden können.

          Also, wenn du magst, Auge ;-)

          Matthias

          --
          Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Lebensmittel und Lebensmittelpunkt.

          1. Hallo

            Om nah hoo pez nyeetz, Matthias Apsel!

            Oh, ein Selbstgespräch. :-)

            Ja, das kann ich bestätigen. Das JavaScript ersetzt einfach die vorhandenen Klassen, etwa "title geändert" durch "visited".

            Man könnte innerhalb der Funktion

            /* {{{ Threads als gelesen markieren */

            function visited(tid) {
              if(!xmlhttp) return true;

            var date = new Date();
              var li   = document.getElementById('t'+tid);
              var list = li.parentNode;
              var uri  = forum_base_url+'?mv='+tid+'&t='+tid+'&mode=xmlhttp&unique='+date.getTime();
              if(csrftoken) uri += "&csrftoken=" + encodeURIComponent(csrftoken);

            var cnt  = xmlhttp_get_contents(xmlhttp,uri,null,null);

            var el   = document.createElement('div');
              el.innerHTML = cnt;

            list.replaceChild(el.getElementsByTagName('li')[0],li);
              return false;
            }

              
            Bis `var cnt = xmlhttp_get_contents()`{:.language-javascript} kann ich dem Code folgen. Es werden ein paar Variablen deklariert, die die ID des Threads ermitteln, ein Datum generieren und damit einen URI zusammenbauen. Schlussendlich wird ein request abgesetzt. So weit, so gut.  
              
            Aber wo ist hernach das div, in das der Rückgabewert des Requests eingefügt wird? Ich habe gerade einen thread mit ungelesenen Postings als gelesen markiert, dann den bereich markiert und mir den generierten Quelltext angeschaut. Weit und breit kein div in Sicht …!?  
              
            
            > diese Funktionen  
            >   
            > ~~~javascript
            
            // geänderte Kategorien und titel  
            
            > $(document).ready(function(){  
            > 	$('#root').addClass('js');  
            > 	$('.thread-start > ul ul .category, .thread-start > ul ul .cathigh').each(function(){  
            > 		if ($(this).html() != $(this).parents().eq(4).find(".category, .cathigh").first().html()) $(this).addClass('geändert');  
            > 	})  
            >   
            > 	$('.thread-start > ul ul .title').each(function(){  
            > 		if ($(this).html() != $(this).parents().eq(4).find(".title").first().html()) $(this).addClass('geändert');  
            > 	})  
            > })  
            >   
            > // TO hervorheben  
            > $(document).ready(function(){  
            > 	var $author = $('.thread-start .author').first().html();  
            > 	$('.thread-start > ul ul .author').each(function(){  
            > 		if ($(this).html() == $(this).parents('.thread-start').find('.author').first().html()) $(this).addClass('to');  
            > 	})  
            > 	$('.nachricht-autor > strong:first-child, .nachricht-autor > a > strong, .antwort-auf > strong + a + strong').each(function(){  
            > 		if ($(this).html() == $author) $(this).addClass('to');  
            > 	})  
            > })
            
            

            aufrufen. Allerdings ist da noch etwas Umschreibearbeit notwendig. Zum Beispiel brauchen die Funktionen einen Namen, damit sie aufgerufen werden können.

            Wenn sie denn einen Namen brauchen, brauchen sie den auch an allen anderen Ecken und Enden, an denen sie aufgerufen werden, so sie dort aufgerufen werden, oder?

            Also, wenn du magst, Auge ;-)

            Hatte ich schon gesagt, dass …

            Mal etwas anderes. Ein kleines Rätsel:

            Der Thread ist als vollständig gelesen markiert und zugeklappt. Was passt nicht zum Rest?

            <li class="thread-start" id="t218548">  
             <ul>			  
              <li class="visited" id="m1505322">  
               <a href="#" title="Thread aufklappen" class="link-thread-aufklappen" onclick="return snap('218548','open');">  
                <img src="/forum/ordner_zu.png" alt="Thread aufgeklappt" height="13" width="18">  
               </a>  
              <!-- … -->
            

            Tschö, Auge

            --
            Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
            Terry Pratchett, "Wachen! Wachen!"
            ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
            Veranstaltungsdatenbank Vdb 0.3
            1. Om nah hoo pez nyeetz, Auge!

              Wenn sie denn einen Namen brauchen, brauchen sie den auch an allen anderen Ecken und Enden, an denen sie aufgerufen werden, so sie dort aufgerufen werden, oder?

              Sie werden als anonyme Funktionen nur einmal ausgeführt.

              Möglicherweise funktioniert bereits

              /* {{{ Threads als gelesen markieren */

              function visited(tid) {
                if(!xmlhttp) return true;

              var date = new Date();
                var li   = document.getElementById('t'+tid);
                var list = li.parentNode;
                var uri  = forum_base_url+'?mv='+tid+'&t='+tid+'&mode=xmlhttp&unique='+date.getTime();
                if(csrftoken) uri += "&csrftoken=" + encodeURIComponent(csrftoken);

              var cnt  = xmlhttp_get_contents(xmlhttp,uri,null,null);

              var el   = document.createElement('div');
                el.innerHTML = cnt;

              list.replaceChild(el.getElementsByTagName('li')[0],li);

              ~~~javascript
                mark_changed_titles_and_cats();  
              
              

              return false;

              }

                
              
              > Der Thread ist als vollständig gelesen markiert und zugeklappt. Was passt nicht zum Rest?  
              >   
              > ~~~html
              
              <li class="thread-start" id="t218548">  
              
              >  <ul>			  
              >   <li class="visited" id="m1505322">  
              >    <a href="#" title="Thread aufklappen" class="link-thread-aufklappen" onclick="return snap('218548','open');">  
              >     <img src="/forum/ordner_zu.png" alt="Thread aufgeklappt" height="13" width="18">  
              >    </a>  
              >   <!-- … -->
              
              

              Das alt-Attribut. :-D Ich hoffe, ich vergess das nicht so schnell.

              Matthias

              --
              Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Grat und Gratifikation.

              1. Om nah hoo pez nyeetz, Matthias Apsel!

                Das alt-Attribut. :-D Ich hoffe, ich vergess das nicht so schnell.

                erledigt ;-)

                Matthias

                --
                Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Ping und Pinguin.

  10. Hallo werte Selfgemeinde!

    Aufgrund der hier im Thread geäußerten Wünsche im Bezug auf das Skript (insbesondere von Auge), habe ich das Skript entsprechend erweitert.

    Außerdem bin ich dazu übergegangen, die jeweils aktuellste Version unter 'forum-latest.js' anzubieten!

    Wer also keine spezielle Version des Skripts, sondern immer den neuesten Stand verwenden möchte, der braucht jetzt in seinen Benutzer-Einstellungen unter Eigene JS-Datei nur noch

    http://pilz-privat.de/selfhtml/forum-latest.js

    einbinden!

    Wer explizit diese Version verwenden möchte, der muss die Datei

    http://pilz-privat.de/selfhtml/forum-1.2.js

    einbinden.

    Oder wem das alles zu viel "Schnickschnack" ist, der kann auch weiterhin bei der Vorgängerversion

    http://pilz-privat.de/selfhtml/forum-1.1.js

    bleiben.

    Die Version beinhaltet auch noch eine Reihe anderer Änderungen & Ergänzungen:

    • Wenn die Option "Threads mit ungelesenen Beiträgen automatisch öffnen"_nicht_aktiviert ist, dann wird der Kopf von Threads mit ungelesenen Beiträgen farblich hervorgehoben

    • Die Bereiche BEITRÄGE und TIPPS ZUM FORUM im Forum-Kopf lassen sich jetzt auch zuklappen, wobei die Links unter BEITRÄGE_immer_angezeigt werden.

    • Wenn Postings jetzt in einem neuen Tab geöffnet werden, so werden diese direkt per JS als gelesen (visited) markiert, und falls der Thread an sich zugeklappt ist, und es dann keine ungelesenen Beiträge mehr gibt, wird dieser auch sofort zugeklappt - ohne Reload der Seite!

    Ich würde mich freuen, wenn es vielleicht mal einige von euch (zumindest testweise) ausprobieren würden und hier ihr Feedback posten würden, damit wir evt. noch vorhandenen Fehlern möglichst schnell auf die Spur kommen - danke!

    Gruß
    Gunther

  11. Mahlzeit,

    mir ist ein kleines Problem aufgefallen:

    Wenn ich alle Threads als gelesen markiere und dann nach einer Zeit auf den "Aktualisiern"-Button klicke, werden wieder alle ungelesenen Beiträge als gelesen markiert, ich vermute, mav=1 wird beim Nachladen mit übergeben. Sollte geändert werden.

    Ich würde eh sagen, dass es nach dem alles gelesen markieren eine Weiterleitung auf die Forum-Hauptseite gibt, da ich (und da bin ich vermutlich nicht allein) beim Runterfahren des Rechners die Browser nicht schliessen. Beim wieder herstellen der Browserfenster wird dann durch mav=1 wieder jeder neue Beitrag als gelesen markiert.

    Klar handelt es sich quasi um eine Fehlbedienung, aber durch wenig Aufwand könnte man die praktisch unmöglich machen ;)

    --
    42
    1. Hallo M.!

      mir ist ein kleines Problem aufgefallen:

      Wenn ich alle Threads als gelesen markiere und dann nach einer Zeit auf den "Aktualisiern"-Button klicke, werden wieder alle ungelesenen Beiträge als gelesen markiert, ich vermute, mav=1 wird beim Nachladen mit übergeben. Sollte geändert werden.

      Du meinst den Link unter Optionen (nur um Missverständnisse auszuschließen)?
      Ja, der gehört fest zum Forum und übergibt die Parameter per GET, weshalb die in der Adresszeile stehen bleiben, und beim Klick auf den Aktualisieren Button, der nur einen Reload der (_aktuellen_) Seite ausführt, erneut ausgeführt werden.

      Ich würde eh sagen, dass es nach dem alles gelesen markieren eine Weiterleitung auf die Forum-Hauptseite gibt, da ich (und da bin ich vermutlich nicht allein) beim Runterfahren des Rechners die Browser nicht schliessen. Beim wieder herstellen der Browserfenster wird dann durch mav=1 wieder jeder neue Beitrag als gelesen markiert.

      Ja, das kann ich noch einbauen (erscheint mir auch mehr als sinnvoll)! ;-)

      Klar handelt es sich quasi um eine Fehlbedienung, aber durch wenig Aufwand könnte man die praktisch unmöglich machen ;)

      Nö, würd' ich nicht sagen. Eher um eine "Fehlfunktion" des Foren-Skripts.

      Danke für dein Feedback! :-)

      Ich baue das mit ins Script ein (aber erst morgen), und poste hier, wenn's drin ist (in der 'forum-latest.js').

      Gruß
      Gunther

      1. Mahlzeit,

        Du meinst den Link unter Optionen (nur um Missverständnisse auszuschließen)?

        Genau den mein ich.

        Nö, würd' ich nicht sagen. Eher um eine "Fehlfunktion" des Foren-Skripts.

        Ja, oder so. Zumindest ein Mangel, der eine Fehlbedienung ermöglicht.

        Ich baue das mit ins Script ein (aber erst morgen), und poste hier, wenn's drin ist (in der 'forum-latest.js').

        Super. Hab die mal eingebunden. Wenn das behoben ist, muss ich mich nicht mehr ärgern, wenn mir das passiert ;)

        --
        42
        1. Hallo M.!

          Ich baue das mit ins Script ein (aber erst morgen), und poste hier, wenn's drin ist (in der 'forum-latest.js').

          Super. Hab die mal eingebunden. Wenn das behoben ist, muss ich mich nicht mehr ärgern, wenn mir das passiert ;)

          Ist drin ...! ;-)

          Gruß
          Gunther

          1. Mahlzeit,

            Ist drin ...! ;-)

            Macht dein Script nach dem "alles gelesen" markieren einen Reload auf die Startseite oder wurde das am Forum selbst auch geändert?

            --
            42
            1. Mahlzeit,

              Ist drin ...! ;-)

              Macht dein Script nach dem "alles gelesen" markieren einen Reload auf die Startseite

              Ja, das Script sendet den Link per XMLHttpRequest an den Server und wartet auf die Erledigt-Meldung. Anschließend wird die aktuelle Seite (also die Forums-Hauptseite) neu geladen.

              oder wurde das am Forum selbst auch geändert?

              Am Foren-Skript wurde nichts geändert.
              Ich glaube auch, dass Christian genug mit dem neuen Forum zu tun hat, und an dem "alten" hier nichts mehr ändert ...! ;-)

              Warum?
              Ist das jetzt nicht das von dir gewünschte Verhalten?

              Gruß
              Gunther

              1. Mahlzeit,

                Warum?
                Ist das jetzt nicht das von dir gewünschte Verhalten?

                Genau so macht das Sinn :)
                Ich hab nur nachgefragt, um feststellen zu können ob dein Script richtig funktioniert. Und wenn am Forum selbst nichts geändert wurde, arbeitet dein Script zufriedenstellend :)

                --
                42
                1. Mahlzeit,

                  Warum?
                  Ist das jetzt nicht das von dir gewünschte Verhalten?

                  Genau so macht das Sinn :)
                  Ich hab nur nachgefragt, um feststellen zu können ob dein Script richtig funktioniert. Und wenn am Forum selbst nichts geändert wurde, arbeitet dein Script zufriedenstellend :)

                  Danke!
                  Freut mich zu hören ..., so soll es ja auch sein. ;-)

                  Gruß
                  Gunther

  12. Om nah hoo pez nyeetz, Gunther!

    Forum-Kopf:
    Im Kopfbereich des Forums lassen sich etliche "Blöcke" auf-/ zuklappen.

    Der Chrome stellt die Dreiecke nicht vernünftig dar, Op 24 dito (â–² / â–¼),
    IE11 und Op12 rendern gar keine Dreiecke.

    Matthias

    --
    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Lake und Laken.

    1. Hallo

      Der Chrome stellt die Dreiecke nicht vernünftig dar, Op 24 dito (â–² / â–¼),

      dito FF33 und 36

      Tschüß
      Matthias

    2. Hallo Matthias!

      Forum-Kopf:
      Im Kopfbereich des Forums lassen sich etliche "Blöcke" auf-/ zuklappen.

      Der Chrome stellt die Dreiecke nicht vernünftig dar, Op 24 dito (â–² / â–¼),
      IE11 und Op12 rendern gar keine Dreiecke.

      Hmmm ..., ist ein Problem mit der Zeichenkodierung.
      Versteh' ich aber nicht ganz, denn bei mir ist sowohl im FF, als auch im Chrome alles i.O.

      Die CSS-Datei ist in UTF-8 kodiert, und beinhaltet auch ein: @charset "utf-8";
      Ansonsten kommen die Dreiecke aus:

      .side-menu-heading.open span:before,  
      .aside-heading.open span:before {  
        content: '▲';  
      }  
        
      .side-menu-heading.close span:before,  
      .aside-heading.close span:before {  
        content: '▼';  
      }  
      
      

      Ideen/ Vorschläge? ;-)

      Gruß
      Gunther

      1. Om nah hoo pez nyeetz, Gunther!

        Hmmm ..., ist ein Problem mit der Zeichenkodierung.
        Versteh' ich aber nicht ganz, denn bei mir ist sowohl im FF, als auch im Chrome alles i.O.

        Windows?

        Bei mir sah es auch in den Entwicklertools so aus:

        [code lang=css].side-menu-heading.open span:before,
        .aside-heading.open span:before {
          content: 'â–²';
        }

        Matthias

        --
        Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Hang und Hangar.

        1. Om nah hoo pez nyeetz, Matthias!

          Teste jetzt mal (Cache leeren).

          Hmmm ..., ist ein Problem mit der Zeichenkodierung.
          Versteh' ich aber nicht ganz, denn bei mir ist sowohl im FF, als auch im Chrome alles i.O.

          Windows?

          Ich weiß grad nicht, was du mir damit sagen willst ...!?

          Gruß
          Gunther

          1. Om nah hoo pez nyeetz, Gunther!

            Teste jetzt mal (Cache leeren).

            Unverändert, bzw. an einem anderen Rechner als gestern abend.

            Windows?
            Ich weiß grad nicht, was du mir damit sagen willst ...!?

            Es könnte betriebssystemspezifisch sein.

            Matthias

            --
            Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Grill und Grille.

            1. Hallo

              Windows?
              Ich weiß grad nicht, was du mir damit sagen willst ...!?

              Es könnte betriebssystemspezifisch sein.

              Es kann auch rechnerspezifisch sein (auch wenn das bei dir auf zwei verschiedenen Rechnern auftritt). bei meinen Tests in der letzten Woche wurden die Pfeile sowohl auf dem Windows-7-Rechner als auch auf dem mit Lubuntu 14.04 angezeigt.

              Tschö, Auge

              --
              Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
              Terry Pratchett, "Wachen! Wachen!"
              ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
              Veranstaltungsdatenbank Vdb 0.3
              1. Om nah hoo pez nyeetz, Auge!

                Es kann auch rechnerspezifisch sein (auch wenn das bei dir auf zwei verschiedenen Rechnern auftritt). bei meinen Tests in der letzten Woche wurden die Pfeile sowohl auf dem Windows-7-Rechner als auch auf dem mit Lubuntu 14.04 angezeigt.

                In der letzten Woche hatte ich die Pfeile auch noch.

                PS: Soll ich dich mitnehmen nach Nürnberg?

                Matthias

                --
                Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Not und Note.

                1. Hallo

                  PS: Soll ich dich mitnehmen nach Nürnberg?

                  Danke für das Angebot, aber ich werde, selbst wenn es Lebkuchen regnete, nicht dabei sein.

                  Tschö, Auge

                  --
                  Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                  Terry Pratchett, "Wachen! Wachen!"
                  ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                  Veranstaltungsdatenbank Vdb 0.3
            2. Om nah hoo pez nyeetz, Matthias!

              Teste jetzt mal (Cache leeren).

              Unverändert, bzw. an einem anderen Rechner als gestern abend.

              Welche CSS-Datei bindest du denn ein?
              Dir ist schon klar, dass du aktuell noch die http://pilz-privat.de/selfhtml/forum-js.css nehmen musst? ;-)

              Windows?
              Ich weiß grad nicht, was du mir damit sagen willst ...!?

              Es könnte betriebssystemspezifisch sein.

              Und ich dachte bisher, dass UTF-8 UTF-8 ist ...! :-P

              Gruß
              Gunther