Ergebnis 1 bis 11 von 11

Thema: OptionWizard anpassen

  1. #1
    Contao-Nutzer Avatar von Tweety
    Registriert seit
    26.07.2009.
    Beiträge
    48

    Standard OptionWizard anpassen

    Hi all,

    ... bitte diesen Post verschieben, wenn er hier fehl am Platz ist ...

    ich bin gerade dabei ein Backende Modul zu bauen. Es klappt auch alles soweit gut, allerdings weiß ich noch keine gescheite Lösung um eine Art Terminplan zu ermöglichen. Später sollen Benutzer im Backendmodul eine "Schule" verwalten und dazu unter anderem ihre Stunden eintragen können. Etwa so:

    Code:
    Tag1 - Startzeit1 - Endzeit1 - Art1
    Tag1 - Startzeit2 - Endzeit2 - Art2
    Tag2 - Startzeit1 - Endzeit1 - Art1
    ...
    Da es mehrere Tage sind, finde ich den optionWizard ganz praktisch dafür, allerdings wäre meine Idee gewesen ihn etwas anzupassen. Vielleicht ist das aber gar nicht so schlau?!?
    Anpassungen: Tag -> Dropdown [Montag-Sonntag], xxx-zeit->Dropdown [00:00Uhr - 23:45Uhr], Art-> Dropdown [Art1 - Art x]

    Auf den optionWizard kam ich, weil er im Formulargenerator ist und ich den sehr übersichtlich und einfach klasse finde Die Schlüsselfunktion dahinter, die ich brauche, ist die tabellarische Darstellung im Backend und die Möglichkeit unterschiedlich lange Listen zu erstellen.

    Wäre nett, wenn jemand hier eine tolle Idee oder gar Lösung hätte.

    Greez2all
    Tweety
    Wie froh bin ich, daß ich Spinat nicht leiden kann, denn schmeckte er mir, so würde ich ihn essen und ich hasse das Zeug!

  2. #2
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Aber wieso genügt dir der Wizard dafür nicht? Oder habe ich noch nicht alle Details deines Plans verstanden?

  3. #3
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Moment mal, du willst das Leute selber ihr Daten eintragen? Dann ist der optionWizard das genau Gegenteil von dem was du benötigst!

    Ich würde vorschlagen du schaust dir mal den MultiColumnWizard an. Kurz googlen - dann findest du die Extension im ER und den akuellsten Stand bei Github.

  4. #4
    Contao-Nutzer Avatar von Tweety
    Registriert seit
    26.07.2009.
    Beiträge
    48

    Standard

    Hallo andreasisaak,

    ich habe so ein Modul a la Tanzpartner (Tagebuch) erstellt. Schulleiter tragen dort ihre Stunden entsprechend pro Schule ein. Jeder ist dafür selbst verantwortlich.
    Der Wizard genügt nicht, weil er nur zwei Textfelder und Checkboxen hat. Ich möchte Dropdown / Select Felder mit den enstprechenden Einträgen s.u. haben.

    Die MultiColumnWizard Erweiterung kannte ich noch nicht. Scheint aber genau das zu sein, was ich gesucht habe
    Hier noch der Link zum Handbuch für bisher gleich-ahnungslose wie ich:

    http://de.contaowiki.org/MultiColumnWizard

    Tnx2andreasisaak! Ich werde das heute Abend mal testen.

    gree2all
    Tweety
    Wie froh bin ich, daß ich Spinat nicht leiden kann, denn schmeckte er mir, so würde ich ihn essen und ich hasse das Zeug!

  5. #5
    Contao-Nutzer Avatar von Tweety
    Registriert seit
    26.07.2009.
    Beiträge
    48

    Standard

    Hihoo...

    also der multiColumnWizard ist genau das richtige! Super Tipp!!!

    Deutsche Übersetzung der Einträge sowie Anzeige der Daten im Frontend habe ich auch schon hinbekommen.
    Aber jetzt kommts

    Ich bekomme das serialized()-Array nicht mit unserialize() in seine Bestandteile zerlegt
    Zum Testen habe ich 4 Spalten mit Werten drin, alles Select-Felder (Dropdown Menüs). Den gesamten String anzuzeigen ist kein Problem, aber das Kaudawelsch können die Besucher der Seite nicht ganz so schnell verstehen.

    Könnte mir da mal bitte noch einer helfen, wie die genaue Syntax für das Zerlegen (un-/ deserialize) sein muß? Das wäre nett.

    greez2all
    Tweety
    Wie froh bin ich, daß ich Spinat nicht leiden kann, denn schmeckte er mir, so würde ich ihn essen und ich hasse das Zeug!

  6. #6
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Wie lautet denn der Code?

  7. #7
    Contao-Nutzer Avatar von Tweety
    Registriert seit
    26.07.2009.
    Beiträge
    48

    Standard

    Hihoo...

    bisher habe ich versucht mit zum Beispiel:

    PHP-Code:
    $arrData = array();
    $arrData unserialize($strPracticeArraySerial);
    return 
    $arrData[0]; 
    die erste Zeile zu bekommen, weil ich mir gedacht habe, mit unserialize() aus dem String ein mehrdimensionales Array zu bekommen. Entweder erscheint nichts oder aber "Array" im Frontend.
    $strPracticeArraySerial lese ich direkt aus der Datenbank aus. Diesen String anzuzeigen ist auch kein Problem, dort stehen dann entsprechend alle Daten drin.

    greez
    Tweety
    Wie froh bin ich, daß ich Spinat nicht leiden kann, denn schmeckte er mir, so würde ich ihn essen und ich hasse das Zeug!

  8. #8
    Contao-Nutzer Avatar von Tweety
    Registriert seit
    26.07.2009.
    Beiträge
    48

    Standard

    Hihoo..

    also ich bekomme es einfach nicht sinnvoll hin

    Aus der Datenbank hole ich mir die Daten des multiColumnWizard und speichere sie in einer Variablen. In dem Beispiel habe ich 4 Zeilen a 4 Select-Felder.
    Jetzt möchte ich eigentlich nur diese 4 Zeilen ebenfalls untereinander darstellen.
    Ich habe mit unserialize und deserialize herumgespielt und bekomme in verbindung mit foreach auch etwas angezeigt, aber dann nur die Daten die auch so dort drinstehen. Allerdings sollten 2 der 4 Felder (Wochentag und Klasse) in der entsprechenden Übersetzung erscheinen und nicht mit der allgemeinen Bezeichnung.

    Hier mal mein derzeitiger Code:
    PHP-Code:
        private function getPracticeTimes($strPracticeArraySerial){
          
    /*
              $strPracticeArraySerial =
          a:4:{
          i:0;a:4:{s:6:"mc_day";s:7:"mc_day1";s:12:"mc_starttime";s:5:"07:00";s:11:"mc_stoptime";s:5:"13:15";s:8:"mc_class";s:13:"mc_individual";}
          i:1;a:4:{s:6:"mc_day";s:7:"mc_day2";s:12:"mc_starttime";s:5:"12:00";s:11:"mc_stoptime";s:5:"14:00";s:8:"mc_class";s:6:"mc_men";}
          i:2;a:4:{s:6:"mc_day";s:7:"mc_day3";s:12:"mc_starttime";s:5:"18:00";s:11:"mc_stoptime";s:5:"20:00";s:8:"mc_class";s:8:"mc_women";}
          i:3;a:4:{s:6:"mc_day";s:7:"mc_day4";s:12:"mc_starttime";s:5:"19:00";s:11:"mc_stoptime";s:5:"21:00";s:8:"mc_class";s:7:"mc_kids";}
          }
          */
          
    $i 0;
          
    $arrData = array();
          foreach(
    deserialize($strPracticeArraySerial) as $line):
            
    $arrData[$i] = $line;
            foreach (
    $line as $item):
              
    $entries $entries ' ' $item;
            endforeach;
            
    $entries $entries '\n';
            
    $i$i 1;
          endforeach;
          return 
    $entries;
        } 
    ich weiß, daß das nicht stimmen kann, aber habe bisher auch nichts verständliches gefunden, wie es richtig geht

    Hilfe, hilfe, hilfe

    greez2all
    Tweety
    Wie froh bin ich, daß ich Spinat nicht leiden kann, denn schmeckte er mir, so würde ich ihn essen und ich hasse das Zeug!

  9. #9
    Contao-Nutzer Avatar von Tweety
    Registriert seit
    26.07.2009.
    Beiträge
    48

    Standard

    Hi all,

    ich hatte wieder etwas Zeit an dem Modul und seiner Darstellung weiterzuarbeiten.
    Mittlerweile habe ich auch soweit alles hinbekommen, allerdings gefällt mir die Umsetzung so ziemlich überhaupt gar nicht. Es wäre nett, wenn ihr euch das mal anschaut und mir Vorschläge für eine bessere Umsetzung machen könntet.

    /mein_modul/mod_meinmodul.php:
    PHP-Code:
        private function getPracticeTimes($strPracticeArraySerial){
          
    $i 0;
          
    $j 0;
          
    $arrData = array();
          foreach(
    deserialize($strPracticeArraySerial) as $line):
            foreach (
    $line as $item):
              switch (
    $j)
              {
            case 
    0:
              
    $arrData[$i][$j] = $GLOBALS['TL_LANG']['DAYS'][$item];
              break;
            case 
    1:
            case 
    2:
              
    $arrData[$i][$j] = $item;
              break;
            case 
    3:
              
    $arrData[$i][$j] = $GLOBALS['TL_LANG']['mein_modul']['class'][$item];
              
    $k $item;
              break;
              }
              
    $j $j 1;
            endforeach;
            
    $j 0;
            
    $i$i 1;
          endforeach;
          return 
    $arrData;
        } 
    /templates/fe_meinmodul.tpl:
    PHP-Code:
        <table>
          <tr style="font-weight:bold;">
        <td>Tag</td><td>Anfang</td><td>Ende</td><td>Kurs f&uuml;r</td>
          </tr>
          <?php
        $i 
    0;
        foreach (
    $this->school['practicetime'] as $entry):
          echo 
    '<tr>';
          echo 
    '<td>' $this->school['practicetime'][$i][0] . '</td>';
          echo 
    '<td>' $this->school['practicetime'][$i][1] . '</td>';
          echo 
    '<td>' $this->school['practicetime'][$i][2] . '</td>';
          echo 
    '<td>' $this->school['practicetime'][$i][3] . '</td>';
          
    $i $i +1;
          echo 
    '</tr>';
        endforeach;
          
    ?>
        </table>
    Ich habe mich am Kalender orientiert, bei dem die Wochentage in der default.php als array definiert sind und pro Sprache entsprechend hinterlegt sind. Das finde ich soweit ok, verstehe aber nicht, warum ich das extra in die DEFAULT.PHP schreiben muß, anstelle zu den anderen Übersetzungen in EINE Datei.

    Dann weiß ich auch nicht, ob das so guter Programmierstil ist, über zwei foreach-Schleifen an die Daten des serialisierten Arrays heranzukommen. Meiner Meinung nach müßte es da etwas einfacheres geben, den ganzen kram in (in meinem Fall) 4 Zeilen und 4 Spalten zu konvertieren?!?

    Ich tüftel dann mal weiter, freue mich aber über ein paar sinnvolle Anregungen

    greez2all
    Tweety
    Wie froh bin ich, daß ich Spinat nicht leiden kann, denn schmeckte er mir, so würde ich ihn essen und ich hasse das Zeug!

  10. #10
    Contao-Nutzer
    Registriert seit
    16.08.2011.
    Ort
    Köln
    Beiträge
    30

    Standard

    hi.
    Macht den Eindruck als würdest Du ein wenig im Trüben fischen - Hast Du Dir die Arrays, die Du da zerlegst mal mit var_dump() angeschaut? Könnte aufschlussreich sein.
    Grundsätzlich würde ich persönlich die for() mit count() der foreach() vorziehen, da hast Du im Griff, was Dir an Fehlern um die Ohren fliegt... Und Du sparst Dir die $entry Variable, die Du eh nicht verwendest. Grundsätzlich mit 'reichlich' var_dump()s testen, was eigentlich an Ein-/ Ausgabedaten vorliegt.

    lG mene

  11. #11
    Contao-Nutzer Avatar von Tweety
    Registriert seit
    26.07.2009.
    Beiträge
    48

    Standard

    Hi mene,

    danke für die Antwort.
    Sagen wir so: ich weiß welche Fische an welcher Stelle herumschwimmen, aber ich habe noch nicht die optimale Angel

    In meinem vorletzten Beitrag habe ich das serialisierte Array als Kommentar noch mit eingefügt. Im Fall des tpl für die Erstellung der Tabelle stimme ich dir mit der for() / count() Variante zu, das erscheint mir auch sinnvoller. Auf der anderen Seite habe ich mich gerade gefragt, ob das dann nicht auch so funtioniert:
    PHP-Code:
        <table>
          <tr style="font-weight:bold;">
        <td>Tag</td><td>Anfang</td><td>Ende</td><td>Kurs f&uuml;r</td>
          </tr>
          <?php
        
    foreach ($this->school['practicetime'] as $entry):
          echo 
    '<tr>';
          echo 
    '<td>' $entry[0] . '</td>';
          echo 
    '<td>' $entry[1] . '</td>';
          echo 
    '<td>' $entry[2] . '</td>';
          echo 
    '<td>' $entry[3] . '</td>';
          echo 
    '</tr>';
        endforeach;
          
    ?>
        </table>
    Für die function getPracticeTimes bin ich mir allerdings nicht so sicher, da ich pro Zeile 4 Werte habe, die dann über $item zum späteren Übergabearray zusammengebastelt werden. Da könnte die foreach() Schleife besser geeignet sein.
    var_dump() habe war mir bisher unbekannt, die Funktion werde ich mir mal anschauen und noch ein wenig testen.

    Vielen Dank für die Rückmeldung
    greez2all
    Tweety
    Wie froh bin ich, daß ich Spinat nicht leiden kann, denn schmeckte er mir, so würde ich ihn essen und ich hasse das Zeug!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •