diff --git a/app/Domain/Goalcanvas/Controllers/Dashboard.php b/app/Domain/Goalcanvas/Controllers/Dashboard.php index b2f70629a9..5aed828c87 100644 --- a/app/Domain/Goalcanvas/Controllers/Dashboard.php +++ b/app/Domain/Goalcanvas/Controllers/Dashboard.php @@ -305,6 +305,18 @@ public function run() } } + // request + // $filter['status'] = request('filter_status', session('filter_status', 'all')); + // session(['filter_status' => $filter['status']]); + // $filter['relates'] = request('filter_relates', session('filter_relates', 'all')); + // session(['filter_relates' => $filter['relates']]); + + $filter['status'] = $_GET['filter_status'] ?? (session("filter_status") ?? 'all'); + session(["filter_status" => $filter['status']]); + $filter['relates'] = $_GET['filter_relates'] ?? (session("filter_relates") ?? 'all'); + session(["filter_relates" => $filter['relates']]); + + $this->tpl->assign('filter', $filter); $this->tpl->assign('currentCanvas', $currentCanvasId); $this->tpl->assign('goalStats', $goalAnalytics); $this->tpl->assign('canvasIcon', $this->canvasRepo->getIcon()); diff --git a/app/Domain/Goalcanvas/Controllers/DelCanvasItem.php b/app/Domain/Goalcanvas/Controllers/DelCanvasItem.php index 81e5e8b9c0..7406bf7fa7 100644 --- a/app/Domain/Goalcanvas/Controllers/DelCanvasItem.php +++ b/app/Domain/Goalcanvas/Controllers/DelCanvasItem.php @@ -12,6 +12,7 @@ class DelCanvasItem extends \Leantime\Domain\Canvas\Controllers\DelCanvasItem { protected const CANVAS_NAME = 'goal'; + } } diff --git a/app/Domain/Goalcanvas/Templates/bigRockDialog.blade.php b/app/Domain/Goalcanvas/Templates/bigRockDialog.blade.php index 8dd5e8618e..3e73bb1e97 100644 --- a/app/Domain/Goalcanvas/Templates/bigRockDialog.blade.php +++ b/app/Domain/Goalcanvas/Templates/bigRockDialog.blade.php @@ -25,10 +25,11 @@ + + + + + + +@endsection diff --git a/app/Domain/Goalcanvas/Templates/canvasComment.tpl.php b/app/Domain/Goalcanvas/Templates/canvasComment.tpl.php deleted file mode 100644 index de9180cf57..0000000000 --- a/app/Domain/Goalcanvas/Templates/canvasComment.tpl.php +++ /dev/null @@ -1,13 +0,0 @@ - $val) { - $$var = $val; // necessary for blade refactor -} -echo $tpl->viewFactory->make( - $tpl->getTemplatePath('canvas', 'canvasComment'), - array_merge($__data, ['canvasName' => 'goal']) -)->render(); diff --git a/app/Domain/Goalcanvas/Templates/canvasDialog.blade.php b/app/Domain/Goalcanvas/Templates/canvasDialog.blade.php new file mode 100644 index 0000000000..f61fa9c542 --- /dev/null +++ b/app/Domain/Goalcanvas/Templates/canvasDialog.blade.php @@ -0,0 +1,182 @@ +@extends($layout) +@section('content') + +@php + +$canvasName = 'goal'; + +$canvasItem = $tpl->get('canvasItem'); +$canvasTypes = $tpl->get('canvasTypes'); +$hiddenStatusLabels = $tpl->get('statusLabels'); +$statusLabels = $statusLabels ?? $hiddenStatusLabels; +$hiddenRelatesLabels = $tpl->get('relatesLabels'); +$relatesLabels = $relatesLabels ?? $hiddenRelatesLabels; +$dataLabels = $tpl->get('dataLabels'); + +$id = ""; +if (isset($canvasItem['id']) && $canvasItem['id'] != '') { +$id = $canvasItem['id']; +} + +$currentCanvas = $tpl->get('currentCanvas'); + +if (isset($_GET['canvasId'])) { +$currentCanvas = (int)$_GET['canvasId']; +} + +@endphp + + + +
+ +

+ + {{ $tpl->displayNotification() }} + +
+ + + + + + + +
+ +
+ + @if (!empty($relatesLabels)) + +
+ @else + + @endif +
+

{{ __("Metrics") }}

+ + @php + + $tpl->dispatchTplEvent('beforeMeasureGoalContainer', $canvasItem); @endphp +
+ +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ @if ($login::userIsAtLeast($roles::$editor)) + + + @endif + + @if ($id !== '') +


+ +

{{ __('subtitles.discussion') }}

+ @php + $formUrl = "/strategyPro/editCanvasItem/" . $id; + @endphp + @include('comments.generalComment', ['formUrl' => $formUrl]) + @endif +
+ + @if ($id != '') + + {{ __("links.delete") }} + + @endif + +
+ + +
+ + + +@endsection \ No newline at end of file diff --git a/app/Domain/Goalcanvas/Templates/canvasDialog.tpl.php b/app/Domain/Goalcanvas/Templates/canvasDialog.tpl.php deleted file mode 100644 index 20cc318ca3..0000000000 --- a/app/Domain/Goalcanvas/Templates/canvasDialog.tpl.php +++ /dev/null @@ -1,307 +0,0 @@ - $val) { - $$var = $val; // necessary for blade refactor -} -$canvasName = 'goal'; - - -/** - * canvasDialog.inc template - Generic template for comments - * - * Required variables: - * - $canvasName Name of current canvas - */ -defined('RESTRICTED') or die('Restricted access'); - -$canvasItem = $tpl->get('canvasItem'); -$canvasTypes = $tpl->get('canvasTypes'); -$hiddenStatusLabels = $tpl->get('statusLabels'); -$statusLabels = $statusLabels ?? $hiddenStatusLabels; -$hiddenRelatesLabels = $tpl->get('relatesLabels'); -$relatesLabels = $relatesLabels ?? $hiddenRelatesLabels; -$dataLabels = $tpl->get('dataLabels'); - -$id = ""; -if (isset($canvasItem['id']) && $canvasItem['id'] != '') { - $id = $canvasItem['id']; -} - -$currentCanvas = $tpl->get('currentCanvas'); - -if (isset($_GET['canvasId'])) { - $currentCanvas = (int)$_GET['canvasId']; -} -?> - - - -
- -

- - displayNotification(); ?> - -
- - - - - - - -
-
- - - -
- - - -
- - - -
-

__("Metrics") ?>

- - - dispatchTplEvent('beforeMeasureGoalContainer', $canvasItem); ?> -
- -
-
- -
-
- - -
-
- - - - style="width:105px"/> -
-
- - -
-
- - -
-
- -
- - " id="primaryCanvasSubmitButton"/> - - - - - - -


- -

__('subtitles.discussion'); ?>

- assign("formUrl", "/strategyPro/editCanvasItem/" . $id . ""); - $tpl->displaySubmodule('comments-generalComment');?> - -
- -
- - - - -

- - - - - - - - - - - -

Dates

- - - - - - - - - -

-

__("headlines.linked_milestone") ?> ">

- - - - -
-

__("headlines.no_milestone_link") ?>

-
- - - -
- - - - -
- - - - -
-
- __("label.loading_milestone") ?> -
-
- __("links.remove") ?> - - - - - - - - -
-
- - - __("links.delete") ?> - - -
- - -
- - diff --git a/app/Domain/Goalcanvas/Templates/dashboard.blade.php b/app/Domain/Goalcanvas/Templates/dashboard.blade.php new file mode 100644 index 0000000000..b861b74674 --- /dev/null +++ b/app/Domain/Goalcanvas/Templates/dashboard.blade.php @@ -0,0 +1,322 @@ +@extends($layout) +@section('content') + +@php + +use Leantime\Domain\Comments\Repositories\Comments; +use Leantime\Domain\Goalcanvas\Services\Goalcanvas; + + +$canvasName = 'goal'; +$elementName = 'goal'; + +/** + * showCanvasTop.inc template - Top part of the main canvas page + * + * Required variables: + * - $canvasName Name of current canvas + */ + +$canvasTitle = ''; +$allCanvas = $tpl->get('allCanvas'); +$canvasIcon = $tpl->get('canvasIcon'); +$canvasTypes = $tpl->get('canvasTypes'); +$statusLabels = $statusLabels ?? $tpl->get('statusLabels'); +$relatesLabels = $relatesLabels ?? $tpl->get('relatesLabels'); +$dataLabels = $tpl->get('dataLabels'); +$disclaimer = $tpl->get('disclaimer'); +$canvasItems = $tpl->get('canvasItems'); + +$filter['status'] = $_GET['filter_status'] ?? (session("filter_status") ?? 'all'); +session(["filter_status" => $filter['status']]); +$filter['relates'] = $_GET['filter_relates'] ?? (session("filter_relates") ?? 'all'); +session(["filter_relates" => $filter['relates']]); + +//get canvas title +foreach ($tpl->get('allCanvas') as $canvasRow) { + if ($canvasRow["id"] == $tpl->get('currentCanvas')) { + $canvasTitle = $canvasRow["title"]; + $canvasId = $canvasRow["id"]; + break; + } +} + +$goalStats = $tpl->get("goalStats"); +@endphp + + + + + +
+ +{!! $tpl->displayNotification() !!} + +
+
+
+

Progress: {{ round($goalStats['avgPercentComplete']) }}%

+ +
+
+ {{ sprintf(__("text.percent_complete"), round($goalStats['avgPercentComplete'])) }} +
+
+
+
+
+
+
+

On Track

+ {{ $goalStats['goalsOnTrack'] }} +
+
+
+
+

At Risk

+ {{ $goalStats['goalsAtRisk'] }} +
+
+
+
+

Miss

+ {{ $goalStats['goalsMiss'] }} +
+
+
+ +
+
+
+
+ @if (count($allCanvas) > 0) + @foreach ($tpl->get('allCanvas') as $canvasRow) + +
+ @php + $canvasSvc = app()->make(Goalcanvas::class); + $canvasItems = $canvasSvc->getCanvasItemsById($canvasRow["id"]); + @endphp +
+
+
+
+ @if (!is_countable($canvasItems) || count($canvasItems) == 0) +
No goals on this board yet. Open the board to start adding goals
+ @endif + @foreach ($canvasItems as $row) + @php + $filterStatus = $filter['status'] ?? 'all'; + $filterRelates = $filter['relates'] ?? 'all'; + @endphp + @if ($row['box'] === $elementName && ($filterStatus == 'all' || $filterStatus == $row['status']) && ($filterRelates == 'all' || $filterRelates == $row['relates'])) + @php + $comments = app()->make(Comments::class); + $nbcomments = $comments->countComments(moduleId: $row['id']); + @endphp +
+
+
+
+
+ @if ($login::userIsAtLeast($roles::$editor)) + + + + @endif + @if ($login::userIsAtLeast($roles::$editor)) +     + + @endif +
+ +

+ Goal: + + {{ $tpl->e($row["title"]) }} + +

+
+ Metric: {{ $tpl->escape($row["description"]) }} +

+ + @php + $percentDone = $row["goalProgress"]; + $metricTypeFront = ''; + $metricTypeBack = ''; + if ($row["metricType"] == "percent") { + $metricTypeBack = '%'; + } elseif ($row["metricType"] == "currency") { + $metricTypeFront = __("language.currency"); + } + @endphp + +
+
+
+ {{ sprintf(__("text.percent_complete"), $percentDone) }} +
+
+
+
+
+ {{ sprintf(__("text.percent_complete"), $percentDone) }} +
+
+
+
+ Start:
{{ $metricTypeFront . $row["startValue"] . $metricTypeBack }}
+
+
+ {{ __('label.current') }}:
{{ $metricTypeFront . $row["currentValue"] . $metricTypeBack }}
+
+
+ {{ __('label.goal') }}:
{{ $metricTypeFront . $row["endValue"] . $metricTypeBack }}
+
+
+ +
+ + @if (!empty($statusLabels)) + + @endif + + @if (!empty($relatesLabels)) + + @endif + + + +
+ + + + {{ $nbcomments }} +
+
+
+ + @if ($row['milestoneHeadline'] != '') +
+
+
+ {{ __("label.loading_milestone") }} +
+
+ @endif +
+
+ @endif + @endforeach +
+
+
+
+
+
+ @endforeach + @endif +
+ +viewFactory->make( + $tpl->getTemplatePath('canvas', 'showCanvasBottom'), + array_merge($__data, ['canvasName' => 'goal']) +)->render(); ?> + +@endsection \ No newline at end of file diff --git a/app/Domain/Goalcanvas/Templates/dashboard.tpl.php b/app/Domain/Goalcanvas/Templates/dashboard.tpl.php deleted file mode 100644 index dddd1fcfb1..0000000000 --- a/app/Domain/Goalcanvas/Templates/dashboard.tpl.php +++ /dev/null @@ -1,724 +0,0 @@ - $val) { - $$var = $val; // necessary for blade refactor -} -$canvasName = 'goal'; -$elementName = 'goal'; - - -/** - * showCanvasTop.inc template - Top part of the main canvas page - * - * Required variables: - * - $canvasName Name of current canvas - */ - -$canvasTitle = ''; -$allCanvas = $tpl->get('allCanvas'); -$canvasIcon = $tpl->get('canvasIcon'); -$canvasTypes = $tpl->get('canvasTypes'); -$statusLabels = $statusLabels ?? $tpl->get('statusLabels'); -$relatesLabels = $relatesLabels ?? $tpl->get('relatesLabels'); -$dataLabels = $tpl->get('dataLabels'); -$disclaimer = $tpl->get('disclaimer'); -$canvasItems = $tpl->get('canvasItems'); - -$filter['status'] = $_GET['filter_status'] ?? (session("filter_status") ?? 'all'); -session(["filter_status" => $filter['status']]); -$filter['relates'] = $_GET['filter_relates'] ?? (session("filter_relates") ?? 'all'); -session(["filter_relates" => $filter['relates']]); - -//get canvas title -foreach ($tpl->get('allCanvas') as $canvasRow) { - if ($canvasRow["id"] == $tpl->get('currentCanvas')) { - $canvasTitle = $canvasRow["title"]; - $canvasId = $canvasRow["id"]; - break; - } -} - -$goalStats = $tpl->get("goalStats"); - -?> - - - - -
- - -displayNotification(); ?> - - - -
-
-
-

Progress: %

- -
-
- __("text.percent_complete"), round($goalStats['avgPercentComplete']))?> -
-
-
- -
-
-
-
-
-

On Track

- -
-
-
-
-

At Risk

- -
-
-
-
-

Miss

- - -
- -
-
- - - - -
-
-
- - -
-
- 0) {?> - get('allCanvas') as $canvasRow) { ?> - -
- make(Goalcanvas::class); - $canvasItems = $canvasSvc->getCanvasItemsById($canvasRow["id"]); - ?> -
" class="sortableTicketList disabled col-md-12" style="padding-top:15px;"> -
-
-
- - No goals on this board yet. Open the board to start adding goals
"; - } - ?> - make(Comments::class); - $nbcomments = $comments->countComments(moduleId: $row['id']); - ?> -
-
"> -
-
- - -

- Goal: - " - class="CanvasModal" - data="item_"> - e($row["title"]);?> - -

-
- Metric: escape($row["description"]) ?> -

- - __("language.currency"); - } - ?> - -
-
-
- - __("text.percent_complete"), $percentDone); ?> -
-
-
-
-
- __("text.percent_complete"), $percentDone)?> -
-
-
-
- Start:
-
-
- __('label.current') ?>:
-
-
- __('label.goal') ?>:
-
-
- -
- - - - - - - - - - - -
- - > -
- -
-
- - -
-
-
- __("label.loading_milestone") ?> -
-
- -
-
- - - - - -
-
- - - -
-
-
- -
- - - - - - - - - - -
- -
- -
-
-
- 0 && !empty($statusLabels)) {?> - - - - - - - -
- -
- 0 && !empty($relatesLabels)) {?> - - - - - - - -
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - get('allCanvas')) > 0) { ?> -
-
-
-
- make(\Leantime\Domain\Comments\Repositories\Comments::class); - $nbcomments = $comments->countComments(moduleId: $row['id']); - ?> -
-
"> -
-
- - -

" - class="CanvasModal" - data="item_">e($row["description"]);?>

-
- escape($row["assumptions"]) ?> -
- - - - -
- -
- __('label.current') ?>: -
-
- __("text.percent_complete"), $percentDone); ?> -
-
- __('label.goal') ?>: -
-
-
-
- __("text.percent_complete"), $percentDone)?> -
-
- -
- - - - - - - - - - - - -
- > -
- -
-
- - -
-
-
- 60 ? - $tpl->e(substr(($row['milestoneHeadline']), 0, 60) . " ...") : $tpl->e($row['milestoneHeadline']); ?> -
-
- __("text.percent_complete"), $row['percentDone'])?> -
-
-
-
-
-
- __("text.percent_complete"), $row['percentDone'])?> -
-
-
-
- -
-
- - - -
-
- - - -
-
-
- -
"; - - echo "
"; - echo file_get_contents(ROOT . "/dist/images/svg/undraw_design_data_khdb.svg"); - echo "
"; - - echo"

" . $tpl->__("headlines.goal.analysis") . "

"; - echo "
" . $tpl->__("text.goal.helper_content"); - - - echo"
"; - } ?> - - -
- - - */ - -echo $tpl->viewFactory->make( - $tpl->getTemplatePath('canvas', 'showCanvasBottom'), - array_merge($__data, ['canvasName' => 'goal']) -)->render(); ?> diff --git a/app/Domain/Goalcanvas/Templates/delCanvas.blade.php b/app/Domain/Goalcanvas/Templates/delCanvas.blade.php new file mode 100644 index 0000000000..47bc018b79 --- /dev/null +++ b/app/Domain/Goalcanvas/Templates/delCanvas.blade.php @@ -0,0 +1,29 @@ +@extends($layout) +@section('content') + + +@php +/** + * delCanvas.inc template - Generic template for deleting canvas + * + * Required variables: + * - $canvasName Name of current canvas + * - $csrf_token CSRF token (if used in your application) + */ + +$id = filter_var($_GET['id'] ?? '', FILTER_SANITIZE_NUMBER_INT); +$canvasName = 'goal' +@endphp + +

{{ __("subtitles.delete") }}

+ +
+ @if(isset($csrf_token)) + + @endif +

{{ __('text.confirm_board_deletion') }}


+ + {{ __('buttons.back') }} +
+ +@endsection \ No newline at end of file diff --git a/app/Domain/Goalcanvas/Templates/delCanvas.tpl.php b/app/Domain/Goalcanvas/Templates/delCanvas.tpl.php deleted file mode 100644 index 608a99bf40..0000000000 --- a/app/Domain/Goalcanvas/Templates/delCanvas.tpl.php +++ /dev/null @@ -1,13 +0,0 @@ - $val) { - $$var = $val; // necessary for blade refactor -} -echo $tpl->viewFactory->make( - $tpl->getTemplatePath('canvas', 'delCanvas'), - array_merge($__data, ['canvasName' => 'goal']) -)->render(); diff --git a/app/Domain/Goalcanvas/Templates/delCanvasItem.blade.php b/app/Domain/Goalcanvas/Templates/delCanvasItem.blade.php new file mode 100644 index 0000000000..a6908c91d5 --- /dev/null +++ b/app/Domain/Goalcanvas/Templates/delCanvasItem.blade.php @@ -0,0 +1,25 @@ +@extends($layout) +@section('content') + +@php + +/** + * delCanvasItem.inc template - Generic template for deleting canvas item + * + * Required variables: + * - $canvasName Name of current canvas + */ + +$id = filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT); +$canvasName = 'goal' +@endphp + +

__("subtitles.delete") ?>

+
+ +
+

{{ __('text.confirm_board_item_deletion') }}


+ + {{ __('buttons.back') }} +
+@endsection diff --git a/app/Domain/Goalcanvas/Templates/delCanvasItem.tpl.php b/app/Domain/Goalcanvas/Templates/delCanvasItem.tpl.php deleted file mode 100644 index 155d8a1b4c..0000000000 --- a/app/Domain/Goalcanvas/Templates/delCanvasItem.tpl.php +++ /dev/null @@ -1,13 +0,0 @@ - $val) { - $$var = $val; // necessary for blade refactor -} -echo $tpl->viewFactory->make( - $tpl->getTemplatePath('canvas', 'delCanvasItem'), - array_merge($__data, ['canvasName' => 'goal']) -)->render(); diff --git a/app/Domain/Goalcanvas/Templates/showBottomCanvas.blade.php b/app/Domain/Goalcanvas/Templates/showBottomCanvas.blade.php new file mode 100644 index 0000000000..8f044e7e10 --- /dev/null +++ b/app/Domain/Goalcanvas/Templates/showBottomCanvas.blade.php @@ -0,0 +1,67 @@ +@if (count($tpl->get('allCanvas')) > 0) +@else +

+
+
+ {!! file_get_contents(ROOT . "/dist/images/svg/undraw_design_data_khdb.svg") !!} +
+ +

{{ __("headlines.$canvasName.analysis") }}

+
{{ __("text.$canvasName.helper_content") }} + + @if ($login::userIsAtLeast($roles::$editor)) +

+ + {{ __("links.icon.create_new_board") }} + + @endif +
+@endif + +@if (!empty($disclaimer) && count($tpl->get('allCanvas')) > 0) +{{ $disclaimer }} +@endif + +{!! $tpl->viewFactory->make($tpl->getTemplatePath('canvas', 'modals'), $__data)->render() !!} +
+ + + + \ No newline at end of file diff --git a/app/Domain/Goalcanvas/Templates/showCanvas.blade.php b/app/Domain/Goalcanvas/Templates/showCanvas.blade.php new file mode 100644 index 0000000000..bdab4e29ba --- /dev/null +++ b/app/Domain/Goalcanvas/Templates/showCanvas.blade.php @@ -0,0 +1,415 @@ +@extends($layout) +@section('content') + + +@php + +$canvasName = 'goal'; +$elementName = 'goal'; + +@endphp + +@php + +$canvasTitle = ''; +$allCanvas = $tpl->get('allCanvas'); +$canvasIcon = $tpl->get('canvasIcon'); +$canvasTypes = $tpl->get('canvasTypes'); +$statusLabels = $statusLabels ?? $tpl->get('statusLabels'); +$relatesLabels = $relatesLabels ?? $tpl->get('relatesLabels'); +$dataLabels = $tpl->get('dataLabels'); +$disclaimer = $tpl->get('disclaimer'); +$canvasItems = $tpl->get('canvasItems'); + +$filter['status'] = $_GET['filter_status'] ?? (session("filter_status") ?? 'all'); +session(["filter_status" => $filter['status']]); +$filter['relates'] = $_GET['filter_relates'] ?? (session("filter_relates") ?? 'all'); +session(["filter_relates" => $filter['relates']]); + +//get canvas title +foreach ($tpl->get('allCanvas') as $canvasRow) { +if ($canvasRow["id"] == $tpl->get('currentCanvas')) { +$canvasTitle = $canvasRow["title"]; +break; +} +} + +$tpl->assign('canvasTitle', $canvasTitle); + +@endphp + + + + + +
+
+ + displayNotification(); ?> + +
+
+ @if ($login::userIsAtLeast($roles::$editor) && count($canvasTypes) == 1 && count($allCanvas) > 0) + {!!__('links.add_new_canvas_item' . $canvasName)!!} + @endif +
+ +
+
+ +
+
+
+ @if (count($allCanvas) > 0 && !empty($statusLabels)) + @if ($filter['status'] == 'all') + + @else + + @endif + + @endif +
+ +
+ @if (count($allCanvas) > 0 && !empty($relatesLabels)) + @if ($filter['relates'] == 'all') + + @else + + @endif + + @endif +
+
+
+
+ +
+ + + @if (count($allCanvas) > 0) +
+
+
+
+ @foreach ($canvasItems as $row) + @php + $filterStatus = $filter['status'] ?? 'all'; + $filterRelates = $filter['relates'] ?? 'all'; + @endphp + + @if ($row['box'] === $elementName && ($filterStatus == 'all' || $filterStatus == $row['status']) && ($filterRelates == 'all' || $filterRelates == $row['relates'])) + @php + $comments = app()->make(Comments::class); + $nbcomments = $comments->countComments(moduleId: $row['id']); + @endphp +
+
+
+
+
+ @if ($login::userIsAtLeast($roles::$editor)) + + + + + @endif +
+ +

Goal: {{ $row['title'] }}

+
+ Metric: {{ $row["description"] }} +

+ + @php + $percentDone = $row["goalProgress"]; + $metricTypeFront = ''; + $metricTypeBack = ''; + if ($row["metricType"] == "percent") { + $metricTypeBack = '%'; + } elseif ($row["metricType"] == "currency") { + $metricTypeFront = __("language.currency"); + } + @endphp + +
+
+
+ {{ sprintf(__("text.percent_complete"), $percentDone) }} +
+
+
+
+
+ {{ sprintf(__("text.percent_complete"), $percentDone) }} +
+
+
+
+ Start:
{{ $metricTypeFront . $row["startValue"] . $metricTypeBack }}
+
+
+ {{ __('label.current') }}:
{{ $metricTypeFront . $row["currentValue"] . $metricTypeBack }}
+
+
+ {{ __('label.goal') }}:
{{ $metricTypeFront . $row["endValue"] . $metricTypeBack }}
+
+
+ +
+ + @if (!empty($statusLabels)) + + @endif + + @if (!empty($relatesLabels)) + + @endif + + + +
+ {{ $nbcomments }} +
+ +
+
+ + @if ($row['milestoneHeadline'] != '') +
+
+
+ {{ __("label.loading_milestone") }} +
+
+ @endif +
+
+ @endif + @endforeach +
+
+
+
+
+ + @if (count($canvasItems) == 0) +

+
+
+ {!! file_get_contents(ROOT . "/dist/images/svg/undraw_design_data_khdb.svg") !!} +
+

{{ __("headlines.goal.analysis") }}

+
{!! __("text.goal.helper_content") !!} +
+ @endif + +
+ @endif + + + + + + + + @if (count($tpl->get('allCanvas')) > 0) + @else +

+
+
+ {!! file_get_contents(ROOT . "/dist/images/svg/undraw_design_data_khdb.svg") !!} +
+ +

{{ __("headlines.$canvasName.analysis") }}

+
{{ __("text.$canvasName.helper_content") }} + + @if ($login::userIsAtLeast($roles::$editor)) +

+ + {{ __("links.icon.create_new_board") }} + + @endif +
+ @endif + + @if (!empty($disclaimer) && count($tpl->get('allCanvas')) > 0) + {{ $disclaimer }} + @endif + + {!! $tpl->viewFactory->make($tpl->getTemplatePath('canvas', 'modals'), $__data)->render() !!} +
+
+ + + + + + +@endsection \ No newline at end of file diff --git a/app/Domain/Goalcanvas/Templates/showCanvas.tpl.php b/app/Domain/Goalcanvas/Templates/showCanvas.tpl.php deleted file mode 100644 index 2137b1e6a3..0000000000 --- a/app/Domain/Goalcanvas/Templates/showCanvas.tpl.php +++ /dev/null @@ -1,404 +0,0 @@ - $val) { - $$var = $val; // necessary for blade refactor -} -$canvasName = 'goal'; -$elementName = 'goal'; - -?> - -get('allCanvas'); -$canvasIcon = $tpl->get('canvasIcon'); -$canvasTypes = $tpl->get('canvasTypes'); -$statusLabels = $statusLabels ?? $tpl->get('statusLabels'); -$relatesLabels = $relatesLabels ?? $tpl->get('relatesLabels'); -$dataLabels = $tpl->get('dataLabels'); -$disclaimer = $tpl->get('disclaimer'); -$canvasItems = $tpl->get('canvasItems'); - -$filter['status'] = $_GET['filter_status'] ?? (session("filter_status") ?? 'all'); -session(["filter_status" => $filter['status']]); -$filter['relates'] = $_GET['filter_relates'] ?? (session("filter_relates") ?? 'all'); -session(["filter_relates" => $filter['relates']]); - -//get canvas title -foreach ($tpl->get('allCanvas') as $canvasRow) { - if ($canvasRow["id"] == $tpl->get('currentCanvas')) { - $canvasTitle = $canvasRow["title"]; - break; - } -} - -$tpl->assign('canvasTitle', $canvasTitle); - -?> - - - - -
-
- - displayNotification(); ?> - -
- - -
- -
- -
-
-
- 0 && !empty($statusLabels)) {?> - - - - - - - -
- -
- 0 && !empty($relatesLabels)) {?> - - - - - - - -
- -
-
- -
- -
- - - get('allCanvas')) > 0) { ?> -
-
-
-
- make(Comments::class); - $nbcomments = $comments->countComments(moduleId: $row['id']); - ?> -
-
"> -
-
- - -

Goal: " - data="item_">e($row['title']);?>

-
- Metric: escape($row["description"]) ?> -

- - - - - __("language.currency"); - } - - ?> - -
-
-
- - __("text.percent_complete"), $percentDone); ?> -
-
-
-
-
- __("text.percent_complete"), $percentDone)?> -
-
-
-
- Start:
-
-
- __('label.current') ?>:
-
-
- __('label.goal') ?>:
-
-
- -
- - - - - - - - - - - - -
- -
- -
-
- - -
-
-
- __("label.loading_milestone") ?> -
-
- -
-
- - - -
-
- - - -
-
-
- -
"; - - echo "
"; - echo file_get_contents(ROOT . "/dist/images/svg/undraw_design_data_khdb.svg"); - echo "
"; - - echo"

" . $tpl->__("headlines.goal.analysis") . "

"; - echo "
" . $tpl->__("text.goal.helper_content"); - - - echo"
"; - } ?> - - -
- - -viewFactory->make( - $tpl->getTemplatePath('canvas', 'showCanvasBottom'), - array_merge($__data, ['canvasName' => 'goal']) -)->render(); ?> diff --git a/app/helpers.php b/app/helpers.php index c76d65423a..5a7d462736 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -7,6 +7,7 @@ use Leantime\Core\Application; use Leantime\Core\AppSettings; use Leantime\Core\Bootloader; +use Leantime\Core\IncomingRequest; use Leantime\Core\Language; use Leantime\Core\Support\Build; use Leantime\Core\Support\Cast; @@ -341,3 +342,27 @@ function storage_path($path = '') } } + +if (! function_exists('request')) { + /** + * Get an instance of the current request or an input item from the request. + * + * @param list|string|null $key + * @param mixed $default + * @return ($key is null ? \Illuminate\Http\Request : ($key is string ? mixed : array)) + */ + function request($key = null, $default = null) + { + if (is_null($key)) { + return app()->make(IncomingRequest::class); + } + + if (is_array($key)) { + return app()->make(IncomingRequest::class)->only($key); + } + + $value = app()->make(IncomingRequest::class)->__get($key); + + return is_null($value) ? value($default) : $value; + } +} diff --git a/public/dist/mix-manifest.json b/public/dist/mix-manifest.json index 31410aae9b..acde37b1c1 100644 --- a/public/dist/mix-manifest.json +++ b/public/dist/mix-manifest.json @@ -17,51 +17,6 @@ "/images/03-1.png": "/images/03-1.png", "/images/32px.png": "/images/32px.png", "/images/40px.png": "/images/40px.png", - "/images/Screenshots/Blueprints.png": "/images/Screenshots/Blueprints.png", - "/images/Screenshots/Calendar.png": "/images/Screenshots/Calendar.png", - "/images/Screenshots/Confetti.png": "/images/Screenshots/Confetti.png", - "/images/Screenshots/Dashboard.png": "/images/Screenshots/Dashboard.png", - "/images/Screenshots/Docs.png": "/images/Screenshots/Docs.png", - "/images/Screenshots/DocsEmbed.png": "/images/Screenshots/DocsEmbed.png", - "/images/Screenshots/DocsStandard.png": "/images/Screenshots/DocsStandard.png", - "/images/Screenshots/Files.png": "/images/Screenshots/Files.png", - "/images/Screenshots/Goals.png": "/images/Screenshots/Goals.png", - "/images/Screenshots/Home.png": "/images/Screenshots/Home.png", - "/images/Screenshots/Ideas.png": "/images/Screenshots/Ideas.png", - "/images/Screenshots/Kanban2.png": "/images/Screenshots/Kanban2.png", - "/images/Screenshots/LeanCanvas.png": "/images/Screenshots/LeanCanvas.png", - "/images/Screenshots/Leancanvas.png": "/images/Screenshots/Leancanvas.png", - "/images/Screenshots/Milestones.png": "/images/Screenshots/Milestones.png", - "/images/Screenshots/MyProjects.png": "/images/Screenshots/MyProjects.png", - "/images/Screenshots/Portfolio.png": "/images/Screenshots/Portfolio.png", - "/images/Screenshots/ProjectDashboard.png": "/images/Screenshots/ProjectDashboard.png", - "/images/Screenshots/Reports.png": "/images/Screenshots/Reports.png", - "/images/Screenshots/Strategy.png": "/images/Screenshots/Strategy.png", - "/images/Screenshots/Task.png": "/images/Screenshots/Task.png", - "/images/Screenshots/Tasks-calendar.png": "/images/Screenshots/Tasks-calendar.png", - "/images/Screenshots/Tasks-kanban.png": "/images/Screenshots/Tasks-kanban.png", - "/images/Screenshots/Tasks-list.png": "/images/Screenshots/Tasks-list.png", - "/images/Screenshots/Tasks-table.png": "/images/Screenshots/Tasks-table.png", - "/images/Screenshots/Tasks-timeline.png": "/images/Screenshots/Tasks-timeline.png", - "/images/Screenshots/TimesheetAdmin.png": "/images/Screenshots/TimesheetAdmin.png", - "/images/Screenshots/Timesheets.png": "/images/Screenshots/Timesheets.png", - "/images/Screenshots/ToDoKanban.png": "/images/Screenshots/ToDoKanban.png", - "/images/Screenshots/ToDoTable.png": "/images/Screenshots/ToDoTable.png", - "/images/Screenshots/ToDoView.png": "/images/Screenshots/ToDoView.png", - "/images/Screenshots/UserDashboard.png": "/images/Screenshots/UserDashboard.png", - "/images/Screenshots/apps.png": "/images/Screenshots/apps.png", - "/images/Screenshots/blueprints.png": "/images/Screenshots/blueprints.png", - "/images/Screenshots/calendar.png": "/images/Screenshots/calendar.png", - "/images/Screenshots/dark.png": "/images/Screenshots/dark.png", - "/images/Screenshots/docs.png": "/images/Screenshots/docs.png", - "/images/Screenshots/goals.png": "/images/Screenshots/goals.png", - "/images/Screenshots/kanban.png": "/images/Screenshots/kanban.png", - "/images/Screenshots/mywork.png": "/images/Screenshots/mywork.png", - "/images/Screenshots/projectDashboard.png": "/images/Screenshots/projectDashboard.png", - "/images/Screenshots/table.png": "/images/Screenshots/table.png", - "/images/Screenshots/timeline.png": "/images/Screenshots/timeline.png", - "/images/Screenshots/timesheet.png": "/images/Screenshots/timesheet.png", - "/images/ajaxLoader.gif": "/images/ajaxLoader.gif", "/images/apple-touch-icon.png": "/images/apple-touch-icon.png", "/images/backgrounds/bg0.png": "/images/backgrounds/bg0.png", "/images/backgrounds/bg1.png": "/images/backgrounds/bg1.png", @@ -71,27 +26,17 @@ "/images/backgrounds/bg5.png": "/images/backgrounds/bg5.png", "/images/backgrounds/bg6.png": "/images/backgrounds/bg6.png", "/images/backgrounds/bg7.png": "/images/backgrounds/bg7.png", - "/images/bg0.png": "/images/bg0.png", - "/images/bg2.png": "/images/bg2.png", "/images/calarrow.png": "/images/calarrow.png", - "/images/canvas.PNG": "/images/canvas.PNG", "/images/chosen-sprite-light.png": "/images/chosen-sprite-light.png", "/images/chosen-sprite-light@2x.png": "/images/chosen-sprite-light@2x.png", "/images/chosen-sprite.png": "/images/chosen-sprite.png", - "/images/close.gif": "/images/close.gif", "/images/close.png": "/images/close.png", - "/images/controls.png": "/images/controls.png", - "/images/default-user.png": "/images/default-user.png", "/images/discord-logo.png": "/images/discord-logo.png", "/images/doc.png": "/images/doc.png", - "/images/emptyChartBg.png": "/images/emptyChartBg.png", "/images/favicon.png": "/images/favicon.png", - "/images/glyphicons-halflings-white.png": "/images/glyphicons-halflings-white.png", - "/images/glyphicons-halflings.png": "/images/glyphicons-halflings.png", "/images/icon-192.png": "/images/icon-192.png", "/images/icon-512.png": "/images/icon-512.png", "/images/index.html": "/images/index.html", - "/images/leantime-no-access.jpg": "/images/leantime-no-access.jpg", "/images/loading-animation.svg": "/images/loading-animation.svg", "/images/logo-powered-by-leantime.png": "/images/logo-powered-by-leantime.png", "/images/logo.png": "/images/logo.png", @@ -99,28 +44,28 @@ "/images/logo_blue.png": "/images/logo_blue.png", "/images/logo_blue.svg": "/images/logo_blue.svg", "/images/mattermost-logoHorizontal.png": "/images/mattermost-logoHorizontal.png", - "/images/next.gif": "/images/next.gif", - "/images/onboarding/canvasScreen.png": "/images/onboarding/canvasScreen.png", - "/images/onboarding/ideaScreen.png": "/images/onboarding/ideaScreen.png", - "/images/onboarding/retroScreen.png": "/images/onboarding/retroScreen.png", - "/images/onboarding/roadmapScreen.png": "/images/onboarding/roadmapScreen.png", - "/images/onboarding/todoScreen.png": "/images/onboarding/todoScreen.png", "/images/openid-icon.png": "/images/openid-icon.png", - "/images/prev.gif": "/images/prev.gif", - "/images/registrationBg.png": "/images/registrationBg.png", + "/images/Screenshots/apps.png": "/images/Screenshots/apps.png", + "/images/Screenshots/blueprints.png": "/images/Screenshots/blueprints.png", + "/images/Screenshots/calendar.png": "/images/Screenshots/calendar.png", + "/images/Screenshots/dark.png": "/images/Screenshots/dark.png", + "/images/Screenshots/docs.png": "/images/Screenshots/docs.png", + "/images/Screenshots/goals.png": "/images/Screenshots/goals.png", + "/images/Screenshots/kanban.png": "/images/Screenshots/kanban.png", + "/images/Screenshots/mywork.png": "/images/Screenshots/mywork.png", + "/images/Screenshots/projectDashboard.png": "/images/Screenshots/projectDashboard.png", + "/images/Screenshots/table.png": "/images/Screenshots/table.png", + "/images/Screenshots/timeline.png": "/images/Screenshots/timeline.png", + "/images/Screenshots/timesheet.png": "/images/Screenshots/timesheet.png", "/images/spotlightBg.png": "/images/spotlightBg.png", - "/images/svg/30h/logo.png": "/images/svg/30h/logo.png", - "/images/svg/SVG/logo.svg": "/images/svg/SVG/logo.svg", "/images/svg/apps-grid-icon.svg": "/images/svg/apps-grid-icon.svg", "/images/svg/csv-icon.svg": "/images/svg/csv-icon.svg", "/images/svg/loading-animation.svg": "/images/svg/loading-animation.svg", - "/images/svg/logo.svg": "/images/svg/logo.svg", - "/images/svg/undraw_Organizing_projects_0p9a.svg": "/images/svg/undraw_Organizing_projects_0p9a.svg", - "/images/svg/undraw_a_moment_to_relax_bbpa.svg": "/images/svg/undraw_a_moment_to_relax_bbpa.svg", "/images/svg/undraw_adjustments_p22m.svg": "/images/svg/undraw_adjustments_p22m.svg", "/images/svg/undraw_adventure_map_hnin.svg": "/images/svg/undraw_adventure_map_hnin.svg", "/images/svg/undraw_air_support_re_nybl.svg": "/images/svg/undraw_air_support_re_nybl.svg", "/images/svg/undraw_attached_file_re_0n9b.svg": "/images/svg/undraw_attached_file_re_0n9b.svg", + "/images/svg/undraw_a_moment_to_relax_bbpa.svg": "/images/svg/undraw_a_moment_to_relax_bbpa.svg", "/images/svg/undraw_blooming_re_2kc4.svg": "/images/svg/undraw_blooming_re_2kc4.svg", "/images/svg/undraw_book_reading_re_fu2c.svg": "/images/svg/undraw_book_reading_re_fu2c.svg", "/images/svg/undraw_business_decisions_re_84ag.svg": "/images/svg/undraw_business_decisions_re_84ag.svg", @@ -130,7 +75,6 @@ "/images/svg/undraw_complete_task_u2c3.svg": "/images/svg/undraw_complete_task_u2c3.svg", "/images/svg/undraw_dark_mode_2xam.svg": "/images/svg/undraw_dark_mode_2xam.svg", "/images/svg/undraw_design_data_khdb.svg": "/images/svg/undraw_design_data_khdb.svg", - "/images/svg/undraw_donut_love_kau1.svg": "/images/svg/undraw_donut_love_kau1.svg", "/images/svg/undraw_events_2p66.svg": "/images/svg/undraw_events_2p66.svg", "/images/svg/undraw_events_re_98ue.svg": "/images/svg/undraw_events_re_98ue.svg", "/images/svg/undraw_explore_re_8l4v.svg": "/images/svg/undraw_explore_re_8l4v.svg", @@ -138,7 +82,6 @@ "/images/svg/undraw_game_day_ucx9.svg": "/images/svg/undraw_game_day_ucx9.svg", "/images/svg/undraw_goals_re_lu76.svg": "/images/svg/undraw_goals_re_lu76.svg", "/images/svg/undraw_happy_music_g6wc.svg": "/images/svg/undraw_happy_music_g6wc.svg", - "/images/svg/undraw_happy_news_re_tsbd (1).svg": "/images/svg/undraw_happy_news_re_tsbd (1).svg", "/images/svg/undraw_happy_news_re_tsbd.svg": "/images/svg/undraw_happy_news_re_tsbd.svg", "/images/svg/undraw_image__folder_re_hgp7.svg": "/images/svg/undraw_image__folder_re_hgp7.svg", "/images/svg/undraw_instant_support_re_s7un.svg": "/images/svg/undraw_instant_support_re_s7un.svg", @@ -151,8 +94,9 @@ "/images/svg/undraw_no_data_re_kwbl.svg": "/images/svg/undraw_no_data_re_kwbl.svg", "/images/svg/undraw_online_connection_6778.svg": "/images/svg/undraw_online_connection_6778.svg", "/images/svg/undraw_online_party_re_7t6g.svg": "/images/svg/undraw_online_party_re_7t6g.svg", - "/images/svg/undraw_party_re_nmwj.svg": "/images/svg/undraw_party_re_nmwj.svg", + "/images/svg/undraw_Organizing_projects_0p9a.svg": "/images/svg/undraw_Organizing_projects_0p9a.svg", "/images/svg/undraw_partying_re_at7f.svg": "/images/svg/undraw_partying_re_at7f.svg", + "/images/svg/undraw_party_re_nmwj.svg": "/images/svg/undraw_party_re_nmwj.svg", "/images/svg/undraw_photos_re_pvh3.svg": "/images/svg/undraw_photos_re_pvh3.svg", "/images/svg/undraw_powerful_re_frhr.svg": "/images/svg/undraw_powerful_re_frhr.svg", "/images/svg/undraw_progressive_app_m-9-ms.svg": "/images/svg/undraw_progressive_app_m-9-ms.svg", @@ -174,39 +118,12 @@ "/images/svg/undraw_thought_process_re_om58.svg": "/images/svg/undraw_thought_process_re_om58.svg", "/images/svg/undraw_time_management_30iu.svg": "/images/svg/undraw_time_management_30iu.svg", "/images/svg/undraw_time_management_re_tk5w.svg": "/images/svg/undraw_time_management_re_tk5w.svg", - "/images/svg/undraw_treasure_of-9-i.svg": "/images/svg/undraw_treasure_of-9-i.svg", "/images/svg/undraw_welcome_re_h3d9.svg": "/images/svg/undraw_welcome_re_h3d9.svg", "/images/svg/undraw_welcoming_re_x0qo.svg": "/images/svg/undraw_welcoming_re_x0qo.svg", "/images/svg/undraw_wishes_icyp.svg": "/images/svg/undraw_wishes_icyp.svg", "/images/throbber.gif": "/images/throbber.gif", "/images/undraw_progressive_app_m9ms.png": "/images/undraw_progressive_app_m9ms.png", "/images/zulip-org-logo.png": "/images/zulip-org-logo.png", - "/fonts/Atkinson-Hyperlegible-Bold-102.ttf": "/fonts/Atkinson-Hyperlegible-Bold-102.ttf", - "/fonts/Atkinson-Hyperlegible-Bold-102a.woff2": "/fonts/Atkinson-Hyperlegible-Bold-102a.woff2", - "/fonts/Atkinson-Hyperlegible-BoldItalic-102.ttf": "/fonts/Atkinson-Hyperlegible-BoldItalic-102.ttf", - "/fonts/Atkinson-Hyperlegible-BoldItalic-102a.woff2": "/fonts/Atkinson-Hyperlegible-BoldItalic-102a.woff2", - "/fonts/Atkinson-Hyperlegible-Italic-102.ttf": "/fonts/Atkinson-Hyperlegible-Italic-102.ttf", - "/fonts/Atkinson-Hyperlegible-Italic-102a.woff2": "/fonts/Atkinson-Hyperlegible-Italic-102a.woff2", - "/fonts/Atkinson-Hyperlegible-Regular-102.ttf": "/fonts/Atkinson-Hyperlegible-Regular-102.ttf", - "/fonts/Atkinson-Hyperlegible-Regular-102a.woff2": "/fonts/Atkinson-Hyperlegible-Regular-102a.woff2", - "/fonts/Roboto-Bold.ttf": "/fonts/Roboto-Bold.ttf", - "/fonts/Roboto-Bold.woff2": "/fonts/Roboto-Bold.woff2", - "/fonts/Roboto-Italic.ttf": "/fonts/Roboto-Italic.ttf", - "/fonts/Roboto-Italic.woff2": "/fonts/Roboto-Italic.woff2", - "/fonts/Roboto-Light.ttf": "/fonts/Roboto-Light.ttf", - "/fonts/Roboto-Light.woff2": "/fonts/Roboto-Light.woff2", - "/fonts/Roboto-LightItalic.ttf": "/fonts/Roboto-LightItalic.ttf", - "/fonts/Roboto-LightItalic.woff2": "/fonts/Roboto-LightItalic.woff2", - "/fonts/Roboto-Medium.ttf": "/fonts/Roboto-Medium.ttf", - "/fonts/Roboto-Medium.woff2": "/fonts/Roboto-Medium.woff2", - "/fonts/Roboto-MediumItalic.ttf": "/fonts/Roboto-MediumItalic.ttf", - "/fonts/Roboto-MediumItalic.woff2": "/fonts/Roboto-MediumItalic.woff2", - "/fonts/Roboto-Regular.ttf": "/fonts/Roboto-Regular.ttf", - "/fonts/Roboto-Regular.woff2": "/fonts/Roboto-Regular.woff2", - "/fonts/Shantell_Sans-Informal_Bold.woff2": "/fonts/Shantell_Sans-Informal_Bold.woff2", - "/fonts/Shantell_Sans-Informal_Bold_Italic.woff2": "/fonts/Shantell_Sans-Informal_Bold_Italic.woff2", - "/fonts/Shantell_Sans-Informal_Regular.woff2": "/fonts/Shantell_Sans-Informal_Regular.woff2", - "/fonts/Shantell_Sans-Informal_Regular_Italic.woff2": "/fonts/Shantell_Sans-Informal_Regular_Italic.woff2", "/fonts/atkinson/Atkinson-Hyperlegible-Bold-102.ttf": "/fonts/atkinson/Atkinson-Hyperlegible-Bold-102.ttf", "/fonts/atkinson/Atkinson-Hyperlegible-Bold-102a.woff2": "/fonts/atkinson/Atkinson-Hyperlegible-Bold-102a.woff2", "/fonts/atkinson/Atkinson-Hyperlegible-BoldItalic-102.ttf": "/fonts/atkinson/Atkinson-Hyperlegible-BoldItalic-102.ttf", @@ -216,6 +133,14 @@ "/fonts/atkinson/Atkinson-Hyperlegible-Italic-102a.woff2": "/fonts/atkinson/Atkinson-Hyperlegible-Italic-102a.woff2", "/fonts/atkinson/Atkinson-Hyperlegible-Regular-102.ttf": "/fonts/atkinson/Atkinson-Hyperlegible-Regular-102.ttf", "/fonts/atkinson/Atkinson-Hyperlegible-Regular-102a.woff2": "/fonts/atkinson/Atkinson-Hyperlegible-Regular-102a.woff2", + "/fonts/Atkinson-Hyperlegible-Bold-102.ttf": "/fonts/Atkinson-Hyperlegible-Bold-102.ttf", + "/fonts/Atkinson-Hyperlegible-Bold-102a.woff2": "/fonts/Atkinson-Hyperlegible-Bold-102a.woff2", + "/fonts/Atkinson-Hyperlegible-BoldItalic-102.ttf": "/fonts/Atkinson-Hyperlegible-BoldItalic-102.ttf", + "/fonts/Atkinson-Hyperlegible-BoldItalic-102a.woff2": "/fonts/Atkinson-Hyperlegible-BoldItalic-102a.woff2", + "/fonts/Atkinson-Hyperlegible-Italic-102.ttf": "/fonts/Atkinson-Hyperlegible-Italic-102.ttf", + "/fonts/Atkinson-Hyperlegible-Italic-102a.woff2": "/fonts/Atkinson-Hyperlegible-Italic-102a.woff2", + "/fonts/Atkinson-Hyperlegible-Regular-102.ttf": "/fonts/Atkinson-Hyperlegible-Regular-102.ttf", + "/fonts/Atkinson-Hyperlegible-Regular-102a.woff2": "/fonts/Atkinson-Hyperlegible-Regular-102a.woff2", "/fonts/fa-brands-400.ttf": "/fonts/fa-brands-400.ttf", "/fonts/fa-brands-400.woff2": "/fonts/fa-brands-400.woff2", "/fonts/fa-regular-400.ttf": "/fonts/fa-regular-400.ttf", @@ -250,29 +175,43 @@ "/fonts/roboto/Roboto-Thin.woff2": "/fonts/roboto/Roboto-Thin.woff2", "/fonts/roboto/Roboto-ThinItalic.ttf": "/fonts/roboto/Roboto-ThinItalic.ttf", "/fonts/roboto/Roboto-ThinItalic.woff2": "/fonts/roboto/Roboto-ThinItalic.woff2", + "/fonts/Roboto-Bold.ttf": "/fonts/Roboto-Bold.ttf", + "/fonts/Roboto-Bold.woff2": "/fonts/Roboto-Bold.woff2", + "/fonts/Roboto-Italic.ttf": "/fonts/Roboto-Italic.ttf", + "/fonts/Roboto-Italic.woff2": "/fonts/Roboto-Italic.woff2", + "/fonts/Roboto-Light.ttf": "/fonts/Roboto-Light.ttf", + "/fonts/Roboto-Light.woff2": "/fonts/Roboto-Light.woff2", + "/fonts/Roboto-LightItalic.ttf": "/fonts/Roboto-LightItalic.ttf", + "/fonts/Roboto-LightItalic.woff2": "/fonts/Roboto-LightItalic.woff2", + "/fonts/Roboto-Medium.ttf": "/fonts/Roboto-Medium.ttf", + "/fonts/Roboto-Medium.woff2": "/fonts/Roboto-Medium.woff2", + "/fonts/Roboto-MediumItalic.ttf": "/fonts/Roboto-MediumItalic.ttf", + "/fonts/Roboto-MediumItalic.woff2": "/fonts/Roboto-MediumItalic.woff2", "/fonts/shantell/Shantell_Sans-Informal_Bold.woff2": "/fonts/shantell/Shantell_Sans-Informal_Bold.woff2", "/fonts/shantell/Shantell_Sans-Informal_Bold_Italic.woff2": "/fonts/shantell/Shantell_Sans-Informal_Bold_Italic.woff2", "/fonts/shantell/Shantell_Sans-Informal_Regular.woff2": "/fonts/shantell/Shantell_Sans-Informal_Regular.woff2", "/fonts/shantell/Shantell_Sans-Informal_Regular_Italic.woff2": "/fonts/shantell/Shantell_Sans-Informal_Regular_Italic.woff2", - "/lottie/leo/Dino.json": "/lottie/leo/Dino.json", - "/lottie/leo/Loading_Clock_Animation.json": "/lottie/leo/Loading_Clock_Animation.json", - "/lottie/leo/Lochnes.json": "/lottie/leo/Lochnes.json", - "/lottie/leo/Mermaid.json": "/lottie/leo/Mermaid.json", - "/lottie/leo/Narhwal.json": "/lottie/leo/Narhwal.json", - "/lottie/leo/Peek_Unicorn.json": "/lottie/leo/Peek_Unicorn.json", - "/lottie/leo/Pirate.json": "/lottie/leo/Pirate.json", - "/lottie/leo/Rainbow_Unicorn.json": "/lottie/leo/Rainbow_Unicorn.json", - "/lottie/leo/Rolling LEO.json": "/lottie/leo/Rolling LEO.json", - "/lottie/leo/annnoucment.json": "/lottie/leo/annnoucment.json", + "/fonts/Shantell_Sans-Informal_Bold.woff2": "/fonts/Shantell_Sans-Informal_Bold.woff2", + "/fonts/Shantell_Sans-Informal_Bold_Italic.woff2": "/fonts/Shantell_Sans-Informal_Bold_Italic.woff2", + "/fonts/Shantell_Sans-Informal_Regular.woff2": "/fonts/Shantell_Sans-Informal_Regular.woff2", + "/fonts/Shantell_Sans-Informal_Regular_Italic.woff2": "/fonts/Shantell_Sans-Informal_Regular_Italic.woff2", "/lottie/leo/announcement.json": "/lottie/leo/announcement.json", + "/lottie/leo/Dino.json": "/lottie/leo/Dino.json", "/lottie/leo/exclamation.json": "/lottie/leo/exclamation.json", "/lottie/leo/happy.json": "/lottie/leo/happy.json", "/lottie/leo/heart.json": "/lottie/leo/heart.json", "/lottie/leo/in-robo.json": "/lottie/leo/in-robo.json", "/lottie/leo/king_arthur.json": "/lottie/leo/king_arthur.json", + "/lottie/leo/Loading_Clock_Animation.json": "/lottie/leo/Loading_Clock_Animation.json", + "/lottie/leo/Lochnes.json": "/lottie/leo/Lochnes.json", + "/lottie/leo/Mermaid.json": "/lottie/leo/Mermaid.json", "/lottie/leo/motivational_speaker.json": "/lottie/leo/motivational_speaker.json", + "/lottie/leo/Narhwal.json": "/lottie/leo/Narhwal.json", "/lottie/leo/peaking.json": "/lottie/leo/peaking.json", + "/lottie/leo/Peek_Unicorn.json": "/lottie/leo/Peek_Unicorn.json", "/lottie/leo/pirate.json": "/lottie/leo/pirate.json", + "/lottie/leo/Rainbow_Unicorn.json": "/lottie/leo/Rainbow_Unicorn.json", + "/lottie/leo/Rolling LEO.json": "/lottie/leo/Rolling LEO.json", "/lottie/leo/sleep.json": "/lottie/leo/sleep.json", "/lottie/leo/smoking.json": "/lottie/leo/smoking.json", "/lottie/leo/still.json": "/lottie/leo/still.json",