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> | |
207819ec | 52 | <div crm-ui-accordion="{title: ts('HTML')}" > |
22bc3e48 TO |
53 | <div crm-mailing-body-html crm-mailing="abtest.mailings.a"/> |
54 | </div> | |
207819ec | 55 | <div crm-ui-accordion="{title: ts('Plain Text'), collapsed: !abtest.mailings.a.body_text}"> |
22bc3e48 TO |
56 | <div crm-mailing-body-text crm-mailing="abtest.mailings.a"/> |
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')"> |
bcdd7f49 | 63 | <div crm-attachments="abtest.attachments.a"/> |
22bc3e48 | 64 | </div> |
1535c8f3 | 65 | --> |
22bc3e48 TO |
66 | <div crm-ui-tab id="tab-header" crm-title="ts('Header and Footer')"> |
67 | <div crm-mailing-block-header-footer crm-mailing="abtest.mailings.a"/> | |
68 | </div> | |
69 | <div crm-ui-tab id="tab-pub" crm-title="ts('Publication')"> | |
70 | <div crm-mailing-block-publication crm-mailing="abtest.mailings.a"/> | |
71 | </div> | |
72 | <div crm-ui-tab id="tab-response" crm-title="ts('Responses')"> | |
73 | <div crm-mailing-block-responses crm-mailing="abtest.mailings.a"/> | |
74 | </div> | |
75 | </div> | |
207819ec | 76 | <div crm-ui-accordion="{title: ts('Preview (A)')}" > |
58dfba8d | 77 | <div crm-mailing-block-preview crm-mailing="abtest.mailings.a" on-preview="previewMailing('a', preview.mode)" on-send="sendTest('a', preview.recipient)" /> |
af6962d8 | 78 | </div> |
207819ec | 79 | <div crm-ui-accordion="{title: ts('Preview (B)')}" > |
58dfba8d | 80 | <div crm-mailing-block-preview crm-mailing="abtest.mailings.b" on-preview="previewMailing('b', preview.mode)" on-send="sendTest('b', preview.recipient)" /> |
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> | |
207819ec | 94 | <div crm-ui-accordion="{title: ts('HTML')}" > |
9758a72e TO |
95 | <div crm-mailing-body-html crm-mailing="abtest.mailings.a"/> |
96 | </div> | |
207819ec | 97 | <div crm-ui-accordion="{title: ts('Plain Text'), collapsed: !abtest.mailings.a.body_text}"> |
9758a72e TO |
98 | <div crm-mailing-body-text crm-mailing="abtest.mailings.a"/> |
99 | </div> | |
100 | </div> | |
101 | <div crm-ui-tab id="tab-attachmentA" crm-title="ts('Attachments')"> | |
102 | <div crm-attachments="abtest.attachments.a"/> | |
103 | </div> | |
104 | <div crm-ui-tab id="tab-headerA" crm-title="ts('Header and Footer')"> | |
105 | <div crm-mailing-block-header-footer crm-mailing="abtest.mailings.a"/> | |
106 | </div> | |
107 | <div crm-ui-tab id="tab-pubA" crm-title="ts('Publication')"> | |
108 | <div crm-mailing-block-publication crm-mailing="abtest.mailings.a"/> | |
109 | </div> | |
110 | <div crm-ui-tab id="tab-responseA" crm-title="ts('Responses')"> | |
111 | <div crm-mailing-block-responses crm-mailing="abtest.mailings.a"/> | |
112 | </div> | |
113 | </div> | |
207819ec | 114 | <div crm-ui-accordion="{title: ts('Preview')}" > |
58dfba8d | 115 | <div crm-mailing-block-preview crm-mailing="abtest.mailings.a" on-preview="previewMailing('a', preview.mode)" on-send="sendTest('a', preview.recipient)" /> |
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> | |
207819ec | 129 | <div crm-ui-accordion="{title: ts('HTML')}" > |
9758a72e TO |
130 | <div crm-mailing-body-html crm-mailing="abtest.mailings.b"/> |
131 | </div> | |
207819ec | 132 | <div crm-ui-accordion="{title: ts('Plain Text'), collapsed: !abtest.mailings.b.body_text}"> |
9758a72e TO |
133 | <div crm-mailing-body-text crm-mailing="abtest.mailings.b"/> |
134 | </div> | |
135 | </div> | |
136 | <div crm-ui-tab id="tab-attachmentB" crm-title="ts('Attachments')"> | |
137 | <div crm-attachments="abtest.attachments.b"/> | |
138 | </div> | |
139 | <div crm-ui-tab id="tab-headerB" crm-title="ts('Header and Footer')"> | |
140 | <div crm-mailing-block-header-footer crm-mailing="abtest.mailings.b"/> | |
141 | </div> | |
142 | <div crm-ui-tab id="tab-pubB" crm-title="ts('Publication')"> | |
143 | <div crm-mailing-block-publication crm-mailing="abtest.mailings.b"/> | |
144 | </div> | |
145 | <div crm-ui-tab id="tab-responseB" crm-title="ts('Responses')"> | |
146 | <div crm-mailing-block-responses crm-mailing="abtest.mailings.b"/> | |
147 | </div> | |
148 | </div> | |
207819ec | 149 | <div crm-ui-accordion="{title: ts('Preview')}" > |
58dfba8d | 150 | <div crm-mailing-block-preview crm-mailing="abtest.mailings.b" on-preview="previewMailing('b', preview.mode)" on-send="sendTest('b', preview.recipient)" /> |
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> | |
49fa981f | 161 | <a class="button crmMailing-submit-button" ng-click="submit()" ng-class="{blocking: block.check(), disabled: crmMailingAB.$invalid}"> |
bba4d38a TO |
162 | <div>{{ts('Submit Mailing')}}</div> |
163 | </a> | |
164 | </center> | |
1d4d0279 | 165 | </div> |
22bc3e48 TO |
166 | <span crm-ui-wizard-buttons style="float:right;"> |
167 | <button | |
77ec5a8d | 168 | crm-icon="fa-trash" |
0fc156d9 | 169 | ng-show="checkPerm('delete in CiviMail')" |
a12bd71d | 170 | ng-disabled="block.check()" |
3e5e512f | 171 | crm-confirm="{title:ts('Delete Draft'), message:ts('Are you sure you want to permanently delete this mailing?')}" |
b0797ac3 | 172 | on-yes="delete()">{{ts('Delete Draft')}} |
22bc3e48 | 173 | </button> |
77ec5a8d | 174 | <button crm-icon="fa-floppy-o" ng-disabled="block.check()" ng-click="save().then(leave) ">{{ts('Save Draft')}}</button> |
22bc3e48 | 175 | </span> |
af6962d8 | 176 | </div> |
3ad2ea69 | 177 | </div> |