Some Notes on Developing With Bitweaver
This is very rough information about what I have learned while developing the GmapPackage
Created by: Will, Last modification: 01 May 2009 (21:15 UTC) by Daniel Sutcliffe
Some General Useful Stuff
Bitweaver Stuff
- Bitweaver Coding Guidelines
- Bitweaver Class Tree
- List of BW tables and structures
- Built-in Database Query functions available from bw kernel
Programming Stuff
- PrototypeDocumentation
- DataDict
- Javascript and Navigating the Dom Tree
- Using Javascript with Smarty.
- DB JOIN FAQ on Wikipedia
- Code Paste Board
- Creating Indeces for your database tables as declaired in schema_inc.php
- Modifying Smarty for Debugging HTML
- Guide to HTML Forms
- Opera 9 beta
- Opera Tools for Web Dev
- Another Opera tool bar and more
- A good list of Javascript Libraries
- Smarty Register Function Documentation - easy steps for making custom functions that you can then call from your smarty templates.
How to set up your own custom package
The easiest way to learn how to set up your own package is to start with the SamplePackage, which you can download or checkout from cvs. It has examples of most things described below.
Setting up your database tables
Database (DB) Tables are defined in schema_inc.php This file goes in your admin folder. Each package has one of these.
Some conventions to follow when building tables:
- use single quotes on DB table scheme defaults
- underscore between each word in table names, e.g. bit_gmaps
Setting up Smarty templates
Including tpl files in the html HEAD
The bitweaver Kernel is set up to automatically include header information from all packages. Any information you want included in the HTML HEAD you put in a file named header_inc.tpl which goes in your package's templates folder.To create conditional header includes simply nest tpl files in the header_inc.php file. You can do this by using the this include code:
<?php
{ include file="bitpackage:yourpackagename/subheader.tpl"}
?>
Setting Up Package Permissions
- Default permissions are set in your schema_inc.php file
- Permissions can only be 30 characters long
Creating Package Dropdown and SidePanel Menus
Each package has template file for its menus. You need to explicitly declair what you want in a menu in your own template file. For an example see the wiki package menu_wiki.tpl which you can find at: /wiki/templates/menu_wiki.tpl
Creating Package Preferences
Preferences are automatically created the first time you submit a value for one. This means that a preference can be created for the first time by simply submiting one via a form on the admin_sample.tpl. For more advanced preferences examples look at admin_wiki.tpl or admin_articles.tpl.
If you want to set default 'y' values for your package preferences during install, you declare these in the schema_inc.php file in admin. You do not need to set a preference for any that you would give a 'n' value to.
The admin preferences panel is displayed via /admin/admin_sample_inc.php usng the template /templates/admin_sample.tpl
Any prefereces set can be checked with isFeatureActive()
The admin menu is shown via templates/menu_sample_admin.tpl
Interface ( HTML ) Development
Add Animated Warnings
This explination is not perfect, and needs reworking. But it is close.The animated warnings you sometimes see when you tell bitweaver to do something stupid can be easily added to any page. The necessary javascript is usually added to all bitweaver pages. It comes from the file: util/javascript/libs/fat.js
To add an alert div you can call kernel/smarty_bit/function.formfeedback.php or just include a div something like this:
<?php
<div class="clear formfeedback"><ul><li id="fat4046" class="fade-000000 warning"><img src="/bw/liberty/icons/warning.png" alt="warning" title="warning" class="icon" /> This is a Warning.</li></ul></div>
?>
Using Wiki Syntax and Parsing for HTML
Enabling Syntax support in your package is easy as is parsing it for HTML display. Nothing special needs to be done to use a particular syntax, you just insert it into your database table as is. When you want to display it in a HTML page, you parse the data using a built in parser. In your load() function you include this line:
<?php
$this->mInfo['parsed_data'] = $this->parseData( $this->mInfo['data'], $this->mInfo['format_guid'] );
?>
the first value is the raw data, and the second value is the syntax type. The site's defualt, as set in admin->liberty is used if none is specified for the individual object. Each object can have a specific syntax specified for it. Take a look at the Sample Package, and also look at the Wiki Editing html page and note the syntax options. You can find all parsers included with Bitweaver in liberty/plugins/; look for files like format.*.php
Browser Detection
Bitweaver includes built in browser detection. Browser information is available in smarty templates via:
{$browserInfo}
Browser type is reported in:
{$browserInfo.browser}
Other properties that are avialable are:
- .ua
- .version
- .maj_ver
- .min_ver
- .letter_ver
- .javascript
- .platform
- .os
- .ip
- .cookies
- .ss_cookies
- .st_cookies
- .language
- .long_name
General Bitweaver Information
Some things about security
Use of "tk" value
- tk in forms is generated in kernel/BitSmarty.php add_link_ticket();
- the current tk value should be in $gBitUser->mTicket
Troublshooting Your Bitweaver Install
Admin Locked Out
Try deleting your bowser cache and cookies for the site. Also try deleting from the database using the following:
DELETE FROM `tiki_preferences` WHERE name ='cookie_domain';
If those don't work, then try resetting the admin password to 'foobar' using this query:
UPDATE users_users SET hash = md5( 'foobar' ) WHERE login = 'admin';