Calocybe: (ZU DIESEM FORUM) Wie waer's mit Cookies fuer's Forum?!

Hey Loits!

Ich hab grad nen halben Kasten Bier ausgesoffen und zwei grosse Eimer dazu geraucht, und jetzt ist mir ne unheimlich coole Idee eingefallen!!! Ich faende das naemlich total nett wenn Ihr das hier machen koenntet, dass mein Name und die Emailadresse in nem Cookie gespeichert werden, damit ich die nicht immer eintippen muss!! Is halt 'n bisschen doof fuer die Feinmotorik, wenn ich hundert mal am Tag den selben Scheiss eintippen muss, na Ihr kennt das ja! Koenntet Ihr das mal machen, ja???? Ich waer Euch da naemlich auch ungefaehr echt ganz dankbar, bis ans Lebensende oder so!!!

Ok, Ihr nimmermueden Verbesserungsvorschlaeger und Ihr ewig genervten Forumseminenzen, here is what Calocybe brings to you. Jeder der die Cookies unbedingt braucht, lege sich eine neue Bookmark an, nennt diese z.B. "Save SLFHTML Forum Posting Values" und kopiere diesen Code in das URL-Feld:

-------->>>
javascript:function SaveSFPValues() { var fs, fc, i, c, exp; fc = (fs = "name,email,url,img".split(',')).length; c = "SelfForumPostingValues="; for (i=0; i<fc; i++) { c += fs[i] + "=" + escape(document.forms[0].elements[fs[i]].value); if (i < fc - 1) c += "&"; } exp = new Date(); exp.setTime(exp.getTime() + 3.1536E10); document.cookie = c + "; EXPIRES=" + exp.toGMTString() + "; PATH=" + "/selfaktuell"; }; void(SaveSFPValues());
<<<--------

DAS MUSS ALLES IN EINER ZEILE STEHEN! Die Zeilenumbrueche sind also vorher in einem Texteditor zu entfernen.

Dann lege man sich noch eine Bookmark an, nenne sie diesmal "Load SLFHTML Forum Posting Values" oder gebe einen aehnlich aussagekraeftigen Namen, und schreibt in das URL-Feld diesmal diesen Code (wiederum vorher die Zeilenumbrueche entfernen):

-------->>>
javascript:function LoadSFPValues() { var cs, i, vs = [], fs, fc, CN = "SelfForumPostingValues="; if (!(cs = document.cookie.split(/;\s*/)).length) return; for (i in cs) if (cs[i].indexOf(CN) == 0) { vs = cs[i].slice(CN.length).split(/&/); break; } fc = (fs = "name,email,url,img".split(',')).length; if (vs.length != fc) return; for (i=0; i<fc; i++) { for (j=0; j<fc; j++) { if (vs[j].indexOf(fs[i] + "=") == 0) document.forms[0].elements[fs[i]].value = unescape(vs[j].slice(fs[i].length + 1)); }}}; void(LoadSFPValues());
<<<--------

Vorsicht! Das ist JavaScript 1.2 Code, wird also nicht mit Browsern unter Netscape 4 oder IE 4.01 (?) laufen.

Durch Auswaehlen der Bookmarks bei einem geladenen Posting werden jetzt entweder die momentan eingetragenen Werte in einem Cookie gespeichert, bzw. von dort ausgelesen und in die Formularfelder eingetragen. So kommen nun auch die Leute, die ihrem armen Rechner den IE5 nicht antun wollten, auch in den Genuss der Faulheit.

Jetzt werden einige paranoisch veranlagte Menschen sicher bemerken, dass dieser Cookie bei jedem Seitenaufruf an den teamone-Server mitgeschickt wird, genauer gesagt, bei jeder Seite unterhalb von /selfaktuell/. Dann koennte ja der boese Stefan hergehen und diese Cookies sammeln und dann auch noch unser Surfverhalten analysieren. Und dann verkauft er die gewonnenen Erkenntnisse bestimmt an Microsoft oder die CIA oder aehnlich freudeverbreitende Vereine. Wer damit wirklich ein Problem hat, kann die Komfortversion eben nicht benutzen und nimmt stattdessen diese:

-------->>>
javascript:function LoadFixSFPValues() { with (document.forms[0]) { elements['name'].value = "Ich bin's!"; elements['email'].value = "myself@domain.tld"; elements['url'].value = "http://"; elements['img'].value = "http://"; }}; void(LoadFixSFPValues());
<<<--------

Hier sind die einzutragenden Daten hardcoded im Quelltext, werden also nicht in einem Cookie abgelegt. Hat eigentlich nur den Nachteil, dass man z.B. bei einer Aenderung der EMail-Adresse oder der Homepage die Bookmark selbst editieren muss. Der Name aendert sich ja eher selten. Und vielleicht laeuft das sogar mit JavaScript1.0.

More infos on bookmarklets: </selfhtml/sfarchiv/1999_2/t02986.htm>, </selfhtml/sfarchiv/1999_2/t03647.htm>, http://www.bookmarklets.com/.

Na dann viel Spass
Calocybe

P.S. Hier noch der Originalquelltext, auf dem die obigen Bookmarklets basieren, denn natuerlich habe ich mir das nicht in dieser kryptischen Form ausgedacht, auch wenn manche andere Forumsteilnehmer das vermutlich machen wuerden *g*. Vielleicht will ja noch jemand meckern, korrigieren, optimieren oder einfach nur nachvollziehen.

<SCRIPT LANGUAGE="JavaScript1.2"><!--
    var FIELDS = "name,email,url,img";
    var TIME_TO_LIVE = 365 * 24 * 3.6E6;    // one year (=3.1536E10)
    var VALID_COOKIE_PATH = "/selfaktuell"; // for a file loaded from HDD (that is, offline) use just a /
    var COOKIE_NAME = "SelfForumPostingValues=";

function LoadSFPValues() {
        var cookies, i;
        var values = [];
        var fields, field_count;

if (!(cookies = document.cookie.split(/;\s*/)).length) return;
        for (i in cookies)
            if (cookies[i].indexOf(COOKIE_NAME) == 0) {
                values = cookies[i].slice(COOKIE_NAME.length).split(/&/);
                /* alert("Using cookie " + i + ": " + cookies[i]); */
                break;
            }

field_count = (fields = FIELDS.split(',')).length;
        if (values.length != field_count) return;

for (i=0; i<field_count; i++) {
            for (j=0; j<field_count; j++) {
                if (values[j].indexOf(fields[i] + "=") == 0)
                    document.forms[0].elements[fields[i]].value = unescape(values[j].slice(fields[i].length + 1));
            }
        }
    }

function SaveSFPValues() {
        var fields, field_count;
        var i;
        var cookie, expire;

field_count = (fields = FIELDS.split(',')).length;
        cookie = COOKIE_NAME;

for (i=0; i<field_count; i++) {
            cookie += fields[i] + "=" + escape(document.forms[0].elements[fields[i]].value);
            if (i < field_count - 1) cookie += "&";
        }

expire = new Date();
        expire.setTime(expire.getTime() + TIME_TO_LIVE);
        document.cookie = cookie + "; EXPIRES=" + expire.toGMTString() + "; PATH=" + VALID_COOKIE_PATH;
    }

function LoadFixSFPValues() {
        with (document.forms[0]) {
            elements['name'].value = "Ich bin's!";
            elements['email'].value = "myself@domain.tld";
            elements['url'].value = "http://";
            elements['img'].value = "http://";
        }
    }
//--></SCRIPT>

  1. Hallo Du!

    Ich hab grad nen halben Kasten Bier ausgesoffen und zwei grosse Eimer dazu geraucht, und jetzt ist mir ne unheimlich coole Idee eingefallen!!!

    ««

    Mir ist auch gerade die Idee des Jahrtausends gekommen!:
    Trink noch mal nen halben Kasten Bier und rauche noch mal zwei grosse eimner dazu, dann VERGISS die cookies.

    Grüße
    Thomas

    PS: ich kann eigentlich gar nicht glauben, daß du es bist Roland!

    1. Hallo!

      tja ... so ist das mit unüberlegt handeln: das Reizwort "cookies" war genug für mich, um nicht wirklich alles durchzulesen.
      tut mir leid dafür.

      Wie dem auch sein: eins bleibt: cookies nehme ich nur dann an, wenn ich sie essen kann! ;-). Wie es andere halten/machen ist ihre Sache.

      Grüße
      Thomas

  2. Hallo Calocybe

    fuer diese Heldentat hast du dir eindeutig den Titel "Forums-User des Monats" verdient ;-)
    Endlich mal ein Problem weniger, und wenn noch mal irgendjemand mit dem Thema hier ankommt, werden wir genuesslich den Link auf diese aufregende Message setzen ;-)

    viele Gruesse
      Stefan Muenz

  3. Hi Calocybe,
    ich habe diese Aufgabe ein wenig anders gelöst. Ich habe mir die Seite Gespeichert und dann in die Felder meine Angaben gespeichert und die Seite in Meine Links Leiste gesetzt.

    Also :

    <h2 class="Sh2"><a class="an" name="a1">Neue Nachricht verfassen</a></h2>

    <P>Mit einer neuen Nachricht wird auch ein neues Thema (neuer Nachrichten-Thread) gestartet. Das ist sinnvoll, um eine Frage zu stellen oder eine neue Diskussion zu entfachen.</P>

    <form method=POST action="http://www.teamone.de/cgi-local/self_forum.pl">
    <table bgcolor=#EEEEEE cellpadding=2 cellspacing=0 border=0>
    <tr>
    <td align=right nowrap valign=top><b>Ihr Name:</b></td>
    <td valign=top><input type=text name="name" value="Jens Müller" size=35 style="width:260px; font-family:Arial,Sans-serif; font-size:10pt"></td>
    </tr><tr>
    <td align=right nowrap valign=top><b>Ihre E-Mail-Adresse:</b></td>
    <td valign=top><input type=text name="email" value="j1mueller@web.de" size=35 style="width:260px; font-family:Arial,Sans-serif; font-size:10pt"></td>
    </tr><tr>

    Es ist zwar nicht ganz so elegant wie deine Lösung jedoch ebenfalls verträglich.

    1. Es ist zwar nicht ganz so elegant wie deine Lösung jedoch ebenfalls verträglich.

      Und wie antwortest Du mit dieser Seite auf ein bestehendes Posting?

  4. hi calocybe,

    -------->>>
    javascript:function LoadFixSFPValues() { with (document.forms[0]) { elements['name'].value = "Ich bin's!"; elements['email'].value = "myself@domain.tld"; elements['url'].value = "http://"; elements['img'].value = "http://"; }}; void(LoadFixSFPValues());
    <<<--------

    danke!
    die sache funzt wunderbar, gefällt mir sogar viel besser als die autocomplete-funktion des ie5, jetzt habe ich oben in den links "nikita" stehen, dort dann nur noch einmal draufklicken und schon stehen überall die richtigen werte (ohne schreibfehler etc. ;-)

    jetzt kann ich ja auch noch "body" vorbelegen <g>

    danke, nikita

  5. Und vielleicht laeuft das sogar mit JavaScript1.0.

    Tut es - in Netscape 3.0!

    *Vielen Dank*, Calocybe - ich werde das im Büro prima brauchen können ...

    1. Und vielleicht laeuft das sogar mit JavaScript1.0.
      Tut es - in Netscape 3.0!

      Schluchz - die Freude währte nur bis zum nächsten Browserstart. Der Bookmarklet-Code scheint zu lang für die Bookmarkdatei des Netscape3 zu sein - er speichert bei mir immer nur einen Teil desselben, und der ist dann natürlich unbrauchbar. :-(((

      1. Hi!  (Welcome back)

        Schluchz - die Freude währte nur bis zum nächsten Browserstart. Der Bookmarklet-Code scheint zu lang für die Bookmarkdatei des Netscape3 zu sein - er speichert bei mir immer nur einen Teil desselben, und der ist dann natürlich unbrauchbar. :-(((

        Uih, und ich dachte, jetzt koennen wir's dem IE3 mal zeigen *g*. Aber da Du die Zeilen fuer URL und IMG sowieso nie ausfuellst, kannst Du diese vielleicht aus dem Code (der dritten Variante) entfernen. Dann sollte es eigentlich passen, so lang ist das Ding ja nun wieder nicht.

        Calocybe