sidebar_dates: Kalender wählen

Hast du Probleme oder Fragen bei der Einrichtung bestimmter Plugins ? Diese kannst du hier loswerden.
Antworten
Netz
Beiträge: 54
Registriert: 22. Mär 2010, 10:15

sidebar_dates: Kalender wählen

Beitrag von Netz »

Hi.

In der Config des Moduls und in der Datei selbst, finde ich (nicht wie calendar Plugin) die Möglichkeit den Kalender zu bestimmen, der angezeigt werden soll.

Code: Alles auswählen

$plg_kal_cat =  array('xyz')
Kann mir da wer kurz helfen?
Ich sehe nicht, wo die Info übergeben werden müsste.
Grüße von und aus,
dem Netz!
Netz
Beiträge: 54
Registriert: 22. Mär 2010, 10:15

Beitrag von Netz »

So, ich denke ich habe es gelöst, indem ich mit etwas probieren die Funktion aus dem dates-Plugin in das sidebar_dates-Plugin gebastelt habe.

Dazu habe ich in sidebar_dates.php in Zeile 93 folgendes reinkopiert

Code: Alles auswählen

// Welche Kalender sollen ausgegeben werden: Alle (all), Kalender xyz (xyz)
// Mehrere Einträge: $plg_kal_cat = array('abc','cdf')
$plg_kal_cat =  array('NAME MEINES KALENDERS');

//Zeuch
// Date ID auslesen oder aktuellen Monat und Jahr erzeugen
if(array_key_exists('date_id', $_GET))
{
    if(is_numeric($_GET['date_id']) == false)
    {
        $g_message->show('invalid');
    }
    else
    {
        $date_id = $_GET['date_id'];
        $monat = substr($date_id,0,2);
        $jahr = substr($date_id,2,4);
        $_SESSION['plugin_calendar_last_month'] = $monat.$jahr;
        $heute = 0;
        if($monat == date('m') AND $jahr == date('Y'))
        {
            $heute = date('d');
        }
    }
}
elseif(isset($_SESSION['plugin_calendar_last_month']))
{
    // Zuletzt gewählten Monat anzeigen
    $monat = substr($_SESSION['plugin_calendar_last_month'],0,2);
    $jahr = substr($_SESSION['plugin_calendar_last_month'],2,4);
    if($monat == date('m') AND $jahr == date('Y'))
    {
        $heute = date('d');
    }
}
else
{
    // Aktuellen Monat anzeigen
    $monat = date('m');
    $jahr = date('Y');
    $heute = date('d');
}
$sql_dat = $jahr. '-'. $monat;


$sql_syntax = ' AND cat_type = "DAT" AND ( ';
        for($i=0;$i<count($plg_kal_cat);$i++)
        {
            $sql_syntax = $sql_syntax. 'cat_name = "'.$plg_kal_cat[$i].'" OR ';
        }   
$sql_syntax = substr($sql_syntax,0,-4). ') ';
und in Zeile 97 (vor das erste AND) folgendes kopiert

Code: Alles auswählen

AND DATE_FORMAT(dat_begin, "%Y-%m") = "'.$sql_dat.'"
                '.$sql_syntax.'
Damit werden mir in diesem Plugin nur Termine aus einem bestimmten Kalender angezeigt. Bislang sehe ich keine Fehler oder Probleme.

Hat jemand Anmerkungen?
Grüße von und aus,
dem Netz!
Netz
Beiträge: 54
Registriert: 22. Mär 2010, 10:15

Beitrag von Netz »

Naja, leider auch nur ein Monat und es steht viel überflüssiges PHP drin, welches nicht gebraucht wird.

Ich poste es mal zu den Anregungen, da ich es selbst nicht einbauen kann.
Grüße von und aus,
dem Netz!
Netz
Beiträge: 54
Registriert: 22. Mär 2010, 10:15

Beitrag von Netz »

So, mein Problem ist wieder aktuell.

Eventuell findet sich ja nun jemand, der mir helfen kann.

Irgendwo in dem unten stehendem Block muss ich doch die Auswahl des Kalenders reinbasteln können.
Einfach hinter eines der ANDs noch eine Bedingung anhängen sollte doch reichen.

Wie muss der Absatz lauten, damit ich den Kalender bestimmen kann kann?

Code: Alles auswählen

// nun alle relevanten Termine finden
$sql    = 'SELECT * FROM '. TBL_DATES. ', '. TBL_CATEGORIES. '
            WHERE dat_cat_id = cat_id
              AND (  cat_org_id = '. $g_current_organization->getValue('org_id'). '
                  OR (   dat_global  = 1
                     AND cat_org_id IN ('.$plg_organizations.') ) )
			  AND (  dat_begin >= "'.DATE_NOW.'"
                  OR dat_end   >  "'.DATE_NOW.' 00:00:00" )
                  '.$hidden.'
			ORDER BY dat_begin ASC
			LIMIT '.$plg_dates_count;
Grüße von und aus,
dem Netz!
Benutzeravatar
fasse
Administrator
Beiträge: 6182
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hallo Netz,

um nur bestimmte Kalender anzuzeigen, gehst du in die config.php des Calendar-Plugins und änderst dort folgende Zeile

Code: Alles auswählen

$plg_kal_cat =  array('all');
in folgende (Dabei musst du dann natürlich die Namen deiner Kalender angeben)

Code: Alles auswählen

$plg_kal_cat =  array('Allgemein', 'Kurse');
Hier kannst du beliebig viele Kalenderbezeichnungen anhängen.

War es das was du gesucht hast ?

Gruß
Fasse
Netz
Beiträge: 54
Registriert: 22. Mär 2010, 10:15

Beitrag von Netz »

Nein, leider bezieht sich dein Tipp auf das calendar-Plugin, in sidebar_dates gibt es die Einstellung nicht. Ich möchte sie aber gerne hineinzaubern und dazu dachte ich, wäre es am einfachsten gar nicht erst die Daten auszulesen, also den von mir zuletzt geposteten Bereich anzupassen.
Grüße von und aus,
dem Netz!
Benutzeravatar
fasse
Administrator
Beiträge: 6182
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

ok, sorry, da war ich im falschen Film.

Also relevant ist aus dem calendar-Plugin dieser Teil:

Code: Alles auswählen

    // Ermitteln, welche Kalender angezeigt werden sollen
    if(in_array('all',$plg_kal_cat))
    {
		// alle Kalender anzeigen
        $sql_syntax = ' AND (cat_org_id = '. $g_current_organization->getValue('org_id'). '
                         OR (   dat_global  = 1
                            AND cat_org_id IN ('.$plg_organizations.') ) ) ';
    }
    else
    {
        // nur bestimmte Kalender anzeigen
        $sql_syntax = ' AND cat_type = "DAT" AND ( ';
        for($i=0;$i<count($plg_kal_cat);$i++)
        {
            $sql_syntax = $sql_syntax. 'cat_name = "'.$plg_kal_cat[$i].'" OR ';
        }
        $sql_syntax = substr($sql_syntax,0,-4). ') ';
    }
Und dann muss das SQL-Fragment noch ins Haupt-SQL eingebaut werden.

Da dies eigentlich eine gute und sinnvolle Erweiterung ist, überleg ich mal, das demnächst in das Plugin einzubauen. Viel Arbeit sollte es nicht sein.

Gruß
Fasse
Netz
Beiträge: 54
Registriert: 22. Mär 2010, 10:15

Beitrag von Netz »

Ja, es scheint einfach. Wenn ich es könnte, würde ich es sofort umsetzten. Leider stehe ich auf dem Schlauch, bzw. meine Kenntnisse sind zu gering.

Wenn du es reinbastelst, wäre es super. Eine unschöne Vorabversion würde ich auch nehmen. ;-)
Grüße von und aus,
dem Netz!
Netz
Beiträge: 54
Registriert: 22. Mär 2010, 10:15

Beitrag von Netz »

Hat diesen Monat jemand Zeit die Änderung einzubauen? Wir brauchen das wirklich dringend.

Meine Bemühungen eine alternative zu finden sind leider gescheitert.
Grüße von und aus,
dem Netz!
Benutzeravatar
fasse
Administrator
Beiträge: 6182
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hallo Netz,

ich denke, da läßt sich in den nächsten Wochen bestimmt was machen.

Du willst einfach, dass man einen Kalender oder mehrere in den Einstellungen vorgibt oder ?

Gruß
Fasse
Netz
Beiträge: 54
Registriert: 22. Mär 2010, 10:15

Beitrag von Netz »

Ich möchte einen Kalender auswählen, der im sidebar_dates angezeigt wird.

Aktuell haben wir das Problem, dass wir einen Kalender mit Veranstaltungen haben und einen Kalender mit einem Belegungsplan und BEIDE leider in dem sidebar_dates dargestellt werden.

Nun regen sich hier die Leute auf, da ich das Problem nicht beheben kann. :(
Grüße von und aus,
dem Netz!
Netz
Beiträge: 54
Registriert: 22. Mär 2010, 10:15

Beitrag von Netz »

P.S.: Eine Quick and Dirty-Lösung würde mir schon helfen
Grüße von und aus,
dem Netz!
Benutzeravatar
fasse
Administrator
Beiträge: 6182
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Also Quick and Dirty ist die Calendar-ID des Kalenders, den du anzeigen möchtest, direkt im SQL-Statement zu hinterlegen.

So ca. Zeile 98:

Code: Alles auswählen

            WHERE dat_cat_id = cat_id
ersetzen mit

Code: Alles auswählen

            WHERE dat_cat_id = cat_id
AND cat_id = #deine-Kalender-ID#
Hier dann natürlich #deine-Kalender-ID# mit der ID des Kalenders austauschen.

Viele Grüße
Fasse
Benutzeravatar
fasse
Administrator
Beiträge: 6182
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

So, es gibt jetzt eine neue Version des Plugins mit dem du auch die Kalender ähnlich dem Calendar_Plugin einschränken kannst.

Gruß
Fasse
Antworten