Update of
/var/cvs/contributions/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/navigation
In directory
james.mmbase.org:/tmp/cvs-serv26804/cmsc/taglib/src/java/com/finalist/cmsc/taglib/navigation
Modified Files:
PathTag.java LocationTag.java OnPathTag.java LinkTag.java
Log Message:
CMSC-755 Navigation code refactored to use navigationitem
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/navigation
See also: http://www.mmbase.org/jira/browse/CMSC-755
Index: PathTag.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/navigation/PathTag.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- PathTag.java 30 Nov 2007 10:58:32 -0000 1.11
+++ PathTag.java 28 Jan 2008 21:15:45 -0000 1.12
@@ -12,29 +12,28 @@
import java.util.Iterator;
import java.util.List;
-import com.finalist.cmsc.beans.om.Page;
+import com.finalist.cmsc.beans.om.NavigationItem;
import com.finalist.cmsc.services.sitemanagement.SiteManagement;
import com.finalist.cmsc.taglib.AbstractListTag;
/**
- * path of pages valid attributes for this tag are:
+ * path of items valid attributes for this tag are:
* <ul>
* <li>mode := <strong>menu</strong>|hidden|all</li>
* <li>includeSite := <strong>true</strong>|false</li>
- * <li>page := 1..n</li>
+ * <li>item := 1..n</li>
* </ul>
* Examples: <cmsc:path var="listPath" /> <cmsc:path var="listPath" mode="all"
* includeSite="false" page="${myPage}"/>
*/
-public class PathTag extends AbstractListTag<Page> {
+public class PathTag extends AbstractListTag<NavigationItem> {
- private static final String MODE_ALL = "all";
private static final String MODE_HIDDEN = "hidden";
private static final String MODE_MENU = "menu";
private String mode = MODE_MENU;
private boolean includeSite = true;
- private int page;
+ private int itemNumber;
public boolean isIncludeSite() {
@@ -76,7 +75,7 @@
public int getPage() {
- return page;
+ return itemNumber;
}
@@ -89,36 +88,36 @@
* current page
*/
public void setPage(int page) {
- this.page = page;
+ this.itemNumber = page;
}
@Override
- protected List<Page> getList() {
+ protected List<NavigationItem> getList() {
String path;
- if (page > 0) {
- // get path for a specific page
- path = getPathForPage();
+ if (itemNumber > 0) {
+ // get path for a specific item
+ path = getPathForItem();
}
else {
- // get path for current page
+ // get path for current item
path = getPath();
}
if (path == null) {
return null;
}
- List<Page> pages = SiteManagement.getListFromPath(path);
- if (pages == null) {
- return pages;
+ List<NavigationItem> items = SiteManagement.getListFromPath(path);
+ if (items == null) {
+ return items;
}
if (MODE_MENU.equalsIgnoreCase(mode)) {
boolean hideChildren = false;
- for (Iterator<? extends Page> iter = pages.iterator();
iter.hasNext();) {
- Page page = iter.next();
- if (hideChildren || !page.isInmenu()) {
+ for (Iterator<NavigationItem> iter = items.iterator();
iter.hasNext();) {
+ NavigationItem item = iter.next();
+ if (hideChildren || !item.isInmenu()) {
iter.remove();
hideChildren = true;
}
@@ -126,9 +125,9 @@
}
else if (MODE_HIDDEN.equalsIgnoreCase(mode)) {
boolean showChildren = false;
- for (Iterator<? extends Page> iter = pages.iterator();
iter.hasNext();) {
- Page page = iter.next();
- if (showChildren || page.isInmenu()) {
+ for (Iterator<NavigationItem> iter = items.iterator();
iter.hasNext();) {
+ NavigationItem item = iter.next();
+ if (showChildren || item.isInmenu()) {
iter.remove();
showChildren = true;
}
@@ -136,20 +135,20 @@
}
// remove the first entry if the site itself should not be shown
- if (!includeSite && pages.size() > 0) {
- pages.remove(0);
+ if (!includeSite && items.size() > 0) {
+ items.remove(0);
}
- return pages;
+ return items;
}
- private String getPathForPage() {
+ private String getPathForItem() {
String path = null;
- Page tmpPage = SiteManagement.getPage(page);
- if (tmpPage != null) {
- path = SiteManagement.getPath(tmpPage, true);
+ NavigationItem tmpItem = SiteManagement.getNavigationItem(itemNumber);
+ if (tmpItem != null) {
+ path = SiteManagement.getPath(tmpItem, true);
}
return path;
Index: LocationTag.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/navigation/LocationTag.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- LocationTag.java 26 Nov 2007 11:43:40 -0000 1.7
+++ LocationTag.java 28 Jan 2008 21:15:45 -0000 1.8
@@ -12,8 +12,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.PageContext;
-import com.finalist.cmsc.beans.om.Page;
-import com.finalist.cmsc.beans.om.Site;
+import com.finalist.cmsc.beans.om.*;
import com.finalist.cmsc.services.sitemanagement.SiteManagement;
import com.finalist.cmsc.taglib.CmscTag;
@@ -54,7 +53,7 @@
if (path == null) {
path = getPath();
}
- Page result = SiteManagement.getPageFromPath(path);
+ NavigationItem result = SiteManagement.getNavigationItemFromPath(path);
// handle result
if (result == null) {
Index: OnPathTag.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/navigation/OnPathTag.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- OnPathTag.java 26 Nov 2007 11:43:40 -0000 1.5
+++ OnPathTag.java 28 Jan 2008 21:15:45 -0000 1.6
@@ -17,7 +17,7 @@
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.JspFragment;
-import com.finalist.cmsc.beans.om.Page;
+import com.finalist.cmsc.beans.om.NavigationItem;
import com.finalist.cmsc.services.sitemanagement.SiteManagement;
import com.finalist.cmsc.taglib.CmscTag;
@@ -25,7 +25,7 @@
* Checks if a Site or Page is on the path
*
* @author Wouter Heijke
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
*/
public class OnPathTag extends CmscTag {
/**
@@ -33,7 +33,7 @@
*/
private String var;
- private Object origin;
+ private NavigationItem origin;
@Override
@@ -41,17 +41,15 @@
boolean onpath = false;
String path = getPath();
- List<Page> contents = SiteManagement.getListFromPath(path);
- if (contents != null) {
- for (int i = 0; i < contents.size(); i++) {
- Object item = contents.get(i);
- if (item instanceof Page && origin instanceof Page) {
- if (((Page) item).getId() == ((Page) origin).getId()) {
+ List<NavigationItem> items = SiteManagement.getListFromPath(path);
+ if (items != null) {
+ for (int i = 0; i < items.size(); i++) {
+ NavigationItem item = items.get(i);
+ if (item.getId() == origin.getId()) {
onpath = true;
}
}
}
- }
if (var != null && var.length() > 0) {
PageContext ctx = (PageContext) getJspContext();
@@ -71,7 +69,7 @@
public void setOrigin(Object origin) {
- this.origin = origin;
+ this.origin = SiteManagement.convertToNavigationItem(origin);
}
Index: LinkTag.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/navigation/LinkTag.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- LinkTag.java 28 Jan 2008 12:38:28 -0000 1.16
+++ LinkTag.java 28 Jan 2008 21:15:45 -0000 1.17
@@ -50,8 +50,8 @@
* Parameters added by nested param tag
*/
private Map<String, Object> params = new HashMap<String, Object>();
- private Page page;
- private Page defaultPage;
+ private NavigationItem page;
+ private NavigationItem defaultPage;
@Override
@@ -79,23 +79,26 @@
if (page != null) {
String newlink = null;
- String externalurl = page.getExternalurl();
+ String externalurl = null;
+ if (page instanceof Page) {
+ externalurl = ((Page) page).getExternalurl();
+ }
if (!StringUtils.isBlank(externalurl)) {
if (externalurl.indexOf("://") > -1) {
newlink = externalurl;
}
else {
- Page internalPage = SiteManagement.getPageFromPath(externalurl);
+ NavigationItem internalPage =
SiteManagement.getNavigationItemFromPath(externalurl);
if (internalPage != null) {
String link = SiteManagement.getPath(internalPage,
!ServerUtil.useServerName());
- newlink = getPageUrl(request, link);
+ newlink = getItemUrl(request, link);
}
}
}
else {
String link = SiteManagement.getPath(page,
!ServerUtil.useServerName());
if (link != null) {
- newlink = getPageUrl(request, link);
+ newlink = getItemUrl(request, link);
}
}
// handle result
@@ -125,7 +128,7 @@
private void setPageAndWindowBasedOnPortletDefinition(String path, String
portletdefinition) {
- List<Page> pages = SiteManagement.getListFromPath(path);
+ List<Page> pages = SiteManagement.getPagesFromPath(path);
int lastIndexOfPages = pages.size() - 1;
if (restrictToCurrentPage) {
@@ -181,8 +184,8 @@
}
- private Page getPageWithUrlFragement(String path, String urlfragment) {
- List<Page> pages = SiteManagement.getListFromPath(path);
+ private NavigationItem getPageWithUrlFragement(String path, String
urlfragment) {
+ List<Page> pages = SiteManagement.getPagesFromPath(path);
int lastIndexOfPages = pages.size() - 1;
for (int i = lastIndexOfPages; i >= 0; i--) {
Page currentPage = pages.get(i);
@@ -205,7 +208,7 @@
}
- private String getPageUrl(HttpServletRequest request, String link) throws
JspException, IOException {
+ private String getItemUrl(HttpServletRequest request, String link) throws
JspException, IOException {
String newlink = null;
if (link != null) {
// handle body, call any nested tags
@@ -221,10 +224,24 @@
}
PortalURL u = new PortalURL(host, request, link);
+ if (page instanceof Page) {
+ addPortletParametersToUrl(u);
+ }
+
+ newlink = u.toString();
+
+ if (newlink != null && newlink.length() == 0) {
+ newlink = "/";
+ }
+ }
+ return newlink;
+ }
+
+ private void addPortletParametersToUrl(PortalURL u) {
if (element != null) {
int pageId = page.getId();
if (window == null) {
- window = Search.getPortletWindow(pageId, element, host);
+ window = Search.getPortletWindow(pageId, element);
}
if (window != null) {
u.setRenderParameter(window, "elementId", new String[] {
element });
@@ -236,14 +253,6 @@
u.setRenderParameter(window, paramEntry.getKey(), new String[]
{ paramEntry.getValue().toString() });
}
}
-
- newlink = u.toString();
-
- if (newlink != null && newlink.length() == 0) {
- newlink = "/";
- }
- }
- return newlink;
}
@@ -256,18 +265,7 @@
*/
public void setDest(Object dest) {
if (dest != null) {
- if (dest instanceof Page) {
- page = (Page) dest;
- }
- else if (dest instanceof Integer) {
- page = getPageInteger((Integer) dest);
- }
- else if (dest instanceof String) {
- page = getPageString((String) dest);
- }
- else {
- throw new IllegalArgumentException("only Page, integer or string
allowed: " + dest.getClass());
- }
+ page = SiteManagement.convertToNavigationItem(dest);
}
}
@@ -293,18 +291,7 @@
public void setDefaultpage(Object dest) {
if (dest != null) {
- if (dest instanceof Page) {
- defaultPage = (Page) dest;
- }
- else if (dest instanceof Integer) {
- defaultPage = getPageInteger((Integer) dest);
- }
- else if (dest instanceof String) {
- defaultPage = getPageString((String) dest);
- }
- else {
- throw new IllegalArgumentException("only Page, integer or string
allowed: " + dest.getClass());
- }
+ defaultPage = SiteManagement.convertToNavigationItem(dest);
}
}
@@ -314,38 +301,6 @@
}
- /**
- * Set destination node number to navigate to.
- *
- * @param n
- * the node number
- */
- private Page getPageInteger(Integer n) {
- return SiteManagement.getPage(n.intValue());
- }
-
-
- /**
- * Set the destination node path to navigate to.
- *
- * @param s
- * comma, slash or space separated list of node numbers and/or
- * aliases
- */
- private Page getPageString(String s) {
- Page temp = null;
- if (!StringUtils.isBlank(s)) {
- if (StringUtils.isNumeric(s)) {
- temp = SiteManagement.getPage(Integer.parseInt(s));
- }
- else {
- temp = SiteManagement.getPageFromPath(s);
- }
- }
- return temp;
- }
-
-
public void setVar(String var) {
this.var = var;
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs