*/
public static function props($screen, ?Menu $menu = null): array
{
$profile = Profile::getInstance();
$title = $menu ? $menu->title() : '';
$url = $menu ? admin_url('admin.php?page=' . $menu->slug()) : '';
$submenus = [];
$title_actions = [];
if ($menu instanceof Notifications) $submenus = $menu->headerSubmenus($menu->tab);
if ($menu instanceof WebiliaConnect) $submenus = $menu->navigation();
if ($menu instanceof Resources)
{
$header = $menu->header();
$title = $header['title'];
$title_actions = $header['actions'];
}
if (!$menu && in_array($screen->base, ['edit', 'post'], true))
{
$object = get_post_type_object($screen->post_type);
if ($object)
{
$creating = $screen->base === 'post' && ($GLOBALS['pagenow'] ?? '') === 'post-new.php';
$title = $screen->base === 'edit' ? $object->labels->name : ($creating ? $object->labels->add_new_item : $object->labels->edit_item);
$url = admin_url('edit.php?post_type=' . $screen->post_type);
if (!$creating && current_user_can($object->cap->create_posts ?? 'edit_posts'))
{
$title_actions[] = ['label' => $object->labels->add_new_item, 'url' => admin_url('post-new.php?post_type=' . $screen->post_type)];
}
}
$submenus = (array) apply_filters('DayTidy/F__DayTidy/Menu/Header__post_type_submenus/submenus', [], $screen);
}
if (!$menu && in_array($screen->base, ['edit-tags', 'term'], true))
{
$object = get_taxonomy($screen->taxonomy);
if ($object) $title = $screen->base === 'edit-tags' ? $object->labels->name : $object->labels->edit_item;
$url = add_query_arg(['taxonomy' => $screen->taxonomy, 'post_type' => $screen->post_type], admin_url('edit-tags.php'));
$submenus = (array) apply_filters('DayTidy/F__DayTidy/Menu/Header__taxonomy_submenus/submenus', [], $screen);
}
$section = $menu instanceof Onboarding ? [] : Navigation::section($screen, $menu);
if ($section) $submenus = array_merge($section, $submenus);
$submenus = (array) apply_filters('DayTidy/F__DayTidy/Menu/Header__submenus/submenus', $submenus, $title, $url);
$nav = [];
foreach ($submenus as $item)
{
if (!is_array($item) || !isset($item['title'], $item['url'])) continue;
$nav[] = [
'label' => $item['title'],
'url' => $item['url'],
'active' => !empty($item['selected']),
'icon' => $item['icon'] ?? 'wui-icon--general',
];
}
$connected = Permissions::manage() && Connection::connected();
$actions = (array) apply_filters('DayTidy/F__DayTidy/Menu/Header__actions/actions', Permissions::manage() ? [
['label' => $connected ? __('Connected to Webilia', 'daytidy') : __('Connect with Webilia', 'daytidy'), 'url' => Connection::url(), 'variant' => 'primary'],
] : [], $title, $url);
$announcement = Engagement::action();
if ($announcement) array_unshift($actions, $announcement);
return [
'class' => $connected ? 'daytidy-webilia-connected' : '',
'title' => $menu instanceof Dashboard ? __('DayTidy', 'daytidy') : '',
'home_url' => admin_url('admin.php?page=daytidy'),
'mark_html' => '
',
'page_title' => $menu instanceof Dashboard ? '' : html_entity_decode($title, ENT_QUOTES, 'UTF-8'),
'title_actions' => $title_actions, 'nav' => $nav,
'nav_label' => __('Section navigation', 'daytidy'), 'actions' => $actions,
];
}
/** @param array $props */
public static function render(array $props): string
{
$items = (array) ($props['nav'] ?? []);
$props['nav'] = [];
$header = SharedHeader::render($props);
$links = '';
foreach ($items as $item)
{
if (!is_array($item)) continue;
$url = esc_url($item['url'] ?? '');
if ($url === '') continue;
$icon = (string) ($item['icon'] ?? '');
if (!preg_match('/\\b(wui-icon--[a-z0-9-]+)\\b/', $icon, $matches)) $matches[1] = 'wui-icon--general';
$active = !empty($item['active']);
$links .= '';
}
if ($links === '') return $header;
$nav = '';
$end = strrpos($header, '');
return $end === false ? $header : substr($header, 0, $end) . $nav . substr($header, $end);
}
}