@@ -133,6 +133,39 @@ public static function render_admin_page() {
133
133
?>
134
134
</p>
135
135
136
+ <h2>Advanced Options</h2>
137
+ <p>
138
+ <label>
139
+ <input
140
+ type="checkbox"
141
+ id="use_date_range"
142
+ name="use_date_range"
143
+ <?php disabled ( $ current_job instanceof AsyncJob ); ?>
144
+ />
145
+ Specify date range for generation
146
+ </label>
147
+ </p>
148
+ <div id="date_range_inputs" style="display: none;">
149
+ <p>
150
+ <label for="generate_start_date_input">Start date</label>
151
+ <input
152
+ id="generate_start_date_input"
153
+ type="date"
154
+ name="start_date"
155
+ value="<?php echo esc_attr ( date ( 'Y-m-d ' ) ); ?> "
156
+ <?php disabled ( $ current_job instanceof AsyncJob ); ?>
157
+ />
158
+ <label for="generate_end_date_input">End date</label>
159
+ <input
160
+ id="generate_end_date_input"
161
+ type="date"
162
+ name="end_date"
163
+ value="<?php echo esc_attr ( date ( 'Y-m-d ' ) ); ?> "
164
+ <?php disabled ( $ current_job instanceof AsyncJob ); ?>
165
+ />
166
+ </p>
167
+ </div>
168
+
136
169
<?php
137
170
submit_button (
138
171
'Cancel current job ' ,
@@ -146,6 +179,24 @@ public static function render_admin_page() {
146
179
<?php
147
180
148
181
self ::heartbeat_script ();
182
+ self ::date_range_toggle_script ();
183
+ }
184
+
185
+ /**
186
+ * Script to toggle date range inputs visibility.
187
+ *
188
+ * @return void
189
+ */
190
+ protected static function date_range_toggle_script () {
191
+ ?>
192
+ <script>
193
+ ( function( $ ) {
194
+ $( '#use_date_range' ).on( 'change', function() {
195
+ $( '#date_range_inputs' ).toggle( this.checked );
196
+ } );
197
+ } )( jQuery );
198
+ </script>
199
+ <?php
149
200
}
150
201
151
202
/**
@@ -159,7 +210,7 @@ protected static function heartbeat_script() {
159
210
( function( $ ) {
160
211
const $document = $( document );
161
212
const $progress = $( '#smoothgenerator-progress-bar' );
162
- const $controls = $( '[id^="generate_"]' );
213
+ const $controls = $( '[id^="generate_"], #use_date_range, #date_range_inputs input ' );
163
214
const $cancel = $( '#cancel_job' );
164
215
165
216
$document.on( 'ready', function () {
@@ -232,14 +283,21 @@ public static function receive_heartbeat( array $response, array $data, $screen_
232
283
* Process the generation.
233
284
*/
234
285
public static function process_page_submit () {
286
+ $ args = array ();
287
+
288
+ if ( ! empty ( $ _POST ['use_date_range ' ] ) ) {
289
+ $ args ['date-start ' ] = sanitize_text_field ( $ _POST ['start_date ' ] );
290
+ $ args ['date-end ' ] = sanitize_text_field ( $ _POST ['end_date ' ] );
291
+ }
292
+
235
293
if ( ! empty ( $ _POST ['generate_products ' ] ) && ! empty ( $ _POST ['num_products_to_generate ' ] ) ) {
236
294
check_admin_referer ( 'generate ' , 'smoothgenerator_nonce ' );
237
295
$ num_to_generate = absint ( $ _POST ['num_products_to_generate ' ] );
238
- BatchProcessor::create_new_job ( 'products ' , $ num_to_generate );
296
+ BatchProcessor::create_new_job ( 'products ' , $ num_to_generate, $ args );
239
297
} else if ( ! empty ( $ _POST ['generate_orders ' ] ) && ! empty ( $ _POST ['num_orders_to_generate ' ] ) ) {
240
298
check_admin_referer ( 'generate ' , 'smoothgenerator_nonce ' );
241
299
$ num_to_generate = absint ( $ _POST ['num_orders_to_generate ' ] );
242
- BatchProcessor::create_new_job ( 'orders ' , $ num_to_generate );
300
+ BatchProcessor::create_new_job ( 'orders ' , $ num_to_generate, $ args );
243
301
} else if ( ! empty ( $ _POST ['cancel_job ' ] ) ) {
244
302
check_admin_referer ( 'generate ' , 'smoothgenerator_nonce ' );
245
303
BatchProcessor::delete_current_job ();
0 commit comments