Re: Can't Enter Order Delivery Date on Step 1 of 3 of Checkout
Using Order Delivery Date v2.6.1 and OPC v2.0.4 on Zen Cart 1.5.5f. Here's what's needed for the integration:
* Update your template's version of checkout_one.css, appending the styling provided by ODD's checkout_shipping.css.
* Copy the ODD files provided in /includes/modules/pages/checkout_shipping to /includes/modules/pages/checkout_one.
* Copy /includes/templates/template_default/templates/tpl_modules_opc_shipping_choices.php to /includes/templates/YOUR_TEMPLATE/templates/ and make the changes highlighted below:
Code:
<div id="checkoutShippingContentChoose" class="important"><?php echo TEXT_NO_SHIPPING_AVAILABLE; ?></div>
<?php
}
?>
<!-- Bof Order Delivery Date -->
<?php if (isset($display_delivery_date) ? $display_delivery_date : true) { ?>
<fieldset class="shipping" id="order_delivery_date">
<legend><?php echo sprintf(TABLE_HEADING_DELIVERY_DATE, (defined('MIN_DISPLAY_DELIVERY_DATE') && MIN_DISPLAY_DELIVERY_DATE > 0 && (method_exists($zcObserverOrderDeliveryDateObserver, 'display_delivery_date') ? $zcObserverOrderDeliveryDateObserver->display_delivery_date($order) : true)) ? TABLE_HEADING_DELIVERY_DATE_IS_REQUIRED : TABLE_HEADING_DELIVERY_DATE_IS_OPTIONAL); ?></legend>
<label for="order_delivery_date">Date:</label>
<input id="date" name="order_delivery_date" type="text" value="<?php echo $order_delivery_date; ?>">
</fieldset>
<?php } ?>
<!-- Eof Order Delivery Date -->
<?php
} //-Order is not "virtual", display full shipping-method block
* Copy /includes/templates/template_default/templates/tpl_checkout_one_confirmation.php to /includes/templates/YOUR_TEMPLATE/templates/ and make the changes highlighted below:
Code:
<h3 id="checkoutConfirmDefaultShipment"><?php echo HEADING_SHIPPING_METHOD; ?></h3>
<h4 id="checkoutConfirmDefaultShipmentTitle"><?php echo $order->info['shipping_method']; ?></h4>
<?php
/* BEGIN Order Delivery Date */
if (isset($display_order_delivery_date) && $display_order_delivery_date) { ?>
<br />
<h3><?php echo TABLE_HEADING_DELIVERY_DATE; ?></h3>
<div class="buttonRow forward"><?php echo '<a href="' . $editShippingButtonLink . '">' . zen_image_button(BUTTON_IMAGE_EDIT_SMALL, BUTTON_EDIT_SMALL_ALT) . '</a>'; ?></div>
<h4><?php echo $order_delivery_date_text; ?></h4><br />
<?php } /* END Order Delivery Date*/
}
?>
</div>
* Update your admin's Configuration->One-Page Checkout Settings, adding each payment method you support to the Payment Methods Requiring Confirmation list.
* Copy /includes/languages/english/checkout_one_confirmation.php to /includes/languages/english/YOUR_TEMPLATE/checkout_one_confirmation.php and add the language constants required by ODD (you wouldn't need to do this if they were in an extra_definitions file).
Re: Can't Enter Order Delivery Date on Step 1 of 3 of Checkout
Quote:
Originally Posted by
lat9
Using Order Delivery Date v2.6.1 and OPC v2.0.4 on Zen Cart 1.5.5f. Here's what's needed for the integration:
* Update your template's version of checkout_one.css, appending the styling provided by ODD's checkout_shipping.css.
* Copy the ODD files provided in /includes/modules/pages/checkout_shipping to /includes/modules/pages/checkout_one.
* Copy /includes/templates/template_default/templates/tpl_modules_opc_shipping_choices.php to /includes/templates/YOUR_TEMPLATE/templates/ and make the changes highlighted below:
Code:
<div id="checkoutShippingContentChoose" class="important"><?php echo TEXT_NO_SHIPPING_AVAILABLE; ?></div>
<?php
}
?>
<!-- Bof Order Delivery Date -->
<?php if (isset($display_delivery_date) ? $display_delivery_date : true) { ?>
<fieldset class="shipping" id="order_delivery_date">
<legend><?php echo sprintf(TABLE_HEADING_DELIVERY_DATE, (defined('MIN_DISPLAY_DELIVERY_DATE') && MIN_DISPLAY_DELIVERY_DATE > 0 && (method_exists($zcObserverOrderDeliveryDateObserver, 'display_delivery_date') ? $zcObserverOrderDeliveryDateObserver->display_delivery_date($order) : true)) ? TABLE_HEADING_DELIVERY_DATE_IS_REQUIRED : TABLE_HEADING_DELIVERY_DATE_IS_OPTIONAL); ?></legend>
<label for="order_delivery_date">Date:</label>
<input id="date" name="order_delivery_date" type="text" value="<?php echo $order_delivery_date; ?>">
</fieldset>
<?php } ?>
<!-- Eof Order Delivery Date -->
<?php
} //-Order is not "virtual", display full shipping-method block
* Copy /includes/templates/template_default/templates/tpl_checkout_one_confirmation.php to /includes/templates/YOUR_TEMPLATE/templates/ and make the changes highlighted below:
Code:
<h3 id="checkoutConfirmDefaultShipment"><?php echo HEADING_SHIPPING_METHOD; ?></h3>
<h4 id="checkoutConfirmDefaultShipmentTitle"><?php echo $order->info['shipping_method']; ?></h4>
<?php
/* BEGIN Order Delivery Date */
if (isset($display_order_delivery_date) && $display_order_delivery_date) { ?>
<br />
<h3><?php echo TABLE_HEADING_DELIVERY_DATE; ?></h3>
<div class="buttonRow forward"><?php echo '<a href="' . $editShippingButtonLink . '">' . zen_image_button(BUTTON_IMAGE_EDIT_SMALL, BUTTON_EDIT_SMALL_ALT) . '</a>'; ?></div>
<h4><?php echo $order_delivery_date_text; ?></h4><br />
<?php } /* END Order Delivery Date*/
}
?>
</div>
* Update your admin's
Configuration->One-Page Checkout Settings, adding each payment method you support to the
Payment Methods Requiring Confirmation list.
* Copy /includes/languages/english/checkout_one_confirmation.php to /includes/languages/english/YOUR_TEMPLATE/checkout_one_confirmation.php and add the language constants required by ODD (you wouldn't need to do this if they were in an extra_definitions file).
Thank you very much. It seems to be working like a charm so far. This should even be part of the readme file or something.
I do have 2 last questions on this mods.
First, I am using this an older version of this plugin on another website with ZC 1.5.1. I did the change on post #7 of this threads so ODD will move forward to the next day after a certain time.
Is there a way of doing the same thing with the newer version of ODD? I have it set to 0 now so it allows same day delivery all day. However, I need it to move forward to the next day once it pass like 1 PM.
Second, the inverted date is still a little bit confusing. I tried to change Y-m-d to m-d-Y but it just breaks the whole thing.
Sorry for the long post. I am in no way a programmer obviously and I could use some more help
Thank you
Re: Can't Enter Order Delivery Date on Step 1 of 3 of Checkout
Quote:
Originally Posted by
nicksab
Thank you very much. It seems to be working like a charm so far. This should even be part of the readme file or something.
I do have 2 last questions on this mods.
First, I am using this an older version of this plugin on another website with ZC 1.5.1. I did the change on post #7 of this threads so ODD will move forward to the next day after a certain time.
Is there a way of doing the same thing with the newer version of ODD? I have it set to 0 now so it allows same day delivery all day. However, I need it to move forward to the next day once it pass like 1 PM.
Second, the inverted date is still a little bit confusing. I tried to change Y-m-d to m-d-Y but it just breaks the whole thing.
Sorry for the long post. I am in no way a programmer obviously and I could use some more help
Thank you
The application as generally provided has been put together to use javascript. The current javascript code being used does not differentiate options by hours; however, there are some options available. For one, to revert back to what was used when this plugin was first developed would modify the below code found in includes/templates/YOUR_TEMPLATE/templates/tpl_checkout_shipping_default.php:
Code:
<!-- Bof Order Delivery Date -->
<?php if (isset($display_delivery_date) ? $display_delivery_date : true) { ?>
<fieldset class="shipping" id="order_delivery_date">
<legend><?php echo sprintf(TABLE_HEADING_DELIVERY_DATE, (defined('MIN_DISPLAY_DELIVERY_DATE') && MIN_DISPLAY_DELIVERY_DATE > 0 && (method_exists($zcObserverOrderDeliveryDateObserver, 'display_delivery_date') ? $zcObserverOrderDeliveryDateObserver->display_delivery_date($order) : true)) ? TABLE_HEADING_DELIVERY_DATE_IS_REQUIRED : TABLE_HEADING_DELIVERY_DATE_IS_OPTIONAL); ?></legend>
<label for="order_delivery_date">Date:</label>
<input id="date" name="order_delivery_date" type="text" value="<?php echo $order_delivery_date; ?>">
</fieldset>
<?php } ?>
<!-- Eof Order Delivery Date -->
and to replace the input line with:
Code:
<select name="order_delivery_date">
<?php
$current_time = (date("h:ia"));
$current_hour = (date("H")); // 24 hour time as two digits
$begin_cutoff_hour = '10'; // set on a 24 hour time clock
$end_cutoff_hour = '19'; // set on a 24 basis - "19" would be 7pm
$time_zone_adjust = '0'; // use this to adjust your hour value forward or backwards
$display_current_time = false; // Chage to "true" to check your system time for adjustments to $time_zone_adjust. Result will be echo'd to browser below ship date dropdown menu
$current_adjusted_hour = ($current_hour + $time_zone_adjust);
if($current_adjusted_hour <= $begin_cutoff_hour) {
$date_offset = '0';
}
else {
$date_offset = '1';
}
for ($i=$date_offset, $n=50; $i < $n; $i++) {
$now[$i] = strtotime ("+$i day", time());
if ( strftime ("%w",$now[$i])<>0
AND strftime ("%m-%d",$now[$i])<>"12-25"
AND strftime ("%m-%d",$now[$i])<>"12-26"
AND strftime ("%m-%d",$now[$i])<>"01-01"
){
echo '<option value="'.strftime ("%Y-%m-%d",$now[$i]).'">'.strftime ("%A %d %B %Y",$now[$i]).'</option>';
}
}
?>
</select>
Modifying the content of the for loop as necessary to support your business and date(s).
The date/time will still be stored in the database expected format of year-month-day; however, the selection option will be presented as desired/formatted.
As to using the provided javascript calendar to display the format differently, basically I envision that additional javascript would be necessary to do something like hide the provided input box providing an additional box that is formatted to display the result(s) desired and updated when the base data is modified. The reason for this operation is that if the visiting customer either does not have javascript/jquery/etc..., has disabled it, or there is a network problem, then the existing field would still be displayed and support data entry, though it would be expected to be in the year-month-day format.
Alternatively, the includes/modules/pages/checkout_shipping/jscript_calendar_head.php file could be modified following the instruction of the file and possibly the logic of above to disable today's date based on the page load time being above a certain value. This could be done by setting/adjusting the DIRECTION parameter following this instruction that is contained in the file:
Quote:
DIRECTION - A positive or negative integer that determines the calendar's direction: n (a positive number) the calendar is future-only beginning at n days after today; -n (a negative number) the calendar is past-only ending at n days before today; 0 (zero) the calendar has no future or past restrictions (default). Note if you would like the calendar to be directional starting from today–as opposed to (1) tomorrow or (-1) yesterday–use a positive or negative fraction, such as direction: .5 (future-only, starting today).
This could be applied by the following in that file changing the default:
Code:
?>
<script type="text/javascript">
window.addEvent('domready', function() { myCal = new Calendar({ date: 'Y-m-d' }, { blocked: ['24-25,31 12 *', '0 * * 0'], direction: 3, draggable: false }); });
</script>
<?php /*
to:
Code:
$current_time = (date("h:ia"));
$current_hour = (date("H")); // 24 hour time as two digits
$begin_cutoff_hour = '10'; // set on a 24 hour time clock representing the hour portion of time where still can use the "earliest" available date.
$time_zone_adjust = '0'; // use this to adjust your hour value forward or backwards
$display_current_time = false; // Change to "true" to check your system time for adjustments to $time_zone_adjust. Result will be echo'd to browser below ship date dropdown menu (if applicable echo code has been added there see post #7 of the forum thread).
$current_adjusted_hour = ($current_hour + $time_zone_adjust);
$direction_add = 1;
if($current_adjusted_hour <= $begin_cutoff_hour) {
$direction_add = 0;
}
?>
<script type="text/javascript">
window.addEvent('domready', function() { myCal = new Calendar({ date: 'Y-m-d' }, { blocked: ['24-25,31 12 *', '0 * * 0'], direction: <?php echo 3 + $direction_add; ?>, draggable: false }); });
</script>
<?php /*
The echo 3 + $direction_add will either add a day or not to the existing 3 days from today.
As for instructions, well, I had set out to incorporate direction similar to above; however, besides at the time getting to a point of just moving on (still need to report issues encountered at the plugin's thread) also realized that the other plugin is still changing in various ways so didn't want to make the instructions so detailed that they have to change daily plus not being involved in the day-to-day development don't necessarily know the next direction it will take.
Re: Can't Enter Order Delivery Date on Step 1 of 3 of Checkout
Quick question - if I have 1.5.4 installed should I be using the 1.5.1 or 1.5.5 version ?
Re: Can't Enter Order Delivery Date on Step 1 of 3 of Checkout
Quote:
Originally Posted by
royaldave
Quick question - if I have 1.5.4 installed should I be using the 1.5.1 or 1.5.5 version ?
Stuck your foot out there did you? :) The right answer is that should be using ZC 1.5.5 or the most recently released production version; however, I would expect that the software provided in the package download would work using the 1.5.5 fileset for as far back as ZC 1.5.3, though it has not been tested.
I will say that in use of any provided template file, the important thing is to incorporate the Order Delivery Date changes provided into your existing template file or if that template file is unchanged, to use the template_default version of that file to incorporate the changes.
Re: Can't Enter Order Delivery Date on Step 1 of 3 of Checkout
Quote:
Originally Posted by
mc12345678
Stuck your foot out there did you? :) The right answer is that should be using ZC 1.5.5 or the most recently released production version; however, I would expect that the software provided in the package download would work using the 1.5.5 fileset for as far back as ZC 1.5.3, though it has not been tested.
I will say that in use of any provided template file, the important thing is to incorporate the Order Delivery Date changes provided into your existing template file or if that template file is unchanged, to use the template_default version of that file to incorporate the changes.
Seems to be working - EXCEPT - if I don't select a date it displays - ERROR_PLEASE_CHOOSE_DELIVERY_DATE - even though I have updated checkout_shipping.php in languages.
Not using OPC.
Re: Can't Enter Order Delivery Date on Step 1 of 3 of Checkout
Whenever you see something in all caps with underlines in between words, your seeing a display letting you know that the variable has not been defined. You may have placed the checkout_shipping.php in the wrong directory, it may be missing, or the define may be done incorrectly.
Look for includes/languages/english/YOUR_TEMPLATE/checkout_shipping.php
Re: Can't Enter Order Delivery Date on Step 1 of 3 of Checkout
Haven't seen anyone post about trying to use this with ZC 1.5.6 or issues directly related to using this with ZC 1.5.6 (where more likely to have stricter controls over operations); however, did want to provide some information if a problem occurs that identifies this plugin by reference to the table orders field order_delivery_date.
Operation on my test site shows history that at some point in use/development a date of 0000-00-00 was stored in the field; however, in operation of the current version it appears to properly store a value of null. That said, I wanted to address the problem before it was identified as an issue if it is/has been.
My suggestion first would be that while the database modifications of this plugin are present, that the following SQL be executed prior to attempting to upgrade to ZC 1.5.6 or if you ever encounter a problem modifying the orders table and the order_delivery_date field is identified as a problem.
The problem statement that may be expected to be seen in the zcInstall related logs would be something like:
Code:
[DATE_AND_TIME_OF_ISSUE SERVER_TIMEZONE] MySQL error 1292 encountered during zc_install:
Incorrect date value: '0000-00-00 00:00:00' for column 'order_delivery_date' at row XXX
ALTER TABLE orders ADD order_weight FLOAT default NULL;
The following SQL could be executed to eliminate any such issue with the order_delivery_date field.
Code:
UPDATE orders SET order_delivery_date = NULL WHERE order_delivery_date < '0001-01-01' and order_delivery_date is not null;
If operating with ZC 1.5.1 and above, the sql statement could be applied as is in the admin->Tools->Install SQL Patches. If, however, it is executed in phpMyAdmin, a similar database access utility or from within an older version of Zen Cart, then care must be taken to prepend the DB_PREFIX (defined in includes/configure.php and matching in admin/includes/configure.php) to orders. If the prefix were 'bright_', then the above would start with UPDATE bright_orders SET ...
Re: Can't Enter Order Delivery Date on Step 1 of 3 of Checkout
I am in the process of upgrading a site from 1.5.5b to 1.5.6a and the calendar button is not displaying on the checkout page as expected. I have downloaded version 1.6.1 of the module and am working with that.
Looking through this support thread, it looks like a JQuery conflict, but it appears that JQuery is now being used in ZenCart to track session and order information, so there doesn't appear to be a piece of that I can readily dispose of (or maybe I am missing something?).
ZenCart 1.5.6a
Sitemap XML 3.9.5
ImageHandler5 for ZenCart 1.5.6
ZipShip 2.0.0
php 7.2.14
mysql 5.5.60
CentOS (Linux)
Re: Can't Enter Order Delivery Date on Step 1 of 3 of Checkout
Quote:
Originally Posted by
weif
I am in the process of upgrading a site from 1.5.5b to 1.5.6a and the calendar button is not displaying on the checkout page as expected. I have downloaded version 1.6.1 of the module and am working with that.
Looking through this support thread, it looks like a JQuery conflict, but it appears that JQuery is now being used in ZenCart to track session and order information, so there doesn't appear to be a piece of that I can readily dispose of (or maybe I am missing something?).
ZenCart 1.5.6a
Sitemap XML 3.9.5
ImageHandler5 for ZenCart 1.5.6
ZipShip 2.0.0
php 7.2.14
mysql 5.5.60
CentOS (Linux)
I thought I would have had a chance yesterday to install the plugin to my ZC 1.5.6a test site; however, didn't have that opportunity. Yes there has historically been a javascript/jQuery conflict; however, the noconflict flag had been added in to attempt to permit operation of the mootools software.
I will try again when back at my computer to install and see what is going on with the possibility of logging into your site to see what is happening there after I see what is happening.