Saturday, December 17, 2005

 

Welcome to BananaPanel!

This is the homepage for the BananaPanel project hosted on SourceForge.

You can download this hot new Open Source CMS right here.

Read below to see some of the great features of this system.

 

Features

BananaPanel has many cutting-edge features not available in other CMS platforms. Here are a few of the important ones.

Full Web Service Implementation

BananaPanel was designed from the ground up as a web services-based application. What this means is that you can host the CMS and RPC server on your own servers, and your clients can place their website on their servers, and they can still connect to your server to pull down content, place orders via the online store, submit forms, etc. As you roll out new features to your BananaPanel CMS, these are available to all of your clients without the need to maintain separate versions of the CMS on their servers.

There is a simple and easy-to-add-on-to framework for adding functionality to the server, with all calls contained in a single php file.

Since the BananaPanel API uses XML-RPC for external communication, your clients can have their website coded in any language that has an XML-RPC client library. See XML-RPC.org for a list of these implementations.

Full-Featured Shopping Cart

BananaPanel has a very advanced shopping cart, with product type templates to add custom fields, options available at checkout (like shirt size and color), multiple product images, dynamically generated and hierarchical product categories, and other powerful features. It also has a basic credit card acceptance system and can be integrated (with some work) with third-party credit card processor systems.

Several Types of Dynamic Content

BananaPanel features 3 basic types of dynamic content: simple HTML blocks, "articles," and "events." The first category lets you specify a particular named block of content as editable, and your customers can update it in the CMS. The second is very dynamic; it can be used for articles, press releases, "best seller" lists,... anything really. You can turn fields on and off per article type, and tweak it to fit virtually any content scenario. "Events" are much like "articles," but they are presented as caledar events within the CMS.

Dynamically Created Forms
BananaPanel solves the "form problem" often faced by web developers. You simply create a table to hold the client's form data, then fill out the "go_forms" and "go_formfields" tables with the appropriate data, and give their user accounts access to the form un go_userforms." It can even handle select boxes and files. From then on you only need one function call to the server to create your form (complete with CSS formatting) and to place one file (FormBroker.php, available in the "demo.zip" file) on their server.

BananaPanel will add their form to their CMS pages and let them read all the data coming in, and will include the form data in the system-wide "Download Backup" CSV file.

Integrated Search Engine

Your BananaPanel content is fully searchable through our built-in search engine. Since it is just a web-service call that is translated into a regular language-specific container by your XML-RPC library, you can easily format the results to fit into your web design.

Simple Mailing List Manager

BananaPanel has a simple interface for creating mailing lists and collecting emails.

Other Notable Features

BananaPanel has several other features in various forms of completion.

There is a rudimentary CRM application so that businesses can manage their salespeople. Each contact and meeting with a potential customer can be tracked with notes. Multiple contacts per prospect company can be listed so that your client can get visibility into who their sales force is talking to.

There is a feature for dumping your client's entire database to a CSV file that they can open in Calc, Excel, or any other spreadsheet program. This gives them the ability to access their information on-demand from a familiar application, and with some tweaks to this function you could let them export other data as well.

The architecture of BananaPanel supports having a hierarchy of customers, so you could theoretically be a host and let other web developers bring their clients onto your server. This is hampered somewhat by the lack of admin tools (see Caveats below) but would still be possible with some work.

 

Caveats

BananaPanel is not without its issues. The biggest one is that it doesn't have an adequate (or existant) GUI for adding and modifying subscriber accounts. Many features can only be set up and tweaked by modifying the database directly. While this doesn't impact the end-user (client) experience at all, it does mean that developers wishing to use the program must know what they are doing. I have included a demo application to get you started, and the table names are all pretty self-explanitory.

Like many CMS systems developed by freelance developers, BananaPanel was built to work for the customers of my company (18th Street Software, LLC in Washington, DC), and has been performing admirably in that function for months now. The lack of a back-end GUI was never really an issue since it was never anticipated that anyone else would see the code. Oops.

At this point 18th Street is pursuing a different strategic direction, so rather than let BananaPanel go into maintanence mode I decided it would be best to open it up to other people to see if they can benefit from it. I'll try to document its quirks when I get a chance, and will gladly respond to questions posted on SourceForge.net.

Enjoy!

 

Installation

Installing BananaPanel is easy. Once you have fetched the 5 archives from Sourceforge (server.zip, cms.zip, demo.zip, demo_images.zip and sql.zip) you can begin following the directions below. We assume that you have already configured a web server with PHP scripting support and a MySQL database. If you have not done this, we recommend downloading an all-in-one installer like WAMP. Linux, UNIX, and Apple users can use the packages that come with their OSes to do this as well.

Note: It is important to set the REGISTER_GLOBALS command in your php.ini file to "on."

Procedure
  1. Connect to your MySQL database and run the SQL script contained in the sql.zip file. The default database name is "bananapanel" and should be changed in the SQL script if you would like something different.
  2. Create a new MySQL user that will be used by the CMS system. We assume one called "bananauser" with the password "bananapass" in the default installation, but if you care about security we highly recommend you change these. The user will only need to be able to connect from localhost, but if you debug remotely you can also add your IP address to the allowed list for that name.
  3. Create a directory within your web root to place the CMS. It is better to place it in its own directory rather than one with other files.
  4. Unzip the cms.zip file into that directory. At this point you will need to modify two files, "AdminLoginAction.php" and "includes/PageHeader.php" to make the database and hostnames match your configuration. If you've followed the defaults above you should be fine.
  5. Create a directory under your web root for the images and other uploaded files of your CMS users to go. Each user (subscriber) will have their own directory under this parent directory, and you must edit the "subscribers" table to include their unique path. It should be self explanitory from the demo account. This directory must be writable by the web server process.
  6. Create a directory for your server files to go. We suggest you use a subdomain, such as "http://rpc.yourdomain.com", but you can also just use any directory under your web root.
  7. Unzip the server.zip file into that folder.
  8. Open the index.php file in that folder. Near the top are assignments for $adminusername and $adminpassword in the ServerVars class. Change them to anything your would like, and it doesn't need to be the same as the database user information set up previously. Also, set up the database variables at the top of this page the same as you did for the two files in step 4. If you didn't change the defaults you should be fine.
  9. Create a directory under your web root to place your demo files. Due to BananaPanel's unique architecture you can place it anywhere you would like as long as it can access the web server your CMS system is running on. To keep it simple you can just put it on the same machine.
  10. Unzip demo.zip into this directory. Open "inc/cmsheader.php" and replace the $cmsservername variable with your server address listed in step 7. You must use the "http://" version, not the local dirctory.
  11. Unzip the demo_images.zip file into the directory created in step 5. Move the "circus5923" directory out of "userimages" and into the step 5 directory. You will need to go update the "subscribers" table and update it accordingly to indicate your new image path.
  12. If everything worked according to plan, you should be able to bring up the demo site in your web browser and see a charming music store. (It should look a lot like the one at demo.18thstretsoftware.com.) You should also be able to go to your CMS directory in another browser tab and go to AdminLogin.php and login using "demouser"/"demopass" (without the quotes).
You are now good to go! (hopefully)

 

License and Disclaimers

BananaPanel is licensed under the GPL. It makes use of some open-source libraries that may fall under different licenses, namely HTMLArea, FCKEditor, and Quixplorer. Those are included in the "cms.zip" file in the "include" folder and all edits to files in those directories are licensed under the right license for the parent project.

I have made a good faith effort to clean up the database and images prior to releasing this code; if I mistakingly included any copyrighted material in this release, please let me know and I will remove it immediately.

This page is powered by Blogger. Isn't yours?