package com.aggrepoint.winlet.jsp.site.taglib;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;
import com.aggrepoint.winlet.AuthorizationEngine;
import com.aggrepoint.winlet.ContextUtils;
import com.aggrepoint.winlet.site.SiteContext;
import com.aggrepoint.winlet.site.domain.Page;
/**
* @author Jiangming Yang (yangjm@gmail.com)
*/
public class Utils {
/**
* 找到与当前标记相关的页面
*
* @param tag
* @param context
* @param strPage
* @param iLevel
* @return
*/
public static Page getPage(TagSupport tag, PageContext context,
String strPage, int iLevel) {
Page page = null;
SiteContext sc = (SiteContext) context.getRequest().getAttribute(
SiteContext.SITE_CONTEXT_KEY);
AuthorizationEngine ap = ContextUtils
.getAuthorizationEngine((HttpServletRequest) context
.getRequest());
if (strPage != null) {
if (strPage.equals("AE_ROOT"))
page = sc.getBranch().getHome(ap);
else if (strPage.equals("AE_CURRENT"))
page = sc.getPage();
else
page = (Page) context.getAttribute(strPage);
} else if (iLevel >= 0) {
Page currentInTree = sc.getPage();
if (iLevel <= currentInTree.getLevel()) {
page = currentInTree;
while (iLevel < page.getLevel())
page = page.getParent();
}
} else {
TreeTag tt = (TreeTag) TagSupport.findAncestorWithClass(tag,
TreeTag.class);
if (tt != null)
page = tt.getPage();
else {
PathTag pt = (PathTag) TagSupport.findAncestorWithClass(tag,
PathTag.class);
if (pt != null)
page = pt.getPage();
}
}
if (page == null)
page = sc.getPage();
return page;
}
}