From 5b48b9d80166edf9948320a7c7a250491cb92017 Mon Sep 17 00:00:00 2001 From: Daniel Camargo Date: Tue, 27 May 2014 13:03:04 -0300 Subject: [PATCH] Change Driver Week #3084 changed the cockpit pages to start the schedule week on Friday --- .../default/cockpit/drivers/shift.php | 182 ++++++++---------- .../library/Crunchbutton/Community/Shift.php | 1 + .../cockpit/community/community/index.phtml | 5 +- .../drivers/shift/community/index.phtml | 56 +++--- .../drivers/shift/schedule/driver.phtml | 14 +- .../cockpit/drivers/shift/status/index.phtml | 5 +- .../cockpit/drivers/shift/summary/index.phtml | 10 +- www/assets/js/admin.js | 45 +++-- www/assets/js/admin.shift.js | 44 ++++- 9 files changed, 202 insertions(+), 160 deletions(-) diff --git a/include/controllers/default/cockpit/drivers/shift.php b/include/controllers/default/cockpit/drivers/shift.php index f57078943..85d28c48b 100644 --- a/include/controllers/default/cockpit/drivers/shift.php +++ b/include/controllers/default/cockpit/drivers/shift.php @@ -77,49 +77,44 @@ class Controller_drivers_shift extends Crunchbutton_Controller_Account { $admin = Admin::o( c::admin()->id_admin ); // Start week on Friday #3084 - if( c::getPagePiece( 4 ) && c::getPagePiece( 5 ) ){ - $year = c::getPagePiece( 4 ); - $week = c::getPagePiece( 5 ); - $firstDay = new DateTime( date( 'Y-m-d', strtotime( $year . 'W' . $week . 5 ) ), new DateTimeZone( c::config()->timezone ) ); + $now = new DateTime( 'now', new DateTimeZone( c::config()->timezone ) ); + if( $now->format( 'l' ) == 'Friday' ){ + $friday = $now; } else { - - $now = new DateTime( 'now', new DateTimeZone( c::config()->timezone ) ); - if( $now->format( 'l' ) == 'Friday' ){ - $friday = $now; - } else { - $friday = new DateTime( 'last friday', new DateTimeZone( c::config()->timezone ) ); - } - - $year = $friday->format( 'Y' ); - $week = $friday->format( 'W' ); - $firstDay = $friday; + $friday = new DateTime( 'last friday', new DateTimeZone( c::config()->timezone ) ); } + $year = ( c::getPagePiece( 4 ) != '' ? c::getPagePiece( 4 ) : $friday->format( 'Y' ) ); + $month = ( c::getPagePiece( 5 ) != '' ? c::getPagePiece( 5 ) : $friday->format( 'm' ) ); + $day = ( c::getPagePiece( 6 ) != '' ? c::getPagePiece( 6 ) : $friday->format( 'd' ) ); + + // Start week on friday + $firstDay = new DateTime( $year . '-' . $month . '-' . $day, new DateTimeZone( c::config()->timezone ) ); + + $first_day_year = $firstDay->format( 'Y' ); + $first_day_week = $firstDay->format( 'W' ); + $days = []; for( $i = 0; $i <= 6; $i++ ){ $days[] = new DateTime( $firstDay->format( 'Y-m-d' ), new DateTimeZone( c::config()->timezone ) ); $firstDay->modify( '+ 1 day' ); } - if( $week <= 1 ){ - $weekPrev = ( $year - 1 ) . '/52'; - } else { - $weekPrev = ( $year ) . '/' . ( $week - 1 ); - } - if( $week >= 52 ){ - $weekNext = ( $year + 1 ) . '/01'; - } else { - $weekNext = ( $year ) . '/' . ( $week + 1 ); - } + // prev/next links + $firstDay->modify( '- 2 week' ); + $link_prev_day = $firstDay->format( 'Y/m/d' ); + $firstDay->modify( '+ 2 week' ); + $link_next_day = $firstDay->format( 'Y/m/d' ); - c::view()->weekPrev = $weekPrev; - c::view()->weekNext = $weekNext; - c::view()->week = $week; - c::view()->year = $year; - c::view()->status = Crunchbutton_Admin_Shift_Status::getByAdminWeekYear( $admin->id_admin, $week, $year ); + c::view()->week = $first_day_week; + c::view()->year = $first_day_year; + + c::view()->link_prev = $link_prev_day; + c::view()->link_next = $link_next_day; + c::view()->status = Crunchbutton_Admin_Shift_Status::getByAdminWeekYear( $admin->id_admin, $first_day_week, $first_day_year ); c::view()->days = $days; - c::view()->from = new DateTime( $days[ 0 ]->format( 'Y-m-d' ), new DateTimeZone( c::config()->timezone ) ); - c::view()->to = new DateTime( $days[ 6 ]->format( 'Y-m-d' ), new DateTimeZone( c::config()->timezone ) ); + c::view()->from = $days[ 0 ]; + c::view()->to = $days[ 6 ]; c::view()->communities = $admin->communitiesHeDeliveriesFor(); c::view()->display( 'drivers/shift/schedule/driver' ); } @@ -171,10 +166,12 @@ class Controller_drivers_shift extends Crunchbutton_Controller_Account { $friday = new DateTime( 'last friday', new DateTimeZone( c::config()->timezone ) ); } - $year = ( c::getPagePiece( 3 ) ) ? c::getPagePiece( 3 ) : $friday->format( 'Y' ); - $week = ( c::getPagePiece( 4 ) ) ? c::getPagePiece( 4 ) : $friday->format( 'W' ); - - $firstDay = new DateTime( date( 'Y-m-d', strtotime( $year . 'W' . $week . 5 ) ), new DateTimeZone( c::config()->timezone ) ); + $year = ( c::getPagePiece( 3 ) != '' ? c::getPagePiece( 3 ) : $friday->format( 'Y' ) ); + $month = ( c::getPagePiece( 4 ) != '' ? c::getPagePiece( 4 ) : $friday->format( 'm' ) ); + $day = ( c::getPagePiece( 5 ) != '' ? c::getPagePiece( 5 ) : $friday->format( 'd' ) ); + + // Start week on friday + $firstDay = new DateTime( $year . '-' . $month . '-' . $day, new DateTimeZone( c::config()->timezone ) ); $days = []; for( $i = 0; $i <= 6; $i++ ){ @@ -182,23 +179,19 @@ class Controller_drivers_shift extends Crunchbutton_Controller_Account { $firstDay->modify( '+ 1 day' ); } + // prev/next links + $firstDay->modify( '- 2 week' ); + $link_prev_day = $firstDay->format( 'Y/m/d' ); + $firstDay->modify( '+ 2 week' ); + $link_next_day = $firstDay->format( 'Y/m/d' ); + $firstDay->modify( '-1 day' ); c::view()->to = new DateTime( $firstDay->format( 'Y-m-d' ), new DateTimeZone( c::config()->timezone ) ); $firstDay->modify( '-6 day' ); c::view()->from = new DateTime( $firstDay->format( 'Y-m-d' ), new DateTimeZone( c::config()->timezone ) ); - if( $week <= 1 ){ - $weekPrev = ( $year - 1 ) . '/52'; - } else { - $weekPrev = ( $year ) . '/' . ( $week - 1 ); - } - if( $week >= 52 ){ - $weekNext = ( $year + 1 ) . '/01'; - } else { - $weekNext = ( $year ) . '/' . ( $week + 1 ); - } - - c::view()->weekPrev = $weekPrev; - c::view()->weekNext = $weekNext; + + c::view()->link_prev = $link_prev_day; + c::view()->link_next = $link_next_day; c::view()->days = $days; c::view()->week = $week; c::view()->year = $year; @@ -220,15 +213,22 @@ class Controller_drivers_shift extends Crunchbutton_Controller_Account { $id_community = c::getPagePiece( 3 ); $year = ( c::getPagePiece( 4 ) != '' ? c::getPagePiece( 4 ) : false ); - $week = ( c::getPagePiece( 5 ) != '' ? c::getPagePiece( 5 ) : false ); + $month = ( c::getPagePiece( 5 ) != '' ? c::getPagePiece( 5 ) : false ); + $day = ( c::getPagePiece( 6 ) != '' ? c::getPagePiece( 6 ) : false ); - if( $id_community && $year && $week ){ - if( intval( $week ) < 10 ){ - $week = '0' . intval( $week ); - } + if( $id_community && $year && $month && $day ){ // Start week on friday - $firstDay = new DateTime( date( 'Y-m-d', strtotime( $year . 'W' . $week . 5 ) ), new DateTimeZone( c::config()->timezone ) ); + $firstDay = new DateTime( $year . '-' . $month . '-' . $day, new DateTimeZone( c::config()->timezone ) ); + + // prev/next links + $link_start_day = $firstDay->format( 'Y/m/d' ); + $firstDay->modify( '- 1 week' ); + $link_prev_day = $firstDay->format( 'Y/m/d' ); + $firstDay->modify( '+ 2 week' ); + $link_next_day = $firstDay->format( 'Y/m/d' ); + $firstDay->modify( '- 1 week' ); + $days = []; for( $i = 0; $i <= 6; $i++ ){ @@ -236,24 +236,16 @@ class Controller_drivers_shift extends Crunchbutton_Controller_Account { $firstDay->modify( '+ 1 day' ); } - if( $week <= 1 ){ - $weekPrev = ( $year - 1 ) . '/52'; - } else { - $weekPrev = ( $year ) . '/' . ( $week - 1 ); - } - if( $week >= 52 ){ - $weekNext = ( $year + 1 ) . '/01'; - } else { - $weekNext = ( $year ) . '/' . ( $week + 1 ); - } - - c::view()->weekPrev = $weekPrev; - c::view()->weekNext = $weekNext; + c::view()->start_date = $start_date; + c::view()->link_prev = $link_prev_day; + c::view()->link_next = $link_next_day; c::view()->days = $days; + $firstDay->modify( '-1 day' ); c::view()->to = new DateTime( $firstDay->format( 'Y-m-d' ), new DateTimeZone( c::config()->timezone ) ); $firstDay->modify( '-6 day' ); c::view()->from = new DateTime( $firstDay->format( 'Y-m-d' ), new DateTimeZone( c::config()->timezone ) ); + c::view()->id_community = $id_community; } else { @@ -264,14 +256,12 @@ class Controller_drivers_shift extends Crunchbutton_Controller_Account { } else { $friday = new DateTime( 'last friday', new DateTimeZone( c::config()->timezone ) ); } - - $year = $friday->format( 'Y' ); - $week = $friday->format( 'W' ); + $start_date = $friday->format( 'Y/m/d' ); $day = $friday; } - c::view()->week = $week; - c::view()->year = $year; + c::view()->start_date = $start_date; + if( $_REQUEST[ 'ajax' ] ){ c::view()->ajax = true; c::view()->layout( 'layout/ajax' ); @@ -284,39 +274,37 @@ class Controller_drivers_shift extends Crunchbutton_Controller_Account { // Start week on Friday #3084 $now = new DateTime( 'now', new DateTimeZone( c::config()->timezone ) ); - if( $now->format( 'l' ) == 'Friday' ){ - $day = $now; + $friday = $now; } else { - $day = new DateTime( 'last friday', new DateTimeZone( c::config()->timezone ) ); + $friday = new DateTime( 'last friday', new DateTimeZone( c::config()->timezone ) ); } - $year = ( c::getPagePiece( 4 ) ) ? c::getPagePiece( 4 ) : $day->format( 'Y' ); - $week = ( c::getPagePiece( 5 ) ) ? c::getPagePiece( 5 ) : $day->format( 'W' ); + $year = ( c::getPagePiece( 4 ) != '' ? c::getPagePiece( 4 ) : $friday->format( 'Y' ) ); + $month = ( c::getPagePiece( 5 ) != '' ? c::getPagePiece( 5 ) : $friday->format( 'm' ) ); + $day = ( c::getPagePiece( 6 ) != '' ? c::getPagePiece( 6 ) : $friday->format( 'd' ) ); - $day = new DateTime( date( 'Y-m-d', strtotime( $year . 'W' . $week . 5 ) ), new DateTimeZone( c::config()->timezone ) ); - - $from = new DateTime( $day->format( 'Y-m-d' ), new DateTimeZone( c::config()->timezone ) ); - $day->modify( '+6 day' ); - $to = new DateTime( $day->format( 'Y-m-d' ), new DateTimeZone( c::config()->timezone ) ); + // Start week on friday + $firstDay = new DateTime( $year . '-' . $month . '-' . $day, new DateTimeZone( c::config()->timezone ) ); + c::view()->week = $firstDay->format( 'W' ); + c::view()->year = $firstDay->format( 'Y' ); + + $from = new DateTime( $firstDay->format( 'Y-m-d' ), new DateTimeZone( c::config()->timezone ) ); + $firstDay->modify( '+6 day' ); + $to = new DateTime( $firstDay->format( 'Y-m-d' ), new DateTimeZone( c::config()->timezone ) ); + $firstDay->modify( '- 6 days' ); + $communities = Crunchbutton_Community_Shift::communitiesWithDeliveryService(); - if( $week <= 1 ){ - $weekPrev = ( $year - 1 ) . '/52'; - } else { - $weekPrev = ( $year ) . '/' . ( $week - 1 ); - } - if( $week >= 52 ){ - $weekNext = ( $year + 1 ) . '/01'; - } else { - $weekNext = ( $year ) . '/' . ( $week + 1 ); - } + // prev/next links + $firstDay->modify( '- 1 week' ); + $link_prev_day = $firstDay->format( 'Y/m/d' ); + $firstDay->modify( '+ 2 week' ); + $link_next_day = $firstDay->format( 'Y/m/d' ); - c::view()->weekPrev = $weekPrev; - c::view()->weekNext = $weekNext; - c::view()->year = $year; - c::view()->week = $week; + c::view()->link_prev = $link_prev_day; + c::view()->link_next = $link_next_day; c::view()->to = $to; c::view()->from = $from; c::view()->communities = $communities; diff --git a/include/library/Crunchbutton/Community/Shift.php b/include/library/Crunchbutton/Community/Shift.php index 0266e0c03..b41c2fe73 100644 --- a/include/library/Crunchbutton/Community/Shift.php +++ b/include/library/Crunchbutton/Community/Shift.php @@ -1,6 +1,7 @@ timezone ) ); } - $year = $friday->format( 'Y' ); - $week = $friday->format( 'W' ); + $start_date = $friday->format( 'Y/m/d' ); ?> - community.shifts( '/drivers/shift/community/id_community; ?>//?ajax=1' ); + community.shifts( '/drivers/shift/community/id_community; ?>/?ajax=1' ); } ); diff --git a/include/views/default/cockpit/drivers/shift/community/index.phtml b/include/views/default/cockpit/drivers/shift/community/index.phtml index 2d5894ff3..3be92a374 100644 --- a/include/views/default/cockpit/drivers/shift/community/index.phtml +++ b/include/views/default/cockpit/drivers/shift/community/index.phtml @@ -41,37 +41,43 @@
-
- -
- Shifts for week week; ?> / year; ?> +
+
+
+ previous +
+
+
+ From from->format('M jS Y') ?> to to->format('M jS Y'); ?> +
+
+
+
+ next +
- -
-
-
-
- previous -
-
-

- From from->format('M jS Y') ?> to to->format('M jS Y'); ?> -

-
-
-
- next -
+ + +
+
+
+
+
+ From from->format('M jS Y') ?> to to->format('M jS Y'); ?> +
+
-
+
+ + days as $day ) { - $dark = ( $day->format( 'N' ) % 2 == 0 ) ? '#F5F5F5' : ''; + $dark = ( $dark == '#F5F5F5' ) ? '' : '#F5F5F5'; ?> + days as $day ) { - $dark = ( $day->format( 'N' ) % 2 == 0 ) ? '#F5F5F5' : ''; + $dark = ( $dark == '#F5F5F5' ) ? '' : '#F5F5F5'; $segments = Crunchbutton_Community_Shift::shiftByCommunityDay( $id_community, $day->format( 'Y-m-d' ) ); ?>
@@ -85,9 +91,10 @@
@@ -157,8 +164,7 @@