0fe28e83ee
Generic: Project CI / Tests (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Joomla: Extension CI / Build RC Pre-Release (pull_request) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Generic: Repo Health / Access control (pull_request) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 6s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 9s
Universal: PR Check / Validate PR (pull_request) Failing after 16s
Generic: Project CI / Lint & Validate (pull_request) Successful in 32s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 44s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || 'development' }}) (pull_request_target) Failing after 8s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 2s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 3s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
64 lines
1.9 KiB
PHP
64 lines
1.9 KiB
PHP
<?php
|
|
/**
|
|
* Copyright (C) 2025 Moko Consulting <hello@mokoconsulting.tech>
|
|
*
|
|
* This file is part of a Moko Consulting project.
|
|
*
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
*/
|
|
|
|
/**
|
|
* Horizontal menu — Component item layout
|
|
*/
|
|
|
|
defined('_JEXEC') or die;
|
|
|
|
use Joomla\CMS\Filter\OutputFilter;
|
|
use Joomla\CMS\HTML\HTMLHelper;
|
|
|
|
$attributes = [];
|
|
|
|
if ($item->anchor_title) {
|
|
$attributes['title'] = $item->anchor_title;
|
|
}
|
|
|
|
if ($item->anchor_css) {
|
|
$attributes['class'] = $item->anchor_css;
|
|
}
|
|
|
|
if ($item->anchor_rel) {
|
|
$attributes['rel'] = $item->anchor_rel;
|
|
}
|
|
|
|
$linktype = $item->title;
|
|
|
|
if ($item->menu_icon) {
|
|
// Strip Joomla-injected padding classes that conflict with FA icon sizing
|
|
$item->menu_icon = trim(preg_replace('/\bp-[0-5]\b/', '', $item->menu_icon));
|
|
if ($itemParams->get('menu_text', 1)) {
|
|
$linktype = '<span class="' . $item->menu_icon . '" aria-hidden="true"></span>' . $item->title;
|
|
} else {
|
|
$linktype = '<span class="' . $item->menu_icon . '" aria-hidden="true"></span><span class="visually-hidden">' . $item->title . '</span>';
|
|
}
|
|
}
|
|
|
|
if ($item->browserNav == 1) {
|
|
$attributes['target'] = '_blank';
|
|
$attributes['rel'] = 'noopener noreferrer';
|
|
} elseif ($item->browserNav == 2) {
|
|
$options = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,' . $params->get('window_open');
|
|
$attributes['onclick'] = "window.open(this.href, 'targetWindow', '" . $options . "'); return false;";
|
|
}
|
|
|
|
$linkClass = 'nav-link mod-menu-horizontal__link';
|
|
if ($item->deeper) {
|
|
$linkClass .= ' dropdown-toggle';
|
|
$attributes['data-bs-toggle'] = 'dropdown';
|
|
$attributes['role'] = 'button';
|
|
$attributes['aria-expanded'] = 'false';
|
|
}
|
|
|
|
$attributes['class'] = $linkClass;
|
|
|
|
echo HTMLHelper::_('link', OutputFilter::ampReplace(htmlspecialchars($item->flink, ENT_COMPAT, 'UTF-8', false)), $linktype, $attributes);
|