From 3552c32081cfbaaf53c0bfe01cdfb8a39e1d6d8a Mon Sep 17 00:00:00 2001 From: Lukas <35173609+PHPLukaas@users.noreply.github.com> Date: Thu, 14 Mar 2024 09:10:32 +0100 Subject: [PATCH 01/15] =?UTF-8?q?=E2=9E=95:=20added=20flutter=5Flocalizati?= =?UTF-8?q?ons=20and=20inlt=20to=20pubget?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/.php-cs-fixer.cache | 2 +- frontend/app_student/pubspec.lock | 13 +++++++++++++ frontend/app_student/pubspec.yaml | 3 +++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/backend/.php-cs-fixer.cache b/backend/.php-cs-fixer.cache index 88bf9ce..69083fb 100644 --- a/backend/.php-cs-fixer.cache +++ b/backend/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.2.12","version":"3.51.0:v3.51.0#127fa74f010da99053e3f5b62672615b72dd6efd","indent":" ","lineEnding":"\n","rules":{"align_multiline_comment":true,"array_syntax":true,"backtick_to_shell_exec":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["return"]},"braces_position":{"allow_single_line_anonymous_functions":true,"allow_single_line_empty_anonymous_classes":true},"class_attributes_separation":{"elements":{"method":"one"}},"class_definition":{"single_line":true},"class_reference_name_casing":true,"clean_namespace":true,"concat_space":true,"declare_parentheses":true,"echo_tag_syntax":true,"empty_loop_body":{"style":"braces"},"empty_loop_condition":true,"fully_qualified_strict_types":true,"function_declaration":true,"general_phpdoc_tag_rename":{"replacements":{"inheritDocs":"inheritDoc"}},"global_namespace_import":{"import_classes":false,"import_constants":false,"import_functions":false},"include":true,"increment_style":true,"integer_literal_case":true,"lambda_not_used_import":true,"linebreak_after_opening_tag":true,"magic_constant_casing":true,"magic_method_casing":true,"method_argument_space":{"on_multiline":"ignore"},"native_function_casing":true,"native_type_declaration_casing":true,"no_alias_language_construct_call":true,"no_alternative_syntax":true,"no_binary_string":true,"no_blank_lines_after_phpdoc":true,"no_empty_comment":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["attribute","case","continue","curly_brace_block","default","extra","parenthesis_brace_block","square_brace_block","switch","throw","use"]},"no_leading_namespace_whitespace":true,"no_mixed_echo_print":true,"no_multiline_whitespace_around_double_arrow":true,"no_null_property_initialization":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_around_offset":true,"no_superfluous_phpdoc_tags":{"allow_hidden_params":true,"remove_inheritdoc":true},"no_trailing_comma_in_singleline":true,"no_unneeded_braces":{"namespaces":true},"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","others","return","switch_case","yield","yield_from"]},"no_unneeded_import_alias":true,"no_unset_cast":true,"no_unused_imports":true,"no_useless_concat_operator":true,"no_useless_nullsafe_operator":true,"no_whitespace_before_comma_in_array":true,"normalize_index_brace":true,"nullable_type_declaration":true,"nullable_type_declaration_for_default_null_value":true,"object_operator_without_whitespace":true,"operator_linebreak":{"only_booleans":true},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"alpha"},"ordered_types":{"null_adjustment":"always_last","sort_algorithm":"none"},"php_unit_fqcn_annotation":true,"php_unit_method_casing":true,"phpdoc_align":true,"phpdoc_annotation_without_dot":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_alias_tag":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":{"order":["param","return","throws"]},"phpdoc_return_self_reference":true,"phpdoc_scalar":true,"phpdoc_separation":{"groups":[["Annotation","NamedArgumentConstructor","Target"],["author","copyright","license"],["category","package","subpackage"],["property","property-read","property-write"],["deprecated","link","see","since"]]},"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_tag_type":{"tags":{"inheritDoc":"inline"}},"phpdoc_to_comment":true,"phpdoc_trim":true,"phpdoc_trim_consecutive_blank_line_separation":true,"phpdoc_types":true,"phpdoc_types_order":{"null_adjustment":"always_last","sort_algorithm":"none"},"phpdoc_var_without_name":true,"semicolon_after_instruction":true,"simple_to_complex_string_variable":true,"single_class_element_per_statement":true,"single_import_per_statement":true,"single_line_comment_spacing":true,"single_line_comment_style":{"comment_types":["hash"]},"single_line_throw":true,"single_quote":true,"single_space_around_construct":true,"space_after_semicolon":{"remove_in_empty_for_expressions":true},"standardize_increment":true,"standardize_not_equals":true,"statement_indentation":{"stick_comment_to_next_continuous_control_statement":true},"switch_continue_to_break":true,"trailing_comma_in_multiline":true,"trim_array_spaces":true,"type_declaration_spaces":true,"types_spaces":true,"unary_operator_spaces":true,"whitespace_after_comma_in_array":true,"yoda_style":true,"cast_spaces":true,"blank_line_after_opening_tag":true,"blank_line_between_import_groups":true,"blank_lines_before_namespace":true,"compact_nullable_type_declaration":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_parentheses":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"return_type_declaration":true,"short_scalar_cast":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"control_structure_braces":true,"control_structure_continuation_position":true,"elseif":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"no_break_comment":true,"no_closing_tag":true,"no_multiple_statements_per_line":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_line_after_imports":true,"spaces_inside_parentheses":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\\Controller\\Api\\ClassesController.php":"3edd9a69cd0992943c7f4e35e189a328","src\\Controller\\Api\\TimetableController.php":"c9b1d63edf22527d74b68c59b9bd06eb","src\\Entity\\ClassGroups.php":"6bc6445daf9e43c60078656be46a06d4","src\\Entity\\DaySchedule.php":"56b4524fd686bf525de63858705ecfb2","src\\Entity\\Event.php":"6cbed0ffedbaccef2e8935c1a584977b","src\\Entity\\EventHours.php":"b437c36942eca2170869a2a7aaf2fb70","src\\Entity\\WeekSchedule.php":"a622ed2509b48533d6d6bc79a42dbdcc","src\\Kernel.php":"065c02fc2d62bfff3cd16f3a0b46d9ee","src\\Repository\\ClassGroupsRepository.php":"92142c8ee810ca31f60bffab20a87b0d","src\\Repository\\DayScheduleRepository.php":"98703542528a91067ab9ce94728d37d2","src\\Repository\\EventHoursRepository.php":"ae0ae56be4254d2d2e0d0dda12c03723","src\\Repository\\EventRepository.php":"8be5088a65ffa6accaf4ccdbfb2f203b","src\\Repository\\WeekScheduleRepository.php":"49e3ea686a24c1193a983c024d08d22c","src\\Service\\ClassesScraperService.php":"d1961c5983c33c3fb970892a4976baa7","src\\Service\\JsonService.php":"130ad9ecda589dd98c6788ee552b66c1","src\\Service\\TimetableService.php":"efc4917fd4b881eac4e2c6d481b38904","src\\Service\\XMLService.php":"8db6a1d71c24b578809ad0793f2bd9d6","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder\\.php-cs-fixer.dist.php":"4a5cd9e046891dc468fde4a126674df1","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder1\\.php-cs-fixer.dist.php":"4a5cd9e046891dc468fde4a126674df1"}} \ No newline at end of file +{"php":"8.2.12","version":"3.51.0:v3.51.0#127fa74f010da99053e3f5b62672615b72dd6efd","indent":" ","lineEnding":"\n","rules":{"align_multiline_comment":true,"array_syntax":true,"backtick_to_shell_exec":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["return"]},"braces_position":{"allow_single_line_anonymous_functions":true,"allow_single_line_empty_anonymous_classes":true},"class_attributes_separation":{"elements":{"method":"one"}},"class_definition":{"single_line":true},"class_reference_name_casing":true,"clean_namespace":true,"concat_space":true,"declare_parentheses":true,"echo_tag_syntax":true,"empty_loop_body":{"style":"braces"},"empty_loop_condition":true,"fully_qualified_strict_types":true,"function_declaration":true,"general_phpdoc_tag_rename":{"replacements":{"inheritDocs":"inheritDoc"}},"global_namespace_import":{"import_classes":false,"import_constants":false,"import_functions":false},"include":true,"increment_style":true,"integer_literal_case":true,"lambda_not_used_import":true,"linebreak_after_opening_tag":true,"magic_constant_casing":true,"magic_method_casing":true,"method_argument_space":{"on_multiline":"ignore"},"native_function_casing":true,"native_type_declaration_casing":true,"no_alias_language_construct_call":true,"no_alternative_syntax":true,"no_binary_string":true,"no_blank_lines_after_phpdoc":true,"no_empty_comment":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["attribute","case","continue","curly_brace_block","default","extra","parenthesis_brace_block","square_brace_block","switch","throw","use"]},"no_leading_namespace_whitespace":true,"no_mixed_echo_print":true,"no_multiline_whitespace_around_double_arrow":true,"no_null_property_initialization":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_around_offset":true,"no_superfluous_phpdoc_tags":{"allow_hidden_params":true,"remove_inheritdoc":true},"no_trailing_comma_in_singleline":true,"no_unneeded_braces":{"namespaces":true},"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","others","return","switch_case","yield","yield_from"]},"no_unneeded_import_alias":true,"no_unset_cast":true,"no_unused_imports":true,"no_useless_concat_operator":true,"no_useless_nullsafe_operator":true,"no_whitespace_before_comma_in_array":true,"normalize_index_brace":true,"nullable_type_declaration":true,"nullable_type_declaration_for_default_null_value":true,"object_operator_without_whitespace":true,"operator_linebreak":{"only_booleans":true},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"alpha"},"ordered_types":{"null_adjustment":"always_last","sort_algorithm":"none"},"php_unit_fqcn_annotation":true,"php_unit_method_casing":true,"phpdoc_align":true,"phpdoc_annotation_without_dot":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_alias_tag":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":{"order":["param","return","throws"]},"phpdoc_return_self_reference":true,"phpdoc_scalar":true,"phpdoc_separation":{"groups":[["Annotation","NamedArgumentConstructor","Target"],["author","copyright","license"],["category","package","subpackage"],["property","property-read","property-write"],["deprecated","link","see","since"]]},"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_tag_type":{"tags":{"inheritDoc":"inline"}},"phpdoc_to_comment":true,"phpdoc_trim":true,"phpdoc_trim_consecutive_blank_line_separation":true,"phpdoc_types":true,"phpdoc_types_order":{"null_adjustment":"always_last","sort_algorithm":"none"},"phpdoc_var_without_name":true,"semicolon_after_instruction":true,"simple_to_complex_string_variable":true,"single_class_element_per_statement":true,"single_import_per_statement":true,"single_line_comment_spacing":true,"single_line_comment_style":{"comment_types":["hash"]},"single_line_throw":true,"single_quote":true,"single_space_around_construct":true,"space_after_semicolon":{"remove_in_empty_for_expressions":true},"standardize_increment":true,"standardize_not_equals":true,"statement_indentation":{"stick_comment_to_next_continuous_control_statement":true},"switch_continue_to_break":true,"trailing_comma_in_multiline":true,"trim_array_spaces":true,"type_declaration_spaces":true,"types_spaces":true,"unary_operator_spaces":true,"whitespace_after_comma_in_array":true,"yoda_style":true,"cast_spaces":true,"blank_line_after_opening_tag":true,"blank_line_between_import_groups":true,"blank_lines_before_namespace":true,"compact_nullable_type_declaration":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_parentheses":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"return_type_declaration":true,"short_scalar_cast":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"control_structure_braces":true,"control_structure_continuation_position":true,"elseif":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"no_break_comment":true,"no_closing_tag":true,"no_multiple_statements_per_line":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_line_after_imports":true,"spaces_inside_parentheses":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\\Controller\\Api\\ClassesController.php":"3edd9a69cd0992943c7f4e35e189a328","src\\Controller\\Api\\TimetableController.php":"c9b1d63edf22527d74b68c59b9bd06eb","src\\Entity\\ClassGroups.php":"6bc6445daf9e43c60078656be46a06d4","src\\Entity\\DaySchedule.php":"56b4524fd686bf525de63858705ecfb2","src\\Entity\\Event.php":"6cbed0ffedbaccef2e8935c1a584977b","src\\Entity\\EventHours.php":"b437c36942eca2170869a2a7aaf2fb70","src\\Entity\\WeekSchedule.php":"a622ed2509b48533d6d6bc79a42dbdcc","src\\Kernel.php":"065c02fc2d62bfff3cd16f3a0b46d9ee","src\\Repository\\ClassGroupsRepository.php":"92142c8ee810ca31f60bffab20a87b0d","src\\Repository\\DayScheduleRepository.php":"98703542528a91067ab9ce94728d37d2","src\\Repository\\EventHoursRepository.php":"ae0ae56be4254d2d2e0d0dda12c03723","src\\Repository\\EventRepository.php":"8be5088a65ffa6accaf4ccdbfb2f203b","src\\Repository\\WeekScheduleRepository.php":"49e3ea686a24c1193a983c024d08d22c","src\\Service\\ClassesScraperService.php":"d1961c5983c33c3fb970892a4976baa7","src\\Service\\JsonService.php":"130ad9ecda589dd98c6788ee552b66c1","src\\Service\\TimetableService.php":"efc4917fd4b881eac4e2c6d481b38904","src\\Service\\XMLService.php":"8db6a1d71c24b578809ad0793f2bd9d6","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder\\.php-cs-fixer.dist.php":"4a5cd9e046891dc468fde4a126674df1","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder1\\.php-cs-fixer.dist.php":"4a5cd9e046891dc468fde4a126674df1","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder8214\\src\\Service\\TimetableService.php":"efc4917fd4b881eac4e2c6d481b38904","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder5526\\src\\Service\\TimetableService.php":"efc4917fd4b881eac4e2c6d481b38904","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder563\\src\\Service\\TimetableService.php":"efc4917fd4b881eac4e2c6d481b38904","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder10365\\src\\Service\\TimetableService.php":"076a4cfe4213624431ce14be32f85675","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder9018\\src\\Service\\TimetableService.php":"13c4b244ab3280ab8f15336cded328eb","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder2666\\src\\Entity\\Event.php":"a31cdea7428a9d5caf1e22be96dc4409","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder4489\\src\\Service\\TimetableService.php":"13c4b244ab3280ab8f15336cded328eb","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder2522\\src\\Entity\\Event.php":"a31cdea7428a9d5caf1e22be96dc4409","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder8603\\src\\Service\\TimetableService.php":"13c4b244ab3280ab8f15336cded328eb","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder2585\\src\\Entity\\Event.php":"a31cdea7428a9d5caf1e22be96dc4409","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder7329\\src\\Service\\TimetableService.php":"13c4b244ab3280ab8f15336cded328eb","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder2168\\src\\Entity\\Event.php":"a31cdea7428a9d5caf1e22be96dc4409","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder752\\src\\Service\\TimetableService.php":"13c4b244ab3280ab8f15336cded328eb","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder3944\\src\\Service\\TimetableService.php":"13c4b244ab3280ab8f15336cded328eb","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder3315\\src\\Entity\\Event.php":"a31cdea7428a9d5caf1e22be96dc4409"}} \ No newline at end of file diff --git a/frontend/app_student/pubspec.lock b/frontend/app_student/pubspec.lock index 7bae58c..f99adda 100644 --- a/frontend/app_student/pubspec.lock +++ b/frontend/app_student/pubspec.lock @@ -110,6 +110,11 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.1" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" flutter_svg: dependency: "direct main" description: @@ -152,6 +157,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" + intl: + dependency: "direct main" + description: + name: intl + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + url: "https://pub.dev" + source: hosted + version: "0.18.1" leak_tracker: dependency: transitive description: diff --git a/frontend/app_student/pubspec.yaml b/frontend/app_student/pubspec.yaml index 78eaa91..e4986ea 100644 --- a/frontend/app_student/pubspec.yaml +++ b/frontend/app_student/pubspec.yaml @@ -43,6 +43,9 @@ dependencies: meta: ^1.11.0 flutter_svg: ^2.0.10+1 go_router: ^13.2.0 + flutter_localizations: + sdk: flutter + intl: any dev_dependencies: flutter_test: From af34dbed1814c2afab09e459df6abc12286fb589 Mon Sep 17 00:00:00 2001 From: Lukas <35173609+PHPLukaas@users.noreply.github.com> Date: Thu, 14 Mar 2024 09:56:00 +0100 Subject: [PATCH 02/15] =?UTF-8?q?=F0=9F=8C=90:=20Translation=20of=20the=20?= =?UTF-8?q?login=20and=20class=20selection=20page=20-=20Small=20refactor?= =?UTF-8?q?=20of=20some=20pages=20for=20translation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/app_student/l10n.yaml | 3 + .../class_groups/views/class_group_page.dart | 11 ++- frontend/app_student/lib/l10n/app_fr.arb | 72 +++++++++++++++++++ .../lib/login/views/login_page.dart | 22 +++--- .../lib/login/widgets/form/button_submit.dart | 5 +- .../widgets/form/inputs/input_birthdate.dart | 3 +- .../login/widgets/form/inputs/input_ine.dart | 5 +- .../widgets/form/inputs/input_prenom.dart | 5 +- .../lib/login/widgets/header/header_logo.dart | 4 +- .../lib/login/widgets/header/header_text.dart | 5 +- frontend/app_student/lib/main_dev.dart | 14 +++- frontend/app_student/pubspec.yaml | 2 +- 12 files changed, 124 insertions(+), 27 deletions(-) create mode 100644 frontend/app_student/l10n.yaml create mode 100644 frontend/app_student/lib/l10n/app_fr.arb diff --git a/frontend/app_student/l10n.yaml b/frontend/app_student/l10n.yaml new file mode 100644 index 0000000..35d81e9 --- /dev/null +++ b/frontend/app_student/l10n.yaml @@ -0,0 +1,3 @@ +arb-dir: lib/l10n +template-arb-file: app_fr.arb +output-localization-file: app_localizations.dart \ No newline at end of file diff --git a/frontend/app_student/lib/class_groups/views/class_group_page.dart b/frontend/app_student/lib/class_groups/views/class_group_page.dart index 174b001..9b4141d 100644 --- a/frontend/app_student/lib/class_groups/views/class_group_page.dart +++ b/frontend/app_student/lib/class_groups/views/class_group_page.dart @@ -6,6 +6,7 @@ import 'package:app_student/class_groups/views/widgets/header/header_text.dart'; import 'package:app_student/class_groups/views/widgets/header/header_title.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:go_router/go_router.dart'; import '../../api/users/models/user_model.dart'; @@ -30,7 +31,9 @@ class ClassGroupPage extends StatelessWidget { if (snapshot.connectionState == ConnectionState.waiting) { return const Center(child: CircularProgressIndicator()); } else if (snapshot.hasError) { - return Center(child: Text('Erreur: ${snapshot.error}')); + return Center( + child: Text(AppLocalizations.of(context)! + .genericError(snapshot.error.toString()))); } else { final user = snapshot.data; return Scaffold( @@ -47,8 +50,10 @@ class ClassGroupPage extends StatelessWidget { return Column( children: [ const HeaderLogo(), - HeaderTitle('Bonjour, ${user?.name}'), - const HeaderText('Choisis ta promotion :'), + HeaderTitle(AppLocalizations.of(context)! + .classSelectionTitle(user!.name)), + HeaderText(AppLocalizations.of(context)! + .classSelectionSubtitle), Expanded( child: CardList(classesList: state.classes), ), diff --git a/frontend/app_student/lib/l10n/app_fr.arb b/frontend/app_student/lib/l10n/app_fr.arb new file mode 100644 index 0000000..57e0c37 --- /dev/null +++ b/frontend/app_student/lib/l10n/app_fr.arb @@ -0,0 +1,72 @@ +{ + "error404": "Page non trouvée {pageUri}", + "@error404": { + "description": "Message d'erreur pour une page non trouvée", + "placeholders": { + "pageUri": { + "type": "String", + "example": "/login" + } + } + }, + "genericError": "Une erreur est survenue", + "@genericError": { + "description": "Message d'erreur générique", + "placeholders": { + "error": { + "type": "String", + "example": "Une erreur est survenue" + } + } + }, + "loginButton": "Connexion", + "@loginButton": { + "description": "Texte du bouton de connexion" + }, + "loginFirstNameLabel": "Prénom", + "@loginFirstName": { + "description": "Texte du label pour le prénom" + }, + "loginFirstNameHint": "Entrez votre prénom", + "@loginFirstNameHint": { + "description": "Texte de l'attribut placeholder pour le prénom" + }, + "loginIneLabel": "INE", + "@loginIneLabel": { + "description": "Texte du label pour le numéro INE" + }, + "loginIneHint": "Entrez votre numéro INE", + "@loginIneHint": { + "description": "Texte de l'attribut placeholder pour le numéro INE" + }, + "loginBirthDateLabel": "Date de naissance", + "@loginBirthDateLabel": { + "description": "Texte du label pour la date de naissance" + }, + "loginWelcomeTitle": "Bonjour :)", + "@loginWelcomeTitle": { + "description": "Texte d'accueil de la page de connexion" + }, + "loginWelcomeTitleError": "Oops, ca va aller", + "@loginWelcomeTitleError": { + "description": "Texte d'erreur d'accueil de la page de connexion" + }, + "loginFieldError": "Veuillez remplir tous les champs", + "@loginFieldError": { + "description": "Message d'erreur pour les champs de connexion" + }, + "classSelectionTitle": "Salut {firstName} !", + "@classSelectionTitle": { + "description": "Texte d'accueil de la page de sélection de classe", + "placeholders": { + "firstName": { + "type": "String", + "example": "John" + } + } + }, + "classSelectionSubtitle": "Sélectionne ta classe", + "@classSelectionSubtitle": { + "description": "Texte de sous-titre de la page de sélection de classe" + } +} \ No newline at end of file diff --git a/frontend/app_student/lib/login/views/login_page.dart b/frontend/app_student/lib/login/views/login_page.dart index 9b7a0e9..a2756fe 100644 --- a/frontend/app_student/lib/login/views/login_page.dart +++ b/frontend/app_student/lib/login/views/login_page.dart @@ -3,6 +3,7 @@ import 'package:app_student/login/widgets/form/form_login.dart'; import 'package:app_student/login/widgets/header/header_text.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:go_router/go_router.dart'; import '../widgets/header/header_logo.dart'; @@ -20,12 +21,12 @@ class LoginPage extends StatelessWidget { }); return Container(); } else if (state is LoginInitial) { - return const Scaffold( + return Scaffold( body: Column( children: [ - HeaderLogo(), - HeaderText('Bonjour :)'), - Expanded(child: FormLogin()), + const HeaderLogo(), + HeaderText(AppLocalizations.of(context)!.loginWelcomeTitle), + const Expanded(child: FormLogin()), ], ), ); @@ -37,18 +38,19 @@ class LoginPage extends StatelessWidget { } else if (state is LoginFieldError) { WidgetsBinding.instance.addPostFrameCallback((_) { ScaffoldMessenger.of(context).showSnackBar( - const SnackBar( - content: Text('Veuillez remplir tous les champs'), + SnackBar( + content: Text(AppLocalizations.of(context)!.loginFieldError), backgroundColor: Colors.red, ), ); }); - return const Scaffold( + return Scaffold( body: Column( children: [ - HeaderLogo(), - HeaderText('Bonjour :)'), - Expanded(child: FormLogin()), + const HeaderLogo(), + HeaderText( + AppLocalizations.of(context)!.loginWelcomeTitleError), + const Expanded(child: FormLogin()), ], ), ); diff --git a/frontend/app_student/lib/login/widgets/form/button_submit.dart b/frontend/app_student/lib/login/widgets/form/button_submit.dart index 76693db..d0ed049 100644 --- a/frontend/app_student/lib/login/widgets/form/button_submit.dart +++ b/frontend/app_student/lib/login/widgets/form/button_submit.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import '../../cubit/login_cubit.dart'; @@ -52,7 +53,9 @@ class SubmitButton extends StatelessWidget { .read() .saveLoginDetails(ine, name, birthDate); }, - child: const Text('Connexion'), + child: Text( + AppLocalizations.of(context)!.loginButton, + ), ), ), ], diff --git a/frontend/app_student/lib/login/widgets/form/inputs/input_birthdate.dart b/frontend/app_student/lib/login/widgets/form/inputs/input_birthdate.dart index 5be7080..0491895 100644 --- a/frontend/app_student/lib/login/widgets/form/inputs/input_birthdate.dart +++ b/frontend/app_student/lib/login/widgets/form/inputs/input_birthdate.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; class BirthDateField extends StatefulWidget { final TextEditingController controller; @@ -42,7 +43,7 @@ class BirthDateFieldState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Date de naissance', + AppLocalizations.of(context)!.loginBirthDateLabel, style: TextStyle( fontSize: 12.0, color: Colors.grey[600], diff --git a/frontend/app_student/lib/login/widgets/form/inputs/input_ine.dart b/frontend/app_student/lib/login/widgets/form/inputs/input_ine.dart index 775c7e7..8ca5cd1 100644 --- a/frontend/app_student/lib/login/widgets/form/inputs/input_ine.dart +++ b/frontend/app_student/lib/login/widgets/form/inputs/input_ine.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; class INETextField extends StatelessWidget { final TextEditingController controller; @@ -16,7 +17,7 @@ class INETextField extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'INE', + AppLocalizations.of(context)!.loginIneLabel, style: TextStyle( fontSize: 12.0, color: Colors.grey[600], @@ -26,7 +27,7 @@ class INETextField extends StatelessWidget { TextFormField( controller: controller, decoration: InputDecoration( - hintText: 'Numéro INE', + hintText: AppLocalizations.of(context)!.loginIneHint, contentPadding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 10.0), border: OutlineInputBorder( diff --git a/frontend/app_student/lib/login/widgets/form/inputs/input_prenom.dart b/frontend/app_student/lib/login/widgets/form/inputs/input_prenom.dart index d3aba1a..16e19b2 100644 --- a/frontend/app_student/lib/login/widgets/form/inputs/input_prenom.dart +++ b/frontend/app_student/lib/login/widgets/form/inputs/input_prenom.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; class FirstnameTextField extends StatelessWidget { final TextEditingController controller; @@ -13,7 +14,7 @@ class FirstnameTextField extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - 'Prénom', + AppLocalizations.of(context)!.loginFirstNameLabel, style: TextStyle( fontSize: 12.0, color: Colors.grey[600], @@ -26,7 +27,7 @@ class FirstnameTextField extends StatelessWidget { color: Colors.grey[600], ), decoration: InputDecoration( - hintText: 'Entrez votre prénom ici', + hintText: AppLocalizations.of(context)!.loginFirstNameHint, contentPadding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 10.0), border: OutlineInputBorder( diff --git a/frontend/app_student/lib/login/widgets/header/header_logo.dart b/frontend/app_student/lib/login/widgets/header/header_logo.dart index 430dd84..0c1ff84 100644 --- a/frontend/app_student/lib/login/widgets/header/header_logo.dart +++ b/frontend/app_student/lib/login/widgets/header/header_logo.dart @@ -10,8 +10,8 @@ class HeaderLogo extends StatelessWidget { color: const Color(0xFF005067), child: Center( child: SizedBox( - width: 200.0, // Largeur de l'image - height: 200.0, // Hauteur de l'image + width: 200.0, + height: 200.0, child: Image.asset('assets/images/3il-logo.jpg'), ), ), diff --git a/frontend/app_student/lib/login/widgets/header/header_text.dart b/frontend/app_student/lib/login/widgets/header/header_text.dart index 5e41d40..b6c3cd7 100644 --- a/frontend/app_student/lib/login/widgets/header/header_text.dart +++ b/frontend/app_student/lib/login/widgets/header/header_text.dart @@ -8,10 +8,7 @@ class HeaderText extends StatelessWidget { @override Widget build(BuildContext context) { return Padding( - padding: const EdgeInsets.only( - top: 35.0, - left: 25.0, - bottom: 40), // Ajout d'un espacement à gauche de 10px + padding: const EdgeInsets.only(top: 35.0, left: 25.0, bottom: 40), child: Align( alignment: Alignment.centerLeft, child: Text( diff --git a/frontend/app_student/lib/main_dev.dart b/frontend/app_student/lib/main_dev.dart index aa4b195..b5a41d2 100644 --- a/frontend/app_student/lib/main_dev.dart +++ b/frontend/app_student/lib/main_dev.dart @@ -1,6 +1,8 @@ import 'package:app_student/config/dev_config.dart'; import 'package:app_student/routes.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:go_router/go_router.dart'; import 'package:provider/provider.dart'; @@ -27,7 +29,8 @@ class MyApp extends StatelessWidget { return MaterialPage( child: Scaffold( body: Center( - child: Text('Page not found: ${state.uri}'), + child: Text( + AppLocalizations.of(context)!.error404(state.uri.toString())), ), ), ); @@ -41,6 +44,15 @@ class MyApp extends StatelessWidget { focusColor: const Color(0xffE84E0F), fontFamily: 'Arial', ), + localizationsDelegates: const [ + AppLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + ], + supportedLocales: const [ + Locale('fr'), + ], routerConfig: router, ); } diff --git a/frontend/app_student/pubspec.yaml b/frontend/app_student/pubspec.yaml index e4986ea..73c55d0 100644 --- a/frontend/app_student/pubspec.yaml +++ b/frontend/app_student/pubspec.yaml @@ -63,7 +63,7 @@ dev_dependencies: # The following section is specific to Flutter packages. flutter: - + generate: true # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. From 7a4982ecc61f5a721d98800c5aedbaa15b1e192c Mon Sep 17 00:00:00 2001 From: Lukas <35173609+PHPLukaas@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:05:38 +0100 Subject: [PATCH 03/15] =?UTF-8?q?=F0=9F=93=9D:=20Updated=20front=20README.?= =?UTF-8?q?md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/app_student/README.md | 40 +++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/frontend/app_student/README.md b/frontend/app_student/README.md index f8c8ee2..65bb4be 100644 --- a/frontend/app_student/README.md +++ b/frontend/app_student/README.md @@ -1,16 +1,36 @@ -# app_student +# Application Flutter pour l'emploi du temps et les notes - Groupe 3iL -A new Flutter project. +Ce projet est une application mobile développée en Flutter par des étudiants du Groupe 3iL. Elle vise à fournir aux étudiants un accès facile à leur emploi du temps et à leurs notes. -## Getting Started +## Configuration -This project is a starting point for a Flutter application. +### Environnements -A few resources to get you started if this is your first Flutter project: +L'application est configurée pour fonctionner dans deux environnements différents : développement (dev) et production (prod). Chaque environnement utilise une API distincte. -- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) +- **Dev**: Utilise une API de développement pour tester et déboguer l'application. +- **Prod**: Utilise une API de production pour une utilisation en direct. -For help getting started with Flutter development, view the -[online documentation](https://docs.flutter.dev/), which offers tutorials, -samples, guidance on mobile development, and a full API reference. +## Version de Flutter + +Ce projet utilise Flutter version 3.19.2. + +## Internationalisation (i18n) + +L'application utilise la fonctionnalité de localisation (l10n) de Flutter pour supporter plusieurs langues. N'oubliez pas de générer les fichiers de localisation en exécutant `flutter gen-l10n` avant de construire l'application. + +## Pré-requis + +Avant de pousser votre code, assurez-vous de respecter les points suivants : + +- Utilisez `dart format` pour formater votre code. +- Exécutez `flutter analyze` pour détecter tout problème dans votre code. +- Assurez-vous d'exécuter `pub get` pour installer toutes les dépendances du projet. + +## Contributions + +Les contributions des autres étudiants sont les bienvenues! N'hésitez pas à proposer des améliorations, des corrections de bugs ou de nouvelles fonctionnalités en soumettant des pull requests. + +## Licence + +Ce projet est destiné à des fins éducatives. From 837843897c4ece22b029bc5308233b76bbed51f7 Mon Sep 17 00:00:00 2001 From: Lukas <35173609+PHPLukaas@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:12:53 +0100 Subject: [PATCH 04/15] =?UTF-8?q?=F0=9F=99=88:=20not=20pushing=20cache=20t?= =?UTF-8?q?o=20ref?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/.php-cs-fixer.cache | 1 - 1 file changed, 1 deletion(-) delete mode 100644 backend/.php-cs-fixer.cache diff --git a/backend/.php-cs-fixer.cache b/backend/.php-cs-fixer.cache deleted file mode 100644 index 39b28d7..0000000 --- a/backend/.php-cs-fixer.cache +++ /dev/null @@ -1 +0,0 @@ -{"php":"8.2.12","version":"3.51.0:v3.51.0#127fa74f010da99053e3f5b62672615b72dd6efd","indent":" ","lineEnding":"\n","rules":{"align_multiline_comment":true,"array_syntax":true,"backtick_to_shell_exec":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["return"]},"braces_position":{"allow_single_line_anonymous_functions":true,"allow_single_line_empty_anonymous_classes":true},"class_attributes_separation":{"elements":{"method":"one"}},"class_definition":{"single_line":true},"class_reference_name_casing":true,"clean_namespace":true,"concat_space":true,"declare_parentheses":true,"echo_tag_syntax":true,"empty_loop_body":{"style":"braces"},"empty_loop_condition":true,"fully_qualified_strict_types":true,"function_declaration":true,"general_phpdoc_tag_rename":{"replacements":{"inheritDocs":"inheritDoc"}},"global_namespace_import":{"import_classes":false,"import_constants":false,"import_functions":false},"include":true,"increment_style":true,"integer_literal_case":true,"lambda_not_used_import":true,"linebreak_after_opening_tag":true,"magic_constant_casing":true,"magic_method_casing":true,"method_argument_space":{"on_multiline":"ignore"},"native_function_casing":true,"native_type_declaration_casing":true,"no_alias_language_construct_call":true,"no_alternative_syntax":true,"no_binary_string":true,"no_blank_lines_after_phpdoc":true,"no_empty_comment":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["attribute","case","continue","curly_brace_block","default","extra","parenthesis_brace_block","square_brace_block","switch","throw","use"]},"no_leading_namespace_whitespace":true,"no_mixed_echo_print":true,"no_multiline_whitespace_around_double_arrow":true,"no_null_property_initialization":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_around_offset":true,"no_superfluous_phpdoc_tags":{"allow_hidden_params":true,"remove_inheritdoc":true},"no_trailing_comma_in_singleline":true,"no_unneeded_braces":{"namespaces":true},"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","others","return","switch_case","yield","yield_from"]},"no_unneeded_import_alias":true,"no_unset_cast":true,"no_unused_imports":true,"no_useless_concat_operator":true,"no_useless_nullsafe_operator":true,"no_whitespace_before_comma_in_array":true,"normalize_index_brace":true,"nullable_type_declaration":true,"nullable_type_declaration_for_default_null_value":true,"object_operator_without_whitespace":true,"operator_linebreak":{"only_booleans":true},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"alpha"},"ordered_types":{"null_adjustment":"always_last","sort_algorithm":"none"},"php_unit_fqcn_annotation":true,"php_unit_method_casing":true,"phpdoc_align":true,"phpdoc_annotation_without_dot":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_alias_tag":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":{"order":["param","return","throws"]},"phpdoc_return_self_reference":true,"phpdoc_scalar":true,"phpdoc_separation":{"groups":[["Annotation","NamedArgumentConstructor","Target"],["author","copyright","license"],["category","package","subpackage"],["property","property-read","property-write"],["deprecated","link","see","since"]]},"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_tag_type":{"tags":{"inheritDoc":"inline"}},"phpdoc_to_comment":true,"phpdoc_trim":true,"phpdoc_trim_consecutive_blank_line_separation":true,"phpdoc_types":true,"phpdoc_types_order":{"null_adjustment":"always_last","sort_algorithm":"none"},"phpdoc_var_without_name":true,"semicolon_after_instruction":true,"simple_to_complex_string_variable":true,"single_class_element_per_statement":true,"single_import_per_statement":true,"single_line_comment_spacing":true,"single_line_comment_style":{"comment_types":["hash"]},"single_line_throw":true,"single_quote":true,"single_space_around_construct":true,"space_after_semicolon":{"remove_in_empty_for_expressions":true},"standardize_increment":true,"standardize_not_equals":true,"statement_indentation":{"stick_comment_to_next_continuous_control_statement":true},"switch_continue_to_break":true,"trailing_comma_in_multiline":true,"trim_array_spaces":true,"type_declaration_spaces":true,"types_spaces":true,"unary_operator_spaces":true,"whitespace_after_comma_in_array":true,"yoda_style":true,"cast_spaces":true,"blank_line_after_opening_tag":true,"blank_line_between_import_groups":true,"blank_lines_before_namespace":true,"compact_nullable_type_declaration":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_parentheses":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"return_type_declaration":true,"short_scalar_cast":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"control_structure_braces":true,"control_structure_continuation_position":true,"elseif":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"no_break_comment":true,"no_closing_tag":true,"no_multiple_statements_per_line":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_line_after_imports":true,"spaces_inside_parentheses":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"src\\Controller\\Api\\ClassesController.php":"3edd9a69cd0992943c7f4e35e189a328","src\\Controller\\Api\\TimetableController.php":"c9b1d63edf22527d74b68c59b9bd06eb","src\\Entity\\ClassGroups.php":"6bc6445daf9e43c60078656be46a06d4","src\\Entity\\DaySchedule.php":"56b4524fd686bf525de63858705ecfb2","src\\Entity\\Event.php":"6cbed0ffedbaccef2e8935c1a584977b","src\\Entity\\EventHours.php":"b437c36942eca2170869a2a7aaf2fb70","src\\Entity\\WeekSchedule.php":"a622ed2509b48533d6d6bc79a42dbdcc","src\\Kernel.php":"065c02fc2d62bfff3cd16f3a0b46d9ee","src\\Repository\\ClassGroupsRepository.php":"92142c8ee810ca31f60bffab20a87b0d","src\\Repository\\DayScheduleRepository.php":"98703542528a91067ab9ce94728d37d2","src\\Repository\\EventHoursRepository.php":"ae0ae56be4254d2d2e0d0dda12c03723","src\\Repository\\EventRepository.php":"8be5088a65ffa6accaf4ccdbfb2f203b","src\\Repository\\WeekScheduleRepository.php":"49e3ea686a24c1193a983c024d08d22c","src\\Service\\ClassesScraperService.php":"d1961c5983c33c3fb970892a4976baa7","src\\Service\\JsonService.php":"130ad9ecda589dd98c6788ee552b66c1","src\\Service\\TimetableService.php":"efc4917fd4b881eac4e2c6d481b38904","src\\Service\\XMLService.php":"8db6a1d71c24b578809ad0793f2bd9d6","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder\\.php-cs-fixer.dist.php":"4a5cd9e046891dc468fde4a126674df1","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder1\\.php-cs-fixer.dist.php":"4a5cd9e046891dc468fde4a126674df1","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder8214\\src\\Service\\TimetableService.php":"efc4917fd4b881eac4e2c6d481b38904","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder5526\\src\\Service\\TimetableService.php":"efc4917fd4b881eac4e2c6d481b38904","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder563\\src\\Service\\TimetableService.php":"efc4917fd4b881eac4e2c6d481b38904","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder10365\\src\\Service\\TimetableService.php":"076a4cfe4213624431ce14be32f85675","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder9018\\src\\Service\\TimetableService.php":"13c4b244ab3280ab8f15336cded328eb","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder2666\\src\\Entity\\Event.php":"a31cdea7428a9d5caf1e22be96dc4409","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder4489\\src\\Service\\TimetableService.php":"13c4b244ab3280ab8f15336cded328eb","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder2522\\src\\Entity\\Event.php":"a31cdea7428a9d5caf1e22be96dc4409","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder8603\\src\\Service\\TimetableService.php":"13c4b244ab3280ab8f15336cded328eb","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder2585\\src\\Entity\\Event.php":"a31cdea7428a9d5caf1e22be96dc4409","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder7329\\src\\Service\\TimetableService.php":"13c4b244ab3280ab8f15336cded328eb","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder2168\\src\\Entity\\Event.php":"a31cdea7428a9d5caf1e22be96dc4409","C:\\Users\\phplu\\AppData\\Local\\Temp\\PHP CS Fixertemp_folder752\\src\\Service\\TimetableService.php":"13c4b244ab3280ab8f15336cded328eb"}} \ No newline at end of file From c3d782cb4bbf7467878c27ad982a6af1cab801fe Mon Sep 17 00:00:00 2001 From: Lukas <35173609+PHPLukaas@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:13:15 +0100 Subject: [PATCH 05/15] =?UTF-8?q?=F0=9F=99=88:=20not=20pushing=20=20cache?= =?UTF-8?q?=20to=20ref?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6f8b4b0..cfc5ff8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea/ .vscode/ -backend/vendor/ \ No newline at end of file +backend/vendor/ +/backend/.php-cs-fixer.cache \ No newline at end of file From a8187500acb91d91f9646af8149b90354ca0feed Mon Sep 17 00:00:00 2001 From: Lukas <35173609+PHPLukaas@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:46:08 +0100 Subject: [PATCH 06/15] =?UTF-8?q?=E2=9E=95:=20Added=20flutter=5Fdotenv=20t?= =?UTF-8?q?o=20pubspec?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/app_student/pubspec.lock | 8 ++++++++ frontend/app_student/pubspec.yaml | 1 + 2 files changed, 9 insertions(+) diff --git a/frontend/app_student/pubspec.lock b/frontend/app_student/pubspec.lock index f99adda..21eeab5 100644 --- a/frontend/app_student/pubspec.lock +++ b/frontend/app_student/pubspec.lock @@ -102,6 +102,14 @@ packages: url: "https://pub.dev" source: hosted version: "8.1.4" + flutter_dotenv: + dependency: "direct main" + description: + name: flutter_dotenv + sha256: "9357883bdd153ab78cbf9ffa07656e336b8bbb2b5a3ca596b0b27e119f7c7d77" + url: "https://pub.dev" + source: hosted + version: "5.1.0" flutter_lints: dependency: "direct dev" description: diff --git a/frontend/app_student/pubspec.yaml b/frontend/app_student/pubspec.yaml index 73c55d0..a59001b 100644 --- a/frontend/app_student/pubspec.yaml +++ b/frontend/app_student/pubspec.yaml @@ -46,6 +46,7 @@ dependencies: flutter_localizations: sdk: flutter intl: any + flutter_dotenv: ^5.1.0 dev_dependencies: flutter_test: From 2afff6014472e15c66eeb5fa2cb2b5f9029adb5d Mon Sep 17 00:00:00 2001 From: Lukas <35173609+PHPLukaas@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:52:37 +0100 Subject: [PATCH 07/15] =?UTF-8?q?=F0=9F=94=90:=20Add=20environnement=20var?= =?UTF-8?q?iables=20to=20app?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/app_student/.gitignore | 6 +++++- frontend/app_student/lib/config/dev_config.dart | 4 +++- frontend/app_student/lib/config/prod_config.dart | 4 +++- frontend/app_student/lib/main_dev.dart | 4 +++- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/frontend/app_student/.gitignore b/frontend/app_student/.gitignore index 4dfa933..8049450 100644 --- a/frontend/app_student/.gitignore +++ b/frontend/app_student/.gitignore @@ -43,4 +43,8 @@ app.*.map.json /android/app/release # FVM Version Cache -.fvm/ \ No newline at end of file +.fvm/ + +# Env file +/.env +/.env.local \ No newline at end of file diff --git a/frontend/app_student/lib/config/dev_config.dart b/frontend/app_student/lib/config/dev_config.dart index af2b236..0766185 100644 --- a/frontend/app_student/lib/config/dev_config.dart +++ b/frontend/app_student/lib/config/dev_config.dart @@ -1,6 +1,8 @@ +import 'package:flutter_dotenv/flutter_dotenv.dart'; + import 'config.dart'; class DevConfig extends Config { @override - String get apiUrl => 'https://api-dev.lukasvalois.com'; + String get apiUrl => dotenv.env['DEV_API_URL'] ?? 'http://localhost:8000'; } diff --git a/frontend/app_student/lib/config/prod_config.dart b/frontend/app_student/lib/config/prod_config.dart index 31e87e0..fbf9831 100644 --- a/frontend/app_student/lib/config/prod_config.dart +++ b/frontend/app_student/lib/config/prod_config.dart @@ -1,6 +1,8 @@ +import 'package:flutter_dotenv/flutter_dotenv.dart'; + import 'config.dart'; class ProdConfig extends Config { @override - String get apiUrl => 'https://api.lukasvalois.com'; + String get apiUrl => dotenv.env['PROD_API_URL'] ?? 'http://localhost:8000'; } diff --git a/frontend/app_student/lib/main_dev.dart b/frontend/app_student/lib/main_dev.dart index b5a41d2..c8b8bce 100644 --- a/frontend/app_student/lib/main_dev.dart +++ b/frontend/app_student/lib/main_dev.dart @@ -1,6 +1,7 @@ import 'package:app_student/config/dev_config.dart'; import 'package:app_student/routes.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:go_router/go_router.dart'; @@ -8,7 +9,8 @@ import 'package:provider/provider.dart'; import 'config/config.dart'; -void main() { +void main() async { + await dotenv.load(); runApp( Provider( create: (_) => DevConfig(), From b750abd107ad83f051475b3287276a4472b9548e Mon Sep 17 00:00:00 2001 From: Lukas <35173609+PHPLukaas@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:52:52 +0100 Subject: [PATCH 08/15] =?UTF-8?q?=F0=9F=8D=B1:=20Added=20.env=20to=20pubsp?= =?UTF-8?q?ec=20assets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/app_student/pubspec.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/app_student/pubspec.yaml b/frontend/app_student/pubspec.yaml index a59001b..5195719 100644 --- a/frontend/app_student/pubspec.yaml +++ b/frontend/app_student/pubspec.yaml @@ -77,6 +77,7 @@ flutter: assets: - assets/images/ + - .env # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware From d23daf1b07a2dd5e0dfdc92179c05026fff073e2 Mon Sep 17 00:00:00 2001 From: Lukas <35173609+PHPLukaas@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:54:36 +0100 Subject: [PATCH 09/15] =?UTF-8?q?=F0=9F=93=9D:=20Updated=20frontend=20READ?= =?UTF-8?q?ME=20with=20env=20vars?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/app_student/README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/frontend/app_student/README.md b/frontend/app_student/README.md index 65bb4be..9164882 100644 --- a/frontend/app_student/README.md +++ b/frontend/app_student/README.md @@ -27,6 +27,13 @@ Avant de pousser votre code, assurez-vous de respecter les points suivants : - Exécutez `flutter analyze` pour détecter tout problème dans votre code. - Assurez-vous d'exécuter `pub get` pour installer toutes les dépendances du projet. +### Variables d'environnement + +Pour que l'application fonctionne correctement, vous devez définir les variables d'environnement suivantes dans un fichier `.env` à la racine du projet : + +- `API_URL_DEV`: URL de l'API de développement. +- `API_URL_PROD`: URL de l'API de production. + ## Contributions Les contributions des autres étudiants sont les bienvenues! N'hésitez pas à proposer des améliorations, des corrections de bugs ou de nouvelles fonctionnalités en soumettant des pull requests. From e2f3943aefadeb517a2e4a556940ffa5afaf45cf Mon Sep 17 00:00:00 2001 From: Lukas <35173609+PHPLukaas@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:59:25 +0100 Subject: [PATCH 10/15] =?UTF-8?q?=F0=9F=94=A7:=20Sample=20env=20file=20for?= =?UTF-8?q?=20frontend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/app_student/.env.dist | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 frontend/app_student/.env.dist diff --git a/frontend/app_student/.env.dist b/frontend/app_student/.env.dist new file mode 100644 index 0000000..4873f58 --- /dev/null +++ b/frontend/app_student/.env.dist @@ -0,0 +1,2 @@ +DEV_API_URL= +PROD_API_URL= \ No newline at end of file From a520ec33824de4215a7769e0eca6398aeb06d15c Mon Sep 17 00:00:00 2001 From: Yuta1409 Date: Thu, 14 Mar 2024 13:38:37 +0100 Subject: [PATCH 11/15] =?UTF-8?q?=E2=9C=A8:=20create=20profil=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assets/images/student-info.svg | 1 + frontend/app_student/assets/images/user.svg | 1 + frontend/app_student/lib/main_prod.dart | 4 +- .../lib/profil/view/profil_page.dart | 59 +++++++++++++++++++ .../profil/view/widgets/button-classe.dart | 44 ++++++++++++++ 5 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 frontend/app_student/assets/images/student-info.svg create mode 100644 frontend/app_student/assets/images/user.svg create mode 100644 frontend/app_student/lib/profil/view/profil_page.dart create mode 100644 frontend/app_student/lib/profil/view/widgets/button-classe.dart diff --git a/frontend/app_student/assets/images/student-info.svg b/frontend/app_student/assets/images/student-info.svg new file mode 100644 index 0000000..6ac60ae --- /dev/null +++ b/frontend/app_student/assets/images/student-info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/app_student/assets/images/user.svg b/frontend/app_student/assets/images/user.svg new file mode 100644 index 0000000..30cbd7d --- /dev/null +++ b/frontend/app_student/assets/images/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/app_student/lib/main_prod.dart b/frontend/app_student/lib/main_prod.dart index 7982f2b..8d0de26 100644 --- a/frontend/app_student/lib/main_prod.dart +++ b/frontend/app_student/lib/main_prod.dart @@ -1,5 +1,5 @@ import 'package:app_student/config/prod_config.dart'; -import 'package:app_student/login/views/login_page.dart'; +import 'package:app_student/profil/view/profil_page.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -25,7 +25,7 @@ class MyApp extends StatelessWidget { primarySwatch: Colors.blue, focusColor: const Color(0xffE84E0F), ), - home: const LoginPage(), + home: const ProfilPage(), ); } } diff --git a/frontend/app_student/lib/profil/view/profil_page.dart b/frontend/app_student/lib/profil/view/profil_page.dart new file mode 100644 index 0000000..dd19d3a --- /dev/null +++ b/frontend/app_student/lib/profil/view/profil_page.dart @@ -0,0 +1,59 @@ +import 'package:app_student/class_groups/views/widgets/header/header_text.dart'; +import 'package:app_student/profil/view/widgets/button-classe.dart'; +import 'package:flutter/material.dart'; +import 'package:app_student/login/widgets/header/header_logo.dart'; +import 'package:flutter_svg/svg.dart'; + +class ProfilPage extends StatelessWidget { + const ProfilPage({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Column( + children: [ + const HeaderLogo(), + const Padding( + padding: EdgeInsets.all(15.0), + child: HeaderText('Quel beau profil ####### !'), + ), + Padding( + padding: const EdgeInsets.all(30.0), + child: Card( + child: ListTile( + leading: SizedBox( + width: 50, + child: SvgPicture.asset( + 'assets/images/user.svg', + width: 30, + height: 30, + color: const Color(0xFF005067), + )), + title: const Text('Classe'), + subtitle: const Text('Nom du user'), + ), + ), + ), + Padding( + padding: const EdgeInsets.all(30.0), + child: Card( + child: ListTile( + leading: SizedBox( + width: 50, + child: SvgPicture.asset( + 'assets/images/student-info.svg', + width: 30, + height: 30, + color: const Color(0xFF005067), + )), + title: const Text('ISBN'), + subtitle: const Text('dd/mm/yyyy'), + ), + ), + ), + const ClassButton(), + ], + ), + ); + } +} diff --git a/frontend/app_student/lib/profil/view/widgets/button-classe.dart b/frontend/app_student/lib/profil/view/widgets/button-classe.dart new file mode 100644 index 0000000..4a5a0a9 --- /dev/null +++ b/frontend/app_student/lib/profil/view/widgets/button-classe.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; + +class ClassButton extends StatelessWidget { + const ClassButton({super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(left: 25.0, top: 80.0, right: 25.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + width: double.infinity, + height: 50.0, + child: ElevatedButton( + style: ButtonStyle( + textStyle: MaterialStateProperty.all( + const TextStyle( + fontSize: 16.0, + fontWeight: FontWeight.bold, + ), + ), + backgroundColor: MaterialStateProperty.all( + Theme.of(context).focusColor), + foregroundColor: MaterialStateProperty.all(Colors.white), + shape: MaterialStateProperty.all( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(3.0), + ), + ), + ), + onPressed: () { + GoRouter.of(context).go('/class-list'); + }, + child: const Text('Changer de classe'), + ), + ), + ], + ), + ); + } +} From a5dbc93cb73300b0f02d3c867f8d1ef33fd04291 Mon Sep 17 00:00:00 2001 From: Yuta1409 Date: Thu, 14 Mar 2024 14:01:59 +0100 Subject: [PATCH 12/15] =?UTF-8?q?=F0=9F=9A=A8:=20dart=20format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/app_student/lib/main_prod.dart | 2 +- .../view => profils/views}/profil_page.dart | 24 ++++++++++++------- .../views/widgets/class_group_button.dart} | 4 ++-- 3 files changed, 19 insertions(+), 11 deletions(-) rename frontend/app_student/lib/{profil/view => profils/views}/profil_page.dart (71%) rename frontend/app_student/lib/{profil/view/widgets/button-classe.dart => profils/views/widgets/class_group_button.dart} (93%) diff --git a/frontend/app_student/lib/main_prod.dart b/frontend/app_student/lib/main_prod.dart index 8d0de26..d8d39ad 100644 --- a/frontend/app_student/lib/main_prod.dart +++ b/frontend/app_student/lib/main_prod.dart @@ -1,5 +1,5 @@ import 'package:app_student/config/prod_config.dart'; -import 'package:app_student/profil/view/profil_page.dart'; +import 'package:app_student/profils/views/profil_page.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; diff --git a/frontend/app_student/lib/profil/view/profil_page.dart b/frontend/app_student/lib/profils/views/profil_page.dart similarity index 71% rename from frontend/app_student/lib/profil/view/profil_page.dart rename to frontend/app_student/lib/profils/views/profil_page.dart index dd19d3a..5479b0b 100644 --- a/frontend/app_student/lib/profil/view/profil_page.dart +++ b/frontend/app_student/lib/profils/views/profil_page.dart @@ -1,5 +1,5 @@ import 'package:app_student/class_groups/views/widgets/header/header_text.dart'; -import 'package:app_student/profil/view/widgets/button-classe.dart'; +import 'package:app_student/profils/views/widgets/class_group_button.dart'; import 'package:flutter/material.dart'; import 'package:app_student/login/widgets/header/header_logo.dart'; import 'package:flutter_svg/svg.dart'; @@ -22,13 +22,17 @@ class ProfilPage extends StatelessWidget { child: Card( child: ListTile( leading: SizedBox( - width: 50, + width: 50, + child: ColorFiltered( + colorFilter: const ColorFilter.mode( + Color(0xFF005067), BlendMode.srcIn), child: SvgPicture.asset( 'assets/images/user.svg', width: 30, height: 30, - color: const Color(0xFF005067), - )), + ), + ), + ), title: const Text('Classe'), subtitle: const Text('Nom du user'), ), @@ -39,19 +43,23 @@ class ProfilPage extends StatelessWidget { child: Card( child: ListTile( leading: SizedBox( - width: 50, + width: 50, + child: ColorFiltered( + colorFilter: const ColorFilter.mode( + Color(0xFF005067), BlendMode.srcIn), child: SvgPicture.asset( 'assets/images/student-info.svg', width: 30, height: 30, - color: const Color(0xFF005067), - )), + ), + ), + ), title: const Text('ISBN'), subtitle: const Text('dd/mm/yyyy'), ), ), ), - const ClassButton(), + const ClassGroupButton(), ], ), ); diff --git a/frontend/app_student/lib/profil/view/widgets/button-classe.dart b/frontend/app_student/lib/profils/views/widgets/class_group_button.dart similarity index 93% rename from frontend/app_student/lib/profil/view/widgets/button-classe.dart rename to frontend/app_student/lib/profils/views/widgets/class_group_button.dart index 4a5a0a9..1646a31 100644 --- a/frontend/app_student/lib/profil/view/widgets/button-classe.dart +++ b/frontend/app_student/lib/profils/views/widgets/class_group_button.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -class ClassButton extends StatelessWidget { - const ClassButton({super.key}); +class ClassGroupButton extends StatelessWidget { + const ClassGroupButton({super.key}); @override Widget build(BuildContext context) { From 34ab6acd0877ae135f5f49f8e6496a32bbc0d8ac Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 14 Mar 2024 17:39:07 +0100 Subject: [PATCH 13/15] =?UTF-8?q?=F0=9F=91=B7:=20supp=20dist=20frontend=20?= =?UTF-8?q?when=20deploy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-backend-dev.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/deploy-backend-dev.yml b/.github/workflows/deploy-backend-dev.yml index a723df7..2db918c 100644 --- a/.github/workflows/deploy-backend-dev.yml +++ b/.github/workflows/deploy-backend-dev.yml @@ -49,6 +49,16 @@ jobs: script: | cd /home/julesartd/www/api-dev-edt-3il/backend vendor/bin/php-cs-fixer fix src + + - name: Suppression du frontend + uses: appleboy/ssh-action@ + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USERNAME }} + key: ${{ secrets.SSH_PRIVATE_KEY }} + script: | + cd /home/julesartd/www/api-dev-edt-3il + rm -rf frontend \ No newline at end of file From d67eab917146e6471a5b4a3f3c011e7855e1103a Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 14 Mar 2024 17:40:24 +0100 Subject: [PATCH 14/15] =?UTF-8?q?=F0=9F=92=9A:=20oops?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-backend-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-backend-dev.yml b/.github/workflows/deploy-backend-dev.yml index 2db918c..85015b2 100644 --- a/.github/workflows/deploy-backend-dev.yml +++ b/.github/workflows/deploy-backend-dev.yml @@ -51,7 +51,7 @@ jobs: vendor/bin/php-cs-fixer fix src - name: Suppression du frontend - uses: appleboy/ssh-action@ + uses: appleboy/ssh-action@master with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USERNAME }} From 217a707a57a855d5b373343636b7f4b37f687837 Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 14 Mar 2024 17:43:51 +0100 Subject: [PATCH 15/15] =?UTF-8?q?=F0=9F=92=9A:=20copie=20seulement=20du=20?= =?UTF-8?q?backend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-backend-dev.yml | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/.github/workflows/deploy-backend-dev.yml b/.github/workflows/deploy-backend-dev.yml index 85015b2..87a8333 100644 --- a/.github/workflows/deploy-backend-dev.yml +++ b/.github/workflows/deploy-backend-dev.yml @@ -22,8 +22,7 @@ jobs: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} - name: Upload PHP code - run: scp -o StrictHostKeyChecking=no -r * ${{ secrets.SERVER_USERNAME }}@${{ secrets.SERVER_HOST }}:/home/julesartd/www/api-dev-edt-3il - + run: scp -o StrictHostKeyChecking=no -r backend ${{ secrets.SERVER_USERNAME }}@${{ secrets.SERVER_HOST }}:/home/julesartd/www/api-dev-edt-3il install_dependencies: needs: deploy @@ -49,16 +48,6 @@ jobs: script: | cd /home/julesartd/www/api-dev-edt-3il/backend vendor/bin/php-cs-fixer fix src - - - name: Suppression du frontend - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.SERVER_HOST }} - username: ${{ secrets.SERVER_USERNAME }} - key: ${{ secrets.SSH_PRIVATE_KEY }} - script: | - cd /home/julesartd/www/api-dev-edt-3il - rm -rf frontend \ No newline at end of file