📄 cmsworkplace.java
字号:
* @return the parsed SimpleDateFormat pattern String
*/
public static String getCalendarJavaDateFormat(String dateFormat) {
dateFormat = CmsStringUtil.substitute(dateFormat, "%", ""); // remove all "%"
dateFormat = CmsStringUtil.substitute(dateFormat, "m", "${month}");
dateFormat = CmsStringUtil.substitute(dateFormat, "H", "${hour}");
dateFormat = CmsStringUtil.substitute(dateFormat, "Y", "${4anno}");
dateFormat = dateFormat.toLowerCase();
dateFormat = CmsStringUtil.substitute(dateFormat, "${month}", "M");
dateFormat = CmsStringUtil.substitute(dateFormat, "${hour}", "H");
dateFormat = CmsStringUtil.substitute(dateFormat, "y", "yy");
dateFormat = CmsStringUtil.substitute(dateFormat, "${4anno}", "yyyy");
dateFormat = CmsStringUtil.substitute(dateFormat, "m", "mm"); // minutes with two digits
dateFormat = dateFormat.replace('e', 'd'); // day of month
dateFormat = dateFormat.replace('i', 'h'); // 12 hour format
dateFormat = dateFormat.replace('p', 'a'); // pm/am String
return dateFormat;
}
/**
* Returns the full Workplace resource path to the selected resource.<p>
*
* @param resourceName the name of the resource to get the resource path for
*
* @return the full Workplace resource path to the selected resource
*/
public static String getResourceUri(String resourceName) {
StringBuffer result = new StringBuffer(256);
result.append(getSkinUri());
result.append(resourceName);
return result.toString();
}
/**
* Returns the path to the skin resources.<p>
*
* @return the path to the skin resources
*/
public static String getSkinUri() {
if (m_skinUri == null) {
m_skinUri = OpenCms.getSystemInfo().getContextPath() + RFS_PATH_RESOURCES;
}
return m_skinUri;
}
/**
* Returns the path to the cascading stylesheets.<p>
*
* @param jsp the JSP context
* @return the path to the cascading stylesheets
*/
public static String getStyleUri(CmsJspActionElement jsp) {
if (m_styleUri == null) {
CmsProject project = jsp.getCmsObject().getRequestContext().currentProject();
try {
jsp.getCmsObject().getRequestContext().setCurrentProject(
jsp.getCmsObject().readProject(CmsProject.ONLINE_PROJECT_ID));
m_styleUri = jsp.link("/system/workplace/commons/style/");
} catch (CmsException e) {
LOG.error(e.getLocalizedMessage());
} finally {
jsp.getCmsObject().getRequestContext().setCurrentProject(project);
}
}
return m_styleUri;
}
/**
* Returns the path to the cascading stylesheets.<p>
*
* @param jsp the JSP context
* @param filename the name of the stylesheet
* @return the path to the cascading stylesheets
*/
public static String getStyleUri(CmsJspActionElement jsp, String filename) {
if (m_styleUri == null) {
CmsProject project = jsp.getCmsObject().getRequestContext().currentProject();
try {
jsp.getCmsObject().getRequestContext().setCurrentProject(
jsp.getCmsObject().readProject(CmsProject.ONLINE_PROJECT_ID));
m_styleUri = jsp.link("/system/workplace/commons/style/");
} catch (CmsException e) {
// ins log schreiben
} finally {
jsp.getCmsObject().getRequestContext().setCurrentProject(project);
}
}
return m_styleUri + filename;
}
/**
* Updates the user settings in the given workplace settings for the current user, reading the user settings
* from the database if required.<p>
*
* @param cms the cms object for the current user
* @param settings the workplace settings to update (if <code>null</code> a new instance is created)
* @param update flag indicating if settings are only updated (user preferences)
*
* @return the current users workplace settings
*
* @see #initWorkplaceSettings(CmsObject, CmsWorkplaceSettings, boolean)
*/
public static CmsWorkplaceSettings initUserSettings(CmsObject cms, CmsWorkplaceSettings settings, boolean update) {
if (settings == null) {
settings = new CmsWorkplaceSettings();
}
// save current workplace user & user settings object
CmsUser user;
if (update) {
try {
// read the user from db to get the latest user information if required
user = cms.readUser(cms.getRequestContext().currentUser().getId());
} catch (CmsException e) {
// can usually be ignored
if (LOG.isInfoEnabled()) {
LOG.info(e.getLocalizedMessage());
}
user = cms.getRequestContext().currentUser();
}
} else {
user = cms.getRequestContext().currentUser();
}
// store the user and it's settings in the Workplace settings
settings.setUser(user);
settings.setUserSettings(new CmsUserSettings(cms, user));
// return the result settings
return settings;
}
/**
* Updates the given workplace settings, also re-initializing
* the state of the Workplace to the users preferences (for example setting the startup site and project).
*
* The user settings will also be updated by calling <code>{@link #initUserSettings(CmsObject, CmsWorkplaceSettings, boolean)}</code>
* before updating the workplace project, selected site etc.<p>
*
* @param cms the cms object for the current user
* @param settings the workplace settings to update (if <code>null</code> a new instance is created)
* @param update flag indicating if settings are only updated (user preferences)
*
* @return the current users initialized workplace settings
*
* @see #initUserSettings(CmsObject, CmsWorkplaceSettings, boolean)
*/
public static synchronized CmsWorkplaceSettings initWorkplaceSettings(
CmsObject cms,
CmsWorkplaceSettings settings,
boolean update) {
// init the workplace user settings
settings = initUserSettings(cms, settings, update);
// save current project
settings.setProject(cms.getRequestContext().currentProject().getId());
// switch to users preferred site
String siteRoot = settings.getUserSettings().getStartSite();
if (siteRoot.endsWith("/")) {
// remove trailing slash
siteRoot = siteRoot.substring(0, siteRoot.length() - 1);
}
if (CmsStringUtil.isNotEmpty(siteRoot) && (CmsSiteManager.getSite(siteRoot) == null)) {
// this is not the root site and the site is not in the list
siteRoot = OpenCms.getWorkplaceManager().getDefaultUserSettings().getStartSite();
if (siteRoot.endsWith("/")) {
// remove trailing slash
siteRoot = siteRoot.substring(0, siteRoot.length() - 1);
}
}
boolean access = false;
CmsResource res = null;
try {
// check access to the site
res = cms.readResource("/");
access = cms.hasPermissions(res, CmsPermissionSet.ACCESS_VIEW);
} catch (CmsException e) {
// error reading site root, in this case we will use a readable default
if (LOG.isInfoEnabled()) {
LOG.info(e.getLocalizedMessage(), e);
}
}
if ((res == null) || !access) {
List sites = CmsSiteManager.getAvailableSites(cms, true);
if (sites.size() > 0) {
siteRoot = ((CmsSite)sites.get(0)).getSiteRoot();
cms.getRequestContext().setSiteRoot(siteRoot);
}
}
// set the current site
settings.setSite(siteRoot);
// set the preferred folder to display
settings.setExplorerResource(settings.getUserSettings().getStartFolder());
// get the default view from the user settings
settings.setViewUri(OpenCms.getLinkManager().substituteLink(cms, settings.getUserSettings().getStartView()));
// save the editable resource types for the current user
settings.setResourceTypes(initWorkplaceResourceTypes(cms));
return settings;
}
/**
* Stores the settings in the given session.<p>
*
* @param session the session to store the settings in
* @param settings the settings
*/
static void storeSettings(HttpSession session, CmsWorkplaceSettings settings) {
// save the workplace settings in the session
session.setAttribute(CmsWorkplaceManager.SESSION_WORKPLACE_SETTINGS, settings);
}
/**
* Initializes a Map with all editable resource types for the current user.<p>
*
* @param cms the CmsObject
* @return all editable resource types in a map with the resource type id as key value
*/
private static Map initWorkplaceResourceTypes(CmsObject cms) {
Map resourceTypes = new HashMap();
List allResTypes = OpenCms.getResourceManager().getResourceTypes();
for (int i = 0; i < allResTypes.size(); i++) {
// loop through all types and check which types can be displayed and edited for the user
I_CmsResourceType type = (I_CmsResourceType)allResTypes.get(i);
// get the settings for the resource type
CmsExplorerTypeSettings settings = OpenCms.getWorkplaceManager().getExplorerTypeSetting(type.getTypeName());
if (settings != null) {
// determine if this resource type is editable for the current user
CmsPermissionSet permissions = settings.getAccess().getPermissions(cms);
if (permissions.requiresWritePermission()) {
// user is allowed to edit this resource type
resourceTypes.put(new Integer(type.getTypeId()), type);
}
}
}
return resourceTypes;
}
/**
* Returns all parameters of the current workplace class
* as hidden field tags that can be inserted in a form.<p>
*
* @return all parameters of the current workplace class
* as hidden field tags that can be inserted in a html form
*/
public String allParamsAsHidden() {
StringBuffer result = new StringBuffer(512);
Map params = allParamValues();
Iterator i = params.keySet().iterator();
while (i.hasNext()) {
String param = (String)i.next();
Object value = params.get(param);
result.append("<input type=\"hidden\" name=\"");
result.append(param);
result.append("\" value=\"");
String encoded = CmsEncoder.encode(value.toString(), getCms().getRequestContext().getEncoding());
result.append(encoded);
result.append("\">\n");
}
return result.toString();
}
/**
* Returns all present request parameters as String.<p>
*
* The String is formatted as a parameter String ("param1=val1¶m2=val2") with UTF-8 encoded values.<p>
*
* @return all present request parameters as String
*/
public String allParamsAsRequest() {
StringBuffer retValue = new StringBuffer(512);
HttpServletRequest request = getJsp().getRequest();
Iterator paramNames = request.getParameterMap().keySet().iterator();
while (paramNames.hasNext()) {
String paramName = (String)paramNames.next();
String paramValue = request.getParameter(paramName);
retValue.append(paramName + "=" + CmsEncoder.encode(paramValue, getCms().getRequestContext().getEncoding()));
if (paramNames.hasNext()) {
retValue.append("&");
}
}
return retValue.toString();
}
/**
* Builds the end html of the body.<p>
*
* @return the end html of the body
*/
public String bodyEnd() {
return pageBody(HTML_END, null, null);
}
/**
* Builds the start html of the body.<p>
*
* @param className optional class attribute to add to the body tag
* @return the start html of the body
*/
public String bodyStart(String className) {
return pageBody(HTML_START, className, null);
}
/**
* Builds the start html of the body.<p>
*
* @param className optional class attribute to add to the body tag
* @param parameters optional parameters to add to the body tag
* @return the start html of the body
*/
public String bodyStart(String className, String parameters) {
return pageBody(HTML_START, className, parameters);
}
/**
* Generates a html select box out of the provided values.<p>
*
* @param parameters a string that will be inserted into the initial select tag,
* if null no parameters will be inserted
* @param options the options
* @param values the option values, if null the select will have no value attributes
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -