Initial import
This commit is contained in:
commit
54fa30701e
278 changed files with 37868 additions and 0 deletions
34
views/lists/create.hbs
Normal file
34
views/lists/create.hbs
Normal file
|
@ -0,0 +1,34 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li class="active">Create List</li>
|
||||
</ol>
|
||||
|
||||
<h2>Create List</h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/lists/create">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-sm-2 control-label">Name</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control input-lg" name="name" id="name" value="{{name}}" placeholder="List Name" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="description" class="col-sm-2 control-label">Description</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="form-control" rows="3" name="description" id="description">{{description}}</textarea>
|
||||
<span class="help-block">HTML is allowed</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-plus"></i> Create List</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
51
views/lists/edit.hbs
Normal file
51
views/lists/edit.hbs
Normal file
|
@ -0,0 +1,51 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{id}}">{{name}}</a></li>
|
||||
<li class="active">Edit List</li>
|
||||
</ol>
|
||||
|
||||
<h2>Edit List <a class="btn btn-default btn-xs" href="/lists/view/{{id}}" role="button"><span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span> View list</a></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form method="post" class="delete-form" id="lists-delete" action="/lists/delete">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="id" value="{{id}}">
|
||||
</form>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/lists/edit">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="id" value="{{id}}" />
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-sm-2 control-label">Name</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control input-lg" name="name" id="name" value="{{name}}" placeholder="List Name" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-sm-2 control-label">List ID</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" id="cid" value="{{cid}}" readonly>
|
||||
<span class="help-block">This is the list ID displayed to the subscribers</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="description" class="col-sm-2 control-label">Description</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="form-control" rows="3" name="description" id="description">{{description}}</textarea>
|
||||
<span class="help-block">HTML is allowed</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<div class="pull-right">
|
||||
<button type="submit" form="lists-delete" class="btn btn-danger"><i class="glyphicon glyphicon-remove"></i> Delete List</button>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-ok"></i> Update</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
82
views/lists/fields/create.hbs
Normal file
82
views/lists/fields/create.hbs
Normal file
|
@ -0,0 +1,82 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
||||
<li><a href="/fields/{{list.id}}">Custom Fields</a></li>
|
||||
<li class="active">Create Field</li>
|
||||
</ol>
|
||||
|
||||
<h2>{{list.name}} <small>Create Custom Field</small></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/fields/{{list.id}}/create">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-sm-2 control-label">Field Name</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control input-lg" name="name" id="name" value="{{name}}" placeholder="Field Name" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="type" class="col-sm-2 control-label">Field Type</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control" name="type">
|
||||
<option value="text" {{#if selectedText}} selected {{/if}}>Text</option>
|
||||
<option value="number" {{#if selectedNumber}} selected {{/if}}>Number</option>
|
||||
<option value="website" {{#if selectedWebsite}} selected {{/if}}>Website</option>
|
||||
<optgroup label="Date">
|
||||
<option value="date-us" {{#if selectedDateUs}} selected {{/if}}>Date (MM/DD/YYYY)</option>
|
||||
<option value="date-eur" {{#if selectedDateEur}} selected {{/if}}>Date (DD/MM/YYYY)</option>
|
||||
</optgroup>
|
||||
<optgroup label="Birthday">
|
||||
<option value="birthday-us" {{#if selectedBirthdayUs}} selected {{/if}}>Birthday (MM/DD)</option>
|
||||
<option value="birthday-eur" {{#if selectedBirthdayEur}} selected {{/if}}>Birthday (DD/MM)</option>
|
||||
</optgroup>
|
||||
<optgroup label="Grouped">
|
||||
<option value="dropdown" {{#if selectedDropdown}} selected {{/if}}>Drop Downs</option>
|
||||
<option value="radio" {{#if selectedRadio}} selected {{/if}}>Radio Buttons</option>
|
||||
<option value="checkbox" {{#if selectedCheckbox}} selected {{/if}}>Checkboxes</option>
|
||||
</optgroup>
|
||||
<option value="option" {{#if selectedOption}} selected {{/if}}>Option for a group value</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="group" class="col-sm-2 control-label">Group</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control" name="group">
|
||||
<option value=""> –– Select ––</option>
|
||||
{{#each groups}}
|
||||
<option value="{{id}}" {{#if selected}} selected {{/if}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
<span class="help-block">Required for group options</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="default-value" class="col-sm-2 control-label">Default merge tag value</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="default-value" id="default-value" value="{{field.defaultValue}}" placeholder="Default merge tag value">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-xs-4">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="visible" {{#if visible}} checked {{/if}}> Visible
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-plus"></i> Add Field</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
104
views/lists/fields/edit.hbs
Normal file
104
views/lists/fields/edit.hbs
Normal file
|
@ -0,0 +1,104 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
||||
<li><a href="/fields/{{list.id}}">Custom Fields</a></li>
|
||||
<li class="active">Edit Field</li>
|
||||
</ol>
|
||||
|
||||
<h2>{{list.name}} <small>Edit Custom Field</small> <a class="btn btn-default btn-xs" href="/fields/{{list.id}}" role="button"><span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span> Back to fields</a></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form method="post" class="delete-form" id="fields-delete" action="/fields/{{list.id}}/delete">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="id" value="{{field.id}}" />
|
||||
</form>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/fields/{{list.id}}/edit">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="id" value="{{field.id}}" />
|
||||
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-sm-2 control-label">Field Name</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control input-lg" name="name" id="name" value="{{field.name}}" placeholder="Field Name" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="type" class="col-sm-2 control-label">Field Type</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control" disabled>
|
||||
<option value="text" {{#if selectedText}} selected {{/if}}>Text</option>
|
||||
<option value="number" {{#if selectedNumber}} selected {{/if}}>Number</option>
|
||||
<option value="website" {{#if selectedWebsite}} selected {{/if}}>Website</option>
|
||||
<optgroup label="Date">
|
||||
<option value="date-us" {{#if selectedDateUs}} selected {{/if}}>Date (MM/DD/YYYY)</option>
|
||||
<option value="date-eur" {{#if selectedDateEur}} selected {{/if}}>Date (DD/MM/YYYY)</option>
|
||||
</optgroup>
|
||||
<optgroup label="Birthday">
|
||||
<option value="birthday-us" {{#if selectedBirthdayUs}} selected {{/if}}>Birthday (MM/DD)</option>
|
||||
<option value="birthday-eur" {{#if selectedBirthdayEur}} selected {{/if}}>Birthday (DD/MM)</option>
|
||||
</optgroup>
|
||||
<optgroup label="Grouped">
|
||||
<option value="dropdown" {{#if selectedDropdown}} selected {{/if}}>Drop Downs</option>
|
||||
<option value="radio" {{#if selectedRadio}} selected {{/if}}>Radio Buttons</option>
|
||||
<option value="checkbox" {{#if selectedCheckbox}} selected {{/if}}>Checkboxes</option>
|
||||
</optgroup>
|
||||
<option value="option" {{#if selectedOption}} selected {{/if}}>Option for a group value</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if groups}}
|
||||
|
||||
<div class="form-group">
|
||||
<label for="group" class="col-sm-2 control-label">Group</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control" name="group">
|
||||
<option value=""> –– Select ––</option>
|
||||
{{#each groups}}
|
||||
<option value="{{id}}" {{#if selected}} selected {{/if}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
<span class="help-block">Required for group options)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/if}}
|
||||
|
||||
<div class="form-group">
|
||||
<label for="key" class="col-sm-2 control-label">Merge tag</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control text-uppercase" name="key" id="key" value="{{field.key}}" placeholder="Merge Tag">
|
||||
<span class="help-block">Put this tag in your content: <strong>[{{#if field.key}}{{field.key}}{{else}}TAG_VALUE{{/if}}]</strong></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="default-value" class="col-sm-2 control-label">Default merge tag value</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="default-value" id="default-value" value="{{field.defaultValue}}" placeholder="Default merge tag value">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-xs-4">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="visible" {{#if field.visible}} checked {{/if}}> Visible
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<div class="pull-right">
|
||||
<button type="submit" form="fields-delete" class="btn btn-danger"><i class="glyphicon glyphicon-remove"></i> Delete Field</button>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-ok"></i> Update</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
95
views/lists/fields/fields.hbs
Normal file
95
views/lists/fields/fields.hbs
Normal file
|
@ -0,0 +1,95 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
||||
<li class="active">Custom Fields</li>
|
||||
</ol>
|
||||
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-primary" href="/fields/{{list.id}}/create" role="button"><i class="glyphicon glyphicon-plus"></i> Create Custom Field</a>
|
||||
</div>
|
||||
|
||||
<h2>{{list.name}} <small>Custom Fields</small></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover" data-row-sort="0,1,1,1,0,0">
|
||||
<thead>
|
||||
<th class="col-md-1">
|
||||
#
|
||||
</th>
|
||||
<th>
|
||||
Name
|
||||
</th>
|
||||
<th class="col-md-2">
|
||||
Type
|
||||
</th>
|
||||
<th class="col-md-2">
|
||||
Merge tag
|
||||
</th>
|
||||
<th class="col-md-2">
|
||||
Default merge tag value
|
||||
</th>
|
||||
<th class="col-md-1">
|
||||
|
||||
</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#each rows}}
|
||||
<tr>
|
||||
<th scope="row">
|
||||
{{index}}
|
||||
</th>
|
||||
<td>
|
||||
<span class="glyphicon glyphicon-tasks" aria-hidden="true"></span> {{name}}
|
||||
</td>
|
||||
<td>
|
||||
{{type}}
|
||||
</td>
|
||||
<td>
|
||||
<strong>[{{key}}]</strong>
|
||||
</td>
|
||||
<td class="text-muted">
|
||||
{{defaultValue}}
|
||||
</td>
|
||||
<td>
|
||||
<span class="glyphicon glyphicon-wrench" aria-hidden="true"></span>
|
||||
<a href="/fields/{{../list.id}}/edit/{{id}}">
|
||||
Edit
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{{#if options}}
|
||||
{{#each options}}
|
||||
<tr>
|
||||
<th scope="row">
|
||||
{{index}}
|
||||
</th>
|
||||
<td colspan="2">
|
||||
<span class="glyphicon glyphicon-record" aria-hidden="true"></span> {{name}}
|
||||
</td>
|
||||
<td>
|
||||
<strong>[{{key}}]</strong>
|
||||
</td>
|
||||
<td class="text-muted">
|
||||
{{defaultValue}}
|
||||
</td>
|
||||
<td>
|
||||
<span class="glyphicon glyphicon-wrench" aria-hidden="true"></span>
|
||||
<a href="/fields/{{../../list.id}}/edit/{{id}}">Edit</a>
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
{{#unless rows}}
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
No data available in table
|
||||
</td>
|
||||
</tr>
|
||||
{{/unless}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
64
views/lists/lists.hbs
Normal file
64
views/lists/lists.hbs
Normal file
|
@ -0,0 +1,64 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li class="active">Lists</li>
|
||||
</ol>
|
||||
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-primary" href="/lists/create" role="button"><i class="glyphicon glyphicon-plus"></i> Create List</a>
|
||||
</div>
|
||||
|
||||
<h2>Lists</h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover data-table display nowrap" width="100%" data-row-sort="0,1,1,0,0">
|
||||
<thead>
|
||||
<th class="col-md-1">
|
||||
#
|
||||
</th>
|
||||
<th>
|
||||
Name
|
||||
</th>
|
||||
<th class="col-md-1">
|
||||
Subscribers
|
||||
</th>
|
||||
<th>
|
||||
Description
|
||||
</th>
|
||||
<th class="col-md-1">
|
||||
|
||||
</th>
|
||||
</thead>
|
||||
{{#if rows}}
|
||||
<tbody>
|
||||
|
||||
{{#each rows}}
|
||||
<tr>
|
||||
<th scope="row">
|
||||
{{index}}
|
||||
</th>
|
||||
<td>
|
||||
<span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span>
|
||||
<a href="/lists/view/{{id}}">
|
||||
{{name}}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<p class="text-center">{{subscribers}}</p>
|
||||
</td>
|
||||
<td>
|
||||
<p class="text-muted">{{description}}</p>
|
||||
</td>
|
||||
<td>
|
||||
<span class="glyphicon glyphicon-wrench" aria-hidden="true"></span>
|
||||
<a href="/lists/edit/{{id}}">
|
||||
Edit
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
38
views/lists/segments/create.hbs
Normal file
38
views/lists/segments/create.hbs
Normal file
|
@ -0,0 +1,38 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
||||
<li><a href="/segments/{{list.id}}">Segments</a></li>
|
||||
<li class="active">Create Segment</li>
|
||||
</ol>
|
||||
|
||||
<h2>{{list.name}} <small>Create Segment</small></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/segments/{{list.id}}/create">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-sm-2 control-label">Segment Name</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control input-lg" name="name" id="name" value="{{name}}" placeholder="Segment Name" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="group" class="col-sm-2 control-label">Rule match</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control" name="type">
|
||||
<option value=""> –– Select ––</option>
|
||||
<option value="1" {{#if matchAll}} selected {{/if}}>All rules must match</option>
|
||||
<option value="2" {{#if matchAny}} selected {{/if}}>Any rule can match</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-plus"></i> Add Segment</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
48
views/lists/segments/edit.hbs
Normal file
48
views/lists/segments/edit.hbs
Normal file
|
@ -0,0 +1,48 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
||||
<li><a href="/segments/{{list.id}}">Segments</a></li>
|
||||
<li class="active">Edit Segment</li>
|
||||
</ol>
|
||||
|
||||
<h2>{{list.name}} <small>Edit Segment</small> <a class="btn btn-default btn-xs" href="/segments/{{list.id}}" role="button"><span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span> Back to segments</a></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form method="post" class="delete-form" id="segments-delete" action="/segments/{{list.id}}/delete">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="id" value="{{id}}" />
|
||||
</form>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/segments/{{list.id}}/edit">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="id" value="{{id}}" />
|
||||
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-sm-2 control-label">Segment Name</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control input-lg" name="name" id="name" value="{{name}}" placeholder="Segment Name" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="group" class="col-sm-2 control-label">Rule match</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control" name="type">
|
||||
<option value=""> –– Select ––</option>
|
||||
<option value="1" {{#if matchAll}} selected {{/if}}>All rules must match</option>
|
||||
<option value="2" {{#if matchAny}} selected {{/if}}>Any rule can match</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<div class="pull-right">
|
||||
<button type="submit" form="segments-delete" class="btn btn-danger"><i class="glyphicon glyphicon-remove"></i> Delete Segment</button>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-ok"></i> Update</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
201
views/lists/segments/rule-configure.hbs
Normal file
201
views/lists/segments/rule-configure.hbs
Normal file
|
@ -0,0 +1,201 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
||||
<li><a href="/segments/{{list.id}}">Segments</a></li>
|
||||
<li><a href="/segments/{{list.id}}/view/{{id}}">{{name}}</a></li>
|
||||
<li class="active">Create Segment</li>
|
||||
</ol>
|
||||
|
||||
<h2>{{list.name}} <small>Create Rule</small></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/segments/{{list.id}}/rules/{{id}}/create">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="column" value="{{column.column}}">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="column" class="col-sm-2 control-label">Rule</label>
|
||||
<div class="col-sm-10">
|
||||
<p class="form-control-static"><strong>{{column.name}}</strong></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if columnTypeString}}
|
||||
<div class="form-group">
|
||||
<label for="value" class="col-sm-2 control-label">Value</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="value" id="value" value="{{value.value}}" placeholder="Value">
|
||||
<span class="help-block">Use % for wildcard character, eg. "%test" to match all values that end with "test"</span>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if columnTypeNumber}}
|
||||
<div class="form-group">
|
||||
<label for="value" class="col-sm-2 control-label">Value</label>
|
||||
<div class="col-sm-10 radio">
|
||||
<label>
|
||||
<input type="radio" name="range" value="" {{#unless value.range}} checked {{/unless}}> Use exact match
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-5">
|
||||
<input type="number" class="form-control" name="value" id="value" value="{{value.value}}" placeholder="0">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10 radio">
|
||||
<label>
|
||||
<input type="radio" name="range" value="yes" {{#if value.range}} checked {{/if}}> Use range match
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10 radio">
|
||||
<div class="row">
|
||||
<div class="col-md-1">
|
||||
<p class="form-control-static">From</p>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<input type="number" class="form-control" name="start" value="{{value.start}}" placeholder="0">
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<p class="form-control-static text-center">to</p>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<input type="number" class="form-control" name="end" value="{{value.end}}" placeholder="0">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/if}}
|
||||
|
||||
{{#if columnTypeDate}}
|
||||
<div class="form-group">
|
||||
<label for="value" class="col-sm-2 control-label">Value</label>
|
||||
<div class="col-sm-10 radio">
|
||||
<label>
|
||||
<input type="radio" name="range" value="" {{#unless value.range}} checked {{/unless}}> Use exact match
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-5">
|
||||
<div class="input-group date fm-date-generic">
|
||||
<input type="text" class="form-control" name="value" placeholder="YYYY-MM-DD" value="{{value.value}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10 radio">
|
||||
<label>
|
||||
<input type="radio" name="range" value="yes" {{#if value.range}} checked {{/if}}> Use range match
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10 radio">
|
||||
<div class="row">
|
||||
<div class="col-md-1">
|
||||
<p class="form-control-static">From</p>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="input-group date fm-date-generic">
|
||||
<input type="text" class="form-control" name="start" placeholder="YYYY-MM-DD" value="{{value.start}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<p class="form-control-static text-center">to</p>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="input-group date fm-date-generic">
|
||||
<input type="text" class="form-control" name="end" placeholder="YYYY-MM-DD" value="{{value.end}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if columnTypeBirthday}}
|
||||
<div class="form-group">
|
||||
<label for="value" class="col-sm-2 control-label">Value</label>
|
||||
<div class="col-sm-10 radio">
|
||||
<label>
|
||||
<input type="radio" name="range" value="" {{#unless isRange}} checked {{/unless}}> Use exact match
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-5">
|
||||
<div class="input-group date fm-birthday-generic">
|
||||
<input type="text" class="form-control" name="value" placeholder="MM-DD" value="{{value.value}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10 radio">
|
||||
<label>
|
||||
<input type="radio" name="range" value="yes" {{#if isRange}} checked {{/if}}> Use range match
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10 radio">
|
||||
<div class="row">
|
||||
<div class="col-md-1">
|
||||
<p class="form-control-static">From</p>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="input-group date fm-birthday-generic">
|
||||
<input type="text" class="form-control" name="start" placeholder="MM-DD" value="{{value.start}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<p class="form-control-static text-center">to</p>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="input-group date fm-birthday-generic">
|
||||
<input type="text" class="form-control" name="end" placeholder="MM-DD" value="{{value.end}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if columnTypeBoolean}}
|
||||
<div class="form-group">
|
||||
<label for="value" class="col-sm-2 control-label">Value</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="value" value="yes" {{#if value.value}} checked {{/if}}> Selected
|
||||
</label>
|
||||
</div>
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="value" value="" {{#unless value.value}} checked {{/unless}}> Not selected
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/if}}
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-plus"></i> Add Rule</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
34
views/lists/segments/rule-create.hbs
Normal file
34
views/lists/segments/rule-create.hbs
Normal file
|
@ -0,0 +1,34 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
||||
<li><a href="/segments/{{list.id}}">Segments</a></li>
|
||||
<li><a href="/segments/{{list.id}}/view/{{id}}">{{name}}</a></li>
|
||||
<li class="active">Create Segment</li>
|
||||
</ol>
|
||||
|
||||
<h2>{{list.name}} <small>Create Rule</small></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/segments/{{list.id}}/rules/{{id}}/next">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="column" class="col-sm-2 control-label">Rule</label>
|
||||
<div class="col-sm-10">
|
||||
<select id="column" class="form-control" name="column" required>
|
||||
<option value=""> –– Select ––</option>
|
||||
{{#each columns}}
|
||||
<option value="{{column}}" {{#if selected}} selected {{/if}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> Next</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
209
views/lists/segments/rule-edit.hbs
Normal file
209
views/lists/segments/rule-edit.hbs
Normal file
|
@ -0,0 +1,209 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
||||
<li><a href="/segments/{{list.id}}">Segments</a></li>
|
||||
<li><a href="/segments/{{list.id}}/view/{{segment.id}}">{{name}}</a></li>
|
||||
<li class="active">Create Segment</li>
|
||||
</ol>
|
||||
|
||||
<h2>{{list.name}} <small>Create Rule</small></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form method="post" class="delete-form" id="rule-delete" action="/segments/{{list.id}}/rules/{{segment.id}}/delete">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="id" value="{{id}}" />
|
||||
</form>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/segments/{{list.id}}/rules/{{segment.id}}/edit">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="id" value="{{id}}">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="column" class="col-sm-2 control-label">Rule</label>
|
||||
<div class="col-sm-10">
|
||||
<p class="form-control-static"><strong>{{column.name}}</strong></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if columnTypeString}}
|
||||
<div class="form-group">
|
||||
<label for="value" class="col-sm-2 control-label">Value</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="value" id="value" value="{{value.value}}" placeholder="Value">
|
||||
<span class="help-block">Use % for wildcard character, eg. "%test" to match all values that end with "test"</span>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if columnTypeNumber}}
|
||||
<div class="form-group">
|
||||
<label for="value" class="col-sm-2 control-label">Value</label>
|
||||
<div class="col-sm-10 radio">
|
||||
<label>
|
||||
<input type="radio" name="range" value="" {{#unless value.range}} checked {{/unless}}> Use exact match
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-5">
|
||||
<input type="number" class="form-control" name="value" id="value" value="{{value.value}}" placeholder="0">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10 radio">
|
||||
<label>
|
||||
<input type="radio" name="range" value="yes" {{#if value.range}} checked {{/if}}> Use range match
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10 radio">
|
||||
<div class="row">
|
||||
<div class="col-md-1">
|
||||
<p class="form-control-static">From</p>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<input type="number" class="form-control" name="start" value="{{value.start}}" placeholder="0">
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<p class="form-control-static text-center">to</p>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<input type="number" class="form-control" name="end" value="{{value.end}}" placeholder="0">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/if}}
|
||||
|
||||
{{#if columnTypeDate}}
|
||||
<div class="form-group">
|
||||
<label for="value" class="col-sm-2 control-label">Value</label>
|
||||
<div class="col-sm-10 radio">
|
||||
<label>
|
||||
<input type="radio" name="range" value="" {{#unless value.range}} checked {{/unless}}> Use exact match
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-5">
|
||||
<div class="input-group date fm-date-generic">
|
||||
<input type="text" class="form-control" name="value" placeholder="YYYY-MM-DD" value="{{value.value}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10 radio">
|
||||
<label>
|
||||
<input type="radio" name="range" value="yes" {{#if value.range}} checked {{/if}}> Use range match
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10 radio">
|
||||
<div class="row">
|
||||
<div class="col-md-1">
|
||||
<p class="form-control-static">From</p>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="input-group date fm-date-generic">
|
||||
<input type="text" class="form-control" name="start" placeholder="YYYY-MM-DD" value="{{value.start}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<p class="form-control-static text-center">to</p>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="input-group date fm-date-generic">
|
||||
<input type="text" class="form-control" name="end" placeholder="YYYY-MM-DD" value="{{value.end}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if columnTypeBirthday}}
|
||||
<div class="form-group">
|
||||
<label for="value" class="col-sm-2 control-label">Value</label>
|
||||
<div class="col-sm-10 radio">
|
||||
<label>
|
||||
<input type="radio" name="range" value="" {{#unless isRange}} checked {{/unless}}> Use exact match
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-5">
|
||||
<div class="input-group date fm-birthday-generic">
|
||||
<input type="text" class="form-control" name="value" placeholder="MM-DD" value="{{value.value}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10 radio">
|
||||
<label>
|
||||
<input type="radio" name="range" value="yes" {{#if isRange}} checked {{/if}}> Use range match
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10 radio">
|
||||
<div class="row">
|
||||
<div class="col-md-1">
|
||||
<p class="form-control-static">From</p>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="input-group date fm-birthday-generic">
|
||||
<input type="text" class="form-control" name="start" placeholder="MM-DD" value="{{value.start}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<p class="form-control-static text-center">to</p>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="input-group date fm-birthday-generic">
|
||||
<input type="text" class="form-control" name="end" placeholder="MM-DD" value="{{value.end}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if columnTypeBoolean}}
|
||||
<div class="form-group">
|
||||
<label for="value" class="col-sm-2 control-label">Value</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="value" value="yes" {{#if value.value}} checked {{/if}}> Selected
|
||||
</label>
|
||||
</div>
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="value" value="" {{#unless value.value}} checked {{/unless}}> Not selected
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/if}}
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<div class="pull-right">
|
||||
<button type="submit" form="rule-delete" class="btn btn-danger"><i class="glyphicon glyphicon-remove"></i> Delete Rule</button>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-ok"></i> Update</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
57
views/lists/segments/segments.hbs
Normal file
57
views/lists/segments/segments.hbs
Normal file
|
@ -0,0 +1,57 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
||||
<li class="active">Segments</li>
|
||||
</ol>
|
||||
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-primary" href="/segments/{{list.id}}/create" role="button"><i class="glyphicon glyphicon-plus"></i> Create Segment</a>
|
||||
</div>
|
||||
|
||||
<h2>{{list.name}} <small>Segments</small></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover data-table display nowrap" width="100%" data-row-sort="0,1,1,0">
|
||||
<thead>
|
||||
<th class="col-md-1">
|
||||
#
|
||||
</th>
|
||||
<th>
|
||||
Name
|
||||
</th>
|
||||
<th class="col-md-2">
|
||||
Match
|
||||
</th>
|
||||
<th class="col-md-1">
|
||||
|
||||
</th>
|
||||
</thead>
|
||||
{{#if rows}}
|
||||
<tbody>
|
||||
{{#each rows}}
|
||||
<tr>
|
||||
<th scope="row">
|
||||
{{index}}
|
||||
</th>
|
||||
<td>
|
||||
<span class="glyphicon glyphicon-filter" aria-hidden="true"></span>
|
||||
<a href="/segments/{{../list.id}}/view/{{id}}">{{name}}</a>
|
||||
</td>
|
||||
<td>
|
||||
{{type}}
|
||||
</td>
|
||||
<td>
|
||||
<span class="glyphicon glyphicon-wrench" aria-hidden="true"></span>
|
||||
<a href="/segments/{{../list.id}}/edit/{{id}}">
|
||||
Edit
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
68
views/lists/segments/view.hbs
Normal file
68
views/lists/segments/view.hbs
Normal file
|
@ -0,0 +1,68 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
||||
<li><a href="/segments/{{list.id}}">Segments</a></li>
|
||||
<li class="active">{{name}}</li>
|
||||
</ol>
|
||||
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-primary" href="/segments/{{list.id}}/rules/{{id}}/create" role="button"><i class="glyphicon glyphicon-plus"></i> Create Rule</a>
|
||||
</div>
|
||||
|
||||
<h2>{{list.name}} <small><span class="glyphicon glyphicon-filter" aria-hidden="true"></span> Segment {{name}}</small></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="well well-sm">
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-primary btn-sm" href="/segments/{{list.id}}/edit/{{id}}" role="button"><i class="glyphicon glyphicon-wrench"></i> Edit Segment</a>
|
||||
</div>
|
||||
Match rules: <span class="label label-default">{{type}}</span>
|
||||
<br /> Matching subscribers: <span class="label label-default">{{subscribers}}</span> (
|
||||
<a href="/lists/view/{{list.id}}?segment={{id}}">show</a>)
|
||||
<br />
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover data-table display nowrap" width="100%" data-row-sort="0,1,0,0">
|
||||
<thead>
|
||||
<th class="col-md-1">
|
||||
#
|
||||
</th>
|
||||
<th>
|
||||
Rule
|
||||
</th>
|
||||
<th class="col-md-2">
|
||||
Value
|
||||
</th>
|
||||
<th class="col-md-1">
|
||||
|
||||
</th>
|
||||
</thead>
|
||||
{{#if rules}}
|
||||
<tbody>
|
||||
{{#each rules}}
|
||||
<tr>
|
||||
<th scope="row">
|
||||
{{index}}
|
||||
</th>
|
||||
<td>
|
||||
{{name}}
|
||||
</td>
|
||||
<td>
|
||||
{{formatted}}
|
||||
</td>
|
||||
<td>
|
||||
<span class="glyphicon glyphicon-wrench" aria-hidden="true"></span>
|
||||
<a href="/segments/{{../list.id}}/rules/{{../id}}/edit/{{id}}">
|
||||
Edit
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
122
views/lists/subscription/add.hbs
Normal file
122
views/lists/subscription/add.hbs
Normal file
|
@ -0,0 +1,122 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
||||
<li class="active">Add subscriber</li>
|
||||
</ol>
|
||||
|
||||
<h2>{{list.name}} <small>Add subscriber</small></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/lists/subscription/add">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="list" value="{{list.id}}">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="email" class="col-sm-2 control-label">Email address</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="email" class="form-control input-lg" name="email" id="email" placeholder="" value="{{email}}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="first-name" class="col-sm-2 control-label">First Name</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="first-name" id="first-name" placeholder="" value="{{firstName}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="last-name" class="col-sm-2 control-label">Last Name</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="last-name" id="last-name" placeholder="" value="{{lastName}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#each customFields}}
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{name}}</label>
|
||||
<div class="col-sm-10">
|
||||
{{#if typeText}}
|
||||
<input type="text" class="form-control" name="{{column}}" value="{{value}}">
|
||||
{{/if}}
|
||||
|
||||
{{#if typeNumber}}
|
||||
<input type="number" class="form-control" name="{{column}}" value="{{value}}">
|
||||
{{/if}}
|
||||
|
||||
{{#if typeWebsite}}
|
||||
<input type="url" class="form-control" name="{{column}}" value="{{value}}">
|
||||
{{/if}}
|
||||
|
||||
{{#if typeDateUs}}
|
||||
<div class="input-group date fm-date-us">
|
||||
<input type="text" class="form-control" name="{{column}}" placeholder="MM/DD/YYYY" value="{{value}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if typeDateEur}}
|
||||
<div class="input-group date fm-date-eur">
|
||||
<input type="text" class="form-control" name="{{column}}" placeholder="DD/MM/YYYY" value="{{value}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if typeBirthdayUs}}
|
||||
<div class="input-group date fm-birthday-us">
|
||||
<input type="text" class="form-control" name="{{column}}" placeholder="MM/DD" value="{{value}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if typeBirthdayEur}}
|
||||
<div class="input-group date fm-birthday-eur">
|
||||
<input type="text" class="form-control" name="{{column}}" placeholder="DD/MM" value="{{value}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if typeDropdown}}
|
||||
<select name="{{key}}" class="form-control">
|
||||
<option value="">
|
||||
–– Select ––
|
||||
</option>
|
||||
{{#each options}}
|
||||
<option value="{{column}}" {{#if value}} selected {{/if}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
{{/if}}
|
||||
|
||||
{{#if typeRadio}}
|
||||
{{#each options}}
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="{{../key}}" value="{{column}}" {{#if value}} checked {{/if}}> {{name}}
|
||||
</label>
|
||||
</div>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
|
||||
{{#if typeCheckbox}}
|
||||
{{#each options}}
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="{{column}}" value="1" {{#if value}} checked {{/if}}> {{name}}
|
||||
</label>
|
||||
</div>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<p class="text-warning">
|
||||
This person will not receive a confirmation email so make sure you have a permission to email them
|
||||
</p>
|
||||
|
||||
<button type="submit" class="btn btn-primary">Subscribe</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
138
views/lists/subscription/edit.hbs
Normal file
138
views/lists/subscription/edit.hbs
Normal file
|
@ -0,0 +1,138 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
||||
<li class="active">Edit subscriber</li>
|
||||
</ol>
|
||||
|
||||
<h2>{{list.name}} <small>Edit subscriber</small> <a class="btn btn-default btn-xs" href="/lists/view/{{list.id}}" role="button"><span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span> Back to list</a></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form method="post" class="delete-form" id="subscriber-unsubscribe" action="/lists/subscription/unsubscribe">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="list" value="{{list.id}}">
|
||||
<input type="hidden" name="cid" value="{{cid}}">
|
||||
</form>
|
||||
|
||||
<form method="post" class="delete-form" id="subscriber-delete" action="/lists/subscription/delete">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="list" value="{{list.id}}">
|
||||
<input type="hidden" name="cid" value="{{cid}}">
|
||||
</form>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/lists/subscription/edit">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="list" value="{{list.id}}">
|
||||
<input type="hidden" name="cid" value="{{cid}}">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="email" class="col-sm-2 control-label">Email address</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="email" class="form-control input-lg" name="email" id="email" placeholder="" value="{{email}}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="first-name" class="col-sm-2 control-label">First Name</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="first-name" id="first-name" placeholder="" value="{{firstName}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="last-name" class="col-sm-2 control-label">Last Name</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="last-name" id="last-name" placeholder="" value="{{lastName}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#each customFields}}
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">{{name}}</label>
|
||||
<div class="col-sm-10">
|
||||
{{#if typeText}}
|
||||
<input type="text" class="form-control" name="{{column}}" value="{{value}}">
|
||||
{{/if}}
|
||||
|
||||
{{#if typeNumber}}
|
||||
<input type="number" class="form-control" name="{{column}}" value="{{value}}">
|
||||
{{/if}}
|
||||
|
||||
{{#if typeWebsite}}
|
||||
<input type="url" class="form-control" name="{{column}}" value="{{value}}">
|
||||
{{/if}}
|
||||
|
||||
{{#if typeDateUs}}
|
||||
<div class="input-group date fm-date-us">
|
||||
<input type="text" class="form-control" name="{{column}}" placeholder="MM/DD/YYYY" value="{{value}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if typeDateEur}}
|
||||
<div class="input-group date fm-date-eur">
|
||||
<input type="text" class="form-control" name="{{column}}" placeholder="DD/MM/YYYY" value="{{value}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if typeBirthdayUs}}
|
||||
<div class="input-group date fm-birthday-us">
|
||||
<input type="text" class="form-control" name="{{column}}" placeholder="MM/DD" value="{{value}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if typeBirthdayEur}}
|
||||
<div class="input-group date fm-birthday-eur">
|
||||
<input type="text" class="form-control" name="{{column}}" placeholder="DD/MM" value="{{value}}"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if typeDropdown}}
|
||||
<select name="{{key}}" class="form-control">
|
||||
<option value="">
|
||||
–– Select ––
|
||||
</option>
|
||||
{{#each options}}
|
||||
<option value="{{column}}" {{#if value}} selected {{/if}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
{{/if}}
|
||||
|
||||
{{#if typeRadio}}
|
||||
{{#each options}}
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="{{../key}}" value="{{column}}" {{#if value}} checked {{/if}}> {{name}}
|
||||
</label>
|
||||
</div>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
|
||||
{{#if typeCheckbox}}
|
||||
{{#each options}}
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="{{column}}" value="1" {{#if value}} checked {{/if}}> {{name}}
|
||||
</label>
|
||||
</div>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<div class="pull-right">
|
||||
{{#if isSubscribed}}
|
||||
<button type="submit" form="subscriber-unsubscribe" class="btn btn-default"><i class="glyphicon glyphicon-ban-circle"></i> Unsubscribe</button>
|
||||
{{/if}}
|
||||
<button type="submit" form="subscriber-delete" class="btn btn-danger"><i class="glyphicon glyphicon-remove"></i> Delete Subscription</button>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-ok"></i> Update</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
54
views/lists/subscription/import-preview.hbs
Normal file
54
views/lists/subscription/import-preview.hbs
Normal file
|
@ -0,0 +1,54 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
||||
<li class="active">Import subscribers</li>
|
||||
</ol>
|
||||
|
||||
<h2>{{list.name}} <small>Import subscribers</small></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/lists/subscription/import-confirm">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="list" value="{{list.id}}">
|
||||
<input type="hidden" name="import" value="{{id}}">
|
||||
|
||||
{{#each mapping.columns}}
|
||||
|
||||
<div class="form-group">
|
||||
<label for="column-{{@index}}" class="col-sm-2 control-label">{{this}}</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control" id="column-{{@index}}" name="column-{{@index}}">
|
||||
<option value=""> –– Select –– </option>
|
||||
<option value="email">Email address</option>
|
||||
<option value="first_name">First Name</option>
|
||||
<option value="last_name">Last Name</option>
|
||||
{{#each ../customFields}}
|
||||
{{#if column}}
|
||||
<option value="{{column}}">{{name}}</option>
|
||||
{{else}}
|
||||
<optgroup label="{{name}}">
|
||||
{{#each options}}
|
||||
<option value="{{column}}">{{name}}</option>
|
||||
{{/each}}
|
||||
</optgroup>
|
||||
{{/if}}
|
||||
|
||||
{{/each}}
|
||||
</select>
|
||||
|
||||
<span id="helpBlock" class="help-block">Example: "{{lookup ../mapping.example @index}}"</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/each}}
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<button type="submit" class="btn btn-primary">Start import</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
53
views/lists/subscription/import.hbs
Normal file
53
views/lists/subscription/import.hbs
Normal file
|
@ -0,0 +1,53 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li><a href="/lists/view/{{list.id}}">{{list.name}}</a></li>
|
||||
<li class="active">Import subscribers</li>
|
||||
</ol>
|
||||
|
||||
<h2>{{list.name}} <small>Import subscribers</small></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/lists/subscription/import" enctype="multipart/form-data">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="list" value="{{list.id}}">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="listimport" class="col-sm-2 control-label">CSV File</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="file" class="form-control" name="listimport" id="listimport" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="delimiter" class="col-sm-2 control-label">CSV delimiter</label>
|
||||
<div class="col-sm-1">
|
||||
<input type="text" class="form-control" name="delimiter" id="delimiter" placeholder="" value="{{delimiter}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">Categorize the imported subscribers as:</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="type" id="type" value="subscribed" checked> Subscribed – <span class="text-muted">Regular subscriber addresses</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="type" id="type" value="unsubscribed"> Unsubscribed – <span class="text-muted">Suppressed emails that will be unsubscribed from your list</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> Next</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
188
views/lists/view.hbs
Normal file
188
views/lists/view.hbs
Normal file
|
@ -0,0 +1,188 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/lists/">Lists</a></li>
|
||||
<li class="active">{{name}}</li>
|
||||
</ol>
|
||||
|
||||
<div class="pull-right">
|
||||
|
||||
<a class="btn btn-default" href="/subscription/{{cid}}" target="_blank" role="button"><span class="glyphicon glyphicon-share-alt" aria-hidden="true"></span> Subscription Form</a>
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
List Actions <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="/fields/{{id}}" role="button"><span class="glyphicon glyphicon-tasks" aria-hidden="true"></span> Custom Fields</a></li>
|
||||
<li><a href="/segments/{{id}}" role="button"><span class="glyphicon glyphicon-filter" aria-hidden="true"></span> Segments</a></li>
|
||||
<li><a href="/lists/edit/{{id}}" role="button"><span class="glyphicon glyphicon-wrench" aria-hidden="true"></span> Edit List</a></li>
|
||||
<li role="separator" class="divider"></li>
|
||||
<li><a href="/lists/subscription/{{id}}/add" role="button"><span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span> Add subscriber</a></li>
|
||||
<li><a href="/lists/subscription/{{id}}/import" role="button"><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Import subscribers</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> {{name}}</h2>
|
||||
|
||||
<hr>
|
||||
|
||||
{{#if description}}
|
||||
<div class="well well-sm">{{{description}}}</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="well well-sm">
|
||||
{{#if useSegment}}
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-primary btn-sm" href="/segments/{{id}}/edit/{{segment}}" role="button"><span class="glyphicon glyphicon-wrench" aria-hidden="true"></span> Edit Segment</a>
|
||||
</div>
|
||||
{{/if}}
|
||||
<form class="form-inline" method="get">
|
||||
<div class="form-group">
|
||||
<label for="exampleInputName2">Segment</label>
|
||||
<select name="segment" class="form-control">
|
||||
<option value="0">All subscriptions</option>
|
||||
{{#if segments}}
|
||||
<optgroup label="Segments">
|
||||
{{#each segments}}
|
||||
<option value="{{id}}" {{#if selected}} selected {{/if}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</optgroup>
|
||||
{{/if}}
|
||||
<optgroup label="Actions">
|
||||
<option value="-1">Create new segment…</option>
|
||||
</optgroup>
|
||||
</select>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-filter" aria-hidden="true"></span> Filter</button>
|
||||
</form>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
<!-- Nav tabs -->
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li role="presentation" class="{{#if showSubscriptions}}active{{/if}}"><a href="#subscriptions" aria-controls="subscriptions" role="tab" data-toggle="tab">Subscriptions</a></li>
|
||||
<li role="presentation" class="{{#if showImports}}active{{/if}}"><a href="#imports" aria-controls="imports" role="tab" data-toggle="tab">Imports</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane {{#if showSubscriptions}}active{{/if}}" id="subscriptions">
|
||||
|
||||
<p></p>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table data-list-id="{{id}}" {{#if useSegment}} data-list-args="segment={{useSegment}}" {{/if}} class="table table-bordered table-hover data-table-ajax display nowrap" width="100%" data-row-sort="0,1,1,1{{customSort}},1,0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-md-1">
|
||||
#
|
||||
</th>
|
||||
<th>
|
||||
Address
|
||||
</th>
|
||||
<th>
|
||||
First Name
|
||||
</th>
|
||||
<th>
|
||||
Last Name
|
||||
</th>
|
||||
{{#each customFields}}
|
||||
<th>
|
||||
{{name}}
|
||||
</th>
|
||||
{{/each}}
|
||||
<th>
|
||||
Status
|
||||
</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane {{#if showImports}}active{{/if}}" id="imports">
|
||||
|
||||
<p></p>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<th class="col-md-1">
|
||||
#
|
||||
</th>
|
||||
<th>
|
||||
Created
|
||||
</th>
|
||||
<th>
|
||||
Finished
|
||||
</th>
|
||||
<th>
|
||||
Type
|
||||
</th>
|
||||
<th>
|
||||
Processed
|
||||
</th>
|
||||
<th>
|
||||
Status
|
||||
</th>
|
||||
<th>
|
||||
|
||||
</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#if imports}}
|
||||
{{#each imports}}
|
||||
<tr>
|
||||
<th scope="row">
|
||||
{{index}}
|
||||
</th>
|
||||
|
||||
<td>
|
||||
<span class="datestring" data-date="{{created}}" title="{{created}}">{{created}}</span>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{{#if finished}}
|
||||
<span class="datestring" data-date="{{finished}}" title="{{finished}}">{{finished}}</span>
|
||||
{{else}}
|
||||
No
|
||||
{{/if}}
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{{importType}}
|
||||
</td>
|
||||
<td>
|
||||
{{processed}}
|
||||
</td>
|
||||
<td class="{{#if error}}text-danger{{/if}}">
|
||||
{{#if error}}
|
||||
<strong><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> {{importStatus}}</strong>
|
||||
{{else}}
|
||||
<strong>{{importStatus}}</strong>
|
||||
{{/if}}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<form method="post" class="confirm-submit" data-confirm-message="Are you sure? This action should only be called to resolve stalled imports" action="/lists/subscription/import-restart">
|
||||
<input type="hidden" name="_csrf" value="{{../csrfToken}}">
|
||||
<input type="hidden" name="list" value="{{list}}">
|
||||
<input type="hidden" name="import" value="{{id}}">
|
||||
<button type="submit" class="btn btn-info btn-xs"><span class="glyphicon glyphicon-repeat" aria-hidden="true"></span> Restart</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
{{else}}
|
||||
<tr>
|
||||
<td colspan="7">
|
||||
No data available in table
|
||||
</td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
Loading…
Add table
Add a link
Reference in a new issue