3207 Dubblett - POST finalseminar
This commit is contained in:
parent
3a530879a7
commit
0474b18911
core/src/main/java/se/su/dsv/scipro/finalseminar
view/src/main/java/se/su/dsv/scipro
@ -71,6 +71,7 @@ public class FinalSeminarServiceImpl extends AbstractServiceImpl<FinalSeminar, L
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Either<SchedulingError, FinalSeminar> schedule(Project project, LocalDateTime when, FinalSeminarDetails details) {
|
||||
if (project.isFinalSeminarRuleExempted()) {
|
||||
return createSeminar(project, when, details);
|
||||
@ -86,7 +87,14 @@ public class FinalSeminarServiceImpl extends AbstractServiceImpl<FinalSeminar, L
|
||||
return Either.left(new RoughDraftNotApproved());
|
||||
}
|
||||
|
||||
return createSeminar(project, when, details);
|
||||
final FinalSeminar current = findByProject(project);
|
||||
if (current == null) {
|
||||
return createSeminar(project, when, details);
|
||||
}
|
||||
else {
|
||||
// Assume double click sends the same data so no need to change anything
|
||||
return Either.right(current);
|
||||
}
|
||||
}
|
||||
|
||||
private MovingError validateSchedulingRules(LocalDate date) {
|
||||
|
@ -5,6 +5,7 @@ import org.apache.wicket.*;
|
||||
import org.apache.wicket.authorization.strategies.CompoundAuthorizationStrategy;
|
||||
import org.apache.wicket.csp.CSPDirective;
|
||||
import org.apache.wicket.csp.CSPDirectiveSrcValue;
|
||||
import org.apache.wicket.markup.html.form.Form;
|
||||
import org.apache.wicket.request.Request;
|
||||
import org.apache.wicket.request.Response;
|
||||
import org.apache.wicket.resource.JQueryResourceReference;
|
||||
@ -24,6 +25,7 @@ import se.su.dsv.scipro.checklists.AdminChecklistPage;
|
||||
import se.su.dsv.scipro.checklists.AdminEditChecklistTemplatePage;
|
||||
import se.su.dsv.scipro.checklists.ProjectViewChecklistPage;
|
||||
import se.su.dsv.scipro.checklists.SupervisorViewChecklistPage;
|
||||
import se.su.dsv.scipro.components.DisableSubmitButtonsOnSubmit;
|
||||
import se.su.dsv.scipro.examiner.pages.ExaminerStartPage;
|
||||
import se.su.dsv.scipro.finalseminar.*;
|
||||
import se.su.dsv.scipro.finalthesis.SupervisorFinalThesisListingPage;
|
||||
@ -157,6 +159,12 @@ public class SciProApplication extends LifecycleManagedWebApplication {
|
||||
.add(CSPDirective.IMG_SRC, "data:");
|
||||
|
||||
WicketWebjars.install(this);
|
||||
|
||||
getComponentInstantiationListeners().add(component -> {
|
||||
if (component instanceof Form) {
|
||||
component.add(new DisableSubmitButtonsOnSubmit());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void mountForumPage() {
|
||||
|
@ -0,0 +1,30 @@
|
||||
package se.su.dsv.scipro.components;
|
||||
|
||||
import org.apache.wicket.Component;
|
||||
import org.apache.wicket.behavior.Behavior;
|
||||
import org.apache.wicket.markup.head.IHeaderResponse;
|
||||
import org.apache.wicket.markup.head.OnEventHeaderItem;
|
||||
import org.apache.wicket.markup.html.form.Form;
|
||||
|
||||
/**
|
||||
* Disables all elements with {@code [type=submit]}
|
||||
*/
|
||||
public class DisableSubmitButtonsOnSubmit extends Behavior {
|
||||
@Override
|
||||
public void bind(Component component) {
|
||||
super.bind(component);
|
||||
if (!(component instanceof Form<?>)) {
|
||||
throw new RuntimeException("Can only be used on Form components");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderHead(Component component, IHeaderResponse response) {
|
||||
super.renderHead(component, response);
|
||||
final String javaScript = "const submitButtons = event.target.querySelectorAll(\"[type=submit]\");\n" +
|
||||
"for (const button of submitButtons) {\n" +
|
||||
" button.disabled = true;\n" +
|
||||
"}\n";
|
||||
response.render(OnEventHeaderItem.forComponent(component, "submit", javaScript));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user