Differences from version 8 to 44



@@ -1,62 +1,204 @@

-!Displaying your Own Table in TikiPro
+{maketoc}
 
-!!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 TikiPro, 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!
+
+!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 Package
-* Go to the root of your tikipro installation and make a directory:
-{CODE()}$ mkdir newPackage
+
+!!1) Create a New bitweaverPackage
+* Go to the root of your bitweaver installation and make a directory:
+{CODE source='php' num='off'}
+$ mkdir newPackage
 $ mkdir newPackage/modules
 $ mkdir newPackage/templates{CODE}
 !!2) Create your table
-* Using PostgreSQL, and a neat utility like [http://www.pgadmin.org/pgadmin3/index.php|pgAdmin3] create a database called ''test_table'', and add two colums: ''nameid'', and ''memo'', or use the sql below
-{CODE()}CREATE TABLE test_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. Later we shall see how such tables can be created during plugin installation.
+{CODE source='php' num='off'}-- Note: This first CREATE statement works for postgreSQL
+CREATE TABLE test_table
 (
- nameid int2 NOT NULL,
- memo text[],
- CONSTRAINT test_table_pkey PRIMARY KEY (nameid)
-) WITHOUT OIDS;{CODE}
+ 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 source='php' num='off'}--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
-{CODE()}<?php
- require_once('../tiki_setup_inc.php'); //initialized the entire system!
- $result = $gTikiSystem->query("SELECT * FROM test_table");
- $smarty->assign('test_table', $result->GetArray());
+{CODE source='php' num='off'}<?php
+ 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:
+{CODE source='php' num='off'}<?php
+global $gBitSystem;
+$gBitSystem->registerPackage( 'newPackage', dirname( __FILE__ ).'/' );
+if( $gBitSystem->isPackageActive( 'newPackage' ) ) {
+ // ... maybe do some initialization stuff if your package is turned on
+}
+?>{CODE}
+* For Bitweaver 2.0 you will want the file to look like this:
+{CODE source='php' num='off'}<?php
+global $gBitSystem;
+$registerHash = array(
+ 'package_name' => 'newPackage',
+ 'package_path' => dirname( __FILE__ ).'/',
+ 'homeable' => TRUE,
+);
+$gBitSystem->registerPackage( $registerHash );
 
- $gTikiSystem-&gt;display( 'tikipackage:newPackage/newPackage.tpl' );
-?&gt;{CODE}
-!!4) Create your Smarty TPL 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:
-{CODE()}&lt;table&gt;
+{CODE source='php' num='off'}<table>
  {section name=colnum loop=$test_table}
- &lt;tr&gt;
- &lt;td&gt;{$test_table[colnum].nameid}&lt;/td&gt;
- &lt;td&gt;{$test_table[colnum].memo}&lt;/td&gt;
- &lt;/tr&gt;
+ <tr>
+ <td>{$test_table[colnum].test_table_id}</td>
+ <td>{$test_table[colnum].memo}</td>
+ </tr>
  {/section}
-&lt;/table&gt;{CODE}
+</table>{CODE}
+Bitweaver uses the Smarty template engine, enriched with some custom functions. Read more about that on ((Smarty Functions)).
+
+!!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://yourTikiProURL/newPackage/__ and your table should be displayed!
-!!5) Now, create a Module
-* Create a module (a little box that you can display in the left or right columns) with a pointer to your awesome new package.
-{CODE()}$ mkdir newPackage/modules{CODE}
-* and create a file using pico, or whatever you use, called ''mod_newPackage.tpl''.
-* The file name must be formated like this so the tikisystem can include it in the __Administration / Modules__ dropdown list.
+Go to __http://yourbitweaverURL/newPackage/__ and your table should be displayed!
+
+!!7a) 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:
-{CODE()}&lt;table&gt;
- &lt;tr&gt;
- &lt;td class=&quot;boxtitle&quot;&gt;&lt;b&gt;Planning&lt;/b&gt;&lt;br&gt;&lt;/td&gt;
- &lt;/tr&gt;
- &lt;tr&gt;
- &lt;td&gt;&lt;a href=&quot;{$gTikiLoc.newPackage_PKG_URL/index.php&quot;&gt;
- &lt;img src=&quot;{$gTikiLoc.IMG_PKG_URL}icons/acoolicon.gif&quot; class=&quot;icon&quot;
- alt=&quot;{tr}my new package{/tr}&quot; title=&quot;{tr}my new package{/tr}&quot; /&gt;My New Package&lt;/a&gt;&lt;/td&gt;
- &lt;/tr&gt;
-&lt;/table&gt;{CODE}
-(:exclaim:) __$gTikiLoc.whatever_PKG_URL__ is a pointer to a folder called whatever in the root and is a very cool way of accessing icons... check out the IMG folder to fancy up your site!
+{CODE source='php' num='off'}<table>
+ <tr>
+ <td class="boxtitle"><b>Planning</b>
+</td>
+ </tr>
+ <tr>
+ <td><a href="{$smarty.const.NEWPACKAGE_PKG_URL}index.php">
+ { biticon ipackage=newPackage iname=iconname iexplain="this is a cool icon"}My New Package</a></td>
+ </tr>
+</table>{CODE}
+(: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 ((function_biticon|biticon))
 
-Stay tune for more Tutorials!
+!!7b) Add menu entries
+Maybe you chose your package be no module. Maybe you have additional functionality that shall plugin into Bitweaver's menu bar. This is a two step procedure.
+
+First create your templates/menu_newPackage.tpl file with the menu items you want to add.
+{CODE source='php' num='off'}
+<ul>
+ <li><a class="item" href="{$smarty.const.NEWPACKAGE_PKG_URL}index.php">{tr}New Package Home{/tr}</a></li>
+ <li><a class="item" href="{$smarty.const.NEWPACKAGE_PKG_URL}view1.php">{tr}View Something{/tr}</a></li>
+ <li><a class="item" href="{$smarty.const.NEWPACKAGE_PKG_URL}view2.php">{tr}View something else{/tr}</a></li>
+</ul>
+{CODE}
+
+Then register the menu in bit_setup_inc.php.
+{CODE source='php' num='off'}
+if( $gBitSystem->isPackageActive( 'newPackage' ) ) {
+ $menuHash = array(
+ 'package_name' => NEWPACKAGE_PKG_NAME,
+ 'index_url' => NEWPACKAGE_PKG_URL.'index.php',
+ 'menu_template' => 'bitpackage:eventcal/menu_newPackage.tpl',
+ );
+ $gBitSystem->registerAppMenu( $menuHash );
+}
+{CODE}
+To read more about menus, read ((Adding YOUR OWN dropdown menu to the Nav bar!)).
+
+!!8) List of available constants in bitweaver
+
+-=automagically generated constants for each package of the form=-
+<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
+
+-=in addition there are a few more=-
+these contain the full path and url to the root of the application
+BIT_ROOT_PATH
+BIT_ROOT_URL
+
+contains the table name prefix as given in the install script
+BIT_DB_PREFIX
+
+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 source='php' num='off'}$ mkdir newPackage/admin{CODE}
+and the schema information to chack the database with which comes in the form of a schema_inc.php file. In case you want to create columns with other data types, see ((DataDict)).
+The sample for this package is
+{CODE source='php' num='off'}
+<?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' => '<a href="http://www.gnu.org/licenses/licenses.html#LGPL">LGPL</a>',
+ 'version' => '0.1',
+ 'state' => 'beta',
+ 'dependencies' => '',
+) );
+?>
+{CODE}
+To add a nice looking icon besides the package name, simply create an icons folder inside your newpackage directory and drop a file named newpackage.png there.
+
+!!10)Populate database
+By providing sample data you can populate the database during module install time. See ((Installer Data Pump)) for more information.
+
+!!11)Further reading
+*Have a look at the ((SamplePackage)) and its explanation ((SamplePackageDissection)).
+*If you want to add automated testing, read ((TestingSuites)).
+*Become a template whizard by reading ((Smarty Functions)).
+*Think of sorting your list results? Consider using ((function_smartlink)) as column header.
+*Missing: Search integration. How does the search engine know about the new tables?
Page History
Date/CommentUserIPVersion
14 Jan 2007 (13:14 UTC)
Add reference for testing
hiran85.233.40.19244
Current • Source
hiran85.233.40.19243
View • Compare • Difference • Source
hiran85.233.40.19242
View • Compare • Difference • Source
hiran85.233.40.19241
View • Compare • Difference • Source
hiran85.233.40.19239
View • Compare • Difference • Source
xing194.152.164.4538
View • Compare • Difference • Source
xing194.152.164.4537
View • Compare • Difference • Source
hiran85.233.40.19236
View • Compare • Difference • Source
hiran85.233.40.19234
View • Compare • Difference • Source
hiran85.233.40.19233
View • Compare • Difference • Source
hiran85.233.40.19232
View • Compare • Difference • Source
hiran85.233.40.19231
View • Compare • Difference • Source
hiran85.233.40.19230
View • Compare • Difference • Source
hiran85.233.40.19229
View • Compare • Difference • Source
hiran85.233.40.19228
View • Compare • Difference • Source
hiran85.233.40.19227
View • Compare • Difference • Source
hiran85.233.40.19226
View • Compare • Difference • Source
alexh84.112.104.14825
View • Compare • Difference • Source
johnnoone81.56.46.1524
View • Compare • Difference • Source
Sean Lee71.241.129.17423
View • Compare • Difference • Source
spiderr66.93.240.20422
View • Compare • Difference • Source
Sean Lee71.241.129.17421
View • Compare • Difference • Source
Jan Lindåker81.229.122.24919
View • Compare • Difference • Source
Simon Benedicic193.77.101.1418
View • Compare • Difference • Source
Lester Caine81.138.11.13617
View • Compare • Difference • Source
Lester Caine81.138.11.13616
View • Compare • Difference • Source