PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / trunk
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress vtrunk
11.1.1 11.1.0 11.0.5 11.0.4 11.0.3 11.0.2 11.0.1 11.0.0 10.11.1 10.11.0 10.10.2 10.10.1 10.10.0 10.9.1 trunk 10.0.0 10.0.1 10.1.0 10.1.1 10.1.2 10.1.3 10.1.4 10.2.0 10.2.1 10.2.2 All 62 releases
acymailing / back / Views / Campaigns / tmpl / listing_listing.php

listing_listing.php in AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress trunk, at back/Views/Campaigns/tmpl/listing_listing.php

408 lines 22.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound -- View file, its variables are local to the include scope, not true globals.
3 defined('ABSPATH') || die('Restricted Access');
4 ?><?php if (empty($data['allCampaigns'])) { ?>
5 <h1 class="cell acym__listing__empty__search__title text-center"><?php echo esc_html(acym_translation('ACYM_NO_RESULTS_FOUND')); ?></h1>
6 <?php } else { ?>
7 <div class="cell margin-bottom-1 acym__listing__actions grid-x">
8 <?php
9 $actions = [
10 'duplicate' => acym_translation('ACYM_DUPLICATE'),
11 'delete' => acym_translation('ACYM_DELETE'),
12 ];
13 acym_listingActions($actions);
14 ?>
15 </div>
16 <div class="cell grid-x">
17 <div class="grid-x acym__listing__actions cell auto">
18 <?php
19 if ($data['campaign_type'] === 'campaigns_auto') {
20 $options = [
21 '' => ['ACYM_AUTOMATICS_CAMPAIGNS', $data['allStatusFilter']->all],
22 'generated' => [
23 'ACYM_GENERATED',
24 $data['allStatusFilter']->generated,
25 $data['generatedPending'] ? 'pending' : '',
26 ],
27 ];
28 } else {
29 $options = [
30 '' => ['ACYM_ALL', $data['allStatusFilter']->all],
31 'scheduled' => ['ACYM_SCHEDULED', $data['allStatusFilter']->scheduled],
32 'sent' => ['ACYM_SENT', $data['allStatusFilter']->sent],
33 'draft' => ['ACYM_DRAFT', $data['allStatusFilter']->draft],
34 ];
35 }
36 if (isset($data['campaign_type'])) {
37 acym_filterStatus($options, $data['status'], $data['campaign_type'].'_status');
38 }
39 ?>
40 </div>
41 <div class="grid-x cell auto">
42 <div class="cell acym_listing_sort-by">
43 <?php acym_sortBy(
44 [
45 'id' => acym_strtolower(acym_translation('ACYM_ID')),
46 'name' => acym_translation('ACYM_NAME'),
47 'sending_date' => acym_translation('ACYM_SENDING_DATE'),
48 'creation_date' => acym_translation('ACYM_DATE_CREATED'),
49 'draft' => acym_translation('ACYM_DRAFT'),
50 'active' => acym_translation('ACYM_ACTIVE'),
51 'sent' => acym_translation('ACYM_SENT'),
52 'visible' => acym_translation('ACYM_VISIBLE'),
53 ],
54 $data['campaign_type'],
55 $data['ordering'],
56 $data['orderingSortOrder']
57 ); ?>
58 </div>
59 </div>
60 </div>
61 <div class="grid-x acym__listing">
62 <div class="grid-x cell acym__listing__header">
63 <div class="medium-shrink small-1 cell">
64 <input id="checkbox_all" type="checkbox">
65 </div>
66 <div class="grid-x medium-auto small-11 cell acym__listing__header__title__container">
67 <div class="medium-auto small-11 cell acym__listing__header__title">
68 <?php echo esc_html(acym_translation('ACYM_CAMPAIGNS')); ?>
69 </div>
70 <div class="<?php echo $data['campaign_type'] === 'campaigns_auto' ? 'large-1' : 'large-2'; ?> medium-3 hide-for-small-only cell acym__listing__header__title">
71 <?php echo esc_html(acym_translation('ACYM_LISTS')); ?>
72 </div>
73 <div class="large-2 medium-4 hide-for-small-only cell acym__listing__header__title text-center">
74 <?php echo esc_html(acym_translation($data['campaign_type'] === 'campaigns_auto' ? 'ACYM_FREQUENCY' : 'ACYM_STATUS')); ?>
75 </div>
76 <?php if ($data['campaign_type'] === 'campaigns_auto') { ?>
77 <div class="large-1 hide-for-small-only hide-for-medium-only text-center cell acym__listing__header__title acym__campaign__auto__generation">
78 <?php echo esc_html(acym_translation('ACYM_LAST_GENERATION')); ?>
79 </div>
80 <div class="large-1 hide-for-small-only hide-for-medium-only text-center cell acym__listing__header__title acym__campaign__auto__generation">
81 <?php echo esc_html(acym_translation('ACYM_NEXT_TRIGGER')); ?>
82 </div>
83 <?php } ?>
84 <div class="large-1 hide-for-small-only hide-for-medium-only text-center cell acym__listing__header__title">
85 <?php echo esc_html(acym_translation('ACYM_OPEN')); ?>
86 </div>
87 <div class="large-1 hide-for-small-only hide-for-medium-only text-center cell acym__listing__header__title">
88 <?php echo esc_html(acym_translation('ACYM_CLICK')); ?>
89 </div>
90 <?php if (acym_isTrackingSalesActive()) { ?>
91 <div class="large-1 hide-for-small-only hide-for-medium-only text-center cell acym__listing__header__title">
92 <?php echo esc_html(acym_translation('ACYM_INCOME')); ?>
93 </div>
94 <?php } ?>
95 <?php if (acym_isAdmin()) { ?>
96 <div class="large-1 cell hide-for-small-only hide-for-medium-only text-center acym__listing__header__title">
97 <?php
98 echo esc_html(acym_translation('ACYM_VISIBLE'));
99 acym_info(
100 [
101 'textShownInTooltip' => 'ACYM_VISIBLE_CAMPAIGN_DESC',
102 'classIcon' => 'acym__tooltip__in__listing__header',
103 ]
104 );
105 ?>
106 </div>
107 <?php } ?>
108 <div class="large-1 cell hide-for-small-only hide-for-medium-only text-center acym__listing__header__title">
109 <?php echo esc_html(acym_translation('ACYM_ACTIONS')); ?>
110 </div>
111 <div class="large-1 cell hide-for-small-only hide-for-medium-only text-center acym__listing__header__title">
112 <?php echo esc_html(acym_translation('ACYM_ID')); ?>
113 </div>
114 </div>
115 </div>
116 <?php
117 foreach ($data['allCampaigns'] as $campaign) {
118 if (isset($campaign->display) && !$campaign->display) {
119 continue;
120 }
121
122 $specialText = '';
123 if (
124 is_array($campaign->sending_params)
125 && array_key_exists('abtest', $campaign->sending_params)
126 && empty($campaign->sending_params['abtest']['abtest_finished'])
127 && empty($campaign->draft)
128 ) {
129 $specialText = ' ('.acym_translation('ACYM_PROCESSING').')';
130 }
131
132 ?>
133 <div class="grid-x cell align-middle acym__listing__row">
134 <div class="medium-shrink small-1 cell">
135 <input id="checkbox_<?php echo esc_attr($campaign->id); ?>" type="checkbox" name="elements_checked[]" value="<?php echo esc_attr($campaign->id); ?>">
136 </div>
137 <div class="grid-x medium-auto small-11 cell align-middle acym__campaign__listing acym__listing__title__container">
138 <div class="cell medium-auto small-7 acym__listing__title acym__campaign__title">
139 <?php
140 $linkTask = 'generated' === $data['status'] ? 'summaryGenerated' : 'edit&step=editEmail';
141 $linkCampaign = acym_completeLink(acym_getVar('cmd', 'ctrl').'&task='.$linkTask.'&campaignId='.intval($campaign->id));
142 ?>
143 <a class="cell auto" href="<?php echo esc_url($linkCampaign); ?>">
144 <h6 class='acym__listing__title__primary acym_text_ellipsis' style="display:flex; align-items:center;">
145 <?php
146 if (is_array($campaign->sending_params) && array_key_exists('abtest', $campaign->sending_params)) {
147 echo '<i class="acymicon-flask acym__selection__card__icon"></i> ';
148 }
149 echo esc_html($campaign->name.$specialText);
150 ?>
151 </h6>
152 </a>
153 <p class="acym__listing__title__secondary">
154 <?php
155 if (!empty($campaign->sending_date) && (!$campaign->scheduled || $campaign->sent)) {
156 echo esc_html(
157 acym_translation('ACYM_SENDING_DATE').' : '.acym_date($campaign->sending_date, acym_getDateTimeFormat('ACYM_DATE_FORMAT_LC3'))
158 );
159 } elseif ($data['statusAuto'] === $campaign->sending_type) {
160 $numberCampaignsGenerated = empty($campaign->sending_params['number_generated']) ? '0' : $campaign->sending_params['number_generated'];
161 echo esc_html(acym_translationSprintf('ACYM_X_CAMPAIGN_GENERATED', $numberCampaignsGenerated));
162 }
163 ?>
164 </p>
165 </div>
166 <div class="<?php echo $data['campaign_type'] === 'campaigns_auto' ? 'large-1' : 'large-2'; ?> acym__campaign__recipients medium-3 small-5 cell">
167 <?php
168 if (!empty($campaign->lists)) {
169 $subscriptionsCount = count($campaign->lists);
170 $counter = 0;
171 foreach ($campaign->lists as $list) {
172 $classes = 'acym_subscription acymicon-circle';
173 if ($counter >= 5 && $subscriptionsCount !== 6) $classes .= ' acym_subscription_more';
174
175 acym_tooltip(
176 [
177 'hoveredText' => '<i class="'.esc_attr($classes).'" style="color:'.esc_attr($list->color ?? '#0079d3').'"></i>',
178 'textShownInTooltip' => esc_html($list->name),
179 ]
180 );
181 $counter++;
182 }
183
184 if ($counter > 5 && $subscriptionsCount !== 6) {
185 $counter = $counter - 5;
186 echo '<span class="acym__campaign__show-subscription acymicon-stack" data-iscollapsed="0" acym-data-value="'.esc_attr($counter).'">
187 <i class="acym__campaign__button__showsubscription acymicon-circle acymicon-stack-2x"></i>
188 <span class="acym__listing__text acym__campaign__show-subscription-bt acymicon-stack-1x">+'.esc_html($counter).'</span>
189 </span>';
190 }
191 } else {
192 echo '<div class="cell medium-12">';
193 echo esc_html(acym_translation(empty($campaign->automation) ? 'ACYM_NO_LIST_SELECTED' : 'ACYM_SENT_WITH_AUTOMATION'));
194 echo '</div>';
195 }
196 ?>
197 </div>
198 <div class="large-2 medium-4 small-11 text-center cell acym__campaign__status">
199 <div class="grid-x text-center">
200 <?php
201 // Has been sent (for both now and scheduled)
202 if ($campaign->sent) {
203 if (!isset($campaign->subscribers)) $campaign->subscribers = 'x';
204 echo '<div class="cell acym__campaign__status__status acym__background-color__green"><span>';
205 echo esc_html(acym_translation('ACYM_SENT').' : '.$campaign->subscribers.' '.acym_translation('ACYM_RECIPIENTS'));
206 echo '</span></div>';
207 // Is currently a valid scheduled but not sent yet
208 } elseif ($campaign->scheduled && !$campaign->draft) {
209 echo '<div class="cell acym__campaign__status__status acym__background-color__orange"><span>';
210 echo esc_html(acym_translation('ACYM_SCHEDULED').' : ');
211 acym_tooltip(
212 [
213 'hoveredText' => acym_date(
214 $campaign->sending_date,
215 acym_getDateTimeFormat('ACYM_DATE_FORMAT_LC3')
216 ),
217 'textShownInTooltip' => acym_date(
218 $campaign->sending_date,
219 acym_getDateTimeFormat('ACYM_DATE_FORMAT_LC2')
220 ),
221 ]
222 );
223 echo '</span></div>';
224 $target = '<div class="acym__campaign__listing__scheduled__stop grid-x cell xlarge-shrink acym_vcenter" data-campaignid="'.esc_attr(
225 $campaign->id
226 ).'"><i class="acymicon-times-circle cell shrink show-for-xlarge"></i><span class="cell xlarge-shrink">'.acym_translation(
227 'ACYM_CANCEL_SCHEDULING'
228 ).'</span></div>';
229 echo '<div class="cell acym__campaign__listing__status__controls"><div class="grid-x text-center"><div class="cell auto"></div>';
230 acym_tooltip(
231 [
232 'hoveredText' => $target,
233 'textShownInTooltip' => acym_translation('ACYM_STOP_THE_SCHEDULING_AND_SET_CAMPAIGN_AS_DRAFT'),
234 ]
235 );
236 echo '<div class="cell auto"></div></div></div>';
237 // Is an activated auto campaign
238 } elseif ($data['statusAuto'] === $campaign->sending_type && !$campaign->draft) {
239 $numberCampaignsGenerated = empty($campaign->sending_params['number_generated']) ? '0' : $campaign->sending_params['number_generated'];
240 $tooltip = acym_translationSprintf('ACYM_X_CAMPAIGN_GENERATED', $numberCampaignsGenerated);
241
242 $nextTrigger = empty($campaign->sending_params['trigger_text']) ? '' : $campaign->sending_params['trigger_text'];
243 acym_tooltip(
244 [
245 'hoveredText' => '<div class="cell acym__campaign__status__status acym__background-color__purple">
246 <span class="acym__color__white">'.$nextTrigger.'</span>
247 </div>',
248 'textShownInTooltip' => $tooltip,
249 'classContainer' => 'cell',
250 ]
251 );
252 ?>
253
254 <div class="cell acym__campaign__listing__status__controls">
255 <div class="grid-x text-center">
256 <div class="cell auto"></div>
257
258 <div class="acym__campaign__listing__automatic__deactivate grid-x cell xlarge-shrink acym_vcenter"
259 data-campaignid="<?php echo esc_attr($campaign->id); ?>">
260 <i class="'.($campaign->active ? 'acymicon-times-circle' : 'acymicon-power-off').' cell shrink show-for-xlarge"></i>
261 <span class="cell xlarge-shrink">
262 <?php echo esc_html(
263 $campaign->active
264 ? acym_translation('ACYM_DEACTIVATE')
265 : acym_translation('ACYM_ACTIVATE')
266 ); ?>
267 </span>
268 </div>
269
270 <div class="cell auto"></div>
271 </div>
272 </div>
273 <?php
274 // Is a generated campaign that needs a confirmation
275 } elseif ('generated' == $data['status'] && $campaign->draft) {
276 echo '<div class="cell acym__campaign__status__status acym__background-color__orange"><span>';
277 echo esc_html(acym_translation('ACYM_WAITING_FOR_CONFIRMATION'));
278 echo '</span></div>';
279 // Is a generated campaign that has been disabled
280 } elseif ('generated' == $data['status'] && !$campaign->active) {
281 echo '<div class="cell acym__campaign__status__status acym__background-color__red"><span class="acym__color__white">';
282 echo esc_html(acym_translation('ACYM_DISABLED'));
283 echo '</span></div>';
284 // Is a draft
285 } elseif ($campaign->draft) {
286 echo '<div class="cell acym__campaign__status__status acym__campaign__status__draft"><span>';
287 echo esc_html(acym_translation('ACYM_DRAFT'));
288 echo '</span></div>';
289 }
290 ?>
291 </div>
292 </div>
293 <?php if ($data['campaign_type'] === 'campaigns_auto') { ?>
294 <div class="large-1 hide-for-small-only hide-for-medium-only cell text-center acym__campaign__auto__generation">
295 <?php
296 if (empty($campaign->last_generated)) {
297 echo '-';
298 } else {
299 echo esc_html(acym_date($campaign->last_generated, acym_getDateTimeFormat()));
300 }
301 ?>
302 </div>
303 <div class="large-1 hide-for-small-only hide-for-medium-only cell text-center acym__campaign__auto__generation">
304 <?php
305 if (empty($campaign->next_trigger)) {
306 echo '-';
307 } else {
308 echo esc_html(acym_date($campaign->next_trigger, acym_getDateTimeFormat()));
309 }
310 ?>
311 </div>
312 <?php } ?>
313 <div class="large-1 hide-for-small-only hide-for-medium-only cell text-center">
314 <?php
315 if (($campaign->sent || $data['campaign_type'] === 'campaigns_auto') && !empty($campaign->subscribers) && isset($campaign->open)) {
316 echo esc_html($campaign->open).'%';
317 } else {
318 echo '-';
319 }
320 ?>
321 </div>
322 <div class="large-1 hide-for-small-only hide-for-medium-only cell text-center">
323 <?php
324 if (($campaign->sent || $data['campaign_type'] === 'campaigns_auto') && !empty($campaign->subscribers) && isset($campaign->click)) {
325 echo esc_html($campaign->click).'%';
326 } else {
327 echo '-';
328 }
329 ?>
330 </div>
331 <?php if (acym_isTrackingSalesActive()) { ?>
332 <div class="large-1 hide-for-small-only hide-for-medium-only cell text-center">
333 <?php
334 if (!empty($campaign->tracking_sale) && !empty($campaign->currency)) {
335 acym_trigger('getCurrency', [&$campaign->currency]);
336 echo esc_html(round($campaign->tracking_sale, 2).' '.$campaign->currency);
337 } else {
338 echo '-';
339 }
340 ?>
341 </div>
342 <?php } ?>
343 <?php if (acym_isAdmin()) { ?>
344 <div class="large-1 hide-for-small-only hide-for-medium-only cell text-center acym__icon__table">
345 <?php
346 if ($campaign->visible == 1) {
347 $class = 'acymicon-eye';
348 $newvalue = 0;
349 $tooltip = 'ACYM_VISIBLE';
350 } else {
351 $class = 'acymicon-eye-slash acym__color__dark-gray';
352 $newvalue = 1;
353 $tooltip = 'ACYM_INVISIBLE';
354 }
355 acym_tooltip(
356 [
357 'hoveredText' => '<i data-acy-table="campaign" data-acy-field="visible" data-acy-elementid="'.esc_attr(
358 $campaign->id
359 ).'" data-acy-newvalue="'.esc_attr($newvalue).'" class="acym_toggleable '.esc_attr($class).'"></i>',
360 'textShownInTooltip' => acym_translation($tooltip),
361 ]
362 );
363 ?>
364 </div>
365 <?php
366 } ?>
367 <div class="large-1 hide-for-small-only hide-for-medium-only cell text-center acym__icon__table">
368 <a href="<?php echo esc_url($linkCampaign); ?>">
369 <i class="acymicon-pencil" title="<?php echo esc_attr(acym_translation('ACYM_EDIT')); ?>"></i>
370 </a>
371 <a>
372 <i class="acymicon-content-copy fastActions"
373 data-action="duplicate"
374 data-acy-elementid="<?php echo esc_attr($campaign->id); ?>"
375 title="<?php echo esc_attr(acym_translation('ACYM_DUPLICATE')); ?>"></i>
376 </a>
377 <?php
378 $isFront = !acym_isAdmin() && ACYM_CMS === 'joomla';
379 if (!esc_attr($campaign->draft) && !$isFront) {
380 ?>
381 <a href="<?php echo esc_url(acym_completeLink('stats&mail_ids='.esc_attr($campaign->mail_id))); ?>">
382 <i class="acymicon-rectangle-bar-chart" title="<?php echo esc_attr(acym_translation('ACYM_STATISTICS')); ?>"></i>
383 </a>
384 <?php } ?>
385 <i class="cursor-pointer acymicon-delete fastActions deleteFastAction"
386 data-action="delete"
387 data-acy-elementid="<?php echo esc_attr($campaign->id); ?>"
388 title="<?php echo esc_attr(acym_translation('ACYM_DELETE')); ?>"></i>
389 </div>
390 <h6 class="large-1 hide-for-medium-only hide-for-small-only cell text-center acym__listing__text acym__campaign__listing__id">
391 <?php
392 acym_tooltip(
393 [
394 'hoveredText' => $campaign->id,
395 'textShownInTooltip' => acym_translationSprintf('ACYM_MAIL_ID_X', $campaign->mail_id),
396 ]
397 );
398 ?>
399 </h6>
400 </div>
401 </div>
402 <?php
403 }
404 ?>
405 </div>
406 <?php $data['pagination']->display('campaigns');
407 }
408