Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
jaid shaik
multi level navigation portlet not for menu bar
March 15, 2012 8:23 AM
Answer

jaid shaik

Rank: Regular Member

Posts: 170

Join Date: October 7, 2010

Recent Posts

Hi friends,

I created navigation hook
my requirement is onmouseover show the child pages in navigation portlet.
after i deployed navigation hook child pages are not displaying.....its just displaying main menu item.

please check page.jsp {navigation hook}
any errors please let me know.

  1<script src="/html/js/jquery.js"></script>
  2 
  3  <style>
  4 
  5  #nav, #nav ul{
  6     margin:0;
  7     padding:0;
  8     list-style-type:none;
  9     list-style-position:outside;
 10     position:relative;
 11     line-height:1.5em;
 12 }
 13  #nav a:link, #nav a:active, #nav a:visited{
 14    display:block;
 15    padding:0px 5px;
 16    border:1px solid #333;
 17    color:#fff;
 18    text-decoration:none;
 19    background-color:#333;
 20 }
 21
 22#nav a:hover{
 23    background-color:#fff;
 24    color:#333;
 25}
 26#nav li{
 27    float:left;
 28    position:relative;
 29}
 30#nav ul {
 31    position:absolute;
 32    width:12em;
 33    top:1.5em;
 34    display:none;
 35}
 36#nav li ul a{
 37    width:12em;
 38    float:left;
 39}
 40#nav ul ul{
 41    top:auto;
 42    }
 43
 44#nav li ul ul {
 45    left:12em;
 46    margin:0px 0 0 10px;
 47    }
 48
 49#nav li:hover ul ul, #nav li:hover ul ul ul, #nav li:hover ul ul ul ul{
 50    display:none;
 51    }
 52#nav li:hover ul, #nav li li:hover ul, #nav li li li:hover ul, #nav li li li li:hover ul{
 53    display:block;
 54    }
 55 
 56 
 57  </style>
 58
 59<script>
 60
 61function mainmenu(){
 62jQuery(" #nav ul ").css({display: "none"}); // Opera Fix
 63jQuery(" #nav li").hover(function(){
 64        jQuery(this).find('contentnav').css({visibility: "visible",display: "none"}).show(400);
 65        },function(){
 66        jQuery(this).find('contentnav').css({visibility: "hidden"});
 67        });
 68}
 69
 70 jQuery(document).ready(function(){
 71    mainmenu();
 72});
 73
 74
 75
 76
 77</script>
 78   
 79   
 80
 81
 82
 83<%@ include file="/html/taglib/ui/navigation/init.jsp" %>
 84
 85<c:if test="<%= layout != null %>">
 86
 87    <%
 88    Layout rootLayout = null;
 89    boolean hidden = false;
 90
 91    List selBranch = new ArrayList();
 92
 93    selBranch.add(layout);
 94    selBranch.addAll(layout.getAncestors());
 95
 96    if (rootLayoutType.equals("relative")) {
 97        if ((rootLayoutLevel >= 0) && (rootLayoutLevel < selBranch.size())) {
 98            rootLayout = (Layout) selBranch.get(rootLayoutLevel);
 99        }
100        else {
101            rootLayout = null;
102        }
103    }
104    else if (rootLayoutType.equals("absolute")) {
105        int ancestorIndex = selBranch.size() - rootLayoutLevel;
106
107        if ((ancestorIndex >= 0) && (ancestorIndex < selBranch.size())) {
108            rootLayout = (Layout) selBranch.get(ancestorIndex);
109        }
110        else if (ancestorIndex == selBranch.size()) {
111            rootLayout = null;
112        }
113        else {
114            hidden = true;
115        }
116    }
117    %>
118  [b] <div id="nav">[/b]
119    <div class="nav-menu nav-menu-style-<%= bulletStyle %>" >
120   
121
122        <c:choose>
123            <c:when test='<%= (headerType.equals("root-layout") && (rootLayout != null)) %>'>
124
125                <%
126                String layoutURL = PortalUtil.getLayoutURL(rootLayout, themeDisplay);
127                String target = PortalUtil.getLayoutTarget(rootLayout);
128                String layoutName = rootLayout.getName(themeDisplay.getLocale());
129                %>
130
131                <h2>
132                    <a href="<%= layoutURL %>" <%= target %>><%= layoutName %></a>
133                </h2>
134            </c:when>
135            <c:when test='<%= headerType.equals("portlet-title") %>'>
136                <h2><%= themeDisplay.getPortletDisplay().getTitle() %></h2>
137            </c:when>
138            <c:when test='<%= headerType.equals("breadcrumb") %>'>
139                   <p id="heading"> <liferay-ui:breadcrumb /></p>
140            </c:when>
141        </c:choose>
142 [b] <div id="contentnav">[/b]
143        <%
144        if (!hidden) {
145            StringBuilder sb = new StringBuilder();
146
147            _buildNavigation(rootLayout, layout, selBranch, themeDisplay, 1, includedLayouts, nestedChildren, sb);
148
149            String content = sb.toString();
150
151            /*if (!nestedChildren) {
152                content = StringUtil.replace(content, "</a><ul class", "</a></li></ul><ul class");
153                content = StringUtil.replace(content, "</ul></li>", "</ul><ul class=\"layouts\">");
154            }*/
155        %>
156
157            <%= content %>
158
159        <%
160        }
161        %>
162  </div>       
163     </div>
164    </div>
165
166</c:if>
167
168<%!
169private void _buildNavigation(Layout rootLayout, Layout selLayout, List selBranch, ThemeDisplay themeDisplay, int layoutLevel, String includedLayouts, boolean nestedChildren, StringBuilder sb) throws Exception {
170    List layoutChildren = null;
171
172    if (rootLayout != null) {
173        layoutChildren = rootLayout.getChildren(themeDisplay.getPermissionChecker());
174    }
175    else {
176        layoutChildren = LayoutLocalServiceUtil.getLayouts(selLayout.getGroupId(), selLayout.isPrivateLayout(), LayoutConstants.DEFAULT_PARENT_LAYOUT_ID);
177    }
178
179    if (layoutChildren.size() > 0) {
180        StringBuilder tailSB = null;
181
182        if (!nestedChildren) {
183            tailSB = new StringBuilder();
184        }
185
186        sb.append("<ul class=\"layouts level-");
187        sb.append(layoutLevel);
188        sb.append("\">");
189      
190        for (int i = 0; i < layoutChildren.size(); i++) {
191            Layout layoutChild = (Layout)layoutChildren.get(i);
192
193            if (!layoutChild.isHidden() && LayoutPermissionUtil.contains(themeDisplay.getPermissionChecker(), layoutChild, ActionKeys.VIEW)) {
194                String layoutURL = PortalUtil.getLayoutURL(layoutChild, themeDisplay);
195                String target = PortalUtil.getLayoutTarget(layoutChild);
196
197                boolean open = false;
198
199                if (includedLayouts.equals("auto") && selBranch.contains(layoutChild) && (layoutChild.getChildren().size() > 0)) {
200                    open = true;
201                }
202
203                if (includedLayouts.equals("all")) {
204                    open = true;
205                }
206
207                StringBuilder className = new StringBuilder();
208
209                if (open) {
210                    className.append("open ");
211                }
212
213                if (selLayout.getLayoutId() == layoutChild.getLayoutId()) {
214                    className.append("selected ");
215                }
216
217                sb.append("<li ");
218
219                if (Validator.isNotNull(className)) {
220                    sb.append("class=\"");
221                    sb.append(className);
222                    sb.append("\" ");
223                }
224
225                sb.append(">");
226                sb.append("<a ");
227
228                if (Validator.isNotNull(className)) {
229                    sb.append("class=\"");
230                    sb.append(className);
231                    sb.append("\" ");
232                }
233
234                sb.append("href=\"");
235                sb.append(layoutURL);
236                sb.append("\" ");
237                sb.append(target);
238                sb.append("> ");
239                sb.append(layoutChild.getName(themeDisplay.getLocale()));
240                sb.append("</a>");
241
242                if (open) {
243                    StringBuilder layoutChildSB = null;
244
245                    if (nestedChildren) {
246                        layoutChildSB = sb;
247                    }
248                    else {
249                        layoutChildSB = tailSB;
250                    }
251
252                    _buildNavigation(layoutChild, selLayout, selBranch, themeDisplay, layoutLevel + 1, includedLayouts, nestedChildren, layoutChildSB);
253                }
254
255                sb.append("</li>");
256            }
257        }
258       
259        sb.append("</ul>");
260
261        if (!nestedChildren) {
262            sb.append(tailSB);
263        }
264    }
265}
266%>




i am looking the output like this for navigation portlet link

Any help in this regard...



thanks
Jaid.shaik
jaid shaik
RE: multi level navigation portlet not for menu bar
March 15, 2012 11:54 PM
Answer

jaid shaik

Rank: Regular Member

Posts: 170

Join Date: October 7, 2010

Recent Posts

Hi,

Any one please let me know about the navigation hook.



thanks
Jaid.Shaik