From 32e9cead57faf6998b1246d2edd4b0bfa5bdfc2a Mon Sep 17 00:00:00 2001 From: Papoteur Date: Tue, 9 May 2023 12:21:57 +0200 Subject: [PATCH 01/50] Add generation of report --- app/Http/Controllers/MatterController.php | 30 ++++++ composer.json | 1 + resources/views/matter/index.blade.php | 9 ++ resources/views/report/report1-fr.blade.php | 109 ++++++++++++++++++++ resources/views/report/report1.blade.php | 108 +++++++++++++++++++ routes/web.php | 1 + 6 files changed, 258 insertions(+) create mode 100644 resources/views/report/report1-fr.blade.php create mode 100644 resources/views/report/report1.blade.php diff --git a/app/Http/Controllers/MatterController.php b/app/Http/Controllers/MatterController.php index 009f920f..b483467a 100644 --- a/app/Http/Controllers/MatterController.php +++ b/app/Http/Controllers/MatterController.php @@ -13,6 +13,8 @@ use Illuminate\Support\Facades\Http; use SimpleXMLElement; use Illuminate\Support\Arr; +use ExcelReport; +use PdfReport; class MatterController extends Controller { @@ -609,6 +611,34 @@ function () use ($export_csv) { ); } + + /** + * Report a Matters list + * * + */ + public function report(Request $request) + { + $filters = $request->except([ + 'display_with', + 'page', + 'filter', + 'value', + 'sortkey', + 'sortdir', + 'tab', + 'include_dead' + ]); + + $matters = Matter::filter( + $request->input('sortkey', 'caseref'), + $request->input('sortdir', 'asc'), + $filters, + $request->display_with, + $request->include_dead + )->orderBy("Cat")->orderBy('caseref')->get()->toArray(); + return view('report.report1-fr', compact('matters')); + } + /** * Generate merged document on the fly from uploaded template * * diff --git a/composer.json b/composer.json index c0052496..521354fa 100644 --- a/composer.json +++ b/composer.json @@ -13,6 +13,7 @@ "doctrine/dbal": "^2.9", "fruitcake/laravel-cors": "^2.0", "guzzlehttp/guzzle": "^7.0.1", + "jimmyjs/laravel-report-generator": "^2.2", "laminas/laminas-escaper": "^2.7", "laravel/framework": "^9.0", "laravel/tinker": "^2.5", diff --git a/resources/views/matter/index.blade.php b/resources/views/matter/index.blade.php index 694bbc14..105a1855 100644 --- a/resources/views/matter/index.blade.php +++ b/resources/views/matter/index.blade.php @@ -98,6 +98,12 @@ function refreshMatterList() { window.location.href = exportUrl; }; + report.onclick = e => { + let reportUrl = '/matter/report' + url.search; + e.preventDefault(); //stop the browser from following + window.location.href = reportUrl; + }; + filterFields.addEventListener('input', debounce( e => { if (e.target.value.length === 0) { url.searchParams.delete(e.target.name); @@ -154,6 +160,9 @@ function refreshMatterList() {
+
+ +
diff --git a/resources/views/report/report1-fr.blade.php b/resources/views/report/report1-fr.blade.php new file mode 100644 index 00000000..c1dd1937 --- /dev/null +++ b/resources/views/report/report1-fr.blade.php @@ -0,0 +1,109 @@ + + + + + + + + +@php + $previous_cat = ""; + $previous_family = ""; +@endphp +@foreach ($matters as $matter) + @if ($matter['Cat'] !== $previous_cat) + @if ($previous_cat != "") + + +
+ @endif + @switch( $matter['Cat']) + @case('PAT') +

Brevets


+ @break + @case('TM') +

Marques


+ @break + @case('DM') +

Dessins & modèles


+ @endswitch + @php + $previous_cat = $matter['Cat']; + $new_cat = true; + @endphp + @endif + @if (! str_starts_with($matter['Ref'], $previous_family) || $previous_family == "" || $new_cat) + @if ($previous_family != "" && ! $new_cat) + + + @endif +
+ @if ( $matter['Title'] !== null) +

{!! $matter['Title'] !!}


+ @endif + @if ( $matter['Title2'] !== null) +

{!! $matter['Title2'] !!}


+ @endif + @if ( $matter['Title3'] !== null) +

{!! $matter['Title3'] !!}


+ @endif + Titulaire: {!! $matter['Applicant'] !!}
+ @if ( $matter['Inventor1'] !== "") + Inventeur : {!! $matter['Inventor1'] !!}
+ @endif + + + + + + + + + @endif + @php + $previous_family = substr($matter['Ref'], 0, strpos($matter['Ref'], $matter['country'])); + $new_cat = false; + @endphp + + + + + + + + + +@endforeach + +
Votre réf.Code paysDépôtPublicationDélivranceStatutNotre réf.
{!! $matter['ClRef'] !!}{!! $matter['country'] !!}{!! $matter['FilNo'] !!}
{!! Carbon\Carbon::parse($matter['Filed'])->isoFormat('LL') !!}
{!! $matter['PubNo'] !!}
{!! Carbon\Carbon::parse($matter['Published'])->isoFormat('LL') !!}
{!! $matter['GrtNo'] !!}
{!! Carbon\Carbon::parse($matter['Granted'])->isoFormat('LL') !!}
@if ( $matter['dead'] == 1 ) + Fermé : {!! $matter['Status'] !!} + @else + {!! $matter['Status'] !!} + @endif + {!! $matter['Ref'] !!}
+
+ + + diff --git a/resources/views/report/report1.blade.php b/resources/views/report/report1.blade.php new file mode 100644 index 00000000..7e37d7f1 --- /dev/null +++ b/resources/views/report/report1.blade.php @@ -0,0 +1,108 @@ + + + + + + + + +@php + $previous_cat = ""; + $previous_family = ""; +@endphp +@foreach ($matters as $matter) + @if ($matter['Cat'] !== $previous_cat) + @if ($previous_cat != "") + + +
+ @endif + @switch( $matter['Cat']) + @case('PAT') +

Patents


+ @break + @case('TM') +

Trademarks


+ @break + @case('DM') +

Designs


+ @endswitch + @php + $previous_cat = $matter['Cat']; + $new_cat = true; + @endphp + @endif + @if (! str_starts_with($matter['Ref'], $previous_family) || $previous_family == "" || $new_cat) + @if ($previous_family != "" && ! $new_cat) + + + @endif +
+ @if ( $matter['Title'] !== null) +

{!! $matter['Title'] !!}


+ @endif + @if ( $matter['Title2'] !== null) +

{!! $matter['Title2'] !!}


+ @endif + @if ( $matter['Title3'] !== null) +

{!! $matter['Title3'] !!}


+ @endif + Applicant: {!! $matter['Applicant'] !!}
+ @if ( $matter['Inventor1'] !== "") + Inventor: {!! $matter['Inventor1'] !!}
+ @endif + + + + + + + + + @endif + @php + $previous_family = substr($matter['Ref'], 0, strpos($matter['Ref'], $matter['country'])); + $new_cat = false; + @endphp + + + + + + + + + +@endforeach + +
Your refCountry codeFilingPublicationGrantStatusOur reference
{!! $matter['ClRef'] !!}{!! $matter['country'] !!}{!! $matter['FilNo'] !!}
{!! Carbon\Carbon::parse($matter['Filed'])->isoFormat('LL') !!}
{!! $matter['PubNo'] !!}
{!! Carbon\Carbon::parse($matter['Published'])->isoFormat('LL') !!}
{!! $matter['GrtNo'] !!}
{!! Carbon\Carbon::parse($matter['Granted'])->isoFormat('LL') !!}
@if ( $matter['dead'] == 1 ) + Closed: {!! $matter['Status'] !!} + @else + {!! $matter['Status'] !!} + @endif + {!! $matter['Ref'] !!}
+
+ + + diff --git a/routes/web.php b/routes/web.php index 93977d2b..8d58b21c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -33,6 +33,7 @@ ->take(15)->get(); }); Route::get('matter/export', 'MatterController@export'); + Route::get('matter/report', 'MatterController@report'); Route::post('matter/{matter}/mergeFile', 'MatterController@mergeFile'); Route::get('matter/{matter}/events', 'MatterController@events'); Route::get('matter/{matter}/tasks', 'MatterController@tasks'); From 3df06b6f80afc239238c9692b22f06ca9ba71899 Mon Sep 17 00:00:00 2001 From: Papoteur Date: Fri, 12 May 2023 14:46:04 +0200 Subject: [PATCH 02/50] improve report in French --- resources/views/report/report1-fr.blade.php | 170 ++++++++++++-------- 1 file changed, 101 insertions(+), 69 deletions(-) diff --git a/resources/views/report/report1-fr.blade.php b/resources/views/report/report1-fr.blade.php index c1dd1937..d8d652ce 100644 --- a/resources/views/report/report1-fr.blade.php +++ b/resources/views/report/report1-fr.blade.php @@ -27,83 +27,115 @@ font-size: 80%; font-style: italic; } + @media print { + .pagebreak { + break-inside: avoid; + } + } -@php + + @php $previous_cat = ""; $previous_family = ""; -@endphp -@foreach ($matters as $matter) - @if ($matter['Cat'] !== $previous_cat) - @if ($previous_cat != "") - - -
+ @endphp + @foreach ($matters as $matter) + @if ( $matter['dead'] == 0 ) + @if ($matter['Cat'] !== $previous_cat) + @if ($previous_cat != "") + + + +
+ @endif + + @switch( $matter['Cat']) + @case('PAT') +

Brevets


+ @break + @case('TM') +

Marques


+ @break + @case('DM') +

Dessins & modèles


+ @endswitch + + @php + $previous_cat = $matter['Cat']; + $new_cat = true; + @endphp @endif - @switch( $matter['Cat']) - @case('PAT') -

Brevets


- @break - @case('TM') -

Marques


- @break - @case('DM') -

Dessins & modèles


- @endswitch + + @if (! str_starts_with($matter['Ref'], $previous_family) || $previous_family == "" || $new_cat) + @if ($previous_family != "" && ! $new_cat) + + + + + @endif +
+ +
+ + @if ( $matter['Title'] !== null) +

{!! $matter['Title'] !!}


+ @endif + @if ( $matter['Title2'] !== null) +

{!! $matter['Title2'] !!}


+ @endif + @if ( $matter['Title3'] !== null) +

{!! $matter['Title3'] !!}


+ @endif + + Titulaire: {!! $matter['Applicant'] !!}
+ + @if ( $matter['Inventor1'] !== "") + Inventeur : {!! $matter['Inventor1'] !!}
+ @endif + + + + + + + + + + + + + + + + + @endif + @php - $previous_cat = $matter['Cat']; - $new_cat = true; + $previous_family = substr($matter['Ref'], 0, strpos($matter['Ref'], $matter['country'])); + $new_cat = false; @endphp - @endif - @if (! str_starts_with($matter['Ref'], $previous_family) || $previous_family == "" || $new_cat) - @if ($previous_family != "" && ! $new_cat) - -
Votre réf.Code paysDépôtPublicationDélivranceStatutProchain renouvellementNotre réf.
- @endif -
- @if ( $matter['Title'] !== null) -

{!! $matter['Title'] !!}


- @endif - @if ( $matter['Title2'] !== null) -

{!! $matter['Title2'] !!}


- @endif - @if ( $matter['Title3'] !== null) -

{!! $matter['Title3'] !!}


- @endif - Titulaire: {!! $matter['Applicant'] !!}
- @if ( $matter['Inventor1'] !== "") - Inventeur : {!! $matter['Inventor1'] !!}
- @endif - - - - - - - - - @endif - @php - $previous_family = substr($matter['Ref'], 0, strpos($matter['Ref'], $matter['country'])); - $new_cat = false; - @endphp - - - - - - - + + + + + + - - -@endforeach - + + + + @endif + @endforeach +
Votre réf.Code paysDépôtPublicationDélivranceStatutNotre réf.
{!! $matter['ClRef'] !!}{!! $matter['country'] !!}{!! $matter['FilNo'] !!}
{!! Carbon\Carbon::parse($matter['Filed'])->isoFormat('LL') !!}
{!! $matter['PubNo'] !!}
{!! Carbon\Carbon::parse($matter['Published'])->isoFormat('LL') !!}
{!! $matter['GrtNo'] !!}
{!! Carbon\Carbon::parse($matter['Granted'])->isoFormat('LL') !!}
@if ( $matter['dead'] == 1 ) - Fermé : {!! $matter['Status'] !!} - @else - {!! $matter['Status'] !!} - @endif +
{!! $matter['ClRef'] !!}{!! $matter['country'] !!}{!! $matter['FilNo'] !!}
{!! empty($matter['Filed'])? "" : Carbon\Carbon::parse($matter['Filed'])->isoFormat('LL') !!}
{!! $matter['PubNo'] !!}
{!! empty($matter['Published'])? "" : Carbon\Carbon::parse($matter['Published'])->isoFormat('LL') !!}
{!! $matter['GrtNo'] !!}
{!! empty($matter['Granted'])? "" : Carbon\Carbon::parse($matter['Granted'])->isoFormat('LL') !!}
+ @if ( $matter['dead'] == 1 ) + Fermé : {!! $matter['Status'] !!} + @else + {!! $matter['Status'] !!} + @endif {!! $matter['Ref'] !!}
{!! empty($matter['next'])? "" : Carbon\Carbon::parse($matter['next'])->isoFormat('LL') !!}{!! $matter['Ref'] !!}
+

- + + From 648dcbb8991963605a17abe34849098d5b8b0ae7 Mon Sep 17 00:00:00 2001 From: Papoteur Date: Fri, 12 May 2023 14:51:47 +0200 Subject: [PATCH 03/50] add command in matter list for reports --- app/Http/Controllers/MatterController.php | 10 +++++++--- resources/views/matter/index.blade.php | 19 +++++++++++++++---- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/MatterController.php b/app/Http/Controllers/MatterController.php index b483467a..cb4f1799 100644 --- a/app/Http/Controllers/MatterController.php +++ b/app/Http/Controllers/MatterController.php @@ -28,7 +28,8 @@ public function index(Request $request) 'sortkey', 'sortdir', 'tab', - 'include_dead' + 'include_dead', + 'report_list' ]); $matters = Matter::filter( @@ -626,8 +627,11 @@ public function report(Request $request) 'sortkey', 'sortdir', 'tab', - 'include_dead' + 'include_dead', + 'report_list' ]); + $option = $request->input('report_list'); + $report_name = "report." . $option; $matters = Matter::filter( $request->input('sortkey', 'caseref'), @@ -636,7 +640,7 @@ public function report(Request $request) $request->display_with, $request->include_dead )->orderBy("Cat")->orderBy('caseref')->get()->toArray(); - return view('report.report1-fr', compact('matters')); + return view($report_name, compact('matters')); } /** diff --git a/resources/views/matter/index.blade.php b/resources/views/matter/index.blade.php index 105a1855..14b36359 100644 --- a/resources/views/matter/index.blade.php +++ b/resources/views/matter/index.blade.php @@ -97,8 +97,10 @@ function refreshMatterList() { e.preventDefault(); //stop the browser from following window.location.href = exportUrl; }; - report.onclick = e => { + var l = document.getElementById("report_list"); + var report = l.options[l.selectedIndex].value; + url.searchParams.set("report_list", report) let reportUrl = '/matter/report' + url.search; e.preventDefault(); //stop the browser from following window.location.href = reportUrl; @@ -160,9 +162,18 @@ function refreshMatterList() {
-
- -
+
+
+ +
+
+ +
+
From 345564b13bc323ca0665eda4c46f2b22f25de758 Mon Sep 17 00:00:00 2001 From: Papoteur Date: Fri, 12 May 2023 15:00:50 +0200 Subject: [PATCH 04/50] add expiration date, next renewal date and qt in export --- app/Http/Controllers/MatterController.php | 6 +++++- app/Matter.php | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/MatterController.php b/app/Http/Controllers/MatterController.php index cb4f1799..5369a1b1 100644 --- a/app/Http/Controllers/MatterController.php +++ b/app/Http/Controllers/MatterController.php @@ -552,7 +552,8 @@ public function export(Request $request) 'sortkey', 'sortdir', 'tab', - 'include_dead' + 'include_dead', + 'report_list' ]); $export = Matter::filter( @@ -592,6 +593,9 @@ public function export(Request $request) 'Responsible', 'Delegate', 'Dead', + 'Expiration date', + 'Next renewal', + 'Next renewal date', 'Ctnr' ]; diff --git a/app/Matter.php b/app/Matter.php index 11fcde08..162320b5 100644 --- a/app/Matter.php +++ b/app/Matter.php @@ -248,6 +248,8 @@ public static function filter($sortkey = 'id', $sortdir = 'desc', $multi_filter 'matter.responsible', 'del.login AS delegate', 'matter.dead', + 'matter.expire_date', + DB::raw("MIN(CAST( ren.detail AS SIGNED INTEGER )) AS QT, MIN(ren.due_date) AS next"), DB::raw("IF(isnull(matter.container_id), 1, 0) AS Ctnr") ) ->join('matter_category', 'matter.category_code', 'matter_category.code') @@ -307,6 +309,10 @@ function ($join) { $join->on('status.matter_id', 'e2.matter_id')->whereColumn('status.event_date', '<', 'e2.event_date'); } ) + ->leftJoin('event', 'matter.id', 'event.matter_id') + ->leftJoin('task AS ren', function ($join) { + $join->on('event.id', 'ren.trigger_id')->where('ren.code', 'REN')->where('ren.done', 0); + }) ->leftJoin(DB::raw('classifier tit1 JOIN classifier_type ct1 ON tit1.type_code = ct1.code AND ct1.main_display = 1 AND ct1.display_order = 1'), DB::raw('IFNULL(matter.container_id, matter.id)'), 'tit1.matter_id') ->leftJoin(DB::raw('classifier tit2 From 95557575777b75224194757f1d6d17dd30f17bd2 Mon Sep 17 00:00:00 2001 From: Papoteur Date: Fri, 12 May 2023 15:24:20 +0200 Subject: [PATCH 05/50] update report in English --- resources/views/report/report1.blade.php | 181 ++++++++++++++--------- 1 file changed, 107 insertions(+), 74 deletions(-) diff --git a/resources/views/report/report1.blade.php b/resources/views/report/report1.blade.php index 7e37d7f1..ba5bca47 100644 --- a/resources/views/report/report1.blade.php +++ b/resources/views/report/report1.blade.php @@ -7,102 +7,135 @@ -@php + + @php $previous_cat = ""; $previous_family = ""; -@endphp -@foreach ($matters as $matter) - @if ($matter['Cat'] !== $previous_cat) - @if ($previous_cat != "") - - -
+ @endphp + @foreach ($matters as $matter) + @if ( $matter['dead'] == 0 ) + @if ($matter['Cat'] !== $previous_cat) + @if ($previous_cat != "") + + + +
+ @endif + + @switch( $matter['Cat']) + @case('PAT') +

Patents


+ @break + @case('TM') +

Trademarks


+ @break + @case('DM') +

Design Patents


+ @endswitch + + @php + $previous_cat = $matter['Cat']; + $new_cat = true; + @endphp + @endif + + @if (! str_starts_with($matter['Ref'], $previous_family) || $previous_family == "" || $new_cat) + @if ($previous_family != "" && ! $new_cat) + + + + + @endif +
+ +
+ + @if ( $matter['Title'] !== null) +

{!! $matter['Title'] !!}


+ @endif + @if ( $matter['Title2'] !== null) +

{!! $matter['Title2'] !!}


+ @endif + @if ( $matter['Title3'] !== null) +

{!! $matter['Title3'] !!}


+ @endif + + Titulaire: {!! $matter['Applicant'] !!}
+ + @if ( $matter['Inventor1'] !== "") + Inventeur : {!! $matter['Inventor1'] !!}
+ @endif + + + + + + + + + + + + + + + + @endif - @switch( $matter['Cat']) - @case('PAT') -

Patents


- @break - @case('TM') -

Trademarks


- @break - @case('DM') -

Designs


- @endswitch + @php - $previous_cat = $matter['Cat']; - $new_cat = true; + $previous_family = substr($matter['Ref'], 0, strpos($matter['Ref'], $matter['country'])); + $new_cat = false; @endphp - @endif - @if (! str_starts_with($matter['Ref'], $previous_family) || $previous_family == "" || $new_cat) - @if ($previous_family != "" && ! $new_cat) - -
Your ref.Country codeFilingPublicationGrantStatusNext renewalOur ref.
- @endif -
- @if ( $matter['Title'] !== null) -

{!! $matter['Title'] !!}


- @endif - @if ( $matter['Title2'] !== null) -

{!! $matter['Title2'] !!}


- @endif - @if ( $matter['Title3'] !== null) -

{!! $matter['Title3'] !!}


- @endif - Applicant: {!! $matter['Applicant'] !!}
- @if ( $matter['Inventor1'] !== "") - Inventor: {!! $matter['Inventor1'] !!}
- @endif - - - - - - - - - @endif - @php - $previous_family = substr($matter['Ref'], 0, strpos($matter['Ref'], $matter['country'])); - $new_cat = false; - @endphp - - - - - - - + + + + + + - - -@endforeach - + + + + @endif + @endforeach +
Your refCountry codeFilingPublicationGrantStatusOur reference
{!! $matter['ClRef'] !!}{!! $matter['country'] !!}{!! $matter['FilNo'] !!}
{!! Carbon\Carbon::parse($matter['Filed'])->isoFormat('LL') !!}
{!! $matter['PubNo'] !!}
{!! Carbon\Carbon::parse($matter['Published'])->isoFormat('LL') !!}
{!! $matter['GrtNo'] !!}
{!! Carbon\Carbon::parse($matter['Granted'])->isoFormat('LL') !!}
@if ( $matter['dead'] == 1 ) - Closed: {!! $matter['Status'] !!} - @else - {!! $matter['Status'] !!} - @endif +
{!! $matter['ClRef'] !!}{!! $matter['country'] !!}{!! $matter['FilNo'] !!}
{!! empty($matter['Filed'])? "" : Carbon\Carbon::parse($matter['Filed'])->locale('en_US')->isoFormat('LL') !!}
{!! $matter['PubNo'] !!}
{!! empty($matter['Published'])? "" : Carbon\Carbon::parse($matter['Published'])->locale('en_US')->isoFormat('LL') !!}
{!! $matter['GrtNo'] !!}
{!! empty($matter['Granted'])? "" : Carbon\Carbon::parse($matter['Granted'])->locale('en_US')->isoFormat('LL') !!}
+ @if ( $matter['dead'] == 1 ) + Fermé : {!! $matter['Status'] !!} + @else + {!! $matter['Status'] !!} + @endif {!! $matter['Ref'] !!}
{!! empty($matter['next'])? "" : Carbon\Carbon::parse($matter['next'])->locale('en_US')->isoFormat('LL') !!}{!! $matter['Ref'] !!}
+

- + + From c80e75688a5598cb32bc3bcfd21f571fa42aee5f Mon Sep 17 00:00:00 2001 From: Papoteur Date: Mon, 15 May 2023 21:58:04 +0200 Subject: [PATCH 06/50] Deal more return code from Dolibarr API --- app/Http/Controllers/RenewalController.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/RenewalController.php b/app/Http/Controllers/RenewalController.php index 97fd5c20..01c89459 100644 --- a/app/Http/Controllers/RenewalController.php +++ b/app/Http/Controllers/RenewalController.php @@ -410,8 +410,11 @@ public function invoice(Request $request, int $toinvoice) if ($firstPass) { // retrouve la correspondance de société $result = $this->_client($client, $apikey); - if (isset($result["error"]) && $result["error"]["code"] >= "404") { - return response()->json(['error' => "$client not found in Dolibarr.\n"]); + if (isset($result["error"])) { + if ( $result["error"]["code"] >= "404") + return response()->json(['error' => "$client not found in Dolibarr.\n"]); + elseif ( $result["error"]["code"] === "318") + return response()->json(['error' => $result["error"]]); } $firstPass = false; $soc_res = $result[0]; @@ -547,7 +550,7 @@ private function _client($client, $apikey) // Search for client correspondence in Dolibarr $curl = curl_init(); $httpheader = ['DOLAPIKEY: ' . $apikey]; - $data = ['sqlfilters' => '(t.nom like "' . $client . '%")']; + $data = ['sqlfilters' => "(t.nom:like:'" . $client . "%')"]; // Get from config/renewal.php $url = config('renewal.api.dolibarr_url') . "/thirdparties?" . http_build_query($data); From 55c4c4e82b38741286ab39c43fc38e36abbc0cd8 Mon Sep 17 00:00:00 2001 From: Papoteur Date: Fri, 16 Jun 2023 17:48:51 +0200 Subject: [PATCH 07/50] Update infra for interntionalisation --- app/Http/Kernel.php | 1 + composer.json | 1 + config/laravel-gettext.php | 156 ++++++++++++++++++ .../2023_05_18_220158_alter_users_table.php | 81 +++++++++ 4 files changed, 239 insertions(+) create mode 100644 config/laravel-gettext.php create mode 100644 database/migrations/2023_05_18_220158_alter_users_table.php diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index c3be2544..a28c0a4f 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -36,6 +36,7 @@ class Kernel extends HttpKernel \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, + \Nekhbet\LaravelGettext\Middleware\GettextMiddleware::class, ], 'api' => [ diff --git a/composer.json b/composer.json index 521354fa..b7a412ea 100644 --- a/composer.json +++ b/composer.json @@ -18,6 +18,7 @@ "laravel/framework": "^9.0", "laravel/tinker": "^2.5", "laravel/ui": "^3.0", + "nekhbet/laravel-gettext": "dev-master", "phpoffice/phpword": "^0.18.0" }, "require-dev": { diff --git a/config/laravel-gettext.php b/config/laravel-gettext.php new file mode 100644 index 00000000..9dcca6a5 --- /dev/null +++ b/config/laravel-gettext.php @@ -0,0 +1,156 @@ + 'symfony', + + /** + * Session identifier: Key under which the current locale will be stored. + */ + 'session-identifier' => 'laravel-gettext-locale', + + /** + * Default locale: this will be the default for your application. + * Is to be supposed that all strings are written in this language. + */ + 'locale' => 'en', + + /** + * Supported locales: An array containing all allowed languages + */ + 'supported-locales' => [ + 'en_GB', + 'fr_FR', + ], + + /** + * Default charset encoding. + */ + 'encoding' => 'UTF-8', + + /** + * ----------------------------------------------------------------------- + * All standard configuration ends here. The following values + * are only for special cases. + * ----------------------------------------------------------------------- + **/ + + /** + * Locale categories to set + */ + 'categories' => [ + 'LC_ALL', + ], + + /** + * Base translation directory path (don't use trailing slash) + */ + 'translations-path' => '../resources/lang', + + /** + * Relative path to the app folder: is used on .po header files + */ + 'relative-path' => '../../../../../app', + + /** + * Fallback locale: When default locale is not available + */ + 'fallback-locale' => 'en_US', + + /** + * Default domain used for translations: It is the file name for .po and .mo files + */ + 'domain' => 'messages', + + /** + * Project name: is used on .po header files + */ + 'project' => 'PhpIP', + + /** + * Translator contact data (used on .po headers too) + */ + 'translator' => 'James Translator ', + + /** + * Paths where Poedit will search recursively for strings to translate. + * All paths are relative to app/ (don't use trailing slash). + * + * Remember to call artisan gettext:update after change this. + */ + 'source-paths' => [ + 'Http', + '../resources/views', + 'Console', + ], + + /** + * Multi-domain directory paths. If you want the translations in + * different files, just wrap your paths into a domain name. + * for example: + */ + /* + 'source-paths' => [ + + // 'frontend' domain + 'frontend' => [ + 'controllers', + 'views/frontend', + ], + + // 'backend' domain + 'backend' => [ + 'views/backend', + ], + + // 'messages' domain (matches default domain) + 'storage/views', + ], + */ + + /** + * Sync laravel: A flag that determines if the laravel built-in locale must + * be changed when you call LaravelGettext::setLocale. + */ + 'sync-laravel' => true, + + /** + * The adapter used to sync the laravel built-in locale + */ + 'adapter' => \Nekhbet\LaravelGettext\Adapters\LaravelAdapter::class, + + /** + * Where to store the current locale/domain + * + * By default, in the session. + * Can be changed for only memory or your own storage mechanism + * + * @see \Nekhbet\LaravelGettext\Storages\Storage + */ + 'storage' => \Nekhbet\LaravelGettext\Storages\SessionStorage::class, + + /** + * Use custom locale that is not supported by the system + */ + 'custom-locale' => false, + + /** + * The keywords list used by poedit to search the strings to be translated + * + * The "_", "__" and "gettext" are singular translation functions + * The "_n" and "ngettext" are plural translation functions + * The "dgettext" function allows a translation domain to be explicitly specified + * + * "__" and "_n" and "_i" and "_s" are helpers functions @see \Nekhbet\LaravelGettext\Support\helpers.php + */ + 'keywords-list' => ['_', '__', '_i', '_s', 'gettext', '_n:1,2', 'ngettext:1,2', 'dgettext:2'], +]; diff --git a/database/migrations/2023_05_18_220158_alter_users_table.php b/database/migrations/2023_05_18_220158_alter_users_table.php new file mode 100644 index 00000000..e6b81c09 --- /dev/null +++ b/database/migrations/2023_05_18_220158_alter_users_table.php @@ -0,0 +1,81 @@ +dropColumn('language'); + } + $table->char('language', 6)->default('en_GB')->after('warn')->comment('Language code in the form ll_CC where ll is the language code and CC is the country code.'); + }); + DB::statement("CREATE OR REPLACE VIEW `users` AS +SELECT + `actor`.`id` AS `id`, + `actor`.`name` AS `name`, + `actor`.`login` AS `login`, + `actor`.`password` AS `password`, + `actor`.`default_role` AS `default_role`, + `actor`.`company_id` AS `company_id`, + `actor`.`email` AS `email`, + `actor`.`phone` AS `phone`, + `actor`.`notes` AS `notes`, + `actor`.`language` AS `language`, + `actor`.`creator` AS `creator`, + `actor`.`created_at` AS `created_at`, + `actor`.`updated_at` AS `updated_at`, + `actor`.`updater` AS `updater`, + `actor`.`remember_token` AS `remember_token` +FROM + `actor` +WHERE + (`actor`.`login` IS NOT NULL) + "); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + DB::statement("CREATE OR REPLACE VIEW `users` AS +SELECT + `actor`.`id` AS `id`, + `actor`.`name` AS `name`, + `actor`.`login` AS `login`, + `actor`.`password` AS `password`, + `actor`.`default_role` AS `default_role`, + `actor`.`company_id` AS `company_id`, + `actor`.`email` AS `email`, + `actor`.`phone` AS `phone`, + `actor`.`notes` AS `notes`, + `actor`.`creator` AS `creator`, + `actor`.`created_at` AS `created_at`, + `actor`.`updated_at` AS `updated_at`, + `actor`.`updater` AS `updater`, + `actor`.`remember_token` AS `remember_token` +FROM + `actor` +WHERE + (`actor`.`login` IS NOT NULL) + "); + Schema::table('actor', function (Blueprint $table) { + if (Schema::hasColumn('actor', 'language')) { + $table->dropColumn('language'); + } + }); + // + } +}; From fde18fe9107665b2b2d96fd27277da994ed70d11 Mon Sep 17 00:00:00 2001 From: Papoteur Date: Fri, 16 Jun 2023 17:54:35 +0200 Subject: [PATCH 08/50] Internationalize Actors --- app/Http/Controllers/ActorController.php | 5 ++ app/Http/Controllers/ActorPivotController.php | 2 + resources/views/actor/create.blade.php | 28 ++++---- resources/views/actor/index.blade.php | 30 ++++---- resources/views/actor/show.blade.php | 70 +++++++++---------- resources/views/actor/usedin.blade.php | 8 +-- 6 files changed, 75 insertions(+), 68 deletions(-) diff --git a/app/Http/Controllers/ActorController.php b/app/Http/Controllers/ActorController.php index b09b13c9..cf159e17 100644 --- a/app/Http/Controllers/ActorController.php +++ b/app/Http/Controllers/ActorController.php @@ -5,6 +5,7 @@ use App\Actor; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use LaravelGettext; class ActorController extends Controller { @@ -15,6 +16,7 @@ class ActorController extends Controller */ public function index(Request $request) { + LaravelGettext::setLocale(Auth::user()->language); $this->authorize('viewAny', Actor::class); $actor = new Actor; if ($request->filled('Name')) { @@ -43,6 +45,7 @@ public function index(Request $request) */ public function create() { + LaravelGettext::setLocale(Auth::user()->language); $this->authorize('create', Actor::class); $table = new Actor; //TODO getTableComments is the same as in Rule.php. To render common @@ -58,6 +61,7 @@ public function create() */ public function store(Request $request) { + LaravelGettext::setLocale(Auth::user()->language); $this->authorize('create', Actor::class); $request->validate([ 'name' => 'required|max:100', @@ -75,6 +79,7 @@ public function store(Request $request) */ public function show(Actor $actor) { + LaravelGettext::setLocale(Auth::user()->language); $this->authorize('view', $actor); $actorInfo = $actor->load(['company:id,name', 'parent:id,name', 'site:id,name', 'droleInfo', 'countryInfo:iso,name', 'country_mailingInfo:iso,name', 'country_billingInfo:iso,name', 'nationalityInfo:iso,name']); $actorComments = $actor->getTableComments('actor'); diff --git a/app/Http/Controllers/ActorPivotController.php b/app/Http/Controllers/ActorPivotController.php index 09ec5680..b6017976 100644 --- a/app/Http/Controllers/ActorPivotController.php +++ b/app/Http/Controllers/ActorPivotController.php @@ -7,6 +7,7 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Http\Request; +use LaravelGettext; class ActorPivotController extends Controller { @@ -100,6 +101,7 @@ public function destroy(ActorPivot $actorPivot) */ public function usedIn(int $actor) { + LaravelGettext::setLocale(Auth::user()->language); $actorpivot = new ActorPivot(); $matter_dependencies = $actorpivot->with('matter', 'role')->where('actor_id', $actor)->get()->take(50); $actor_model = new Actor(); diff --git a/resources/views/actor/create.blade.php b/resources/views/actor/create.blade.php index 8c7fab54..9c1b4863 100644 --- a/resources/views/actor/create.blade.php +++ b/resources/views/actor/create.blade.php @@ -2,50 +2,50 @@
- - - - + + + + - + - + - + - +
- Contact details + {{ _i("Contact details") }} - + - + - + - +
- + diff --git a/resources/views/actor/index.blade.php b/resources/views/actor/index.blade.php index ec80bd2b..50199a57 100644 --- a/resources/views/actor/index.blade.php +++ b/resources/views/actor/index.blade.php @@ -2,8 +2,8 @@ @section('content') - Actors - Create actor + {{ _i('Actors') }} + {{ _i("Create actor") }}
@@ -11,16 +11,16 @@ - - - - + + + + @@ -29,7 +29,7 @@ @foreach ($actorslist as $actor) @@ -38,9 +38,9 @@ @@ -57,11 +57,11 @@
- Actor information + {{ _i("Actor information") }}
diff --git a/resources/views/actor/show.blade.php b/resources/views/actor/show.blade.php index 63202249..038d1158 100644 --- a/resources/views/actor/show.blade.php +++ b/resources/views/actor/show.blade.php @@ -1,12 +1,12 @@
@@ -14,52 +14,52 @@
First nameDisplay nameCompany Person{{ _i("First name") }}{{ _i("Display name") }}{{ _i('Company') }} {{ _i("Person") }}
- warn) class="text-danger text-decoration-none" @endif href="/actor/{{ $actor->id }}" data-panel="ajaxPanel" title="Actor data"> + warn) class="text-danger text-decoration-none" @endif href="/actor/{{ $actor->id }}" data-panel="ajaxPanel" title="{{ _i('Actor data') }}"> {{ $actor->name }} {{ empty($actor->company) ? '' : $actor->company->name }} @if ($actor->phy_person) - Physical + {{ _i("Physical") }} @else - Legal + {{ _i("Legal") }} @endif
- + - + - + - + - + - + - + - + - + - - + @@ -68,27 +68,27 @@
Address{{ _i("Address") }}
Country{{ _i("Country") }}
Nationality{{ _i("Nationality") }}
Language{{ _i("Language") }}
+ phy_person ? 'checked' : '' }}>
small_entity ? 'checked' : '' }}>
- +
- + - + - + - + - + - +
Address mailing{{ _i("Address mailing") }}
Country mailing{{ _i("Country mailing") }}
Address billing{{ _i("Address billing") }}
Country billing{{ _i("Country billing") }}
Email{{ _i("Email") }}
Phone{{ _i("Phone") }}
@@ -96,44 +96,44 @@
- + - + - + - + - + - + - + - + - +
login ? 'disabled' : 'autocomplete=off' }} placeholder="-">
- + - Enter a multiplier rate (e.g. 0.5)
or a fixed fee (e.g. 150) + {{ _i("Enter a multiplier rate (e.g. 0.5)
or a fixed fee (e.g. 150)") }}
warn ? 'checked' : '' }}>
diff --git a/resources/views/actor/usedin.blade.php b/resources/views/actor/usedin.blade.php index 4604bd07..e0008a09 100644 --- a/resources/views/actor/usedin.blade.php +++ b/resources/views/actor/usedin.blade.php @@ -3,7 +3,7 @@ $adeps = $other_dependencies->groupBy('Dependency'); @endphp -

Matter Dependencies (only the first few are shown)

+

{{ _i("Matter Dependencies (only the first few are shown)") }}

@forelse($mdeps as $role => $rmdeps)
@@ -16,9 +16,9 @@
@empty - No dependencies + {{ _i("No dependencies") }} @endforelse -

Inter-Actor Dependencies

+

{{ _i("Inter-Actor Dependencies") }}

@forelse($adeps as $dep => $aadeps)
@@ -31,5 +31,5 @@
@empty - No dependencies + {{ _i("No dependencies") }} @endforelse From 1d0a5af7292661c2706172d439f4b59c93972f07 Mon Sep 17 00:00:00 2001 From: Papoteur Date: Fri, 16 Jun 2023 17:57:20 +0200 Subject: [PATCH 09/50] Internationalize Categories --- app/Http/Controllers/CategoryController.php | 4 ++++ resources/views/category/create.blade.php | 10 +++++----- resources/views/category/index.blade.php | 14 +++++++------- resources/views/category/show.blade.php | 10 +++++----- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/app/Http/Controllers/CategoryController.php b/app/Http/Controllers/CategoryController.php index e7213299..8bf5fe4b 100644 --- a/app/Http/Controllers/CategoryController.php +++ b/app/Http/Controllers/CategoryController.php @@ -6,6 +6,7 @@ use App\Actor; use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; +use LaravelGettext; class CategoryController extends Controller { @@ -16,6 +17,7 @@ class CategoryController extends Controller */ public function index(Request $request) { + LaravelGettext::setLocale(Auth::user()->language); $Code = $request->input('Code'); $Category = $request->input('Category'); $category = Category::query() ; @@ -38,6 +40,7 @@ public function index(Request $request) */ public function create() { + LaravelGettext::setLocale(Auth::user()->language); $table = new Actor ; $tableComments = $table->getTableComments('matter_category'); return view('category.create', compact('tableComments')); @@ -68,6 +71,7 @@ public function store(Request $request) */ public function show(Category $category) { + LaravelGettext::setLocale(Auth::user()->language); $table = new Actor; $tableComments = $table->getTableComments('matter_category'); $category->load(['displayWithInfo:code,category']); diff --git a/resources/views/category/create.blade.php b/resources/views/category/create.blade.php index af85a7fb..0437caa0 100644 --- a/resources/views/category/create.blade.php +++ b/resources/views/category/create.blade.php @@ -2,20 +2,20 @@
- + - + - + -
+
-
+
diff --git a/resources/views/category/index.blade.php b/resources/views/category/index.blade.php index dccb394d..aac33672 100644 --- a/resources/views/category/index.blade.php +++ b/resources/views/category/index.blade.php @@ -2,8 +2,8 @@ @section('content') - Categories - Create a new Category + {{ _i('Categories') }} + {{ _i("Create a new Category") }}
@@ -11,9 +11,9 @@ - - - + + + @@ -35,11 +35,11 @@
- Category information + {{ _i("Category information") }}
diff --git a/resources/views/category/show.blade.php b/resources/views/category/show.blade.php index 82bfa7f7..aadd7ab9 100644 --- a/resources/views/category/show.blade.php +++ b/resources/views/category/show.blade.php @@ -1,19 +1,19 @@
Display with{{ _i("Display with") }}
- + - + - + +
Code{{ _i("Code") }}
-
From 6c21b0a38776b6fdb34a0c53dc3b64d31e45509a Mon Sep 17 00:00:00 2001 From: Papoteur Date: Fri, 16 Jun 2023 17:58:26 +0200 Subject: [PATCH 10/50] Internationalize Classifiers type --- .../Controllers/ClassifierTypeController.php | 4 ++++ resources/views/classifier_type/create.blade.php | 14 +++++++------- resources/views/classifier_type/index.blade.php | 16 ++++++++-------- resources/views/classifier_type/show.blade.php | 16 ++++++++-------- 4 files changed, 27 insertions(+), 23 deletions(-) diff --git a/app/Http/Controllers/ClassifierTypeController.php b/app/Http/Controllers/ClassifierTypeController.php index 44aac32c..e3c1c872 100644 --- a/app/Http/Controllers/ClassifierTypeController.php +++ b/app/Http/Controllers/ClassifierTypeController.php @@ -6,6 +6,7 @@ use App\Actor; use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; +use LaravelGettext; class ClassifierTypeController extends Controller { @@ -16,6 +17,7 @@ class ClassifierTypeController extends Controller */ public function index(Request $request) { + LaravelGettext::setLocale(Auth::user()->language); $Code = $request->input('Code'); $Type = $request->input('Type'); $classifierType = ClassifierType::query() ; @@ -38,6 +40,7 @@ public function index(Request $request) */ public function create() { + LaravelGettext::setLocale(Auth::user()->language); $table = new Actor ; $tableComments = $table->getTableComments('classifier_type'); return view('classifier_type.create', compact('tableComments')); @@ -67,6 +70,7 @@ public function store(Request $request) */ public function show(ClassifierType $classifier_type) { + LaravelGettext::setLocale(Auth::user()->language); $table = new Actor; $tableComments = $table->getTableComments('classifier_type'); $classifier_type->load(['category:code,category']); diff --git a/resources/views/classifier_type/create.blade.php b/resources/views/classifier_type/create.blade.php index adbd5977..c8a56e7b 100644 --- a/resources/views/classifier_type/create.blade.php +++ b/resources/views/classifier_type/create.blade.php @@ -2,25 +2,25 @@
- + - + - + - - + - +
+
-
+
diff --git a/resources/views/classifier_type/index.blade.php b/resources/views/classifier_type/index.blade.php index 9355fc1b..3b4a5a82 100644 --- a/resources/views/classifier_type/index.blade.php +++ b/resources/views/classifier_type/index.blade.php @@ -2,8 +2,8 @@ @section('content') - Classifier Types - Create a new Classifier Type + {{ _i('Classifier Types') }} + {{ _i('Create a new Classifier Type') }}
@@ -11,16 +11,16 @@ - - - + + + @foreach ($types as $type) @@ -35,11 +35,11 @@
- Type information + {{ _i('Type information') }}
diff --git a/resources/views/classifier_type/show.blade.php b/resources/views/classifier_type/show.blade.php index d8892a59..ba984920 100644 --- a/resources/views/classifier_type/show.blade.php +++ b/resources/views/classifier_type/show.blade.php @@ -1,25 +1,25 @@
Category{{ _i('Category') }}
- + {{ $type->code }}
- + - + - + + - + - +
Code{{ _i('Code') }}
-
main_display ? 'checked' : '' }}>
-
From 55e356741d005cf8648c29d50cf684a800467621 Mon Sep 17 00:00:00 2001 From: Papoteur Date: Fri, 16 Jun 2023 17:59:26 +0200 Subject: [PATCH 11/50] +def actors --- .../views/default_actor/create.blade.php | 24 +++++++++---------- resources/views/default_actor/index.blade.php | 20 ++++++++-------- resources/views/default_actor/show.blade.php | 14 +++++------ 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/resources/views/default_actor/create.blade.php b/resources/views/default_actor/create.blade.php index 61c77ba8..0bc9dc67 100644 --- a/resources/views/default_actor/create.blade.php +++ b/resources/views/default_actor/create.blade.php @@ -2,29 +2,29 @@
- + - + + + - + - + + + - + - + +
- -
- -
-
-
+
diff --git a/resources/views/default_actor/index.blade.php b/resources/views/default_actor/index.blade.php index d996698e..9ae9c414 100644 --- a/resources/views/default_actor/index.blade.php +++ b/resources/views/default_actor/index.blade.php @@ -2,8 +2,8 @@ @section('content') - Default Actors - Add a new default actor + {{ _i('Default Actors') }} + {{ _i('Add a new default actor') }}
@@ -11,18 +11,18 @@ - - - - - + + + + + @foreach ($default_actors as $default_actor) @@ -39,11 +39,11 @@
- Default actor information + {{ _i('Default actor information') }}
diff --git a/resources/views/default_actor/show.blade.php b/resources/views/default_actor/show.blade.php index 7d9de7dd..b550f16a 100644 --- a/resources/views/default_actor/show.blade.php +++ b/resources/views/default_actor/show.blade.php @@ -1,25 +1,25 @@
- + {{ $default_actor->actor->name }}
- + - + - + - + - +
shared ? 'checked' : '' }}>
-
From 634837e48c6276f53badaee526d7a8425f6ab38f Mon Sep 17 00:00:00 2001 From: Papoteur Date: Fri, 16 Jun 2023 18:06:11 +0200 Subject: [PATCH 12/50] Internationalize Documents templates and merging tools --- app/Http/Controllers/DocumentController.php | 14 +++++++++++--- resources/views/documents/create.blade.php | 10 +++++----- resources/views/documents/index.blade.php | 14 +++++++------- resources/views/documents/select.blade.php | 14 +++++++------- resources/views/documents/select2.blade.php | 14 +++++++------- resources/views/documents/show.blade.php | 12 ++++++------ 6 files changed, 43 insertions(+), 35 deletions(-) diff --git a/app/Http/Controllers/DocumentController.php b/app/Http/Controllers/DocumentController.php index 758aacfe..78919e24 100644 --- a/app/Http/Controllers/DocumentController.php +++ b/app/Http/Controllers/DocumentController.php @@ -15,6 +15,7 @@ use DB; use Symfony\Component\Debug\Exception\FatalThrowableError; use Illuminate\Support\Facades\Blade; +use LaravelGettext; function render($__php, $__data) { @@ -44,6 +45,7 @@ class DocumentController extends Controller */ public function index(Request $request) { + LaravelGettext::setLocale(Auth::user()->language); $Notes = $request->input('Notes'); $Name = $request->input('Name'); $template_classes = TemplateClass::query() ; @@ -67,6 +69,7 @@ public function index(Request $request) */ public function create() { + LaravelGettext::setLocale(Auth::user()->language); $table = new Actor ; $tableComments = $table->getTableComments('template_classes'); return view('documents.create', compact('tableComments')); @@ -95,6 +98,7 @@ public function store(Request $request) */ public function show(TemplateClass $class) { + LaravelGettext::setLocale(Auth::user()->language); $table = new Actor; $tableComments = $table->getTableComments('template_classes'); $class->with(['role']); @@ -135,7 +139,9 @@ public function destroy(TemplateClass $class) * @return \Illuminate\Http\Response */ - public function select(Matter $matter, Request $request) { + public function select(Matter $matter, Request $request) + { + LaravelGettext::setLocale(Auth::user()->language); $template_id = $request->input('template_id'); //limit to actors with email $contacts = MatterActors::where([['matter_id',$matter->id],['role_code','CNT']])->whereNotNull('email'); @@ -221,7 +227,9 @@ public function select(Matter $matter, Request $request) { * @param \App\TemplateMember $member * @return \Illuminate\Http\Response */ - public function mailto(TemplateMember $member, Request $request) { + public function mailto(TemplateMember $member, Request $request) + { + LaravelGettext::setLocale(Auth::user()->language); // Todo Add field for maually add an address $data = array(); $subject = Blade::compileString($member->subject); @@ -273,7 +281,7 @@ public function mailto(TemplateMember $member, Request $request) { } } else { - return json_encode(['message' =>"You need to select at least one contact."]); + return json_encode(['message' => _i("You need to select at least one contact.")]); } } } diff --git a/resources/views/documents/create.blade.php b/resources/views/documents/create.blade.php index e4a66ce9..9f9e0198 100644 --- a/resources/views/documents/create.blade.php +++ b/resources/views/documents/create.blade.php @@ -1,17 +1,17 @@
- New class + {{ _i("New class") }} - + - + - +
@@ -20,5 +20,5 @@
-
+
diff --git a/resources/views/documents/index.blade.php b/resources/views/documents/index.blade.php index 6d95fb00..a3b394e8 100644 --- a/resources/views/documents/index.blade.php +++ b/resources/views/documents/index.blade.php @@ -2,8 +2,8 @@ @section('content') - Document Classes - Create a new class of templates + {{ _i("Document Classes") }} + {{ _i("Create a new class of templates") }}
@@ -11,15 +11,15 @@ - - + + @foreach ($template_classes as $class) @@ -38,11 +38,11 @@
- Class information + {{ _i("Class information") }}
diff --git a/resources/views/documents/select.blade.php b/resources/views/documents/select.blade.php index 81b874f8..291f47ef 100644 --- a/resources/views/documents/select.blade.php +++ b/resources/views/documents/select.blade.php @@ -1,7 +1,7 @@
- Documents for {{ $matter->uid}} + {{ _i("Documents for ") . $matter->uid}}
- + {{ $class->name }}
@@ -65,7 +65,7 @@ {{ $member->style }} @endforeach diff --git a/resources/views/documents/select2.blade.php b/resources/views/documents/select2.blade.php index 905549bf..9f7325ef 100644 --- a/resources/views/documents/select2.blade.php +++ b/resources/views/documents/select2.blade.php @@ -13,10 +13,10 @@ Contact
- Send to: + {{ _i("Send to:") }}
- CC: + {{ _i('CC:') }}
@@ -40,16 +40,16 @@
- Summary + {{ _i("Summary") }}
- Language + {{ _i("Language") }}
- Category + {{ _i("Category") }}
- Style + {{ _i("Style") }}
@@ -70,7 +70,7 @@ {{ $member->style }}
@endforeach diff --git a/resources/views/documents/show.blade.php b/resources/views/documents/show.blade.php index cffae9b5..13a9a325 100644 --- a/resources/views/documents/show.blade.php +++ b/resources/views/documents/show.blade.php @@ -1,27 +1,27 @@
@@ -33,19 +33,19 @@
- + - + - + - + - Action + {{ _i("Action") }}
- Prepare + {{ _i("Prepare") }}
- + - + - + @if (count($class->eventNames) != 0) - @endif
Name{{ _i("Name") }}
role->name }}"
+ @foreach ($class->eventNames as $link) {{ $link->name }}
@endforeach
-
From 29abc7b19940abf71546789261ff2f4d95ed1c2b Mon Sep 17 00:00:00 2001 From: Papoteur Date: Fri, 16 Jun 2023 18:10:28 +0200 Subject: [PATCH 13/50] Internationalize Events --- app/Http/Controllers/EventClassController.php | 7 ++-- app/Http/Controllers/EventNameController.php | 4 ++ resources/views/eventname/create.blade.php | 38 +++++++++---------- resources/views/eventname/index.blade.php | 16 ++++---- resources/views/eventname/show.blade.php | 30 +++++++-------- 5 files changed, 50 insertions(+), 45 deletions(-) diff --git a/app/Http/Controllers/EventClassController.php b/app/Http/Controllers/EventClassController.php index ef877baa..cfea6854 100644 --- a/app/Http/Controllers/EventClassController.php +++ b/app/Http/Controllers/EventClassController.php @@ -4,7 +4,7 @@ use Illuminate\Http\Request; use App\EventClassLnk; -use Log; +use LaravelGettext; class EventClassController extends Controller { @@ -27,11 +27,12 @@ public function store(Request $request) */ public function destroy(int $lnk) { + LaravelGettext::setLocale(Auth::user()->language); if (EventClassLnk::destroy($lnk) == 1) { - return response()->json(['success' => 'Link deleted']); + return response()->json(['success' => _i( 'Link deleted')]); } else { - return response()->json(['error' => 'Deletion failed']); + return response()->json(['error' => _i('Deletion failed')]); } } } diff --git a/app/Http/Controllers/EventNameController.php b/app/Http/Controllers/EventNameController.php index 44e5e773..ba30785d 100644 --- a/app/Http/Controllers/EventNameController.php +++ b/app/Http/Controllers/EventNameController.php @@ -7,6 +7,7 @@ use App\EventClassLnk; use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; +use LaravelGettext; class EventNameController extends Controller { @@ -17,6 +18,7 @@ class EventNameController extends Controller */ public function index(Request $request) { + LaravelGettext::setLocale(Auth::user()->language); $Code = $request->input('Code'); $Name = $request->input('Name'); $ename = EventName::query() ; @@ -39,6 +41,7 @@ public function index(Request $request) */ public function create() { + LaravelGettext::setLocale(Auth::user()->language); $table = new Actor ; $tableComments = $table->getTableComments('event_name'); return view('eventname.create', compact('tableComments')); @@ -70,6 +73,7 @@ public function store(Request $request) */ public function show(EventName $eventname) { + LaravelGettext::setLocale(Auth::user()->language); $table = new Actor; $tableComments = $table->getTableComments('event_name'); $eventname->load(['countryInfo:iso,name', 'categoryInfo:code,category', 'default_responsibleInfo:id,name']); diff --git a/resources/views/eventname/create.blade.php b/resources/views/eventname/create.blade.php index 3639d15b..94c204f6 100644 --- a/resources/views/eventname/create.blade.php +++ b/resources/views/eventname/create.blade.php @@ -2,84 +2,84 @@
- + - + - + - + - - + - + - - + - +
- +
- +
- +
- +
+
- +
- +
+
- +
- +
-
+
diff --git a/resources/views/eventname/index.blade.php b/resources/views/eventname/index.blade.php index 4870ce9a..093c78a4 100644 --- a/resources/views/eventname/index.blade.php +++ b/resources/views/eventname/index.blade.php @@ -2,8 +2,8 @@ @section('content') - Event Names - Create a new event name + {{ _i("Event Names") }} + {{ _i('Create a new event name') }}
@@ -11,16 +11,16 @@ - - - + + + @foreach ($enameslist as $event) @@ -35,11 +35,11 @@
- Event name information + {{ _i('Event name information') }}
diff --git a/resources/views/eventname/show.blade.php b/resources/views/eventname/show.blade.php index 7f3a3655..a82dbd47 100644 --- a/resources/views/eventname/show.blade.php +++ b/resources/views/eventname/show.blade.php @@ -1,42 +1,42 @@
Notes{{ _i("Notes") }}
- + {{ $event->code }}
- + - + - + - + - + - + - + - + - + - + - + @@ -62,13 +62,13 @@ {{ $link->class->name}} @endforeach
Code{{ _i("Code") }} is_task ? 'checked' : '' }}>
Name{{ _i('Name') }} status_event ? 'checked' : '' }}>
killer ? 'checked' : '' }}>
default_responsibleInfo->name }}"> use_matter_resp ? 'checked' : '' }}>
Notes{{ _i('Notes') }}
Linked templates{{ _i("Linked templates") }} - + + - +
-
From db4232728d594104091c764969447b8ea7aedb83 Mon Sep 17 00:00:00 2001 From: Papoteur Date: Fri, 16 Jun 2023 18:11:33 +0200 Subject: [PATCH 14/50] Internationalize Fees --- app/Http/Controllers/FeeController.php | 3 ++ resources/views/fee/create.blade.php | 16 +++++----- resources/views/fee/index.blade.php | 44 +++++++++++++------------- 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/app/Http/Controllers/FeeController.php b/app/Http/Controllers/FeeController.php index 5db2dec9..d37708f6 100644 --- a/app/Http/Controllers/FeeController.php +++ b/app/Http/Controllers/FeeController.php @@ -6,12 +6,14 @@ use App\Actor; use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; +use LaravelGettext; class FeeController extends Controller { public function index(Request $request) { + LaravelGettext::setLocale(Auth::user()->language); $fees = new Fee; $filters = $request->except(['page']); if (!empty($filters)) { @@ -49,6 +51,7 @@ public function index(Request $request) */ public function create() { + LaravelGettext::setLocale(Auth::user()->language); $table = new Actor ; $tableComments = $table->getTableComments('fees'); return view('fee.create', compact('tableComments')); diff --git a/resources/views/fee/create.blade.php b/resources/views/fee/create.blade.php index 8f63e843..2a395bd0 100644 --- a/resources/views/fee/create.blade.php +++ b/resources/views/fee/create.blade.php @@ -2,36 +2,36 @@
- - + - - + - + - + - +
+
+
From: {{ _i("From:") }}
-
+
diff --git a/resources/views/fee/index.blade.php b/resources/views/fee/index.blade.php index 0e303c32..f28e282b 100644 --- a/resources/views/fee/index.blade.php +++ b/resources/views/fee/index.blade.php @@ -4,35 +4,35 @@
Fees - Add a new line + {{ _i('Add a new line') }}
-
Normal
-
Grace period
+
{{ _i("Normal") }}
+
{{ _i("Grace period") }}
-
-
-
-
+
+
+
+
-
Standard
-
Reduced
+
{{ _i('Standard') }}
+
{{ _i('Reduced') }}
-
Standard
-
Reduced
+
{{ _i('Standard') }}
+
{{ _i('Reduced') }}
@@ -41,23 +41,23 @@
-
Cost
-
Fee
-
Cost
-
Fee
+
{{ _i('Cost') }}
+
{{ _i('Fee') }}
+
{{ _i('Cost') }}
+
{{ _i("Fee") }}
-
Cost
-
Fee
-
Cost
-
Fee
+
{{ _i("Cost") }}
+
{{ _i("Fee") }}
+
{{ _i("Cost") }}
+
{{ _i("Fee") }}
-
Currency
- {{--
Use after
-
Use before
--}} +
{{ _i("Currency") }}
+ {{--
{{ _i("Use after") }}
+
{{ _i("Use before") }}
--}}
From 7df93b520f5f87f2248a3ca3f8db388094f3d982 Mon Sep 17 00:00:00 2001 From: Papoteur Date: Fri, 16 Jun 2023 18:12:24 +0200 Subject: [PATCH 15/50] Internationalize Matters --- app/Http/Controllers/MatterController.php | 103 +++++++++++-------- resources/views/matter/classifiers.blade.php | 16 +-- resources/views/matter/create.blade.php | 27 +++-- resources/views/matter/createN.blade.php | 6 +- resources/views/matter/edit.blade.php | 28 ++--- resources/views/matter/events.blade.php | 22 ++-- resources/views/matter/index.blade.php | 48 ++++----- resources/views/matter/roleActors.blade.php | 18 ++-- resources/views/matter/show-js.blade.php | 2 +- resources/views/matter/show.blade.php | 82 +++++++-------- resources/views/matter/summary.blade.php | 2 +- resources/views/matter/tasks.blade.php | 38 +++---- 12 files changed, 206 insertions(+), 186 deletions(-) diff --git a/app/Http/Controllers/MatterController.php b/app/Http/Controllers/MatterController.php index 5369a1b1..d26e6d7c 100644 --- a/app/Http/Controllers/MatterController.php +++ b/app/Http/Controllers/MatterController.php @@ -15,11 +15,22 @@ use Illuminate\Support\Arr; use ExcelReport; use PdfReport; +use Session; +use Log; +use LaravelGettext; +// $locale = "fr_FR.UTF-8"; +// putenv("LANG=" . $locale); +// setlocale(LC_ALL, $locale); +/* + putenv("LANG=". Session::get('locale')); + setlocale(LC_MESSAGES, Session::get('locale'));*/ class MatterController extends Controller { + public function index(Request $request) { + LaravelGettext::setLocale(Auth::user()->language); $filters = $request->except([ 'display_with', 'page', @@ -45,6 +56,7 @@ public function index(Request $request) public function show(Matter $matter) { + LaravelGettext::setLocale(Auth::user()->language); $this->authorize('view', $matter); $matter->load(['tasksPending.info', 'renewalsPending', 'events.info', 'titles', 'actors', 'classifiers']); return view('matter.show', compact('matter')); @@ -57,6 +69,7 @@ public function show(Matter $matter) **/ public function info($id) { + LaravelGettext::setLocale(Auth::user()->language); return Matter::with(['tasksPending.info', 'renewalsPending', 'events.info', 'titles', 'actors', 'classifiers']) ->find($id); } @@ -69,6 +82,7 @@ public function info($id) */ public function create(Request $request) { + LaravelGettext::setLocale(Auth::user()->language); $this->authorize('create', Matter::class); $operation = $request->input('operation', 'new'); // new, clone, child, ops $category = []; @@ -104,6 +118,7 @@ public function create(Request $request) */ public function store(Request $request) { + LaravelGettext::setLocale(Auth::user()->language); $this->authorize('create', Matter::class); $this->validate($request, [ 'category_code' => 'required', @@ -197,6 +212,7 @@ public function store(Request $request) */ public function storeN(Request $request) { + LaravelGettext::setLocale(Auth::user()->language); $this->authorize('create', Matter::class); $this->validate($request, [ 'ncountry' => 'required:array' @@ -376,7 +392,7 @@ public function storeFamily(Request $request) 'name' => $inventor, 'default_role' => 'INV', 'phy_person' => 1, - 'notes' => "Inserted by OPS family create tool for matter ID $new_matter->id" + 'notes' => _("Inserted by OPS family create tool for matter ID $new_matter->id") ]); $new_matter->actorPivot()->firstOrCreate([ 'actor_id' => $new_actor->id, @@ -385,7 +401,7 @@ public function storeFamily(Request $request) ]); } } - $new_matter->notes = 'Applicants: ' .collect($app['applicants'])->implode('; ') ."\nInventors: " .collect($app['inventors'])->implode(' - '); + $new_matter->notes = _("Applicants"). ': ' .collect($app['applicants'])->implode('; ') ."\n". _("Inventors") .": " .collect($app['inventors'])->implode(' - '); } else { $new_matter->container_id = $container_id; foreach ($app['pri'] as $pri) { @@ -410,7 +426,7 @@ public function storeFamily(Request $request) } if ($parent_num) { //return response()->json(['errors' => ['message' => $matter_id_num]]); - $new_matter->events()->create(["code" => 'ENT', "event_date" => $app['app']['date'], 'detail' => 'Child filing date']); + $new_matter->events()->create(["code" => 'ENT', "event_date" => $app['app']['date'], 'detail' => _('Child filing date')]); $parent = $apps->where('app.number', $parent_num)->first(); $new_matter->events()->create(["code" => 'FIL', "event_date" => $parent['app']['date'], 'detail' => $app['app']['number']]); $new_matter->parent_id = $matter_id_num["$parent_num"]; @@ -435,7 +451,7 @@ public function storeFamily(Request $request) "due_date" => $exa->event_date->addMonths(4), "done_date" => $step['replied'], "done" => 1, - "detail" => 'Exam Report']); + "detail" => _('Exam Report')]); } break; case 'RFEE': @@ -459,7 +475,7 @@ public function storeFamily(Request $request) "due_date" => $grt->event_date->addMonths(4), "done_date" => $step['grt_paid'], "done" => 1, - "detail" => 'Grant Fee']); + "detail" => _('Grant Fee')]); } break; case 'EXAM52': @@ -486,6 +502,7 @@ public function storeFamily(Request $request) */ public function edit(Matter $matter) { + LaravelGettext::setLocale(Auth::user()->language); $this->authorize('update', $matter); $matter->load( 'container', @@ -514,6 +531,7 @@ public function edit(Matter $matter) */ public function update(Request $request, Matter $matter) { + LaravelGettext::setLocale(Auth::user()->language); $this->authorize('update', $matter); $request->validate([ 'term_adjust' => 'numeric', @@ -544,6 +562,7 @@ public function destroy(Matter $matter) */ public function export(Request $request) { + LaravelGettext::setLocale(Auth::user()->language); $filters = $request->except([ 'display_with', 'page', @@ -565,37 +584,37 @@ public function export(Request $request) )->get()->toArray(); $captions = [ - 'Our Ref', - 'Country', - 'Cat', - 'Origin', - 'Status', - 'Status date', - 'Client', - 'Client Ref', - 'Applicant', - 'Agent', - 'Agent Ref', - 'Title', - 'Title2', - 'Title3', - 'Inventor 1', - 'Filed', - 'FilNo', - 'Published', - 'Pub. No', - 'Granted', - 'Grt No', - 'ID', - 'container_ID', - 'parent_ID', - 'Type', - 'Responsible', - 'Delegate', - 'Dead', - 'Expiration date', - 'Next renewal', - 'Next renewal date', + _('Our Ref'), + _('Country'), + _('Cat'), + _('Origin'), + _('Status'), + _('Status date'), + _('Client'), + _('Client Ref'), + _('Applicant'), + _('Agent'), + _('Agent Ref'), + _('Title'), + _('Title2'), + _('Title3'), + _('Inventor 1'), + _('Filed'), + _('FilNo'), + _('Published'), + _('Pub. No'), + _('Granted'), + _('Grt No'), + _('ID'), + _('container_ID'), + _('parent_ID'), + _('Type'), + _('Responsible'), + _('Delegate'), + _('Dead'), + _('Expiration date'), + _('Next renewal'), + _('Next renewal date'), 'Ctnr' ]; @@ -623,6 +642,7 @@ function () use ($export_csv) { */ public function report(Request $request) { + LaravelGettext::setLocale(Auth::user()->language); $filters = $request->except([ 'display_with', 'page', @@ -654,9 +674,9 @@ public function report(Request $request) public function mergeFile(Matter $matter, Request $request) { // No dedicated "form request" class being defined, this validation will silently terminate the operation when unsuccessful - $this->validate($request, [ - 'file' => 'required|file|mimes:docx,dotx' - ]); +// $this->validate($request, [ +// 'file' => 'required|file|mimes:docx,dotx' +// ]); $file = $request->file('file'); // Attempt for a cleaner creation method of the data collection using relationships @@ -998,6 +1018,7 @@ public function actors(Matter $matter, $role) public function classifiers(Matter $matter) { + LaravelGettext::setLocale(Auth::user()->language); $matter->load(['classifiers']); return view('matter.classifiers', compact('matter')); } @@ -1027,10 +1048,10 @@ public static function getOPSfamily($docnum) ->get($ops_biblio); if ($ops_response->clientError()) { - return ['errors' => ['docnum' => ['Number not found']], 'message' => 'Number not found in OPS Family']; + return ['errors' => ['docnum' => [_('Number not found')]], 'message' => _('Number not found in OPS Family')]; } if ($ops_response->serverError()) { - return ['exception' => 'OPS server error', 'message' => 'OPS server error, try again']; + return ['exception' => _('OPS server error'), 'message' => _('OPS server error, try again')]; } $members = data_get($ops_response, 'ops:world-patent-data.ops:patent-family.ops:family-member'); diff --git a/resources/views/matter/classifiers.blade.php b/resources/views/matter/classifiers.blade.php index 8cc808f9..3d10f547 100644 --- a/resources/views/matter/classifiers.blade.php +++ b/resources/views/matter/classifiers.blade.php @@ -4,12 +4,12 @@ - - - + + + @@ -30,7 +30,7 @@ @@ -46,17 +46,17 @@
- +
- +
- +
diff --git a/resources/views/matter/create.blade.php b/resources/views/matter/create.blade.php index 8ed7407e..d36fe24a 100644 --- a/resources/views/matter/create.blade.php +++ b/resources/views/matter/create.blade.php @@ -1,7 +1,7 @@
- +
@@ -9,19 +9,18 @@
@if ( $operation == 'ops' )
- +
- Publication number prefixed with the country code and optionally suffixed with the kind code. - No spaces nor non-alphanumeric characters. + {{ _i("Publication number prefixed with the country code and optionally suffixed with the kind code. No spaces nor non-alphanumeric characters.") }} {{-- Application number in DOCDB format: country code followed by the number (only digits, no spaces and without the ending ".n"). For numbers without a two-digit year (like the US), insert YY. For PCTs: CCYYYY012345W. --}}
- +
@@ -30,21 +29,21 @@ @else
- +
- +
- +
@@ -52,7 +51,7 @@
@endif
- +
@if ( $operation == 'child' ) @@ -62,7 +61,7 @@
- +
@@ -74,20 +73,20 @@ Use current {{ $parent_matter->category->category ?? 'matter' }} as:
- +
- +
@endif
@if ( $operation == 'ops' ) - + @else - + @endif
diff --git a/resources/views/matter/createN.blade.php b/resources/views/matter/createN.blade.php index 5e32bd33..9f26cc31 100644 --- a/resources/views/matter/createN.blade.php +++ b/resources/views/matter/createN.blade.php @@ -12,18 +12,18 @@
- +
@endforeach
- +
+
- +
Type/ValueURLLink to matter{{ _i("Type/Value") }}{{ _i("URL") }}{{ _i("Link to matter") }} - +
- +