Commit | Line | Data |
---|---|---|
22bc3e48 | 1 | <!-- |
3ad2ea69 TO |
2 | Implicit Controller: CrmMailingABEditCtrl |
3 | ||
22bc3e48 TO |
4 | An ABTest includes two mailings, but we don't require the user to enter two complete mailings. For |
5 | simplicity, the email composition UI generally displays A (unless we specifically decided to expose an | |
6 | individual field from B). At the end of the composition process, the controller's "sync" operation will | |
7 | merge shared settings from "A" into "B". | |
8 | --> | |
3ad2ea69 TO |
9 | <div ng-form="crmMailingABEdit"> |
10 | <div class="crm-block crm-form-block crmMailing"> | |
af6962d8 | 11 | <div crm-ui-wizard> |
3f0da451 | 12 | <div crm-ui-wizard-step="10" crm-title="ts('Setup')" ng-form="setupForm"> |
1d4d0279 TO |
13 | <div |
14 | crm-mailing-ab-block-setup="{ | |
15 | help: 1, | |
16 | abName: 1, | |
17 | campaign: 1, | |
18 | testing_criteria: 1 | |
19 | }" | |
20 | crm-abtest="abtest"></div> | |
21 | </div> | |
3f0da451 | 22 | <div crm-ui-wizard-step="11" crm-title="ts('Target')" ng-form="targetForm"> |
1d4d0279 TO |
23 | <div |
24 | crm-mailing-ab-block-setup="{ | |
25 | recipients: 1, | |
26 | group_percentage: 1 | |
27 | }" | |
28 | crm-abtest="abtest"></div> | |
70980d8e | 29 | </div> |
05aaa6ae | 30 | <div crm-ui-wizard-step="20" crm-title="ts('Compose')" ng-if="abtest.ab.testing_criteria != 'full_email'" ng-form="composeForm"> |
22bc3e48 TO |
31 | <div crm-ui-tab-set> |
32 | <div crm-ui-tab id="tab-mailing" crm-title="ts('Mailing')"> | |
33 | <div | |
05aaa6ae | 34 | ng-if="abtest.ab.testing_criteria == 'from'" |
22bc3e48 TO |
35 | crm-mailing-ab-block-mailing="{ |
36 | msg_template_id: 1, | |
37 | fromAddressA: 1, | |
38 | fromAddressB: 1, | |
22bc3e48 TO |
39 | subject: 1 |
40 | }" | |
41 | crm-abtest="abtest"></div> | |
42 | <div | |
05aaa6ae | 43 | ng-if="abtest.ab.testing_criteria == 'subject'" |
22bc3e48 TO |
44 | crm-mailing-ab-block-mailing="{ |
45 | msg_template_id: 1, | |
46 | fromAddress: 1, | |
47 | replyTo: 1, | |
48 | subjectA: 1, | |
49 | subjectB: 1 | |
50 | }" | |
51 | crm-abtest="abtest"></div> | |
2e08c6c5 TO |
52 | <div crm-ui-accordion="{title: ts('HTML')}"> |
53 | <div crm-mailing-body-html crm-mailing="abtest.mailings.a"></div> | |
22bc3e48 | 54 | </div> |
207819ec | 55 | <div crm-ui-accordion="{title: ts('Plain Text'), collapsed: !abtest.mailings.a.body_text}"> |
2e08c6c5 | 56 | <div crm-mailing-body-text crm-mailing="abtest.mailings.a"></div> |
22bc3e48 TO |
57 | </div> |
58 | </div> | |
1535c8f3 TO |
59 | <!-- |
60 | FIXME: Attachment UI works, but we haven't implemented backend logic for copying/sharing | |
61 | of attachments among mailings A/B/C. | |
22bc3e48 | 62 | <div crm-ui-tab id="tab-attachment" crm-title="ts('Attachments')"> |
2e08c6c5 | 63 | <div crm-attachments="abtest.attachments.a"></div> |
22bc3e48 | 64 | </div> |
1535c8f3 | 65 | --> |
ff433220 | 66 | <div crm-ui-tab id="tab-header" crm-title="ts('Header and Footer')" ng-if="mailingFields.header_id.options.length > 0 || mailingFields.footer_id.options.length > 0"> |
2e08c6c5 | 67 | <div crm-mailing-block-header-footer crm-mailing="abtest.mailings.a"></div> |
22bc3e48 TO |
68 | </div> |
69 | <div crm-ui-tab id="tab-pub" crm-title="ts('Publication')"> | |
2e08c6c5 | 70 | <div crm-mailing-block-publication crm-mailing="abtest.mailings.a"></div> |
22bc3e48 TO |
71 | </div> |
72 | <div crm-ui-tab id="tab-response" crm-title="ts('Responses')"> | |
2e08c6c5 | 73 | <div crm-mailing-block-responses crm-mailing="abtest.mailings.a"></div> |
22bc3e48 TO |
74 | </div> |
75 | </div> | |
2e08c6c5 TO |
76 | <div crm-ui-accordion="{title: ts('Preview (A)')}"> |
77 | <div crm-mailing-block-preview crm-mailing="abtest.mailings.a" on-preview="previewMailing('a', preview.mode)" on-send="sendTest('a', preview.recipient)"></div> | |
af6962d8 | 78 | </div> |
2e08c6c5 TO |
79 | <div crm-ui-accordion="{title: ts('Preview (B)')}"> |
80 | <div crm-mailing-block-preview crm-mailing="abtest.mailings.b" on-preview="previewMailing('b', preview.mode)" on-send="sendTest('b', preview.recipient)"></div> | |
af6962d8 | 81 | </div> |
70980d8e | 82 | </div> |
05aaa6ae | 83 | <div crm-ui-wizard-step="21" crm-title="ts('Compose (A)')" ng-if="abtest.ab.testing_criteria == 'full_email'" ng-form="composeAForm"> |
9758a72e TO |
84 | <div crm-ui-tab-set> |
85 | <div crm-ui-tab id="tab-mailingA" crm-title="ts('Mailing')"> | |
86 | <div | |
87 | crm-mailing-ab-block-mailing="{ | |
88 | msg_template_idA: 1, | |
89 | fromAddressA: 1, | |
90 | replyToA: 1, | |
91 | subjectA: 1 | |
92 | }" | |
93 | crm-abtest="abtest"></div> | |
2e08c6c5 TO |
94 | <div crm-ui-accordion="{title: ts('HTML')}"> |
95 | <div crm-mailing-body-html crm-mailing="abtest.mailings.a"></div> | |
9758a72e | 96 | </div> |
207819ec | 97 | <div crm-ui-accordion="{title: ts('Plain Text'), collapsed: !abtest.mailings.a.body_text}"> |
2e08c6c5 | 98 | <div crm-mailing-body-text crm-mailing="abtest.mailings.a"></div> |
9758a72e TO |
99 | </div> |
100 | </div> | |
101 | <div crm-ui-tab id="tab-attachmentA" crm-title="ts('Attachments')"> | |
2e08c6c5 | 102 | <div crm-attachments="abtest.attachments.a"></div> |
9758a72e | 103 | </div> |
ff433220 | 104 | <div crm-ui-tab id="tab-headerA" crm-title="ts('Header and Footer')" ng-if="mailingFields.header_id.options.length > 0 || mailingFields.footer_id.options.length > 0"> |
2e08c6c5 | 105 | <div crm-mailing-block-header-footer crm-mailing="abtest.mailings.a"></div> |
9758a72e TO |
106 | </div> |
107 | <div crm-ui-tab id="tab-pubA" crm-title="ts('Publication')"> | |
2e08c6c5 | 108 | <div crm-mailing-block-publication crm-mailing="abtest.mailings.a"></div> |
9758a72e TO |
109 | </div> |
110 | <div crm-ui-tab id="tab-responseA" crm-title="ts('Responses')"> | |
2e08c6c5 | 111 | <div crm-mailing-block-responses crm-mailing="abtest.mailings.a"></div> |
9758a72e TO |
112 | </div> |
113 | </div> | |
2e08c6c5 TO |
114 | <div crm-ui-accordion="{title: ts('Preview')}"> |
115 | <div crm-mailing-block-preview crm-mailing="abtest.mailings.a" on-preview="previewMailing('a', preview.mode)" on-send="sendTest('a', preview.recipient)"></div> | |
9758a72e | 116 | </div> |
22bc3e48 | 117 | </div> |
05aaa6ae | 118 | <div crm-ui-wizard-step="22" crm-title="ts('Compose (B)')" ng-if="abtest.ab.testing_criteria == 'full_email'" ng-form="composeBForm"> |
9758a72e TO |
119 | <div crm-ui-tab-set> |
120 | <div crm-ui-tab id="tab-mailingB" crm-title="ts('Mailing')"> | |
121 | <div | |
122 | crm-mailing-ab-block-mailing="{ | |
123 | msg_template_idB: 1, | |
124 | fromAddressB: 1, | |
125 | replyToB: 1, | |
126 | subjectB: 1 | |
127 | }" | |
128 | crm-abtest="abtest"></div> | |
2e08c6c5 TO |
129 | <div crm-ui-accordion="{title: ts('HTML')}"> |
130 | <div crm-mailing-body-html crm-mailing="abtest.mailings.b"></div> | |
9758a72e | 131 | </div> |
207819ec | 132 | <div crm-ui-accordion="{title: ts('Plain Text'), collapsed: !abtest.mailings.b.body_text}"> |
2e08c6c5 | 133 | <div crm-mailing-body-text crm-mailing="abtest.mailings.b"></div> |
9758a72e TO |
134 | </div> |
135 | </div> | |
136 | <div crm-ui-tab id="tab-attachmentB" crm-title="ts('Attachments')"> | |
2e08c6c5 | 137 | <div crm-attachments="abtest.attachments.b"></div> |
9758a72e | 138 | </div> |
ff433220 | 139 | <div crm-ui-tab id="tab-headerB" crm-title="ts('Header and Footer')" ng-if="mailingFields.header_id.options.length > 0 || mailingFields.footer_id.options.length > 0"> |
2e08c6c5 | 140 | <div crm-mailing-block-header-footer crm-mailing="abtest.mailings.b"></div> |
9758a72e TO |
141 | </div> |
142 | <div crm-ui-tab id="tab-pubB" crm-title="ts('Publication')"> | |
2e08c6c5 | 143 | <div crm-mailing-block-publication crm-mailing="abtest.mailings.b"></div> |
9758a72e TO |
144 | </div> |
145 | <div crm-ui-tab id="tab-responseB" crm-title="ts('Responses')"> | |
2e08c6c5 | 146 | <div crm-mailing-block-responses crm-mailing="abtest.mailings.b"></div> |
9758a72e TO |
147 | </div> |
148 | </div> | |
2e08c6c5 TO |
149 | <div crm-ui-accordion="{title: ts('Preview')}"> |
150 | <div crm-mailing-block-preview crm-mailing="abtest.mailings.b" on-preview="previewMailing('b', preview.mode)" on-send="sendTest('b', preview.recipient)"></div> | |
9758a72e | 151 | </div> |
22bc3e48 | 152 | </div> |
3f0da451 | 153 | <div crm-ui-wizard-step="30" crm-title="ts('Schedule')" ng-form="schedForm"> |
bba4d38a TO |
154 | <div |
155 | crm-mailing-ab-block-setup="{ | |
156 | scheduled_date: 1, | |
157 | declare_winning_time: 1 | |
158 | }" | |
159 | crm-abtest="abtest"></div> | |
160 | <center> | |
1ba2060f | 161 | <a class="button crmMailing-submit-button" crm-icon="fa-paper-plane" ng-click="submit()" ng-class="{blocking: block.check(), disabled: crmMailingAB.$invalid}">{{:: ts('Submit Mailing') }}</a> |
bba4d38a | 162 | </center> |
1d4d0279 | 163 | </div> |
22bc3e48 TO |
164 | <span crm-ui-wizard-buttons style="float:right;"> |
165 | <button | |
77ec5a8d | 166 | crm-icon="fa-trash" |
0fc156d9 | 167 | ng-show="checkPerm('delete in CiviMail')" |
a12bd71d | 168 | ng-disabled="block.check()" |
3e5e512f | 169 | crm-confirm="{title:ts('Delete Draft'), message:ts('Are you sure you want to permanently delete this mailing?')}" |
f9c5f498 | 170 | on-yes="delete()">{{:: ts('Delete Draft') }} |
22bc3e48 | 171 | </button> |
f9c5f498 | 172 | <button crm-icon="fa-floppy-o" ng-disabled="block.check()" ng-click="save().then(leave) ">{{:: ts('Save Draft') }}</button> |
22bc3e48 | 173 | </span> |
af6962d8 | 174 | </div> |
7cded6f5 | 175 | </div> |
3ad2ea69 | 176 | </div> |