- Harden XSS protection with escapeHtml on all rendered output values - Add empty_fallback support for empty cell display across all view types - Fix reCAPTCHA default action to 'submit' matching JS side - Move reCAPTCHA token generation from inline PHP to public.js - Lower default reCAPTCHA min score from 0.5 to 0.3 - Improve reCAPTCHA token age check and preload error handling - Add form submit handler for enter key support - Increase waitForRecaptcha timeout to 10 seconds - Show button/color settings only for button output types - Remove debug console.log and error_log statements - Bump version to 1.4.10
59 lines
3.4 KiB
PHP
59 lines
3.4 KiB
PHP
<script id="output-template" type="text/x-handlebars-template">
|
|
{{#each data}}
|
|
<div class="card p-0">
|
|
<div class="card-header">
|
|
<h6 class="mb-0">{{key}}</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="form-check">
|
|
<input class="form-check-input output-value-visibility" type="checkbox" value="{{hide}}" id="output-visibility-{{id}}" name="checker[output][{{id}}][hide]" {{#ifCond hide '==' 'yes'}}checked{{/ifCond}}>
|
|
<label class="form-check-label" for="output-visibility-{{id}}">
|
|
Hide
|
|
</label>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-3"><label class="form-label fw-bold mb-0">Type</label></div>
|
|
<div class="col-9">
|
|
<input type="hidden" name="checker[output][{{id}}][key]" value="{{key}}">
|
|
<select name="checker[output][{{id}}][type]" id="output-type-{{id}}" class="output-type w-100">
|
|
<option value="text" {{#ifCond type '==' 'text'}}selected{{/ifCond}}>Text</option>
|
|
<option value="link_button" {{#ifCond type '==' 'link_button'}}selected{{/ifCond}}>Link Button</option>
|
|
<option value="whatsapp_button" {{#ifCond type '==' 'whatsapp_button'}}selected{{/ifCond}}>WhatsApp Button</option>
|
|
<option value="image" {{#ifCond type '==' 'image'}}selected{{/ifCond}}>Image</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-2 type-button-link">
|
|
<div class="col-3"><label class="form-label fw-bold mb-0">Button Text</label></div>
|
|
<div class="col-9">
|
|
<input type="text" id="output-buttontext-{{id}}" name="checker[output][{{id}}][button_text]" value="{{button_text}}" class="w-100"/>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-2 type-button-link">
|
|
<div class="col-3"><label class="form-label fw-bold mb-0">BG Color</label></div>
|
|
<div class="col-9">
|
|
<input type="color" id="output-bg_color-{{id}}" name="checker[output][{{id}}][bg_color]" value="{{bg_color}}" class="w-100"/>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-2 type-button-link">
|
|
<div class="col-3"><label class="form-label fw-bold mb-0">Text Color</label></div>
|
|
<div class="col-9">
|
|
<input type="color" id="output-text_color-{{id}}" name="checker[output][{{id}}][text_color]" value="{{text_color}}" class="w-100"/>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-3"><label class="form-label fw-bold mb-0">Prefix</label></div>
|
|
<div class="col-9">
|
|
<input type="text" id="output-prefix-{{id}}" name="checker[output][{{id}}][prefix]" value="{{prefix}}" class="w-100"/>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-2">
|
|
<div class="col-3"><label class="form-label fw-bold mb-0">Empty Fallback</label></div>
|
|
<div class="col-9">
|
|
<input type="text" id="output-empty_fallback-{{id}}" name="checker[output][{{id}}][empty_fallback]" value="{{empty_fallback}}" class="w-100" placeholder="e.g. N/A, —, Not available"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{/each}}
|
|
</script> |