Monday, September 21, 2015

Customizing Alfresco 5.0 share header

Hello friends,

This post is for those users who want to make minor changes in new Alfresco header but are non-developers/ admins, who don't know how to create AMPs, how to install them etc.

Here are steps you can follow.

Note :-  If the war files are exploded again, then these changes might get lost. So either you should keep backup OR you can use tomcat\shared\classes\alfresco\web-extension path instead of 
tomcat\webapps\share\WEB-INF\classes\alfresco\web-extension.

1) Create a xml file with name my-extension.xml at  path   tomcat\webapps\share\WEB-INF\classes\alfresco\web-extension\site-data\extensions folder under your Alfresco.

2) Below is content for my-extension.xml
<extension>
  <modules>
    <module>
      <id>Share header customizations</id>
      <auto-deploy>true</auto-deploy>
      <version>1.0</version>
      <customizations>
        <customization>
          <targetPackageRoot>org.alfresco.share.header</targetPackageRoot>
          <sourcePackageRoot>custom.header</sourcePackageRoot>
        </customization>
        <customization>
  <targetPackageRoot>org.alfresco.share.pages</targetPackageRoot>
  <sourcePackageRoot>custom.header</sourcePackageRoot>
  <alwaysApply>
    <webscript>share-header</webscript>
  </alwaysApply>
</customization>
      </customizations>
    </module>
  </modules>

</extension>

3) Create a js file share-header.get.js at tomcat\webapps\share\WEB-INF\classes\alfresco\web-extension\site-webscripts\custom\header folder under your Alfresco.

4) Write below code in share-header.get.js file as per your need.
      a)   To hide create site menu for non-admin user  
             var sitesMenu = widgetUtils.findObject(model.jsonModel, "id", "HEADER_SITES_MENU");
             if (sitesMenu != null) 
            {
                if (!user.isAdmin) 
               {
                   sitesMenu.config.showCreateSite = false;
               }
            }

      b)  To hide help option under user-items
          widgetUtils.deleteObjectFromArray(model.jsonModel, "id", "HEADER_USER_MENU_HELP");

      c)  To hide People menu
         widgetUtils.deleteObjectFromArray(model.jsonModel, "id", "HEADER_PEOPLE");

      d) To hide My Files menu
        widgetUtils.deleteObjectFromArray(model.jsonModel, "id", "HEADER_MY_FILES");

     e)  To hide Shared files menu
        widgetUtils.deleteObjectFromArray(model.jsonModel, "id", "HEADER_SHARED_FILES");

5)  If you want to hide only for non-admin users, write that line in below if condition.
               if (!user.isAdmin) 
               {
                   //write your line here
               }

6) Restart Alfresco server.


Hope this post helps someone.