Merge branch 'develop' into 1584-abstract-keywords

# Conflicts:
#	view/src/main/java/se/su/dsv/scipro/plagiarism/UrkundSubmissionPanel.java
This commit is contained in:
Andreas Svanberg 2023-10-19 16:57:00 +02:00
commit a147c05ed4
8 changed files with 33 additions and 14 deletions
core/src/main/java/se/su/dsv/scipro/finalseminar
view

@ -56,7 +56,10 @@ public class FinalSeminarUploadControllerImpl implements FinalSeminarUploadContr
@Override
@Transactional
public SeminarDocumentUpload replaceSeminarDocument(final FinalSeminar finalSeminar, final FileUpload fileUpload) {
fileDescriptionService.delete(finalSeminar.getDocument());
if (finalSeminar.getDocument() != null) {
// if someone else deletes the document while it is being replaced
fileDescriptionService.delete(finalSeminar.getDocument());
}
return storeAndSetSeminarDocument(finalSeminar, fileUpload);
}

@ -66,6 +66,16 @@
<artifactId>openpdf</artifactId>
<version>1.3.30</version>
</dependency>
<dependency>
<groupId>de.agilecoders.wicket.webjars</groupId>
<artifactId>wicket-webjars</artifactId>
<version>3.0.7</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>5.1.3</version>
</dependency>
<!-- Servlet API, needed for compilation. -->
<dependency>

@ -1,5 +1,6 @@
package se.su.dsv.scipro;
import de.agilecoders.wicket.webjars.WicketWebjars;
import org.apache.wicket.*;
import org.apache.wicket.authorization.strategies.CompoundAuthorizationStrategy;
import org.apache.wicket.csp.CSPDirective;
@ -149,12 +150,13 @@ public class SciProApplication extends LifecycleManagedWebApplication {
getCspSettings().blocking()
// whitelist all css files coming from self
.add(CSPDirective.STYLE_SRC, CSPDirectiveSrcValue.SELF)
.add(CSPDirective.STYLE_SRC, "https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css")
// script-src 'self' is ignored for CSP level 3 compliant browsers due to 'strict-dynamic'
// but is used as a fallback for older browsers to allow loading of local javascripts
.add(CSPDirective.SCRIPT_SRC, CSPDirectiveSrcValue.SELF)
// allow images to be defined inline using data: (used by bootstrap menu toggler (hamburger))
.add(CSPDirective.IMG_SRC, "data:");
WicketWebjars.install(this);
}
private void mountForumPage() {

@ -4,12 +4,12 @@
<meta charset="UTF-8" />
<title>SciPro Projects</title>
<link rel="icon" href="favicon.ico"/>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<link rel="stylesheet" href="css/fa-all.min.css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<wicket:header-items/>
<wicket:remove>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<link rel="stylesheet" href="css/scipro_m.css" media="screen,projection" />
<!-- leaving them here for autocomplete when writing javascript -->d
<script src="js/scroll-sneak.js"></script>

@ -1,5 +1,6 @@
package se.su.dsv.scipro.basepages;
import de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference;
import org.apache.wicket.ajax.IAjaxIndicatorAware;
import org.apache.wicket.markup.head.CssHeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
@ -34,15 +35,13 @@ public abstract class BasePage extends WebPage implements IAjaxIndicatorAware {
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.render(CssHeaderItem.forReference(new WebjarsJavaScriptResourceReference("bootstrap/current/css/bootstrap.min.css")));
response.render(CssHeaderItem.forReference(new ContextRelativeResourceReference("css/scipro_m.css", false)));
response.render(JavaScriptHeaderItem.forReference(getApplication().getJavaScriptLibrarySettings()
.getJQueryReference()));
response.render(JavaScriptHeaderItem.forReference(new ContextRelativeResourceReference("js/scroll-sneak.js", false)));
response.render(JavaScriptHeaderItem.forReference(new ContextRelativeResourceReference("js/scipro.js", false)));
final JavaScriptUrlReferenceHeaderItem bootstrap = JavaScriptHeaderItem.forUrl("https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js");
bootstrap.setIntegrity("sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p");
bootstrap.setCrossOrigin(CrossOrigin.ANONYMOUS);
response.render(bootstrap);
response.render(JavaScriptHeaderItem.forReference(new WebjarsJavaScriptResourceReference("bootstrap/current/js/bootstrap.bundle.min.js")));
}
@Override

@ -6,10 +6,6 @@ import org.apache.wicket.markup.html.link.ExternalLink;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.GenericPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
import se.su.dsv.scipro.components.OppositeVisibility;
import se.su.dsv.scipro.data.PolyModel;
import se.su.dsv.scipro.file.FileDescription;
import se.su.dsv.scipro.plagiarism.PlagiarismControl.Status;
@ -58,7 +54,7 @@ public class UrkundSubmissionPanel extends GenericPanel<FileDescription> {
final IModel<Status.Analysed> analysed = PolyModel.of(submission, Status.Analysed.class);
final IModel<Status.Error> error = PolyModel.of(submission, Status.Error.class);
add(new Label("message", error.map(Status.Error::message)) {
add(new Label("message", error.map(Status.Error::message).map(this::improveUrkundMessage)) {
@Override
protected void onConfigure() {
super.onConfigure();
@ -93,6 +89,14 @@ public class UrkundSubmissionPanel extends GenericPanel<FileDescription> {
});
}
private String improveUrkundMessage(String originalMessage) {
return switch (originalMessage) {
case "?wsRequestEntityIsTooLargeException" ->
"The document is too large to send automatically. Please log in to URKUND and upload the document manually.";
default -> originalMessage;
};
}
@Override
protected void onConfigure() {
super.onConfigure();

@ -8,8 +8,8 @@
<wicket:panel>
<div class="row">
<div class="col-10 col-md-9 col-xl-10">
<h4><span wicket:id="title">[Title]</span> (<span wicket:id="projectType"></span><wicket:enclosure>, <span wicket:id="credits">30</span> hp
</wicket:enclosure>)
<h4><span wicket:id="title">[Title]</span> (<span wicket:id="projectType"></span><wicket:enclosure>,
<span wicket:id="credits">30</span> hec</wicket:enclosure>)
</h4>
</div>
<div class="col-2 col-md-3 col-xl-2">

@ -10,5 +10,6 @@
<Logger name="org.apache.wicket.Application" level="warn"/>
<Logger name="org.apache.wicket.RequestListenerInterface" level="warn"/>
<Logger name="org.apache.wicket.resource.PropertiesFactory" level="warn"/>
<Logger name="wicket-webjars" level="warn"/>
</Loggers>
</Configuration>