So, da nochmal nachgefragt wurde, hier noch mal den Ansatz für 3.2.3, allerdings kann ich das nicht testen, hab gerade keine Dev Installation, also bitte vorsichtig...:
Also erstmal muss ein DCA Feld anlegen, also der Datei calendar/dca/tl_module.php folgendes Feld hinzufügen:
Code:
$GLOBALS['TL_DCA']['tl_module']['fields']['cal_setMonth'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_module']['cal_setMonth'],
'exclude' => true,
'inputType' => 'text',
'eval' => array('rgxp'=>'digit', 'tl_class'=>'w50'),
'sql' => "smallint(6) unsigned NOT NULL default '0'"
);
Das muss dann noch zur Palette hinzugefügt werden, gleiche Datei, oben:
Code:
$GLOBALS['TL_DCA']['tl_module']['palettes']['calendar'] = '{title_legend},name,headline,type;{config_legend},cal_calendar,cal_noSpan,cal_startDay, cal_setMonth; ...
Dann ein Update der Datenbank, um das Feld anzulegen.
In der Datei modules/ModuleCalendar.php folgendes hinzufügen:
Code:
/**
* Generate the module
*/
protected function compile()
{
+ if ($this->cal_setMonth)
+ {
+ $this->Date = new Date($this->cal_setMonth, 'Ym');
+ }
// Respond to month
if (\Input::get('month'))
{
Dann kann man in den Moduleinstellungen beim Feld cal_setMonth sowas wie "201405" für Mai 2014 angeben und das Modul sollte immer auf Mai 2014 stehen bleiben.
Um jetzt sowas zu machen wie von Kohlekocher gewünscht (sorry, brauche das selber nicht, daher nur ein theoretischer Ansatz), könnte man folgendes machen: in das Feld "cal_setMonth" trägt man statt 201405 sowas ein wie "+4" oder "-4" (Dazu muss das DCA verändert werden, die Prüfung auf "digit" muss weg). In der ModuleCalendar.php prüft man bei
Code:
+ if ($this->cal_setMonth)
, ob das Feld eine reine Zahl ist, also ohne Plus oder Minus.
Bei
Code:
if (\Input::get('month'))
{
$this->Date = new \Date(\Input::get('month'), 'Ym');
}
macht man dann folgendes (Hab gerade keine Zeit, die PHP Funktionen nachzuschauen :-/ ):
Code:
if (\Input::get('month'))
{
$this->Date = new \Date(\Input::get('month'), 'Ym');
if(startswith($this->cal_setMonth, "+") || startswith($this->cal_setMonth, "-")) $this->Date + $this->cal_setMonth) // k.A. wie man Daten addiert...
}
Das ist natürlich nur ein Ansatz, da es keine Eingabeprüfungen und so gibt, also Vorsicht.
Bis dann,
artemis
Lesezeichen