DOKK / manpages / debian 13 / liblemonldap-ng-portal-perl / Lemonldap::NG::Portal::MenuTab.3pm.en
Lemonldap::NG::Portal::MenuTab(3pm) User Contributed Perl Documentation Lemonldap::NG::Portal::MenuTab(3pm)

Lemonldap:NG::Portal::MenuTab - Writing custom menu tabs for LemonLDAP::NG

  package Lemonldap::NG::Portal::Plugins::CustomMenuTab;
  use strict;
  use warnings;
  use Mouse;
  our $VERSION = '0.1';
  extends 'Lemonldap::NG::Portal::Main::Plugin';
  use constant name => "CustomMenuTab";
  has rule => (
      is      => "ro",
      lazy    => 1,
      builder => sub { $_[0]->conf->{customPluginsParams}->{customMenuRule} },
  );
  with 'Lemonldap::NG::Portal::MenuTab';
  sub display {
      my ( $self, $req ) = @_;
      return {
          logo => "wrench",
          name => "myplugin",
          id   => "myplugin",
          html => $self->loadTemplate($req, "mytemplate"),
      };
  }
  sub init {
      my $self = shift;
      # [your initialization stuff]
      return 1;
  }
  1;

A MenuTab module handles displaying an additional tab to authenticated users.

rule

This method must return the text of a rule that decides whether or not the tab is displayed to a user.

Rules can be simple expressions such as "$uid eq "dwho"". If you want the tab to always be displayed, simply return a non-zero integer

    use constant rule => 1;

name

This method must return a name for the plugin. This name is used for ordering the tab in the "portalDisplayOrder" variable. It is not displayed to the user.

display($req)

This method is called by the portal in order to display the tab. It takes the current request object as a parameters, and must return a hash with the following subkeys:

"logo": name of a fontawesome icon for the tab
"name": user-displayed name of the tab, which should be translated in lang.json files.
"id": HTML element id for the tab, must be unique
"html": HTML content of the tab

The "display" method can call helper functions such as "loadTemplate" to render a template

You can use the "portalDisplayOrder" variable to change the order of portal tabs.

Use the "name" of your plugin in this list, or use the special "_unknown" keyword to specify an order for all plugin-managed tabs. If multiple modules are loaded, they will be displayed in the order they were loaded.

    portalDisplayOrder = Appslist ChangePassword CustomMenuTab LoginHistory \
        OidcConsents _unknown Logout

Like each module that inherits from Lemonldap::NG::Portal::Plugin, you can define dedicated routes in a MenuTab plugin.

Logging is provided by "$self->logger" and "$self->userLogger". See Lemonldap::NG::Portal::Main::Plugin for a detailed description of logging levels.

Use OW2 system to report bug or ask for features: <https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/issues>

Lemonldap::NG is available at <https://lemonldap-ng.org/download>

See COPYING file for details.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

2025-11-02 perl v5.40.1