Download & Extend

Ability to dynamically specify wether checkout page should be included in the progress bar

Project:Commerce Checkout Progress
Version:7.x-1.x-dev
Component:Miscellaneous
Category:feature request
Priority:normal
Assigned:Unassigned
Status:needs review

Issue Summary

The code uses a 'has_item' properly to decide weather or not a checkout page should be included in the progress bar. It hard sets this to TRUE for everything except commerce_payment_redirect. Other modules do a similar redirect technique (eg commerce_extra's login page), as can custom checkout pages/panes.

This module should respect the has_item property set on a checkout page's definition. This would allow us to set/unset this using hook_commerce_checkout_page_info_alter() or something similar to dynamically include/exclude checkout pages from showing in the progress bar.

Comments

#1

I agree. A patch or code snippet would be greatly appreciated. Thanks!

#2

Status:active» needs review

This does the trick.

AttachmentSize
1508472.1-commerce_checkout_progress_has_item.patch 954 bytes

#3

Actually, I needed a little more than this, as we need to be able to alter the state based on attributes of the order, which we can not do from hook_commerce_checkout_page_info_alter() as it's no possible to get the $order object from there. See #1509450: Unable to load current order from hook_commerce_checkout_page_info_alter.

So, I added a drupal_alter function to allow other module to be able to directly alter the include/exclude state of checkout pages.

AttachmentSize
1508472.3-commerce_checkout_progress_has_item.patch 1.96 KB

#4

Updated patch fixes whitespace issue.

AttachmentSize
1508472.4-commerce_checkout_progress_has_item.patch 1.95 KB

#5

I just closed #1438836: Show all checkout panes in progress as a duplicate of this one.

#6

OK, so how do I implement this?

As in, what is the specific line I need to set so that $page[page_id] will not display in the checkout progress bar?

And also, so I am sure, do I call mymodule_commerce_checkout_progress_get_items_alter(&$pages) ?

#7

I changed

drupal_alter('commerce_checkout_progress_items', $pages);

to

drupal_alter('commerce_checkout_progress_get_items', $pages);

in order to get things working.