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

Beitrag lesen

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>