Here Zoop community member Jeremy will be walking us through how he integrated Zoop and Drupal. This tutorial will be created Wiki style in hopes that others will aid / update.
Objective
The purpose of this tutorial is to show you how to add a Zoop (1.3) application or page to Drupal 5 as a content page. These techniques will probably work in Drupal 4 but the function names are different. Additionally, I will explain how to integrate session management from Drupal into Zoop. The latter opens up the entire scope of user/session/subscription management modules to your Zoop app. ..Yes, you read that correctly. **I have not tested any of this with Zoop 1.5**
Nothing is written in stone reagarding what to include and what to exclude. I have no HTML in my pages other then a single div with an id attribute since my Zoop app is 100% Ajax.
<div id="myContentDiv"></div>
The myapp.js file contains this along with the entire application.
embed = MyApp;
window.onload=function(){
if(embed){
loadEmbed('Embed' + embed,'myContentDiv','myZone');
}else{
alert('Error: No content specified for loading');
}
}
loadEmbed = function(what,where,zone){
var url='/skeleton/index.php/' + zone + '/' + what;
new Ajax.Updater(where,url,{method: 'get', onComplete: function(transport){initApp();}
});
}This js loads the content returned from /skeleton/index.php/myZone/EmbedMyApp/ in to myContentDiv and onComplete it runs initApp(). initApp() just sets some defaults on the page.
Before I start, know that I've been using this scenario on a large application for going on 9 months with absolutely no ill effects.
...Your mileage may vary and I may have left something out unintentionally (Though I'm pretty sure I didn't).
Are you ready?
Go get something to eat and a pot of coffee, this could take days! ;-)
function init() { require_once 'your_drupal_bootstrap_path'; drupal_bootstrap(DRUPAL_SESSION_DATA_ONLY); }
Assuming everything was done correctly with the bootstrap integration above you're ready to use drupal and zoop together.
Here's a way to have your Zoop app depend on Drupal for permissions,user management, sessions, etc.
$user = $GLOBALS['user']; //This is one of the globals that Drupal creates. //print_r($user); // Do this to see what you have access to. if($user->uid > '1'){ if( $user->roles[4] == 'Premium Subscriber' || $user->roles[6] == 'Some Role'){ define_paying_subscriber_globals(); // A function that does stuff for these people. }else{ // Unauthenticated user - must login via drupal print "The Section is for paying subscribers only.<br/>"; exit; } }else if($user->uid == '0'){ print "You are not logged in.<br/>"; exit; }
Now you can build your site using all the user and group management possibilities of Drupal and use zoop to build the core application. In my case, I use premium content and roles in Drupal to control what parts of the application my users can access. There is no need to limit yourself to the initZone function. You can access the drupal globals from anywhere you want.
gotchas with Drupal:
Go create something,
Jeremy Brooks