Zum Inhalt springen

Versatile Calendar Extension (VCE) sk_calendar und overLIB

Erstellt am 26. November 2005 · 4 Antworten · letzte Antwort am 5. Dezember 2005

Tags: Kalender & Termine, JavaScript & AJAX, Frage

ion ·

Hallo Zusammen

Habt Ihr erfahrung wie man overLIB integriert?

Ich würde gerne den kalender so abändern dass in der Monatsansicht Lange Beschreibungen gekürzt werden und anstelle ein Link erscheint der per Overlib den Rest der kurzbeschreibung anzeigt.

Das Problem ist dass sobald der Kalender gut gefüllt ist die Tabelle zu breit wird.

Hat jemand eine Idee wie ich vorgehn muss, oder ev irgen eine gute Anleitung. Meine PHP kentnisse sind nicht wirklich gut...

Danke für eure Hinweise.

Gruss Manuel

ion ·

Hallo Steffen

Danke Für deine Antwort.
Ich währe dir schon für ein kleines Beispiel dankbar.

Der Aktuelle Stand ist:
Bild: flumenthal.ch/…/aktuell.gif

Das Problem Sobald an mehreren Tagen ein Termin mit langen wörtern eingetragen wird wird die Tabelle zu breit.

Bild: flumenthal.ch/…/soll.gif

Ich würde gerne Lange wörter mit... kürzen und anstelle den Kompletten Text mit Overlib darstellen.

Dass zusätzlich noch detailinfos angezeigt würden ist nur so eine Idee...

Ich denke Ich muss die datei class.tx_skcalendar_monthview.php editieren.

class tx_skcalendar_monthview extends tx_skcalendar_htmlview {

	function tx_skcalendar_monthview($container,$conf) {
		// calls mothership
		
		$this->tx_skcalendar_htmlview($container,$conf);
	}

	function parseCalendar() {
		$month = intval(date('m',$this->offset));
		
		if ($this->conf['general']['showlinks']) $this->makeLinks();
		if ($this->conf['general']['showfilters']) $this->makeFilters();
		
		// calculate offset
		$weekday = date('w',mktime(0,0,0,$month,1,$this->year));
		if ($weekday == 0) $weekday=7;
		$d=$weekday-(($weekday-1)*2);
		
		// amount weeks
		$days = date('t',mktime(0,0,0,$month,1,$this->year))-28;
		$days = $days+$weekday-1;// How many overhanging days?
		if ($days > 7) $count_weeks=6;
		elseif ($days == 0) $count_weeks=4;
		else $count_weeks = 5;
		
		for ($w=1; $w<=$count_weeks;$w++) {
			for ($i=1;$i<=7;$i++) {
				$temp['style'] = 'month_' . $this->calendarArray[$month][$d]['style'];
				$temp['name'] = $this->calendarArray[$month][$d]['d_name']['no'] . ' ' . $this->calendarArray[$month][$d]['d_name']['short'];
				if ($this->calendarArray[$month][$d]['d_ts']) $temp['timestamp'] = $this->calendarArray[$month][$d]['d_ts'];
				
				if ($this->calendarArray[$month][$d]['events']) {
					while (list(,$data) = each($this->calendarArray[$month][$d]['events'])) {
					if ($this->conf['month']['iconmode']) {
					$cat = $this->getCategory($data['category']);
					if (!$cat['icon']) $cat['icon'] = 'cat_fallback.gif';
					$linktext = '<img border="0" width="10" src="uploads/tx_skcalendar/'.  $cat['icon'] . '" alt="" />';
					}
					else $linktext = $data['title'];
					$temp['linktext'] = $linktext;
					$this->template->setItem($data);
					$this->template->setTempData($temp);
					$this->template->getSubpart('MONTH_VIEW_ITEM');

					$content_day .= $this->template->parseTemplate();
					}
				}
				
				// Make my day
				$temp['wrapit'] = $content_day;
				
				$this->template->setTempData($temp);
				$this->template->getSubpart('MONTH_VIEW_DAYWRAP');
				$content_row .= $this->template->parseTemplate();
				unset ($content_day);
				$d++;
			}
			
			// close row
			$temp['wrapit'] = $content_row;
			$this->template->setTempData($temp);
			$this->template->getSubpart('MONTH_VIEW_ROWWRAP');
			$content .= $this->template->parseTemplate();
			unset ($content_row);

		}
		
		$temp['date'] = $this->offset;
		$temp['wrapit'] = $content;
		$this->template->setTempData($temp);
		$this->template->getSubpart('MONTH_VIEW_CALENDARWRAP');
		$content = $this->template->parseTemplate();
		
		// get Navigation
		$this->template->setTempData($this->makeNavigation());
		$this->template->getSubpart('MONTH_VIEW_NAVIGATION');
		$temp['wrapit'] = $content . $this->template->parseTemplate();
		
		// wrap whole thing
		$this->template->setTempData($temp);
		$this->template->getSubpart('MONTH_VIEW_WHOLEWRAP');
		$this->content .= $this->template->parseTemplate();
	}

	function makeNavigation() {
		$offset = date('m',$this->offset);
		$next = $this->prepareTypolink();
		$back = $this->prepareTypolink();
		$nextyear = $this->prepareTypolink();
		$backyear = $this->prepareTypolink();
		
		$next['tx_skcalendar_pi1[offset]'] = mktime(0,0,0,$offset+1,1,$this->year);
		$back['tx_skcalendar_pi1[offset]'] = mktime(0,0,0,$offset-1,1,$this->year);
		$nextyear['tx_skcalendar_pi1[offset]'] = mktime(0,0,0,$offset,1,$this->year+1);
		$backyear['tx_skcalendar_pi1[offset]'] = mktime(0,0,0,$offset,1,$this->year-1);

		$navi['backlinkyear'] = '<a href="' . $GLOBALS[" tsfe-="">cObj->getTypoLink_URL($GLOBALS["TSFE"]->id,$backyear) . '"> << ' . strftime("%Y",mktime(0,0,0,$offset,1,$this->year-1)) . '</a>';
		$navi['nextlinkyear'] = '<a href="' . $GLOBALS[" tsfe-="">cObj->getTypoLink_URL($GLOBALS["TSFE"]->id,$nextyear) . '">' . strftime("%Y",mktime(0,0,0,$offset,1,$this->year+1)) . ' >></a>';

		$navi['backlink'] = '<a href="' . $GLOBALS[" tsfe-="">cObj->getTypoLink_URL($GLOBALS["TSFE"]->id,$back) . '"> << ' . $this->pi_getLL('prev_month') . '</a>';
		$navi['nextlink'] = '<a href="' . $GLOBALS[" tsfe-="">cObj->getTypoLink_URL($GLOBALS["TSFE"]->id,$next) . '">' . $this->pi_getLL('next_month') . ' >></a>';
		return $navi;
	}
}

if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/sk_calendar/pi1/class.tx_skcalendar_monthview.php"])	{
	include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/sk_calendar/pi1/class.tx_skcalendar_monthview.php"]);
}

Ich werde daraus nicht richtig schlau 🙁

Ich bin für jeden Ansatz / Tipp dankbar.

Grüsse Manuel

steffenk ·

sry, hab Deinen Post zu spät gesehen.

Ich erarbeite gerade eine Methode für Tooltips ala overlib, nur einfacher. Das wird in den nächsten Tagen soweit sein. Dann kann ich Dir konkrete Hinweise geben.

Ansonsten wird in Zeile 46 der Tag ausgegeben, allerdings ist der Eintrag ja ein Teil. Du konntest aber den ganzen Eintrag in einen Link packen.

Ich muss mir die Ext eh noch anschauen, aber untersuch doch mal, in welchem Element der Text drinsteht.

Was mir gerade spontan einfällt, Du kannst auch die Breite fixieren, in dem du den Tag in ein div packst mit overflow:hidden;
und dann den Text in ein span mit title-tag packst, dann kommt immerhin der Standard-Windowstooltip.

ion ·

Vielen Dank für deine Antwort.

Ja würde mich interessieren wenn du dies herausfinden würdest.
Dein spontaner Einfall finde ich wirklich gut. Diese Lösung verwende ich momentan.

Vielen Dank.
Wünsche dir noch einen schönen Tag.

Gruss Manuel