Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Calendar
#1
Hallo Leute,
ich benötige im Plugin Calendar folgende zusätzliche Wiederholungen : 14 Tage, 28 Tage.
Ich habe den Erbauer des Plugins "Maciek" bereit vor einiger Zeit mal angemailt und dort nachgefragt, er schrieb mir zurück, das er im Moment keine Zeit hat und er nicht versprechen kann, ob er das zeitlich schafft.

Kann das jemand von Euch, oder kann mir jemand sagen, wo ich was in welcher Datei ändern muss um das o.a. zu erreichen ?

Danke und Gruß
Sause

GS 3.2.0
Reply
#2
(2013-03-13, 10:21:47)Sause Wrote: Hallo Leute,
ich benötige im Plugin Calendar folgende zusätzliche Wiederholungen : 14 Tage, 28 Tage.
Ich habe den Erbauer des Plugins "Maciek" bereit vor einiger Zeit mal angemailt und dort nachgefragt, er schrieb mir zurück, das er im Moment keine Zeit hat und er nicht versprechen kann, ob er das zeitlich schafft.

Kann das jemand von Euch, oder kann mir jemand sagen, wo ich was in welcher Datei ändern muss um das o.a. zu erreichen ?

Danke und Gruß
Sause

GS 3.2.0

admin_edit.php Zeile 65
Array erweitern um:
PHP Code:
$repetitions = array(
                    
=> 'oneTime',
                    
=> 'everyDay',
                    
=> 'everyWeek',
                    
=> 'everyMonth',
                    
=> 'every14Days',
                    
=> 'every28Days',
                    
=> 'everyYear'); 

Calendar.php function c_repetitionCheck ersetzen durch:
PHP Code:
function c_repetitionCheck($repetition$dateYear$dateMonth$dateDay$day$month$year) {
    switch (
$repetition) {
        case 
'everyDay':
            return 
True;
            break;
        case 
'everyWeek':
            
$dateDay $dateDay 7;
            if(
$dateDay == $day and $dateMonth == $month and $dateYear == $year) return True;
            
$dateDay $dateDay 7;
            if(
$dateDay == $day and $dateMonth == $month and $dateYear == $year) return True;
            
$dateDay $dateDay 7;
            if(
$dateDay == $day and $dateMonth == $month and $dateYear == $year) return True;
            
$dateDay $dateDay 7;
            if(
$dateDay == $day and $dateMonth == $month and $dateYear == $year) return True;
            break;
            
        case 
'every14Days':
            
$dateDay $dateDay 14;
            if(
$dateDay == $day and $dateMonth == $month and $dateYear == $year) return True;
            
$dateDay $dateDay 14;
            if(
$dateDay == $day and $dateMonth == $month and $dateYear == $year) return True;
            
$dateDay $dateDay 14;
            if(
$dateDay == $day and $dateMonth == $month and $dateYear == $year) return True;
            
$dateDay $dateDay 14;
            if(
$dateDay == $day and $dateMonth == $month and $dateYear == $year) return True;
            break;

        case 
'every28Days':
            
$dateDay $dateDay 28;
            if(
$dateDay == $day and $dateMonth == $month and $dateYear == $year) return True;
            
$dateDay $dateDay 28;
            if(
$dateDay == $day and $dateMonth == $month and $dateYear == $year) return True;
            
$dateDay $dateDay 28;
            if(
$dateDay == $day and $dateMonth == $month and $dateYear == $year) return True;
            
$dateDay $dateDay 28;
            if(
$dateDay == $day and $dateMonth == $month and $dateYear == $year) return True;
            break;            
            
        case 
'everyMonth':
            for(
$x $month$x <= 12$x++) {
                if(
$x == $month and $dateDay == $day and $dateYear == $year) return True;
            }
            break;
        case 
'everyYear':
            if(
$month == $dateMonth and $dateDay == $day) return True;
            break;
    }


einträge zu den langfiles hinzufügen:
PHP Code:
'every14Days' => 'Alle 14 Tage',
    
'every28Days' => 'Alle 28 Tage'

Alles ungetestet morgens halbzehn ohne Kaffee.

Bitte einmal testen und feedback.
Reply
#3
Hallo Timme,
so früh wach und ohne Kaffee ? :-)
Und dann so eine korrekte Antwort, Danke dafür. Genau so wie Du es gepostet hast, funktioniert das.

Somit komme ich dann aber auch gleich zum nächsten Umstand mit dem Plugin :

Die Wiederholungen ( auch die original im Plugin vorhandenen ) funktionieren nur mit dem Eintrag "Jeden Tag" und "Jedes Jahr" zuverlässig. Alle anderen Wiederholungen gehen nur in dem aktuellen Monat, wo der Termin angelegt wird. Also nicht Monatsübergreifend.

...eine Idee dazu ?

Danke und Gruß
Sause

GS 3.2.0
Reply
#4
die function c_repetitionCheck() müsste komplett überholt werden. Einer (mit Kaffe) Nachbetrachtung meines Vorschlags entpuppt sich als nicht tauglich. Ich empfehle einfach mal in anderen CMS Lösungen zu sehen, wie dort die Eventwiederholungen geprüft werden.

Ansonsten wären für die Wiederholung doch folgende Bedingungen zu prüfen.
7 tägig: Wenn (aktueller Tag der Woche) == (tag der Woche des Events) dann return true;
14 tägig: Wenn (aktueller Tag der Woche) == (tag der Woche des Events) && (tagesDifferenz durch 2 teilbar) dann return true;
28 tätig: Wenn (aktueller Tag der Woche) == (tag der Woche des Events) && (tagesDifferenz durch 4 teilbar) dann return true;

Oder ist da ein Denkfehler?
Reply




Users browsing this thread: 1 Guest(s)