http-auth und ccm-bookmarks jetzt legacy free. Update Skripte müssen noch ergänzt werden.
git-svn-id: https://svn.libreccm.org/ccm/trunk@1532 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
4b80e714bb
commit
8a19a65917
|
|
@ -20,5 +20,6 @@ model com.arsdigita.auth.http;
|
||||||
import com.arsdigita.web.Application;
|
import com.arsdigita.web.Application;
|
||||||
|
|
||||||
object type HTTPAuth extends Application {
|
object type HTTPAuth extends Application {
|
||||||
reference key (auth_http.application_id);
|
// reference key (auth_http.application_id);
|
||||||
|
// nothing to store here
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,33 +18,31 @@
|
||||||
|
|
||||||
package com.arsdigita.auth.http;
|
package com.arsdigita.auth.http;
|
||||||
|
|
||||||
import com.arsdigita.loader.PackageLoader;
|
|
||||||
|
|
||||||
import com.arsdigita.kernel.Kernel;
|
import com.arsdigita.kernel.Kernel;
|
||||||
import com.arsdigita.kernel.KernelExcursion;
|
import com.arsdigita.kernel.KernelExcursion;
|
||||||
import com.arsdigita.kernel.User;
|
import com.arsdigita.kernel.User;
|
||||||
|
import com.arsdigita.loader.PackageLoader;
|
||||||
import com.arsdigita.persistence.DataCollection;
|
import com.arsdigita.persistence.DataCollection;
|
||||||
import com.arsdigita.persistence.SessionManager;
|
import com.arsdigita.persistence.SessionManager;
|
||||||
|
|
||||||
import com.arsdigita.runtime.ScriptContext;
|
import com.arsdigita.runtime.ScriptContext;
|
||||||
|
|
||||||
import com.arsdigita.util.parameter.Parameter;
|
import com.arsdigita.util.parameter.Parameter;
|
||||||
import com.arsdigita.util.parameter.StringParameter;
|
import com.arsdigita.util.parameter.StringParameter;
|
||||||
|
|
||||||
import com.arsdigita.web.ApplicationType;
|
import com.arsdigita.web.ApplicationType;
|
||||||
import com.arsdigita.web.Application;
|
import com.arsdigita.web.Application;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the HTTP Auth application and type
|
* <p>Executes nonrecurring at install time and loads (installs and initializes)
|
||||||
|
* the HTTP Auth application and type persistently into database.</p>
|
||||||
*
|
*
|
||||||
* @author Daniel Berrange
|
* @author Daniel Berrange
|
||||||
* @version $Id: Loader.java 287 2005-02-22 00:29:02Z sskracic $
|
* @version $Id: Loader.java 287 2005-02-22 00:29:02Z sskracic $
|
||||||
*/
|
*/
|
||||||
public class Loader extends PackageLoader {
|
public class Loader extends PackageLoader {
|
||||||
|
|
||||||
|
/** Creates a s_logging category with name = full name of class */
|
||||||
private static final Logger s_log = Logger.getLogger(Loader.class);
|
private static final Logger s_log = Logger.getLogger(Loader.class);
|
||||||
|
|
||||||
private StringParameter m_adminEmail = new StringParameter
|
private StringParameter m_adminEmail = new StringParameter
|
||||||
|
|
@ -53,40 +51,77 @@ public class Loader extends PackageLoader {
|
||||||
("auth.http.admin_identifier", Parameter.REQUIRED, null);
|
("auth.http.admin_identifier", Parameter.REQUIRED, null);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor registers parameters
|
||||||
|
*/
|
||||||
public Loader() {
|
public Loader() {
|
||||||
|
|
||||||
register(m_adminEmail);
|
register(m_adminEmail);
|
||||||
register(m_adminIdent);
|
register(m_adminIdent);
|
||||||
|
|
||||||
loadInfo();
|
loadInfo();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param ctx
|
||||||
|
*/
|
||||||
public void run(final ScriptContext ctx) {
|
public void run(final ScriptContext ctx) {
|
||||||
new KernelExcursion() {
|
new KernelExcursion() {
|
||||||
public void excurse() {
|
public void excurse() {
|
||||||
setEffectiveParty(Kernel.getSystemParty());
|
setEffectiveParty(Kernel.getSystemParty());
|
||||||
|
|
||||||
setupAdministrator();
|
setupAdministrator();
|
||||||
setupHTTPAuth();
|
setupHTTPAuth();
|
||||||
}
|
}
|
||||||
}.run();
|
}.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads HTTPAuth type as a legacy free type of application and
|
||||||
|
* instantiates a (single) default instance.
|
||||||
|
*/
|
||||||
private void setupHTTPAuth() {
|
private void setupHTTPAuth() {
|
||||||
|
/*
|
||||||
ApplicationType type = ApplicationType
|
ApplicationType type = ApplicationType
|
||||||
.createApplicationType("auth-http",
|
.createApplicationType("auth-http",
|
||||||
"CCM HTTP Authentication Admin",
|
"CCM HTTP Authentication Admin",
|
||||||
HTTPAuth.BASE_DATA_OBJECT_TYPE);
|
HTTPAuth.BASE_DATA_OBJECT_TYPE);
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Create new type legacy free application type
|
||||||
|
* NOTE: The wording in the title parameter of ApplicationType
|
||||||
|
* determines the name of the subdirectory for the XSL stylesheets.
|
||||||
|
* It gets "urlized", i.e. trimming leading and trailing blanks and
|
||||||
|
* replacing blanks between words and illegal characters with an
|
||||||
|
* hyphen and converted to lower case.
|
||||||
|
* "Auth HTTP" will become "auth-http". */
|
||||||
|
ApplicationType type = new ApplicationType("Auth HTTP",
|
||||||
|
HTTPAuth.BASE_DATA_OBJECT_TYPE );
|
||||||
|
|
||||||
type.setDescription("CCM HTTP authentication administration");
|
type.setDescription("CCM HTTP authentication administration");
|
||||||
|
type.save();
|
||||||
|
|
||||||
Application admin = Application.retrieveApplicationForPath("/admin/");
|
Application admin = Application.retrieveApplicationForPath("/admin/");
|
||||||
|
|
||||||
Application app =
|
Application app = Application
|
||||||
Application.createApplication(type,
|
.createApplication(type,
|
||||||
"auth-http",
|
"auth-http",
|
||||||
"CCM HTTP Authentication Admin",
|
"CCM HTTP Authentication Admin",
|
||||||
admin);
|
admin);
|
||||||
|
app.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
private void setupAdministrator() {
|
private void setupAdministrator() {
|
||||||
DataCollection coll = SessionManager.getSession().retrieve
|
|
||||||
( User.BASE_DATA_OBJECT_TYPE );
|
s_log.warn("Administrator eMail is retrieved as: " + getAdminEmail());
|
||||||
|
|
||||||
|
DataCollection coll = SessionManager.getSession()
|
||||||
|
.retrieve(User.BASE_DATA_OBJECT_TYPE);
|
||||||
coll.addEqualsFilter( "primaryEmail", getAdminEmail() );
|
coll.addEqualsFilter( "primaryEmail", getAdminEmail() );
|
||||||
|
|
||||||
if (!coll.next()) {
|
if (!coll.next()) {
|
||||||
|
|
@ -98,6 +133,7 @@ public class Loader extends PackageLoader {
|
||||||
|
|
||||||
User admin = User.retrieve( coll.getDataObject() );
|
User admin = User.retrieve( coll.getDataObject() );
|
||||||
coll.close();
|
coll.close();
|
||||||
|
s_log.warn("Administrator is retrieved as: " + admin);
|
||||||
|
|
||||||
UserLogin login = UserLogin.findByUser(admin);
|
UserLogin login = UserLogin.findByUser(admin);
|
||||||
if (login == null) {
|
if (login == null) {
|
||||||
|
|
@ -106,10 +142,18 @@ public class Loader extends PackageLoader {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
private String getAdminEmail() {
|
private String getAdminEmail() {
|
||||||
return (String) get(m_adminEmail);
|
return (String) get(m_adminEmail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
private String getAdminIdentifier() {
|
private String getAdminIdentifier() {
|
||||||
return (String) get(m_adminIdent);
|
return (String) get(m_adminIdent);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,5 +9,6 @@
|
||||||
</provides>
|
</provides>
|
||||||
<scripts>
|
<scripts>
|
||||||
<schema directory="ccm-bookmarks"/>
|
<schema directory="ccm-bookmarks"/>
|
||||||
|
<data class="com.arsdigita.bookmarks.Loader"/>
|
||||||
</scripts>
|
</scripts>
|
||||||
</load>
|
</load>
|
||||||
|
|
|
||||||
|
|
@ -28,16 +28,15 @@ import com.arsdigita.util.Assert;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A bookmark.
|
* Represents a single bookmark.
|
||||||
*
|
*
|
||||||
* @author Jim Parsons
|
* @author Jim Parsons
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class Bookmark extends ACSObject {
|
public class Bookmark extends ACSObject {
|
||||||
|
|
||||||
private static final int SORT_KEY_JUMP = 10;
|
private static final int SORT_KEY_JUMP = 10;
|
||||||
|
|
||||||
private BookmarkApplication m_bmrkapp = null;
|
private Bookmarks m_bmrkapp = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type of the {@link com.arsdigita.persistence.DataObject}
|
* The type of the {@link com.arsdigita.persistence.DataObject}
|
||||||
|
|
@ -45,7 +44,7 @@ public class Bookmark extends ACSObject {
|
||||||
* com.arsdigita.domain.DomainObject}.
|
* com.arsdigita.domain.DomainObject}.
|
||||||
*/
|
*/
|
||||||
public static final String BASE_DATA_OBJECT_TYPE =
|
public static final String BASE_DATA_OBJECT_TYPE =
|
||||||
"com.arsdigita.workspace.Bookmark";
|
"com.arsdigita.workspace.Bookmark";
|
||||||
|
|
||||||
protected String getBaseDataObjectType() {
|
protected String getBaseDataObjectType() {
|
||||||
return BASE_DATA_OBJECT_TYPE;
|
return BASE_DATA_OBJECT_TYPE;
|
||||||
|
|
@ -105,17 +104,17 @@ public class Bookmark extends ACSObject {
|
||||||
return Bookmark.retrieveBookmark(dataObject);
|
return Bookmark.retrieveBookmark(dataObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BookmarkApplication getBookmarkApplication() {
|
public Bookmarks getBookmarkApplication() {
|
||||||
if(m_bmrkapp == null) {
|
if(m_bmrkapp == null) {
|
||||||
DataObject bmrkdata = (DataObject)get("bookmarkapp");
|
DataObject bmrkdata = (DataObject)get("bookmarkapp");
|
||||||
if(bmrkdata != null) {
|
if(bmrkdata != null) {
|
||||||
m_bmrkapp = new BookmarkApplication(bmrkdata);
|
m_bmrkapp = new Bookmarks(bmrkdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return m_bmrkapp;
|
return m_bmrkapp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBookmarkApplication(BookmarkApplication bmrkapp) {
|
public void setBookmarkApplication(Bookmarks bmrkapp) {
|
||||||
m_bmrkapp = bmrkapp;
|
m_bmrkapp = bmrkapp;
|
||||||
setAssociation("bookmarkapp",bmrkapp);
|
setAssociation("bookmarkapp",bmrkapp);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ import java.math.BigDecimal;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Represents a collection of single bookmarks
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class BookmarkCollection extends DomainCollection {
|
public class BookmarkCollection extends DomainCollection {
|
||||||
|
|
|
||||||
|
|
@ -25,33 +25,34 @@ import com.arsdigita.web.Application;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* BookmarkApplication class.
|
* Bookmarks application domain class.
|
||||||
*
|
* Central entry point into the bookmarks application.
|
||||||
* @author dennis
|
* @author dennis
|
||||||
* @version $Id: BookmarkApplication.java#3 2003/07/10 14:47:30 $
|
* @version $Id: Bookmarks.java#3 2003/07/10 14:47:30 $
|
||||||
*/
|
*/
|
||||||
public class BookmarkApplication extends Application {
|
public class Bookmarks extends Application {
|
||||||
|
|
||||||
public static final String BASE_DATA_OBJECT_TYPE =
|
public static final String BASE_DATA_OBJECT_TYPE =
|
||||||
"com.arsdigita.workspace.BookmarkApplication";
|
"com.arsdigita.workspace.BookmarkApplication";
|
||||||
|
|
||||||
private static final int SORT_KEY_JUMP = 10;
|
private static final int SORT_KEY_JUMP = 10;
|
||||||
|
|
||||||
|
@Override
|
||||||
protected String getBaseDataObjectType() {
|
protected String getBaseDataObjectType() {
|
||||||
return BASE_DATA_OBJECT_TYPE;
|
return BASE_DATA_OBJECT_TYPE;
|
||||||
}
|
}
|
||||||
private static final org.apache.log4j.Logger log =
|
private static final org.apache.log4j.Logger log =
|
||||||
org.apache.log4j.Logger.getLogger(BookmarkApplication.class);
|
org.apache.log4j.Logger.getLogger(Bookmarks.class);
|
||||||
|
|
||||||
public BookmarkApplication(OID oid) throws DataObjectNotFoundException {
|
public Bookmarks(OID oid) throws DataObjectNotFoundException {
|
||||||
super(oid);
|
super(oid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BookmarkApplication(BigDecimal key) throws DataObjectNotFoundException {
|
public Bookmarks(BigDecimal key) throws DataObjectNotFoundException {
|
||||||
this(new OID(BASE_DATA_OBJECT_TYPE, key));
|
this(new OID(BASE_DATA_OBJECT_TYPE, key));
|
||||||
}
|
}
|
||||||
|
|
||||||
public BookmarkApplication(DataObject dataObject) {
|
public Bookmarks(DataObject dataObject) {
|
||||||
super(dataObject);
|
super(dataObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -59,9 +60,9 @@ public class BookmarkApplication extends Application {
|
||||||
* Use this instead of the constructor to create new Bookmark
|
* Use this instead of the constructor to create new Bookmark
|
||||||
* Application objects
|
* Application objects
|
||||||
*/
|
*/
|
||||||
public static BookmarkApplication create(String urlName, String title,
|
public static Bookmarks create(String urlName, String title,
|
||||||
Application parent) {
|
Application parent) {
|
||||||
return (BookmarkApplication) Application.createApplication
|
return (Bookmarks) Application.createApplication
|
||||||
(BASE_DATA_OBJECT_TYPE, urlName, title, parent);
|
(BASE_DATA_OBJECT_TYPE, urlName, title, parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -113,4 +114,33 @@ public class BookmarkApplication extends Application {
|
||||||
b.save();
|
b.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Returns the servletPath part of the URL to the application servlet.
|
||||||
|
* (see Servlet API specification or web.URL for more information)
|
||||||
|
*
|
||||||
|
* The method overwrites the super class to provide an application specific
|
||||||
|
* location for servlets/JSP. This is necessary if you whish to install the
|
||||||
|
* module (application) along with others in one context. If you install the
|
||||||
|
* module into its own context (no longer recommended for versions newer
|
||||||
|
* than 1.0.4) you may use a standard location.
|
||||||
|
*
|
||||||
|
* Usually it is a symbolic name/path, which will be mapped in the web.xml
|
||||||
|
* to the real location in the file system. Example:
|
||||||
|
* <servlet>
|
||||||
|
* <servlet-name>bookmarks</servlet-name>
|
||||||
|
* <servlet-class>com.arsdigita.bookmarks.BookmarksServlet</servlet-class>
|
||||||
|
* </servlet>
|
||||||
|
*
|
||||||
|
* <servlet-mapping>
|
||||||
|
* <servlet-name>bookmarks</servlet-name>
|
||||||
|
* <url-pattern>/bookmarks/*</url-pattern>
|
||||||
|
* </servlet-mapping>
|
||||||
|
*
|
||||||
|
* @return ServelPath of the applications servlet
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getServletPath() {
|
||||||
|
return "/bookmarks/";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -31,13 +31,13 @@ import org.apache.log4j.Logger;
|
||||||
* @author Jim Parsons
|
* @author Jim Parsons
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class BookmarkDispatcher extends BebopMapDispatcher {
|
public class BookmarksDispatcher extends BebopMapDispatcher {
|
||||||
|
|
||||||
|
|
||||||
private static final Logger s_log =
|
private static final Logger s_log =
|
||||||
Logger.getLogger(BookmarkDispatcher.class);
|
Logger.getLogger(BookmarksDispatcher.class);
|
||||||
|
|
||||||
public BookmarkDispatcher() {
|
public BookmarksDispatcher() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
Map m = new HashMap();
|
Map m = new HashMap();
|
||||||
|
|
@ -0,0 +1,112 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2012 Peter Boy <pb@zes.uni-bremen.de> All Rights Reserved.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2.1 of
|
||||||
|
* the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.bookmarks;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.Page;
|
||||||
|
import com.arsdigita.bookmarks.ui.BookmarkBasePage;
|
||||||
|
import com.arsdigita.bookmarks.ui.BookmarkEditPane;
|
||||||
|
import com.arsdigita.templating.PresentationManager;
|
||||||
|
import com.arsdigita.templating.Templating;
|
||||||
|
import com.arsdigita.web.Application;
|
||||||
|
import com.arsdigita.web.BaseApplicationServlet;
|
||||||
|
import com.arsdigita.xml.Document;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Web Developer Support Application Servlet class, central entry point to
|
||||||
|
* create and process the applications UI.
|
||||||
|
*
|
||||||
|
* We should have subclassed BebopApplicationServlet but couldn't overwrite
|
||||||
|
* doService() method to add permission checking. So we use our own page
|
||||||
|
* mapping. The general logic is the same as for BebopApplicationServlet.
|
||||||
|
* {@see com.arsdigita.bebop.page.BebopApplicationServlet}
|
||||||
|
*
|
||||||
|
* @author pb
|
||||||
|
*/
|
||||||
|
public class BookmarksServlet extends BaseApplicationServlet {
|
||||||
|
|
||||||
|
/** Logger instance for debugging */
|
||||||
|
private static final Logger s_log = Logger.getLogger(BookmarksServlet.class);
|
||||||
|
|
||||||
|
private Page adminPage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User extension point, overwrite this method to setup a URL - page mapping
|
||||||
|
*
|
||||||
|
* @throws ServletException
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void doInit() throws ServletException {
|
||||||
|
|
||||||
|
adminPage = buildAdminPage();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Central service method, checks for required permission, determines the
|
||||||
|
* requested page and passes the page object to PresentationManager.
|
||||||
|
*/
|
||||||
|
public final void doService(HttpServletRequest sreq,
|
||||||
|
HttpServletResponse sresp,
|
||||||
|
Application app)
|
||||||
|
throws ServletException, IOException {
|
||||||
|
|
||||||
|
if (adminPage != null) {
|
||||||
|
|
||||||
|
final Document doc = adminPage.buildDocument(sreq, sresp);
|
||||||
|
|
||||||
|
PresentationManager pm = Templating.getPresentationManager();
|
||||||
|
pm.servePage(doc, sreq, sresp);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
sresp.sendError(404, "No such page.");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private Page buildAdminPage() {
|
||||||
|
|
||||||
|
BookmarkBasePage p = new BookmarkBasePage();
|
||||||
|
|
||||||
|
p.addRequestListener(new ApplicationAuthenticationListener("admin"));
|
||||||
|
p.getBody().add(new BookmarkEditPane());
|
||||||
|
|
||||||
|
p.lock();
|
||||||
|
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -18,46 +18,34 @@
|
||||||
|
|
||||||
package com.arsdigita.bookmarks;
|
package com.arsdigita.bookmarks;
|
||||||
|
|
||||||
|
import com.arsdigita.bookmarks.ui.BookmarkPortlet;
|
||||||
import com.arsdigita.db.DbHelper;
|
import com.arsdigita.db.DbHelper;
|
||||||
import com.arsdigita.persistence.DataObject;
|
import com.arsdigita.persistence.DataObject;
|
||||||
import com.arsdigita.persistence.TransactionContext;
|
|
||||||
import com.arsdigita.persistence.SessionManager;
|
|
||||||
// unused import com.arsdigita.persistence.OID;
|
|
||||||
import com.arsdigita.web.*;
|
|
||||||
import com.arsdigita.kernel.*;
|
import com.arsdigita.kernel.*;
|
||||||
// unused import com.arsdigita.sitenode.*;
|
|
||||||
import com.arsdigita.bookmarks.ui.*;
|
|
||||||
// unused import com.arsdigita.domain.DomainObjectFactory;
|
|
||||||
import com.arsdigita.domain.DomainObject;
|
import com.arsdigita.domain.DomainObject;
|
||||||
// import com.arsdigita.initializer.Configuration;
|
|
||||||
// unused import com.arsdigita.initializer.InitializationException;
|
|
||||||
// unused import com.arsdigita.domain.DataObjectNotFoundException;
|
|
||||||
import com.arsdigita.persistence.pdl.ManifestSource;
|
import com.arsdigita.persistence.pdl.ManifestSource;
|
||||||
import com.arsdigita.persistence.pdl.NameFilter;
|
import com.arsdigita.persistence.pdl.NameFilter;
|
||||||
import com.arsdigita.portal.PortletType;
|
|
||||||
import com.arsdigita.portal.apportlet.AppPortletSetup;
|
|
||||||
import com.arsdigita.runtime.CompoundInitializer;
|
import com.arsdigita.runtime.CompoundInitializer;
|
||||||
// unused import com.arsdigita.runtime.DataInitEvent;
|
|
||||||
import com.arsdigita.runtime.DomainInitEvent;
|
import com.arsdigita.runtime.DomainInitEvent;
|
||||||
import com.arsdigita.runtime.PDLInitializer;
|
import com.arsdigita.runtime.PDLInitializer;
|
||||||
import com.arsdigita.runtime.RuntimeConfig;
|
import com.arsdigita.runtime.RuntimeConfig;
|
||||||
// unusd import com.arsdigita.util.Assert;
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p><strong>Experimental</strong></p>
|
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jparsons@redhat.com">Jim Parsons</a>
|
* @author <a href="mailto:jparsons@redhat.com">Jim Parsons</a>
|
||||||
*/
|
*/
|
||||||
public class Initializer extends CompoundInitializer {
|
public class Initializer extends CompoundInitializer {
|
||||||
|
|
||||||
|
/** Creates a s_logging category with name = full name of class */
|
||||||
private static final Logger s_log = Logger.getLogger
|
private static final Logger s_log = Logger.getLogger
|
||||||
(Initializer.class);
|
(Initializer.class);
|
||||||
|
|
||||||
// required by Old Initializer.
|
/**
|
||||||
// private Configuration m_conf = new Configuration();
|
*
|
||||||
|
*/
|
||||||
public Initializer() {
|
public Initializer() {
|
||||||
final String url = RuntimeConfig.getConfig().getJDBCURL();
|
final String url = RuntimeConfig.getConfig().getJDBCURL();
|
||||||
final int database = DbHelper.getDatabaseFromURL(url);
|
final int database = DbHelper.getDatabaseFromURL(url);
|
||||||
|
|
@ -69,70 +57,34 @@ public class Initializer extends CompoundInitializer {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param e
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void init(DomainInitEvent e) {
|
public void init(DomainInitEvent e) {
|
||||||
s_log.info("Bookmarks app is initializing using .init(DomainInitEvent e)");
|
s_log.info("Bookmarks app is initializing using .init(DomainInitEvent e)");
|
||||||
// setupDomainFactory();
|
super.init(e);
|
||||||
|
|
||||||
TransactionContext txn = SessionManager.getSession()
|
/* Register object instantiator for Bookmarks Application */
|
||||||
.getTransactionContext();
|
e.getFactory().registerInstantiator(
|
||||||
txn.beginTxn();
|
Bookmarks.BASE_DATA_OBJECT_TYPE,
|
||||||
setupBookmarks();
|
new ACSObjectInstantiator() {
|
||||||
txn.commitTxn();
|
@Override
|
||||||
s_log.info("Bookamrks Initializer completed.");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// public final void doStartup() {
|
|
||||||
// s_log.warn("Initializing Bookmarks...");
|
|
||||||
|
|
||||||
// TransactionContext txn =
|
|
||||||
// SessionManager.getSession().getTransactionContext();
|
|
||||||
|
|
||||||
// txn.beginTxn();
|
|
||||||
|
|
||||||
// setupBookmarks();
|
|
||||||
|
|
||||||
// txn.commitTxn();
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
private void setupBookmarks() {
|
|
||||||
|
|
||||||
ApplicationSetup appsetup = new ApplicationSetup(s_log);
|
|
||||||
appsetup.setApplicationObjectType( BookmarkApplication.BASE_DATA_OBJECT_TYPE);
|
|
||||||
appsetup.setKey("bookmarks");
|
|
||||||
appsetup.setTitle("Bookmarks Application");
|
|
||||||
appsetup.setDescription("Bookmarks for a Portal");
|
|
||||||
appsetup.setDispatcherClass("com.arsdigita.bookmarks.BookmarkDispatcher");
|
|
||||||
appsetup.setPortalApplication(true);
|
|
||||||
appsetup.setInstantiator(new ACSObjectInstantiator() {
|
|
||||||
protected DomainObject doNewInstance(DataObject dataObject) {
|
|
||||||
return new BookmarkApplication(dataObject);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
ApplicationType bmrkAppType = appsetup.run();
|
|
||||||
|
|
||||||
|
|
||||||
AppPortletSetup setup = new AppPortletSetup(s_log);
|
|
||||||
|
|
||||||
setup.setPortletObjectType
|
|
||||||
(BookmarkPortlet.BASE_DATA_OBJECT_TYPE);
|
|
||||||
setup.setTitle("Portal Bookmarks");
|
|
||||||
setup.setDescription("Displays bookmarks for this portal.");
|
|
||||||
setup.setProfile(PortletType.NARROW_PROFILE);
|
|
||||||
setup.setPortalApplication(false);
|
|
||||||
setup.setProviderApplicationType(bmrkAppType);
|
|
||||||
setup.setInstantiator(new ACSObjectInstantiator() {
|
|
||||||
public DomainObject doNewInstance(DataObject dataObject) {
|
public DomainObject doNewInstance(DataObject dataObject) {
|
||||||
return new BookmarkPortlet(dataObject);
|
return new Bookmarks(dataObject);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
setup.run();
|
|
||||||
|
/* Register object instantiator for Bookmarks Portlet */
|
||||||
|
e.getFactory().registerInstantiator(
|
||||||
|
BookmarkPortlet.BASE_DATA_OBJECT_TYPE,
|
||||||
|
new ACSObjectInstantiator() {
|
||||||
|
public DomainObject doNewInstance(DataObject dataObject) {
|
||||||
|
return new BookmarkPortlet(dataObject);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// public final void doShutdown() {}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,126 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2012 Peter Boy <pb@zes.uni-bremen.de> All Rights Reserved.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2.1 of
|
||||||
|
* the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arsdigita.bookmarks;
|
||||||
|
|
||||||
|
|
||||||
|
import com.arsdigita.bookmarks.ui.BookmarkPortlet;
|
||||||
|
import com.arsdigita.kernel.Kernel;
|
||||||
|
import com.arsdigita.kernel.KernelExcursion;
|
||||||
|
import com.arsdigita.loader.PackageLoader;
|
||||||
|
import com.arsdigita.portal.PortletType;
|
||||||
|
import com.arsdigita.portal.apportlet.AppPortletType;
|
||||||
|
import com.arsdigita.runtime.ScriptContext;
|
||||||
|
import com.arsdigita.web.ApplicationType;
|
||||||
|
import com.arsdigita.web.Application;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Executes nonrecurring at install time and loads (installs and initializes)
|
||||||
|
* the HTTP Auth application and type persistently into database.</p>
|
||||||
|
*
|
||||||
|
* @author Daniel Berrange
|
||||||
|
* @version $Id: Loader.java 287 2005-02-22 00:29:02Z sskracic $
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author pb
|
||||||
|
*/
|
||||||
|
public class Loader extends PackageLoader {
|
||||||
|
|
||||||
|
/** Creates a s_logging category with name = full name of class */
|
||||||
|
private static final Logger s_log = Logger.getLogger(Loader.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param ctx
|
||||||
|
*/
|
||||||
|
public void run(final ScriptContext ctx) {
|
||||||
|
new KernelExcursion() {
|
||||||
|
public void excurse() {
|
||||||
|
setEffectiveParty(Kernel.getSystemParty());
|
||||||
|
|
||||||
|
ApplicationType bmrkAppType = loadBookmarksApp();
|
||||||
|
loadBookmarksPortlet(bmrkAppType);
|
||||||
|
setupDefaultBookmarkApplicationInstance();
|
||||||
|
|
||||||
|
}
|
||||||
|
}.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the Bookmarks application into persistent storage.
|
||||||
|
*
|
||||||
|
* @return Bookmarks application type, requirred to load the portlet type
|
||||||
|
*/
|
||||||
|
private ApplicationType loadBookmarksApp() {
|
||||||
|
|
||||||
|
/* Create new type legacy free application type
|
||||||
|
* NOTE: The wording in the title parameter of ApplicationType
|
||||||
|
* determines the name of the subdirectory for the XSL stylesheets.
|
||||||
|
* It gets "urlized", i.e. trimming leading and trailing blanks and
|
||||||
|
* replacing blanks between words and illegal characters with an
|
||||||
|
* hyphen and converted to lower case.
|
||||||
|
* "Bookmarks" will become "bookmarks". */
|
||||||
|
ApplicationType type = new ApplicationType("Bookmarks",
|
||||||
|
Bookmarks.BASE_DATA_OBJECT_TYPE );
|
||||||
|
|
||||||
|
type.setDescription("Bookmarks for a Portal");
|
||||||
|
type.save();
|
||||||
|
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadBookmarksPortlet(ApplicationType bmrkAppType ) {
|
||||||
|
|
||||||
|
AppPortletType type = AppPortletType.createAppPortletType(
|
||||||
|
"Portal Bookmarks",
|
||||||
|
PortletType.NARROW_PROFILE,
|
||||||
|
BookmarkPortlet.BASE_DATA_OBJECT_TYPE);
|
||||||
|
type.setProviderApplicationType(bmrkAppType);
|
||||||
|
type.setDescription("Displays bookmarks for this portal.");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates the Bookmarks application admin instance.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static void setupDefaultBookmarkApplicationInstance() {
|
||||||
|
|
||||||
|
/* Determine a parent application. Bookmarks admin page will be
|
||||||
|
* installed beyond the admin's applications URL. */
|
||||||
|
Application admin = Application.retrieveApplicationForPath("/admin/");
|
||||||
|
|
||||||
|
// create application instance
|
||||||
|
// Whether a legacy compatible or a legacy free application is
|
||||||
|
// created depends on the type of ApplicationType above. No need to
|
||||||
|
// modify anything here in the migration process
|
||||||
|
// old-style package key used as url fragment where to install the instance
|
||||||
|
s_log.debug("Creating BookmarkApplication instance ...");
|
||||||
|
|
||||||
|
Bookmarks app = Bookmarks.create("bookmarks", "Bookmarks", admin);
|
||||||
|
|
||||||
|
s_log.debug("Bookmarks instance " + " created.");
|
||||||
|
s_log.debug("Done loading bookmarks.");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -117,10 +117,12 @@ public class BookmarkBasePage extends Page {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
public void lock() {
|
public void lock() {
|
||||||
buildPage();
|
|
||||||
|
|
||||||
|
buildPage();
|
||||||
super.lock();
|
super.lock();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only the PortalPage.lock() should invoke this
|
// Only the PortalPage.lock() should invoke this
|
||||||
|
|
@ -342,8 +344,10 @@ public class BookmarkBasePage extends Page {
|
||||||
|
|
||||||
Application parent = app.getParentApplication();
|
Application parent = app.getParentApplication();
|
||||||
|
|
||||||
link.setChild(new Label(parent.getTitle()));
|
if (parent != null) {
|
||||||
link.setTarget(parent.getPath());
|
link.setChild(new Label(parent.getTitle()));
|
||||||
|
link.setTarget(parent.getPath());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ package com.arsdigita.bookmarks.ui;
|
||||||
|
|
||||||
import com.arsdigita.bookmarks.util.GlobalizationUtil;
|
import com.arsdigita.bookmarks.util.GlobalizationUtil;
|
||||||
import com.arsdigita.bookmarks.BookmarkCollection;
|
import com.arsdigita.bookmarks.BookmarkCollection;
|
||||||
import com.arsdigita.bookmarks.BookmarkApplication;
|
import com.arsdigita.bookmarks.Bookmarks;
|
||||||
import com.arsdigita.bookmarks.Bookmark;
|
import com.arsdigita.bookmarks.Bookmark;
|
||||||
|
|
||||||
import com.arsdigita.web.Application;
|
import com.arsdigita.web.Application;
|
||||||
|
|
@ -89,7 +89,7 @@ public class BookmarkEditPane extends DynamicListWizard {
|
||||||
BookmarkCollection m_bmrks;
|
BookmarkCollection m_bmrks;
|
||||||
Bookmark m_bmrk;
|
Bookmark m_bmrk;
|
||||||
public BmrkListModel(PageState s) {
|
public BmrkListModel(PageState s) {
|
||||||
BookmarkApplication bmrkapp = (BookmarkApplication)Application.getCurrentApplication(s.getRequest());
|
Bookmarks bmrkapp = (Bookmarks)Application.getCurrentApplication(s.getRequest());
|
||||||
m_bmrks = bmrkapp.getBookmarks();
|
m_bmrks = bmrkapp.getBookmarks();
|
||||||
}
|
}
|
||||||
public boolean next() {
|
public boolean next() {
|
||||||
|
|
@ -129,7 +129,7 @@ public class BookmarkEditPane extends DynamicListWizard {
|
||||||
|
|
||||||
m_prtlRL = new RequestLocal() {
|
m_prtlRL = new RequestLocal() {
|
||||||
protected Object initialValue(PageState ps) {
|
protected Object initialValue(PageState ps) {
|
||||||
return (BookmarkApplication)Application.getCurrentApplication(
|
return (Bookmarks)Application.getCurrentApplication(
|
||||||
ps.getRequest());
|
ps.getRequest());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -181,7 +181,7 @@ public class BookmarkEditPane extends DynamicListWizard {
|
||||||
public void validate(FormSectionEvent ev) {
|
public void validate(FormSectionEvent ev) {
|
||||||
// check that the user has permission to create bookmarks.
|
// check that the user has permission to create bookmarks.
|
||||||
PageState ps = ev.getPageState();
|
PageState ps = ev.getPageState();
|
||||||
BookmarkApplication ba = (BookmarkApplication)m_prtlRL.get(ps);
|
Bookmarks ba = (Bookmarks)m_prtlRL.get(ps);
|
||||||
ba.assertPrivilege(PrivilegeDescriptor.CREATE);
|
ba.assertPrivilege(PrivilegeDescriptor.CREATE);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -190,7 +190,7 @@ public class BookmarkEditPane extends DynamicListWizard {
|
||||||
addForm.addProcessListener(new FormProcessListener() {
|
addForm.addProcessListener(new FormProcessListener() {
|
||||||
public void process(FormSectionEvent ev) {
|
public void process(FormSectionEvent ev) {
|
||||||
PageState ps = ev.getPageState();
|
PageState ps = ev.getPageState();
|
||||||
final BookmarkApplication ba = (BookmarkApplication)m_prtlRL.get(ps);
|
final Bookmarks ba = (Bookmarks)m_prtlRL.get(ps);
|
||||||
final Bookmark newBmrk =
|
final Bookmark newBmrk =
|
||||||
new Bookmark(newBmrkName.getValue(ps).toString(),
|
new Bookmark(newBmrkName.getValue(ps).toString(),
|
||||||
newBmrkURL.getValue(ps).toString());
|
newBmrkURL.getValue(ps).toString());
|
||||||
|
|
@ -252,7 +252,7 @@ public class BookmarkEditPane extends DynamicListWizard {
|
||||||
public Component getComponent(List list, PageState state,
|
public Component getComponent(List list, PageState state,
|
||||||
Object value, String key, int index, boolean isSelected) {
|
Object value, String key, int index, boolean isSelected) {
|
||||||
|
|
||||||
BookmarkApplication app = (BookmarkApplication) Web.getContext()
|
Bookmarks app = (Bookmarks) Web.getContext()
|
||||||
.getApplication();
|
.getApplication();
|
||||||
BookmarkCollection bColl = app.getBookmarks();
|
BookmarkCollection bColl = app.getBookmarks();
|
||||||
final long size = bColl.size();
|
final long size = bColl.size();
|
||||||
|
|
@ -303,13 +303,13 @@ public class BookmarkEditPane extends DynamicListWizard {
|
||||||
if (EVENT_SWAP_UP.equals(name)) {
|
if (EVENT_SWAP_UP.equals(name)) {
|
||||||
BigDecimal bID = new BigDecimal(bIDstr);
|
BigDecimal bID = new BigDecimal(bIDstr);
|
||||||
Bookmark b = Bookmark.retrieveBookmark(bID);
|
Bookmark b = Bookmark.retrieveBookmark(bID);
|
||||||
BookmarkApplication bApp = b.getBookmarkApplication();
|
Bookmarks bApp = b.getBookmarkApplication();
|
||||||
bApp.swapBookmarkWithPrevious(b);
|
bApp.swapBookmarkWithPrevious(b);
|
||||||
}
|
}
|
||||||
else if (EVENT_SWAP_DOWN.equals(name)) {
|
else if (EVENT_SWAP_DOWN.equals(name)) {
|
||||||
BigDecimal bID = new BigDecimal(bIDstr);
|
BigDecimal bID = new BigDecimal(bIDstr);
|
||||||
Bookmark b = Bookmark.retrieveBookmark(bID);
|
Bookmark b = Bookmark.retrieveBookmark(bID);
|
||||||
BookmarkApplication bApp = b.getBookmarkApplication();
|
Bookmarks bApp = b.getBookmarkApplication();
|
||||||
bApp.swapBookmarkWithNext(b);
|
bApp.swapBookmarkWithNext(b);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -536,7 +536,7 @@ public class BookmarkEditPane extends DynamicListWizard {
|
||||||
BigDecimal bd =
|
BigDecimal bd =
|
||||||
new BigDecimal((String) getSelectionModel().getSelectedKey(s));
|
new BigDecimal((String) getSelectionModel().getSelectedKey(s));
|
||||||
Bookmark bmrk = Bookmark.retrieveBookmark(bd);
|
Bookmark bmrk = Bookmark.retrieveBookmark(bd);
|
||||||
BookmarkApplication ba = (BookmarkApplication)Application.getCurrentApplication(s.getRequest());
|
Bookmarks ba = (Bookmarks)Application.getCurrentApplication(s.getRequest());
|
||||||
bmrk.setName(bookmarkName.getValue(s).toString());
|
bmrk.setName(bookmarkName.getValue(s).toString());
|
||||||
bmrk.setURL(bookmarkURL.getValue(s).toString());
|
bmrk.setURL(bookmarkURL.getValue(s).toString());
|
||||||
bmrk.setDescription(bookmarkDescription.getValue(s).toString());
|
bmrk.setDescription(bookmarkDescription.getValue(s).toString());
|
||||||
|
|
@ -592,7 +592,7 @@ public class BookmarkEditPane extends DynamicListWizard {
|
||||||
if(button.isSelected(s)) {
|
if(button.isSelected(s)) {
|
||||||
BigDecimal bmrkID = new BigDecimal((String)getSelectionModel().getSelectedKey(s));
|
BigDecimal bmrkID = new BigDecimal((String)getSelectionModel().getSelectedKey(s));
|
||||||
Bookmark bmrk = Bookmark.retrieveBookmark(bmrkID);
|
Bookmark bmrk = Bookmark.retrieveBookmark(bmrkID);
|
||||||
BookmarkApplication bmrkapp = (BookmarkApplication)Application.getCurrentApplication(s.getRequest());
|
Bookmarks bmrkapp = (Bookmarks)Application.getCurrentApplication(s.getRequest());
|
||||||
bmrkapp.removeBookmark(bmrk);
|
bmrkapp.removeBookmark(bmrk);
|
||||||
getSelectionModel().clearSelection(s);
|
getSelectionModel().clearSelection(s);
|
||||||
reset(s);
|
reset(s);
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ import com.arsdigita.bebop.GridPanel;
|
||||||
import com.arsdigita.bebop.Label;
|
import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.portal.AbstractPortletRenderer;
|
import com.arsdigita.bebop.portal.AbstractPortletRenderer;
|
||||||
import com.arsdigita.bookmarks.BookmarkApplication;
|
import com.arsdigita.bookmarks.Bookmarks;
|
||||||
import com.arsdigita.bookmarks.BookmarkCollection;
|
import com.arsdigita.bookmarks.BookmarkCollection;
|
||||||
import com.arsdigita.bookmarks.util.GlobalizationUtil;
|
import com.arsdigita.bookmarks.util.GlobalizationUtil;
|
||||||
import com.arsdigita.kernel.permissions.PermissionDescriptor;
|
import com.arsdigita.kernel.permissions.PermissionDescriptor;
|
||||||
|
|
@ -44,44 +44,82 @@ import com.arsdigita.xml.Element;
|
||||||
*/
|
*/
|
||||||
public class BookmarkPortlet extends AppPortlet {
|
public class BookmarkPortlet extends AppPortlet {
|
||||||
|
|
||||||
|
/** Logger instance for debugging */
|
||||||
private static final Logger s_log = Logger.getLogger(BookmarkPortlet.class);
|
private static final Logger s_log = Logger.getLogger(BookmarkPortlet.class);
|
||||||
|
|
||||||
|
/** PDL stuff - Data Object */
|
||||||
public static final String BASE_DATA_OBJECT_TYPE =
|
public static final String BASE_DATA_OBJECT_TYPE =
|
||||||
"com.arsdigita.workspace.BookmarkPortlet";
|
"com.arsdigita.workspace.BookmarkPortlet";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide the Data Object Type.
|
||||||
|
* @return DataObjectType as String
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
protected String getBaseDataObjectType() {
|
protected String getBaseDataObjectType() {
|
||||||
return BASE_DATA_OBJECT_TYPE;
|
return BASE_DATA_OBJECT_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param dataObject
|
||||||
|
*/
|
||||||
public BookmarkPortlet(DataObject dataObject) {
|
public BookmarkPortlet(DataObject dataObject) {
|
||||||
super(dataObject);
|
super(dataObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
public String getZoomURL() {
|
public String getZoomURL() {
|
||||||
Application app = getParentApplication();
|
Application app = getParentApplication();
|
||||||
if (!PermissionService.checkPermission(
|
if (!PermissionService.checkPermission(
|
||||||
new PermissionDescriptor(PrivilegeDescriptor.READ, app, Web.getContext().getUser()))) {
|
new PermissionDescriptor(PrivilegeDescriptor.READ,
|
||||||
|
app,
|
||||||
|
Web.getContext().getUser()))) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return (URL.getDispatcherPath() + app.getPrimaryURL());
|
return (URL.getDispatcherPath() + app.getPrimaryURL());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
protected AbstractPortletRenderer doGetPortletRenderer() {
|
protected AbstractPortletRenderer doGetPortletRenderer() {
|
||||||
return new BookmarkPortletRenderer(this);
|
return new BookmarkPortletRenderer(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
class BookmarkPortletRenderer extends AbstractPortletRenderer {
|
class BookmarkPortletRenderer extends AbstractPortletRenderer {
|
||||||
|
|
||||||
private BookmarkPortlet m_portlet;
|
private BookmarkPortlet m_portlet;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param portlet
|
||||||
|
*/
|
||||||
public BookmarkPortletRenderer
|
public BookmarkPortletRenderer
|
||||||
(BookmarkPortlet portlet) {
|
(BookmarkPortlet portlet) {
|
||||||
m_portlet = portlet;
|
m_portlet = portlet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param pageState
|
||||||
|
* @param parentElement
|
||||||
|
*/
|
||||||
protected void generateBodyXML(PageState pageState, Element parentElement) {
|
protected void generateBodyXML(PageState pageState, Element parentElement) {
|
||||||
BookmarkApplication bmrkapp =
|
Bookmarks bmrkapp =
|
||||||
(BookmarkApplication)m_portlet.getParentApplication();
|
(Bookmarks)m_portlet.getParentApplication();
|
||||||
|
|
||||||
// Variables used cursorwise.
|
// Variables used cursorwise.
|
||||||
int counter;
|
int counter;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
|
||||||
|
version="2.4">
|
||||||
|
|
||||||
|
<!-- Servlets for the docrepo applications -->
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>bookmarks</servlet-name>
|
||||||
|
<servlet-class>com.arsdigita.bookmarks.BookmarksServlet</servlet-class>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>bookmarks</servlet-name>
|
||||||
|
<url-pattern>/bookmarks/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
|
</web-app>
|
||||||
|
|
@ -341,17 +341,16 @@ public abstract class DomainObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set an association DomainObjects DataObject.
|
* Set an association DomainObjects DataObject. This should only be used
|
||||||
* This should only be used inside of a setXXX
|
* inside of a setXXX method.
|
||||||
* method.
|
|
||||||
* <p>
|
* <p>
|
||||||
* Specificall, this method should only be used to set
|
* Specifically, this method should only be used to set associations
|
||||||
* associations whose multiplicity is 0..1 or 1..1.
|
* whose multiplicity is 0..1 or 1..1.
|
||||||
* If the upper bound of the multiplicity is greater than 1
|
* If the upper bound of the multiplicity is greater than 1 then the
|
||||||
* then the {@link #add(String, DataObject)} method should be used.
|
* {@link #add(String, DataObject)} method should be used.
|
||||||
*
|
*
|
||||||
* @see com.arsdigita.persistence.DataObject#set(String, Object)
|
* @see com.arsdigita.persistence.DataObject#set(String, Object)
|
||||||
**/
|
*/
|
||||||
protected void setAssociation(String attr, DomainObject dobj) {
|
protected void setAssociation(String attr, DomainObject dobj) {
|
||||||
set(attr, dobj == null ? null : dobj.m_dataObject);
|
set(attr, dobj == null ? null : dobj.m_dataObject);
|
||||||
}
|
}
|
||||||
|
|
@ -515,8 +514,9 @@ public abstract class DomainObject {
|
||||||
* whether the object is new, modified, deleted, or unknown. Unknown is for
|
* whether the object is new, modified, deleted, or unknown. Unknown is for
|
||||||
* objects that have been invalidated.
|
* objects that have been invalidated.
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuffer result = new StringBuffer();
|
StringBuilder result = new StringBuilder();
|
||||||
OID oid = getOID();
|
OID oid = getOID();
|
||||||
if ( oid != null ) {
|
if ( oid != null ) {
|
||||||
result.append(oid.toString());
|
result.append(oid.toString());
|
||||||
|
|
@ -586,37 +586,47 @@ public abstract class DomainObject {
|
||||||
|
|
||||||
private DomainObject getDomainObject() { return DomainObject.this; }
|
private DomainObject getDomainObject() { return DomainObject.this; }
|
||||||
|
|
||||||
|
@Override
|
||||||
public void set(DataObject object, String property, Object previous,
|
public void set(DataObject object, String property, Object previous,
|
||||||
Object value) { }
|
Object value) { }
|
||||||
|
|
||||||
|
@Override
|
||||||
public void add(DataObject object, String property,
|
public void add(DataObject object, String property,
|
||||||
DataObject value) { }
|
DataObject value) { }
|
||||||
|
|
||||||
|
@Override
|
||||||
public void remove(DataObject object, String property,
|
public void remove(DataObject object, String property,
|
||||||
DataObject value) { }
|
DataObject value) { }
|
||||||
|
|
||||||
|
@Override
|
||||||
public void clear(DataObject object, String property) { }
|
public void clear(DataObject object, String property) { }
|
||||||
|
|
||||||
|
@Override
|
||||||
public void beforeSave(DataObject object) {
|
public void beforeSave(DataObject object) {
|
||||||
getDomainObject().beforeSave();
|
getDomainObject().beforeSave();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void afterSave(DataObject object) {
|
public void afterSave(DataObject object) {
|
||||||
getDomainObject().afterSave();
|
getDomainObject().afterSave();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void beforeDelete(DataObject object) {
|
public void beforeDelete(DataObject object) {
|
||||||
getDomainObject().beforeDelete();
|
getDomainObject().beforeDelete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void afterDelete(DataObject object) {
|
public void afterDelete(DataObject object) {
|
||||||
getDomainObject().afterDelete();
|
getDomainObject().afterDelete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return getDomainObject().hashCode();
|
return getDomainObject().hashCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean equals(Object other) {
|
public boolean equals(Object other) {
|
||||||
if (other instanceof SaveObserver) {
|
if (other instanceof SaveObserver) {
|
||||||
return getDomainObject().equals(
|
return getDomainObject().equals(
|
||||||
|
|
@ -639,6 +649,7 @@ public abstract class DomainObject {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Save observer for: " + getDomainObject().getOID() + " (" +
|
return "Save observer for: " + getDomainObject().getOID() + " (" +
|
||||||
super.toString() + ")";
|
super.toString() + ")";
|
||||||
|
|
|
||||||
|
|
@ -109,19 +109,7 @@ public class PortletType extends ResourceType {
|
||||||
Assert.exists(title, "title");
|
Assert.exists(title, "title");
|
||||||
Assert.exists(profile, "profile");
|
Assert.exists(profile, "profile");
|
||||||
Assert.exists(portletObjectType, "portletObjectType");
|
Assert.exists(portletObjectType, "portletObjectType");
|
||||||
/* Portal now legacy free. To be deleted when transistion is completed.
|
|
||||||
PackageType packageType = null;
|
|
||||||
// is com.arsdigita.portal.Portal initialized
|
|
||||||
try {
|
|
||||||
packageType = PackageType.findByKey("portal");
|
|
||||||
} catch (DataObjectNotFoundException nfe) {
|
|
||||||
String message =
|
|
||||||
"The PackageType 'portal' is not installed. It must be " +
|
|
||||||
"installed in order to create a new PortletType.";
|
|
||||||
s_cat.error(message);
|
|
||||||
throw new IllegalStateException(message);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
// is com.arsdigita.portal.Portal initialized?
|
// is com.arsdigita.portal.Portal initialized?
|
||||||
if ( !ResourceType.isInstalled(Portal.BASE_DATA_OBJECT_TYPE) ) {
|
if ( !ResourceType.isInstalled(Portal.BASE_DATA_OBJECT_TYPE) ) {
|
||||||
String message =
|
String message =
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,7 @@ public class AppPortlet extends Portlet {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public PortletRenderer getPortletRenderer() {
|
public PortletRenderer getPortletRenderer() {
|
||||||
AbstractPortletRenderer portletRenderer = doGetPortletRenderer();
|
AbstractPortletRenderer portletRenderer = doGetPortletRenderer();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,19 +35,20 @@ import java.math.BigDecimal;
|
||||||
public final class AppPortletType extends PortletType {
|
public final class AppPortletType extends PortletType {
|
||||||
|
|
||||||
private static final Logger s_cat =
|
private static final Logger s_cat =
|
||||||
Logger.getLogger(AppPortletType.class.getName());
|
Logger.getLogger(AppPortletType.class.getName());
|
||||||
|
|
||||||
private final static String IS_PORTAL_APPLICATION =
|
private final static String IS_PORTAL_APPLICATION = "isWorkspaceApplication";
|
||||||
"isWorkspaceApplication";
|
|
||||||
|
|
||||||
protected AppPortletType(DataObject dataObject) {
|
protected AppPortletType(DataObject dataObject) {
|
||||||
super(dataObject);
|
super(dataObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create from packageType.
|
// Create from packageType.
|
||||||
protected AppPortletType
|
protected AppPortletType(String dataObjectType,
|
||||||
(String dataObjectType, String title, String profile,
|
String title,
|
||||||
String portletObjectType) {
|
String profile,
|
||||||
|
String portletObjectType) {
|
||||||
|
|
||||||
super(dataObjectType,title,profile,portletObjectType);
|
super(dataObjectType,title,profile,portletObjectType);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
<ccm:requires name="ccm-cms" version="6.6.0" relation="ge"/>
|
<ccm:requires name="ccm-cms" version="6.6.0" relation="ge"/>
|
||||||
<ccm:requires name="ccm-cms-types-article" version="6.6.0" relation="ge"/>
|
<ccm:requires name="ccm-cms-types-article" version="6.6.0" relation="ge"/>
|
||||||
<ccm:requires name="ccm-cms-types-mparticle" version="6.6.0" relation="ge"/>
|
<ccm:requires name="ccm-cms-types-mparticle" version="6.6.0" relation="ge"/>
|
||||||
<ccm:requires name="ccm-ldn-navigation" version="6.6.0" relation="ge"/>
|
<ccm:requires name="ccm-navigation" version="6.6.0" relation="ge"/>
|
||||||
</ccm:dependencies>
|
</ccm:dependencies>
|
||||||
|
|
||||||
<ccm:contacts>
|
<ccm:contacts>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,222 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2012 Peter Boy <pb@zes.uni-bremen.de> All Rights Reserved.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2.1 of
|
||||||
|
* the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.arsdigita.cms.docmgr;
|
||||||
|
|
||||||
|
import com.arsdigita.docrepo.ui.RecentUpdatedDocsPortlet;
|
||||||
|
// import com.arsdigita.mimetypes.*;
|
||||||
|
import com.arsdigita.domain.DomainObject;
|
||||||
|
import com.arsdigita.kernel.ACSObjectInstantiator;
|
||||||
|
import com.arsdigita.kernel.Kernel;
|
||||||
|
import com.arsdigita.kernel.KernelExcursion;
|
||||||
|
import com.arsdigita.loader.PackageLoader;
|
||||||
|
import com.arsdigita.persistence.DataObject;
|
||||||
|
import com.arsdigita.portal.PortletType;
|
||||||
|
import com.arsdigita.portal.apportlet.AppPortletSetup;
|
||||||
|
import com.arsdigita.runtime.ScriptContext;
|
||||||
|
import com.arsdigita.web.ApplicationSetup;
|
||||||
|
import com.arsdigita.web.ApplicationType;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CMS Document Manager (DocMgr) Loader
|
||||||
|
*
|
||||||
|
* @author pboy <pboy@barkhof.uni-bremen.de>
|
||||||
|
* @version $Id: Loader.java $
|
||||||
|
**/
|
||||||
|
|
||||||
|
public class Loader extends PackageLoader {
|
||||||
|
|
||||||
|
|
||||||
|
/** Logger instance for debugging */
|
||||||
|
private static final Logger s_log = Logger.getLogger(Loader.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run script invoked by com.arsdigita.packing loader script.
|
||||||
|
*
|
||||||
|
* @param ctx
|
||||||
|
*/
|
||||||
|
public void run(final ScriptContext ctx) {
|
||||||
|
|
||||||
|
new KernelExcursion() {
|
||||||
|
public void excurse() {
|
||||||
|
setEffectiveParty(Kernel.getSystemParty());
|
||||||
|
|
||||||
|
loadDocRepositoryApplicationType(); //former setupDocs
|
||||||
|
setupDocRepositoryPortlet(null); //former setupDocManagerPortlet
|
||||||
|
|
||||||
|
setupDefaultDocRepository();
|
||||||
|
|
||||||
|
}
|
||||||
|
}.run();
|
||||||
|
|
||||||
|
s_log.info("Done");
|
||||||
|
}
|
||||||
|
|
||||||
|
// ////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// S e t u p o f a p p l i c a t i o n t y p e s
|
||||||
|
//
|
||||||
|
// ////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a document repository application type, the domain class of the
|
||||||
|
* document repository (docrepo) package, as a legacy-compatible type of
|
||||||
|
* application.
|
||||||
|
*
|
||||||
|
* Creates an entry in table application_types and a corresponding entry in
|
||||||
|
* apm_package_types
|
||||||
|
*
|
||||||
|
* TODO: migrate to a new style, legacy free application type.
|
||||||
|
*/
|
||||||
|
private ApplicationType loadDocRepositoryApplicationType() {
|
||||||
|
|
||||||
|
ApplicationSetup setup = new ApplicationSetup(s_log);
|
||||||
|
setup.setApplicationObjectType(Repository.BASE_DATA_OBJECT_TYPE);
|
||||||
|
setup.setKey("cmsdocs");
|
||||||
|
setup.setTitle("Document Manager (CMS) Application");
|
||||||
|
setup.setSingleton(false);
|
||||||
|
setup.setDescription
|
||||||
|
("The document manager empowers users to share documents.");
|
||||||
|
setup.setDispatcherClass("com.arsdigita.cms.docmgr.ui.DMDispatcher");
|
||||||
|
setup.setInstantiator(new ACSObjectInstantiator() {
|
||||||
|
@Override
|
||||||
|
public DomainObject doNewInstance(DataObject dataObject) {
|
||||||
|
return new Repository(dataObject);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return setup.run();
|
||||||
|
|
||||||
|
|
||||||
|
/* Legacy free initialization
|
||||||
|
* NOTE: The wording in the title parameter of ApplicationType determines
|
||||||
|
* the name of the subdirectory for the XSL stylesheets.
|
||||||
|
* It gets "urlized", i.e. trimming leading and trailing blanks and replacing
|
||||||
|
* blanks between words and illegal characters with an hyphen and converted
|
||||||
|
* to lower case.
|
||||||
|
* Example: "DocRepo" will become "docrepo".
|
||||||
|
*/
|
||||||
|
// ApplicationType type = new
|
||||||
|
// ApplicationType("DocRepo",
|
||||||
|
// Repository.BASE_DATA_OBJECT_TYPE );
|
||||||
|
|
||||||
|
// type.setDescription
|
||||||
|
// ("The document repository empowers users to share documents.");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private ApplicationType setupCategoryBrowsing() {
|
||||||
|
ApplicationSetup setup = new ApplicationSetup(s_log);
|
||||||
|
setup.setApplicationObjectType(DocumentCategoryBrowserApplication.BASE_DATA_OBJECT_TYPE);
|
||||||
|
setup.setKey("cmsdocs-categories");
|
||||||
|
setup.setTitle("Browse Documents Application");
|
||||||
|
setup.setSingleton(true);
|
||||||
|
setup.setDescription
|
||||||
|
("Browse documents by category.");
|
||||||
|
setup.setDispatcherClass("com.arsdigita.cms.docmgr.ui.DCNDispatcher");
|
||||||
|
setup.setInstantiator(new ACSObjectInstantiator() {
|
||||||
|
@Override
|
||||||
|
public DomainObject doNewInstance(DataObject dataObject) {
|
||||||
|
return new DocumentCategoryBrowserApplication(dataObject);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return setup.run();
|
||||||
|
|
||||||
|
}
|
||||||
|
private ApplicationType setupLegacyCategoryBrowsing() {
|
||||||
|
ApplicationSetup setup = new ApplicationSetup(s_log);
|
||||||
|
setup.setApplicationObjectType(LegacyCategoryBrowserApplication.BASE_DATA_OBJECT_TYPE);
|
||||||
|
setup.setKey("cmsdocs-categories-legacy");
|
||||||
|
setup.setTitle("Taxonomy Browser");
|
||||||
|
setup.setSingleton(true);
|
||||||
|
setup.setDescription
|
||||||
|
("Browse documents by category.");
|
||||||
|
setup.setDispatcherClass("com.arsdigita.cms.docmgr.ui.DCNDispatcher");
|
||||||
|
setup.setInstantiator(new ACSObjectInstantiator() {
|
||||||
|
@Override
|
||||||
|
public DomainObject doNewInstance(DataObject dataObject) {
|
||||||
|
return new LegacyCategoryBrowserApplication(dataObject);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return setup.run();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// S e t u p a D O C M G R a p p l i c a t i o n
|
||||||
|
//
|
||||||
|
// ////////////////////////////////////////////////////////////////////////
|
||||||
|
private void setupDefaultDocRepository() {
|
||||||
|
|
||||||
|
// try {
|
||||||
|
// SiteNode sn = SiteNode.getSiteNode("/administration", false);
|
||||||
|
// if (!"administration".equals(sn.getName())) {
|
||||||
|
Repository repo = Repository.create(
|
||||||
|
"repository", "Default Document Repository", null);
|
||||||
|
repo.save();
|
||||||
|
// }
|
||||||
|
// } catch (DataObjectNotFoundException e) {
|
||||||
|
// Assert.fail(e.getMessage());
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// S e t u p o f i n t e r n a l p o r t l e t s
|
||||||
|
//
|
||||||
|
// ////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a PortletType (persistent object) for the RecentUpdatedDocs
|
||||||
|
* Portlet.
|
||||||
|
*
|
||||||
|
* Instances (Portlets) are created by user interface or programmatically
|
||||||
|
* by configuration.
|
||||||
|
*/
|
||||||
|
private void setupDocRepositoryPortlet(ApplicationType provider) {
|
||||||
|
|
||||||
|
// Create the document repository portlet
|
||||||
|
AppPortletSetup setup = new AppPortletSetup(s_log);
|
||||||
|
|
||||||
|
setup.setPortletObjectType(RecentUpdatedDocsPortlet.BASE_DATA_OBJECT_TYPE);
|
||||||
|
setup.setTitle("Recently Updated Documents");
|
||||||
|
setup.setDescription(
|
||||||
|
"Displays the most recent documents in the document repository.");
|
||||||
|
setup.setProfile(PortletType.WIDE_PROFILE);
|
||||||
|
// setup.setProviderApplicationType(provider);
|
||||||
|
setup.setProviderApplicationType(Repository.BASE_DATA_OBJECT_TYPE);
|
||||||
|
setup.setInstantiator(new ACSObjectInstantiator() {
|
||||||
|
@Override
|
||||||
|
protected DomainObject doNewInstance(DataObject dataObject) {
|
||||||
|
return new RecentUpdatedDocsPortlet(dataObject);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
setup.run();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -78,6 +78,7 @@ public class Initializer extends CompoundInitializer {
|
||||||
// return m_conf;
|
// return m_conf;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
public void init(DomainInitEvent e) {
|
public void init(DomainInitEvent e) {
|
||||||
s_log.debug("Document (CCM) Manager is initializing using .init(DomainInitEvent e)");
|
s_log.debug("Document (CCM) Manager is initializing using .init(DomainInitEvent e)");
|
||||||
startup();
|
startup();
|
||||||
|
|
@ -92,7 +93,7 @@ public class Initializer extends CompoundInitializer {
|
||||||
setupDomainFactory();
|
setupDomainFactory();
|
||||||
|
|
||||||
TransactionContext txn = SessionManager.getSession()
|
TransactionContext txn = SessionManager.getSession()
|
||||||
.getTransactionContext();
|
.getTransactionContext();
|
||||||
txn.beginTxn();
|
txn.beginTxn();
|
||||||
|
|
||||||
ApplicationType docsAppType = setupDocs();
|
ApplicationType docsAppType = setupDocs();
|
||||||
|
|
@ -127,9 +128,6 @@ public class Initializer extends CompoundInitializer {
|
||||||
setup.setDescription
|
setup.setDescription
|
||||||
("The document manager empowers users to share documents.");
|
("The document manager empowers users to share documents.");
|
||||||
setup.setDispatcherClass("com.arsdigita.cms.docmgr.ui.DMDispatcher");
|
setup.setDispatcherClass("com.arsdigita.cms.docmgr.ui.DMDispatcher");
|
||||||
// Class Stylesheet and database backed stylesheet locations are
|
|
||||||
// deprecated and removed. New StylesheetResolver is pattern based.
|
|
||||||
// setup.setStylesheet("/packages/cms-docmgr/xsl/docs.xsl");
|
|
||||||
setup.setInstantiator(new ACSObjectInstantiator() {
|
setup.setInstantiator(new ACSObjectInstantiator() {
|
||||||
@Override
|
@Override
|
||||||
public DomainObject doNewInstance(DataObject dataObject) {
|
public DomainObject doNewInstance(DataObject dataObject) {
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,9 @@ public class Initializer extends CompoundInitializer {
|
||||||
|
|
||||||
private Thread[] m_workers;
|
private Thread[] m_workers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
public Initializer() {
|
public Initializer() {
|
||||||
final String url = RuntimeConfig.getConfig().getJDBCURL();
|
final String url = RuntimeConfig.getConfig().getJDBCURL();
|
||||||
final int database = DbHelper.getDatabaseFromURL(url);
|
final int database = DbHelper.getDatabaseFromURL(url);
|
||||||
|
|
|
||||||
|
|
@ -123,6 +123,9 @@ themedirector.default_theme_context=
|
||||||
themedirector.default_theme_path=themes/static/aplaws-generic
|
themedirector.default_theme_path=themes/static/aplaws-generic
|
||||||
themedirector.file_extensions=bmp css gif jpeg jpg js png xml xsl
|
themedirector.file_extensions=bmp css gif jpeg jpg js png xml xsl
|
||||||
|
|
||||||
|
# ccm-auth-http application
|
||||||
|
auth.http.admin_email=webmaster@scientificcms.org
|
||||||
|
auth.http.admin_identifier=webmaster
|
||||||
|
|
||||||
# ccm-sci-bundle (Loader only)
|
# ccm-sci-bundle (Loader only)
|
||||||
#com.arsdigita.bundle.loader.category_files=bundle/categories/sci-nav-domain-1.00.xml,bundle/categories/sci-nav-hierarchy-1.00.xml
|
#com.arsdigita.bundle.loader.category_files=bundle/categories/sci-nav-domain-1.00.xml,bundle/categories/sci-nav-hierarchy-1.00.xml
|
||||||
|
|
|
||||||
|
|
@ -138,10 +138,10 @@
|
||||||
|
|
||||||
<!-- Applications -->
|
<!-- Applications -->
|
||||||
<!--
|
<!--
|
||||||
|
-->
|
||||||
<ccm:application name="ccm-auth-http"/>
|
<ccm:application name="ccm-auth-http"/>
|
||||||
<ccm:application name="ccm-bookmarks"/>
|
<ccm:application name="ccm-bookmarks"/>
|
||||||
<ccm:application name="ccm-docmgr"/>
|
<ccm:application name="ccm-docmgr"/>
|
||||||
-->
|
|
||||||
<ccm:application name="ccm-docrepo"/>
|
<ccm:application name="ccm-docrepo"/>
|
||||||
<ccm:application name="ccm-faq"/>
|
<ccm:application name="ccm-faq"/>
|
||||||
<ccm:application name="ccm-forum"/>
|
<ccm:application name="ccm-forum"/>
|
||||||
|
|
@ -154,10 +154,10 @@
|
||||||
|
|
||||||
<!-- LDN extension -->
|
<!-- LDN extension -->
|
||||||
<!--
|
<!--
|
||||||
|
-->
|
||||||
<ccm:application name="ccm-ldn-exporter"/>
|
<ccm:application name="ccm-ldn-exporter"/>
|
||||||
<ccm:application name="ccm-ldn-freeform"/>
|
<ccm:application name="ccm-ldn-freeform"/>
|
||||||
<ccm:application name="ccm-ldn-importer"/>
|
<ccm:application name="ccm-ldn-importer"/>
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -167,20 +167,24 @@
|
||||||
|
|
||||||
<!-- Content Types -->
|
<!-- Content Types -->
|
||||||
<!-- <ccm:application name="ccm-cms-types-motditem"/>
|
<!-- <ccm:application name="ccm-cms-types-motditem"/>
|
||||||
Current code does not include any xsl templates, conent type does not
|
Current code does not include any xsl templates, content type does not
|
||||||
appear in the list of types in content center.
|
appear in the list of types in content center.
|
||||||
For the moment no longer supported (2012-02-06) -->
|
For the moment no longer supported (2012-02-06) -->
|
||||||
|
|
||||||
<!-- Applications -->
|
<!-- Applications -->
|
||||||
|
|
||||||
<!-- currently doesn't work for unknown reason
|
<!-- currently doesn't work for unknown reason
|
||||||
<ccm:application name="ccm-simplesurvey"/> -->
|
<ccm:application name="ccm-simplesurvey"/> -->
|
||||||
|
|
||||||
<!-- Without known funcionality
|
<!-- Without known funcionality
|
||||||
<ccm:application name="ccm-formbuilder-pdf"/>
|
<ccm:application name="ccm-formbuilder-pdf"/>
|
||||||
<ccm:application name="ccm-user-preferences"/> -->
|
<ccm:application name="ccm-user-preferences"/> -->
|
||||||
|
|
||||||
<!-- LDN extension -->
|
<!-- LDN extension -->
|
||||||
|
|
||||||
<!-- Conflicts with ccm-sci-bundle (this package) -->
|
<!-- Conflicts with ccm-sci-bundle (this package) -->
|
||||||
<!-- <ccm:application name="ccm-ldn-aplaws"/> -->
|
<!-- <ccm:application name="ccm-ldn-aplaws"/> -->
|
||||||
|
|
||||||
<!-- In it's current implementation very ldn / aplaws specific
|
<!-- In it's current implementation very ldn / aplaws specific
|
||||||
<ccm:application name="ccm-ldn-atoz"/>
|
<ccm:application name="ccm-ldn-atoz"/>
|
||||||
<ccm:application name="ccm-ldn-dublin"/>
|
<ccm:application name="ccm-ldn-dublin"/>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue