diff --git a/Dockerfile b/Dockerfile index 2254582d5..438591529 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM php:8.1-fpm +FROM php:8.2-fpm # set your user name, ex: user=bernardo ARG user=thoth diff --git a/app/Livewire/Conducting/DataExtraction/Buttons.php b/app/Livewire/Conducting/DataExtraction/Buttons.php index 0135faa0f..676d88501 100644 --- a/app/Livewire/Conducting/DataExtraction/Buttons.php +++ b/app/Livewire/Conducting/DataExtraction/Buttons.php @@ -20,6 +20,7 @@ class Buttons extends Component private $toastMessages = 'project/conducting.data-extraction.buttons'; public $projectId; + public $hasPapers = false; protected function messages() @@ -204,10 +205,23 @@ private function formatPdf($papers) public function mount() { $this->projectId = request()->segment(2); + $this->checkPapersAvailability(); + } + + public function checkPapersAvailability() + { + try { + $papers = $this->getPapersExport(); + $this->hasPapers = $papers->isNotEmpty(); + } catch (\Exception $e) { + $this->hasPapers = false; + } } public function render() { + // Verificar novamente se existem papers disponíveis antes de renderizar + $this->checkPapersAvailability(); return view('livewire.conducting.data-extraction.buttons'); } } diff --git a/app/Livewire/Conducting/DataExtraction/FileUpload.php b/app/Livewire/Conducting/DataExtraction/FileUpload.php new file mode 100644 index 000000000..e2b51490f --- /dev/null +++ b/app/Livewire/Conducting/DataExtraction/FileUpload.php @@ -0,0 +1,75 @@ + ['required', 'file', 'max:10240', new ValidBibFile], + ]; + } + + public function mount() + { + $this->project = Project::findOrFail(session('project_id')); + $this->member = Member::where('user_id', auth()->id()) + ->where('project_id', $this->project->id) + ->firstOrFail(); + } + + public function updatedFile() + { + $this->validateOnly('file'); + } + + public function save() + { + $this->validate(); + + try { + $file = $this->file; + $mimeType = $file->getMimeType(); + $extension = $file->getClientOriginalExtension(); + + if (!in_array($extension, ['bib', 'csv']) || + (!str_starts_with($mimeType, 'text/') && $mimeType !== 'application/csv')) { + throw new \Exception('Apenas arquivos .bib e .csv são permitidos.'); + } + + $fileName = time() . '_' . $file->getClientOriginalName(); + $file->storeAs('uploads', $fileName, 'public'); + + $bibUpload = BibUpload::create([ + 'project_id' => $this->project->id, + 'member_id' => $this->member->id, + 'file_name' => $fileName, + 'file_path' => 'uploads/' . $fileName, + 'file_type' => $extension, + 'status' => 'pending' + ]); + + ProcessBibUpload::dispatch($bibUpload); + + $this->emit('toast', 'success', 'Arquivo enviado com sucesso!'); + $this->reset('file'); + } catch (\Exception $e) { + $this->emit('toast', 'error', $e->getMessage()); + } + } +} \ No newline at end of file diff --git a/app/Livewire/Conducting/DataExtraction/Table.php b/app/Livewire/Conducting/DataExtraction/Table.php index c9a7e3d58..20e6151c0 100644 --- a/app/Livewire/Conducting/DataExtraction/Table.php +++ b/app/Livewire/Conducting/DataExtraction/Table.php @@ -186,7 +186,14 @@ public function render() } - return view('livewire.conducting.data-extraction.table', compact('papers', 'databases', 'statuses')); + // Emitir evento para atualizar o estado dos botões + $this->dispatch('papers-updated', hasPapers: $papers->isNotEmpty()); + + return view('livewire.conducting.data-extraction.table', [ + 'papers' => $papers, + 'databases' => $databases, + 'statuses' => $statuses, + ]); } } diff --git a/app/Livewire/Conducting/QualityAssessment/Buttons.php b/app/Livewire/Conducting/QualityAssessment/Buttons.php index 58ecf487a..fa5bd8b82 100644 --- a/app/Livewire/Conducting/QualityAssessment/Buttons.php +++ b/app/Livewire/Conducting/QualityAssessment/Buttons.php @@ -12,6 +12,7 @@ use TCPDF; use Illuminate\Support\Facades\View; use App\Utils\ToastHelper; +use Livewire\Attributes\On; class Buttons extends Component @@ -21,6 +22,7 @@ class Buttons extends Component private $toastMessages = 'project/conducting.data-extraction.buttons'; public $projectId; + public $hasPapers = false; protected function messages() @@ -223,10 +225,29 @@ private function formatPdf($papers) public function mount() { $this->projectId = request()->segment(2); + $this->checkPapersAvailability(); + } + + public function checkPapersAvailability() + { + try { + $papers = $this->getPapersExport(); + $this->hasPapers = $papers->isNotEmpty(); + } catch (\Exception $e) { + $this->hasPapers = false; + } } public function render() { + // Verificar novamente se existem papers disponíveis antes de renderizar + $this->checkPapersAvailability(); return view('livewire.conducting.quality-assessment.buttons'); } + + #[On('papers-updated')] + public function updatePapersAvailability($hasPapers) + { + $this->hasPapers = $hasPapers; + } } diff --git a/app/Livewire/Conducting/QualityAssessment/Table.php b/app/Livewire/Conducting/QualityAssessment/Table.php index 17aaaf6f7..18e1315ad 100644 --- a/app/Livewire/Conducting/QualityAssessment/Table.php +++ b/app/Livewire/Conducting/QualityAssessment/Table.php @@ -191,6 +191,10 @@ public function render() } // Passa se o membro é administrador/pesquisador $isAdministrator = $member->level == 1 || $member->level == 3; + + // Emitir evento para atualizar o estado dos botões + $this->dispatch('papers-updated', hasPapers: $papers->isNotEmpty()); + return view('livewire.conducting.quality-assessment.table', compact('papers', 'databases', 'statuses','isAdministrator')); } diff --git a/app/Livewire/Conducting/Snowballing/Buttons.php b/app/Livewire/Conducting/Snowballing/Buttons.php index 36dd60efe..916fd9884 100644 --- a/app/Livewire/Conducting/Snowballing/Buttons.php +++ b/app/Livewire/Conducting/Snowballing/Buttons.php @@ -11,6 +11,7 @@ use Livewire\Component; use TCPDF; use App\Utils\ToastHelper; +use Livewire\Attributes\On; class Buttons extends Component @@ -20,6 +21,7 @@ class Buttons extends Component private $toastMessages = 'project/conducting.data-extraction.buttons'; public $projectId; + public $hasPapers = false; protected function messages() @@ -200,10 +202,29 @@ private function formatPdf($papers) public function mount() { $this->projectId = request()->segment(2); + $this->checkPapersAvailability(); + } + + public function checkPapersAvailability() + { + try { + $papers = $this->getPapersExport(); + $this->hasPapers = $papers->isNotEmpty(); + } catch (\Exception $e) { + $this->hasPapers = false; + } } public function render() { + // Verificar novamente se existem papers disponíveis antes de renderizar + $this->checkPapersAvailability(); return view('livewire.conducting.snowballing.buttons'); } + + #[On('papers-updated')] + public function updatePapersAvailability($hasPapers) + { + $this->hasPapers = $hasPapers; + } } diff --git a/app/Livewire/Conducting/Snowballing/Table.php b/app/Livewire/Conducting/Snowballing/Table.php index 9fffdc482..8b9f0a590 100644 --- a/app/Livewire/Conducting/Snowballing/Table.php +++ b/app/Livewire/Conducting/Snowballing/Table.php @@ -190,6 +190,9 @@ public function render() } } + // Emitir evento para atualizar o estado dos botões + $this->dispatch('papers-updated', hasPapers: $papers->isNotEmpty()); + return view('livewire.conducting.snowballing.table', compact('papers', 'databases', 'statuses')); } diff --git a/app/Livewire/Conducting/StudySelection/Buttons.php b/app/Livewire/Conducting/StudySelection/Buttons.php index 8bf2e41e8..10d37a6bc 100644 --- a/app/Livewire/Conducting/StudySelection/Buttons.php +++ b/app/Livewire/Conducting/StudySelection/Buttons.php @@ -13,6 +13,7 @@ use TCPDF; use Illuminate\Support\Facades\View; use App\Utils\ToastHelper; +use Livewire\Attributes\On; class Buttons extends Component @@ -27,6 +28,7 @@ class Buttons extends Component public $exactDuplicateCount = 0; public $totalDuplicates = 0; + public $hasPapers = false; protected function messages() { @@ -515,11 +517,29 @@ private function formatPdf($papers) public function mount() { $this->projectId = request()->segment(2); + $this->checkPapersAvailability(); + } + public function checkPapersAvailability() + { + try { + $papers = $this->getPapersExport(); + $this->hasPapers = $papers->isNotEmpty(); + } catch (\Exception $e) { + $this->hasPapers = false; + } } public function render() { + // Verificar novamente se existem papers disponíveis antes de renderizar + $this->checkPapersAvailability(); return view('livewire.conducting.study-selection.buttons'); } + + #[On('papers-updated')] + public function updatePapersAvailability($hasPapers) + { + $this->hasPapers = $hasPapers; + } } diff --git a/app/Livewire/Conducting/StudySelection/Table.php b/app/Livewire/Conducting/StudySelection/Table.php index c75805177..5bf211dc9 100644 --- a/app/Livewire/Conducting/StudySelection/Table.php +++ b/app/Livewire/Conducting/StudySelection/Table.php @@ -203,6 +203,10 @@ public function render() } // Passa se o membro é administrador/pesquisador $isAdministrator = $member->level == 1 || $member->level == 3; + + // Emitir evento para atualizar o estado dos botões + $this->dispatch('papers-updated', hasPapers: $papers->isNotEmpty()); + return view('livewire.conducting.study-selection.table', compact('papers', 'databases', 'statuses','isAdministrator')); } diff --git a/app/Livewire/Reporting/PeerReviewQualityButtons.php b/app/Livewire/Reporting/PeerReviewQualityButtons.php index 6a933d656..211570e7f 100644 --- a/app/Livewire/Reporting/PeerReviewQualityButtons.php +++ b/app/Livewire/Reporting/PeerReviewQualityButtons.php @@ -9,12 +9,14 @@ use Livewire\Component; use TCPDF; use Illuminate\Support\Facades\View; +use Livewire\Attributes\On; class PeerReviewQualityButtons extends Component { public $projectId; + public $hasPapers = false; public function exportCsv() @@ -170,10 +172,29 @@ private function formatPdf($papers) public function mount() { $this->projectId = request()->segment(2); + $this->checkPapersAvailability(); + } + + public function checkPapersAvailability() + { + try { + $papers = $this->getPapersExport(); + $this->hasPapers = $papers->isNotEmpty(); + } catch (\Exception $e) { + $this->hasPapers = false; + } } public function render() { + // Verificar novamente se existem papers disponíveis antes de renderizar + $this->checkPapersAvailability(); return view('livewire.reporting.peer-review-quality-buttons'); } + + #[On('papers-updated')] + public function updatePapersAvailability($hasPapers) + { + $this->hasPapers = $hasPapers; + } } diff --git a/app/Livewire/Reporting/PeerReviewSelectionButtons.php b/app/Livewire/Reporting/PeerReviewSelectionButtons.php index c8bb2f7ea..d2fc387bf 100644 --- a/app/Livewire/Reporting/PeerReviewSelectionButtons.php +++ b/app/Livewire/Reporting/PeerReviewSelectionButtons.php @@ -13,6 +13,7 @@ use TCPDF; use Illuminate\Support\Facades\View; use App\Utils\ToastHelper; +use Livewire\Attributes\On; class PeerReviewSelectionButtons extends Component @@ -23,6 +24,7 @@ class PeerReviewSelectionButtons extends Component public $exactDuplicateCount = 0; public $totalDuplicates = 0; + public $hasPapers = false; private function translate(string $message, string $key = 'duplicates') { @@ -461,11 +463,29 @@ private function formatPdf($papers) public function mount() { $this->projectId = request()->segment(2); + $this->checkPapersAvailability(); + } + public function checkPapersAvailability() + { + try { + $papers = $this->getPapersExport(); + $this->hasPapers = $papers->isNotEmpty(); + } catch (\Exception $e) { + $this->hasPapers = false; + } } public function render() { + // Verificar novamente se existem papers disponíveis antes de renderizar + $this->checkPapersAvailability(); return view('livewire.reporting.peer-review-selection-buttons'); } + + #[On('papers-updated')] + public function updatePapersAvailability($hasPapers) + { + $this->hasPapers = $hasPapers; + } } diff --git a/app/Rules/ValidBibFile.php b/app/Rules/ValidBibFile.php index 86e81361c..1e1d1ff18 100644 --- a/app/Rules/ValidBibFile.php +++ b/app/Rules/ValidBibFile.php @@ -8,12 +8,20 @@ class ValidBibFile implements Rule { public function passes($attribute, $value) { + if (!$value) { + return false; + } + + $mimeType = $value->getMimeType(); $extension = $value->getClientOriginalExtension(); - return in_array($extension, ['bib', 'csv', 'txt']); + + // Verifica se é um arquivo de texto e tem extensão .bib ou .csv + return (str_starts_with($mimeType, 'text/') || $mimeType === 'application/csv') && + in_array($extension, ['bib', 'csv']); } public function message() { - return 'The file must be a type of: bib, csv, txt.'; + return 'Apenas arquivos .bib e .csv são permitidos.'; } } diff --git a/composer.json b/composer.json index df941fba1..e5c1dfa4a 100644 --- a/composer.json +++ b/composer.json @@ -5,7 +5,7 @@ "keywords": ["framework", "laravel"], "license": "MIT", "require": { - "php": "^8.1", + "php": "^8.2", "ext-simplexml": "*", "ext-zip": "*", "algolia/algoliasearch-client-php": "^3.4", diff --git a/composer.lock b/composer.lock index dd14c0d4f..fabdefc2a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d340ca3042e234f328700dd78683431b", + "content-hash": "5631caa363c857948ad66c35c391921d", "packages": [ { "name": "algolia/algoliasearch-client-php", @@ -1287,6 +1287,50 @@ }, "time": "2024-04-12T12:12:48+00:00" }, + { + "name": "daverandom/libdns", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/DaveRandom/LibDNS.git", + "reference": "b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/DaveRandom/LibDNS/zipball/b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a", + "reference": "b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "Required for IDN support" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "LibDNS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "DNS protocol implementation written in pure PHP", + "keywords": [ + "dns" + ], + "support": { + "issues": "https://github.com/DaveRandom/LibDNS/issues", + "source": "https://github.com/DaveRandom/LibDNS/tree/v2.1.0" + }, + "time": "2024-04-12T12:12:48+00:00" + }, { "name": "daverandom/libdns", @@ -3699,6 +3743,179 @@ ], "time": "2024-12-08T08:40:02+00:00" }, + { + "name": "league/oauth1-client", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/oauth1-client.git", + "reference": "f9c94b088837eb1aae1ad7c4f23eb65cc6993055" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/f9c94b088837eb1aae1ad7c4f23eb65cc6993055", + "reference": "f9c94b088837eb1aae1ad7c4f23eb65cc6993055", + "name": "league/uri-interfaces", + "version": "7.5.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" + }, + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "issues": "https://github.com/thephpleague/oauth1-client/issues", + "source": "https://github.com/thephpleague/oauth1-client/tree/v1.11.0" + }, + "time": "2024-12-10T19:59:05+00:00" + }, + { + "name": "league/uri", + "version": "7.5.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "81fb5145d2644324614cc532b28efd0215bda430" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", + "reference": "81fb5145d2644324614cc532b28efd0215bda430", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.5", + "php": "^8.1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.5.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:40:02+00:00" + }, { "name": "league/uri-interfaces", "version": "7.5.0", @@ -3770,6 +3987,7 @@ "ws" ], "support": { + "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", @@ -9382,7 +9600,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2025-01-14T16:20:53+00:00" + "time": "2025-03-14T22:31:42+00:00" }, { "name": "laravel/sail", @@ -11858,7 +12076,7 @@ "type": "tidelift" } ], - "time": "2025-02-27T20:15:30+00:00" + "time": "2025-03-03T07:12:39+00:00" }, { "name": "theseer/tokenizer", @@ -11917,7 +12135,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.1", + "php": "^8.2", "ext-simplexml": "*", "ext-zip": "*" }, diff --git a/resources/views/livewire/conducting/data-extraction/buttons.blade.php b/resources/views/livewire/conducting/data-extraction/buttons.blade.php index 2b0f5fb8b..922e2d91e 100644 --- a/resources/views/livewire/conducting/data-extraction/buttons.blade.php +++ b/resources/views/livewire/conducting/data-extraction/buttons.blade.php @@ -1,13 +1,19 @@ -
- +
+ {{ __('project/conducting.data-extraction.buttons.csv' )}} - + {{ __('project/conducting.data-extraction.buttons.xml' )}} - + {{ __('project/conducting.data-extraction.buttons.pdf' )}} diff --git a/resources/views/livewire/conducting/data-extraction/file-upload.blade.php b/resources/views/livewire/conducting/data-extraction/file-upload.blade.php new file mode 100644 index 000000000..d8243d799 --- /dev/null +++ b/resources/views/livewire/conducting/data-extraction/file-upload.blade.php @@ -0,0 +1,7 @@ +
+ + + @error('file') {{ $message }} @enderror +
\ No newline at end of file diff --git a/resources/views/livewire/conducting/quality-assessment/buttons.blade.php b/resources/views/livewire/conducting/quality-assessment/buttons.blade.php index 0cc527e2c..c250d5306 100644 --- a/resources/views/livewire/conducting/quality-assessment/buttons.blade.php +++ b/resources/views/livewire/conducting/quality-assessment/buttons.blade.php @@ -1,13 +1,19 @@
- + {{ __('project/conducting.quality-assessment.buttons.csv' )}} - + {{ __('project/conducting.quality-assessment.buttons.xml' )}} - + {{ __('project/conducting.quality-assessment.buttons.pdf' )}} diff --git a/resources/views/livewire/conducting/snowballing/buttons.blade.php b/resources/views/livewire/conducting/snowballing/buttons.blade.php index aa9df9067..696e5ce15 100644 --- a/resources/views/livewire/conducting/snowballing/buttons.blade.php +++ b/resources/views/livewire/conducting/snowballing/buttons.blade.php @@ -1,13 +1,19 @@
- + {{ __('project/conducting.snowballing.buttons.csv' )}} - + {{ __('project/conducting.snowballing.buttons.xml' )}} - + {{ __('project/conducting.snowballing.buttons.pdf' )}} diff --git a/resources/views/livewire/conducting/study-selection/buttons.blade.php b/resources/views/livewire/conducting/study-selection/buttons.blade.php index fe0b9156b..d024913c4 100644 --- a/resources/views/livewire/conducting/study-selection/buttons.blade.php +++ b/resources/views/livewire/conducting/study-selection/buttons.blade.php @@ -1,14 +1,20 @@
- + {{ __('project/conducting.study-selection.buttons.csv' )}} - + {{ __('project/conducting.study-selection.buttons.xml' )}} - + {{ __('project/conducting.study-selection.buttons.pdf' )}} diff --git a/resources/views/livewire/reporting/peer-review-quality-buttons.blade.php b/resources/views/livewire/reporting/peer-review-quality-buttons.blade.php index 0cc527e2c..c250d5306 100644 --- a/resources/views/livewire/reporting/peer-review-quality-buttons.blade.php +++ b/resources/views/livewire/reporting/peer-review-quality-buttons.blade.php @@ -1,13 +1,19 @@
- + {{ __('project/conducting.quality-assessment.buttons.csv' )}} - + {{ __('project/conducting.quality-assessment.buttons.xml' )}} - + {{ __('project/conducting.quality-assessment.buttons.pdf' )}} diff --git a/resources/views/livewire/reporting/peer-review-selection-buttons.blade.php b/resources/views/livewire/reporting/peer-review-selection-buttons.blade.php index ff620a1f3..faa9a3c32 100644 --- a/resources/views/livewire/reporting/peer-review-selection-buttons.blade.php +++ b/resources/views/livewire/reporting/peer-review-selection-buttons.blade.php @@ -1,14 +1,20 @@