📄 cmstemplatemodules.java
字号:
}
String faqUri = link(getRequestContext().getUri() + "?" + PARAM_CATEGORYFOLDER + "=" + resourceName);
String title = getCmsObject().readPropertyObject(
resourceName,
CmsPropertyDefinition.PROPERTY_TITLE,
false).getValue(null);
if (CmsStringUtil.isEmptyOrWhitespaceOnly(title)) {
if (LOG.isWarnEnabled()) {
LOG.warn(Messages.get().getBundle().key(
Messages.LOG_ERR_MISSING_PROP_2,
resourceName,
CmsPropertyDefinition.PROPERTY_TITLE));
}
title = resource.getName();
}
// append the anchor
result.append("<a href=\"");
result.append(faqUri);
result.append("\">");
if (level == startLevel) {
result.append("<b>").append(title).append("</b>");
} else {
result.append(title);
}
result.append("</a>");
// append number of FAQ articles on "top-level" FAQs
if (level == startLevel) {
result.append(" (");
result.append(faqCount);
result.append(")\n");
}
result.append("\n");
lastLevel = level;
}
// close the last open list item
result.append("</li>\n");
// close the list
result.append("</ul>\n");
}
return result.toString();
}
/**
* Creates a html <li> list of all folders inside the current folder.<p>
*
* Additionally, behind each folder the number of resources of a specified resource type gets listed.<p>
*
* @param resourceTypeName the resource type name to count resources inside folders
* @param attrs optional html attributes to use in the <ul> tag
* @return a html <li> list of all folders inside the current folder
* @throws CmsException if something goes wrong
*/
public String buildHtmlNavList(String resourceTypeName, String attrs) throws CmsException {
I_CmsResourceType resType = OpenCms.getResourceManager().getResourceType(resourceTypeName);
return buildHtmlNavList(resType.getTypeId(), attrs);
}
/**
* Creates a HTML anchor from the values of three page context attribute names.
*
* @param hrefAttrib the name of the page context attribute containing the link URL
* @param descrAttrib the name of the page context attribute containing the link description
* @param targetAttrib the name of the page context attribute containing the link target
* @return an HTML anchor
*/
public String getAnchor(String hrefAttrib, String descrAttrib, String targetAttrib) {
String attribHref = (String)getJspContext().getAttribute(hrefAttrib);
String attribDescr = (String)getJspContext().getAttribute(descrAttrib);
boolean openBlank = Boolean.valueOf((String)getJspContext().getAttribute(targetAttrib)).booleanValue();
String description = attribDescr;
if (CmsStringUtil.isEmpty(attribDescr) || attribDescr.startsWith("???")) {
description = attribHref;
}
String href = attribHref;
if (!attribHref.toLowerCase().startsWith("http")) {
href = link(attribHref);
}
String target = "";
if (openBlank) {
target = "_blank";
}
StringBuffer anchor = new StringBuffer();
anchor.append("<a href=\"").append(href).append("\"");
if (CmsStringUtil.isNotEmpty(description)) {
anchor.append(" title=\"").append(description).append("\"");
}
if (CmsStringUtil.isNotEmpty(target)) {
anchor.append(" target=\"").append(target).append("\"");
}
anchor.append(">").append(description).append("</a>");
return anchor.toString();
}
/**
* Returns the URI of the currently displayed category folder.<p>
*
* @return the URI of the currently displayed category folder
*/
public String getCategoryFolder() {
if (m_categoryFolder == null) {
// get the category folder from request
m_categoryFolder = getRequest().getParameter(PARAM_CATEGORYFOLDER);
if (CmsStringUtil.isEmptyOrWhitespaceOnly(m_categoryFolder)) {
// no folder found in request, use folder parameter
m_categoryFolder = getRequest().getParameter(PARAM_FOLDER);
}
}
return m_categoryFolder;
}
/**
* Returns the number of resources with a given resource type inside a folder.<p>
*
* @param foldername the folder to read resources
* @param resourceTypeId the desired resource type ID
*
* @return the number of resources
*/
public int getResourceCount(String foldername, int resourceTypeId) {
int result = -1;
try {
// filter the resources with the specified id
CmsResourceFilter filter = CmsResourceFilter.DEFAULT.addRequireType(resourceTypeId);
List resources = getCmsObject().readResources(foldername, filter, false);
result = resources.size();
} catch (CmsException e) {
// error reading the resources
if (LOG.isErrorEnabled()) {
LOG.error(org.opencms.db.Messages.get().getBundle().key(
org.opencms.db.Messages.ERR_READ_RESOURCES_WITH_TYPE_2,
new Integer(resourceTypeId),
foldername), e);
}
result = -1;
}
return result;
}
/**
* Returns the number of resources with a given resource type inside a folder.<p>
*
* @param foldername the folder to read resources
* @param resourceTypeName the desired resource type name
*
* @return the number of resources
*/
public int getResourceCount(String foldername, String resourceTypeName) {
try {
I_CmsResourceType resType = OpenCms.getResourceManager().getResourceType(resourceTypeName);
return getResourceCount(foldername, resType.getTypeId());
} catch (CmsException e) {
// error getting resource type ID
if (LOG.isErrorEnabled()) {
LOG.error(org.opencms.db.Messages.get().getBundle().key(
org.opencms.loader.Messages.ERR_UNKNOWN_RESTYPE_NAME_REQ_1,
resourceTypeName), e);
}
return -1;
}
}
/**
* Returns true if the currently displayed folder contains subfolders which are used as category folders.<p>
*
* This method has to be called after the method {@link CmsTemplateModules#buildHtmlNavList(int, String)}.<p>
*
* @return true if the currently displayed folder contains subfolders which are used as category folders
*/
public boolean hasCategoryFolders() {
return m_hasCategoryFolders;
}
/**
* Checks if two dates in the page context attributes have the same date and differ only from their time.<p>
*
* @param startDateAttrib the name of the page context attribute containing the start date string
* @param endDateAttrib the name of the page context attribute containing the end date string
* @return true if the two dates differ only in time, otherwise false
*/
public boolean isSameDate(String startDateAttrib, String endDateAttrib) {
String timeString = (String)getJspContext().getAttribute(startDateAttrib);
long timestamp = (new Long(timeString)).longValue();
Calendar calStart = new GregorianCalendar();
calStart.setTimeInMillis(timestamp);
timeString = (String)getJspContext().getAttribute(endDateAttrib);
timestamp = (new Long(timeString)).longValue();
Calendar calEnd = new GregorianCalendar();
calEnd.setTimeInMillis(timestamp);
return ((calStart.get(Calendar.DAY_OF_YEAR) == calEnd.get(Calendar.DAY_OF_YEAR)) && (calStart.get(Calendar.YEAR) == calEnd.get(Calendar.YEAR)));
}
/**
* Saves a {@link Date} object in the page context that was created from the value of
* a specified page context attribute.<p>
*
* @param dateAttrib the name of the page context attribute containing the date string
*/
public void setDate(String dateAttrib) {
String timeString = (String)getJspContext().getAttribute(dateAttrib);
long timestamp = (new Long(timeString)).longValue();
Date date = new Date(timestamp);
getJspContext().setAttribute("date", date);
}
/**
* Returns true if the bread crumb navigation should be shown.<p>
*
* This method has to be called after the method {@link CmsTemplateModules#buildHtmlNavList(int, String)}.<p>
*
* @return true if the bread crumb navigation should be shown
*/
public boolean showNavBreadCrumb() {
return hasCategoryFolders() || !getRequest().getParameter(PARAM_FOLDER).equals(getCategoryFolder());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -