Added initial support for trigger based automation
This commit is contained in:
parent
cc1c70d57f
commit
b16209f23e
36 changed files with 2025 additions and 263 deletions
33
views/triggers/create-select.hbs
Normal file
33
views/triggers/create-select.hbs
Normal file
|
@ -0,0 +1,33 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/triggers/">Automation Triggers</a></li>
|
||||
<li class="active">Create Trigger</li>
|
||||
</ol>
|
||||
|
||||
<h2>Create Trigger <small>Select a list for the trigger</small></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/triggers/create-select">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="group" class="col-sm-2 control-label">List</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control" name="list" required>
|
||||
<option value=""> –– Select ––</option>
|
||||
{{#each listItems}}
|
||||
<option value="{{id}}">
|
||||
{{name}} <span class="text-muted"> — {{subscribers}} subscribers</span>
|
||||
</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"><i class="glyphicon glyphicon-triangle-right"></i> Next</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
162
views/triggers/create.hbs
Normal file
162
views/triggers/create.hbs
Normal file
|
@ -0,0 +1,162 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/triggers/">Automation Triggers</a></li>
|
||||
<li class="active">Create Trigger</li>
|
||||
</ol>
|
||||
|
||||
<h2>Create Trigger</h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/triggers/create">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="list" value="{{list.id}}">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="trigger-name" class="col-sm-2 control-label">Trigger name</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control input-lg" name="name" id="trigger-name" value="{{name}}" placeholder="Name for this trigger, eg. "Inactive subscribers"" required autofocus>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="trigger-description" class="col-sm-2 control-label">Description</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="form-control" id="trigger-description" name="description" rows="3" placeholder="Optional comments about this trigger">{{description}}</textarea>
|
||||
<span class="help-block">HTML is allowed</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">List</label>
|
||||
<div class="col-sm-10">
|
||||
<p class="form-control-static"><a href="/lists/view/{{list.id}}">{{list.name}}</a> <span class="text-muted"> – {{list.subscribers}} subscribers</span></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<fieldset>
|
||||
<legend>
|
||||
Trigger rule
|
||||
</legend>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="trigger-days" class="col-sm-2 control-label">Trigger fires</label>
|
||||
<div class="col-sm-1">
|
||||
<input type="number" class="form-control" name="days" id="trigger-days" value="{{days}}" placeholder="1" required>
|
||||
</div>
|
||||
<div class="col-sm-1">
|
||||
<p class="form-control-static">days after:</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-offset-2 panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="rule" value="subscription" {{#if isSubscription}} checked {{/if}}> Subscription
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="column" class="col-sm-2 control-label">Event</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="column" class="form-control">
|
||||
<option value="">
|
||||
–– Select ––
|
||||
</option>
|
||||
{{#each columns}}
|
||||
<option value="{{column}}" {{#if selected}} selected {{/if}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-offset-2 panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="rule" value="campaign" {{#if isCampaign}} checked {{/if}}> Campaign
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="source-campaign" class="col-sm-2 control-label">Campaign</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="source-campaign" class="form-control">
|
||||
<option value="">
|
||||
–– Select ––
|
||||
</option>
|
||||
{{#each sourceCampaigns}}
|
||||
<option value="{{id}}" {{#if selected}} selected {{/if}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="campaign-option" class="col-sm-2 control-label">Event</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="campaign-option" id="campaign-option" class="form-control">
|
||||
<option value="">
|
||||
–– Select ––
|
||||
</option>
|
||||
{{#each campaignOptions}}
|
||||
<option value="{{option}}" {{#if selected}} selected {{/if}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>
|
||||
Trigger action
|
||||
</legend>
|
||||
|
||||
<div class="col-sm-offset-2 panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="action" value="send" {{#if isSend}} checked {{/if}}> Send campaign
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="dest-campaign" class="col-sm-2 control-label">Campaign</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="dest-campaign" class="form-control" required>
|
||||
<option value="">
|
||||
–– Select ––
|
||||
</option>
|
||||
{{#each destCampaigns}}
|
||||
<option value="{{id}}" {{#if selected}} selected {{/if}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<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 Trigger</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
177
views/triggers/edit.hbs
Normal file
177
views/triggers/edit.hbs
Normal file
|
@ -0,0 +1,177 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/triggers/">Automation Triggers</a></li>
|
||||
<li class="active">Edit Trigger</li>
|
||||
</ol>
|
||||
|
||||
<h2>Edit Trigger <a class="btn btn-default btn-xs" href="/triggers/" role="button"><span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span> Back to triggers</a></h2>
|
||||
|
||||
<hr>
|
||||
|
||||
<form method="post" class="delete-form" id="triggers-delete" action="/triggers/delete">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="id" value="{{id}}" />
|
||||
</form>
|
||||
|
||||
<form class="form-horizontal" method="post" action="/triggers/edit">
|
||||
<input type="hidden" name="_csrf" value="{{csrfToken}}">
|
||||
<input type="hidden" name="id" value="{{id}}" />
|
||||
|
||||
<div class="form-group">
|
||||
<label for="trigger-name" class="col-sm-2 control-label">Trigger name</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control input-lg" name="name" id="trigger-name" value="{{name}}" placeholder="Name for this trigger, eg. "Inactive subscribers"" required autofocus>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="trigger-description" class="col-sm-2 control-label">Description</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="form-control" id="trigger-description" name="description" rows="3" placeholder="Optional comments about this trigger">{{description}}</textarea>
|
||||
<span class="help-block">HTML is allowed</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-offset-2">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="enabled" value="1" {{#if enabled}} checked {{/if}}> Trigger is enabled
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">List</label>
|
||||
<div class="col-sm-10">
|
||||
<p class="form-control-static"><a href="/lists/view/{{list.id}}">{{list.name}}</a> <span class="text-muted"> – {{list.subscribers}} subscribers</span></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<fieldset>
|
||||
<legend>
|
||||
Trigger rule
|
||||
</legend>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="trigger-days" class="col-sm-2 control-label">Trigger fires</label>
|
||||
<div class="col-sm-1">
|
||||
<input type="number" class="form-control" name="days" id="trigger-days" value="{{days}}" placeholder="1" required>
|
||||
</div>
|
||||
<div class="col-sm-1">
|
||||
<p class="form-control-static">days after:</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-offset-2 panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="rule" value="subscription" {{#if isSubscription}} checked {{/if}}> Subscription
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="column" class="col-sm-2 control-label">Event</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="column" class="form-control">
|
||||
<option value="">
|
||||
–– Select ––
|
||||
</option>
|
||||
{{#each columns}}
|
||||
<option value="{{column}}" {{#if selected}} selected {{/if}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-offset-2 panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="rule" value="campaign" {{#if isCampaign}} checked {{/if}}> Campaign
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="source-campaign" class="col-sm-2 control-label">Campaign</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="source-campaign" class="form-control">
|
||||
<option value="">
|
||||
–– Select ––
|
||||
</option>
|
||||
{{#each sourceCampaigns}}
|
||||
<option value="{{id}}" {{#if selected}} selected {{/if}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="campaign-option" class="col-sm-2 control-label">Event</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="campaign-option" id="campaign-option" class="form-control">
|
||||
<option value="">
|
||||
–– Select ––
|
||||
</option>
|
||||
{{#each campaignOptions}}
|
||||
<option value="{{option}}" {{#if selected}} selected {{/if}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>
|
||||
Trigger action
|
||||
</legend>
|
||||
|
||||
<div class="col-sm-offset-2 panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="action" value="send" {{#if isSend}} checked {{/if}}> Send campaign
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="dest-campaign" class="col-sm-2 control-label">Campaign</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="dest-campaign" class="form-control" required>
|
||||
<option value="">
|
||||
–– Select ––
|
||||
</option>
|
||||
{{#each destCampaigns}}
|
||||
<option value="{{id}}" {{#if selected}} selected {{/if}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<div class="pull-right">
|
||||
<button type="submit" form="triggers-delete" class="btn btn-danger"><i class="glyphicon glyphicon-remove"></i> Delete Trigger</button>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-ok"></i> Update</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
83
views/triggers/triggers.hbs
Normal file
83
views/triggers/triggers.hbs
Normal file
|
@ -0,0 +1,83 @@
|
|||
<ol class="breadcrumb">
|
||||
<li><a href="/">Home</a></li>
|
||||
<li class="active">Automation Triggers</li>
|
||||
</ol>
|
||||
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-primary" href="/triggers/create-select" role="button"><i class="glyphicon glyphicon-plus"></i> Create Trigger</a>
|
||||
</div>
|
||||
|
||||
<h2>Automation Triggers</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,1,0,1,0">
|
||||
<thead>
|
||||
<th class="col-md-1">
|
||||
#
|
||||
</th>
|
||||
<th>
|
||||
Name
|
||||
</th>
|
||||
<th>
|
||||
Status
|
||||
</th>
|
||||
<th>
|
||||
Description
|
||||
</th>
|
||||
<th>
|
||||
List
|
||||
</th>
|
||||
<th>
|
||||
Trigger
|
||||
</th>
|
||||
<th>
|
||||
Target Campaign
|
||||
</th>
|
||||
<th class="col-md-1">
|
||||
|
||||
</th>
|
||||
</thead>
|
||||
{{#if rows}}
|
||||
<tbody>
|
||||
|
||||
{{#each rows}}
|
||||
<tr>
|
||||
<th scope="row">
|
||||
{{index}}
|
||||
</th>
|
||||
<td>
|
||||
<span class="glyphicon glyphicon-console" aria-hidden="true"></span> {{name}}
|
||||
</td>
|
||||
<td>
|
||||
{{#if enabled}}
|
||||
<span class="label label-success">Enabled</span>
|
||||
{{else}}
|
||||
<span class="label label-default">Disabled</span>
|
||||
{{/if}}
|
||||
</td>
|
||||
<td class="text-muted">
|
||||
{{description}}
|
||||
</td>
|
||||
<td class="text-info">
|
||||
<a href="/lists/view/{{list}}">{{listName}}</a>
|
||||
</td>
|
||||
<td class="text-info">
|
||||
{{{formatted}}}
|
||||
</td>
|
||||
<td class="text-info">
|
||||
<a href="/campaigns/view/{{destCampaign}}">{{destCampaignName}}</a>
|
||||
</td>
|
||||
<td>
|
||||
<span class="glyphicon glyphicon-wrench" aria-hidden="true"></span>
|
||||
<a href="/triggers/edit/{{id}}">
|
||||
Edit
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
Loading…
Add table
Add a link
Reference in a new issue