summaryrefslogtreecommitdiff
path: root/views/mods
diff options
context:
space:
mode:
Diffstat (limited to 'views/mods')
-rw-r--r--views/mods/mod_campaigns/campaign_addedit.phtml32
-rw-r--r--views/mods/mod_campaigns/conditions_fields.phtml5
-rw-r--r--views/mods/mod_campaigns/template_addedit.phtml75
3 files changed, 107 insertions, 5 deletions
diff --git a/views/mods/mod_campaigns/campaign_addedit.phtml b/views/mods/mod_campaigns/campaign_addedit.phtml
index 538d663..69d6fb2 100644
--- a/views/mods/mod_campaigns/campaign_addedit.phtml
+++ b/views/mods/mod_campaigns/campaign_addedit.phtml
@@ -69,7 +69,7 @@
<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); ?>>
+ <option value="<?php echo $templateId; ?>" data-trigger-event="<?php echo esc_attr((string)($template['trigger_event'] ?? '')); ?>" <?php selected($assignedTemplateId, $templateId); ?>>
<?php echo esc_html($template['name']); ?>
</option>
<?php } ?>
@@ -212,3 +212,33 @@
</div>
</form>
</div>
+<script type="text/javascript">/* <![CDATA[ */
+
+ /**
+ * Die Bedingung "Bestellstatus" ergibt nur Sinn, wenn das zugeordnete Versandprofil auf
+ * den Statuswechsel-Trigger steht. Beim Produktkauf steht die Bestellung zum
+ * Pruefzeitpunkt immer auf "Eingegangen" — die Bedingung koennte dort nur diesen einen
+ * Wert treffen und wuerde jede andere Auswahl den Versand verhindern.
+ */
+ ( function() {
+
+ var elTemplate = document.getElementById('template_id');
+ var elCond = document.getElementById('wpsg_cond_order_status_wrap');
+
+ if (!elTemplate || !elCond) return;
+
+ function wpsgToggleStatusCondition() {
+
+ var elOption = elTemplate.options[elTemplate.selectedIndex];
+ var sEvent = (elOption ? elOption.getAttribute('data-trigger-event') : '');
+
+ elCond.style.display = ((sEvent === 'order_status') ? '' : 'none');
+
+ }
+
+ elTemplate.addEventListener('change', wpsgToggleStatusCondition);
+ wpsgToggleStatusCondition();
+
+ } )();
+
+/* ]]> */</script>
diff --git a/views/mods/mod_campaigns/conditions_fields.phtml b/views/mods/mod_campaigns/conditions_fields.phtml
index 25c8379..66f1ae1 100644
--- a/views/mods/mod_campaigns/conditions_fields.phtml
+++ b/views/mods/mod_campaigns/conditions_fields.phtml
@@ -22,7 +22,10 @@
?>
<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>
+<?php /* Wird bei Produktkauf-Kampagnen ausgeblendet: dort steht die Bestellung zum
+ Pruefzeitpunkt immer auf "Eingegangen", die Bedingung koennte also nur diesen
+ einen Wert treffen. Das Ein-/Ausblenden uebernimmt das jeweilige Formular. */ ?>
+<p id="wpsg_cond_order_status_wrap">
<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>
diff --git a/views/mods/mod_campaigns/template_addedit.phtml b/views/mods/mod_campaigns/template_addedit.phtml
index 06ea4ef..f46400b 100644
--- a/views/mods/mod_campaigns/template_addedit.phtml
+++ b/views/mods/mod_campaigns/template_addedit.phtml
@@ -5,8 +5,11 @@
$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;
+ $triggerStatusOptions = isset($this->view['template_trigger_status_options']) && is_array($this->view['template_trigger_status_options']) ? $this->view['template_trigger_status_options'] : array();
$selectedTriggerEvent = (string)$data['trigger_event'];
$selectedTriggerValue = (string)$data['trigger_value'];
+ $selectedTriggerProduct = (($data['trigger_product'] === null || $data['trigger_product'] === '')?'':(string)intval($data['trigger_product']));
+ $bStatusTrigger = ($selectedTriggerEvent === 'order_status');
?>
<div class="wrap columns-2 wpng_template_addedit">
<div class="icon32 icon32-posts-post" id="icon-edit"><br></div>
@@ -88,9 +91,9 @@
<?php } ?>
</select>
</p>
- <p>
+ <p id="wpsg_trigger_value_product_wrap"<?php if ($bStatusTrigger) { ?> style="display:none;"<?php } ?>>
<label for="trigger_value"><strong><?php echo __('Trigger Wert (Produkt)', 'wpsg'); ?></strong></label><br />
- <select class="widefat" id="trigger_value" name="trigger_value">
+ <select class="widefat" id="trigger_value" name="trigger_value"<?php if ($bStatusTrigger) { ?> disabled="disabled"<?php } ?>>
<option value=""><?php echo __('Produkt auswählen', 'wpsg'); ?></option>
<?php foreach ($triggerValueOptions as $productId => $productName) { ?>
<?php $productId = (string)intval($productId); ?>
@@ -98,12 +101,35 @@
<?php echo esc_html($productName); ?> (<?php echo intval($productId); ?>)
</option>
<?php } ?>
- <?php if ($selectedTriggerValue !== '' && !isset($triggerValueOptions[intval($selectedTriggerValue)])) { ?>
+ <?php if (!$bStatusTrigger && $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>
+ <p id="wpsg_trigger_value_status_wrap"<?php if (!$bStatusTrigger) { ?> style="display:none;"<?php } ?>>
+ <label for="trigger_value_status"><strong><?php echo __('Trigger Wert (Zielstatus)', 'wpsg'); ?></strong></label><br />
+ <select class="widefat" id="trigger_value_status" name="trigger_value"<?php if (!$bStatusTrigger) { ?> disabled="disabled"<?php } ?>>
+ <option value=""><?php echo __('Bitte auswählen', 'wpsg'); ?></option>
+ <?php foreach ($triggerStatusOptions as $statusKey => $statusLabel) { ?>
+ <option value="<?php echo esc_attr((string)$statusKey); ?>" <?php selected($selectedTriggerValue, (string)$statusKey); ?>><?php echo esc_html($statusLabel); ?></option>
+ <?php } ?>
+ </select>
+ <small><?php echo __('Die Kampagne wird ausgelöst, sobald eine Bestellung diesen Status erreicht.', 'wpsg'); ?></small>
+ </p>
+ <p id="wpsg_trigger_product_wrap"<?php if (!$bStatusTrigger) { ?> style="display:none;"<?php } ?>>
+ <label for="trigger_product"><strong><?php echo __('Produkt (optional)', 'wpsg'); ?></strong></label><br />
+ <select class="widefat" id="trigger_product" name="trigger_product"<?php if (!$bStatusTrigger) { ?> disabled="disabled"<?php } ?>>
+ <option value=""><?php echo __('Alle Bestellungen', 'wpsg'); ?></option>
+ <?php foreach ($triggerValueOptions as $productId => $productName) { ?>
+ <?php $productId = (string)intval($productId); ?>
+ <option value="<?php echo esc_attr($productId); ?>" <?php selected($selectedTriggerProduct, $productId); ?>>
+ <?php echo esc_html($productName); ?> (<?php echo intval($productId); ?>)
+ </option>
+ <?php } ?>
+ </select>
+ <small><?php echo __('Ohne Auswahl gilt die Kampagne für jede Bestellung, die den Zielstatus erreicht.', 'wpsg'); ?></small>
+ </p>
</div>
</div>
@@ -149,3 +175,46 @@
</div>
</form>
</div>
+<script type="text/javascript">/* <![CDATA[ */
+
+ /**
+ * Schaltet die Trigger-Felder passend zum gewaehlten Ereignis um. Das jeweils nicht
+ * benutzte Feld wird zusaetzlich deaktiviert, damit es nicht mitgesendet wird — beide
+ * Auswahlfelder heissen trigger_value.
+ */
+ ( function() {
+
+ var elEvent = document.getElementById('trigger_event');
+
+ if (!elEvent) return;
+
+ function wpsgToggleTrigger() {
+
+ var bStatus = (elEvent.value === 'order_status');
+
+ [
+ ['wpsg_trigger_value_product_wrap', 'trigger_value', !bStatus],
+ ['wpsg_trigger_value_status_wrap', 'trigger_value_status', bStatus],
+ ['wpsg_trigger_product_wrap', 'trigger_product', bStatus]
+ ].forEach(function(a) {
+
+ var elWrap = document.getElementById(a[0]);
+ var elField = document.getElementById(a[1]);
+
+ if (elWrap) elWrap.style.display = (a[2] ? '' : 'none');
+ if (elField) elField.disabled = !a[2];
+
+ });
+
+ // Der Bestellstatus als Bedingung ergibt nur beim Statuswechsel-Trigger Sinn.
+ var elCond = document.getElementById('wpsg_cond_order_status_wrap');
+ if (elCond) elCond.style.display = (bStatus ? '' : 'none');
+
+ }
+
+ elEvent.addEventListener('change', wpsgToggleTrigger);
+ wpsgToggleTrigger();
+
+ } )();
+
+/* ]]> */</script>