mirror of
https://github.com/Terranom674/Piwigo_Bratonien_Tools.git
synced 2026-09-19 11:44:31 +00:00
Expose customer QR upload as top-level frontend menu item
This commit is contained in:
105
include/customer_qr_frontend_menu.inc.php
Normal file
105
include/customer_qr_frontend_menu.inc.php
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
<?php
|
||||||
|
if (!defined('PHPWG_ROOT_PATH'))
|
||||||
|
{
|
||||||
|
die('Hacking attempt!');
|
||||||
|
}
|
||||||
|
|
||||||
|
function bratonien_tools_customer_qr_register_frontend_menu($menu_ref_array)
|
||||||
|
{
|
||||||
|
if (defined('IN_ADMIN'))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$settings = bratonien_tools_customer_qr_settings();
|
||||||
|
if (empty($settings['enabled']))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_array($menu_ref_array) || empty($menu_ref_array[0]) || !is_object($menu_ref_array[0]))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$menu = $menu_ref_array[0];
|
||||||
|
if (!method_exists($menu, 'get_id') || $menu->get_id() !== 'menubar' || !method_exists($menu, 'register_block'))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!class_exists('RegisteredBlock'))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$menu->register_block(new RegisteredBlock(
|
||||||
|
'mbBratonienCustomerQr',
|
||||||
|
'QR-Code hochladen',
|
||||||
|
BRATONIEN_TOOLS_ID
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
function bratonien_tools_customer_qr_prepare_frontend_menu($menu_ref_array)
|
||||||
|
{
|
||||||
|
if (defined('IN_ADMIN'))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$settings = bratonien_tools_customer_qr_settings();
|
||||||
|
if (empty($settings['enabled']))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_array($menu_ref_array) || empty($menu_ref_array[0]) || !is_object($menu_ref_array[0]))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$menu = $menu_ref_array[0];
|
||||||
|
if (!method_exists($menu, 'get_id') || $menu->get_id() !== 'menubar')
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$block = $menu->get_block('mbBratonienCustomerQr');
|
||||||
|
if ($block === null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$url = htmlspecialchars(
|
||||||
|
get_root_url().'plugins/'.BRATONIEN_TOOLS_ID.'/customer-qr-upload.php',
|
||||||
|
ENT_QUOTES,
|
||||||
|
'UTF-8'
|
||||||
|
);
|
||||||
|
|
||||||
|
// Bootstrap Darkroom renders raw-content blocks directly in the root navbar.
|
||||||
|
// Keeping this as a separate Piwigo menu block avoids hiding the customer
|
||||||
|
// action inside mbMenu/"Entdecken" and still follows the normal menubar
|
||||||
|
// lifecycle instead of modifying the theme.
|
||||||
|
$block->raw_content = '<li class="nav-item bratonien-customer-qr-nav">'
|
||||||
|
.'<a class="nav-link" href="'.$url.'" title="QR-Code hochladen">'
|
||||||
|
.'<i class="fas fa-qrcode fa-fw" aria-hidden="true"></i> QR-Code hochladen'
|
||||||
|
.'</a></li>';
|
||||||
|
|
||||||
|
if (method_exists($menu, 'set_block_position'))
|
||||||
|
{
|
||||||
|
// Core defaults: Specials=200, Menu=250. Darkroom combines those two as
|
||||||
|
// "Entdecken"; 225 therefore places QR upload directly after it.
|
||||||
|
$menu->set_block_position('mbBratonienCustomerQr', 225);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
add_event_handler(
|
||||||
|
'blockmanager_register_blocks',
|
||||||
|
'bratonien_tools_customer_qr_register_frontend_menu',
|
||||||
|
EVENT_HANDLER_PRIORITY_NEUTRAL + 10
|
||||||
|
);
|
||||||
|
add_event_handler(
|
||||||
|
'blockmanager_prepare_display',
|
||||||
|
'bratonien_tools_customer_qr_prepare_frontend_menu',
|
||||||
|
EVENT_HANDLER_PRIORITY_NEUTRAL + 10
|
||||||
|
);
|
||||||
Reference in New Issue
Block a user