Difference between revisions of "Fast extension sample"

From OpenKM Documentation
Jump to: navigation, search
(Sample1)
Line 46: Line 46:
 
* full_list.jsp ( show full list with no JavaScript special control ).
 
* full_list.jsp ( show full list with no JavaScript special control ).
 
* filtered_list.jsp ( show filtered list with no JavaScript special control ).
 
* filtered_list.jsp ( show filtered list with no JavaScript special control ).
 +
 +
'''action.jsp controler'''
 +
<source lang="java">
 +
<%@page import="java.util.Map"%>
 +
<%@page import="java.util.HashMap"%>
 +
<%@page import="java.util.List"%>
 +
<%@page import="java.util.ArrayList"%>
 +
<%@ page import="java.text.SimpleDateFormat" %>
 +
<%@ page import="java.io.IOException" %>
 +
<%@ page import="org.slf4j.Logger" %>
 +
<%@ page import="org.slf4j.LoggerFactory" %>
 +
<%@ page import="com.openkm.bean.Document" %>
 +
<%@ page import="com.openkm.util.WebUtils" %>
 +
<%@ page import="com.openkm.api.OKMDocument" %>
 +
<%@ page extends="com.openkm.extension.servlet.BaseServlet" %>
 +
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
 +
<%!
 +
 +
private static Logger log = LoggerFactory.getLogger("com.openkm.sample");
 +
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,
 +
ServletException {
 +
String action = WebUtils.getString(request, "action");
 +
try {
 +
list(request, response);
 +
} catch (Exception e) {
 +
log.error(e.getMessage(), e);
 +
sendErrorRedirect(request, response, e);
 +
}
 +
}
 +
 +
// Used by fileupload return and filter
 +
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
 +
ServletException {
 +
String action = WebUtils.getString(request, "action");
 +
try {
 +
list(request, response);
 +
} catch (Exception e) {
 +
log.error(e.getMessage(), e);
 +
sendErrorRedirect(request, response, e);
 +
}
 +
}
 +
 +
private void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, Exception {
 +
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
 +
String docPath = (String) request.getAttribute("docPath");
 +
String nameFilter = WebUtils.getString(request,"nameFilter");
 +
// Pending docs
 +
List<Map<String,String>> pendingDocMaps = new ArrayList<Map<String,String>>();
 +
for ( Document doc : OKMDocument.getInstance().getChildren(null, "/okm:root")) {
 +
Map<String,String> docMap = new HashMap<String,String>();
 +
docMap.put("name",doc.getPath().substring(doc.getPath().lastIndexOf("/")+1));
 +
docMap.put("uuid",doc.getUuid());
 +
docMap.put("path",doc.getPath());
 +
docMap.put("mimeType",doc.getMimeType());
 +
docMap.put("lastModified", df.format(doc.getLastModified().getTime()));
 +
pendingDocMaps.add(docMap);
 +
}
 +
ServletContext sc = getServletContext();
 +
sc.setAttribute("docPath",docPath);
 +
sc.setAttribute("nameFilter",nameFilter);
 +
sc.setAttribute("pendingDocuments",pendingDocMaps);
 +
sc.getRequestDispatcher("/sample/sample2/distributor.jsp").forward(request, response);
 +
}%>
 +
</source>
  
 
[[File:User_guide_531.png|center]]
 
[[File:User_guide_531.png|center]]

Revision as of 10:51, 31 December 2013


Nota advertencia.png Under construction

This sample example show how to fastly extend OpenKM features with JSP, HTML, CSS and JavaScript technologies using OpenKM java API and how to communicate with exposed javascript GWT exposed methods (Javascript_API).

Description

  • ToolBar
  • Button one goes to main home screen
  • Button two goes to Sample1
  • Button tree goes to Sample2


Project folders and files

User guide 533.png


Implementation details

index.jsp

Index.jsp controls iframe height with simple javascript code.

Other important thing is, for example after upload a document ( Sample 2 ) we use request var urlToOpen to indicate which url should be opened

 
String urlToOpen = URLDecoder.decode(WebUtils.getString(request, "urlToOpen"),"UTF-8");
if (urlToOpen.equals("")) {
  urlToOpen = "home.jsp";
}


menu.jsp

Has menu url definitions.

User guide 534.png


Home

Main home screen.

User guide 530.png

Sample1

Is composed by 4 files:

  • action.jsp ( the main controler what has all logic ).
  • distributor.jsp ( the main layer with two columns at 50% ).
  • full_list.jsp ( show full list with no JavaScript special control ).
  • filtered_list.jsp ( show filtered list with no JavaScript special control ).

action.jsp controler

<%@page import="java.util.Map"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.io.IOException" %>
<%@ page import="org.slf4j.Logger" %>
<%@ page import="org.slf4j.LoggerFactory" %>
<%@ page import="com.openkm.bean.Document" %>
<%@ page import="com.openkm.util.WebUtils" %>
<%@ page import="com.openkm.api.OKMDocument" %>
<%@ page extends="com.openkm.extension.servlet.BaseServlet" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%!

private static Logger log = LoggerFactory.getLogger("com.openkm.sample");
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,
		ServletException {
	String action = WebUtils.getString(request, "action");		
	try {
		list(request, response);
	} catch (Exception e) {
		log.error(e.getMessage(), e);
		sendErrorRedirect(request, response, e);
	}
}

// Used by fileupload return and filter
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
ServletException {
	String action = WebUtils.getString(request, "action");
	try {
		list(request, response);
	} catch (Exception e) {
		log.error(e.getMessage(), e);
		sendErrorRedirect(request, response, e);
	}
}

private void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, Exception {
	SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
	String docPath = (String) request.getAttribute("docPath");
	String nameFilter = WebUtils.getString(request,"nameFilter");
	// Pending docs
	List<Map<String,String>> pendingDocMaps = new ArrayList<Map<String,String>>();
	for ( Document doc : OKMDocument.getInstance().getChildren(null, "/okm:root")) {
		Map<String,String> docMap = new HashMap<String,String>();
		docMap.put("name",doc.getPath().substring(doc.getPath().lastIndexOf("/")+1));
		docMap.put("uuid",doc.getUuid());
		docMap.put("path",doc.getPath());
		docMap.put("mimeType",doc.getMimeType());
		docMap.put("lastModified", df.format(doc.getLastModified().getTime()));
		pendingDocMaps.add(docMap);
	}
	ServletContext sc = getServletContext();
	sc.setAttribute("docPath",docPath);
	sc.setAttribute("nameFilter",nameFilter);
	sc.setAttribute("pendingDocuments",pendingDocMaps);
	sc.getRequestDispatcher("/sample/sample2/distributor.jsp").forward(request, response);
}%>
User guide 531.png

Installation


Nota clasica.png Remember when you change OpenKM.war file the contents of $TOMCAT_HOME/webapps/OpenKM is changed and you will lost any change you make into.