source upload
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
<div class="container" style="padding-top: 70px;">
|
||||
<div class="col-md-4 col-sm-4">
|
||||
<div class="form-group">
|
||||
<select class="form-control" ng-model="method">
|
||||
<option value="GET">GET</option>
|
||||
<option value="POST">POST</option>
|
||||
<option value="PUT">PUT</option>
|
||||
<option value="DELETE">DELETE</option>
|
||||
</select>
|
||||
<br>
|
||||
<label for="control-label">Query Params: <button class="btn btn-xs btn-default" ng-click="addParam()"><span class="glyphicon glyphicon-plus"></span></button> <button class="btn btn-xs btn-default" ng-click="toggleRawBody()">{{rawBodyBtn}}</button> </label>
|
||||
|
||||
<table class="table table-fixed" ng-show="!useRawBody">
|
||||
<tbody>
|
||||
<tr ng-repeat="p in params">
|
||||
<td><input type="text" class="form-control input-sm" ng-model="p.name" placeholder="Name"></td>
|
||||
<td><input type="text" class="form-control input-sm" ng-model="p.value" placeholder="Value"></td>
|
||||
<td style="width: 30px;"><button class="btn btn-default" ng-click="delParam($index)"><span class="glyphicon glyphicon-trash"></span></button></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<textarea class="form-control" ng-show="useRawBody" ng-model="rawBody"></textarea>
|
||||
|
||||
<hr>
|
||||
<label for="control-label">Headers: <button class="btn btn-xs btn-default" ng-click="addHeader()"><span class="glyphicon glyphicon-plus"></span></button></label>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label">Content-Type: </label>
|
||||
<select ng-model="contentType">
|
||||
<option value=""></option>
|
||||
<option value="application/json">application/json</option>
|
||||
<option value="application/x-www-form-urlencoded">application/x-www-form-urlencoded</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<table class="table table-fixed">
|
||||
<tbody>
|
||||
<tr ng-repeat="h in headers">
|
||||
<td><input type="text" class="form-control input-sm" ng-model="h.name" placeholder="Name"></td>
|
||||
<td><input type="text" class="form-control input-sm" ng-model="h.value" placeholder="Value"></td>
|
||||
<td style="width: 30px;"><button class="btn btn-default" ng-click="delHeader($index)"><span class="glyphicon glyphicon-trash"></span></button></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8 col-sm-8">
|
||||
<div class="row">
|
||||
<div class="col-md-9 col-sm-9">
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" placeholder="URI" ng-model="uri">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 col-sm-3">
|
||||
<button class="btn btn-primary" ng-click="sendRequest()">Send Request</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<label class="control-label">Response</label>
|
||||
|
||||
<textarea ng-model="response" class="form-control" style="width: 100%; height: 300px;"></textarea>
|
||||
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,21 @@
|
||||
<div ng-controller="ContactsCtrl" class="contacts-view">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 hide-xs-only" style="text-align: center;" >Please select group from the menu.</div>
|
||||
<!--- mobile menu -->
|
||||
<ul class="contacts-group-menu show-xs-only">
|
||||
<li>
|
||||
<h5>My Databases</h5>
|
||||
<ul class="nav">
|
||||
<li ng-class="{'active': g.ID == gid}" ng-repeat="g in groups.db"><a href="#/workplaces/{{wpid}}/contacts/{{g.placement}}/{{g.ID}}">{{g.GroupName}}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<h5>My Groups</h5>
|
||||
<ul class="nav">
|
||||
<li ng-class="{'active': g.ID == gid}" ng-repeat="g in groups.local"><a href="#/workplaces/{{wpid}}/contacts/{{g.placement}}/{{g.ID}}">{{g.GroupName}}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<!--- /mobile menu -->
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,14 @@
|
||||
<ul class="nav">
|
||||
<li class="open">
|
||||
<a href="#">My Databases</a>
|
||||
<ul class="nav">
|
||||
<li ng-class="{'active': g.ID == gid}" ng-repeat="g in groups.db"><a href="#/workplaces/{{wpid}}/contacts/{{g.placement}}/{{g.ID}}">{{g.GroupName}}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="open">
|
||||
<a href="#">My Groups</a>
|
||||
<ul class="nav">
|
||||
<li ng-class="{'active': g.ID == gid}" ng-repeat="g in groups.local"><a href="#/workplaces/{{wpid}}/contacts/{{g.placement}}/{{g.ID}}">{{g.GroupName}}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
@@ -0,0 +1,32 @@
|
||||
<div ng-controller="ContactsCtrl" class="contacts-view">
|
||||
<div class="row split-view">
|
||||
<div class="col-sm-6" ng-if="contacts" id="contacts-list">
|
||||
<div infinite-scroll='contacts.nextPage()' infinite-scroll-disabled='contacts.busy' infinite-scroll-distance='20' infinite-scroll-box="contacts-list">
|
||||
<div class="contact" ng-repeat="c in contacts.items" ng-class="{'unsubscribed': !c.Subscribed}">
|
||||
<span class="name">{{c.First_Name}} {{c.Last_Name}} {{c.Recipient_Name}}</span>
|
||||
<span class="email"><{{c.Email}}></span>
|
||||
<span class="subscribed-date">{{c.Subscribe_Date | date:'MM/dd/yyyy @ h:mm a'}}</span>
|
||||
<span ng-show="!c.Subscribed" class="label label-default unsubscribed">unsubscrubed</span>
|
||||
<span ng-show="c.Fields" class="fields">
|
||||
<table>
|
||||
<tr ng-repeat="(key, val) in c.Fields">
|
||||
<td>{{key}}</td>
|
||||
<td>{{val}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 exclusion-list-pane" id="exclusion-list-container" ng-class="{'show': showExclusionList}">
|
||||
<div class="title">
|
||||
<h4>Exclusion list</h4>
|
||||
</div>
|
||||
<div id="exclusion-list">
|
||||
<ul ng-if="contactsExcList" class="list-unstyled" infinite-scroll='contactsExcList.nextPage()' infinite-scroll-disabled='contactsExcList.busy' infinite-scroll-distance='20' infinite-scroll-box="exclusion-list">
|
||||
<li ng-repeat="e in contactsExcList.items">{{e.Email}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,22 @@
|
||||
<ul class="nav gs-sidenav">
|
||||
<li ng-class="{'active': section == 'templates'}">
|
||||
<a href="#/workplaces/{{workplace.ID}}/templates">Templates</a>
|
||||
<ul class="nav">
|
||||
<li ng-class="{'active': sub == catId}" ng-repeat="(catId, cat) in templateCats"><a href="#/workplaces/{{workplace.ID}}/templates/folder/{{catId}}"><span class="glyphicon glyphicon-folder-close"></span> {{cat}}</a></li>
|
||||
|
||||
<li ng-class="{'active': sub == 'trash'}" sub="trash"><a href="#/workplaces/{{workplace.ID}}/templates/trash"><span class="glyphicon glyphicon-trash"></span> Trash</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li ng-class="{'active': section == 'drafts'}">
|
||||
<a href="#/workplaces/{{workplace.ID}}/drafts">Drafts</a>
|
||||
<ul class="nav">
|
||||
<li ng-class="{'active': subSection == 'trash'}"><a href="#/workplaces/{{workplace.ID}}/drafts/trash"><span class="glyphicon glyphicon-trash"></span> Trash</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li ng-class="{'active': section == 'outbox'}">
|
||||
<a href="#/workplaces/{{workplace.ID}}/outbox">Outbox</a>
|
||||
<ul class="nav">
|
||||
<li ng-class="{'active': subSection == 'trash'}"><a href="#/workplaces/{{workplace.ID}}/outbox/trash"><span class="glyphicon glyphicon-trash"></span> Trash</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
@@ -0,0 +1,30 @@
|
||||
<div ng-controller="DraftsCtrl">
|
||||
<div class="row split-view">
|
||||
<div class="col-md-6 col-sm-6" id="messages-list-wrap">
|
||||
<ul class="messages-list" infinite-scroll='drafts.nextPage()' infinite-scroll-disabled='drafts.busy' infinite-scroll-distance='1' infinite-scroll-box="messages-list-wrap">
|
||||
<li ng-repeat="drf in drafts.items" ng-click="drfClick(drf)" ng-class="{'active': drf.ID == drafts.activeItem}">
|
||||
<table>
|
||||
<tr>
|
||||
<td><span class="message-subject">{{drf.Subject}}</span></td>
|
||||
<td><span class="message-date">{{drf.ModTime | date:'MM/dd/yyyy @ h:mm a'}}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td ng-repeat="g in drf.GroupList">
|
||||
<span class="message-template">{{g.GroupName}}</span>
|
||||
</td>
|
||||
<td ng-repeat="a in drf.AccountList">
|
||||
<span class="message-group">{{a.AccountName}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<span class="message-links" ng-if="subSection !== 'trash'"><a href="#/workplaces/{{workplace.ID}}/drafts/{{drf.ID}}/edit">Edit Message</a> | <a href="#" ng-click="drfDelete($event, drf)">Delete</a></span>
|
||||
|
||||
<span class="message-links" ng-if="subSection == 'trash'"><a ng-click="drfRestore($event, drf)">Restore</a> | <a class="text-danger" href="#" ng-click="drfDelete($event, drf)">Delete</a></span>
|
||||
</li>
|
||||
<li class="message-list-info" ng-show="drafts.busy">Loading data...</li>
|
||||
<li class="message-list-info" ng-show="!drafts.items.length && drafts.noMoreData">No drafts here yet</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-6 col-sm-6" ng-class="{ 'show': showPreview }" id="preview-container"></div>
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,71 @@
|
||||
<div class="container">
|
||||
<div class="row split-view editor">
|
||||
|
||||
<div class="col-md-9 col-sm-9">
|
||||
<form class="form-horizontal" role="form">
|
||||
<div class="form-group">
|
||||
<label for="subject" class="col-xs-2 control-label">Subject:</label>
|
||||
<div class="col-xs-10">
|
||||
<input type="text" class="form-control" ng-model="item.Subject" id="subject" placeholder="Subject">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="editor-wrap">
|
||||
<textarea class="col" id="editor" data-ck-source="item" data-ck-editor></textarea>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-md-3 col-sm-3">
|
||||
<form class="form-horizontal" role="form">
|
||||
<button ng-click="sendNow()" class="btn btn-primary btn-md btn-margin">Send Now</button>
|
||||
<button class="btn btn-default btn-md btn-margin" ng-click="save()">Save</button>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="account" class="col-xs-1 control-label">From:</label>
|
||||
<div class="col-xs-11">
|
||||
<!-- <select name="from" id="from" class="form-control" ng-model="account">
|
||||
<option value="">Select Account</option>
|
||||
<option ng-selected="account == acc.ID" ng-repeat="acc in accounts" value="{{acc.ID}}">{{acc.AccountName}}</option>
|
||||
</select>
|
||||
-->
|
||||
<gt-select gt-model="account" options="acc.ID as acc.AccountName for acc in accounts"></gt-select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="to" class="col-xs-1 control-label">To:</label>
|
||||
<div class="col-xs-11">
|
||||
<gt-select multiple="true" gt-model="to" options="g.ID as g.GroupName for g in groups group by g.type" plural="groups"></gt-select>
|
||||
</div>
|
||||
</div>
|
||||
<label>
|
||||
<input type="checkbox" ng-model="enableTracking"> Track recipients' actions
|
||||
</label>
|
||||
<input ng-disabled="!enableTracking" type="text" class="form-control" placeholder="Campaign Name" ng-model="item.TrackName">
|
||||
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input ng-disabled="!enableTracking" type="radio" ng-model="item.TrackMethod" name="analytics" id="analytics-google" value="1" checked>
|
||||
Google analytics
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input ng-disabled="!enableTracking" type="radio" ng-model="item.TrackMethod" name="analytics" id="analytics-piwik" value="2" checked>
|
||||
Piwik
|
||||
</label>
|
||||
</div>
|
||||
<hr>
|
||||
<label>Attachments <button ng-click="addCommonAtt()" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-plus"></span></button> </label>
|
||||
<ul class="list-unstyled em-file-list">
|
||||
<li ng-repeat="itm in item.AttachList"><i class="glyphicon glyphicon-file"></i><span>{{itm}}</span><span class="em-btn-remove"><i class="glyphicon glyphicon-trash" ng-click="removeAttachment(itm)"></i></span></li>
|
||||
</ul>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,40 @@
|
||||
<div class="container">
|
||||
<div class="row split-view editor">
|
||||
|
||||
<div class="col-md-9 col-sm-9">
|
||||
<form class="form-horizontal" role="form">
|
||||
<div class="form-group">
|
||||
<label for="subject" class="col-xs-2 control-label">Subject:</label>
|
||||
<div class="col-xs-10">
|
||||
<input type="text" class="form-control" ng-model="item.Subject" id="subject" placeholder="Subject">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="editor-wrap">
|
||||
<textarea class="col" id="editor" data-ck-source="item" data-ck-editor></textarea>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-md-3 col-sm-3">
|
||||
<form class="form-horizontal" role="form">
|
||||
<button class="btn btn-primary btn-md" ng-click="save()">Save</button>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="to" class="col-xs-1 control-label">To:</label>
|
||||
<div class="col-xs-11">
|
||||
<gt-select multiple="true" gt-model="to" options="g.ID as g.GroupName for g in groups group by g.type" plural="groups"></gt-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label>Attachments <button ng-click="addCommonAtt()" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-plus"></span></button> </label>
|
||||
<ul class="list-unstyled em-file-list">
|
||||
<li ng-repeat="itm in item.AttachList"><i class="glyphicon glyphicon-file"></i> {{itm}} <span class="em-btn-remove"><i class="glyphicon glyphicon-trash"></i></span></li>
|
||||
</ul>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,83 @@
|
||||
<div class="container">
|
||||
<div class="row split-view editor">
|
||||
|
||||
<div class="col-md-9 col-sm-9">
|
||||
<form class="form-horizontal" role="form">
|
||||
<div class="form-group">
|
||||
<label for="subject" class="col-xs-2 control-label">Subject:</label>
|
||||
<div class="col-xs-10">
|
||||
<input type="text" class="form-control" ng-model="item.Subject" id="subject" placeholder="Subject">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="editor-wrap">
|
||||
<textarea class="col" id="editor" data-ck-source="item" data-ck-editor></textarea>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-md-3 col-sm-3">
|
||||
<form class="form-horizontal" role="form">
|
||||
|
||||
<div ng-if="itemType=='template'">
|
||||
<button class="btn btn-primary btn-md" ng-click="save()">Save</button>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="to" class="col-xs-1 control-label">To:</label>
|
||||
<div class="col-xs-11">
|
||||
<gt-select multiple="true" gt-model="$parent.to" options="g.ID as g.GroupName for g in groups group by g.type" plural="groups"></gt-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div ng-if="itemType=='draft'">
|
||||
<button ng-click="sendNow()" class="btn btn-primary btn-md btn-margin">Send Now</button>
|
||||
<button class="btn btn-default btn-md btn-margin" ng-click="save()">Save</button>
|
||||
</div>
|
||||
|
||||
<div ng-if="itemType=='draft'">
|
||||
<div class="form-group">
|
||||
<label for="account" class="col-xs-1 control-label">From:</label>
|
||||
<div class="col-xs-11">
|
||||
<select name="from" id="from" class="form-control">
|
||||
<option value="">Select Account</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="to" class="col-xs-1 control-label">To:</label>
|
||||
<div class="col-xs-11">
|
||||
<select class="form-control" id="to">
|
||||
<option value="">Select Group</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<label>
|
||||
<input type="checkbox"> Track recipients' actions
|
||||
</label>
|
||||
<input type="text" class="form-control" placeholder="Campaign Name">
|
||||
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="analytics" id="analytics-google" value="google" checked>
|
||||
Google analytics
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="analytics" id="analytics-piwik" value="piwik" checked>
|
||||
Piwik
|
||||
</label>
|
||||
</div>
|
||||
<hr>
|
||||
<a href="#" ng-click="addAttachment()">Add Attachment</a>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,11 @@
|
||||
<div ng-class="{ 'show': $parent.showPreview }" id="preview-container" ng-show="!log"></div>
|
||||
<div id="sentlog" ng-show="log">
|
||||
<ul class="list-unstyled" infinite-scroll="log.nextPage()" infinite-scroll-disabled="log.busy" infinite-scroll-distance="1" infinite-scroll-box="sentlog">
|
||||
<li title="{{itm.StatusText}}" ng-repeat="itm in log.items" class="sentlog-item" ng-class="{ 'sentlog-item-success': itm.Status === 1, 'sentlog-item-temperror': itm.Status === 2, 'sentlog-item-error': itm.Status === 3}">
|
||||
<div class="sentlog-item-groupname">{{itm.GroupName}}<span class="sentlog-item-date">{{itm.SendDate | date:'MM/dd/yyyy @ h:mm a'}}</span></div>
|
||||
<div class="sentlog-item-recipient">{{itm.RecipientName}} <{{itm.Email}}></div>
|
||||
<div class="sentlog-item-response"><span>{{itm.LastResponse}}</span></div>
|
||||
</li>
|
||||
<li class="message-list-info" ng-show="log.busy">Loading data...</li>
|
||||
</ul>
|
||||
</div>
|
@@ -0,0 +1,46 @@
|
||||
<div class="dropdown gt-dropdown">
|
||||
<button class="btn btn-default gtms-dropdown-toggle form-control" type="button">
|
||||
<span>{{buttonTitle}}</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="gt-dropdown dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
|
||||
<li ng-if="multiple" role="presentation">
|
||||
<a ng-click="aCheckAllClick($event)">
|
||||
<input type="checkbox" ng-model="$parent.allChecked" ng-click="iClick($event)"> {{ allChecked ? 'Uncheck All' : 'Check All' }}
|
||||
</a>
|
||||
</li>
|
||||
<li ng-if="multiple" role="presentation" class="divider"></li>
|
||||
|
||||
<!-- multiple mode -->
|
||||
|
||||
<li ng-if="multiple && groupedItems" role="presentation" class="dropdown-header" ng-repeat-start="(optGroup, opts) in groupedItems">{{optGroup}}</li>
|
||||
<li ng-if="multiple && groupedItems" role="presentation" ng-repeat-end ng-repeat="itm in opts">
|
||||
<a role="menuitem" tabindex="-1" ng-click="aClick($event, itm)">
|
||||
<input value="{{itm.value}}" ng-model="itm.checked" type="checkbox" name="{{inpName}}" ng-click="iClick($event)"> {{itm.label}}</a>
|
||||
</li>
|
||||
|
||||
<li ng-if="multiple && items" role="presentation" ng-repeat="itm in items">
|
||||
<a role="menuitem" tabindex="-1" ng-click="aClick($event, itm)">
|
||||
<input value="{{itm.value}}" ng-model="itm.checked" type="checkbox" name="{{inpName}}" ng-click="iClick($event)"> {{itm.label}}</a>
|
||||
</li>
|
||||
|
||||
<!-- single -->
|
||||
|
||||
<li ng-if="!multiple">
|
||||
<a role="menuitem" tabindex="-1" ng-click="raNullClick($event)">
|
||||
<input value="" ng-model="$parent.singleResult" type="radio"> {{defaultButtonTitle}}</a>
|
||||
</li>
|
||||
|
||||
<li ng-if="!multiple && groupedItems" role="presentation" class="dropdown-header" ng-repeat-start="(optGroup, opts) in groupedItems">{{optGroup}}</li>
|
||||
<li ng-if="!multiple && groupedItems" ng-repeat-end ng-repeat="itm in opts">
|
||||
<a role="menuitem" tabindex="-1" ng-click="raClick($event, itm)">
|
||||
<input value="{{itm.value}}" ng-model="$parent.$parent.singleResult" ng-click="raInpClick($event)" type="radio"> {{itm.label}}</a>
|
||||
</li>
|
||||
|
||||
<li ng-if="!multiple && items" role="presentation" ng-repeat="itm in items">
|
||||
<a role="menuitem" tabindex="-1" ng-click="raClick($event, itm)">
|
||||
<input value="{{itm.value}}" ng-model="$parent.$parent.singleResult" ng-click="raInpClick($event)" type="radio"> {{itm.label}}</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
@@ -0,0 +1,46 @@
|
||||
<div class="dropdown gt-select">
|
||||
<button class="btn btn-default gtms-dropdown-toggle form-control" type="button">
|
||||
<span>{{buttonTitle}}</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="gt-select dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
|
||||
<li ng-if="multiple" role="presentation">
|
||||
<a ng-click="aCheckAllClick($event)">
|
||||
<input type="checkbox" ng-model="$parent.allChecked" ng-click="iClick($event)"> {{ allChecked ? 'Uncheck All' : 'Check All' }}
|
||||
</a>
|
||||
</li>
|
||||
<li ng-if="multiple" role="presentation" class="divider"></li>
|
||||
|
||||
<!-- multiple mode -->
|
||||
|
||||
<li ng-if="multiple && groupedItems" role="presentation" class="dropdown-header" ng-repeat-start="(optGroup, opts) in groupedItems">{{optGroup}}</li>
|
||||
<li ng-if="multiple && groupedItems" role="presentation" ng-repeat-end ng-repeat="itm in opts">
|
||||
<a role="menuitem" tabindex="-1" ng-click="aClick($event, itm)">
|
||||
<input value="{{itm.value}}" ng-model="itm.checked" type="checkbox" name="{{inpName}}" ng-click="iClick($event)"> {{itm.label}}</a>
|
||||
</li>
|
||||
|
||||
<li ng-if="multiple && items" role="presentation" ng-repeat="itm in items">
|
||||
<a role="menuitem" tabindex="-1" ng-click="aClick($event, itm)">
|
||||
<input value="{{itm.value}}" ng-model="itm.checked" type="checkbox" name="{{inpName}}" ng-click="iClick($event)"> {{itm.label}}</a>
|
||||
</li>
|
||||
|
||||
<!-- single -->
|
||||
|
||||
<li ng-if="!multiple">
|
||||
<a role="menuitem" tabindex="-1" ng-click="raNullClick($event)">
|
||||
<input value="" ng-model="$parent.singleResult" type="radio"> {{defaultButtonTitle}}</a>
|
||||
</li>
|
||||
|
||||
<li ng-if="!multiple && groupedItems" role="presentation" class="dropdown-header" ng-repeat-start="(optGroup, opts) in groupedItems">{{optGroup}}</li>
|
||||
<li ng-if="!multiple && groupedItems" ng-repeat-end ng-repeat="itm in opts">
|
||||
<a role="menuitem" tabindex="-1" ng-click="raClick($event, itm)">
|
||||
<input value="{{itm.value}}" ng-model="$parent.$parent.singleResult" ng-click="raInpClick($event)" type="radio"> {{itm.label}}</a>
|
||||
</li>
|
||||
|
||||
<li ng-if="!multiple && items" role="presentation" ng-repeat="itm in items">
|
||||
<a role="menuitem" tabindex="-1" ng-click="raClick($event, itm)">
|
||||
<input value="{{itm.value}}" ng-model="$parent.$parent.singleResult" ng-click="raInpClick($event)" type="radio"> {{itm.label}}</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
@@ -0,0 +1,34 @@
|
||||
<div class="container" ng-controller="LoginCtrl">
|
||||
|
||||
<form class="form-signin">
|
||||
<h2 class="form-signin-heading">G-Lock EasyMail 7</h2>
|
||||
|
||||
<div ng-show="selectServer">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" placeholder="localhost" ng-model="conn.host">
|
||||
<div class="input-group-btn">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" tabindex="-1">
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu pull-right" role="menu">
|
||||
<li ng-repeat="h in savedHosts"><a ng-click="loadHost($index)"><strong>{{h.email}}</strong> @ {{h.host}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="hr">
|
||||
</div>
|
||||
|
||||
<input type="text" class="form-control top-el" placeholder="Username" value="" autofocus ng-model="conn.email">
|
||||
<input type="password" class="form-control bottom-el" placeholder="Password" value="" ng-model="conn.password">
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" ng-model="remember"> Remember me
|
||||
</label>
|
||||
<div ng-show="error" class="alert alert-dismissable">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
||||
<strong>Error!</strong> {{error}}
|
||||
</div>
|
||||
<button class="btn btn-md btn-primary btn-block" type="button" ng-click="signIn()">Sign in</button>
|
||||
</form>
|
||||
|
||||
</div>
|
@@ -0,0 +1,30 @@
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" ng-click="close()" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Select a File to Upload</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<table class="em-table-fixed em-table-upload">
|
||||
<tbody>
|
||||
<tr ng-repeat="f in files">
|
||||
<td>{{f.fileName}}</td>
|
||||
<td>
|
||||
<div class="progress progress-striped" ng-class="{'em-progress-bar-fallback': (!f.progressEnabled && f.status == 'uploading'), 'em-progress-bar-fallback-done': (!f.progressEnabled && f.status == 'done'), 'active': (f.progressEnabled && f.status == 'uploading') }">
|
||||
<div class="progress-bar" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="width: {{f.uploadedPct}}%">
|
||||
<span class="sr-only">{{f.uploadedPct}}% Complete</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>{{f.status}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="file-upload-dropzone">
|
||||
Drop Files here or <div grf-upload-button="1" class="btn btn-default" id="choose-files">Click to Add</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" ng-click="close()">Done</button>
|
||||
</div>
|
@@ -0,0 +1,18 @@
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" ng-click="toggleSelect()" ng-disabled="disabled" ng-class="{'error': !valid()}">
|
||||
{{header}} <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li>
|
||||
<input class="form-control input-sm" type="text" ng-model="searchText.label" autofocus="autofocus" placeholder="Filter" />
|
||||
</li>
|
||||
<li ng-show="multiple" role="presentation" class="">
|
||||
<button class="btn btn-link btn-xs" ng-click="checkAll()" type="button"><i class="glyphicon glyphicon-ok"></i> Check all</button>
|
||||
<button class="btn btn-link btn-xs" ng-click="uncheckAll()" type="button"><i class="glyphicon glyphicon-remove"></i> Uncheck all</button>
|
||||
</li>
|
||||
<li ng-repeat="i in items | filter:searchText">
|
||||
<a ng-click="select(i); focus()">
|
||||
<i class='glyphicon' ng-class="{'glyphicon-ok': i.checked, 'empty': !i.checked}"></i> {{i.label}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
@@ -0,0 +1,29 @@
|
||||
<div ng-controller="EmailsCtrl">
|
||||
<div class="row split-view">
|
||||
<div class="col-sm-6" id="messages-list-wrap">
|
||||
<ul class="messages-list" infinite-scroll='emails.nextPage()' infinite-scroll-disabled='emails.busy' infinite-scroll-distance='1' infinite-scroll-box="messages-list-wrap">
|
||||
<li ng-repeat="eml in emails.items" ng-click="emlClick(eml)" eml-id="{{eml.ID}}" ng-class="{'active': eml.ID == emails.activeItem}">
|
||||
<table>
|
||||
<tr>
|
||||
<td><span class="message-subject">{{eml.Subject}}</span></td>
|
||||
<td><span class="message-date">{{eml.CreateTime | date:'MM/dd/yyyy @ h:mm a'}}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span ng-repeat="g in eml.resGroupList" class="message-template">{{g.GroupName}}</span>
|
||||
</td>
|
||||
<td ng-repeat="a in eml.resAccountList">
|
||||
<span class="message-group">{{a.AccountName}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<span class="message-links"><a href="#/workplaces/{{wpid}}/outbox/{{eml.ID}}/log" em-nobubble>{{eml.StatusMessage}}</a> | <a href="#" class="text-danger" ng-click="emDelete(eml)" em-nobubble>Delete</a></span>
|
||||
<span class="message-links pull-right"><a href="#/workplaces/{{wpid}}/outbox/{{eml.ID}}/processed" em-nobubble>Processed: {{eml.Processed}}</a> | <a href="#/workplaces/{{wpid}}/outbox/{{eml.ID}}/sent" em-nobubble>Sent: {{eml.Sent}}</a> | <a href="#/workplaces/{{wpid}}/outbox/{{eml.ID}}/failed" em-nobubble>Failed: {{eml.Failed}}</a></span>
|
||||
</li>
|
||||
<li class="message-list-info" ng-show="emails.busy">Loading data...</li>
|
||||
<li class="message-list-info" ng-show="!emails.items.length && emails.noMoreData">No emails here yet</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-sm-6" id="item-details" ui-view="itemdetails"></div>
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,8 @@
|
||||
<div class="container">
|
||||
<div id="contentsidebar" class="col-sm-2 gl-sidebar hide-xs-only" ui-view="contentsidebar">
|
||||
|
||||
</div>
|
||||
<div id="contentmain" class="col-xs-12 col-sm-10" ui-view="contentmain">
|
||||
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,29 @@
|
||||
<div ng-controller="TemplatesCtrl">
|
||||
<div class="row split-view">
|
||||
<div class="col-md-6 col-sm-6" id="messages-list-wrap">
|
||||
<ul class="messages-list" infinite-scroll='templates.nextPage()' infinite-scroll-disabled='templates.busy' infinite-scroll-distance='1' infinite-scroll-box="messages-list-wrap">
|
||||
<li ng-repeat="tpl in templates.items" ng-click="tplClick(tpl)" ng-class="{'active': tpl.ID == templates.activeItem}">
|
||||
<table>
|
||||
<tr>
|
||||
<td><span class="message-subject">{{tpl.Subject}}</span></td>
|
||||
<td><span class="message-date">{{tpl.ModTime | date:'MM/dd/yyyy @ h:mm a'}}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td ng-repeat="g in tpl.GroupList">
|
||||
<span class="message-template">{{g.GroupName}}</span>
|
||||
</td>
|
||||
<td ng-repeat="a in tpl.AccountList">
|
||||
<span class="message-group">{{a.AccountName}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<span class="message-links" ng-if="sub !== 'trash'"><a href="#/workplaces/{{workplace.ID}}/templates/{{tpl.ID}}/edit" em-nobubble>Edit Template</a> | <a ng-click="tplCreateMsg($event, tpl)">Create New Message</a> | <a class="text-danger" ng-click="tplDelete($event, tpl)">Delete</a></span>
|
||||
<span class="message-links" ng-if="sub == 'trash'"><a ng-click="tplRestore($event, tpl)">Restore</a> | <a class="text-danger" ng-click="tplDelete($event, tpl)">Delete</a></span>
|
||||
</li>
|
||||
<li class="message-list-info" ng-show="templates.busy">Loading data...</li>
|
||||
<li class="message-list-info" ng-show="!templates.items.length && templates.noMoreData">No templates here yet</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-6 col-sm-6" ng-class="{ 'show': showPreview }" id="preview-container"></div>
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,19 @@
|
||||
<div class="container" ng-controller="TopToolbarCtrl">
|
||||
<div class="top-toolbar row">
|
||||
<div class="col-md-2 col-sm-2 col-sm-2">
|
||||
<div class="btn-group btn-page-main">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||||
Console <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#/wp/1/console">Console</a></li>
|
||||
<li><a href="#/workplaces/{{workplace.ID}}/outbox">Emails</a></li>
|
||||
<li><a href="#/workplaces/{{workplace.ID}}/contacts">Contacts</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-10 col-sm-10 col-sm-10">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="toolbar-hr">
|
@@ -0,0 +1,40 @@
|
||||
<div class="container top-toolbar" ng-controller="TopToolbarCtrl">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="btn-group btn-page-main">
|
||||
<button type="button" class="btn btn-default gt-dropdown-toggle" data-toggle="dropdown">
|
||||
{{section | capitalize}} <span ng-if="subSection" class="show-xs-only-inline dvdr">{{subSection}}</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu contacts-mobile-menu-top" role="menu">
|
||||
<li>
|
||||
<a href="#/workplaces/{{workplace.ID}}/outbox">Emails</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#/workplaces/{{workplace.ID}}/contacts">Contacts</a>
|
||||
<!--- mobile menu -->
|
||||
<ul class="nav show-xs-only">
|
||||
<li>
|
||||
<a href="#">My Databases</a>
|
||||
<ul class="nav">
|
||||
<li ng-class="{'active': g.ID == gid}" ng-repeat="g in groups.db"><a href="#/workplaces/{{wpid}}/contacts/{{g.placement}}/{{g.ID}}">{{g.GroupName}}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">My Groups</a>
|
||||
<ul class="nav">
|
||||
<li ng-class="{'active': g.ID == gid}" ng-repeat="g in groups.local"><a href="#/workplaces/{{wpid}}/contacts/{{g.placement}}/{{g.ID}}">{{g.GroupName}}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<!--- /mobile menu -->
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="toolbar-separator"></div>
|
||||
<!-- <button id="gl-btn-compose" type="button" class="hide-xs-only-inline btn btn-success btn-sm" ng-click="compose()">Compose</button> -->
|
||||
<!-- <button ng-class="{'active': showExclusionList}" class="hide-xs-only-inline btn btn-default" ng-click="toggleExclusionList()">Show Exclusion List</button> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="toolbar-hr">
|
@@ -0,0 +1,20 @@
|
||||
<div class="container" ng-controller="TopToolbarCtrl">
|
||||
<div class="top-toolbar">
|
||||
<div class="row">
|
||||
<div class="col-md-9 col-sm-9">
|
||||
<h4>
|
||||
<ol class="breadcrumb" ng-show="itemParams">
|
||||
<li><a href="#/workplaces/{{workplace.ID}}/{{itemParams.root}}">{{itemParams.root | capitalize}}</a></li>
|
||||
<li ng-show="itemParams.folder"><a href="#/workplaces/{{workplace.ID}}/{{itemParams.root}}/{{itemParams.folder}}">{{itemParams.folder}}</a></li>
|
||||
<li class="active">{{itemParams.item.Subject}}</li>
|
||||
</ol>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="col-md-3 col-sm-3">
|
||||
<alert ng-repeat="alert in alerts" type="alert.type" close="closeAlert($index)">{{alert.msg}}</alert>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr class="toolbar-hr">
|
@@ -0,0 +1,46 @@
|
||||
<div class="container top-toolbar" ng-controller="TopToolbarCtrl">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="btn-group btn-page-main">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||||
{{uiSection}} <span class="show-xs-only-inline dvdr" > {{section | capitalize}} <span ng-if="subSection" class="dvdr">{{subSection}}</span></span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li>
|
||||
<a href="#/workplaces/{{workplace.ID}}/outbox">Emails</a>
|
||||
<!--- mobile menu -->
|
||||
<ul class="nav show-xs-only" role="menu">
|
||||
<li>
|
||||
<a href="#/workplaces/{{workplace.ID}}/templates">Templates</a>
|
||||
<ul class="nav">
|
||||
<li ng-repeat="(catId, cat) in templateCats"><a href="#/workplaces/{{workplace.ID}}/templates/folder/{{catId}}"><span class="glyphicon glyphicon-folder-close"></span> {{cat}}</a></li>
|
||||
<li sub="trash"><a href="#/workplaces/{{workplace.ID}}/templates/trash"><span class="glyphicon glyphicon-trash"></span> Trash</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<a href="#/workplaces/{{workplace.ID}}/drafts">Drafts</a>
|
||||
<ul class="nav">
|
||||
<li><a href="#/workplaces/{{workplace.ID}}/drafts/trash"><span class="glyphicon glyphicon-trash"></span> Trash</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<a href="#/workplaces/{{workplace.ID}}/outbox">Outbox</a>
|
||||
<ul class="nav">
|
||||
<li><a href="#/workplaces/{{workplace.ID}}/outbox/trash"><span class="glyphicon glyphicon-trash"></span> Trash</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<!--- /mobile menu -->
|
||||
</li>
|
||||
<li><a href="#/workplaces/{{workplace.ID}}/contacts">Contacts</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="toolbar-separator"></div>
|
||||
<button id="gl-btn-compose" type="button" class="hide-xs-only-inline btn btn-success btn-sm" ng-click="compose()">Compose</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="toolbar-hr">
|
@@ -0,0 +1,49 @@
|
||||
<div class="container top-toolbar" ng-controller="TopToolbarCtrl">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="btn-group btn-page-main">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||||
{{uiSection}} <span class="show-xs-only-inline dvdr" > {{section | capitalize}} <span ng-if="subSection" class="dvdr">{{subSection}}</span></span> <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li>
|
||||
<a href="#/workplaces/{{workplace.ID}}/outbox">Emails</a>
|
||||
<!--- mobile menu -->
|
||||
<ul class="nav show-xs-only" role="menu">
|
||||
<li>
|
||||
<a href="#/workplaces/{{workplace.ID}}/templates">Templates</a>
|
||||
<ul class="nav">
|
||||
<li ng-repeat="(catId, cat) in templateCats"><a href="#/workplaces/{{workplace.ID}}/templates/folder/{{catId}}"><span class="glyphicon glyphicon-folder-close"></span> {{cat}}</a></li>
|
||||
<li sub="trash"><a href="#/workplaces/{{workplace.ID}}/templates/trash"><span class="glyphicon glyphicon-trash"></span> Trash</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<a href="#/workplaces/{{workplace.ID}}/drafts">Drafts</a>
|
||||
<ul class="nav">
|
||||
<li><a href="#/workplaces/{{workplace.ID}}/drafts/trash"><span class="glyphicon glyphicon-trash"></span> Trash</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<a href="#/workplaces/{{workplace.ID}}/outbox">Outbox</a>
|
||||
<ul class="nav">
|
||||
<li><a href="#/workplaces/{{workplace.ID}}/outbox/trash"><span class="glyphicon glyphicon-trash"></span> Trash</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<!--- /mobile menu -->
|
||||
</li>
|
||||
<li><a href="#/workplaces/{{workplace.ID}}/contacts">Contacts</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="toolbar-separator"></div>
|
||||
<button id="gl-btn-compose" type="button" class="hide-xs-only-inline btn btn-success btn-sm" ng-click="compose()">Compose</button>
|
||||
<div class="hide-xxs-only-inline">
|
||||
<button ng-show="emlCanBeSent" type="button" ng-click="startSending()" class="btn btn-primary" ng-click="startSending">Start sending</button>
|
||||
<button ng-show="emlCanBeStopped" ng-click="stopSending()" type="button" class="btn btn-default">Stop</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="toolbar-hr">
|
@@ -0,0 +1,21 @@
|
||||
<div class="container">
|
||||
|
||||
<h3 style="margin-top: 80px;">Select workplace</h3>
|
||||
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Workplace name</th>
|
||||
<th>Description</th>
|
||||
<th>Created</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="wp in workplaces">
|
||||
<td><a href="#/workplaces/{{wp.ID}}/outbox">{{wp.WPName}}</a></td>
|
||||
<td>{{wp.Description}}</td>
|
||||
<td>{{wp.Created}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
@@ -0,0 +1,7 @@
|
||||
<div id="sub-head" ui-view="topbar">
|
||||
</div>
|
||||
|
||||
<div id="main" class="content-view" ui-view="content">
|
||||
|
||||
|
||||
</div>
|
Reference in New Issue
Block a user