`

OpenCms 如何创建 Front-end editing

阅读更多

想要自己写一个login和editor页面,可以让用户直接登录就可以编辑某个页面。从网上找到了一段登陆的代码:

<%@ page session="true" import="org.opencms.main.*, org.opencms.jsp.*,org.opencms.file.*, java.lang.String" %>
<% CmsJspActionElement cms = new CmsJspActionElement(pageContext,request,response);
 
String user = request.getParameter("user");
String password = request.getParameter("password");
String url = request.getParameter("url");
 
if(url==null || url.length()==0 || url.equalsIgnoreCase("null")) url = "";
 
boolean loginFailed = false;
 
//form was submitted => try to log in and redirect to given URl
if((user != null) && (user.length() != 0)) {
	try{
		CmsObject cmsObject = cms.getCmsObject();
		cmsObject.loginUser(user, password);
		CmsProject cmsproject = cmsObject.readProject("Offline");
		cmsObject.getRequestContext().setCurrentProject(cmsproject);
		cmsObject.getRequestContext().setSiteRoot("/sites/default/");
 
		//login successful - redirect to given URL
		response.sendRedirect(url);
 
	} catch ( CmsException e ) {
		loginFailed = true;
	}
}
%>
 
<%
//no user submitted or login failed => show login form
if(user==null || user.length()==0 || loginFailed) {
%>
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	<html>
	<head>
		<title>Frontend login</title>
	</head>
	<body onload="document.forms[0].elements[0].focus()">
<%
	if (loginFailed) {
%>
		<em>Login failed!</em>
<%
	}
%>
	<h1>please login:</h1>
	<form method="post" action="<%=cms.info("opencms.url")%>">
		<input type="hidden" name="url" value="<%=url%>" />
		<p>username: <input name="user" /></p>
		<p>password: <input name="password" type="password" /></p>
		<p><input type="submit" /></p>
	</form>
	</body>
	</html>
<%
}
%>
登陆成功了,可是opencms却不让我编辑页面,只能编辑/site/default/下的资源。一开始以为是
cmsObject.getRequestContext().setSiteRoot("/sites/default/");

引起的,可是把root设置到'/site/mysite/'却还是不行,没办法,我只好调试opencms的源代码,发现每次跳转到新的页面,site root 都会被定到"/site/default/",而我要的文件在/site/mysite/下面,为什么会这样呢?后来开到org.opencms.workplace.CmsLoginHelper.login方法后发现原来少了这段代码:

// only for workplace users, so that direct edit works
        if (OpenCms.getRoleManager().hasRole(getCms(), CmsRole.WORKPLACE_USER)) {
            // get / create the workplace settings 
            CmsWorkplaceSettings wpSettings = getSettings();
            if (wpSettings == null) {
                // create the settings object
                wpSettings = new CmsWorkplaceSettings();
                wpSettings = initWorkplaceSettings(getCms(), wpSettings, false);
            }
            // set the settings for the workplace
            wpSettings.setSite(getCms().getRequestContext().getSiteRoot());
            wpSettings.setProject(getCms().getRequestContext().currentProject().getUuid());
            wpSettings.setUser(getCms().getRequestContext().currentUser());
            HttpSession session = getJsp().getRequest().getSession(true);
            storeSettings(session, wpSettings);
        }

 原来我没有把siteRoot设置到session里面,所以每次条到新的jsp页面siteRoot就会被重置了。希望有这方面需求的兄弟看完可以有点启示,不用再挣扎了。

这里是我写的代码:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import="org.opencms.jsp.*, org.opencms.main.*, org.opencms.file.*, java.lang.String, org.opencms.workplace.*" %>
<%
String uri = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort();
String userName = request.getParameter("name");
String password = request.getParameter("password");
String projectName = "Offline";

try{
	
	new CmsLoginHelper(pageContext,request,response).login(userName, password, projectName, "/sites/mysite", "news/news_1.html");
	response.sendRedirect("/opencms/opencms/system/workplace/editors/editor.jsp?resourcelist=&resource=news%2Fnews_1.html");

} catch (Exception e) {
	System.out.println("Can' t login user " + userName + ": " + e);
	e.printStackTrace();
	// Redirect to error-Site
	response.sendRedirect(uri+request.getParameter("errorUri"));
}
%>
 

 

 

 

分享到:
评论

相关推荐

    org.opencms.welcome-8.5.2.zip

    标题 "org.opencms.welcome-8.5.2.zip" 暗示这是一个与OpenCMS相关的开源项目,OpenCMS是一个用Java开发的、用于构建和管理企业级网站内容的开源内容管理系统。8.5.2是该版本的标识,意味着这是OpenCMS在特定时间点...

    OpenCms7--源代码编译安装-分享[收集].pdf

    接着,配置OpenCms数据库连接,通常是通过修改`opencms-system/WEB-INF/classes/opencms.properties`文件,设置数据库URL、用户名和密码。最后,启动Tomcat,访问http://localhost:8080/opencms,如果看到OpenCms的...

    OpenCms创建网站过程图解——献给OpenCms的初学者们

    1. **定位配置文件**:找到`tomcat/webapps/cms623/WEB-INF/config/opencms-system.xml`文件。 2. **增加配置**:在文件中增加以下配置: ```xml ``` 这段配置指定了新的站点文件夹`testWeb`...

    marmots-opencms-maven-plugin:一个帮助 Opencms 模块开发的 Maven 插件

    土拨鼠-opencms-maven-插件 一个帮助 Opencms 模块开发的 Maven 插件。 在查看它的实际效果 发布目标 通过 JLAN 服务器将修改后的资源发布到 opencms 配置属性 &lt; url&gt;smb://Admin:admin@localhost:1446/OPENCMS/ ...

    OpenCms-Struts-开源

    标题中的“OpenCms-Struts-开源”意味着这是一个关于将OpenCms与Struts框架整合的开源项目。在描述中提到,该项目可能已停止更新,但对有兴趣接管或学习OpenCms与Struts集成的人来说,它仍具有一定的参考价值。 ...

    opencms-maven-plugin

    OpenCms Maven 插件是由 Kamomileware 开发的一款工具,专为 OpenCms(一个开源的内容管理系统)设计,旨在简化模块的打包、部署以及原型创建过程。这款插件是基于 Java 开发的,因此与 Maven 构建系统紧密结合,为...

    OpenCMS内容管理系统入门教程

    #### 五、使用OpenCMS创建网站 - **Workplace的使用**: - Workplace是OpenCMS的核心工作界面,用于内容的创建和管理。 - **模块的创建/导出/导入**: - 可以创建自定义模块来扩展系统功能。 - 支持模块的导出和...

    OpenCms JMX Integration-开源

    OpenCms是一款流行的开源内容管理系统,它为网站的创建、管理和发布提供了强大的工具。而"OpenCms JMX Integration"是针对这个系统的一个扩展,它实现了对OpenCms的Java管理扩展(JMX)集成,使得系统管理员可以更加...

    OpenCMS教程

    本章介绍了如何使用OpenCMS创建简单的页面,并且深入探讨了JSP模版的创建与使用,为后续的学习打下了坚实的基础。 #### 四、OPENCMS XML内容管理 **4.1 创建一个简单的XSD** - **4.1.1** 学习XSD(XML Schema ...

    如何创建OpenCms后台管理模块

    OpenCms是一个开源的内容管理系统,它提供了一个强大的平台来创建、管理和发布数字内容。要创建一个后台管理模块,你需要理解OpenCms的工作原理以及它的模块系统。以下是对创建OpenCms后台管理模块的详细步骤和相关...

    OpenCMS Calendar Module-开源

    1. **事件创建与编辑**:用户可以通过系统界面创建新的事件,填写事件的标题、描述、日期和时间等信息,并可以设置事件的持续时间、重复频率以及相关联的资源。 2. **日历视图**:提供多种日历视图,如日视图、周...

    OpenCms ANT Build-开源

    OpenCms ANT Build允许从构建树(例如,在您的IDE中)构建OpenCms模块,然后可以将其安装在OpenCms服务器上。 它包含2个用于编写自定义生成过程脚本的ANT任务。 包含带有build.xml的示例树。

    opencms创建站点

    Opencms 创建站点指南 Opencms 是一个基于 Java 的开源内容管理系统,提供了强大的站点创建和管理功能。本文将详细介绍如何使用 Opencms 创建一个站点,从下载和安装 Opencms 到创建站点和模板的每一个步骤都会被...

    opencms-资源插件

    mvn de.zebrajaeger:opencms-resource-plugin:createResource \ -DnewResourceName=abc 带自定义图标 mvn de.zebrajaeger:opencms-resource-plugin:createResource \ -DnewResourceName=abc \ -DiconSource=...

    ant-opencms-1.2.jar.zip

    《Ant与OpenCMS集成:深入理解ant-opencms-1.2.jar.zip》 在IT行业中,构建自动化是提高开发效率的关键环节,而Apache Ant作为Java领域内广泛使用的构建工具,扮演着至关重要的角色。Ant以其XML为基础的构建文件...

    OpenCMS 6.2.x User-Manual

    综上所述,OpenCMS 6.2.x 提供了一套完整的内容管理系统解决方案,不仅支持基本的网页创建与编辑功能,还包含了高级功能如联系表单创建、图像画廊展示等,极大地提升了网站制作的灵活性和效率。对于企业和个人而言,...

    OpenCms-install.rar_opencms

    OpenCms是一款开源的内容管理系统,它提供了一个基于Web的界面,用于创建、管理和发布网站内容。本教程将详细讲解如何安装并配置OpenCms,包括与之配套的Tomcat应用服务器和MySQL数据库。 首先,我们需要了解Tomcat...

Global site tag (gtag.js) - Google Analytics