Zum Inhalt springen

www.meade.de

Erstellt am 23. August 2004 · 180 Antworten · letzte Antwort am 3. Juli 2006 · Seite 1 von 10

Tags: Diskussion

Dreadhead ·

@clicks,

könntest mir einfach mal den code schicken???
wegen mir muss er auch nicht sonderlich hübsch sein, bin aber daran sehr interessiert,...

greetz
Dreadhead

sangria ·

@ clicks

wenn ich das im typo 3 in ein menue mit drei ebenen einbauen möchte.... wie muß ich das machen? der opera-bug juckt mich eigentlich nicht, da ich das ganze eh in einem nt-käfig rennen lasse... ;o)

wäre echt dankbar für deine hilfe....

winke

sangria

Therealherby ·

Hallo,

das finde ich ja klasse dass du den zum reinschnuppern geben moechtest 😃 Ist er denn schon huebsch genug :-) Bin schon tierisch gespannt drauf und kanns kaum noch erwarten :-)

Bye und gruss
Herby

redseasix ·

Ich hätte auch interesse an dem Quellcoode.

Bin mal sehr gespannt darauf. Bin noch Anfänger in Typo 3 und habe bis .... gestern nur in HTML zu Fuß programmiert.

Gruß

redseasix

clicks · · Beste Antwort

Hallo,

vielen Dank für euer Lob und eure Geduld. Ich musste mir ersteinmal 2 Wochen Urlaub gönnen 🙂.

Zur Händlersuche: Ja die Sache läuft über Längen- und Breitengrade. Eine entsprechende Extension werde ich bei Gelegenheit auch fertigstellen. Momentan ist die Ext noch zu "spezifisch". Falls es wichtig ist -> PN.

So habe den Code für das Menu mal etwas überarbeitet. Das ganz funtkioniert nach folgendem Prinzip:
Das Menu ist ein normales HMENU mit einem GMENU und mehreren TMENUs. Diese schicken über die IProcFunc Function ihre Information an ein eigenes PHP Skript, welches die Informationen umwandelt und den nötigen JS Code erzeugt. Die Tiefe ist dabei beliebig erweiterbar.

// Achtung!
Das gesamte Skript ist genau an die Bedürfnisse der Meade Seite angepasst und nicht sehr flexibel. Es klappt momentan also "nur" mit einem horizontalen GMENU und mehreren TMENUs. Das soll sich zwar noch ändern, aber im aktuellen Stadium wird es wahrscheinlich nicht klappen (untested). Für Verbesserungsvorschläge bin ich immer offen 😉

Zuerst zum TS:

# include ypMenu script
page.includeLibs.ypMenu = fileadmin/.../ypMenu.php

...

lib.mainMenu >
lib.mainMenu = HMENU
lib.mainMenu.1 = GMENU
lib.mainMenu.1 {
  IProcFunc = user_menu->firstLevel
  expAll = 1
  wrap = |  

IFSUB = 1
IFSUB {
  wrap = |

   XY = [50.w]+20, 25
   backColor = #cccccc

   50 = TEXT
   50 {
    text.field = title
    fontSize = 12
    fontFile = fileadmin/xyz.ttf
    fontColor = #222222
    offset = 10,17
    niceText = 1

   }

   100 = || IMAGE
   100.file = fileadmin/spacer.gif
}

NO {
  wrap = |

   XY = [50.w]+20, 25
   backColor = #cccccc

   50 = TEXT
   50 {
    text.field = title
    fontSize = 12
    fontFile = xyz.ttf
    fontColor = #222222
    offset = 10,17
    niceText = 1

   }

   100 = || IMAGE
   100.file = fileadmin/spacer.gif
}

RO < lib.mainMenu.1.NO
RO = 1
RO  {
   backColor = #ffca51
}

IFSUBRO < lib.mainMenu.1.NO
IFSUBRO = 1
IFSUBRO  {
   backColor = #ffca51
  }
}


lib.mainMenu.2 = TMENU
lib.mainMenu.2 {
IProcFunc = user_menu->secondLevel
expAll = 1
NO.linkWrap = <li>|</li>
}

lib.mainMenu.3 = TMENU
lib.mainMenu.3 {
IProcFunc = user_menu->thirdLevel
expAll = 1
NO.linkWrap = <li>|</li>
}

lib.mainMenu.4 = TMENU
lib.mainMenu.4 {
IProcFunc = user_menu->fourthLevel
expAll = 1
NO.linkWrap = <li>|</li>
}

...

# append Menu JS to page
page.11 = USER
page.11.userFunc = user_menu->menuEnd

Dann wird das ganze durch die ypMenu Datei gejagt:

<?php
/***************************************************************
*  Copyright notice
*  
*  (c) 2003 Andreas Tschirpke (tschirpke@at-mediendesign.de)
*  All rights reserved
*
*  This script is part of the Typo3 project. The Typo3 project is 
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
* 
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
* 
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/** 
 * User class to build Javascript Menu (www.meade.de)
 *
 * @author	Andreas Tschirpke <tschirpke@at-mediendesign.de>
 */
 
class user_menu {
	var $offsetY = 70; // inital offset values for the first level elements
	var $offsetX = 65;
	var $sublevelWidth = 140; // width and height values for sublevel items 
	var $sublevelHeight = 26;
	
	var $padding = 5;
	var $fontSize = 11;
	var $breakpoint = 14; // recalculate width of text after x characters
	var $secPadding = 16;
	
	var $fontFile = 'fileadmin/../verdana.ttf'; // font file needed to calculate linebreaks
	var $transBg = 'fileadmin/../menu_bg.png'; // transparent PNG file - needed to fix a transparency bug in Mac IE 5
		
	/**
	 *	Dummy function to pass values to buildIndex
	 *
	 *  @param	array	Menu array including all needed menu items (created by TMENU)
	 *	@param	array	Configuration array
	 *	@return	array	returns modified $I array
	 *	@access	private
	 */
    function firstLevel($I,$conf) {
        return $this->buildIndex($I, $conf, 1);
    }
	/**
	 *	Dummy function to pass values to buildIndex
	 *
	 *  @param	array	Menu array including all needed menu items (created by TMENU)
	 *	@param	array	Configuration array
	 *	@return	array	returns modified $I array
	 *	@access	private
	 */
	function secondLevel($I,$conf) {
		return $this->buildIndex($I, $conf, 2);
	}
	/**
	 *	Dummy function to pass values to buildIndex
	 *
	 *  @param	array	Menu array including all needed menu items (created by TMENU)
	 *	@param	array	Configuration array
	 *	@return	array	returns modified $I array
	 *	@access	private
	 */
	function thirdLevel($I,$conf) {
        return $this->buildIndex($I, $conf, 3);
    } 
	/**
	 *	Dummy function to pass values to buildIndex
	 *
	 *  @param	array	Menu array including all needed menu items (created by TMENU)
	 *	@param	array	Configuration array
	 *	@return	array	returns modified $I array
	 *	@access	private
	 */
	function fourthLevel($I, $conf) {
	        return $this->buildIndex($I, $conf, 4);
    } 

		
	/**
	 * Returns true if there is a submenu with items for the page id, $uid
	 * Used by the item states "IFSUB" and "ACTIFSUB" to check if there is a submenu
	 *
	 * @param	integer		Page uid for which to search for a submenu
	 * @return	boolean		Returns true if there was a submenu with items found
	 * @access private
	 */
		// copy from tslib_menu	
	function isSubMenu($uid)	{
			// Looking for a mount-pid for this UID since if that exists we should look for a subpages THERE and not in the input $uid;
		$mount_info = $GLOBALS['TSFE']->sys_page->getMountPointInfo($uid);
		if (is_array($mount_info))	{
			$uid = $mount_info['mount_pid'];
		}

		$recs = $GLOBALS['TSFE']->sys_page->getMenu($uid,'uid,pid,doktype,mount_pid,mount_pid_ol');
		foreach($recs as $theRec)	{
			if (!t3lib_div::inList('5,6',$theRec['doktype']) && !$theRec['nav_hide'])	{	// If a menu item seems to be another type than 'Not in menu', then return true (there were items!)
				return TRUE;
			}
		}
	}

	/**
	 * Breaks textarea text into lines of specified width in order to feed Gifbuilder (see function makeTextImage)
	 *
	 * @param    string        $text: input text 
	 * @param    integer        $size: specified font size
	 * @param    string        $font: absolute path to specified font file
	 * @param    integer        $width: specified width of the image box
	 * @return    array        array of lines of text
	 */
	 	// copy from sr_sendcard 
		// thanks and credits go to Peter Bowyer <peter@sendcard.org>
	function text_to_lines($text, $size, $font, $width) {
		$words = t3lib_div::trimExplode(' ', str_replace("
", ' <br> ', str_replace("

", ' <br> ', str_replace("|", ' <br> ', $text))), 0);

		$p = 0;
		$lines = array();
		$lines[0] = '';

		for($i = 0; $i < count($words); $i++) {
			($lines[$p] ) ? $test = $lines[$p].' '.$words[$i] : $test = $words[$i];

			$bbox = imagettfbbox($size, 0, $font, $test);

			if ($words[$i] == '<br>') {
				$p++;
				$lines[$p] = '';
			} elseif (($bbox[4] - $bbox[6]) > $width ) {
				$p++;
				$lines[$p] = $words[$i];
			} else {
				$lines[$p] = $test;
			}
		}
		return count($lines);
	}

	/**
	 * Collects all needed information (width, height, x, y, level etc.) and structural information for the ypMenu.
	 * Information are stored in $GLOBALS['TSFE']->applicationData['ypMenus']
	 *
	 * @param    array        $I: Array created by TMENU including all menu elements for the current level 
	 * @param    integer      $conf: Configuration array
	 * @param    integer      $level: hierarchical depth
	 * @return   array        $I: modified $I array
	 */	
	function buildIndex($I, $conf, $level) {
			// fix IE 5.0 on windows
		$clientAdjust = 0;
		$clientinfo = t3lib_div::clientInfo();
		if($clientinfo['SYSTEM'] == 'win' AND $clientinfo['BROWSER'] == 'msie' AND $clientinfo['VERSION'] < 5.5) {
			$clientAdjust = 2;
		}
		
			
		switch($level) {
		case "1":
				// only wrap in ypSlide Action if submenu is present
			if($this->isSubMenu($I['uid'])) {
					// JS actions
				$onmouseover = "ypSlideOutMenu.showMenu('menu" .$I['uid']. "'); over('" .$I['theName']. "');";
				$onmouseout = "ypSlideOutMenu.hideMenu('menu" .$I['uid']. "');";// out('" .$I['theName']. "');";
				
					// collect data for correct positions
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['level'] = $level;
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['uid'] = $I['uid'];
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['imgwidth'] = $I['val']['output_w'];
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['imgheight'] = $I['val']['output_h'];
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['width'] = $this->sublevelWidth;
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['height'] = $this->sublevelHeight;
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['dir'] = 'down';
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['top'] = $this->offsetY;
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['left'] = $GLOBALS['TSFE']->applicationData['ypTemp']['x'] + $this->offsetX;			
				
					// build ypMenu JS
				$GLOBALS['TSFE']->applicationData['ypTemp']['js'] .= "
menu". $I['uid'] .".onactivate = new Function("document.images['" .$I['theName']. "'].src = " .$I['theName']. "_h.src");
menu". $I['uid'] .".ondeactivate = new Function("document.images['" .$I['theName']. "'].src = " .$I['theName']. "_n.src");

";
			} else { // no ypMenu needed
				$onmouseover = "over('" .$I['theName']. "');";
				$onmouseout = "out('" .$I['theName']. "'); ";
			}
				// move right
			$GLOBALS['TSFE']->applicationData['ypTemp']['x'] += $I['val']['output_w'];
			
			$I['parts']['ATag_begin'] = '<a href="' .$I['linkHREF']['HREF']. '" onfocus="' . $I['linkHREF']['onFocus']. '" onmouseover="'. $onmouseover .'" onmouseout="'. $onmouseout .'" id="act'. $I['uid'] .'">'; 
			$I['parts']['ATag_end'] = '</a>'; 
		break;
		default: // every other level (TMENU)
			$title = $I['title'];
			
				// count lines if more than $this->breakpoint chars
			if(strlen($title) > $this->breakpoint) {
				$lines = $this->text_to_lines($I['title'], t3lib_div::freetypeDpiComp($this->fontSize), $this->fontFile, ($this->sublevelWidth - 2*$this->padding));
			} else {
				$lines = 1;
			}
				
				// if another submenu is present wrap link with JS actions an collect data
			if($this->isSubMenu($I['uid'])) {
				$href = $I['linkHREF']['HREF'];
				$onmouseover = "ypSlideOutMenu.showMenu('menu" .$I['uid']. "');";
				$onmouseout = "ypSlideOutMenu.hideMenu('menu" .$I['uid']. "');";
				$link = sprintf('<a href="%s" onmouseover="%s" onmouseout="%s" class="submenu">%s</a>',$href, $onmouseover, $onmouseout, $title);
				
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['level'] = $level;
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['uid'] = $I['uid'];
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['width'] = $this->sublevelWidth;
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['height'] = $this->sublevelHeight;
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['dir'] = 'right';
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['top'] = intval($GLOBALS['TSFE']->applicationData['ypMenus'][$I['pid']]['top']) + (($I['key']) * $this->sublevelHeight);
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['left'] = intval($GLOBALS['TSFE']->applicationData['ypMenus'][$I['pid']]['left']) + intval($GLOBALS['TSFE']->applicationData['ypMenus'][$I['pid']]['width']);	
				$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['parentId'] = $I['pid'];		

			} else { // nothing to be done here :)
				$link = $I['parts']['ATag_begin']. $title .$I['parts']['ATag_end']; 
			}

				// move down
			if($I['key'] == 0) {
				$GLOBALS['TSFE']->applicationData['ypTemp'][$I['pid']]['y'] = intval($GLOBALS['TSFE']->applicationData['ypMenus'][$I['pid']]['top']);
			} else {
				$GLOBALS['TSFE']->applicationData['ypTemp'][$I['pid']]['y'] += $this->sublevelHeight + ($this->secPadding * ($lines-1)) + $clientAdjust;
			}

			
			$GLOBALS['TSFE']->applicationData['ypMenus'][$I['pid']]['items'][$I['uid']]['link'] = $link;
			$GLOBALS['TSFE']->applicationData['ypMenus'][$I['pid']]['items'][$I['uid']]['height'] = $this->sublevelHeight + ($this->secPadding * ($lines-1));
			$GLOBALS['TSFE']->applicationData['ypMenus'][$I['pid']]['items'][$I['uid']]['top'] = $GLOBALS['TSFE']->applicationData['ypTemp'][$I['pid']]['y'] - ($this->secPadding * ($lines-1));
			
			// save link in output array
		$I['parts']['ATag_begin'] = '
<a href="' .$I['linkHREF']['HREF']. '" 
	onfocus="' . $I['linkHREF']['onFocus']. '" 
	onMouseOver="ypSlideOutMenu.showMenu('menu'.$I['uid'].'');" 
	onMouseOut="ypSlideOutMenu.hideMenu('menu'.$I['uid'].'');" 
id="level1id'.$I['uid'].'">';
		//$GLOBALS['TSFE']->applicationData['ypMenu'][$level][$I['pid']]['parts']['items'][] = implode('', $I['parts']);
		$I['parts'] = array();
		break;
		}
	
		return $I;
	}

	/**
	 * Builds all HTML/JS Code to initialize all ypMenu layers. Must be writen at the end of the document
	 *
	 * @return   string        html/js code 
	 */		
	function menuEnd() {
			// all relevant data stored in applicationData['ypMenus'];		
		if(is_array($GLOBALS["TSFE"]->applicationData['ypMenus'])) {
				// fix differnet browser bugs to get a transparency effect
			$clientinfo = t3lib_div::clientInfo();
			$pngimg = false;
			$pngbg = false;
			$filter = false;
			$appendix = '';
			$bg = false;
				// ie >= 5.5 on win and mozilla can render transparency by css
			if(($clientinfo['SYSTEM'] == 'win' AND $clientinfo['BROWSER'] == 'msie' AND $clientinfo['VERSION'] >= 5.5) OR ($clientinfo['SYSTEM'] == 'win' AND $clientinfo['BROWSER'] == 'net')) {
				$filter = true;
				$style = 'style="-moz-opacity:.8; filter:alpha(opacity=80); background-color: #d3d3d3"';
				// Mr. IE on Mac needs a special treatment - a transparent png in a img tag in the background 
			} elseif($clientinfo['SYSTEM'] == 'mac' AND ($clientinfo['BROWSER'] == 'msie')) {
				$pngimg = true;
				$style = 'style="background-color: transparent"';
				// Opera and Mozilla on Mac can handle transparent pngs
			} elseif(($clientinfo['SYSTEM'] == 'mac' AND $clientinfo['BROWSER'] == 'net') OR ($clientinfo['BROWSER'] == 'opera')){
				$pngbg = true;
				$style = 'style="background-image: url(''. $this->transBg .'');"';
				// no transparency for the rest - go get firefox!
			} else {
				$bg = true;
				$style = 'style="background-color: transparent"';
				$appendix = 'b';
			}
				
				// loop through all collected data (buildIndex) and render js
			foreach($GLOBALS["TSFE"]->applicationData['ypMenus'] as $menu) {
				$uid = $menu['uid'];
				$level = $menu['level'];
				$dir = $menu['dir'];
				$parentId = ($menu['parentId']) ? '"menu'.$menu['parentId'].'"' : 'null';
				$x = $menu['left'];
				$y = ($menu['parentId']) ? $GLOBALS['TSFE']->applicationData['ypMenus'][$menu['parentId']]['items'][$uid]['top'] : $this->offsetY;
				$width = $menu['width'];

				$items = '';
				$wholeHeight = 0;
				if(is_array($menu['items'])) {
					$itemcount = count($menu['items']);
					foreach($menu['items'] as $item) {
						$items .= '<li>'. $item['link'] ."</li>
";
						$wholeHeight = $wholeHeight + $item['height'];
					}
				}

				if($clientinfo['SYSTEM'] == 'win' AND $clientinfo['BROWSER'] == 'msie' AND $clientinfo['VERSION'] < 5.5) {
					$wholeHeight = $wholeHeight + 2 * $itemcount;
				}

				$height = ($menu['height']) * count($menu['items']);
				$output[] = sprintf('<div id="menu%dContainer" class="mmContainer"><div id="menu%dContent" class="mmContent%s" %s>', $uid, $uid, $appendix, $style); // L%d / $level
				$output[] = sprintf('<ul class="mmLevel%d">%s</ul>', $level, $items);
				
					// trick Mac IE to display our transparent PNG
				if($pngimg) {
					$output[] = '<img src="' . $this->transBg .'" width="'. $width .'" height="'. $wholeHeight .'" class="menuBackground">';
				}
				
				$output[] = '</div></div>';
				
				$menus[] = sprintf('menu%d = new ypSlideOutMenu("menu%d", "%s", %d, %d, %d, %d, %s)', $uid, $uid, $dir, $x, $y, $width, $wholeHeight, $parentId);
			}
		}
	
		if(is_array($output) && is_array($menus)) {
			$output = implode("
", $output);
d			$output .= "
<script type="text/javascript">
"
. implode("
", $menus) ."

ypSlideOutMenu.writeCSS();

". $GLOBALS['TSFE']->applicationData['ypTemp']['js'] ."
</script>
"; 
			return $output;
		}
    }
}
?>

So, dazu kommen natürlich noch die benötigten Javascript Dateien von youngpup.net und CSS Formatierungen. Das kann ich jetzt hier leider nicht alles wiedergeben, kann man sich jedoch zusammensuchen 🙂

Falls Fragen sind wagt es ja nicht mir eine PN zu schreiben 😉

jenses ·
Fatal error: Call to undefined function: getmountpointinfo() in F:apachehtdocsquickstartfileadminMEADE-MenueypMenu.php on line 101

Und nun ??

jenses

Frescha ·

ich bekomme ganz andere fehler. unteranderem diesen hier Warning: Could not find/open font in /var/www/tabularasa/fileadmin/template/men/ypMenu.php on line 135 aber den kann man sicherlich mehr oder wenige leicht beheben.

mich würde mal interessieren wie man das menü hinbekommt ohne fehler zu erzeugen.

clicks ·

Wie gesagt, Beta Software 🙂

@jenses
Das ist eine Typo3 eigene Funktion die im syspage Modul liegt. Bei mir läuft es ab Version 3.6. Auf 3.5 habe ich es nicht getestet. Welche Version hast du?

@frescha
Da ist wahrscheinlich der Pfad zu deiner Schrift nicht korrekt bzw. die Rechte nicht richtig gesetzt.

jenses ·

Hallo clicks !

Vielen Dank für deine schnelle Antwort !
Ich habe lokal auf dem Testserver 3.6.0RC1 zu laufen unter WinXP.

Vielleicht liegt der Fehler auch daran, daß ich aus deinem Code nicht ganz schlau werde.
Ich werde mal erklären, wie ich vorgegangen bin.

1. eine ganz simple HTML-Vorlage :

<html>
<head>
<title></title>
</head>
<body> 
<!-- ###DOKUMENT### begin --> 
###KOPFZEILE###
<br>
###MENU_MAIN###
<br>
###INHALT###
<!-- ###DOKUMENT### end -->
</body>
</html>

2. php-datei erstellt, es gab eine Fehlermeldung,
angemeckert wurde wurde in der dritten Zeile
des Code-Ausschnittes das "d" am Anfang :

      if(is_array($output) && is_array($menus)) { 
         $output = implode("
", $output); 
d         $output .= " 
<script type="text/javascript">
" 
. implode("
", $menus) ." 

ypSlideOutMenu.writeCSS(); 

". $GLOBALS['TSFE']->applicationData['ypTemp']['js'] ." 
</script> 
"; 
         return $output; 
      } 
    } 
} 
?>

Also habe ich das "d" entfernt. FALSCH ???

3. Template Setup erstellt
Mit deinem "lib.mainMenu" konnte ich nicht so richtig was anfangen,
habe es durch "marks.MENU_MAIN" ersetzt.
(MENU_MAIN ist Platzhalter in der HTML-Vorlage) --> FALSCH ???

seite = PAGE 
seite.typeNum = 0 
seite.stylesheet = fileadmin/MEADE-Menue/style.css 
# Benoetigte Libaries einfuegen 
seite.includeLibs.ypMenu = fileadmin/MEADE-Menue/ypMenu.php 

seite.headerData.10 = TEXT 
seite.headerData.10.value = <script type="text/javascript" src="fileadmin/MEADE-Menue/ypSlideOutMenus.js" language="JavaScript"></script><script type="text/javascript" src="fileadmin/MEADE-Menue/jslib.js" language="JavaScript"></script>

seite.10 = TEMPLATE 
seite.10 { 
            template = FILE 
            template.file = fileadmin/MEADE-Menue/template.html 
            workOnSubpart = DOKUMENT 
            marks.INHALT =  CONTENT 
            marks.INHALT < styles.content.get 


 

marks.MENU_MAIN > 
marks.MENU_MAIN = HMENU 
marks.MENU_MAIN.1 = GMENU 
marks.MENU_MAIN.1 { 
#  IProcFunc = user_menu->firstLevel 
  expAll = 1 
  wrap = |  

IFSUB = 1 
IFSUB { 
  wrap = | 

   XY = [50.w]+20, 25 
   backColor = #cccccc 

   50 = TEXT 
   50 { 
    text.field = title 
    fontSize = 12 
    fontFile = fileadmin/fonts/verdana.ttf 
    fontColor = #222222 
    offset = 10,17 
    niceText = 1 

   } 

   100 = || IMAGE 
   100.file = fileadmin/MEADE-Menue/spacer.gif 
} 

NO { 
  wrap = | 

   XY = [50.w]+20, 25 
   backColor = #cccccc 

   50 = TEXT 
   50 { 
    text.field = title 
    fontSize = 12 
    fontFile = fileadmin/fonts/verdana.ttf 
    fontColor = #222222 
    offset = 10,17 
    niceText = 1 

   } 

   100 = || IMAGE 
   100.file = fileadmin/MEADE-Menue/spacer.gif 
} 

RO < marks.MENU_MAIN.1.NO 
RO = 1 
RO  { 
   backColor = #ffca51 
} 

IFSUBRO < marks.MENU_MAIN.1.NO 
IFSUBRO = 1 
IFSUBRO  { 
   backColor = #ffca51 
  } 
} 


marks.MENU_MAIN.2 = TMENU 
marks.MENU_MAIN.2 { 
IProcFunc = user_menu->secondLevel 
expAll = 1 
NO.linkWrap = <li>|</li> 
} 

marks.MENU_MAIN.3 = TMENU 
marks.MENU_MAIN.3 { 
IProcFunc = user_menu->thirdLevel 
expAll = 1 
NO.linkWrap = <li>|</li> 
} 

marks.MENU_MAIN.4 = TMENU 
marks.MENU_MAIN.4 { 
IProcFunc = user_menu->fourthLevel 
expAll = 1 
NO.linkWrap = <li>|</li> 
}
}
# append Menu JS to page 
seite.11 = USER 
seite.11.userFunc = user_menu->menuEnd

4. Dann ins Frontend gewechselt, die Maschine rattert los,
es öffnen und schließen sich DOS-Boxen (Gifbuilder in Aktion ?)
und es kommt besagte Fehlermeldung

Fatal error: Call to undefined function: getmountpointinfo() in F:apachehtdocsquickstartfileadminMEADE-MenueypMenu.php on line 101

Wo liegt das syspage Modul ??

Vielen Dank im Voraus für deine Mühen !

jenses

clicks ·

WindowsXP? Hab ich nie getestet, es lief immer auf einer Linux Box.

1. Kann man so machen - ich selbst nutze seit der Templavoilá Extension nur noch diese.

2. Das mit dem entfernen des d ist schon korrekt, das gehört da nicht hin.

3. Sollte auch richtig sein.
Warum hast du die erste IProcFunc auskommentiert?

4. Es öffnen und schliessen sich DOS Boxen? Witzig! Kann ich nicht nachvollziehen, da ich es halt unter Linux einsetze.

Habe grade mal nachgeschaut, in der V3.5 gab es die Funktion getMountPointInfo() noch nicht. In der final 3.6 ist es aber enthalten - wie es sich mit den Release Candidates verhält, kann ich dir nicht sagen. Du solltest aber in jedem Fall updaten.
Die Funktion ist in der Datei class.t3lib_page.php enthalten.

jenses ·

Hallo clicks !

Es war die fehlende Funktion getMountPointInfo() in 3.6.0 RC1.
Habe mir die 3.6.2 installiert und jetzt funzt es.

Viele Dank für den Tip !
jenses

jenses ·

@ alle

wenn man in der ypMenu.php in Zeile 174

$onmouseout = "ypSlideOutMenu.hideMenu('menu" .$I['uid']. "');";// out('" .$I['theName']. "');";

gegen

$onmouseout = "ypSlideOutMenu.hideMenu('menu" .$I['uid']. "');  out('" .$I['theName']. "');";

austauscht, funktionieren auch die IFSUB-Zustände vernünftig.

jenses

abteilung ·

Mir gefällt die SlideOut-Lösung total gut. Ich würde sie gerne in einem zentrierten Layout verwenden, habe also links einen variablen Abstand bis zum Menü.

Ich bin nicht ganz durchgestiegen, wie ich dem Skript den Bezug zu meinem "beweglichen Nullpunkt" geben könnte.

Hat irgendjemand einen Plan, wie ich das tun könnte?

Herzlichen Dank schon!

jenses ·

Du mußt das ypSlideOutMenusC.js ( C = centered ) ins Script einbinden,
dann wohl noch ein bißchen anpassen.
Wenn du es fertig hast, bitte hier posten. 😉

viele Grüße
jenses

abteilung ·

Okay, dann wollen wir mal. Ich habe das Layout mit einer Tabelle aufgebaut, die mittels CSS im Fenster eingemittet wird. Ich benutze den Autoparser, um die TD's und DIV's in Subparts zu verwandeln.

Das Problem, dass das Menü nicht auf meine eingemittete Tabelle ausgerichtet wurde, war, dass die mittels PHP erzeugten DIVs vom Menü nicht in den richtigen Container zu liegen kamen und deshalb die linke obere Fenster-Ecke als Bezugspunkt hatten.

Hier mal ein Schnippel meines HTML-Templates:

<table id="lay_main" cellspacing="0" cellpadding="0" border="0">
	<tr>
		<td id="lay_links"><img src="media/clear.gif" width="20"></td>
		<td id="lay_mitte">
			<div id="menu1_container">Hier wird das Menu eingefuegt</div>
         ###menuskript###
		</td>
		<td id="lay_rechts"><img src="media/clear.gif" width="20"></td>
	</tr>
</table>

Der Marker ###menuskript### ist es nun, wo mein Skript hinkommen soll. Mit folgenden Zeilen im Setup passiert genau das:

  # append Menu JS to page
  temp.user_menu_inside = USER
  temp.user_menu_inside.userFunc = user_menu->menuEnd

und folglich:

#das Menüskript einbinden:
  marks.menuskript < temp.user_menu_inside

Das funktioniert so mit den "normalen" Skripten, also nicht jenem für eingemittete Menüs.

Ich hoffe, dass ich helfen konnte. Ist vielleicht etwas "freestyle", aber es funktioniert!

So bald ich den ersten Entwurf der Seite auf meinen Server hochgeladen habe, poste ich gerne den Link.

Liebergruss Pascal

rouven ·

Ich bekomme leider immernoch die Font Fehlermeldung, obwohl der font erreichbar ist.

Folgendes steht im apache error-log:

(32)Broken pipe: client stopped connection before rwrite completed

Irgendjemand eine Idee?

Liberation ·

Habe alles so eingebunden wie es soll.
bekomme diese felhermeldung:

Fatal error: Call to undefined function: imagegif() in C:apachehtdocs 3libclass.t3lib_stdgraphic.php on line 2594

woran kann das liegen?

Gruß

Unbekannter Benutzer ·

@Liberation: Das bedeutet, dass du eine PHP-Version benutzt, bei der in der GD-Bibliothek die GIF-Funktionalität aus lizenzrechtlichen Gründen deaktiviert wurde.

Einfach auf die neueste PHP-Version aktualsisieren, dann sollte es klappen. Oder eben anstatt imagegif() die Funktionen imagejpeg() oder imagepng() nutzen.

Liberation ·

Habe das Menu in der Seite drin🙂

Allerdings muss das Menu in deiner Tabelle eingemittelt sein.

Wie bekomme ich das hin?

Mit der Anleitung oben bin ich nicht ganz klar gekommen.

<td id="lay_mitte"> welche css Eigenschaft hast du hier für verwendet?