Differences from version 11 to 26



@@ -1,90 +1,188 @@

-This is documentation of the process used while porting Trackers V2 from TikiWiki 1.9 to bitweaver.
 {maketoc}
 !Create the Directories
 Well, first thing I'll do is create sub-dirs under my bitweaver install as per Fire's Tutorial_Custom_package.
- mkdir trackers2
- mkdir trackers2/admin
- mkdir trackers2/icons
- mkdir trackers2/modules
- mkdir trackers2/plugins
- mkdir trackers2/templates
+{code}$ mkdir trackers2
+$ mkdir trackers2/admin
+$ mkdir trackers2/icons
+$ mkdir trackers2/modules
+$ mkdir trackers2/plugins
+$ mkdir trackers2/templates{/code}
 
 !Copying the Files
 First thing I'll do is copy the trackers library, root php files, modules and templates. I've used the '...' to indicate the previous command but with a different filename for brevity.
 !!Libraries
- cp ../tw-1.9/lib/trackers/trackerlib.php trackers2
+{code}$ cp ../tw-1.9/lib/trackers/trackerlib.php trackers2{/code}
 !!Root files (non-admin)
- cp ../tw-1.9/tiki-list_trackers.php trackers2
+{code}$ cp ../tw-1.9/tiki-list_trackers.php trackers2
  ...tiki-view_tracker_item.php
  ...tiki-view_tracker_more_info.php
- ...tiki-view_tracker.php
+ ...tiki-view_tracker.php{/code}
 !!Root files (admin)
- cp ../tw-1.9/tiki-admin_include_trackers.php trackers2/admin
+{code}$ cp ../tw-1.9/tiki-admin_include_trackers.php trackers2/admin
  ...tiki-admin_tracker_fields.php
- ...tiki-admin_trackers.php
+ ...tiki-admin_trackers.php{/code}
 !!Icons
- cp ../tw-1.9/img/icons/admin_trackers.png trackers2/icons
+{code}$ cp ../tw-1.9/img/icons/admin_trackers.png trackers2/icons{/code}
 !!Modules
- cp ../tw-1.9/modules/mod-last_modif_tracker_items.php trackers2/modules
- ...mod-last_tracker_items.php
+{code}$ cp ../tw-1.9/modules/mod-last_modif_tracker_items.php trackers2/modules
+ ...mod-last_tracker_items.php{/code}
 !!Templates (modules)
- cp ../tw-1.9/templates/modules/mod-last_modif_tracker_items.tpl trackers2/modules
+{code}$ cp ../tw-1.9/templates/modules/mod-last_modif_tracker_items.tpl trackers2/modules
  ...mod-last_tracker_items.tpl
- ...mod-usergroup_tracker.tpl
+ ...mod-usergroup_tracker.tpl{/code}
 !!Wiki Plugins
- cp ../tw-1.9/lib/wiki-plugins/wikiplugin_tracker.php trackers2/plugins
- ...wikiplugin_trackerlist.php
+{code}$ cp ../tw-1.9/lib/wiki-plugins/wikiplugin_tracker.php trackers2/plugins
+ ...wikiplugin_trackerlist.php{/code}
 !!Templates (non-modules)
- cp ../tw-1.9/templates/tiki-admin-include-trackers.tpl trackers2/templates
+{code} cp ../tw-1.9/templates/tiki-admin-include-trackers.tpl trackers2/templates
  ...tiki-admin_tracker_fields.tpl
  ...tiki-admin_trackers.tpl
  ...tiki-list_trackers.tpl
  ...tiki-plugin_trackerlist.tpl
  ...tiki-view_tracker_item.tpl
  ...tiki-view_tracker_more_info.tpl
- ...tiki-view_tracker.tpl
+ ...tiki-view_tracker.tpl{/code}
 !!Templates (notifications)
- cp ../tw-1.9/templates/mail/tracker_changed_notification.tpl trackers2/templates
+{code}$ cp ../tw-1.9/templates/mail/tracker_changed_notification.tpl trackers2/templates{/code}
+
+!Renaming files
+Its BW practise to remove the ''tiki-'' prefix from all PHP and Smarty templates.
+{code}cd trakers2
+find . | grep tiki- | sed -re "s/^(\S*)tiki\-(\S*)$/mv \1tiki-\2 \1\2/g" > tmp && sh tmp && rm tmp{/code}
+Dirty but it works ;-)
 
 !index.php
-Lets start with an index page. By default, we want list trackers to be the index page - so rename
- mv trackers2/tiki-list_trackers.php trackers2/index.php
+Lets start with an index page. By default, we want list trackers to be the index page. Rather than rename the page, I'd suggest creating a new index.php file, and using a Location header to redirect to your preferred start page.
+{code}<?php
+header ("location: sheets.php");
+die;
+?>{/code}
 
 !bit_setup_inc.php
-Okay - all references to ''tiki-setup.php'' must be changed to ''../tiki_setup_inc.php''. I've used a PERL command that will find and replace all instances of ''tiki-setup.php'' to ''../tiki_setup_inc.php'' in all *.php files under ''trackers2'' directory.
- perl -i -pe 's/tiki-setup.php/..\/tiki_setup_inc.php/g' `find trackers2 -type f -name '*.php'`
+Okay - all references to ''tiki-setup.php'' must be changed to ''../bit_setup_inc.php''. I've used a PERL command that will find and replace all instances of ''tiki-setup.php'' to ''../bit_setup_inc.php'' in all *.php files under ''trackers2'' directory.
+{code}$ perl -i -pe 's/tiki-setup.php/..\/bit_setup_inc.php/g' `find trackers2 -type f -name '*.php'`{/code}
 
-Now create a ''tiki_setup_inc.php'' file in the ''trackers2'' directory. I've used the ''trackers/tiki_setup_inc.php'' file as a template.
-{CODE(colors=>php)}<?php
+Now create a ''bit_setup_inc.php'' file in the ''trackers2'' directory. I've used the ''trackers/bit_setup_inc.php'' file as a template.
+{code}<?php
 // Initialise global variables
-global $gTikiSystem, $userlib;
+global $gBitSystem, $gBitUser;
 
 // Register package with kernel
-$gTikiSystem->registerPackage( 'Trackers v2', dirname( __FILE__ ).'/' );
+$gBitSystem->registerPackage( 'Trackers v2', dirname( __FILE__ ).'/' );
 
 // If package is installed
-if( $gTikiSystem->isPackageActive( 'TRACKERS2_PKG_PATH' ) )
+if( $gBitSystem->isPackageActive( 'trackers2' ) )
 {
  // Register user menu
- $gTikiSystem->registerAppMenu( TRACKERS2_PKG_DIR, TRACKERS2_PKG_NAME, TRACKERS2_PKG_URL.'index.php',
- 'tikipackage:trackers2/menu_trackers.tpl', true );
-
- if( $userlib->user_has_permission($user, 'tiki_p_admin_trackers') )
- {
- $perms = $userlib->get_permissions(0, -1, 'perm_name_desc', '', 'trackers');
- foreach ($perms["data"] as $perm)
- {
- $perm = $perm["perm_name"];
- $smarty->assign("$perm", 'y');
- $$perm = 'y';
- }
- }
- $smarty->assign('t_use_db', 'y');
- $smarty->assign('t_use_dir', '');
+ $gBitSystem->registerAppMenu( TRACKERS2_PKG_DIR, TRACKERS2_PKG_NAME, TRACKERS2_PKG_URL.'index.php',
+ 'bitpackage:trackers2/menu_trackers.tpl', true );
 }
-?>{CODE}
+?>{/code}
 
 !Libraries
 Okay - all references to ''lib/trackers/trackerlib.php'' must be changed to ''TRACKERS2_PKG_PATH.'tracker_lib.php'''. Once again, we will use a PERL find and replace.
- perl -i -pe "s/\'lib\/trackers\//TRACKERS2_PKG_PATH.\'/g" `find trackers2 -type f -name '*.php'`
+{code}$ perl -i -pe "s/\'lib\/trackers\//TRACKERS2_PKG_PATH.\'/g" `find trackers2 -type f -name '*.php'`{/code}
+
+!Field and Variable Names
+One standard we have changed from TikiWiki, is the variable naming convention. All fields and variables now use underscores and standard suffixes identifying the data type.
+ trackerId => tracker_id
+ lastModif => last_modified
+ showCreated => show_created
+ showStatus => show_status
+ showLastModif => show_last_modified
+etc
+
+You can use a PERL find and replace to do mass changes:
+{code}$ perl -i -pe "s/trackerId/tracker_id/g" `find trackers2 -type f`{/code}
+...page...
+{maketoc}
+!Database Schema
+Now for table creation - the TW1.9 database schema for Trackers 2 is quite lengthy, but we will use the main one as an example and explain the rest of the conversion in less detail. The main trackers table is as follows:
+
+{code}
+ CREATE TABLE tiki_trackers (
+ trackerId int(12) NOT NULL auto_increment,
+ name varchar(80) default NULL,
+ description text,
+ created int(14) default NULL,
+ lastModif int(14) default NULL,
+ showCreated char(1) default NULL,
+ showStatus char(1) default NULL,
+ showLastModif char(1) default NULL,
+ useComments char(1) default NULL,
+ showComments char(1) default NULL,
+ useAttachments char(1) default NULL,
+ showAttachments char(1) default NULL,
+ orderAttachments varchar(255) NOT NULL default 'filename,created,filesize,downloads,desc',
+ items int(10) default NULL,
+ PRIMARY KEY (trackerId)
+ ) TYPE=MyISAM AUTO_INCREMENT=1 ;{/code}
+
+We need to create an AdoDB DataDict PHP file to create the tables as required. I have used the ''trackers'' file as a template and created ''trackers2/admin/schema_inc.php''. This file shows how SQL create scripts are converted into DataDict PHP scripts. For more information, see DataDictTutorial.
+{code}<?php
+$tables = array(
+'tiki_trackers' => "
+ tracker_id I4 AUTO PRIMARY,
+ name C(80),
+ description X,
+ created I8,
+ lastModif I8,
+ showCreated C(1),
+ showStatus C(1),
+ showLastModif C(1),
+ useComments C(1),
+ showComments C(1),
+ useAttachments C(1),
+ showAttachments C(1),
+ orderAttachments C(255) NOTNULL DEFAULT 'filename,created,filesize,downloads,desc',
+ items I8
+",
+...
+);
+
+global $gTikiInstaller;
+foreach( array_keys( $tables ) AS $tableName ) {
+ $gTikiInstaller->registerSchemaTable( TRACKERS2_PKG_DIR, $tableName, $tables[$tableName] );
+}{/code}
+After each of the tables have been specified, you would specify the indices. In this case, there are none.
+
+Next we specify the inserts. These usually consist of permissions and default preferences.
+{code}$gTikiInstaller->registerSchemaDefault( TRACKERS2_PKG_DIR, array(
+ "INSERT INTO `".TIKI_DB_PREFIX."users_permissions` (`perm_name`, `perm_desc`, `level`, `package`)
+ VALUES ('tiki_p_admin_trackers', 'Can admin trackers', 'editors', 'trackers')",
+...
+ "INSERT INTO `".TIKI_DB_PREFIX."tiki_preferences`(`package`,`name`,`value`) VALUES ('trackers2',
+ 'feature_trackers', 'n')"
+) );
+?>{/code}
+...page...
+{maketoc}
+!Making the Menu
+TP menus are different from TW. We have to cut the menu items out of TW's ''templates/modules/mod-application_menu.tpl'' and create a ''trackers2/templates/menu_trackers2.tpl''. I found the menu template from ''trackers'' package was suitable with some modification.
+{code}<a class="menuoption" href="{$gTikiLoc.TRACKERS2_PKG_URL}index.php">{tr}List trackers{/tr}</a>
+{if $tiki_p_admin_trackers eq 'y'}
+ <a class="menuoption" href="{$gTikiLoc.TRACKERS2_PKG_URL}admin/index.php">{tr}Admin trackers{/tr}</a>
+{/if}{/code}
+
+!Making the Admin Menu
+First we have to rename the main Trackers2 admin page.
+ mv trackers2/admin/tiki-admin_trackers.php trackers2/admin/admin_tracker2_inc.php
+
+Now we have to create the Admin menu. Again the ''trackers/templates/menu_trackers2_admin.tpl'' is based on a similar file found in the ''trackers'' package.
+{code}{if $tiki_p_admin_trackers eq 'y'}
+ <a class="menuoption" href="{$gTikiLoc.TRACKERS2_PKG_URL}admin/index.php">{tr}Trackers Settings{/tr}</a>
+{/if}{/code}
+
+Now, create the ''trackers2/admin/index.php'' file as shown below.
+{code}<?php
+ // This is not a package.
+ header ("location: ../index.php");
+?>{/code}
+
+!Removing remaining __tiki-__ references
+Next, I run a very destructive script __**BEWARE**__ - that removes all ''tiki-'' prefixes within all files.
+{code}$ find -type f -exec perl -i -wpe 's/tiki-//g' {} \;{/code}
+
+!Initial Testing
 
+At this point, we can begin testing. Browse to ''http://your.tp.install/kernel/admin/index.php'' and click on __Trackers 2 Settings__.
Page History
Date/CommentUserIPVersion
18 May 2008 (20:42 UTC)
laetzer85.178.10.6226
Current • Source
Marc Kalberer195.186.167.23324
View • Compare • Difference • Source
Vijay Aswadhati63.197.4.13023
View • Compare • Difference • Source
Stephan Borg218.214.1.11318
View • Compare • Difference • Source
Stephan Borg218.214.1.11317
View • Compare • Difference • Source
Stephan Borg218.214.1.11315
View • Compare • Difference • Source
Stephan Borg218.214.1.11314
View • Compare • Difference • Source
Stephan Borg218.214.1.11313
View • Compare • Difference • Source
Stephan Borg218.214.1.11312
View • Compare • Difference • Source
xing194.152.164.4511
View • Compare • Difference • Source
Stephan Borg218.214.1.11310
View • Compare • Difference • Source
Stephan Borg218.214.1.1139
View • Compare • Difference • Source
Stephan Borg218.214.1.1138
View • Compare • Difference • Source