Here's the start - I haven't integrated into CPG yetWe had also done some thing similar BUT gave up becuase if the number of galleries are more than what you can fit in the screen hieght then it does not work - also it is a pain to work with the positioning of the phpLayersMenu....
http://www.photo-junky.com/gallery/hor_menu.php
<?php
// ------------------------------------------------------------------------- //
// Coppermine Photo Gallery - Tree Menu //
// ------------------------------------------------------------------------- //
// Based on Browser Sidebar, which is //
// Copyright (C) Dr. Tarique Sani //
// http://tariquesani.net/ //
// --------------------------------------- --------------------------------- //
// This program 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. //
// ------------------------------------------------------------------------- //
// Just put into the same directory as your coppermine installation //
// ------------------------------------------------------------------------- //
if (!defined('IN_COPPERMINE')) {
define('IN_COPPERMINE', true);
}
require_once('include/init.inc.php');
global $CONFIG; //NEW
if (isset($HTTP_COOKIE_VARS[$CONFIG['cookie_name'] . '_sidebar'])) {
$sidePrefs = @unserialize(@base64_decode($HTTP_COOKIE_VARS[$CONFIG['cookie_name'] . '_sidebar']));
//Read prefs from cookie
$theme = $sidePrefs['theme'];
$thumb_count = $sidePrefs['thumbs'];
$thumb_per_page = $sidePrefs['thumbs'];
}else{
$theme = "kde";
$thumb_count = 1;
$thumb_per_page = 1;
}
//Change these variables to reflect your choices if you don't want lastup
$album = 'lastup';
$album_name = "";
$lower_limit = 0;
$link_url = "displayimage.php?album=lastup&cat=0&pos=";
$image_url = "albums/";
get_private_album_set();
$data = get_pic_data($album, $thumb_count, $album_name, $lower_limit, $thumb_per_page);
require_once("hor_menu_funcs.php");
//$startTime = microtime();
//Start building the string needed for php Tree Menu
//$catStr = ".|".$CONFIG['gallery_name']."|index.php\n";
//if (empty($_COOKIE["tree_menu"])) {
$catStr = ".|Home|index.php\n";
if (!empty($_SERVER['QUERY_STRING'])) {
$catStr = get_tree_subcat_data(0,".");
} else {
$catStr = get_tree_subcat_data(0,".");
}
//$_COOKIE["tree_menu"] = gzcompress($catStr);
// setcookie("tree_menu",$catStr,time() + 600,"/",".photo-junky.com");
//} else {
// $catStr = gzuncompress($_COOKIE["tree_menu"]);
//}
//$endTime = microtime();
// benchmark timing
//print timediff($startTime,$endTime);
//starttable("100%", "Site Tree");
/* TO USE RELATIVE PATHS: */
$myDirPath = 'phplayersmenu/';
$myWwwPath = 'phplayersmenu/';
/* TO USE ABSOLUTE PATHS: */
//$myDirPath = '/home/pratesi/public_html/phplayersmenu/';
//$myWwwPath = '/~pratesi/phplayersmenu/';
?>
<tr>
<td class="tableb" >
<?php
/* TO USE RELATIVE PATHS: */
$myDirPath = 'phplayersmenu/';
$myWwwPath = './phplayersmenu/';
/* TO USE ABSOLUTE PATHS: */
//$myDirPath = '/home/pratesi/public_html/phplayersmenu/';
//$myWwwPath = '/~pratesi/phplayersmenu/';
?>
<link rel="stylesheet" href="<?php print $myWwwPath; ?>layersmenu-demo.css" type="text/css"></link>
<link rel="stylesheet" href="<?php print $myWwwPath; ?>layersmenu-gtk2.css" type="text/css"></link>
<link rel="shortcut icon" href="<?php print $myWwwPath; ?>LOGOS/shortcut_icon_phplm.png"></link>
<script language="JavaScript" type="text/javascript">
<!--
<?php require_once $myDirPath . 'libjs/layersmenu-browser_detection.js'; ?>
// -->
</script>
<script language="JavaScript" type="text/javascript" src="<?php print $myWwwPath; ?>libjs/layersmenu-library.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php print $myWwwPath; ?>libjs/layersmenu.js"></script>
<?php
require_once $myDirPath . 'lib/PHPLIB.php';
require_once $myDirPath . 'lib/layersmenu-common.inc.php';
require_once $myDirPath . 'lib/layersmenu.inc.php';
//$mid = new LayersMenu(6, 7, 2, 5, 140);
//$mid = new LayersMenu(6, 7, 2, 1); // Gtk2-like
//$mid = new LayersMenu(3, 8, 1, 1); // Keramik-like
$mid = new LayersMenu(3, 9, 2, 1); // Galaxy-like
//$mid = new LayersMenu(-12, 10, 6, 5); // "Traditional" PHPLM look
/* TO USE RELATIVE PATHS: */
$mid->setDirroot('./phplayersmenu/');
$mid->setLibjsdir('./phplayersmenu/libjs/');
$mid->setImgdir('./phplayersmenu/menuimages/');
$mid->setImgwww('./phplayersmenu/menuimages/');
$mid->setIcondir('./phplayersmenu/menuicons/');
$mid->setIconwww('./phplayersmenu/menuicons/');
/* either: */
$mid->setTpldir('./templates/');
$mid->setHorizontalMenuTpl('layersmenu-horizontal_menu.ihtml');
$mid->setSubMenuTpl('layersmenu-sub_menu.ihtml');
/* or: (disregarding the tpldir) */
//$mid->setHorizontalMenuTpl('templates/layersmenu-horizontal_menu.ihtml');
//$mid->setSubMenuTpl('templates/layersmenu-sub_menu.ihtml');
/* TO USE ABSOLUTE PATHS: */
//$mid->setDirroot($myDirPath);
////$mid->setLibjsdir($myDirPath . 'libjs/');
////$mid->setImgdir($myDirPath . 'menuimages/');
//$mid->setImgwww($myWwwPath . 'menuimages/');
////$mid->setIcondir($myDirPath . 'menuicons/');
//$mid->setIconwww($myWwwPath . 'menuicons/');
////$mid->setTpldir($myDirPath . 'templates/');
//$mid->setHorizontalMenuTpl('layersmenu-horizontal_menu.ihtml');
//$mid->setSubMenuTpl('layersmenu-sub_menu.ihtml');
////$mid->setHorizontalMenuTpl('layersmenu-horizontal_menu-old.ihtml');
////$mid->setSubMenuTpl('layersmenu-sub_menu-old.ihtml');
//$mid->setDownArrowImg('down-arrow.png');
//$mid->setForwardArrowImg('forward-arrow.png');
//$mid->setMenuStructureFile($myDirPath . 'layersmenu-horizontal-1.txt');
$mid->setMenuStructureString($catStr);
$mid->setIconsize(16, 16);
$mid->parseStructureForMenu('hormenu1');
$mid->newHorizontalMenu('hormenu1');
$mid->printHeader();
/* alternatively:
$header = $mid->getHeader();
print $header;
*/
?>
<?php
$mid->printMenu('hormenu1');
/* alternatively:
$hormenu1 = $mid->getMenu('hormenu1');
print $hormenu1;
*/
?>
<!--<div class="normalbox">
<div class="normal" align="center">
<b>A file-based example with a Horizontal Layers Menu</b>
<div style="height: 5px"></div>
<a href="http://phplayersmenu.sourceforge.net/"><img border="0"
src="<?php print $myWwwPath; ?>LOGOS/powered_by_phplm.png" alt="Powered by PHP Layers Menu"
height="31" width="88" /></a> <a
href="http://validator.w3.org/check/referer"><img border="0"
src="<?php print $myWwwPath; ?>images/valid-xhtml10.png" alt="Valid XHTML 1.0!"
height="31" width="88" /></a> <a
href="http://jigsaw.w3.org/css-validator/"><img border="0"
src="<?php print $myWwwPath; ?>images/vcss.png" alt="Valid CSS!" height="31" width="88" /></a>
</div>
</div>
<div class="normalbox">
<div class="normal">
<?php //require_once $myDirPath . 'README.ihtml'; ?>
</div>
</div>-->
<?php
$mid->printFooter();
/* alternatively:
$footer = $mid->getFooter();
print $footer;
*/
?>
</td>
</tr>
<?php
endtable();
<?php
function get_tree_subcat_data($parent, $ident = '') {
global $CONFIG, $catStr;
if ($parent == 0) {
get_tree_album_data($parent,$ident );
}
$sql = "SELECT cid, name, description " . "FROM {$CONFIG['TABLE_CATEGORIES']} " . "WHERE parent = '$parent' " . " ORDER BY pos";
$result = db_query($sql);
if (($cat_count = mysql_num_rows($result)) > 0) {
$rowset = db_fetch_rowset($result);
$pos = 0;
foreach ($rowset as $subcat) {
$catStr .= $ident."|".$subcat['name']."|index.php?cat=".$subcat['cid']." \n";
get_tree_album_data($subcat['cid'], $ident . '.');
get_tree_subcat_data($subcat['cid'], $ident . '.');
}
}
return $catStr;
}
function get_tree_album_data($category,$ident) {
global $catStr,$ALBUM_SET;
global $CONFIG, $HIDE_USER_CAT, $FORBIDDEN_SET,$cpg_show_private_album;
$album_filter='';
$pic_filter='';
if (!empty($FORBIDDEN_SET) && !$cpg_show_private_album) {
$album_filter = ' and '.str_replace('p.','a.',$FORBIDDEN_SET);
$pic_filter = ' and '.str_replace('p.',$CONFIG['TABLE_PICTURES'].'.',$FORBIDDEN_SET);
}
if ($category == 1) {
$sql = "SELECT DISTINCT user_id, user_fullname FROM {$CONFIG['TABLE_USERS']}, {$CONFIG['TABLE_ALBUMS']} WHERE 10000 + {$CONFIG['TABLE_USERS']}.user_id = {$CONFIG['TABLE_ALBUMS']}.category ORDER BY user_fullname ASC";
$result = db_query($sql);
if (($cat_count = mysql_num_rows($result)) > 0) {
$rowset = db_fetch_rowset($result);
foreach ($rowset as $subcat) {
$catStr .= $ident."|".$subcat['user_fullname']."|index.php?cat=". (FIRST_USER_CAT + (int) $subcat['user_id']) ."\n";
get_tree_album_data(FIRST_USER_CAT + (int) $subcat['user_id'],$ident . '.');
}
}
} else {
if ($category == USER_GAL_CAT) {
$sql = "SELECT aid,title FROM {$CONFIG['TABLE_ALBUMS']} WHERE category = $category ".$album_filter." ORDER BY pos";
} else {
$unaliased_album_filter = str_replace('a.','',$album_filter);
$sql = "SELECT aid,title FROM {$CONFIG['TABLE_ALBUMS']} WHERE category = $category " .$unaliased_album_filter ." ORDER BY pos";
}
$result = db_query($sql);
if (($cat_count = mysql_num_rows($result)) > 0) {
$rowset = db_fetch_rowset($result);
foreach ($rowset as $subcat) {
$catStr .= $ident."|".htmlentities($subcat['title'])."|thumbnails.php?album=".$subcat['aid']."\n";
}
}
}
}
?>
{HOR_MENU}
function theme_hor_menu() {
require_once("hor_menu.php");
}
'{MAIN_MENU}' => theme_main_menu(),
'{ADMIN_MENU}' => theme_admin_mode_menu(),
Add: '{HOR_MENU}' => theme_hor_menu(),