Informationen mitnehmen über Seiten Weiterschaltung

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Zero
    Contao-Fan
    • 25.05.2010
    • 520

    #1

    Informationen mitnehmen über Seiten Weiterschaltung

    Hallo zusammen,

    Ich habe einige Artikel die mit einem Select Feld ausgewählt werden können. Diese befinden sich innerhalb einer Form welche dann Per Button die Selektierten Einträge anzeigt.

    Mein Problem ist folgendes:
    Wenn ich auf der Seite eins ein paar Artikel ausgewählt habe und dann die Seite zwei auswähle, sind meine Selektierten Artikel logischerweise Weg.

    Ich habe eine Lösungsidee, nur keinen Plan wie ich das umsetzen kann da ich fast keine Ahnung von Javascript habe.
    Wenn ich auf ein Select Feld klicke, dann soll die ID des Ausgewählten Artikels in ein Cookie geschrieben werden. Wie kann ich das machen?
    Es muss mit Javascrpt gehen, das weiß ich. Eventuell ist auch schon alles vorhanden nur weiß ich nicht wie ich das aufrufen kann.

    Kann mir bitte jemand weiterhelfen?
    Falls etwas unverständlich erklärt wurde, bitte nachfragen.

    Danke.
    Gruß
    Andi
    Mein Blog -> brothers-project.de
  • Zero
    Contao-Fan
    • 25.05.2010
    • 520

    #2
    mootools

    Also, ich habe weiter geforscht und bin bei den mootools hängen geblieben.
    Damit lässt sich ja eine Ganze menge erledigen. Hier habe ich eine Art Wiki gefunden: http://mootools.net/docs/core/Utilities/Cookie

    Code:
    <script type="text/javascript">
    var myCookie = Cookie.write('username', 'Harald');
    </script>
    Das klappt. Diesen Code habe ich in "Eigener JavaScript-Code" im Seitenlayout hinzugefügt. Wie bekomme ich es jetzt hin, dass beim klicken eine Checkbox ein Wert in das Cookie geschrieben wird?
    Mein Blog -> brothers-project.de

    Kommentar

    • Zero
      Contao-Fan
      • 25.05.2010
      • 520

      #3
      So ich habe es hin bekommen, dass auf den Klick einer Checkbox sich etwas tut.

      Code von meiner Checkbox:
      HTML-Code:
      <input type="checkbox" id="id,37" value="37" name="index[]" rel="no">
      Javascript:
      Code:
      <script type="text/javascript">
      
      window.addEvent('domready', function() {
          $('id,37').addEvent('click', function() {
              if($('id,37').get('rel') == 'yes')
              {
                  $('id,37').set('rel','no');
                  alert('Yes');
              }
              else
              {
                  alert('No');
                  $('id,37').set('rel','yes');
              }
          });
      });
      </script>
      So. Nun habe ich mein Nächstes Problem:
      Ich habe mehrere Checkboxen auf einer Seite. Ich habe zwar eine Grundstruktur "ID,x" allerdings ist x die ID des Artikels und diese ist für jede Checkbox anders. Kann ich alle IDs mit einem Script abfangen? Ich muss natürlich auch sicherstellen, dass nciht versehentlich irgend ein Anderes Objekt, welches eine ID hat und angeklickt werden kann nicht abgefangen wird.

      Der Javasript Code Funktioniert allerdings weiß ich nicht genau was da vor sich. Kann mir das bitte jemand kommentieren und erklären?
      Zuletzt geändert von Zero; 11.11.2010, 23:08.
      Mein Blog -> brothers-project.de

      Kommentar

      • Zero
        Contao-Fan
        • 25.05.2010
        • 520

        #4
        So, wieder etwas weitergekommen.

        Mein Momentaner Stand:
        Ich schreibe nun den Index der Checkbox in das Cookie und lösche bei erneutem klicken auf die Checkbox den Eintrag wieder aus dem Cookie. Ebenso klappt es, dass bei der Seitenweiterschaltung die Checkboxen vorgewählt werden wie im Cookie hinterlegt.

        Javascript:
        Code:
        <script type="text/javascript">
        // JavaScript Document
        var compareI;
        
        //String Replace
        function str_replace (search, replace, subject, count) {
            // Replaces all occurrences of search in haystack with replace  
            // 
            // version: 1008.1718
            // discuss at: http://phpjs.org/functions/str_replace    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
            // +   improved by: Gabriel Paderni
            // +   improved by: Philip Peterson
            // +   improved by: Simon Willison (http://simonwillison.net)
            // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)    // +   bugfixed by: Anton Ongson
            // +      input by: Onno Marsman
            // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
            // +    tweaked by: Onno Marsman
            // +      input by: Brett Zamir (http://brett-zamir.me)    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
            // +   input by: Oleg Eremeev
            // +   improved by: Brett Zamir (http://brett-zamir.me)
            // +   bugfixed by: Oleg Eremeev
            // %          note 1: The count parameter must be passed as a string in order    // %          note 1:  to find a global variable in which the result will be given
            // *     example 1: str_replace(' ', '.', 'Kevin van Zonneveld');
            // *     returns 1: 'Kevin.van.Zonneveld'
            // *     example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');
            // *     returns 2: 'hemmo, mars'    var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
                    f = [].concat(search),
                    r = [].concat(replace),
                    s = subject,
                    ra = r instanceof Array, sa = s instanceof Array;    s = [].concat(s);
            if (count) {
                this.window[count] = 0;
            }
             for (i=0, sl=s.length; i < sl; i++) {
                if (s[i] === '') {
                    continue;
                }
                for (j=0, fl=f.length; j < fl; j++) {            temp = s[i]+'';
                    repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
                    s[i] = (temp).split(f[j]).join(repl);
                    if (count && s[i] !== temp) {
                        this.window[count] += (temp.length-s[i].length)/f[j].length;}        }
            }
            return sa ? s : s[0];
        }
        
        //Funktion zum Löschen der ID aus dem Cookie
        function uncheck(ID)
        {
            //Da Checkbox selectiert muss auch die richtige onclick Funktion vorgewählt werden
            $('id' + ID).set('onclick','check(' + ID + ')');
            //Cookie auslesen um Daten zu löschen
            var temp = Cookie.read('compareCookie');
            //Soeben deselectierte ID entfernen
            rep_temp = str_replace(',id' + ID, '', temp);
            ///Daten in Cookie schreiben
            var myCookie = Cookie.write('compareCookie', rep_temp);
        }
        
        //Funktion zum setzen der ID im Cookie
        function check(ID)
        {
            //Da Checkbox nicht selectiert muss auch die richtige onclick Funktion vorgewählt werden
            $('id' + ID).set('onclick','uncheck(' + ID + ')');
            //Cookie auslesen um Daten anzuhängen
            var temp = Cookie.read('compareCookie');
            ///Daten an Cookie anhängen und schreiben
            var myCookie = Cookie.write('compareCookie', temp + ',id' + ID);
        }
        
        //Cookie auslesen
        var splitCookie = Cookie.read('compareCookie');
        //Cookie Wert zerlegen
        var mySplitResult = splitCookie.split(',');
        
        //Schleife um jede Checkbox vorzuwählen
        for(compareI = 1; compareI < mySplitResult.length; compareI++)
        {
            //Prüfen ob Checkbox vorhanden
            var checkboxVorhanden = document.getElementById(mySplitResult[compareI]);
            if(checkboxVorhanden)
            {
                //Checkbox vorauswählen wenn in Cookie bereits gesetzt
                $(mySplitResult[compareI]).checked = true;
                //ID als reine Zahl ermitteln
                var rep_mySplitResult = str_replace('id', '', mySplitResult[compareI]);
                //Da Checkbox selectiert muss auch die richtige onclick Funktion vorgewählt werden
                $(mySplitResult[compareI]).set('onclick','uncheck(' + rep_mySplitResult + ')');
            }
        }
        </script>
        Zu dem Java Script Code möchte ich anmerken, dass die str_replace Funktion nicht von mir ist. Aber sie führt genau das aus was ich benötige. Die Diskussion zu dieser Funktion findet ihr hier.

        Mein HTML Ausschnitt:
        HTML-Code:
        <input type="checkbox" onclick="check(<?php echo $entry['id']; ?>)" name="index[]" value="<?php echo $entry['id']; ?>" id="id<?php echo $entry['id']; ?>">
        So. Jetzt muss ich nur noch die Daten aus dem Cookie auf der weitergeleiteten Seite verarbeiten. Leider bin ich dem Ziel das auf den Mootools basierend aufzubauen nicht sehr weitergekommen. Falls mir da jemand unter die Arme greifen kann, wäre das eine super Sache. Weshalb ich das mit den Mootools machen möchte ist einfach Performance bedingt da die Mootools eh geladen werden.
        Mein Blog -> brothers-project.de

        Kommentar

        Lädt...