ilch Forum » Ilch Clan 1.1 » Module und Modifikationen » Ilch Kalender Farbe

Geschlossen
  1. #1
    User Pic
    Sunny_FCN Mitglied
    Registriert seit
    16.07.2013
    Beiträge
    15
    Beitragswertungen
    0 Beitragspunkte
    Hallo zusammen ,

    Ich hab da mal eine Frage wie kann ich bei ilch kalender Termine farblich hervorheben , könnte mir dabei einer bitte Helfen ?.

    Ich bin nicht so der Programmierer , darum breuchte ich bitte Hilfe.

    Danke im Vorraus.

    lächeln


    verwendete ilch Version: 1.1 P

    betroffene Homepage: weiss-blau-spardorf81.ds-space.de/
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.622
    Beitragswertungen
    1192 Beitragspunkte
    In der include/includes/func/calender.php wird die Ausgabe des Kalenders definiert.

    Hier genau, die Ausgabe der einzelnen Tage:
      for($i=1;$i<=$days;$i++) {
        if (($i+$fw-1) % 7 == 0 AND $i > 1) { $return_str .= '</tr><tr>'; }
        if ($i == $ak_tag AND $mon == $ak_mon AND $jahr == $ak_jahr) { $class = 'Cmite'; } else { $class = 'Cnorm'; }
        $surl = str_replace('{mon}', $mon, str_replace('{tag}',$i, str_replace('{jahr}',$jahr, $url)));
        if (isset($data[mktime (0,0,0,$mon,$i,$jahr)])) { $out_i = '<b>'.$i.'</b>'; } else { $out_i = $i; }
        $return_str .= '<td class="'.$class.'" align="center"><a href="'.$surl.'">'.$out_i.'</a></td>';
      }


    Hier mal eine Änderung, welche Du dann deinen Wünschen entsprechend anpassen kannst.

      for($i=1;$i<=$days;$i++) {
        if (($i+$fw-1) % 7 == 0 AND $i > 1) { $return_str .= '</tr><tr>'; }
        if ($i == $ak_tag AND $mon == $ak_mon AND $jahr == $ak_jahr) { $class = 'Chead'; } else { $class = 'Cmite'; }
        if ($i < 10) {$i = '0'.$i; } else { $i = $i; }
        $surl = str_replace('{mon}', $mon, str_replace('{tag}',$i, str_replace('{jahr}',$jahr, $url)));  
    	if (isset($data[mktime (0,0,0,$mon,$i,$jahr)])) 
    	{
    		// Termin vorhanden / Ausgabe anpassen
    		$out_i = '<td class="'.$class.'" style="text-align:center;"><a href="'.$surl.'" title="Termin vorhanden"><strong>'.$i.'</strong></a></td>';
    	}
    	else
    	{
    		$out_i = '<td class="'.$class.'" style="text-align:center"><a href="'.$surl.'">'.$i.'</a></td>';
    	}
    	$return_str .= $out_i;
      }



    Zuletzt modifiziert von Lord|Schirmer am 13.09.2015 - 14:32:55
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Sunny_FCN Mitglied
    Registriert seit
    16.07.2013
    Beiträge
    15
    Beitragswertungen
    0 Beitragspunkte
    ok , nur was oder wie muss ich das ändern ? , ich bin anfänger sorry.

    Könntest du mir das zeigen oder machen was ich ändern muss . ?

    Danke
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.622
    Beitragswertungen
    1192 Beitragspunkte
    Es kommt darauf an was Du wie willst.
    Hintergrundfarbe oder Link-/Zahlfarbe?

    Beispiel für Hintergrund mit roter Farbe bei einem Termin:

    $out_i = '<td style="background-color:#ff0000;text-align:center;"><a href="'.$surl.'" title="Termin vorhanden"><strong>'.$i.'</strong></a></td>';
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Sunny_FCN Mitglied
    Registriert seit
    16.07.2013
    Beiträge
    15
    Beitragswertungen
    0 Beitragspunkte
    Hallo ,

    Zahlfarbe

    Also z.b Geburtstage in rot , und dann termine zum z.b in grün
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.622
    Beitragswertungen
    1192 Beitragspunkte
    So, da die Frage öfters erschien, habe ich mal die Kalenderbox etwas umgeschrieben und mit Erklärungen versehen. Berücksichtigt wurden auch die Geburtstage, sowie dem Fall wenn es mehrere Termine geben sollte.

    <?php
    #   Copyright by Manuel
    #   Support www.ilch.de
    
    defined ('main') or die ( 'no direct access' );
    
    function getCalendar($mon, $jahr, $url, $urlod, $data, $cellpadding=2)
    {
    	// Variablenfestlegung
    	$ak_tag    = date('j');
    	$ak_mon    = date('n');
    	$ak_jahr   = date('Y');
    	$days      = date('t',mktime(0,0,0,$mon,1,$jahr));
    	$fw        = str_replace(0,7,date('w',mktime(0,0,0,$mon,1,$jahr))) -1;
    	$next_mon  = $mon +1;
    	$last_mon  = $mon -1;
    	$next_jahr = $jahr;
    	$last_jahr = $jahr;
    	if ($next_mon > 12)
    	{
    		$next_jahr = $jahr +1;
    		$next_mon  = 1;
    	}
    	if ($last_mon == 0)
    	{
    		$last_jahr = $jahr -1;
    		$last_mon  = 12;
    	}
    	$mlist = array(    
    		1    =>    "Jan",
    		2    =>    "Feb",
    		3    =>    "Mär",
    		4    =>    "Apr",
    		5    =>    "Mai",
    		6    =>    "Jun",
    		7    =>    "Jul",
    		8    =>    "Aug",
    		9    =>    "Sep",
    		10   =>    "Okt",
    		11   =>    "Nov",
    		12   =>    "Dez");
    	$monName = $mlist[$mon];
    	
    	// Ausgabe Tabellenkopf
    	$return_str  = '';
    	$return_str .= '<table width="100%" cellpadding="' . $cellpadding . '" cellspacing="1" border="0">';
    	$return_str .= '<tr class="Chead">';
    	$return_str .= '<th><a href="' . str_replace('{mon}',$last_mon, str_replace('{jahr}',$last_jahr, $urlod)) . '"><b>&lt;</b></a></th>';
    	$return_str .= '<th colspan="5" align="center">' . $monName . ' ' . $jahr . '</th>';
    	$return_str .= '<th><a href="' . str_replace('{mon}',$next_mon, str_replace('{jahr}',$next_jahr, $urlod)) . '"><b>&gt;</b></a></th>';
    	$return_str .= '</tr><tr class="Cdark">';
    	$return_str .= '<td>Mo</td><td>Di</td><td>Mi</td><td>Do</td><td>Fr</td><td>Sa</td><td>So</td>';
    	$return_str .= '</tr><tr class="Cnorm">';
    	$return_str .= str_repeat ('<td>&nbsp;</td>', $fw);
    	
    	// Ausgabe der Monatstage
    	for($i=1;$i<=$days;$i++)
    	{
    		// Umbruch nach Woche / 7 Tagen
    		if (($i+$fw-1) % 7 == 0 AND $i > 1)
    		{
    			$return_str .= '</tr><tr>';
    		}
    		
    		// Prüft auf aktuellen Tag
    		if ($i == $ak_tag AND $mon == $ak_mon AND $jahr == $ak_jahr)
    		{
    			// Klasse des aktuellen Tages
    			$class = 'Cmite';
    		}
    		else
    		{
    			// Klasse der anderen Tage
    			$class = 'Cnorm';
    		}
    		
    		$surl = str_replace('{mon}', $mon, str_replace('{tag}',$i, str_replace('{jahr}',$jahr, $url)));
    		$style = 'font-size:10px; text-decoration:none; '; // Standardformat der Zahlen
    		
    		$title = '';
    		$color = '';
    		$termin = 0;
    		
    		// Prüft Geburtstage
    		$aktMonth = date("m", mktime (0, 0, 0, $mon, $i, $jahr));
    		$aktDay = date("d", mktime (0, 0, 0, $mon, $i, $jahr));
    		$result = db_query('SELECT `name`, `gebdatum`, `id` FROM `prefix_user` WHERE MONTH(gebdatum) = "' . $aktMonth . '" AND DAY(gebdatum) = "' . $aktDay .'"');
    		if (db_num_rows($result) != 0)
    		{
    			while ($row = db_fetch_object($result))
    			{
    				$termin++;
    				$title .= 'Geburtstag von ' . $row->name . ', ';
    				$color = 'color:red;'; // Geburtstag in Rot
    			}
    		}
    		
    		// Prüft im Kalender eingetragene Termine
    		if (isset($data[mktime(0, 0, 0, $mon, $i, $jahr)]))
    		{
    			$date = mktime(0, 0, 0, $mon, $i, $jahr);
    			
    			// Bestimmt die Art des Termins
    			foreach($data[$date] as $info)
    			{
    				$termin++;
    				$title .= $info['title'] . ', ';
    				
    				if (strpos($info['title'], "Training") !== false)
    				{
    					$color = 'color:yellow;'; // Trainings in Gelb
    				}
    				elseif (strpos($info['title'], "Lastwar") !== false)
    				{
    					$color = 'color:green;'; // Lastwar in Grün
    				}
    				elseif (strpos($info['title'], "Nextwar") !== false)
    				{
    					$color = 'color:green;'; // Nextwar in Grün
    				}
    				else
    				{
    					$color = 'color:blue;'; // Sonstige Termine in Blau
    				}
    			}
    		}
    		
    		// Mehr als ein Termin am Tag
    		if ($termin > 1)
    		{
    			$color = 'color:black;'; // Mehrere Termine auf ein Tag in Schwarz
    		}
    		$title = substr($title, 0, -2);
    		
    		// Ausgabe der Daten
    		$out_i = '<td class="' . $class . '" align="center"><a title="' . $title .'" style="' . $style . $color . '" href="' . $surl . '">' . $i . '</a></td>';
    		$return_str .= $out_i;
    	}
    	
    	$return_str .= str_repeat ('<td>&nbsp;</td>', (7-(($i+$fw-1) % 7)) % 7 );
    	$return_str .= '</tr></table>';
    	return ($return_str);
    }
    
    ?>



    Zuletzt modifiziert von Lord|Schirmer am 13.09.2015 - 17:22:43
    rules :: doku :: faq :: linkus
    1 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Sollten wir das mal als Standard in 1.1Q machen?
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Sunny_FCN Mitglied
    Registriert seit
    16.07.2013
    Beiträge
    15
    Beitragswertungen
    0 Beitragspunkte
    Super , vielen Dank

    Das ist genau das was ich brauchte , Vielen Dank noch mal .


    Super
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.622
    Beitragswertungen
    1192 Beitragspunkte
    @Siggi ... klar könnte man machen, evtl. Farbeinstellung in der Konfiguration.

    Ich war schon am Überlegen ob nicht Markierungen für bestimmte Termine besser wären, so könnte man verschiedene Termine am Tag besser erkennen.
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Zu großen aufwand sollten wir da nun nicht betreiben sondern auf 2.0 legen aber so kleine sachen wäre eine Idee deswegen kam mir das im Kopf
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.622
    Beitragswertungen
    1192 Beitragspunkte
    In Ordnug ich schau nochmal drüber (Vereinfachung, Darstellung)... und dann kann man ihn gern mit einfügen.
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.622
    Beitragswertungen
    1192 Beitragspunkte
    Habe nochmal dran gebastelt, wenns gefällt ... dann rein ins 1.1Q lächeln



    <?php
    #   Copyright by Manuel
    #   Support www.ilch.de
    
    defined ('main') or die ('no direct access');
    
    function getCalendar($mon, $jahr, $url, $urlod, $data, $cellpadding = 2)
    {
    	// Farbeinstellungen - Infodreieck
    	$calGebTag 		= 'red'; 			// Geburtstag 
    	$calLastWar 	= 'cyan'; 			// LastWar 
    	$calNextWar 	= 'green'; 			// NextWar 
    	$calTrain		= 'yellow'; 		// Training 
    	$calAllg		= 'blue'; 			// Sonstige Einträge 
    	$calMulti		= 'purple';			// Multiple Einträge
    	
    	// Variablenfestlegung
    	$ak_tag    = date('j');
    	$ak_mon    = date('n');
    	$ak_jahr   = date('Y');
    	$days      = date('t', mktime(0, 0, 0, $mon, 1, $jahr));
    	$fw        = str_replace(0, 7, date('w', mktime(0, 0, 0, $mon, 1, $jahr))) -1;
    	$next_mon  = $mon +1;
    	$last_mon  = $mon -1;
    	$next_jahr = $jahr;
    	$last_jahr = $jahr;
    	if ($next_mon > 12)
    	{
    		$next_jahr = $jahr +1;
    		$next_mon  = 1;
    	}
    	if ($last_mon == 0)
    	{
    		$last_jahr = $jahr -1;
    		$last_mon  = 12;
    	}
    	$mlist = array(    
    		1    =>    "Jan",
    		2    =>    "Feb",
    		3    =>    "Mär",
    		4    =>    "Apr",
    		5    =>    "Mai",
    		6    =>    "Jun",
    		7    =>    "Jul",
    		8    =>    "Aug",
    		9    =>    "Sep",
    		10   =>    "Okt",
    		11   =>    "Nov",
    		12   =>    "Dez");
    	$monName = $mlist[$mon];
    	
    	// Ausgabe Tabellenkopf
    	$return_str  = '';
    	$return_str .= '<table class="calTable" cellpadding="' . $cellpadding . '" cellspacing="1">';
    	$return_str .= '<tr class="Chead">';
    	$return_str .= '<th><a href="' . str_replace('{mon}', $last_mon, str_replace('{jahr}', $last_jahr, $urlod)) . '"><b>&laquo;</b></a></th>';
    	$return_str .= '<th colspan="5">' . $monName . ' ' . $jahr . '</th>';
    	$return_str .= '<th><a href="' . str_replace('{mon}', $next_mon, str_replace('{jahr}', $next_jahr, $urlod)) . '"><b>&raquo;</b></a></th>';
    	$return_str .= '</tr><tr class="Cdark calDays">';
    	$return_str .= '<td>Mo</td><td>Di</td><td>Mi</td><td>Do</td><td>Fr</td><td>Sa</td><td>So</td>';
    	$return_str .= '</tr><tr>';
    	$return_str .= str_repeat ('<td>&nbsp;</td>', $fw);
    	
    	// Ausgabe der Monatstage
    	for($i=1;$i<=$days;$i++)
    	{
    		// Umbruch nach Woche / 7 Tagen
    		if (($i+$fw-1) % 7 == 0 AND $i > 1)
    		{
    			$return_str .= '</tr><tr>';
    		}
    		
    		// Prüft auf aktuellen Tag
    		if ($i == $ak_tag AND $mon == $ak_mon AND $jahr == $ak_jahr)
    		{
    			// Klasse des aktuellen Tages
    			$class = 'Cmite';
    		}
    		else
    		{
    			// Klasse der anderen Tage
    			$class = 'Cnorm';
    		}
    		
    		$surl = str_replace('{mon}', $mon, str_replace('{tag}', $i, str_replace('{jahr}', $jahr, $url)));
    		
    		$title = '';
    		$color = '';
    		$termin = 0;
    		
    		// Prüft Geburtstage
    		$aktMonth = date("m", mktime (0, 0, 0, $mon, $i, $jahr));
    		$aktDay = date("d", mktime (0, 0, 0, $mon, $i, $jahr));
    		$result = db_query('SELECT `name`, `gebdatum`, `id` FROM `prefix_user` WHERE MONTH(gebdatum) = "' . $aktMonth . '" AND DAY(gebdatum) = "' . $aktDay .'"');
    		if (db_num_rows($result) != 0)
    		{
    			while ($row = db_fetch_object($result))
    			{
    				$termin++;
    				$title .= 'Geburtstag von ' . $row->name . ', ';
    				$color = $calGebTag;
    			}
    		}
    		
    		// Prüft im Kalender eingetragene Termine
    		if (isset($data[mktime(0, 0, 0, $mon, $i, $jahr)]))
    		{
    			$date = mktime(0, 0, 0, $mon, $i, $jahr);
    			
    			// Bestimmt die Art des Termins
    			foreach($data[$date] as $info)
    			{
    				$termin++;
    				$title .= $info['title'] . ', ';
    				
    				if (strpos($info['title'], "Training") !== false)
    				{
    					$color = $calTrain;
    				}
    				elseif (strpos($info['title'], "Lastwar") !== false)
    				{
    					$color = $calLastWar;
    				}
    				elseif (strpos($info['title'], "Nextwar") !== false)
    				{
    					$color = $calNextWar;
    				}
    				else
    				{
    					$color = $calAllg;
    				}
    			}
    		}
    		
    		// Mehr als ein Termin am Tag
    		if ($termin > 1)
    		{
    			$color = $calMulti;
    		}
    
    		$title = substr($title, 0, -2);
    		
    		$infoColor = 'border-color:' . $color . ' transparent transparent transparent;';
    		$infoWeight = ($termin >= 1) ? 'font-weight:bold;' : '';
    		
    		// Ausgabe der Daten
    		$out_i = '<td class="' . $class . '"><a title="' . $title .'" style="' . $infoWeight .  '" href="' . $surl . '"><span style="' . $infoColor . '"></span>' . $i . '</a></td>';
    		$return_str .= $out_i;
    	}
    	
    	$return_str .= str_repeat ('<td>&nbsp;</td>', (7-(($i+$fw-1) % 7)) % 7);
    	$return_str .= '</tr></table>';
    	return ($return_str);
    }
    
    // Style für Calender
    $ILCH_HEADER_ADDITIONS .= '
    <style type="text/css">
    	.calTable {
    		width:100%;
    	}
    	.calTable td, .calTable th, .calTable tr.calDays td {
    		text-align:center;
    		position:relative;
    	}
    	.calTable td a span {
    		position:absolute;
    		top:0;
    		left:0;
    		width:0;
    		height:0;
    		border-style:solid;
    		border-width:7px 7px 0 0;
    	}
    	.calTable a {
    		text-decoration:none;
    	}
    </style>';
    
    ?>
    rules :: doku :: faq :: linkus
    4 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Dort ist aber noch ein Fehler wenn du die index.php?kalender aufrufst zeigt er mir zweimal den gleichen Birthday an und auch multicolor weil er die funktion dann wohl doppelt nimmt?
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    Nex4T Moderator
    Registriert seit
    28.02.2007
    Beiträge
    3.414
    Beitragswertungen
    213 Beitragspunkte
    Kann man die Farben für die einträge bestimmen?
    while(!asleep()) sheep++;
    www.movely.biz
    www.webplant.eu
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Im code ja wie gesagt es wird zeit sich auf 2.0 zu konzentrieren und nicht immer wieder was neues für 1.1
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.622
    Beitragswertungen
    1192 Beitragspunkte
    @Siggi ... hast Recht, war auch nur noch dran, weil die Frage einfach so oft gestellt wird.

    In Bezug auf die Ausgabe ist die Problematik, dass die Kalenderbox im Content und in der Box jeweils unterschiedlich aufgerufen wird, also $data gefüllt wird.

    Es müsste also der Aufruf der Funktion angepasst werden.
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Module und Modifikationen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten