Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 3 Articles
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
[How-To] Product Managament (vBulletin 3.5 RC 1 and up)
Andreas's Avatar
Andreas
Join Date: Jan 2004
Posts: 6,863

 

Germany
Show Printable Version Email this Page Subscription
Andreas Andreas is offline 07-25-2005, 10:00 PM

This How-To is mainly meant for Hack-Developers, if you are only planning to use Hacks just read the End-User section.

Developers
vBulletin 3.5.0 RC1 introduces a new concept for customizing/modifying vBulletin: Products.
With Products, you can manage Plugins, Phrases, Settings and Templates in just one XML File.
Furthermore it supports Install/Uninstall Codes (for running queries, etc.), it also covers updating existing Hacks as you can add Codes for different Versions.

To start, you first have to turn on debug mode:
Put
PHP Code:
$config['Misc']['debug'] = true
in config.php.

Then go to ACP / Plugin System / Manage Products.
Click Add/Import Product.
In the second Form (Add New Product) fill in the Details for your Hack:
  • Product ID should be a unique ID for you Hack; it must not start with vb and should be lowercase only, not contain spaces or other special characters.
    Attention: The Product ID must not be longer then 15 characters.
  • Title should be the Title for your Hack
  • Version should be the Version.
    The Format shoud be Mainversion Subversion Subrelease
    Example: Myhack 1.0.0 Beta 1
  • Description should be a short description for you Hack, eg. what it does.

Afterwards, create all the Plugins, Phrases, Templates and Settings your Hack requires and make sure you select the Product you just created.
Important: Templates must be placed in the MASTER Style, Phrases in the MASTER Language

When you are finished, go to ACP / Plugin System / Manage Products and select Edit from the Dropdown next to your Product.

In the Form (Add New Install/Uninstall Code) add all Code necessary to install/uninstall your Hack (eg, Queries, etc.).
If you are updating an existing Hack, add new Install/Uninstall Codes for the new Version that just make the changes necessary to upgrade the previous Version; Product Management will make sure that all necessary Codes will be run.

If your Hack includes Usergroup Permissions/Bitfields, add the following Code to Install and Uninstall to rebuild the Bitfield cache:

PHP Code:
if (is_newer_version('3.5.1'$vbulletin->options['templateversion']))
{
    
// Rebuild Bitfields
    // Do this for vBulletin < 3.5.1 *ONLY*; later versions rebuild
    // automatically and calling the builder in install code causes
    // the bitfields NOT to be rebuild correctly
    
require_once(DIR '/includes/class_bitfield_builder.php');
    
vB_Bitfield_Builder::save($db);
    
build_forum_permissions();

When everything is done, go to ACP / Plugin System / Manage Products again and export the Product as XML; this will then include all Plugins, Templates, Phrases, Settings and Install/Uninstall Codes required.

End-Users
Go to ACP / Plugin System / Manage Products.
Click Add/Import Product, select the product XML File for the Hack you want to install.
If you are upgrading an existing Hack, make sure that Allow Overwrite is set to Yes

This How-To is (C) 2005 by KirbyDE and you are not allowed to redistribute it in any way without my explicit consent.
Reply With Quote
  #72  
Old 09-24-2005, 06:25 PM
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Location: Germany
Posts: 6,863
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The Code should be
PHP Code:
$only['test_product'] = 'Test-Product'
Then it would show up as Test-Product Templates in Stlye Manager.
Reply With Quote
  #73  
Old 09-24-2005, 06:34 PM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Don't use the last underscore.
Reply With Quote
  #74  
Old 09-24-2005, 06:53 PM
Albus Albus is offline
 
Join Date: May 2004
Location: USA
Posts: 112
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by KirbyDE
The Code should be
PHP Code:
$only['test_product'] = 'Test-Product'
Then it would show up as Test-Product Templates in Stlye Manager.
Thanks!

In review, just to make sure I have the process down:

1) Enable debug mode.
2) Enable plugin system.
3) Add your product using the manager.
4) Create custom setting groups.
5) Create custom settings.
6) Create custom phrasegroups.
- A) SELECT MAX(phrasetypeid) + 1 AS newid FROM phrasetype WHERE phrasetypeid < 1000
- B) INSERT INTO phrasetype (phrasetypeid, ...) VALUES ('$newid', ...)
- C) ALTER TABLE language ADD phrasegroup_whatever MEDIUMTEXT NOT NULL
- D) Rebuild languages
7) Create custom phrases.
8) Create custom templates beginning with a unique prefix in lowercase, such as poduct_name.
9) Tweak existing templates if needed.
10) Create the $only['product_name'] = 'Product Name'; plugin for your product using the template_groups hook.
11) Create any other hooks plugins your product needs.
12) Write new files.
13) Hack old files if needed.
14) Export your product to xml.
15) Package it with a small script to install the tables and explain manual tweaking of existing templates and files.

Done. Right?
Reply With Quote
  #75  
Old 09-24-2005, 06:57 PM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Installation of new tables can be handled from the Product Manager, no need for installation scripts.
Reply With Quote
  #76  
Old 09-24-2005, 07:09 PM
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Location: Germany
Posts: 6,863
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

@Albus
That's it - yes. But as Marco already pointed out, creating/altering tables can (and should be) handeled with product install/uninstall codes.
Also there is a function to create custom phrasetypes: add_phrase_type() in adminfunctions_language.php
Just the GUI is missing
I pointed this out @ .com, but the Devs don't seem to see a need for it.
For my needs, I ported this Hack - makes it easy to handle Phrasegroups
I've contacted the author if he plans to release it, but did not get a reply so far.
Reply With Quote
  #77  
Old 09-24-2005, 07:21 PM
Albus Albus is offline
 
Join Date: May 2004
Location: USA
Posts: 112
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by KirbyDE
@Albus
That's it - yes. But as Marco already pointed out, creating/altering tables can (and should be) handeled with product install/uninstall codes.
Also there is a function to create custom phrasetypes: add_phrase_type() in adminfunctions_language.php
Just the GUI is missing
I pointed this out @ .com, but the Devs don't seem to see a need for it.
For my needs, I ported this Hack - makes it easy to handle Phrasegroups
I've contacted the author if he plans to release it, but did not get a reply so far.
Hm, so technically I can create it all online and use the install/uninstall code boxes to make the call to add_phrase_type() and handle the table work? I see there's a version number field there too. This raises two questions.

1) How does the version number affect rollbacks to a previous version, should the user wish to do so? I realize that you'd have two install codes and two uninstall codes.

2) How does this affect the order the product is installed in? In other words, what's the order of things? Install code, settings, phrases, templates, etc...

Sorry for the all the questions, but I want to make absolutely sure I know what I'm doing.

One more thing...is the 'vb' product name prefix still in effect? If so, how do things like vbadvanced name their products? I ask because I recently registered a development domain that starts with vb and would like my products to bear that prefix.
Reply With Quote
  #78  
Old 09-24-2005, 07:26 PM
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Location: Germany
Posts: 6,863
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Once you've created a product XML you don't have to take care of phrase and phrasetype stuff, vBulletin will handle that itself.
I was only babbling about initially creating the phrasgroup on your developement machine.

A rollback is not possible (yet?), the User can only uninstall.

Installation order is
- Install-Code
- Templates
- Plugins
- Phrases
- Settings

On uninstall, uninstall codes will be called in reversed order (og. newest version first).

Prefix vb is reserved for Jelsoft use, yes.
Reply With Quote
  #79  
Old 09-24-2005, 07:29 PM
Albus Albus is offline
 
Join Date: May 2004
Location: USA
Posts: 112
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by KirbyDE
Once you've created a product XML you don't have to take care of phrase and phrasetype stuff, vBulletin will handle that itself.
I was only babbling about initially creating the phrasgroup on your developement machine.

A rollback is not possible (yet?), the User can only uninstall.

Installation order is
- Install-Code
- Templates
- Plugins
- Phrases
- Settings

On uninstall, uninstall codes will be called in reversed order (og. newest version first).

Prefix vb is reserved for Jelsoft use, yes.
Ooh, that's nice. I think that wraps it up. One of us ought to compile all the instructions, comments and questions here so far into a downloadable document. Thanks!
Reply With Quote
  #80  
Old 09-29-2005, 02:55 AM
JJR512's Avatar
JJR512 JJR512 is offline
 
Join Date: Oct 2001
Location: Glen Burnie, MD, USA
Posts: 710
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Where is writing the actual XML for a product covered?
Reply With Quote
  #81  
Old 09-29-2005, 03:02 AM
Adrian Schneider's Avatar
Adrian Schneider Adrian Schneider is offline
 
Join Date: Jul 2004
Posts: 2,528
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by JJR512
Where is writing the actual XML for a product covered?
Take a look at some other products... most of the time you can generate them (export product), but sometimes you may have to go and edit the XML yourself.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 04:59 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.06849 seconds
  • Memory Usage 2,336KB
  • Queries Executed 26 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (4)bbcode_php
  • (4)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_article
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete