Differences from version 2 to 44



@@ -1,78 +1,204 @@

-~~--FF0000:!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:
-** >mkdir newPackage
-** >mkdir newPackage/modules
-** >mkdir newPackage/templates
 
-!__2) Create your table (where your data lives)__
-* Using postgress, and a neet 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
+!!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
+* 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)
+ 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 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 );
 
-!__3) Create your php file (where the logic goes!)__
-* go to newPackage/ and create a file called index.php
-* add the following lines
-** &lt;?php
-** require_once('../tiki_setup_inc.php'); //initialized the entire system!
-** $result = $gTikiSystem-&gt;query(&quot;SELECT * FROM test_table&quot;);
-** $smarty-&gt;assign('test_table', $result-&gt;GetArray()); //assigning the results into test_table creates a smarty variable that will be passed to your template!
+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 source='php' num='off'}<table>
+ {section name=colnum loop=$test_table}
+ <tr>
+ <td>{$test_table[colnum].test_table_id}</td>
+ <td>{$test_table[colnum].memo}</td>
+ </tr>
+ {/section}
+</table>{CODE}
+Bitweaver uses the Smarty template engine, enriched with some custom functions. Read more about that on ((Smarty Functions)).
 
-$gTikiSystem-&gt;display( 'tikipackage:newPackage/newPackage.tpl' );
-// this will will plop all data into the newPackage template you are going to make
-next
+!!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
 
-?&gt;
+!Voila!
+Go to __http://yourbitweaverURL/newPackage/__ and your table should be displayed!
 
-!__4) Create your tpl file (where the presentation goes!)__
-* Now go to newPackage/templates and create a file using pico, or whatever you use, called newPackage.tpl
-** add these lines:
-*** &lt;table border=2&gt;
-** {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;
-** {/section}
-** &lt;/table&gt;
+!!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 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))
 
-Voila!
-Go to http://yourTikiProURL/newPackage/
-and your table should be displayed!
+!!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.
 
-!__5) Now, create a module (a little box that you can display in the left or right columns) with a pointer to your awesome new package
+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}
 
-* mkdir newPackage/modules 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 --&gt; modules -&gt; dropdown list.
+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!)).
 
-* add these lines to the file:
+!!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
+",
+
+);
 
-&lt;table cellpadding=4 border=2&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;
- Weekly Plans&lt;/a&gt;&lt;/td&gt;
- &lt;/tr&gt;
-&lt;/table&gt;
+global $gBitInstaller;
 
-(: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!
+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.
 
-I hope this helps!
+!!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