http://www.opencms-wiki.org/api.php?action=feedcontributions&user=Max+Ferstl&feedformat=atomOpenCms Wiki - User contributions [en]2024-03-29T09:08:17ZUser contributionsMediaWiki 1.18.3http://www.opencms-wiki.org/wiki/Java_Server_Faces_(JSF)Java Server Faces (JSF)2014-05-14T08:41:22Z<p>Max Ferstl: /* Useful Links */</p>
<hr />
<div>Integrating OpenCms with JavaServer Faces 1.1 is possible. JSF 1.2 seems not to work with up to OpenCms 7.0.4. This articles lists all the work that has to be done to use JSF within OpenCms.<br />
<br />
There seem to be people [http://lists.opencms.org/pipermail/opencms-dev/2011q1/035258.html out there] that have OpenCms and JSF 2 running. However, this requires at least code modification on the OpenCms side! Any further information is welcome.<br />
<br />
== Prerequisites ==<br />
<br />
Before you start you have to decide on the software versions you want to use. On the Apache website there is a [http://myfaces.apache.org/compatibility.html compatibility list] for Apache's software stack (Tomcat, MyFaces).<br />
<br />
===== The following combinations are known to work =====<br />
please extend!<br />
{|<br />
|-<br />
!Java Runtime<br />
!OpenCms<br />
!Servlet Container/Application Server<br />
!JSF Implementation<br />
|-<br />
| 1.5 || 7.0.1 (WebApp 2.4) || Tomcat 6.0.14 || [http://javaserverfaces.dev.java.net/ Sun RI] 1.1_02<br />
|-<br />
| 1.5 || 7.0.1 (WebApp 2.4) || Tomcat 5.5.23 || Sun RI 1.1_02<br />
|-<br />
| 1.5 || 7.0.1 (WebApp 2.4) || Tomcat 5.5.23 || [http://myfaces.apache.org/ MyFaces] 1.1.5<br />
|-<br />
| 1.5 || 6.2.3 (WebApp 2.3) || Tomcat 6.0.14 || Sun RI 1.1_02<br />
|-<br />
| 1.5 || 7.0.2 (WebApp 2.4) || Tomcat 6.0.14 || Sun RI 1.1_02<br />
|-<br />
| 1.6 || 7.0.4 (WebApp 2.4) || Tomcat 5.5.26 || [http://myfaces.apache.org/ MyFaces] 1.1.5<br />
|-<br />
| 1.5 || 6.2.3 (WebApp 2.3) || Tomcat 6.0.14 || Sun RI 1.1_02<br />
|-<br />
| 1.5 || 7.0.2 (WebApp 2.4) || Tomcat 6.0.14 || Sun RI 1.1_02<br />
|-<br />
| 1.6 || 7.0.4 (WebApp 2.4) || Tomcat 5.5.26 || [http://myfaces.apache.org/ MyFaces] 1.1.5<br />
|-<br />
| 1.5 || 6.2.3 (WebApp 2.3) || Tomcat 6.0.14 || Sun RI 1.1_02<br />
|-<br />
| 1.5 || 7.0.2 (WebApp 2.4) || Tomcat 6.0.14 || Sun RI 1.1_02<br />
|-<br />
| 1.6 || 7.0.4 (WebApp 2.4) || Tomcat 5.5.26 || [http://myfaces.apache.org/ MyFaces] 1.1.5<br />
|-<br />
| 1.5 || 6.2.3 (WebApp 2.3) || Tomcat 6.0.14 || Sun RI 1.1_02<br />
|-<br />
| 1.5 || 7.0.2 (WebApp 2.4) || Tomcat 6.0.14 || Sun RI 1.1_02<br />
|-<br />
| 1.6 || 7.0.4 (WebApp 2.4) || Tomcat 5.5.26 || [http://myfaces.apache.org/ MyFaces] 1.1.5<br />
|}<br />
<br />
===== The following seem NOT to work: =====<br />
<br />
* JSF 1.2 in general. Tested with Sun's RI (Mojara) and Apache Myfaces.<br />
* With Mojara the JSF page is rendered, but output of JSF tags is out of order and partially overwriting JSP output. In addition to this the output is truncated, depending on the <f:view>-tag's content size.<br />
* With Apache MyFaces the output of the JSF page is incomplete. Non-JSF output seems to be missing completely.<br />
===== The following seem to NOT work: =====<br />
<br />
* JSF 1.2 in general. Tested with Sun's RI (Mojara) and Apache Myfaces.<br />
* With Mojara the JSF page is rendered, but output of JSF tags is out of order and partially overwriting JSP output. In addition to this the output is truncated, depending on the <f:view>-tag's content size.<br />
* With Apache MyFaces the output of the JSF page is incomplete. Non-JSF output seems to be missing completely.<br />
===== The following seem to NOT work: =====<br />
<br />
* JSF 1.2 in general. Tested with Sun's RI (Mojara) and Apache Myfaces.<br />
* With Mojara the JSF page is rendered, but output of JSF tags is out of order and partially overwriting JSP output. In addition to this the output is truncated, depending on the <f:view>-tag's content size.<br />
* With Apache MyFaces the output of the JSF page is incomplete. Non-JSF output seems to be missing completely.<br />
<br />
== Integrating OpenCms and Java Server Faces ==<br />
<br />
=== Copy JSF Libraries ===<br />
<br />
First, get the JSF implementation of your choice. Unzip the distribution and search for<br />
the JAR files named <tt>jsf-api.jar</tt> and <tt>jsf-impl.jar</tt> (usually in the lib<br />
directory). Copy these two archives to <tt>WEB-INF/lib</tt> in your OpenCms installation<br />
directory.<br />
<br />
=== Adapt Webapplication Descriptor ===<br />
<br />
Next you have to configure the servlet mapping in <tt>WEB-INF/web.xml</tt>. Add the following<br />
sections:<br />
<br />
<source lang="xml"><br />
<servlet><br />
<servlet-name>Faces Servlet</servlet-name><br />
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class><br />
<load-on-startup>1</load-on-startup><br />
</servlet><br />
<br />
<servlet-mapping><br />
<servlet-name>Faces Servlet</servlet-name><br />
<url-pattern>/faces/*</url-pattern><br />
</servlet-mapping><br />
</source><br />
<br />
Note that it has been reported, that suffix-mapping (e.g, *.jsf) should work as well<br />
but I couldn't get it to work, so I used prefix mapping, i.e. "/faces/*", instead.<br />
<br />
=== Create Faces Configuration ===<br />
<br />
Next you can create a JSF configuration file in <tt>WEB-INF/faces-config.xml</tt><br />
like this:<br />
<br />
<source lang="xml"><br />
<?xml version="1.0"?><br />
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"<br />
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee<br />
http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"<br />
version="1.2"><br />
<navigation-rule><br />
<from-view-id>/opencms/jsf-example.jsp</from-view-id><br />
<navigation-case><br />
<from-outcome>login</from-outcome><br />
<to-view-id>/opencms/jsf-example2.jsp</to-view-id><br />
</navigation-case><br />
</navigation-rule><br />
<br />
<managed-bean><br />
<managed-bean-name>user</managed-bean-name><br />
<managed-bean-class>com.corejsf.UserBean</managed-bean-class><br />
<managed-bean-scope>session</managed-bean-scope><br />
</managed-bean><br />
</faces-config><br />
</source><br />
<br />
=== Add Bean Classes ===<br />
<br />
Add bean classes as you need them to <tt>WEB-INF/classes</tt> or in a JAR file, as<br />
you like.<br />
<br />
=== Restart Servlet Container ===<br />
<br />
Restart your servlet container.<br />
<br />
=== Use your JSF pages with the correct URLs ===<br />
<br />
Create your JSF pages and access them with the correct URLs. There is nothing special<br />
in creating JSF pages. Just go to OpenCms' workplace, click on "New", select "JSP"<br />
as the type for you new JSF page and insert your code.<br />
<br />
When you want to access a JSF page use the base URL<br />
http://myhost:8080/opencms/faces/opencms/ with the path of the file in workplace<br />
appended. For example if you have a file jsf-example.jsp in your root-folder of the<br />
<tt>/sites/default</tt> site, access it via the URL<br />
http://myhost:8080/opencms/faces/opencms/jsf-example.jsp.<br />
<br />
Here's a simple servlet filter that rewrites any pages ending with ".jsf" to /opencms/faces/opencms . This way, you can click on the JSF pages within the editor and get the preview to work correctly. You'll need to name all your JSF pages ".jsf" for this to work. The filter requires the [http://commons.apache.org/lang/ Apache Commons Lang] libraries:<br />
<br />
<source lang="java"><br />
package opencms-support.servlet;<br />
<br />
import java.io.IOException;<br />
import javax.servlet.*;<br />
import javax.servlet.http.*;<br />
<br />
import org.apache.commons.lang.StringUtils;<br />
<br />
<br />
public class RewriteFilter implements Filter {<br />
/**<br />
* Logger for this class<br />
*/<br />
private FilterConfig filterConfig;<br />
public void destroy() {<br />
}<br />
<br />
public void doFilter(ServletRequest request, ServletResponse response,<br />
FilterChain chain) throws IOException, ServletException {<br />
HttpServletRequest req = (HttpServletRequest) request;<br />
HttpServletResponse res = (HttpServletResponse) response;<br />
String uri = req.getRequestURI();<br />
String queryString = req.getQueryString();<br />
if ((uri.startsWith("/opencms/opencms/")) && (uri.endsWith(".jsf") )) {<br />
uri = StringUtils.replace(uri, "/opencms/opencms/", "/opencms/faces/opencms/"); <br />
if (StringUtils.isNotBlank(queryString)) {<br />
uri = uri + "?" + queryString;<br />
}<br />
res.sendRedirect(uri);<br />
return; <br />
}<br />
chain.doFilter(request, response);<br />
}<br />
public void init(FilterConfig filterConfig) throws ServletException {<br />
this.filterConfig = filterConfig;<br />
}<br />
<br />
}<br />
</source><br />
<br />
<br />
You'll also need to map it in web.xml: <br />
<br />
<source lang="xml"><br />
<filter><br />
<filter-name>RewriteFilter</filter-name><br />
<filter-class>opencms-support.servlet.RewriteFilter</filter-class><br />
</filter><br />
<br />
<filter-mapping><br />
<filter-name>RewriteFilter</filter-name><br />
<url-pattern>/*</url-pattern><br />
</filter-mapping><br />
</source><br />
<br />
== Useful Links ==<br />
<br />
* http://www.nabble.com/forum/ViewPost.jtp?post=13485806&framed=y<br />
* http://www.nabble.com/forum/ViewPost.jtp?post=15958214&framed=y<br />
* http://forum.java.sun.com/thread.jspa?threadID=5236855&tstart=555<br />
* http://lists.opencms.org/pipermail/opencms-dev/2011q1/035258.html</div>Max Ferstlhttp://www.opencms-wiki.org/wiki/RFS_SynchronizationRFS Synchronization2014-05-14T08:40:46Z<p>Max Ferstl: Removed link to opencms-forum.de</p>
<hr />
<div>== Synchronizing RFS and VFS ==<br />
During development it is very useful to synchronize the VFS (the virtual file system of OpenCms, located in the database) with a directory in the RFS (real file system on your disk where you develop stuff). <br />
<br />
You will probably not want to develop all files directly within the OpenCms Administration UI. Firstly, because the source editor does not support syntax highlighting. Secondly, because the files in the VFS are outside of your version control system.<br />
<br />
<br />
That way you can develop files on your disk under version control, within your favourite IDE and use the synchronization function to update the changes within OpenCms. However, if you change Java code, library dependencies or classpath resources, you will have to reload the OpenCms web application or even restart your servlet engine.<br />
<br />
A disadvantage of this method is that if you decide to synchronize a directory which is under version control OpenCms will also import any files or folders your SCM software uses to store metadata about your working directory, e.g. .svn and CVS. If that happens, be careful not to delete the folders in the VFS. Otherwise, the next time you start a synchronization, OpenCms will delete them from RFS and thus corrupt your working copy.<br />
<br />
==Synchronization cache (#synclist.txt) ==<br />
OpenCms creates a file <tt>#synclist.txt</tt> in the RFS synchronization folder. It contains names and timestamps of all files of the last synchronization run and is the basis to determine changes when synchronization is called again. You need to take care not to delete this file by mistake when you clean your build. If you do, the next synchronization with OpenCms will not work correctly. You will have to build and synchronize again to get it back working.<br />
<br />
== How does synchronization work? ==<br />
<br />
If you start synchronization OpenCms will copy all files from all VFS directories part of the synchronization settings to the RFS synchronization directory. It will also copy all files from the RFS to the VFS which are not already there. When a file exists in the VFS and in the RFS, OpenCms will update whichever copy is older. <br />
The names and timestamps of all synchronized files are cached in <tt>#synclist.txt</tt> in the RFS synchronization directory. This speeds up subsequent synchronization runs.<br />
<br />
The pathnames that you enter in the synchronization settings are absolute VFS pathnames and must be relative to the given RFS directory. <br />
<br />
'''Example:''' If you set the RFS synchronization path to <br />
<tt>/home/jdoe/checkouts/eshop-module/build/</tt> <br />
and set the VFS synchronization path to <br />
<tt>/system/modules/com.acme.eshop/</tt><br />
OpenCms expects files and folders in the RFS at <br />
<tt>/home/jdoe/checkouts/eshop-module/build/system/modules/com.acme.eshop/</tt>.<br />
<br />
After synchronization, you can find the synchronization cache file at<br />
<tt>/home/jdoe/checkouts/eshop-module/build/#synclist.txt</tt>.<br />
<br />
== How to avoid a synchronization disaster ==<br />
<br />
If you notice that synchronization included files which shouldn't have been copied, do not just delete the files from the RFS. They are listed in the synchronization cache file and would be deleted from the VFS during the next synchronization. To get back to a clean state delete the synchronization cache file as well. This makes sure that the mechanism restarts from the beginning. <br />
<br />
To avoid this problem completely you should not synchronize directories which already exist in the initial OpenCms setup. Only synchronize directories that you created and which are part of the build with which you want to synchronize. Otherwise, you will lose files and might need to reinstall OpenCms.</div>Max Ferstlhttp://www.opencms-wiki.org/wiki/Static_Export_configurationStatic Export configuration2014-05-14T08:39:24Z<p>Max Ferstl: /* Configuring Static Export After Publish */ Removed opencms-forum.de link</p>
<hr />
<div>== Static Export Configuration ==<br />
For an introduction, see: [[Static Export]]<br />
<br />
=== The Role of the OpenCms Error Handler during Static Export ===<br />
The static export is always based on a specialized "Error-Handler". This errorhandler is registered for then complete OpenCms web application, so whenever a request points to nonexistent resources that belong to OpenCms, then the webserver will call the file-not-found handler of OpenCms and the errorhandler will take over. <br />
<br />
If a request points to a location where a file should be exported (usually '''/opencms/export/'''), but is not yet exported then the errorhandler will cause the resource to be generated dynamically and will return the processing result to the client.<br />
<br />
There are two ways, how this Handler is used to trigger the export of an existing file into the file system:<br />
<br />
* If a user requests a file by calling its ''expor''t location and if the file is not yet exported then the Error handler will take over, as described above. In this situation, OpenCms will always return the requested page to the client, as if it would exist in this location. But OpenCms can also be configured to write the requested resource into the file system along with that. <br /> In this way, after the first failing request to an exportable resource, the file will exist in the file system to satisfy future requests for the same resource. This will speed all future requests for the given file, as all future requests can be directly satisfied with that exported file. This method is called [[Static Export On Demand]]. With this exported strategy, all exported files will be deleted from the file system, when something new is published. After that, whenever an exportable resource is requested, it will be re-created in its current state and written to the file system again.<br />
<br />
* Another export method is called [[Static Export After Publish]]. It also uses the error handler's mechanism for exporting files. If this method of publishing is active, then OpenCms will export files as soon as changes are ''published''. At that point, OpenCms will check the Export configuration for any resource sets that are defined there. When at least one file that belongs to a defined resource set is exported, then all other files that belong to that set are also exported. Resource sets are defined by one or more regular expressions and all files whose path matches one of these expressions, belongs to the given resource set.<br />If a file is exported, which belongs to no resource set at all, then ''all'' exportable files in the system are exported. The export is triggered by OpenCms calling it's own Errorhandler via HTTP for each file to be exported. As described above, the errorhandler will return the resulting page for this request. That page will then be exported into the file System. If a file has existed before, then it will be overwritten.<br />
<br />
* [[Static Export after publish in the Background]]. (This can be done with a custom export handler.)<br />
<br />
Because the Error handler is used for both Static Export methods, it must be working correctly, otherwise the export will fail. Also, for Static Export After Publish, the URL for exportable files must be corretly configured in the export configuration, so that opencms is able to call it's own errorhandler via HTTP.<br />
<br />
== External Links ==<br />
=== Configuring Static Export After Publish ===<br />
* [http://lists.opencms.org/pipermail/opencms-dev/2005q4/021164.html Configuring Static Export Tutorial] <br />
<br />
[[Category:Getting OpenCms up and running]]</div>Max Ferstlhttp://www.opencms-wiki.org/wiki/SpringSpring2014-05-14T08:38:48Z<p>Max Ferstl: Removed link to opencms-forum.de</p>
<hr />
<div><br />
A basic Spring/OpenCms 'getting-started' project: http://www.sendspace.com/file/x2sipm<br />
<br />
== Spring Framework 2.0 == <br />
Integrating the Spring Framework usually involves definition of a Web Application Context <tt>listener-class</tt> in ''web.xml''. The Spring Framework already comes with such a listener, <tt>org.springframework.web.context.ContextLoaderListener</tt>. <br />
<br />
<listener><br />
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class><br />
</listener><br />
<br />
It starts the Spring ApplicationContext/BeanFactory. It might be required to override the ''context-pararm'' <tt>contextConfigLocation</tt> to tell the listener where it can find the configuration file (the default ''param-value'' is /WEB-INF/applicationContext.xml). <br />
<br />
<context-param><br />
<param-name>contextConfigLocation</param-name><br />
<param-value>classpath:/application-context.xml</param-value><br />
<description>Tells Spring where to find its configuration</description><br />
</context-param><br />
<br />
The above example shows how to access an ''application-context.xml'' which is a classpath resource (deployed in ''WEB-INF/lib/*.jar'' or ''WEB-INF/classes'').<br />
<br />
=== Deployment Restriction ===<br />
The Spring Framework should be deployed directly to <tt>WEB-INF/lib</tt>. Defining a context listener requires the listener class to be available during startup of the Web Application. It is inconvenient to deploy listener classes as part of an OpenCms module because all included classes are unavailable to the WebappClassLoader prior to publishing the module. This causes listener initializations to fail and leads to a bootstrap problem. With Tomcat, Web Application startup fails if a single listener fails to initialize. There is an error in the ''catalina.out'' log file saying <br />
<br />
SEVERE: Error listenerStart<br />
SEVERE: Context [...] startup failed due to previous errors<br />
<br />
Usually, the ''localhost_log'' contains more information including a stack trace.<br />
<br />
The obvious workaround for deploying listeners within a module would be to import and publish the module first and define the listener in a second step. Removal of the module requires the reverse order.<br />
<br />
=== Accessing the Application Context ===<br />
It might be a good idea to supply your own application context class and tell the listener to start it. Your class can keep a static reference of the initialized context instance. You can do that by subclassing ''org.springframework.web.context.support.XmlWebApplicationContext''.<br />
<br />
The application context is configured with another ''context-param''. It is read by ''ContextLoaderListener''.<br />
<br />
<context-param><br />
<param-name>contextClass</param-name><br />
<param-value>com.acme.spring.AcmeSpringContext</param-value><br />
<description>Tells the Spring ContextListener which class to use</description><br />
</context-param><br />
<br />
The custom ''contextClass'' must be available at context start and thus may not be part of a module.<br />
<br />
=== Hibernate Session in View Pattern ===<br />
If you want to use Hibernate along with Spring you can use the appropriate hibernate filter to manage sessions.<br />
<br />
<filter><br />
<filter-name>hibernateFilter</filter-name><br />
<description><br />
Creates sessions and transactions for each mapped request<br />
</description><br />
<filter-class><br />
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter<br />
</filter-class><br />
</filter><br />
<br />
Map the filter to the ''OpenCmsServlet''.<br />
<br />
<filter-mapping><br />
<filter-name>hibernateFilter</filter-name><br />
<servlet-name>OpenCmsServlet</servlet-name><br />
</filter-mapping><br />
<br />
Each request to the OpenCms servlet will be surrounded by a Hibernate session.<br />
<br />
This is somewhat suboptimal as the session is created even when it is not required. Your code which requires a session and transactions might not be executed at all. Nevertheless, the [http://www.hibernate.org/43.html Open Session in View pattern] is well-known and the easiest solution to the lazy initialization problem which occurs when lazy members of a Hibernate proxy object are accessed after its session has been closed.</div>Max Ferstlhttp://www.opencms-wiki.org/wiki/Talk:Authentication_per_PageTalk:Authentication per Page2014-05-14T08:38:25Z<p>Max Ferstl: Created page with "Due to all links broken, perhaps one could delete the page. --~~~~"</p>
<hr />
<div>Due to all links broken, perhaps one could delete the page. --[[User:Max Ferstl|Max Ferstl]] 10:38, 14 May 2014 (CEST)</div>Max Ferstlhttp://www.opencms-wiki.org/wiki/Authentication_per_PageAuthentication per Page2014-05-14T08:38:00Z<p>Max Ferstl: Removed link to opencms-forum.de, perhaps one could delete the page.</p>
<hr />
<div>== External Links ==<br />
<br />
[[Category:Using / Maintaining an installation of OpenCms]]</div>Max Ferstlhttp://www.opencms-wiki.org/wiki/Adding_Admin_ToolsAdding Admin Tools2014-04-24T11:53:30Z<p>Max Ferstl: Removed link to opencms-forum.de</p>
<hr />
<div>[[Category:Extending OpenCms]]<br />
== Admin Tool parameters ==<br />
Tools can be given parameters which are automatically appended to the generated tool buttons. Parameters are set using the property ''admintoolhandler-args'' and may have the following syntax.<br />
<br />
HandlerArgs: "params:" ParamDef ("&" ParamDef)* "|" "path:" Path<br />
Path: VFS or other path<br />
ParamDef: Identifier "=" (MacroDef|Value)<br />
Identifier: String value<br />
Value: String value<br />
MacroDef: "${" (FixedMacro | (MacroPrefix "." MacroName) | AdditionalMacro) "}"<br />
MacroPrefix: "key" | "param" | "pageContext" <br />
| "property" | "elementProperty" <br />
MacroName: String value<br />
FixedMacro: "currentuser.name" | "currentuser.firstname" | "currentuser.lastname" <br />
| "currentuser.fullname" | "currentuser.email" | "currentuser.street"<br />
| "currentuser.zip" | "currentuser.city" | "currentuser.country"<br />
| "request.uri" | "request.folder" | "request.encoding" | "request.locale"<br />
| "currenttime"<br />
| "opencms.uri" | "opencms.filename" | "opencms.folder" | "opencms.default.encoding"<br />
AdditionalMacro: Any macro not matching one of MacroPrefix or FixedMacro values<br />
added via CmsMacroResolver.addMacro(String, String)<br />
<br />
See the method ''CmsMacroResolver.getMacroValue(String)'' for details. It is used indirectly by ''CmsTool.buttonHtml()'' which generates the HTML code for a tool button. The call is nested within ''I_CmsToolHandler.getParameters(CmsWorkplace)''.<br />
<br />
Another source of macro values is the additional macros list maintained by each ''CmsMacroResolver''. The ''CmsWorkplace'' has an instance of this class with public access via ''getMacroResolver()''. New macro values can be added with ''CmsMacroResolver.addMacro(String,String)'' where the first argument is the full macro name and the second is its value.<br />
<br />
=== Explanation of the MacroPrefix values ===<br />
''key'' is a message bundle key.<br />
<br />
''param'' is a HTTP request parameter<br />
<br />
''pageContext'' is a JSP page context attribute<br />
<br />
''property'' is a VFS property of the requested tool's CMS resource <br />
<br />
''elementProperty'' a VFS property of the currently requested element which might be an included resource, not necessarily the resource requested by the user.</div>Max Ferstlhttp://www.opencms-wiki.org/wiki/XMLContentXMLContent2014-04-24T11:53:11Z<p>Max Ferstl: /* External Links */ Removed link to opencms-forum.de</p>
<hr />
<div>== Data Types ==<br />
When creating XML contents, different data types can be used according to the requirements of the desired content. To each data type, a default widget is mapped which creates the input element (e.g. a text input field) for the form based XML content editor.<br />
<br />
OpenCms provides the following data types for XML contents:<br />
* [[OpenCmsBoolean]]<br />
* [[OpenCmsColor]]<br />
* [[OpenCmsDateTime]]<br />
* [[OpenCmsHtml]]<br />
* [[OpenCmsLocale]]<br />
* [[OpenCmsString]]<br />
* [[OpenCmsVfsFile]]<br />
* [[OpenCmsVarLink]] (since 7.0.0)<br />
<br />
== Editor Widgets ==<br />
Widgets are used to create a suitable content editor for XML content. The widgets to be used are defined in the [[Defining OpenCMS structured XML content|XML Schema Definition]] of your XML content type.<br />
<br />
=== Default Widgets ===<br />
The following widgets are included in OpenCMS:<br />
<br />
* [[BooleanWidget]]<br />
* [[ColorpickerWidget]]<br />
* [[ComboWidget]]<br />
* [[DateTimeWidget]]<br />
* [[DisplayWidget]]<br />
* [[DownloadGalleryWidget]]<br />
* [[HtmlGalleryWidget]]<br />
* [[HtmlWidget]]<br />
* [[ImageGalleryWidget]]<br />
* [[LinkGalleryWidget]]<br />
* [[SelectorWidget]]<br />
* [[StringWidget]]<br />
* [[TableGalleryWidget]]<br />
* [[TextareaWidget]]<br />
* [[VfsFileWidget]]<br />
<br />
=== Gallery-widgets ===<br />
All gallery widgets have some common configuration options:<br />
<br />
* [[GalleryWidgets]]<br />
<br />
=== Custom Widgets ===<br />
When the existing widget types are not sufficient, one can create [[Custom Widgets]].<br />
<br />
== Basic OpenCms XML Schema Definition (opencms-xmlcontent.xsd) ==<br />
<br />
Below you find a copy of the basic XML Schema used by all XMLContent Schemas you define. It is referenced by your custom XMLContent Schema Definition files like this:<br />
<br />
<xsd:include schemaLocation="opencms://opencms-xmlcontent.xsd"/><br />
<br />
The OpenCms XML system has a custom schema location resolver which knows what to return when this schemaLocation is referenced.<br />
<br />
This file actually does not to exist physically in the OpenCms distribution. <br />
However, someone found out what it should look like. <br />
(See [http://mail.opencms.org/pipermail/opencms-dev/2006q4/026909.html this opencms-dev thread] for more information). <br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"<br />
elementFormDefault="qualified"><br />
<xsd:complexType name="OpenCmsHtml"><br />
<xsd:sequence><br />
<xsd:element name="links" type="OpenCmsLinkTable" /><br />
<xsd:element name="content" type="OpenCmsHtmlContent" /><br />
</xsd:sequence><br />
<xsd:attribute name="name" type="xsd:string" use="optional" /><br />
<xsd:attribute name="enabled" type="xsd:boolean" use="optional" /><br />
</xsd:complexType><br />
<xsd:complexType name="OpenCmsHtmlContent"><br />
<xsd:simpleContent><br />
<xsd:extension base="xsd:string"><br />
<xsd:attribute name="enabled" type="xsd:string"<br />
use="optional" /><br />
</xsd:extension><br />
</xsd:simpleContent><br />
</xsd:complexType><br />
<xsd:complexType name="OpenCmsLinkTable"><br />
<xsd:sequence><br />
<xsd:element name="link" type="OpenCmsLink" minOccurs="0"<br />
maxOccurs="unbounded" /><br />
</xsd:sequence><br />
</xsd:complexType><br />
<xsd:complexType name="OpenCmsLink"><br />
<xsd:sequence><br />
<xsd:element name="target" type="xsd:string" /><br />
<xsd:element name="anchor" type="xsd:string" minOccurs="0" /><br />
<xsd:element name="query" type="xsd:string" minOccurs="0" /><br />
</xsd:sequence><br />
<xsd:attribute name="name" type="xsd:string" use="required" /><br />
<xsd:attribute name="type" type="OpenCmsLinkType"<br />
use="required" /><br />
<xsd:attribute name="internal" type="xsd:boolean"<br />
use="required" /><br />
</xsd:complexType><br />
<xsd:simpleType name="OpenCmsLinkType"><br />
<xsd:restriction base="xsd:string"><br />
<xsd:enumeration value="A" /><br />
<xsd:enumeration value="IMG" /><br />
</xsd:restriction><br />
</xsd:simpleType><br />
<xsd:simpleType name="OpenCmsLocale"><br />
<xsd:restriction base="xsd:string"><br />
<xsd:pattern<br />
value="[a-z]{2,3}(_[A-Z]{2}(_[a-zA-Z0-9] ){0,1}){0,1}" /><br />
</xsd:restriction><br />
</xsd:simpleType><br />
<xsd:simpleType name="OpenCmsDateTime"><br />
<xsd:restriction base="xsd:decimal" /><br />
</xsd:simpleType><br />
<xsd:simpleType name="OpenCmsString"><br />
<xsd:restriction base="xsd:string" /><br />
</xsd:simpleType><br />
<xsd:simpleType name="OpenCmsVfsFile"><br />
<xsd:restriction base="xsd:string" /><br />
</xsd:simpleType><br />
<xsd:simpleType name="OpenCmsBoolean"><br />
<xsd:restriction base="xsd:boolean" /><br />
</xsd:simpleType><br />
<xsd:simpleType name="OpenCmsColor"><br />
<xsd:restriction base="xsd:string"><br />
<xsd:pattern<br />
value="#([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?" /><br />
</xsd:restriction><br />
</xsd:simpleType><br />
</xsd:schema><br />
<br />
You can edit and validate your XMLContent Schema Definition files with an external XSD editor if you save the above listing to a file and add it to your editor's XML catalog.<br />
<br />
As reported by Alexander Kandzior the above XSD can also be acquired at runtime:<br />
<br />
org.opencms.xml.CmsXmlEntityResolver resolver = <br />
new org.opencms.xml.CmsXmlEntityResolver(null);<br />
org.xml.sax.InputSource source = resolver.resolveEntity(<br />
null,<br />
org.opencms.xml.CmsXmlContentDefinition.XSD_INCLUDE_OPENCMS);<br />
byte[] bytes = <br />
org.opencms.util.CmsFileUtil.readFully(source.getByteStream());<br />
String xsd = <br />
org.opencms.i18n.CmsEncoder.createString(bytes, "UTF-8");<br />
<br />
== Mapping elements to properties ==<br />
<br />
As described in the Alkacon documentation it is possible to map an element to a property like this:<br />
<br />
<mappings><br />
<mapping element="Title" mapto="property:Title" /><br />
<mapping element="Release" mapto="attribute:datereleased" /><br />
</mappings><br />
<br />
When this mapping is applied to an element that has multiple occurances the last item wins. To map multiple elements to the same property the keyword propertyList can be used:<br />
<br />
<mappings><br />
<mapping element="Category" mapto="propertyList:collector.categories" /><br />
</mappings><br />
<br />
The values are all added to the same property, separated by the pipe symbol (|).<br />
<br />
== Editing XML Schema Definitions with an IDE ==<br />
When you try to edit OpenCms XML Schema Definitions, by default, your editor will not know how to resolve the location of the <tt>opencms-xmlcontent.xsd</tt> referenced in your XSD:<br />
<br />
<xsd:include schemaLocation="opencms://opencms-xmlcontent.xsd"/><br />
<br />
It will display errors marks for the type attributes like <tt>type="OpenCmsString"</tt>. To allow your editor to properly validate on the <tt>opencms-xmlcontent.xsd</tt> Schema, you will first have to create a version of this file in some location you can access. The contents of this file can be found in an [[XMLContent#Basic_OpenCms_XML_Schema_Definition_.28opencms-xmlcontent.xsd.29|above section]]. Following this, you will have to create a reference to this file in your IDE's settings.<br />
<br />
=== Editing with Eclipse WTP ===<br />
This information is about [http://www.eclipse.org/webtools/ Eclipse Web Tools Platform] version 1.5.2 and above.<br />
<br />
If you have Eclipse WTP installed, it contains a great XML Schema editor with XML formatting and content assistance. You can edit the XSD files for your XMLContent there. To add the <tt>opencms-xmlcontent.xsd</tt> Schema to the editor, modify the XML Catalog preferences in Eclipse. Open <em>Window/Preferences/Web and XML/XML Catalog</em>.<br />
Add a new <em>User Specified Entry</em>. For the <em>URI</em> select the location where you store the <tt>opencms-xmlcontent.xsd</tt> file. Select a <em>Key Type</em> of "Schema Location" and enter "opencms://opencms-xmlcontent.xsd" for the <em>Key</em> value. <br />
<br />
Now, you should be able to edit files without seeing the error marks.<br />
<br />
=== Editing with IntelliJ IDEA ===<br />
These steps will work for IntelliJ IDEA 5.1.2 and above.<br />
<br />
To add the <tt>opencms-xmlcontent.xsd</tt> Schema to the editor, go to <em>File/Settings/</em> then under your IDE settings (so not your Project settings) select <em>Resources</em>. In the Resources dialog, add a new external resource under the <em>Configure External Resources</em> section by clicking the <em>Add...</em> button. In the dialog box that pops up, enter <tt>opencms://opencms-xmlcontent.xsd</tt> as the <em>URI</em> and the path to your opencms-xmlcontent.xsd file as the <em>Path</em> and click Ok. Exit all the menus by clicking Ok.<br />
<br />
Your XML Content Schemas should now correctly validate against the opencms-xmlcontent.xsd Schema.<br />
<br />
== External Links ==<br />
<br />
[http://www.wdogsystems.com/opencms/opencms/demos/structured_content_editing.html Nice visual Tutorial for XML Content]</div>Max Ferstlhttp://www.opencms-wiki.org/wiki/RSSRSS2014-04-24T11:51:18Z<p>Max Ferstl: /* External Links */ Removed link to opencms-forum</p>
<hr />
<div>[[Category:Extending OpenCms]]<br />
== External Links ==<br />
<br />
[http://www.clicksandlinks.com/opencms/opencms/CL_Solutions/products/open_source/opencms/rss_module/ Rss Module]</div>Max Ferstlhttp://www.opencms-wiki.org/wiki/Opencms_as_/_with_Apache_%2B_mod_jk_(or_mod_proxy)Opencms as / with Apache + mod jk (or mod proxy)2014-04-24T11:49:28Z<p>Max Ferstl: Removed links to opencms-forum</p>
<hr />
<div>It is highly recommended to use mod_jk to connect apache2 to Tomcat instead of mod_proxy. The latter is a lot slower and consumes much more sockets (operating system handles) which might cause system stalls in case of traffic peaks. <br />
Apache and mod_jk with OpenCms makes no difference between single site configuration and multi site configuration so please look here: [[MultiSite configuration instructions (apache + mod jk)]]</div>Max Ferstlhttp://www.opencms-wiki.org/wiki/Main_PageMain Page2014-04-24T11:47:54Z<p>Max Ferstl: /* Help */ opencms-forum.de is no longer there.</p>
<hr />
<div>{|width="100%"<br />
|-valign="top"<br />
|style="vertical-align: top"|<br />
<br />
<div style="margin:0; margin-right:10px; border:1px solid #63ff63; padding: 1em 1em 1em 1em; background-color:#f2fff2;"><br />
<big>'''Welcome to the OpenCms Wiki'''</big><br />
<br />
OpenCms is a professional level Open Source Website Content Management System.<br />
You can find more information about OpenCms on the [http://opencms.org project homepage].<br />
<br />
The current version of OpenCms is '''9.0.1'''. Read the [http://www.opencms.org/en/news/140206-opencms-v901-releasenotes.html release notes] for more details.<br />
<br />
'''If you are new to this wiki you should take a look at the [[FAQ|FAQ page]].'''<br />
<br />
</div><br />
<br />
|width="50%" style="vertical-align:top"|<br />
<br />
__TOC__<br />
<br />
|}<br />
<br />
{|width="100%"<br />
|-valign="top"<br />
|style="vertical-align: top"|<br />
<div style="margin: 0; margin-bottom: 5px; padding: .5em 1em .5em; border: 1px solid #eadcc5; background-color: #fff8f2;"><br />
<br />
=== OpenCms 8 HowTos ===<br />
*[[A short introduction]]<br />
<br />
==== OpenCms 8 Tutorials ====<br />
*[[Configuration of OpenCms Sitemap Properties]]<br />
*[[Using formatters in OpenCms 8]]<br />
*[[Creating OpenCms 8 Container Templates]]<br />
*[[Upgrading from OpenCms 7.x to OpenCms 8]]<br />
*[[Creating Mobile Templates with OpenCms 8]]<br />
*[[Creating Plug and Play Modules for OpenCms 8|Creating Plug & Play Modules for OpenCms 8]]<br />
*[[The OpenCms 8 Demo Template Modules in Detail]]<br />
*[[The OpenCms 8 Content Subscription Engine]]<br />
<br />
==== PDF downloads ====<br />
*[[OpenCms 8 content manager user manual]]<br />
<br />
</div><br />
<br />
<div style="margin: 0; margin-bottom: 5px; padding: .5em 1em .5em; border: 1px solid #c6c9ff; color: #000; background-color: #f0f0ff"><br />
<br />
=== Getting OpenCms Up and Running ===<br />
'''Installation'''<br />
* [[OpenCms in the Cloud]]<br />
* [[Hardware requirements]]<br />
* [[Finding and installing the prerequisites]]<br />
* [[Database Setup]]<br />
* [[Installing on Oracle 9]]<br />
* [[Installing on PostgreSQL]]<br />
* [[App server related topics]]<br />
* [[OS related topics]]<br />
* [[Post-installation checkout]]<br />
<br />
'''Configuration'''<br />
*[[Important Configuration Files]]<br />
*[[Importing Existing Data]]<br />
*[[Defining OpenCMS structured XML content]]<br />
*[[Removing /opencms/opencms from site url]]<br />
*[[MultiSite configuration instructions | MultiSite configuration instructions (apache + mod_proxy)]]<br />
*[[Avoiding /opencms/opencms in the URL (apache + mod_proxy)]]<br />
*[[MultiSite configuration instructions (apache + mod_jk)]]<br />
*[[Securing the site - implementing your security policy]]<br />
*[[Removing OpenCMS documents and non-essential components - What to keep]]<br />
*[[Changing the default request encoding]]<br />
*[[Changing from Servlet 2.3 to Servlet 2.4 (JSP 2.0)]] - out of date<br />
*[[Disable structured content]]<br />
*[[Disallow creation of resource types]]<br />
*[[Workplace: Custom footer]]<br />
*[[Workplace - Explorer View: Hide Advanced property button]]<br />
<br />
'''Performance Tuning'''<br />
*[[Load Balancing with Alkacon Clustering OCEE]]<br />
*[[Static Export configuration]]<br />
*[[Flex Cache tuning]]<br />
*[[Clustering OpenCms]]<br />
*[[Performance Tuning Example]]<br />
<br />
'''OpenCms Versions'''<br />
*[[New/Different Features in OpenCms 7]]<br />
<br />
'''OpenCms Bundles'''<br />
*[[OpenCms 7.0.5 Web Site Framework]]<br />
<br />
<br />
</div><br />
<br />
<div style="margin: 0; margin-bottom: 5px; padding: .5em 1em .5em; border: 1px solid #eadcc5; background-color: #fff8f2;"><br />
<br />
=== Using / Maintaining an installation of OpenCms ===<br />
<br />
*[[Backing up OpenCms]]<br />
<br />
====Using the Workplace====<br />
*[[Explorer view]]<br />
*[[Administration view]]<br />
*'''Editors'''<br />
**[[FCKEditor]]<br />
**[[HTML cleanup control]]<br />
<br />
====Workflow====<br />
*[[Workflow in core OpenCms]]<br />
*[[Workflow using third party workflow engines]]<br />
<br />
====Admin Tools/Maintenance Tools====<br />
*[[Project Management]]<br />
*[[Account Management]]<br />
*[[Database Management]]<br />
*[[Module Management]]<br />
*[[File History]]<br />
*[[Link Validation]]<br />
*[[Gallery Overview]]<br />
*[[Search Management]]<br />
*[[Scheduled Jobs Management]]<br />
*[[Flex Cache Administration]]<br />
*[[Content Tools]]<br />
*[[Workplace Tools]]<br />
*[[CMS Shell]]<br />
<br />
====User Management====<br />
* [[How to create a restricted area on your homepage]]<br />
* [[How OpenCms Permissions work]]<br />
<br />
====Security====<br />
*[[Authentication per Page]]<br />
*[[Https/SSL]]<br />
*[[External password authentication]]<br />
<br />
</div><br />
<br />
<div style="margin: 0; margin-bottom: 5px; padding: .5em 1em .5em; border: 1px solid #e4dede; background-color: #f9f9f9;"><br />
<br />
=== Help ===<br />
''' Official Website '''<br />
*[http://www.opencms.org OpenCms Website]<br />
<br />
''' Bug reports '''<br />
*[https://github.com/alkacon/opencms-core/issues OpenCms Issue Tracker on GitHub]<br />
<br />
'''Forums'''<br />
*[http://www.opencms.org/opencms/en/development/mailinglist-archive.html Official Mailing List Archives]<br />
*[http://www.nabble.com/OpenCMS---Dev-f654.html Mailing List Archive at Nabble.com] (Good search function and threaded display)<br />
*[http://www.opencmshispano.com:8080/mvnforum/mvnforum/index The first OpenCms forum in Spanish]<br />
*[http://www.facebook.com/pages/OpenCms/19694541520 OpenCms Facebook Page]<br />
*[http://www.facebook.com/group.php?gid=7264892441 OpenCms Facebook Group]<br />
*[https://www.xing.com/net/opencmsusergroup/ OpenCms User Group on Xing.com, german, "... dient primär als Plattform für das Knüpfen von Kontakten zwischen OpenCms Entwicklern und (potentiellen) Auftraggebern." ]<br />
*[http://www.opencmsforum.de/ German OpenCms forum] DEAD<br />
<br />
''' Books '''<br />
*[http://www.packtpub.com/OpenCMS6-admin/book Managing and Customizing OpenCMS 6] A book about OpenCms administration and usage<br />
*[http://www.packtpub.com/opencms-7-development/book OpenCms 7 Development] A developers guide for new and experienced users extending and customizing OpenCms 7 through its Java API<br />
<br />
'''Demo'''<br />
*[http://demo.opencms.org German or english test-drive of latest OpenCms version ]<br />
*[http://www.demo-opencms.de/ German Demo of OpenCms 8]<br />
<br />
'''Additional sites with OpenCms documentation:'''<br />
*[http://sourceforge.net/projects/opencmshowto/ OpenCms documentation project at sourceforge] - out of date<br />
*[http://www.erzbistum-koeln.de/medien/internet/ German documentation for OpenCms Users]<br />
*[http://opencms.org/en/development/documentation.html Javadoc and browsable source code]<br />
*[http://www.opencmshispano.com OpenCmsHispano the first Spanish Community]<br />
*[http://www.solutioncms.com The first OpenCMS Brazilian Community for Developer and Support]<br />
*[http://www.comundus.com/aktuelles/nachrichten/news_48.html German User Guide for / Deutsches Handbuch für OpenCms 8.5.1]<br />
<br />
'''Companies offering OpenCms support<br />
*[[OpenCms_Reference_Sites#IT_Consultancy.2FSolution_provider|IT consultancy/Solution provider]]<br />
<br />
<br />
<div style="margin: 0; margin-bottom: 5px; padding: .5em 1em .5em; border: 1px solid #eadcc5; background-color: #fff8f2;"><br />
<br />
=== Third Party Integration and Modules ===<br />
*[[Integration HOWTOs]] (Struts, Spring, JSF, etc.)<br />
*[[Available Modules | Available Modules and Extensions]]<br />
<br />
</div><br />
<br />
<div style="margin: 0; margin-bottom: 5px; padding: .5em 1em .5em; border: 1px solid #e4dede; background-color: #f9f9f9;"><br />
<br />
=== The future development of OpenCms ===<br />
*[[Wishlist]]<br />
*[http://www.opencms-days.org/export/sites/opencmsdays/en/program/slides/keynote_k1.pdf Development Roadmap for OpenCMS V8.5]<br />
<br />
</div><br />
<br />
<br />
|width="50%" style="vertical-align:top"|<br />
<div style="margin: 0; margin-bottom: 5px; padding: .5em 1em .5em; border: 1px solid #eadcc5; background-color: #fff8f2;"><br />
<br />
=== What Can OpenCms Do ===<br />
'''Overview'''<br />
*[[OpenCms Administration Guide]]<br />
*[[OpenCms philosophy]]<br />
*[[OpenCms terminology]]<br />
*[[Introduction to the OpenCms application structure and tools]]<br />
*[[Alternative site structures]]<br />
*[[Planning and documenting your site]]<br />
*[[Best Practices]]<br />
*[[Other Overview Guides]]<br />
<br />
*[[OpenCms Reference Sites]]<br />
<br />
'''Template Development'''<br />
*[[basics and overview]]<br />
*[[example template with tree menu]]<br />
*[[common and frequent mistakes, NPEs]]<br />
*[[oc-taglibrary specifics]]<br />
*[[Building from Scratch]]<br />
*[[Using existing Template One]]<br />
*[[Using existing Template Two]]<br />
*[[Other example templates]]<br />
*[[Available Modules]]<br />
*[http://stackoverflow.com/questions/2192186/adding-a-tag-cloud-to-an-opencms-website/2363994#2363994 Tags cloud for blog]<br />
<br />
'''Search'''<br />
*[[Configuration]]<br />
*[[Sample search results pages]]<br />
*[[common mistakes]]<br />
*[[writing only specific xml-element-data to the lucene index]]<br />
*[[lucene related: writing custom analyzers, stemmers, documents]]<br />
<br />
'''Other Major Features'''<br />
*[[XMLContent]]<br />
*[[Localization]] / Multilanguage / I18N<br />
*[[Categories]]<br />
*[[Customizability for Several Clients]]<br />
*[[XMLPage]]<br />
<br />
</div><br />
<br />
<div style="margin: 0; margin-bottom: 5px; padding: .5em 1em .5em; border: 1px solid #eadcc5; background-color: #fff8f2;"><br />
<br />
=== Troubleshooting ===<br />
* [[HTTP 404 with OpenCms URLs]]<br />
* [[Installing OpenCMS to an existing database|Installing OpenCms to an existing database]]<br />
* [[Log Settings]]<br />
* [[Getting Static Export working properly]]<br />
* [[OpenCms won't start!]]<br />
* [[Direct edit mode moves page elements around]]<br />
* [[Running OpenCms on JRun 4.0]]<br />
* [[No WYSIWYG-Editor (FCKeditor) after Firefox-Update (3.6)]]<br />
* [[No WYSIWYG-Editor (FCKeditor) after IE-Update (IE9)]]<br />
* [[Deleting broken resources via SQL]]<br />
</div><br />
<br />
<div style="margin: 0; margin-bottom: 5px; padding: .5em 1em .5em; border: 1px solid #e4dede; background-color: #f9f9f9;"><br />
<br />
=== Writing JSP and developing in OpenCms ===<br />
'''Jsp Basics'''<br />
*[[Basic Steps to writing JSPs]]<br />
*[[Including your template elements within your JSPs]]<br />
*[[Using Direct Edit with JSP]]<br />
*[[OpenCms features available via taglibs]]<br />
*[http://opencms.org/en/development/documentation.html OpenCms features javadoc]<br />
*[http://www.opencms.org/opencms/en/download/documentation.html OpenCms downloadable sample modules]<br />
*[[How Opencms Handles JSP- Advanced]]<br />
*[[Scriptlets]]<br />
*[[Creating Navigation]]<br />
*[[Using Cookies]], e.g. for [[CSS-Switching]]<br />
<br />
'''Using the OpenCms API'''<br />
*[[Adding and modifying users]]<br />
*[[Creating and editing files]]<br />
*[[Working with users and groups]]<br />
*[[Working with projects]]<br />
*[[Getting server information]]<br />
*[[Using OpenCms's Database connection pool]]<br />
*[[Listing OpenCms's scheduled jobs]]<br />
<br />
'''Development Process-Best Practices'''<br />
*[[Transferring an existing website to a different server]]<br />
<br />
'''IDE Integration'''<br />
*[[Developing OpenCms with Eclipse]]<br />
*[[Developing OpenCms with Maven (incl. Eclipse)]]<br />
*[[Eclipse integration]]<br />
*[[Eclipse Integration on the MAC]]<br />
<br />
'''Development Environment Setup'''<br />
*[[Development Environment Setup Options]]<br />
*[[Synchronizing with Ant]]<br />
*[[Debugging]]<br />
*[[Remote debugging OpenCms with Eclipse and Netbeans]]<br />
*[[WebDAV access to the OpenCms VFS|OpenCms 7: WebDAV access to the OpenCms VFS]]<br />
*[[Fully_automated_builds_with_the_OpenCms-Maven-Plugin|Automated builds with OpenCms-Maven]]<br />
*[https://bitbucket.org/shimberger/opencms-gradle/ Gradle OpenCms Build Script]<br />
<br />
'''Development tips'''<br />
*[[RFS_Synchronization|Synchronization with external directories]]<br />
*[[ManifestBuilder Task]]<br />
*[[StructuredContentTips|Structured Content Tips and Tricks]]<br />
<br />
<br />
<div style="margin: 0; margin-bottom: 5px; padding: .5em 1em .5em; border: 1px solid #eadcc5; background-color: #fff8f2;"><br />
<br />
=== Updating ===<br />
'''Migration of content'''<br />
*[[Export/Import site while keeping the 'unpublished' flags]]<br />
</div><br />
<div style="margin: 0; margin-bottom: 5px; padding: .5em 1em .5em; border: 1px solid #eadcc5; background-color: #f2f8ff;"><br />
<br />
=== Extending OpenCms ===<br />
'''Module Development'''<br />
*'''[[Available Modules]]'''<br />
*[[Development Lifecycle]]<br />
*[[Action classes]] (e.g. do something when a resource was published or changed)<br />
*[[Create Module HowTo]]<br />
*[[Adding Jar Files]]<br />
*[[Advanced module config]]<br />
*[[List of Resourcetype IDs]] <br />
<br />
'''Advanced Customization'''<br />
*[[Custom Login Page]]<br />
*[[Custom File and Folder Types]]<br />
*[[Custom Views]]<br />
*[[Custom Widgets]]<br />
*[[Custom XML Content Validation]]<br />
*[[Custom XML Content Mapping]]<br />
*[[Create a Custom Scheduled Job]]<br />
*[[Configure the Structured Content Editor]]<br />
*[[Custom Content Parser]]<br />
<br />
'''Admin Tools'''<br />
*[[Adding Admin Tools]]<br />
<br />
'''Advanced development topics'''<br />
*[[core stuff]]<br />
*[[event handling]]<br />
*[[acegi integration]]<br />
*[[OpenCms startup]]<br />
<br />
'''Common HowTos'''<br />
*[[RSS]]<br />
*[[Send email]]<br />
*[[Google Sitemap.xml]]<br />
<br />
'''Miscellaneous'''<br />
*[[Scripting language integration (Groovy/PHP)]]<br />
</div></div>Max Ferstlhttp://www.opencms-wiki.org/wiki/LinksLinks2014-04-24T11:46:23Z<p>Max Ferstl: /* Community pages */ opencms-forum.de is no longer aviable.</p>
<hr />
<div>== Official OpenCms pages ==<br />
*http://www.opencms.org - the project homepage<br />
*http://www.alkacon.com - the company behind OpenCms<br />
<br />
== Community pages ==<br />
<br />
* [http://www.pomegranate.de:9000/cms/forum/index Pomegranate Opencms-Forum] English-Language discussion forum; also containing a 'knowledge-base'-Section with tutorial-style instructions</div>Max Ferstl