History of Tutorial_Custom_Package
Version 21
Introduction
This is a BASIC tutorial that will show you how to make a quick package that loops through a table and displays its data. I wrote this because I am starting from the VERY beginning here in bitweaver, and want to make tutorials as I go to help new opensource developers who are joining the project and need a booster seat to sit at the table! I hope it is useful to you!Thanks for your help Spiderr
1) Create a New bitweaverPackage
- Go to the root of your bitweaver installation and make a directory:
$ mkdir newPackage/modules
$ mkdir newPackage/templates{CODE}
2) Create your table
- In your bitweaver database, create a table called test_table, and add two colums: test_table_id, and memo, or use the sql below
CREATE TABLE test_table
(
test_table_id int NOT NULL,
memo text[]
) WITHOUT OIDS;
--
-- This CREATE TABLE statement works for MySQL and MSSQL
CREATE TABLE test_table
(
test_table_id int NOT NULL,
memo text
)
{CODE}
Insert several rows into the table.
{CODE()}--These INSERT statements work for postgreSQL, MySQL and MSSQL
INSERT INTO test_table (test_table_id, memo) VALUES (1, 'The first memo' );
INSERT INTO test_table (test_table_id, memo) VALUES (2, 'The second memo' );
INSERT INTO test_table (test_table_id, memo) VALUES (3, 'The third memo' );{CODE}
3) Create your PHP file
- Go to newPackage/ and create a file called index.php
- Add the following lines
require_once('../bit_setup_inc.php'); //initialized the entire system!
$result = $gBitDb->query("SELECT * FROM test_table");
$gBitSmarty->assign('test_table', $result->GetArray());
$gBitSystem->display( NEWPACKAGE_PKG_PATH . '/templates/newPackage.tpl', 'New Package Page' );
?>{CODE}
4) Create your package's bit_setup_inc file
- Go to newPackage/ and create a file called bit_setup_inc.php
- Add the following lines (the spaces in _ _FILE_ _ must be removed wiki thinks they should bold the FILE ! )
global $gBitSystem;
$gBitSystem->registerPackage( 'newPackage', dirname( _ _FILE_ _ ).'/' );
if( $gBitSystem->isPackageActive( 'newPackage' ) ) {
// ... maybe do some initialization stuff if your package is turned on
}
?>{CODE}
5) Create your Smarty TPL file
- Now go to newPackage/templates and create a file using pico, or whatever you use, called newPackage.tpl
- Add these lines:
{$test_tablecolnum.test_table_id} | {$test_tablecolnum.memo} |
6) Activate your new package
- Click Administration -> Kernel -> Packages
- Scroll down to find "newPackage" (the list is alphabetical)
- Check the box to enable the package
- Go all the way to the bottom and click the "Activate" button
Voila!
Go to http://yourbitweaverURL/newPackage/ and your table should be displayed!7) Now, create a Module
- To create a module (a little box that you can display in the left or right columns) with a pointer to your awesome new package, we will use the modules directory you created in step 1
- Create a file using pico, or whatever text editor you use, called mod_newPackage.tpl.
- The file name must be formated like this so bitweaver can include it in the Administration / Modules dropdown list.
- Add these lines to the file:
Planning |
this is a cool iconMy New Package |
(:exclaim:) $smart.const.whatever_PKG_URL is a pointer to a folder called whatever in the root...
to use icons check out our cool new icon system called biticon
8) List of available constants in bitweaver
<package>_PKG_PATH --> example: WIKI_PKG_PATH
this will give you the full path to the wiki folder
<package>_PKG_URL --> example: WIKI_PKG_URL
this will give you the full url to the wiki folder
these contain the full path and url to the root of the application
BIT_ROOT_PATH
BIT_ROOT_URL
contains the name of the currently active package
ACTIVE_PACKAGE
full path and url to the currently active style
THEMES_STYLE_PATH
THEMES_STYLE_URL
Stay tuned for more Tutorials!
Fire
9)Make the package installable
In order to make the package installable, you need an additional directory in newPackage/admin{CODE()}$ mkdir newPackage/admin{CODE}
and the schema information to chack the database with which comes in the form of a ))schema_inc.php(( file
The sample for this package is
{CODE()}
<?php
$tables = array(
'test_table' => "
test_table_id I4 NOTNULL PRIMARY,
memo X
",
);
global $gBitInstaller;
foreach( array_keys( $tables ) AS $tableName ) {
$gBitInstaller->registerSchemaTable( NEWPACKAGE_PKG_NAME, $tableName, $tables$tableName );
}
$gBitInstaller->registerPackageInfo( NEWPACKAGE_PKG_NAME, array(
'description' => "A test package.",
'license' => 'LGPL',
'version' => '0.1',
'state' => 'beta',
'dependencies' => '',
) );
?>
{CODE}</package></package>