Not sure if I've used the best title, but I'll do my best to explain what I'm trying to do.
I've updated the
gallery2 integration script so it works with vB4, but what I'm trying to do now, is to move some of the gallery2 links from the embedded area, into the submenu.
I've already added a new navtab using
ragteks guide, but I'm struggling to work out how to add the links from the gallery2 API (the links vary for each user) into the submenu.
As it stands, to view the gallery, you browse to gallery2.php, gallery2.php returns numerous sections of html, before loading the gallery2 template.
The html is accessed in the template using {vb:raw gallery2.xxx}.
Using Ragteks guide, I've created a gallery2_navbar template.
What I thought I could do, was to add the links I'd like to the gallery2 array, and then have gallery2_navbar display them. But, it doesn't work. I'm guessing this is to do with what variables templates can access, and how they're called/load.
Can anybody confirm/deny this, and/or point me in the right direction on how to achieve this?
I can provide the templates and gallery2.php file if needed (I would of posted them up now, but they're currently on a different computer)
--------------- Added [DATE]1270041604[/DATE] at [TIME]1270041604[/TIME] ---------------
Here's the code I've got so far.
The plug-in code I'm using for the gallery2 navtab
PHP Code:
if (THIS_SCRIPT == 'gallery2') // also defined('gallery2') possible
{
//set selected tab
$vbulletin->options['selectednavtab'] = 'gallery2';
}
// add the "subtemplate" to the navbartemplate
$template_hook['navtab_middle'] .= vB_Template::create('gallery2_navbar')->render();
The gallery2_navbar template
Code:
<vb:if condition="$vboptions['selectednavtab'] == 'gallery2'">
<li class="selected">
<a class="navtab" href="gallery2.php{vb:raw session.sessionurl_q}">Gallery</a>
<ul class="floatcontainer">
<li><a href="#">#</a></li>
<li><a href="gallery2.php">Sub menu options still to be added</a></li>
{vb:raw gallery2.links}
</ul>
</li>
<vb:else />
<li><div class="navoption"><a class="navtab" href="gallery2.php{vb:raw session.sessionurl_q}">Gallery</a></div></li>
</vb:if>
gallery2.php
PHP Code:
<?php
// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & E_NOTICE);
// #################### DEFINE IMPORTANT CONSTANTS #######################
//define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'gallery2'); // change this depending on your filename
define('CSRF_PROTECTION', false);
// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(
);
// get special data templates from the datastore
$specialtemplates = array(
);
// pre-cache templates used by all actions
$globaltemplates = array(
'gallery2',
);
// pre-cache templates used by specific actions
$actiontemplates = array(
);
// ######################### REQUIRE BACK-END ############################
require_once('./global.php');
// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################
$navbits = array();
$navbits[$parent] = 'Gallery';
$navbits = construct_navbits($navbits);
$navbar = render_navbar_template($navbits);
// #######################################################################
// ###################### Begin G2 INTEGRATION CODE ######################
// #######################################################################
$data = runGallery();
$data['title'] = (isset($data['title']) && !empty($data['title'])) ? $data['title'] : 'Gallery';
function runGallery() {
global $vbulletin, $userinfo;
require_once('/var/www/html/test/gallery2/embed.php');
$data = array();
// If it's an anonymous user, set the g2 activeUser to null
$uid = $vbulletin->userinfo['userid'] = 0 ? '' : $vbulletin->userinfo['userid'];
// initiate G2
// You need to edit the following 4 lines to suit your VB3 & G2 installations
// This is set up for an install that looks like:
// public_html/VB/<vb files>
// public_html/gallery2/<gallery2 files>
// and also setup for a VB3 template name of 'gallery2'. If you have any
// differences, make those changes here!
// You might need to change 'loginRedirect' if you have your VB3 setup to
// where index.php is not the root page of VB3... Like if you've changed it
// to forums.php or something of the like.
$ret = GalleryEmbed::init(array('embedUri' => 'http://www.mtbrider.com/test/gallery2.php',
'g2Uri' => '/test/gallery2/',
'loginRedirect' => 'index.php',
'activeUserId' => $uid));
if ($ret)
{
if ($ret->getErrorCode() & ERROR_MISSING_OBJECT)
{
// Check if there's no G2 user mapped to the activeUserId
$ret = GalleryEmbed::isExternalIdMapped($uid, 'GalleryUser');
if ($ret && ($ret->getErrorCode() & ERROR_MISSING_OBJECT))
{
// User not mapped, create G2 user now
// Get Arguments for the new user:
$args['fullname'] = $vbulletin->userinfo['username'];
$args['username'] = $vbulletin->userinfo['username'];
$args['hashedpassword'] = $vbulletin->userinfo['password'];
$args['hashmethod'] = 'md5';
$args['email'] = $vbulletin->userinfo['email'];
$args['language'] = $vbulletin->userinfo['lang_code'];
$args['creationtimestamp'] = $vbulletin->userinfo['joindate'];
$retcreate = GalleryEmbed :: createUser($uid, $args);
if ($retcreate)
{
echo '<HR>line: '.__LINE__.', Failed to create G2 user with extId ['.$uid.']. Here is the error message from G2: <br />'.$retcreate->getAsHtml();
return false;
}
$ret = GalleryEmbed::checkActiveUser($uid);
if ($ret) {
print $ret->getAsHtml();
return false;
}
}
else
{
echo '<HR>line: '.__LINE__.', G2 did not return a success status. Here is the error message from G2: <br />'.$ret->getAsHtml();
return false;
}
}
else
{
echo '<HR>line: '.__LINE__.', G2 did not return a success status. Here is the error message from G2: <br />'.$ret->getAsHtml();
return false;
}
}
// user interface: disable sidebar in G2 and get it as separate HTML to put it into a block
//GalleryCapabilities::set('showSidebar', false);
// handle the G2 request
$g2moddata = GalleryEmbed::handleRequest();
// show error message if isDone is not defined
if (!isset($g2moddata['isDone'])) {
$data['bodyHtml'] = 'isDone is not defined, something very bad must have happened.';
return $data;
}
// die if it was a binary data (image) request
if ($g2moddata['isDone']) {
exit; /* uploads module does this too */
}
// put the body html from G2 into the xaraya template
$data['bodyHtml'] = isset($g2moddata['bodyHtml']) ? $g2moddata['bodyHtml'] : '';
// get the page title, javascript and css links from the <head> html from G2
$title = ''; $javascript = array(); $css = array();
if (isset($g2moddata['headHtml'])) {
list($data['title'], $css, $javascript) = GalleryEmbed::parseHead($g2moddata['headHtml']);
$data['headHtml'] = $g2moddata['headHtml'];
}
/* Add G2 javascript */
if (!empty($javascript)) {
foreach ($javascript as $script) {
$data['javascript'] .= "\n".$script;
}
}
/* Add G2 css */
if (!empty($css)) {
foreach ($css as $style) {
$data['css'] .= "\n".$style;
}
}
// sidebar block
if (isset($g2moddata['sidebarHtml']) && !empty($g2moddata['sidebarHtml'])) {
$data['sidebarHtml'] = $g2moddata['sidebarHtml'];
}
// Navigation sub-menu links
$data['links'] = '<li><a href="gallery2.php">Test</a></li>';
return $data;
}
// #######################################################################
// ####################### End G2 integration code #######################
// #######################################################################
//eval('print_output("' . fetch_template('gallery2') . '");');
$templater = vB_Template::create('gallery2');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('gallery2', $data);
print_output($templater->render());
?>
The gallery2 template
Code:
{vb:stylevar htmldoctype}
<html xmlns="http://www.w3.org/1999/xhtml" dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}">
<head>
{vb:raw headinclude}
{vb:raw gallery2.headHtml}
<title>{vb:raw vboptions.bbtitle} - Gallery</title>
</head>
<body>
{vb:raw header}
{vb:raw navbar}
{vb:raw gallery2.bodyHtml}
{vb:raw footer}
</body>
</html>