Skip to content

Commit

Permalink
SAM-2644 Restricted Assessemnts regression
Browse files Browse the repository at this point in the history
  • Loading branch information
ern committed Oct 21, 2015
1 parent 046dc79 commit c7b3b46
Show file tree
Hide file tree
Showing 6 changed files with 62 additions and 42 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ target
sakai-demo.tar.gz
sakai-demo.zip
.directory
.sass-cache
.sass-cache
.metadata
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import org.apache.commons.logging.LogFactory;
import org.sakaiproject.tool.assessment.facade.AssessmentFacade;
import org.sakaiproject.tool.assessment.facade.AssessmentTemplateFacade;
import org.sakaiproject.tool.assessment.facade.PublishedAssessmentFacade;
import org.sakaiproject.tool.assessment.ui.bean.authz.AuthorizationBean;
import org.sakaiproject.tool.assessment.ui.listener.util.ContextUtil;
import org.sakaiproject.util.ResourceLoader;
Expand Down Expand Up @@ -102,8 +103,7 @@ public class AuthorBean implements Serializable
private ArrayList<SelectItem> pendingActionList1;
private ArrayList<SelectItem> pendingActionList2;
private ArrayList<SelectItem> publishedActionList;
private Boolean canRemovePublishedAssessments;
private Boolean canRemovePublishedAssessmentsAfterStarted;
private Boolean removePubAssessmentsRestrictedAfterStarted;
private boolean isGradeable;
private boolean isEditable;

Expand Down Expand Up @@ -598,15 +598,6 @@ public void setEditPubAssessmentRestricted(boolean editPubAssessmentRestricted)
this.editPubAssessmentRestricted = editPubAssessmentRestricted;
}

public Boolean isEditPubAssessmentRestrictedAfterStarted(){
return getEditPubAssessmentRestrictedAfterStarted();
}

public Boolean getEditPubAssessmentRestrictedAfterStarted()
{
return editPubAssessmentRestrictedAfterStarted;
}

public void setEditPubAssessmentRestrictedAfterStarted(Boolean editPubAssessmentRestrictedAfterStarted)
{
this.editPubAssessmentRestrictedAfterStarted = editPubAssessmentRestrictedAfterStarted;
Expand Down Expand Up @@ -728,33 +719,49 @@ public ArrayList<SelectItem> getPendingSelectActionList2()
return pendingActionList2;
}

public Boolean getCanRemovePublishedAssessments(){
if(canRemovePublishedAssessments == null){
AuthorizationBean authorizationBean = (AuthorizationBean) ContextUtil.lookupBean("authorization");
public Boolean canEditPublishedAssessment(PublishedAssessmentFacade assessment) {
AuthorizationBean authorizationBean = (AuthorizationBean) ContextUtil.lookupBean("authorization");

boolean isDeleteAnyAssessment = authorizationBean.getDeleteAnyAssessment();
boolean isDeleteOwnAssessment = authorizationBean.getDeleteOwnAssessment();
if (isDeleteAnyAssessment || isDeleteOwnAssessment) {
canRemovePublishedAssessments = Boolean.TRUE;
}else{
canRemovePublishedAssessments = Boolean.FALSE;
if (authorizationBean.isSuperUser()) {
return Boolean.TRUE;
} else if (authorizationBean.getEditAnyAssessment() || authorizationBean.getEditOwnAssessment()) {
if (editPubAssessmentRestrictedAfterStarted) {
if (assessment.getSubmittedCount() == 0 && assessment.getInProgressCount() == 0) {
// allow the ability to edit if there are no assessments started or submitted
return Boolean.TRUE;
} else if (assessment.getRetractDate() != null && assessment.getRetractDate().before(getCurrentTime())) {
// however if there is activity only if the retract date has passed
return Boolean.TRUE;
}
} else {
return Boolean.TRUE;
}
}

return canRemovePublishedAssessments;
return Boolean.FALSE;
}

public void setCanRemovePublishedAssessmentsAfterStarted(Boolean canRemovePublishedAssessmentsAfterStarted){
this.canRemovePublishedAssessmentsAfterStarted = canRemovePublishedAssessmentsAfterStarted;
}
public Boolean isCanRemovePublishedAssessmentsAfterStarted(){
return getCanRemovePublishedAssessmentsAfterStarted();
public Boolean canRemovePublishedAssessment(PublishedAssessmentFacade assessment){
AuthorizationBean authorizationBean = (AuthorizationBean) ContextUtil.lookupBean("authorization");

if (authorizationBean.isSuperUser()) {
return Boolean.TRUE;
} else if (authorizationBean.getDeleteAnyAssessment() || authorizationBean.getDeleteOwnAssessment()) {
if (removePubAssessmentsRestrictedAfterStarted) {
if (assessment.getSubmittedCount() == 0 && assessment.getInProgressCount() == 0) {
// allow the ability to remove if there are no assessments started or submitted
return Boolean.TRUE;
}
} else {
return Boolean.TRUE;
}
}
return Boolean.FALSE;
}
public Boolean getCanRemovePublishedAssessmentsAfterStarted(){
return canRemovePublishedAssessmentsAfterStarted;

public void setRemovePubAssessmentsRestrictedAfterStarted(Boolean removePubAssessmentsRestrictedAfterStarted){
this.removePubAssessmentsRestrictedAfterStarted = removePubAssessmentsRestrictedAfterStarted;
}


public ArrayList<SelectItem> getPublishedSelectActionList()
{
if (publishedActionList != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import org.sakaiproject.tool.assessment.services.PersistenceService;
import org.sakaiproject.tool.assessment.ui.listener.author.AuthorActionListener;
import org.sakaiproject.tool.assessment.ui.listener.select.SelectActionListener;
import org.sakaiproject.tool.assessment.ui.listener.util.ContextUtil;
import org.sakaiproject.authz.cover.SecurityService;
import org.sakaiproject.tool.assessment.data.dao.authz.AuthorizationData;
import org.sakaiproject.tool.cover.ToolManager;
import java.io.Serializable;
Expand Down Expand Up @@ -55,6 +55,7 @@ public class AuthorizationBean implements Serializable {
private boolean adminAssessmentPrivilege = false;
private boolean adminTemplatePrivilege = false;
private boolean adminQuestionPoolPrivilege = false;
private Boolean superUser = null;

public AuthorizationBean(){
}
Expand Down Expand Up @@ -457,5 +458,12 @@ public static boolean isAssessmentInSite(final String assessmentId, final String
public static boolean isAssessmentInSite(final String assessmentId, final boolean published) {
return isAssessmentInSite(assessmentId, AgentFacade.getCurrentSiteId(), published);
}

public boolean isSuperUser() {
if (superUser == null) {
superUser = SecurityService.isSuperUser();
}
return superUser;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ public void processAction(ActionEvent ae) throws AbortProcessingException
}

author.setEditPubAssessmentRestrictedAfterStarted(ServerConfigurationService.getBoolean("samigo.editPubAssessment.restricted.afterStart", false));
author.setCanRemovePublishedAssessmentsAfterStarted(ServerConfigurationService.getBoolean("samigo.removePubAssessment.restricted.afterStart", false));
author.setRemovePubAssessmentsRestrictedAfterStarted(ServerConfigurationService.getBoolean("samigo.removePubAssessment.restricted.afterStart", false));

AuthorizationBean authorizationBean = (AuthorizationBean) ContextUtil.lookupBean("authorization");
author.setIsGradeable(authorizationBean.getGradeAnyAssessment() || authorizationBean.getGradeOwnAssessment());
Expand Down
14 changes: 7 additions & 7 deletions samigo/samigo-app/src/webapp/jsf/author/authorIndex.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -308,29 +308,29 @@ $(document).ready(function() {
<h:selectOneMenu id="publishedSelectAction1" value="select" onchange="clickPublishedSelectActionLink(this);" rendered="#{(author.isGradeable && publishedAssessment.submittedCount > 0) && (author.isEditable && (!author.editPubAssessmentRestricted || !publishedAssessment.hasAssessmentGradingData))}">
<f:selectItem itemLabel="#{authorMessages.select_action}" itemValue="select"/>
<f:selectItem itemLabel="#{authorMessages.action_scores}" itemValue="scores" />
<f:selectItem itemLabel="#{commonMessages.edit_action}" itemValue="edit_published" itemDisabled="#{author.editPubAssessmentRestrictedAfterStarted && (publishedAssessment.submittedCount > 0 || publishedAssessment.inProgressCount > 0) && (publishedAssessment.retractDate == null || publishedAssessment.retractDate > author.currentTime)}"/>
<f:selectItem itemLabel="#{commonMessages.edit_action}" itemValue="edit_published" itemDisabled="#{!author.canEditPublishedAssessment(publishedAssessment)}"/>
<f:selectItems value="#{author.publishedSelectActionList}" />
<f:selectItem itemLabel="#{commonMessages.remove_action}" itemValue="remove_published" itemDisabled="#{!author.canRemovePublishedAssessments || (author.canRemovePublishedAssessmentsAfterStarted && (publishedAssessment.submittedCount > 0 || publishedAssessment.inProgressCount > 0) && (publishedAssessment.retractDate == null || publishedAssessment.retractDate > author.currentTime))}"/>
<f:selectItem itemLabel="#{commonMessages.remove_action}" itemValue="remove_published" itemDisabled="#{!author.canRemovePublishedAssessment(publishedAssessment)}"/>
<f:valueChangeListener type="org.sakaiproject.tool.assessment.ui.listener.author.ActionSelectListener" />
</h:selectOneMenu>
<h:selectOneMenu id="publishedSelectAction2" value="select" onchange="clickPublishedSelectActionLink(this);" rendered="#{(author.isGradeable && publishedAssessment.submittedCount > 0) && !(author.isEditable && (!author.editPubAssessmentRestricted || !publishedAssessment.hasAssessmentGradingData))}">
<h:selectOneMenu id="publishedSelectAction2" value="select" onchange="clickPublishedSelectActionLink(this);" rendered="#{(author.isGradeable && publishedAssessment.submittedCount > 0) && (author.isEditable && !(!author.editPubAssessmentRestricted || !publishedAssessment.hasAssessmentGradingData))}">
<f:selectItem itemLabel="#{authorMessages.select_action}" itemValue="select"/>
<f:selectItem itemLabel="#{authorMessages.action_scores}" itemValue="scores"/>
<f:selectItems value="#{author.publishedSelectActionList}" />
<f:selectItem itemLabel="#{commonMessages.remove_action}" itemValue="remove_published" itemDisabled="#{!author.canRemovePublishedAssessments || (author.canRemovePublishedAssessmentsAfterStarted && (publishedAssessment.submittedCount > 0 || publishedAssessment.inProgressCount > 0) && (publishedAssessment.retractDate == null || publishedAssessment.retractDate > author.currentTime))}"/>
<f:selectItem itemLabel="#{commonMessages.remove_action}" itemValue="remove_published" itemDisabled="#{!author.canRemovePublishedAssessment(publishedAssessment)}"/>
<f:valueChangeListener type="org.sakaiproject.tool.assessment.ui.listener.author.ActionSelectListener" />
</h:selectOneMenu>
<h:selectOneMenu id="publishedSelectAction3" value="select" onchange="clickPublishedSelectActionLink(this);" rendered="#{!(author.isGradeable && publishedAssessment.submittedCount > 0) && (author.isEditable && (!author.editPubAssessmentRestricted || !publishedAssessment.hasAssessmentGradingData))}">
<f:selectItem itemLabel="#{authorMessages.select_action}" itemValue="select"/>
<f:selectItem itemLabel="#{commonMessages.edit_action}" itemValue="edit_published" itemDisabled="#{author.editPubAssessmentRestrictedAfterStarted && (publishedAssessment.submittedCount > 0 || publishedAssessment.inProgressCount > 0) && (publishedAssessment.retractDate == null || publishedAssessment.retractDate > author.currentTime)}"/>
<f:selectItem itemLabel="#{commonMessages.edit_action}" itemValue="edit_published" itemDisabled="#{!author.canEditPublishedAssessment(publishedAssessment)}"/>
<f:selectItems value="#{author.publishedSelectActionList}" />
<f:selectItem itemLabel="#{commonMessages.remove_action}" itemValue="remove_published" itemDisabled="#{!author.canRemovePublishedAssessments || (author.canRemovePublishedAssessmentsAfterStarted && (publishedAssessment.submittedCount > 0 || publishedAssessment.inProgressCount > 0) && (publishedAssessment.retractDate == null || publishedAssessment.retractDate > author.currentTime))}"/>
<f:selectItem itemLabel="#{commonMessages.remove_action}" itemValue="remove_published" itemDisabled="#{!author.canRemovePublishedAssessment(publishedAssessment)}"/>
<f:valueChangeListener type="org.sakaiproject.tool.assessment.ui.listener.author.ActionSelectListener" />
</h:selectOneMenu>
<h:selectOneMenu id="publishedSelectAction4" value="select" onchange="clickPublishedSelectActionLink(this);" rendered="#{!(author.isGradeable && publishedAssessment.submittedCount > 0) && (author.isEditable && !(!author.editPubAssessmentRestricted || !publishedAssessment.hasAssessmentGradingData))}">
<f:selectItem itemLabel="#{authorMessages.select_action}" itemValue="select"/>
<f:selectItems value="#{author.publishedSelectActionList}" />
<f:selectItem itemLabel="#{commonMessages.remove_action}" itemValue="remove_published" itemDisabled="#{!author.canRemovePublishedAssessments || (author.canRemovePublishedAssessmentsAfterStarted && (publishedAssessment.submittedCount > 0 || publishedAssessment.inProgressCount > 0) && (publishedAssessment.retractDate == null || publishedAssessment.retractDate > author.currentTime))}"/>
<f:selectItem itemLabel="#{commonMessages.remove_action}" itemValue="remove_published" itemDisabled="#{!author.canRemovePublishedAssessment(publishedAssessment)}"/>
<f:valueChangeListener type="org.sakaiproject.tool.assessment.ui.listener.author.ActionSelectListener" />
</h:selectOneMenu>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -304,25 +304,29 @@ $(document).ready(function() {
<h:selectOneMenu id="publishedSelectAction1" value="select" onchange="clickPublishedSelectActionLink(this);" rendered="#{(author.isGradeable && publishedAssessment.submittedCount > 0) && (author.isEditable && (!author.editPubAssessmentRestricted || !publishedAssessment.hasAssessmentGradingData))}">
<f:selectItem itemLabel="#{authorMessages.select_action}" itemValue="select"/>
<f:selectItem itemLabel="#{authorMessages.action_scores}" itemValue="scores" />
<f:selectItem itemLabel="#{commonMessages.edit_action}" itemValue="edit_published" />
<f:selectItem itemLabel="#{commonMessages.edit_action}" itemValue="edit_published" itemDisabled="#{!author.canEditPublishedAssessment(publishedAssessment)}"/>
<f:selectItems value="#{author.publishedSelectActionList}" />
<f:selectItem itemLabel="#{commonMessages.remove_action}" itemValue="remove_published" itemDisabled="#{!author.canRemovePublishedAssessment(publishedAssessment)}"/>
<f:valueChangeListener type="org.sakaiproject.tool.assessment.ui.listener.author.ActionSelectListener" />
</h:selectOneMenu>
<h:selectOneMenu id="publishedSelectAction2" value="select" onchange="clickPublishedSelectActionLink(this);" rendered="#{(author.isGradeable && publishedAssessment.submittedCount > 0) && !(author.isEditable && (!author.editPubAssessmentRestricted || !publishedAssessment.hasAssessmentGradingData))}">
<f:selectItem itemLabel="#{authorMessages.select_action}" itemValue="select"/>
<f:selectItem itemLabel="#{authorMessages.action_scores}" itemValue="scores"/>
<f:selectItems value="#{author.publishedSelectActionList}" />
<f:selectItem itemLabel="#{commonMessages.remove_action}" itemValue="remove_published" itemDisabled="#{!author.canRemovePublishedAssessment(publishedAssessment)}"/>
<f:valueChangeListener type="org.sakaiproject.tool.assessment.ui.listener.author.ActionSelectListener" />
</h:selectOneMenu>
<h:selectOneMenu id="publishedSelectAction3" value="select" onchange="clickPublishedSelectActionLink(this);" rendered="#{!(author.isGradeable && publishedAssessment.submittedCount > 0) && (author.isEditable && (!author.editPubAssessmentRestricted || !publishedAssessment.hasAssessmentGradingData))}">
<f:selectItem itemLabel="#{authorMessages.select_action}" itemValue="select"/>
<f:selectItem itemLabel="#{commonMessages.edit_action}" itemValue="edit_published"/>
<f:selectItem itemLabel="#{commonMessages.edit_action}" itemValue="edit_published" itemDisabled="#{!author.canEditPublishedAssessment(publishedAssessment)}"/>
<f:selectItems value="#{author.publishedSelectActionList}" />
<f:selectItem itemLabel="#{commonMessages.remove_action}" itemValue="remove_published" itemDisabled="#{!author.canRemovePublishedAssessment(publishedAssessment)}"/>
<f:valueChangeListener type="org.sakaiproject.tool.assessment.ui.listener.author.ActionSelectListener" />
</h:selectOneMenu>
<h:selectOneMenu id="publishedSelectAction4" value="select" onchange="clickPublishedSelectActionLink(this);" rendered="#{!(author.isGradeable && publishedAssessment.submittedCount > 0) && (author.isEditable && !(!author.editPubAssessmentRestricted || !publishedAssessment.hasAssessmentGradingData))}">
<f:selectItem itemLabel="#{authorMessages.select_action}" itemValue="select"/>
<f:selectItems value="#{author.publishedSelectActionList}" />
<f:selectItem itemLabel="#{commonMessages.remove_action}" itemValue="remove_published" itemDisabled="#{!author.canRemovePublishedAssessment(publishedAssessment)}"/>
<f:valueChangeListener type="org.sakaiproject.tool.assessment.ui.listener.author.ActionSelectListener" />
</h:selectOneMenu>

Expand Down

0 comments on commit c7b3b46

Please sign in to comment.