152 lines
11 KiB
PHP
152 lines
11 KiB
PHP
<?php
|
|
// Prevent direct access
|
|
if (!defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
|
|
$current_page = sanitize_text_field($_GET['page'] ?? 'sodino-add-rule');
|
|
$conditions = function_exists('sodino_old_input') ? sodino_old_input('conditions', $rule->conditions) : $rule->conditions;
|
|
$actions = function_exists('sodino_old_input') ? sodino_old_input('actions', $rule->actions) : $rule->actions;
|
|
$conditions = is_array($conditions) && $conditions ? array_values($conditions) : [['type' => 'user_type', 'operator' => 'is', 'value' => 'new']];
|
|
$actions = is_array($actions) && $actions ? array_values($actions) : [['type' => 'discount_percent', 'value' => 10]];
|
|
$product_categories = get_terms(['taxonomy' => 'product_cat', 'hide_empty' => false]);
|
|
$product_tags = get_terms(['taxonomy' => 'product_tag', 'hide_empty' => false]);
|
|
$weekdays = [
|
|
'1' => __('دوشنبه', 'sodino'),
|
|
'2' => __('سهشنبه', 'sodino'),
|
|
'3' => __('چهارشنبه', 'sodino'),
|
|
'4' => __('پنجشنبه', 'sodino'),
|
|
'5' => __('جمعه', 'sodino'),
|
|
'6' => __('شنبه', 'sodino'),
|
|
'7' => __('یکشنبه', 'sodino'),
|
|
];
|
|
?>
|
|
<div id="sodino-app" class="min-h-screen bg-gray-50" dir="rtl">
|
|
<div class="bg-white border-b border-gray-200">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="py-6">
|
|
<h1 class="text-3xl font-bold text-gray-900"><?php _e('سودینو', 'sodino'); ?></h1>
|
|
<p class="mt-1 text-sm text-gray-500"><?php _e('ساخت قوانین قیمتگذاری پیشرفته برای ووکامرس', 'sodino'); ?></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
|
<?php if (function_exists('sodino_render_admin_notice')) { sodino_render_admin_notice(); } ?>
|
|
<div class="flex gap-8">
|
|
<?php include SODINO_PLUGIN_DIR . 'admin/components/sidebar.php'; ?>
|
|
|
|
<main class="flex-1 min-w-0">
|
|
<div class="bg-white rounded-lg shadow-sm border border-gray-200 p-6 mb-6">
|
|
<div class="flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between">
|
|
<div>
|
|
<h2 class="text-2xl font-semibold text-gray-900"><?php echo $rule->id ? __('ویرایش قانون پیشرفته', 'sodino') : __('افزودن قانون پیشرفته', 'sodino'); ?></h2>
|
|
<p class="mt-2 text-gray-600"><?php _e('چند شرط را با هم ترکیب کنید و چند عملیات قیمتگذاری را به ترتیب اعمال کنید.', 'sodino'); ?></p>
|
|
</div>
|
|
<a href="<?php echo esc_url(admin_url('admin.php?page=sodino-rules')); ?>" class="inline-flex items-center justify-center rounded-lg border border-gray-300 bg-white px-4 py-2 text-sm font-semibold text-gray-700 hover:bg-gray-50">
|
|
<?php _e('بازگشت به قوانین', 'sodino'); ?>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<form method="post" class="space-y-6" id="sodino-rule-form">
|
|
<?php wp_nonce_field('sodino_save_rule', 'sodino_rule_nonce'); ?>
|
|
|
|
<section class="bg-white rounded-lg shadow-sm border border-gray-200 p-6">
|
|
<h3 class="text-lg font-semibold text-gray-900 mb-5"><?php _e('اطلاعات اصلی', 'sodino'); ?></h3>
|
|
<div class="grid gap-6 md:grid-cols-2">
|
|
<div class="md:col-span-2">
|
|
<label for="name" class="block text-sm font-medium text-gray-700 mb-2"><?php _e('عنوان قانون', 'sodino'); ?></label>
|
|
<input type="text" name="name" id="name" value="<?php echo esc_attr(function_exists('sodino_old_input') ? sodino_old_input('name', $rule->name) : $rule->name); ?>" class="w-full rounded-lg border border-gray-300 bg-white px-4 py-3 text-gray-700 shadow-sm focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-100" required>
|
|
</div>
|
|
|
|
<div>
|
|
<label for="priority" class="block text-sm font-medium text-gray-700 mb-2"><?php _e('اولویت', 'sodino'); ?></label>
|
|
<input type="number" name="priority" id="priority" value="<?php echo esc_attr(function_exists('sodino_old_input') ? sodino_old_input('priority', $rule->priority ?: 10) : ($rule->priority ?: 10)); ?>" min="1" class="w-full rounded-lg border border-gray-300 bg-white px-4 py-3 text-gray-700 shadow-sm">
|
|
</div>
|
|
|
|
<div>
|
|
<label for="usage_limit" class="block text-sm font-medium text-gray-700 mb-2"><?php _e('محدودیت استفاده', 'sodino'); ?></label>
|
|
<input type="number" name="usage_limit" id="usage_limit" value="<?php echo esc_attr(function_exists('sodino_old_input') ? sodino_old_input('usage_limit', $rule->usage_limit ?? 0) : ($rule->usage_limit ?? 0)); ?>" min="0" class="w-full rounded-lg border border-gray-300 bg-white px-4 py-3 text-gray-700 shadow-sm">
|
|
</div>
|
|
|
|
<div>
|
|
<label for="start_date" class="block text-sm font-medium text-gray-700 mb-2"><?php _e('شروع', 'sodino'); ?></label>
|
|
<input type="datetime-local" name="start_date" id="start_date" value="<?php echo esc_attr($rule->start_date ? date('Y-m-d\TH:i', strtotime($rule->start_date)) : ''); ?>" class="w-full rounded-lg border border-gray-300 bg-white px-4 py-3 text-gray-700 shadow-sm">
|
|
</div>
|
|
|
|
<div>
|
|
<label for="end_date" class="block text-sm font-medium text-gray-700 mb-2"><?php _e('پایان', 'sodino'); ?></label>
|
|
<input type="datetime-local" name="end_date" id="end_date" value="<?php echo esc_attr($rule->end_date ? date('Y-m-d\TH:i', strtotime($rule->end_date)) : ''); ?>" class="w-full rounded-lg border border-gray-300 bg-white px-4 py-3 text-gray-700 shadow-sm">
|
|
</div>
|
|
|
|
<div class="md:col-span-2">
|
|
<label for="user_roles" class="block text-sm font-medium text-gray-700 mb-2"><?php _e('نقشهای مجاز', 'sodino'); ?></label>
|
|
<select name="user_roles[]" id="user_roles" class="w-full rounded-lg border border-gray-300 bg-white px-4 py-3 text-gray-700 shadow-sm" multiple size="4">
|
|
<?php foreach (wp_roles()->roles as $role_key => $role_data) : ?>
|
|
<option value="<?php echo esc_attr($role_key); ?>" <?php selected(in_array($role_key, (array) $rule->user_roles, true)); ?>><?php echo esc_html($role_data['name']); ?></option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
<p class="mt-2 text-sm text-gray-500"><?php _e('خالی بماند یعنی برای همه نقشها.', 'sodino'); ?></p>
|
|
</div>
|
|
|
|
<div class="md:col-span-2">
|
|
<label class="flex items-center gap-3 text-gray-700">
|
|
<input type="checkbox" name="enabled" value="1" <?php checked($rule->enabled, 1); ?> class="h-5 w-5 rounded border-gray-300 text-blue-600">
|
|
<span><?php _e('قانون فعال باشد', 'sodino'); ?></span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="bg-white rounded-lg shadow-sm border border-gray-200 p-6">
|
|
<div class="flex items-center justify-between mb-5">
|
|
<div>
|
|
<h3 class="text-lg font-semibold text-gray-900"><?php _e('شرطها', 'sodino'); ?></h3>
|
|
<p class="mt-1 text-sm text-gray-500"><?php _e('همه شرطهای زیر باید برقرار باشند تا قانون اعمال شود.', 'sodino'); ?></p>
|
|
</div>
|
|
<button type="button" class="sodino-add-row rounded-lg border border-gray-300 bg-white px-4 py-2 text-sm font-semibold text-gray-700 hover:bg-gray-50" data-target="conditions"><?php _e('افزودن شرط', 'sodino'); ?></button>
|
|
</div>
|
|
|
|
<div id="sodino-conditions" class="space-y-4">
|
|
<?php foreach ($conditions as $index => $condition) : ?>
|
|
<?php include SODINO_PLUGIN_DIR . 'admin/views/partials/rule-condition-row.php'; ?>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="bg-white rounded-lg shadow-sm border border-gray-200 p-6">
|
|
<div class="flex items-center justify-between mb-5">
|
|
<div>
|
|
<h3 class="text-lg font-semibold text-gray-900"><?php _e('عملیاتها', 'sodino'); ?></h3>
|
|
<p class="mt-1 text-sm text-gray-500"><?php _e('عملیاتها به ترتیب روی قیمت اعمال میشوند.', 'sodino'); ?></p>
|
|
</div>
|
|
<button type="button" class="sodino-add-row rounded-lg border border-gray-300 bg-white px-4 py-2 text-sm font-semibold text-gray-700 hover:bg-gray-50" data-target="actions"><?php _e('افزودن عملیات', 'sodino'); ?></button>
|
|
</div>
|
|
|
|
<div id="sodino-actions" class="space-y-4">
|
|
<?php foreach ($actions as $index => $action) : ?>
|
|
<?php include SODINO_PLUGIN_DIR . 'admin/views/partials/rule-action-row.php'; ?>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
</section>
|
|
|
|
<div class="flex justify-end">
|
|
<button type="submit" class="inline-flex items-center justify-center rounded-lg bg-blue-600 px-6 py-3 text-sm font-semibold text-white hover:bg-blue-700">
|
|
<?php echo $rule->id ? __('ذخیره تغییرات قانون', 'sodino') : __('ایجاد قانون', 'sodino'); ?>
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</main>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<template id="sodino-condition-template">
|
|
<?php $index = '__INDEX__'; $condition = ['type' => 'user_type', 'operator' => 'is', 'value' => 'new']; include SODINO_PLUGIN_DIR . 'admin/views/partials/rule-condition-row.php'; ?>
|
|
</template>
|
|
|
|
<template id="sodino-action-template">
|
|
<?php $index = '__INDEX__'; $action = ['type' => 'discount_percent', 'value' => 10]; include SODINO_PLUGIN_DIR . 'admin/views/partials/rule-action-row.php'; ?>
|
|
</template>
|