Diskussionen, Lob, Kritik und Verbesserungsvorschläge betreffs der Quotenmeter-Hauptseite und des Forums.
#1290695
Nerdus hat geschrieben:Hab es mir gerade mal angesehen, scheint aber doch etwas kniffliger zu sein.
Es lässt sich ganz einfach abfragen, ob es ein normaler Klick oder eine Kombination mit der Ctrl-Taste ist, leider gibt es keine verlässliche Möglichkeit, per Javascript einen neuen Tab im Hintergrund zu öffnen. Man kann den Link nur in einem neuen Fenster öffnen lassen und im Browser einstellen, dass in so einem Fall eben ein Tab geöffnet werden soll und kein Fenster – aber der Tab wird dann immer im Vordergrund geöffnet.

Ansonsten gibt es noch prinzipiell die Möglichkeit, zwischen Klicks und Doppelklicks zu unterscheiden (dann müsste man gar nicht erst die normale Klick-Funktion überschreiben) – aber natürlich werden bei einem Doppelklick immer beide Events ausgelöst, der normale Klick genau wie der Doppelklick, da kommt man also auch nicht weit …

Ich schau mal noch ein bisschen.
Danke fürs Anschauen. Das bestätigt mich darin, weshalb es mir selbst auch nicht gelungen ist das entsprechend anzupassen. So wichtig ist es wie gesagt auch nicht, dass du da noch lange Zeit damit verschwenden müsstest. Ich dachte nur, dass das vielleicht ganz einfach möglich sei und ich einfach nicht wusste wie...

Kann man dem Browser nicht sagen "Tabs immer im Hintergrund öffnen"? Oder funktioniert das nur, wenn es wirklich ein Tab und kein "neues Fenster umgewandelt in ein Tab" ist?
#1365486
little_big_man hat geschrieben:[...]

Und zwar nervte es mich immer, dass nach dem Abschicken eines Postings man zuerst noch auf eine so unnötige Zwischenseite weitergeleitet wird, statt direkt zurück zum Thread. Vor allem bei der Quickreply finde ich das enorm störend, weil es dort überhaupt keinen Grund gibt, nicht direkt im Thread zu bleiben und die eigene Antwort sofort dort anzuhängen.

Deshalb hier nun also Code der dafür sorgt, dass man bei einer Quickreply direkt im Thread bleibt:
versteckter Inhalt:
Code: Alles auswählen
var quick = document.getElementById('quickreply');
if (quick != undefined && quick.parentNode != undefined) {
  // always show quickreply
  quick.style.display = "";

  // replace functionality of button "Absenden"
  quick.getElementsByClassName('btnmain')[0].onclick = function () {
    var params = 'subject=' + encodeURIComponent(document.getElementsByName('subject')[0].value) + '&';
    params += 'message=' + encodeURIComponent(document.getElementsByName('message')[0].value) + '&';
    var inputs = quick.getElementsByTagName('tr')[2].getElementsByTagName('td')[0].getElementsByTagName('input');
    for(var i = 0; i < inputs.length; i++) {
      params += inputs[i].name + '=' + inputs[i].value + '&';
    }
    var req = new XMLHttpRequest();
    req.open('POST', quick.parentNode.action, false);
    req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    req.send(params);
    if (req.status == 200 && req.responseText.indexOf('Antwort erstellen') == -1)  {
      var newUrl = req.responseText.substring(req.responseText.indexOf('3;url=') + 6);
      location.href = newUrl.substring(0, newUrl.search('"')).replace(/&/g, '&');
      return false;
    }
  }
}
Und mit diesem Code kommt man beim Abschicken einer regulären Antwort (oder nach dem Editieren eines Postings) direkt zurück in den Thread ohne die Zwischenseite (Dateianhänge sowie die Zusatzoptionen, die man unter der Antwort noch anhäkeln kann, sind vorerst aber noch nicht unterstützt, die habe ich in all den Jahren hier im Forum aber auch noch nie gebraucht):
versteckter Inhalt:
Code: Alles auswählen
var form = document.postform;
if (form != undefined) {
  // replace functionality of buttons "Absenden"
  for (var i = 0; i < form.post.length; i++) {
    form.post[i].onclick = function () {
      var params = 'subject=' + encodeURIComponent(form.subject.value) + '&';
      params += 'message=' + encodeURIComponent(form.message.value) + '&';
      params += 'creation_time=' + form.creation_time.value + '&';
      params += 'form_token=' + form.form_token.value + '&';
      if (form.topic_cur_post_id != undefined) {
        params += 'topic_cur_post_id=' + form.topic_cur_post_id.value + '&';
      }
      if (form.edit_post_message_checksum != undefined) {
        params += 'edit_post_message_checksum=' + form.edit_post_message_checksum.value + '&';
      }
      if (form.edit_post_subject_checksum != undefined) {
        params += 'edit_post_subject_checksum=' + form.edit_post_subject_checksum.value + '&';
      }
      params += 'lastclick=' + form.lastclick.value + '&post=Absenden';

      var req = new XMLHttpRequest();
      req.open('POST', form.action, false);
      req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
      req.send(params);
      if (req.status == 200 && req.responseText.indexOf('Antwort erstellen') == -1)  {
        var newUrl = req.responseText.substring(req.responseText.indexOf('3;url=') + 6);
        location.href = newUrl.substring(0, newUrl.search('"')).replace(/&/g, '&');
        return false;
      }
    }
  }
}
[...]
Hat eigentlich jemand diesen Greasemonkey-Code zum abschicken von Posts ohne Zwischenseite, den ich letzten Herbst mal gespostet habe (unter anderem), bei sich seither mal ausprobiert? Also ich habe in diesem guten halben Jahr jedenfalls keine Probleme damit gehabt (Windows 7 / Firefox), mich würde aber nach wie vor (aus reiner Neugier) interessieren, ob das auch mit anderen Browsern/Betriebssystemen so gut klappt oder ob es dort Probleme gibt.

Meine neuste Idee, falls mir mal wieder langweilig wäre, ist dass es doch schön wäre, wenn ich in meinen angepinnten Tabs, welche immer ins US-, Spiele- und Community-Sub zeigen, immer direkt oben im Tab sehen könnte, wenn es neue Postings gibt. Sprich die Seite müsste sich alle paar Minuten auto-refreshen und dann irgendwie statt dem roten Q-Zeichen etwas anderes darstellen, damit man sieht, dass es neue Beiträge gibt. Keine Ahnung ob das überhaupt möglich ist oder wie man das machen würde, aber vielleicht überlege ich mir da mal was...
Benutzeravatar
von Nerdus
#1365657
little_big_man hat geschrieben:Meine neuste Idee, falls mir mal wieder langweilig wäre, ist dass es doch schön wäre, wenn ich in meinen angepinnten Tabs, welche immer ins US-, Spiele- und Community-Sub zeigen, immer direkt oben im Tab sehen könnte, wenn es neue Postings gibt. Sprich die Seite müsste sich alle paar Minuten auto-refreshen und dann irgendwie statt dem roten Q-Zeichen etwas anderes darstellen, damit man sieht, dass es neue Beiträge gibt. Keine Ahnung ob das überhaupt möglich ist oder wie man das machen würde, aber vielleicht überlege ich mir da mal was...
Das hab ich mal gebastelt :mrgreen:

Steckt allerdings im anderen Script mit drin, müsste es mal rausfummeln. Aber ist eigentlich ganz einfach^^

Edit: So sehen die Tabs dann aus:
Bild

Icons kann man natürlich austauschen^^ War damals nur fix hingebogen.
#1365726
Nerdus hat geschrieben:
little_big_man hat geschrieben:Meine neuste Idee, falls mir mal wieder langweilig wäre, ist dass es doch schön wäre, wenn ich in meinen angepinnten Tabs, welche immer ins US-, Spiele- und Community-Sub zeigen, immer direkt oben im Tab sehen könnte, wenn es neue Postings gibt. Sprich die Seite müsste sich alle paar Minuten auto-refreshen und dann irgendwie statt dem roten Q-Zeichen etwas anderes darstellen, damit man sieht, dass es neue Beiträge gibt. Keine Ahnung ob das überhaupt möglich ist oder wie man das machen würde, aber vielleicht überlege ich mir da mal was...
Das hab ich mal gebastelt :mrgreen:
Ah cool, zwei Dumme - ein Gedanke... 8)

Na dann kann ich mir die Arbeit ja ersparen, wenn du das schon gemacht hast. Ist das in einem Skript drin, welches du hier mal gepostet hast oder hast du das bisher ganz egoistisch für dich behalten? :wink:
Benutzeravatar
von Nerdus
#1365730
So, hier müsste alles drin sein: http://pastebin.com/PmpN4d8S

Dreht auch die Seitentitel um, damit man Tabs leichter unterscheiden kann (also statt »Qtalk.de — Forumstitel« dann »Forumstitel — Qtalk.de«) und zeigt die Anzahl der ungelesenen Foren/Themen im Seitentitel (zum Beispiel »[3] • Forumstitel — Qtalk.de« bei 3 ungelesenen Themen).

Seiten werden alle fünf Minuten neu geladen.

Was du nicht brauchst, kannst du ja rauswerfen^^ Beziehungsweise auf bestimmte URLs beschränken, beim Verfassen von neuen Beiträgen ist das automatische Neu-Laden eher unpraktisch :wink:
#1365732
Nerdus hat geschrieben:So, hier müsste alles drin sein: http://pastebin.com/PmpN4d8S

Dreht auch die Seitentitel um, damit man Tabs leichter unterscheiden kann (also statt »Qtalk.de — Forumstitel« dann »Forumstitel — Qtalk.de«) und zeigt die Anzahl der ungelesenen Foren/Themen im Seitentitel (zum Beispiel »[3] • Forumstitel — Qtalk.de« bei 3 ungelesenen Themen).

Seiten werden alle fünf Minuten neu geladen.

Was du nicht brauchst, kannst du ja rauswerfen^^ Beziehungsweise auf bestimmte URLs beschränken, beim Verfassen von neuen Beiträgen ist das automatische Neu-Laden eher unpraktisch :wink:
Super, werde ich dann morgen mal ausprobieren.

Und ja, das mit dem nicht neu laden beim Verfassen von Beiträgen ist ein guter Tipp. Das muss definitiv vor "in Betriebnahme" noch rein, sonst könnte mich das Feature plötzlich sehr wütend machen... :wink:
#1365772
Habe das Skript jetzt mal kurz getestet und auf den Thread-Übersichts-Seiten macht es auch genau das, was es soll. Aber ja, bei einem kurzen Test hat sich gezeigt, dass eine noch unabgeschickte Quickreply-Nachricht wieder verschwindet nach 5 Minuten. Daher habe ich das Skript jetzt mal provisorisch nur auf die Thread-Übersichts-Seiten eingeschränkt und das scheint nun soweit zu funktionieren. Danke nochmals dafür!
#1405359
Ich habe nun seit ein paar Monaten meine neuste Skript-Erweiterung im Einsatz, welche mir alle Threads, die mich nicht interessieren, sofort automatisch als gelesen markiert. Zusammen mit dem Auto-Refresh werde ich so also nur noch über neue Beiträge in Threads "informiert" (via dem Ausrufezeichen im Browser-Header-Symbol), welche mich wirklich interessieren. Somit muss ich z.B. nie mehr die ganzen Spiele-Threads, bei denen ich nicht mitspiele, dauernd als gelesen markieren manuell. Das hat sich wirklich super bewährt und spart mir in der Summe sicher eine ganze Menge Zeit.
#1405370
Ganz trivial indem ich alle Threads, die mich nicht interessieren, in eine Liste eintrage, sprich einmalig muss ich mich bei jedem Thread entscheiden, ob ich ihn ignorieren will (quasi meine persönliche Ignore-Liste). Und damit ich im Spiele-Subforum z.B. nicht jede neue Runde eines Spiels immer wieder neu ignorieren muss, schaue ich nur auf die ersten 10 Zeichen im Thread-Titel, was sich bisher bewährt hat, weil die Spiele meist weiter hinten durchnummeriert werden aber immer den gleichen Prefix haben.

(Einzig der Bundesliga-Thread wird nun auch immer als gelesen markiert, obwohl ich nur das Tippspiel ignorieren wollte, aber im Sport-Sub lese ich eh kaum je von daher ist mir das egal...)

Falls du Interesse hast, kann ich den entsprechenden Code auch mal hier reinkopieren...
#1405388
Zuoberst in meinem Skript habe ich die Ignore-Liste eingefügt (habe nur die Spiele als Beispiele drin gelassen, meine eigene Liste ist schon deutlich länger):
versteckter Inhalt:
Code: Alles auswählen
/***************************************************************************************************
 * list of all threads that should be marked as read automatically
 **************************************************************************************************/

var ignoreList = ['«Quotenmet',
                  '7. QM-Turn',
                  'Blitz-Musi',
                  'Bundesliga',
                  'Comunio 13',
                  'F1 - Tipps',
                  'I\'m With S',
                  'I\'m with S',
                  'Kinowette ',
                  'Null Gewin',
                  'QM-Screens',
                  'Quizduell-',
                  'Quotenspie',
                  'Quotenwett',
                  'Screenshot',
                  'Snapshot #',
                  'US Box Off'];
Zuerst wollte ich diese in ein Excel-File auslagern, habe dann aber gemerkt, dass es vom Browser aus sehr viel einfacher ist per about:addons (im Firefox) das Skript zu öffnen um die Liste zu ergänzen anstatt jedes Mal ein Excel-File zu öffnen.

Und dann muss beim Loop über alle Topics die Ingore-Liste geprüft werden:
versteckter Inhalt:
Code: Alles auswählen
// loop through topic links, find topics with unread posts, count them, and attach event listeners to their icons
var topic, topicID, border;
var topics = document.getElementsByClassName('topictitle');
var unreadTopics = 0;
for (i in topics) {
  if (i >= 0) {
    topic = topics[i];
    if (topic != undefined && topic.parentNode != undefined && topic.parentNode.parentNode != undefined) {
      icon = topic.parentNode.parentNode.getElementsByTagName('td')[0].getElementsByTagName('img')[0];

      // check if topic has unread posts
      if (icon.src.indexOf('_unread') != -1) {
        // get topic ID
        topic.href.match(/\&t=([0-9]*)/gi);
        topicID = RegExp.$1
        icon.setAttribute('id', 'topicIcon' + topicID);
        topic.setAttribute('id', 'topic' + topicID);

        // check if topic is in ignore list
        if (ignoreList.indexOf(topic.innerHTML.substr(0, 10)) > -1) {
          // mark topic as read
          var sAJAX = new XMLHttpRequest();
          sAJAX.open('GET','http://www.qtalk.de/forum/viewtopic.php?t=' + topicID + '&start=1000000' + SID, true);
          sAJAX.send();

          // change image, remove first unread post link and change topic link appearance
          icon.src = icon.src.replace(/_unread/, '_read');
          topic.parentNode.getElementsByTagName('a')[1].style.display = 'none';
          topic.style.setProperty ('font-weight', 'normal', 'important');
          topic.parentNode.parentNode.getElementsByTagName('td')[0].style.border = 'none';
          topic.parentNode.parentNode.getElementsByTagName('td')[5].style.border = 'none';
        } else {
          ...
        }
      }
    }
  }
}
Oder hier nochmals mein komplettes Skript:
http://en.file-upload.net/download-1006 ... k.txt.html
Benutzeravatar
von Nerdus
#1448139
Jap, mir sind auch gerade die Augen rausgefallen. Offenbar hat sich was verändert :shock: (auch die Smileys … warum auch immer.) Ich komm aber wahrscheinlich erst nach dem Wochenende dazu, es zu aktualisieren, weil ich die Tage nicht da bin.

Aber ich werd’s auf jeden Fall wieder richten :wink:
#1448608
Super, konnte einiges davon nun auch in mein Skript übernehmen und nun geht das meiste wieder. Muss dann nur noch einige meiner Spezial-Features wieder zum Laufen bringen wie das Auslassen der Zwischenseite beim Erstellen eines Beitrags.

EDIT: Ach, ich merke gerade, dass das jetzt plötzlich standardmässig bereits der Fall ist und mein Code nur auskommentiert werden musste... 8)