Jump to content

help changing image when parent expands


sandbudd

Recommended Posts

When the parent link is click I need the image to switch to point down on the top level.  You can see an example here and thanks in advance.  The left menu.

 

http://98.131.103.184/index.php?option=com_content&task=category&sectionid=1&id=3&Itemid=7

 

 

 

<?php


/** ensure this file is being included by a parent file */
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );

if (!defined( '_MOS_MAINMENU_MODULE' )) {
/** ensure that functions are declared only once */
define( '_MOS_MAINMENU_MODULE', 1 );

/**
* Utility function for writing a menu link
*/
function mosGetMenuLink( $mitem, $level=0, &$params ) {
	global $Itemid, $mosConfig_live_site, $mainframe;
	$txt = '';

	switch ($mitem->type) {
		case 'separator':
		case 'component_item_link':
		break;
		case 'content_item_link':
		$temp = split("&task=view&id=", $mitem->link);
		$mitem->link .= '&Itemid='. $mainframe->getItemid($temp[1]);
		break;
		case 'url':
		if ( eregi( 'index.php\?', $mitem->link ) ) {
			if ( !eregi( 'Itemid=', $mitem->link ) ) {
				$mitem->link .= '&Itemid='. $mitem->id;
			}
		}
		break;
		case 'content_typed':
		default:
		$mitem->link .= '&Itemid='. $mitem->id;
		break;
	}

	// Active Menu highlighting
	$current_itemid = $Itemid;
	if ( !$current_itemid ) {
		$id = '';
	} else if ( $current_itemid == $mitem->id ) {
		$id = 'id="active_menu'. $params->get( 'class_sfx' ) .'"';
	} else {
		$id = '';
	}

	$mitem->link = ampReplace( $mitem->link );

	if ( strcasecmp( substr( $mitem->link,0,4 ), 'http' ) ) {
		$mitem->link = sefRelToAbs( $mitem->link );
	}

	$menuclass = 'mainlevel'. $params->get( 'class_sfx' );
	if ($level > 0) {
		$menuclass = 'sublevel'. $params->get( 'class_sfx');
	}

	switch ($mitem->browserNav) {
		// cases are slightly different
		case 1:
		// open in a new window
		$txt = '<a href="'. $mitem->link .'" target="_blank" class="'. $menuclass .'" '. $id .'>'. $mitem->name .'</a>';
		break;

		case 2:
		// open in a popup window
		$txt = "<a href=\"#\" onclick=\"javascript: window.open('". $mitem->link ."', '', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550'); return false\" class=\"$menuclass\" ". $id .">". $mitem->name ."</a>\n";
		break;

		case 3:
		// don't link it
		$txt = '<span class="'. $menuclass .'" '. $id .'>'. $mitem->name .'</span>';
		break;

		default:	// formerly case 2
		// open in parent window
		$txt = '<a href="'. $mitem->link .'" class="'. $menuclass .'" '. $id .'>'. $mitem->name .'</a>';
		break;
	}

	if ( $params->get( 'menu_images' ) ) {
		$menu_params = new stdClass();
		$menu_params =& new mosParameters( $mitem->params );
		$menu_image = $menu_params->def( 'menu_image', -1 );
		if ( ( $menu_image <> '-1' ) && $menu_image ) {
			$image = '<img src="'. $mosConfig_live_site .'/images/stories/'. $menu_image .'" border="0" alt="'. $mitem->name .'"/>';
			if ( $params->get( 'menu_images_align' ) ) {
				$txt = $txt .' '. $image;
			} else {
				$txt = $image .' '. $txt;
			}
		}
	}

	return $txt;
}

/**
* Vertically Indented Menu
*/
function mosShowVIMenu(  &$params ) {
	global $database, $my, $cur_template, $Itemid;
	global $mosConfig_absolute_path, $mosConfig_live_site, $mosConfig_shownoauth;

	/* If a user has signed in, get their user type */
	$intUserType = 0;
	if($my->gid){
		switch ($my->usertype) {
			case 'Super Administrator':
			$intUserType = 0;
			break;
			case 'Administrator':
			$intUserType = 1;
			break;
			case 'Editor':
			$intUserType = 2;
			break;
			case 'Registered':
			$intUserType = 3;
			break;
			case 'Author':
			$intUserType = 4;
			break;
			case 'Publisher':
			$intUserType = 5;
			break;
			case 'Manager':
			$intUserType = 6;
			break;
		}
	} else {
		/* user isn't logged in so make their usertype 0 */
		$intUserType = 0;
	}

	if ($mosConfig_shownoauth) {
		$sql = "SELECT m.* FROM #__menu AS m"
		. "\nWHERE menutype='". $params->get( 'menutype' ) ."' AND published='1'"
		. "\nORDER BY parent,ordering";
	} else {
		$sql = "SELECT m.* FROM #__menu AS m"
		. "\nWHERE menutype='". $params->get( 'menutype' ) ."' AND published='1' AND access <= '$my->gid'"
		. "\nORDER BY parent,ordering";
	}
	$database->setQuery( $sql );
	$rows = $database->loadObjectList( 'id' );

	// indent icons
	switch ( $params->get( 'indent_image' ) ) {
		case '1':
		// Default images
		$imgpath = $mosConfig_live_site .'/images/M_images';
		for ( $i = 1; $i < 7; $i++ ) {
			$img[$i] = '<img src="'. $imgpath .'/indent'. $i .'.png" alt="" />';
		}
		break;
		case '2':
		// Use Params
		$imgpath = $mosConfig_live_site .'/images/M_images';
		for ( $i = 1; $i < 7; $i++ ) {
			if ( $params->get( 'indent_image'. $i ) == '-1' ) {
				$img[$i] = NULL;
			} else {
				$img[$i] = '<img src="'. $imgpath .'/'. $params->get( 'indent_image'. $i ) .'" alt="" />';
			}
		}
		break;
		case '3':
		// None
		for ( $i = 1; $i < 7; $i++ ) {
			$img[$i] = NULL;
		}
		break;
		default:
		// Template
		$imgpath = $mosConfig_live_site .'/templates/'. $cur_template .'/images';
		for ( $i = 1; $i < 7; $i++ ) {
			$img[$i] = '<img src="'. $imgpath .'/indent'. $i .'.png" alt="" />';
		}
		break;
	}

	$indents = array(
	// block prefix / item prefix / item suffix / block suffix
	array( '<table width="100%" border="0" cellpadding="0" cellspacing="0">', '<tr align="left"><td>' , '</td></tr>', '</table>' ),
	array( '', '<div style="padding-left: 4px">'. $img[1] , '</div>', '' ),
	array( '', '<div style="padding-left: 8px">'. $img[2] , '</div>', '' ),
	array( '', '<div style="padding-left: 12px">'. $img[3] , '</div>', '' ),
	array( '', '<div style="padding-left: 16px">'. $img[4] , '</div>', '' ),
	array( '', '<div style="padding-left: 20px">'. $img[5] , '</div>', '' ),
	array( '', '<div style="padding-left: 24px">'. $img[6] , '</div>', '' ),
	);

	// establish the hierarchy of the menu
	$children = array();
	// first pass - collect children
	foreach ($rows as $v ) {
		$pt = $v->parent;
		$list = @$children[$pt] ? $children[$pt] : array();
		array_push( $list, $v );
		$children[$pt] = $list;
	}

	// second pass - collect 'open' menus
	$open = array( $Itemid );
	$count = 20; // maximum levels - to prevent runaway loop
	$id = $Itemid;
	while (--$count) {
		if (isset($rows[$id]) && $rows[$id]->parent > 0) {
			$id = $rows[$id]->parent;
			$open[] = $id;
		} else {
			break;
		}
	}
	mosRecurseVIMenu( 0, 0, $children, $open, $indents, $params );

}

/**
* Utility function to recursively work through a vertically indented
* hierarchial menu
*/
function mosRecurseVIMenu( $id, $level, &$children, &$open, &$indents, &$params ) {
	global $Itemid;
	if (@$children[$id]) {
		$n = min( $level, count( $indents )-1 );

		echo "\n".$indents[$n][0];
		foreach ($children[$id] as $row) {

			echo "\n".$indents[$n][1];

			echo mosGetMenuLink( $row, $level, $params );

			// show menu with menu expanded - submenus visible
			if ( !$params->get( 'expand_menu' ) ) {
				if ( in_array( $row->id, $open )) {
					mosRecurseVIMenu( $row->id, $level+1, $children, $open, $indents, $params );
				}
			} else {
				mosRecurseVIMenu( $row->id, $level+1, $children, $open, $indents, $params );
			}
			echo $indents[$n][2];
		}
		echo "\n".$indents[$n][3];
	}
}

/**
* Draws a horizontal 'flat' style menu (very simple case)
*/
function mosShowHFMenu(  &$params, $style=0 ) {
	global $database, $my, $cur_template, $Itemid;
	global $mosConfig_absolute_path, $mosConfig_shownoauth;

	if ($mosConfig_shownoauth) {
		$sql = "SELECT m.* FROM #__menu AS m"
		. "\nWHERE menutype='". $params->get( 'menutype' ) ."' AND published='1' AND parent='0'"
		. "\nORDER BY ordering";
	} else {
		$sql = "SELECT m.* FROM #__menu AS m"
		. "\nWHERE menutype='". $params->get( 'menutype' ) ."' AND published='1' AND access <= '$my->gid' AND parent='0'"
		. "\nORDER BY ordering";
	}
	$database->setQuery( $sql );

	$rows = $database->loadObjectList( 'id' );

	$links = array();
	foreach ($rows as $row) {
		$links[] = mosGetMenuLink( $row, 0, $params );
	}

	$menuclass = 'mainlevel'. $params->get( 'class_sfx' );
	if (count( $links )) {
		switch ($style) {
			case 1:
			echo '<ul id="'. $menuclass .'">';
			foreach ($links as $link) {
				echo '<li>' . $link . '</li>';
			}
			echo '</ul>';
			break;
			default:
			echo '<table width="100%" border="0" cellpadding="0" cellspacing="1">';
			echo '<tr>';
			echo '<td nowrap="nowrap">';
			echo '<span class="'. $menuclass .'"> '. $params->get( 'end_spacer' ) .' </span>';
			echo implode( '<span class="'. $menuclass .'"> '. $params->get( 'spacer' ) .' </span>', $links );
			echo '<span class="'. $menuclass .'"> '. $params->get( 'end_spacer' ) .' </span>';
			echo '</td></tr>';
			echo '</table>';
			break;
		}
	}
}
}
$params->def( 'menutype', 'mainmenu' );
$params->def( 'class_sfx', '' );
$params->def( 'menu_images', 0 );
$params->def( 'menu_images_align', 0 );
$params->def( 'expand_menu', 0 );
$params->def( 'indent_image', 0 );
$params->def( 'indent_image1', 'indent1.png' );
$params->def( 'indent_image2', 'indent2.png' );
$params->def( 'indent_image3', 'indent3.png' );
$params->def( 'indent_image4', 'indent4.png' );
$params->def( 'indent_image5', 'indent5.png' );
$params->def( 'indent_image6', 'indent.png' );
$params->def( 'spacer', '' );
$params->def( 'end_spacer', '' );

$menu_style = $params->get( 'menu_style', 'vert_indent' );

switch ( $menu_style ) {
case 'list_flat':
mosShowHFMenu( $params, 1 );
break;

case 'horiz_flat':
mosShowHFMenu( $params, 0 );
break;

default:
mosShowVIMenu( $params );
break;
}
?>

 

Link to comment
https://forums.phpfreaks.com/topic/174819-help-changing-image-when-parent-expands/
Share on other sites

I think is somewhere in here but not sure?

 

// indent icons

switch ( $params->get( 'indent_image' ) ) {

case '1':

// Default images

$imgpath = $mosConfig_live_site .'/images/M_images';

for ( $i = 1; $i < 7; $i++ ) {

$img[$i] = '<img src="'. $imgpath .'/indent'. $i .'.png" alt="" />';

}

break;

case '2':

// Use Params

$imgpath = $mosConfig_live_site .'/images/M_images';

for ( $i = 1; $i < 7; $i++ ) {

if ( $params->get( 'indent_image'. $i ) == '-1' ) {

$img[$i] = NULL;

} else {

$img[$i] = '<img src="'. $imgpath .'/'. $params->get( 'indent_image'. $i ) .'" alt="" />';

}

}

break;

case '3':

// None

for ( $i = 1; $i < 7; $i++ ) {

$img[$i] = NULL;

}

break;

default:

// Template

$imgpath = $mosConfig_live_site .'/templates/'. $cur_template .'/images';

for ( $i = 1; $i < 7; $i++ ) {

$img[$i] = '<img src="'. $imgpath .'/indent'. $i .'.png" alt="" />';

}

break;

}

 

$indents = array(

// block prefix / item prefix / item suffix / block suffix

array( '<table width="100%" border="0" cellpadding="0" cellspacing="0">', '<tr align="left"><td>' , '</td></tr>', '</table>' ),

array( '', '<div style="padding-left: 4px">'. $img[1] , '</div>', '' ),

array( '', '<div style="padding-left: 8px">'. $img[2] , '</div>', '' ),

array( '', '<div style="padding-left: 12px">'. $img[3] , '</div>', '' ),

array( '', '<div style="padding-left: 16px">'. $img[4] , '</div>', '' ),

array( '', '<div style="padding-left: 20px">'. $img[5] , '</div>', '' ),

array( '', '<div style="padding-left: 24px">'. $img[6] , '</div>', '' ),

);

 

// establish the hierarchy of the menu

$children = array();

// first pass - collect children

foreach ($rows as $v ) {

$pt = $v->parent;

$list = @$children[$pt] ? $children[$pt] : array();

array_push( $list, $v );

$children[$pt] = $list;

}

 

// second pass - collect 'open' menus

$open = array( $Itemid );

$count = 20; // maximum levels - to prevent runaway loop

$id = $Itemid;

while (--$count) {

if (isset($rows[$id]) && $rows[$id]->parent > 0) {

$id = $rows[$id]->parent;

$open[] = $id;

} else {

break;

}

}

mosRecurseVIMenu( 0, 0, $children, $open, $indents, $params );

 

}

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.