diff options
Diffstat (limited to 'views/mods')
| -rw-r--r-- | views/mods/mod_campaigns/campaign_addedit.phtml | 210 | ||||
| -rw-r--r-- | views/mods/mod_campaigns/campaign_index.phtml | 102 | ||||
| -rw-r--r-- | views/mods/mod_campaigns/conditions_fields.phtml | 83 | ||||
| -rw-r--r-- | views/mods/mod_campaigns/template_addedit.phtml | 151 | ||||
| -rw-r--r-- | views/mods/mod_campaigns/template_index.phtml | 99 |
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> |
