summaryrefslogtreecommitdiff
path: root/views/mods
diff options
context:
space:
mode:
Diffstat (limited to 'views/mods')
-rw-r--r--views/mods/mod_campaigns/campaign_addedit.phtml210
-rw-r--r--views/mods/mod_campaigns/campaign_index.phtml102
-rw-r--r--views/mods/mod_campaigns/conditions_fields.phtml83
-rw-r--r--views/mods/mod_campaigns/template_addedit.phtml151
-rw-r--r--views/mods/mod_campaigns/template_index.phtml99
5 files changed, 645 insertions, 0 deletions
diff --git a/views/mods/mod_campaigns/campaign_addedit.phtml b/views/mods/mod_campaigns/campaign_addedit.phtml
new file mode 100644
index 0000000..daf1761
--- /dev/null
+++ b/views/mods/mod_campaigns/campaign_addedit.phtml
@@ -0,0 +1,210 @@
+<?php
+ $data = $this->view['campaign_data'];
+ $templates = isset($this->view['campaign_templates']) && is_array($this->view['campaign_templates']) ? $this->view['campaign_templates'] : array();
+ $assignedTemplateId = isset($data['assigned_template_id']) ? intval($data['assigned_template_id']) : 0;
+ $isEdit = intval($data['id']) > 0;
+ $sendDateValue = '';
+ if (strtotime($data['send_date']) > 0) {
+ $sendDateValue = date('Y-m-d\TH:i', strtotime($data['send_date']));
+ }
+?>
+<div class="wrap columns-2 wpng_campaign_addedit">
+ <div class="icon32 icon32-posts-post" id="icon-edit"><br></div>
+ <h2>
+ <?php echo __('Kampagnen', 'wpsg'); ?> - <?php echo $isEdit ? __('Bearbeiten', 'wpsg') : __('Neu hinzufügen', 'wpsg'); ?>
+ </h2>
+
+ <form method="post" action="<?php echo esc_url(admin_url('admin.php?page=wpng-mod_campaign&wpng_action=save&noheader=1')); ?>">
+ <?php wp_nonce_field('wpsg-campaigns-save'); ?>
+ <input type="hidden" name="id" value="<?php echo intval($data['id']); ?>" />
+
+ <div class="metabox-holder has-right-sidebar wpng_metabox-holder">
+ <div id="side-info-column" class="inner-sidebar" style="width:386px;">
+ <div id="side-sortables" class="meta-box-sortables ui-sortable" style="width:380px;">
+ <div class="postbox">
+ <h3 class="postbox-header"><?php echo __('Einstellungen', 'wpsg'); ?></h3>
+ <div class="inside">
+ <p>
+ <label for="delay_value"><strong><?php echo __('Verzögerung', 'wpsg'); ?></strong></label><br />
+ <input type="number" min="0" id="delay_value" name="delay_value" value="<?php echo intval($data['delay_value']); ?>" style="width:120px;" />
+ <select id="delay_unit" name="delay_unit">
+ <?php $units = $this->callMod('wpsg_mod_campaigns', 'getDelayUnitOptions'); if (!is_array($units)) $units = array(); foreach ($units as $unit => $unitLabel) { ?>
+ <option value="<?php echo esc_attr($unit); ?>" <?php selected($data['delay_unit'], $unit); ?>><?php echo esc_html($unitLabel); ?></option>
+ <?php } ?>
+ </select>
+ </p>
+ <p>
+ <label for="format"><strong><?php echo __('Format', 'wpsg'); ?></strong></label><br />
+ <select id="format" name="format">
+ <option value="0" <?php selected(intval($data['format']), 0); ?>><?php echo __('Text', 'wpsg'); ?></option>
+ <option value="1" selected <?php selected(intval($data['format']), 1); ?>><?php echo __('HTML und Text', 'wpsg'); ?></option>
+ <option value="2" <?php selected(intval($data['format']), 2); ?>><?php echo __('HTML', 'wpsg'); ?></option>
+ </select>
+ </p>
+ <p>
+ <label for="priority"><strong><?php echo __('Priorität', 'wpsg'); ?></strong></label><br />
+ <?php $priority = (intval($data['priority']) >= 1) ? intval($data['priority']) : 3; ?>
+ <select id="priority" name="priority">
+ <option value="1" <?php selected($priority, 1); ?>><?php echo __('Sehr niedrig', 'wpsg'); ?></option>
+ <option value="2" <?php selected($priority, 2); ?>><?php echo __('Niedrig', 'wpsg'); ?></option>
+ <option value="3" <?php selected($priority, 3); ?>><?php echo __('Normal', 'wpsg'); ?></option>
+ <option value="4" <?php selected($priority, 4); ?>><?php echo __('Hoch', 'wpsg'); ?></option>
+ <option value="5" <?php selected($priority, 5); ?>><?php echo __('Sehr hoch', 'wpsg'); ?></option>
+ </select>
+ </p>
+ <p class="submit">
+ <input type="submit" class="button-primary" name="submit" value="<?php echo __('Speichern', 'wpsg'); ?>" />
+ <input type="submit" class="button" name="submit_index" value="<?php echo __('Speichern und zur Übersicht', 'wpsg'); ?>" />
+ </p>
+ </div>
+ </div>
+
+ <div class="postbox">
+ <h3 class="postbox-header"><?php echo __('Template-Zuordnung', 'wpsg'); ?></h3>
+ <div class="inside">
+ <p>
+ <label for="template_id"><strong><?php echo __('Versandprofil', 'wpsg'); ?></strong></label><br />
+ <select id="template_id" name="template_id" style="width:100%;">
+ <option value="0"><?php echo __('Kein Versandprofil zugeordnet', 'wpsg'); ?></option>
+ <?php foreach ($templates as $template) { ?>
+ <?php $templateId = intval($template['id']); ?>
+ <option value="<?php echo $templateId; ?>" <?php selected($assignedTemplateId, $templateId); ?>>
+ <?php echo esc_html($template['name']); ?>
+ </option>
+ <?php } ?>
+ </select>
+ <small><?php echo __('Eine Kampagne kann genau einem Versandprofil zugeordnet werden.', 'wpsg'); ?></small>
+ </p>
+ </div>
+ </div>
+
+ <div class="postbox">
+ <h3 class="postbox-header"><?php echo __('Versandeinstellungen', 'wpsg'); ?></h3>
+ <div class="inside">
+ <p>
+ <label for="subject"><strong><?php echo __('Betreff', 'wpsg'); ?></strong></label><br />
+ <input type="text" class="widefat" id="subject" name="subject" value="<?php echo esc_attr($data['subject']); ?>" />
+ </p>
+ <p>
+ <label for="from"><strong><?php echo __('Absender', 'wpsg'); ?></strong></label><br />
+ <input type="text" class="widefat" id="from" name="from" value="<?php echo esc_attr($data['from']); ?>" />
+ </p>
+ <p>
+ <label for="cc"><strong><?php echo __('CC', 'wpsg'); ?></strong></label><br />
+ <input type="text" class="widefat" id="cc" name="cc" value="<?php echo esc_attr($data['cc']); ?>" />
+ </p>
+ <p>
+ <label for="bcc"><strong><?php echo __('BCC', 'wpsg'); ?></strong></label><br />
+ <input type="text" class="widefat" id="bcc" name="bcc" value="<?php echo esc_attr($data['bcc']); ?>" />
+ </p>
+ </div>
+ </div>
+
+ <div class="postbox">
+ <h3 class="postbox-header"><?php echo __('Verfügbare Platzhalter', 'wpsg'); ?></h3>
+ <div class="inside">
+ <p><small><?php echo __('Diese Platzhalter werden beim Versand automatisch mit den Bestell- und Kundendaten ersetzt. Nutzbar in Betreff, HTML- und Text-Inhalt.', 'wpsg'); ?></small></p>
+ <ul style="margin:0; padding-left:18px; list-style:disc;">
+ <li><code>%kunde_anrede%</code> – <?php echo __('Anrede', 'wpsg'); ?></li>
+ <li><code>%kunde_vname%</code> – <?php echo __('Vorname', 'wpsg'); ?></li>
+ <li><code>%kunde_name%</code> – <?php echo __('Nachname', 'wpsg'); ?></li>
+ <li><code>%kunde_email%</code> – <?php echo __('E-Mail-Adresse', 'wpsg'); ?></li>
+ <li><code>%order_id%</code> – <?php echo __('Bestellnummer', 'wpsg'); ?></li>
+ <li><code>%order_cdate_format_de%</code> – <?php echo __('Bestelldatum', 'wpsg'); ?></li>
+ <li><code>%product_name%</code> – <?php echo __('Produktname', 'wpsg'); ?></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div id="post-body">
+ <div id="titlediv" style="margin-right:400px;">
+ <div id="titlewrap">
+ <input type="text" value="<?php echo esc_attr($data['name']); ?>" size="30" name="name" id="title" required />
+ </div>
+ </div>
+
+ <div id="normal-sortables" class="meta-box-sortables" style="margin-right:400px; width:initial !important;">
+ <div class="postbox">
+ <h3 class="postbox-header"><?php echo __('Inhalt (HTML)', 'wpsg'); ?></h3>
+ <div class="inside">
+
+<!-- Einbindung TinyMCE -->
+
+ <div id="wpng_rte_inside" class="inside wpng_rte_inside">
+
+ <?php if ($this->get_option('wpng_rte') == '1') { ?>
+
+ <?php
+
+ function wpng_tiny_mce_before_init($in)
+ {
+ $in['readonly'] = true;
+ return $in;
+ }
+
+ function wpng_ShowTinyMCE() {
+
+ wp_enqueue_script('common');
+ wp_enqueue_script('jquery-color');
+ wp_print_scripts('editor');
+ if (function_exists('add_thickbox')) add_thickbox();
+ wp_print_scripts('media-upload');
+ if (function_exists('wp_tiny_mce')) wp_tiny_mce();
+ wp_admin_css();
+ wp_enqueue_script('utils');
+ do_action("admin_print_styles-post-php");
+ do_action('admin_print_styles');
+
+ }
+
+ // Damit die qTranslate Interne Editor Übersetzung nicht aufgerufen wird
+ remove_filter('the_editor', 'qtrans_modifyRichEditor');
+ remove_filter('the_editor', 'wpautop');
+
+ if ($this->view['data']->status == '1')
+ {
+
+ add_filter('tiny_mce_before_init', 'wpng_tiny_mce_before_init');
+
+ }
+
+ add_filter('mce_buttons', 'wpng_tinymce_button');
+ add_filter('mce_external_plugins', 'wpng_tinymce_plugin');
+ add_filter('admin_head','wpng_ShowTinyMCE');
+
+ wp_editor(@$data['content_html'], 'content_html');
+
+ ?>
+
+ <?php } else if ($this->get_option('wpng_rte') == '0') { ?>
+
+ <textarea id="content_text" name="content_text" rows="12" class="large-text code"><?php echo format_for_editor($data['content_html']); ?></textarea>
+
+ <?php } else if ($this->get_option('wpng_rte') == '2') { $this->callMods('newsletter_addedit_rte', array($data)); } ?>
+
+<!-- Einbindung TinyMCE -->
+
+<!-- <textarea id="content_html" name="content_html" rows="12" class="large-text code">--><?php //echo esc_textarea($data['content_html']); ?><!--</textarea>-->
+ </div>
+ </div>
+
+ <div class="postbox">
+ <h3 class="postbox-header"><?php echo __('Inhalt (Text)', 'wpsg'); ?></h3>
+ <div class="inside">
+ <textarea id="content_text" name="content_text" rows="10" class="large-text code"><?php echo esc_textarea($data['content_text']); ?></textarea>
+ </div>
+ </div>
+
+ <div class="postbox">
+ <h3 class="postbox-header"><?php echo __('Bedingungen', 'wpsg'); ?></h3>
+ <div class="inside">
+ <?php include(WPSG_PATH_VIEW . '/mods/mod_campaigns/conditions_fields.phtml'); ?>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </form>
+</div>
diff --git a/views/mods/mod_campaigns/campaign_index.phtml b/views/mods/mod_campaigns/campaign_index.phtml
new file mode 100644
index 0000000..9864eb3
--- /dev/null
+++ b/views/mods/mod_campaigns/campaign_index.phtml
@@ -0,0 +1,102 @@
+<?php
+$list = $this->view['mod_campaigns'];
+?>
+<div class="wrap wpng_campaign_index">
+ <h2>
+ <?php echo __('Kampagnen', 'wpsg'); ?>
+ <a href="<?php echo esc_url(admin_url('admin.php?page=wpng-mod_campaign&wpng_action=add')); ?>" class="button add-new-h2"><?php echo __('Neu hinzufügen', 'wpsg'); ?></a>
+ </h2>
+
+ <form id="wpsg_campaign_form" method="post" action="<?php echo esc_url(admin_url('admin.php?page=wpng-mod_campaign')); ?>">
+ <input type="hidden" id="order" name="filter[order]" value="<?php echo esc_attr($list['filter']['order']); ?>" />
+ <input type="hidden" id="direction" name="filter[direction]" value="<?php echo esc_attr($list['filter']['direction']); ?>" />
+
+ <p class="search-box wpng-search-box">
+ <label for="post-search-input" class="screen-reader-text"><?php echo __('Kampagne suchen', 'wpsg'); ?></label>
+ <input type="text" value="<?php echo esc_attr($list['filter']['search']); ?>" name="filter[search]" id="post-search-input" />
+ <input type="submit" value="<?php echo __('Kampagne suchen', 'wpsg'); ?>" class="button" id="search-submit" />
+ </p>
+
+ <?php if (is_array($list['data']) && sizeof($list['data']) > 0) { ?>
+ <div class="tablenav top wpng_tablenav">
+ <div class="tablenav-pages">
+ <span class="displaying-num"><?php echo intval($list['count']); ?> <?php echo __('Elemente', 'wpsg'); ?></span>
+ <span class="pagination-links">
+ <a onclick="return goPage(1);" href="#" class="first-page <?php echo (($list['seite'] == 1) ? 'disabled' : ''); ?>">«</a>
+ <a onclick="return goPage(<?php echo intval($list['seite']) - 1; ?>);" href="#" class="prev-page <?php echo (($list['seite'] <= 1) ? 'disabled' : ''); ?>">‹</a>
+ <span class="paging-input">
+ <input type="text" size="1" value="<?php echo intval($list['seite']); ?>" id="seite" name="seite" class="current-page" />
+ <?php echo __('von', 'wpsg'); ?>
+ <span class="total-pages"><?php echo intval($list['pages']); ?></span>
+ </span>
+ <a onclick="return goPage(<?php echo intval($list['seite']) + 1; ?>);" href="#" class="next-page <?php echo (($list['seite'] >= $list['pages']) ? 'disabled' : ''); ?>">›</a>
+ <a onclick="return goPage(<?php echo intval($list['pages']); ?>);" href="#" class="last-page <?php echo (($list['seite'] == $list['pages']) ? 'disabled' : ''); ?>">»</a>
+ </span>
+ </div>
+ </div>
+ <?php } ?>
+
+ <?php if (is_array($list['data']) && sizeof($list['data']) > 0) { ?>
+ <table class="widefat fixed striped">
+ <thead>
+ <tr>
+ <th><a href="#" onclick="return setOrder('id');"><?php echo __('ID', 'wpsg'); ?></a></th>
+ <th><a href="#" onclick="return setOrder('name');"><?php echo __('Name', 'wpsg'); ?></a></th>
+ <th><a href="#" onclick="return setOrder('subject');"><?php echo __('Betreff', 'wpsg'); ?></a></th>
+ <th><a href="#" onclick="return setOrder('create_date');"><?php echo __('Erstellt', 'wpsg'); ?></a></th>
+ <th><?php echo __('Verzögerung', 'wpsg'); ?></th>
+ <th><?php echo __('Versandprofil', 'wpsg'); ?></th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach ($list['data'] as $row) { ?>
+ <tr>
+ <td><?php echo intval($row['id']); ?></td>
+ <td class="column-primary">
+ <strong><a href="<?php echo esc_url(admin_url('admin.php?page=wpng-mod_campaign&wpng_action=edit&id='.intval($row['id']))); ?>"><?php echo esc_html($row['name']); ?></a></strong>
+ <div class="row-actions">
+ <?php
+ $editUrl = admin_url('admin.php?page=wpng-mod_campaign&wpng_action=edit&id='.intval($row['id']));
+ $copyUrl = wp_nonce_url(admin_url('admin.php?page=wpng-mod_campaign&wpng_action=copy&id='.intval($row['id']).'&noheader=1'), 'wpsg-campaigns-copy-'.intval($row['id']));
+ $deleteUrl = wp_nonce_url(admin_url('admin.php?page=wpng-mod_campaign&wpng_action=delete&id='.intval($row['id']).'&noheader=1'), 'wpsg-campaigns-delete-'.intval($row['id']));
+ ?>
+ <span class="edit"><a href="<?php echo esc_url($editUrl); ?>"><?php echo __('Bearbeiten', 'wpsg'); ?></a></span> |
+ <span class="copy"><a onclick="return confirm('<?php echo esc_js(__('Die Daten werden kopiert und ein neuer Eintrag angelegt. Fortfahren?', 'wpsg')); ?>');" href="<?php echo esc_url($copyUrl); ?>"><?php echo __('Kopieren', 'wpsg'); ?></a></span> |
+ <span class="delete"><a onclick="return confirm('<?php echo esc_js(__('Sind Sie sicher, dass Sie diesen Eintrag löschen möchten?', 'wpsg')); ?>');" href="<?php echo esc_url($deleteUrl); ?>"><?php echo __('Löschen', 'wpsg'); ?></a></span>
+ </div>
+ </td>
+ <td><?php echo esc_html($row['subject']); ?></td>
+ <td><?php echo (strtotime($row['create_date']) > 0) ? esc_html(date('d.m.Y H:i', strtotime($row['create_date']))) : '-'; ?></td>
+ <td><?php echo intval($row['delay_value']).' '.esc_html($this->callMod('wpsg_mod_campaigns', 'getDelayUnitLabel', array($row['delay_unit']))); ?></td>
+ <td>
+ <?php if (!empty($row['template_id'])) { ?>
+ [<a href="<?php echo esc_url(admin_url('admin.php?page=wpng-mod_template&wpng_action=edit&id='.intval($row['template_id']))); ?>"><?php echo intval($row['template_id']); ?></a>] <?php echo esc_html($row['template_name']); ?>
+ <?php } else { ?>
+ -
+ <?php } ?>
+ </td>
+ </tr>
+ <?php } ?>
+ </tbody>
+ </table>
+ <?php } else { ?>
+ <p><?php echo __('Keine Kampagnen in der Datenbank.', 'wpsg'); ?></p>
+ <?php } ?>
+ </form>
+</div>
+
+<script type="text/javascript">
+function setOrder(column) {
+ jQuery('#order').val(column);
+ if (jQuery('#direction').val() === 'DESC') jQuery('#direction').val('ASC'); else jQuery('#direction').val('DESC');
+ jQuery('#wpsg_campaign_form').trigger('submit');
+ return false;
+}
+function goPage(page) {
+ if (page <= 0 || page > <?php echo intval($list['pages']); ?>) return false;
+ jQuery('#seite').val(page);
+ jQuery('#wpsg_campaign_form').trigger('submit');
+ return false;
+}
+jQuery(document).ready(function() { jQuery('.tablenav-pages .disabled').on('click', function() { return false; }); });
+</script>
diff --git a/views/mods/mod_campaigns/conditions_fields.phtml b/views/mods/mod_campaigns/conditions_fields.phtml
new file mode 100644
index 0000000..25c8379
--- /dev/null
+++ b/views/mods/mod_campaigns/conditions_fields.phtml
@@ -0,0 +1,83 @@
+<?php
+
+ /**
+ * Gemeinsame Auswahl-Felder für Kampagnen-/Template-Bedingungen.
+ * Erwartet $this->view['condition_options'] (id => label je Feld) und
+ * $this->view['condition_values'] (Feld => array('operator','value')).
+ * Wird von campaign_addedit.phtml und template_addedit.phtml eingebunden.
+ */
+
+ $opts = (isset($this->view['condition_options']) && is_array($this->view['condition_options'])) ? $this->view['condition_options'] : array();
+ $vals = (isset($this->view['condition_values']) && is_array($this->view['condition_values'])) ? $this->view['condition_values'] : array();
+
+ $cond_val = function($field) use ($vals) { return isset($vals[$field]['value']) ? (string)$vals[$field]['value'] : ''; };
+ $cond_op = function($field) use ($vals) { return isset($vals[$field]['operator']) ? (string)$vals[$field]['operator'] : '=='; };
+
+ $opt_status = (isset($opts['order_status']) && is_array($opts['order_status'])) ? $opts['order_status'] : array();
+ $opt_payment = (isset($opts['order_payment_type']) && is_array($opts['order_payment_type'])) ? $opts['order_payment_type'] : array();
+ $opt_subgroup = (isset($opts['subscriber_group']) && is_array($opts['subscriber_group'])) ? $opts['subscriber_group'] : array();
+ $opt_pgroup = (isset($opts['product_group']) && is_array($opts['product_group'])) ? $opts['product_group'] : array();
+ $opt_country = (isset($opts['customer_country']) && is_array($opts['customer_country'])) ? $opts['customer_country'] : array();
+
+?>
+<p><small><?php echo __('Optionale Bedingungen. Nur gesetzte Felder werden geprüft; es müssen alle gesetzten Bedingungen zutreffen, damit die Kampagne ausgelöst wird.', 'wpsg'); ?></small></p>
+
+<p>
+ <label for="cond_order_status"><strong><?php echo __('Bestellstatus', 'wpsg'); ?></strong></label><br />
+ <select id="cond_order_status" name="cond[order_status]" class="widefat">
+ <option value=""><?php echo __('— egal —', 'wpsg'); ?></option>
+ <?php foreach ($opt_status as $k => $label) { ?>
+ <option value="<?php echo esc_attr($k); ?>" <?php selected($cond_val('order_status'), (string)$k); ?>><?php echo esc_html($label); ?></option>
+ <?php } ?>
+ </select>
+</p>
+
+<p>
+ <label for="cond_order_total"><strong><?php echo __('Bestellsumme (brutto)', 'wpsg'); ?></strong></label><br />
+ <select name="cond[order_total_op]" style="width:70px;">
+ <?php foreach (array('>=' => '≥', '<=' => '≤', '==' => '=') as $op => $sym) { ?>
+ <option value="<?php echo esc_attr($op); ?>" <?php selected($cond_op('order_total'), $op); ?>><?php echo $sym; ?></option>
+ <?php } ?>
+ </select>
+ <input type="number" step="0.01" min="0" id="cond_order_total" name="cond[order_total]" value="<?php echo esc_attr($cond_val('order_total')); ?>" style="width:130px;" placeholder="<?php echo esc_attr(__('z.B. 50', 'wpsg')); ?>" />
+</p>
+
+<p>
+ <label for="cond_order_payment_type"><strong><?php echo __('Zahlart', 'wpsg'); ?></strong></label><br />
+ <select id="cond_order_payment_type" name="cond[order_payment_type]" class="widefat">
+ <option value=""><?php echo __('— egal —', 'wpsg'); ?></option>
+ <?php foreach ($opt_payment as $k => $label) { ?>
+ <option value="<?php echo esc_attr($k); ?>" <?php selected($cond_val('order_payment_type'), (string)$k); ?>><?php echo esc_html($label); ?></option>
+ <?php } ?>
+ </select>
+</p>
+
+<p>
+ <label for="cond_subscriber_group"><strong><?php echo __('Abonnentengruppe', 'wpsg'); ?></strong></label><br />
+ <select id="cond_subscriber_group" name="cond[subscriber_group]" class="widefat">
+ <option value=""><?php echo __('— egal —', 'wpsg'); ?></option>
+ <?php foreach ($opt_subgroup as $k => $label) { ?>
+ <option value="<?php echo esc_attr($k); ?>" <?php selected($cond_val('subscriber_group'), (string)$k); ?>><?php echo esc_html($label); ?></option>
+ <?php } ?>
+ </select>
+</p>
+
+<p>
+ <label for="cond_product_group"><strong><?php echo __('Produktgruppe', 'wpsg'); ?></strong></label><br />
+ <select id="cond_product_group" name="cond[product_group]" class="widefat">
+ <option value=""><?php echo __('— egal —', 'wpsg'); ?></option>
+ <?php foreach ($opt_pgroup as $k => $label) { ?>
+ <option value="<?php echo esc_attr($k); ?>" <?php selected($cond_val('product_group'), (string)$k); ?>><?php echo esc_html($label); ?></option>
+ <?php } ?>
+ </select>
+</p>
+
+<p>
+ <label for="cond_customer_country"><strong><?php echo __('Land des Kunden', 'wpsg'); ?></strong></label><br />
+ <select id="cond_customer_country" name="cond[customer_country]" class="widefat">
+ <option value=""><?php echo __('— egal —', 'wpsg'); ?></option>
+ <?php foreach ($opt_country as $k => $label) { ?>
+ <option value="<?php echo esc_attr($k); ?>" <?php selected($cond_val('customer_country'), (string)$k); ?>><?php echo esc_html($label); ?></option>
+ <?php } ?>
+ </select>
+</p>
diff --git a/views/mods/mod_campaigns/template_addedit.phtml b/views/mods/mod_campaigns/template_addedit.phtml
new file mode 100644
index 0000000..06ea4ef
--- /dev/null
+++ b/views/mods/mod_campaigns/template_addedit.phtml
@@ -0,0 +1,151 @@
+<?php
+ $data = $this->view['template_data'];
+ $campaigns = isset($this->view['template_campaigns']) && is_array($this->view['template_campaigns']) ? $this->view['template_campaigns'] : array();
+ $triggerEventOptions = isset($this->view['template_trigger_event_options']) && is_array($this->view['template_trigger_event_options']) ? $this->view['template_trigger_event_options'] : array();
+ $triggerValueOptions = isset($this->view['template_trigger_value_options']) && is_array($this->view['template_trigger_value_options']) ? $this->view['template_trigger_value_options'] : array();
+ $assignedCampaignIds = isset($data['assigned_campaign_ids']) && is_array($data['assigned_campaign_ids']) ? array_map('intval', $data['assigned_campaign_ids']) : array();
+ $isEdit = intval($data['id']) > 0;
+ $selectedTriggerEvent = (string)$data['trigger_event'];
+ $selectedTriggerValue = (string)$data['trigger_value'];
+?>
+<div class="wrap columns-2 wpng_template_addedit">
+ <div class="icon32 icon32-posts-post" id="icon-edit"><br></div>
+ <h2>
+ <?php echo __('Versandprofile', 'wpsg'); ?> - <?php echo $isEdit ? __('Bearbeiten', 'wpsg') : __('Neu hinzufügen', 'wpsg'); ?>
+ </h2>
+
+ <form method="post" action="<?php echo esc_url(admin_url('admin.php?page=wpng-mod_template&wpng_action=save&noheader=1')); ?>">
+ <?php wp_nonce_field('wpsg-campaigns-save'); ?>
+ <input type="hidden" name="id" value="<?php echo intval($data['id']); ?>" />
+
+ <div class="metabox-holder has-right-sidebar wpng_metabox-holder">
+ <div id="side-info-column" class="inner-sidebar" style="width:386px;">
+ <div id="side-sortables" class="meta-box-sortables ui-sortable" style="width:380px;">
+ <div class="postbox">
+ <h3 class="postbox-header"><?php echo __('Einstellungen', 'wpsg'); ?></h3>
+ <div class="inside">
+<!-- <p>-->
+<!-- <label><input type="checkbox" id="status" name="status" value="1" --><?php //checked(intval($data['status']), 1); ?><!-- /> --><?php //echo __('Aktiv', 'wpsg'); ?><!--</label>-->
+<!-- </p>-->
+ <p class="submit">
+ <input type="submit" class="button-primary" name="submit" value="<?php echo __('Speichern', 'wpsg'); ?>" />
+ <input type="submit" class="button" name="submit_index" value="<?php echo __('Speichern und zur Übersicht', 'wpsg'); ?>" />
+ </p>
+
+ </div>
+ </div>
+ <div class="postbox">
+ <h3 class="postbox-header"><?php echo __('Kampagnen-Zuordnung', 'wpsg'); ?></h3>
+ <div class="inside">
+ <p>
+ <label for="campaign_ids"><strong><?php echo __('Kampagnen', 'wpsg'); ?></strong></label><br />
+ <select id="campaign_ids" name="campaign_ids[]" multiple="multiple" size="8" style="width:100%;">
+ <?php foreach ($campaigns as $campaign) { ?>
+ <?php $campaignId = intval($campaign['id']); ?>
+ <option value="<?php echo $campaignId; ?>" <?php echo in_array($campaignId, $assignedCampaignIds, true) ? 'selected="selected"' : ''; ?>>
+ <?php echo esc_html($campaign['name']); ?>
+ </option>
+ <?php } ?>
+ </select>
+ <small><?php echo __('Mehrfachauswahl: Strg/Cmd gedrückt halten.', 'wpsg'); ?></small>
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div id="post-body">
+ <div id="titlediv" style="margin-right:400px;">
+ <div id="titlewrap">
+ <input type="text" value="<?php echo esc_attr($data['name']); ?>" size="30" name="name" id="title" required />
+ </div>
+ </div>
+
+ <br />
+
+ <div id="normal-sortables" class="meta-box-sortables" style="margin-right:400px; width:initial !important;">
+
+ <div class="postbox">
+
+ <!-- <p>-->
+ <!-- <label><input type="checkbox" id="status" name="status" value="1" --><?php //checked(intval($data['status']), 1); ?><!-- /> --><?php //echo __('Aktiv', 'wpsg'); ?><!--</label>-->
+ <!-- </p>-->
+
+ </div>
+
+ <div class="postbox">
+ <h3 class="postbox-header"><?php echo __('Auslöser', 'wpsg'); ?></h3>
+ <div class="inside">
+ <p>
+ <label for="trigger_event"><strong><?php echo __('Trigger Event', 'wpsg'); ?></strong></label><br />
+ <select class="widefat" id="trigger_event" name="trigger_event">
+ <option value="" <?php selected($selectedTriggerEvent, ''); ?>><?php echo __('Bitte auswählen', 'wpsg'); ?></option>
+ <?php foreach ($triggerEventOptions as $eventKey => $eventLabel) { ?>
+ <option value="<?php echo esc_attr($eventKey); ?>" <?php selected($selectedTriggerEvent, $eventKey); ?>><?php echo esc_html($eventLabel); ?></option>
+ <?php } ?>
+ <?php if ($selectedTriggerEvent !== '' && !isset($triggerEventOptions[$selectedTriggerEvent])) { ?>
+ <option value="<?php echo esc_attr($selectedTriggerEvent); ?>" selected="selected"><?php echo esc_html($selectedTriggerEvent); ?></option>
+ <?php } ?>
+ </select>
+ </p>
+ <p>
+ <label for="trigger_value"><strong><?php echo __('Trigger Wert (Produkt)', 'wpsg'); ?></strong></label><br />
+ <select class="widefat" id="trigger_value" name="trigger_value">
+ <option value=""><?php echo __('Produkt auswählen', 'wpsg'); ?></option>
+ <?php foreach ($triggerValueOptions as $productId => $productName) { ?>
+ <?php $productId = (string)intval($productId); ?>
+ <option value="<?php echo esc_attr($productId); ?>" <?php selected($selectedTriggerValue, $productId); ?>>
+ <?php echo esc_html($productName); ?> (<?php echo intval($productId); ?>)
+ </option>
+ <?php } ?>
+ <?php if ($selectedTriggerValue !== '' && !isset($triggerValueOptions[intval($selectedTriggerValue)])) { ?>
+ <option value="<?php echo esc_attr($selectedTriggerValue); ?>" selected="selected"><?php echo esc_html($selectedTriggerValue); ?></option>
+ <?php } ?>
+ </select>
+ <small><?php echo __('Für Trigger "WPSG: Produktkauf" wird hier die Produkt-ID ausgewählt.', 'wpsg'); ?></small>
+ </p>
+ </div>
+ </div>
+
+ <p>
+ <label for="delay_value"><strong><?php echo __('Verzögerung', 'wpsg'); ?></strong></label><br />
+ <input type="number" min="0" id="delay_value" name="delay_value" value="<?php echo intval($data['delay_value']); ?>" style="width:120px;" />
+ <select id="delay_unit" name="delay_unit">
+ <?php $units = $this->callMod('wpsg_mod_campaigns', 'getDelayUnitOptions'); if (!is_array($units)) $units = array(); foreach ($units as $unit => $unitLabel) { ?>
+ <option value="<?php echo esc_attr($unit); ?>" <?php selected($data['delay_unit'], $unit); ?>><?php echo esc_html($unitLabel); ?></option>
+ <?php } ?>
+ </select>
+ </p>
+
+ <div class="postbox">
+ <h3 class="postbox-header"><?php echo __('Bedingungen', 'wpsg'); ?></h3>
+ <div class="inside">
+ <?php include(WPSG_PATH_VIEW . '/mods/mod_campaigns/conditions_fields.phtml'); ?>
+ </div>
+ </div>
+
+ <?php /* "Aktionen"-Block vorerst deaktiviert: aktuell werden ausschließlich E-Mails
+ versendet, daher ist keine separate Aktionsdefinition nötig. Für spätere
+ Aktionstypen (siehe Doku-Ausblick) wieder aktivieren und dazu eine Spalte
+ `actions` anlegen sowie in saveTemplateAction() einlesen.
+ <div class="postbox">
+ <h3 class="postbox-header"><?php echo __('Aktionen', 'wpsg'); ?></h3>
+ <div class="inside">
+ <textarea id="actions" name="actions" rows="10" class="large-text code"><?php echo esc_textarea($data['actions']); ?></textarea>
+ </div>
+ </div>
+ */ ?>
+
+
+
+ </div>
+
+ <p class="submit">
+ <input type="submit" class="button-primary" name="submit" value="<?php echo __('Speichern', 'wpsg'); ?>" />
+ <input type="submit" class="button" name="submit_index" value="<?php echo __('Speichern und zur Übersicht', 'wpsg'); ?>" />
+ </p>
+
+ </div>
+ </div>
+ </form>
+</div>
diff --git a/views/mods/mod_campaigns/template_index.phtml b/views/mods/mod_campaigns/template_index.phtml
new file mode 100644
index 0000000..515a11c
--- /dev/null
+++ b/views/mods/mod_campaigns/template_index.phtml
@@ -0,0 +1,99 @@
+<?php
+$list = $this->view['mod_campaign_templates'];
+?>
+<div class="wrap wpng_template_index">
+ <h2>
+ <?php echo __('Versandprofile', 'wpsg'); ?>
+ <a href="<?php echo esc_url(admin_url('admin.php?page=wpng-mod_template&wpng_action=add')); ?>" class="button add-new-h2"><?php echo __('Neu hinzufügen', 'wpsg'); ?></a>
+ </h2>
+
+ <form id="wpsg_template_form" method="post" action="<?php echo esc_url(admin_url('admin.php?page=wpng-mod_template')); ?>">
+ <input type="hidden" id="order" name="filter[order]" value="<?php echo esc_attr($list['filter']['order']); ?>" />
+ <input type="hidden" id="direction" name="filter[direction]" value="<?php echo esc_attr($list['filter']['direction']); ?>" />
+
+ <p class="search-box wpng-search-box">
+ <label for="post-search-input" class="screen-reader-text"><?php echo __('Versandprofil suchen', 'wpsg'); ?></label>
+ <input type="text" value="<?php echo esc_attr($list['filter']['search']); ?>" name="filter[search]" id="post-search-input" />
+ <input type="submit" value="<?php echo __('Versandprofil suchen', 'wpsg'); ?>" class="button" id="search-submit" />
+ </p>
+
+ <?php if (is_array($list['data']) && sizeof($list['data']) > 0) { ?>
+ <div class="tablenav top wpng_tablenav">
+ <div class="tablenav-pages">
+ <span class="displaying-num"><?php echo intval($list['count']); ?> <?php echo __('Elemente', 'wpsg'); ?></span>
+ <span class="pagination-links">
+ <a onclick="return goPage(1);" href="#" class="first-page <?php echo (($list['seite'] == 1) ? 'disabled' : ''); ?>">«</a>
+ <a onclick="return goPage(<?php echo intval($list['seite']) - 1; ?>);" href="#" class="prev-page <?php echo (($list['seite'] <= 1) ? 'disabled' : ''); ?>">‹</a>
+ <span class="paging-input">
+ <input type="text" size="1" value="<?php echo intval($list['seite']); ?>" id="seite" name="seite" class="current-page" />
+ <?php echo __('von', 'wpsg'); ?>
+ <span class="total-pages"><?php echo intval($list['pages']); ?></span>
+ </span>
+ <a onclick="return goPage(<?php echo intval($list['seite']) + 1; ?>);" href="#" class="next-page <?php echo (($list['seite'] >= $list['pages']) ? 'disabled' : ''); ?>">›</a>
+ <a onclick="return goPage(<?php echo intval($list['pages']); ?>);" href="#" class="last-page <?php echo (($list['seite'] == $list['pages']) ? 'disabled' : ''); ?>">»</a>
+ </span>
+ </div>
+ </div>
+ <?php } ?>
+
+ <?php if (is_array($list['data']) && sizeof($list['data']) > 0) { ?>
+ <table class="widefat fixed striped">
+ <thead>
+ <tr>
+ <th><a href="#" onclick="return setOrder('id');"><?php echo __('ID', 'wpsg'); ?></a></th>
+ <th><a href="#" onclick="return setOrder('name');"><?php echo __('Name', 'wpsg'); ?></a></th>
+ <th><a href="#" onclick="return setOrder('trigger_event');"><?php echo __('Trigger', 'wpsg'); ?></a></th>
+ <th><a href="#" onclick="return setOrder('create_date');"><?php echo __('Erstellt', 'wpsg'); ?></a></th>
+ <th><?php echo __('Verzögerung', 'wpsg'); ?></th>
+ <th><?php echo __('Kampagnen', 'wpsg'); ?></th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach ($list['data'] as $row) { ?>
+ <tr>
+ <td><?php echo intval($row['id']); ?></td>
+ <td class="column-primary">
+ <strong><a href="<?php echo esc_url(admin_url('admin.php?page=wpng-mod_template&wpng_action=edit&id='.intval($row['id']))); ?>"><?php echo esc_html($row['name']); ?></a></strong>
+ <div class="row-actions">
+ <?php
+ $editUrl = admin_url('admin.php?page=wpng-mod_template&wpng_action=edit&id='.intval($row['id']));
+ $copyUrl = wp_nonce_url(admin_url('admin.php?page=wpng-mod_template&wpng_action=copy&id='.intval($row['id']).'&noheader=1'), 'wpsg-campaigns-copy-'.intval($row['id']));
+ $deleteUrl = wp_nonce_url(admin_url('admin.php?page=wpng-mod_template&wpng_action=delete&id='.intval($row['id']).'&noheader=1'), 'wpsg-campaigns-delete-'.intval($row['id']));
+ ?>
+ <span class="edit"><a href="<?php echo esc_url($editUrl); ?>"><?php echo __('Bearbeiten', 'wpsg'); ?></a></span> |
+ <span class="copy"><a onclick="return confirm('<?php echo esc_js(__('Die Daten werden kopiert und ein neuer Eintrag angelegt. Fortfahren?', 'wpsg')); ?>');" href="<?php echo esc_url($copyUrl); ?>"><?php echo __('Kopieren', 'wpsg'); ?></a></span> |
+ <span class="delete"><a onclick="return confirm('<?php echo esc_js(__('Sind Sie sicher, dass Sie diesen Eintrag löschen möchten?', 'wpsg')); ?>');" href="<?php echo esc_url($deleteUrl); ?>"><?php echo __('Löschen', 'wpsg'); ?></a></span>
+ </div>
+ </td>
+ <td><?php echo esc_html($row['trigger_event']); ?></td>
+ <td><?php echo (strtotime($row['create_date']) > 0) ? esc_html(date('d.m.Y H:i', strtotime($row['create_date']))) : '-'; ?></td>
+ <td><?php echo intval($row['delay_value']).' '.esc_html($this->callMod('wpsg_mod_campaigns', 'getDelayUnitLabel', array($row['delay_unit']))); ?></td>
+ <td>
+ <?php echo intval(isset($row['assigned_count']) ? $row['assigned_count'] : 0); ?>
+ <?php if (!empty($row['assigned_names'])) { ?><br /><small><?php echo esc_html($row['assigned_names']); ?></small><?php } ?>
+ </td>
+ </tr>
+ <?php } ?>
+ </tbody>
+ </table>
+ <?php } else { ?>
+ <p><?php echo __('Keine Versandprofile in der Datenbank.', 'wpsg'); ?></p>
+ <?php } ?>
+ </form>
+</div>
+
+<script type="text/javascript">
+function setOrder(column) {
+ jQuery('#order').val(column);
+ if (jQuery('#direction').val() === 'DESC') jQuery('#direction').val('ASC'); else jQuery('#direction').val('DESC');
+ jQuery('#wpsg_template_form').trigger('submit');
+ return false;
+}
+function goPage(page) {
+ if (page <= 0 || page > <?php echo intval($list['pages']); ?>) return false;
+ jQuery('#seite').val(page);
+ jQuery('#wpsg_template_form').trigger('submit');
+ return false;
+}
+jQuery(document).ready(function() { jQuery('.tablenav-pages .disabled').on('click', function() { return false; }); });
+</script>