History of PortingTikiWikiPackages
Version 8 | Current version | |
---|---|---|
This is documentation of the process used while porting Trackers V2 from TikiWiki 1.9 to Tikipro. Create the DirectoriesWell, first thing I'll do is create sub-dirs under my Tikipro 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 Copying the FilesFirst 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.Librariescp ../tw-1.9/lib/trackers/trackerlib.php trackers2Root files (non-admin)cp ../tw-1.9/tiki-list_trackers.php trackers2...tiki-view_tracker_item.php ...tiki-view_tracker_more_info.php ...tiki-view_tracker.php Root files (admin)cp ../tw-1.9/tiki-admin_include_trackers.php trackers2/admin...tiki-admin_tracker_fields.php ...tiki-admin_trackers.php Iconscp ../tw-1.9/img/icons/admin_trackers.png trackers2/iconsModulescp ../tw-1.9/modules/mod-last_modif_tracker_items.php trackers2/modules...mod-last_tracker_items.php Templates (modules)cp ../tw-1.9/templates/modules/mod-last_modif_tracker_items.tpl trackers2/modules...mod-last_tracker_items.tpl ...mod-usergroup_tracker.tpl Wiki Pluginscp ../tw-1.9/lib/wiki-plugins/wikiplugin_tracker.php trackers2/plugins...wikiplugin_trackerlist.php Templates (non-modules)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 Templates (notifications)cp ../tw-1.9/templates/mail/tracker_changed_notification.tpl trackers2/templatesindex.phpLets start with an index page. By default, we want list trackers to be the index page - so renamemv trackers2/tiki-list_trackers.php trackers2/index.php tiki_setup_inc.phpOkay - 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'` 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()}<?php // Initialise global variables global $gTikiSystem, $userlib; // Register package with kernel $gTikiSystem->registerPackage( 'Trackers v2', dirname( FILE ).'/' ); // If package is installed if( $gTikiSystem->isPackageActive( 'TRACKERS2_PKG_PATH' ) ) { // 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', ''); } ?>{CODE} LibrariesOkay - 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'` | Create the DirectoriesWell, first thing I'll do is create sub-dirs under my bitweaver install as per Fire's Tutorial_Custom_package.
Copying the FilesFirst 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
Root files (non-admin)
Root files (admin)
Icons
Modules
Templates (modules)
Wiki Plugins
Templates (non-modules)
Templates (notifications)
Renaming filesIts BW practise to remove the tiki- prefix from all PHP and Smarty templates.
Dirty but it works ;-) index.phpLets 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.
bit_setup_inc.phpOkay - 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.
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.
LibrariesOkay - 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.
Field and Variable NamesOne 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:
...page... Database SchemaNow 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:
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.
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.
...page... Making the MenuTP 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.
Making the Admin MenuFirst 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.
Now, create the trackers2/admin/index.php file as shown below.
Removing remaining tiki- referencesNext, I run a very destructive script **BEWARE** - that removes all tiki- prefixes within all files.
Initial TestingAt this point, we can begin testing. Browse to http://your.tp.install/kernel/admin/index.php and click on Trackers 2 Settings. |