Strony administracyjne modułu
Klasa Xmf\Module\Admin zapewnia konsystentny sposób tworzenia interfejsów administracji modułu. Używanie XMF na stronach administracyjnych zapewnia kompatybilność ze przyszłością z przyszłymi wersjami XOOPS, jednocześnie utrzymując jednolitą doświadczenie użytkownika.
Overview
Dział zatytułowany „Overview”The ModuleAdmin class in XOOPS Frameworks made administration easier, but its API has evolved across versions. The Xmf\Module\Admin wrapper:
- Provides a stable API that works across XOOPS versions
- Automatically handles API differences between versions
- Ensures your admin code is forward-compatible
- Offers convenient static methods for common tasks
Getting Started
Dział zatytułowany „Getting Started”Creating an Admin Instance
Dział zatytułowany „Creating an Admin Instance”$admin = \Xmf\Module\Admin::getInstance();This returns either an Xmf\Module\Admin instance or a native system class if already compatible.
Icon Management
Dział zatytułowany „Icon Management”The Icon Location Problem
Dział zatytułowany „The Icon Location Problem”Icons have moved between XOOPS versions, causing maintenance headaches. XMF solves this with utility methods.
Finding Icons
Dział zatytułowany „Finding Icons”Old way (version-dependent):
$dirname = basename(dirname(dirname(__FILE__)));$module_handler = xoops_gethandler('module');$module = $module_handler->getByDirname($dirname);$pathIcon16 = $module->getInfo('icons16');$img_src = $pathIcon16 . '/delete.png';XMF way:
$img_src = \Xmf\Module\Admin::iconUrl('delete.png', 16);The iconUrl() method returns a full URL, so you don’t need to worry about path construction.
Icon Sizes
Dział zatytułowany „Icon Sizes”// 16x16 icons$smallIcon = \Xmf\Module\Admin::iconUrl('edit.png', 16);
// 32x32 icons (default)$largeIcon = \Xmf\Module\Admin::iconUrl('edit.png', 32);
// Just the path (no filename)$iconPath = \Xmf\Module\Admin::iconUrl('', 16);Menu Icons
Dział zatytułowany „Menu Icons”For admin menu.php files:
Old way:
$dirname = basename(dirname(dirname(__FILE__)));$module_handler = xoops_gethandler('module');$module = $module_handler->getByDirname($dirname);$pathIcon32 = $module->getInfo('icons32');
$adminmenu = [];$adminmenu[] = [ 'title' => _MI_DEMO_ADMIN_INDEX, 'link' => 'admin/index.php', 'icon' => '../../' . $pathIcon32 . '/home.png'];$adminmenu[] = [ 'title' => _MI_DEMO_ADMIN_ABOUT, 'link' => 'admin/about.php', 'icon' => '../../' . $pathIcon32 . '/about.png'];XMF way:
// Get path to icons$pathIcon32 = '';if (class_exists('Xmf\Module\Admin', true)) { $pathIcon32 = \Xmf\Module\Admin::menuIconPath('');}
$adminmenu = [];$adminmenu[] = [ 'title' => _MI_DEMO_ADMIN_INDEX, 'link' => 'admin/index.php', 'icon' => $pathIcon32 . 'home.png'];$adminmenu[] = [ 'title' => _MI_DEMO_ADMIN_ABOUT, 'link' => 'admin/about.php', 'icon' => $pathIcon32 . 'about.png'];Standard Admin Pages
Dział zatytułowany „Standard Admin Pages”Index Page
Dział zatytułowany „Index Page”Old format:
$indexAdmin = new ModuleAdmin();
echo $indexAdmin->addNavigation('index.php');echo $indexAdmin->renderIndex();XMF format:
$indexAdmin = \Xmf\Module\Admin::getInstance();
$indexAdmin->displayNavigation('index.php');$indexAdmin->displayIndex();About Page
Dział zatytułowany „About Page”Old format:
$aboutAdmin = new ModuleAdmin();
echo $aboutAdmin->addNavigation('about.php');echo $aboutAdmin->renderAbout('6XYZRW5DR3VTJ', false);XMF format:
$aboutAdmin = \Xmf\Module\Admin::getInstance();
$aboutAdmin->displayNavigation('about.php');\Xmf\Module\Admin::setPaypal('6XYZRW5DR3VTJ');$aboutAdmin->displayAbout(false);Note: In future XOOPS versions, PayPal information is set in xoops_version.php. The
setPaypal()call ensures compatibility with current versions while having no effect in newer ones.
Navigation
Dział zatytułowany „Navigation”Display Navigation Menu
Dział zatytułowany „Display Navigation Menu”$admin = \Xmf\Module\Admin::getInstance();
// Display navigation for current page$admin->displayNavigation('items.php');
// Or get HTML string$navHtml = $admin->renderNavigation('items.php');Info Boxes
Dział zatytułowany „Info Boxes”Creating Info Boxes
Dział zatytułowany „Creating Info Boxes”$admin = \Xmf\Module\Admin::getInstance();
// Add an info box$admin->addInfoBox('Module Statistics');
// Add lines to the info box$admin->addInfoBoxLine('Total Items: ' . $itemCount, 'default', 'green');$admin->addInfoBoxLine('Active Users: ' . $userCount, 'default', 'blue');
// Display the info box$admin->displayInfoBox();Config Boxes
Dział zatytułowany „Config Boxes”Config boxes display system requirements and status checks.
Basic Config Lines
Dział zatytułowany „Basic Config Lines”$admin = \Xmf\Module\Admin::getInstance();
// Add a simple message$admin->addConfigBoxLine('Module is properly configured', 'default');
// Check if directory exists$admin->addConfigBoxLine('/uploads/mymodule', 'folder');
// Check directory with permissions$admin->addConfigBoxLine(['/uploads/mymodule', '0755'], 'chmod');
// Check if module is installed$admin->addConfigBoxLine('xlanguage', 'module');
// Check module with warning instead of error if missing$admin->addConfigBoxLine(['xlanguage', 'warning'], 'module');Convenience Methods
Dział zatytułowany „Convenience Methods”$admin = \Xmf\Module\Admin::getInstance();
// Add error message$admin->addConfigError('Upload directory is not writable');
// Add success/accept message$admin->addConfigAccept('Database tables verified');
// Add warning message$admin->addConfigWarning('Cache directory should be cleared');
// Check module version$admin->addConfigModuleVersion('xlanguage', '1.0');Config Box Types
Dział zatytułowany „Config Box Types”| Type | Value | Behavior |
|---|---|---|
default | Message string | Displays message directly |
folder | Directory path | Shows accept if exists, error if not |
chmod | [path, permission] | Checks directory exists with permission |
module | Module name | Accept if installed, error if not |
module | [name, 'warning'] | Accept if installed, warning if not |
Item Buttons
Dział zatytułowany „Item Buttons”Add action buttons to admin pages:
$admin = \Xmf\Module\Admin::getInstance();
// Add buttons$admin->addItemButton('Add New Item', 'item.php?op=new', 'add');$admin->addItemButton('Import Items', 'import.php', 'import');
// Display buttons (left aligned by default)$admin->displayButton('left');
// Or get HTML$buttonHtml = $admin->renderButton('right', ' | ');Complete Admin Page Examples
Dział zatytułowany „Complete Admin Page Examples”index.php
Dział zatytułowany „index.php”<?phprequire_once dirname(dirname(dirname(__DIR__))) . '/include/cp_header.php';require_once dirname(__DIR__) . '/include/common.php';
$adminObject = \Xmf\Module\Admin::getInstance();
// Display navigation$adminObject->displayNavigation(basename(__FILE__));
// Add info box with statistics$adminObject->addInfoBox(_MI_MYMODULE_DASHBOARD);
$itemHandler = $helper->getHandler('items');$itemCount = $itemHandler->getCount();$adminObject->addInfoBoxLine(sprintf(_MI_MYMODULE_TOTAL_ITEMS, $itemCount));
$categoryHandler = $helper->getHandler('categories');$categoryCount = $categoryHandler->getCount();$adminObject->addInfoBoxLine(sprintf(_MI_MYMODULE_TOTAL_CATEGORIES, $categoryCount));
// Check configuration$uploadDir = XOOPS_UPLOAD_PATH . '/mymodule';$adminObject->addConfigBoxLine($uploadDir, 'folder');$adminObject->addConfigBoxLine([$uploadDir, '0755'], 'chmod');
// Check optional modules$adminObject->addConfigBoxLine(['xlanguage', 'warning'], 'module');
// Display the index page$adminObject->displayIndex();
require_once __DIR__ . '/admin_footer.php';items.php
Dział zatytułowany „items.php”<?phprequire_once dirname(dirname(dirname(__DIR__))) . '/include/cp_header.php';require_once dirname(__DIR__) . '/include/common.php';
$adminObject = \Xmf\Module\Admin::getInstance();
// Get operation$op = \Xmf\Request::getCmd('op', 'list');
switch ($op) { case 'list': default: $adminObject->displayNavigation(basename(__FILE__));
// Add action buttons $adminObject->addItemButton(_MI_MYMODULE_ADD_ITEM, 'items.php?op=new', 'add'); $adminObject->displayButton('left');
// List items $itemHandler = $helper->getHandler('items'); $criteria = new CriteriaCompo(); $criteria->setSort('created'); $criteria->setOrder('DESC'); $criteria->setLimit(20);
$items = $itemHandler->getObjects($criteria);
// Display table echo '<table class="outer">'; echo '<tr><th>' . _MI_MYMODULE_TITLE . '</th><th>' . _MI_MYMODULE_ACTIONS . '</th></tr>';
foreach ($items as $item) { $editUrl = 'items.php?op=edit&id=' . $item->getVar('item_id'); $deleteUrl = 'items.php?op=delete&id=' . $item->getVar('item_id');
echo '<tr>'; echo '<td>' . $item->getVar('title') . '</td>'; echo '<td>'; echo '<a href="' . $editUrl . '"><img src="' . \Xmf\Module\Admin::iconUrl('edit.png', 16) . '" alt="Edit"></a> '; echo '<a href="' . $deleteUrl . '"><img src="' . \Xmf\Module\Admin::iconUrl('delete.png', 16) . '" alt="Delete"></a>'; echo '</td>'; echo '</tr>'; }
echo '</table>'; break;
case 'new': case 'edit': // Form handling code... break;}
require_once __DIR__ . '/admin_footer.php';about.php
Dział zatytułowany „about.php”<?phprequire_once dirname(dirname(dirname(__DIR__))) . '/include/cp_header.php';require_once dirname(__DIR__) . '/include/common.php';
$adminObject = \Xmf\Module\Admin::getInstance();
$adminObject->displayNavigation(basename(__FILE__));
// Set PayPal ID for donations (optional)\Xmf\Module\Admin::setPaypal('YOUR_PAYPAL_ID');
// Display about page// Pass false to hide XOOPS logo, true to show it$adminObject->displayAbout(false);
require_once __DIR__ . '/admin_footer.php';menu.php
Dział zatytułowany „menu.php”<?phpdefined('XOOPS_ROOT_PATH') || exit('XOOPS root path not defined');
// Get icon path using XMF$pathIcon32 = '';if (class_exists('Xmf\Module\Admin', true)) { $pathIcon32 = \Xmf\Module\Admin::menuIconPath('');}
$adminmenu = [];
// Dashboard$adminmenu[] = [ 'title' => _MI_MYMODULE_ADMIN_INDEX, 'link' => 'admin/index.php', 'icon' => $pathIcon32 . 'home.png'];
// Items$adminmenu[] = [ 'title' => _MI_MYMODULE_ADMIN_ITEMS, 'link' => 'admin/items.php', 'icon' => $pathIcon32 . 'content.png'];
// Categories$adminmenu[] = [ 'title' => _MI_MYMODULE_ADMIN_CATEGORIES, 'link' => 'admin/categories.php', 'icon' => $pathIcon32 . 'category.png'];
// Permissions$adminmenu[] = [ 'title' => _MI_MYMODULE_ADMIN_PERMISSIONS, 'link' => 'admin/permissions.php', 'icon' => $pathIcon32 . 'permissions.png'];
// About$adminmenu[] = [ 'title' => _MI_MYMODULE_ADMIN_ABOUT, 'link' => 'admin/about.php', 'icon' => $pathIcon32 . 'about.png'];API Reference
Dział zatytułowany „API Reference”Static Methods
Dział zatytułowany „Static Methods”| Method | Description |
|---|---|
getInstance() | Get admin instance |
iconUrl($name, $size) | Get icon URL (size: 16 or 32) |
menuIconPath($image) | Get icon path for menu.php |
setPaypal($paypal) | Set PayPal ID for about page |
Instance Methods
Dział zatytułowany „Instance Methods”| Method | Description |
|---|---|
displayNavigation($menu) | Display navigation menu |
renderNavigation($menu) | Return navigation HTML |
addInfoBox($title) | Add info box |
addInfoBoxLine($text, $type, $color) | Add line to info box |
displayInfoBox() | Display info box |
renderInfoBox() | Return info box HTML |
addConfigBoxLine($value, $type) | Add config check line |
addConfigError($value) | Add error to config box |
addConfigAccept($value) | Add success to config box |
addConfigWarning($value) | Add warning to config box |
addConfigModuleVersion($moddir, $version) | Check module version |
addItemButton($title, $link, $icon, $extra) | Add action button |
displayButton($position, $delimiter) | Display buttons |
renderButton($position, $delimiter) | Return button HTML |
displayIndex() | Display index page |
renderIndex() | Return index page HTML |
displayAbout($logo_xoops) | Display about page |
renderAbout($logo_xoops) | Return about page HTML |
See Also
Dział zatytułowany „See Also”- ../Basics/XMF-Module-Helper - Module helper class
- Permission-Helper - Permission management
- ../XMF-Framework - Framework overview
#xmf #admin #module-development #navigation #icons