com.atlassian.confluence.content.render.xhtml.migration.exceptions.UnknownMacroMigrationException: The macro 'next_previous_links' is unknown.

Customizing the Management Console

The user interfaces of every Carbon product allows you to configure, monitor, tune, and maintain WSO2 products. The components that formulate the design and style of these user interfaces are defined in resource (JAR) files. 

The user interface of every Carbon product consists of two layers:

  • The common product layout/design inherited from the Carbon platform: All the common templates, styles (CSS files), and images are stored in the Carbon core UI bundle, which is named org.wso2.carbon.ui-<version-number>.jar (<version-number> is the particular version of the bundle). This bundle is responsible for the overall look and feel of the entire Carbon platform.

  • The styles/images unique to each product: Each Carbon product (that is built on Carbon kernel) has another style bundle, which contains all the overriding style sheets and images: org.wso2.<product-name>.styles-<version-number>.jar.

You can customize the user interfaces by modifying these resource files. You need to create a fragment bundle for the original resource file that specifies a required bundle for it. Then, you can pack the modified resource files in the required bundle. The files in the required bundle will get precedence and will override the files in the original bundle.

You can use this same technique to customize any aspect of the user interfaces. The advantage of this technique is that you will not lose your customizations when you apply official patches to the product by replacing the original bundles.

For example, when you access the Management Console using the following URL, by default, it has the WSO2 product logo as shown below: https://10.100.5.72:9443/carbon/

You view all images in this guide when you follow these instructions for WSO2 Carbon 4.4.6.

current logo of the Management Console

Follow the steps below to change this logo.

  1. Find the <PRODUCT_HOME>/repository/component/patches/org.wso2.carbon.ui_<version-number>.jar file, and extract it.

    Find the bundle that contains the resource files you need to modify. In this case, the logo and the related CSS files are contained in the org.wso2.carbon.ui_<version-number>.jar file.

  2.  Create a new Maven project using your IDE (e.g. org.wso2.carbon.ui_<version-number>_patch). 

    This creates a project for a new bundle to pack the files you modify. Since the symbolic name of the original bundle is ‘org.wso2.carbon.ui’, this patch bundle should have the symbolic name as part of its name (e.g. ‘org.wso2.carbon.ui_<version-number>_patch’). Also, you need to use this name with the symbolic name as part of it, as the required bundle in the fragment bundle, which you will create later.

  3. Add the following content to the pom.xml file of the  org.wso2.carbon.ui_<version-number>_patch project.    

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.wso2.carbon</groupId>
        <artifactId>org.wso2.carbon.ui_<version-number>_patch</artifactId>
        <version>1.0.0</version>
        <packaging>bundle</packaging>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>3.0.1</version>
                    <extensions>true</extensions>
                    <configuration>
                        <instructions>
                            <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                            <Bundle-Name>${project.artifactId}</Bundle-Name>
                            <Export-Package>web.admin.*</Export-Package>
                        </instructions>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
  4. Create the web/, admin/, css/, images/ and layout/ directory locations as they were in the original bundle as shown in the file structure below. 

    file structure

  5. Create a new CSS file (e.g. customizations.css)  with the following content.

    #header div#header-div div.left-logo {
    	background-image: url( ../images/new-logo.png );
        background-repeat: no-repeat;
        background-position: left top;
        background-size: contain;
    	height: 40px;
    	width: 300px;
    	margin-top: 23px;
    	margin-left: 20px;
    	float: left;
    }
  6. Add the customizations.css file to the <org.wso2.carbon.ui_<version-number>_patch>/ web/admin/css/ directory.  

    This file includes the logo customization styles. 

  7. Copy the content of the <org.wso2.carbon.ui_<version-number>.jar>/ web/admin/layout/template.jsp file to the <org.wso2.carbon.ui_<version-number>_patch>/ web/admin/layout/template.jsp file.

  8. Add the following line to the  <org.wso2.carbon.ui_<version-number>_patch>/ web/admin/layout/template.jsp file: 

    <link href="../admin/css/customizations.css" rel="stylesheet" type="text/css" media="all"/>
  9. Add the below image as the new logo (e.g.  new-logo.png) to the  <org.wso2.carbon.ui_<version-number>_patch>/web/admin/images/ directory.

    new logo

  10. Create another new Maven project using your IDE (e.g. org.wso2.carbon.ui_<version-number>_fragment).

    This creates a project for the fragment bundle. Since the symbolic name of the original bundle is ‘org.wso2.carbon.ui’, the fragment host value of this bundle should be the same (e.g. o rg.wso2.carbon.ui_<version-number>_fragment). This fragment bundle will not contain anything (expect the pom.xml file) when it is built.  

  11. Add the following content to the pom.xml file of the org.wso2.carbon.ui_<version-number>_fragment project.  

     This pom.xml file of the fragment bundle define properties including the required bundle value (i.e. ‘org.wso2.carbon.ui_<version-number>_patch’). 

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.wso2.carbon</groupId>
        <artifactId>org.wso2.carbon.ui_<version-number>_fragment</artifactId>
        <version>1.0.0</version>
        <packaging>bundle</packaging>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>3.0.1</version>
                    <extensions>true</extensions>
                    <configuration>
                        <instructions>
                            <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                            <Bundle-Name>${project.artifactId}</Bundle-Name>
                            <Require-Bundle>org.wso2.carbon.ui_<version-number>_patch</Require-Bundle>
                            <Fragment-Host>org.wso2.carbon.ui</Fragment-Host>
                        </instructions>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
  12. Build the following two projects by executing the following command: mvn clean install 
    • org.wso2.carbon.ui_<version-number>_fragment

    • org.wso2.carbon.ui_<version-number>_patch
  13.    Once the project is built, copy the two JAR files (from the <PROJECT_HOME>/target/ directory) to the <CARBON_HOME>/repository/components/dropins/ directory.
    • org.wso2.carbon.ui_<version-number>_fragment-1.0.0.jar

    • org.wso2.carbon.ui_<version-number>_patch-1.0.0.jar
  14. Restart the WSO2 Carbon server.
  15. Access the Management Console of WSO2 Carbon using the following URL:
    You view the new logo, which the patch bundle contains as shown below.

    Management Console with the new logo

com.atlassian.confluence.content.render.xhtml.migration.exceptions.UnknownMacroMigrationException: The macro 'next_previous_links2' is unknown.