Kalenderscript Umbau...

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
AWSW
Ehemaliges Teammitglied
Beiträge: 3365
Registriert: 26.05.2002 12:20

Kalenderscript Umbau...

Beitrag 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!
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Vielleicht hilft dir ja das hier weiter:
KB:template_system
KB:phpbb_seite
KB:template_syntax
AWSW
Ehemaliges Teammitglied
Beiträge: 3365
Registriert: 26.05.2002 12:20

Beitrag 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:
LEIDER DAUERHAFT OFFLINE & Ich beantworte keine Fragen zu phpBB per Mail oder PN !
Hinweis: awsw.de ist nun dauerhaft offline. Die MODs könnt Ihr hier in der Datenbank finden.
Bitte keine Anfragen senden, ob ich die MODs anderweitig senden kann - es geht nicht - Danke für Euer Verständnis !
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

AWSW hat geschrieben:wie sonst auch
Und wie wäre das?
Programmer
Mitglied
Beiträge: 32
Registriert: 10.08.2003 13:34
Kontaktdaten:

Beitrag 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.
Mit einem Computer löst man Probleme, die man ohne ihn, nicht hätte. :grin:
Antworten

Zurück zu „Coding & Technik“