[Neues Modul] Terminliste v3

Alles rund um Module und Plugins in CONTENIDO 4.9.
Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von Peer » Di 28. Nov 2017, 14:02

Hallo,

ich habe eine zweite Kategorie auswahl in das Modul eingebunden.

Leider speichert er die Auswahl nicht. Ich habe da irgendwo einen dreher drin.
Ich finde nur die passende Stelle nicht.

Code: Alles auswählen

    <?php
    /***********************************************
    * CONTENIDO MODUL - OUTPUT
    *
    * Modulname      :     Termineingabe/anzeige universal
    * Version        :     3.0
    * Author         :     schlaucher (Original 4.8 version)
    * 4.9 Adaptation :     Viktor Lehmann, TONE2TONE
    * Created        :     12-07-2006 (schlaucher)
    * Modified       :     20.08.2015 (T2T)
    ************************************************/

    /***********************************************
    * Formularfelder:
    *
    * $MOD_TE_termin[0] = Startdatum
    * $MOD_TE_termin[1] = Startzeit
    * $MOD_TE_termin[2] = Enddatum
    * $MOD_TE_termin[3] = Endzeit
    * $MOD_TE_termin[4] = Ziel
    * $MOD_TE_termin[5] = Geld
    * $MOD_TE_termin[6] = Titel
    * $MOD_TE-termin[7] = Check für Teaser
    * $MOD_TE_termin[8] = Bemerkung CMS_HTML[8]
    * $MOD_TE_termin[9] = Link CMS_LINK[9]
    * $MOD_TE_termin[10] = Termin Zyklus
    * $MOD_TE_termin[11] = Termin Zyklus Wochentage
    * $MOD_TE_termin[12] = jeden 1.,2.,3.,4.,5. Wochentag
    * $MOD_TE_termin[13] = Kategorien A
    * $MOD_TE_termin[14] = Image
    * $MOD_TE_termin[15] = Status
    * $MOD_TE_termin[16] = Termin Zyklus jeden x-ten Tag
    * $MOD_TE_termin[17] = Termin Zyklus Ausschlussliste
    * $MOD_TE_termin[18] = Termin Zyklus Anzeigemodus1 (alle/aktuelle)
    * $MOD_TE_termin[19] = Termin Zyklus Anzeigemodus2(Anzahl)
    * $MOD_TE_termin[20] = Termin in der Terminliste hervorheben
    * $MOD_TE_termin[21] = Kategorien B
    * $MOD_TE_termin[22] = zusätzliche Termine

    * $MOD_TE_termin[23] = Projekt Nr
    * $MOD_TE_termin[24] = Einrichtung
    * $MOD_TE_termin[25] = Kostenstelle
    * $MOD_TE_termin[26] = Strasse
	* $MOD_TE_termin[27] = PLZ
	* $MOD_TE_termin[28] = Ort-Details
	* $MOD_TE_termin[29] = Telefon
	* $MOD_TE_termin[30] = E-Mail
	* $MOD_TE_termin[31] = Ansprechpartner
	* $MOD_TE_termin[32] = Aufwandsentschädigung
	* $MOD_TE_termin[33] = Werbung
	
	* $MOD_TE_termin[34] = Alter FW
	* $MOD_TE_termin[35] = Geschlecht FW
	* $MOD_TE_termin[36] = Fähigkeiten FW
	* $MOD_TE_termin[37] = Dauer
	
	* $MOD_TE_termin[38] = Mo
	* $MOD_TE_termin[39] = Di
	* $MOD_TE_termin[40] = Mi
	* $MOD_TE_termin[41] = Do
	* $MOD_TE_termin[42] = Fr
	* $MOD_TE_termin[43] = Sa
	* $MOD_TE_termin[44] = So
	
	* $MOD_TE_termin[45] = vormittags
	* $MOD_TE_termin[46] = nachmittags
	* $MOD_TE_termin[47] = abends
	
	
    ************************************************/

    // To Do:
    // Re-Introduce Kategorie Output to FEU version
    // Re-Introduce Status
    // Re-Introduce Time Settings
    // Re-Introduce Cycle Settings
    // Re-Introduce Image. Deleted here, code is too oldfashioned.
       
       
    // Includes
    cInclude("module", "functions.terminliste.php");
    cInclude("frontend", "includes/functions.t2t.php");
  


    // Client Settings
    	$adressat[1]     = getEffectiveSetting('projektliste', 'schwerpunkte', '');
    $categories[1] = getEffectiveSetting('projektliste', 'adressat', '');
    $highlightlist    = getEffectiveSetting('terminliste', 'css_classes', '');
    $highlightlist    = ( $highlightlist != "" ) ? explode(";", "--;".$highlightlist) : "";

    // Definition benötigter Variablen $MOD_TE_[Name]


    // Variablen aus Input Bereich

    // Anzeige des Images in der Vorschau
    $MOD_TE_img_show = ("CMS_VALUE[11]" == 'yes')  ? true : false;
    $MOD_TE_imgw = "CMS_VALUE[12]"; // Maximale Bildbreite
    $MOD_TE_imgh = "CMS_VALUE[13]"; // Maximale Bildhöhe
    $MOD_TE_imgar = "CMS_VALUE[14]"; // Bild Ausrichtung
    $MOD_TE_imgva= "CMS_VALUE[15]"; // Vertikaler Raum
    $MOD_TE_imgha = "CMS_VALUE[16]"; // Horizontaler Raum
    $MOD_TE_ortsliste_array = ( "CMS_VALUE[17]" != "" ) ? explode(';',"CMS_VALUE[17]") : ""; // Ortsauswahlliste
    $tpl_editor      =  ( "CMS_VALUE[24]" != "" ) ? "CMS_VALUE[24]" : "frontendeditor.tpl";
    $tpl_fedisplay   =  ( "CMS_VALUE[25]" != "" ) ? "CMS_VALUE[25]" : "frontenddisplay.tpl";


    // SQL Abfrage über den aktuellen Artikel
    $MOD_TE_sql  = "SELECT  ARTLANG.idart, CONTENT.value, CONTENT.typeid, CONTENT.idtype, ARTLANG.idartlang ";
    $MOD_TE_sql .= "FROM ".$cfg["tab"]["cat_art"]." AS CATART,";
    $MOD_TE_sql .= " ".$cfg["tab"]["art_lang"]." AS ARTLANG,";
    $MOD_TE_sql .= " ".$cfg["tab"]["cat"]." AS CAT,";
    $MOD_TE_sql .= " ".$cfg["tab"]["content"]." AS CONTENT,";
    $MOD_TE_sql .= " ".$cfg["tab"]["cat_lang"]." AS CATLANG ";
    $MOD_TE_sql .= "WHERE ARTLANG.idart = CATART.idart ";
    $MOD_TE_sql .= "AND CATART.idcat = CAT.idcat ";
    $MOD_TE_sql .= "AND ARTLANG.idartlang = CONTENT.idartlang ";
    $MOD_TE_sql .= "AND ARTLANG.idlang = '".$lang."' ";
    $MOD_TE_sql .= "AND ARTLANG.idart = '".$idart."' ";
    $MOD_TE_sql .= "AND CAT.idclient = '".$client."' ";
    $MOD_TE_sql .= "AND CATART.idcat = CATLANG.idcat ";
           
    $db->query($MOD_TE_sql); // Artikelangaben einlesen

    // überprüfen, ob im Editiermodus aufgerufen

           
        if ($db->numRows()> 0) // Datenfelder durchlaufen und alle CMS_TEXT Elemente in Array schreiben
            {
            $MOD_TE_termin = array(); // Array für die Termininhalte
            $MOD_TE_exists = array(); // Array für Prüfung, ob Datensatz bereits existiert
           
            $db->nextRecord();
            $idartlang = $db->f("idartlang");
            for ($MOD_TE_zaehler = 0; $MOD_TE_zaehler<$db->numRows(); $MOD_TE_zaehler++)
                {
                if ( $db->f("idtype") == 3 ) // = CMS_TEXT
                    {
                    $MOD_TE_typeid = $db->f("typeid");
                    $MOD_TE_termin[$MOD_TE_typeid] = $db->f("value");
                    $MOD_TE_exists[$MOD_TE_typeid] = 1;
                    }
                if ( $db->f("idtype") == "19" ) // = CMS_DATE
                    {
                $dom = new domDocument;
                $dom->loadXML($db->f("value"));
                $xml = simplexml_import_dom($dom);
                $date_Ymd  = date('Y-m-d',  (int)$xml->timestamp);
                $date_His  = date('H:i:s',  (int)$xml->timestamp);
                    $MOD_TE_typeid = $db->f("typeid");

                    $MOD_TE_termin[$MOD_TE_typeid."date"] = ($date_Ymd == "0000-00-00" ) ? "0000-00-00" : $date_Ymd;
                    $MOD_TE_termin[$MOD_TE_typeid."time"] = $date_His;
                    }             
                $db->nextRecord();
                }
            }
           
        if(!$MOD_TE_termin[6]) // falls noch kein Titel eingetragen, Seitentitel einlesen
            {
            $MOD_TE_sql    = "SELECT ARTLANG.title ";
            $MOD_TE_sql   .= "FROM ".$cfg["tab"]["art_lang"]." AS ARTLANG ";
            $MOD_TE_sql   .= "WHERE ARTLANG.idart = '".$idart."' ";
           
            $db->query($MOD_TE_sql);
            $db->nextRecord();
            $MOD_TE_termin[6] = $db->f("title");
            }
           
       // Presets
       //if(!$MOD_TE_termin[0]) $MOD_TE_termin[0] = $MOD_TE_today;   
        if(!$MOD_TE_termin[10]) $MOD_TE_termin[10] = 'no';
        if(!$MOD_TE_termin[11]) $MOD_TE_termin[11] = '';       
        if(!$MOD_TE_termin[12]) $MOD_TE_termin[12] = '';
        if(!$MOD_TE_termin[13]) $MOD_TE_termin[13] = '';
        if(!$MOD_TE_termin[21]) $MOD_TE_termin[21] = '';
        if(!$MOD_TE_termin[15]) $MOD_TE_termin[15] = '0';
        if(!$MOD_TE_termin[16]) $MOD_TE_termin[16] = '0';   
        if(!$MOD_TE_termin[17]) $MOD_TE_termin[17] = '';   
        if(!$MOD_TE_termin[18]) $MOD_TE_termin[18] = '0';   
        if(!$MOD_TE_termin[19]) $MOD_TE_termin[19] = '-1';
            $MOD_TE_termin[20] = ( $MOD_TE_termin[20] = '') ? "--" : $MOD_TE_termin[20];
        if(!$MOD_TE_termin[22]) $MOD_TE_termin[22] = '';

        if($_POST["MOD_TE_senden"] == "1") // falls das Terminformular abgeschickt wurde, Daten in Datenbank schreiben
            {
          
            $MOD_TE_senden = false;
               
            $MOD_TE_termin[4] = ($MOD_TE_ortsliste == "") ? $MOD_TE_ort : $MOD_TE_ortsliste;         
            $MOD_TE_termin[5] = $MOD_TE_strasse;
            $MOD_TE_termin[6] = $MOD_TE_titel;
            $MOD_TE_termin[7] = $MOD_TE_teaser;
			$MOD_TE_termin[23] = $MOD_TE_projektnr;
			$MOD_TE_termin[24] = $MOD_TE_einrichtung;
			$MOD_TE_termin[25] = $MOD_TE_kostenstelle;
			$MOD_TE_termin[26] = $MOD_TE_strasse;
			$MOD_TE_termin[27] = $MOD_TE_plz;
			$MOD_TE_termin[28] = $MOD_TE_ortdetails;
			$MOD_TE_termin[29] = $MOD_TE_telefon;
			$MOD_TE_termin[30] = $MOD_TE_email;
			$MOD_TE_termin[31] = $MOD_TE_ansprechpartner;
			$MOD_TE_termin[32] = $MOD_TE_aufwand;
			$MOD_TE_termin[33] = $MOD_TE_werbung;
			$MOD_TE_termin[34] = $MOD_TE_alter;
			$MOD_TE_termin[35] = $MOD_TE_geschlecht;
			$MOD_TE_termin[36] = $MOD_TE_faehigkeiten;
			$MOD_TE_termin[37] = $MOD_TE_dauer;
			$MOD_TE_termin[38] = $MOD_TE_mo;
			$MOD_TE_termin[39] = $MOD_TE_di;
			$MOD_TE_termin[40] = $MOD_TE_mi;
			$MOD_TE_termin[41] = $MOD_TE_do;
			$MOD_TE_termin[42] = $MOD_TE_fr;
			$MOD_TE_termin[43] = $MOD_TE_sa;
			$MOD_TE_termin[44] = $MOD_TE_so;
			$MOD_TE_termin[45] = $MOD_TE_vormittags;
			$MOD_TE_termin[46] = $MOD_TE_nachmittags;
			$MOD_TE_termin[47] = $MOD_TE_abends;
          
            // Erweiterte Felder für Terminzyklen und Kategorien
            $MOD_TE_termin[10] = $MOD_TE_cycle;
          
          // 9 = Filelink, already dealt with through own CMS type. We need its contents separate though for FEU display
          $dom = new domDocument;
          $dom->loadXML($MOD_TE_termin[9]);
          $xml = simplexml_import_dom($dom);
          $MOD_TE_termin["link"] = $xml->externallink;
          $MOD_TE_termin["linkframe"] = $xml->newwindow;
          $MOD_TE_termin["linkdesc"] = $xml->title;
             
          $collectweekdays = "";
          foreach ($_POST as $key => $value) {
             if ( substr($key, 0, 14) == 'cycleweekdays') {
                $collectweekdays .= $value.","; // use coma instead semikolon as an exception, keeps compatibility with functions.terminliste.php
             }
          }      
          $MOD_TE_termin[11] = ( $collectweekdays != "" && $MOD_TE_termin[10] =="wtage") ? substr($collectweekdays , 0, -1)  : "";

          $collectweeknums = "";
          foreach ($_POST as $key => $value) {
             if ( substr($key, 0, 13) == 'cycleweeknums') {
                $collectweeknums .= $value.","; // use coma instead semikolon as an exception
             }
          }      
          $MOD_TE_termin[12] = ( $collectweeknums != ""  && $MOD_TE_termin[10] =="wtage") ? substr($collectweeknums , 0, -1)  : "";
             
        $MOD_TE_termin[21] = "";
          foreach ($_POST as $key => $value) {
             if ( substr($key, 0, 10) == 'adressat') {
                $MOD_TE_termin[21] .= $value.";";
             }
          }
          if ( $MOD_TE_termin[21] != "" ) { $MOD_TE_termin[21] = substr($MOD_TE_termin[21] , 0, -1); }
          
				
		$MOD_TE_termin[13] = "";
          foreach ($_POST as $key => $value) {
             if ( substr($key, 0, 10) == 'categories') {
                $MOD_TE_termin[13] .= $value.";";
             }
          }
          if ( $MOD_TE_termin[13] != "" ) { $MOD_TE_termin[13] = substr($MOD_TE_termin[13] , 0, -1); }
          
		  
             

             
            $MOD_TE_termin[15] = $MOD_TE_status;
          $MOD_TE_termin[16] = (  $MOD_TE_termin[10] =="xtag" ) ? $MOD_TE_xtag : "";

				
          // check all deletable dates - eliminate if not correct, as it forces script errors.
          if ( $MOD_TE_aliste != "" ) {
             $checkzutermine = explode(",",$MOD_TE_aliste);
             foreach ($checkzutermine as $key=>$checktermin ) {
                $unixdate = strtotime($checktermin);
                   $recheck = date("Y-m-d", $unixdate);
                if ($recheck != $checktermin) {
                   unset($checkzutermine[$key]);
                   $errors[] = mi18n("error_dates_deletable_couldnotallbesaved");
                }
             }
          }
          $MOD_TE_termin[17] = implode (",",$checkzutermine);
             
            $MOD_TE_termin[18] = $MOD_TE_amodus1;
            $MOD_TE_termin[19] = $MOD_TE_amodus2;
          $MOD_TE_termin[20] = ( $MOD_TE_highlight == "--" ) ? "" : $MOD_TE_highlight;
             
          // check all additional dates - eliminate if not correct, as it forces script errors.
          if ( $MOD_TE_zutermine != "" ) {
             $checkzutermine = explode(",",$MOD_TE_zutermine);
             foreach ($checkzutermine as $key=>$checktermin ) {
                $unixdate = strtotime($checktermin);
                   $recheck = date("Y-m-d", $unixdate);
                if ($recheck != $checktermin) {
                   unset($checkzutermine[$key]);
                   $errors[] = mi18n("error_dates_additional_couldnotallbesaved");
                }
             }
          }
          $MOD_TE_termin[22] = implode (",",$checkzutermine);

            for ($MOD_TE_zaehler=4; $MOD_TE_zaehler<=49; $MOD_TE_zaehler++)
                {
             // Nothing to save in case of #8 and #9, will be done at a later stage
             if ( $MOD_TE_zaehler != 8 && $MOD_TE_zaehler != 9 && $MOD_TE_zaehler != 14 && $MOD_TE_zaehler != 48 ) {
                if($MOD_TE_exists[$MOD_TE_zaehler]==1)
                   {
                   $MOD_TE_sql    = "UPDATE ".$cfg["tab"]["content"]." ";
                   $MOD_TE_sql   .= "SET value='".$MOD_TE_termin[$MOD_TE_zaehler]."', lastmodified='".$MOD_TE_date."' ";
                   $MOD_TE_sql   .= "WHERE idartlang = '".$idartlang."' ";
                   $MOD_TE_sql   .= "AND idtype='3' ";
                   $MOD_TE_sql   .= "AND typeid='".$MOD_TE_zaehler."' ";
                   $db->query($MOD_TE_sql);
                   }
                else
                   {
                   $MOD_TE_sql    = "INSERT INTO ".$cfg["tab"]["content"]." ";
                   $MOD_TE_sql   .= "(idartlang, idtype, typeid, value, author, created, lastmodified) ";
                   $MOD_TE_sql   .= "VALUES('".$idartlang."', '3', '".$MOD_TE_zaehler."', '".$MOD_TE_termin[$MOD_TE_zaehler]."', '".$MOD_TE_author."', '".$MOD_TE_date."', '".$MOD_TE_date."')";
                   $db->query($MOD_TE_sql);
                   }               
                }
             }
          }
          
		  
       
       
		  
       
       


       $MOD_TE_highlight_check = ("$MOD_TE_termin[20]" == '1') ? "checked" : "";
        $MOD_TE_disabled = ($MOD_TE_ortsliste_array[0] != "") ? "disabled" : "";
        $MOD_TE_teaser_check = ("$MOD_TE_termin[7]" == 'yes') ? "checked" : "";
        $MOD_TE_aufwand = ("$MOD_TE_termin[32]" == 'yes') ? "checked" : "";
		$MOD_TE_werbung = ("$MOD_TE_termin[33]" == 'yes') ? "checked" : "";
		$MOD_TE_mo = ("$MOD_TE_termin[38]" == 'yes') ? "checked" : "";
		$MOD_TE_di = ("$MOD_TE_termin[39]" == 'yes') ? "checked" : "";
		$MOD_TE_mi = ("$MOD_TE_termin[40]" == 'yes') ? "checked" : "";
		$MOD_TE_do = ("$MOD_TE_termin[41]" == 'yes') ? "checked" : "";
		$MOD_TE_fr = ("$MOD_TE_termin[42]" == 'yes') ? "checked" : "";
		$MOD_TE_sa = ("$MOD_TE_termin[43]" == 'yes') ? "checked" : "";
		$MOD_TE_so = ("$MOD_TE_termin[44]" == 'yes') ? "checked" : "";
		$MOD_TE_vormittags = ("$MOD_TE_termin[45]" == 'yes') ? "checked" : "";
		$MOD_TE_nachmittags = ("$MOD_TE_termin[46]" == 'yes') ? "checked" : "";
		$MOD_TE_abends = ("$MOD_TE_termin[47]" == 'yes') ? "checked" : "";
       
       
        // ab hier das Formular für die Editieransicht
       $MOD_TE_termin[startdate] = "CMS_DATE[1]";
       $MOD_TE_termin[enddate] = "CMS_DATE[2]";
       $MOD_TE_termin[text] = "CMS_HTML[8]";
 	   $MOD_TE_termin[details] = "CMS_HTML[18]";
       $MOD_TE_termin[linkstd] = "CMS_LINK[9]";
       $MOD_TE_termin[linkdesc] = "CMS_LINKEDITOR[9]";
       $MOD_TE_termin[cycle] = ($MOD_TE_termin[10] == "no"   ) ? false : true;
       $MOD_TE_termin[imagesrc] = "CMS_IMG[14]";
       $MOD_TE_termin[imageeditor] = "CMS_IMGEDITOR[14]";   
       
       $tpl = cSmartyFrontend::getInstance();
       //$tpl->assign('actionlink', "front_content.php?idcat=$idcat&idart=$idart&lang=$lang&client=$client&contenido=$contenido");
       $tpl->assign('errors', $errors);
       $tpl->assign('actionlink', "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
       $tpl->assign('highlight_check', $MOD_TE_highlight_check);
       $tpl->assign('teaser_check', $MOD_TE_teaser_check);
		$tpl->assign('aufwand', $MOD_TE_aufwand);
		$tpl->assign('werbung', $MOD_TE_werbung);
		$tpl->assign('montag', $MOD_TE_mo);
		$tpl->assign('dienstag', $MOD_TE_di);
		$tpl->assign('donnerstag', $MOD_TE_do);
		$tpl->assign('freitag', $MOD_TE_fr);
		$tpl->assign('samstag', $MOD_TE_sa);
		$tpl->assign('sonntag', $MOD_TE_so);
       $tpl->assign('venuetype', $MOD_TE_disabled);
       $tpl->assign('fieldset_main', mi18n("fieldset_main"));
       $tpl->assign('fieldset_details', mi18n("fieldset_details"));
       $tpl->assign('fieldset_cycle', mi18n("fieldset_cycle"));
       $tpl->assign('label_title', mi18n("Titel"));
       $tpl->assign('label_projektnr', mi18n("Projekt Nr"));
       $tpl->assign('label_einrichtung', mi18n("Einrichtung"));
	   $tpl->assign('label_faehigkeiten', mi18n("gewünschte Fähigkeiten FW"));
	   $tpl->assign('label_alter', mi18n("Alter FW"));
	   $tpl->assign('label_dauer', mi18n("Dauer der Tätigkeit (pro Woche/Monat in Std.)"));
	   $tpl->assign('label_geschlecht', mi18n("Geschlecht FW"));
	   $tpl->assign('label_mo', mi18n("Montag"));
	   $tpl->assign('label_di', mi18n("Dienstag"));
	   $tpl->assign('label_mi', mi18n("Mittwoch"));
	   $tpl->assign('label_do', mi18n("Donnerstag"));
	   $tpl->assign('label_fr', mi18n("Freitag"));
	   $tpl->assign('label_sa', mi18n("Samstag"));
	   $tpl->assign('label_so', mi18n("Sonntag"));
	   $tpl->assign('label_vormittags', mi18n("Vormittags"));
	   $tpl->assign('label_nachmittags', mi18n("Nachmittags"));
	   $tpl->assign('label_abends', mi18n("Abends"));
	   
	   
	   
	   $tpl->assign('label_kostenstelle', mi18n("Kostenstelle"));
       $tpl->assign('label_startdate', mi18n("Startdatum"));
       $tpl->assign('label_enddate', mi18n("Enddatum"));
       $tpl->assign('label_venue', mi18n("Ort"));
       $tpl->assign('label_strasse', mi18n("Strasse"));
	   $tpl->assign('label_aufwand', mi18n("Aufwandsentschäfigung"));
	   $tpl->assign('label_werbung', mi18n("Werbung"));
       $tpl->assign('label_plz', mi18n("Postleitzahl"));
       $tpl->assign('label_ortdetails', mi18n("Ort-Details"));
       $tpl->assign('label_telefon', mi18n("Telefon"));
       $tpl->assign('label_email', mi18n("E-Mail"));
       $tpl->assign('label_ansprechpartner', mi18n("Ansprechpartner*in"));
       $tpl->assign('label_details', mi18n("Beschreibung"));
       $tpl->assign('label_teaser', mi18n("Im Teaser anzeigen?"));
       $tpl->assign('label_highlight', mi18n("In Terminliste hervorheben?"));
       $tpl->assign('label_category', mi18n("Kategorien auswählen"));
       $tpl->assign('label_cycle', mi18n("Termin Zyklus ab Startdatum"));
       $tpl->assign('label_everyXdays', mi18n("Falls x-ter Tag: Definiere Anzahl Tage"));
       $tpl->assign('label_everyXweekdays', mi18n("Zyklus Woche: jeden..."));
       $tpl->assign('label_everyXweeknums', mi18n("Zyklus Woche: jeden..."));
       $tpl->assign('label_adddates', mi18n("Zusätzliche Termine, kommagetrennt"));
       $tpl->assign('label_removedates', mi18n("Termine ausschließen, kommagetrennt"));
       $tpl->assign('label_formatyyyymmdd', mi18n("formatyyyymmdd"));
       $tpl->assign('label_save', mi18n("Speichern"));
		$tpl->assign('label_adressat', mi18n("Adressat"));
       $tpl->assign('label_text', mi18n("Einstigstext: "));
       $tpl->assign('label_link', mi18n("Link setzen: "));
       $tpl->assign('label_image', mi18n("Bild wählen: "));
$tpl->assign('label_zielgruppe', mi18n("Zielgruppe: "));
       $tpl->assign('info_misc', mi18n("infotext_misc"));
       $tpl->assign('categoryselect', createCheckbox($categories, $MOD_TE_termin[13], "categories", $lang, 200 ));
	   $tpl->assign('adressatselect', createCheckbox($adressat, $MOD_TE_termin[21], "adressat", $lang, 200 ));
       $tpl->assign('cycle_weekdayselect', createCheckbox3($cycleweekdays, explode("," , $MOD_TE_termin[11]), "cycleweekdays", $lang, 105 ));
       $tpl->assign('cycle_weeknumselect', createCheckbox3($cycleweeknums, explode("," , $MOD_TE_termin[12]), "cycleweeknums", $lang, 50 ));
       $tpl->assign('termin', $MOD_TE_termin);
       $tpl->assign('cyclelist', $cycles);
       $tpl->assign('highlightlist', $highlightlist);
       $tpl->assign('venuelist', $MOD_TE_ortsliste_array);
       // elements needed for FEU display
       $tpl->assign('label_back', mi18n("Zurück zur Übersicht"));
       $tpl->assign('label_timeformat', mi18n("Uhr"));
        $tpl->assign('label_status', mi18n("Status"));
       
       if ($contenido) {
             $tpl->display($tpl_editor );
          } else {
             $tpl->display($tpl_fedisplay );   
       }
       



	   ?>
Jemand eine Idee?

Es handelt sich um $adressat[1]

Vielen Dank

Gruß

Peer

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von homtata » Mi 29. Nov 2017, 00:01

Hallo Peer,
ich würde dich bitten, einen Großteil des Debuggings erstmal selbst zu übernehmen, sprich: speichert das Modul die Auswahl wirklich nicht? Gib doch mal in allen Schritten die Variable aus - ist sie vor dem Speichern da, ist sie danach wieder auslesbar, wird sie nur nicht korrekt an Smarty übergeben und und und... Dann müsstest du der Sache eigentlich selbst auf den Grund kommen. Es ist fast unmöglich, das aus dem Stehgreif und nur per Durchsicht zu debuggen.

Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von Peer » Mo 4. Dez 2017, 10:56

Hallo,

ich habe noch eine Frage bzw. Bitte.
Ich habe das Modul etwas Zweck entfremdet und nutze es für eine Projekt Datenbank.
Jetzt werden bei den Projekten kein Startdatum und kein Enddatum hinterlegt.

Nun werden mir leider die Projekte auch in einer Liste nicht angezeigt, ich vermute wegen dem Datum.

Kann mir eventuell jemand verraten welche Zeilen ich dafür ausklammern muss.

Code: Alles auswählen

[/<?php 
/*********************************************** 
* CONTENIDO MODUL - OUTPUT 
* 
* Modulname      :     Terminliste Ausgabe
* Version        :     3.0
* Author         :     schlaucher (Original 4.8 version)
* 4.9 Adaptation :     Viktor Lehmann, TONE2TONE
* Created        :     12-07-2006 (schlaucher)
* Modified       :     20.08.2015 (T2T)
************************************************/ 

/*********************************************** 
* Input fields, as determined in Module Terminliste Eingabe
*
* $MOD_TE_termin[0] = Startdatum // not used anymore
* $MOD_TE_termin[1] = Starttermin: holds date AND time through CMS_DATE[1]
* $MOD_TE_termin[2] = Endtermin: holds date AND time through CMS_DATE[2]
* $MOD_TE_termin[3] = Endzeit // not used anymore
* $MOD_TE_termin[4] = Ort
* $MOD_TE_termin[5] = Details
* $MOD_TE_termin[6] = Titel
* $MOD_TE-termin[7] = Check für 

* $MOD_TE_termin[8] = Bemerkung CMS_HTML[8]
* $MOD_TE_termin[9] = Link CMS_LINK[9]
* $MOD_TE_termin[10] = Termin Zyklus
* $MOD_TE_termin[11] = Termin Zyklus Wochentage
* $MOD_TE_termin[12] = jeden 1.,2.,3.,4.,5. Wochentag 
* $MOD_TE_termin[13] = Themenkategorien
* $MOD_TE_termin[14] = Image
* $MOD_TE_termin[15] = Status
* $MOD_TE_termin[16] = Termin Zyklus jeden x-ten Tag
* $MOD_TE_termin[17] = Termin Zyklus Ausschlussliste
* $MOD_TE_termin[18] = Termin Zyklus Anzeigemodus1 (alle/aktuelle)
* $MOD_TE_termin[19] = Termin Zyklus Anzeigemodus2(Anzahl)
* $MOD_TE_termin[20] = Termin markieren durch class-Eintrag
* $MOD_TE_termin[21] = Output: according to module config, feu-form oder calendar?
* $MOD_TE_termin[22] = Option für Ausgabe der Themenkategorien im FEU-Form: Keine, Dropdown oder Checkbuttons?
* $MOD_TE_termin[23] = Tagesveranstaltung
    * $MOD_TE_termin[23] = Seminar Nr
    * $MOD_TE_termin[24] = Zustaendigkeit
    * $MOD_TE_termin[25] = Referenin
    * $MOD_TE_termin[26] = Fester Termin Ja Nein
************************************************/ 



#Includes
cInclude("module", "functions.terminliste.php");
cInclude("frontend", "includes/functions.t2t.php");
$bDebug     = false;

// needs date settings in administration / languages (last 4 input elements per language menu)
$oLang = new cApiLanguage();
$oLang->loadByPrimaryKey($lang);
$MOD[datetimeformat]     = $oLang->getProperty("dateformat", "full");
$MOD[dateformat]         = $oLang->getProperty("dateformat", "date");
$MOD[timeformat]         = $oLang->getProperty("dateformat", "time");

// add genericDate so that even dates with no date categorie can be tracked
$clientcategories[1] = "genericDate;".getEffectiveSetting('projektsliste', 'schwerpunkte', '');
$MOD[categories]     = explode(";", $clientcategories[1]);
if ( $bDebug ) { print "<br>Mandanteneinstellungen für Kategorien:<br><pre>"; print_r($MOD[categories]); print "</pre>";}
$catcount            = count(explode(";", $clientcategories[1]));




// definitions of variables
$MOD[datensaetze] = 0; // Zähler für das Auslesen der Datensätze
$MOD[zaehler]     = 0; // Zähler für den Termindurchlauf
$MOD[zaehler2]    = 0; // Zähler für zyklische Termine
$MOD[gefunden]    = false; // für die Steuerung der Anzeige (Termine gefunden)

// Variablen aus Input Bereich
$MOD[display]       = ("CMS_VALUE[0]" == 'true') ? true : false;  // show list at all. To be programmed in Smarty template.
$MOD[tpl_results]   = ("CMS_VALUE[24]" != "" ) ? "CMS_VALUE[24]" : "results_success.tpl";
$MOD[tpl_calendar]  = ("CMS_VALUE[27]" != "" ) ? "CMS_VALUE[27]" : "calendar.tpl";
$MOD[tpl_feuform]   = ("CMS_VALUE[28]" != "" ) ? "CMS_VALUE[28]" : "feu_searchform.tpl";
$MOD[alle]          = ("CMS_VALUE[1]" == '') ? "no" : "yes";  // abgelaufene Termine anzeigen
$MOD[group]         = ("CMS_VALUE[8]" == '') ? "no" : "yes";  // Termine gruppieren 
$MOD[linkyn]        = ("CMS_VALUE[9]" == '') ? "no" : "yes";  // Termine verlinken 
$MOD[linkyn]        = "yes";  // Termine verlinken 
$MOD[htmlyn]       = ("CMS_VALUE[10]" == '') ? "no" : "yes";  // Anzeige des Termins auch ohne HTML Info
$MOD[show_monat]    = ("CMS_VALUE[12]" == '') ? false : true;
$MOD[kata_tcheck]   = ("CMS_VALUE[19]" == '') ? false : true;

$MOD[zeitraum1]     = "CMS_VALUE[2]"; // Zeitraum für abgelaufene Termine
$MOD[zeitraum2]     = "CMS_VALUE[3]"; // Zeitraum für aktuelle Termine
$MOD[last_days]     = "CMS_VALUE[4]"; // abgelaufene Termine der letzten x Tage
$MOD[von_datum]     = "CMS_VALUE[5]"; // Datum für aktuelle Termine; Anzeige von
$MOD[bis_datum]     = "CMS_VALUE[6]"; // Datum für aktuelle Termine; Anzeige bis
$MOD[wtag_bez]      = "CMS_VALUE[7]"; // Anzeige der Wochentage
$MOD[idcat]         = "CMS_VALUE[11]"; // Kategorie der Termine
$MOD[plustag]       = "CMS_VALUE[13]"; // Bei Wochen- und Monatsansicht zusätzlich x Tage anzeigen
$MOD[z2_tage]       = "CMS_VALUE[14]"; // Termine der nächsten x Tage anzeigen
$MOD[anzahl_termine]= "CMS_VALUE[15]"; // x Termine anzeigen
$MOD[sort]          = "CMS_VALUE[16]"; // Sortierung der Termine
$MOD[add_tree]      = "CMS_VALUE[17]"; // zusätzliche Kategorien anzeigen
$MOD[add_tree_ids]  = "CMS_VALUE[18]"; // ids der zusätzlichen Kategorien
$MOD[modconfigbased]= "CMS_VALUE[21]";
$MOD[show_cat]      = ( "CMS_VALUE[22]" == "none" ) ? false : true ; // Anzeige der Kategorien
$MOD[catform]       = "CMS_VALUE[22]"; // Dropdown oder Checkboxen
$MOD[show_timeopt]  = "CMS_VALUE[23]";
$MOD[show_teaser]   = ("CMS_VALUE[29]" == '') ? false : true;
$MOD[show_teaser_tag]   = ("CMS_VALUE[30]" == '') ? false : true;

// calendar specific
$MOD[anzeigemodus]  = true; // Anzeigemodus Datum oder Status// Überprüfung ob zusätzliche Kategorien gewählt wurden
$MOD[ddownyn]       = ( "CMS_VALUE[26]" == "yes" && "CMS_VALUE[25]" != "" ) ? true : false ;  // Dropdown-Feld aktiv
$MOD[array_down]    = ( "CMS_VALUE[25]" != "") ? explode(";", "CMS_VALUE[25]") : ""; // Angezeigte Jahre im Dropdown Feld 
$MOD[idart]         = $idart;





// from Module Configuration

if ( $MOD[modconfigbased] == "module" ) {



	// wenn von - bis gewählt, werden abgelaufene Termine nicht angezeigt
	$MOD[checkdate_bis] = datein($MOD[zeitraum2],$MOD[plustag],$MOD[z2_tage],$MOD[bis_datum]); // Anzeigedatum des aktuellsten Termins
	
}



if ( $bDebug ) print "<br>Datumswahl eingestellt auf von ".$MOD[checkdate_von]." bis ".$MOD[checkdate_bis];


// NEW: DETECT CATEGORIES TO BROWSE WHEN CHECKBUTTON; MIGHT BE SAME FOR DROPDOWNS

// module configuration settings
// this one is also used to determine the theme categories to be displayed in the FEU-form
$selectedcat = "";
for ($i = 50; $i <= 50+count($MOD[categories]); $i++) {
	if ( "CMS_VALUE[$i]" != "") $selectedcat .= "CMS_VALUE[$i]".";";
}
if ( $selectedcat != "" ) { 
	$selectedcat = substr($selectedcat , 0, -1); 	
	$referencedTplCats = explode(";", $selectedcat); 
} else {
	//$referencedTplCats = $MOD[categories];
	$referencedTplCats = explode(";", "genericDate");
}
$MOD[categories_sel][1] = $selectedcat;

// FEU selection from FEU form
$selectedcat = "";

if ( $MOD[modconfigbased] == "feuform" ) {
	
	if ($_POST['MOD_TS_cat_check'] == "yes") {
		foreach ($_POST as $key => $value) {
			if ( substr($key, 0, 10) == 'categories') {
				$selectedcat .= $value.";";
			}
		}
		if ( $selectedcat != "" ) { $selectedcat = substr($selectedcat , 0, -1); }
		if ( $bDebug ) print "<br>FEU-Kategorien vor Explode<br>: ".$selectedcat;		
		
		$referencedFEUCats = explode(";", $selectedcat);
	} else {
		//$referencedFEUCats = ( count($referencedTplCats) > 0 ) ? $referencedTplCats : $MOD[categories];
		$referencedFEUCats = ( count($referencedTplCats) > 0 ) ? $referencedTplCats : explode(";", "genericDate") ;
	}
	if ( $bDebug ) { print "<br>FEU-Kategorien NACH Explode:<br><pre>"; print_r($referencedFEUCats); print "</pre>";}
	
}

// now decide which category comparison to choose from. FEU requests first over module configuration
$selectedcategories = ( $feurequest ) ? $referencedFEUCats : $referencedTplCats ;
// in case the FEU form shows no categories and none are set in module configuration: choose all available ones nonetheless
if ( !$MOD[show_cat] && $feurequest && count($referencedTplCats) == 0 ) $selectedcategories = $MOD[categories] ;
//$selectedcategories = $MOD[categories] ;


if ( $bDebug ) { print "<br>Ausgabe der modulgesteuerten Kategorien:<br><pre>"; print_r($referencedTplCats); print "</pre>";}
if ( $bDebug ) { print "<br>Ausgabe der FEU-gesteuerten Kategorien:<br><pre>"; print_r($referencedFEUCats); print "</pre>";}
if ( $bDebug ) { print "<br>Ausgabe der am Ende zugewiesenen Kategorien:<br><pre>"; print_r($selectedcategories); print "</pre>";}

// Überprüfung ob zusätzliche Verzeichnis-Kategorien gewählt wurden
if ($MOD[add_tree] == "" || ($MOD[add_tree_ids] == "" && $MOD[add_tree] == "auswahl"))
	$MOD[add_tree] = 'keine';

// zusätzliche Verzeichnis-Kategorien ermitteln
$MOD[sel_tree] = "'".$MOD[idcat]."'";
switch ($MOD[add_tree]) 
{
	case "below":
	$MOD_TL_tree_level = -1;
	$sql_tree    = "SELECT CAT.idcat AS idcat, CATTREE.level AS level ";
	$sql_tree   .= "FROM ".$cfg["tab"]["cat"]." AS CAT,";
	$sql_tree   .= " ".$cfg["tab"]["cat_tree"]." AS CATTREE ";
	$sql_tree   .= "WHERE CAT.idcat = CATTREE.idcat "; 
	$sql_tree   .= "ORDER BY CATTREE.idtree";
	
	$db->query($sql_tree);
	while($db->nextRecord()) 
	{
		if ($db->f("idcat") == $MOD[idcat]) 
			$MOD_TL_tree_level = $db->f("level");
		else if ($MOD_TL_tree_level > -1 && $db->f("level") > $MOD_TL_tree_level) 
			$MOD[sel_tree] .= ",'".$db->f("idcat")."'";
			else if ($db->f("level") <= $MOD_TL_tree_level) 
				break;
			}
	break;
	case "select":
	$MOD[add_tree_array] = explode(",",$MOD[add_tree_ids]);
	foreach ($MOD[add_tree_array] as $value) 
	{
		$addicdat = str_replace( "cat_", "", $value);
		$MOD[sel_tree] .= ",'".$addicdat."'";
	}
	break;
	default:
}

// Alle Artikel der Kategorie einlesen, die nicht Startartikel sind
$sql  = "SELECT  ARTLANG.idart, CONTENT.value, CONTENT.typeid, ARTLANG.idartlang, CONTENT.idtype ";
$sql .= "FROM ".$cfg["tab"]["cat_art"]." AS CATART,";
$sql .= " ".$cfg["tab"]["art_lang"]." AS ARTLANG,";
$sql .= " ".$cfg["tab"]["cat"]." AS CAT,";
$sql .= " ".$cfg["tab"]["content"]." AS CONTENT,";
$sql .= " ".$cfg["tab"]["cat_lang"]." AS CATLANG ";
$sql .= "WHERE ARTLANG.idart = CATART.idart ";
$sql .= "AND CATART.idcat = CAT.idcat ";
$sql .= "AND ARTLANG.idartlang = CONTENT.idartlang ";
$sql .= "AND ARTLANG.idlang = '".$lang."' ";
$sql .= "AND CAT.idcat IN (".$MOD[sel_tree].") ";
$sql .= "AND CAT.idclient = '".$client."' ";
$sql .= "AND ARTLANG.online = '1' "; // nur Artikel die online sind
$sql .= "AND CATART.idcat = CATLANG.idcat ";

if ($cfg["is_start_compatible"] == true) 
	$sql .= "AND CATART.is_start = '0' ";
else 
	$sql .= "AND CONTENT.idartlang != CATLANG.startidartlang ";

$sql .= "ORDER BY ARTLANG.idart, CONTENT.typeid ASC";
$db->query($sql);

// weiter, wenn Artikel gefunden wurden werden die Felder in ein Array geschrieben
if ($db->numRows() > 0) 
{ 
	$MOD[termine] = array(); // Array erzeugen, in dem die Termindaten abgelegt werden; 
	
	while ($MOD[datensaetze] < $db->numRows()) // alle Datensätze durchlaufen und Inhalte in Array schreiben 
	{ 
		$db->nextRecord(); 
		if ($db->f("idart") > $MOD[termine][$MOD[zaehler]]["idart"]) 
			$MOD[zaehler]++; 
		if (isStartArticle($db->f("idartlang"),$MOD_TL_durchlaufdcat,$lang)==FALSE) 
		{ 
			$element_type = $db->f("idtype");
			
			switch ($db->f("typeid")) 
			{ 
				case 1: // Anfangstermin inkl Uhrzeit
				if ($element_type == '19') // Datum
				{
					$dom = new domDocument;
					$dom->loadXML($db->f('value'));
					$xml = simplexml_import_dom($dom);
					$date_Ymd  = date('Y-m-d',  (int)$xml->timestamp);
					$date_His  = date('H:i',  (int)$xml->timestamp);
					
					
					
					$MOD[termine][$MOD[zaehler]]["idart"]      = $db->f("idart"); 
					$MOD[termine][$MOD[zaehler]]["text"]       = '';
					$MOD[termine][$MOD[zaehler]]["link"]       = '';
					$MOD[termine][$MOD[zaehler]]["ortdetail"]  = '';                     
					$MOD[termine][$MOD[zaehler]]["linkdesc"]   = '';  
					$MOD[termine][$MOD[zaehler]]["image"]      = '';  
					$MOD[termine][$MOD[zaehler]]["linkframe"]  = '';
					$MOD[termine][$MOD[zaehler]]["kategorie"]  = '';
					$MOD[termine][$MOD[zaehler]]["zyklus"]     = 'no';
					$MOD[termine][$MOD[zaehler]]["xtag"]       = '';
					$MOD[termine][$MOD[zaehler]]["aliste"]     = '';
					$MOD[termine][$MOD[zaehler]]["highlight"]  = '';
					$MOD[termine][$MOD[zaehler]]["zutermine"]  = '';
					//precaution: set date2=date1, might be overwritten later
					$MOD[termine][$MOD[zaehler]]["datum2"] = $MOD[termine][$MOD[zaehler]]["datum1"];
					$MOD[termine][$MOD[zaehler]]["zeit2"] = $MOD[termine][$MOD[zaehler]]["zeit1"];
				}
				break; 
				case 2: // Endtermin inkl. Uhrzeit
				if ($element_type == '19') {
					$dom = new domDocument;
					$dom->loadXML($db->f('value'));
					$xml = simplexml_import_dom($dom);
					$date_Ymd  = date('Y-m-d',  (int)$xml->timestamp);
					$date_His  = date('H:i',  (int)$xml->timestamp);					
					$MOD[termine][$MOD[zaehler]]["datum2"] = $date_Ymd;
					$MOD[termine][$MOD[zaehler]]["zeit2"] = $date_His;
				}
				break; 
				
				case 4: // Ort 
				if ($element_type == '3') // Text
					$MOD[termine][$MOD[zaehler]]["ort"] = $db->f("value");
				break;
				case 24: // Zuständigkeit
				if ($element_type == '3') // Text
					$MOD[termine][$MOD[zaehler]]["zustaendigkeit"] = $db->f("value");
					break; 	
				case 26: // Jaein 
				if ($element_type == '3') // Text
					$MOD[termine][$MOD[zaehler]]["jaein"] = ( $db->f("value") == "yes") ? true : false;
				break; 	
				case 6: // Titel 
				if ($element_type == '3') // Text
					$MOD[termine][$MOD[zaehler]]["titel"] = $db->f("value");
				break;
				case 7: // Teaser 
				if ($element_type == '3') // Text
					$MOD[termine][$MOD[zaehler]]["teaser"] = ( $db->f("value") == "yes") ? true : false;
				break; 				
				case 8: // HTML 
				$MOD[termine][$MOD[zaehler]]["text"] = $db->f("value"); 
				break; 
				case 9: // Link, Achtung 4 Zustände
				$dom = new domDocument;
				$dom->loadXML($db->f("value"));
				$xml = simplexml_import_dom($dom);
				$MOD[termine][$MOD[zaehler]]["link"] = $xml->externallink;
				$MOD[termine][$MOD[zaehler]]["linkframe"] = $xml->newwindow;
				$MOD[termine][$MOD[zaehler]]["linkdesc"] = $xml->title;						
				break; 
				case 10: // Termin Zyklus 
				$MOD[termine][$MOD[zaehler]]["zyklus"] = ($element_type == '3' && $db->f("value") != "") ? $db->f("value") : "no";
				break; 
				case 11: // Zyklus Wochentage 
				if ($element_type == '3') // Text
					$MOD[termine][$MOD[zaehler]]["wtagezyklus"] = $db->f("value");
				break; 
				case 12: // 1., 2., ... Wochentag im Monat
				if ($element_type == '3') // Text
					$MOD[termine][$MOD[zaehler]]["wtagemon"] = $db->f("value");
				break; 
				case 13: // Terminkategorien
				if ($element_type == '3') {// Text
					$MOD[termine][$MOD[zaehler]]["kategorie"] = ( $db->f("value") == "" ) ? "genericDate" : "genericDate;".$db->f("value");
				}
				case 14: // Bild
				if ($element_type == '22') {
					$imageid = $db->f("value");
					$tlimage = new cApiUpload($imageid);
					$tlimage->loadByPrimaryKey();
					$meta = new cApiUploadMeta();
					$meta->loadByUploadIdAndLanguageId( $imageid, $lang );					
					$MOD[termine][$MOD[zaehler]]["image"] = $tlimage->get('filename');
					$MOD[termine][$MOD[zaehler]]["imageid"] = $imageid;
					$MOD[termine][$MOD[zaehler]]["imagedir"] = $tlimage->get('dirname');
					$MOD[termine][$MOD[zaehler]]["imagefullpath"] = "upload/".$tlimage->get('dirname').$tlimage->get('filename');
					$MOD[termine][$MOD[zaehler]]["medianame"]  = stripslashes($meta->get("medianame"));
					$MOD[termine][$MOD[zaehler]]["description"] = stripslashes(str_replace("\"", "&quot;", $meta->get('description')));
					$MOD[termine][$MOD[zaehler]]["copyright"]  = stripslashes($meta->get('copyright'));
					$MOD[termine][$MOD[zaehler]]["keywords"]  = stripslashes($meta->get('keywords'));
					$MOD[termine][$MOD[zaehler]]["internal_description"]  = stripslashes($meta->get('internal_description'));
				}
				break; 
				case 16: // Zyklus xten Tag
				if ($element_type == '3') // Text
					$MOD[termine][$MOD[zaehler]]["xtag"] = $db->f("value");
				break; 
				case 17: //  Ausschlussliste
				if ($element_type == '3') // Text
					$MOD[termine][$MOD[zaehler]]["aliste"] = $db->f("value");
				break; 
				case 20: // Termin hervorheben
				if ($element_type == '3') // Text
					$MOD[termine][$MOD[zaehler]]["highlight"] = $db->f("value");
				break; 
				case 22: // zusätzliche termine
				if ($element_type == '3') // Text
					$MOD[termine][$MOD[zaehler]]["zutermine"] = $db->f("value");
				break; 
				case 23: // Tagesveranstaltung 
				if ($element_type == '3') // Text
					$MOD[termine][$MOD[zaehler]]["teaser_tag"] = ( $db->f("value") == "yes") ? true : false;
				break; 
			} 
			
		} 
		$MOD[datensaetze]++;
		
	} 
	
	$MOD[termine] = array_values($MOD[termine]);
	
	if ( $bDebug ) print "<br>Anzahl Termine nach Einlesen und 1. Umkopieren: ".count($MOD[termine]);
	if ( $bDebug ) { print "<br>Array nach Einlesen und 1. Umkopieren:<br><pre>"; print_r($MOD[termine]); print "</pre>";}
	
	// Ermittlung der zyklischen Termine und Löschen von Datensätzen, die nicht angezeigt werden müssen
	
	$zusatzterminliste = array();
	
	foreach ( $MOD[termine] AS $termin ) 
	{   
		if (($termin["zyklus"] != 'no' || $termin["zutermine"] != '') && $termin["idart"] != '' ) // Zyklischer Termin
		{
			if ($bDebug)  print "<br>Cycle Dates found!";
			$MOD_TL_zdate_array = makedatearray($termin["datum1"],$termin["datum2"],$termin["zyklus"],$termin["xtag"], $termin["aliste"],$MOD[checkdate_von],$MOD[checkdate_bis],$termin["wtagezyklus"],$termin["wtagemon"],$termin["zutermine"]);
			if ($bDebug) print "<br>Count Cycle-Dates: ".count($MOD_TL_zdate_array);
			
			if(count($MOD_TL_zdate_array) >= 1)
			{
				if($termin["zyklus"] != 'no') $termin["datum2"] = '';
				
				
				foreach ($MOD_TL_zdate_array as $zusatztermin)
				{
					if ( $termin["datum1"]  != $zusatztermin )
					{
						$termin2add = array();
						$termin2add["datum1"]    = $zusatztermin; 
						$termin2add["datum2"]    = $zusatztermin; 
						$termin2add["zeit1"]     = $termin["zeit1"];
						$termin2add["zeit2"]     = $termin["zeit2"];
						$termin2add["ort"]       = $termin["ort"];
						$termin2add["titel"]     = $termin["titel"];
						$termin2add["idart"]     = $termin["idart"];
						$termin2add["text"]      = $termin["text"];
						$termin2add["link"]      = $termin["link"];
						$termin2add["linkdesc"]  = $termin["linkdesc"];                 
						$termin2add["linkframe"] = $termin["linkframe"];
						$termin2add["kategorie"] = $termin["kategorie"];
						$termin2add["highlight"] = $termin["highlight"];
						array_push($zusatzterminliste, $termin2add);
					}
				}
			}
			
		}
	}
	
	if ($bDebug) print "zusatztermine ".count($zusatzterminliste);
	if ($bDebug) print "anzahl vor zusatztermine einfügen: ".count($MOD[termine]);
	
	$MOD[termine] = array_merge($MOD[termine], $zusatzterminliste);
	if ($bDebug) print "anzahl nach zusatztermine einfügen: ".count($MOD[termine]);
	
	
	if ( $bDebug ) print "<br>Anzahl Termine nach Sortierung, VOR Bereinigung nach Datum und Kategorie: ". count($MOD[termine]);
	if ( $bDebug ) { print "<br>Array nach Sortierung, VOR Bereinigung nach Datum und Kategorie:<br><pre>"; print_r($MOD[termine]); print "</pre>";}
	if ( $bDebug ) { print "<br>Zu berücksichtigende Themen-Kategorien:<br><pre>"; print_r($selectedcategories); print "</pre>";}
	
	// Prüfung ob Termin im aktuellen Anzeigezeitrahmen ist
	
	$MOD[zaehler2] = count($MOD[termine]);
	
	// before stripping, keep this version of $MOD[termine] as a base for full calendar display
	// just clear this new list and take out unwanted category entries
	$calendarlist = $MOD[termine];
	foreach ( $calendarlist AS $key=>$termin ) 
	{
		// Now check if categories fit; if not, mark for deletion!
		$MOD_TL_termin_del  = false;
		
		if ($termin["datum1"] == "")  { $MOD_TL_termin_del  = true;}
		
		$terminCatArray = explode (";", $termin["kategorie"]);
		$foundit = false;
		foreach ( $terminCatArray AS $key2=>$value ) {
			if ( in_array( $value, $selectedcategories) ) $foundit = true;
		}
			
		if	( !$foundit ) $MOD_TL_termin_del  = true;

		// now delete if necessary
		if($MOD_TL_termin_del) unset ($calendarlist[$key]);		
	}
	
	
	
	foreach ( $MOD[termine] AS $key=>$termin ) 
	{
		$MOD_TL_termin_del = false;
		
		// case 1: check dates determined by module
		
		if ( !isset($_GET["MOD_TL_newdate"]) ) {
		
			// note: dates which are up and running RIGHT now are both listed on passed events and current events, as they are never marked for deletion
			if (!( ($termin["datum1"] >= $MOD[checkdate_von] && $termin["datum1"] <= $MOD[checkdate_bis]) ||
				  ($termin["datum2"] >= $MOD[checkdate_von] && $termin["datum2"] <= $MOD[checkdate_bis])  ))
			{
				$MOD_TL_termin_del = true;
			}
			
			if ( $MOD[show_teaser] && !$termin["teaser"] ) $MOD_TL_termin_del = true;
			
			if ( $MOD[show_teaser_tag] && !$termin["teaser_tag"] ) $MOD_TL_termin_del = true;
			

		} else {
		
		// case 2: check dates determined by calendar
		
			if (!( ($termin["datum1"] <= $MOD[checkdate_von] && $termin["datum2"] >= $MOD[checkdate_bis])  ))
				{
				$MOD_TL_termin_del = true;
				}
		}

		// Now check if categories fit; if not, mark for deletion!
		$terminCatArray = explode (";", $termin["kategorie"]);
		$foundit = false;
		foreach ( $terminCatArray AS $key2=>$value ) {
			if ( in_array( $value, $selectedcategories) ) $foundit = true;
		}
			
		if	( !$foundit ) $MOD_TL_termin_del  = true;

		// now delete if necessary
		if($MOD_TL_termin_del) unset ($MOD[termine][$key]);
	}
	
	
	if( !empty($MOD[termine]) ) 
	{
		
		// nach Datum und Zeit sortieren
		foreach($MOD[termine] as $key => $array) {
			$datum1Array[$key] = $array["datum1"];
			$datum2Array[$key] = $array["datum2"];
			$zeit1Array[$key] = $array["zeit1"];
			$zeit2Array[$key] = $array["zeit2"];
			$titelArray[$key] = $array["titel"];
			$ortArray[$key] = $array["ort"];
			$idArray[$key] = $array["id"];
		}
		
		$MOD[sort] = ($MOD[sort] == 'DESC') ? "DESC" : "ASC";
		$upordown = constant('SORT_' . $MOD[sort]);
		array_multisort($datum1Array, $upordown, SORT_STRING, $zeit1Array, $upordown, SORT_STRING, $zeit2Array, $upordown, SORT_STRING, $MOD[termine]);
		
	}
	
	// Extend array with additional values, mainly for date expressions
	
	$terminCount = count($MOD[termine]);
	if ( $bDebug ) print "<br>Anzahl Termine nach Sortierung, nach Bereinigung nach Datum und Kategorie: ". $terminCount;
	
	$counter = 1;
	$terminliste = array();
	foreach ( $MOD[termine] AS &$termin ) {
		
		
		// do this first, as we need parts of it at the end of the routine
		$MOD_TL_datum1_array = explode("-",$termin["datum1"]);
		$MOD_TL_datum2_array = explode("-",$termin["datum2"]);
		
		// Prepare all sorts of date strings for both dates			
		$dateHelper = new DateTime($termin["datum1"]); 
		$termin[date1_month]      = $dateHelper->format("m");
		$termin[date1_monthnum]   = $dateHelper->format("n");
		$termin[date1_monthshort] = $months_short[$lang][$termin[date1_monthnum]];
		$termin[date1_monthfull]  = $months_full[$lang][$termin[date1_monthnum]];
		$termin[date1_yearshort]  = $dateHelper->format("y");
		$termin[date1_yearfull]   = $dateHelper->format("Y");
		$termin[date1_day]        = $dateHelper->format("d");
		$termin[date1_daynum]     = $dateHelper->format("w");
		$termin[date1_dayshort]   = $days_short[$lang][$termin[date1_daynum]];
		$termin[date1_dayfull]    = $days_full[$lang][$termin[date1_daynum]];
		
		$replace1 = array(" ".$dateHelper->format("D")." ", " ".$dateHelper->format("l")." ", " ".$dateHelper->format("M")." ", " ".$dateHelper->format("F")." ");
		$replace2 = array(" ".$termin[date1_dayshort]." ", " ".$termin[date1_dayfull]." ", " ".$termin[date1_monthshort]." ", " ".$termin[date1_monthfull]." ");
		$termin[date1_lang]       = trim( str_replace($replace1, $replace2, " ".$dateHelper->format($MOD[dateformat])." ") );
		
		if ( $termin["datum2"] != "" ) {
			$dateHelper = new DateTime($termin["datum2"]); 
			$termin[date2_month]      = $dateHelper->format("m");
			$termin[date2_monthnum]   = $dateHelper->format("n");
			$termin[date2_monthshort] = $months_short[$lang][$termin[date2_monthnum]];
			$termin[date2_monthfull]  = $months_full[$lang][$termin[date2_monthnum]];
			$termin[date2_yearshort]  = $dateHelper->format("Y");
			$termin[date2_yearfull]   = $dateHelper->format("y");
			$termin[date2_day]        = $dateHelper->format("d");
			$termin[date2_daynum]     = $dateHelper->format("w");
			$termin[date2_dayshort]   = $days_short[$lang][$termin[date2_daynum]];
			$termin[date2_dayfull]    = $days_full[$lang][$termin[date2_daynum]];
			$replace1 = array(" ".$dateHelper->format("D")." ", " ".$dateHelper->format("l")." ", " ".$dateHelper->format("M")." ", " ".$dateHelper->format("F")." ");
			$replace2 = array(" ".$termin[date2_dayshort]." ", " ".$termin[date2_dayfull]." ", " ".$termin[date2_monthshort]." ", " ".$termin[date2_monthfull]." ");
			$termin[date2_lang]       = trim (str_replace($replace1, $replace2, " ".$dateHelper->format($MOD[dateformat])." ") );
		}
		
		$termin[oneday]      = ($termin[datum1] == $termin[datum2] & $termin[zeit1] == $termin[zeit2]) ? true : false;		
		$termin[groupeddate] =  ( $termin[prevdate] == $termin[datum1] ) ? true : false;		
		
		$termin[prevdate]    = $termin[datum1]; 
		$MOD[gefunden]       = true;
		
		// cut the array if a limiter is given
		if ( !($MOD[anzahl_termine] >=0 && $counter > $MOD[anzahl_termine]) ) { array_push($terminliste, $termin); }
		$counter++;		
		
	}	
	
}

$labels = array(
	'oclock'=> mi18n("oclock"),
	'fullday'=> mi18n("fullday"),
	'from'=> mi18n("from"),
	'until'=> mi18n("to"),
	'timeoption'=> mi18n("headline_timeoptions"),
	'categoryoption'=> mi18n("headline_categoryoptions"),
	'send'=> mi18n("search"),
	'datefrom'=> mi18n("date_from"),
	'dateuntil'=> mi18n("date_until"),
	'dateframe'=> mi18n("dateframe"),
	'today'=> mi18n("today"),
	'thisweek'=> mi18n("thisweek"),
	'thismonth'=> mi18n("thismonth"),
	'thisyear'=> mi18n("thisyear"),
);

// use smarty template to output header text
$tpl = cSmartyFrontend::getInstance();
$tpl->assign('label', $labels);
$tpl->assign('termine', $terminliste);
$tpl->assign('searcherrortext', mi18n("extend_search"));
// values needed for FEU-Form display
$tpl->assign('datefrom', $MOD_TS_datum_von);
$tpl->assign('dateuntil', $MOD_TS_datum_bis);
$tpl->assign('formaction', $REQUEST_URI);
$tpl->assign('MOD', $MOD);
$tpl->assign('categories_checkbox', createCheckbox($MOD[categories_sel], $feuselectedcat, "categories", $lang, 130 ));
$tpl->assign('categories_dropdown', createSel($MOD[categories_sel], $feuselectedcat, "categories", $lang ));
$tpl->assign('errors', $errors);


if ( $bDebug) { print "<pre>";print_r($MOD[termine]);print "</pre>"; }

// if module wants calendar to be displayed: create it
if ( $MOD[modconfigbased] == "calendar") {
	$sKalender = new sKalender();
	$sKalender->setDate( $MOD[newdate_array][2], $MOD[newdate_array][1], $MOD[newdate_array][0] );
	$tpl->assign('calendar', $sKalender->printCalender());
	$tpl->display($MOD[tpl_calendar]);
	if ( $calendarrequest && count($terminliste) > 0 ) $tpl->display($MOD[tpl_results]);
}

if ( $MOD[modconfigbased] == "feuform") {
	$tpl->display($MOD[tpl_feuform]);
	if ( count($terminliste) > 0 ) $tpl->display($MOD[tpl_results]);
	if ( $feurequest && count($terminliste) == 0 ) $tpl->display('results_none.tpl');
}

if ( $MOD[modconfigbased] == "module" && count($terminliste) > 0)  $tpl->display($MOD[tpl_results]);

/*** classes **/

class sKalender2
{
	var $MOD_TL_akt_datum;
	var $MOD_TL_admin;
	
	function sKalender()
	{
		// Verhindert mögliche Endlosloops Ausführungszeit max 1 Sek.
		//set_time_limit( 1 );
		
		// wird der Funktion ein Parameter übergeben, wird diese dem Key "MOD_TL_admin" zugeordnet
		if( func_num_args() == 1 )
			$this->MOD_TL_admin = func_get_arg( 0 );
		else
			$this->MOD_TL_admin = false;
		
		// aktuelles Datum in Array MOD_TL_akt_datum schreiben
		$this->MOD_TL_akt_datum = getdate();
	}
	
	function setDate( $MOD_TL_tag, $MOD_TL_monat, $MOD_TL_jahr )
	{
		// prüft, ob alle Werte übergeben wurden und schreibt diese dann ins Array
		if( $MOD_TL_tag != ""  &&  $MOD_TL_monat != ""  &&  $MOD_TL_jahr != "" )
		{
			$this->MOD_TL_akt_datum["mday"] = $MOD_TL_tag*1;  // führende Nullen entfernen
			$this->MOD_TL_akt_datum["mon"] = $MOD_TL_monat*1; // führende Nullen entfernen
			$this->MOD_TL_akt_datum["year"] = $MOD_TL_jahr;
			return true;
		} 
		else
			return false;
	}
	
	function getDateByMonth( $MOD_TL_neuer_monat )
	{
		$MOD_TL_neues_datum = mktime (0,0,0, ($this->MOD_TL_akt_datum["mon"] + $MOD_TL_neuer_monat),  $this->MOD_TL_akt_datum["mday"],  $this->MOD_TL_akt_datum["year"] );
		return $MOD_TL_neues_datum;
	}
	
	function printCalender()
	{
		// Globale Variablen definieren
		global $lang, $days_short, $months_full;
		global $MOD;
		global $idart;
		
		$output = "";
		
		if( $this->MOD_TL_akt_datum == "" )
			return false;
		else
			$MOD_TL_datum = $this->MOD_TL_akt_datum;
		
		$MOD_TL_wochenbeginn = 2;	// Die Woche beginnt mit Montag, PHP beginnt mit Sonntag = 1
		$MOD_TL_admin = "&MOD_TL_admin=" . $this->MOD_TL_admin;
		
		$output .= '<div id="mod_sK">
<table>
<tr>';
		// Einen Monat zurück
		$MOD_TL_neues_datum = $this->getDateByMonth( -1 );
		$MOD_TL_newdate = date("Y", $MOD_TL_neues_datum ).'-'.date("n", $MOD_TL_neues_datum ).'-1';
		$output .= '<td class="navl"><a  href="front_content.php?idart='.$idart.'&MOD_TL_newdate='.$MOD_TL_newdate.'" title="'.mi18n("vorheriger Monat").'">&lt;&lt;</a></td>';
		
		// aktueller Monat
		$MOD_TL_neues_datum = $this->getDateByMonth( 0 );
		$MOD_TL_newdate = date("Y", $MOD_TL_neues_datum ).'-'.date("n", $MOD_TL_neues_datum ).'-1';
		
		// Dropdownfeld aufbauen
		$MOD_TL_arry_years = count($MOD[array_down]); // Anzahl der Jahre
		$MOD_TL_dropdown    =  '<select name="MOD_TL_newdate" onchange="parent.frames.top.location.href = this.value">';
		$MOD_TL_dropdown   .=  '<option value="'.$MOD_TL_newdate.'">'.$months_full[$lang][ $MOD_TL_datum["mon"] ].'&nbsp;'.$MOD_TL_datum["year"].'</option>';
		
		for( $MOD_TL_dyears = 0; $MOD_TL_dyears < $MOD_TL_arry_years; $MOD_TL_dyears++ )
		{
			for( $MOD_TL_dmonth = 1; $MOD_TL_dmonth <= 12; $MOD_TL_dmonth++ )
			{
				$MOD_TL_dropdown   .=  '<option value="front_content.php?subid='.$subid.'&idart='.$idart.'&MOD_TL_newdate='.$MOD[array_down][$MOD_TL_dyears].'-'.$MOD_TL_dmonth.'-1">'.$months_full[$lang][$MOD_TL_dmonth].'&nbsp;'.$MOD[array_down][$MOD_TL_dyears].'</option>';
			}
		}
		$MOD_TL_dropdown   .=  '</select>';
		
		if(!$MOD[ddownyn])
			$output .= '<td class="navm"><a href="front_content.php?idart='.$MOD[idart].'&MOD_TL_newdate='.$MOD_TL_newdate.'&MOD_TL_show=m" title="'.mi18n("Monats&uuml;bersicht anzeigen.").'">'.$months_full[$lang][ $MOD_TL_datum["mon"] ].'&nbsp;'.$MOD_TL_datum["year"].'</a></td>';
		else
			$output .= '<td class="navm">'.$MOD_TL_dropdown.'</td>';
		
		// Einen Monat vor
		$MOD_TL_neues_datum = $this->getDateByMonth( +1 );
		$MOD_TL_newdate = date("Y", $MOD_TL_neues_datum ).'-'.date("n", $MOD_TL_neues_datum ).'-1';
		$output .= '<td class="navr"><a href="front_content.php?idart='.$idart.'&MOD_TL_newdate='.$MOD_TL_newdate.'" title="'.mi18n("n&auml;chster Monat").'">&gt;&gt;</a></td>';
		$output .= '
</tr>
</table>
<table>';
		
		// Ermittle die maximalen Tage für den aktuellen Monat
		$MOD[tag_max] = date( "t", mktime( 0, 0, 0, $MOD_TL_datum["mon"], 1, $MOD_TL_datum["year"] ) );
		for( $MOD_TL_tag_aktuell = 1; $MOD_TL_tag_aktuell <= $MOD[tag_max]; $MOD_TL_tag_aktuell++ )
		{
			$MOD_TL_tag_nummer = date("w", mktime(0, 0, 0, $MOD_TL_datum["mon"], $MOD_TL_tag_aktuell, $MOD_TL_datum["year"])) + 1;
			if ($MOD_TL_tag_aktuell == 1)
			{
				$output .= '
<tr>
<td class="wtag">'.$days_short[$lang][1].'</td>
<td class="wtag">'.$days_short[$lang][2].'</td>
<td class="wtag">'.$days_short[$lang][3].'</td>
<td class="wtag">'.$days_short[$lang][4].'</td>
<td class="wtag">'.$days_short[$lang][5].'</td>
<td class="wtag">'.$days_short[$lang][6].'</td>
<td class="wtag">'.$days_short[$lang][0].'</td>
</tr>';
				
				// Leere Felder am Anfang / Ende
				$output .= '<tr>';
				for( $MOD_TL_check_tag = $MOD_TL_wochenbeginn; $MOD_TL_tag_nummer != $MOD_TL_check_tag; $MOD_TL_check_tag++ )
				{
					$output .= '<td>&nbsp;</td>';
					if( $MOD_TL_tag_nummer == 1  &&  $MOD_TL_check_tag == 7 )	// Workaround !!!
					{
						$output .= ( $this->getCell( $MOD_TL_tag_aktuell ) );
						break;
					}
					
					if( $MOD_TL_check_tag > 15 )	// Workaround !!!
						break;
				}
				
				if ($MOD_TL_tag_nummer == $MOD_TL_check_tag)
					$output .= $this->getCell( $MOD_TL_tag_aktuell );
			}
			
			else if ($MOD_TL_tag_nummer == $MOD_TL_wochenbeginn)
			{
				$output .= '
</tr>
<tr>';
				$output .= $this->getCell( $MOD_TL_tag_aktuell ) ;
			}
			else
				$output .= $this->getCell( $MOD_TL_tag_aktuell ) ;
		}
		
		$MOD_TL_tag_aktuell = $MOD_TL_tag_aktuell - 6;
		$MOD_TL_tag_nummer = date("w", mktime(0, 0, 0, $MOD_TL_datum["mon"], $MOD_TL_tag_aktuell, $MOD_TL_datum["year"]));
		while( $MOD_TL_tag_nummer != $MOD_TL_wochenbeginn )
		{
			$output .= ' <td>&nbsp</td>';
			$MOD_TL_tag_aktuell++;
			$MOD_TL_tag_nummer = date("w", mktime(0, 0, 0, $MOD_TL_datum["mon"], $MOD_TL_tag_aktuell, $MOD_TL_datum["year"]));
		}
		
		$output .= '
</tr>
</table>
</div>';
		return $output;
	}
	
	function checkDayFor1( $MOD_TL_datum_check )
	{
		global $calendarlist;
		$MOD_TL_check_ok = false;
		foreach($calendarlist as $termin) 
		{
			if ($termin["datum1"] == $MOD_TL_datum_check && ( $termin["datum2"] == '' || $termin["datum2"] == $termin["datum1"] ) )
				$MOD_TL_status_ok = true;
		}
		return $MOD_TL_check_ok;
	}
	
	function checkDayFor2( $MOD_TL_datum_check )
	{
		global $calendarlist;
		$MOD_TL_check_ok = false;
		foreach($calendarlist as $termin) 
		{
				// here seems to be a bug. The list contains a lot of element with date1 being empty, don't know why. Filter them out here!
			if ( $termin["datum1"] != "" && $MOD_TL_datum_check >= $termin["datum1"] && $MOD_TL_datum_check <= $termin["datum2"]  ) 
			{ 
				$MOD_TL_check_ok = true;
				
			
			}
		}
		return $MOD_TL_check_ok;
	}
	
	function checkStatus1( $MOD_TL_datum_check ) // Tag mit reservierten Terminen
	{
		global $calendarlist;
		$MOD_TL_status_ok = false;
		foreach($calendarlist as $termin) 
		{
			if ($termin["datum1"] == $MOD_TL_datum_check && $termin["status"] == '1')
				$MOD_TL_status_ok = true;
		}
		return $MOD_TL_status_ok;
	}
	
	function checkStatus2( $MOD_TL_datum_check ) // Tag mit gebuchten Terminen
	{
		global $calendarlist;
		$MOD_TL_status_ok = false;
		foreach($calendarlist as $termin) 
		{
			if ($termin["datum1"] == $MOD_TL_datum_check && $termin["status"] == '2')
				$MOD_TL_status_ok = true;
		}
		return $MOD_TL_status_ok;
	}
	
	function getCell( $MOD_TL_tag )
	{
		global $MOD;
		
		$MOD_TL_datum_aktuell= date("Y-m-d", mktime(0, 0, 0, date("m", $this->getDateByMonth( 0 ) ), $MOD_TL_tag,  date("Y", $this->getDateByMonth( 0 ) )  ) );
		$MOD_TL_datum_title= date("Y-m-d", mktime(0, 0, 0, date("m", $this->getDateByMonth( 0 ) ), $MOD_TL_tag,  date("Y", $this->getDateByMonth( 0 ) )  ) );
		$MOD_TL_wochentag = date("w", mktime(0, 0, 0, date("m", $this->getDateByMonth( 0 ) ), $MOD_TL_tag,  date("Y", $this->getDateByMonth( 0 ) )  ) );
		
		$MOD_TL_termin_ok = false;
		if ($MOD[anzeigemodus])
		{
			if( $MOD_TL_wochentag == 6  ||  $MOD_TL_wochentag == 0 )	// Wochenende
				$MOD_TL_style = "wochenende";
			else	// Normal
				$MOD_TL_style = "wochentag";
			
			if( date("Y-m-d") == $MOD_TL_datum_aktuell)			// Heute
				$MOD_TL_style = "heute";
			
			if( $this->checkDayFor1($MOD_TL_datum_aktuell ) )	// Tag mit direkten Terminen
			{
				$MOD_TL_termin_ok = true;
				if( $MOD_TL_wochentag == 6  ||  $MOD_TL_wochentag == 0 )	// Wochenende
					$MOD_TL_style = "belegtwe";
				else
					$MOD_TL_style = "belegt";
			}
			else
			{
				if( $this->checkDayFor2($MOD_TL_datum_aktuell ) )	// Tag mit indirekten Terminen
				{
					$MOD_TL_termin_ok = true;
					if( $MOD_TL_wochentag == 6  ||  $MOD_TL_wochentag == 0 )	// Wochenende
						$MOD_TL_style = "tangiertwe";
					else
						$MOD_TL_style = "tangiert";
				}
			}
		}
		else
		{
			$MOD_TL_style = "wochentag"; // 
			if( $this->checkStatus1( $MOD_TL_datum_aktuell ) )	// Tag mit reservierten Terminen
			{
				$MOD_TL_termin_ok = true;
				$MOD_TL_style = "tangiert";
			}
			if( $this->checkStatus2( $MOD_TL_datum_aktuell ) )	// Tag mit gebuchten Terminen
			{
				$MOD_TL_termin_ok = true;
				$MOD_TL_style = "belegt";
			}
		}
		
		global $MOD;
		
		if ($MOD_TL_termin_ok)
		{
			if($MOD[linkyn])
				$MOD_TL_val = '<td class="'.$MOD_TL_style.'"><a class="tag" href="front_content.php?idart=27&MOD_TL_newdate='.$MOD_TL_datum_aktuell.'&MOD_TL_show=t" title="'.mi18n("Termine für den").' '.$MOD_TL_datum_title.' '.mi18n("anzeigen").'.">'.$MOD_TL_tag.'</a></td>';
			else
			{
				if ($MOD[anzeigemodus])
					$MOD_TL_val = '<td class="'.$MOD_TL_style.'"><a class="tag" title="'.mi18n("Für den").' '.$MOD_TL_datum_title.' '.mi18n("existieren Termine").'.">'.$MOD_TL_tag.'</a></td>';
				else
					$MOD_TL_val = '<td class="'.$MOD_TL_style.'"><a class="tag" title="'.mi18n("gebucht").'">'.$MOD_TL_tag.'</a></td>';
			}
		}
		else 
		{
			if ($MOD[anzeigemodus])
				$MOD_TL_val = '<td class="'.$MOD_TL_style.'"><a class="tag" title="'.mi18n("Für den").' '.$MOD_TL_datum_title.' '.mi18n("existieren keine Termine.").'">'.$MOD_TL_tag.'</a></td>';
			else
				$MOD_TL_val = '<td class="'.$MOD_TL_style.'"><a class="tag" title="'.mi18n("frei").'">'.$MOD_TL_tag.'</a></td>';
		}
		return $MOD_TL_val;
	}
}

?> code]

Vielen Dank für eure Unterstützung.

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von homtata » Mo 4. Dez 2017, 11:48

Das funktioniert so überhaupt nicht - das Terminmodul basiert ja GERADE auf den Terminen, das ist die Grundlage. Der ganze Sortier- und Ordnungsalgorithmus ist darauf abgestellt.
Wahrscheinlich eignet sich die Article List Reloaded oder die contenido-eigenen Artikelliste dafür besser. Projekte in eigenen Ordner aufteilen und dir sonstwas überlegen.

Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von Peer » Mo 4. Dez 2017, 19:42

Hallo homtata,

danke für deine Rückmeldung.
Manchmal sieht man den Wald vor lauter Bäumen nicht :-)

Danke für den Tipp.

Damit klappt es sehr gut.

Gruß
Peer

Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von Peer » Do 21. Dez 2017, 13:11

Hallo,

ich habe die Domain von meinem aktuellen Projekt umgestellt.
In der config Datei für das Backend und über den Mandaten für das Frontend.

Seit dem funktioniert die Termin ausgabe nicht mehr.
Wenn ich die Seite über die ursbrungsdomain aufrufe läuft alles.

Im Backend (Vorlagen - Voreinstellungen) das selbe. Über die Ursbrungsdomain wird mir alles angezeigt über die neue Domain wird mir nichts angezeigt.

Hat jemand eine Idee woran das liegt?

Ich habe in der DB schon geschaut ob irgendwo noch die alte Domain hinterlegt ist.
Das Problem habe ich auch nur bei dem Modul.

Danke

Gruß
Peer

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von homtata » Fr 22. Dez 2017, 01:17

Hm, schwierig, ich sehe da eigentlich keine grundsätzlichen Probleme. Hast du mal alle Contenido-Caches gelöscht?

Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von Peer » Fr 22. Dez 2017, 01:54

Hallo,

jau alles gelöscht.
config durchsucht ...

Ich hatte das Problem schon einmal mit dem "Article List Reloaded (ALR)"
https://forum.contenido.org/viewtopic.p ... r&start=15

Übrings auch in diesem Fall, was ich mit einem update des Moduls beseitigen konnte.

Gruß

Peer

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von homtata » Fr 22. Dez 2017, 13:52

Die genannten Module ändern die Verwaltung der Templatezuweisung über die 4.9er Versionen hinweg. Wenn du erst ein Contenido-Update gemacht hast, ohne die Templatezuweisung zu ändern, funktioniert trotzdem erstmal alles. Vielleicht ist das beim Domainwechsel anders, oder hast du gleichzeitig damit ein contenido-Update gemacht?

Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von Peer » Fr 22. Dez 2017, 14:42

Ich habe erst die Domain umgestellt und dann ein Update durchgeführt.
Allle Cache gelöscht ....

Ich habe alles durchgeschaut und finde nichts. Es hängt am Termin Ausgabe Modul.
Habe das Modul durchgeschaut und vergleichen - kein Plan.

Wenn ich die Domains wieder umstelle schaut alles wieder gut aus.

Ich verstehe es einfach nicht.

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von homtata » Fr 22. Dez 2017, 20:38

Tut mir leid, verstehe ich auch nicht. Das Modul verwendet keine hardcodierten Domaineinträge. Funktioniert die Konfiguration des Inputbereichs im Artikel? Lassen sich dort Templates zuweisen? Welche Contenido-Version ist überhaupt im Einsatz?

Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von Peer » Fr 22. Dez 2017, 21:50

So nach langen hin und her habe ich den Fehler gefunden.

Es lag an einem Termin. Was genau daran kaputt ist weiß ich noch nicht aber seit dem der Termin weg ist läuft es.

Danke

Gruß

Peer

shi
Beiträge: 251
Registriert: Fr 5. Nov 2004, 14:12
Kontaktdaten:

Termin kann nich gespeichert werden!

Beitrag von shi » Mi 7. Feb 2018, 14:12

Hallo, komme hier einfach nicht weiter. Wenn ich einen Termin einarbeite kann ich diesen nicht speichern. Der Button "Speichern" ist ohne funktion.
termineliste.jpg
termineliste.jpg (36.54 KiB) 9923 mal betrachtet
Die benötigten Dateien und jquery sind eingebunden. In der "error"-Log steht:

Code: Alles auswählen

[07-Feb-2018 13:24:30 Europe/Berlin] PHP Warning:  Missing argument 1 for cHTMLSelectElement::__construct(), called in /var/www/vhosts/domain/httpdocs/contenido/includes/include.pretplcfg_edit_form.php(74) : eval()'d code on line 226 and defined in /var/www/vhosts/domain/httpdocs/contenido/classes/html/class.html.selectelement.php on line 53
Weis aber nicht ob es was damit zu tun hat.

https aktiv
CMS: 4.9.12
PHP: 5.6.33

Kann jemand vielleicht helfen?

shi
Beiträge: 251
Registriert: Fr 5. Nov 2004, 14:12
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von shi » Mi 7. Feb 2018, 14:34

shi hat geschrieben:
Mi 7. Feb 2018, 14:12
Hallo, komme hier einfach nicht weiter. Wenn ich einen Termin einarbeite kann ich diesen nicht speichern. Der Button "Speichern" ist ohne funktion.
OK, habe ich zum Teil die Lösung gefunden damit der Button "Speichern" wieder funtioniert. Wer https benutzt muss in der datei "terminliste-eingabe-v3-output.php" folgendes ändern:

Zeile: 379

Code: Alles auswählen

$tpl->assign('actionlink', "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
in

Code: Alles auswählen

$tpl->assign('actionlink', "https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);

Peer
Beiträge: 309
Registriert: Fr 9. Sep 2005, 17:22
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von Peer » Fr 23. Feb 2018, 02:09

Hallo,

ich habe jetzt öfter den Zyklus benutzt.
In meiner Termin Übersicht (Modul Terminliste-Ausgabe) werden mir die Termin auch alle schön angezeigt.

Wenn ich dann aber auf Details klicke, werden mit die Inhalte aus dem Termin angeziegt (Modul Terminliste-Eingabe). Mir wird aber beim Termin der Ursprungstermin angezeigt.

Also wenn ich einen Zyklus einrichte Start 23.03.2018 jede Woche wer der nächste Termin am 30.03.2018 - wen ich bei dem auf Details klicke steht aber 23.03.2018.

Kann man das ändern?

Vielen Dank

Gruß

Peer

Antworten