Interface Builder helps to create Menu and Render a new page in Admin Panel. This User Interface of Admin Panel generates base on XML file that we called Interface Builder Definition File. Generally we save all files in below location:
/development/definition/interface_builder
Interface Builder Definitions are combination of one or more Navigation Tag (<navigation>). Each Navigation has a two basic parts to contain top menu(<parent>) and a set of Left menus information(<child>). See below area of configuration in Navigation Tag.
<navigation name="tab_name"></navigation>
For example:
<navigation name="blog"></navigation>
We set default page URL in Action. See below Example:
<parent>
<action>/category/manage/blog-cat</action>
</parent>
We can assign a Icon path to display in Tab Menu. See below example:
<icon>/themeroot/admin/images/icons/developer.png</icon>
A tab can have a list of drop down menu. It is recommended to add all Sub Menu in left menu definition also to manage user access correctly. See below example:
<submenu>
<!-- Single Menu -->
<item>
<title>Manage Orders</title>
<link>/appstore/manageorders</link>
</item>
<!-- Multiple Menu -->
<item type="multiple">
<title>Products</title>
<link>/information/manage/product</link>
<!-- Second Level Child Menu -->
<child>
<childitem>
<title>Manage Products</title>
<link>/information/manage/product</link>
</childitem>
<childitem>
<title>Product Categories</title>
<link>/category/manage/product-cat</link>
</childitem>
</child>
</item>
<item>
<title>Payment Settings</title>
<link>/admin/config/paymentmethod</link>
</item>
<item>
<title>Store Settings</title>
<link>/admin/config/appstoresettings</link>
</item>
</submenu>
Left menu contain the list of left menu with links. See below example
<child>
<menu>
<title>Blog Posts</title>
<items>
<item>
<title>Add Post</title>
<link>/information/manage/blogpost/add</link>
</item>
<item>
<title>Manage Post</title>
<link>/information/manage/blogpost</link>
</item>
</items>
<adminicon>
<type>FilePath</type>
<location>/component/blog/interface_builder/post.jpg</location>
</adminicon>
</menu>
<menu>
<title>Blog Categories</title>
<items>
<item>
<title>Add Category</title>
<link>/category/manage/blog-cat/add</link>
</item>
<item>
<title>Manage Categories</title>
<link>/category/manage/blog-cat</link>
</item>
</items>
<adminicon>
<type>FilePath</type>
<location>/component/blog/interface_builder/category.jpg</location>
</adminicon>
</menu>
</child>
We create a batch of menu in <child> tag. Each <menu> tag can contain a list of <item> tag contain a menu item. Each menu item has a title and link of the page to load in admin panel.
A menu list can have a menu icon to show in dashboard. See below example:
<adminicon>
<type>FilePath</type>
<location>/component/blog/interface_builder/category.jpg</location>
</adminicon>
1.You can see example in : /development/definition/interface_builder to see some patterns and try to create new menu.
2.Clear Cache after changing the XML
3.See the User Permission in admin update page (Admin Panel > User Management > Administrators)
<?xml version="1.0" encoding="utf-8"?>
<InterfaceBuilder>
<navigation name="catalog">
<parent>
<title>Store</title>
<action>/appstore/manageorders</action>
<submenu>
<item>
<title>Manage Orders</title>
<link>/appstore/manageorders</link>
</item>
<item type="multiple">
<title>Products</title>
<link>/information/manage/product</link>
<child>
<childitem>
<title>Manage Products</title>
<link>/information/manage/product</link>
</childitem>
<childitem>
<title>Product Categories</title>
<link>/category/manage/product-cat</link>
</childitem>
</child>
</item>
<item>
<title>Payment Settings</title>
<link>/admin/config/paymentmethod</link>
</item>
<item>
<title>Store Settings</title>
<link>/admin/config/appstoresettings</link>
</item>
</submenu>
<acl>
<group>superadmin</group>
</acl>
<sort_order>7</sort_order>
<icon>/component/appstore/interface_builder/blog.jpg</icon>
</parent>
<child>
<menu>
<title>Orders</title>
<items>
<item>
<title>Manage Orders</title>
<link>/appstore/manageorders</link>
</item>
</items>
<adminicon>
<type>FilePath</type>
<location>/component/appstore/interface_builder/orders.jpg</location>
</adminicon>
</menu>
<menu>
<title>Product Categories</title>
<items>
<item>
<title>Add Category</title>
<link>/category/manage/product-cat/add</link>
</item>
<item>
<title>Manage Categories</title>
<link>/category/manage/product-cat</link>
</item>
</items>
<adminicon>
<type>FilePath</type>
<location>/component/appstore/interface_builder/product-cat.jpg</location>
</adminicon>
</menu>
<menu>
<title>Products</title>
<items>
<item>
<title>Add New product</title>
<link>/information/manage/product/add</link>
</item>
<item>
<title>Manage Products</title>
<link>/information/manage/product</link>
</item>
</items>
<adminicon>
<type>FilePath</type>
<location>/component/appstore/interface_builder/products.jpg</location>
</adminicon>
</menu>
<menu>
<title>Store Settings</title>
<items>
<item>
<title>Common Settings</title>
<link>/admin/config/appstoresettings</link>
</item>
</items>
<adminicon>
<type>FilePath</type>
<location>/component/appstore/interface_builder/orders.jpg</location>
</adminicon>
</menu>
</child>
</navigation>
</InterfaceBuilder>