Skip to content
Snippets Groups Projects
Commit 332a2421 authored by Philipp Nowinski's avatar Philipp Nowinski
Browse files

[FEATURE] rework apply form

parent ebfd172f
No related branches found
No related tags found
No related merge requests found
...@@ -3,34 +3,7 @@ ...@@ -3,34 +3,7 @@
<f:layout name="Default" /> <f:layout name="Default" />
<f:section name="main"> <f:section name="main">
<f:form action="apply" controller="Joblist" method="post" name="applyData" object="{applyData}" enctype="multipart/form-data"> <div class="default-header-element">
<input type="hidden" name="tx_sgjobs_jobapplication[folderName]" value="{folderName}" />
<f:comment><!-- To output all validation errors
<f:form.validationResults>
<f:if condition="{validationResults.flattenedErrors}">
<ul class="errors">
<f:for each="{validationResults.flattenedErrors}" as="errors" key="propertyPath">
<li>{propertyPath}
<ul>
<f:for each="{errors}" as="error">
<li>{error.code}: {error}</li>
</f:for>
</ul>
</li>
</f:for>
</ul>
</f:if>
</f:form.validationResults>
--></f:comment>
<f:if condition="{internalError}">
<div class="errormessage">
<f:translate key="frontend.apply.error.general" />: {internalError}
</div>
</f:if>
<div>
<f:if condition="{job}"> <f:if condition="{job}">
<f:then> <f:then>
<f:form.hidden property="job" value="{job}" /> <f:form.hidden property="job" value="{job}" />
...@@ -42,258 +15,286 @@ ...@@ -42,258 +15,286 @@
<h1>Initiativ-Bewerbung</h1> <h1>Initiativ-Bewerbung</h1>
</f:else> </f:else>
</f:if> </f:if>
</div>
<div class="default-content-element">
<div class="pia-card">
<f:form action="apply" controller="Joblist" method="post" name="applyData" object="{applyData}" enctype="multipart/form-data">
<input type="hidden" name="tx_sgjobs_jobapplication[folderName]" value="{folderName}" />
<f:comment><!-- To output all validation errors
<f:form.validationResults>
<f:if condition="{validationResults.flattenedErrors}">
<ul class="errors">
<f:for each="{validationResults.flattenedErrors}" as="errors" key="propertyPath">
<li>{propertyPath}
<ul>
<f:for each="{errors}" as="error">
<li>{error.code}: {error}</li>
</f:for>
</ul>
</li>
</f:for>
</ul>
</f:if>
</f:form.validationResults>
-->
</f:comment>
<f:if condition="{internalError}">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<li class="parsley-required"><f:translate key="frontend.apply.error.general" />: {internalError}</li>
</ul>
</f:if>
<div class="form-group">
<label for="apply-gender"><f:translate key="frontend.apply.gender" /></label>
<f:form.select property="gender" id="apply-gender" class="form-control" options="{Male: '{f:translate(key: \'frontend.apply.gender.male\')}', Female: '{f:translate(key: \'frontend.apply.gender.female\')}'}" />
<f:form.validationResults for="applyData.gender">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-firstName"><f:translate key="frontend.apply.first_name" /></label>
<f:form.textfield property="firstName" class="form-control" id="apply-firstName" />
<f:form.validationResults for="applyData.firstName">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-lastName"><f:translate key="frontend.apply.last_name" /></label>
<f:form.textfield property="lastName" id="apply-lastName" class="form-control" />
<f:form.validationResults for="applyData.lastName">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-street"><f:translate key="frontend.apply.street" /></label>
<f:form.textfield property="street" id="apply-street" class="form-control" />
<f:form.validationResults for="applyData.street">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-city"><f:translate key="frontend.apply.city" /></label>
<f:form.textfield property="city" id="apply-city" class="form-control" />
<f:form.validationResults for="applyData.city">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-zip"><f:translate key="frontend.apply.zip" /></label>
<f:form.textfield property="zip" id="apply-zip" class="form-control" />
<f:form.validationResults for="applyData.zip">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-country"><f:translate key="frontend.apply.country" /></label>
<f:form.select property="country" id="apply-country" class="form-control" options="{countries}" optionLabelField="{f:if(condition: '{sysLanguageUid} == 0', then: 'shortNameDe', else: 'shortNameEn')}" optionValueField="{f:if(condition: '{sysLanguageUid} == 0', then: 'shortNameDe', else: 'shortNameEn')}" />
<f:form.validationResults for="applyData.country">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-nationality"><f:translate key="frontend.apply.nationality" /></label>
<f:form.select property="nationality" id="apply-nationality" class="form-control" options="{countries}" optionLabelField="{f:if(condition: '{sysLanguageUid} == 0', then: 'shortNameDe', else: 'shortNameEn')}" optionValueField="{f:if(condition: '{sysLanguageUid} == 0', then: 'shortNameDe', else: 'shortNameEn')}" />
<f:form.validationResults for="applyData.nationality">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-education"><f:translate key="frontend.apply.education" /></label>
<f:form.textfield property="education" id="apply-education" class="form-control" />
<f:form.validationResults for="applyData.education">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-birthDate"><f:translate key="frontend.apply.birthDate" /></label>
<f:form.textfield property="birthDate" id="apply-birthDate" class="form-control" />
<f:form.validationResults for="applyData.birthDate">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-phone"><f:translate key="frontend.apply.phone" /></label>
<f:form.textfield property="phone" id="apply-phone" class="form-control" />
<f:form.validationResults for="applyData.phone">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-mobile"><f:translate key="frontend.apply.mobile" /></label>
<f:form.textfield property="mobile" id="apply-mobile" class="form-control" />
<f:form.validationResults for="applyData.mobile">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-email"><f:translate key="frontend.apply.email" /></label>
<f:form.textfield type="email" property="email" id="apply-email" class="form-control" />
<f:form.validationResults for="applyData.email">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-cover-letter">
<f:translate key="frontend.apply.cover_letter" />
(<f:translate key="frontend.apply.allowed_file_extensions" /> {allowedFileExtensions})
</label>
<h:form.upload property="coverLetter" resourceName="coverLetter" id="apply-cover-letter" additionalAttributes="{accept: '{allowedMimeTypes}'}" />
<f:if condition="{coverLetter.name}">
<p class="help-block">
Aktuell: {coverLetter.name}
<f:comment><!-- Important, due to a fluid cache issue with the fluid syntax--></f:comment>
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][coverLetter][submittedFile][name]" value="{coverLetter.name}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][coverLetter][submittedFile][type]" value="{coverLetter.type}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][coverLetter][submittedFile][tmp_name]" value="{coverLetter.tmp_name}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][coverLetter][submittedFile][error]" value="0" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][coverLetter][submittedFile][size]" value="{coverLetter.size}" />
</p>
</f:if>
<f:form.validationResults for="applyData.coverLetter">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-cv">
<f:translate key="frontend.apply.cv" />
(<f:translate key="frontend.apply.allowed_file_extensions" /> {allowedFileExtensions})
</label>
<h:form.upload property="cv" resourceName="cv" id="apply-cv" additionalAttributes="{accept: '{allowedMimeTypes}'}" />
<f:if condition="{cv.name}">
<p class="help-block">
Aktuell: {cv.name}
<f:comment><!-- Important, due to a fluid cache issue with the fluid syntax--></f:comment>
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][cv][submittedFile][name]" value="{cv.name}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][cv][submittedFile][type]" value="{cv.type}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][cv][submittedFile][tmp_name]" value="{cv.tmp_name}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][cv][submittedFile][error]" value="0" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][cv][submittedFile][size]" value="{cv.size}" />
</p>
</f:if>
<f:form.validationResults for="applyData.cv">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-certificate">
<f:translate key="frontend.apply.certificate" />
(<f:translate key="frontend.apply.allowed_file_extensions" /> {allowedFileExtensions})
</label>
<h:form.upload property="certificate" resourceName="certificate" id="apply-certificate" additionalAttributes="{accept: '{allowedMimeTypes}'}" />
<f:if condition="{certificate.name}">
<p class="help-block">
Aktuell: {certificate.name}
<f:comment><!-- Important, due to a fluid cache issue with the fluid syntax--></f:comment>
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][certificate][submittedFile][name]" value="{certificate.name}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][certificate][submittedFile][type]" value="{certificate.type}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][certificate][submittedFile][tmp_name]" value="{certificate.tmp_name}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][certificate][submittedFile][error]" value="0" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][certificate][submittedFile][size]" value="{certificate.size}" />
</p>
</f:if>
<f:form.validationResults for="applyData.certificate">
<ul class="sg-jobs-validation-error parsley-errors-list filled">
<f:for each="{validationResults.errors}" as="error">
<li class="parsley-required">{error.message}</li>
</f:for>
</ul>
</f:form.validationResults>
</div>
<div class="form-group">
<label for="apply-message"><f:translate key="frontend.apply.message" /></label>
<f:form.textarea class="form-control" rows="10" property="message" id="apply-message" />
</div>
<button type="submit" class="cta-link">{f:translate(key:'frontend.applyNow')}</button>
</f:form>
</div> </div>
</div>
<p>
<label for="apply-gender"><f:translate key="frontend.apply.gender" /></label>
<f:form.select property="gender" id="apply-gender" options="{Male: '{f:translate(key: \'frontend.apply.gender.male\')}', Female: '{f:translate(key: \'frontend.apply.gender.female\')}'}" />
<f:form.validationResults for="applyData.gender">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
{error.message}
</div>
</f:for>
</f:form.validationResults>
</p>
<p>
<label for="apply-firstName"><f:translate key="frontend.apply.first_name" /></label>
<f:form.textfield property="firstName" id="apply-firstName" />
<f:form.validationResults for="applyData.firstName">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
{error.message}
</div>
</f:for>
</f:form.validationResults>
</p>
<p>
<label for="apply-lastName"><f:translate key="frontend.apply.last_name" /></label>
<f:form.textfield property="lastName" id="apply-lastName" />
<f:form.validationResults for="applyData.lastName">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
{error.message}
</div>
</f:for>
</f:form.validationResults>
</p>
<p>
<label for="apply-street"><f:translate key="frontend.apply.street" /></label>
<f:form.textfield property="street" id="apply-street" />
<f:form.validationResults for="applyData.street">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
{error.message}
</div>
</f:for>
</f:form.validationResults>
</p>
<p>
<label for="apply-city"><f:translate key="frontend.apply.city" /></label>
<f:form.textfield property="city" id="apply-city" />
<f:form.validationResults for="applyData.city">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
{error.message}
</div>
</f:for>
</f:form.validationResults>
</p>
<p>
<label for="apply-zip"><f:translate key="frontend.apply.zip" /></label>
<f:form.textfield property="zip" id="apply-zip" />
<f:form.validationResults for="applyData.zip">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
{error.message}
</div>
</f:for>
</f:form.validationResults>
</p>
<p>
<label for="apply-country"><f:translate key="frontend.apply.country" /></label>
<f:form.select property="country" id="apply-country" options="{countries}" optionLabelField="{f:if(condition: '{sysLanguageUid} == 0', then: 'shortNameDe', else: 'shortNameEn')}" optionValueField="{f:if(condition: '{sysLanguageUid} == 0', then: 'shortNameDe', else: 'shortNameEn')}" />
<f:form.validationResults for="applyData.country">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
{error.message}
</div>
</f:for>
</f:form.validationResults>
</p>
<p>
<label for="apply-nationality"><f:translate key="frontend.apply.nationality" /></label>
<f:form.select property="nationality" id="apply-nationality" options="{countries}" optionLabelField="{f:if(condition: '{sysLanguageUid} == 0', then: 'shortNameDe', else: 'shortNameEn')}" optionValueField="{f:if(condition: '{sysLanguageUid} == 0', then: 'shortNameDe', else: 'shortNameEn')}" />
<f:form.validationResults for="applyData.nationality">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
{error.message}
</div>
</f:for>
</f:form.validationResults>
</p>
<p>
<label for="apply-education"><f:translate key="frontend.apply.education" /></label>
<f:form.textfield property="education" id="apply-education" />
<f:form.validationResults for="applyData.education">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
{error.message}
</div>
</f:for>
</f:form.validationResults>
</p>
<p>
<label for="apply-birthDate"><f:translate key="frontend.apply.birthDate" /></label>
<f:form.textfield property="birthDate" id="apply-birthDate" />
<f:form.validationResults for="applyData.birthDate">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
{error.message}
</div>
</f:for>
</f:form.validationResults>
</p>
<p>
<label for="apply-phone"><f:translate key="frontend.apply.phone" /></label>
<f:form.textfield property="phone" id="apply-phone" />
<f:form.validationResults for="applyData.phone">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
{error.message}
</div>
</f:for>
</f:form.validationResults>
</p>
<p>
<label for="apply-mobile"><f:translate key="frontend.apply.mobile" /></label>
<f:form.textfield property="mobile" id="apply-mobile" />
<f:form.validationResults for="applyData.mobile">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
{error.message}
</div>
</f:for>
</f:form.validationResults>
</p>
<p>
<label for="apply-email"><f:translate key="frontend.apply.email" /></label>
<f:form.textfield type="email" property="email" id="apply-email" />
<f:form.validationResults for="applyData.email">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
{error.message}
</div>
</f:for>
</f:form.validationResults>
</p>
<div>
<label for="apply-cover-letter">
<f:translate key="frontend.apply.cover_letter" />
(<f:translate key="frontend.apply.allowed_file_extensions" /> {allowedFileExtensions})
</label>
<h:form.upload property="coverLetter" resourceName="coverLetter" id="apply-cover-letter" additionalAttributes="{accept: '{allowedMimeTypes}'}" />
<f:if condition="{coverLetter.name}">
<p>
Aktuell: {coverLetter.name}
<f:comment><!-- Important, due to a fluid cache issue with the fluid syntax--></f:comment>
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][coverLetter][submittedFile][name]" value="{coverLetter.name}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][coverLetter][submittedFile][type]" value="{coverLetter.type}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][coverLetter][submittedFile][tmp_name]" value="{coverLetter.tmp_name}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][coverLetter][submittedFile][error]" value="0" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][coverLetter][submittedFile][size]" value="{coverLetter.size}" />
</p>
</f:if>
<f:form.validationResults for="applyData.coverLetter">
<f:for each="{validationResults.errors}" as="error">
<p class="sg-jobs-validation-error">
{error.message}
</p>
</f:for>
</f:form.validationResults>
</div>
<div>
<label for="apply-cv">
<f:translate key="frontend.apply.cv" />
(<f:translate key="frontend.apply.allowed_file_extensions" /> {allowedFileExtensions})
</label>
<h:form.upload property="cv" resourceName="cv" id="apply-cv" additionalAttributes="{accept: '{allowedMimeTypes}'}" />
<f:if condition="{cv.name}">
<p>
Aktuell: {cv.name}
<f:comment><!-- Important, due to a fluid cache issue with the fluid syntax--></f:comment>
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][cv][submittedFile][name]" value="{cv.name}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][cv][submittedFile][type]" value="{cv.type}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][cv][submittedFile][tmp_name]" value="{cv.tmp_name}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][cv][submittedFile][error]" value="0" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][cv][submittedFile][size]" value="{cv.size}" />
</p>
</f:if>
<f:form.validationResults for="applyData.cv">
<f:for each="{validationResults.errors}" as="error">
<p class="sg-jobs-validation-error">
{error.message}
</p>
</f:for>
</f:form.validationResults>
</div>
<div>
<label for="apply-certificate">
<f:translate key="frontend.apply.certificate" />
(<f:translate key="frontend.apply.allowed_file_extensions" /> {allowedFileExtensions})
</label>
<h:form.upload property="certificate" resourceName="certificate" id="apply-certificate" additionalAttributes="{accept: '{allowedMimeTypes}'}" />
<f:if condition="{certificate.name}">
<p>
Aktuell: {certificate.name}
<f:comment><!-- Important, due to a fluid cache issue with the fluid syntax--></f:comment>
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][certificate][submittedFile][name]" value="{certificate.name}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][certificate][submittedFile][type]" value="{certificate.type}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][certificate][submittedFile][tmp_name]" value="{certificate.tmp_name}" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][certificate][submittedFile][error]" value="0" />
<input type="hidden" name="tx_sgjobs_jobapplication[applyData][certificate][submittedFile][size]" value="{certificate.size}" />
</p>
</f:if>
<f:form.validationResults for="applyData.certificate">
<f:for each="{validationResults.errors}" as="error">
<p class="sg-jobs-validation-error">
{error.message}
</p>
</f:for>
</f:form.validationResults>
</div>
<p>
<label for="apply-message"><f:translate key="frontend.apply.message" /></label>
<f:form.textarea property="message" id="apply-message" />
</p>
<p>
<f:form.submit value="{f:translate(key:'frontend.applyNow')}" />
</p>
</f:form>
</f:section> </f:section>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment