Implemented the resubscription process - i.e. pre-filling in the form when the subscription link is clicked in the unsubscription notice.
291 lines
14 KiB
Handlebars
291 lines
14 KiB
Handlebars
<ol class="breadcrumb">
|
|
<li><a href="/">{{#translate}}Home{{/translate}}</a></li>
|
|
<li><a href="/lists/">{{#translate}}Lists{{/translate}}</a></li>
|
|
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
|
<li><a href="/forms/{{list.id}}">{{#translate}}Custom Forms{{/translate}}</a></li>
|
|
<li class="active">{{#translate}}Edit Form{{/translate}}</li>
|
|
</ol>
|
|
|
|
<h2>{{list.name}} <small>{{#translate}}Edit Custom Form{{/translate}}</small> <a class="btn btn-default btn-xs" href="/forms/{{list.id}}" role="button"><span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span> {{#translate}}Back to forms{{/translate}}</a></h2>
|
|
|
|
<hr>
|
|
|
|
<form method="post" class="delete-form" id="forms-delete" action="/forms/{{list.id}}/delete">
|
|
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
|
<input type="hidden" name="id" value="{{form.id}}">
|
|
</form>
|
|
|
|
<form class="form-horizontal" method="post" id="forms-update" action="/forms/{{list.id}}/edit">
|
|
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
|
<input type="hidden" name="id" value="{{form.id}}">
|
|
<input type="hidden" name="fields_shown_on_subscribe" value="{{form.fieldsShownOnSubscribe}}">
|
|
<input type="hidden" name="fields_shown_on_manage" value="{{form.fieldsShownOnManage}}">
|
|
|
|
<div class="form-group">
|
|
<label for="name" class="col-sm-2 control-label">{{#translate}}Form Name{{/translate}}</label>
|
|
<div class="col-sm-10">
|
|
<input type="text" class="form-control input-lg" name="name" id="name" value="{{form.name}}" placeholder="{{#translate}}Form Name{{/translate}}" required>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="form-description" class="col-sm-2 control-label">{{#translate}}Description{{/translate}}</label>
|
|
<div class="col-sm-10">
|
|
<textarea class="form-control" id="form-description" name="description" rows="3" placeholder="{{#translate}}Optional comments about this form{{/translate}}">{{form.description}}</textarea>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="previewLinks" class="col-sm-2 control-label">{{#translate}}Form Preview{{/translate}}</label>
|
|
<div class="col-sm-10" id="previewLinks">
|
|
<div class="help-block">
|
|
<small>
|
|
{{#translate}}Note: These links are solely for a quick preview. If you submit a preview form you'll get redirected to the list's default form.{{/translate}}
|
|
</small>
|
|
</div>
|
|
<p>
|
|
<a href="/subscription/{{list.cid}}?fid={{form.id}}" target="_blank">{{#translate}}Subscribe{{/translate}}</a>
|
|
|
|
|
<a href="/subscription/{{list.cid}}/confirm-subscription-notice?fid={{form.id}}" target="_blank">{{#translate}}Confirm Subscription Notice{{/translate}}</a>
|
|
|
|
|
<a href="/subscription/{{list.cid}}/confirm-unsubscription-notice?fid={{form.id}}" target="_blank">{{#translate}}Confirm Unsubscription Notice{{/translate}}</a>
|
|
|
|
|
<a href="/subscription/{{list.cid}}/subscribed-notice?fid={{form.id}}" target="_blank">{{#translate}}Subscribed Notice{{/translate}}</a>
|
|
|
|
|
<a href="/subscription/{{list.cid}}/updated-notice?fid={{form.id}}" target="_blank">{{#translate}}Updated Notice{{/translate}}</a>
|
|
|
|
|
<a href="/subscription/{{list.cid}}/unsubscribed-notice?fid={{form.id}}" target="_blank">{{#translate}}Unsubscribed Notice{{/translate}}</a>
|
|
|
|
|
<a href="/subscription/{{list.cid}}/manual-unsubscribe-notice?fid={{form.id}}" target="_blank">{{#translate}}Manual Unsubscribe Notice{{/translate}}</a>
|
|
{{#if testUsers}}
|
|
|
|
|
<a href="/subscription/{{list.cid}}/unsubscribe/{{testUsers.0.cid}}?fid={{form.id}}&formTest=1" target="_blank">{{#translate}}Unsubscribe{{/translate}}</a>
|
|
|
|
|
<a href="/subscription/{{list.cid}}/manage/{{testUsers.0.cid}}?fid={{form.id}}" target="_blank">{{#translate}}Manage{{/translate}}</a>
|
|
|
|
|
<a href="/subscription/{{list.cid}}/manage-address/{{testUsers.0.cid}}?fid={{form.id}}" target="_blank">{{#translate}}Manage Address{{/translate}}</a>
|
|
{{else}}
|
|
|
|
|
<small class="text-muted">{{#translate}}Create a test user for additional options{{/translate}}</small>
|
|
{{/if}}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<p><br></p>
|
|
|
|
|
|
<div class="form-group">
|
|
<div class="col-sm-offset-2 col-sm-10">
|
|
<ul class="nav nav-tabs" role="tablist">
|
|
<li role="presentation" class="active"><a href="#templates" aria-controls="templates" role="tab" data-toggle="tab">{{#translate}}Templates{{/translate}}</a></li>
|
|
<li role="presentation"><a href="#fields" aria-controls="fields" role="tab" data-toggle="tab">{{#translate}}Fields{{/translate}}</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="tab-content">
|
|
|
|
<div role="tabpanel" class="tab-pane active" id="templates">
|
|
|
|
<div class="form-group">
|
|
<label for="form-header" class="col-sm-2 control-label">{{#translate}}Edit{{/translate}}</label>
|
|
<div class="col-sm-10">
|
|
<select class="form-control" id="templateSelect">
|
|
{{#each templateOptgroups}}
|
|
<optgroup label="{{label}}">
|
|
{{#each opts}}
|
|
<option value="{{name}}">{{label}}</option>
|
|
{{/each}}
|
|
</optgroup>
|
|
{{/each}}
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
var forceAceRender = function(name) {
|
|
var div = $('.form-group.template.' + name).find('.ace_editor')[0];
|
|
div.env && div.env.editor && div.env.editor.resize(true);
|
|
};
|
|
$('#templateSelect').on('change', function() {
|
|
$('.form-group.template').hide();
|
|
var name = $(this).val();
|
|
$('.form-group.template.' + name).show();
|
|
forceAceRender(name);
|
|
});
|
|
$('ul.nav-tabs > li > a').on('shown.bs.tab', function(e) {
|
|
var id = $(e.target).attr('href').substr(1);
|
|
id === 'templates' && forceAceRender($('#templateSelect').val());
|
|
});
|
|
});
|
|
</script>
|
|
|
|
{{#each templateOptgroups}}
|
|
{{#each opts}}
|
|
<div class="form-group template {{name}}" {{#unless isLayout}}style="display: none;"{{/unless}}>
|
|
<div class="col-sm-offset-2 col-sm-10">
|
|
<div class="help-block" style="margin-top: -8px;">
|
|
<small>{{#if help}}{{{help}}}{{else}} {{/if}}</small>
|
|
</div>
|
|
<div class="code-editor-{{type}}" style="height: 700px; border: 1px solid #ccc;"></div>
|
|
<input type="hidden" name="{{name}}" value="{{value}}">
|
|
</div>
|
|
</div>
|
|
{{/each}}
|
|
{{/each}}
|
|
|
|
</div>
|
|
|
|
|
|
<!-- Fields -->
|
|
|
|
<style>
|
|
ul.fields {
|
|
min-height: 54px;
|
|
border: 1px dashed #ccc;
|
|
margin: 0;
|
|
padding: 11px 10px 10px;
|
|
background: #efefef;
|
|
}
|
|
ul.fields li {
|
|
list-style: none;
|
|
margin: -1px 0 0;
|
|
padding: 0 10px;
|
|
background: #fff;
|
|
border: 1px solid #ccc;
|
|
line-height: 30px;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
cursor: move;
|
|
}
|
|
</style>
|
|
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
jQuery.get('/javascript/jquery-ui-1.12.1.min.js', undefined, function() {
|
|
|
|
$('.fieldsHiddenOnSubscribe, .fieldsShownOnSubscribe').sortable({
|
|
connectWith: '.connectedSortableSubscribe'
|
|
}).disableSelection();
|
|
|
|
$('.fieldsHiddenOnManage, .fieldsShownOnManage').sortable({
|
|
connectWith: '.connectedSortableManage'
|
|
}).disableSelection();
|
|
|
|
$('#forms-update').on('submit', function(e) {
|
|
var s = [];
|
|
var m = [];
|
|
$('.fieldsShownOnSubscribe > li').each(function() {
|
|
s.push($(this).data('field-id'));
|
|
});
|
|
$('.fieldsShownOnManage > li').each(function() {
|
|
m.push($(this).data('field-id'));
|
|
});
|
|
$('input[name=fields_shown_on_subscribe]').val(s.join(','));
|
|
$('input[name=fields_shown_on_manage]').val(m.join(','));
|
|
});
|
|
|
|
}, 'script');
|
|
});
|
|
</script>
|
|
|
|
<div role="tabpanel" class="tab-pane" id="fields">
|
|
<div class="form-group">
|
|
<label for="form-fields" class="col-sm-2 control-label">{{#translate}}Form Fields{{/translate}}</label>
|
|
<div class="col-sm-10">
|
|
<div class="row">
|
|
|
|
<div class="col-sm-6">
|
|
<h6>{{#translate}}Fields hidden on subscription page:{{/translate}}</h6>
|
|
<ul class="fields fieldsHiddenOnSubscribe connectedSortableSubscribe">
|
|
{{#each fieldsHiddenOnSubscribe}}
|
|
<li class="ui-state-default" data-field-id="{{id}}">
|
|
{{name}}
|
|
<span style="font-size: 10px; color: #aaa; float: right;">{{type}}</span>
|
|
</li>
|
|
{{/each}}
|
|
</ul>
|
|
<h6>{{#translate}}Fields shown on subscription page:{{/translate}}</h6>
|
|
<ul class="fields fieldsShownOnSubscribe connectedSortableSubscribe">
|
|
{{#each fieldsShownOnSubscribe}}
|
|
<li class="ui-state-default" data-field-id="{{id}}">
|
|
{{name}}
|
|
<span style="font-size: 10px; color: #aaa; float: right;">{{type}}</span>
|
|
</li>
|
|
{{/each}}
|
|
</ul>
|
|
<br>
|
|
</div>
|
|
|
|
<div class="col-sm-6">
|
|
<h6>{{#translate}}Fields hidden on preferences page:{{/translate}}</h6>
|
|
<ul class="fields fieldsHiddenOnManage connectedSortableManage">
|
|
{{#each fieldsHiddenOnManage}}
|
|
<li class="ui-state-default" data-field-id="{{id}}">
|
|
{{name}}
|
|
<span style="font-size: 10px; color: #aaa; float: right;">{{type}}</span>
|
|
</li>
|
|
{{/each}}
|
|
</ul>
|
|
<h6>{{#translate}}Fields shown on preferences page:{{/translate}}</h6>
|
|
<ul class="fields fieldsShownOnManage connectedSortableManage">
|
|
{{#each fieldsShownOnManage}}
|
|
<li class="ui-state-default" data-field-id="{{id}}">
|
|
{{name}}
|
|
<span style="font-size: 10px; color: #aaa; float: right;">{{type}}</span>
|
|
</li>
|
|
{{/each}}
|
|
</ul>
|
|
<br>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div><!-- end .tab-content -->
|
|
|
|
<hr>
|
|
|
|
<div class="form-group">
|
|
<div class="col-sm-offset-2 col-sm-10">
|
|
<div class="pull-right">
|
|
<button type="submit" form="forms-delete" class="btn btn-danger"><i class="glyphicon glyphicon-remove"></i> {{#translate}}Delete Form{{/translate}}</button>
|
|
</div>
|
|
<button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-ok"></i> {{#translate}}Update{{/translate}}</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
|
|
|
|
<script src="/javascript/cookie.2.1.3.js"></script>
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
|
|
// Remember Tab
|
|
var tab = Cookies.get('tab');
|
|
tab && $('ul.nav-tabs > li > a[href="#' + tab + '"]').click();
|
|
$('ul.nav-tabs > li > a').on('shown.bs.tab', function(e) {
|
|
var id = $(e.target).attr('href').substr(1);
|
|
Cookies.set('tab', id, { expires: 7, path: '' });
|
|
});
|
|
|
|
// Remember Template
|
|
var tmpl = Cookies.get('tmpl');
|
|
tmpl && $('#templateSelect').val(tmpl).trigger('change');
|
|
$('#templateSelect').on('change', function() {
|
|
Cookies.set('tmpl', $(this).val(), { expires: 7, path: '' });
|
|
});
|
|
|
|
$('a.mjml-documentation')
|
|
.attr('href', 'https://mjml.io/documentation/')
|
|
.attr('target', '_blank')
|
|
.attr('rel', 'noreferrer')
|
|
|
|
});
|
|
</script>
|