Actualy this is quiet tricky, as there are many referances that needs to be changed to make the modules easy rename, moveable and parallel reuseable.
I've been trying to make a solusion, and I actualy belive the following is quiet useable.
To start from xoops_version.php.
This code will automatically change the dirname to the name of the dir the module is currently resident in:
(Put it in the top of the xoops_version.php file)
le="color: #000000"><?php // First split and Reverse current file path. $pathparts = array_reverse(explode("/", $_SERVER["SCRIPT_FILENAME"])); // Then select the correct part as the dirname, and make sure it's a constant. $modversion['dirname'] = constant($pathparts[1]); // Aditionally prepare a prefix for the language constants. $VarPrefix = '_MI_'.strtoupper($pathparts[1]); // And use the language constants $modversion['name'] = constant($VarPrefix.'_NAME'); $modversion['description'] = constant($VarPrefix.'_DESC');
In the language file modinfo.php I have the following code:
le="color: #000000"><?php // Prepare a prefix for the language constants. $pathparts = array_reverse(explode("/", $_SERVER["SCRIPT_FILENAME"])); $VarPrefix = '_MI_'.strtoupper($pathparts[1]); // Make all the defines. define($VarPrefix.'_NAME', 'ModuleName'); define($VarPrefix.'_DESC', 'A description of the module.');
In the languagefile for all other modules, eg. /language/english/main.php I have the following
le="color: #000000"><?php $VarPrefix = '_MD_'.strtoupper($xoopsModule->getVar('dirname')); define($VarPrefix.'_GREETING', 'Hello, '); define($VarPrefix.'_ANONYMOUS','My friend, please log in!');
In the module, blocks etc. I use the language constants like this:
le="color: #000000"><?php $VarPrefix = '_MD_'.strtoupper($xoopsModule->getVar('dirname')); $xoopsTpl->assign('greeting', constant($VarPrefix.'_GREETING')); $uname = !empty($xoopsUser) ? $xoopsUser->getVar('uname','E') : constant($VarPrefix.'_ANONYMOUS');
The important part to remember is to use
constant() around the language variables.
I also use
le="color: #000000"><?php $ModuleUrlPath = XOOPS_URL."/modules/".$xoopsModule->getVar('dirname'); $ModuleRootPath = XOOPS_ROOT_PATH."/modules/".$xoopsModule->getVar('dirname');
in modules, blocks and admin, aswell as in smarty - to make it easier to always use the correct path.
I hope I remembered everything important to explain the working of this.
Note: I'm not sure if it's okay to have $pathpart and $VarPrefix without module prefixex. Didn't have time to go into that yet.
I've not tried it together with the database, comments, search etc. (as I haven't used either of those yet), but I hope others will provide examples, and improve on this code.
I hope you can use this code.
I probably won't have time to look further at this, the comming day or so. But rest assured that I'll be back!
Best regards,
Daigoro