Mit EFG tl_news aus dem FE verwalten

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Hauge
    Contao-Fan
    • 31.01.2010
    • 643

    #16
    Feldname?

    Hallo Maik,
    ich verwende das Ganze wie gesagt bei den News - aber normal müsse das ja auch bei den Events klappen.
    Ich schreib mal kurz meine Vorgehensweise bezgl. des tstamp - evtl. hilft Dir das:

    1. Ich erstelle ein verstecktes Feld mit dem Feldnamen "stamp" und dem Standard-Wert
    Code:
    {{date::dmYtms}}
    (in meinem Falle hänge ich an den Standard-Wert noch
    Code:
    {{user::id}}
    dran)

    2. Ich hole mir im nächsten Formular unter einem beliebigen Feldnamen (in meinem Fall "alias") den Wert in Form von
    Code:
    {{form::stamp}}
    Ich hoffe das hilft Gruß
    Wilder Waidla
    Angehängte Dateien
    Zuletzt geändert von Hauge; 14.04.2010, 10:58.

    Kommentar

    • Maik
      Contao-Nutzer
      • 19.06.2009
      • 220

      #17
      Hallo Andreas,

      vorneweg: ich verwende das auch in den News ...

      Ich hänge hier mal mein Formular dran:

      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: FE1.jpg
Ansichten: 1
Größe: 24,7 KB
ID: 915353

      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: FE2.jpg
Ansichten: 1
Größe: 17,6 KB
ID: 915352

      Ich habe das gerade nochmals versucht, als Erstellungsdatum gibt er mir den 13.12.1901 20:45 aus.

      Hier das Ergebnis im Nachrichten-Archiv:

      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: FEN.jpg
Ansichten: 1
Größe: 26,0 KB
ID: 915354
      Zuletzt geändert von Maik; 14.04.2010, 10:41.
      Sehr zu empfehlen: Contao Handbuch für Redakteure

      Kommentar

      • Hauge
        Contao-Fan
        • 31.01.2010
        • 643

        #18
        Sorry,

        war falsche Info! - Du möchtest ja das Datum auch als Datum stehen haben.
        Das Problem welches Du hast ist anderer Natur.
        Schau mal auf https://contao.org/board/message/16747.html vielleicht hilft Dir das weiter.

        Ich habs mal kurz durchgespielt und finde auf Anhieb auch keine Lösung - da bei mir das Datum so und so manuell ergänzt werden muss habe ich mich allerdings noch nicht im Detail mit dieser Probelmatik auseinandergesetzt.

        Bitte gib mir kurz Info - das interessiert mich jetzt auch. Sobald ich was weiß melde ich mich...

        Gruß
        Andreas
        Zuletzt geändert von Hauge; 14.04.2010, 11:03.

        Kommentar

        • Maik
          Contao-Nutzer
          • 19.06.2009
          • 220

          #19
          Hallo Andreas,

          sorry, wenn ich etwas dumm frage: 2. Formular? Ich habe nur eines ... Wie ist das gemeint?
          Sehr zu empfehlen: Contao Handbuch für Redakteure

          Kommentar

          • Hauge
            Contao-Fan
            • 31.01.2010
            • 643

            #20
            2. Formular

            Das 2. Formular spielt in Deinem Falle vermutlich eher keine Rolle - in meinem speziellen Falle musste ich die Zahlenfolge aus dem tstamp auflösen, und da war ein Session-formular eine gute Lösung, da man den tstamp ganz praktisch auf diesem Weg in ein anderes Feld der Datenbanktabelle bringt...

            Kommentar

            • Unearth
              Contao-Nutzer
              • 20.01.2010
              • 42

              #21
              Problem mit date in Mysql

              Hi Leute

              Danke für die vielen Antworten..

              doch ich hab irgendwie das Gefühl, dass vielleicht meine Frage zu ungenau war:

              Also ist es möglich mit dem Efg ein Feld zu haben, in das ein Datum im Format 2010-04-03 eingegeben wird und dieses dann im Format 1271030400 gespeichert wird?
              (Also quasi, ein Feld mit derselben funktion wie das Feld Startdatum beim erstellen von Events im Backend)

              Falls ja wie?

              Sorry, aber ich habe noch nicht viel mit php mysql und typolight am hut, ist meine erste Website mit typolight also die Antworten möglichst einfach und konkret?!

              Grüsse Unearth

              Im Anhang, der Hauptteil meines Formulars...
              Angehängte Dateien
              Zuletzt geändert von Unearth; 14.04.2010, 13:34.

              Kommentar

              • Torben
                Contao-Fan
                • 01.08.2009
                • 300

                #22
                Also Ihr redet hier von verschiedenen Sachen, aber gut:

                @Unearth:
                Also Du musst die Eingabe (z.B. 2010-04-03) mit dem PHP-Code von oben in ein Timestamp "umrechnen".
                Ob man bei Efg einzelne Felder nach der Eingabe verändern kann, weiß ich nicht, da ich für solche Fällen bisher immer Module geschrieben habe (häufig waren die Aufgabenstellungen allerdings auch komplexer als die reine Umwandlung eines Datums).

                @Maik:
                Du benötigst in Deinem versteckten Feld den Timestamp und den müsste Dir
                Code:
                {{date::U}}
                liefern.
                Zuletzt geändert von Torben; 14.04.2010, 22:26.

                Kommentar

                • Unearth
                  Contao-Nutzer
                  • 20.01.2010
                  • 42

                  #23
                  Problem mit date in Mysql

                  Hi Torben,

                  danke für die Antwort.

                  Also ich versuche im Moment, die Extension [calendarfield] Kalender-Feld zu verändern.
                  Durch dieses Feld versuche ich nämlich auch, das Datum ind die Mysql Datenbank zu schreiben!
                  Wäre das eine Gute Idee:

                  Der PHP Code zum Feld sieht wiefolgt aus:
                  PHP-Code:
                  class FormCalendarField extends FormTextField
                  {
                  
                  
                      public function __construct($arrAttributes=false)
                      {
                          parent::__construct($arrAttributes);
                          
                          $this->rgxp = 'date';
                          $this->maxlength = '10';
                      }
                      
                      
                      public function generate()
                      {
                          $strBuffer = parent::generate();
                          
                          if ($this->readonly || $this->disabled)
                              return $strBuffer;
                          
                          if (version_compare(VERSION.'.'.BUILD, '2.7.6', '>'))
                          {
                              $GLOBALS['TL_CSS'][] = 'plugins/calendar/css/calendar.css';
                              $GLOBALS['TL_JAVASCRIPT'][] = 'plugins/calendar/js/calendar.js';
                          }
                          else
                          {
                              $GLOBALS['TL_CSS'][] = 'plugins/calendar/calendar.css';
                              $GLOBALS['TL_JAVASCRIPT'][] = 'plugins/calendar/calendar.js';
                          }
                          
                          $dateFormat = strlen($this->dateFormat) ? $this->dateFormat : $GLOBALS['TL_CONFIG']['dateFormat'];
                          $dateDirection = strlen($this->dateDirection) ? $this->dateDirection : '0';
                          
                          $strBuffer .= "<script type=\"text/javascript\"><!--//--><![CDATA[//><!--
                    window.addEvent('" . (strlen($this->jsevent) ? $this->jsevent : 'domready') . "', function() { new Calendar({ ctrl_" . $this->strId . ": '" . $dateFormat . "' }, { navigation: 2, days: ['" . implode("','", $GLOBALS['TL_LANG']['DAYS']) . "'], months: ['" . implode("','", $GLOBALS['TL_LANG']['MONTHS']) . "'], offset: ". intval($GLOBALS['TL_LANG']['MSC']['weekOffset']) . ", titleFormat: '" . $GLOBALS['TL_LANG']['MSC']['titleFormat'] . "', direction: " . $dateDirection . " }); });
                    //--><!]]></script>";
                    
                            return $strBuffer;
                      }
                      
                      
                      public function validator($varInput)
                      {
                          if (strlen($this->dateFormat))
                          {
                              // Disable regular date validation
                              $this->rgxp = '';
                              
                              if (strlen($varInput) && !preg_match('/'. $this->getRegexp($this->dateFormat) .'/i', $varInput))
                              {
                                  $objDate = new Date();
                                  $this->addError(sprintf($GLOBALS['TL_LANG']['ERR']['date'], $objDate->getInputFormat($this->dateFormat)));
                              }
                          }
                          
                          return parent::validator($varInput);
                      }
                      
                      
                      /**
                       * Return a regular expression that matches a particular date format
                       * @param  string
                       * @param  string
                       * @return string
                       */
                      private function getRegexp($strFormat=false, $strRegexpSyntax='perl')
                      {
                          if (!$strFormat)
                          {
                              $strFormat = $GLOBALS['TL_CONFIG']['dateFormat'];
                          }
                  
                          if (preg_match('/[BbCcDEeFfIJKkLlMNOoPpQqRrSTtUuVvWwXxZz]+/', $strFormat))
                          {
                              throw new Exception(sprintf('Invalid date format "%s"', $strFormat));
                          }
                  
                          $arrRegexp = array();
                          $arrCharacters = str_split($strFormat);
                  
                          foreach ($arrCharacters as $strCharacter)
                          {
                              switch ($strCharacter)
                              {
                                  // Patch day: allow 01 - 31
                                  case 'd':
                                      $arrRegexp[$strFormat]['perl']  .= '(0[1-9]|[12][0-9]|3[01])';
                                      $arrRegexp[$strFormat]['posix'] .= '(0[1-9]|[12][0-9]|3[01])';
                                      break;
                                  
                                  // Patch month: allow 01 - 12
                                  case 'm':
                                      $arrRegexp[$strFormat]['perl']  .= '(0[1-9]|1[012])';
                                      $arrRegexp[$strFormat]['posix'] .= '(0[1-9]|1[012])';
                                      break;
                                  
                                  // Patch year: allow 1900 - 2099
                                  case 'Y':
                                      $arrRegexp[$strFormat]['perl']  .= '(19|20)[0-9]{2,2}';
                                      $arrRegexp[$strFormat]['posix'] .= '(19|20)[[:digit:]]{2}';
                                      break;
                                      
                                  case 'a':
                                  case 'A':
                                      $arrRegexp[$strFormat]['perl']  .= '[apmAPM]{2,2}';
                                      $arrRegexp[$strFormat]['posix'] .= '[apmAPM]{2}';
                                      break;
                  
                                  case 'y':
                                  case 'h':
                                  case 'H':
                                  case 'i':
                                  case 's':
                                      $arrRegexp[$strFormat]['perl']  .= '[0-9]{2,2}';
                                      $arrRegexp[$strFormat]['posix'] .= '[[:digit:]]{2}';
                                      break;
                  
                                  case 'j':
                                  case 'n':
                                  case 'g':
                                  case 'G':
                                      $arrRegexp[$strFormat]['perl']  .= '[0-9]{1,2}';
                                      $arrRegexp[$strFormat]['posix'] .= '[[:digit:]]{1,2}';
                                      break;
                  
                                  default:
                                      $arrRegexp[$strFormat]['perl']  .= preg_quote($strCharacter, '/');
                                      $arrRegexp[$strFormat]['posix'] .= preg_quote($strCharacter, '/');
                                      break;
                              }
                          }
                  
                          return $arrRegexp[$strFormat][$strRegexpSyntax];
                      }
                  } 
                  
                  Ok, ich bin mal ganz ehrlich, ich kann kein PHP! Däfür aber etwas C++, womit ich glaube zu verstehen, was in etwa gemacht wird. Damit rate ich mal, dass das Datum mit diesem Code abgespeichert und formatiert wird:
                  PHP-Code:
                  public function __construct($arrAttributes=false)
                      {
                          parent::__construct($arrAttributes);
                          
                          $this->rgxp = 'date';
                          $this->maxlength = '10';
                      } 
                  
                  sprich ich müsste das $this->rgxp = 'date'; abändern?!

                  Bin ich da auf dem Richtigen Weg oder liege ich völlig falsch?

                  Grüsse Unearth
                  Zuletzt geändert von Unearth; 15.04.2010, 13:01.

                  Kommentar

                  • Maik
                    Contao-Nutzer
                    • 19.06.2009
                    • 220

                    #24
                    @Thorben: Vielen Dank, das wars ... You made my day!!
                    Sehr zu empfehlen: Contao Handbuch für Redakteure

                    Kommentar

                    • Torben
                      Contao-Fan
                      • 01.08.2009
                      • 300

                      #25
                      @Maik: Gerne geschehen

                      @Unearth:
                      Bestehende Module zu ändern ist nie gut. Ich würde das eher über den processFormData-Hook machen.

                      Kommentar

                      • Unearth
                        Contao-Nutzer
                        • 20.01.2010
                        • 42

                        #26
                        EFG Hook

                        Hi Torben

                        Also , hat wiedermal ein weilchen gedauert bis ich Zeit gefunden habe, aber habe probiert, das ganze zu realisieren.

                        Ich habe mich am folgenden Beitrag orientiert:


                        Also ich habe ein Verstecktes Feld mitgegeben Feldname: tstamp, Wert: {{date::dmYtms}}

                        Dann habe ich eine Datein im Ordner: system/modules/efg angelegt, mit dem Namen: EfgFormNewEventTimestamp.php.

                        Die Datei sieht folgendermassen aus:
                        PHP-Code:
                        <?php
                            class EfgFormNewEventTimestamp extends Backend
                            {
                                
                                public function setTerm*****estamp($arrSubmitted, $arrFiles, $intOldRecordId, $arrFormConfig)
                                {
                                    
                                    // Abfrage, welches Formular gepostet wurde
                                    // Prüfung anhand Formular ID
                                    // if ($arrFormConfig['id'] == '5') {
                                    if ($arrFormConfig['id'] == '2') 
                                    {
                                        
                                        // hiermit werden die ersten 10 Zeichen des Wertes aus Feld 'startDate' als Wert des Feldes 'tstamp' uebernommen
                                        $arrSubmitted['tstamp'] = substr($arrSubmitted['startDate'], 0, 10);
                                        
                                    }
                                    
                                    // WICHTIG: $arrSubmitted als Rückgabewert der Funktion
                                    return $arrSubmitted;
                         
                                }
                         
                            }
                        ?>
                        und in die Datei system/config/dcaconfig.php habe ich folgende Zeilen hinzugefügt:
                        PHP-Code:
                        $GLOBALS['TL_HOOKS']['processEfgFormData']['tinoo_termin'] = array('EfgFormNewEventTimestamp', 'setTerm*****estamp'); 
                        
                        So, und der Effekt, nach alledem ist =0 und ich vermute auch zu wissen warum, nämlich weil der Hook gar nicht ausgeführt wird und zwar:

                        Weil ich in der dcaconfig.php ['tinoo_termin'] nicht ersetzt habe, das problem ist aber, das mir aus dem Beitrag nicht klar wird womit ich das ersetzen soll ?? also das Wort termin würde bei mir ja startDate heissen, aber womit ich das tinoo ersetzen soll, weiss ich wirklich nicht?!

                        Bin ich mit meinem Hook auf nem grünen Zweig oder voll auf abwegen?
                        Weshalb wird er nicht ausgeführt?

                        Grüsse Unearth

                        Kommentar

                        • pixxelweb
                          Contao-Nutzer
                          • 03.09.2009
                          • 10

                          #27
                          @unearth, ich habe genau die selben problem wie du, hast du inzwischen eine lösung gefunden?

                          @torben, du hattest geschrieben, den oben angeführten php code einzufügen, sagst du bitte auch wo?


                          oder weiss jemand anderes eine lösung?

                          Gruß

                          Kommentar

                          • Unearth
                            Contao-Nutzer
                            • 20.01.2010
                            • 42

                            #28
                            @pixxelweb
                            Nein habe noh keine Lösung!!

                            und die frage wo der Codeschnipsel hinsoll, habe ich mir auch gestellt.

                            @ Torben oder sonst ein crack, wäre genial wenn ihr das beantworten könntet! Meine Site ist fertig, bis auf das Formular

                            Grüsse Unearth

                            Kommentar

                            • Torben
                              Contao-Fan
                              • 01.08.2009
                              • 300

                              #29
                              Hast ne PM, Lösung kommt dann hier.

                              Kommentar

                              • Hauge
                                Contao-Fan
                                • 31.01.2010
                                • 643

                                #30
                                Gibt's schon was Neues zum Thema tstamp?
                                Ich hab mittlerweile alles mal durchgetestet und komme zu keinem zufriedenstellenden Ergebnis.

                                Umsetzbare Lösungsansätze habe ich bedauerlicherweise nicht wirklich gefunden - sehr wohl aber den anscheinend doch sehr großen Bedarf einer Lösung für diese Thematik...

                                NICE

                                Kommentar

                                Lädt...