From 25496061ee6b7ed426e7fad206b5a6b9ca883d8d Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Wed, 15 Jul 2015 17:45:02 +0300 Subject: [PATCH] Ensured JS client dates use timezone setting --- app/Http/Controllers/TaskController.php | 24 ++++++++++++++++++------ app/Libraries/Utils.php | 10 ++++++++++ readme.md | 13 ++++++++----- resources/views/tasks/edit.blade.php | 13 ++++++------- 4 files changed, 42 insertions(+), 18 deletions(-) diff --git a/app/Http/Controllers/TaskController.php b/app/Http/Controllers/TaskController.php index 9ca05f64f5d4..7b719e148d73 100644 --- a/app/Http/Controllers/TaskController.php +++ b/app/Http/Controllers/TaskController.php @@ -10,9 +10,10 @@ use Validator; use Redirect; use Session; use DropdownButton; +use DateTime; +use DateTimeZone; use App\Models\Client; use App\Models\Task; - use App\Ninja\Repositories\TaskRepository; use App\Ninja\Repositories\InvoiceRepository; @@ -35,10 +36,7 @@ class TaskController extends BaseController */ public function index() { - if (!Auth::user()->account->timezone) { - $link = link_to('/company/details', trans('texts.click_here'), ['target' => '_blank']); - Session::flash('warning', trans('texts.timezone_unset', ['link' => $link])); - } + self::checkTimezone(); return View::make('list', array( 'entityType' => ENTITY_TASK, @@ -130,12 +128,15 @@ class TaskController extends BaseController */ public function create($clientPublicId = 0) { + self::checkTimezone(); + $data = [ 'task' => null, 'clientPublicId' => Input::old('client') ? Input::old('client') : $clientPublicId, 'method' => 'POST', 'url' => 'tasks', 'title' => trans('texts.new_task'), + 'minuteOffset' => Utils::getTiemstampOffset(), ]; $data = array_merge($data, self::getViewModel()); @@ -151,6 +152,8 @@ class TaskController extends BaseController */ public function edit($publicId) { + self::checkTimezone(); + $task = Task::scope($publicId)->with('client', 'invoice')->firstOrFail(); $actions = []; @@ -174,7 +177,7 @@ class TaskController extends BaseController } else { $actions[] = ['url' => 'javascript:submitAction("restore")', 'label' => trans('texts.restore_task')]; } - + $data = [ 'task' => $task, 'clientPublicId' => $task->client ? $task->client->public_id : 0, @@ -183,6 +186,7 @@ class TaskController extends BaseController 'title' => trans('texts.edit_task'), 'duration' => $task->is_running ? $task->getCurrentDuration() : $task->getDuration(), 'actions' => $actions, + 'minuteOffset' => Utils::getTiemstampOffset(), ]; $data = array_merge($data, self::getViewModel()); @@ -281,4 +285,12 @@ class TaskController extends BaseController } } } + + private function checkTimezone() + { + if (!Auth::user()->account->timezone) { + $link = link_to('/company/details', trans('texts.click_here'), ['target' => '_blank']); + Session::flash('warning', trans('texts.timezone_unset', ['link' => $link])); + } + } } diff --git a/app/Libraries/Utils.php b/app/Libraries/Utils.php index 08d529200753..a2ed6af8cd1f 100644 --- a/app/Libraries/Utils.php +++ b/app/Libraries/Utils.php @@ -315,6 +315,16 @@ class Utils return $date->format($format); } + public static function getTiemstampOffset() + { + $timezone = new DateTimeZone(Session::get(SESSION_TIMEZONE, DEFAULT_TIMEZONE)); + $datetime = new DateTime('now', $timezone); + $offset = $timezone->getOffset($datetime); + $minutes = $offset / 60; + + return $minutes; + } + public static function toSqlDate($date, $formatResult = true) { if (!$date) { diff --git a/readme.md b/readme.md index 00216a125cd6..08bff4b5eed9 100644 --- a/readme.md +++ b/readme.md @@ -3,9 +3,13 @@ If you'd like to use our code to sell your own invoicing app email us for details about our affiliate program. -### Getting Started +### Installation Options -To setup the site you can either use the [zip file](https://www.invoiceninja.com/knowledgebase/self-host/) (easier to run) or checkout the code from GitHub (easier to make changes). +* [Zip - Free](https://www.invoiceninja.com/knowledgebase/self-host/) +* [Bitnami - Free](https://bitnami.com/stack/invoice-ninja) +* [Softaculous - $30](https://www.softaculous.com/apps/ecommerce/Invoice_Ninja) + +### Getting Started If you have any questions or comments please use our [support forum](https://www.invoiceninja.com/forums/forum/support/). For updates follow [@invoiceninja](https://twitter.com/invoiceninja) or join the [Facebook Group](https://www.facebook.com/invoiceninja). @@ -31,12 +35,11 @@ If you'd like to translate the site please use [caouecs/Laravel4-long](https://g * [Jeramy Simpson](https://github.com/JeramyMywork) - [MyWork](https://www.mywork.com.au) * [Sigitas Limontas](https://lt.linkedin.com/in/sigitaslimontas) -### Documentation - -* [Self Host](https://www.invoiceninja.com/knowledgebase/self-host/) +### Documentation * [Ubuntu and Apache](http://blog.technerdservices.com/index.php/2015/04/techpop-how-to-install-invoice-ninja-on-ubuntu-14-04/) * [Debian and Nginx](https://www.rosehosting.com/blog/install-invoice-ninja-on-a-debian-7-vps/) * [API Documentation](https://www.invoiceninja.com/knowledgebase/api-documentation/) +* [User Guide](https://www.invoiceninja.com/user-guide/) * [Developer Guide](https://www.invoiceninja.com/knowledgebase/developer-guide/) ### Frameworks/Libraries diff --git a/resources/views/tasks/edit.blade.php b/resources/views/tasks/edit.blade.php index 1047d6f3e71f..aacfee35cb6b 100644 --- a/resources/views/tasks/edit.blade.php +++ b/resources/views/tasks/edit.blade.php @@ -132,7 +132,6 @@