We are trying to implement support in omeka to show/hide installed plugins from admin navigation menu ((admin_navigation_main) for certain user roles. Super user will have access to this module to configure which plugins to hide from which user role.
Plugin will be removed from the navigation menu if it is configured to be hidden. Module present a matrix(plugins against user roles), super user can check/uncheck which plugin is to show/hide from which user role.
See how it works: https://cloud.githubusercontent.com/assets/3896702/7884310/183d78dc-061d-11e5-9c24-9df3f3fd9d4c.PNG
The implementation of this module is working fine with one exception, that is, when plugin name differs from the name (label) used for that plugin in the menu. For example, 'User Profile' plugin has menu label 'User Profile', therefore it works fine. However, it does not work for 'Geolocation' plugin which uses 'Map' label in the menu.
We store a configuration key for each user role and plugin combination to the database.
This key is based on user role and plugin name, for example 'researcher_userprofile_hide'.
At the time when menu (admin_navigation_main) is built we use this key to find if a plugin is to be hidden or shown.
We do this by processing menu list which is available in terms of Zend Pages. We compare a plugin name (from the configuration key) with the corresponding 'label' in Page. However, that label is not always same as the name of the plugin, which means our implementation fails when happens.
In Omeka when admin navigation menu (admin_navigation_main) is built no correspondence is stored between a label shown in the menu and its plugin. Any suggestion how can we find such a correspondence between a menu entry and its plugin?
Source code of our implementation is available at: https://github.com/libis/Omeka-1/commit/20ec52d140b949d114f5ff1136c1042cf8352f58
In the comment section on this link you can also find screen shots of the screens used in this module.