Skip to content

Commit

Permalink
SAK-46617 Tests & Quizzes: Exceptions have restrictions not present f…
Browse files Browse the repository at this point in the history
…or non-excepted students (sakaiproject#10089)
  • Loading branch information
ropemar committed Feb 7, 2022
1 parent 72dab01 commit 78d66ca
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@ extendedTime_entry_table_title=Add/edit an extended time entry.
# Extended Time Errors
extended_time_user_and_group_set=A user or group must be selected to add a date and/or time limit exception.
extended_time_due_earlier_than_available=The Due Date cannot be earlier than the Available Date for the exception set for {0}.
extended_time_due_in_past=The Due Date cannot be in the past for the exception set for {0}.
extended_time_due_in_past=The Due Date is in the past for the exception set for {0}. Please change the Due Date, or Save to proceed as is.
extended_time_retract_earlier_than_available=The Late Submission Deadline cannot be earlier than the Available Date or Due Date for the exception set for {0}.
extended_time_due_same_as_available=The Due Date cannot be the same as the Available Date for the exception set for {0}.
extended_time_error_user=user "{0}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@ extendedTime_entry_table_title=A\u00f1adir/modificar entrada de excepci\u00f3n d
# Extended Time Errors
extended_time_user_and_group_set=Se debe seleccionar un usuario o grupo para poder a\u00f1adir una excepci\u00f3n.
extended_time_due_earlier_than_available=La fecha de entrega no puede ser anterior a la fecha de apertura para {0}.
extended_time_due_in_past=La fecha de entrega no puede estar en el pasado para {0}.
extended_time_due_in_past=La fecha de entrega est\u00e1 en el pasado para {0}. Cambie la fecha o guarde los cambios para mantener este dato.
extended_time_retract_earlier_than_available=La fecha l\u00edmite no puede ser anterior a la fecha de apertura ni a la fecha de entrega para {0}.
extended_time_due_same_as_available=La fecha de entrega no puede ser la misma que la fecha de apertura para {0}.
extended_time_error_user=usuario "{0}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
Expand All @@ -39,6 +41,7 @@
import javax.faces.model.SelectItem;

import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.core.net.Severity;
import org.sakaiproject.content.api.ContentResource;
import org.sakaiproject.content.api.FilePickerHelper;
import org.sakaiproject.entity.api.Reference;
Expand Down Expand Up @@ -1987,4 +1990,26 @@ private void resetExtendedTime() {
this.transitoryExtendedTime = null;
this.editingExtendedTime = false;
}

public List<FacesMessage> getErrorMessages() {
List<FacesMessage> list = FacesContext.getCurrentInstance().getMessageList();
Stream<FacesMessage> stream = list.stream();
return stream.filter(message -> FacesMessage.SEVERITY_WARN.equals(message.getSeverity()))
.collect(Collectors.toList());
}

public List<FacesMessage> getInfoMessages() {
List<FacesMessage> list = FacesContext.getCurrentInstance().getMessageList();
Stream<FacesMessage> stream = list.stream();
return stream.filter(message -> FacesMessage.SEVERITY_INFO.equals(message.getSeverity()))
.collect(Collectors.toList());
}

public boolean isRenderErrorMessage() {
return !getErrorMessages().isEmpty();
}

public boolean isRenderInfoMessage() {
return !getInfoMessages().isEmpty();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ public class ExtendedTimeValidator
{
public static final String ERROR_KEY_USER_OR_GROUP_NOT_SET = "extended_time_user_and_group_set";
public static final String ERROR_KEY_DUE_BEFORE_START = "extended_time_due_earlier_than_available";
public static final String ERROR_KEY_DUE_IN_PAST = "extended_time_due_in_past";
public static final String ERROR_KEY_RETRACT_BEFORE_START = "extended_time_retract_earlier_than_available";
public static final String ERROR_KEY_DUE_SAME_AS_START = "extended_time_due_same_as_available";
public static final String ERROR_KEY_OPEN_WINDOW_LESS_THAN_LIMIT = "extended_time_open_window_less_than_time_limit";
Expand All @@ -63,6 +62,7 @@ public class ExtendedTimeValidator
public static final String MSG_KEY_DUP_USERS = "extended_time_duplicate_users";
public static final String MSG_KEY_DUP_GROUPS = "extended_time_duplicate_groups";
public static final String MSG_KEY_NAME_NOT_FOUND = "extended_time_name_not_found";
public static final String MSG_KEY_DUE_IN_PAST = "extended_time_due_in_past";

public static final String ASSESSMENT_SETTINGS_BUNDLE = "org.sakaiproject.tool.assessment.bundle.AssessmentSettingsMessages";

Expand Down Expand Up @@ -133,7 +133,7 @@ public boolean validateEntries( List<ExtendedTime> entries, FacesContext context
// Due date can't be in the past
if( dueDate != null && dueDate.before( new Date() ) )
{
addError( ERROR_KEY_DUE_IN_PAST, entry, context );
addWarn( MSG_KEY_DUE_IN_PAST, entry, context );
entry.setStartDate( new Date() );
}

Expand Down Expand Up @@ -262,6 +262,17 @@ private void addError( String errorKey, FacesContext context, Object[] replaceme
context.addMessage( null, new FacesMessage( FacesMessage.SEVERITY_WARN, errorMsg, null ) );
valid = false;
}

/**
* Utility method to add a warning message to the {@link FacesContext}
* @param messageKey the key of the error message to be added
* @param entry the {@link ExtendedTime} entry
* @param context the {@link FacesContext}
*/
private void addWarn( String messageKey, ExtendedTime entry, FacesContext context ) {
String errorMsg = getError( messageKey, entry );
context.addMessage( null, new FacesMessage( FacesMessage.SEVERITY_INFO, errorMsg, null ) );
}

/**
* Get an extended time error message for the UI.
Expand Down
14 changes: 11 additions & 3 deletions samigo/samigo-app/src/webapp/jsf/author/authorSettings.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -220,9 +220,17 @@
</div>
<br/>

<p>
<h:messages styleClass="sak-banner-error" rendered="#{! empty facesContext.maximumSeverity}" layout="table"/>
</p>

<h:dataTable value="#{assessmentSettings.errorMessages}" var="message" styleClass="sak-banner-error" rendered="#{assessmentSettings.renderErrorMessage}">
<h:column>
<h:outputText value="#{message.detail}"/>
</h:column>
</h:dataTable>
<h:dataTable value="#{assessmentSettings.infoMessages}" var="message" styleClass="sak-banner-warn" rendered="#{assessmentSettings.renderInfoMessage}">
<h:column>
<h:outputText value="#{message.detail}"/>
</h:column>
</h:dataTable>

<div class="tier1" id="jqueryui-accordion">

Expand Down
13 changes: 10 additions & 3 deletions samigo/samigo-app/src/webapp/jsf/author/publishedSettings.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -231,9 +231,16 @@
</div>
<br/>

<p>
<h:messages styleClass="sak-banner-error" rendered="#{! empty facesContext.maximumSeverity}" layout="table"/>
</p>
<h:dataTable value="#{assessmentSettings.errorMessages}" var="message" styleClass="sak-banner-error" rendered="#{assessmentSettings.renderErrorMessage}">
<h:column>
<h:outputText value="#{message.detail}"/>
</h:column>
</h:dataTable>
<h:dataTable value="#{assessmentSettings.infoMessages}" var="message" styleClass="sak-banner-warn" rendered="#{assessmentSettings.renderInfoMessage}">
<h:column>
<h:outputText value="#{message.detail}"/>
</h:column>
</h:dataTable>

<div class="tier1" id="jqueryui-accordion">

Expand Down

0 comments on commit 78d66ca

Please sign in to comment.