Hiding delete for core:authorInAuthorship NIHVIVO-739

Adding error message when Freemarker template system is not configured correctly in web.xml
Adding principal investigator and co-pi role custom forms NIHVIVO-626
This commit is contained in:
bdc34 2010-07-11 21:21:40 +00:00
parent 1a9e853a4d
commit 93b53a67c3
6 changed files with 81 additions and 7 deletions

View file

@ -124,6 +124,10 @@
<listener-class> edu.cornell.mannlib.vitro.webapp.search.lucene.LuceneSetup </listener-class>
</listener>
<listener>
<listener-class> edu.cornell.mannlib.vitro.webapp.auth.policy.setup.VivoPolicySetup</listener-class>
</listener>
<listener>
<listener-class>
edu.cornell.mannlib.vitro.webapp.auth.policy.setup.SelfEditingPolicySetup

View file

@ -0,0 +1,34 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.webapp.auth.policy;
import edu.cornell.mannlib.vitro.webapp.auth.identifier.IdentifierBundle;
import edu.cornell.mannlib.vitro.webapp.auth.policy.ifaces.Authorization;
import edu.cornell.mannlib.vitro.webapp.auth.policy.ifaces.DefaultInconclusivePolicy;
import edu.cornell.mannlib.vitro.webapp.auth.policy.ifaces.PolicyDecision;
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.DropObjectPropStmt;
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.ifaces.RequestedAction;
public class VivoPolicy extends DefaultInconclusivePolicy{
private static String AUTHORSHIP = "http://vivoweb.org/ontology/core#informationResourceInAuthorship";
@Override
public PolicyDecision isAuthorized(IdentifierBundle whoToAuth,
RequestedAction whatToAuth) {
if( whatToAuth instanceof DropObjectPropStmt ){
DropObjectPropStmt dops = (DropObjectPropStmt)whatToAuth;
/* Do not offer the user the option to delete so they will use the custom form instead */
/* see issue NIHVIVO-739 */
if( AUTHORSHIP.equals( dops.getUriOfPredicate() )) {
return new BasicPolicyDecision(Authorization.UNAUTHORIZED,
"Use the custom edit form for core:informationResourceInAuthorship");
}
}
return super.isAuthorized(whoToAuth, whatToAuth);
}
}

View file

@ -26,7 +26,7 @@ import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.ontology.DefineObje
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.ontology.RemoveOwlClass;
/**
* a policy where every type of action is authorized as INCONCLUSIVE
* A policy where every type of action is authorized as INCONCLUSIVE
* by default.
*
* @author bdc34
@ -46,5 +46,5 @@ public class DefaultInconclusivePolicy implements PolicyIface{
}
protected static PolicyDecision INCONCLUSIVE_DECISION = new BasicPolicyDecision(
Authorization.INCONCLUSIVE,
"THis is the default decision defined in DefaultInconclusivePolicy");
"This is the default decision defined in DefaultInconclusivePolicy");
}

View file

@ -0,0 +1,32 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.webapp.auth.policy.setup;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import edu.cornell.mannlib.vitro.webapp.auth.policy.ServletPolicyList;
import edu.cornell.mannlib.vitro.webapp.auth.policy.VivoPolicy;
public class VivoPolicySetup implements ServletContextListener{
private static final Log log = LogFactory.getLog(VivoPolicySetup.class);
@Override
public void contextInitialized(ServletContextEvent sce) {
log.debug("Setting up VivoPolicy");
//need to make a policy and add it to the ServeltContext
ServletPolicyList.addPolicy(sce.getServletContext(), new VivoPolicy());
//Note: The VivoPolicy doesn't use any identifier bundles so none are added here.
}
@Override
public void contextDestroyed(ServletContextEvent arg0) {
//do nothing
}
}

View file

@ -105,6 +105,8 @@ public class FreeMarkerHttpServlet extends VitroHttpServlet {
// load templates from. Thus configurations are associated with themes rather than portals.
Map<String, Configuration> themeToConfigMap = (Map<String, Configuration>) (getServletContext().getAttribute("themeToConfigMap"));
if( themeToConfigMap == null )
log.error("The templating system is not configured correctly. Make sure that you have the FreeMarkerSetup context listener in your web.xml");
if (themeToConfigMap.containsKey(themeDir)) {
return themeToConfigMap.get(themeDir);
} else {

View file

@ -36,9 +36,11 @@ public class IndexBuilderThread extends Thread{
log.debug("full re-index requested");
indexBuilder.indexRebuild();
}else{
log.debug("updated requested");
Thread.sleep(250);
indexBuilder.updatedIndex();
if( indexBuilder != null && indexBuilder.isThereWorkToDo() ){
Thread.sleep(250); //wait a bit to let a bit more work to come into the queue
log.debug("work found for IndexBuilder, starting update");
indexBuilder.updatedIndex();
}
}
}catch (Throwable e) {
log.error(e,e);