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