[Neues Modul] Terminliste v3

Alles rund um Module und Plugins in CONTENIDO 4.9.
homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von homtata » Mi 27. Jul 2016, 08:03

Also ohne jetzt das Modul in allen Feinheiten im Kopf zu haben: der Link (und seine Get-Parameter, die du Filter nennst) an sich triggert NICHT die Darstellung. Entscheidend ist, was im Artikel für die Anzeige generiert ist, in welchem Modus das Modul laufen soll. Manche Links und ihre Get-Parameter sind ausschließlich für bestimmte Modi gedacht und werden in anderen Konfigurationen nicht ausgelesen/verarbeitet.

Horst1234
Beiträge: 366
Registriert: Sa 25. Okt 2008, 12:45
Wohnort: Bremen
Kontaktdaten:

Terminliste v3 Start-End Datum?

Beitrag von Horst1234 » Di 9. Aug 2016, 19:28

Hallo Homtata,

ich bin dabei, dein Terminlistenmodul zu testen und hab noch zwei Fragen:

1. Ich sehe das doch richtig, dass man, wenn ich nicht die Variablen $termin.date1_lang und $termin.date2_lang in der Ausgabe nutze, in der Termineingabe auch kein Datumsformat einstellen muss, wenn man einen Termin anlegt, oder? Dann könnte ich das Datumsformatfeld doch im Eingabetemplate einfach ausblenden, oder? Das wär für die Redakteure wesentlich weniger verwirrend. Versuch war jedenfalls erfolgreich, aber lauert da noch ein Denkfehler?

2.Schwieriger ist für mich bei den Zeitspannen. Wenn ich sowohl die Möglichkeit haben will, an einem Tag eine Zeitspanne (z.B. 02.02.2017, 13:30 - 15:00) als auch eine Zeitspanne über mehrere Tage (z.B. 02.02.2017 - 05.02.2017, 13:00 - 15:00) anzeigen zu lassen, muss das smarty-Template ja ziemlich vertrackte if-schleifen enthalten, die ich nicht hinbekomme. Gibt's da schon ne Vorarbeit?

Dank noch für deinen Hinweis mit den include-Abfragen, ich war dann doch schon so weit, dass ich's im laufenden System nicht noch nachträglich einbauen wollte (never change a winning horse, you know?) - aber ich hab's im Hinterkopf und werde berichten.

Gruß aus Bremen,
Horst
Webdesign | Contenido: Templateprogrammierung, Einrichtung und Verwaltung | http://www.w2media.de

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

Re: [Neues Modul] Terminliste v3

Beitrag von Peer » Di 9. Aug 2016, 19:46

Hallo Horst,

ich habe das so gelöst.

Code: Alles auswählen

<div class="events">
       
          {assign var="prevmonth" value=""}
          
          {foreach from=$termine item=termin}
          
          <div class="event {$termin.highlight}">
          
          {if $prevmonth neq $termin.date1_monthfull}
			  <div class="akutmonat"> {$termin.date1_monthfull} {$termin.date1_yearfull}</div>
          {/if}
          
          {assign var="prevmonth" value=$termin.date1_monthfull}
          
		  
         <div class="termin">    
         <h2>{$termin.titel}</h2>
         {if !($termin.groupeddate)}
			  <p><b>Termin:</b> {$termin.date1_dayfull}, {$termin.date1_lang} {if ($termin.datum1 != $termin.datum2)} {if ($termin.zeit1 != 0)} ({$termin.zeit1} Uhr) {/if}{/if}
				  {if ($termin.datum1 == $termin.datum2)} {if ($termin.zeit1 != $termin.zeit2)} {$termin.zeit1} Uhr bis {$termin.zeit2} Uhr  {/if}{/if}
				  {if ($termin.zeit1 == $termin.zeit2)}{if ($termin.zeit1 != 0)} ({$termin.zeit1} Uhr) {/if}{/if}
				  {if ($termin.datum1 != $termin.datum2)} bis {$termin.date2_dayfull}, {$termin.date2_lang} {if ($termin.zeit2 != 0)} ({$termin.zeit2} Uhr) {/if}{/if}
			  </p>
		 			
			 <p>{if !($termin.ort eq "")} <b>Veranstaltungsort:</b> {$termin.ort} {$termin.ort_detail} {/if}</p>
			
         {/if}
         
         {if !($termin.text eq "")} <a href="front_content.php?idart={$termin.idart}">weitere Infos</a> {/if}
         </div>
         
      </div>
	

	  {/foreach}
      
	  </div>
Gruß

Peer

Horst1234
Beiträge: 366
Registriert: Sa 25. Okt 2008, 12:45
Wohnort: Bremen
Kontaktdaten:

Terminliste v3

Beitrag von Horst1234 » Do 11. Aug 2016, 14:41

Hallo Peer, so geht's, danke!
Webdesign | Contenido: Templateprogrammierung, Einrichtung und Verwaltung | http://www.w2media.de

Horst1234
Beiträge: 366
Registriert: Sa 25. Okt 2008, 12:45
Wohnort: Bremen
Kontaktdaten:

Terminliste v3: 2 Ausgaben hintereinander

Beitrag von Horst1234 » Do 11. Aug 2016, 14:53

Hallo Homtata,
ich hab da noch einen kleinen Bug entdeckt, wenn man zwei Terminlisen-Ausgaben hintereinander hat.
Solange alle mit Terminen bestückt werden, kein Problem.
Wenn die erste der beiden Ausgaben keine Termine hat, wird alles ausgeblendet: wunderbar.
Wenn aber nur die zweite der beiden Ausgaben keine Termine mehr hat, wird diese fälschlicherweise mit den Terminen der ersten Ausgabe bestückt.
Wenn beide keine mehr haben, werden beide ausgeblendet: wunderbar.
Da ich die Terminausgaben in eine Sidebar eingebaut habe und diese bestimmt auf 40 verschiedenen Seiten auftaucht, kann ich die Ausgabe nicht eben mal deaktivieren, was ja sonst auch ein Weg wäre.
Kann man im Template abfragen lassen, ob es überhaupt (dieser Ausgabe zugeordnete!) Termine gibt? Da könnte man dann ja neben {if $MOD.display} packen, nicht wahr?
Mit {if $success} klappts leider auch nicht, auch da sind die beiden Ausgaben wohl nicht unabhängig voneinander.
Gruß aus Bremen,
Horst
Webdesign | Contenido: Templateprogrammierung, Einrichtung und Verwaltung | http://www.w2media.de

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

Re: [Neues Modul] Terminliste v3

Beitrag von homtata » Do 11. Aug 2016, 17:13

Es liegt möglicherweise daran, dass das Array $MOD nicht ordnungsgemäß neu instanziert wird und damit im zweiten Durchlauf nicht leer ist.
Versuch bitte folgendes und ergänze im Bereich Zeile 46/47 noch eine Zeile im Output des Ausgabemoduls:

Code: Alles auswählen

$bDebug     = false;
$MOD = array();
.. und gib mal kurz bescheid, ob das das Problem löst!
LG

Horst1234
Beiträge: 366
Registriert: Sa 25. Okt 2008, 12:45
Wohnort: Bremen
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von Horst1234 » Do 11. Aug 2016, 17:31

Leider nein, es werden noch immer die Termine der 1. Ausgabe übertragen
Webdesign | Contenido: Templateprogrammierung, Einrichtung und Verwaltung | http://www.w2media.de

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

Re: [Neues Modul] Terminliste v3

Beitrag von homtata » Do 11. Aug 2016, 18:24

Okay, dann könnte es noch dran liegen, dass $terminliste auch bei einem leeren Durchlauf nicht leer ist, weil sie zu spät im Modul geleert wird. Kommentiere Zeile 616

Code: Alles auswählen

$terminliste = array();
bitte aus und ziehe diese nach oben, hinter die Elemente aus dem vorigen Vorschlag, also ca. Zeile 46, das liest sich dann so:

Code: Alles auswählen

$bDebug     = false;
$MOD = array();
$terminliste = array();

Horst1234
Beiträge: 366
Registriert: Sa 25. Okt 2008, 12:45
Wohnort: Bremen
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von Horst1234 » Do 11. Aug 2016, 18:34

Super, das war's!
Und wie bekomme ich jetzt da noch einen Kommentar rein a la "Zur Zeit keine Termine vorhanden"
Webdesign | Contenido: Templateprogrammierung, Einrichtung und Verwaltung | http://www.w2media.de

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

Re: [Neues Modul] Terminliste v3

Beitrag von homtata » Do 11. Aug 2016, 19:18

Du könntest in Smarty noch eine Bedingung einfügen, die überprüft, ob das Array leer ist. Ergänze:

Code: Alles auswählen


		{foreach from=$termine item=termin}
		...
		{/foreach}
		{if empty($termine)}<p>Zur Zeit keine Termine vorhanden</p> {/if}
.. oder ersetze den neuen Text durch eine Variable, die du im Modul an Smarty übergibst, falls du es mehrsprachig brauchst.

Horst1234
Beiträge: 366
Registriert: Sa 25. Okt 2008, 12:45
Wohnort: Bremen
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von Horst1234 » Fr 12. Aug 2016, 12:02

Hallo Homtata,
Die Zeile {if empty($termine)}<p>Zur Zeit keine Termine vorhanden</p> {/if} funktioniert leider nicht (hab Sie auch mit deinem Modul auf dem Demomandanten gestestet)
Gruß,
Horst
Webdesign | Contenido: Templateprogrammierung, Einrichtung und Verwaltung | http://www.w2media.de

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

Re: [Neues Modul] Terminliste v3

Beitrag von homtata » Fr 12. Aug 2016, 14:15

Kann ich mir jetzt nicht erklären, es sei denn, die Modulausgabe wäre von dir ausgeschaltet und $MOD.display damit "false".
Hänge doch die neue if-Zeile mal ganz ans Ende des Modultemplates und schau mal, ob es dann funktioniert, denn von der Syntax her scheint mir alles ok innerhalb der if-Zeile.

Horst1234
Beiträge: 366
Registriert: Sa 25. Okt 2008, 12:45
Wohnort: Bremen
Kontaktdaten:

Re: [Neues Modul] Terminliste v3

Beitrag von Horst1234 » Fr 12. Aug 2016, 16:07

Hallo Homtata,
Ich hab das extra im Beispielmandanten getestet nur mit den Originalmodulcodes, da klappt es nicht mit dem empty-Code.

Ich habe nun deine neue Terminliste version 302 im Beispielmandanten eingebaut neben der neusten ALR-Version: sobald ich beide in die Vorlage packe und zu dem Reiter "Voreinszellungen" wechseln will, ist dieser wie früher leider wieder komplett leer, man kann nichts einstellen.

Im Errorlog steht

Code: Alles auswählen

[12-Aug-2016 16:58:41 Europe/Berlin] PHP Warning:  Missing argument 1 for cHTMLSelectElement::__construct(), called in /usr/www/users/contes/contenido-4-9/contenido/includes/include.pretplcfg_edit_form.php(76) : eval()'d code on line 208 and defined in /usr/www/users/contes/contenido-4-9/contenido/classes/html/class.html.selectelement.php on line 53
[12-Aug-2016 16:58:42 Europe/Berlin] PHP Fatal error:  Cannot redeclare fncBuildCategorySelect() (previously declared in /usr/www/users/contes/contenido-4-9/cms/data/modules/terminliste-ausgabe-v3/php/functions.input.helper.gw.php:11) in /usr/www/users/contes/contenido-4-9/cms/data/modules/article-list-reloaded/php/functions.input.helper.gw.php on line 108
Gehe ich in den Artikel, in den ich die Vorlage importiert habe, ist auch dort der Konfigurationreiter wieder komplett leer.

Nun steht zusätzlich im Errorlog:

Code: Alles auswählen

[12-Aug-2016 17:04:30 Europe/Berlin] PHP Fatal error:  Uncaught  --> Smarty: Missing template name <-- 
  thrown in /usr/www/users/contes/contenido-4-9/contenido/plugins/smarty/smarty_source/sysplugins/smarty_internal_template.php on line 679
[12-Aug-2016 17:04:33 Europe/Berlin] PHP Warning:  Missing argument 1 for cHTMLSelectElement::__construct(), called in /usr/www/users/contes/contenido-4-9/contenido/includes/include.tplcfg_edit_form.php(331) : eval()'d code on line 208 and defined in /usr/www/users/contes/contenido-4-9/contenido/classes/html/class.html.selectelement.php on line 53
[12-Aug-2016 17:04:33 Europe/Berlin] PHP Fatal error:  Cannot redeclare fncBuildCategorySelect() (previously declared in /usr/www/users/contes/contenido-4-9/cms/data/modules/terminliste-ausgabe-v3/php/functions.input.helper.gw.php:11) in /usr/www/users/contes/contenido-4-9/cms/data/modules/article-list-reloaded/php/functions.input.helper.gw.php on line 108
All das, wie gesagt, im Beispielmandanten, ohne irgentwelche Anpassung von Modulen etc.
Gruß aus Bremen,
Horst
Webdesign | Contenido: Templateprogrammierung, Einrichtung und Verwaltung | http://www.w2media.de

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

Re: [Neues Modul] Terminliste v3

Beitrag von homtata » Fr 12. Aug 2016, 16:14

In der ALR sind die includes noch nicht in if-Bedingungen gesetzt. Wenn die ALR hinter der Terminliste hängt, geht das noch in die Hose. Dann bitte wie vorgeschlagen auch in der ALR noch händisch anpassen.

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

Re: [Neues Modul] Terminliste v3

Beitrag von homtata » Fr 12. Aug 2016, 16:30

Zum Zusatztext für "Leere Liste":
das liegt daran, dass ich im Modul selbst in ca. Zeile 721 überprüfe, ob die Terminliste leer ist, und wenn ja, dann wird das Template schon gar nicht aufgerufen. Die Zeile heißt:

Code: Alles auswählen

if ( $MOD[modconfigbased] == "module" && count($terminliste) > 0)  $tpl->display($MOD[tpl_results]);
Entweder du nimmst die zweite Bedingung (count) raus und schreibst dann wie vorgeschlagen noch eine Zeile ins Template, oder du verzweigst mit einer "else"-Bedingung in der o.g. Zeile und rufst noch ein zweites Template auf (oder results_none.tpl) und nimmst das für den Leer-Fall.

Antworten