diff --git a/app/Http/Controllers/Budget/IndexController.php b/app/Http/Controllers/Budget/IndexController.php index fce1688a6c..882fe1d63a 100644 --- a/app/Http/Controllers/Budget/IndexController.php +++ b/app/Http/Controllers/Budget/IndexController.php @@ -70,35 +70,24 @@ class IndexController extends Controller * Show all budgets. * * @param Request $request - * @param string|null $moment + * + * @param Carbon|null $start + * @param Carbon|null $end * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View * * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ - public function index(Request $request, string $moment = null) + public function index(Request $request, Carbon $start = null, Carbon $end = null) { // collect some basic vars: $range = app('preferences')->get('viewRange', '1M')->data; - $start = session('start', new Carbon); - $end = session('end', new Carbon); + $start = $start ?? session('start', Carbon::now()->startOfMonth()); + $end = $end ?? app('navigation')->endOfPeriod($start, $range); $page = 0 === (int)$request->get('page') ? 1 : (int)$request->get('page'); $pageSize = (int)app('preferences')->get('listPageSize', 50)->data; - $moment = $moment ?? ''; $defaultCurrency = app('amount')->getDefaultCurrency(); - // make a date if the data is given. - if ('' !== (string)$moment) { - try { - $start = new Carbon($moment); - /** @var Carbon $end */ - $end = app('navigation')->endOfPeriod($start, $range); - } catch (Exception $e) { - // start and end are already defined. - Log::debug(sprintf('start and end are already defined: %s', $e->getMessage())); - } - } - // make the next and previous period, and calculate the periods used for period navigation $next = clone $end; $next->addDay(); @@ -106,7 +95,7 @@ class IndexController extends Controller $prev->subDay(); $prev = app('navigation')->startOfPeriod($prev, $range); $previousLoop = $this->getPreviousPeriods($start, $range); - $nextLoop = $this->getNextPeriods($end, $range); + $nextLoop = $this->getNextPeriods($start, $range); $currentMonth = app('navigation')->periodShow($start, $range); $nextText = app('navigation')->periodShow($next, $range); $prevText = app('navigation')->periodShow($prev, $range); diff --git a/app/Http/Controllers/Budget/ShowController.php b/app/Http/Controllers/Budget/ShowController.php index d9ff4999f5..55f3f5894e 100644 --- a/app/Http/Controllers/Budget/ShowController.php +++ b/app/Http/Controllers/Budget/ShowController.php @@ -118,7 +118,6 @@ class ShowController extends Controller $end = new Carbon; $page = (int)$request->get('page'); $pageSize = (int)app('preferences')->get('listPageSize', 50)->data; - $moment = 'all'; /** @var JournalCollectorInterface $collector */ $collector = app(JournalCollectorInterface::class); @@ -127,7 +126,7 @@ class ShowController extends Controller $transactions = $collector->getPaginatedJournals(); $transactions->setPath(route('budgets.no-budget')); - return view('budgets.no-budget', compact('transactions', 'subTitle', 'moment', 'start', 'end')); + return view('budgets.no-budget', compact('transactions', 'subTitle', 'start', 'end')); } diff --git a/app/Http/Controllers/Category/NoCategoryController.php b/app/Http/Controllers/Category/NoCategoryController.php index 720befb907..2eda59c554 100644 --- a/app/Http/Controllers/Category/NoCategoryController.php +++ b/app/Http/Controllers/Category/NoCategoryController.php @@ -79,7 +79,6 @@ class NoCategoryController extends Controller $start = $start ?? session('start'); /** @var Carbon $end */ $end = $end ?? session('end'); - $moment = ''; $page = (int)$request->get('page'); $pageSize = (int)app('preferences')->get('listPageSize', 50)->data; $subTitle = trans( @@ -99,7 +98,7 @@ class NoCategoryController extends Controller $transactions = $collector->getPaginatedJournals(); $transactions->setPath(route('categories.no-category')); - return view('categories.no-category', compact('transactions', 'subTitle', 'moment', 'periods', 'start', 'end')); + return view('categories.no-category', compact('transactions', 'subTitle', 'periods', 'start', 'end')); } @@ -107,14 +106,12 @@ class NoCategoryController extends Controller * Show all transactions without a category. * * @param Request $request - * @param string|null $moment * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ - public function showAll(Request $request, string $moment = null) + public function showAll(Request $request) { // default values: - $moment = $moment ?? ''; $start = null; $end = null; $periods = new Collection; @@ -136,7 +133,7 @@ class NoCategoryController extends Controller $transactions = $collector->getPaginatedJournals(); $transactions->setPath(route('categories.no-category')); - return view('categories.no-category', compact('transactions', 'subTitle', 'moment', 'periods', 'start', 'end')); + return view('categories.no-category', compact('transactions', 'subTitle', 'periods', 'start', 'end')); } diff --git a/app/Http/Controllers/Category/ShowController.php b/app/Http/Controllers/Category/ShowController.php index 540d5a1864..ed0acbb869 100644 --- a/app/Http/Controllers/Category/ShowController.php +++ b/app/Http/Controllers/Category/ShowController.php @@ -94,7 +94,6 @@ class ShowController extends Controller /** @var Carbon $end */ $end = $end ?? session('end', Carbon::now()->endOfMonth()); $subTitleIcon = 'fa-bar-chart'; - $moment = ''; $page = (int)$request->get('page'); $pageSize = (int)app('preferences')->get('listPageSize', 50)->data; $periods = $this->getPeriodOverview($category, $start); @@ -115,7 +114,7 @@ class ShowController extends Controller Log::debug('End of show()'); - return view('categories.show', compact('category', 'transactions', 'moment', 'periods', 'subTitle', 'subTitleIcon', 'start', 'end')); + return view('categories.show', compact('category', 'transactions', 'periods', 'subTitle', 'subTitleIcon', 'start', 'end')); } /** @@ -135,7 +134,6 @@ class ShowController extends Controller $start = null; $end = null; $periods = new Collection; - $moment = 'all'; $subTitle = (string)trans('firefly.all_journals_for_category', ['name' => $category->name]); $first = $this->repository->firstUseDate($category); @@ -153,7 +151,7 @@ class ShowController extends Controller $transactions = $collector->getPaginatedJournals(); $transactions->setPath($path); - return view('categories.show', compact('category', 'moment', 'transactions', 'periods', 'subTitle', 'subTitleIcon', 'start', 'end')); + return view('categories.show', compact('category', 'transactions', 'periods', 'subTitle', 'subTitleIcon', 'start', 'end')); } /** diff --git a/app/Http/Controllers/TagController.php b/app/Http/Controllers/TagController.php index 73e2cccbfb..604c192ad4 100644 --- a/app/Http/Controllers/TagController.php +++ b/app/Http/Controllers/TagController.php @@ -170,7 +170,8 @@ class TagController extends Controller * * @param Request $request * @param Tag $tag - * @param string|null $moment + * @param Carbon|null $start + * @param Carbon|null $end * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View * @@ -205,11 +206,10 @@ class TagController extends Controller } /** - * Show a single tag. + * Show a single tag over all time. * - * @param Request $request - * @param Tag $tag - * @param string|null $moment + * @param Request $request + * @param Tag $tag * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View * diff --git a/app/Support/Http/Controllers/DateCalculation.php b/app/Support/Http/Controllers/DateCalculation.php index 7c08f640ec..fb2c5938fd 100644 --- a/app/Support/Http/Controllers/DateCalculation.php +++ b/app/Support/Http/Controllers/DateCalculation.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace FireflyIII\Support\Http\Controllers; use Carbon\Carbon; -use Log; /** * Trait DateCalculation @@ -117,7 +116,8 @@ trait DateCalculation // select thing for next 12 periods: $loop = []; /** @var Carbon $current */ - $current = clone $date; + $current = app('navigation')->startOfPeriod($date, $range); + $current = app('navigation')->endOfPeriod($current, $range); $current->addDay(); $count = 0; @@ -146,7 +146,7 @@ trait DateCalculation // select thing for last 12 periods: $loop = []; /** @var Carbon $current */ - $current = clone $date; + $current = app('navigation')->startOfPeriod($date, $range); $count = 0; while ($count < 12) { $current->subDay(); diff --git a/resources/views/accounts/reconcile/index.twig b/resources/views/accounts/reconcile/index.twig index 23754353b1..98864f7bcd 100644 --- a/resources/views/accounts/reconcile/index.twig +++ b/resources/views/accounts/reconcile/index.twig @@ -1,7 +1,7 @@ {% extends "./layout/default" %} {% block breadcrumbs %} - {{ Breadcrumbs.render(Route.getCurrentRoute.getName, account, moment, start, end) }} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, account, start, end) }} {% endblock %} {% block content %} diff --git a/resources/views/budgets/no-budget.twig b/resources/views/budgets/no-budget.twig index 99e99236fe..36680089d5 100644 --- a/resources/views/budgets/no-budget.twig +++ b/resources/views/budgets/no-budget.twig @@ -1,7 +1,7 @@ {% extends "./layout/default" %} {% block breadcrumbs %} - {{ Breadcrumbs.render(Route.getCurrentRoute.getName, '', start, end) }} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, start, end) }} {% endblock %} {% block content %} diff --git a/resources/views/categories/no-category.twig b/resources/views/categories/no-category.twig index da8077c8b7..ed6778c54a 100644 --- a/resources/views/categories/no-category.twig +++ b/resources/views/categories/no-category.twig @@ -1,7 +1,7 @@ {% extends "./layout/default" %} {% block breadcrumbs %} - {{ Breadcrumbs.render(Route.getCurrentRoute.getName, moment, start, end) }} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, start, end) }} {% endblock %} {% block content %} @@ -10,7 +10,7 @@ {% if periods.count > 0 %}
-

{{ 'showEverything'|_ }}

+

{{ 'showEverything'|_ }}

{% endif %} @@ -26,7 +26,7 @@ {% if periods.count > 0 %}

- {{ 'show_all_no_filter'|_ }} + {{ 'show_all_no_filter'|_ }}

{% else %}

diff --git a/resources/views/categories/show.twig b/resources/views/categories/show.twig index a8a3171ce5..dc79577173 100644 --- a/resources/views/categories/show.twig +++ b/resources/views/categories/show.twig @@ -1,12 +1,12 @@ {% extends "./layout/default" %} {% block breadcrumbs %} - {{ Breadcrumbs.render(Route.getCurrentRoute.getName, category, '', start, end) }} + {{ Breadcrumbs.render(Route.getCurrentRoute.getName, category, start, end) }} {% endblock %} {% block content %}

- {% if moment != 'all' %} + {% if Route.getCurrentRoute.getName == 'categories.show' %} {# both charts #}
@@ -33,7 +33,7 @@
{% endif %} - {% if moment == 'all' %} + {% if Route.getCurrentRoute.getName == 'categories.show.all' %} {# all chart #}
diff --git a/resources/views/list/journals.twig b/resources/views/list/journals.twig index f4fc87f8c4..2aa70cc42e 100644 --- a/resources/views/list/journals.twig +++ b/resources/views/list/journals.twig @@ -52,8 +52,9 @@ {{ 'select_transactions'|_ }} + {% if showReconcile == true %} - {% if moment == 'all' %} + {% if Route.getCurrentRoute.getName =='accounts.show.all' %} {{ 'reconcile_this_account'|_ }} {% else %} diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index f0b0e2e854..64fb338054 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -118,7 +118,7 @@ try { Breadcrumbs::register( 'accounts.show.all', - function (BreadcrumbsGenerator $breadcrumbs, Account $account, Carbon $start = null, Carbon $end = null) { + function (BreadcrumbsGenerator $breadcrumbs, Account $account) { $what = config('firefly.shortNamesByFullName.' . $account->accountType->type); $breadcrumbs->parent('accounts.index', $what); @@ -379,15 +379,17 @@ try { Breadcrumbs::register( 'budgets.no-budget', - function (BreadcrumbsGenerator $breadcrumbs, string $moment, Carbon $start, Carbon $end) { + function (BreadcrumbsGenerator $breadcrumbs, Carbon $start = null, Carbon $end = null) { $breadcrumbs->parent('budgets.index'); $breadcrumbs->push(trans('firefly.journals_without_budget'), route('budgets.no-budget')); - $title = trans( - 'firefly.between_dates_breadcrumb', - ['start' => $start->formatLocalized((string)trans('config.month_and_day')), - 'end' => $end->formatLocalized((string)trans('config.month_and_day')),] - ); - $breadcrumbs->push($title, route('budgets.no-budget', ['a', 'b'])); + if (null !== $start && null !== $end) { + $title = trans( + 'firefly.between_dates_breadcrumb', + ['start' => $start->formatLocalized((string)trans('config.month_and_day')), + 'end' => $end->formatLocalized((string)trans('config.month_and_day')),] + ); + $breadcrumbs->push($title, route('budgets.no-budget')); + } } ); @@ -447,62 +449,66 @@ try { Breadcrumbs::register( 'categories.edit', function (BreadcrumbsGenerator $breadcrumbs, Category $category) { - $breadcrumbs->parent('categories.show.all', $category, '', new Carbon, new Carbon); + $breadcrumbs->parent('categories.show.all', $category); $breadcrumbs->push(trans('firefly.edit_category', ['name' => limitStringLength($category->name)]), route('categories.edit', [$category->id])); } ); Breadcrumbs::register( 'categories.delete', function (BreadcrumbsGenerator $breadcrumbs, Category $category) { - $breadcrumbs->parent('categories.show', $category, '(nothing)', new Carbon, new Carbon); + $breadcrumbs->parent('categories.show', $category); $breadcrumbs->push(trans('firefly.delete_category', ['name' => limitStringLength($category->name)]), route('categories.delete', [$category->id])); } ); Breadcrumbs::register( 'categories.show', - function (BreadcrumbsGenerator $breadcrumbs, Category $category, string $moment, Carbon $start, Carbon $end) { + function (BreadcrumbsGenerator $breadcrumbs, Category $category, Carbon $start = null, Carbon $end = null) { $breadcrumbs->parent('categories.index'); $breadcrumbs->push(limitStringLength($category->name), route('categories.show', [$category->id])); - $title = trans( - 'firefly.between_dates_breadcrumb', - ['start' => $start->formatLocalized((string)trans('config.month_and_day')), - 'end' => $end->formatLocalized((string)trans('config.month_and_day')),] - ); - $breadcrumbs->push($title, route('categories.show', [$category->id, $moment])); + if (null !== $start && null !== $end) { + $title = trans( + 'firefly.between_dates_breadcrumb', + ['start' => $start->formatLocalized((string)trans('config.month_and_day')), + 'end' => $end->formatLocalized((string)trans('config.month_and_day')),] + ); + $breadcrumbs->push($title, route('categories.show', [$category->id])); + } } ); Breadcrumbs::register( 'categories.show.all', - function (BreadcrumbsGenerator $breadcrumbs, Category $category, string $moment, Carbon $start, Carbon $end) { + function (BreadcrumbsGenerator $breadcrumbs, Category $category) { $breadcrumbs->parent('categories.index'); $breadcrumbs->push(limitStringLength($category->name), route('categories.show', [$category->id])); - $breadcrumbs->push(trans('firefly.everything'), route('categories.show', [$category->id, 'all'])); + $breadcrumbs->push(trans('firefly.everything'), route('categories.show.all', [$category->id])); } ); Breadcrumbs::register( 'categories.no-category', - function (BreadcrumbsGenerator $breadcrumbs, string $moment, Carbon $start, Carbon $end) { + function (BreadcrumbsGenerator $breadcrumbs, Carbon $start = null, Carbon $end = null) { $breadcrumbs->parent('categories.index'); $breadcrumbs->push(trans('firefly.journals_without_category'), route('categories.no-category')); - $title = trans( - 'firefly.between_dates_breadcrumb', - ['start' => $start->formatLocalized((string)trans('config.month_and_day')), - 'end' => $end->formatLocalized((string)trans('config.month_and_day')),] - ); - $breadcrumbs->push($title, route('categories.no-category', [$moment])); + if (null !== $start && null !== $end) { + $title = trans( + 'firefly.between_dates_breadcrumb', + ['start' => $start->formatLocalized((string)trans('config.month_and_day')), + 'end' => $end->formatLocalized((string)trans('config.month_and_day')),] + ); + $breadcrumbs->push($title, route('categories.no-category')); + } } ); Breadcrumbs::register( - 'categories.no-category-all', - function (BreadcrumbsGenerator $breadcrumbs, string $moment, Carbon $start, Carbon $end) { + 'categories.no-category.all', + function (BreadcrumbsGenerator $breadcrumbs) { $breadcrumbs->parent('categories.index'); $breadcrumbs->push(trans('firefly.journals_without_category'), route('categories.no-category')); - $breadcrumbs->push(trans('firefly.everything'), route('categories.no-category-all')); + $breadcrumbs->push(trans('firefly.everything'), route('categories.no-category.all')); } ); @@ -854,7 +860,7 @@ try { Breadcrumbs::register( 'rules.create-from-bill', - function (BreadcrumbsGenerator $breadcrumbs, RuleGroup $ruleGroup = null) { + function (BreadcrumbsGenerator $breadcrumbs) { $breadcrumbs->parent('rules.index'); $breadcrumbs->push(trans('firefly.make_new_rule_no_group'), route('rules.create')); } @@ -944,7 +950,7 @@ try { Breadcrumbs::register( 'tags.edit', function (BreadcrumbsGenerator $breadcrumbs, Tag $tag) { - $breadcrumbs->parent('tags.show', $tag, '(nothing)', new Carbon, new Carbon); + $breadcrumbs->parent('tags.show', $tag); $breadcrumbs->push(trans('breadcrumbs.edit_tag', ['tag' => $tag->tag]), route('tags.edit', [$tag->id])); } ); @@ -952,7 +958,7 @@ try { Breadcrumbs::register( 'tags.delete', function (BreadcrumbsGenerator $breadcrumbs, Tag $tag) { - $breadcrumbs->parent('tags.show', $tag, '(nothing)', new Carbon, new Carbon); + $breadcrumbs->parent('tags.show', $tag); $breadcrumbs->push(trans('breadcrumbs.delete_tag', ['tag' => $tag->tag]), route('tags.delete', [$tag->id])); } ); @@ -962,16 +968,15 @@ try { function (BreadcrumbsGenerator $breadcrumbs, Tag $tag, Carbon $start = null, Carbon $end = null) { $breadcrumbs->parent('tags.index'); - $start = $start ?? session('start'); - $end = $end ?? session('end'); - $breadcrumbs->push($tag->tag, route('tags.show', [$tag->id, $start, $end])); - $title = trans( - 'firefly.between_dates_breadcrumb', - ['start' => $start->formatLocalized((string)trans('config.month_and_day')), - 'end' => $end->formatLocalized((string)trans('config.month_and_day')),] - ); - $breadcrumbs->push($title, route('tags.show', [$tag->id, $start, $end])); + if (null !== $start && $end !== null) { + $title = trans( + 'firefly.between_dates_breadcrumb', + ['start' => $start->formatLocalized((string)trans('config.month_and_day')), + 'end' => $end->formatLocalized((string)trans('config.month_and_day')),] + ); + $breadcrumbs->push($title, route('tags.show', [$tag->id, $start, $end])); + } } ); @@ -980,9 +985,9 @@ try { 'tags.show.all', function (BreadcrumbsGenerator $breadcrumbs, Tag $tag) { $breadcrumbs->parent('tags.index'); - $breadcrumbs->push($tag->tag, route('tags.show', $tag->id,null,null)); - $title = (string)trans('firefly.all_journals_for_tag', ['tag' => $tag->tag]); - $breadcrumbs->push($title, route('tags.show.all',$tag->id)); + $breadcrumbs->push($tag->tag, route('tags.show', [$tag->id])); + $title = (string)trans('firefly.all_journals_for_tag', ['tag' => $tag->tag]); + $breadcrumbs->push($title, route('tags.show.all', $tag->id)); } ); @@ -1008,7 +1013,7 @@ try { Breadcrumbs::register( 'transactions.index.all', - function (BreadcrumbsGenerator $breadcrumbs, string $what, Carbon $start = null, Carbon $end = null) { + function (BreadcrumbsGenerator $breadcrumbs, string $what) { $breadcrumbs->parent('home'); $breadcrumbs->push(trans('breadcrumbs.' . $what . '_list'), route('transactions.index', [$what])); } diff --git a/routes/web.php b/routes/web.php index 257317497f..88246c4aaa 100755 --- a/routes/web.php +++ b/routes/web.php @@ -210,7 +210,7 @@ Route::group( // index - Route::get('{moment?}', ['uses' => 'Budget\IndexController@index', 'as' => 'index']); + Route::get('{start_date?}/{end_date?}', ['uses' => 'Budget\IndexController@index', 'as' => 'index']); // update budget amount and income amount Route::get('income/{start_date}/{end_date}', ['uses' => 'Budget\AmountController@updateIncome', 'as' => 'income']); @@ -246,7 +246,7 @@ Route::group( Route::get('show/{category}/{start_date?}/{end_date?}', ['uses' => 'Category\ShowController@show', 'as' => 'show']); // no category controller: - Route::get('list/no-category/all', ['uses' => 'Category\NoCategoryController@showAll', 'as' => 'no-category-all']); + Route::get('list/no-category/all', ['uses' => 'Category\NoCategoryController@showAll', 'as' => 'no-category.all']); Route::get('list/no-category/{start_date?}/{end_date?}', ['uses' => 'Category\NoCategoryController@show', 'as' => 'no-category']); }