├── .vscode └── settings.json ├── app ├── lib │ ├── Extras │ │ └── Importer.dart │ ├── ads │ │ ├── ad_support.dart │ │ └── get_ad_id.dart │ ├── utils │ │ └── models │ │ │ ├── id.dart │ │ │ ├── errors.dart │ │ │ └── name.dart │ ├── grades │ │ └── models │ │ │ ├── grade_type.dart │ │ │ └── default_grade_profile.dart │ ├── Config.dart │ ├── dynamic_links │ │ └── src │ │ │ ├── models │ │ │ └── join_by_key.dart │ │ │ └── gateway │ │ │ └── dynamic_link_gateway.dart │ ├── OldGrade │ │ └── models │ │ │ ├── average_display.dart │ │ │ ├── app_widget_settings.dart │ │ │ └── grade_value.dart │ ├── holiday_database │ │ └── models │ │ │ ├── country.dart │ │ │ └── holiday_type.dart │ ├── Data │ │ └── planner_database │ │ │ ├── indirect_connection.dart │ │ │ └── build_single_map.dart │ ├── Helper │ │ ├── NativeConnection.dart │ │ └── References.dart │ ├── groups │ │ └── src │ │ │ └── models │ │ │ ├── group_version.dart │ │ │ ├── place_link.dart │ │ │ ├── place.dart │ │ │ └── teacher_link.dart │ ├── Views │ │ └── SchoolPlanner │ │ │ └── print │ │ │ └── printer.dart │ ├── IntroductionScreen │ │ └── intro_button.dart │ ├── models │ │ ├── lesson_time.dart │ │ └── additionaltypes.dart │ └── app_widget │ │ └── update_logic.dart ├── ios │ ├── Runner │ │ ├── de.lproj │ │ │ ├── Main.strings │ │ │ ├── LaunchScreen.strings │ │ │ └── InfoPlist.strings │ │ ├── Runner-Bridging-Header.h │ │ ├── Assets.xcassets │ │ │ ├── LaunchImage.imageset │ │ │ │ ├── LaunchImage.png │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ ├── README.md │ │ │ │ └── Contents.json │ │ │ └── AppIcon.appiconset │ │ │ │ ├── App-Icon-20x20@1x.png │ │ │ │ ├── App-Icon-20x20@2x.png │ │ │ │ ├── App-Icon-20x20@3x.png │ │ │ │ ├── App-Icon-29x29@1x.png │ │ │ │ ├── App-Icon-29x29@2x.png │ │ │ │ ├── App-Icon-29x29@3x.png │ │ │ │ ├── App-Icon-40x40@1x.png │ │ │ │ ├── App-Icon-40x40@2x.png │ │ │ │ ├── App-Icon-40x40@3x.png │ │ │ │ ├── App-Icon-60x60@2x.png │ │ │ │ ├── App-Icon-60x60@3x.png │ │ │ │ ├── App-Icon-76x76@1x.png │ │ │ │ ├── App-Icon-76x76@2x.png │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ ├── App-Icon-1024x1024@1x.png │ │ │ │ ├── App-Icon-83.5x83.5@2x.png │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ └── AppDelegate.swift │ ├── Flutter │ │ ├── .last_build_id │ │ ├── Debug.xcconfig │ │ ├── Release.xcconfig │ │ └── flutter_export_environment.sh │ ├── Runner.xcodeproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ └── IDEWorkspaceChecks.plist │ └── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ ├── WorkspaceSettings.xcsettings │ │ └── IDEWorkspaceChecks.plist ├── android │ ├── settings_aar.gradle │ ├── .settings │ │ └── org.eclipse.buildship.core.prefs │ ├── app │ │ ├── .settings │ │ │ └── org.eclipse.buildship.core.prefs │ │ └── src │ │ │ └── main │ │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── xla │ │ │ │ └── school │ │ │ │ ├── models │ │ │ │ ├── place.kt │ │ │ │ ├── teacher.kt │ │ │ │ ├── period.kt │ │ │ │ ├── school_task.kt │ │ │ │ ├── design.kt │ │ │ │ ├── settings.kt │ │ │ │ └── course.kt │ │ │ │ └── NotificationID.java │ │ │ └── res │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── drawable-hdpi │ │ │ ├── baseline_close_black_18.png │ │ │ ├── baseline_close_black_24.png │ │ │ ├── baseline_close_black_36.png │ │ │ ├── baseline_close_black_48.png │ │ │ ├── baseline_person_black_18.png │ │ │ ├── baseline_person_black_24.png │ │ │ ├── baseline_person_black_36.png │ │ │ ├── baseline_person_black_48.png │ │ │ ├── baseline_place_black_18.png │ │ │ ├── baseline_place_black_24.png │ │ │ ├── baseline_place_black_36.png │ │ │ ├── baseline_place_black_48.png │ │ │ ├── baseline_school_black_18.png │ │ │ ├── baseline_school_black_24.png │ │ │ ├── baseline_school_black_36.png │ │ │ ├── baseline_school_black_48.png │ │ │ ├── ic_launcher_foreground.png │ │ │ ├── baseline_view_week_black_18.png │ │ │ ├── baseline_view_week_black_24.png │ │ │ ├── baseline_view_week_black_36.png │ │ │ ├── baseline_view_week_black_48.png │ │ │ ├── baseline_done_outline_black_18.png │ │ │ ├── baseline_done_outline_black_24.png │ │ │ ├── baseline_done_outline_black_36.png │ │ │ ├── baseline_done_outline_black_48.png │ │ │ ├── baseline_hourglass_full_black_18.png │ │ │ ├── baseline_hourglass_full_black_24.png │ │ │ ├── baseline_hourglass_full_black_36.png │ │ │ └── baseline_hourglass_full_black_48.png │ │ │ ├── drawable-mdpi │ │ │ ├── baseline_close_black_18.png │ │ │ ├── baseline_close_black_24.png │ │ │ ├── baseline_close_black_36.png │ │ │ ├── baseline_close_black_48.png │ │ │ ├── baseline_person_black_18.png │ │ │ ├── baseline_person_black_24.png │ │ │ ├── baseline_person_black_36.png │ │ │ ├── baseline_person_black_48.png │ │ │ ├── baseline_place_black_18.png │ │ │ ├── baseline_place_black_24.png │ │ │ ├── baseline_place_black_36.png │ │ │ ├── baseline_place_black_48.png │ │ │ ├── baseline_school_black_18.png │ │ │ ├── baseline_school_black_24.png │ │ │ ├── baseline_school_black_36.png │ │ │ ├── baseline_school_black_48.png │ │ │ ├── ic_launcher_foreground.png │ │ │ ├── baseline_view_week_black_18.png │ │ │ ├── baseline_view_week_black_24.png │ │ │ ├── baseline_view_week_black_36.png │ │ │ ├── baseline_view_week_black_48.png │ │ │ ├── baseline_done_outline_black_18.png │ │ │ ├── baseline_done_outline_black_24.png │ │ │ ├── baseline_done_outline_black_36.png │ │ │ ├── baseline_done_outline_black_48.png │ │ │ ├── baseline_hourglass_full_black_18.png │ │ │ ├── baseline_hourglass_full_black_24.png │ │ │ ├── baseline_hourglass_full_black_36.png │ │ │ └── baseline_hourglass_full_black_48.png │ │ │ ├── drawable-xhdpi │ │ │ ├── baseline_close_black_18.png │ │ │ ├── baseline_close_black_24.png │ │ │ ├── baseline_close_black_36.png │ │ │ ├── baseline_close_black_48.png │ │ │ ├── baseline_place_black_18.png │ │ │ ├── baseline_place_black_24.png │ │ │ ├── baseline_place_black_36.png │ │ │ ├── baseline_place_black_48.png │ │ │ ├── ic_launcher_foreground.png │ │ │ ├── baseline_person_black_18.png │ │ │ ├── baseline_person_black_24.png │ │ │ ├── baseline_person_black_36.png │ │ │ ├── baseline_person_black_48.png │ │ │ ├── baseline_school_black_18.png │ │ │ ├── baseline_school_black_24.png │ │ │ ├── baseline_school_black_36.png │ │ │ ├── baseline_school_black_48.png │ │ │ ├── baseline_view_week_black_18.png │ │ │ ├── baseline_view_week_black_24.png │ │ │ ├── baseline_view_week_black_36.png │ │ │ ├── baseline_view_week_black_48.png │ │ │ ├── baseline_done_outline_black_18.png │ │ │ ├── baseline_done_outline_black_24.png │ │ │ ├── baseline_done_outline_black_36.png │ │ │ ├── baseline_done_outline_black_48.png │ │ │ ├── baseline_hourglass_full_black_18.png │ │ │ ├── baseline_hourglass_full_black_24.png │ │ │ ├── baseline_hourglass_full_black_36.png │ │ │ └── baseline_hourglass_full_black_48.png │ │ │ ├── drawable-xxhdpi │ │ │ ├── ic_launcher_foreground.png │ │ │ ├── baseline_close_black_18.png │ │ │ ├── baseline_close_black_24.png │ │ │ ├── baseline_close_black_36.png │ │ │ ├── baseline_close_black_48.png │ │ │ ├── baseline_person_black_18.png │ │ │ ├── baseline_person_black_24.png │ │ │ ├── baseline_person_black_36.png │ │ │ ├── baseline_person_black_48.png │ │ │ ├── baseline_place_black_18.png │ │ │ ├── baseline_place_black_24.png │ │ │ ├── baseline_place_black_36.png │ │ │ ├── baseline_place_black_48.png │ │ │ ├── baseline_school_black_18.png │ │ │ ├── baseline_school_black_24.png │ │ │ ├── baseline_school_black_36.png │ │ │ ├── baseline_school_black_48.png │ │ │ ├── baseline_view_week_black_18.png │ │ │ ├── baseline_view_week_black_24.png │ │ │ ├── baseline_view_week_black_36.png │ │ │ ├── baseline_view_week_black_48.png │ │ │ ├── baseline_done_outline_black_18.png │ │ │ ├── baseline_done_outline_black_24.png │ │ │ ├── baseline_done_outline_black_36.png │ │ │ ├── baseline_done_outline_black_48.png │ │ │ ├── baseline_hourglass_full_black_18.png │ │ │ ├── baseline_hourglass_full_black_24.png │ │ │ ├── baseline_hourglass_full_black_36.png │ │ │ └── baseline_hourglass_full_black_48.png │ │ │ ├── drawable-xxxhdpi │ │ │ ├── baseline_close_black_18.png │ │ │ ├── baseline_close_black_24.png │ │ │ ├── baseline_close_black_36.png │ │ │ ├── baseline_close_black_48.png │ │ │ ├── baseline_place_black_18.png │ │ │ ├── baseline_place_black_24.png │ │ │ ├── baseline_place_black_36.png │ │ │ ├── baseline_place_black_48.png │ │ │ ├── ic_launcher_foreground.png │ │ │ ├── baseline_person_black_18.png │ │ │ ├── baseline_person_black_24.png │ │ │ ├── baseline_person_black_36.png │ │ │ ├── baseline_person_black_48.png │ │ │ ├── baseline_school_black_18.png │ │ │ ├── baseline_school_black_24.png │ │ │ ├── baseline_school_black_36.png │ │ │ ├── baseline_school_black_48.png │ │ │ ├── baseline_view_week_black_18.png │ │ │ ├── baseline_view_week_black_24.png │ │ │ ├── baseline_view_week_black_36.png │ │ │ ├── baseline_view_week_black_48.png │ │ │ ├── baseline_done_outline_black_18.png │ │ │ ├── baseline_done_outline_black_24.png │ │ │ ├── baseline_done_outline_black_36.png │ │ │ ├── baseline_done_outline_black_48.png │ │ │ ├── baseline_hourglass_full_black_18.png │ │ │ ├── baseline_hourglass_full_black_24.png │ │ │ ├── baseline_hourglass_full_black_36.png │ │ │ └── baseline_hourglass_full_black_48.png │ │ │ ├── mipmap-anydpi-v26 │ │ │ └── ic_launcher.xml │ │ │ ├── drawable │ │ │ ├── baseline_school_24.xml │ │ │ ├── launch_background.xml │ │ │ ├── baseline_close_24.xml │ │ │ ├── baseline_hourglass_full_24.xml │ │ │ ├── baseline_person_24.xml │ │ │ ├── baseline_done_outline_24.xml │ │ │ ├── baseline_place_24.xml │ │ │ └── baseline_view_week_24.xml │ │ │ ├── xml │ │ │ ├── app_widget_tasks_info.xml │ │ │ └── app_widget_timetable_info.xml │ │ │ └── values │ │ │ └── colors.xml │ ├── schulplaner-debug-key.jks │ ├── gradle.properties │ ├── schulplaner-debug-key.properties │ ├── .gitignore │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── .project │ └── settings.gradle ├── web │ ├── favicon.png │ ├── icons │ │ ├── Icon-192.png │ │ └── Icon-512.png │ ├── firebase_init_debug.js │ └── manifest.json ├── assets │ └── about_me_felix.jpg ├── macos │ ├── .gitignore │ ├── Runner │ │ ├── Configs │ │ │ ├── Debug.xcconfig │ │ │ ├── Release.xcconfig │ │ │ ├── Warnings.xcconfig │ │ │ └── AppInfo.xcconfig │ │ ├── Assets.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ ├── app_icon_128.png │ │ │ │ ├── app_icon_16.png │ │ │ │ ├── app_icon_256.png │ │ │ │ ├── app_icon_32.png │ │ │ │ ├── app_icon_512.png │ │ │ │ ├── app_icon_64.png │ │ │ │ └── app_icon_1024.png │ │ ├── AppDelegate.swift │ │ ├── Release.entitlements │ │ ├── MainFlutterWindow.swift │ │ └── DebugProfile.entitlements │ ├── Flutter │ │ ├── Flutter-Debug.xcconfig │ │ └── Flutter-Release.xcconfig │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── Runner.xcodeproj │ │ └── project.xcworkspace │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── README.md ├── .metadata ├── .firebaserc ├── analysis_options.yaml └── firebase.json ├── utils ├── README.md └── holiday_database │ ├── at-2 │ └── info.json │ ├── at-7 │ └── info.json │ ├── at-9 │ └── info.json │ ├── at-1 │ └── info.json │ ├── at-5 │ └── info.json │ ├── at-6 │ └── info.json │ ├── at-8 │ └── info.json │ ├── at-3 │ └── info.json │ ├── at-4 │ └── info.json │ ├── de-be │ ├── info.json │ └── 2019.json │ ├── de-by │ └── info.json │ ├── de-hb │ ├── info.json │ └── 2019.json │ ├── de-he │ ├── info.json │ └── 2019.json │ ├── de-hh │ └── info.json │ ├── de-sl │ ├── info.json │ └── 2019.json │ ├── de-sn │ ├── info.json │ └── 2019.json │ ├── de-th │ ├── info.json │ └── 2019.json │ ├── de-bb │ ├── info.json │ └── 2019.json │ ├── de-ni │ ├── info.json │ └── 2019.json │ ├── de-st │ ├── info.json │ └── 2019.json │ ├── de-bw │ └── info.json │ ├── de-nw │ ├── info.json │ └── 2019.json │ ├── de-rp │ ├── info.json │ └── 2019.json │ ├── de-sh │ ├── info.json │ └── 2019.json │ └── de-mv │ └── info.json ├── packages ├── schulplaner_addons │ ├── LICENSE │ ├── CHANGELOG.md │ ├── lib │ │ ├── tools │ │ │ ├── random_id.dart │ │ │ └── image │ │ │ │ └── file_helper.dart │ │ ├── schulplaner_utils.dart │ │ ├── common │ │ │ └── show_toast.dart │ │ └── utils │ │ │ └── date_utils.dart │ ├── .metadata │ ├── README.md │ └── analysis_options.yaml ├── date │ ├── lib │ │ ├── date.dart │ │ └── time.dart │ ├── .metadata │ └── pubspec.yaml ├── bloc │ ├── lib │ │ ├── bloc_base.dart │ │ ├── src │ │ │ └── bloc_base.dart │ │ └── bloc_provider.dart │ ├── pubspec.yaml │ └── .metadata ├── schulplaner_functions │ ├── lib │ │ └── schulplaner_functions.dart │ ├── .metadata │ └── pubspec.yaml ├── schulplaner_translations │ ├── GenerateLocalizations.bat │ ├── GenerateTranslatedLocalization.bat │ ├── lib │ │ ├── src │ │ │ ├── get_string.dart │ │ │ └── widgets │ │ │ │ └── t_text.dart │ │ └── schulplaner_translations.dart │ ├── .metadata │ └── pubspec.yaml ├── universal_commons │ ├── lib │ │ ├── platform_check.dart │ │ └── src │ │ │ └── plaform_check │ │ │ ├── implementation │ │ │ ├── js.dart │ │ │ ├── stub.dart │ │ │ └── io.dart │ │ │ ├── platform.dart │ │ │ └── platform_check.dart │ ├── pubspec.yaml │ └── .metadata ├── schulplaner_navigation │ ├── lib │ │ ├── src │ │ │ ├── models │ │ │ │ ├── widget_list_builder.dart │ │ │ │ ├── open_sub_child.dart │ │ │ │ ├── navigation_item.dart │ │ │ │ └── navigation_action.dart │ │ │ └── widgets │ │ │ │ └── limited_container.dart │ │ └── schulplaner_navigation.dart │ ├── .metadata │ ├── analysis_options.yaml │ └── pubspec.yaml ├── export_user_data │ ├── export_user_data_client_implementation │ │ ├── lib │ │ │ └── export_user_data_client_implementation.dart │ │ ├── .metadata │ │ └── pubspec.yaml │ ├── export_user_data_client │ │ ├── lib │ │ │ ├── src │ │ │ │ ├── common │ │ │ │ │ └── show_progress_sheet.dart │ │ │ │ └── services │ │ │ │ │ ├── export_user_data_service.dart │ │ │ │ │ └── download_service.dart │ │ │ └── export_user_data_client.dart │ │ └── pubspec.yaml │ └── export_user_data_models │ │ ├── lib │ │ ├── export_user_data_models.dart │ │ └── src │ │ │ └── views │ │ │ └── export_user_data_request_view.dart │ │ ├── pubspec.yaml │ │ └── .metadata ├── schulplaner_widgets │ ├── lib │ │ ├── src │ │ │ ├── forms │ │ │ │ ├── form_space.dart │ │ │ │ ├── form_divider.dart │ │ │ │ ├── form_container.dart │ │ │ │ └── form_button.dart │ │ │ ├── dialogs │ │ │ │ ├── sheet_content │ │ │ │ │ └── sheet_content.dart │ │ │ │ ├── dialog.dart │ │ │ │ └── state_sheet.dart │ │ │ └── theme │ │ │ │ ├── dialog_theme.dart │ │ │ │ ├── bottom_sheet_theme.dart │ │ │ │ └── color_design.dart │ │ ├── schulplaner_common.dart │ │ ├── schulplaner_theme.dart │ │ ├── schulplaner_forms.dart │ │ └── schulplaner_dialogs.dart │ ├── .metadata │ ├── README.md │ └── pubspec.yaml ├── design_utils │ ├── lib │ │ ├── design_utils.dart │ │ └── src │ │ │ ├── dimensions.dart │ │ │ └── widgets │ │ │ └── responsive_ui.dart │ ├── pubspec.yaml │ └── .metadata ├── app_functions │ ├── lib │ │ ├── app_functions.dart │ │ └── src │ │ │ └── app_functions_region.dart │ ├── .metadata │ └── pubspec.yaml ├── schulplaner_models │ ├── lib │ │ ├── schulplaner_models.dart │ │ └── src │ │ │ └── models │ │ │ ├── member_id.dart │ │ │ ├── group_type.dart │ │ │ └── public_code.dart │ ├── .metadata │ └── pubspec.yaml └── authentification │ ├── lib │ ├── authentification_blocs.dart │ ├── authentification_models.dart │ ├── src │ │ ├── models │ │ │ └── user_id.dart │ │ ├── logic │ │ │ └── email_sign_in_logic.dart │ │ ├── blocs │ │ │ └── email_sign_in_bloc.dart │ │ └── widgets │ │ │ └── sign_in_google.dart │ └── authentification_widgets.dart │ └── .metadata ├── security_rules ├── storage │ ├── firebase.json │ ├── .firebaserc │ └── storage.rules └── firestore │ ├── .firebaserc │ └── firebase.json ├── schulplaner_website ├── web │ ├── favicon.png │ └── icons │ │ ├── Icon-192.png │ │ └── Icon-512.png ├── lib │ ├── schulplaner_website_pages.dart │ └── src │ │ ├── logic │ │ ├── download_file │ │ │ ├── download_file_io.dart │ │ │ ├── download_file_stub.dart │ │ │ ├── download_file_js.dart │ │ │ └── download_file.dart │ │ └── website_utils.dart │ │ ├── models │ │ └── navigation_item.dart │ │ ├── blocs │ │ └── website_bloc.dart │ │ ├── parts │ │ └── layout_title.dart │ │ └── widgets │ │ ├── web_transition.dart │ │ ├── dark_mode_switch.dart │ │ ├── website_title.dart │ │ ├── assets_button.dart │ │ └── svg_button.dart ├── macos │ ├── .gitignore │ ├── Runner │ │ ├── Configs │ │ │ ├── Debug.xcconfig │ │ │ ├── Release.xcconfig │ │ │ ├── Warnings.xcconfig │ │ │ └── AppInfo.xcconfig │ │ ├── Assets.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ ├── app_icon_16.png │ │ │ │ ├── app_icon_32.png │ │ │ │ ├── app_icon_64.png │ │ │ │ ├── app_icon_1024.png │ │ │ │ ├── app_icon_128.png │ │ │ │ ├── app_icon_256.png │ │ │ │ └── app_icon_512.png │ │ ├── AppDelegate.swift │ │ ├── Release.entitlements │ │ ├── DebugProfile.entitlements │ │ └── MainFlutterWindow.swift │ ├── Flutter │ │ ├── Flutter-Debug.xcconfig │ │ ├── Flutter-Release.xcconfig │ │ └── GeneratedPluginRegistrant.swift │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── Runner.xcodeproj │ │ └── project.xcworkspace │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── assets │ ├── badges │ │ ├── open-web-app.png │ │ └── google-play-badge.png │ ├── privacy_policy_schulplaner.pdf │ └── screenshots │ │ ├── screenshot_mobile1.png │ │ ├── screenshot_mobile2.png │ │ ├── screenshot_mobile3.png │ │ └── screenshot_desktop1.png ├── .firebaserc ├── .metadata ├── analysis_options.yaml └── README.md ├── .gitignore ├── cloud_functions ├── functions │ ├── .gitignore │ ├── src │ │ ├── common │ │ │ ├── models │ │ │ │ └── id.ts │ │ │ └── random_string.ts │ │ ├── groups │ │ │ └── models │ │ │ │ ├── group_id.ts │ │ │ │ └── school_class_data.ts │ │ ├── user │ │ │ ├── models │ │ │ │ ├── user_id.ts │ │ │ │ └── user.ts │ │ │ └── gateway │ │ │ │ └── user_gateway.ts │ │ ├── server_requests │ │ │ ├── remove_server_request.ts │ │ │ ├── remove_notification_reminder.ts │ │ │ └── add_server_request.ts │ │ ├── dynamic_links │ │ │ └── src │ │ │ │ ├── app_information.ts │ │ │ │ ├── dynamic_links_length_type.ts │ │ │ │ └── dynamic_links_type.ts │ │ ├── homework_reminder │ │ │ ├── is_task_finished.ts │ │ │ └── not_finished.ts │ │ └── export_user_data │ │ │ └── models │ │ │ └── request_meta_data.ts │ └── tsconfig.json ├── .firebaserc └── firebase.json └── .github ├── ISSUE_TEMPLATE └── 2-feature-request.md └── PULL_REQUEST_TEMPLATE.md /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /app/lib/Extras/Importer.dart: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/ios/Runner/de.lproj/Main.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/android/settings_aar.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /app/ios/Runner/de.lproj/LaunchScreen.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /utils/README.md: -------------------------------------------------------------------------------- 1 | # Nützliche Ergänzungen zur Schulplaner App -------------------------------------------------------------------------------- /app/ios/Flutter/.last_build_id: -------------------------------------------------------------------------------- 1 | 4eae13ba584345619e2e4a30a9f23d97 -------------------------------------------------------------------------------- /packages/schulplaner_addons/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /packages/date/lib/date.dart: -------------------------------------------------------------------------------- 1 | library date; 2 | 3 | export 'src/date.dart'; 4 | -------------------------------------------------------------------------------- /packages/date/lib/time.dart: -------------------------------------------------------------------------------- 1 | library time; 2 | 3 | export 'src/time.dart'; 4 | -------------------------------------------------------------------------------- /app/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /packages/bloc/lib/bloc_base.dart: -------------------------------------------------------------------------------- 1 | library bloc_base; 2 | 3 | export 'src/bloc_base.dart'; 4 | -------------------------------------------------------------------------------- /app/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/web/favicon.png -------------------------------------------------------------------------------- /app/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/web/icons/Icon-192.png -------------------------------------------------------------------------------- /app/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/web/icons/Icon-512.png -------------------------------------------------------------------------------- /security_rules/storage/firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "storage": { 3 | "rules": "storage.rules" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /app/android/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | connection.project.dir= 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /app/assets/about_me_felix.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/assets/about_me_felix.jpg -------------------------------------------------------------------------------- /packages/bloc/lib/src/bloc_base.dart: -------------------------------------------------------------------------------- 1 | abstract class BlocBase { 2 | const BlocBase(); 3 | void dispose(); 4 | } 5 | -------------------------------------------------------------------------------- /security_rules/firestore/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "mainprojects-32581" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /security_rules/storage/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "mainprojects-32581" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /app/android/app/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | connection.project.dir=.. 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /app/lib/ads/ad_support.dart: -------------------------------------------------------------------------------- 1 | class AdSupport { 2 | static bool get areAdsSupported { 3 | return false; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /app/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/xcuserdata/ 7 | -------------------------------------------------------------------------------- /app/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /app/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/schulplaner_addons/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [0.0.1] - TODO: Add release date. 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /schulplaner_website/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/web/favicon.png -------------------------------------------------------------------------------- /app/android/schulplaner-debug-key.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/schulplaner-debug-key.jks -------------------------------------------------------------------------------- /app/lib/utils/models/id.dart: -------------------------------------------------------------------------------- 1 | class ID { 2 | final String _key; 3 | const ID(this._key); 4 | 5 | String get key => _key; 6 | } 7 | -------------------------------------------------------------------------------- /schulplaner_website/lib/schulplaner_website_pages.dart: -------------------------------------------------------------------------------- 1 | library schulplaner_website_pages; 2 | 3 | export 'src/pages/privacy/privacy.dart'; 4 | -------------------------------------------------------------------------------- /schulplaner_website/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/xcuserdata/ 7 | -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /schulplaner_website/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/web/icons/Icon-192.png -------------------------------------------------------------------------------- /schulplaner_website/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/web/icons/Icon-512.png -------------------------------------------------------------------------------- /packages/bloc/lib/bloc_provider.dart: -------------------------------------------------------------------------------- 1 | library bloc_provider; 2 | 3 | export 'src/bloc_provider.dart'; 4 | export 'src/multi_bloc_provider.dart'; 5 | -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /app/android/app/src/main/kotlin/com/xla/school/models/place.kt: -------------------------------------------------------------------------------- 1 | package com.xla.school.models 2 | 3 | data class Place(val id:String, val name:String) -------------------------------------------------------------------------------- /app/android/app/src/main/kotlin/com/xla/school/models/teacher.kt: -------------------------------------------------------------------------------- 1 | package com.xla.school.models 2 | 3 | data class Teacher(val id:String, val name:String) -------------------------------------------------------------------------------- /packages/schulplaner_functions/lib/schulplaner_functions.dart: -------------------------------------------------------------------------------- 1 | library schulplaner_functions; 2 | 3 | export 'src/schulplaner_functions_bloc.dart'; 4 | -------------------------------------------------------------------------------- /schulplaner_website/assets/badges/open-web-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/assets/badges/open-web-app.png -------------------------------------------------------------------------------- /app/lib/grades/models/grade_type.dart: -------------------------------------------------------------------------------- 1 | enum GradeType { 2 | HOMEWORK, 3 | EXAM, 4 | ORALEXAM, 5 | TEST, 6 | OTHER, 7 | GENERAL_PARTICIPATION, 8 | } 9 | -------------------------------------------------------------------------------- /security_rules/firestore/firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "firestore": { 3 | "rules": "firestore.rules", 4 | "indexes": "firestore.indexes.json" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /keys 2 | key-release.properties 3 | /admin_utils 4 | service_account_key_production.json 5 | firebase_init_release.js 6 | GoogleService-Info.plist 7 | .env -------------------------------------------------------------------------------- /app/android/app/src/main/kotlin/com/xla/school/models/period.kt: -------------------------------------------------------------------------------- 1 | package com.xla.school.models 2 | 3 | data class Period(val id:Int, val start:String, val end:String) -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/schulplaner_translations/GenerateLocalizations.bat: -------------------------------------------------------------------------------- 1 | flutter pub pub run intl_translation:extract_to_arb --output-dir=lib/l10n lib/Helper/MyAppLocalization.dart -------------------------------------------------------------------------------- /schulplaner_website/assets/badges/google-play-badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/assets/badges/google-play-badge.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /cloud_functions/functions/.gitignore: -------------------------------------------------------------------------------- 1 | ## Compiled JavaScript files 2 | **/*.js 3 | **/*.js.map 4 | 5 | # Typescript v1 declaration files 6 | typings/ 7 | 8 | node_modules/ -------------------------------------------------------------------------------- /schulplaner_website/assets/privacy_policy_schulplaner.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/assets/privacy_policy_schulplaner.pdf -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/lib/utils/models/errors.dart: -------------------------------------------------------------------------------- 1 | class InvalidJsonParseError extends Error { 2 | @override 3 | String toString() { 4 | return 'InvalidJsonParseError'; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /schulplaner_website/assets/screenshots/screenshot_mobile1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/assets/screenshots/screenshot_mobile1.png -------------------------------------------------------------------------------- /schulplaner_website/assets/screenshots/screenshot_mobile2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/assets/screenshots/screenshot_mobile2.png -------------------------------------------------------------------------------- /schulplaner_website/assets/screenshots/screenshot_mobile3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/assets/screenshots/screenshot_mobile3.png -------------------------------------------------------------------------------- /schulplaner_website/lib/src/logic/download_file/download_file_io.dart: -------------------------------------------------------------------------------- 1 | 2 | void downloadFileImplementation(String url, String name) { 3 | throw('Unsupported Operation'); 4 | } -------------------------------------------------------------------------------- /packages/universal_commons/lib/platform_check.dart: -------------------------------------------------------------------------------- 1 | library platform_check; 2 | 3 | export 'src/plaform_check/platform.dart'; 4 | export 'src/plaform_check/platform_check.dart'; 5 | -------------------------------------------------------------------------------- /packages/universal_commons/lib/src/plaform_check/implementation/js.dart: -------------------------------------------------------------------------------- 1 | import '../platform.dart'; 2 | 3 | CurrentPlatform getPlatform() { 4 | return CurrentPlatform.web; 5 | } 6 | -------------------------------------------------------------------------------- /schulplaner_website/assets/screenshots/screenshot_desktop1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/assets/screenshots/screenshot_desktop1.png -------------------------------------------------------------------------------- /schulplaner_website/lib/src/logic/download_file/download_file_stub.dart: -------------------------------------------------------------------------------- 1 | 2 | 3 | void downloadFileImplementation(String url, String name) { 4 | throw('Unsupported Operation'); 5 | } -------------------------------------------------------------------------------- /app/android/gradle.properties: -------------------------------------------------------------------------------- 1 | android.enableJetifier=true 2 | android.useAndroidX=true 3 | org.gradle.jvmargs=-Xmx2048M 4 | extra-gen-snapshot-options=--obfuscate 5 | android.enableR8=false -------------------------------------------------------------------------------- /packages/schulplaner_navigation/lib/src/models/widget_list_builder.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | 3 | typedef List WidgetListBuilder(BuildContext context); 4 | -------------------------------------------------------------------------------- /packages/universal_commons/lib/src/plaform_check/implementation/stub.dart: -------------------------------------------------------------------------------- 1 | import '../platform.dart'; 2 | 3 | CurrentPlatform getPlatform() { 4 | return CurrentPlatform.other; 5 | } 6 | -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /app/lib/utils/models/name.dart: -------------------------------------------------------------------------------- 1 | class Name { 2 | final String _text; 3 | const Name(this._text); 4 | 5 | String get text => _text; 6 | 7 | bool get isEmpty => _text.isEmpty; 8 | } 9 | -------------------------------------------------------------------------------- /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_close_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_close_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_close_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_close_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_close_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_close_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_close_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_close_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_person_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_person_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_person_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_person_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_person_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_person_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_person_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_person_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_place_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_place_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_place_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_place_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_place_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_place_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_place_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_place_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_school_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_school_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_school_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_school_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_school_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_school_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_school_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_school_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_close_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_close_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_close_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_close_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_close_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_close_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_close_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_close_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_person_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_person_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_person_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_person_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_person_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_person_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_person_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_person_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_place_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_place_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_place_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_place_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_place_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_place_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_place_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_place_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_school_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_school_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_school_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_school_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_school_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_school_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_school_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_school_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_close_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_close_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_close_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_close_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_close_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_close_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_close_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_close_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_place_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_place_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_place_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_place_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_place_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_place_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_place_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_place_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /app/lib/Config.dart: -------------------------------------------------------------------------------- 1 | class Config { 2 | static String versionName = '12.0'; 3 | static int versionCode = 641; 4 | 5 | //ignore: avoid_init_to_null 6 | static String? uid = null; 7 | } 8 | -------------------------------------------------------------------------------- /app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /cloud_functions/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "development": "schulplaner-debug", 4 | "production": "mainprojects-32581", 5 | "default": "mainprojects-32581" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_person_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_person_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_person_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_person_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_person_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_person_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_person_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_person_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_school_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_school_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_school_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_school_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_school_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_school_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_school_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_school_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_close_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_close_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_close_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_close_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_close_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_close_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_close_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_close_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_person_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_person_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_person_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_person_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_person_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_person_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_person_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_person_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_place_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_place_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_place_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_place_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_place_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_place_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_place_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_place_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_school_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_school_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_school_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_school_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_school_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_school_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_school_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_school_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_close_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_close_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_close_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_close_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_close_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_close_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_close_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_close_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_place_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_place_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_place_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_place_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_place_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_place_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_place_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_place_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/android/schulplaner-debug-key.properties: -------------------------------------------------------------------------------- 1 | keyAlias = schulplaner-debug-key 2 | keyPassword = SchulplanerDebugKey 3 | storeFile = ../schulplaner-debug-key.jks 4 | storePassword = SchulplanerDebugKey -------------------------------------------------------------------------------- /cloud_functions/functions/src/common/models/id.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | export class Id { 4 | public id: string; 5 | 6 | constructor(id: string) { 7 | this.id = id; 8 | } 9 | 10 | } -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_view_week_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_view_week_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_view_week_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_view_week_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_view_week_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_view_week_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_view_week_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_view_week_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_view_week_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_view_week_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_view_week_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_view_week_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_view_week_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_view_week_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_view_week_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_view_week_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_view_week_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_view_week_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_view_week_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_view_week_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_view_week_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_view_week_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_view_week_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_view_week_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_view_week_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_view_week_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_view_week_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_view_week_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_view_week_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_view_week_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_view_week_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_view_week_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_person_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_person_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_person_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_person_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_person_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_person_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_person_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_person_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_school_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_school_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_school_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_school_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_school_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_school_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_school_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_school_black_48.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /schulplaner_website/lib/src/models/navigation_item.dart: -------------------------------------------------------------------------------- 1 | enum NavigationItem { 2 | homepage, 3 | impressum, 4 | privacy, 5 | about, 6 | donate, 7 | download, 8 | opensource, 9 | } 10 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_done_outline_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_done_outline_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_done_outline_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_done_outline_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_done_outline_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_done_outline_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_done_outline_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_done_outline_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_done_outline_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_done_outline_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_done_outline_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_done_outline_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_done_outline_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_done_outline_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_done_outline_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_done_outline_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_done_outline_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_done_outline_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_done_outline_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_done_outline_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_done_outline_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_done_outline_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_done_outline_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_done_outline_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_view_week_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_view_week_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_view_week_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_view_week_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_view_week_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_view_week_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_view_week_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_view_week_black_48.png -------------------------------------------------------------------------------- /cloud_functions/functions/src/groups/models/group_id.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | export class GroupId { 4 | public id: string; 5 | 6 | constructor(id: string) { 7 | this.id = id; 8 | } 9 | 10 | } -------------------------------------------------------------------------------- /packages/universal_commons/lib/src/plaform_check/platform.dart: -------------------------------------------------------------------------------- 1 | enum CurrentPlatform { 2 | android, 3 | iOS, 4 | macOS, 5 | windows, 6 | linux, 7 | web, 8 | desktop, 9 | other, 10 | } 11 | -------------------------------------------------------------------------------- /app/README.md: -------------------------------------------------------------------------------- 1 | # Flutter App des Schulplaners 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | For help getting started with Flutter, view our online 8 | [documentation](https://flutter.io/). 9 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_hourglass_full_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_hourglass_full_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_hourglass_full_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_hourglass_full_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_hourglass_full_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_hourglass_full_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-hdpi/baseline_hourglass_full_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-hdpi/baseline_hourglass_full_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_hourglass_full_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_hourglass_full_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_hourglass_full_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_hourglass_full_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_hourglass_full_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_hourglass_full_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-mdpi/baseline_hourglass_full_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-mdpi/baseline_hourglass_full_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_hourglass_full_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_hourglass_full_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_hourglass_full_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_hourglass_full_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_hourglass_full_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_hourglass_full_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xhdpi/baseline_hourglass_full_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xhdpi/baseline_hourglass_full_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_done_outline_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_done_outline_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_done_outline_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_done_outline_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_done_outline_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_done_outline_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_done_outline_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_done_outline_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_hourglass_full_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_hourglass_full_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_hourglass_full_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_hourglass_full_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_hourglass_full_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_hourglass_full_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxhdpi/baseline_hourglass_full_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxhdpi/baseline_hourglass_full_black_48.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_done_outline_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_done_outline_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_done_outline_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_done_outline_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_done_outline_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_done_outline_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_done_outline_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_done_outline_black_48.png -------------------------------------------------------------------------------- /app/lib/dynamic_links/src/models/join_by_key.dart: -------------------------------------------------------------------------------- 1 | const joinByKey = 'joinbykey'; 2 | 3 | class DynamicLinkJoinByKey { 4 | final String publicKey; 5 | 6 | DynamicLinkJoinByKey({required this.publicKey}); 7 | } 8 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_hourglass_full_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_hourglass_full_black_18.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_hourglass_full_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_hourglass_full_black_24.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_hourglass_full_black_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_hourglass_full_black_36.png -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable-xxxhdpi/baseline_hourglass_full_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/app/android/app/src/main/res/drawable-xxxhdpi/baseline_hourglass_full_black_48.png -------------------------------------------------------------------------------- /cloud_functions/functions/src/user/models/user_id.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | export class UserId { 4 | public uid: string; 5 | 6 | constructor(uid: string) { 7 | this.uid = uid; 8 | } 9 | 10 | 11 | 12 | } -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /app/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 3 | #include "Generated.xcconfig" 4 | -------------------------------------------------------------------------------- /packages/export_user_data/export_user_data_client_implementation/lib/export_user_data_client_implementation.dart: -------------------------------------------------------------------------------- 1 | library export_user_data_client_implementation; 2 | 3 | export 'src/firestore_export_user_data_service.dart'; 4 | -------------------------------------------------------------------------------- /packages/schulplaner_translations/GenerateTranslatedLocalization.bat: -------------------------------------------------------------------------------- 1 | flutter pub pub run intl_translation:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/Helper/MyAppLocalization.dart lib/l10n/intl_de.arb -------------------------------------------------------------------------------- /packages/schulplaner_widgets/lib/src/forms/form_space.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class FormSpace extends SizedBox { 4 | const FormSpace(double height) : super(width: 0.0, height: height); 5 | } 6 | -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flowhorn/schulplaner/HEAD/schulplaner_website/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /security_rules/storage/storage.rules: -------------------------------------------------------------------------------- 1 | rules_version = '2'; 2 | service firebase.storage { 3 | match /b/{bucket}/o { 4 | match /{allPaths=**} { 5 | allow get, write: if request.auth!=null; 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/android/app/src/main/kotlin/com/xla/school/models/school_task.kt: -------------------------------------------------------------------------------- 1 | package com.xla.school.models 2 | 3 | data class SchoolTask(val id:String, val courseid:String, val title:String, val due:String, val finished:Boolean) 4 | 5 | -------------------------------------------------------------------------------- /app/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 3 | #include "Generated.xcconfig" 4 | -------------------------------------------------------------------------------- /app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/lib/src/dialogs/sheet_content/sheet_content.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | abstract class SheetContent { 4 | const SheetContent(); 5 | Widget build(BuildContext context); 6 | } 7 | -------------------------------------------------------------------------------- /packages/design_utils/lib/design_utils.dart: -------------------------------------------------------------------------------- 1 | library design_utils; 2 | 3 | export 'src/dimensions.dart'; 4 | export 'src/widgets/responsive_ui.dart'; 5 | export 'src/widgets/responsive_sides.dart'; 6 | export 'src/widgets/responsive_list.dart'; -------------------------------------------------------------------------------- /app/android/app/src/main/kotlin/com/xla/school/models/design.kt: -------------------------------------------------------------------------------- 1 | package com.xla.school.models 2 | 3 | 4 | data class Design(val id:String,val name:String, val primary:String, val accent:String, val darkmode:Boolean, val autodark:Boolean); 5 | -------------------------------------------------------------------------------- /app/lib/dynamic_links/src/gateway/dynamic_link_gateway.dart: -------------------------------------------------------------------------------- 1 | import 'package:cloud_firestore/cloud_firestore.dart'; 2 | 3 | class DynamicLinkGateway { 4 | final FirebaseFirestore firestore; 5 | 6 | DynamicLinkGateway(this.firestore); 7 | } 8 | -------------------------------------------------------------------------------- /app/macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 3 | #include "ephemeral/Flutter-Generated.xcconfig" 4 | -------------------------------------------------------------------------------- /cloud_functions/firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "functions": { 3 | "predeploy": [ 4 | "npm --prefix \"$RESOURCE_DIR\" run lint", 5 | "npm --prefix \"$RESOURCE_DIR\" run build" 6 | ], 7 | "source": "functions" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/app_functions/lib/app_functions.dart: -------------------------------------------------------------------------------- 1 | library app_functions; 2 | 3 | export 'src/app_functions_bloc.dart'; 4 | export 'src/app_functions_exception.dart'; 5 | export 'src/app_functions_region.dart'; 6 | export 'src/app_functions_result.dart'; 7 | -------------------------------------------------------------------------------- /packages/schulplaner_models/lib/schulplaner_models.dart: -------------------------------------------------------------------------------- 1 | library schulplaner_models; 2 | 3 | export 'src/models/group_type.dart'; 4 | export 'src/models/member_role.dart'; 5 | export 'src/models/member_id.dart'; 6 | export 'src/models/public_code.dart'; 7 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/lib/src/forms/form_divider.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class FormDivider extends StatelessWidget { 4 | @override 5 | Widget build(BuildContext context) { 6 | return Divider(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 3 | #include "ephemeral/Flutter-Generated.xcconfig" 4 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/lib/src/theme/dialog_theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | const dialogTheme = DialogThemeData( 4 | shape: RoundedRectangleBorder( 5 | borderRadius: BorderRadius.all(Radius.circular(16)), 6 | ), 7 | ); 8 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/lib/schulplaner_common.dart: -------------------------------------------------------------------------------- 1 | library schulplaner_common; 2 | 3 | export 'src/common/r_button.dart'; 4 | export 'src/common/up_listview.dart'; 5 | export 'src/common/app_header_advanced.dart'; 6 | export 'src/common/empty_list_state.dart'; 7 | -------------------------------------------------------------------------------- /schulplaner_website/macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 3 | #include "ephemeral/Flutter-Generated.xcconfig" 4 | -------------------------------------------------------------------------------- /utils/holiday_database/at-2/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "at-2", 3 | "name": "Kärnten", 4 | "country": "austria", 5 | "lastRefreshed": "2021-10-11", 6 | "years": [ 7 | "2021", 8 | "2022" 9 | ], 10 | "isOfficial": true, 11 | "published": true 12 | } -------------------------------------------------------------------------------- /utils/holiday_database/at-7/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "at-7", 3 | "name": "Tirol", 4 | "country": "austria", 5 | "lastRefreshed": "2021-10-11", 6 | "years": [ 7 | "2021", 8 | "2022" 9 | ], 10 | "isOfficial": true, 11 | "published": true 12 | } -------------------------------------------------------------------------------- /utils/holiday_database/at-9/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "at-9", 3 | "name": "Wien", 4 | "country": "austria", 5 | "lastRefreshed": "2021-10-11", 6 | "years": [ 7 | "2021", 8 | "2022" 9 | ], 10 | "isOfficial": true, 11 | "published": true 12 | } -------------------------------------------------------------------------------- /schulplaner_website/lib/src/logic/website_utils.dart: -------------------------------------------------------------------------------- 1 | import 'package:url_launcher/url_launcher.dart'; 2 | 3 | 4 | Future openUrl({ 5 | required String urlString, 6 | bool openInNewWindow = true, 7 | }) async { 8 | await launch(urlString); 9 | } 10 | 11 | -------------------------------------------------------------------------------- /schulplaner_website/macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 3 | #include "ephemeral/Flutter-Generated.xcconfig" 4 | -------------------------------------------------------------------------------- /utils/holiday_database/at-1/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "at-1", 3 | "name": "Burgenland", 4 | "country": "austria", 5 | "lastRefreshed": "2021-10-11", 6 | "years": [ 7 | "2021", 8 | "2022" 9 | ], 10 | "isOfficial": true, 11 | "published": true 12 | } -------------------------------------------------------------------------------- /utils/holiday_database/at-5/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "at-5", 3 | "name": "Salzburg", 4 | "country": "austria", 5 | "lastRefreshed": "2021-10-11", 6 | "years": [ 7 | "2021", 8 | "2022" 9 | ], 10 | "isOfficial": true, 11 | "published": true 12 | } -------------------------------------------------------------------------------- /utils/holiday_database/at-6/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "at-6", 3 | "name": "Steiermark", 4 | "country": "austria", 5 | "lastRefreshed": "2021-10-11", 6 | "years": [ 7 | "2021", 8 | "2022" 9 | ], 10 | "isOfficial": true, 11 | "published": true 12 | } -------------------------------------------------------------------------------- /utils/holiday_database/at-8/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "at-8", 3 | "name": "Vorarlberg", 4 | "country": "austria", 5 | "lastRefreshed": "2021-10-11", 6 | "years": [ 7 | "2021", 8 | "2022" 9 | ], 10 | "isOfficial": true, 11 | "published": true 12 | } -------------------------------------------------------------------------------- /packages/schulplaner_navigation/lib/src/models/open_sub_child.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | 3 | import 'widget_list_builder.dart'; 4 | 5 | typedef OpenSubChild = void Function(String tag, Widget subChild, String title, 6 | {WidgetListBuilder actions}); 7 | -------------------------------------------------------------------------------- /utils/holiday_database/at-3/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "at-3", 3 | "name": "Niederösterreich", 4 | "country": "austria", 5 | "lastRefreshed": "2021-10-11", 6 | "years": [ 7 | "2021", 8 | "2022" 9 | ], 10 | "isOfficial": true, 11 | "published": true 12 | } -------------------------------------------------------------------------------- /utils/holiday_database/at-4/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "at-4", 3 | "name": "Oberösterreich", 4 | "country": "austria", 5 | "lastRefreshed": "2021-10-11", 6 | "years": [ 7 | "2021", 8 | "2022" 9 | ], 10 | "isOfficial": true, 11 | "published": true 12 | } -------------------------------------------------------------------------------- /packages/schulplaner_addons/lib/tools/random_id.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | import 'package:uuid/uuid.dart'; 4 | 5 | String randomID() { 6 | return Random.secure().nextInt(999999999).toString(); 7 | } 8 | 9 | String randomUUID() { 10 | return Uuid().v4(); 11 | } 12 | -------------------------------------------------------------------------------- /cloud_functions/functions/src/server_requests/remove_server_request.ts: -------------------------------------------------------------------------------- 1 | import { SchulplanerReferences } from "../schulplaner_globals"; 2 | 3 | 4 | export async function removeServerRequest(requestId: string) { 5 | await SchulplanerReferences.serverRequests.doc(requestId).delete(); 6 | } -------------------------------------------------------------------------------- /packages/authentification/lib/authentification_blocs.dart: -------------------------------------------------------------------------------- 1 | library authentification_blocs; 2 | 3 | export 'src/blocs/authentification_bloc.dart'; 4 | export 'src/blocs/sign_in_bloc.dart'; 5 | export 'src/blocs/email_sign_in_bloc.dart'; 6 | export 'src/blocs/my_auth_providers_bloc.dart'; 7 | -------------------------------------------------------------------------------- /app/android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | *.class 3 | .gradle 4 | /local.properties 5 | /.idea/workspace.xml 6 | /.idea/libraries 7 | .DS_Store 8 | /build 9 | /captures 10 | GeneratedPluginRegistrant.java 11 | /app/src/production/google-services.json 12 | !/app/src/development/google-services.json -------------------------------------------------------------------------------- /app/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/lib/schulplaner_theme.dart: -------------------------------------------------------------------------------- 1 | library schulplaner_theme; 2 | 3 | export 'src/theme/app_theme.dart'; 4 | export 'src/theme/color_design.dart'; 5 | export 'src/theme/design.dart'; 6 | export 'src/theme/bottom_sheet_theme.dart'; 7 | export 'src/theme/dialog_theme.dart'; 8 | -------------------------------------------------------------------------------- /packages/export_user_data/export_user_data_client/lib/src/common/show_progress_sheet.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | Future showProgressSheet({ 4 | required BuildContext context, 5 | required Future future, 6 | }) async { 7 | print('showProgressSheet'); 8 | } 9 | -------------------------------------------------------------------------------- /packages/export_user_data/export_user_data_models/lib/export_user_data_models.dart: -------------------------------------------------------------------------------- 1 | library export_user_data_models; 2 | 3 | export 'src/models/export_user_data_request.dart'; 4 | export 'src/models/export_user_data_request_status.dart'; 5 | export 'src/views/export_user_data_request_view.dart'; 6 | -------------------------------------------------------------------------------- /schulplaner_website/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "mainprojects-32581" 4 | }, 5 | "targets": { 6 | "mainprojects-32581": { 7 | "hosting": { 8 | "landing-app": [ 9 | "schulplaner" 10 | ] 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Thu Jan 07 17:07:29 CET 2021 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip 7 | -------------------------------------------------------------------------------- /packages/schulplaner_translations/lib/src/get_string.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'my_app_localization.dart'; 3 | 4 | MyAppLocalizations getString(BuildContext? context) { 5 | if (context == null) return MyAppLocalizations(); 6 | return MyAppLocalizations.of(context)!; 7 | } 8 | -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/authentification/lib/authentification_models.dart: -------------------------------------------------------------------------------- 1 | library authentification_models; 2 | 3 | export 'src/models/auth_user.dart'; 4 | export 'src/models/authentification_status.dart'; 5 | export 'src/models/sign_in_state.dart'; 6 | export 'src/models/user_id.dart'; 7 | export 'src/models/auth_provider.dart'; 8 | -------------------------------------------------------------------------------- /app/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /utils/holiday_database/de-be/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-be", 3 | "name": "Berlin", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-by/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-by", 3 | "name": "Bayern", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-hb/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-hb", 3 | "name": "Bremen", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-he/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-he", 3 | "name": "Hessen", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-hh/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-hh", 3 | "name": "Hamburg", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-sl/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-sl", 3 | "name": "Saarland", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-sn/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-sn", 3 | "name": "Sachsen", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-th/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-th", 3 | "name": "Thüringen", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /app/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: f37c235c32fc15babe6dc7b7bc2ee4387e5ecf92 8 | channel: beta 9 | -------------------------------------------------------------------------------- /cloud_functions/functions/src/dynamic_links/src/app_information.ts: -------------------------------------------------------------------------------- 1 | export class AppInformation { 2 | static PACKAGE_NAME: string = "com.xla.school"; 3 | static IOS_BUNDLE_ID: string = "com.xla.schoolplanner"; 4 | static IOS_APP_STORE_ID: string = "1425606459"; 5 | static REQUIRED_PLAY_VERSION: string = "1"; 6 | } -------------------------------------------------------------------------------- /packages/export_user_data/export_user_data_models/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: export_user_data_models 2 | publish_to: none 3 | 4 | 5 | environment: 6 | sdk: ">=2.12.0 <3.0.0" 7 | 8 | dependencies: 9 | flutter: 10 | sdk: flutter 11 | cloud_firestore: any 12 | filesize_ns: ^1.1.0 13 | 14 | dev_dependencies: 15 | 16 | -------------------------------------------------------------------------------- /packages/schulplaner_translations/lib/schulplaner_translations.dart: -------------------------------------------------------------------------------- 1 | library schulplaner_translations; 2 | 3 | export 'src/my_app_localization.dart'; 4 | export 'src/get_string.dart'; 5 | export 'src/models/translations_string.dart'; 6 | export 'src/widgets/t_text.dart'; 7 | export 'src/translations/base_translations.dart'; 8 | -------------------------------------------------------------------------------- /utils/holiday_database/de-bb/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-bb", 3 | "name": "Brandenburg", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-ni/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-ni", 3 | "name": "Niedersachsen", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-st/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-st", 3 | "name": "Sachsen-Anhalt", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/export_user_data/export_user_data_client/lib/export_user_data_client.dart: -------------------------------------------------------------------------------- 1 | library export_user_data_client; 2 | 3 | export 'src/bloc/export_user_data_client_bloc.dart'; 4 | export 'src/pages/export_user_data_page.dart'; 5 | export 'src/services/download_service.dart'; 6 | export 'src/services/export_user_data_service.dart'; 7 | -------------------------------------------------------------------------------- /utils/holiday_database/de-bw/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-bw", 3 | "name": "Baden-Württemberg", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-nw/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-nw", 3 | "name": "Nordrhein-Westfalen", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-rp/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-rp", 3 | "name": "Rheinland-Pfalz", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-sh/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-sh", 3 | "name": "Schleswig-Holstein", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/lib/OldGrade/models/average_display.dart: -------------------------------------------------------------------------------- 1 | 2 | typedef String AverageInput(double value); 3 | 4 | class AverageDisplay { 5 | AverageInput input; 6 | String name; 7 | AverageDisplay(this.input, {this.name = 'Standard'}); 8 | 9 | String getAverageString(double value) { 10 | return input(value); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/authentification/lib/src/models/user_id.dart: -------------------------------------------------------------------------------- 1 | class UserId { 2 | const UserId(this.uid); 3 | final String uid; 4 | 5 | @override 6 | bool operator ==(other) { 7 | return other is UserId && other.uid == uid; 8 | } 9 | 10 | @override 11 | int get hashCode { 12 | return uid.hashCode; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /schulplaner_website/lib/src/logic/download_file/download_file_js.dart: -------------------------------------------------------------------------------- 1 | // ignore: avoid_web_libraries_in_flutter 2 | import 'dart:html' as html; 3 | 4 | void downloadFileImplementation(String url, String name) { 5 | final anchorElement = html.AnchorElement(href: url); 6 | anchorElement.download = name; 7 | anchorElement.click(); 8 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-mv/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "de-mv", 3 | "name": "Mecklenburg-Vorpommern", 4 | "country": "germany", 5 | "lastRefreshed": "2022-11-17", 6 | "years": [ 7 | "2019", 8 | "2020", 9 | "2021", 10 | "2022", 11 | "2023" 12 | ], 13 | "isOfficial": true, 14 | "published": true 15 | } -------------------------------------------------------------------------------- /app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/schulplaner_addons/lib/schulplaner_utils.dart: -------------------------------------------------------------------------------- 1 | library schulplaner_utils; 2 | 3 | export 'utils/color_utils.dart'; 4 | export 'utils/date_utils.dart'; 5 | export 'common/show_toast.dart'; 6 | 7 | export 'tools/image/file_helper.dart'; 8 | export 'tools/image/image_helper.dart'; 9 | export 'tools/image/cloud_photo.dart'; 10 | -------------------------------------------------------------------------------- /schulplaner_website/lib/src/logic/download_file/download_file.dart: -------------------------------------------------------------------------------- 1 | import 'download_file_stub.dart' 2 | if (dart.library.js) 'download_file_js.dart' 3 | if (dart.library.io) 'download_file_io.dart' as implementation; 4 | 5 | void downloadFile(String url, String name) { 6 | implementation.downloadFileImplementation(url, name); 7 | } 8 | -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/android/app/src/main/kotlin/com/xla/school/NotificationID.java: -------------------------------------------------------------------------------- 1 | package com.xla.school; 2 | 3 | import java.util.concurrent.atomic.AtomicInteger; 4 | 5 | public class NotificationID { 6 | private final static AtomicInteger c = new AtomicInteger(0); 7 | public static int getID() { 8 | return c.incrementAndGet(); 9 | } 10 | } -------------------------------------------------------------------------------- /app/lib/holiday_database/models/country.dart: -------------------------------------------------------------------------------- 1 | import 'package:schulplaner8/utils/models/coder.dart'; 2 | 3 | enum Country { germany, austria, switzerland, netherlands } 4 | 5 | Country countryFromJson(String json) => 6 | enumFromJson(Country.values, json); 7 | 8 | String? countryToJson(Country country) => enumToJson(country); 9 | -------------------------------------------------------------------------------- /app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/design_utils/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: design_utils 2 | description: A new Flutter package project. 3 | version: 0.0.1 4 | 5 | environment: 6 | sdk: ">=3.2.0" 7 | flutter: ">=3.16.0" 8 | 9 | dependencies: 10 | flutter: 11 | sdk: flutter 12 | 13 | dev_dependencies: 14 | flutter_test: 15 | sdk: flutter 16 | 17 | flutter: 18 | -------------------------------------------------------------------------------- /packages/export_user_data/export_user_data_client/lib/src/services/export_user_data_service.dart: -------------------------------------------------------------------------------- 1 | import 'package:export_user_data_models/export_user_data_models.dart'; 2 | 3 | abstract class ExportUserDataService { 4 | Stream> streamExportUserDataRequests(); 5 | 6 | Future sendExportUserDataRequest(); 7 | } 8 | -------------------------------------------------------------------------------- /packages/app_functions/lib/src/app_functions_region.dart: -------------------------------------------------------------------------------- 1 | class AppFunctionsRegion { 2 | final String regionName; 3 | const AppFunctionsRegion(this.regionName); 4 | } 5 | 6 | class AppFunctionsRegions { 7 | static const europeWest3 = AppFunctionsRegion('europe-west3'); 8 | static const usCentral1 = AppFunctionsRegion('us-central1'); 9 | } 10 | -------------------------------------------------------------------------------- /packages/schulplaner_addons/lib/common/show_toast.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | import 'package:overlay_support/overlay_support.dart'; 3 | 4 | Future showToastMessage({required String msg}) async { 5 | showSimpleNotification( 6 | Text( 7 | msg, 8 | textAlign: TextAlign.center, 9 | ), 10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /app/lib/Data/planner_database/indirect_connection.dart: -------------------------------------------------------------------------------- 1 | class IndirectConnection { 2 | final String classid, courseid; 3 | final bool enabled; 4 | 5 | const IndirectConnection({ 6 | required this.classid, 7 | required this.courseid, 8 | this.enabled = true, 9 | }); 10 | 11 | String getKey() => classid + '--' + courseid; 12 | } 13 | -------------------------------------------------------------------------------- /packages/bloc/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: bloc 2 | description: A new Flutter package project. 3 | version: 0.0.1 4 | publish_to: none 5 | 6 | environment: 7 | sdk: ">=3.2.0" 8 | flutter: ">=3.16.0" 9 | 10 | dependencies: 11 | flutter: 12 | sdk: flutter 13 | 14 | dev_dependencies: 15 | flutter_test: 16 | sdk: flutter 17 | 18 | flutter: 19 | 20 | -------------------------------------------------------------------------------- /packages/universal_commons/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: universal_commons 2 | description: A new Flutter package project. 3 | version: 0.0.1 4 | 5 | environment: 6 | sdk: ">=3.2.0" 7 | flutter: ">=3.16.0" 8 | 9 | dependencies: 10 | flutter: 11 | sdk: flutter 12 | 13 | dev_dependencies: 14 | flutter_test: 15 | sdk: flutter 16 | 17 | flutter: 18 | -------------------------------------------------------------------------------- /app/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "mainprojects-32581" 4 | }, 5 | "targets": { 6 | "mainprojects-32581": { 7 | "hosting": { 8 | "alpha-web-app": [ 9 | "schulplaner-alpha" 10 | ], 11 | "beta-web-app": [ 12 | "schulplaner-beta" 13 | ] 14 | } 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /cloud_functions/functions/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "noImplicitReturns": true, 5 | "noUnusedLocals": true, 6 | "outDir": "lib", 7 | "sourceMap": true, 8 | "strict": false, 9 | "target": "es2017" 10 | }, 11 | "compileOnSave": true, 12 | "include": [ 13 | "src" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages/bloc/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: bbfbf1770cca2da7c82e887e4e4af910034800b6 8 | channel: beta 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/date/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 81a45ec2e5f80fa71d5135f1702ce540558b416d 8 | channel: beta 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /schulplaner_website/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: a27c242b0eea731317cfec5bbdd9d35452ab3ecb 8 | channel: dev 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /packages/date/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: date 2 | description: A new Flutter package project. 3 | version: 0.0.1 4 | publish_to: none 5 | 6 | environment: 7 | sdk: ">=3.2.0" 8 | flutter: ">=3.16.0" 9 | 10 | dependencies: 11 | intl: any 12 | flutter: 13 | sdk: flutter 14 | 15 | dev_dependencies: 16 | flutter_test: 17 | sdk: flutter 18 | 19 | 20 | flutter: 21 | -------------------------------------------------------------------------------- /packages/design_utils/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 63062a64432cce03315d6b5196fda7912866eb37 8 | channel: dev 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /app/lib/Helper/NativeConnection.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/services.dart'; 2 | 3 | const platform = MethodChannel('com.xla.school.widget'); 4 | 5 | Future getStartArgument() async { 6 | try { 7 | String result = await platform.invokeMethod('getstartargument'); 8 | return result; 9 | } catch (e) { 10 | print(e); 11 | return null; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /cloud_functions/functions/src/common/random_string.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | export function generateRandomString(): string { 4 | let text = ""; 5 | const possible = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz0123456789"; 6 | 7 | for (let i = 0; i < 6; i++) 8 | text += possible.charAt(Math.floor(Math.random() * possible.length)); 9 | 10 | return text; 11 | } -------------------------------------------------------------------------------- /packages/app_functions/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 81a45ec2e5f80fa71d5135f1702ce540558b416d 8 | channel: beta 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/authentification/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: bbfbf1770cca2da7c82e887e4e4af910034800b6 8 | channel: beta 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/authentification/lib/src/logic/email_sign_in_logic.dart: -------------------------------------------------------------------------------- 1 | import 'package:firebase_auth/firebase_auth.dart'; 2 | 3 | class EmailCredential { 4 | AuthCredential getAuthCredentials( 5 | {required String email, required String password}) { 6 | return EmailAuthProvider.credential( 7 | email: email, 8 | password: password, 9 | ); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/schulplaner_addons/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 20e59316b8b8474554b38493b8ca888794b0234a 8 | channel: beta 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/schulplaner_functions/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 81a45ec2e5f80fa71d5135f1702ce540558b416d 8 | channel: beta 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/schulplaner_models/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 81a45ec2e5f80fa71d5135f1702ce540558b416d 8 | channel: beta 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 916c3ac648aa0498a70f32b5fc4f6c51447628e3 8 | channel: beta 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/universal_commons/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: bbfbf1770cca2da7c82e887e4e4af910034800b6 8 | channel: beta 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /cloud_functions/functions/src/dynamic_links/src/dynamic_links_length_type.ts: -------------------------------------------------------------------------------- 1 | /// Is used to short the dynamic links. 2 | /// There are two types: SHORT & UNGUESSABLE 3 | /// Short has a length of 4 character and 4 | /// Unguessable has a length of 17 character. 5 | export class DynamicLinksLengthType { 6 | static SHORT: string = 'SHORT'; 7 | static UNGUESSABLE: string = 'UNGUESSABLE'; 8 | } -------------------------------------------------------------------------------- /cloud_functions/functions/src/server_requests/remove_notification_reminder.ts: -------------------------------------------------------------------------------- 1 | import { SchulplanerReferences } from "../schulplaner_globals"; 2 | 3 | 4 | export async function removeNotificationReminder(memberId: string) { 5 | await SchulplanerReferences.notificationsCollection.doc(memberId).set({ 6 | 'notifydaily': false, 7 | 'devices': {}, 8 | }, { merge: true, }); 9 | } -------------------------------------------------------------------------------- /packages/schulplaner_navigation/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 81a45ec2e5f80fa71d5135f1702ce540558b416d 8 | channel: beta 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/schulplaner_translations/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: bbfbf1770cca2da7c82e887e4e4af910034800b6 8 | channel: beta 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/lib/src/theme/bottom_sheet_theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | const bottomSheetTheme = BottomSheetThemeData( 4 | clipBehavior: Clip.antiAlias, 5 | shape: RoundedRectangleBorder( 6 | borderRadius: BorderRadius.only( 7 | topLeft: Radius.circular(16), 8 | topRight: Radius.circular(16), 9 | ), 10 | ), 11 | ); 12 | -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /packages/export_user_data/export_user_data_models/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 8264cb3e8a797eef39cbcd32bb56fd07790efb7f 8 | channel: dev 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/authentification/lib/authentification_widgets.dart: -------------------------------------------------------------------------------- 1 | library authentification_widgets; 2 | 3 | export 'src/widgets/authentification_login_tile.dart'; 4 | export 'src/widgets/sign_in_skip.dart'; 5 | export 'src/widgets/sign_in_apple.dart'; 6 | export 'src/widgets/sign_in_google.dart'; 7 | 8 | export 'src/widgets/email_auth_provider_tile.dart'; 9 | export 'src/widgets/google_auth_provider_tile.dart'; 10 | -------------------------------------------------------------------------------- /packages/export_user_data/export_user_data_client_implementation/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 8264cb3e8a797eef39cbcd32bb56fd07790efb7f 8 | channel: dev 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/schulplaner_models/lib/src/models/member_id.dart: -------------------------------------------------------------------------------- 1 | import 'package:authentification/authentification_models.dart'; 2 | 3 | class MemberId { 4 | final UserId userId; 5 | final String plannerId; 6 | 7 | const MemberId({ 8 | required this.userId, 9 | required this.plannerId, 10 | }); 11 | 12 | String toDataString() { 13 | return '${userId.uid.toString()}::$plannerId'; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /utils/holiday_database/de-he/2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "2019-herbst": { 3 | "id": "2019-herbst", 4 | "name": "Herbstferien", 5 | "start": "2019-10-01", 6 | "end": "2019-10-11", 7 | "type": "holiday" 8 | }, 9 | "2019-weihnachten": { 10 | "id": "2019-weihnachten", 11 | "name": "Weihnachtsferien", 12 | "start": "2019-12-23", 13 | "end": "2020-01-10", 14 | "type": "holiday" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /utils/holiday_database/de-ni/2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "2019-herbst": { 3 | "id": "2019-herbst", 4 | "name": "Herbstferien", 5 | "start": "2019-10-04", 6 | "end": "2019-10-18", 7 | "type": "holiday" 8 | }, 9 | "2019-weihnachten": { 10 | "id": "2019-weihnachten", 11 | "name": "Weihnachtsferien", 12 | "start": "2019-12-23", 13 | "end": "2020-01-06", 14 | "type": "holiday" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /utils/holiday_database/de-rp/2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "2019-herbst": { 3 | "id": "2019-herbst", 4 | "name": "Herbstferien", 5 | "start": "2019-09-30", 6 | "end": "2019-10-11", 7 | "type": "holiday" 8 | }, 9 | "2019-weihnachten": { 10 | "id": "2019-weihnachten", 11 | "name": "Weihnachtsferien", 12 | "start": "2019-12-23", 13 | "end": "2020-01-06", 14 | "type": "holiday" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /utils/holiday_database/de-sh/2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "2019-herbst": { 3 | "id": "2019-herbst", 4 | "name": "Herbstferien", 5 | "start": "2019-10-04", 6 | "end": "2019-10-18", 7 | "type": "holiday" 8 | }, 9 | "2019-weihnachten": { 10 | "id": "2019-weihnachten", 11 | "name": "Weihnachtsferien", 12 | "start": "2019-12-23", 13 | "end": "2020-01-06", 14 | "type": "holiday" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /utils/holiday_database/de-sl/2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "2019-herbst": { 3 | "id": "2019-herbst", 4 | "name": "Herbstferien", 5 | "start": "2019-10-07", 6 | "end": "2019-10-18", 7 | "type": "holiday" 8 | }, 9 | "2019-weihnachten": { 10 | "id": "2019-weihnachten", 11 | "name": "Weihnachtsferien", 12 | "start": "2019-12-23", 13 | "end": "2020-01-03", 14 | "type": "holiday" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /utils/holiday_database/de-sn/2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "2019-herbst": { 3 | "id": "2019-herbst", 4 | "name": "Herbstferien", 5 | "start": "2019-10-14", 6 | "end": "2019-10-25", 7 | "type": "holiday" 8 | }, 9 | "2019-weihnachten": { 10 | "id": "2019-weihnachten", 11 | "name": "Weihnachtsferien", 12 | "start": "2019-12-23", 13 | "end": "2020-01-03", 14 | "type": "holiday" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /utils/holiday_database/de-th/2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "2019-herbst": { 3 | "id": "2019-herbst", 4 | "name": "Herbstferien", 5 | "start": "2019-10-07", 6 | "end": "2019-10-18", 7 | "type": "holiday" 8 | }, 9 | "2019-weihnachten": { 10 | "id": "2019-weihnachten", 11 | "name": "Weihnachtsferien", 12 | "start": "2019-12-23", 13 | "end": "2020-01-03", 14 | "type": "holiday" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/android/app/src/main/kotlin/com/xla/school/models/settings.kt: -------------------------------------------------------------------------------- 1 | package com.xla.school.models 2 | 3 | 4 | data class Settings(val appdesign:Design, 5 | val multiple_weektypes:Boolean, 6 | val maxlesson:Int, 7 | val timetable_useshortname:Boolean, 8 | val schedule_showlessontime:Boolean, 9 | val zero_lesson: Boolean 10 | ) 11 | -------------------------------------------------------------------------------- /app/lib/holiday_database/models/holiday_type.dart: -------------------------------------------------------------------------------- 1 | import 'package:schulplaner8/utils/models/coder.dart'; 2 | 3 | enum HolidayType { 4 | holiday, 5 | } 6 | 7 | HolidayType holidayTypeFromJson(String? json) => 8 | enumFromJson(HolidayType.values, json, 9 | orElse: HolidayType.holiday); 10 | 11 | String? holidayTypeToJson(HolidayType holidayType) => 12 | enumToJson(holidayType); 13 | -------------------------------------------------------------------------------- /app/lib/groups/src/models/group_version.dart: -------------------------------------------------------------------------------- 1 | import 'package:schulplaner_addons/common/model.dart'; 2 | 3 | enum GroupVersion { outdated, v3 } 4 | 5 | GroupVersion groupVersionFromData(String? data) => 6 | enumFromString(GroupVersion.values, data, orElse: GroupVersion.outdated) ?? 7 | GroupVersion.outdated; 8 | 9 | String groupVersionToData(GroupVersion groupVersion) => 10 | enumToString(groupVersion) ?? 'outdated'; 11 | -------------------------------------------------------------------------------- /packages/app_functions/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: app_functions 2 | description: A new Flutter package project. 3 | version: 0.0.1 4 | publish_to: none 5 | 6 | environment: 7 | sdk: ">=3.2.0" 8 | flutter: ">=3.16.0" 9 | 10 | dependencies: 11 | bloc: 12 | path: ../bloc 13 | cloud_functions: 4.5.4 14 | flutter: 15 | sdk: flutter 16 | 17 | dev_dependencies: 18 | flutter_test: 19 | sdk: flutter 20 | 21 | flutter: 22 | -------------------------------------------------------------------------------- /packages/schulplaner_navigation/lib/src/models/navigation_item.dart: -------------------------------------------------------------------------------- 1 | enum NavigationItem { 2 | home, 3 | timetable, 4 | courseList, 5 | tasksList, 6 | library, 7 | 8 | teachers, 9 | places, 10 | vacations, 11 | absentTimes, 12 | print, 13 | schoolreports, 14 | files, 15 | notes, 16 | lessonInfos, 17 | allEvents, 18 | eventsExamsList, 19 | grades, 20 | calendar, 21 | timeline, 22 | upcoming, 23 | } 24 | -------------------------------------------------------------------------------- /cloud_functions/functions/src/homework_reminder/is_task_finished.ts: -------------------------------------------------------------------------------- 1 | 2 | export function isTaskFinished(memberid: string, task: any): boolean { 3 | if (task.finished != null) { 4 | if (task.finished[memberid] != null) { 5 | if (task.finished[memberid].finished === true) { 6 | return true; 7 | } else return false; 8 | } 9 | else return false; 10 | } else return false; 11 | } 12 | -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/lib/schulplaner_forms.dart: -------------------------------------------------------------------------------- 1 | library schulplaner_forms; 2 | 3 | export 'src/forms/helper_forms.dart'; 4 | export 'src/forms/form_textfield.dart'; 5 | export 'src/forms/form_button.dart'; 6 | export 'src/forms/form_container.dart'; 7 | export 'src/forms/form_divider.dart'; 8 | export 'src/forms/form_easy_field.dart'; 9 | export 'src/forms/form_header.dart'; 10 | export 'src/forms/form_space.dart'; 11 | export 'src/forms/stateful_text_field.dart'; 12 | -------------------------------------------------------------------------------- /app/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/schulplaner_translations/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: schulplaner_translations 2 | description: Übersetzungen und Übersetzungs Framework für die Schulplaner App 3 | version: 0.0.1 4 | publish_to: none 5 | 6 | environment: 7 | sdk: ">=3.2.0" 8 | flutter: ">=3.16.0" 9 | 10 | dependencies: 11 | intl: any 12 | intl_translation: any 13 | flutter: 14 | sdk: flutter 15 | 16 | 17 | dev_dependencies: 18 | flutter_test: 19 | sdk: flutter 20 | 21 | 22 | 23 | flutter: -------------------------------------------------------------------------------- /packages/schulplaner_widgets/lib/schulplaner_dialogs.dart: -------------------------------------------------------------------------------- 1 | library schulplaner_dialogs; 2 | 3 | export 'src/dialogs/info_dialog.dart'; 4 | export 'src/dialogs/dialog.dart'; 5 | export 'src/dialogs/sheet.dart'; 6 | export 'src/dialogs/state_sheet.dart'; 7 | export 'src/dialogs/appfunctions_state_sheet.dart'; 8 | export 'src/dialogs/sheet_content/sheet_content.dart'; 9 | export 'src/dialogs/sheet_content/simple_item_sheet_content.dart'; 10 | export 'src/dialogs/confirm_dialog.dart'; 11 | -------------------------------------------------------------------------------- /app/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.network.client 8 | 9 | com.apple.security.network.server 10 | 11 | com.apple.security.print 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /packages/schulplaner_translations/lib/src/widgets/t_text.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:schulplaner_translations/src/models/translations_string.dart'; 3 | 4 | /// Ein Text Widget, welches einen TranslationText verwendet. 5 | class TText extends StatelessWidget { 6 | final TranslatableString text; 7 | 8 | const TText(this.text); 9 | @override 10 | Widget build(BuildContext context) { 11 | return Text(text.getText(context)); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController.init() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/ios/Runner/de.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | "CFBundleDisplayName" = "Schulplaner"; 2 | "CFBundleName" = "Schulplaner"; 3 | "NSCameraUsageDescription" = "Schulplaner benötigt diese Berechtigung um Bilder oder Dokumente and Aufgaben anzuhängen. Die Berechtigung wird nicht für andere Funktionen der App benötigt."; 4 | "NSPhotoLibraryUsageDescription" = "Schulplaner benötigt diese Berechtigung um Bilder oder Dokumente and Aufgaben anzuhängen. Die Berechtigung wird nicht für andere Funktionen der App benötigt."; 5 | -------------------------------------------------------------------------------- /cloud_functions/functions/src/dynamic_links/src/dynamic_links_type.ts: -------------------------------------------------------------------------------- 1 | /// Every dynamic link has an inofficial type. What does this mean? 2 | /// When we get an dynamic link, we can distinguish which type of 3 | /// dynamic link it is. If know this, we can call separate method. When 4 | /// the link has the type [JOIN_BE_KEY], we know, that this is an joinLink. 5 | export class DynamicLinksType { 6 | static JOIN_BY_KEY: string = 'joinbykey'; 7 | static REFERRAL_PERSONAL: string = 'referral_personal'; 8 | } -------------------------------------------------------------------------------- /packages/schulplaner_addons/lib/utils/date_utils.dart: -------------------------------------------------------------------------------- 1 | import 'package:intl/intl.dart'; 2 | 3 | class DateUtils { 4 | static String parseDateString(DateTime dateTime) { 5 | return dateTime.toIso8601String().substring(0, 10); 6 | } 7 | 8 | static DateTime parseDateTime(String dateString) { 9 | return DateTime.parse(dateString); 10 | } 11 | 12 | static String getDateText(String dateString) { 13 | return DateFormat.yMMMd('de').format(parseDateTime(dateString)); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/schulplaner_functions/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: schulplaner_functions 2 | version: 0.0.1 3 | publish_to: none 4 | 5 | environment: 6 | sdk: ">=2.12.0 <3.0.0" 7 | flutter: ">2.0.0" 8 | 9 | dependencies: 10 | app_functions: 11 | path: ../app_functions 12 | schulplaner_models: 13 | path: ../schulplaner_models 14 | bloc: 15 | path: ../bloc 16 | flutter: 17 | sdk: flutter 18 | 19 | dev_dependencies: 20 | flutter_test: 21 | sdk: flutter 22 | 23 | 24 | flutter: 25 | -------------------------------------------------------------------------------- /packages/schulplaner_models/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: schulplaner_models 2 | description: A new Flutter package project. 3 | version: 0.0.1 4 | publish_to: none 5 | 6 | environment: 7 | sdk: ">=2.12.0 <3.0.0" 8 | flutter: ">2.0.0" 9 | 10 | dependencies: 11 | authentification: 12 | path: ../authentification 13 | schulplaner_addons: 14 | path: ../schulplaner_addons 15 | flutter: 16 | sdk: flutter 17 | 18 | dev_dependencies: 19 | flutter_test: 20 | sdk: flutter 21 | 22 | 23 | flutter: -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController.init() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /schulplaner_website/macos/Flutter/GeneratedPluginRegistrant.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | import FlutterMacOS 6 | import Foundation 7 | 8 | import shared_preferences_foundation 9 | import url_launcher_macos 10 | 11 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { 12 | SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) 13 | UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) 14 | } 15 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable/baseline_school_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /packages/universal_commons/lib/src/plaform_check/implementation/io.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io' as io; 2 | import '../platform.dart'; 3 | 4 | CurrentPlatform getPlatform() { 5 | if (io.Platform.isAndroid) return CurrentPlatform.android; 6 | if (io.Platform.isIOS) return CurrentPlatform.iOS; 7 | if (io.Platform.isMacOS) return CurrentPlatform.macOS; 8 | if (io.Platform.isWindows) return CurrentPlatform.windows; 9 | if (io.Platform.isLinux) return CurrentPlatform.linux; 10 | return CurrentPlatform.other; 11 | } 12 | -------------------------------------------------------------------------------- /app/android/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | android 4 | Project android created by Buildship. 5 | 6 | 7 | 8 | 9 | org.eclipse.buildship.core.gradleprojectbuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.buildship.core.gradleprojectnature 16 | 17 | 18 | -------------------------------------------------------------------------------- /packages/export_user_data/export_user_data_client_implementation/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: export_user_data_client_implementation 2 | publish_to: 'none' 3 | 4 | environment: 5 | sdk: ">=2.12.0 <3.0.0" 6 | 7 | dependencies: 8 | export_user_data_models: 9 | path: ../export_user_data_models 10 | export_user_data_client: 11 | path: ../export_user_data_client 12 | cloud_firestore: 4.13.1 13 | 14 | flutter: 15 | sdk: flutter 16 | 17 | dev_dependencies: 18 | flutter_test: 19 | sdk: flutter 20 | 21 | flutter: -------------------------------------------------------------------------------- /app/lib/Views/SchoolPlanner/print/printer.dart: -------------------------------------------------------------------------------- 1 | import 'package:pdf/pdf.dart'; 2 | import 'package:pdf/widgets.dart'; 3 | import 'package:printing/printing.dart'; 4 | 5 | class Printer { 6 | Future sharePDF(Document pdf) async { 7 | final bytes = await pdf.save(); 8 | await Printing.sharePdf(bytes: bytes, filename: 'timetable.pdf'); 9 | } 10 | 11 | Future printPDF(Document pdf) async { 12 | await Printing.layoutPdf( 13 | onLayout: (PdfPageFormat format) async => pdf.save()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable/baseline_close_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /cloud_functions/functions/src/user/gateway/user_gateway.ts: -------------------------------------------------------------------------------- 1 | import { SchulplanerReferences } from "../../schulplaner_globals"; 2 | import { UserData } from "../models/user"; 3 | import { UserId } from "../models/user_id"; 4 | 5 | 6 | export class UserGateway { 7 | 8 | async getUserInfo(userId: UserId): Promise { 9 | const document = SchulplanerReferences.getUsersInfoDocument(userId); 10 | const documentData = await document.get(); 11 | return UserData.fromData(userId, documentData.data()); 12 | } 13 | } -------------------------------------------------------------------------------- /packages/export_user_data/export_user_data_client/lib/src/services/download_service.dart: -------------------------------------------------------------------------------- 1 | import 'package:universal_commons/platform_check.dart'; 2 | import 'package:url_launcher/url_launcher.dart'; 3 | 4 | abstract class DownloadService { 5 | Future downloadFromUrl(String url); 6 | } 7 | 8 | class MockDownloadService implements DownloadService { 9 | @override 10 | Future downloadFromUrl(String url) { 11 | if (PlatformCheck.isWeb) { 12 | return launch(url); 13 | } 14 | return launch(url); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:pedantic/analysis_options.yaml 2 | 3 | 4 | analyzer: 5 | errors: 6 | invalid_use_of_protected_member: ignore 7 | invalid_use_of_visible_for_testing_member: ignore 8 | import_of_legacy_library_into_null_safe: ignore 9 | 10 | linter: 11 | rules: 12 | omit_local_variable_types: false 13 | prefer_conditional_assignment: false 14 | prefer_generic_function_type_aliases: false 15 | prefer_if_null_operators: false 16 | 17 | # exclude: 18 | # - path/to/excluded/files/** -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable/baseline_hourglass_full_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/lib/Data/planner_database/build_single_map.dart: -------------------------------------------------------------------------------- 1 | Map buildSingleMap(Map?> initalData) { 2 | final newdata = {}; 3 | for (final entry in initalData.values) { 4 | if (entry != null) newdata.addAll(entry); 5 | } 6 | return newdata; 7 | } 8 | 9 | Map buildSingleMapFromList(List?> initalData) { 10 | Map newdata = {}; 11 | for (final entry in initalData) { 12 | if (entry != null) newdata.addAll(entry); 13 | } 14 | return newdata; 15 | } 16 | -------------------------------------------------------------------------------- /packages/export_user_data/export_user_data_client/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: export_user_data_client 2 | publish_to: none 3 | 4 | environment: 5 | sdk: ">=2.12.0 <3.0.0" 6 | 7 | dependencies: 8 | bloc: 9 | path: ../../bloc 10 | export_user_data_models: 11 | path: ../export_user_data_models 12 | universal_commons: 13 | path: ../../universal_commons 14 | url_launcher: any 15 | rxdart: ^0.28.0 16 | intl: any 17 | flutter: 18 | sdk: flutter 19 | 20 | dev_dependencies: 21 | flutter_test: 22 | sdk: flutter 23 | 24 | flutter: -------------------------------------------------------------------------------- /packages/schulplaner_addons/README.md: -------------------------------------------------------------------------------- 1 | # flutter_tools 2 | 3 | A new Flutter package project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Dart 8 | [package](https://flutter.dev/developing-packages/), 9 | a library module containing code that can be shared easily across 10 | multiple Flutter or Dart projects. 11 | 12 | For help getting started with Flutter, view our 13 | [online documentation](https://flutter.dev/docs), which offers tutorials, 14 | samples, guidance on mobile development, and a full API reference. 15 | -------------------------------------------------------------------------------- /app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.client 10 | 11 | com.apple.security.network.server 12 | 13 | com.apple.security.print 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /packages/authentification/lib/src/blocs/email_sign_in_bloc.dart: -------------------------------------------------------------------------------- 1 | import 'package:bloc/bloc_base.dart'; 2 | import 'package:rxdart/subjects.dart'; 3 | 4 | class EmailSignInBloc extends BlocBase { 5 | final _emailSubject = BehaviorSubject.seeded(''); 6 | final _passwordSubject = BehaviorSubject.seeded(''); 7 | 8 | Stream get email => _emailSubject; 9 | Stream get password => _passwordSubject; 10 | 11 | @override 12 | void dispose() { 13 | _emailSubject.close(); 14 | _passwordSubject.close(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/README.md: -------------------------------------------------------------------------------- 1 | # schulplaner_widgets 2 | 3 | A new Flutter package project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Dart 8 | [package](https://flutter.dev/developing-packages/), 9 | a library module containing code that can be shared easily across 10 | multiple Flutter or Dart projects. 11 | 12 | For help getting started with Flutter, view our 13 | [online documentation](https://flutter.dev/docs), which offers tutorials, 14 | samples, guidance on mobile development, and a full API reference. 15 | -------------------------------------------------------------------------------- /packages/design_utils/lib/src/dimensions.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | final kDesktopModusBreakpoint = 700; 4 | 5 | /// Gives Informations like [isDesktopModus] according to the current Window Size. 6 | class Dimensions { 7 | final MediaQueryData _mediaQueryData; 8 | Dimensions._(this._mediaQueryData); 9 | 10 | factory Dimensions.of(BuildContext context) { 11 | return Dimensions._(MediaQuery.of(context)); 12 | } 13 | 14 | bool get isDesktopModus => 15 | _mediaQueryData.size.width > kDesktopModusBreakpoint; 16 | } 17 | -------------------------------------------------------------------------------- /schulplaner_website/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | 3 | 4 | analyzer: 5 | errors: 6 | invalid_use_of_protected_member: ignore 7 | invalid_use_of_visible_for_testing_member: ignore 8 | import_of_legacy_library_into_null_safe: ignore 9 | 10 | linter: 11 | rules: 12 | omit_local_variable_types: false 13 | prefer_conditional_assignment: false 14 | prefer_generic_function_type_aliases: false 15 | prefer_if_null_operators: false 16 | 17 | # exclude: 18 | # - path/to/excluded/files/** -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable/baseline_person_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /schulplaner_website/lib/src/blocs/website_bloc.dart: -------------------------------------------------------------------------------- 1 | import 'package:bloc/bloc_base.dart'; 2 | import 'package:bloc/bloc_provider.dart'; 3 | import 'package:flutter/widgets.dart'; 4 | import 'package:schulplaner_website/src/models/navigation_item.dart'; 5 | 6 | class WebsiteBloc extends BlocBase { 7 | final NavigationItem navigationItem; 8 | 9 | const WebsiteBloc(this.navigationItem); 10 | 11 | @override 12 | void dispose() {} 13 | 14 | static WebsiteBloc of(BuildContext context) { 15 | return BlocProvider.of(context); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/schulplaner_addons/lib/tools/image/file_helper.dart: -------------------------------------------------------------------------------- 1 | import 'package:file_picker/file_picker.dart'; 2 | import 'package:flutter_image_compress/flutter_image_compress.dart'; 3 | 4 | class FileHelper { 5 | Future pickFile() async { 6 | final filePickerResult = await FilePicker.platform.pickFiles( 7 | allowMultiple: false, 8 | withData: true, 9 | ); 10 | if (filePickerResult?.files.isNotEmpty ?? false) { 11 | return XFile(filePickerResult!.files.first.path!); 12 | } else { 13 | return null; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable/baseline_done_outline_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/xml/app_widget_tasks_info.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/schulplaner_navigation/lib/src/widgets/limited_container.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class LimitedContainer extends StatelessWidget { 4 | final Widget child; 5 | final double maxWidth; 6 | 7 | const LimitedContainer({Key? key, required this.child, this.maxWidth = 700}) 8 | : super(key: key); 9 | @override 10 | Widget build(BuildContext context) { 11 | return Center( 12 | child: ConstrainedBox( 13 | constraints: BoxConstraints(maxWidth: maxWidth), 14 | child: child, 15 | ), 16 | ); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/xml/app_widget_timetable_info.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/web/firebase_init_debug.js: -------------------------------------------------------------------------------- 1 | const firebaseConfig = { 2 | apiKey: "AIzaSyDlPwCAgFIRzzn0UV7Kt8PiCXHxbi-ZonQ", 3 | authDomain: "schulplaner-debug.firebaseapp.com", 4 | databaseURL: "https://schulplaner-debug.firebaseio.com", 5 | projectId: "schulplaner-debug", 6 | storageBucket: "schulplaner-debug.appspot.com", 7 | messagingSenderId: "824135008215", 8 | appId: "1:824135008215:web:bdcb3fb1b6fbb5cff55592", 9 | measurementId: "G-9TPV5KDXPC" 10 | }; 11 | // Initialize Firebase 12 | firebase.initializeApp(firebaseConfig); 13 | firebase.analytics(); 14 | 15 | 16 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/lib/src/theme/color_design.dart: -------------------------------------------------------------------------------- 1 | import 'package:color/color.dart' as colorlib; 2 | import 'package:flutter/material.dart'; 3 | 4 | String getHex(Color c) { 5 | colorlib.RgbColor rgbcolor = colorlib.RgbColor(c.red, c.green, c.blue); 6 | return rgbcolor.toHexColor().toString(); 7 | } 8 | 9 | Color fromHex(String? hex) { 10 | if (hex == null) return Colors.blue; 11 | colorlib.RgbColor primaryRgb = colorlib.HexColor(hex).toRgbColor(); 12 | return Color.fromARGB( 13 | 255, primaryRgb.r.toInt(), primaryRgb.g.toInt(), primaryRgb.b.toInt()); 14 | } 15 | -------------------------------------------------------------------------------- /schulplaner_website/lib/src/parts/layout_title.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class LayoutTitle extends StatelessWidget { 4 | final String text; 5 | 6 | const LayoutTitle({Key? key, required this.text}) : super(key: key); 7 | @override 8 | Widget build(BuildContext context) { 9 | return Padding( 10 | padding: const EdgeInsets.all(8.0), 11 | child: Text( 12 | text, 13 | style: const TextStyle( 14 | fontSize: 22, 15 | fontWeight: FontWeight.w700, 16 | ), 17 | ), 18 | ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/lib/ads/get_ad_id.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_dotenv/flutter_dotenv.dart'; 2 | import 'package:universal_commons/platform_check.dart'; 3 | 4 | class GetAdId { 5 | static String get donationRewardAd { 6 | if (PlatformCheck.isAndroid) { 7 | return dotenv.env['AD_ID_ANDROID_DONATION_REWARD'] ?? ''; 8 | } else { 9 | return ''; 10 | } 11 | } 12 | 13 | static String get standardBannerAd { 14 | if (PlatformCheck.isAndroid) { 15 | return dotenv.env['AD_ID_ANDROID_STANDARD_BANNER'] ?? ''; 16 | } else { 17 | return ''; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /schulplaner_website/lib/src/widgets/web_transition.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/foundation.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | class NoTransitionsOnWeb extends PageTransitionsTheme { 5 | @override 6 | Widget buildTransitions( 7 | route, 8 | context, 9 | animation, 10 | secondaryAnimation, 11 | child, 12 | ) { 13 | if (kIsWeb) { 14 | return child; 15 | } 16 | return super.buildTransitions( 17 | route, 18 | context, 19 | animation, 20 | secondaryAnimation, 21 | child, 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /cloud_functions/functions/src/server_requests/add_server_request.ts: -------------------------------------------------------------------------------- 1 | import { SchulplanerReferences } from "../schulplaner_globals"; 2 | import { MapData } from "../utils/map_converter"; 3 | 4 | 5 | export class ServerRequestTypes { 6 | static REMOVE_NOTIFICATION_REMINDER = 'REMOVE_NOTIFICATION_REMINDER'; 7 | } 8 | 9 | export async function addServerRequest(type: string, data: MapData) { 10 | await SchulplanerReferences.serverRequests.doc().create({ 11 | 'type': type, 12 | 'data': data, 13 | }); 14 | console.log('created Server Request of type ' + type); 15 | } -------------------------------------------------------------------------------- /packages/schulplaner_addons/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:pedantic/analysis_options.yaml 2 | 3 | 4 | analyzer: 5 | errors: 6 | invalid_use_of_protected_member: ignore 7 | invalid_use_of_visible_for_testing_member: ignore 8 | import_of_legacy_library_into_null_safe: ignore 9 | 10 | 11 | 12 | linter: 13 | rules: 14 | omit_local_variable_types: false 15 | prefer_conditional_assignment: false 16 | prefer_generic_function_type_aliases: false 17 | prefer_if_null_operators: false 18 | 19 | # exclude: 20 | # - path/to/excluded/files/** -------------------------------------------------------------------------------- /schulplaner_website/lib/src/widgets/dark_mode_switch.dart: -------------------------------------------------------------------------------- 1 | import 'package:easy_dynamic_theme/easy_dynamic_theme.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | class DarkmodeSwitch extends StatelessWidget { 5 | final double? width; 6 | 7 | const DarkmodeSwitch({Key? key, this.width}) : super(key: key); 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | return SizedBox( 12 | width: width, 13 | child: ListTile( 14 | title: const Text('Dunkelmodus'), 15 | trailing: EasyDynamicThemeSwitch(), 16 | ), 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /schulplaner_website/lib/src/widgets/website_title.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:schulplaner_website/src/models/navigation_item.dart'; 3 | import 'package:schulplaner_website/src/routes.dart'; 4 | 5 | class WebsiteTitle extends StatelessWidget { 6 | const WebsiteTitle({Key? key}) : super(key: key); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return InkWell( 11 | child: const Text('Schulplaner'), 12 | onTap: () { 13 | openNavigationPage(context, NavigationItem.homepage); 14 | }, 15 | ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /cloud_functions/functions/src/export_user_data/models/request_meta_data.ts: -------------------------------------------------------------------------------- 1 | import { firestore } from "firebase-admin"; 2 | 3 | export class RequestMetaData { 4 | public downloadUrl: string; 5 | public totalBytes: number; 6 | public expiresOn: firestore.Timestamp; 7 | 8 | 9 | constructor(params: { 10 | downloadUrl: string, 11 | totalBytes: number, 12 | expiresOn: firestore.Timestamp 13 | }) { 14 | this.downloadUrl = params.downloadUrl; 15 | this.totalBytes = params.totalBytes; 16 | this.expiresOn = params.expiresOn; 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-st/2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "2019-herbst": { 3 | "id": "2019-herbst", 4 | "name": "Herbstferien", 5 | "start": "2019-10-04", 6 | "end": "2019-10-11", 7 | "type": "holiday" 8 | }, 9 | "2019-herbst2": { 10 | "id": "2019-herbst2", 11 | "name": "Herbstferien", 12 | "start": "2019-11-01", 13 | "end": "2019-11-01", 14 | "type": "holiday" 15 | }, 16 | "2019-weihnachten": { 17 | "id": "2019-weihnachten", 18 | "name": "Weihnachtsferien", 19 | "start": "2019-12-23", 20 | "end": "2020-01-03", 21 | "type": "holiday" 22 | } 23 | } -------------------------------------------------------------------------------- /packages/schulplaner_navigation/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:pedantic/analysis_options.yaml 2 | 3 | 4 | analyzer: 5 | errors: 6 | invalid_use_of_protected_member: ignore 7 | invalid_use_of_visible_for_testing_member: ignore 8 | import_of_legacy_library_into_null_safe: ignore 9 | 10 | 11 | 12 | 13 | linter: 14 | rules: 15 | omit_local_variable_types: false 16 | prefer_conditional_assignment: false 17 | prefer_generic_function_type_aliases: false 18 | prefer_if_null_operators: false 19 | 20 | # exclude: 21 | # - path/to/excluded/files/** -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable/baseline_place_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: schulplaner_widgets 2 | description: A new Flutter package project. 3 | version: 0.0.1 4 | publish_to: none 5 | 6 | environment: 7 | sdk: ">=3.2.0" 8 | flutter: ">=3.16.0" 9 | 10 | dependencies: 11 | color: 3.0.0 12 | schulplaner_translations: 13 | path: ../schulplaner_translations 14 | app_functions: 15 | path: ../app_functions 16 | universal_commons: 17 | path: ../universal_commons 18 | rxdart: ^0.28.0 19 | flutter: 20 | sdk: flutter 21 | 22 | dev_dependencies: 23 | flutter_test: 24 | sdk: flutter 25 | 26 | flutter: 27 | 28 | -------------------------------------------------------------------------------- /packages/schulplaner_navigation/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: schulplaner_navigation 2 | description: A new Flutter package project. 3 | version: 0.0.1 4 | publish_to: none 5 | 6 | environment: 7 | sdk: ">=3.2.0" 8 | flutter: ">=3.16.0" 9 | 10 | dependencies: 11 | bloc: 12 | path: ../bloc 13 | schulplaner_widgets: 14 | path: ../schulplaner_widgets 15 | schulplaner_translations: 16 | path: ../schulplaner_translations 17 | rxdart: ^0.28.0 18 | shared_preferences: 2.5.3 19 | flutter: 20 | sdk: flutter 21 | 22 | dev_dependencies: 23 | flutter_test: 24 | sdk: flutter 25 | 26 | 27 | flutter: 28 | -------------------------------------------------------------------------------- /utils/holiday_database/de-be/2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "2019-herbst": { 3 | "id": "2019-herbst", 4 | "name": "Herbstferien", 5 | "start": "2019-10-04", 6 | "end": "2019-10-18", 7 | "type": "holiday" 8 | }, 9 | "2019-herbst2": { 10 | "id": "2019-herbst2", 11 | "name": "Tag der Deutschen Einheit", 12 | "start": "2019-10-03", 13 | "end": "2019-10-03", 14 | "type": "holiday" 15 | }, 16 | "2019-weihnachten": { 17 | "id": "2019-weihnachten", 18 | "name": "Weihnachtsferien", 19 | "start": "2019-12-23", 20 | "end": "2020-01-03", 21 | "type": "holiday" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /cloud_functions/functions/src/homework_reminder/not_finished.ts: -------------------------------------------------------------------------------- 1 | 2 | export function notFinishedTasks(memberid: string, tasks: Array): Array { 3 | if (tasks == null) return []; 4 | const list = []; 5 | for (const entry of tasks) { 6 | if (entry.finished != null) { 7 | if (entry.finished[memberid] != null) { 8 | if (entry.finished[memberid].finished === true) { 9 | break; 10 | } else list.push(entry); 11 | } 12 | else list.push(entry); 13 | } else list.push(entry); 14 | } 15 | return list; 16 | } 17 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #FFFFFF 5 | #000000 6 | #26A69A 7 | #26A69A 8 | #26A69A 9 | #808080 10 | #000000 11 | #00000050 12 | #00000000 13 | #009688 14 | -------------------------------------------------------------------------------- /schulplaner_website/README.md: -------------------------------------------------------------------------------- 1 | # schulplaner_website 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /app/lib/OldGrade/models/app_widget_settings.dart: -------------------------------------------------------------------------------- 1 | class AppWidgetSettings { 2 | final bool darkmode; 3 | 4 | const AppWidgetSettings({ 5 | required this.darkmode, 6 | }); 7 | 8 | factory AppWidgetSettings.fromData(dynamic data) { 9 | return AppWidgetSettings( 10 | darkmode: data['darkmode'] ?? false, 11 | ); 12 | } 13 | 14 | Map toJson() { 15 | return { 16 | 'darkmode': darkmode, 17 | }; 18 | } 19 | 20 | AppWidgetSettings copyWith({ 21 | bool? darkmode, 22 | }) { 23 | return AppWidgetSettings( 24 | darkmode: darkmode ?? this.darkmode, 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /schulplaner_website/lib/src/widgets/assets_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class AssetButton extends StatelessWidget { 4 | final String assetPath; 5 | final VoidCallback onTap; 6 | final double height; 7 | 8 | const AssetButton({ 9 | Key? key, 10 | required this.assetPath, 11 | required this.onTap, 12 | this.height = 64.0, 13 | }) : super(key: key); 14 | 15 | @override 16 | Widget build(BuildContext context) { 17 | return InkWell( 18 | child: Image.asset( 19 | assetPath, 20 | height: height, 21 | ), 22 | onTap: onTap, 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/ios/Flutter/flutter_export_environment.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # This is a generated file; do not edit or check into version control. 3 | export "FLUTTER_ROOT=/Users/felixweuthen/Weiteres/Flutter/flutter" 4 | export "FLUTTER_APPLICATION_PATH=/Users/felixweuthen/Projekte/schulplaner/app" 5 | export "COCOAPODS_PARALLEL_CODE_SIGN=true" 6 | export "FLUTTER_TARGET=lib/main.dart" 7 | export "FLUTTER_BUILD_DIR=build" 8 | export "FLUTTER_BUILD_NAME=10.0.1" 9 | export "FLUTTER_BUILD_NUMBER=611" 10 | export "DART_OBFUSCATION=false" 11 | export "TRACK_WIDGET_CREATION=true" 12 | export "TREE_SHAKE_ICONS=false" 13 | export "PACKAGE_CONFIG=.dart_tool/package_config.json" 14 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/lib/src/forms/form_container.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import '../theme/app_theme.dart'; 4 | 5 | class FormContainer extends StatelessWidget { 6 | const FormContainer({required this.child, this.padding}); 7 | final Widget child; 8 | final EdgeInsets? padding; 9 | 10 | @override 11 | Widget build(BuildContext context) { 12 | return Material( 13 | color: getHighlightedColor(context), 14 | child: padding == null 15 | ? child 16 | : Padding( 17 | padding: padding!, 18 | child: child, 19 | ), 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/lib/IntroductionScreen/intro_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class IntroButton extends StatelessWidget { 4 | final VoidCallback? onPressed; 5 | final Widget child; 6 | 7 | const IntroButton({Key? key, this.onPressed, required this.child}) 8 | : super(key: key); 9 | 10 | @override 11 | Widget build(BuildContext context) { 12 | return TextButton( 13 | onPressed: onPressed, 14 | style: ButtonStyle( 15 | shape: WidgetStateProperty.all( 16 | RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.0)), 17 | ), 18 | ), 19 | child: child, 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /app/lib/models/lesson_time.dart: -------------------------------------------------------------------------------- 1 | class LessonTime { 2 | late String? start, end; 3 | LessonTime({this.start, this.end}); 4 | 5 | LessonTime.fromData(Map data) { 6 | start = data['start']; 7 | end = data['end']; 8 | } 9 | 10 | Map toJson() { 11 | return { 12 | 'start': start, 13 | 'end': end, 14 | }; 15 | } 16 | 17 | Map toWidgetJson(int id) { 18 | return { 19 | 'id': id, 20 | 'start': start, 21 | 'end': end, 22 | }; 23 | } 24 | 25 | LessonTime copy() { 26 | return LessonTime( 27 | start: start, 28 | end: end, 29 | ); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = app 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.xla.app 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2020 com.xla. All rights reserved. 15 | -------------------------------------------------------------------------------- /cloud_functions/functions/src/user/models/user.ts: -------------------------------------------------------------------------------- 1 | import { MapData } from "../../utils/map_converter"; 2 | import { UserId } from "./user_id"; 3 | 4 | export class UserData { 5 | public id: UserId; 6 | public name: string; 7 | 8 | constructor(params: { 9 | id: UserId, 10 | name: string, 11 | }) { 12 | this.id = params.id; 13 | this.name = params.name; 14 | } 15 | 16 | static fromData(userId: UserId, data: MapData): UserData { 17 | return new UserData( 18 | { 19 | id: userId, 20 | name: data != null ? data['name'] : null, 21 | } 22 | ); 23 | } 24 | } -------------------------------------------------------------------------------- /packages/schulplaner_navigation/lib/schulplaner_navigation.dart: -------------------------------------------------------------------------------- 1 | library schulplaner_navigation; 2 | 3 | export 'src/blocs/navigation_bloc.dart'; 4 | export 'src/blocs/drawer_bloc.dart'; 5 | export 'src/logic/navigation_router.dart'; 6 | export 'src/models/open_sub_child.dart'; 7 | export 'src/models/widget_list_builder.dart'; 8 | export 'src/models/navigation_action.dart'; 9 | export 'src/models/navigation_state.dart'; 10 | export 'src/models/navigation_item.dart'; 11 | export 'src/widgets/drawer_tile.dart'; 12 | export 'src/widgets/mobile_ui.dart'; 13 | export 'src/widgets/tablet_ui.dart'; 14 | export 'src/widgets/slide_up.dart'; 15 | export 'src/widgets/limited_container.dart'; 16 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/2-feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 3 | about: Request a new feature 4 | labels: 'bug' 5 | --- 6 | 7 | 8 | [download]: https://schulplaner.web.app/ 9 | 10 | ## General Troubleshooting 11 | 12 | 16 | 17 | - [ ] I have checked for similar issues. 18 | - [ ] I have updated to the [latest version][download]. 19 | - [ ] I have checked the branches or the maintainers' PRs for upcoming features. 20 | 21 | ## Feature Request 22 | 23 | -------------------------------------------------------------------------------- /app/lib/grades/models/default_grade_profile.dart: -------------------------------------------------------------------------------- 1 | import 'grade_profile.dart'; 2 | import 'grade_type.dart'; 3 | import 'grade_type_item.dart'; 4 | 5 | final GradeProfile defaulgradeprofile = GradeProfile.Create('default').copyWith( 6 | name: 'Default', 7 | types: { 8 | '0': GradeTypeItem.Create('0').copyWith(name: 'Exams', gradetypes: { 9 | GradeType.EXAM: true, 10 | GradeType.ORALEXAM: true, 11 | }), 12 | '1': GradeTypeItem.Create('1').copyWith(name: 'Rest', gradetypes: { 13 | GradeType.GENERAL_PARTICIPATION: true, 14 | GradeType.HOMEWORK: true, 15 | GradeType.TEST: true, 16 | GradeType.OTHER: true, 17 | }), 18 | }, 19 | ); 20 | -------------------------------------------------------------------------------- /schulplaner_website/lib/src/widgets/svg_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_svg/svg.dart'; 3 | 4 | class SvgButton extends StatelessWidget { 5 | final String assetPath; 6 | final VoidCallback onTap; 7 | final double height; 8 | 9 | const SvgButton({ 10 | Key? key, 11 | required this.assetPath, 12 | required this.onTap, 13 | this.height = 64.0, 14 | }) : super(key: key); 15 | 16 | @override 17 | Widget build(BuildContext context) { 18 | return InkWell( 19 | child: SvgPicture.asset( 20 | assetPath, 21 | height: height, 22 | ), 23 | onTap: onTap, 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /app/lib/groups/src/models/place_link.dart: -------------------------------------------------------------------------------- 1 | import 'package:schulplaner8/groups/src/models/place.dart'; 2 | 3 | class PlaceLink { 4 | late String placeid, name; 5 | 6 | PlaceLink({required this.placeid, required this.name}); 7 | 8 | PlaceLink.fromPlace(Place item) { 9 | placeid = item.placeid; 10 | name = item.name; 11 | } 12 | 13 | factory PlaceLink.fromData({String? id, required dynamic data}) { 14 | return PlaceLink( 15 | placeid: id ?? data['placeid'] ?? 'null', 16 | name: data['name'], 17 | ); 18 | } 19 | 20 | Map toJson() { 21 | return { 22 | 'placeid': placeid, 23 | 'name': name, 24 | }; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/lib/Helper/References.dart: -------------------------------------------------------------------------------- 1 | import 'package:authentification/authentification_models.dart'; 2 | import 'package:cloud_firestore/cloud_firestore.dart'; 3 | 4 | DocumentReference> getUserRef(String uid) => 5 | FirebaseFirestore.instance.collection('users').doc(uid); 6 | 7 | CollectionReference> getUserDataRef(String uid) => 8 | getUserRef(uid).collection('data'); 9 | 10 | DocumentReference> getPlannerOrderRef(UserId userId) => 11 | getUserDataRef(userId.uid).doc('plannerorder'); 12 | 13 | CollectionReference> getPlannerRef(UserId userId) => 14 | getUserRef(userId.uid).collection('planner'); 15 | -------------------------------------------------------------------------------- /app/lib/groups/src/models/place.dart: -------------------------------------------------------------------------------- 1 | // 2 | class Place { 3 | late String placeid, name, address; 4 | 5 | Place({required this.placeid, required this.name, required this.address}); 6 | 7 | Place.fromData(Map data) { 8 | placeid = data['placeid']; 9 | name = data['name'] ?? ''; 10 | address = data['address'] ?? ''; 11 | } 12 | 13 | Map toJson() { 14 | return { 15 | 'placeid': placeid, 16 | 'name': name, 17 | 'address': address, 18 | }; 19 | } 20 | 21 | bool validate() { 22 | if (placeid == null) return false; 23 | if (name == null || name == '') return false; 24 | return true; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/android/app/src/main/kotlin/com/xla/school/models/course.kt: -------------------------------------------------------------------------------- 1 | package com.xla.school.models 2 | 3 | import android.graphics.Color 4 | 5 | data class Course(val id:String, val name:String, val design: Design, val shortname:String){ 6 | 7 | fun getDesignVal():Int{ 8 | try { 9 | return Color.parseColor("#"+design.primary); 10 | }catch (e:Exception){ 11 | return Color.parseColor("#"+"FFFFFF"); 12 | } 13 | } 14 | fun getShortnameOrName():String = getCorrectShortname() 15 | 16 | fun getCorrectShortname():String{ 17 | if(shortname==null||shortname=="null"||shortname=="")return name; 18 | else return shortname; 19 | } 20 | } -------------------------------------------------------------------------------- /packages/schulplaner_navigation/lib/src/models/navigation_action.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | import 'package:schulplaner_navigation/src/models/navigation_item.dart'; 3 | import 'package:schulplaner_translations/schulplaner_translations.dart'; 4 | 5 | class NavigationActionItem { 6 | final int id; 7 | final IconData iconData; 8 | final TranslatableString name; 9 | final NavigationItem navigationItem; 10 | final Widget Function(BuildContext context) builder; 11 | 12 | const NavigationActionItem({ 13 | required this.id, 14 | required this.iconData, 15 | required this.name, 16 | required this.builder, 17 | required this.navigationItem, 18 | }); 19 | } 20 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/lib/src/dialogs/dialog.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:universal_commons/platform_check.dart'; 4 | 5 | abstract class SchulplanerDialog { 6 | const SchulplanerDialog(); 7 | 8 | Widget build(BuildContext context); 9 | 10 | Future show(BuildContext context) async { 11 | if (PlatformCheck.isAppleOS) { 12 | return showCupertinoDialog( 13 | context: context, 14 | builder: (context) => build(context), 15 | ); 16 | } 17 | return showDialog( 18 | context: context, 19 | builder: (context) => build(context), 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/lib/src/forms/form_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import '../common/r_button.dart'; 4 | 5 | class FormButton extends StatelessWidget { 6 | final String? text; 7 | final IconData? iconData; 8 | final VoidCallback onTap; 9 | const FormButton(this.text, this.onTap, {this.iconData}); 10 | 11 | @override 12 | Widget build(BuildContext context) { 13 | return SizedBox( 14 | height: 48.0, 15 | width: double.infinity, 16 | child: Center( 17 | child: RButton( 18 | text: text ?? '-', 19 | onTap: onTap, 20 | iconData: iconData, 21 | ), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/lib/OldGrade/models/grade_value.dart: -------------------------------------------------------------------------------- 1 | typedef GradeValue GetGradeValue(String gradevalueid); 2 | 3 | class GradeValue { 4 | final String id, name; 5 | final String? name2; 6 | final int gradepackage; 7 | final double value; 8 | final double? value_notendency; 9 | const GradeValue({ 10 | required this.id, 11 | required this.name, 12 | this.name2, 13 | required this.gradepackage, 14 | required this.value, 15 | this.value_notendency, 16 | }); 17 | 18 | String getLongName() { 19 | if (name2 == null) { 20 | return name; 21 | } else { 22 | return name + ' ($name2)'; 23 | } 24 | } 25 | 26 | String getKey() { 27 | return id; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/lib/groups/src/models/teacher_link.dart: -------------------------------------------------------------------------------- 1 | import 'teacher.dart'; 2 | 3 | class TeacherLink { 4 | late String teacherid; 5 | late String name; 6 | 7 | TeacherLink({required this.teacherid, required this.name}); 8 | 9 | factory TeacherLink.fromData({String? id, required dynamic data}) { 10 | return TeacherLink( 11 | teacherid: id ?? data['teacherid'] ?? 'null??', 12 | name: data['name'], 13 | ); 14 | } 15 | 16 | TeacherLink.fromTeacher(Teacher teacher) { 17 | teacherid = teacher.teacherid; 18 | name = teacher.name; 19 | } 20 | 21 | Map toJson() { 22 | return { 23 | 'teacherid': teacherid, 24 | 'name': name, 25 | }; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Schulplaner App", 3 | "short_name": "Schulplaner", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "background_color": "#009688", 7 | "theme_color": "#009688", 8 | "description": "Stundenplan und Hausaufgaben, alles immer dabei.", 9 | "orientation": "portrait-primary", 10 | "prefer_related_applications": false, 11 | "icons": [ 12 | { 13 | "src": "icons/Icon-192.png", 14 | "sizes": "192x192", 15 | "type": "image/png" 16 | }, 17 | { 18 | "src": "icons/Icon-512.png", 19 | "sizes": "512x512", 20 | "type": "image/png" 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /packages/schulplaner_models/lib/src/models/group_type.dart: -------------------------------------------------------------------------------- 1 | enum GroupType { course, schoolClass } 2 | 3 | const _courseString = 'course'; 4 | const _schoolClassString = 'schoolClass'; 5 | 6 | extension GroupTypeConverter on GroupType { 7 | GroupType fromData(dynamic data) { 8 | if (data == _courseString) { 9 | return GroupType.course; 10 | } 11 | if (data == _schoolClassString) { 12 | return GroupType.schoolClass; 13 | } 14 | throw UnimplementedError(); 15 | } 16 | 17 | String toData() { 18 | switch (this) { 19 | case GroupType.course: 20 | return _courseString; 21 | case GroupType.schoolClass: 22 | return _schoolClassString; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /schulplaner_website/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = schulplaner_website 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.schulplanerWebsite 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2020 com.example. All rights reserved. 15 | -------------------------------------------------------------------------------- /app/android/app/src/main/res/drawable/baseline_view_week_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/lib/app_widget/update_logic.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/services.dart'; 2 | import 'package:schulplaner8/Data/planner_database/planner_database.dart'; 3 | import 'package:schulplaner8/app_base/src/blocs/app_settings_bloc.dart'; 4 | import 'package:schulplaner8/app_widget/UpdateAndroid.dart'; 5 | 6 | const methodChannel = MethodChannel('com.xla.school.widget'); 7 | const methodName = 'updateWidget'; 8 | 9 | class UpdateAppWidgetLogic { 10 | void update( 11 | PlannerDatabase database, 12 | AppSettingsBloc appSettingsBloc, 13 | ) { 14 | final updateData = UpdateData.collectData( 15 | database: database, appSettingsBloc: appSettingsBloc); 16 | methodChannel.invokeMethod(methodName, updateData.toJson()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "hosting": [ 3 | { 4 | "target": "alpha-web-app", 5 | "public": "build/web", 6 | "ignore": [ 7 | "firebase.json", 8 | "**/.*", 9 | "**/node_modules/**" 10 | ], 11 | "rewrites": [ 12 | { 13 | "source": "**", 14 | "destination": "/index.html" 15 | } 16 | ] 17 | }, 18 | { 19 | "target": "beta-web-app", 20 | "public": "build/web", 21 | "ignore": [ 22 | "firebase.json", 23 | "**/.*", 24 | "**/node_modules/**" 25 | ], 26 | "rewrites": [ 27 | { 28 | "source": "**", 29 | "destination": "/index.html" 30 | } 31 | ] 32 | } 33 | ] 34 | } -------------------------------------------------------------------------------- /packages/authentification/lib/src/widgets/sign_in_google.dart: -------------------------------------------------------------------------------- 1 | import 'package:authentification/src/blocs/sign_in_bloc.dart'; 2 | import 'package:bloc/bloc_provider.dart'; 3 | import 'package:community_material_icon/community_material_icon.dart'; 4 | import 'package:flutter/material.dart'; 5 | 6 | import 'authentification_login_tile.dart'; 7 | 8 | class SignInGoogleButton extends StatelessWidget { 9 | @override 10 | Widget build(BuildContext context) { 11 | final signInBloc = BlocProvider.of(context); 12 | return AuthentificationLoginTile( 13 | iconData: CommunityMaterialIcons.google, 14 | color: Colors.blue, 15 | title: "Google", 16 | onTap: () => signInBloc.tryGoogleSignIn(), 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/export_user_data/export_user_data_models/lib/src/views/export_user_data_request_view.dart: -------------------------------------------------------------------------------- 1 | import 'package:export_user_data_models/src/models/export_user_data_request_status.dart'; 2 | 3 | class ExportUserDataRequestView { 4 | final String userId; 5 | final DateTime requestTime; 6 | final DateTime? expiresOn; 7 | final String? downloadUrl; 8 | final String? bytesSize; 9 | final String? error; 10 | final ExportUserDataRequestStatus status; 11 | 12 | const ExportUserDataRequestView({ 13 | required this.userId, 14 | required this.downloadUrl, 15 | required this.requestTime, 16 | required this.expiresOn, 17 | required this.bytesSize, 18 | required this.error, 19 | required this.status, 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | [contributing]: https://github.com/flowhorn/schulplaner/blob/master/CONTRIBUTING.md 2 | 3 | ## Pull Request Etiquette 4 | 5 | 9 | 10 | - [ ] I have checked the PRs for upcoming features/bug fixes. 11 | - [ ] I have read the [contributing guidelines][contributing]. 12 | 13 | ### Changes 14 | 15 | - [ ] Internal code 16 | - [ ] Documentation 17 | - [ ] Other: \_____ 18 | 19 | 20 | 21 | Closes Issue: NaN 22 | 23 | ## Description 24 | 25 | Replace this sentence with general description of what your Pull Request does. 26 | -------------------------------------------------------------------------------- /packages/schulplaner_widgets/lib/src/dialogs/state_sheet.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:schulplaner_widgets/schulplaner_dialogs.dart'; 3 | 4 | class StateSheet extends SchulplanerSheet { 5 | final Stream stream; 6 | 7 | const StateSheet({ 8 | required this.stream, 9 | }); 10 | @override 11 | Widget build(BuildContext context) { 12 | return StreamBuilder( 13 | stream: stream, 14 | builder: (context, snapshot) { 15 | final sheetContent = snapshot.data; 16 | if (sheetContent != null) { 17 | return sheetContent.build(context); 18 | } else { 19 | return LoadingSheetContent().build(context); 20 | } 21 | }, 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /packages/schulplaner_models/lib/src/models/public_code.dart: -------------------------------------------------------------------------------- 1 | //CODETYPE 0 = COURSE, 1 = CLASS 2 | 3 | class PublicCode { 4 | late String publiccode; 5 | late int codetype; 6 | late String referedid; 7 | String? link; 8 | PublicCode( 9 | {required this.publiccode, 10 | required this.codetype, 11 | required this.referedid, 12 | this.link}); 13 | 14 | PublicCode.fromData(Map data) { 15 | publiccode = data['publiccode']; 16 | codetype = data['codetype']; 17 | referedid = data['referredid']; 18 | link = data['link']; 19 | } 20 | 21 | Map toJson() { 22 | return { 23 | 'publiccode': publiccode, 24 | 'codetype': codetype, 25 | 'referredid': referedid, 26 | }; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /packages/design_utils/lib/src/widgets/responsive_ui.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import '../dimensions.dart'; 4 | 5 | /// Switches between Mobile and Desktop UI according to the current Window width 6 | class ResponsiveUI extends StatelessWidget { 7 | final WidgetBuilder desktopBuilder; 8 | final WidgetBuilder mobileBuilder; 9 | 10 | const ResponsiveUI({ 11 | Key? key, 12 | required this.desktopBuilder, 13 | required this.mobileBuilder, 14 | }) : super(key: key); 15 | @override 16 | Widget build(BuildContext context) { 17 | final dimensions = Dimensions.of(context); 18 | if (dimensions.isDesktopModus) { 19 | return desktopBuilder(context); 20 | } else { 21 | return mobileBuilder(context); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/lib/models/additionaltypes.dart: -------------------------------------------------------------------------------- 1 | import 'package:schulplaner_addons/common/model.dart'; 2 | 3 | enum WeekDay { monday, tuesday, wednesday, thursday, friday, saturday, sunday } 4 | 5 | WeekDay weekDayEnumFromString(String data) => 6 | enumFromString(WeekDay.values, data)!; 7 | 8 | String weekDayEnumToString(WeekDay weekDay) => weekDay.toString().split('.')[1]; 9 | 10 | enum ProfileDisplayMode { pic, none } 11 | 12 | ProfileDisplayMode profileDisplayModeEnumFromString(String data) { 13 | return enumFromString(ProfileDisplayMode.values, data, 14 | orElse: ProfileDisplayMode.none) ?? 15 | ProfileDisplayMode.none; 16 | } 17 | 18 | String profileDisplayModeEnumToString(ProfileDisplayMode displayMode) => 19 | displayMode.toString().split('.')[1]; 20 | -------------------------------------------------------------------------------- /utils/holiday_database/de-nw/2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "2019-herbst": { 3 | "id": "2019-herbst", 4 | "name": "Herbstferien", 5 | "start": "2019-10-14", 6 | "end": "2019-10-26", 7 | "type": "holiday" 8 | }, 9 | "2019-herbst2": { 10 | "id": "2019-herbst2", 11 | "name": "Tag der Deutschen Einheit", 12 | "start": "2019-10-03", 13 | "end": "2019-10-03", 14 | "type": "holiday" 15 | }, 16 | "2019-herbst3": { 17 | "id": "2019-herbst3", 18 | "name": "Allerheiligen", 19 | "start": "2019-11-01", 20 | "end": "2019-11-01", 21 | "type": "holiday" 22 | }, 23 | "2019-weihnachten": { 24 | "id": "2019-weihnachten", 25 | "name": "Weihnachtsferien", 26 | "start": "2019-12-23", 27 | "end": "2020-01-06", 28 | "type": "holiday" 29 | } 30 | } -------------------------------------------------------------------------------- /utils/holiday_database/de-bb/2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "2019-herbst": { 3 | "id": "2019-herbst", 4 | "name": "Herbstferien", 5 | "start": "2019-10-04", 6 | "end": "2019-10-18", 7 | "type": "holiday" 8 | }, 9 | "2019-herbst2": { 10 | "id": "2019-herbst2", 11 | "name": "Tag der deutschen Einheit", 12 | "start": "2019-10-03", 13 | "end": "2019-10-03", 14 | "type": "holiday" 15 | }, 16 | "2019-herbst3": { 17 | "id": "2019-herbst3", 18 | "name": "Reformationstag", 19 | "start": "2019-10-31", 20 | "end": "2019-10-31", 21 | "type": "holiday" 22 | }, 23 | "2019-weihnachten": { 24 | "id": "2019-weihnachten", 25 | "name": "Weihnachtsferien", 26 | "start": "2019-12-23", 27 | "end": "2020-01-03", 28 | "type": "holiday" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /utils/holiday_database/de-hb/2019.json: -------------------------------------------------------------------------------- 1 | { 2 | "2019-herbst": { 3 | "id": "2019-herbst", 4 | "name": "Tag der Deutschen Einheit", 5 | "start": "2019-10-03", 6 | "end": "2019-10-03", 7 | "type": "holiday" 8 | }, 9 | "2019-herbst2": { 10 | "id": "2019-herbst2", 11 | "name": "Herbstferien", 12 | "start": "2019-10-04", 13 | "end": "2019-10-18", 14 | "type": "holiday" 15 | }, 16 | "2019-herbst3": { 17 | "id": "2019-herbst3", 18 | "name": "Reformationstag", 19 | "start": "2019-10-31", 20 | "end": "2019-10-31", 21 | "type": "holiday" 22 | }, 23 | "2019-weihnachten": { 24 | "id": "2019-weihnachten", 25 | "name": "Weihnachtsferien", 26 | "start": "2019-12-23", 27 | "end": "2020-01-06", 28 | "type": "holiday" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /cloud_functions/functions/src/groups/models/school_class_data.ts: -------------------------------------------------------------------------------- 1 | import { MapData } from "../../utils/map_converter"; 2 | import { GroupId } from "./group_id"; 3 | 4 | export class SchoolClassData { 5 | public id: GroupId; 6 | public name: string; 7 | 8 | constructor(params: { 9 | id: GroupId, 10 | name: string, 11 | }) { 12 | this.id = params.id; 13 | this.name = params.name; 14 | } 15 | 16 | static fromData(data: MapData): SchoolClassData { 17 | return new SchoolClassData({ 18 | id: new GroupId(data['id']), 19 | name: data['name'], 20 | }); 21 | } 22 | 23 | toData(): MapData { 24 | return { 25 | 'id': this.id.id, 26 | 'name': this.name, 27 | }; 28 | } 29 | } -------------------------------------------------------------------------------- /packages/universal_commons/lib/src/plaform_check/platform_check.dart: -------------------------------------------------------------------------------- 1 | import 'platform.dart'; 2 | import 'implementation/stub.dart' 3 | if (dart.library.io) 'implementation/io.dart' 4 | if (dart.library.js) 'implementation/js.dart' as implementation; 5 | 6 | class PlatformCheck { 7 | static get platform => _getPlatform(); 8 | 9 | static bool get isAndroid => platform == CurrentPlatform.android; 10 | static bool get isIOS => platform == CurrentPlatform.iOS; 11 | static bool get isMacOS => platform == CurrentPlatform.macOS; 12 | static bool get isWeb => platform == CurrentPlatform.web; 13 | static bool get isAppleOS => isIOS || isMacOS; 14 | static bool get isMobile => isAndroid || isIOS; 15 | } 16 | 17 | CurrentPlatform _getPlatform() { 18 | return implementation.getPlatform(); 19 | } 20 | --------------------------------------------------------------------------------