Require authors to fill in background, literature, problem, method, and interests when submitting ideas #72

Merged
niat8586 merged 7 commits from student-idea-form-required-fields into develop 2025-01-17 09:45:28 +01:00
5 changed files with 35 additions and 33 deletions

View File

@ -172,6 +172,11 @@ public class DataInitializer implements Lifecycle {
stina_student = createStudent(STUDENT_2); stina_student = createStudent(STUDENT_2);
sid_student = createStudent(STUDENT_3); sid_student = createStudent(STUDENT_3);
simon_student = createStudent(STUDENT_4); simon_student = createStudent(STUDENT_4);
// Used to test submitting ideas
// can not be used as author on any idea
// can not be used as author on any project
createStudent("Stig");
} }
private User createStudent(String firstName) { private User createStudent(String firstName) {

View File

@ -8,6 +8,7 @@
<wicket:panel> <wicket:panel>
<div class="mb-3"> <div class="mb-3">
<label class="col-form-label" wicket:for="background">Background</label> <label class="col-form-label" wicket:for="background">Background</label>
<div wicket:id="background_feedback"></div>
<textarea wicket:id="background" class="form-control" rows="4"></textarea> <textarea wicket:id="background" class="form-control" rows="4"></textarea>
<small class="form-text text-body-secondary"> <small class="form-text text-body-secondary">
Describe the background of your topic, preferably both theoretical, empirical and/or practical. Describe the background of your topic, preferably both theoretical, empirical and/or practical.
@ -16,6 +17,7 @@
<div class="mb-3"> <div class="mb-3">
<label class="col-form-label" wicket:for="literature">Literature</label> <label class="col-form-label" wicket:for="literature">Literature</label>
<div wicket:id="literature_feedback"></div>
<textarea wicket:id="literature" class="form-control" rows="4"></textarea> <textarea wicket:id="literature" class="form-control" rows="4"></textarea>
<small class="form-text text-body-secondary"> <small class="form-text text-body-secondary">
Describe the connection to your background, for example literature, theory and methodology related to the topic, courses that you have taken that relates to the topic. Describe the connection to your background, for example literature, theory and methodology related to the topic, courses that you have taken that relates to the topic.
@ -24,6 +26,7 @@
<div class="mb-3"> <div class="mb-3">
<label class="col-form-label" wicket:for="problem">Problem</label> <label class="col-form-label" wicket:for="problem">Problem</label>
<div wicket:id="problem_feedback"></div>
<textarea wicket:id="problem" class="form-control" rows="4"></textarea> <textarea wicket:id="problem" class="form-control" rows="4"></textarea>
<small class="form-text text-body-secondary"> <small class="form-text text-body-secondary">
Here you describe the problem you want to address and solve by your work, preferably formulated as a research question. Here you describe the problem you want to address and solve by your work, preferably formulated as a research question.
@ -32,6 +35,7 @@
<div class="mb-3"> <div class="mb-3">
<label class="col-form-label" wicket:for="method">Method</label> <label class="col-form-label" wicket:for="method">Method</label>
<div wicket:id="method_feedback"></div>
<textarea wicket:id="method" class="form-control" rows="4"></textarea> <textarea wicket:id="method" class="form-control" rows="4"></textarea>
<small class="form-text text-body-secondary"> <small class="form-text text-body-secondary">
The method you plan to use in order to solve the problem and answer the research question. The method you plan to use in order to solve the problem and answer the research question.
@ -40,6 +44,7 @@
<div class="mb-3"> <div class="mb-3">
<label class="col-form-label" wicket:for="interests">My interests</label> <label class="col-form-label" wicket:for="interests">My interests</label>
<div wicket:id="interests_feedback"></div>
<textarea wicket:id="interests" class="form-control" rows="4"></textarea> <textarea wicket:id="interests" class="form-control" rows="4"></textarea>
<small class="form-text text-body-secondary"> <small class="form-text text-body-secondary">
Please note that when you propose your own topic, it is not guaranteed that your topic will be approved. In that case, you will be assigned a different topic by your supervisor. Specify which topics of interest you have, relating to the research fields or the courses that you have taken at DSV. Please note that when you propose your own topic, it is not guaranteed that your topic will be approved. In that case, you will be assigned a different topic by your supervisor. Specify which topics of interest you have, relating to the research fields or the courses that you have taken at DSV.

View File

@ -1,6 +1,7 @@
package se.su.dsv.scipro.match; package se.su.dsv.scipro.match;
import org.apache.wicket.markup.html.form.TextArea; import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.panel.ComponentFeedbackPanel;
import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel; import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LambdaModel; import org.apache.wicket.model.LambdaModel;
@ -12,36 +13,20 @@ public class IdeaTholanderCompletionPanel extends Panel {
super(id, model); super(id, model);
final IModel<TholanderBox> tholanderBox = model.map(Idea::getTholanderBox); final IModel<TholanderBox> tholanderBox = model.map(Idea::getTholanderBox);
final StringValidator lengthValidator = StringValidator.maximumLength(TholanderBox.MAX_CHARS); textField("background", LambdaModel.of(tholanderBox, TholanderBox::getBackground, TholanderBox::setBackground));
add( textField("literature", LambdaModel.of(tholanderBox, TholanderBox::getLiterature, TholanderBox::setLiterature));
new TextArea<>( textField("problem", LambdaModel.of(tholanderBox, TholanderBox::getProblem, TholanderBox::setProblem));
"background", textField("method", LambdaModel.of(tholanderBox, TholanderBox::getMethod, TholanderBox::setMethod));
LambdaModel.of(tholanderBox, TholanderBox::getBackground, TholanderBox::setBackground) textField("interests", LambdaModel.of(tholanderBox, TholanderBox::getInterests, TholanderBox::setInterests));
).add(lengthValidator) }
);
add( private void textField(String id, IModel<String> model) {
new TextArea<>( TextArea<String> textArea = new TextArea<>(id, model);
"literature", textArea.add(StringValidator.maximumLength(TholanderBox.MAX_CHARS));
LambdaModel.of(tholanderBox, TholanderBox::getLiterature, TholanderBox::setLiterature) textArea.setRequired(true);
).add(lengthValidator) add(textArea);
);
add( ComponentFeedbackPanel feedback = new ComponentFeedbackPanel(id + "_feedback", textArea);
new TextArea<>( add(feedback);
"problem",
LambdaModel.of(tholanderBox, TholanderBox::getProblem, TholanderBox::setProblem)
).add(lengthValidator)
);
add(
new TextArea<>(
"method",
LambdaModel.of(tholanderBox, TholanderBox::getMethod, TholanderBox::setMethod)
).add(lengthValidator)
);
add(
new TextArea<>(
"interests",
LambdaModel.of(tholanderBox, TholanderBox::getInterests, TholanderBox::setInterests)
).add(lengthValidator)
);
} }
} }

View File

@ -17,7 +17,14 @@
an idea if you couldn't find any suitable supervisor provided ideas. an idea if you couldn't find any suitable supervisor provided ideas.
</div> </div>
<form wicket:id="ideaForm"> <!--
Turn off all client-side validation using novalidate.
All input is validated server-side, and we want to validate it
that way to get nice error messages.
However, we also want to maintain the required/minlength/whatever
attributes on the input fields for accessibility.
-->
<form wicket:id="ideaForm" novalidate>
<div class="mb-3"> <div class="mb-3">
<label class="col-form-label" wicket:for="title">Title</label> <label class="col-form-label" wicket:for="title">Title</label>
<p class="form-text"> <p class="form-text">

View File

@ -26,7 +26,7 @@ you.are.partner.on.other.idea= You have already been added as a partner to anoth
too.many.authors= Too many authors for a ${name}-idea. May not be more than ${maxAuthors} including yourself. too.many.authors= Too many authors for a ${name}-idea. May not be more than ${maxAuthors} including yourself.
too.few.authors= Too few authors for a ${name}-idea. Must be at least ${minAuthors} including yourself. too.few.authors= Too few authors for a ${name}-idea. Must be at least ${minAuthors} including yourself.
keywordError= You need to select between 1 and 5 keywords. keywordError= You need to select between 1 and 5 keywords.
submissionFailed= Idea could not be submitted. submissionFailed= Idea could not be submitted. Correct the highlighted fields and try again.
ideaSubmitted= You have successfully submitted your ${projectType.name} student idea, for the application period \ ideaSubmitted= You have successfully submitted your ${projectType.name} student idea, for the application period \
${applicationPeriod.name}. ${applicationPeriod.name}.
ideaUpdated= You have successfully updated your ${projectType.name} student idea, in the application period \ ideaUpdated= You have successfully updated your ${projectType.name} student idea, in the application period \