Seite 1 von 1

Kalenderscript Umbau...

Verfasst: 27.12.2003 10:29
von AWSW
Hallo,
diese nachfolgende Funktion habe ich im Internet gefunden, mit der man einen ganz netten Kalender erzeugen kann... Leider stehe ich nach mehreren Versuchen, das Script umzubauen ziemlich auf dem Schlauch und hoffe, dass sich dem jemand annimmt...

- Durch die ECHO-Verwendungen im Code erfolgt die Ausgabe immer unterhalb des phpBB Headers. Dies ist natürlich für die Verwendung innerhalb von Tabellen nicht sehr sinnvoll und ich würde dies gern so ändern, dass die Ausgabe in einer 'calendar_body.tpl' an beliebiger Stelle erfolgt...
- Des weiteren würde ich gern die Monatsnamen und Namen der Tage aus der lang_main.php entnehmen, aber dies erfolgt nicht, wenn ich die $lang['.... im nachfolgenden Code angebe...

Vielleicht ist ja hier jemand so nett und baut den Calender entsprechend um, so dass man ihn in anderen phpBB Dateien nutzen kann und er so Verwendung in einigen MODs finden kann.... :roll:
<?php
// phpBB START
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
$page_title = "Calendar";
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
/*
$template->set_filenames(array(
'body' => 'calendar_body.tpl')
);
*/
// phpBB END



// calendar function START
function ShowMonth ($month, $year)
{
// Monatsnamen
$months = array ();
$months[0] = "Dezember";
$months[1] = "Januar";
$months[2] = "Februar";
$months[3] = "M&auml;rz";
$months[4] = "April";
$months[5] = "Mai";
$months[6] = "Juni";
$months[7] = "Juli";
$months[8] = "August";
$months[9] = "September";
$months[10] = "Oktober";
$months[11] = "November";
$months[12] = "Dezember";

// Tagnamen
$days = array ();
$days[0] = "So";
$days[1] = "Mo";
$days[2] = "Di";
$days[3] = "Mi";
$days[4] = "Do";
$days[5] = "Fr";
$days[6] = "Sa";
$days[7] = "So";


$now = time ();
$today = getdate ($now);
if (! $month)
{
$month = $today[mon];
}

if (! $year)
{
$year = $today[year];
}
$data[month] = $month;
$data[year] = $year;

echo '<center><TABLE border="1" cellspacing="0">';
echo '<TR><TH colspan="7" align="center">';
echo "$months[$month] $year";
echo '</TH></TR>';
echo '<TR>';

for ($i = 1; $i <= 7; $i ++)
{
echo "<TH>$days[$i]</TH>";
}

echo '</TR>';

$first = mktime (12, 0, 0, $month, 1, $year);
$date = getdate ($first);
if ($date[wday] == 0) { $date[wday] = 7; }
$offset = $date[wday] - 1;
echo "<TR>";
for ($i = 1; $i <= 7; $i ++)
{
if ($i > $offset)
{
$day = $i - $offset;
echo "<TD align=center>$day</TD>";
}
else
{
// Tage aus vorherigem Monat nicht anzeigen
echo "<TD>&nbsp;</TD>";
}
}
echo "</TR>";

for ($i = 8; $i <= 42; $i ++)
{
echo "<TR>";
$n = $i + 7;
for ($i; $i < $n; $i++)
{
$day = $i - $offset;
if ($day < 29)
{
echo "<TD align=center>$day</TD>";
}
else
{
$current = mktime (12, 0, 0, $month, $day, $year);
$date = getdate ($current);
if ($date[mon] == $month)
{
echo "<TD align=center>$date[mday]</TD>";
}
else
{
// Restliche Tage des Monats auffüllen
echo "<TD>&nbsp;</TD>";
}
}
}
$i --;
echo "</TR>";
}

echo '</TABLE></center>';
$data[month] = $month;
$data[year] = $year;
return $data;
}
// Ausgabe:
ShowMonth (0,0);
// calendar function END


// phpBB START
/*
$template->pparse('body');
*/
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
// phpBB END
?>
Danke vorab!

Verfasst: 27.12.2003 15:00
von Pyramide
Vielleicht hilft dir ja das hier weiter:
KB:template_system
KB:phpbb_seite
KB:template_syntax

Verfasst: 27.12.2003 15:56
von AWSW
Hallo Pyramide,
leider nicht wirklich - die Links und deren Inhalt kenne ich, aber wenn ich es wie sonst auch in phpbb umsetzte, dann wird nichts mehr angezeigt...

Hmmm egal - dann wird es halt nix mit dem neuen MOD :wink: :roll: :wink:

Verfasst: 27.12.2003 16:50
von Pyramide
AWSW hat geschrieben:wie sonst auch
Und wie wäre das?

Verfasst: 27.12.2003 16:59
von Programmer
Ich habs fertig !

http://www.radio.infinite-server.de/scripts/news.php

PHP-Script:

Code: Alles auswählen

$KALENDER_Monate = array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
if(!isset($KALENDER))
{
	if(isset($_COOKIE['kalendercookie']))	$KALENDER = $_COOKIE['kalendercookie'];
	else 									$KALENDER = time();
}

$template->assign('KALENDER_Anzeige', ' '.$KALENDER_Monate[date("m",$KALENDER)-1].date(" Y ",$KALENDER));
$template->assign('KALENDER_Links' ,	$LINK_SELF.'?KALENDER='. mktime(0,0,0,date("m",$KALENDER)-1,date("d",$KALENDER),date("Y",$KALENDER)));
$template->assign('KALENDER_Rechts' ,	$LINK_SELF.'?KALENDER='. mktime(0,0,0,date("m",$KALENDER)+1,date("d",$KALENDER),date("Y",$KALENDER))); 	
$datum = $KALENDER;
	
setcookie('kalendercookie',$datum,0,'/');

$day   = 1;
$month = date("m",$datum);
$year  = date("y",$datum);
$tag_der_woche = getdate(mktime(0,0,0,$month,1,$year)); 
$tag_der_woche = $tag_der_woche[wday];  // 0 = Sonnatg 

$day_today   = date("d",time());
$year_today  = date("y",time());
$month_today = date("m",time());
	
	if($tag_der_woche == 0)	$i = 6;
	else					$i = $tag_der_woche-1;

	for(;$i<42;$i++)
	{
		if(checkdate($month,$day,$year)) 
		{
			if(($day_today == $day) && ($month_today == $month) && ($year_today == $year))
				$KALENDER_Array[$i]='<b>'.$day.'</b>'; 
			else 					
				$KALENDER_Array[$i]=$day; 			
		}

		$day++;
	}
	
   $template->assign('KALENDER_TAG', $KALENDER_Array);
Template:

Code: Alles auswählen

<tr>
<td align='center' class="genmed"><b>Mo</b></td>
<td align='center' class="genmed"><b>Di</b></td>
<td align='center' class="genmed"><b>Mi</b></td>
<td align='center' class="genmed"><b>Do</b></td>
<td align='center' class="genmed"><b>Fr</b></td>
<td align='center' class="genmed" style="color:#000099"><b>Sa</b></td>
<td align='center' class="genmed" style="color:#990000"><b>So</b></td>
</tr>
<tr>
<td align='center' class="genmed">{$KALENDER_TAG[0]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[1]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[2]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[3]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[4]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[5]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[6]}</td>
</tr>

<tr>
<td align='center' class="genmed">{$KALENDER_TAG[7]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[8]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[9]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[10]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[11]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[12]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[13]}</td>
</tr>
<tr>
<td align='center' class="genmed">{$KALENDER_TAG[14]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[15]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[16]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[17]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[18]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[19]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[20]}</td>
</tr>
<tr>
<td align='center' class="genmed">{$KALENDER_TAG[21]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[22]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[23]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[24]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[25]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[26]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[27]}</td>
</tr>
<tr>
<td align='center' class="genmed">{$KALENDER_TAG[28]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[29]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[30]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[31]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[32]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[33]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[34]}</td>
</tr>
<tr>
<td align='center' class="genmed">{$KALENDER_TAG[35]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[36]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[37]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[38]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[39]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[40]}</td>
<td align='center' class="genmed">{$KALENDER_TAG[41]}</td>
</tr>
Ok. Das Template könnte man mit einer Schleife herstellen.
Aber es funtkioniert sehr schön.

Als Template-Engine verwende ich Smarty.
Die Sache mit dem dem Cookie habe ich nur gemacht, weil man die Monate auch umbkättern kann. und selbst bei einem Seitenwechsel demnach erhalten bleibt.