[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Kalender event_cal - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
oliver
Beiträge: 14
Registriert: 9. Nov 2008, 21:53
Wohnort: Heinsberg

Kalender event_cal

28. Jul 2009, 11:08

ich versuche gerade die einträge von event_cal in dem angebotenen kalender auszugeben.

da die dokumentation sehr, sehr dürftig ist und ich auch keine ahnung von php hab, gelingt mir das natürlich nicht.

bekomme fehlermeldungen, weil das feld title welches das kalender_modul will
ja nicht durch das addon in der datenbank angelegt ist.

soweit so schlecht. eigentlich möchte ich nur das im kalender der betreffende tag(also, die zahl) mit meinem event verlinkt ist.

habe da selbst schon rumprobiert und habe auch es auch hinbekommen, dass mir das komplette datum im kalender angezeigt wird. allerdings wird ja dann der kalender vom layout zerschossen.

wäre schön, wenn wir jemand helfen könnte.

version redaxo 4.1

also, hier mal mein script(kalendermodul):
<?php

class rex_cal
{

var $curYear;
var $curMonth; //Aktueller Monat als Zahl
var $monthDays; //Anzahl der Tage des aktuellen Monats
var $firstDay; //erster Tag des aktuellen Monats
var $values = array(); //Array mit dem ID-Wert des Events

function rex_cal($givenMonth = '', $givenYear = '')
{

//Wenn kein Jahr angegeben wird, dann nehme ich den das aktuelle
if($givenYear == '')
$this->curYear = date('Y', time());
else
$this->curYear = $givenYear;

//Wenn kein Monat angegeben wird, dann nehme ich den aktuellen Monat
if($givenMonth == '')
$this->curMonth = date('n', time());
else
$this->curMonth = $givenMonth;

$this->monthDays = date('t', mktime(0, 0, 0, $this->curMonth, 1, $this->curYear));
$this->firstDay = date('w', mktime(0, 0, 0, $this->curMonth, 1, $this->curYear));


//wir r?cken das Array um so viele Stellen weiter, bis es mit dem startenden Wochentag ?bereinstimmt
for($pushDay = 0; $pushDay<$this->firstDay; $pushDay++)
{
array_push($this->values, NULL);
}

//wir bef?llen das Array standard-m?§ig mit Zahlen
for($day = 1; $day<=$this->monthDays; $day++)
{
array_push($this->values, '<span class="day">'.$day.'</span>');
}

if($this->curMonth == 13)
{
$this->curMonth = 1;
$this->curYear++;
}

if($this->curMonth == 0)
{
$this->curMonth = 12;
$this->curYear--;
}

}

//F?gt einen Wert in ein Array
function setValue($tag, $value)
{
$this->values[$tag+$this->firstDay-1] = $this->values[$tag+$this->firstDay-1].$value;
}

//F?gt einen Link in ein Array
function setLink($tag, $befor, $after)
{
$this->values[$tag+$this->firstDay-1] = $befor.$this->values[$tag+$this->firstDay-1].$after;
}

function setrepeatValue($tag, $value)
{

}

function nextMonth()
{
$this->curMonth = $this->curMonth+1;

if($this->curMonth == 13)
{
$this->curMonth = 1;
$this->curYear++;
}
}

function lastMonth()
{
$this->curMonth = $this->curMonth-1;

if($this->curMonth == 0)
{
$this->curMonth = 12;
$this->curYear--;
}
}

function nextYear()
{
$this->curYear = $this->curYear+1;
}

function lastYear()
{
$this->curYear = $this->curYear-1;
}

//liefert den aktuellen Monat als Namen zur?ck
function getMonth($month = array('J&auml;nner', 'Februar', 'M&auml;rz', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'))
{
return $month[$this->curMonth-1];
}

function getMonthAsNumber()
{
return $this->curMonth;
}

function getKalender($header = array('Mo','Di','Mi','Do','Fr','Sa','So'))
{


$output = '<table class="kalendar">
<tr>
';

foreach($header as $element)
$output .= '<th>'.$element.'</th>'
;

$output .= '</tr>'
;

for($row = 1; $row<=5; $row++)
{
$output .= '<tr>
';
for($col= 1; $col<=7; $col++)
{
if($this->values[$col+(($row-1)*7)] == "")
$class='class="none"';
else
$class = "";

$output .= '<td '.$class.'>'.$this->values[$col+(($row-1)*7)].'</td>
';
}
$output .= '</tr>
';
}

$output .= '</table>
';


return $output;
}


}


//Wenn es noch keine eventID gibt -> wenn kein Termin angeklickt wurde
if(!isset($_REQUEST['eventid']))
{

if(!isset($_REQUEST['month']))
$makeCal = new rex_cal();
else
$makeCal = new rex_cal($_REQUEST['month']);


$getAll = new rex_sql;
$getAll->setQuery("SELECT * FROM rex_120_events WHERE SUBSTRING(DATE, 5,2)='".sprintf("%02d", $makeCal->getMonthAsNumber())."'");


for($u=0; $u<$getAll->getRows(); $u++)
{
if($getAll->getValue('DATE') != '')
{
$makeCal->setValue(substr($getAll->getValue('DATE'), 6, 2), '<a href="index.php?article_id=33&eventid='.$getAll->getValue('ID').'" >'.substr($getAll->getValue('DATE'), 0, 15).'</a>');
}
$getAll->next();
}

echo "<h2>Veranstaltungen im ".$makeCal->getMonth().":</h2>";
echo $makeCal->getKalender();

echo '<p class="navigation cal">
<span class="last">
<a href="index.php?article_id=33&month='.($makeCal->getMonthAsNumber()-1).'">
vorherigen Monat anzeigen
</a>
<em>.</em>
</span>

<span class="next">
<a href="index.php?article_id=33&month='.($makeCal->getMonthAsNumber()+1).'">
n&auml;chsten Monat anzeigen
</a>
</span>
</p>';
}


//andernfalls...
else
{
$getAll = new rex_sql;
$getAll->setQuery("SELECT * FROM rex_120_events WHERE ID='".$_REQUEST['eventid']."'");

if($getAll->getRows() > 0)
{


echo '<p class="eventdate">'.substr($getAll->getValue('DATE'), 6, 2).'.'.substr($getAll->getValue('DATE'), 4, 2).'.'.substr($getAll->getValue('DATE'), 0, 4).'</p>';
echo '<p class="eventtext">
'.$getAll->getValue('EVENT').'
</p>';
}
else
{
echo '<p class="warning">Dieses Event existiert nicht!</p>';
}

echo '<p class="back"><a href="index.php?article_id=33">Zur&uuml;ck</a></p>';
}









?>

oliver
Beiträge: 14
Registriert: 9. Nov 2008, 21:53
Wohnort: Heinsberg

Kalender event_cal

30. Jul 2009, 11:00

weiß denn hier keiner bescheid?

bitte!

Benutzeravatar
Cheffchen
Beiträge: 1809
Registriert: 3. Mär 2009, 13:51
Wohnort: Berlin
Kontaktdaten: Website

30. Jul 2009, 13:03

Hallo,

nee keiner :O).

Für das was Du möchtest müsste fast alles geändert werden, also neu erstellt werden, da die Funktion dieses Kalenders vom Grund nicht passt was du möchtest.
Sage ich mal, bin aber auch nicht der PHPler :O).

Cheffchen

redaxoist
Beiträge: 133
Registriert: 7. Feb 2006, 12:15

30. Jul 2009, 15:24

hallo,

für das Addon "event_cal" hat bereits ein anderer Nutzer eine Kalenderausgabe geschrieben.

Installierst du die aktuelle Version von "event_cal" und schaust dann unter "Info" wird dir dort ein Link zur Kalenderausgabe gezeigt.

Dann musst du nur noch das Modul dieses Linkes installieren und gegebenfalls den Tabellennamen anpassen (die Tabelle enthielt früher eine 77 und jetzt eine 120).

Ich habe das Kalendermodul zwar nicht getestet, aber es sollte Dir zumindest einen guten Anfang geben.

Die Kalenderklasse, welche du bisher verwendest, scheint sich ganz offensichtlich auf ein anderes Addon zu beziehen wenn es Felder verlangt die gar nicht in der DB existieren. Da wäre dann wirklich eine komplette Neucodierung notwendig.

oliver
Beiträge: 14
Registriert: 9. Nov 2008, 21:53
Wohnort: Heinsberg

1. Aug 2009, 21:06

erst einmal danke, für die antworten.

an redaxoist: genau dieses modul habe ich auch verwendet.
und auch die tabellenbez. geändert. es funktioniert ja auch
aber eben nicht so, wie ich das möchte.

ciccy
Beiträge: 9
Registriert: 15. Feb 2008, 23:40

12. Aug 2009, 15:54

Hallo,

ich brauche genau das selbe wie Oliver und habe etwas am Ausgabemodul geändert:

Code: Alles auswählen

<?php

class rex_cal
{

	var $curYear;
	var $curMonth;		//Aktueller Monat als Zahl
	var $monthDays;		//Anzahl der Tage des aktuellen Monats 
	var $firstDay;		//erster Tag des aktuellen Monats
	var $values = array();			//Array mit dem ID-Wert des Events

	function rex_cal($givenMonth = '', $givenYear = '')
	{
				
		//Wenn kein Jahr angegeben wird, dann nehme ich den das aktuelle
		if($givenYear == '')
			$this->curYear = date('Y', time());
		else
			$this->curYear = $givenYear;
		
		//Wenn kein Monat angegeben wird, dann nehme ich den aktuellen Monat
		if($givenMonth == '')
			$this->curMonth = date('n', time());
		else
			$this->curMonth = $givenMonth;
		
		$this->monthDays = date('t', mktime(0, 0, 0, $this->curMonth, 1, $this->curYear));
		$this->firstDay = date('w', mktime(0, 0, 0, $this->curMonth, 1, $this->curYear));
		
		
		//wir r?cken das Array um so viele Stellen weiter, bis es mit dem startenden Wochentag ?bereinstimmt
		for($pushDay = 0; $pushDay<$this->firstDay; $pushDay++)
		{
			array_push($this->values, NULL);
		}
		
		//wir bef?llen das Array standard-m?§ig mit Zahlen
		for($day = 1; $day<=$this->monthDays; $day++)
		{
			array_push($this->values, '<span class="day">'.$day.'</span>');
		}	
		
		if($this->curMonth == 13)
		{
			$this->curMonth = 1;
			$this->curYear++;
		}
		
		if($this->curMonth == 0)
		{
			$this->curMonth = 12;
			$this->curYear--;
		}	
	
	}
	
	//F?gt einen Wert in ein Array
	function setValue($tag, $value)
	{
		$this->values[$tag+$this->firstDay-1] = $this->values[$tag+$this->firstDay-1].$value;
	}
	
	//F?gt einen Link in ein Array
	function setLink($tag, $befor, $after)
	{
		$this->values[$tag+$this->firstDay-1] = $befor.$this->values[$tag+$this->firstDay-1].$after;
	}
	
	function setrepeatValue($tag, $value)
	{
		
	}
	
	function nextMonth()
	{
		$this->curMonth = $this->curMonth+1;
		
		if($this->curMonth == 13)
		{
			$this->curMonth = 1;
			$this->curYear++;
		}	
	}
	
	function lastMonth()
	{
		$this->curMonth = $this->curMonth-1;
		
		if($this->curMonth == 0)
		{
			$this->curMonth = 12;
			$this->curYear--;
		}	
	}
	
	function nextYear()
	{
		$this->curYear = $this->curYear+1;
	}
	
	function lastYear()
	{
		$this->curYear = $this->curYear-1;
	}
	
	//liefert den aktuellen Monat als Namen zur?ck
	function getMonth($month = array('Januar', 'Februar', 'M&auml;rz', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'))
	{
		return $month[$this->curMonth-1];
	}
	
	function getMonthAsNumber()
	{
		return $this->curMonth;
	}

	function getKalender($header = array('Mo','Di','Mi','Do','Fr','Sa','So'))
	{
		
			
		$output = '<table class="kalendar">
			<tr>
		';
		
		foreach($header as $element)
			$output .= '<th>'.$element.'</th>'
			;
		
		$output .= '</tr>'
		;
		
		for($row = 1; $row<=5; $row++)
		{
			$output .= '<tr>
			';
			for($col= 1; $col<=7; $col++)
			{
				if($this->values[$col+(($row-1)*7)] == "")
					$class='class="none"';
				else
					$class = "";
					
				$output .= '<td '.$class.'>'.$this->values[$col+(($row-1)*7)].'</td>
				';
			}
			$output .= '</tr>
			';
		}
		
		$output .= '</table>
		';
		
		
		return $output;	
	}


}


//Wenn es noch keine eventID gibt -> wenn kein Termin angeklickt wurde
if(!isset($_REQUEST['eventid']))
{
	
	if(!isset($_REQUEST['month']))
		$makeCal = new rex_cal();
	else
		$makeCal = new rex_cal($_REQUEST['month']);
	

	$getAll = new rex_sql;
	$getAll->setQuery("SELECT * FROM rex_120_events WHERE SUBSTRING(DATE, 5,2)='".sprintf("%02d", $makeCal->getMonthAsNumber())."'");
		
	
	for($u=0; $u<$getAll->getRows(); $u++)
	{
		if($getAll->getValue('DATE') != '')
		{
			$makeCal->setValue(substr($getAll->getValue('DATE'), 6, 2), '<td><span><a href="index.php?article_id=1&eventid='.$getAll->getValue('ID').'" title="'.$getAll->getValue('TITLE').'">'*'</a></span></td>');
		}
		$getAll->next();
	
	}
	
	echo "<h2>Monat ".$makeCal->getMonth().":</h2>";
	echo $makeCal->getKalender();
	
	echo '<p class="navigation cal">
					<span class="last">
						<a href="index.php?article_id=1&month='.($makeCal->getMonthAsNumber()-1).'">
							<
						</a>
						
					</span>
					
					<span class="next">
						<a href="index.php?article_id=1&month='.($makeCal->getMonthAsNumber()+1).'">
							>
						</a>
					</span>
				</p>';
}


//andernfalls...
else
{
	$getAll = new rex_sql;
	$getAll->setQuery("SELECT * FROM rex_120_events WHERE ID='".$_REQUEST['eventid']."'");
	
	if($getAll->getRows() > 0)
	{
		//echo '<h2>'.$getAll->getValue('TITLE').'</h2>';
	
		echo '<p style="font-weight: bold;">'.substr($getAll->getValue('DATE'), 6, 2).'.'.substr($getAll->getValue('DATE'), 4, 2).'.'.substr($getAll->getValue('DATE'), 0, 4).' - ';
		
echo 			$getAll->getValue('TIME').'
		&nbsp;Uhr</p>';
echo '<p>
			'.$getAll->getValue('EVENT').'
		</p>';
	}
	else
	{
		echo '<p class="warning">Dieses Event existiert nicht!</p>';
	}
	
	echo '<p class="back"><a href="javascript:history.back()">zur&uuml;ck zum Kalender</a>
</p>';
}

?>

Damit wird der Tag, bei dem ein Termin hinterlegt ist, als Link dargestellt.
Allerdings besteht ein kosmetisches Problem: der Quelltext ist nicht valide.
Es funktioniert, jedoch wäre eine saubere Lösung natürlich viel besser.

Grüße
ciccy

Zurück zu „Allgemeines [R4]“