From 6246b2237098cbc062dfcda79bbcc869034c5b50 Mon Sep 17 00:00:00 2001 From: TodorBachvarov Date: Mon, 31 Aug 2020 19:32:42 +0300 Subject: [PATCH 01/17] Feature/issue 24 (#26) * OnboardingLoginPhoneVerifyPanel: improve VO * SettingsPrivacyCenterPanel: improve VO * SettingsNewPrivacyPanel: improve VO * SettingsDialog: improve VO * SettingsNewPrivacyPanel: improve VO --- .../OnboardingLoginPhoneVerifyPanel.dart | 15 +-- lib/ui/settings/SettingsNewPrivacyPanel.dart | 99 +++++++++++-------- .../settings/SettingsPrivacyCenterPanel.dart | 11 ++- lib/ui/settings/SettingsWidgets.dart | 2 +- 4 files changed, 73 insertions(+), 54 deletions(-) diff --git a/lib/ui/onboarding/OnboardingLoginPhoneVerifyPanel.dart b/lib/ui/onboarding/OnboardingLoginPhoneVerifyPanel.dart index 1a4fd467a..b75449003 100644 --- a/lib/ui/onboarding/OnboardingLoginPhoneVerifyPanel.dart +++ b/lib/ui/onboarding/OnboardingLoginPhoneVerifyPanel.dart @@ -159,13 +159,14 @@ class _OnboardingLoginPhoneVerifyPanelState onChanged: _onMethodChanged, ), ), - Text( - Localization().getStringEx( - "panel.onboarding.verify_phone.text_me.label", - "Text me"), - style: TextStyle( - fontSize: 16, fontFamily: Styles().fontFamilies.regular), - ) + ExcludeSemantics(child: + Text( + Localization().getStringEx( + "panel.onboarding.verify_phone.text_me.label", + "Text me"), + style: TextStyle( + fontSize: 16, fontFamily: Styles().fontFamilies.regular), + )) ], ), ], diff --git a/lib/ui/settings/SettingsNewPrivacyPanel.dart b/lib/ui/settings/SettingsNewPrivacyPanel.dart index ea09ab88a..e18680b40 100644 --- a/lib/ui/settings/SettingsNewPrivacyPanel.dart +++ b/lib/ui/settings/SettingsNewPrivacyPanel.dart @@ -260,38 +260,49 @@ class SettingsNewPrivacyPanelState extends State implem padding: EdgeInsets.all(8), child: Row( children: [ - Expanded( - child: Center( - child: Container( - padding: EdgeInsets.only(top: 42, bottom: 10, left: 40, right: 40), - child: Text( - Localization().getStringEx("panel.settings_new.privacy.dialog.update_privacy.title", "Your new \nprivacy level"), - style: TextStyle(fontSize: 24, color: Colors.white, fontFamily: Styles().fontFamilies.bold), - textAlign: TextAlign.center, - ), - ) - ), - ), - GestureDetector( - onTap: () => Navigator.pop(context), - child: Container( - height: 30, - width: 30, - decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(15)), - border: Border.all(color: Styles().colors.white, width: 2), + Expanded( + child: Center( child: + Container( + padding: EdgeInsets.only(top: 42, bottom: 10, left: 40, right: 40), + child: + Semantics(button:false, hint: "${_sliderValue?.round()?.toString() ?? ""}", + child: Text( + Localization().getStringEx("panel.settings_new.privacy.dialog.update_privacy.title", "Your new \nprivacy level"), + style: TextStyle(fontSize: 24, color: Colors.white, fontFamily: Styles().fontFamilies.bold), + textAlign: TextAlign.center, + ), + ) + ) ), - child: Center( - child: Text( - "\u00D7", - style: TextStyle( - fontSize: 24, - color: Colors.white, + ), + Semantics( + explicitChildNodes: true, + child: + GestureDetector( + onTap: () => Navigator.pop(context), + child: Container( + height: 30, + width: 30, + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(15)), + border: Border.all(color: Styles().colors.white, width: 2), + ), + child: Semantics( button: true, label: Localization().getStringEx("panel.settings_new.privacy.dialog.update_privacy.button.back.title", "Back"),child: + Center(child: + ExcludeSemantics( child: + Text( + "\u00D7", + style: TextStyle( + fontSize: 24, + color: Colors.white, + ), + ) + ), ), ), ), - ), - ), + ) + ) ], ), ), @@ -337,10 +348,13 @@ class SettingsNewPrivacyPanelState extends State implem border: Border.all(width:2, color: Styles().colors.fillColorSecondary,) ), child: Center( - child: Text( - _sliderValue?.round()?.toString() ?? "", - style: TextStyle(color: Styles().colors.fillColorPrimary, fontSize: 24, fontFamily: Styles().fontFamilies.extraBold), - ), + child: Semantics( + label: Localization().getStringEx("panel.settings_new.privacy.dialog.label.new_privacy", "Privacy Level: "), + child: Text( + _sliderValue?.round()?.toString() ?? "", + style: TextStyle(color: Styles().colors.fillColorPrimary, fontSize: 24, fontFamily: Styles().fontFamilies.extraBold), + ), + ) ), ),)) ), @@ -648,14 +662,17 @@ class PrivacyEntriesListState extends State<_PrivacyEntriesListWidget> with Tic alignment: Alignment.centerRight, padding: EdgeInsets.symmetric(horizontal: 18), child: - Container( - decoration: BoxDecoration(border: Border(bottom: BorderSide(width: 1, color: Styles().colors.fillColorSecondary))), - child: GestureDetector( - onTap: _onTapExpandAll, - child: Text( - _canClose? Localization().getStringEx("panel.settings_new.button.close_all.title","Close All") : Localization().getStringEx("panel.settings_new.button.expand_all.title","Expand All"), - style: TextStyle(fontFamily: Styles().fontFamilies.regular, color: Styles().colors.textSurface, fontSize: 16) - ), + Semantics( + button: true, + child: Container( + decoration: BoxDecoration(border: Border(bottom: BorderSide(width: 1, color: Styles().colors.fillColorSecondary))), + child: GestureDetector( + onTap: _onTapExpandAll, + child: Text( + _canClose? Localization().getStringEx("panel.settings_new.button.close_all.title","Close All") : Localization().getStringEx("panel.settings_new.button.expand_all.title","Expand All"), + style: TextStyle(fontFamily: Styles().fontFamilies.regular, color: Styles().colors.textSurface, fontSize: 16) + ), + ) ) ) ), @@ -878,7 +895,7 @@ class _PrivacyEntryState extends State<_PrivacyEntry> with TickerProviderStateMi Container(width: 9,), RotationTransition( turns: _iconTurns, - child: Image.asset(isEnabled? "images/down-arrow-orange.png": "images/down-arrow-orange-off.png")), + child: Image.asset(isEnabled? "images/down-arrow-orange.png": "images/down-arrow-orange-off.png", excludeFromSemantics: true,)), ], )))), !infoExpanded? Container(): diff --git a/lib/ui/settings/SettingsPrivacyCenterPanel.dart b/lib/ui/settings/SettingsPrivacyCenterPanel.dart index adb1e7c03..edb711633 100644 --- a/lib/ui/settings/SettingsPrivacyCenterPanel.dart +++ b/lib/ui/settings/SettingsPrivacyCenterPanel.dart @@ -98,11 +98,12 @@ class _SettingsPrivacyCenterPanelState extends State Container(height: 10,), Row(children: [ Expanded(child: - Text( - Localization().getStringEx("panel.settings.privacy_center.label.title", "Privacy Center"), - textAlign: TextAlign.center, - style: TextStyle(color: Colors.white, fontSize: 24, fontFamily: Styles().fontFamilies.extraBold), - ), + Semantics(header: true, child: + Text( + Localization().getStringEx("panel.settings.privacy_center.label.title", "Privacy Center"), + textAlign: TextAlign.center, + style: TextStyle(color: Colors.white, fontSize: 24, fontFamily: Styles().fontFamilies.extraBold), + ),) ), ],), Container(height: 24,) diff --git a/lib/ui/settings/SettingsWidgets.dart b/lib/ui/settings/SettingsWidgets.dart index 92da5441b..13e4016a7 100644 --- a/lib/ui/settings/SettingsWidgets.dart +++ b/lib/ui/settings/SettingsWidgets.dart @@ -197,7 +197,7 @@ class _SettingsDialogState extends State{ } _buildConfirmButton(){ return - Semantics( button: true, + Semantics( button: true, enabled: _getIsContinueEnabled, child: Stack(children: [ GestureDetector( onTap: (){ widget?.onContinue(selectedOptions, ({bool loading})=>setState((){_loading = loading;}));}, From 97818f348f5eea23574618df088c5483505e89c4 Mon Sep 17 00:00:00 2001 From: Todor Bachvarov Date: Mon, 31 Aug 2020 19:42:20 +0300 Subject: [PATCH 02/17] Version: 2.2.14 --- CHANGELOG.md | 4 ++++ pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bc2d37ec..26b639ee1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +##[2.2.14+314] - 2020-08-31 + +### Improved VO features [#24] + ## [2.2.13] - 2020-08-28 ### Fixed diff --git a/pubspec.yaml b/pubspec.yaml index 0b826f0d2..01aa1b86c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -11,7 +11,7 @@ description: Illinois client application. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 2.2.13+313 +version: 2.2.14+314 environment: sdk: ">=2.2.0 <3.0.0" From ce79c4ea79ffef3e923761f0e7dc1ec58c6980f0 Mon Sep 17 00:00:00 2001 From: TodorBachvarov Date: Tue, 1 Sep 2020 17:51:37 +0300 Subject: [PATCH 03/17] Feature/issue 28 (#30) * Use tmp resource of the Privacy Center Header image * Expose strings to strings.json (en only) - in progress * Expose strings to strings.json (sync zh&es with en) * SettingsNewPrivacyPanel: expose strings to strings.json * Fix wrong key * SettingsNewPrivacyPanel: localise category expandedButton * SettingsNewPrivacyPanel: expose strings from assets.json into strings.json to be localised --- assets/assets.json | 10 +- assets/strings.en.json | 199 ++++++++++++++++- assets/strings.es.json | 199 ++++++++++++++++- assets/strings.zh.json | 203 +++++++++++++++++- images/2.0x/group-3-blue.png | Bin 0 -> 11352 bytes images/3.0x/group-3-blue.png | Bin 0 -> 20005 bytes images/group-3-blue.png | Bin 0 -> 4269 bytes lib/model/PrivacyData.dart | 4 +- lib/ui/dining/FoodFiltersPanel.dart | 4 +- .../SettingsManageInterestsPanel.dart | 4 +- lib/ui/settings/SettingsNewPrivacyPanel.dart | 60 +++--- .../settings/SettingsPrivacyCenterPanel.dart | 6 +- .../settings/SettingsVerifyIdentityPanel.dart | 2 +- 13 files changed, 639 insertions(+), 52 deletions(-) create mode 100644 images/2.0x/group-3-blue.png create mode 100644 images/3.0x/group-3-blue.png create mode 100644 images/group-3-blue.png diff --git a/assets/assets.json b/assets/assets.json index ba2e8ea33..78061fb2d 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -434,11 +434,11 @@ "privacy_new":{ "description":[ - {"level":1, "key": "com.illinois.description.1", "text": "You may not be able to use all features, but you are anonymous and we don't ask for anything or store any data. Anonymous data will be collected and used to optimize app performance."}, - {"level":2, "key": "com.illinois.description.1", "text": "See what's happening around you. We use Wifi and Bluetooth location services to improve your experience, but we never store that data."}, - {"level":3, "key": "com.illinois.description.2", "text": "You can personalize and customize the app. Wifi and Bluetooth location data is stored over time to make recommendations and improve your overall app experience."}, - {"level":4, "key": "com.illinois.description.3", "text": "Let the app work for you. \nYou can access your iCard, save credit cards to make future purchases easier, access health information, and get notifications based on your specific interests."}, - {"level":5, "key": "com.illinois.description.4", "text": "Access all features, get connected to campus, and let the app suggest tailored experiences that you and your friends all enjoy."} + {"level":1, "key": "privacy.category.description.1", "text": "You may not be able to use all features, but you are anonymous and we don't ask for anything or store any data. Anonymous data will be collected and used to optimize app performance."}, + {"level":2, "key": "privacy.category.description.2", "text": "See what's happening around you. We use Wifi and Bluetooth location services to improve your experience, but we never store that data."}, + {"level":3, "key": "privacy.category.description.3", "text": "You can personalize and customize the app. Wifi and Bluetooth location data is stored over time to make recommendations and improve your overall app experience."}, + {"level":4, "key": "privacy.category.description.4", "text": "Let the app work for you. \nYou can access your iCard, save credit cards to make future purchases easier, access health information, and get notifications based on your specific interests."}, + {"level":5, "key": "privacy.category.description.5", "text": "Access all features, get connected to campus, and let the app suggest tailored experiences that you and your friends all enjoy."} ], "categories":[ { diff --git a/assets/strings.en.json b/assets/strings.en.json index 896586cb9..c34427688 100644 --- a/assets/strings.en.json +++ b/assets/strings.en.json @@ -159,6 +159,7 @@ "panel.browse.button.groups.hint":"", "panel.browse.button.safer.title":"Safer Illinois", "panel.browse.button.safer.hint":"", + "panel.browse.button.privacy_center.title": "Privacy Center", "panel.browse.label.browse_all": "Browse all", "panel.browse.label.offline.sign_in": "Sign In not available while offline.", @@ -590,6 +591,8 @@ "panel.settings.manage_interests.search.cancel.hint":"clear the search filter", "panel.settings.manage_interests.search.search_button.title":"Search", "panel.settings.manage_interests.search.search_button.hint": "filter tags", + "panel.settings.manage_interests.button.save.title": "Save Changes", + "panel.settings.manage_interests.button.save.hint": "", "panel.settings.illini_cash.label.title": "Illini Cash", "panel.settings.illini_cash.label.history": "History", @@ -732,6 +735,8 @@ "panel.food_filters.label.exclude_ingredients.hint": "", "panel.food_filters.value.on": "On", "panel.food_filters.value.off": "Off", + "panel.food_filters.button.save.title": "Save Changes", + "panel.food_filters.button.save.hint": "", "panel.food_special_offers.title.text": "Specials", "panel.food_special_offers.available.text": "Available at these locations", @@ -811,8 +816,114 @@ "panel.settings.home.button.feedback.title": "Submit Feedback", "panel.settings.home.button.feedback.hint": "", + "panel.settings.privacy_center.label.title":"Privacy Center", + "panel.settings.privacy_center.label.description":"Personalize your privacy and data preferences.", + "panel.settings.privacy_center.label.finish_setup":"Finish setup", + "panel.settings.privacy_center.label.finish_setup_description":"Log in with your NetID or Telephone number to get the full Illinois experience.", + "panel.settings.privacy_center.button.verify_identity.title":"Verify your Identity", + "panel.settings.privacy_center.button.manage_privacy.title":"Manage and Understand Your Privacy", + "panel.settings.privacy_center.button.manage_privacy.hint":"", + "panel.settings.privacy_center.button.personal_information.title":"Personal Information", + "panel.settings.privacy_center.button.personal_information.hint":"", + "panel.settings.privacy_center.button.notifications.title":"Notification Preferences", + "panel.settings.privacy_center.button.notifications.":"", + "panel.settings.privacy_center.button.privacy_policy.title":"Privacy Statement", + "panel.settings.privacy_center.button.delete_data.title":"Forget all of my information", + "panel.settings.privacy_center.label.delete.description":"This will delete all of your personal information that was shared and stored within the app.", + "panel.settings.privacy_center.label.delete_message.title":"Forget all of your information?", + "panel.settings.privacy_center.label.delete_message.description1":"This will ", + "panel.settings.privacy_center.label.delete_message.description2":"Permanently ", + "panel.settings.privacy_center.label.delete_message.description3":"delete all of your information. You will not be able to retrieve your data after you have deleted it. Are you sure you want to continue?", + "panel.settings.privacy_center.button.forget_info.title": "Forget My Information", + + "panel.settings.verify_identity.label.title":"Verify your Identity", + "panel.settings.verify_identity.label.description":"Connect to Illinois", + "panel.settings.verify_identity.label.connect_id.desription1":"Are you a ", + "panel.settings.verify_identity.label.connect_id.desription2":"Student ", + "panel.settings.verify_identity.label.connect_id.desription3":"or ", + "panel.settings.verify_identity.label.connect_id.desription4":"faculty member ", + "panel.settings.verify_identity.label.connect_id.desription5":"? Log in with your NetID to see Illinois information specific to you, like your Illini Cash and meal plan.", + "panel.settings.verify_identity.button.connect_net_id.title":"Connect Your NetID", + "panel.settings.verify_identity.label.verify_phone.desription1":"Don’t have a NetID", + "panel.settings.verify_identity.label.verify_phone.desription2":"? Verify your phone number to save your preferences and have the same experience on more than one device. ", + "panel.settings.verify_identity.button.verify_phone.title":"Verify Your Phone Number", + + "panel.settings.login.netid.label.title":"Connect your NetID", + "panel.settings.login.netid.button.dont_continue.title":"Not right now", + "panel.settings.login.netid.label.title.hint":"", + "panel.settings.login.netid.label.description":"Log in with your NetID to use academic and dorm specific features.", + "panel.settings.login.netid.button.continue.title":"Log in with NetID", + "panel.settings.login.netid.button.continue.hint":"", + "panel.settings.login.netid.button.dont_continue.hint":"Skip verification", + "panel.settings.login.label.login_failed":"Unable to login. Please try again later", + + "panel.settings.login.phone.label.title":"Verify your phone number", + "panel.settings.login.phone.button.dont_continue.title":"Not right now", + "panel.settings.login.phone.label.title.hint":"", + "panel.settings.login.phone.label.description":"This saves your preferences so you can have the same experience on more than one device.", + "panel.settings.login.phone.button.continue.title":"Verify My Phone Number", + "panel.settings.login.phone.button.continue.hint":"", + "panel.settings.login.phone.button.dont_continue.hint":"Skip verification", "panel.settings.label.offline.phone_ver":"Verify Your Phone Number is not available while offline.", + "widget.settings.dialog.button.cancel.title": "Cancel", + + "panel.settings.notifications.label.title":"Notifications", + "panel.settings.notifications.label.desctiption":"Don’t miss an event or campus update.", + "panel.settings.notifications.label.notifications":"Notifications", + "panel.settings.notifications.label.info":"To receive notifications enable in your device's settings.", + "panel.settings.notifications.reminders":"Event reminders", + "panel.settings.notifications.athletics_updates":"Athletics updates", + "panel.settings.notifications.dining":"Dining specials", + "panel.settings.notifications.label.status.enabled":"Enabled", + "panel.settings.notifications.label.status.disabled":"Disabled", + + "panel.settings.personal_information.label.title":"Personal Information", + "panel.settings.personal_information.button.delete_data.title":"Delete my personal data", + "panel.settings.personal_information.label.description":"Delete your location history, your tags and categories, and saved events and dining locations.", + "panel.settings.personal_information.button.personal_information.title":"Personal Information", + "panel.settings.personal_information.button.personal_information.description":"Your name and contact info you’ve shared", + "panel.settings.personal_information.button.who_you_are.title":"Who You Are", + "panel.settings.personal_information.button.who_you_are.description":"Your status as a student, faculty, resident, etc.", + "panel.settings.personal_information.button.interest.title":"Your Interests", + "panel.settings.personal_information.button.interest.description":"Categories, teams, and tags you follow", + "panel.settings.personal_information.button.food_filters.title":"Food Filters", + "panel.settings.personal_information.button.food_filters.description":"Add or edit your food preferences", + "panel.settings.personal_information.label.delete_message.title":"Delete your personal data?", + "panel.settings.personal_information.label.delete_message.description1":"Select all that you would like to ", + "panel.settings.personal_information.label.delete_message.description2":"Permanently ", + "panel.settings.personal_information.label.delete_message.description3":"delete:", + "panel.settings.personal_information.button.forget_info.title": "Delete My Data", + + "panel.settings.new_privacy.privacy.label.title": "Choose Your Privacy Level", + "panel.settings.new_privacy.privacy.label.slider_help": "Adjust slider to change your privacy level", + "panel.settings.new_privacy.privacy.button.set_privacy.disabled.title": "Scroll to Review", + "panel.settings.new_privacy.privacy.button.set_privacy.title": "Set my Privacy", + "panel.settings.new_privacy.privacy.button.set_privacy.disabled.hint": "", + "panel.settings.new_privacy.privacy.button.set_privacy.hint": "", + "panel.settings.new_privacy.privacy.dialog.update_privacy.title": "Your new \nprivacy level", + "panel.settings.new_privacy.privacy.dialog.update_privacy.button.back.title": "Back", + "panel.settings.new_privacy.privacy.dialog.label.new_privacy": "Privacy Level: ", + "panel.settings.new_privacy.privacy.dialog.update_privacy.label2": "This change requires us to make the following changes:", + "panel.settings.new_privacy.privacy.dialog.update_privacy.confirm": "Are you sure?", + "panel.settings.new_privacy.privacy.dialog.update_privacy.yes": "Yes", + "panel.settings.new_privacy.privacy.dialog.update_privacy.no": "No", + "panel.settings.new_privacy.privacy.label.set_your_privacy_level": "Set your privacy level", + "panel.settings.new_privacy.privacy.label.update_your_privacy_level": "Update your privacy level", + "panel.settings.new_privacy.privacy.label.set_your_privacy_level.hint": "Header 1", + "panel.settings.new_privacy.privacy.label.update_your_privacy_level.hint": "Header 1", + "panel.settings.new_privacy.privacy.label.some_details_have_changed": "Some details have changed", + "panel.settings.new_privacy.privacy.label.some_details_have_changed.hint": "Header 2", + "panel.settings.new_privacy.label.description.title": "Features and Data Collection", + "panel.settings.new_privacy.label.description.info": "Learn more about specific features, and use dropdown for more information about how data is being used.", + "panel.settings.new_privacy.button.close_all.title": "Close All", + "panel.settings.new_privacy.button.expand_all.title": "Expand All", + "panel.settings.new_privacy.label.hint": "Double tap to ", + "panel.settings.new_privacy.button.expand_data.title": "See Data Usage", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.hint": "Privacy Level", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.increase": "increased to", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.decrease": "decreased to", + "panel.create_event.header.title":"Create An Event", "panel.create_event.title":"Create an Event", "panel.create_event.add_image":"Add event image", @@ -880,7 +991,17 @@ "panel.profile_info.dialog.remove_my_information.subtitle": "Are you sure?", "panel.profile_info.dialog.remove_my_information.yes.title": "Yes", "panel.profile_info.dialog.remove_my_information.no.title": "No", - + "panel.profile_info.phone_number.name.title": "Full Name", + "panel.profile_info.phone_number.name.hint": "", + "panel.profile_info.phone_number.email.title": "Email", + "panel.profile_info.phone_number.email.hint": "", + "panel.profile_info.button.save.title":"Save Changes", + "panel.profile_info.button.save.hint":"", + "panel.profile_info.logout.title":"Illinois", + "panel.profile_info.logout.message":"Are you sure you want to sign out?", + "panel.profile_info.logout.button.yes":"Yes", + "panel.profile_info.logout.no":"No", + "panel.create_poll.header.title": "Create a Quick Poll", "panel.create_poll.description": "People within 100 ft of you with bluetooth on and with the app running will be notified and can vote through the Illinois app.", "panel.create_poll.text.wants_to_know": "wants to know…", @@ -1455,5 +1576,79 @@ "com.illinois.features2.entry.log_out":"Log you off system", "com.illinois.features2.entry.disable_notifications":"Turn off notifications", "com.illinois.features2.entry.remove_credit_card":"Remove your credit card info", - "com.illinois.features2.entry.dont_share_location":"Don’t share your data with other users" + "com.illinois.features2.entry.dont_share_location":"Don’t share your data with other users", + + "privacy.category.description.1": "You may not be able to use all features, but you are anonymous and we don't ask for anything or store any data. Anonymous data will be collected and used to optimize app performance.", + "privacy.category.description.2": "See what's happening around you. We use Wifi and Bluetooth location services to improve your experience, but we never store that data.", + "privacy.category.description.3": "You can personalize and customize the app. Wifi and Bluetooth location data is stored over time to make recommendations and improve your overall app experience.", + "privacy.category.description.4": "Let the app work for you. \nYou can access your iCard, save credit cards to make future purchases easier, access health information, and get notifications based on your specific interests.", + "privacy.category.description.5": "Access all features, get connected to campus, and let the app suggest tailored experiences that you and your friends all enjoy.", + "privacy.category.event_and_dining.title": "Events and Dining \nAround Campus", + "privacy.entry.event_and_dining.view.only.title": "View Only", + "privacy.entry.event_and_dining.view.only.description": "View events and dining locations around campus.", + "privacy.entry.event_and_dining.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.event_and_dining.location.sharing.title": "Location Sharing", + "privacy.entry.event_and_dining.location.sharing.description": "View events and dining locations near you.", + "privacy.entry.event_and_dining.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.event_and_dining.personalizations.title": "Personalizations", + "privacy.entry.event_and_dining.personalizations.description": "View events and dining locations near you.", + "privacy.entry.event_and_dining.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.event_and_dining.notifications.title": "Notificaitons", + "privacy.entry.event_and_dining.notifications.description": "Get various notifications & receive reminders of items you have starred in the app.", + "privacy.entry.event_and_dining.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.event_and_dining.sharing.title": "Sharing", + "privacy.entry.event_and_dining.sharing.description": "Use the SMARTS of the CONVERGE service to help yourself or a group pick events.", + "privacy.entry.event_and_dining.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + + "privacy.category.athletics.title": "Athletics", + "privacy.entry.athletics.view.only.title": "View Only", + "privacy.entry.athletics.view.only.description": "See all upcoming schedules for athletic events, real-time scoring, rosters and athletic news.", + "privacy.entry.athletics.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.athletics.location.sharing.title": "Location Sharing", + "privacy.entry.athletics.location.sharing.description": "Find seats, nearby restrooms & concession stands. See real-time parking availability and directions.", + "privacy.entry.athletics.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.athletics.personalizations.title": "Personalizations", + "privacy.entry.athletics.personalizations.description": "Customize your experience to see schedules, rosters, scores and news for your favorite Illini teams.", + "privacy.entry.athletics.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.athletics.notifications.title": "Notificaitons", + "privacy.entry.athletics.notifications.description": "Receive notifications of event start and final scores for your favorite teams.", + "privacy.entry.athletics.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.athletics.sharing.title": "Identity", + "privacy.entry.athletics.sharing.description": "Store credit card information to buy tickets for athletic events.", + "privacy.entry.athletics.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + + "privacy.category.wallet.title": "Wallet", + "privacy.entry.wallet.personalizations.title": "Personalizations", + "privacy.entry.wallet.personalizations.description": "Customize your experience to see schedules, rosters, scores and news for your favorite Illini teams.", + "privacy.entry.wallet.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.wallet.personalizations.additional_description": "Check your Illini Cash & Meal Plan balances and see past transactions.", + "privacy.entry.wallet.personalizations.additional_data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.wallet.sharing.title": "Identity", + "privacy.entry.wallet.sharing.description": "Store credit card information to buy tickets for athletic events.", + "privacy.entry.wallet.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + + "privacy.category.health.title": "Health and Wellness", + "privacy.entry.health.view.only.title": "View Only", + "privacy.entry.health.view.only.description": "Locate and connect to resources to assist you with your EIGHT DIMENSIONS of health and wellness.", + "privacy.entry.health.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.health.location.sharing.title": "Location Sharing", + "privacy.entry.health.location.sharing.description": "Provide you wayfinding assistance to locating health and wellness resources on campus.", + "privacy.entry.health.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + + "privacy.category.involvement.title": "Student and Community Involvement", + "privacy.entry.involvement.view.only.title": "View Only", + "privacy.entry.involvement.view.only.description": "Show campus dining locations and see menus for up to 2 weeks in the future..", + "privacy.entry.involvement.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.involvement.location.sharing.title": "Location Sharing", + "privacy.entry.involvement.location.sharing.description": "Show event and dining locations near you. Allow you to create a quick poll and receive results from people nearby or far away.", + "privacy.entry.involvement.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.involvement.personalizations.title": "Personalizations", + "privacy.entry.involvement.personalizations.description": "Store your dining location preferences, including food allergies, and see current and future menus. See events, dining locations and news articles that interest you.", + "privacy.entry.involvement.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.involvement.notifications.title": "Notificaitons", + "privacy.entry.involvement.notifications.description": "Receive notifications that might interest you based on your preferences or location.", + "privacy.entry.involvement.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.involvement.sharing.title": "Identity", + "privacy.entry.involvement.sharing.description": "Provide assistance in registering to vote, voting by mail and finding voting locations on election day.", + "privacy.entry.involvement.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth." } diff --git a/assets/strings.es.json b/assets/strings.es.json index 2747affc5..6060e3e2b 100644 --- a/assets/strings.es.json +++ b/assets/strings.es.json @@ -159,6 +159,7 @@ "panel.browse.button.groups.hint":"", "panel.browse.button.safer.title":"Safer Illinois", "panel.browse.button.safer.hint":"", + "panel.browse.button.privacy_center.title": "Privacy Center", "panel.browse.label.browse_all": "Explorar todo", "panel.browse.label.offline.sign_in": "Iniciar sesión no disponible sin conexión.", @@ -590,6 +591,8 @@ "panel.settings.manage_interests.search.cancel.hint":"borra el filtro de búsqueda", "panel.settings.manage_interests.search.search_button.title":"Buscar", "panel.settings.manage_interests.search.search_button.hint": "filtrar etiquetas", + "panel.settings.manage_interests.button.save.title": "Save Changes", + "panel.settings.manage_interests.button.save.hint": "", "panel.settings.illini_cash.label.title": "Illini Cash", "panel.settings.illini_cash.label.history": "Historia", @@ -732,6 +735,8 @@ "panel.food_filters.label.exclude_ingredients.hint": "", "panel.food_filters.value.on": "Activado", "panel.food_filters.value.off": "Desactivado", + "panel.food_filters.button.save.title": "Save Changes", + "panel.food_filters.button.save.hint": "", "panel.food_special_offers.title.text": "Especiales", "panel.food_special_offers.available.text": "Disponible en estos lugares", @@ -811,7 +816,113 @@ "panel.settings.home.button.feedback.title": "Enviar comentarios", "panel.settings.home.button.feedback.hint": "", - "panel.settings.label.offline.phone_ver":"Verifique que su número de teléfono no esté disponible sin conexión.", + "panel.settings.privacy_center.label.title":"Privacy Center", + "panel.settings.privacy_center.label.description":"Personalize your privacy and data preferences.", + "panel.settings.privacy_center.label.finish_setup":"Finish setup", + "panel.settings.privacy_center.label.finish_setup_description":"Log in with your NetID or Telephone number to get the full Illinois experience.", + "panel.settings.privacy_center.button.verify_identity.title":"Verify your Identity", + "panel.settings.privacy_center.button.manage_privacy.title":"Manage and Understand Your Privacy", + "panel.settings.privacy_center.button.manage_privacy.hint":"", + "panel.settings.privacy_center.button.personal_information.title":"Personal Information", + "panel.settings.privacy_center.button.personal_information.hint":"", + "panel.settings.privacy_center.button.notifications.title":"Notification Preferences", + "panel.settings.privacy_center.button.notifications.":"", + "panel.settings.privacy_center.button.privacy_policy.title":"Privacy Statement", + "panel.settings.privacy_center.button.delete_data.title":"Forget all of my information", + "panel.settings.privacy_center.label.delete.description":"This will delete all of your personal information that was shared and stored within the app.", + "panel.settings.privacy_center.label.delete_message.title":"Forget all of your information?", + "panel.settings.privacy_center.label.delete_message.description1":"This will ", + "panel.settings.privacy_center.label.delete_message.description2":"Permanently ", + "panel.settings.privacy_center.label.delete_message.description3":"delete all of your information. You will not be able to retrieve your data after you have deleted it. Are you sure you want to continue?", + "panel.settings.privacy_center.button.forget_info.title": "Forget My Information", + + "panel.settings.verify_identity.label.title":"Verify your Identity", + "panel.settings.verify_identity.label.description":"Connect to Illinois", + "panel.settings.verify_identity.label.connect_id.desription1":"Are you a ", + "panel.settings.verify_identity.label.connect_id.desription2":"Student ", + "panel.settings.verify_identity.label.connect_id.desription3":"or ", + "panel.settings.verify_identity.label.connect_id.desription4":"faculty member ", + "panel.settings.verify_identity.label.connect_id.desription5":"? Log in with your NetID to see Illinois information specific to you, like your Illini Cash and meal plan.", + "panel.settings.verify_identity.button.connect_net_id.title":"Connect Your NetID", + "panel.settings.verify_identity.label.verify_phone.desription1":"Don’t have a NetID", + "panel.settings.verify_identity.label.verify_phone.desription2":"? Verify your phone number to save your preferences and have the same experience on more than one device. ", + "panel.settings.verify_identity.button.verify_phone.title":"Verify Your Phone Number", + + "panel.settings.login.netid.label.title":"Connect your NetID", + "panel.settings.login.netid.button.dont_continue.title":"Not right now", + "panel.settings.login.netid.label.title.hint":"", + "panel.settings.login.netid.label.description":"Log in with your NetID to use academic and dorm specific features.", + "panel.settings.login.netid.button.continue.title":"Log in with NetID", + "panel.settings.login.netid.button.continue.hint":"", + "panel.settings.login.netid.button.dont_continue.hint":"Skip verification", + "panel.settings.login.label.login_failed":"Unable to login. Please try again later", + + "panel.settings.login.phone.label.title":"Verify your phone number", + "panel.settings.login.phone.button.dont_continue.title":"Not right now", + "panel.settings.login.phone.label.title.hint":"", + "panel.settings.login.phone.label.description":"This saves your preferences so you can have the same experience on more than one device.", + "panel.settings.login.phone.button.continue.title":"Verify My Phone Number", + "panel.settings.login.phone.button.continue.hint":"", + "panel.settings.login.phone.button.dont_continue.hint":"Skip verification", + "panel.settings.label.offline.phone_ver":"Verify Your Phone Number is not available while offline.", + + "widget.settings.dialog.button.cancel.title": "Cancel", + + "panel.settings.notifications.label.title":"Notifications", + "panel.settings.notifications.label.desctiption":"Don’t miss an event or campus update.", + "panel.settings.notifications.label.notifications":"Notifications", + "panel.settings.notifications.label.info":"To receive notifications enable in your device's settings.", + "panel.settings.notifications.reminders":"Event reminders", + "panel.settings.notifications.athletics_updates":"Athletics updates", + "panel.settings.notifications.dining":"Dining specials", + "panel.settings.notifications.label.status.enabled":"Enabled", + "panel.settings.notifications.label.status.disabled":"Disabled", + + "panel.settings.personal_information.label.title":"Personal Information", + "panel.settings.personal_information.button.delete_data.title":"Delete my personal data", + "panel.settings.personal_information.label.description":"Delete your location history, your tags and categories, and saved events and dining locations.", + "panel.settings.personal_information.button.personal_information.title":"Personal Information", + "panel.settings.personal_information.button.personal_information.description":"Your name and contact info you’ve shared", + "panel.settings.personal_information.button.who_you_are.title":"Who You Are", + "panel.settings.personal_information.button.who_you_are.description":"Your status as a student, faculty, resident, etc.", + "panel.settings.personal_information.button.interest.title":"Your Interests", + "panel.settings.personal_information.button.interest.description":"Categories, teams, and tags you follow", + "panel.settings.personal_information.button.food_filters.title":"Food Filters", + "panel.settings.personal_information.button.food_filters.description":"Add or edit your food preferences", + "panel.settings.personal_information.label.delete_message.title":"Delete your personal data?", + "panel.settings.personal_information.label.delete_message.description1":"Select all that you would like to ", + "panel.settings.personal_information.label.delete_message.description2":"Permanently ", + "panel.settings.personal_information.label.delete_message.description3":"delete:", + "panel.settings.personal_information.button.forget_info.title": "Delete My Data", + + "panel.settings.new_privacy.privacy.label.title": "Choose Your Privacy Level", + "panel.settings.new_privacy.privacy.label.slider_help": "Adjust slider to change your privacy level", + "panel.settings.new_privacy.privacy.button.set_privacy.disabled.title": "Scroll to Review", + "panel.settings.new_privacy.privacy.button.set_privacy.title": "Set my Privacy", + "panel.settings.new_privacy.privacy.button.set_privacy.disabled.hint": "", + "panel.settings.new_privacy.privacy.button.set_privacy.hint": "", + "panel.settings.new_privacy.privacy.dialog.update_privacy.title": "Your new \nprivacy level", + "panel.settings.new_privacy.privacy.dialog.update_privacy.button.back.title": "Back", + "panel.settings.new_privacy.privacy.dialog.label.new_privacy": "Privacy Level: ", + "panel.settings.new_privacy.privacy.dialog.update_privacy.label2": "This change requires us to make the following changes:", + "panel.settings.new_privacy.privacy.dialog.update_privacy.confirm": "Are you sure?", + "panel.settings.new_privacy.privacy.dialog.update_privacy.yes": "Yes", + "panel.settings.new_privacy.privacy.dialog.update_privacy.no": "No", + "panel.settings.new_privacy.privacy.label.set_your_privacy_level": "Set your privacy level", + "panel.settings.new_privacy.privacy.label.update_your_privacy_level": "Update your privacy level", + "panel.settings.new_privacy.privacy.label.set_your_privacy_level.hint": "Header 1", + "panel.settings.new_privacy.privacy.label.update_your_privacy_level.hint": "Header 1", + "panel.settings.new_privacy.privacy.label.some_details_have_changed": "Some details have changed", + "panel.settings.new_privacy.privacy.label.some_details_have_changed.hint": "Header 2", + "panel.settings.new_privacy.label.description.title": "Features and Data Collection", + "panel.settings.new_privacy.label.description.info": "Learn more about specific features, and use dropdown for more information about how data is being used.", + "panel.settings.new_privacy.button.close_all.title": "Close All", + "panel.settings.new_privacy.button.expand_all.title": "Expand All", + "panel.settings.new_privacy.label.hint": "Double tap to ", + "panel.settings.new_privacy.button.expand_data.title": "See Data Usage", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.hint": "Privacy Level", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.increase": "increased to", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.decrease": "decreased to", "panel.create_event.header.title":"Crea Un Evento", "panel.create_event.title":"Crear un evento", @@ -880,6 +991,16 @@ "panel.profile_info.dialog.remove_my_information.subtitle":"¿Está seguro?", "panel.profile_info.dialog.remove_my_information.yes.title":"Sí", "panel.profile_info.dialog.remove_my_information.no.title": "No", + "panel.profile_info.phone_number.name.title": "Full Name", + "panel.profile_info.phone_number.name.hint": "", + "panel.profile_info.phone_number.email.title": "Email", + "panel.profile_info.phone_number.email.hint": "", + "panel.profile_info.button.save.title":"Save Changes", + "panel.profile_info.button.save.hint":"", + "panel.profile_info.logout.title":"Illinois", + "panel.profile_info.logout.message":"Are you sure you want to sign out?", + "panel.profile_info.logout.button.yes":"Yes", + "panel.profile_info.logout.no":"No", "panel.create_poll.header.title": "Crear una encuesta rápida", "panel.create_poll.description": "Las personas que se encuentren a menos de 100 pies de usted con Bluetooth activado y con la aplicación en ejecución serán notificadas y podrán votar a través de la aplicación de Illinois.", @@ -1455,5 +1576,79 @@ "com.illinois.features2.entry.log_out":"Cerrar sesión en el sistema", "com.illinois.features2.entry.disable_notifications":"Desactivar las notificaciones", "com.illinois.features2.entry.remove_credit_card":"Eliminar la información de su tarjeta de crédito", - "com.illinois.features2.entry.dont_share_location":"No comparta sus datos con otros usuarios." + "com.illinois.features2.entry.dont_share_location":"No comparta sus datos con otros usuarios.", + + "privacy.category.description.1": "You may not be able to use all features, but you are anonymous and we don't ask for anything or store any data. Anonymous data will be collected and used to optimize app performance.", + "privacy.category.description.2": "See what's happening around you. We use Wifi and Bluetooth location services to improve your experience, but we never store that data.", + "privacy.category.description.3": "You can personalize and customize the app. Wifi and Bluetooth location data is stored over time to make recommendations and improve your overall app experience.", + "privacy.category.description.4": "Let the app work for you. \nYou can access your iCard, save credit cards to make future purchases easier, access health information, and get notifications based on your specific interests.", + "privacy.category.description.5": "Access all features, get connected to campus, and let the app suggest tailored experiences that you and your friends all enjoy.", + "privacy.category.event_and_dining.title": "Events and Dining \nAround Campus", + "privacy.entry.event_and_dining.view.only.title": "View Only", + "privacy.entry.event_and_dining.view.only.description": "View events and dining locations around campus.", + "privacy.entry.event_and_dining.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.event_and_dining.location.sharing.title": "Location Sharing", + "privacy.entry.event_and_dining.location.sharing.description": "View events and dining locations near you.", + "privacy.entry.event_and_dining.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.event_and_dining.personalizations.title": "Personalizations", + "privacy.entry.event_and_dining.personalizations.description": "View events and dining locations near you.", + "privacy.entry.event_and_dining.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.event_and_dining.notifications.title": "Notificaitons", + "privacy.entry.event_and_dining.notifications.description": "Get various notifications & receive reminders of items you have starred in the app.", + "privacy.entry.event_and_dining.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.event_and_dining.sharing.title": "Sharing", + "privacy.entry.event_and_dining.sharing.description": "Use the SMARTS of the CONVERGE service to help yourself or a group pick events.", + "privacy.entry.event_and_dining.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + + "privacy.category.athletics.title": "Athletics", + "privacy.entry.athletics.view.only.title": "View Only", + "privacy.entry.athletics.view.only.description": "See all upcoming schedules for athletic events, real-time scoring, rosters and athletic news.", + "privacy.entry.athletics.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.athletics.location.sharing.title": "Location Sharing", + "privacy.entry.athletics.location.sharing.description": "Find seats, nearby restrooms & concession stands. See real-time parking availability and directions.", + "privacy.entry.athletics.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.athletics.personalizations.title": "Personalizations", + "privacy.entry.athletics.personalizations.description": "Customize your experience to see schedules, rosters, scores and news for your favorite Illini teams.", + "privacy.entry.athletics.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.athletics.notifications.title": "Notificaitons", + "privacy.entry.athletics.notifications.description": "Receive notifications of event start and final scores for your favorite teams.", + "privacy.entry.athletics.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.athletics.sharing.title": "Identity", + "privacy.entry.athletics.sharing.description": "Store credit card information to buy tickets for athletic events.", + "privacy.entry.athletics.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + + "privacy.category.wallet.title": "Wallet", + "privacy.entry.wallet.personalizations.title": "Personalizations", + "privacy.entry.wallet.personalizations.description": "Customize your experience to see schedules, rosters, scores and news for your favorite Illini teams.", + "privacy.entry.wallet.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.wallet.personalizations.additional_description": "Check your Illini Cash & Meal Plan balances and see past transactions.", + "privacy.entry.wallet.personalizations.additional_data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.wallet.sharing.title": "Identity", + "privacy.entry.wallet.sharing.description": "Store credit card information to buy tickets for athletic events.", + "privacy.entry.wallet.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + + "privacy.category.health.title": "Health and Wellness", + "privacy.entry.health.view.only.title": "View Only", + "privacy.entry.health.view.only.description": "Locate and connect to resources to assist you with your EIGHT DIMENSIONS of health and wellness.", + "privacy.entry.health.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.health.location.sharing.title": "Location Sharing", + "privacy.entry.health.location.sharing.description": "Provide you wayfinding assistance to locating health and wellness resources on campus.", + "privacy.entry.health.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + + "privacy.category.involvement.title": "Student and Community Involvement", + "privacy.entry.involvement.view.only.title": "View Only", + "privacy.entry.involvement.view.only.description": "Show campus dining locations and see menus for up to 2 weeks in the future..", + "privacy.entry.involvement.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.involvement.location.sharing.title": "Location Sharing", + "privacy.entry.involvement.location.sharing.description": "Show event and dining locations near you. Allow you to create a quick poll and receive results from people nearby or far away.", + "privacy.entry.involvement.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.involvement.personalizations.title": "Personalizations", + "privacy.entry.involvement.personalizations.description": "Store your dining location preferences, including food allergies, and see current and future menus. See events, dining locations and news articles that interest you.", + "privacy.entry.involvement.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.involvement.notifications.title": "Notificaitons", + "privacy.entry.involvement.notifications.description": "Receive notifications that might interest you based on your preferences or location.", + "privacy.entry.involvement.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.involvement.sharing.title": "Identity", + "privacy.entry.involvement.sharing.description": "Provide assistance in registering to vote, voting by mail and finding voting locations on election day.", + "privacy.entry.involvement.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth." } diff --git a/assets/strings.zh.json b/assets/strings.zh.json index 44dbfc098..165132f0f 100644 --- a/assets/strings.zh.json +++ b/assets/strings.zh.json @@ -159,6 +159,7 @@ "panel.browse.button.groups.hint":"", "panel.browse.button.safer.title":"Safer Illinois", "panel.browse.button.safer.hint":"", + "panel.browse.button.privacy_center.title": "Privacy Center", "panel.browse.label.browse_all": "浏览全部", "panel.browse.label.offline.sign_in":"离线时无法登录", @@ -293,8 +294,8 @@ "panel.athletics_roster_list.label.htwt.title":"高/重。", "panel.athletics_roster_list.label.year.title":"年", - "panel.athletics_coach_list.label.heading.title":"2019-2020教练", - "panel.athletics_coach_list.label.heading.title": "2019-2020 Coach", + "panel.athletics_coach_list.header.title": "Staff", + "panel.athletics_coach_list.label.heading.title": "2019-2020教练", "panel.athletics_coach_list.label.position.title":"位置", "panel.athletics_coach_detail.header.title":"员工", @@ -590,6 +591,8 @@ "panel.settings.manage_interests.search.cancel.hint":"清除搜索过滤器", "panel.settings.manage_interests.search.search_button.title":"搜索", "panel.settings.manage_interests.search.search_button.hint":"过滤器标签", + "panel.settings.manage_interests.button.save.title": "Save Changes", + "panel.settings.manage_interests.button.save.hint": "", "panel.settings.illini_cash.label.title":"Illini现金", "panel.settings.illini_cash.label.history":"历史", @@ -732,6 +735,8 @@ "panel.food_filters.label.exclude_ingredients.hint":"", "panel.food_filters.value.on":"开", "panel.food_filters.value.off":"关", + "panel.food_filters.button.save.title": "Save Changes", + "panel.food_filters.button.save.hint": "", "panel.food_special_offers.title.text": "特别", "panel.food_special_offers.available.text": "在这些地点提供", @@ -811,7 +816,113 @@ "panel.settings.home.button.feedback.title": "提交反馈", "panel.settings.home.button.feedback.hint": "", - "panel.settings.label.offline.phone_ver":"离线时无法验证电话号码。", + "panel.settings.privacy_center.label.title":"Privacy Center", + "panel.settings.privacy_center.label.description":"Personalize your privacy and data preferences.", + "panel.settings.privacy_center.label.finish_setup":"Finish setup", + "panel.settings.privacy_center.label.finish_setup_description":"Log in with your NetID or Telephone number to get the full Illinois experience.", + "panel.settings.privacy_center.button.verify_identity.title":"Verify your Identity", + "panel.settings.privacy_center.button.manage_privacy.title":"Manage and Understand Your Privacy", + "panel.settings.privacy_center.button.manage_privacy.hint":"", + "panel.settings.privacy_center.button.personal_information.title":"Personal Information", + "panel.settings.privacy_center.button.personal_information.hint":"", + "panel.settings.privacy_center.button.notifications.title":"Notification Preferences", + "panel.settings.privacy_center.button.notifications.":"", + "panel.settings.privacy_center.button.privacy_policy.title":"Privacy Statement", + "panel.settings.privacy_center.button.delete_data.title":"Forget all of my information", + "panel.settings.privacy_center.label.delete.description":"This will delete all of your personal information that was shared and stored within the app.", + "panel.settings.privacy_center.label.delete_message.title":"Forget all of your information?", + "panel.settings.privacy_center.label.delete_message.description1":"This will ", + "panel.settings.privacy_center.label.delete_message.description2":"Permanently ", + "panel.settings.privacy_center.label.delete_message.description3":"delete all of your information. You will not be able to retrieve your data after you have deleted it. Are you sure you want to continue?", + "panel.settings.privacy_center.button.forget_info.title": "Forget My Information", + + "panel.settings.verify_identity.label.title":"Verify your Identity", + "panel.settings.verify_identity.label.description":"Connect to Illinois", + "panel.settings.verify_identity.label.connect_id.desription1":"Are you a ", + "panel.settings.verify_identity.label.connect_id.desription2":"Student ", + "panel.settings.verify_identity.label.connect_id.desription3":"or ", + "panel.settings.verify_identity.label.connect_id.desription4":"faculty member ", + "panel.settings.verify_identity.label.connect_id.desription5":"? Log in with your NetID to see Illinois information specific to you, like your Illini Cash and meal plan.", + "panel.settings.verify_identity.button.connect_net_id.title":"Connect Your NetID", + "panel.settings.verify_identity.label.verify_phone.desription1":"Don’t have a NetID", + "panel.settings.verify_identity.label.verify_phone.desription2":"? Verify your phone number to save your preferences and have the same experience on more than one device. ", + "panel.settings.verify_identity.button.verify_phone.title":"Verify Your Phone Number", + + "panel.settings.login.netid.label.title":"Connect your NetID", + "panel.settings.login.netid.button.dont_continue.title":"Not right now", + "panel.settings.login.netid.label.title.hint":"", + "panel.settings.login.netid.label.description":"Log in with your NetID to use academic and dorm specific features.", + "panel.settings.login.netid.button.continue.title":"Log in with NetID", + "panel.settings.login.netid.button.continue.hint":"", + "panel.settings.login.netid.button.dont_continue.hint":"Skip verification", + "panel.settings.login.label.login_failed":"Unable to login. Please try again later", + + "panel.settings.login.phone.label.title":"Verify your phone number", + "panel.settings.login.phone.button.dont_continue.title":"Not right now", + "panel.settings.login.phone.label.title.hint":"", + "panel.settings.login.phone.label.description":"This saves your preferences so you can have the same experience on more than one device.", + "panel.settings.login.phone.button.continue.title":"Verify My Phone Number", + "panel.settings.login.phone.button.continue.hint":"", + "panel.settings.login.phone.button.dont_continue.hint":"Skip verification", + "panel.settings.label.offline.phone_ver":"Verify Your Phone Number is not available while offline.", + + "widget.settings.dialog.button.cancel.title": "Cancel", + + "panel.settings.notifications.label.title":"Notifications", + "panel.settings.notifications.label.desctiption":"Don’t miss an event or campus update.", + "panel.settings.notifications.label.notifications":"Notifications", + "panel.settings.notifications.label.info":"To receive notifications enable in your device's settings.", + "panel.settings.notifications.reminders":"Event reminders", + "panel.settings.notifications.athletics_updates":"Athletics updates", + "panel.settings.notifications.dining":"Dining specials", + "panel.settings.notifications.label.status.enabled":"Enabled", + "panel.settings.notifications.label.status.disabled":"Disabled", + + "panel.settings.personal_information.label.title":"Personal Information", + "panel.settings.personal_information.button.delete_data.title":"Delete my personal data", + "panel.settings.personal_information.label.description":"Delete your location history, your tags and categories, and saved events and dining locations.", + "panel.settings.personal_information.button.personal_information.title":"Personal Information", + "panel.settings.personal_information.button.personal_information.description":"Your name and contact info you’ve shared", + "panel.settings.personal_information.button.who_you_are.title":"Who You Are", + "panel.settings.personal_information.button.who_you_are.description":"Your status as a student, faculty, resident, etc.", + "panel.settings.personal_information.button.interest.title":"Your Interests", + "panel.settings.personal_information.button.interest.description":"Categories, teams, and tags you follow", + "panel.settings.personal_information.button.food_filters.title":"Food Filters", + "panel.settings.personal_information.button.food_filters.description":"Add or edit your food preferences", + "panel.settings.personal_information.label.delete_message.title":"Delete your personal data?", + "panel.settings.personal_information.label.delete_message.description1":"Select all that you would like to ", + "panel.settings.personal_information.label.delete_message.description2":"Permanently ", + "panel.settings.personal_information.label.delete_message.description3":"delete:", + "panel.settings.personal_information.button.forget_info.title": "Delete My Data", + + "panel.settings.new_privacy.privacy.label.title": "Choose Your Privacy Level", + "panel.settings.new_privacy.privacy.label.slider_help": "Adjust slider to change your privacy level", + "panel.settings.new_privacy.privacy.button.set_privacy.disabled.title": "Scroll to Review", + "panel.settings.new_privacy.privacy.button.set_privacy.title": "Set my Privacy", + "panel.settings.new_privacy.privacy.button.set_privacy.disabled.hint": "", + "panel.settings.new_privacy.privacy.button.set_privacy.hint": "", + "panel.settings.new_privacy.privacy.dialog.update_privacy.title": "Your new \nprivacy level", + "panel.settings.new_privacy.privacy.dialog.update_privacy.button.back.title": "Back", + "panel.settings.new_privacy.privacy.dialog.label.new_privacy": "Privacy Level: ", + "panel.settings.new_privacy.privacy.dialog.update_privacy.label2": "This change requires us to make the following changes:", + "panel.settings.new_privacy.privacy.dialog.update_privacy.confirm": "Are you sure?", + "panel.settings.new_privacy.privacy.dialog.update_privacy.yes": "Yes", + "panel.settings.new_privacy.privacy.dialog.update_privacy.no": "No", + "panel.settings.new_privacy.privacy.label.set_your_privacy_level": "Set your privacy level", + "panel.settings.new_privacy.privacy.label.update_your_privacy_level": "Update your privacy level", + "panel.settings.new_privacy.privacy.label.set_your_privacy_level.hint": "Header 1", + "panel.settings.new_privacy.privacy.label.update_your_privacy_level.hint": "Header 1", + "panel.settings.new_privacy.privacy.label.some_details_have_changed": "Some details have changed", + "panel.settings.new_privacy.privacy.label.some_details_have_changed.hint": "Header 2", + "panel.settings.new_privacy.label.description.title": "Features and Data Collection", + "panel.settings.new_privacy.label.description.info": "Learn more about specific features, and use dropdown for more information about how data is being used.", + "panel.settings.new_privacy.button.close_all.title": "Close All", + "panel.settings.new_privacy.button.expand_all.title": "Expand All", + "panel.settings.new_privacy.label.hint": "Double tap to ", + "panel.settings.new_privacy.button.expand_data.title": "See Data Usage", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.hint": "Privacy Level", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.increase": "increased to", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.decrease": "decreased to", "panel.create_event.header.title":"创建活动", "panel.create_event.title":"创建活动", @@ -880,6 +991,16 @@ "panel.profile_info.dialog.remove_my_information.subtitle":"确定吗?", "panel.profile_info.dialog.remove_my_information.yes.title":"是的", "panel.profile_info.dialog.remove_my_information.no.title":"不", + "panel.profile_info.phone_number.name.title": "Full Name", + "panel.profile_info.phone_number.name.hint": "", + "panel.profile_info.phone_number.email.title": "Email", + "panel.profile_info.phone_number.email.hint": "", + "panel.profile_info.button.save.title":"Save Changes", + "panel.profile_info.button.save.hint":"", + "panel.profile_info.logout.title":"Illinois", + "panel.profile_info.logout.message":"Are you sure you want to sign out?", + "panel.profile_info.logout.button.yes":"Yes", + "panel.profile_info.logout.no":"No", "panel.create_poll.header.title": "创建快速投票", "panel.create_poll.description": "距离您100英尺以内、蓝牙开启且应用程序正在运行的用户将收到通知,并可以通过伊利诺伊应用程序投票.", @@ -1455,5 +1576,79 @@ "com.illinois.features2.entry.log_out":"登出", "com.illinois.features2.entry.disable_notifications":"关闭提示", "com.illinois.features2.entry.remove_credit_card":"删除信用卡信息", - "com.illinois.features2.entry.dont_share_location":"不和其他人分享我的数据" + "com.illinois.features2.entry.dont_share_location":"不和其他人分享我的数据", + + "privacy.category.description.1": "You may not be able to use all features, but you are anonymous and we don't ask for anything or store any data. Anonymous data will be collected and used to optimize app performance.", + "privacy.category.description.2": "See what's happening around you. We use Wifi and Bluetooth location services to improve your experience, but we never store that data.", + "privacy.category.description.3": "You can personalize and customize the app. Wifi and Bluetooth location data is stored over time to make recommendations and improve your overall app experience.", + "privacy.category.description.4": "Let the app work for you. \nYou can access your iCard, save credit cards to make future purchases easier, access health information, and get notifications based on your specific interests.", + "privacy.category.description.5": "Access all features, get connected to campus, and let the app suggest tailored experiences that you and your friends all enjoy.", + "privacy.category.event_and_dining.title": "Events and Dining \nAround Campus", + "privacy.entry.event_and_dining.view.only.title": "View Only", + "privacy.entry.event_and_dining.view.only.description": "View events and dining locations around campus.", + "privacy.entry.event_and_dining.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.event_and_dining.location.sharing.title": "Location Sharing", + "privacy.entry.event_and_dining.location.sharing.description": "View events and dining locations near you.", + "privacy.entry.event_and_dining.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.event_and_dining.personalizations.title": "Personalizations", + "privacy.entry.event_and_dining.personalizations.description": "View events and dining locations near you.", + "privacy.entry.event_and_dining.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.event_and_dining.notifications.title": "Notificaitons", + "privacy.entry.event_and_dining.notifications.description": "Get various notifications & receive reminders of items you have starred in the app.", + "privacy.entry.event_and_dining.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.event_and_dining.sharing.title": "Sharing", + "privacy.entry.event_and_dining.sharing.description": "Use the SMARTS of the CONVERGE service to help yourself or a group pick events.", + "privacy.entry.event_and_dining.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + + "privacy.category.athletics.title": "Athletics", + "privacy.entry.athletics.view.only.title": "View Only", + "privacy.entry.athletics.view.only.description": "See all upcoming schedules for athletic events, real-time scoring, rosters and athletic news.", + "privacy.entry.athletics.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.athletics.location.sharing.title": "Location Sharing", + "privacy.entry.athletics.location.sharing.description": "Find seats, nearby restrooms & concession stands. See real-time parking availability and directions.", + "privacy.entry.athletics.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.athletics.personalizations.title": "Personalizations", + "privacy.entry.athletics.personalizations.description": "Customize your experience to see schedules, rosters, scores and news for your favorite Illini teams.", + "privacy.entry.athletics.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.athletics.notifications.title": "Notificaitons", + "privacy.entry.athletics.notifications.description": "Receive notifications of event start and final scores for your favorite teams.", + "privacy.entry.athletics.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.athletics.sharing.title": "Identity", + "privacy.entry.athletics.sharing.description": "Store credit card information to buy tickets for athletic events.", + "privacy.entry.athletics.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + + "privacy.category.wallet.title": "Wallet", + "privacy.entry.wallet.personalizations.title": "Personalizations", + "privacy.entry.wallet.personalizations.description": "Customize your experience to see schedules, rosters, scores and news for your favorite Illini teams.", + "privacy.entry.wallet.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.wallet.personalizations.additional_description": "Check your Illini Cash & Meal Plan balances and see past transactions.", + "privacy.entry.wallet.personalizations.additional_data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.wallet.sharing.title": "Identity", + "privacy.entry.wallet.sharing.description": "Store credit card information to buy tickets for athletic events.", + "privacy.entry.wallet.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + + "privacy.category.health.title": "Health and Wellness", + "privacy.entry.health.view.only.title": "View Only", + "privacy.entry.health.view.only.description": "Locate and connect to resources to assist you with your EIGHT DIMENSIONS of health and wellness.", + "privacy.entry.health.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.health.location.sharing.title": "Location Sharing", + "privacy.entry.health.location.sharing.description": "Provide you wayfinding assistance to locating health and wellness resources on campus.", + "privacy.entry.health.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + + "privacy.category.involvement.title": "Student and Community Involvement", + "privacy.entry.involvement.view.only.title": "View Only", + "privacy.entry.involvement.view.only.description": "Show campus dining locations and see menus for up to 2 weeks in the future..", + "privacy.entry.involvement.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.involvement.location.sharing.title": "Location Sharing", + "privacy.entry.involvement.location.sharing.description": "Show event and dining locations near you. Allow you to create a quick poll and receive results from people nearby or far away.", + "privacy.entry.involvement.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.involvement.personalizations.title": "Personalizations", + "privacy.entry.involvement.personalizations.description": "Store your dining location preferences, including food allergies, and see current and future menus. See events, dining locations and news articles that interest you.", + "privacy.entry.involvement.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.involvement.notifications.title": "Notificaitons", + "privacy.entry.involvement.notifications.description": "Receive notifications that might interest you based on your preferences or location.", + "privacy.entry.involvement.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.involvement.sharing.title": "Identity", + "privacy.entry.involvement.sharing.description": "Provide assistance in registering to vote, voting by mail and finding voting locations on election day.", + "privacy.entry.involvement.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth." } diff --git a/images/2.0x/group-3-blue.png b/images/2.0x/group-3-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..335a9c4b7093ffb2a250aaae642c74e1372f45a0 GIT binary patch literal 11352 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�m%7<~&w0 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 SIycY*jH9Kdr&_CG^X`9mm^tzQ literal 0 HcmV?d00001 diff --git a/images/3.0x/group-3-blue.png b/images/3.0x/group-3-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..781ab3b0e35d6f880226ba451bdc4924efea94a8 GIT binary patch literal 20005 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�y--jS>=|EDO8qUs&1fZb(;M#{qaNklb^7A6LiC@P@*hN zs^y}-bH@5Y7{P4U7wnSl2P5gP{*=D60bSjEX_>3)l0;L-Fk7?-59l5}q&I#8AFXh;LP2kS3IwQ>1fQH?tZgntQ15`~XO(G1lP2K8Yca8`)7lht|c)J!O z<|MpUld7Nme&mYcqKH0hIzL%eNUy!3KvAWusNJK{>|?fuGzZ7D2KQ<8kEu0m(HEo% zyT~JyWlZ2*;xDIo%Ts*k?5fd}WyM|FD|5Fq^lczOz-;zu4^J4}`xl+VAFw-zD5`cX zdx<6~+B$fPcPvi-&3g6v`!xF#+6ND?yJO6@;F2_~E;Tts%F;xb zzpSRX%Xe&@GeY;0IBTKVPcpqTD>vB=7PXo5Ns}mi)IqY zDWQ6mxmAt2)scAdfpCE8jcN9eG24gK>Lw^^RaS)VC82j&k%WYq;gWP0UNw5^-D~vr z8TucB|MD!uFx&J-KMDoM_z{g}53SbVx+F?fHR7$qdj6K>^qGYGF3HkZj=x2Dp&KUc z;dcyZz*(s)fTb6z3@JuKeJgYN&Jec zVbpDE4I9JiV0TBf2M=hEzNabamqjk@U+qUr{Q*~V=4Fib&v6>1Q( z@~#jM#2ehpw;~gle3Qr{Pj^?a;69-DCCBGCkP4KlmZBhzTta_|qA0?tUb+AUgL_!5 zL&0RL+kzO>9#(Gjaj;<*c~WN9qG5Lg^p<6$yNJ+Vv5S1-z#-VoSkK;69?W^^n{lH} z+CD??GxT3oGpOPKaPL+`J@souVlI;pxzdw8Gj@C3Uzrfv&U?;^|CMLwawkgFYj z7r1hkeAP_1eTKf1d0P=g_yUSNVY_-yfT&uk+?06r?`+)x9^R=p>?NN#U*|qOB_SZh3_t*aVQm_927v`$R TQkk?X00000NkvXXu0mjfL8{_f literal 0 HcmV?d00001 diff --git a/images/group-3-blue.png b/images/group-3-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..a6a7d1c08bb6d97a56b534aab646df9e3c7cf510 GIT binary patch literal 4269 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 P00000NkvXXu0mjfE^a}5 literal 0 HcmV?d00001 diff --git a/lib/model/PrivacyData.dart b/lib/model/PrivacyData.dart index 380ce2fc2..d4afadfd3 100644 --- a/lib/model/PrivacyData.dart +++ b/lib/model/PrivacyData.dart @@ -86,11 +86,12 @@ class PrivacyData{ class PrivacyCategory{ String title; + String titleKey; Map description; List entries; List entries2; - PrivacyCategory({this.title,this.description,this.entries, this.entries2}); + PrivacyCategory({this.title, this.titleKey, this.description,this.entries, this.entries2}); factory PrivacyCategory.fromJson(Map json) { List entriesJson = json['entries']; @@ -104,6 +105,7 @@ class PrivacyCategory{ return PrivacyCategory( title:PrivacyData().getLocalizedString(json["title"]), + titleKey:PrivacyData().getLocalizedString(json["title_key"]), description:json['description'], entries: entries, entries2: entries2 diff --git a/lib/ui/dining/FoodFiltersPanel.dart b/lib/ui/dining/FoodFiltersPanel.dart index 2c078c27f..fdd3c1ac3 100644 --- a/lib/ui/dining/FoodFiltersPanel.dart +++ b/lib/ui/dining/FoodFiltersPanel.dart @@ -225,8 +225,8 @@ class _FoodFiltersPanelState extends State { Padding( padding: EdgeInsets.symmetric( vertical: 20,horizontal: 16), child: RoundedButton( - label: Localization().getStringEx("panel.profile_info.button.save.title", "Save Changes"), - hint: Localization().getStringEx("panel.profile_info.button.save.hint", ""), + label: Localization().getStringEx("panel.food_filters.button.save.title", "Save Changes"), + hint: Localization().getStringEx("panel.food_filters.button.save.hint", ""), enabled: _canSave, fontFamily: Styles().fontFamilies.bold, backgroundColor: Styles().colors.white, diff --git a/lib/ui/settings/SettingsManageInterestsPanel.dart b/lib/ui/settings/SettingsManageInterestsPanel.dart index 006af4187..187d5860f 100644 --- a/lib/ui/settings/SettingsManageInterestsPanel.dart +++ b/lib/ui/settings/SettingsManageInterestsPanel.dart @@ -522,8 +522,8 @@ class _SettingsManageInterestsState extends State Padding( padding: EdgeInsets.symmetric( vertical: 20,horizontal: 16), child: RoundedButton( - label: Localization().getStringEx("panel.profile_info.button.save.title", "Save Changes"), - hint: Localization().getStringEx("panel.profile_info.button.save.hint", ""), + label: Localization().getStringEx("panel.settings.manage_interests.button.save.title", "Save Changes"), + hint: Localization().getStringEx("panel.settings.manage_interests.button.save.hint", ""), enabled: _canSave, fontFamily: Styles().fontFamilies.bold, backgroundColor: _canSave? Styles().colors.white: Styles().colors.background, diff --git a/lib/ui/settings/SettingsNewPrivacyPanel.dart b/lib/ui/settings/SettingsNewPrivacyPanel.dart index e18680b40..985414d1e 100644 --- a/lib/ui/settings/SettingsNewPrivacyPanel.dart +++ b/lib/ui/settings/SettingsNewPrivacyPanel.dart @@ -133,7 +133,7 @@ class SettingsNewPrivacyPanelState extends State implem ? SimpleHeaderBarWithBack( context: context, titleWidget: Text( - Localization().getStringEx("panel.settings_new.privacy.label.title", "Choose Your Privacy Level"), + Localization().getStringEx("panel.settings.new_privacy.privacy.label.title", "Choose Your Privacy Level"), style: TextStyle(color: Colors.white, fontSize: 16, fontWeight: FontWeight.w900, letterSpacing: 1.0), ), ) @@ -187,7 +187,7 @@ class SettingsNewPrivacyPanelState extends State implem Row(children: [ Expanded(child: Text( - Localization().getStringEx("panel.settings_new.privacy.label.slider_help", "Adjust slider to change your privacy level"), + Localization().getStringEx("panel.settings.new_privacy.privacy.label.slider_help", "Adjust slider to change your privacy level"), style: TextStyle(color: Styles().colors.textSurface, fontSize: 18, fontFamily:Styles().fontFamilies.bold), textAlign: TextAlign.center, ), @@ -220,11 +220,11 @@ class SettingsNewPrivacyPanelState extends State implem child: Stack(children: [ RoundedButton( label: _disabled - ? Localization().getStringEx("panel.settings_new.privacy.button.set_privacy.disabled.title", "Scroll to Review") - : Localization().getStringEx("panel.settings_new.privacy.button.set_privacy.title", "Set my Privacy"), + ? Localization().getStringEx("panel.settings.new_privacy.privacy.button.set_privacy.disabled.title", "Scroll to Review") + : Localization().getStringEx("panel.settings.new_privacy.privacy.button.set_privacy.title", "Set my Privacy"), hint: _disabled - ? Localization().getStringEx("panel.settings_new.privacy.button.set_privacy.disabled.hint", "") - : Localization().getStringEx("panel.settings_new.privacy.button.set_privacy.hint", ""), + ? Localization().getStringEx("panel.settings.new_privacy.privacy.button.set_privacy.disabled.hint", "") + : Localization().getStringEx("panel.settings.new_privacy.privacy.button.set_privacy.hint", ""), height: 48, borderColor: _disabled ? Styles().colors.disabledTextColorTwo : Styles().colors.fillColorSecondary, backgroundColor: Styles().colors.fillColorPrimaryVariant, @@ -267,7 +267,7 @@ class SettingsNewPrivacyPanelState extends State implem child: Semantics(button:false, hint: "${_sliderValue?.round()?.toString() ?? ""}", child: Text( - Localization().getStringEx("panel.settings_new.privacy.dialog.update_privacy.title", "Your new \nprivacy level"), + Localization().getStringEx("panel.settings.new_privacy.privacy.dialog.update_privacy.title", "Your new \nprivacy level"), style: TextStyle(fontSize: 24, color: Colors.white, fontFamily: Styles().fontFamilies.bold), textAlign: TextAlign.center, ), @@ -287,7 +287,7 @@ class SettingsNewPrivacyPanelState extends State implem borderRadius: BorderRadius.all(Radius.circular(15)), border: Border.all(color: Styles().colors.white, width: 2), ), - child: Semantics( button: true, label: Localization().getStringEx("panel.settings_new.privacy.dialog.update_privacy.button.back.title", "Back"),child: + child: Semantics( button: true, label: Localization().getStringEx("panel.settings.new_privacy.privacy.dialog.update_privacy.button.back.title", "Back"),child: Center(child: ExcludeSemantics( child: Text( @@ -349,7 +349,7 @@ class SettingsNewPrivacyPanelState extends State implem ), child: Center( child: Semantics( - label: Localization().getStringEx("panel.settings_new.privacy.dialog.label.new_privacy", "Privacy Level: "), + label: Localization().getStringEx("panel.settings.new_privacy.privacy.dialog.label.new_privacy", "Privacy Level: "), child: Text( _sliderValue?.round()?.toString() ?? "", style: TextStyle(color: Styles().colors.fillColorPrimary, fontSize: 24, fontFamily: Styles().fontFamilies.extraBold), @@ -366,7 +366,7 @@ class SettingsNewPrivacyPanelState extends State implem Padding( padding: const EdgeInsets.symmetric(horizontal: 26), child: Text( - Localization().getStringEx("panel.settings_new.privacy.dialog.update_privacy.label2", "This change requires us to make the following changes:"), + Localization().getStringEx("panel.settings.new_privacy.privacy.dialog.update_privacy.label2", "This change requires us to make the following changes:"), textAlign: TextAlign.center, style: TextStyle(fontFamily: Styles().fontFamilies.bold, fontSize: 16, color: Styles().colors.fillColorPrimaryVariant), ), @@ -376,7 +376,7 @@ class SettingsNewPrivacyPanelState extends State implem height: 10, ), Text( - Localization().getStringEx("panel.settings_new.privacy.dialog.update_privacy.confirm", "Are you sure?"), + Localization().getStringEx("panel.settings.new_privacy.privacy.dialog.update_privacy.confirm", "Are you sure?"), textAlign: TextAlign.center, style: TextStyle(fontFamily: Styles().fontFamilies.bold, fontSize: 16, color: Styles().colors.fillColorPrimaryVariant), ), @@ -398,7 +398,7 @@ class SettingsNewPrivacyPanelState extends State implem backgroundColor: Colors.transparent, borderColor: Styles().colors.fillColorSecondary, textColor: Styles().colors.fillColorPrimary, - label: Localization().getStringEx("panel.settings_new.privacy.dialog.update_privacy.yes", "Yes")), + label: Localization().getStringEx("panel.settings.new_privacy.privacy.dialog.update_privacy.yes", "Yes")), ), Container( width: 10, @@ -412,7 +412,7 @@ class SettingsNewPrivacyPanelState extends State implem backgroundColor: Colors.transparent, borderColor: Styles().colors.fillColorSecondary, textColor: Styles().colors.fillColorPrimary, - label: Localization().getStringEx("panel.settings_new.privacy.dialog.update_privacy.no", "No")) + label: Localization().getStringEx("panel.settings.new_privacy.privacy.dialog.update_privacy.no", "No")) ) ], ), @@ -507,11 +507,11 @@ class SettingsNewPrivacyPanelState extends State implem Widget _titleLayout() { String title = (widget.mode != SettingsPrivacyPanelMode.update) - ? Localization().getStringEx("panel.settings_new.privacy.label.set_your_privacy_level", "Set your privacy level") - : Localization().getStringEx("panel.settings_new.privacy.label.update_your_privacy_level", "Update your privacy level"); + ? Localization().getStringEx("panel.settings.new_privacy.privacy.label.set_your_privacy_level", "Set your privacy level") + : Localization().getStringEx("panel.settings.new_privacy.privacy.label.update_your_privacy_level", "Update your privacy level"); String hint = (widget.mode != SettingsPrivacyPanelMode.update) - ? Localization().getStringEx("panel.settings_new.privacy.label.set_your_privacy_level.hint", "Header 1") - : Localization().getStringEx("panel.settings_new.privacy.label.update_your_privacy_level.hint", "Header 1"); + ? Localization().getStringEx("panel.settings.new_privacy.privacy.label.set_your_privacy_level.hint", "Header 1") + : Localization().getStringEx("panel.settings.new_privacy.privacy.label.update_your_privacy_level.hint", "Header 1"); Widget titleWidget = Semantics( label: title, hint: hint, @@ -530,8 +530,8 @@ class SettingsNewPrivacyPanelState extends State implem Widget subTitleWidget; if (widget.mode == SettingsPrivacyPanelMode.update) { - String subTitle = Localization().getStringEx("panel.settings_new.privacy.label.some_details_have_changed", "Some details have changed"); - String subTitleHint = Localization().getStringEx("panel.settings_new.privacy.label.some_details_have_changed.hint", "Header 2"); + String subTitle = Localization().getStringEx("panel.settings.new_privacy.privacy.label.some_details_have_changed", "Some details have changed"); + String subTitleHint = Localization().getStringEx("panel.settings.new_privacy.privacy.label.some_details_have_changed.hint", "Header 2"); subTitleWidget = Semantics( label: subTitle, hint: subTitleHint, @@ -590,7 +590,7 @@ class SettingsNewPrivacyPanelState extends State implem color: Styles().colors.white, borderRadius: BorderRadius.all(Radius.circular(100)), ), - child: Semantics( label:Localization().getStringEx("panel.settings_new.label.privacy_level.title", "Privacy Level: "), + child: Semantics( label:Localization().getStringEx("panel.settings.new_privacy.label.privacy_level.title", "Privacy Level: "), child: Text(level.toString(), style: TextStyle(fontFamily: Styles().fontFamilies.extraBold, fontSize: 24, color: Styles().colors.fillColorPrimary)), ), @@ -648,13 +648,13 @@ class PrivacyEntriesListState extends State<_PrivacyEntriesListWidget> with Tic children: [ Container( padding: EdgeInsets.symmetric(horizontal: 22), - child: Text(Localization().getStringEx("panel.settings_new.label.description.title", "Features and Data Collection"), + child: Text(Localization().getStringEx("panel.settings.new_privacy.label.description.title", "Features and Data Collection"), style: TextStyle(fontFamily: Styles().fontFamilies.bold, color: Styles().colors.fillColorPrimary, fontSize: 20)), ), Container(height: 7,), Container( padding: EdgeInsets.symmetric(horizontal: 22), - child: Text(Localization().getStringEx("panel.settings_new.label.description.info", "Learn more about specific features, and use dropdown for more information about how data is being used."), + child: Text(Localization().getStringEx("panel.settings.new_privacy.label.description.info", "Learn more about specific features, and use dropdown for more information about how data is being used."), style: TextStyle(fontFamily: Styles().fontFamilies.regular, color: Styles().colors.textSurface, fontSize: 16)), ), Container(height: 12,), @@ -669,7 +669,7 @@ class PrivacyEntriesListState extends State<_PrivacyEntriesListWidget> with Tic child: GestureDetector( onTap: _onTapExpandAll, child: Text( - _canClose? Localization().getStringEx("panel.settings_new.button.close_all.title","Close All") : Localization().getStringEx("panel.settings_new.button.expand_all.title","Expand All"), + _canClose? Localization().getStringEx("panel.settings.new_privacy.button.close_all.title","Close All") : Localization().getStringEx("panel.settings.new_privacy.button.expand_all.title","Expand All"), style: TextStyle(fontFamily: Styles().fontFamilies.regular, color: Styles().colors.textSurface, fontSize: 16) ), ) @@ -718,10 +718,10 @@ class PrivacyEntriesListState extends State<_PrivacyEntriesListWidget> with Tic key: expansionTileKey, initiallyExpanded: expanded, title: - Semantics(label: category.title, - hint: Localization().getStringEx("panel.settings_new.label.hint","Double tap to ") +(expanded?"Hide" : "Show ")+" information", + Semantics(label: Localization().getStringEx(category.titleKey??"",category.title), + hint: Localization().getStringEx("panel.settings.new_privacy.label.hint","Double tap to ") +(expanded?"Hide" : "Show ")+" information", excludeSemantics:true,child: - Container(child: Text(category.title, style: TextStyle(color: Styles().colors.white, fontFamily: Styles().fontFamilies.bold, fontSize: 16),))), + Container(child: Text(Localization().getStringEx(category.titleKey??"",category.title), style: TextStyle(color: Styles().colors.white, fontFamily: Styles().fontFamilies.bold, fontSize: 16),))), backgroundColor: Styles().colors.fillColorPrimary, children: _buildCategoryEntries(category), trailing: RotationTransition( @@ -889,7 +889,7 @@ class _PrivacyEntryState extends State<_PrivacyEntry> with TickerProviderStateMi padding: EdgeInsets.only(top: 8), child: Row( children: [ - Text(Localization().getStringEx("panel.settings_new.button.expand_data.title","See Data Usage"), + Text(Localization().getStringEx("panel.settings.new_privacy.button.expand_data.title","See Data Usage"), style: TextStyle(fontSize: 14, fontFamily: Styles().fontFamilies.regular, color: isEnabled? Styles().colors.fillColorPrimary: Styles().colors.fillColorPrimaryTransparent015), ), Container(width: 9,), @@ -979,11 +979,11 @@ class _PrivacyLevelSliderState extends State<_PrivacyLevelSlider> { valueIndicatorTextStyle: TextStyle(fontSize: 20, fontFamily: Styles().fontFamilies.extraBold, color: Styles().colors.fillColorPrimary)), child: MergeSemantics( child: Semantics( - label: Localization().getStringEx("panel.settings_new.privacy.button.set_privacy.slider.hint", "Privacy Level"), + label: Localization().getStringEx("panel.settings.new_privacy.privacy.button.set_privacy.slider.hint", "Privacy Level"), enabled: true, - increasedValue: Localization().getStringEx("panel.settings_new.privacy.button.set_privacy.slider.increase", "increased to") + + increasedValue: Localization().getStringEx("panel.settings.new_privacy.privacy.button.set_privacy.slider.increase", "increased to") + (_roundedValue + 1).toString(), - decreasedValue: Localization().getStringEx("panel.settings_new.privacy.button.set_privacy.slider.decrease", "decreased to") + + decreasedValue: Localization().getStringEx("panel.settings.new_privacy.privacy.button.set_privacy.slider.decrease", "decreased to") + (_roundedValue - 1).toString(), child: Padding( diff --git a/lib/ui/settings/SettingsPrivacyCenterPanel.dart b/lib/ui/settings/SettingsPrivacyCenterPanel.dart index edb711633..554bdd46c 100644 --- a/lib/ui/settings/SettingsPrivacyCenterPanel.dart +++ b/lib/ui/settings/SettingsPrivacyCenterPanel.dart @@ -87,7 +87,7 @@ class _SettingsPrivacyCenterPanelState extends State onPressed: _onTapBack))), Expanded(child:Container()), Container(height: 90, - child: Image.asset("images/group-3.png",excludeFromSemantics: true,), + child: Image.asset("images/group-3-blue.png",excludeFromSemantics: true,), ), Expanded(child:Container()), Container(width: 42,) @@ -366,13 +366,13 @@ class _SettingsPrivacyCenterPanelState extends State fontSize: 16, fontFamily: Styles().fontFamilies.regular, label: Localization().getStringEx("panel.settings.privacy_center.button.delete_data.title", "Forget all of my information"), - hint: Localization().getStringEx("panel.settings.privacy_center.label.description", "This will delete all of your personal information that was shared and stored within the app."), + hint: Localization().getStringEx("panel.settings.privacy_center.label.delete.description", "This will delete all of your personal information that was shared and stored within the app."), shadow: [BoxShadow(color: Color.fromRGBO(19, 41, 75, 0.3), spreadRadius: 2.0, blurRadius: 8.0, offset: Offset(0, 2))], onTap: _onTapDeleteData, ), Container(height: 16,), ExcludeSemantics( - child: Text(Localization().getStringEx("panel.settings.privacy_center.label.description", "This will delete all of your personal information that was shared and stored within the app."), + child: Text(Localization().getStringEx("panel.settings.privacy_center.label.delete.description", "This will delete all of your personal information that was shared and stored within the app."), textAlign: TextAlign.center, style: TextStyle(fontFamily: Styles().fontFamilies.regular, fontSize: 12, color: Styles().colors.textSurface),)), ],); diff --git a/lib/ui/settings/SettingsVerifyIdentityPanel.dart b/lib/ui/settings/SettingsVerifyIdentityPanel.dart index 263236ad7..242fea9bf 100644 --- a/lib/ui/settings/SettingsVerifyIdentityPanel.dart +++ b/lib/ui/settings/SettingsVerifyIdentityPanel.dart @@ -76,7 +76,7 @@ class _SettingsVerifyIdentityPanelState extends State Date: Tue, 1 Sep 2020 17:55:48 +0300 Subject: [PATCH 04/17] Version: 2.2.15 --- CHANGELOG.md | 5 ++++- pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26b639ee1..ae33fb4f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased -##[2.2.14+314] - 2020-08-31 +## [2.2.15] - 2020-09-01 +### Exposed Strings for localisation + +## [2.2.14] - 2020-08-31 ### Improved VO features [#24] diff --git a/pubspec.yaml b/pubspec.yaml index 01aa1b86c..a0972e9b9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -11,7 +11,7 @@ description: Illinois client application. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 2.2.14+314 +version: 2.2.15+315 environment: sdk: ">=2.2.0 <3.0.0" From 8e15fd4fbda22a3ac9739d870cc6f1a18ba07236 Mon Sep 17 00:00:00 2001 From: TodorBachvarov Date: Wed, 2 Sep 2020 15:21:10 +0300 Subject: [PATCH 05/17] Feature/issue 38 (#39) * SettingsRolesPanel: remove SaveButton * SettingsManageInterestsPanel: remove save button * FoodFiltersPanel: remove save button --- lib/ui/dining/FoodFiltersPanel.dart | 5 +- .../SettingsManageInterestsPanel.dart | 70 ++++++++++--------- lib/ui/settings/SettingsRolesPanel.dart | 18 ++--- 3 files changed, 49 insertions(+), 44 deletions(-) diff --git a/lib/ui/dining/FoodFiltersPanel.dart b/lib/ui/dining/FoodFiltersPanel.dart index fdd3c1ac3..bb46f3dca 100644 --- a/lib/ui/dining/FoodFiltersPanel.dart +++ b/lib/ui/dining/FoodFiltersPanel.dart @@ -148,7 +148,7 @@ class _FoodFiltersPanelState extends State { ), ), ), - _buildSaveButton() +// _buildSaveButton() ], ), backgroundColor: Styles().colors.background, @@ -202,7 +202,7 @@ class _FoodFiltersPanelState extends State { else{ _selectedTypesPrefs.add(foodOption); } - + DiningService().setIncludedFoodTypesPrefs(_selectedTypesPrefs.toList()); setState((){}); } @@ -215,6 +215,7 @@ class _FoodFiltersPanelState extends State { else{ _selectedIngredientsPrefs.add(foodOption); } + DiningService().setExcludedFoodIngredientsPrefs(_selectedIngredientsPrefs.toList()); setState((){}); } diff --git a/lib/ui/settings/SettingsManageInterestsPanel.dart b/lib/ui/settings/SettingsManageInterestsPanel.dart index 187d5860f..086246851 100644 --- a/lib/ui/settings/SettingsManageInterestsPanel.dart +++ b/lib/ui/settings/SettingsManageInterestsPanel.dart @@ -53,8 +53,8 @@ class _SettingsManageInterestsState extends State List _followingTags; bool _tagSearchMode = false; - //Athletics sports - List _preferredSports; +// //Athletics sports +// List _preferredSports; //Search TextEditingController _textEditingController = TextEditingController(); @@ -66,7 +66,7 @@ class _SettingsManageInterestsState extends State _initTabs(); _initCategories(); _initTags(); - _loadPreferredSports(); +// _loadPreferredSports(); //_stopProgress(); super.initState(); } @@ -143,7 +143,7 @@ class _SettingsManageInterestsState extends State _buildTabContent(), ])), )), - _buildSaveButton() +// _buildSaveButton() ]), _progress ? Container( @@ -164,7 +164,7 @@ class _SettingsManageInterestsState extends State case _InterestTab.Athletics: return Padding( padding: EdgeInsets.all(16), - child: AthleticsTeamsWidget(preferredSports: _preferredSports ?? List(), onSportTaped: (String sport){switchSport(sport);}), + child: AthleticsTeamsWidget(), //TBD pass _preferredSpords and tapListener if using save button ); } } @@ -186,10 +186,11 @@ class _SettingsManageInterestsState extends State } void _loadPreferences() { - _preferredCategories = List(); - if(User()?.getInterestsCategories()?.isNotEmpty??false){ - _preferredCategories.addAll(User()?.getInterestsCategories()); - } +// _preferredCategories = List(); +// if(User().getInterestsCategories()?.isNotEmpty??false){ +// _preferredCategories.addAll(User().getInterestsCategories()); +// } + _preferredCategories = User().getInterestsCategories() ?? new List(); setState(() {}); } @@ -231,17 +232,17 @@ class _SettingsManageInterestsState extends State selected: _preferredCategories.contains(categoryName), onTap: () { Analytics.instance.logSelect(target: "Category: $categoryName"); -// _startProgress(); -// User().switchInterestCategory(categoryName).then((_) { -// setState(() { -// _preferredCategories = User().getInterestsCategories(); -// -// _stopProgress(); -// AppSemantics.announceCheckBoxStateChange(context, _preferredCategories.contains(categoryName), categoryName); -// }); -// }); - switchCategory(categoryName); - setState(() {}); + _startProgress(); + User().switchInterestCategory(categoryName).then((_) { + setState(() { + _preferredCategories = User().getInterestsCategories(); + + _stopProgress(); + AppSemantics.announceCheckBoxStateChange(context, _preferredCategories.contains(categoryName), categoryName); + }); + }); +// switchCategory(categoryName); +// setState(() {}); })); } } @@ -261,11 +262,11 @@ class _SettingsManageInterestsState extends State //Tags void _initTags() { - _followingTags = List(); - if(User()?.getTags()?.isNotEmpty?? false) { - _followingTags.addAll(User()?.getTags()); - } - +// _followingTags = List(); +// if(User()?.getTags()?.isNotEmpty?? false) { +// _followingTags.addAll(User()?.getTags()); +// } + _followingTags = User().getTags(); ExploreService().loadEventTags().then((List tagList) { setState(() { _tags = tagList; @@ -431,13 +432,14 @@ class _SettingsManageInterestsState extends State } bool _isTagSelected(String tag) { - return _followingTags.contains(tag); //If we support positive/negative tags +// return _followingTags.contains(tag); + return User().isTagged(tag, true); } void _onTagTaped(String tag) { Analytics.instance.logSelect(target: "Tag: $tag"); -// User().switchTag(tag); - switchTag(tag); + User().switchTag(tag); +// switchTag(tag); AppSemantics.announceCheckBoxStateChange(context, _isTagSelected(tag), tag); } @@ -452,7 +454,7 @@ class _SettingsManageInterestsState extends State } //Athletics - void _loadPreferredSports() { +/* void _loadPreferredSports() { _preferredSports = List(); if(User()?.getSportsInterestSubCategories()?.isNotEmpty ?? false) { _preferredSports.addAll(User()?.getSportsInterestSubCategories()); @@ -469,7 +471,7 @@ class _SettingsManageInterestsState extends State } } setState(() {}); - } + }*/ // NotificationsListener @@ -517,7 +519,7 @@ class _SettingsManageInterestsState extends State //// //SaveButton - Widget _buildSaveButton(){ +/* Widget _buildSaveButton(){ return Padding( padding: EdgeInsets.symmetric( vertical: 20,horizontal: 16), @@ -573,13 +575,13 @@ class _SettingsManageInterestsState extends State return false; } return !IterableEquality().equals(_preferredSports, User().getSportsInterestSubCategories()); - } + }*/ //// //Progress -/*void _startProgress() { +void _startProgress() { setState(() { _progress = true; }); @@ -590,7 +592,7 @@ class _SettingsManageInterestsState extends State _progress = false; }); } -*/////// +////// static String _interestTabName(_InterestTab tab) { switch (tab) { diff --git a/lib/ui/settings/SettingsRolesPanel.dart b/lib/ui/settings/SettingsRolesPanel.dart index 9da158717..83b01a534 100644 --- a/lib/ui/settings/SettingsRolesPanel.dart +++ b/lib/ui/settings/SettingsRolesPanel.dart @@ -15,6 +15,8 @@ */ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:illinois/service/Localization.dart'; import 'package:illinois/service/Analytics.dart'; @@ -36,22 +38,22 @@ class _SettingsRolesPanelState extends State implements Noti //User _user; Set _selectedRoles = Set(); - //Timer _saveRolesTimer; + Timer _saveRolesTimer; @override void initState() { NotificationService().subscribe(this, User.notifyRolesUpdated); - _selectedRoles =UserRole.userRolesFromList(User().roles?.map((role) => role?.toJson())?.toList()) ?? Set(); + _selectedRoles = User().roles ?? Set(); super.initState(); } @override void dispose() { NotificationService().unsubscribe(this); - /*if (_saveRolesTimer != null) { + if (_saveRolesTimer != null) { _stopSaveRolesTimer(); _saveSelectedRoles(); - }*/ + } super.dispose(); } @@ -193,7 +195,7 @@ class _SettingsRolesPanelState extends State implements Noti ), ), )), - _buildSaveButton() +// _buildSaveButton() ],) ; } @@ -234,12 +236,12 @@ class _SettingsRolesPanelState extends State implements Noti setState(() {}); -// _startSaveRolesTimer(); + _startSaveRolesTimer(); } } //TBD clear up when sure that timer saving approach won't be needed - /*void _startSaveRolesTimer() { + void _startSaveRolesTimer() { _stopSaveRolesTimer(); _saveRolesTimer = Timer(Duration(seconds: 3), _saveSelectedRoles); } @@ -249,7 +251,7 @@ class _SettingsRolesPanelState extends State implements Noti _saveRolesTimer.cancel(); _saveRolesTimer = null; } - }*/ + } void _saveSelectedRoles() { User().roles = _selectedRoles; From 418b2ca3561d9e62f3b89f2db0c9683784aeeea9 Mon Sep 17 00:00:00 2001 From: Todor Bachvarov Date: Wed, 2 Sep 2020 15:39:32 +0300 Subject: [PATCH 06/17] Version: 2.2.16 --- CHANGELOG.md | 3 +++ pubspec.yaml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae33fb4f8..5c8a224fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +## [2.2.16] - 2020-09-02 +### Removed Save buttons from Profile Informations panels + ## [2.2.15] - 2020-09-01 ### Exposed Strings for localisation diff --git a/pubspec.yaml b/pubspec.yaml index a0972e9b9..af58ecc8f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -11,7 +11,7 @@ description: Illinois client application. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 2.2.15+315 +version: 2.2.16+316 environment: sdk: ">=2.2.0 <3.0.0" From 819ba68d5d72b6852e7d44d7d2a50a84553dcf73 Mon Sep 17 00:00:00 2001 From: TodorBachvarov Date: Thu, 3 Sep 2020 13:08:28 +0300 Subject: [PATCH 07/17] (#41) Update Privacy Center Hub Icon (#50) --- images/2.0x/group-3-blue.png | Bin 11352 -> 0 bytes images/2.0x/group-6.png | Bin 0 -> 6599 bytes images/3.0x/group-3-blue.png | Bin 20005 -> 0 bytes images/3.0x/group-6.png | Bin 0 -> 9858 bytes images/group-3-blue.png | Bin 4269 -> 0 bytes images/group-6.png | Bin 0 -> 3205 bytes lib/ui/settings/SettingsPrivacyCenterPanel.dart | 2 +- 7 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 images/2.0x/group-3-blue.png create mode 100644 images/2.0x/group-6.png delete mode 100644 images/3.0x/group-3-blue.png create mode 100644 images/3.0x/group-6.png delete mode 100644 images/group-3-blue.png create mode 100644 images/group-6.png diff --git a/images/2.0x/group-3-blue.png b/images/2.0x/group-3-blue.png deleted file mode 100644 index 335a9c4b7093ffb2a250aaae642c74e1372f45a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11352 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�m%7<~&w0 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 SIycY*jH9Kdr&_CG^X`9mm^tzQ diff --git a/images/2.0x/group-6.png b/images/2.0x/group-6.png new file mode 100644 index 0000000000000000000000000000000000000000..dd5f3851551a8b0ffe1b8fbd2a58641121e2059b GIT binary patch literal 6599 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 FV1j>-g0TPq literal 0 HcmV?d00001 diff --git a/images/3.0x/group-3-blue.png b/images/3.0x/group-3-blue.png deleted file mode 100644 index 781ab3b0e35d6f880226ba451bdc4924efea94a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20005 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�y--jS>=|EDO8qUs&1fZb(;M#{qaNklb^7A6LiC@P@*hN zs^y}-bH@5Y7{P4U7wnSl2P5gP{*=D60bSjEX_>3)l0;L-Fk7?-59l5}q&I#8AFXh;LP2kS3IwQ>1fQH?tZgntQ15`~XO(G1lP2K8Yca8`)7lht|c)J!O z<|MpUld7Nme&mYcqKH0hIzL%eNUy!3KvAWusNJK{>|?fuGzZ7D2KQ<8kEu0m(HEo% zyT~JyWlZ2*;xDIo%Ts*k?5fd}WyM|FD|5Fq^lczOz-;zu4^J4}`xl+VAFw-zD5`cX zdx<6~+B$fPcPvi-&3g6v`!xF#+6ND?yJO6@;F2_~E;Tts%F;xb zzpSRX%Xe&@GeY;0IBTKVPcpqTD>vB=7PXo5Ns}mi)IqY zDWQ6mxmAt2)scAdfpCE8jcN9eG24gK>Lw^^RaS)VC82j&k%WYq;gWP0UNw5^-D~vr z8TucB|MD!uFx&J-KMDoM_z{g}53SbVx+F?fHR7$qdj6K>^qGYGF3HkZj=x2Dp&KUc z;dcyZz*(s)fTb6z3@JuKeJgYN&Jec zVbpDE4I9JiV0TBf2M=hEzNabamqjk@U+qUr{Q*~V=4Fib&v6>1Q( z@~#jM#2ehpw;~gle3Qr{Pj^?a;69-DCCBGCkP4KlmZBhzTta_|qA0?tUb+AUgL_!5 zL&0RL+kzO>9#(Gjaj;<*c~WN9qG5Lg^p<6$yNJ+Vv5S1-z#-VoSkK;69?W^^n{lH} z+CD??GxT3oGpOPKaPL+`J@souVlI;pxzdw8Gj@C3Uzrfv&U?;^|CMLwawkgFYj z7r1hkeAP_1eTKf1d0P=g_yUSNVY_-yfT&uk+?06r?`+)x9^R=p>?NN#U*|qOB_SZh3_t*aVQm_927v`$R TQkk?X00000NkvXXu0mjfL8{_f diff --git a/images/3.0x/group-6.png b/images/3.0x/group-6.png new file mode 100644 index 0000000000000000000000000000000000000000..15e816557deb6785b6889c0e43a0806caa7679d7 GIT binary patch literal 9858 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 literal 0 HcmV?d00001 diff --git a/images/group-3-blue.png b/images/group-3-blue.png deleted file mode 100644 index a6a7d1c08bb6d97a56b534aab646df9e3c7cf510..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4269 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 P00000NkvXXu0mjfE^a}5 diff --git a/images/group-6.png b/images/group-6.png new file mode 100644 index 0000000000000000000000000000000000000000..fd3710c50e3a92e9e203e3472b2f004abf2e1ab4 GIT binary patch literal 3205 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 onPressed: _onTapBack))), Expanded(child:Container()), Container(height: 90, - child: Image.asset("images/group-3-blue.png",excludeFromSemantics: true,), + child: Image.asset("images/group-6.png",excludeFromSemantics: true,), ), Expanded(child:Container()), Container(width: 42,) From f65d7580fc32cfabb77483dd985fcf0efee747db Mon Sep 17 00:00:00 2001 From: TodorBachvarov Date: Thu, 3 Sep 2020 16:20:00 +0300 Subject: [PATCH 08/17] SettingsHomePanel: add privacy centre button (#53) --- lib/ui/settings/SettingsHomePanel.dart | 40 ++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/lib/ui/settings/SettingsHomePanel.dart b/lib/ui/settings/SettingsHomePanel.dart index e8e167bac..223760720 100644 --- a/lib/ui/settings/SettingsHomePanel.dart +++ b/lib/ui/settings/SettingsHomePanel.dart @@ -32,6 +32,7 @@ import 'package:illinois/service/NotificationService.dart'; import 'package:illinois/ui/WebPanel.dart'; import 'package:illinois/ui/dining/FoodFiltersPanel.dart'; import 'package:illinois/ui/onboarding/OnboardingLoginPhoneVerifyPanel.dart'; +import 'package:illinois/ui/settings/SettingsPrivacyCenterPanel.dart'; import 'package:illinois/ui/settings/SettingsRolesPanel.dart'; import 'package:illinois/ui/widgets/HeaderBar.dart'; import 'package:illinois/ui/widgets/TabBarWidget.dart'; @@ -125,6 +126,9 @@ class _SettingsHomePanelState extends State implements Notifi else if (code == 'feedback') { contentList.add(_buildFeedback(),); } + else if (code == 'privacy_center') { + contentList.add(_buildPrivacyCenterButton(),); + } } if (!kReleaseMode) { @@ -176,6 +180,42 @@ class _SettingsHomePanelState extends State implements Notifi bottomNavigationBar: TabBarWidget(), ); } + //Privacy Center + Widget _buildPrivacyCenterButton(){ + return GestureDetector( + onTap: (){ + Analytics.instance.logSelect(target: "Privacy Center"); + Navigator.push(context, CupertinoPageRoute(builder: (context) =>SettingsPrivacyCenterPanel())); + }, + child: Semantics( + button: true, + child:Container( + padding: EdgeInsets.only(left: 16, right: 16, top: 10), + child:Container( + padding: EdgeInsets.symmetric(horizontal: 12, vertical: 12), + decoration: BoxDecoration( + color: UiColors.fromHex("9318bb"), + //border: Border.all(color: Colors.grey, width: 1), + borderRadius: BorderRadius.circular(6), + boxShadow: [BoxShadow(color: Styles().colors.blackTransparent018, spreadRadius: 2.0, blurRadius: 6.0, offset: Offset(2, 2))] + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + Localization().getStringEx("panel.browse.button.privacy_center.title","Privacy Center"), + textAlign: TextAlign.start, + style: TextStyle( + color: Styles().colors.white, + fontSize: 20, + fontFamily: Styles().fontFamilies.bold), + ), + Image.asset("images/group-8.png", excludeFromSemantics: true,), + ],), + ), + ))); + } + // User Info From df670dd7d778e985769419884e2a0c5d40ef0014 Mon Sep 17 00:00:00 2001 From: Dobromir Dobrev Date: Thu, 3 Sep 2020 16:26:04 +0300 Subject: [PATCH 09/17] Feature/issue 51 (#54) * Show debug panel only for debug managers [Issue #51] * Update CHANGELOG.md --- CHANGELOG.md | 2 + lib/service/Auth.dart | 4 ++ lib/ui/settings/SettingsHomePanel.dart | 68 ++------------------------ 3 files changed, 9 insertions(+), 65 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c8a224fb..cb58447a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## Unreleased +### Changed +- Show debug panel only for debug managers.[#51](https://github.com/rokwire/illinois-app/issues/51) ## [2.2.16] - 2020-09-02 ### Removed Save buttons from Profile Informations panels diff --git a/lib/service/Auth.dart b/lib/service/Auth.dart index 79cc996db..399842bc6 100644 --- a/lib/service/Auth.dart +++ b/lib/service/Auth.dart @@ -156,6 +156,10 @@ class Auth with Service implements NotificationsListener { return authInfo?.userGroupMembership?.contains('urn:mace:uiuc.edu:urbana:authman:app-rokwire-service-policy-rokwire stadium poll manager') ?? false; } + bool get isDebugManager { + return authInfo?.userGroupMembership?.contains('urn:mace:uiuc.edu:urbana:authman:app-rokwire-service-policy-rokwire debug') ?? false; + } + bool isMemberOf(String groupName) { return authInfo?.userGroupMembership?.contains(groupName) ?? false; } diff --git a/lib/ui/settings/SettingsHomePanel.dart b/lib/ui/settings/SettingsHomePanel.dart index 223760720..5d7dc24a8 100644 --- a/lib/ui/settings/SettingsHomePanel.dart +++ b/lib/ui/settings/SettingsHomePanel.dart @@ -874,74 +874,12 @@ class _DebugContainerState extends State<_DebugContainer> { _clickedCount++; if (_clickedCount == 7) { - _showPinDialog(); + if (Auth().isDebugManager) { + Navigator.push(context, CupertinoPageRoute(builder: (context) => SettingsDebugPanel())); + } _clickedCount = 0; } }, ); } - - void _showPinDialog(){ - TextEditingController pinController = TextEditingController(text: (!kReleaseMode || (Config().configEnvironment == ConfigEnvironment.dev)) ? this.pinOfTheDay : ''); - showDialog(context: context, barrierDismissible: false, builder: (context) => Dialog( - child: Padding( - padding: EdgeInsets.all(18), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - Localization().getStringEx('app.title', 'Illinois'), - style: TextStyle(fontSize: 24, color: Colors.black), - ), - Padding( - padding: EdgeInsets.symmetric(vertical: 26), - child: Text( - Localization().getStringEx('panel.debug.label.pin', 'Please enter pin'), - textAlign: TextAlign.left, - style: TextStyle(fontFamily: Styles().fontFamilies.medium, fontSize: 16, color: Colors.black), - ), - ), - Container(height: 6,), - TextField(controller: pinController, autofocus: true, keyboardType: TextInputType.number, obscureText: true, - onSubmitted:(String value){ - _onEnterPin(value); - } - ,), - Container(height: 6,), - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - FlatButton( - onPressed: () { - Navigator.pop(context); - //_finish(); - }, - child: Text(Localization().getStringEx('dialog.cancel.title', 'Cancel'))), - Container(width: 6), - FlatButton( - onPressed: () { - _onEnterPin(pinController?.text); - //_finish(); - }, - child: Text(Localization().getStringEx('dialog.ok.title', 'OK'))) - ], - ) - ], - ), - ), - )); - } - - String get pinOfTheDay { - return AppDateTime().formatUniLocalTimeFromUtcTime(DateTime.now(), "MMdd"); - } - - void _onEnterPin(String pin){ - if (this.pinOfTheDay == pin) { - Navigator.pop(context); - Navigator.push(context, CupertinoPageRoute(builder: (context) => SettingsDebugPanel())); - } else { - AppToast.show("Invalid pin"); - } - } } \ No newline at end of file From f1601e6f93222b54f6db0c3f9625c56e99694133 Mon Sep 17 00:00:00 2001 From: Dobromir Dobrev Date: Thu, 3 Sep 2020 17:18:27 +0300 Subject: [PATCH 10/17] Feature/issue 55 (#56) * Update es and zh strings with the provided ones [Issue #55] * Update CHANGELOG.md --- CHANGELOG.md | 1 + assets/strings.es.json | 361 ++++++++++++++++++++-------------------- assets/strings.zh.json | 368 ++++++++++++++++++++--------------------- 3 files changed, 366 insertions(+), 364 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb58447a7..771f14670 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased ### Changed - Show debug panel only for debug managers.[#51](https://github.com/rokwire/illinois-app/issues/51) +- Update es and zh strings.[#55](https://github.com/rokwire/illinois-app/issues/55) ## [2.2.16] - 2020-09-02 ### Removed Save buttons from Profile Informations panels diff --git a/assets/strings.es.json b/assets/strings.es.json index 6060e3e2b..1e20780a4 100644 --- a/assets/strings.es.json +++ b/assets/strings.es.json @@ -159,7 +159,7 @@ "panel.browse.button.groups.hint":"", "panel.browse.button.safer.title":"Safer Illinois", "panel.browse.button.safer.hint":"", - "panel.browse.button.privacy_center.title": "Privacy Center", + "panel.browse.button.privacy_center.title": "Centro de privacidad", "panel.browse.label.browse_all": "Explorar todo", "panel.browse.label.offline.sign_in": "Iniciar sesión no disponible sin conexión.", @@ -206,7 +206,7 @@ "panel.athletics.button.see_more_events.hint": "", "panel.athletics.button.see_less_events.title": "Muestra menos", "panel.athletics.button.see_less_events.hint": "", - "panel.athletics.label.explore_athletics.title": "Explore Athletics", + "panel.athletics.label.explore_athletics.title": "Explore el atletismo", "panel.athletics.button.upcoming_events.title": "Próximos eventos", "panel.athletics.button.upcoming_events.hint": "Ver los próximos eventos", "panel.athletics.button.news.title": "Noticias", @@ -237,7 +237,7 @@ "panel.athletics_team.label.away.hint": "", "panel.athletics_team.label.neutral.title": "Neutral", "panel.athletics_team.label.neutral.hint": "", - "panel.athletics_team.label.streak.title": "Streak", + "panel.athletics_team.label.streak.title": "Racha", "panel.athletics_team.label.streak.hint": "", "panel.athletics_team.label.schedule.title": "Agenda", "panel.athletics_team.label.schedule.hint": "", @@ -363,7 +363,7 @@ "panel.onboarding.notifications.button.allow.hint":"", "panel.onboarding.notifications.button.dont_allow.title":"No en este momento", "panel.onboarding.notifications.button.dont_allow.hint":"Omitir recibir notificaciones", - "panel.onboarding.notifications.label.access_granted":"Your settings have been changed.", + "panel.onboarding.notifications.label.access_granted":"Su configuración ha sido cambiada.", "panel.onboarding.roles.label.title":"Quién eres", "panel.onboarding.roles.label.title.hint":"Encabezado 1", @@ -423,7 +423,7 @@ "panel.onboarding.verify_phone.button.next.hint":"Toque para continuar", "panel.onboarding.verify_phone.validation.phone_number.text":"Por favor, escriba su número de teléfono", "panel.onboarding.verify_phone.validation.channel_selection.text":"Por favor, seleccione el método de verificación", - "panel.onboarding.verify_phone.validation.server_error.text":"Please enter a valid phone number", + "panel.onboarding.verify_phone.validation.server_error.text":"Por favor ingrese un número de teléfono válido", "panel.onboarding.confirm_phone.title":"Confirme su código", "panel.onboarding.confirm_phone.title.hint":"", @@ -591,7 +591,7 @@ "panel.settings.manage_interests.search.cancel.hint":"borra el filtro de búsqueda", "panel.settings.manage_interests.search.search_button.title":"Buscar", "panel.settings.manage_interests.search.search_button.hint": "filtrar etiquetas", - "panel.settings.manage_interests.button.save.title": "Save Changes", + "panel.settings.manage_interests.button.save.title": "Guardar cambios", "panel.settings.manage_interests.button.save.hint": "", "panel.settings.illini_cash.label.title": "Illini Cash", @@ -705,7 +705,7 @@ "panel.saved.label.dining": "Comida", "panel.saved.label.news": "Noticias", "panel.saved.label.laundry": "Lavandería", - "panel.saved.notifications.label": "¡No te pierdas un evento! Reciba recordatorios de los próximos eventos.", + "panel.saved.notifications.label": "¡No te pierdas un evento! Reciba recordatorios de los próximos eventos!", "panel.saved.notifications.enable.label": "Permitir notificaciones", "panel.saved.notifications.skip.label": "No en este momento", "panel.saved.events.button.less": "Mostrar menos", @@ -816,113 +816,113 @@ "panel.settings.home.button.feedback.title": "Enviar comentarios", "panel.settings.home.button.feedback.hint": "", - "panel.settings.privacy_center.label.title":"Privacy Center", - "panel.settings.privacy_center.label.description":"Personalize your privacy and data preferences.", - "panel.settings.privacy_center.label.finish_setup":"Finish setup", - "panel.settings.privacy_center.label.finish_setup_description":"Log in with your NetID or Telephone number to get the full Illinois experience.", - "panel.settings.privacy_center.button.verify_identity.title":"Verify your Identity", - "panel.settings.privacy_center.button.manage_privacy.title":"Manage and Understand Your Privacy", + "panel.settings.privacy_center.label.title":"Centro de privacidad", + "panel.settings.privacy_center.label.description":"Personalice sus preferencias de privacidad y datos.", + "panel.settings.privacy_center.label.finish_setup":"Finalizar configuración", + "panel.settings.privacy_center.label.finish_setup_description":"Inicie sesión con su NetID o número de teléfono para obtener la experiencia completa de Illinois.", + "panel.settings.privacy_center.button.verify_identity.title":"Verifica tu identidad", + "panel.settings.privacy_center.button.manage_privacy.title":"Administre y comprenda su privacidad", "panel.settings.privacy_center.button.manage_privacy.hint":"", - "panel.settings.privacy_center.button.personal_information.title":"Personal Information", + "panel.settings.privacy_center.button.personal_information.title":"Informacion personal", "panel.settings.privacy_center.button.personal_information.hint":"", - "panel.settings.privacy_center.button.notifications.title":"Notification Preferences", + "panel.settings.privacy_center.button.notifications.title":"Preferencias de notificación", "panel.settings.privacy_center.button.notifications.":"", - "panel.settings.privacy_center.button.privacy_policy.title":"Privacy Statement", - "panel.settings.privacy_center.button.delete_data.title":"Forget all of my information", - "panel.settings.privacy_center.label.delete.description":"This will delete all of your personal information that was shared and stored within the app.", - "panel.settings.privacy_center.label.delete_message.title":"Forget all of your information?", - "panel.settings.privacy_center.label.delete_message.description1":"This will ", - "panel.settings.privacy_center.label.delete_message.description2":"Permanently ", - "panel.settings.privacy_center.label.delete_message.description3":"delete all of your information. You will not be able to retrieve your data after you have deleted it. Are you sure you want to continue?", - "panel.settings.privacy_center.button.forget_info.title": "Forget My Information", - - "panel.settings.verify_identity.label.title":"Verify your Identity", - "panel.settings.verify_identity.label.description":"Connect to Illinois", - "panel.settings.verify_identity.label.connect_id.desription1":"Are you a ", - "panel.settings.verify_identity.label.connect_id.desription2":"Student ", - "panel.settings.verify_identity.label.connect_id.desription3":"or ", - "panel.settings.verify_identity.label.connect_id.desription4":"faculty member ", - "panel.settings.verify_identity.label.connect_id.desription5":"? Log in with your NetID to see Illinois information specific to you, like your Illini Cash and meal plan.", - "panel.settings.verify_identity.button.connect_net_id.title":"Connect Your NetID", - "panel.settings.verify_identity.label.verify_phone.desription1":"Don’t have a NetID", - "panel.settings.verify_identity.label.verify_phone.desription2":"? Verify your phone number to save your preferences and have the same experience on more than one device. ", - "panel.settings.verify_identity.button.verify_phone.title":"Verify Your Phone Number", - - "panel.settings.login.netid.label.title":"Connect your NetID", - "panel.settings.login.netid.button.dont_continue.title":"Not right now", + "panel.settings.privacy_center.button.privacy_policy.title":"Declaracion de privacidad", + "panel.settings.privacy_center.button.delete_data.title":"Olvida toda mi información", + "panel.settings.privacy_center.label.delete.description":"Esto eliminará toda su información personal que se compartió y almacenó dentro de la aplicación.", + "panel.settings.privacy_center.label.delete_message.title":"¿Olvidaste toda tu información?", + "panel.settings.privacy_center.label.delete_message.description1":"Esta voluntad", + "panel.settings.privacy_center.label.delete_message.description2":"Permanentemente ", + "panel.settings.privacy_center.label.delete_message.description3":"borre toda su información. No podrá recuperar sus datos después de haberlos eliminado. Estás seguro de que quieres continuar?", + "panel.settings.privacy_center.button.forget_info.title": "Olvidar mi información", + + "panel.settings.verify_identity.label.title":"Verifica tu identidad", + "panel.settings.verify_identity.label.description":"Conéctese a Illinois", + "panel.settings.verify_identity.label.connect_id.desription1":"Eres un", + "panel.settings.verify_identity.label.connect_id.desription2":"Alumno ", + "panel.settings.verify_identity.label.connect_id.desription3":"o ", + "panel.settings.verify_identity.label.connect_id.desription4":"Miembro de facultad ", + "panel.settings.verify_identity.label.connect_id.desription5":"? Inicie sesión con su NetID para ver información de Illinois específica para usted, como su Illini Cash y su plan de comidas.", + "panel.settings.verify_identity.button.connect_net_id.title":"Conecte su NetID", + "panel.settings.verify_identity.label.verify_phone.desription1":"No tienes un NetID", + "panel.settings.verify_identity.label.verify_phone.desription2":"? Verifique su número de teléfono para guardar sus preferencias y tener la misma experiencia en más de un dispositivo. ", + "panel.settings.verify_identity.button.verify_phone.title":"Verifica tu numero de telefono", + + "panel.settings.login.netid.label.title":"Conecte su NetID", + "panel.settings.login.netid.button.dont_continue.title":"No ahora", "panel.settings.login.netid.label.title.hint":"", - "panel.settings.login.netid.label.description":"Log in with your NetID to use academic and dorm specific features.", - "panel.settings.login.netid.button.continue.title":"Log in with NetID", + "panel.settings.login.netid.label.description":"Inicie sesión con su NetID para utilizar funciones académicas y específicas de los dormitorios.", + "panel.settings.login.netid.button.continue.title":"Iniciar sesión con NetID", "panel.settings.login.netid.button.continue.hint":"", - "panel.settings.login.netid.button.dont_continue.hint":"Skip verification", - "panel.settings.login.label.login_failed":"Unable to login. Please try again later", + "panel.settings.login.netid.button.dont_continue.hint":"Omitir verificación", + "panel.settings.login.label.login_failed":"Incapaz de iniciar sesión. Por favor, inténtelo de nuevo más tarde", - "panel.settings.login.phone.label.title":"Verify your phone number", - "panel.settings.login.phone.button.dont_continue.title":"Not right now", + "panel.settings.login.phone.label.title":"verifica tu numero de telefono", + "panel.settings.login.phone.button.dont_continue.title":"No ahora", "panel.settings.login.phone.label.title.hint":"", - "panel.settings.login.phone.label.description":"This saves your preferences so you can have the same experience on more than one device.", - "panel.settings.login.phone.button.continue.title":"Verify My Phone Number", + "panel.settings.login.phone.label.description":"Esto guarda sus preferencias para que pueda tener la misma experiencia en más de un dispositivo.", + "panel.settings.login.phone.button.continue.title":"Verificar mi número de teléfono", "panel.settings.login.phone.button.continue.hint":"", - "panel.settings.login.phone.button.dont_continue.hint":"Skip verification", - "panel.settings.label.offline.phone_ver":"Verify Your Phone Number is not available while offline.", - - "widget.settings.dialog.button.cancel.title": "Cancel", - - "panel.settings.notifications.label.title":"Notifications", - "panel.settings.notifications.label.desctiption":"Don’t miss an event or campus update.", - "panel.settings.notifications.label.notifications":"Notifications", - "panel.settings.notifications.label.info":"To receive notifications enable in your device's settings.", - "panel.settings.notifications.reminders":"Event reminders", - "panel.settings.notifications.athletics_updates":"Athletics updates", - "panel.settings.notifications.dining":"Dining specials", - "panel.settings.notifications.label.status.enabled":"Enabled", - "panel.settings.notifications.label.status.disabled":"Disabled", - - "panel.settings.personal_information.label.title":"Personal Information", - "panel.settings.personal_information.button.delete_data.title":"Delete my personal data", - "panel.settings.personal_information.label.description":"Delete your location history, your tags and categories, and saved events and dining locations.", - "panel.settings.personal_information.button.personal_information.title":"Personal Information", - "panel.settings.personal_information.button.personal_information.description":"Your name and contact info you’ve shared", - "panel.settings.personal_information.button.who_you_are.title":"Who You Are", - "panel.settings.personal_information.button.who_you_are.description":"Your status as a student, faculty, resident, etc.", - "panel.settings.personal_information.button.interest.title":"Your Interests", - "panel.settings.personal_information.button.interest.description":"Categories, teams, and tags you follow", - "panel.settings.personal_information.button.food_filters.title":"Food Filters", - "panel.settings.personal_information.button.food_filters.description":"Add or edit your food preferences", - "panel.settings.personal_information.label.delete_message.title":"Delete your personal data?", - "panel.settings.personal_information.label.delete_message.description1":"Select all that you would like to ", - "panel.settings.personal_information.label.delete_message.description2":"Permanently ", - "panel.settings.personal_information.label.delete_message.description3":"delete:", - "panel.settings.personal_information.button.forget_info.title": "Delete My Data", - - "panel.settings.new_privacy.privacy.label.title": "Choose Your Privacy Level", - "panel.settings.new_privacy.privacy.label.slider_help": "Adjust slider to change your privacy level", - "panel.settings.new_privacy.privacy.button.set_privacy.disabled.title": "Scroll to Review", - "panel.settings.new_privacy.privacy.button.set_privacy.title": "Set my Privacy", + "panel.settings.login.phone.button.dont_continue.hint":"Omitir verificación", + "panel.settings.label.offline.phone_ver":"Verifique que su número de teléfono no esté disponible sin conexión.", + + "widget.settings.dialog.button.cancel.title": "Cancelar", + + "panel.settings.notifications.label.title":"Notificaciones", + "panel.settings.notifications.label.desctiption":"No se pierda ningún evento o actualización del campus.", + "panel.settings.notifications.label.notifications":"Notificaciones", + "panel.settings.notifications.label.info":"Para recibir notificaciones, habilite en la configuración de su dispositivo.", + "panel.settings.notifications.reminders":"Recordatorios de eventos", + "panel.settings.notifications.athletics_updates":"Actualizaciones de atletismo", + "panel.settings.notifications.dining":"Especiales gastronómicos", + "panel.settings.notifications.label.status.enabled":"Habilitado", + "panel.settings.notifications.label.status.disabled":"Dishabilitado", + + "panel.settings.personal_information.label.title":"Informacion personal", + "panel.settings.personal_information.button.delete_data.title":"Borrar mis datos personales", + "panel.settings.personal_information.label.description":"Elimina tu historial de ubicaciones, tus etiquetas y categorías, y los eventos guardados y los lugares para comer.", + "panel.settings.personal_information.button.personal_information.title":"Informacion personal", + "panel.settings.personal_information.button.personal_information.description":"Tu nombre e información de contacto que has compartido", + "panel.settings.personal_information.button.who_you_are.title":"Quien eres", + "panel.settings.personal_information.button.who_you_are.description":"Tu condición de estudiante, profesor, residente, etc.", + "panel.settings.personal_information.button.interest.title":"Tus intereses", + "panel.settings.personal_information.button.interest.description":"Categorías, equipos y etiquetas que sigues", + "panel.settings.personal_information.button.food_filters.title":"Filtro de alimentos", + "panel.settings.personal_information.button.food_filters.description":"Agrega o edita tus preferencias de comida", + "panel.settings.personal_information.label.delete_message.title":"¿Eliminar sus datos personales?", + "panel.settings.personal_information.label.delete_message.description1":"Seleccione todo lo que le gustaría ", + "panel.settings.personal_information.label.delete_message.description2":"Permanentemente ", + "panel.settings.personal_information.label.delete_message.description3":"Eliminar:", + "panel.settings.personal_information.button.forget_info.title": "Eliminar mis datos", + + "panel.settings.new_privacy.privacy.label.title": "Elija su nivel de privacidad", + "panel.settings.new_privacy.privacy.label.slider_help": "Ajuste el control deslizante para cambiar su nivel de privacidad", + "panel.settings.new_privacy.privacy.button.set_privacy.disabled.title": "Desplácese para revisar", + "panel.settings.new_privacy.privacy.button.set_privacy.title": "Establecer mi privacidad", "panel.settings.new_privacy.privacy.button.set_privacy.disabled.hint": "", "panel.settings.new_privacy.privacy.button.set_privacy.hint": "", - "panel.settings.new_privacy.privacy.dialog.update_privacy.title": "Your new \nprivacy level", - "panel.settings.new_privacy.privacy.dialog.update_privacy.button.back.title": "Back", - "panel.settings.new_privacy.privacy.dialog.label.new_privacy": "Privacy Level: ", - "panel.settings.new_privacy.privacy.dialog.update_privacy.label2": "This change requires us to make the following changes:", - "panel.settings.new_privacy.privacy.dialog.update_privacy.confirm": "Are you sure?", - "panel.settings.new_privacy.privacy.dialog.update_privacy.yes": "Yes", + "panel.settings.new_privacy.privacy.dialog.update_privacy.title": "Tu nuevo \ nnivel de privacidad", + "panel.settings.new_privacy.privacy.dialog.update_privacy.button.back.title": "Atras", + "panel.settings.new_privacy.privacy.dialog.label.new_privacy": "Nivel de privacidad: ", + "panel.settings.new_privacy.privacy.dialog.update_privacy.label2": "Este cambio requiere que realicemos los siguientes cambios:", + "panel.settings.new_privacy.privacy.dialog.update_privacy.confirm": "Estas seguro?", + "panel.settings.new_privacy.privacy.dialog.update_privacy.yes": "Si", "panel.settings.new_privacy.privacy.dialog.update_privacy.no": "No", - "panel.settings.new_privacy.privacy.label.set_your_privacy_level": "Set your privacy level", - "panel.settings.new_privacy.privacy.label.update_your_privacy_level": "Update your privacy level", - "panel.settings.new_privacy.privacy.label.set_your_privacy_level.hint": "Header 1", - "panel.settings.new_privacy.privacy.label.update_your_privacy_level.hint": "Header 1", - "panel.settings.new_privacy.privacy.label.some_details_have_changed": "Some details have changed", - "panel.settings.new_privacy.privacy.label.some_details_have_changed.hint": "Header 2", - "panel.settings.new_privacy.label.description.title": "Features and Data Collection", - "panel.settings.new_privacy.label.description.info": "Learn more about specific features, and use dropdown for more information about how data is being used.", - "panel.settings.new_privacy.button.close_all.title": "Close All", - "panel.settings.new_privacy.button.expand_all.title": "Expand All", - "panel.settings.new_privacy.label.hint": "Double tap to ", - "panel.settings.new_privacy.button.expand_data.title": "See Data Usage", - "panel.settings.new_privacy.privacy.button.set_privacy.slider.hint": "Privacy Level", - "panel.settings.new_privacy.privacy.button.set_privacy.slider.increase": "increased to", - "panel.settings.new_privacy.privacy.button.set_privacy.slider.decrease": "decreased to", + "panel.settings.new_privacy.privacy.label.set_your_privacy_level": "Establezca su nivel de privacidad", + "panel.settings.new_privacy.privacy.label.update_your_privacy_level": "Actualice su nivel de privacidad", + "panel.settings.new_privacy.privacy.label.set_your_privacy_level.hint": "Encabezado 1", + "panel.settings.new_privacy.privacy.label.update_your_privacy_level.hint": "Encabezado 1", + "panel.settings.new_privacy.privacy.label.some_details_have_changed": "Algunos detalles han cambiado", + "panel.settings.new_privacy.privacy.label.some_details_have_changed.hint": "Encabezado 2", + "panel.settings.new_privacy.label.description.title": "Funciones y recopilación de datos", + "panel.settings.new_privacy.label.description.info": "Obtenga más información sobre funciones específicas y utilice el menú desplegable para obtener más información sobre cómo se utilizan los datos.", + "panel.settings.new_privacy.button.close_all.title": "Cierra todo", + "panel.settings.new_privacy.button.expand_all.title": "Expandir todo", + "panel.settings.new_privacy.label.hint": "Toca dos veces para ", + "panel.settings.new_privacy.button.expand_data.title": "Ver uso de datos", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.hint": "Nivel de privacidad", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.increase": "aumentado a", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.decrease": "disminuido a", "panel.create_event.header.title":"Crea Un Evento", "panel.create_event.title":"Crear un evento", @@ -981,7 +981,7 @@ "panel.profile_info.middle_name.title":"Segundo nombre", "panel.profile_info.last_name.title":"Apellido", "panel.profile_info.email_address.title":"Correo Electrónico", - "panel.profile_info.phone_number.title":"Phone Number", + "panel.profile_info.phone_number.title":"Número de teléfono", "panel.profile_info.button.sign_out.title":"Cerrar sesión", "panel.profile_info.button.sign_out.hint":"", "panel.profile_info.label.remove_my_info.title":"Eliminar mi información", @@ -991,15 +991,15 @@ "panel.profile_info.dialog.remove_my_information.subtitle":"¿Está seguro?", "panel.profile_info.dialog.remove_my_information.yes.title":"Sí", "panel.profile_info.dialog.remove_my_information.no.title": "No", - "panel.profile_info.phone_number.name.title": "Full Name", + "panel.profile_info.phone_number.name.title": "Nombre completo", "panel.profile_info.phone_number.name.hint": "", "panel.profile_info.phone_number.email.title": "Email", "panel.profile_info.phone_number.email.hint": "", - "panel.profile_info.button.save.title":"Save Changes", + "panel.profile_info.button.save.title":"Guardar cambios", "panel.profile_info.button.save.hint":"", "panel.profile_info.logout.title":"Illinois", - "panel.profile_info.logout.message":"Are you sure you want to sign out?", - "panel.profile_info.logout.button.yes":"Yes", + "panel.profile_info.logout.message":"¿Estás seguro de que quieres cerrar sesión?", + "panel.profile_info.logout.button.yes":"Si", "panel.profile_info.logout.no":"No", "panel.create_poll.header.title": "Crear una encuesta rápida", @@ -1568,7 +1568,7 @@ "app.common.label.cancelled":"Cancelado", "app.common.label.other": "Otro", "app.common.label.county": "Condado", - "app.common.label.read_more": "Read more", + "app.common.label.read_more": "Leer mas", "com.illinois.features2.entry.disable_location_awareness":"Deshabilitar reconocimiento de ubicación", "com.illinois.features2.entry.dont_store_location":"No guardes tu ubicación", @@ -1578,77 +1578,78 @@ "com.illinois.features2.entry.remove_credit_card":"Eliminar la información de su tarjeta de crédito", "com.illinois.features2.entry.dont_share_location":"No comparta sus datos con otros usuarios.", - "privacy.category.description.1": "You may not be able to use all features, but you are anonymous and we don't ask for anything or store any data. Anonymous data will be collected and used to optimize app performance.", - "privacy.category.description.2": "See what's happening around you. We use Wifi and Bluetooth location services to improve your experience, but we never store that data.", - "privacy.category.description.3": "You can personalize and customize the app. Wifi and Bluetooth location data is stored over time to make recommendations and improve your overall app experience.", - "privacy.category.description.4": "Let the app work for you. \nYou can access your iCard, save credit cards to make future purchases easier, access health information, and get notifications based on your specific interests.", - "privacy.category.description.5": "Access all features, get connected to campus, and let the app suggest tailored experiences that you and your friends all enjoy.", + "privacy.category.description.1": "Es posible que no pueda utilizar todas las funciones, pero es anónimo y no le pedimos nada ni almacenamos ningún dato. Se recopilarán y utilizarán datos anónimos para optimizar el rendimiento de la aplicación.", + "privacy.category.description.2": "Vea lo que sucede a su alrededor. Usamos servicios de ubicación Wifi y Bluetooth para mejorar su experiencia, pero nunca almacenamos esos datos.", + "privacy.category.description.3": "Puede personalizar y personalizar la aplicación. Los datos de ubicación de Wifi y Bluetooth se almacenan a lo largo del tiempo para hacer recomendaciones y mejorar la experiencia general de la aplicación.", + "privacy.category.description.4": "Deje que la aplicación funcione para usted. \ nPuede acceder a su iCard, guardar tarjetas de crédito para facilitar las compras futuras, acceder a información médica y recibir notificaciones basadas en sus intereses específicos.", + "privacy.category.description.5": "Acceda a todas las funciones, conéctese al campus y deje que la aplicación sugiera experiencias personalizadas que usted y sus amigos disfruten.", "privacy.category.event_and_dining.title": "Events and Dining \nAround Campus", - "privacy.entry.event_and_dining.view.only.title": "View Only", - "privacy.entry.event_and_dining.view.only.description": "View events and dining locations around campus.", - "privacy.entry.event_and_dining.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.event_and_dining.location.sharing.title": "Location Sharing", - "privacy.entry.event_and_dining.location.sharing.description": "View events and dining locations near you.", - "privacy.entry.event_and_dining.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.event_and_dining.personalizations.title": "Personalizations", - "privacy.entry.event_and_dining.personalizations.description": "View events and dining locations near you.", - "privacy.entry.event_and_dining.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.event_and_dining.notifications.title": "Notificaitons", - "privacy.entry.event_and_dining.notifications.description": "Get various notifications & receive reminders of items you have starred in the app.", - "privacy.entry.event_and_dining.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.event_and_dining.sharing.title": "Sharing", - "privacy.entry.event_and_dining.sharing.description": "Use the SMARTS of the CONVERGE service to help yourself or a group pick events.", - "privacy.entry.event_and_dining.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - - "privacy.category.athletics.title": "Athletics", - "privacy.entry.athletics.view.only.title": "View Only", - "privacy.entry.athletics.view.only.description": "See all upcoming schedules for athletic events, real-time scoring, rosters and athletic news.", - "privacy.entry.athletics.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.athletics.location.sharing.title": "Location Sharing", - "privacy.entry.athletics.location.sharing.description": "Find seats, nearby restrooms & concession stands. See real-time parking availability and directions.", - "privacy.entry.athletics.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.athletics.personalizations.title": "Personalizations", - "privacy.entry.athletics.personalizations.description": "Customize your experience to see schedules, rosters, scores and news for your favorite Illini teams.", - "privacy.entry.athletics.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", + "privacy.entry.event_and_dining.view.only.title": "Sólo vista", + "privacy.entry.event_and_dining.view.only.description": "Ver eventos y lugares para cenar en el campus.", + "privacy.entry.event_and_dining.view.only.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + "privacy.entry.event_and_dining.location.sharing.title": "Compartir ubicación", + "privacy.entry.event_and_dining.location.sharing.description": "Vea eventos y lugares para cenar cerca de usted.", + "privacy.entry.event_and_dining.location.sharing.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + "privacy.entry.event_and_dining.personalizations.title": "Personalizaciones", + "privacy.entry.event_and_dining.personalizations.description": "Vea eventos y lugares para cenar cerca de usted.", + "privacy.entry.event_and_dining.personalizations.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + "privacy.entry.event_and_dining.notifications.title": "Notifications", + "privacy.entry.event_and_dining.notifications.description": "Reciba varias notificaciones y reciba recordatorios de los elementos que ha destacado en la aplicación.", + "privacy.entry.event_and_dining.notifications.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + "privacy.entry.event_and_dining.sharing.title": "Compartiendo", + "privacy.entry.event_and_dining.sharing.description": "Utilice los SMARTS del servicio CONVERGE para ayudarse a sí mismo oa un grupo a elegir eventos.", + "privacy.entry.event_and_dining.sharing.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + + "privacy.category.athletics.title": "Atletismo", + "privacy.entry.athletics.view.only.title": "Sólo vista", + "privacy.entry.athletics.view.only.description": "Vea todos los próximos horarios de eventos deportivos, puntuación en tiempo real, listas y noticias deportivas.", + "privacy.entry.athletics.view.only.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + "privacy.entry.athletics.location.sharing.title": "Compartir ubicación", + "privacy.entry.athletics.location.sharing.description": "Encuentra asientos, baños cercanos y puestos de comida. Vea la disponibilidad y las direcciones de estacionamiento en tiempo real.", + "privacy.entry.athletics.location.sharing.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + "privacy.entry.athletics.personalizations.title": "Personalizaciones", + "privacy.entry.athletics.personalizations.description": "Personalice su experiencia para ver horarios, listas, resultados y noticias de sus equipos Illini favoritos.", + "privacy.entry.athletics.personalizations.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", "privacy.entry.athletics.notifications.title": "Notificaitons", - "privacy.entry.athletics.notifications.description": "Receive notifications of event start and final scores for your favorite teams.", - "privacy.entry.athletics.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.athletics.sharing.title": "Identity", - "privacy.entry.athletics.sharing.description": "Store credit card information to buy tickets for athletic events.", - "privacy.entry.athletics.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - - "privacy.category.wallet.title": "Wallet", - "privacy.entry.wallet.personalizations.title": "Personalizations", - "privacy.entry.wallet.personalizations.description": "Customize your experience to see schedules, rosters, scores and news for your favorite Illini teams.", - "privacy.entry.wallet.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.wallet.personalizations.additional_description": "Check your Illini Cash & Meal Plan balances and see past transactions.", - "privacy.entry.wallet.personalizations.additional_data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.wallet.sharing.title": "Identity", - "privacy.entry.wallet.sharing.description": "Store credit card information to buy tickets for athletic events.", - "privacy.entry.wallet.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - - "privacy.category.health.title": "Health and Wellness", - "privacy.entry.health.view.only.title": "View Only", - "privacy.entry.health.view.only.description": "Locate and connect to resources to assist you with your EIGHT DIMENSIONS of health and wellness.", - "privacy.entry.health.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.health.location.sharing.title": "Location Sharing", - "privacy.entry.health.location.sharing.description": "Provide you wayfinding assistance to locating health and wellness resources on campus.", - "privacy.entry.health.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - - "privacy.category.involvement.title": "Student and Community Involvement", - "privacy.entry.involvement.view.only.title": "View Only", - "privacy.entry.involvement.view.only.description": "Show campus dining locations and see menus for up to 2 weeks in the future..", - "privacy.entry.involvement.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.involvement.location.sharing.title": "Location Sharing", - "privacy.entry.involvement.location.sharing.description": "Show event and dining locations near you. Allow you to create a quick poll and receive results from people nearby or far away.", - "privacy.entry.involvement.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.involvement.personalizations.title": "Personalizations", - "privacy.entry.involvement.personalizations.description": "Store your dining location preferences, including food allergies, and see current and future menus. See events, dining locations and news articles that interest you.", - "privacy.entry.involvement.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.involvement.notifications.title": "Notificaitons", - "privacy.entry.involvement.notifications.description": "Receive notifications that might interest you based on your preferences or location.", - "privacy.entry.involvement.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.involvement.sharing.title": "Identity", - "privacy.entry.involvement.sharing.description": "Provide assistance in registering to vote, voting by mail and finding voting locations on election day.", - "privacy.entry.involvement.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth." + "privacy.entry.athletics.notifications.description": "Reciba notificaciones del inicio del evento y las puntuaciones finales de sus equipos favoritos.", + "privacy.entry.athletics.notifications.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + "privacy.entry.athletics.sharing.title": "Identidad", + "privacy.entry.athletics.sharing.description": "Almacene la información de la tarjeta de crédito para comprar boletos para eventos deportivos.", + "privacy.entry.athletics.sharing.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + + "privacy.category.wallet.title": "Billetera", + "privacy.entry.wallet.personalizations.title": "Personalizaciones", + "privacy.entry.wallet.personalizations.description": "Personalice su experiencia para ver horarios, listas, resultados y noticias de sus equipos Illini favoritos.", + "privacy.entry.wallet.personalizations.data_usage": "Esta función utiliza la conexión Wifi y Bluetooth de su teléfono.", + "privacy.entry.wallet.personalizations.additional_description": "Verifique los saldos de su Plan Illini Cash & Meal y vea las transacciones pasadas.", + "privacy.entry.wallet.personalizations.additional_data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + "privacy.entry.wallet.sharing.title": "Identidad", + "privacy.entry.wallet.sharing.description": "Almacene la información de la tarjeta de crédito para comprar boletos para eventos deportivos.", + "privacy.entry.wallet.sharing.data_usage": "Esta función utiliza la conexión Wifi y Bluetooth de su teléfono +.", + + "privacy.category.health.title": "Salud y Bienestar", + "privacy.entry.health.view.only.title": "Sólo vista", + "privacy.entry.health.view.only.description": "Ubique y conéctese a recursos que lo ayudarán con sus OCHO DIMENSIONES de salud y bienestar.", + "privacy.entry.health.view.only.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + "privacy.entry.health.location.sharing.title": "Compartir ubicación", + "privacy.entry.health.location.sharing.description": "Brindarle asistencia para encontrar el camino para encontrar recursos de salud y bienestar en el campus.", + "privacy.entry.health.location.sharing.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + + "privacy.category.involvement.title": "Participación de los estudiantes y la comunidad ", + "privacy.entry.involvement.view.only.title": "Sólo vista", + "privacy.entry.involvement.view.only.description": "Muestre las ubicaciones de los restaurantes del campus y vea los menús de hasta 2 semanas en el futuro ..", + "privacy.entry.involvement.view.only.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + "privacy.entry.involvement.location.sharing.title": "Compartir ubicación", + "privacy.entry.involvement.location.sharing.description": "Muestre las ubicaciones de eventos y restaurantes cerca de usted Le permite crear una encuesta rápida y recibir resultados de personas cercanas o lejanas.", + "privacy.entry.involvement.location.sharing.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + "privacy.entry.involvement.personalizations.title": "Personalizaciones", + "privacy.entry.involvement.personalizations.description": "Guarde sus preferencias de ubicación para cenar, incluidas las alergias alimentarias, y vea los menús actuales y futuros. Vea eventos, lugares para cenar y artículos de noticias que le interesen.", + "privacy.entry.involvement.personalizations.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + "privacy.entry.involvement.notifications.title": "Notificaciones", + "privacy.entry.involvement.notifications.description": "Reciba notificaciones que puedan interesarle según sus preferencias o ubicación.", + "privacy.entry.involvement.notifications.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono.", + "privacy.entry.involvement.sharing.title": "Identidad", + "privacy.entry.involvement.sharing.description": "Brindar asistencia para registrarse para votar, votar por correo y encontrar lugares para votar el día de las elecciones.", + "privacy.entry.involvement.sharing.data_usage": "Esta función utiliza la conexión Wi-Fi y Bluetooth de su teléfono." } diff --git a/assets/strings.zh.json b/assets/strings.zh.json index 165132f0f..02ae47e66 100644 --- a/assets/strings.zh.json +++ b/assets/strings.zh.json @@ -155,7 +155,7 @@ "panel.browse.button.create_stadium_poll.hint":"", "panel.browse.button.state_farm_wayfinding.title":"state farm寻路", "panel.browse.button.state_farm_wayfinding.hint":"", - "panel.browse.button.groups.title":"Groups", + "panel.browse.button.groups.title":"组", "panel.browse.button.groups.hint":"", "panel.browse.button.safer.title":"Safer Illinois", "panel.browse.button.safer.hint":"", @@ -363,7 +363,7 @@ "panel.onboarding.notifications.button.allow.hint":"", "panel.onboarding.notifications.button.dont_allow.title":"暂时不", "panel.onboarding.notifications.button.dont_allow.hint":"跳过接收通知", - "panel.onboarding.notifications.label.access_granted":"Your settings have been changed.", + "panel.onboarding.notifications.label.access_granted":"您的设置已更改.", "panel.onboarding.roles.label.title":"你是", "panel.onboarding.roles.label.title.hint":"标题1", @@ -423,7 +423,7 @@ "panel.onboarding.verify_phone.button.next.hint":"点击以继续", "panel.onboarding.verify_phone.validation.phone_number.text":"请输入您的电话号码", "panel.onboarding.verify_phone.validation.channel_selection.text":"请选择验证方法", - "panel.onboarding.verify_phone.validation.server_error.text":"Please enter a valid phone number", + "panel.onboarding.verify_phone.validation.server_error.text":"请输入有效的电话号码", "panel.onboarding.confirm_phone.title":"确认您的代码", "panel.onboarding.confirm_phone.title.hint":"", @@ -591,7 +591,7 @@ "panel.settings.manage_interests.search.cancel.hint":"清除搜索过滤器", "panel.settings.manage_interests.search.search_button.title":"搜索", "panel.settings.manage_interests.search.search_button.hint":"过滤器标签", - "panel.settings.manage_interests.button.save.title": "Save Changes", + "panel.settings.manage_interests.button.save.title": "保存更改", "panel.settings.manage_interests.button.save.hint": "", "panel.settings.illini_cash.label.title":"Illini现金", @@ -794,7 +794,7 @@ "panel.settings.home.net_id.button.connect":"连接您的NetID", "panel.settings.home.phone_ver.message":"已验证为", "panel.settings.home.phone_ver.button.connect":"验证您的电话号码", - "panel.settings.home.phone_ver.button.disconnect":"Disconnect your Phone", + "panel.settings.home.phone_ver.button.disconnect":"断开你的电话", "panel.settings.home.logout.title":"伊利诺伊州", "panel.settings.home.logout.message":"确定要退出吗?", "panel.settings.home.logout.button.yes":"是的", @@ -809,120 +809,120 @@ "panel.settings.home.privacy.privacy_statement.title":"隐私声明", "panel.settings.home.button.debug.title":"调试", "panel.settings.home.button.debug.hint":"", - "panel.settings.home.button.test.title":"测试", + "panel.settings.home.button.test.title":"测试", "panel.settings.home.button.test.hint":"", "panel.settings.home.feedback.title": " 我们需要你的主意!", "panel.settings.home.feedback.description": " 喜欢这个应用程序吗?我们遗漏了什么?点击底部提交您的想法。", "panel.settings.home.button.feedback.title": "提交反馈", "panel.settings.home.button.feedback.hint": "", - "panel.settings.privacy_center.label.title":"Privacy Center", - "panel.settings.privacy_center.label.description":"Personalize your privacy and data preferences.", - "panel.settings.privacy_center.label.finish_setup":"Finish setup", - "panel.settings.privacy_center.label.finish_setup_description":"Log in with your NetID or Telephone number to get the full Illinois experience.", - "panel.settings.privacy_center.button.verify_identity.title":"Verify your Identity", - "panel.settings.privacy_center.button.manage_privacy.title":"Manage and Understand Your Privacy", + "panel.settings.privacy_center.label.title":"隐私中心", + "panel.settings.privacy_center.label.description":"个性化您的隐私和数据偏好.", + "panel.settings.privacy_center.label.finish_setup":"完成安装", + "panel.settings.privacy_center.label.finish_setup_description":"使用您的NETID或电话号码登录以获得完整的体验.", + "panel.settings.privacy_center.button.verify_identity.title":"验证你的身份", + "panel.settings.privacy_center.button.manage_privacy.title":"管理并了解您的隐私", "panel.settings.privacy_center.button.manage_privacy.hint":"", - "panel.settings.privacy_center.button.personal_information.title":"Personal Information", + "panel.settings.privacy_center.button.personal_information.title":"个人信息", "panel.settings.privacy_center.button.personal_information.hint":"", - "panel.settings.privacy_center.button.notifications.title":"Notification Preferences", + "panel.settings.privacy_center.button.notifications.title":"通知首选项", "panel.settings.privacy_center.button.notifications.":"", - "panel.settings.privacy_center.button.privacy_policy.title":"Privacy Statement", - "panel.settings.privacy_center.button.delete_data.title":"Forget all of my information", - "panel.settings.privacy_center.label.delete.description":"This will delete all of your personal information that was shared and stored within the app.", - "panel.settings.privacy_center.label.delete_message.title":"Forget all of your information?", - "panel.settings.privacy_center.label.delete_message.description1":"This will ", - "panel.settings.privacy_center.label.delete_message.description2":"Permanently ", - "panel.settings.privacy_center.label.delete_message.description3":"delete all of your information. You will not be able to retrieve your data after you have deleted it. Are you sure you want to continue?", - "panel.settings.privacy_center.button.forget_info.title": "Forget My Information", - - "panel.settings.verify_identity.label.title":"Verify your Identity", - "panel.settings.verify_identity.label.description":"Connect to Illinois", - "panel.settings.verify_identity.label.connect_id.desription1":"Are you a ", - "panel.settings.verify_identity.label.connect_id.desription2":"Student ", - "panel.settings.verify_identity.label.connect_id.desription3":"or ", - "panel.settings.verify_identity.label.connect_id.desription4":"faculty member ", - "panel.settings.verify_identity.label.connect_id.desription5":"? Log in with your NetID to see Illinois information specific to you, like your Illini Cash and meal plan.", - "panel.settings.verify_identity.button.connect_net_id.title":"Connect Your NetID", - "panel.settings.verify_identity.label.verify_phone.desription1":"Don’t have a NetID", - "panel.settings.verify_identity.label.verify_phone.desription2":"? Verify your phone number to save your preferences and have the same experience on more than one device. ", - "panel.settings.verify_identity.button.verify_phone.title":"Verify Your Phone Number", - - "panel.settings.login.netid.label.title":"Connect your NetID", - "panel.settings.login.netid.button.dont_continue.title":"Not right now", + "panel.settings.privacy_center.button.privacy_policy.title":"隐私声明", + "panel.settings.privacy_center.button.delete_data.title":"忘记我所有的信息", + "panel.settings.privacy_center.label.delete.description":"这将删除应用程序中共享和存储的所有个人信息.", + "panel.settings.privacy_center.label.delete_message.title":"忘记你所有的信息?", + "panel.settings.privacy_center.label.delete_message.description1":"这会 ", + "panel.settings.privacy_center.label.delete_message.description2":"永远 ", + "panel.settings.privacy_center.label.delete_message.description3":"删除所有信息。删除数据后,您将无法恢复数据。确定要继续吗?", + "panel.settings.privacy_center.button.forget_info.title": "忘记我的信息", + + "panel.settings.verify_identity.label.title":"验证你的身份", + "panel.settings.verify_identity.label.description":"连接到伊利诺伊", + "panel.settings.verify_identity.label.connect_id.desription1":"你是 ", + "panel.settings.verify_identity.label.connect_id.desription2":"学生 ", + "panel.settings.verify_identity.label.connect_id.desription3":"或者 ", + "panel.settings.verify_identity.label.connect_id.desription4":"教员 ", + "panel.settings.verify_identity.label.connect_id.desription5":"? 用你的NetID登陆查看伊利诺伊的具体信息,比如你的Illini现金和膳食计划.", + "panel.settings.verify_identity.button.connect_net_id.title":"连接您的NETID", + "panel.settings.verify_identity.label.verify_phone.desription1":"没有NETID", + "panel.settings.verify_identity.label.verify_phone.desription2":"? 验证您的电话号码以保存您的首选项,并在多个设备上拥有相同的体验. ", + "panel.settings.verify_identity.button.verify_phone.title":"验证您的电话号码", + + "panel.settings.login.netid.label.title":"连接您的NETID", + "panel.settings.login.netid.button.dont_continue.title":"现在不行", "panel.settings.login.netid.label.title.hint":"", - "panel.settings.login.netid.label.description":"Log in with your NetID to use academic and dorm specific features.", - "panel.settings.login.netid.button.continue.title":"Log in with NetID", + "panel.settings.login.netid.label.description":"使用你的NETID登录,使用学术和宿舍的特定功能.", + "panel.settings.login.netid.button.continue.title":"使用NETID登录", "panel.settings.login.netid.button.continue.hint":"", - "panel.settings.login.netid.button.dont_continue.hint":"Skip verification", - "panel.settings.login.label.login_failed":"Unable to login. Please try again later", + "panel.settings.login.netid.button.dont_continue.hint":"跳过验证", + "panel.settings.login.label.login_failed":"无法登录。请稍后再试", - "panel.settings.login.phone.label.title":"Verify your phone number", - "panel.settings.login.phone.button.dont_continue.title":"Not right now", + "panel.settings.login.phone.label.title":"验证您的电话号码", + "panel.settings.login.phone.button.dont_continue.title":"现在不行", "panel.settings.login.phone.label.title.hint":"", - "panel.settings.login.phone.label.description":"This saves your preferences so you can have the same experience on more than one device.", - "panel.settings.login.phone.button.continue.title":"Verify My Phone Number", + "panel.settings.login.phone.label.description":"这将保存您的首选项,以便您可以在多个设备上获得相同的体验.", + "panel.settings.login.phone.button.continue.title":"验证我的电话号码", "panel.settings.login.phone.button.continue.hint":"", - "panel.settings.login.phone.button.dont_continue.hint":"Skip verification", - "panel.settings.label.offline.phone_ver":"Verify Your Phone Number is not available while offline.", - - "widget.settings.dialog.button.cancel.title": "Cancel", - - "panel.settings.notifications.label.title":"Notifications", - "panel.settings.notifications.label.desctiption":"Don’t miss an event or campus update.", - "panel.settings.notifications.label.notifications":"Notifications", - "panel.settings.notifications.label.info":"To receive notifications enable in your device's settings.", - "panel.settings.notifications.reminders":"Event reminders", - "panel.settings.notifications.athletics_updates":"Athletics updates", - "panel.settings.notifications.dining":"Dining specials", - "panel.settings.notifications.label.status.enabled":"Enabled", - "panel.settings.notifications.label.status.disabled":"Disabled", - - "panel.settings.personal_information.label.title":"Personal Information", - "panel.settings.personal_information.button.delete_data.title":"Delete my personal data", - "panel.settings.personal_information.label.description":"Delete your location history, your tags and categories, and saved events and dining locations.", - "panel.settings.personal_information.button.personal_information.title":"Personal Information", - "panel.settings.personal_information.button.personal_information.description":"Your name and contact info you’ve shared", - "panel.settings.personal_information.button.who_you_are.title":"Who You Are", - "panel.settings.personal_information.button.who_you_are.description":"Your status as a student, faculty, resident, etc.", - "panel.settings.personal_information.button.interest.title":"Your Interests", - "panel.settings.personal_information.button.interest.description":"Categories, teams, and tags you follow", - "panel.settings.personal_information.button.food_filters.title":"Food Filters", - "panel.settings.personal_information.button.food_filters.description":"Add or edit your food preferences", - "panel.settings.personal_information.label.delete_message.title":"Delete your personal data?", - "panel.settings.personal_information.label.delete_message.description1":"Select all that you would like to ", - "panel.settings.personal_information.label.delete_message.description2":"Permanently ", - "panel.settings.personal_information.label.delete_message.description3":"delete:", - "panel.settings.personal_information.button.forget_info.title": "Delete My Data", - - "panel.settings.new_privacy.privacy.label.title": "Choose Your Privacy Level", - "panel.settings.new_privacy.privacy.label.slider_help": "Adjust slider to change your privacy level", - "panel.settings.new_privacy.privacy.button.set_privacy.disabled.title": "Scroll to Review", - "panel.settings.new_privacy.privacy.button.set_privacy.title": "Set my Privacy", + "panel.settings.login.phone.button.dont_continue.hint":"跳过验证", + "panel.settings.label.offline.phone_ver":"确认您的电话号码在脱机时不可用.", + + "widget.settings.dialog.button.cancel.title": "取消", + + "panel.settings.notifications.label.title":"通知", + "panel.settings.notifications.label.desctiption":"不要错过活动或校园更新.", + "panel.settings.notifications.label.notifications":"通知", + "panel.settings.notifications.label.info":"在设备设置中启用接收通知.", + "panel.settings.notifications.reminders":"事件提醒", + "panel.settings.notifications.athletics_updates":"体育更新", + "panel.settings.notifications.dining":"特色餐饮", + "panel.settings.notifications.label.status.enabled":"启用", + "panel.settings.notifications.label.status.disabled":"禁用", + + "panel.settings.personal_information.label.title":"个人信息", + "panel.settings.personal_information.button.delete_data.title":"删除我的个人资料", + "panel.settings.personal_information.label.description":"删除您的位置历史记录、标签和类别以及保存的活动和就餐地点.", + "panel.settings.personal_information.button.personal_information.title":"个人信息", + "panel.settings.personal_information.button.personal_information.description":"您的姓名和您共享的联系信息", + "panel.settings.personal_information.button.who_you_are.title":"你是谁", + "panel.settings.personal_information.button.who_you_are.description":"你的学生、教师、居民等身份.", + "panel.settings.personal_information.button.interest.title":"你的兴趣", + "panel.settings.personal_information.button.interest.description":"您所标注的类别、团队和标记", + "panel.settings.personal_information.button.food_filters.title":"食物过滤器", + "panel.settings.personal_information.button.food_filters.description":"添加或编辑您的食物偏好", + "panel.settings.personal_information.label.delete_message.title":"删除您的个人数据?", + "panel.settings.personal_information.label.delete_message.description1":"选择所有您想要的 ", + "panel.settings.personal_information.label.delete_message.description2":"永远 ", + "panel.settings.personal_information.label.delete_message.description3":"删除:", + "panel.settings.personal_information.button.forget_info.title": "删除我的数据", + + "panel.settings.new_privacy.privacy.label.title": "选择您的隐私级别", + "panel.settings.new_privacy.privacy.label.slider_help": "调整滑块以更改您的隐私级别", + "panel.settings.new_privacy.privacy.button.set_privacy.disabled.title": "滚动查看", + "panel.settings.new_privacy.privacy.button.set_privacy.title": "设置我的隐私", "panel.settings.new_privacy.privacy.button.set_privacy.disabled.hint": "", "panel.settings.new_privacy.privacy.button.set_privacy.hint": "", - "panel.settings.new_privacy.privacy.dialog.update_privacy.title": "Your new \nprivacy level", - "panel.settings.new_privacy.privacy.dialog.update_privacy.button.back.title": "Back", - "panel.settings.new_privacy.privacy.dialog.label.new_privacy": "Privacy Level: ", - "panel.settings.new_privacy.privacy.dialog.update_privacy.label2": "This change requires us to make the following changes:", - "panel.settings.new_privacy.privacy.dialog.update_privacy.confirm": "Are you sure?", - "panel.settings.new_privacy.privacy.dialog.update_privacy.yes": "Yes", - "panel.settings.new_privacy.privacy.dialog.update_privacy.no": "No", - "panel.settings.new_privacy.privacy.label.set_your_privacy_level": "Set your privacy level", - "panel.settings.new_privacy.privacy.label.update_your_privacy_level": "Update your privacy level", - "panel.settings.new_privacy.privacy.label.set_your_privacy_level.hint": "Header 1", - "panel.settings.new_privacy.privacy.label.update_your_privacy_level.hint": "Header 1", - "panel.settings.new_privacy.privacy.label.some_details_have_changed": "Some details have changed", - "panel.settings.new_privacy.privacy.label.some_details_have_changed.hint": "Header 2", - "panel.settings.new_privacy.label.description.title": "Features and Data Collection", - "panel.settings.new_privacy.label.description.info": "Learn more about specific features, and use dropdown for more information about how data is being used.", - "panel.settings.new_privacy.button.close_all.title": "Close All", - "panel.settings.new_privacy.button.expand_all.title": "Expand All", - "panel.settings.new_privacy.label.hint": "Double tap to ", - "panel.settings.new_privacy.button.expand_data.title": "See Data Usage", - "panel.settings.new_privacy.privacy.button.set_privacy.slider.hint": "Privacy Level", - "panel.settings.new_privacy.privacy.button.set_privacy.slider.increase": "increased to", - "panel.settings.new_privacy.privacy.button.set_privacy.slider.decrease": "decreased to", + "panel.settings.new_privacy.privacy.dialog.update_privacy.title": "你最新的 \n隐私级别", + "panel.settings.new_privacy.privacy.dialog.update_privacy.button.back.title": "后退", + "panel.settings.new_privacy.privacy.dialog.label.new_privacy": "隐私级别: ", + "panel.settings.new_privacy.privacy.dialog.update_privacy.label2": "这一变化要求我们做出以下改变:", + "panel.settings.new_privacy.privacy.dialog.update_privacy.confirm": "你确定吗?", + "panel.settings.new_privacy.privacy.dialog.update_privacy.yes": "是", + "panel.settings.new_privacy.privacy.dialog.update_privacy.no": "否", + "panel.settings.new_privacy.privacy.label.set_your_privacy_level": "设置您的隐私级别", + "panel.settings.new_privacy.privacy.label.update_your_privacy_level": "更新您的隐私级别", + "panel.settings.new_privacy.privacy.label.set_your_privacy_level.hint": "标题 1", + "panel.settings.new_privacy.privacy.label.update_your_privacy_level.hint": "标题 1", + "panel.settings.new_privacy.privacy.label.some_details_have_changed": "一些细节已经改变", + "panel.settings.new_privacy.privacy.label.some_details_have_changed.hint": "标题 2", + "panel.settings.new_privacy.label.description.title": "特性和数据收集", + "panel.settings.new_privacy.label.description.info": "了解有关特定功能的更多信息,并使用下拉菜单获取有关如何使用数据的更多信息.", + "panel.settings.new_privacy.button.close_all.title": "全部关闭", + "panel.settings.new_privacy.button.expand_all.title": "全部展开", + "panel.settings.new_privacy.label.hint": "双击以 ", + "panel.settings.new_privacy.button.expand_data.title": "查看数据使用", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.hint": "隐私级别", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.increase": "增加到", + "panel.settings.new_privacy.privacy.button.set_privacy.slider.decrease": "减少到", "panel.create_event.header.title":"创建活动", "panel.create_event.title":"创建活动", @@ -991,16 +991,16 @@ "panel.profile_info.dialog.remove_my_information.subtitle":"确定吗?", "panel.profile_info.dialog.remove_my_information.yes.title":"是的", "panel.profile_info.dialog.remove_my_information.no.title":"不", - "panel.profile_info.phone_number.name.title": "Full Name", + "panel.profile_info.phone_number.name.title": "全名", "panel.profile_info.phone_number.name.hint": "", - "panel.profile_info.phone_number.email.title": "Email", + "panel.profile_info.phone_number.email.title": "电子邮件", "panel.profile_info.phone_number.email.hint": "", - "panel.profile_info.button.save.title":"Save Changes", + "panel.profile_info.button.save.title":"保存更改", "panel.profile_info.button.save.hint":"", - "panel.profile_info.logout.title":"Illinois", - "panel.profile_info.logout.message":"Are you sure you want to sign out?", - "panel.profile_info.logout.button.yes":"Yes", - "panel.profile_info.logout.no":"No", + "panel.profile_info.logout.title":"伊利诺伊", + "panel.profile_info.logout.message":"是否确定要注销?", + "panel.profile_info.logout.button.yes":"是", + "panel.profile_info.logout.no":"否", "panel.create_poll.header.title": "创建快速投票", "panel.create_poll.description": "距离您100英尺以内、蓝牙开启且应用程序正在运行的用户将收到通知,并可以通过伊利诺伊应用程序投票.", @@ -1019,7 +1019,7 @@ "panel.create_poll.cancel_dialog.message": " 是否确实要取消此快速投票 ", "panel.create_poll.cancel_dialog.button.yes": "是", "panel.create_poll.cancel_dialog.button.no": "否", - "panel.create_poll_panel.counter.hint": "maximum, %s, characters", + "panel.create_poll_panel.counter.hint": "最多, %s, 字符", "panel.create_poll.message.error.default": "創建投票失敗. 請填寫所有字段, 然後重試.", "panel.create_stadium_poll.header.title": " 创建体育场投票 ", @@ -1578,77 +1578,77 @@ "com.illinois.features2.entry.remove_credit_card":"删除信用卡信息", "com.illinois.features2.entry.dont_share_location":"不和其他人分享我的数据", - "privacy.category.description.1": "You may not be able to use all features, but you are anonymous and we don't ask for anything or store any data. Anonymous data will be collected and used to optimize app performance.", - "privacy.category.description.2": "See what's happening around you. We use Wifi and Bluetooth location services to improve your experience, but we never store that data.", - "privacy.category.description.3": "You can personalize and customize the app. Wifi and Bluetooth location data is stored over time to make recommendations and improve your overall app experience.", - "privacy.category.description.4": "Let the app work for you. \nYou can access your iCard, save credit cards to make future purchases easier, access health information, and get notifications based on your specific interests.", - "privacy.category.description.5": "Access all features, get connected to campus, and let the app suggest tailored experiences that you and your friends all enjoy.", - "privacy.category.event_and_dining.title": "Events and Dining \nAround Campus", - "privacy.entry.event_and_dining.view.only.title": "View Only", - "privacy.entry.event_and_dining.view.only.description": "View events and dining locations around campus.", - "privacy.entry.event_and_dining.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.event_and_dining.location.sharing.title": "Location Sharing", - "privacy.entry.event_and_dining.location.sharing.description": "View events and dining locations near you.", - "privacy.entry.event_and_dining.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.event_and_dining.personalizations.title": "Personalizations", - "privacy.entry.event_and_dining.personalizations.description": "View events and dining locations near you.", - "privacy.entry.event_and_dining.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.event_and_dining.notifications.title": "Notificaitons", - "privacy.entry.event_and_dining.notifications.description": "Get various notifications & receive reminders of items you have starred in the app.", - "privacy.entry.event_and_dining.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.event_and_dining.sharing.title": "Sharing", - "privacy.entry.event_and_dining.sharing.description": "Use the SMARTS of the CONVERGE service to help yourself or a group pick events.", - "privacy.entry.event_and_dining.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - - "privacy.category.athletics.title": "Athletics", - "privacy.entry.athletics.view.only.title": "View Only", - "privacy.entry.athletics.view.only.description": "See all upcoming schedules for athletic events, real-time scoring, rosters and athletic news.", - "privacy.entry.athletics.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.athletics.location.sharing.title": "Location Sharing", - "privacy.entry.athletics.location.sharing.description": "Find seats, nearby restrooms & concession stands. See real-time parking availability and directions.", - "privacy.entry.athletics.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.athletics.personalizations.title": "Personalizations", - "privacy.entry.athletics.personalizations.description": "Customize your experience to see schedules, rosters, scores and news for your favorite Illini teams.", - "privacy.entry.athletics.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.athletics.notifications.title": "Notificaitons", - "privacy.entry.athletics.notifications.description": "Receive notifications of event start and final scores for your favorite teams.", - "privacy.entry.athletics.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.athletics.sharing.title": "Identity", - "privacy.entry.athletics.sharing.description": "Store credit card information to buy tickets for athletic events.", - "privacy.entry.athletics.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - - "privacy.category.wallet.title": "Wallet", - "privacy.entry.wallet.personalizations.title": "Personalizations", - "privacy.entry.wallet.personalizations.description": "Customize your experience to see schedules, rosters, scores and news for your favorite Illini teams.", - "privacy.entry.wallet.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.wallet.personalizations.additional_description": "Check your Illini Cash & Meal Plan balances and see past transactions.", - "privacy.entry.wallet.personalizations.additional_data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.wallet.sharing.title": "Identity", - "privacy.entry.wallet.sharing.description": "Store credit card information to buy tickets for athletic events.", - "privacy.entry.wallet.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - - "privacy.category.health.title": "Health and Wellness", - "privacy.entry.health.view.only.title": "View Only", - "privacy.entry.health.view.only.description": "Locate and connect to resources to assist you with your EIGHT DIMENSIONS of health and wellness.", - "privacy.entry.health.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.health.location.sharing.title": "Location Sharing", - "privacy.entry.health.location.sharing.description": "Provide you wayfinding assistance to locating health and wellness resources on campus.", - "privacy.entry.health.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - - "privacy.category.involvement.title": "Student and Community Involvement", - "privacy.entry.involvement.view.only.title": "View Only", - "privacy.entry.involvement.view.only.description": "Show campus dining locations and see menus for up to 2 weeks in the future..", - "privacy.entry.involvement.view.only.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.involvement.location.sharing.title": "Location Sharing", - "privacy.entry.involvement.location.sharing.description": "Show event and dining locations near you. Allow you to create a quick poll and receive results from people nearby or far away.", - "privacy.entry.involvement.location.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.involvement.personalizations.title": "Personalizations", - "privacy.entry.involvement.personalizations.description": "Store your dining location preferences, including food allergies, and see current and future menus. See events, dining locations and news articles that interest you.", - "privacy.entry.involvement.personalizations.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.involvement.notifications.title": "Notificaitons", - "privacy.entry.involvement.notifications.description": "Receive notifications that might interest you based on your preferences or location.", - "privacy.entry.involvement.notifications.data_usage": "This features uses your phone’s Wifi and Bluetooth.", - "privacy.entry.involvement.sharing.title": "Identity", - "privacy.entry.involvement.sharing.description": "Provide assistance in registering to vote, voting by mail and finding voting locations on election day.", - "privacy.entry.involvement.sharing.data_usage": "This features uses your phone’s Wifi and Bluetooth." + "privacy.category.description.1": "您可能无法使用所有功能,但您是匿名的,我们不要求任何东西或存储任何数据。匿名数据将被收集并用于优化应用程序性能.", + "privacy.category.description.2": "看看你周围发生了什么。我们使用Wifi和蓝牙定位服务来改善您的体验,但我们从不存储这些数据.", + "privacy.category.description.3": "您可以个性化和自定义应用程序。Wifi和蓝牙位置数据会随着时间的推移而存储,以提供建议并改善您的整体应用体验.", + "privacy.category.description.4": "让应用程序为你工作. \n您可以访问您的iCard,保存信用卡以方便将来购买,访问健康信息,并根据您的特定兴趣获取通知.", + "privacy.category.description.5": "访问所有功能,连接到校园,并让应用程序建议你和你的朋友都喜欢定制的体验.", + "privacy.category.event_and_dining.title": "活动和餐饮 \n校园周围", + "privacy.entry.event_and_dining.view.only.title": "仅查看", + "privacy.entry.event_and_dining.view.only.description": "查看校园周围的活动和就餐地点.", + "privacy.entry.event_and_dining.view.only.data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.event_and_dining.location.sharing.title": "位置共享", + "privacy.entry.event_and_dining.location.sharing.description": "查看您附近的活动和就餐地点.", + "privacy.entry.event_and_dining.location.sharing.data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.event_and_dining.personalizations.title": "个性化", + "privacy.entry.event_and_dining.personalizations.description": "查看您附近的活动和就餐地点.", + "privacy.entry.event_and_dining.personalizations.data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.event_and_dining.notifications.title": "通知获取各种通知,并接收你在应用程序中的星级项目提醒", + "privacy.entry.event_and_dining.notifications.description": "获取各种通知,并接收你在应用程序中的标注的项目提醒.", + "privacy.entry.event_and_dining.notifications.data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.event_and_dining.sharing.title": "分享", + "privacy.entry.event_and_dining.sharing.description": "使用CONVERGE服务的智能帮助您自己或团队选择事件.", + "privacy.entry.event_and_dining.sharing.data_usage": "此功能使用手机的Wifi和蓝牙.", + + "privacy.category.athletics.title": "运动", + "privacy.entry.athletics.view.only.title": "仅查看", + "privacy.entry.athletics.view.only.description": "看到所有即将到来的体育赛事时间表,实时得分,名册和体育新闻.", + "privacy.entry.athletics.view.only.data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.athletics.location.sharing.title": "位置共享", + "privacy.entry.athletics.location.sharing.description": "找到座位,附近的洗手间和特许看台。查看实时停车可用性和方向.", + "privacy.entry.athletics.location.sharing.data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.athletics.personalizations.title": "个性化", + "privacy.entry.athletics.personalizations.description": "定制您的体验,查看您最喜爱的Illni队的时间表,名册,得分和新闻.", + "privacy.entry.athletics.personalizations.data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.athletics.notifications.title": "通知", + "privacy.entry.athletics.notifications.description": "接收您最喜欢的球队的比赛开始和最终得分通知.", + "privacy.entry.athletics.notifications.data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.athletics.sharing.title": "身份", + "privacy.entry.athletics.sharing.description": "储存信用卡信息以购买体育赛事门票.", + "privacy.entry.athletics.sharing.data_usage": "此功能使用手机的Wifi和蓝牙.", + + "privacy.category.wallet.title": "钱包", + "privacy.entry.wallet.personalizations.title": "个性化", + "privacy.entry.wallet.personalizations.description": "制您的体验,查看您最喜爱的Illni队的时间表,名册,得分和新闻.", + "privacy.entry.wallet.personalizations.data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.wallet.personalizations.additional_description": "检查您的Illini现金和膳食计划余额,并查看过去的交易.", + "privacy.entry.wallet.personalizations.additional_data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.wallet.sharing.title": "身份", + "privacy.entry.wallet.sharing.description": "储存信用卡信息以购买体育赛事门票.", + "privacy.entry.wallet.sharing.data_usage": "此功能使用手机的Wifi和蓝牙.", + + "privacy.category.health.title": "卫生与健康", + "privacy.entry.health.view.only.title": "仅查看", + "privacy.entry.health.view.only.description": "找到并连接资源,以帮助您实现健康的八个维度.", + "privacy.entry.health.view.only.data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.health.location.sharing.title": "位置共享", + "privacy.entry.health.location.sharing.description": "为您寻找校园内的健康资源提供指路帮助.", + "privacy.entry.health.location.sharing.data_usage": "此功能使用手机的Wifi和蓝牙.", + + "privacy.category.involvement.title": "学生和社区参与", + "privacy.entry.involvement.view.only.title": "仅查看", + "privacy.entry.involvement.view.only.description": "展示校园就餐地点,并查看未来2周内的菜单..", + "privacy.entry.involvement.view.only.data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.involvement.location.sharing.title": "位置共享", + "privacy.entry.involvement.location.sharing.description": "展示您附近的活动和就餐地点。允许您创建快速投票并从附近或远处的人接收结果.", + "privacy.entry.involvement.location.sharing.data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.involvement.personalizations.title": "个性化", + "privacy.entry.involvement.personalizations.description": "存储您的就餐地点偏好,包括食物过敏,并查看当前和未来的菜单。查看您感兴趣的活动、就餐地点和新闻文章.", + "privacy.entry.involvement.personalizations.data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.involvement.notifications.title": "通知", + "privacy.entry.involvement.notifications.description": "根据您的偏好或位置接收您可能感兴趣的通知.", + "privacy.entry.involvement.notifications.data_usage": "此功能使用手机的Wifi和蓝牙.", + "privacy.entry.involvement.sharing.title": "身份", + "privacy.entry.involvement.sharing.description": "协助登记投票、邮寄投票和在选举日找到投票地点.", + "privacy.entry.involvement.sharing.data_usage": "此功能使用手机的Wifi和蓝牙." } From 88024ede89a457ceb9a875825786092f4902b82d Mon Sep 17 00:00:00 2001 From: Mladen Dryankov Date: Thu, 3 Sep 2020 18:43:15 +0300 Subject: [PATCH 11/17] Don't show location marker for virtual events in the event detail panel [#35] --- lib/model/Event.dart | 6 +++++- lib/ui/events/CompositeEventsDetailPanel.dart | 8 +++++--- lib/ui/explore/ExploreEventDetailPanel.dart | 8 +++++--- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/lib/model/Event.dart b/lib/model/Event.dart index dc9e058ae..e7afb917b 100644 --- a/lib/model/Event.dart +++ b/lib/model/Event.dart @@ -72,6 +72,7 @@ class Event with Explore implements Favorite { List recurringEvents; bool isSuperEvent; + bool isVirtual; List> subEventsMap; String track; List _subEvents; @@ -141,6 +142,7 @@ class Event with Explore implements Favorite { isSuperEvent = json['isSuperEvent'] ?? false; this.subEventsMap = subEventsMap; track = json['track']; + isVirtual = json['isVirtual']; } void _initFromOther(Event other) { @@ -181,6 +183,7 @@ class Event with Explore implements Favorite { isSuperEvent = other?.isSuperEvent; subEventsMap = other?.subEventsMap; track = other?.track; + isVirtual = other?.isVirtual; } factory Event.fromJson(Map json) { @@ -235,7 +238,8 @@ class Event with Explore implements Favorite { "converge_url": convergeUrl, "isSuperEvent": isSuperEvent, "subEvents": subEventsMap, - "track": track + "track": track, + 'isVirtual': isVirtual, }; } diff --git a/lib/ui/events/CompositeEventsDetailPanel.dart b/lib/ui/events/CompositeEventsDetailPanel.dart index fadb09772..1b09b2481 100644 --- a/lib/ui/events/CompositeEventsDetailPanel.dart +++ b/lib/ui/events/CompositeEventsDetailPanel.dart @@ -325,7 +325,7 @@ class _CompositeEventsDetailPanelState extends State Widget _exploreLocationDetail() { String locationText = ExploreHelper.getLongDisplayLocation(widget.parentEvent, _locationData); - if ((locationText != null) && locationText.isNotEmpty) { + if (!(widget?.parentEvent?.isVirtual ?? false) && widget?.parentEvent?.location != null && (locationText != null) && locationText.isNotEmpty) { return GestureDetector( onTap: _onLocationDetailTapped, child: Semantics( @@ -549,8 +549,10 @@ class _CompositeEventsDetailPanelState extends State } void _onLocationDetailTapped(){ - Analytics.instance.logSelect(target: "Location Detail"); - NativeCommunicator().launchExploreMapDirections(target: widget.parentEvent); + if(widget?.parentEvent?.location?.latitude != null && widget?.parentEvent?.location?.longitude != null) { + Analytics.instance.logSelect(target: "Location Detail"); + NativeCommunicator().launchExploreMapDirections(target: widget.parentEvent); + } } void _onTapHeaderStar() { diff --git a/lib/ui/explore/ExploreEventDetailPanel.dart b/lib/ui/explore/ExploreEventDetailPanel.dart index 63ef50522..61c49f4af 100644 --- a/lib/ui/explore/ExploreEventDetailPanel.dart +++ b/lib/ui/explore/ExploreEventDetailPanel.dart @@ -329,7 +329,7 @@ class _EventDetailPanelState extends State Widget _exploreLocationDetail() { String locationText = ExploreHelper.getLongDisplayLocation(widget.event, _locationData); - if ((locationText != null) && locationText.isNotEmpty) { + if (!(widget?.event?.isVirtual ?? false) && widget?.event?.location != null && (locationText != null) && locationText.isNotEmpty) { return GestureDetector( onTap: _onLocationDetailTapped, child: Semantics( @@ -623,8 +623,10 @@ class _EventDetailPanelState extends State } void _onLocationDetailTapped() { - Analytics.instance.logSelect(target: "Location Detail"); - NativeCommunicator().launchExploreMapDirections(target: widget.event); + if(widget?.event?.location?.latitude != null && widget?.event?.location?.longitude != null) { + Analytics.instance.logSelect(target: "Location Detail"); + NativeCommunicator().launchExploreMapDirections(target: widget.event); + } } void _onTapModify() { From 52efa4df3ac40dae9994b3017049f29ff4bbcc6d Mon Sep 17 00:00:00 2001 From: Mladen Dryankov Date: Thu, 3 Sep 2020 18:49:13 +0300 Subject: [PATCH 12/17] v2.2.17+317 --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index af58ecc8f..ce5db3544 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -11,7 +11,7 @@ description: Illinois client application. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 2.2.16+316 +version: 2.2.17+317 environment: sdk: ">=2.2.0 <3.0.0" From 9aef250e091c7168170ac0da186b51c6a707166e Mon Sep 17 00:00:00 2001 From: Dobromir Dobrev Date: Fri, 4 Sep 2020 12:28:02 +0300 Subject: [PATCH 13/17] Bug/issue 49 (#60) * Events: add limit of the start date. Fix events filtering with the updated events API [Issue #49] * Update CHANGELOG.md for previouslt released version 2.2.17 * Update CHANGELOG.md --- CHANGELOG.md | 4 ++++ lib/service/ExploreService.dart | 15 ++++++++++++--- lib/ui/explore/ExplorePanel.dart | 4 ++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 771f14670..c9a679370 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## Unreleased +### Fixed +- Fix events filtering.[#49](https://github.com/rokwire/illinois-app/issues/49) + +## [2.2.17] - 2020-09-03 ### Changed - Show debug panel only for debug managers.[#51](https://github.com/rokwire/illinois-app/issues/51) - Update es and zh strings.[#55](https://github.com/rokwire/illinois-app/issues/55) diff --git a/lib/service/ExploreService.dart b/lib/service/ExploreService.dart index da630df85..482973bf8 100644 --- a/lib/service/ExploreService.dart +++ b/lib/service/ExploreService.dart @@ -41,19 +41,21 @@ class ExploreService /* with Service */ { ExploreService._internal(); - Future> loadEvents({String searchText, Core.LocationData locationData, Set categories, DateTime startDate, DateTime endDate, Set< - String> tags, bool excludeRecurring = true, int recurrenceId, int limit = 0}) async { + Future> loadEvents({String searchText, Core.LocationData locationData, Set categories, DateTime startDate, DateTime startDateLimit, + DateTime endDate, Set tags, bool excludeRecurring = true, int recurrenceId, int limit = 0}) async { if(_enabled) { if (startDate == null) { startDate = DateTime.now(); } http.Response response; DateTime startDateInGmt = AppDateTime().getUtcTimeFromDeviceTime(startDate); + DateTime startDateLimitInGmt = AppDateTime().getUtcTimeFromDeviceTime(startDateLimit); DateTime endDateInGmt = AppDateTime().getUtcTimeFromDeviceTime(endDate); String queryParameters = _buildEventsQueryParameters( searchText, locationData, startDateInGmt, + startDateLimitInGmt, endDateInGmt, categories, tags, @@ -265,7 +267,7 @@ class ExploreService /* with Service */ { } String _buildEventsQueryParameters(String searchText, Core.LocationData locationData, - DateTime startDate, DateTime endDate, Set categories, Set tags, + DateTime startDate, DateTime startDateLimit, DateTime endDate, Set categories, Set tags, int recurrenceId, int limit) { String queryParameters = ""; @@ -290,6 +292,13 @@ class ExploreService /* with Service */ { queryParameters += 'startDate=$startDateFormatted&'; } + ///StartDateLimit + if (startDateLimit != null) { + String startDateLimitFormatted = AppDateTime().formatDateTime( + startDateLimit, ignoreTimeZone: true); + queryParameters += 'startDateLimit=$startDateLimitFormatted&'; + } + ///End Date if (endDate != null) { String endDateFormatted = AppDateTime().formatDateTime( diff --git a/lib/ui/explore/ExplorePanel.dart b/lib/ui/explore/ExplorePanel.dart index 36ac393e1..f02dc6ba9 100644 --- a/lib/ui/explore/ExplorePanel.dart +++ b/lib/ui/explore/ExplorePanel.dart @@ -537,14 +537,14 @@ class ExplorePanelState extends State List tags = _getSelectedEventTags(selectedFilterList); Map period = _getSelectedEventTimePeriod(selectedFilterList); _locationData = _userLocationEnabled() ? await LocationServices.instance.location : null; - return (_locationData != null) ? ExploreService().loadEvents(locationData: _locationData, categories: categories, tags: tags?.toSet(), startDate: period['start_date'], endDate: period['end_date']) : null; + return (_locationData != null) ? ExploreService().loadEvents(locationData: _locationData, categories: categories, tags: tags?.toSet(), startDate: period['start_date'], startDateLimit: period['end_date']) : null; } Future> _loadEvents(List selectedFilterList) async { Set categories = _getSelectedCategories(selectedFilterList); List tags = _getSelectedEventTags(selectedFilterList); Map period = _getSelectedEventTimePeriod(selectedFilterList); - return ExploreService().loadEvents(categories: categories, tags: tags?.toSet(), startDate: period['start_date'], endDate: period['end_date']); + return ExploreService().loadEvents(categories: categories, tags: tags?.toSet(), startDate: period['start_date'], startDateLimit: period['end_date']); } Future> _loadDining(List selectedFilterList) async { From 424024d7e2c021a93b1e026ae3b19157e312aad6 Mon Sep 17 00:00:00 2001 From: Dobromir Dobrev Date: Fri, 4 Sep 2020 15:53:29 +0300 Subject: [PATCH 14/17] Bug/issue 33 (#61) * Make date format consistent for events - do not show week days but still "Today" and "Tomorrow" labels [Issue #33] * Update CHANGELOG.md --- CHANGELOG.md | 1 + lib/service/AppDateTime.dart | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9a679370..37d593b39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased ### Fixed - Fix events filtering.[#49](https://github.com/rokwire/illinois-app/issues/49) +- Make events date format consistent.[#33](https://github.com/rokwire/illinois-app/issues/33) ## [2.2.17] - 2020-09-03 ### Changed diff --git a/lib/service/AppDateTime.dart b/lib/service/AppDateTime.dart index 49d1994bd..6812fbf3e 100644 --- a/lib/service/AppDateTime.dart +++ b/lib/service/AppDateTime.dart @@ -184,9 +184,6 @@ class AppDateTime with Service { displayDay += " ${Localization().getStringEx('model.explore.time.at', 'at')}"; } } - else if ((1 < timeDaysDiff) && (timeDaysDiff < 7)) { - displayDay = formatDateTime(dateTimeToCompare, format: "EEEE", ignoreTimeZone: true, showTzSuffix: false); - } else { displayDay = formatDateTime(dateTimeToCompare, format: "MMM dd", ignoreTimeZone: true, showTzSuffix: false); } From 92cb80d1e433f7da8ceebb3472e4a8a2b9441245 Mon Sep 17 00:00:00 2001 From: Mladen Dryankov Date: Fri, 4 Sep 2020 16:07:36 +0300 Subject: [PATCH 15/17] Recreate new profile data on logout and migrate the previous settings. [#29] --- lib/model/UserData.dart | 17 +++++++++++++++- lib/service/Storage.dart | 10 --------- lib/service/User.dart | 44 ++++++++++++++++------------------------ 3 files changed, 34 insertions(+), 37 deletions(-) diff --git a/lib/model/UserData.dart b/lib/model/UserData.dart index bdb034c28..f836fb68b 100644 --- a/lib/model/UserData.dart +++ b/lib/model/UserData.dart @@ -20,7 +20,7 @@ class UserData { final String uuid; - final bool overThirteen; + bool overThirteen; static const analyticsUuid = 'UUIDxxxxxx'; @@ -56,6 +56,21 @@ class UserData { ) : null; } + void loadFromUserData(UserData data){ + overThirteen = data.overThirteen; + privacySettings = data.privacySettings; + roles = data.roles; + interests = data.interests; + favorites = data.favorites; + positiveTags = data.positiveTags; + negativeTags = data.negativeTags; + fcmTokens = data.fcmTokens; + registeredVoter = data.registeredVoter; + votePlace = data.votePlace; + voterByMail = data.voterByMail; + voted = data.voted; + } + toJson() { return { "uuid": uuid, diff --git a/lib/service/Storage.dart b/lib/service/Storage.dart index 608a08dca..6e19e10af 100644 --- a/lib/service/Storage.dart +++ b/lib/service/Storage.dart @@ -181,16 +181,6 @@ class Storage with Service { _setStringWithName(phoneNumberKey, phoneNumber); } - static const String localUserUuidKey = 'user_local_uuid'; - - String get localUserUuid { - return _getStringWithName(localUserUuidKey); - } - - set localUserUuid(String value) { - _setStringWithName(localUserUuidKey, value); - } - ///////////// // UserPII diff --git a/lib/service/User.dart b/lib/service/User.dart index 6c89e2757..c0d02cdbd 100644 --- a/lib/service/User.dart +++ b/lib/service/User.dart @@ -67,6 +67,7 @@ class User with Service implements NotificationsListener { AppLivecycle.notifyStateChanged, FirebaseMessaging.notifyToken, User.notifyPrivacyLevelChanged, + Auth.notifyLoggedOut, ]); } @@ -103,6 +104,9 @@ class User with Service implements NotificationsListener { else if(name == AppLivecycle.notifyStateChanged && param == AppLifecycleState.resumed){ //_loadUser(); } + else if(name == Auth.notifyLoggedOut){ + _recreateUser(); // Always create userData on logout. // https://github.com/rokwire/illinois-app/issues/29 + } } // User @@ -119,10 +123,14 @@ class User with Service implements NotificationsListener { return UserData.analyticsUuid; } - Future _createUser() async { + Future _createUser() async { UserData userData = await _requestCreateUser(); applyUserData(userData); - Storage().localUserUuid = userData?.uuid; + } + + Future _recreateUser() async { + UserData userData = await _requestCreateUser(); + applyUserData(userData, migrateData: true); } Future _loadUser() async { @@ -223,37 +231,16 @@ class User with Service implements NotificationsListener { _clearStoredUserData(); _notifyUserDeleted(); - try { - _userData = await requestUser(Storage().localUserUuid); - } on UserNotFoundException catch (_) { - _userData = await _requestCreateUser(); - if (_userData?.uuid != null) { - Storage().localUserUuid = _userData?.uuid; - } - } + _userData = await _requestCreateUser(); + if (_userData != null) { Storage().userData = _userData; _notifyUserUpdated(); } } - - } - - void initLocalUser() { - String localUserUuid = Storage().localUserUuid; - String currentUserUuid = _userData?.uuid; - if ((localUserUuid != null) && (currentUserUuid == null) || (currentUserUuid != localUserUuid)) { - requestUser(localUserUuid).then((UserData userData){ - if (userData != null) { - applyUserData(userData); - } - //clearStoredPiiAccount(); - }).catchError((_){ - }); - } } - void applyUserData(UserData userData, { bool applyCachedSettings = false }) { + void applyUserData(UserData userData, { bool applyCachedSettings = false, bool migrateData = false }) { // 1. We might need to remove FCM token from current user String applyUserUuid = userData?.uuid; @@ -272,6 +259,11 @@ class User with Service implements NotificationsListener { applyUserUpdated = _updateUserSettingsFromStorage(userData) || applyUserUpdated; } + if(migrateData && _userData != null){ + userData.loadFromUserData(_userData); + applyCachedSettings = true; + } + _userData = userData; Storage().userData = _userData; Storage().userRoles = userData?.roles; From 04e4a6a48d2ba1781632f93d3b6512a9fbd8fbf5 Mon Sep 17 00:00:00 2001 From: Mladen Dryankov Date: Fri, 4 Sep 2020 16:11:20 +0300 Subject: [PATCH 16/17] v2.2.18+318 --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index ce5db3544..4acf0c043 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -11,7 +11,7 @@ description: Illinois client application. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 2.2.17+317 +version: 2.2.18+318 environment: sdk: ">=2.2.0 <3.0.0" From ec4dcd641498320f34933b624809269b939282c0 Mon Sep 17 00:00:00 2001 From: Mladen Dryankov Date: Fri, 4 Sep 2020 16:50:59 +0300 Subject: [PATCH 17/17] 2.2.18+318 notes --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 37d593b39..55e1a072d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## Unreleased + +## [2.2.18+318] - 2020-09-04 ### Fixed +- Phone verification / Shibboleth login fails after multiple logins. [#29] (https://github.com/rokwire/illinois-app/issues/29) - Fix events filtering.[#49](https://github.com/rokwire/illinois-app/issues/49) - Make events date format consistent.[#33](https://github.com/rokwire/illinois-app/issues/33)