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.

3 comments:

Pavel said...

Hello!
In version 'alfresco-community-installer-201605-win-x64' folder 'CUSTOM' in E:\alfresco-community\tomcat\webapps\share\WEB-INF\classes\alfresco\web-extension\site-webscripts absent.
How to be?

Anonymous said...

Hi Pavel,here custom is not a default folder. This folder is created here for custom use only.
you can use any folder name but make sure to change the path here
folderName.header

Anonymous said...

change sourcePackageRoot in custom-widget.xml file