<a crm-ui-help="hs({id: 'test', title: ts('Test Email')})"></a>
</div>
<div>
- <select
- name="preview_test_group"
- ui-jq="crmSelect2"
- ui-options="{dropdownAutoWidth : true, allowClear: true, placeholder: ts('Select Group')}"
+ <input
+ crm-entityref="{entity: 'Group', select: {allowClear:true}}"
ng-model="testGroup.gid"
- ng-options="group.id as group.title for group in crmMailingConst.testGroupNames|orderBy:'title'"
class="crm-action-menu fa-envelope-o"
- >
- <option value=""></option>
- </select>
+ />
</div>
<button crm-icon="fa-paper-plane" title="{{crmMailing.$invalid || !testGroup.gid ? ts('Complete all required fields first') : ts('Send test message to group')}}" ng-disabled="crmMailing.$invalid || !testGroup.gid" crm-confirm="{resizable: true, width: '40%', height: '40%', open: previewTestGroup}" on-yes="doSend({gid: testGroup.gid})">{{ts('Send test')}}</button>
</div>
scope.previewTestGroup = function(e) {
var $dialog = $(this);
$dialog.html('<div class="crm-loading-element"></div>').parent().find('button[data-op=yes]').prop('disabled', true);
- $dialog.dialog('option', 'title', ts('Send to %1', {1: _.pluck(_.where(scope.crmMailingConst.testGroupNames, {id: scope.testGroup.gid}), 'title')[0]}));
- CRM.api3('contact', 'get', {
- group: scope.testGroup.gid,
- options: {limit: 0},
- return: 'display_name,email'
- }).done(function(data) {
- var count = 0,
- // Fixme: should this be in a template?
+ CRM.api3('group', 'getsingle', {id: scope.testGroup.gid, return: 'title'}).done(function(group) {
+ $dialog.dialog('option', 'title', ts('Send to %1', {1: group.title}));
+ CRM.api3('contact', 'get', {
+ group: scope.testGroup.gid,
+ options: {limit: 0},
+ return: 'display_name,email'
+ }).done(function(data) {
+ var count = 0,
+ // Fixme: should this be in a template?
markup = '<ol>';
- _.each(data.values, function(row) {
- // Fixme: contact api doesn't seem capable of filtering out contacts with no email, so we're doing it client-side
- if (row.email) {
- count++;
- markup += '<li>' + row.display_name + ' - ' + row.email + '</li>';
+ _.each(data.values, function(row) {
+ // Fixme: contact api doesn't seem capable of filtering out contacts with no email, so we're doing it client-side
+ if (row.email) {
+ count++;
+ markup += '<li>' + row.display_name + ' - ' + row.email + '</li>';
+ }
+ });
+ markup += '</ol>';
+ markup = '<h4>' + ts('A test message will be sent to %1 people:', {1: count}) + '</h4>' + markup;
+ if (!count) {
+ markup = '<div class="messages status"><i class="crm-i fa-exclamation-triangle"></i> ' +
+ (data.count ? ts('None of the contacts in this group have an email address.') : ts('Group is empty.')) +
+ '</div>';
}
+ $dialog
+ .html(markup)
+ .trigger('crmLoad')
+ .parent().find('button[data-op=yes]').prop('disabled', !count);
});
- markup += '</ol>';
- markup = '<h4>' + ts('A test message will be sent to %1 people:', {1: count}) + '</h4>' + markup;
- if (!count) {
- markup = '<div class="messages status"><i class="crm-i fa-exclamation-triangle"></i> ' +
- (data.count ? ts('None of the contacts in this group have an email address.') : ts('Group is empty.')) +
- '</div>';
- }
- $dialog
- .html(markup)
- .trigger('crmLoad')
- .parent().find('button[data-op=yes]').prop('disabled', !count);
});
};
}