Change the icon of a custom menu item

Question

How can I change the icon in a custom menu item?

Answer

For the purpose of this knowledge base, we will use as a code sample from Jahia Remote Publishing module.

    <bean id="Toolbar.Item.RemotePublicationManager" class="org.jahia.services.uicomponents.bean.toolbar.Item">
        <property name="actionItem">
            <bean class="org.jahia.ajax.gwt.client.widget.toolbar.action.OpenWindowActionItem"/>
        </property>
        <property name="parentMenu" ref="editmode.managers.menu"/>
        <property name="titleKey" value="label.remotepublicationmanager"/>
        <property name="icon" value="remotePublicationManager"/>
        [...]
    </bean>

Our objective is to replace the remotePublicationManager icon by a custom icon using CSS.

To do so, first ensure you been has an ID, in the example above, the id is: Toolbar.Item.RemotePublicationManager. This id is automatically translated to the following class name:  .toolbar-item-remotepublicationmanager (note that "." are replaced with "-", and all letters are converted to lowercase).

Then, replace the icon property with a relative path to a transparent pixel, for example:

<property name="icon" value="/modules/remotepublish-parent/images/icons/transparent-pixel"/>

Finally, create a css rule defining the new custom icon for the menu:

.toolbar-item-remotepublicationmanager {
  background-image: url('/modules/remotepublish-parent/images/icons/myIconImage.png') !important
}