From b4c491dedfe204efad8f1d6de7c0b99f395bff0d Mon Sep 17 00:00:00 2001 From: jakob <jakob.bode@fu-berlin.de> Date: Sun, 20 Jan 2019 00:35:17 +0100 Subject: [PATCH] refactor texts --- enzevalos_iphone/TravelHandler.swift | 51 ++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/enzevalos_iphone/TravelHandler.swift b/enzevalos_iphone/TravelHandler.swift index d4fa7f2f..0ef4214c 100644 --- a/enzevalos_iphone/TravelHandler.swift +++ b/enzevalos_iphone/TravelHandler.swift @@ -45,6 +45,26 @@ public class TravelHandler { } } + private static var homeIcon: UIImage { + get { +// let tintableImage = #imageLiteral(resourceName: "home2_white").withRenderingMode(.alwaysTemplate) +// return tintableImage.tint(color: .black) + return #imageLiteral(resourceName: "home") + } + } + + private static var borderIcon: UIImage { + get { + return #imageLiteral(resourceName: "suitcase") + } + } + + private static var destinationIcon: UIImage { + get { + let tintableImage = #imageLiteral(resourceName: "beach").withRenderingMode(.alwaysTemplate) + return tintableImage.tint(color: .black) + } + } private var travelKeyChain: Keychain { get { @@ -339,24 +359,34 @@ public class TravelHandler { private func getTravelIntro(current viewController: UIViewController) -> UIViewController { var controllers: [UIViewController] = [] - var description1 = IntroDescriptionViewController.storyboardInstance(description: "Hast du vor international zu Reisen? Dann solltest du aufpassen! Denn es passiert in letzter Zeit immer häufiger, dass bei Grenzkontrollen auch digitale Daten auf mitgenommenen Geräten durchsucht werden. Das macht es scheinbar unmöglich sicher zu kommunizieren.\n\nWir bieten dir eine Möglichkeit an, trotzdem weiter Briefe schreiben zu können. Dafür musst du das folgende Verfahren vor jedem Grenzübertritt durchführen.", skipButtonAction: {_ in })! //TODO: depend skipButtonAction on entry in userdefaults, if the user was using this feature before + var description1 = IntroDescriptionViewController.storyboardInstance(description: "Hast du vor international zu Reisen? Dann solltest du aufpassen! Denn es passiert in letzter Zeit immer häufiger, dass bei Grenzkontrollen neben Koffern auch digitale Geräte durchsucht werden. Das macht es scheinbar unmöglich sicher zu kommunizieren.\n\nUm trotzdem weiter Briefe schreiben zu können, solltest du das folgende Verfahren vor jedem Grenzübertritt durchführen.", skipButtonAction: {_ in })! //TODO: depend skipButtonAction on entry in userdefaults, if the user was using this feature before if mode != .atHome { - description1 = IntroDescriptionViewController.storyboardInstance(description: "Möchtest du nochmal eine Grenze übertreten? Denn es passiert in letzter Zeit immer häufiger, dass bei Grenzkontrollen auch digitale Daten auf mitgenommenen Geräten durchsucht werden. Das macht es scheinbar unmöglich sicher zu kommunizieren.\n\nWir bieten dir eine Möglichkeit an, trotzdem weiter Briefe schreiben zu können. Dafür musst du das folgende Verfahren vor jedem Grenzübertritt durchführen.", skipButtonAction: {_ in })! //TODO: depend skipButtonAction on entry in userdefaults, if the user was using this feature before + if canSecurelyBackup { + description1 = IntroDescriptionViewController.storyboardInstance(description: "Möchtest du nochmal eine Grenze übertreten? Dann fahre auch jetzt mit dem Verfahren fort.\n\nBeachte, dass automatisiert eine Sicherung für dich durchgeführt wird. Die Sicherung wird zuhause automatisch geladen, wenn du die von dir vor der Reise erzeugte Sicherung lädst.", skipButtonAction: {_ in })! //TODO: depend skipButtonAction on entry in userdefaults, if the user was using this feature before + } else { + description1 = IntroDescriptionViewController.storyboardInstance(description: "Möchtest du nochmal eine Grenze übertreten? Dann fahre auch jetzt mit dem Verfahren fort.\n\nBeachte, dass keine Sicherung erstellt werden kann, weil bei einer vorherigen Kontrolle Daten auf deinem Gerät verändert wurden.", skipButtonAction: {_ in })! //TODO: depend skipButtonAction on entry in userdefaults, if the user was using this feature before + } } controllers.append(description1) - let descriptionViewController2 = IntroButtonViewController.storyboardInstance(description: "Wir ermöglichen dir, weiterhin Briefe auszutauschen. Allerdings kannst du nur Briefe öffnen und lesen, die so verschlossen wurden, dass du sie unterwegs öffnen kannst. Teilst du das deinen Kontakten vor der Reise mit, könnt ihr weiter sicher kommunizieren, wenn du die Grenze passiert hast.\n Mit Kontakten, denen du das nicht mitteilst, kannst du nach einiger Zeit auch Briefe schreiben, aber ihr könnt euch nicht sicher sein, ob ihr wirklich mit dem anderen schreibt oder sich ein Betrüger als dieser ausgibt.", buttonAction: {_ in UIApplication.shared.openURL(URL(string: TravelHandler.website)!)})! + let descriptionViewController2 = IntroButtonViewController.storyboardInstance(description: "Durch das nachfolgende Verfahren kannst du weiterhin Briefe mit Kontakten austauschen. Ihr könnt dabei von der Identität des jeweils anderen überzeugt sein. Das bedeutet, dass sich niemand anderes als du oder dein Kontakt ausgeben kann, ohne dass euch das aufällt.\n\nIm Folgenden wird das Verfahren genauer beschrieben.\nFür noch mehr Informationen, besuche unsere Website:", buttonAction: {_ in UIApplication.shared.openURL(URL(string: TravelHandler.website)!)})! descriptionViewController2.buttonText = NSLocalizedString("MoreInformation", comment: "get more info at our website") controllers.append(descriptionViewController2) + let overviewController1 = IntroDescriptionViewController.storyboardInstance(description: "Vor deiner Reise erzeugst du eine Sicherung. Damit stellst du sicher, dass du nach deiner Reise alle Briefe lesen kannst.\n\nKurz vor deinem Grenzübertritt wählst du die Kontakte aus, mit denen du wahrscheinlich während der Reise kommunizieren wirst. Mit diesen Kontakten wird ein Geheimnis ausgetauscht, dass nach dem Grenzübertritt weiter verwendet wird. Dieses ist durch ein Passwort geschützt, das du dir merken musst.", descriptionImage: TravelHandler.homeIcon)! + controllers.append(overviewController1) + let overviewController2 = IntroDescriptionViewController.storyboardInstance(description: "Während des Grenzübertritts wirst du eventuell kontrolliert. Gib dabei nach Möglichkeit das Passwort nicht an die Kontrolleure weiter. Sonst können du und deine ausgewählten Kontakte nicht mehr sicher sein, dass eure ausgetauschten Briefe vom jeweils anderen kommen.\n\nWährend des Grenzübertritts kannst du keine Briefe schreiben oder empfangen.", descriptionImage: TravelHandler.borderIcon)! + controllers.append(overviewController2) + let overviewController3 = IntroDescriptionViewController.storyboardInstance(description: "Wenn du an deinem Ziel angekommen bist, musst du das Passwort hier angeben. Dadurch kannst du wieder Briefe schreiben und empfangen. Außerdem wird aus dem Passwort ein Geheimnis erzeugt. Dieses wird den ausgewählten Kontakten mitgeteilt. Gleicht das Geheimnis dem vor deiner Reise, können du und die ausgewählten Kontakte, gegenseitig von euren Identitäten überzeugt sein.\n\nFühre dieses Verfahren vor jedem Grenzübertritt durch.", descriptionImage: TravelHandler.destinationIcon)! + controllers.append(overviewController3) if mode == .atHome { - let backupController = IntroButtonViewController.storyboardInstance(description: "Weil du nur bestimmte Briefe während der Reise lesen kannst, solltest du vor der Reise eine Sicherung erstellen, damit du nach der Reise wieder alle Briefe lesen kannst. Wenn du noch keine erstellt hast, solltest du es jetzt tun.\n\nBeachte, dass wir zum Schutz deiner Geheimnisse während der Reise alle Sicherungs-Codes löschen. Du solltest bestehende Codes jetzt notieren und zuhause lassen.", buttonAction: {_ in viewController.navigationController?.pushViewController(ExportInfoViewController.storyboardInstance(travelCall: true)!, animated: true)})! + let backupController = IntroButtonViewController.storyboardInstance(description: "Du solltest eine Sicherung erstellen, um nach der Reise alle Briefe lesen zu können. Wenn du noch keine Sicherung erstellt hast, solltest du es jetzt tun.\n\nBeachte, dass wir zum Schutz deiner Geheimnisse während der Reise alle Sicherungs-Codes löschen. Du solltest bestehende Codes jetzt notieren und zuhause lassen.", buttonAction: {_ in viewController.navigationController?.pushViewController(ExportInfoViewController.storyboardInstance(travelCall: true)!, animated: true)})! //"Um alle vorangangenen Nachrichten nach deiner Reise wieder lesen zu können, solltest du vor deiner Reise ein Backup erstellen. Wenn du noch keines erstellt hast, solltest du es jetzt tun.\n\nBeachte, dass wir zum Schutz deiner Geheimnisse während der Reise alle Backup-Codes löschen. Du solltest bestehende Codes jetzt notieren und zuhause lassen." backupController.buttonText = "Sicherung erstellen" controllers.append(backupController) } else if canSecurelyBackup { - let backupController = IntroDescriptionViewController.storyboardInstance(description: "Es wird automatisch eine Sicherung für dich erstellt, sodass du die Briefe, die zwischen deinem letzten Grenzübertritt und jetzt geschrieben wurden, zu hause wieder lesen kannst.\n\nIm weiteren Verlauf deiner Reise wirst du die geschriebenen Briefe allerdings nicht mehr lesen können, sofern du dich entscheidest, diese Briefe wieder zu schließen.")! + let backupController = IntroDescriptionViewController.storyboardInstance(description: "Es wird automatisch eine Sicherung für dich erstellt, sodass du die Briefe, die seit deinem letzten Grenzübertritt geschrieben wurden, zu hause wieder lesen kannst.\n\nIm weiteren Verlauf deiner Reise wirst du die geschriebenen Briefe allerdings nicht mehr lesen können, sofern du dich entscheidest, diese Briefe wieder zu schließen.")! controllers.append(backupController) } else { - let backupController = IntroDescriptionViewController.storyboardInstance(description: "Im Verlauf deiner Reise wurden bestimmte Daten auf diesem Smartphone während einer Kontrolle verändert. Es ist daher leider nicht möglich eine Sicherung deiner Briefe seit dem letzten Grenzübertritt und jetzt zu erstellen. Wenn du dich entscheidest die Briefe wieder zu verschließen, kannst du diese nicht mehr öffnen und lesen!")! + let backupController = IntroDescriptionViewController.storyboardInstance(description: "Im Verlauf deiner Reise wurden bestimmte Daten auf diesem Smartphone während einer Kontrolle verändert. Es ist daher leider nicht möglich eine Sicherung deiner Briefe seit dem letzten Grenzübertritten zu erstellen. Wenn du dich entscheidest die Briefe wieder zu verschließen, kannst du diese nicht mehr öffnen und lesen!")! controllers.append(backupController) } @@ -369,9 +399,10 @@ public class TravelHandler { //"Möchtest du alle unverschlüsselten Kopien der bisherigen Nachrichten löschen?\n\n Wenn du das möchtest, bleiben alle Nachrichten erhalten, du kannst sie allerdings so lange nicht lesen, bis du zuhause dein Backup geladen hast." let describeSecretController = IntroButtonViewController.storyboardInstance(description: "Super, du bist fast fertig!\nIm nächsten Schritt wird dir ein Passwort angezeigt, dass du dir gut merken musst, um während deiner Reise weiter Briefe austauschen zu können. Merke es dir gut und teile es niemandem mit! D.h. notiere es dir nicht und mache auch keine Screenshots davon.\n\nFährst du nun fort, kannst du keine Briefe mehr schreiben oder lesen, bis du die Grenze passiert hast.", buttonText: "Fortfahren")! //controllers.append(describeContactsController) - let secretController = IntroSecretViewController.storyboardInstance(description: "Merke dir das unten angegebene Passwort gut, andernfalls kannst du nach passieren der Grenze keine Briefe schreiben oder lesen!", secret: "s")! + let secretController = IntroSecretViewController.storyboardInstance(description: "Merke dir das unten angegebene Passwort gut, andernfalls kannst du nach passieren der Grenze keine Briefe schreiben oder lesen!", secret: "s", alternateText: "Das angegebene Passwort ist falsch. Bist du dir sicher, dass du dich nicht vertippt hast? Das Passwort beinhaltet übrigens keine Leerzeichen.")! // controllers.append(secretController) - let recommendationsController = IntroDescriptionViewController.storyboardInstance(description: "Wie mit Grenzbeamten umgehen? und sich generell wie an der Grenze verhalten?\n\nTelefon vorher ausschalten\n\nAuf mögliche Kompromittierung hinweisen\n\nweitere Infos?")! //TODO: add Text here + let recommendationsController = IntroButtonViewController.storyboardInstance(description: "Wenn du an der Grenze kontrolliert wirst, liegt es in deinem Ermessen, wie stark du mit den Kontrolleuren kooperierst. Kooperierst du nicht, kann es u.a. sein, dass du Strafen zahlen musst. Wenn du Zugang zu Daten von dir lässt, betone vorher ausdrücklich, dass es nicht in deinem Einverständnis passiert. Bleibe dabei jedoch ruhig.\nBehalte deine Geräte die ganze Zeit über im Auge und lüge die Kontrolleure nicht an.\nKurz vor der Kontrolle solltest du deine Geräte ausschalten.", buttonAction: {_ in UIApplication.shared.openURL(URL(string: TravelHandler.website)!)})! //TODO: add Text here //"Wie mit Grenzbeamten umgehen? und sich generell wie an der Grenze verhalten?\n\nTelefon vorher ausschalten\n\nAuf mögliche Kompromittierung hinweisen\n\nweitere Infos?" + recommendationsController.buttonText = NSLocalizedString("MoreInformation", comment: "get more info at our website") let pageViewController = IntroPageViewController.storyboardInstance(orderedViewControllers: controllers) pageViewController?.titleText = "Vorbereitung" @@ -420,12 +451,12 @@ public class TravelHandler { private func getFollowUpUI(current viewController: UIViewController) -> UIViewController { let askCompromiseController = IntroYesNoViewController.storyboardInstance(description: "Hier solltest du nur fortfahren, wenn du die Grenzkontrollen hinter dir gelassen hast und dir keine weitere bevor steht, bis du an deinem Ziel ankommst!\n\nWurden während der Kontrolle weitere Geräte z.B. per Kabel mit deinem Smartphone verbunden oder wurde es dir mal abgenommen und aus deinem Sichtfeld entfernt?")! - let compromisedController = IntroDescriptionViewController.storyboardInstance(description: "Du solltest dein Smartphone am Besten nicht mehr verwenden! Du kannst ihm nicht mehr trauen, da es nicht mehr auszuschließen ist, dass Schadprogramme darauf installiert sind, die dich und deine Kommunikation überwachen. Diese kann man nicht mit Sicherheit entfernen und sieht im Zweifelsfall auch nicht, dass diese installiert wurden.\n\nWir haben deine Kontakte informiert und du kannst wieder Briefe austauschen. Es ist allerdings nun auch bei Briefen möglich, dass die von Dritten mitgelesen und gefälscht werden! Traue keiner Kommunikation, die mit diesem Gerät passiert!")! + let compromisedController = IntroDescriptionViewController.storyboardInstance(description: "Du solltest dein Smartphone am Besten nicht mehr verwenden! Du kannst ihm nicht mehr trauen, da es nicht mehr auszuschließen ist, dass Schadprogramme darauf installiert sind, die dich und deine Kommunikation überwachen. Diese kann man nicht mit Sicherheit entfernen und man sieht im Zweifelsfall auch nicht. \n\nDu kannst jetzt wieder Briefe austauschen. Es ist allerdings nun auch bei Briefen möglich, dass sie von Dritten mitgelesen und gefälscht werden! Traue keiner Kommunikation, die mit diesem Gerät passiert!")! compromisedController.doneText = NSLocalizedString("Next", comment: "present next viewcontroller") let compromisedController2 = IntroButtonViewController.storyboardInstance(description: "Bitte setze dich mit uns in Verbindung und berichte von deiner Grenzkontrolle! Das dient uns, um einen generellen Überblick über das Eindringen in Privatsphäre bei Grenzkontrollen zu erhalten und damit die App zu verbessern. Im Einzelfall können wir auch vorgehensweisen und Lösungen für künftige Reisen besprechen, wenn du das wünscht.", buttonAction: {_ in UIApplication.shared.openURL(URL(string: TravelHandler.website)!)}, buttonText: "Erfahrungen berichten")! let insertPasswordController = IntroInputViewController.storyboardInstance(description: "Gib nun das Passwort ein, das du dir vor dem Grenzübertritt merken solltest:")! insertPasswordController.doneText = NSLocalizedString("Next", comment: "present next viewcontroller") - let corruptDataController = IntroDescriptionViewController.storyboardInstance(description: "Du kannst nun wieder Briefe schicken. Jedoch wurden besondere Daten auf deinem Telefon verändert. Dadurch ist es nicht möglich, dass du Briefe mit deinen Kontakten austauscht, von denen ihr euch sicher sein könnt, dass sie nicht von einem Betrüger stammen.\n\nDeine Kontakte wissen nun auch, dass ihr nicht von der Identität des jeweils anderen überzeugt sein könnt. Sei nicht irritiert, wenn sie dich auf anderem Wege kontaktieren und sich nach dir erkundigen.")! //We could mention a wrong password here too + let corruptDataController = IntroDescriptionViewController.storyboardInstance(description: "Du kannst nun wieder Briefe schicken. Jedoch wurden besondere Daten auf deinem Telefon verändert. Dadurch ist es möglich, dass du oder deine Kontakte Briefe mit jemandem austauschen, der sich als du oder einer deiner Kontakte ausgeben kann, ohne dass euch das aufällt.\n\nDeine Kontakte wissen nun evtl. auch, dass ihr nicht von der Identität des jeweils anderen überzeugt sein könnt. Sei nicht irritiert, wenn sie dich auf anderem Wege kontaktieren und sich nach dir erkundigen.")! //We could mention a wrong password here too corruptDataController.doneText = NSLocalizedString("Next", comment: "present next viewcontroller") let corruptDataController2 = IntroButtonViewController.storyboardInstance(description: "Die Veränderung der Daten auf deinem Telefon passierte vermutlich während der Grenzkontrolle durch Kontrolleure. Um uns einen generellen Überblick über das Eindringen in Privatsphäre bei Grenzkontrollen zu geben und damit die App zu verbessern, würde es uns sehr freuen, wenn du uns einen kurzen Bericht über deine Erfahrungen mit Grenzkontrollen hinterlassen würdest!", buttonAction: {_ in UIApplication.shared.openURL(URL(string: TravelHandler.website)!)}, buttonText: "Erfahrungsbericht hinterlassen")! let doneController = IntroButtonViewController.storyboardInstance(description: "Super, du kannst nun wieder Briefe schreiben!\n\nUm dieses Feature zu verbessern und einen generellen Überblick über das Eindringen in Privatsphäre bei Grenzkontrollen zu haben, würde es uns sehr freuen, wenn du uns einen kurzen Bericht über deine Erfahrungen mit Grenzkontrollen hinterlassen würdest!", buttonAction: {_ in UIApplication.shared.openURL(URL(string: TravelHandler.website)!)}, buttonText: "Erfahrungsbericht hinterlassen")! -- GitLab