This commit is contained in:
Markus Birth 2016-05-24 22:06:57 +02:00
parent 28e72072d8
commit ba92711362
12 changed files with 39 additions and 51 deletions

View File

@ -98,15 +98,15 @@
"group": 2, "group": 2,
"short": true "short": true
}, },
"programMembership_memberNumber": { "programMembership_program": {
"title": "Member No.", "title": "Name of Program",
"type": "text", "type": "text",
"required": false, "required": false,
"group": 3, "group": 3,
"short": true "short": true
}, },
"programMembership_program": { "programMembership_memberNumber": {
"title": "Name of Program", "title": "Member No.",
"type": "text", "type": "text",
"required": false, "required": false,
"group": 3, "group": 3,
@ -150,12 +150,6 @@
"required": true, "required": true,
"group": 0 "group": 0
}, },
"reservationFor_image": {
"title": "Hotel Image URL",
"type": "url",
"required": false,
"group": 0
},
"reservationFor_telephone": { "reservationFor_telephone": {
"title": "Telephone", "title": "Telephone",
"type": "tel", "type": "tel",

View File

@ -1,12 +1,16 @@
<?php <?php
// FOR TESTING: // FOR TESTING:
$action = 'hotel'; if (!isset($action)) {
$action = 'hotel';
$debug = true;
}
$skey = 'form_' . $action; $skey = 'form_' . $action;
$field_data_json = file_get_contents('definitions/' . $action . '.json'); $field_data_json = file_get_contents('definitions/' . $action . '.json');
$field_data = json_decode($field_data_json, true); $field_data = json_decode($field_data_json, true);
// Build Group list
foreach ($field_data['groups'] as $id=>$group) { foreach ($field_data['groups'] as $id=>$group) {
$by_group[$group] = array( $by_group[$group] = array(
'group_name' => $group, 'group_name' => $group,
@ -14,10 +18,13 @@ foreach ($field_data['groups'] as $id=>$group) {
); );
} }
// Assign fields to groups, fill in (default) values
foreach ($field_data['fields'] as $key=>$meta) { foreach ($field_data['fields'] as $key=>$meta) {
$meta['field_id'] = $key; $meta['field_id'] = $key;
$group_name = $field_data['groups'][$meta['group']]; $group_name = $field_data['groups'][$meta['group']];
$meta['group_name'] = $group_name; $meta['group_name'] = $group_name;
// Assign session value if set, or use default if set
if (isset($_SESSION[$skey][$key])) { if (isset($_SESSION[$skey][$key])) {
$meta['value'] = $_SESSION[$skey][$key]; $meta['value'] = $_SESSION[$skey][$key];
} elseif (isset($meta['default'])) { } elseif (isset($meta['default'])) {
@ -33,17 +40,24 @@ foreach ($field_data['fields'] as $key=>$meta) {
break; break;
} }
} }
// Field type marker for Mustache
$meta['fieldtype_' . $meta['type']] = true; $meta['fieldtype_' . $meta['type']] = true;
// Add useful default values for some types
if ($meta['type'] == 'datetime') { if ($meta['type'] == 'datetime') {
$meta['min'] = date('Y-m-d'); $meta['min'] = date('Y-m-d');
} }
$by_group[$group_name]['fields'][$key] = $meta;
// Add to fieldlist
$by_group[$group_name]['fields'][] = $meta;
} }
foreach ($by_group as $group=>$group_data) { // Convert hash to list for Mustache compatibility
$by_group[$group]['fields'] = array_values($group_data['fields']);
}
#print_r($by_group);
$by_group = array_values($by_group); $by_group = array_values($by_group);
if ($debug) {
print_r($by_group);
}
$data['form_data'] = $by_group; $data['form_data'] = $by_group;

View File

@ -1,8 +1,6 @@
<p>
<select name="{{field_id}}" size="1"> <select name="{{field_id}}" size="1">
<!-- https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 --> <!-- https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 -->
<option value="DE">Germany</option> <option value="DE">Germany</option>
<option value="UK">United Kingdom</option> <option value="UK">United Kingdom</option>
<option value="US">United States of America</option> <option value="US">United States of America</option>
</select> </select>
</p>

View File

@ -1,7 +1,5 @@
<p>
<select name="{{field_id}}" size="1"> <select name="{{field_id}}" size="1">
<option value="EUR">Euro - €</option> <option value="EUR">Euro - €</option>
<option value="USD">US Dollar - $</option> <option value="USD">US Dollar - $</option>
<option value="GBP">British Pound - £</option> <option value="GBP">British Pound - £</option>
</select> </select>
</p>

View File

@ -1,7 +1,5 @@
<p> <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<input class="mdl-textfield__input" type="datetime-local" min="{{min}}T00:00:00.0" max="2032-12-31T00:00:00.0" {{#required}}required{{/required}} id="{{field_id}}" value="{{value}}"/> <input class="mdl-textfield__input" type="datetime-local" min="{{min}}T00:00:00.0" max="2032-12-31T00:00:00.0" {{#required}}required{{/required}} id="{{field_id}}" value="{{value}}"/>
<label class="mdl-textfield__label" for="{{field_id}}">{{title}}</label> <label class="mdl-textfield__label" for="{{field_id}}">{{title}}</label>
<span class="mdl-textfield__error">Please input a valid date!</span> <span class="mdl-textfield__error">Please input a valid date!</span>
</div> </div>
</p>

View File

@ -1,7 +1,5 @@
<p> <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<input class="mdl-textfield__input" type="number" {{#required}}required{{/required}} step="0.5" id="{{field_id}}" value="{{value}}"/> <input class="mdl-textfield__input" type="number" {{#required}}required{{/required}} step="0.5" id="{{field_id}}" value="{{value}}"/>
<label class="mdl-textfield__label" for="{{field_id}}">{{title}}</label> <label class="mdl-textfield__label" for="{{field_id}}">{{title}}</label>
<span class="mdl-textfield__error">Please input a value!</span> <span class="mdl-textfield__error">Please input a value!</span>
</div> </div>
</p>

View File

@ -1,7 +1,5 @@
<p> <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<input class="mdl-textfield__input" type="email" {{#required}}required{{/required}} id="{{field_id}}" value="{{value}}"/> <input class="mdl-textfield__input" type="email" {{#required}}required{{/required}} id="{{field_id}}" value="{{value}}"/>
<label class="mdl-textfield__label" for="{{field_id}}">{{title}}</label> <label class="mdl-textfield__label" for="{{field_id}}">{{title}}</label>
<span class="mdl-textfield__error">Please input a valid email address!</span> <span class="mdl-textfield__error">Please input a valid email address!</span>
</div> </div>
</p>

View File

@ -1,7 +1,5 @@
<p> <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<input class="mdl-textfield__input" type="number" {{#required}}required{{/required}} id="{{field_id}}" value="{{value}}"/> <input class="mdl-textfield__input" type="number" {{#required}}required{{/required}} id="{{field_id}}" value="{{value}}"/>
<label class="mdl-textfield__label" for="{{field_id}}">{{title}}</label> <label class="mdl-textfield__label" for="{{field_id}}">{{title}}</label>
<span class="mdl-textfield__error">Please input a value!</span> <span class="mdl-textfield__error">Please input a value!</span>
</div> </div>
</p>

View File

@ -1,4 +1,3 @@
<p>
Select your status: Select your status:
<select name="{{field_id}}" size="1"> <select name="{{field_id}}" size="1">
<option value="http://schema.org/Confirmed">Confirmed</option> <option value="http://schema.org/Confirmed">Confirmed</option>
@ -6,4 +5,3 @@
<option value="http://schema.org/Pending">Pending</option> <option value="http://schema.org/Pending">Pending</option>
<option value="http://schema.org/Hold">Hold</option> <option value="http://schema.org/Hold">Hold</option>
</select> </select>
</p>

View File

@ -1,7 +1,5 @@
<p> <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<input class="mdl-textfield__input" type="tel" {{#required}}required{{/required}} id="{{field_id}}" value="{{value}}"/> <input class="mdl-textfield__input" type="tel" {{#required}}required{{/required}} id="{{field_id}}" value="{{value}}"/>
<label class="mdl-textfield__label" for="{{field_id}}">{{title}}</label> <label class="mdl-textfield__label" for="{{field_id}}">{{title}}</label>
<span class="mdl-textfield__error">Please input a valid phone number!</span> <span class="mdl-textfield__error">Please input a valid phone number!</span>
</div> </div>
</p>

View File

@ -1,7 +1,5 @@
<p> <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<input class="mdl-textfield__input" type="text" {{#required}}required{{/required}} id="{{field_id}}" value="{{value}}"/> <input class="mdl-textfield__input" type="text" {{#required}}required{{/required}} id="{{field_id}}" value="{{value}}"/>
<label class="mdl-textfield__label" for="{{field_id}}">{{title}}</label> <label class="mdl-textfield__label" for="{{field_id}}">{{title}}</label>
<span class="mdl-textfield__error">Please input a value!</span> <span class="mdl-textfield__error">Please input a value!</span>
</div> </div>
</p>

View File

@ -1,7 +1,5 @@
<p> <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<input class="mdl-textfield__input" type="url" {{#required}}required{{/required}} id="{{field_id}}" value="{{value}}"/> <input class="mdl-textfield__input" type="url" {{#required}}required{{/required}} id="{{field_id}}" value="{{value}}"/>
<label class="mdl-textfield__label" for="{{field_id}}">{{title}}</label> <label class="mdl-textfield__label" for="{{field_id}}">{{title}}</label>
<span class="mdl-textfield__error">Please input a valid URL!</span> <span class="mdl-textfield__error">Please input a valid URL!</span>
</div> </div>
</p>