Skip to content

Commit

Permalink
Merge.
Browse files Browse the repository at this point in the history
  • Loading branch information
Marty Wallace committed Nov 13, 2014
2 parents aec0968 + 8e469c3 commit e9a3086
Show file tree
Hide file tree
Showing 3 changed files with 180 additions and 54 deletions.
169 changes: 120 additions & 49 deletions form.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,16 @@ <h3>Please correct the following errors</h3>
<p class="required"><em>*</em> Denotes a required field</p>

{% for question in form.getQuestions() %}
<div class="f_row">
<label for="{{ question.handle }}">
{{ question.name }}{% if question.required %}&nbsp;<em>*</em>{% endif %}
</label>

{% switch question.type %}
{% switch question.type %}


{% case 'PlainText' %}
<div class="hidden_label">
<label for="{{ question.handle }}">
{{ question.name }}{% if question.required %}&nbsp;<em>*</em>{% endif %}
</label>

{% case 'PlainText' %}
<input type="text"
{% if question.required %}
required
Expand All @@ -43,11 +45,19 @@ <h3>Please correct the following errors</h3>
data-val="true"
{% endif %}
class="text"
placeholder="{{ question.name | upper }}"
id="{{ question.handle }}"
name="questions[{{ question.handle }}]"
value="{{ submission is defined ? submission[question.handle] }}">
</div>


{% case 'MultilineText' %}
<div class="hidden_label">
<label for="{{ question.handle }}">
{{ question.name }}{% if question.required %}&nbsp;<em>*</em>{% endif %}
</label>

{% case 'MultilineText' %}
<textarea
{% if question.required %}
required
Expand All @@ -56,56 +66,85 @@ <h3>Please correct the following errors</h3>
data-val="true"
{% endif %}
class="text"
placeholder="{{ question.name | upper }}"
cols="20" rows="2"
id="{{ question.handle }}"
name="questions[{{ question.handle }}]">{{ submission is defined ? submission[question.handle] }}</textarea>
</div>

{% case 'Dropdown' %}
<select
{% if question.required %}
required
aria-required="true"
data-val-required="'{{ question.name }}' is required"
data-val="true"
{% endif %}
id="{{ question.handle }}"
name="questions[{{ question.handle }}]">
{% for option in question.options %}
<option {{ submission is defined and submission[question.handle] == option.name ? 'selected' }}>
{{ option.name }}
</option>
{% endfor %}
</select>

{% case 'RadioButtons' %}
<ul>
{% for option in question.options %}
<li>
<input type="radio"
id="{{ question.handle ~ loop.index }}"
name="questions[{{ question.handle }}]"
value="{{ option.name }}"
{{ submission is defined and submission[question.handle] == option.name ? 'checked' }}>
<label for="{{ question.handle ~ loop.index }}">{{ option.name }}</label>
</li>
{% endfor %}
</ul>
{% case 'Dropdown' %}
<label for="{{ question.handle }}">
{{ question.name }}{% if question.required %}&nbsp;<em>*</em>{% endif %}
</label>

<select
{% if question.required %}
required
aria-required="true"
data-val-required="'{{ question.name }}' is required"
data-val="true"
{% endif %}
id="{{ question.handle }}"
name="questions[{{ question.handle }}]">
{% for option in question.options %}
{% set selected = submission is defined and submission[question.handle]
? submission[question.handle] == option.value
: option.default %}
<option {{ selected ? 'selected' }}>
{{ option.label }}
</option>
{% endfor %}
</select>


{% case 'RadioButtons' %}
<ul>
{% for option in question.options %}
<li>
{% set selected = submission is defined and submission[question.handle]
? submission[question.handle] == option.value
: option.default %}
<input type="radio"
id="{{ question.handle ~ loop.index }}"
name="questions[{{ question.handle }}]"
value="{{ option.value }}"
{{ selected ? 'checked' }}>
<label for="{{ question.handle ~ loop.index }}">{{ option.label }}</label>
</li>
{% endfor %}
</ul>

{% case 'Checkboxes' %}

{% case 'Checkboxes' %}
<fieldset class="rc">
<ul>
{% for option in question.options %}
<li>
{% set selected = submission is defined and submission[question.handle]
? option.value in submission[question.handle]
: option.default %}
{% if not selected %}
<input type="checkbox" name="questions[{{ question.handle }}][]" value="">
{% endif %}
<input type="checkbox"
id="{{ question.handle ~ loop.index }}"
name="questions[{{ question.handle }}]"
value="{{ option.name }}"
{{ submission is defined and submission[question.handle] == option.name ? 'checked' }}>
<label for="{{ question.handle ~ loop.index }}">{{ option.name }}</label>
name="questions[{{ question.handle }}][]"
value="{{ option.value }}"
{{ selected ? 'checked' }}>
<label for="{{ question.handle ~ loop.index }}">{{ option.label }}</label>
</li>
{% endfor %}
</ul>
</fieldset>


{% case 'Number' %}
<div class="hidden_label">
<label for="{{ question.handle }}">
{{ question.name }}{% if question.required %}&nbsp;<em>*</em>{% endif %}
</label>

{% case 'Number' %}
<input type="number"
{% if question.required %}
required
Expand All @@ -114,11 +153,19 @@ <h3>Please correct the following errors</h3>
data-val="true"
{% endif %}
class="text"
placeholder="{{ question.name | upper }}"
id="{{ question.handle }}"
name="questions[{{ question.handle }}]"
value="{{ submission is defined ? submission[question.handle] }}">
</div>


{% case 'Email' %}
<div class="hidden_label">
<label for="{{ question.handle }}">
{{ question.name }}{% if question.required %}&nbsp;<em>*</em>{% endif %}
</label>

{% case 'Email' %}
<input type="email"
{% if question.required %}
required
Expand All @@ -127,11 +174,19 @@ <h3>Please correct the following errors</h3>
data-val="true"
{% endif %}
class="text"
placeholder="{{ question.name | upper }}"
id="{{ question.handle }}"
name="questions[{{ question.handle }}]"
value="{{ submission is defined ? submission[question.handle] }}">
</div>


{% case 'Tel' %}
<div class="hidden_label">
<label for="{{ question.handle }}">
{{ question.name }}{% if question.required %}&nbsp;<em>*</em>{% endif %}
</label>

{% case 'Tel' %}
<input type="tel"
{% if question.required %}
required
Expand All @@ -140,11 +195,19 @@ <h3>Please correct the following errors</h3>
data-val="true"
{% endif %}
class="text"
placeholder="{{ question.name | upper }}"
id="{{ question.handle }}"
name="questions[{{ question.handle }}]"
value="{{ submission is defined ? submission[question.handle] }}">
</div>


{% case 'Url' %}
<div class="hidden_label">
<label for="{{ question.handle }}">
{{ question.name }}{% if question.required %}&nbsp;<em>*</em>{% endif %}
</label>

{% case 'Url' %}
<input type="url"
{% if question.required %}
required
Expand All @@ -153,11 +216,19 @@ <h3>Please correct the following errors</h3>
data-val="true"
{% endif %}
class="text"
placeholder="{{ question.name | upper }}"
id="{{ question.handle }}"
name="questions[{{ question.handle }}]"
value="{{ submission is defined ? submission[question.handle] }}">
</div>


{% case 'Date' %}
<div class="hidden_label">
<label for="{{ question.handle }}">
{{ question.name }}{% if question.required %}&nbsp;<em>*</em>{% endif %}
</label>

{% case 'Date' %}
<input type="text"
{% if question.required %}
required
Expand All @@ -167,15 +238,15 @@ <h3>Please correct the following errors</h3>
{% endif %}
class="text"
pattern="\d{2}\/\d{2}\/\d{4}"
placeholder="DD/MM/YYYY"
placeholder="{{ question.name | upper }} (DD/MM/YYYY)"
id="{{ question.handle }}"
name="questions[{{ question.handle }}][date]"
value="{{ submission is defined ? submission[question.handle] }}">
</div>


{% endswitch %}

</div>
{% endfor %}

<div class="btns">
Expand All @@ -184,4 +255,4 @@ <h3>Please correct the following errors</h3>

</fieldset>
</div>
</form>
</form>
40 changes: 37 additions & 3 deletions formerly/models/Formerly_SubmissionModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,44 @@ public function __toString()

public function getSummary()
{
$summary = array();
foreach ($this->getForm()->getQuestions() as $question)
$summary = '';

$questions = $this->getForm()->getQuestions();

for ($i = 0; $i < count($questions); ++$i)
{
$summary[] = $question->name . ":\n" . $this->{$question->handle};
$question = $questions[$i];

$name = $question->name;
$value = $this[$question->handle];

$summary .= $name . ":\n";

if ($value instanceof MultiOptionsFieldData)
{
$options = $value->getOptions();

for ($j = 0; $j < count($options); ++$j)
{
$option = $options[$j];

$summary .= $option->label . ': ' . ($option->selected ? 'yes' : 'no');

if ($j != count($options) - 1)
{
$summary .= "\n";
}
}
}
else
{
$summary .= $value;
}

if ($i != count($questions) - 1)
{
$summary .= "\n\n";
}
}

return implode("\n\n", $summary);
Expand Down
25 changes: 23 additions & 2 deletions formerly/services/Formerly_SubmissionsService.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,18 @@ public function getSubmissionById($submissionId)

public function postSubmission(Formerly_SubmissionModel $submission)
{
$this->onBeforePost(new Event($this, array(
'submission' => $submission
)));

if ($this->saveSubmission($submission))
{
$this->sendSubmissionEmails($submission);

$this->onPost(new Event($this, array(
'submission' => $submission
)));

return true;
}

Expand Down Expand Up @@ -90,11 +99,13 @@ public function sendSubmissionEmails(Formerly_SubmissionModel $submission)

if (!empty($emailDef['body']))
{
$email->body = $this->_renderSubmissionTemplate($emailDef['body'], $submission);
$email->body = $this->_renderSubmissionTemplate($emailDef['body'], $submission);
$email->htmlBody = nl2br($email->body);
}
else
{
$email->body = $submission->getSummary();
$email->body = $submission->getSummary();
$email->htmlBody = nl2br($email->body);
}

if (!empty($email->body))
Expand All @@ -114,4 +125,14 @@ private function _renderSubmissionTemplate($template, Formerly_SubmissionModel $

return craft()->templates->renderObjectTemplate($formattedTemplate, $submission);
}

public function onBeforePost(Event $event)
{
$this->raiseEvent('onBeforePost', $event);
}

public function onPost(Event $event)
{
$this->raiseEvent('onPost', $event);
}
}

0 comments on commit e9a3086

Please sign in to comment.