diff --git a/PyConJP.xcodeproj/project.pbxproj b/PyConJP.xcodeproj/project.pbxproj index c38af7e..0e65d88 100644 --- a/PyConJP.xcodeproj/project.pbxproj +++ b/PyConJP.xcodeproj/project.pbxproj @@ -85,6 +85,12 @@ DB10DEA11EDFDF8200DAED31 /* NibInstantitable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB10DEA01EDFDF8200DAED31 /* NibInstantitable.swift */; }; DB10DEA31EDFDF9900DAED31 /* StoryboardIdentifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB10DEA21EDFDF9900DAED31 /* StoryboardIdentifiable.swift */; }; DB10DEA71EDFE62A00DAED31 /* RealmError.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB10DEA61EDFE62A00DAED31 /* RealmError.swift */; }; + DB1140B51F5EAC8F0046442E /* StaffListAPIRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1140B11F5EAC8F0046442E /* StaffListAPIRequest.swift */; }; + DB1140B61F5EAC8F0046442E /* TalkDetailAPIRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1140B31F5EAC8F0046442E /* TalkDetailAPIRequest.swift */; }; + DB1140B71F5EAC8F0046442E /* TalksAPIRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1140B41F5EAC8F0046442E /* TalksAPIRequest.swift */; }; + DB1140B91F5EACDE0046442E /* SurveyURLAPIRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1140B81F5EACDE0046442E /* SurveyURLAPIRequest.swift */; }; + DB1140BC1F604A860046442E /* MoreList.strings in Resources */ = {isa = PBXBuildFile; fileRef = DB1140BE1F604A860046442E /* MoreList.strings */; }; + DB1140C51F60506D0046442E /* MoreListDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1140C41F60506D0046442E /* MoreListDataStore.swift */; }; DB28C1921F59AFB2003BEFE0 /* GitHubRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB28C1911F59AFB2003BEFE0 /* GitHubRequest.swift */; }; DB4BC68F1EF5098D00650964 /* SpreadsheetView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB4BC68E1EF5098D00650964 /* SpreadsheetView.framework */; }; DB4BC6911EF522CD00650964 /* ConferenceTimetableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4BC6901EF522CD00650964 /* ConferenceTimetableViewController.swift */; }; @@ -116,9 +122,6 @@ DBA8722F1EF1A40E0001F8A3 /* LocalNotificationProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA8722D1EF1A40E0001F8A3 /* LocalNotificationProtocol.swift */; }; DBA872301EF1A40E0001F8A3 /* ReceiveLocalNotificationProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA8722E1EF1A40E0001F8A3 /* ReceiveLocalNotificationProtocol.swift */; }; DBA872321EF1A4990001F8A3 /* NotificationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA872311EF1A4990001F8A3 /* NotificationType.swift */; }; - DBA872371EF2E0E90001F8A3 /* StaffListAPIRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA872341EF2E0E90001F8A3 /* StaffListAPIRequest.swift */; }; - DBA872381EF2E0E90001F8A3 /* TalkDetailAPIRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA872351EF2E0E90001F8A3 /* TalkDetailAPIRequest.swift */; }; - DBA872391EF2E0E90001F8A3 /* TalksAPIRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA872361EF2E0E90001F8A3 /* TalksAPIRequest.swift */; }; DBA8723C1EF2E14B0001F8A3 /* SaveTalksRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA8723B1EF2E14B0001F8A3 /* SaveTalksRequest.swift */; }; DBA8723E1EF2E5320001F8A3 /* LoadFavoriteTalksRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA8723D1EF2E5320001F8A3 /* LoadFavoriteTalksRequest.swift */; }; DBA872401EF2E7410001F8A3 /* LoadTalksRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA8723F1EF2E7410001F8A3 /* LoadTalksRequest.swift */; }; @@ -271,6 +274,14 @@ DB10DEA01EDFDF8200DAED31 /* NibInstantitable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NibInstantitable.swift; sourceTree = ""; }; DB10DEA21EDFDF9900DAED31 /* StoryboardIdentifiable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoryboardIdentifiable.swift; sourceTree = ""; }; DB10DEA61EDFE62A00DAED31 /* RealmError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RealmError.swift; sourceTree = ""; }; + DB1140B11F5EAC8F0046442E /* StaffListAPIRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaffListAPIRequest.swift; sourceTree = ""; }; + DB1140B31F5EAC8F0046442E /* TalkDetailAPIRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TalkDetailAPIRequest.swift; sourceTree = ""; }; + DB1140B41F5EAC8F0046442E /* TalksAPIRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TalksAPIRequest.swift; sourceTree = ""; }; + DB1140B81F5EACDE0046442E /* SurveyURLAPIRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SurveyURLAPIRequest.swift; sourceTree = ""; }; + DB1140BD1F604A860046442E /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/MoreList.strings; sourceTree = ""; }; + DB1140BF1F604C620046442E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/MoreList.strings; sourceTree = ""; }; + DB1140C01F604C630046442E /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/MoreList.strings; sourceTree = ""; }; + DB1140C41F60506D0046442E /* MoreListDataStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MoreListDataStore.swift; sourceTree = ""; }; DB28C1911F59AFB2003BEFE0 /* GitHubRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GitHubRequest.swift; sourceTree = ""; }; DB4BC68E1EF5098D00650964 /* SpreadsheetView.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SpreadsheetView.framework; path = Carthage/Build/iOS/SpreadsheetView.framework; sourceTree = ""; }; DB4BC6901EF522CD00650964 /* ConferenceTimetableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConferenceTimetableViewController.swift; sourceTree = ""; }; @@ -320,9 +331,6 @@ DBA8722D1EF1A40E0001F8A3 /* LocalNotificationProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalNotificationProtocol.swift; sourceTree = ""; }; DBA8722E1EF1A40E0001F8A3 /* ReceiveLocalNotificationProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReceiveLocalNotificationProtocol.swift; sourceTree = ""; }; DBA872311EF1A4990001F8A3 /* NotificationType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationType.swift; sourceTree = ""; }; - DBA872341EF2E0E90001F8A3 /* StaffListAPIRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaffListAPIRequest.swift; sourceTree = ""; }; - DBA872351EF2E0E90001F8A3 /* TalkDetailAPIRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TalkDetailAPIRequest.swift; sourceTree = ""; }; - DBA872361EF2E0E90001F8A3 /* TalksAPIRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TalksAPIRequest.swift; sourceTree = ""; }; DBA8723B1EF2E14B0001F8A3 /* SaveTalksRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SaveTalksRequest.swift; sourceTree = ""; }; DBA8723D1EF2E5320001F8A3 /* LoadFavoriteTalksRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoadFavoriteTalksRequest.swift; sourceTree = ""; }; DBA8723F1EF2E7410001F8A3 /* LoadTalksRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoadTalksRequest.swift; sourceTree = ""; }; @@ -552,6 +560,7 @@ DB05D1451E43FBCB00781BF7 /* Map.strings */, DB05D1471E43FBCB00781BF7 /* URLScheme.strings */, DB51C21B1F5322D20016C952 /* EventList.strings */, + DB1140BE1F604A860046442E /* MoreList.strings */, ); path = Localizable; sourceTree = ""; @@ -718,6 +727,32 @@ path = UI; sourceTree = ""; }; + DB1140B01F5EAC8F0046442E /* GitHub */ = { + isa = PBXGroup; + children = ( + DB1140B11F5EAC8F0046442E /* StaffListAPIRequest.swift */, + DB1140B81F5EACDE0046442E /* SurveyURLAPIRequest.swift */, + ); + path = GitHub; + sourceTree = ""; + }; + DB1140B21F5EAC8F0046442E /* PyConJP */ = { + isa = PBXGroup; + children = ( + DB1140B31F5EAC8F0046442E /* TalkDetailAPIRequest.swift */, + DB1140B41F5EAC8F0046442E /* TalksAPIRequest.swift */, + ); + path = PyConJP; + sourceTree = ""; + }; + DB1140C11F6050360046442E /* More */ = { + isa = PBXGroup; + children = ( + DB1140C41F60506D0046442E /* MoreListDataStore.swift */, + ); + path = More; + sourceTree = ""; + }; DB4BC6921EF5257200650964 /* SpreadsheetViewCell */ = { isa = PBXGroup; children = ( @@ -735,6 +770,7 @@ isa = PBXGroup; children = ( DB4BC6A61EF5925800650964 /* Conference */, + DB1140C11F6050360046442E /* More */, DB4BC6961EF5916D00650964 /* DataSource */, ); path = DataStore; @@ -868,9 +904,8 @@ DBA872331EF2E0E90001F8A3 /* APIRequest */ = { isa = PBXGroup; children = ( - DBA872341EF2E0E90001F8A3 /* StaffListAPIRequest.swift */, - DBA872351EF2E0E90001F8A3 /* TalkDetailAPIRequest.swift */, - DBA872361EF2E0E90001F8A3 /* TalksAPIRequest.swift */, + DB1140B21F5EAC8F0046442E /* PyConJP */, + DB1140B01F5EAC8F0046442E /* GitHub */, ); path = APIRequest; sourceTree = ""; @@ -1109,6 +1144,7 @@ DB05D1C11E43FBCB00781BF7 /* DummyTalks.json in Resources */, DB05D1CA1E43FBCB00781BF7 /* Main.storyboard in Resources */, DB05D1D51E43FBCB00781BF7 /* SpeakerCollectionViewCell.xib in Resources */, + DB1140BC1F604A860046442E /* MoreList.strings in Resources */, DB05D1C41E43FBCB00781BF7 /* Map.strings in Resources */, DB05D1C81E43FBCB00781BF7 /* Events.storyboard in Resources */, DB05D1C01E43FBCB00781BF7 /* DummyTalkDetail.json in Resources */, @@ -1211,6 +1247,7 @@ DB7EAAE21EF04DAC00FEF504 /* DummyTalksProtocol.swift in Sources */, DB4BC6A81EF5926600650964 /* ConferenceTimetableDataStore.swift in Sources */, DB4BC6A51EF5916D00650964 /* TimelineDataSource.swift in Sources */, + DB1140B91F5EACDE0046442E /* SurveyURLAPIRequest.swift in Sources */, DB05D1E51E43FBCB00781BF7 /* EventsListViewController.swift in Sources */, DBA872301EF1A40E0001F8A3 /* ReceiveLocalNotificationProtocol.swift in Sources */, DB05D1E01E43FBCB00781BF7 /* ConferenceDateViewController.swift in Sources */, @@ -1224,18 +1261,16 @@ DB05D1A41E43FBCB00781BF7 /* UIColorExtension.swift in Sources */, DB05D1971E43FBCB00781BF7 /* AppDelegate.swift in Sources */, DBA872401EF2E7410001F8A3 /* LoadTalksRequest.swift in Sources */, - DBA872391EF2E0E90001F8A3 /* TalksAPIRequest.swift in Sources */, - DBA872381EF2E0E90001F8A3 /* TalkDetailAPIRequest.swift in Sources */, DB10DEA11EDFDF8200DAED31 /* NibInstantitable.swift in Sources */, DB05D1BC1E43FBCB00781BF7 /* TwitterURLSchemeProtocol.swift in Sources */, DB05D1991E43FBCB00781BF7 /* PCJNotificationConfig.swift in Sources */, DB10DEA31EDFDF9900DAED31 /* StoryboardIdentifiable.swift in Sources */, DB4BC6AC1EF670B600650964 /* TimetableRoomCell.swift in Sources */, DBA8723E1EF2E5320001F8A3 /* LoadFavoriteTalksRequest.swift in Sources */, - DBA872371EF2E0E90001F8A3 /* StaffListAPIRequest.swift in Sources */, DB7EAADB1EEEF76A00FEF504 /* UIImageViewExtension.swift in Sources */, DB05D1E11E43FBCB00781BF7 /* ConferenceListViewController.swift in Sources */, DB10DE9D1EDFDF3B00DAED31 /* UIStoryboardExtension.swift in Sources */, + DB1140C51F60506D0046442E /* MoreListDataStore.swift in Sources */, DB05D1B41E43FBCB00781BF7 /* TalkDetail.swift in Sources */, DB05D1E31E43FBCB00781BF7 /* ConferencePageViewController.swift in Sources */, DB05D1DB1E43FBCB00781BF7 /* DetailImageViewController.swift in Sources */, @@ -1283,11 +1318,14 @@ DB05D1A91E43FBCB00781BF7 /* TalkObject.swift in Sources */, DB05D1AF1E43FBCB00781BF7 /* Level.swift in Sources */, DB05D1A11E43FBCB00781BF7 /* ArrayExtension.swift in Sources */, + DB1140B71F5EAC8F0046442E /* TalksAPIRequest.swift in Sources */, DB05D1D31E43FBCB00781BF7 /* CustomImageView.swift in Sources */, DB05D1B61E43FBCB00781BF7 /* Timeline.swift in Sources */, DB05D1AE1E43FBCB00781BF7 /* Category.swift in Sources */, DB05D1B11E43FBCB00781BF7 /* Speaker.swift in Sources */, + DB1140B51F5EAC8F0046442E /* StaffListAPIRequest.swift in Sources */, DB05D1B21E43FBCB00781BF7 /* Staff.swift in Sources */, + DB1140B61F5EAC8F0046442E /* TalkDetailAPIRequest.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1438,6 +1476,16 @@ name = More.storyboard; sourceTree = ""; }; + DB1140BE1F604A860046442E /* MoreList.strings */ = { + isa = PBXVariantGroup; + children = ( + DB1140BD1F604A860046442E /* Base */, + DB1140BF1F604C620046442E /* en */, + DB1140C01F604C630046442E /* ja */, + ); + name = MoreList.strings; + sourceTree = ""; + }; DB51C21B1F5322D20016C952 /* EventList.strings */ = { isa = PBXVariantGroup; children = ( diff --git a/PyConJP/DataStore/More/MoreListDataStore.swift b/PyConJP/DataStore/More/MoreListDataStore.swift new file mode 100644 index 0000000..4ff947b --- /dev/null +++ b/PyConJP/DataStore/More/MoreListDataStore.swift @@ -0,0 +1,188 @@ +// +// MoreListDataStore.swift +// PyConJP +// +// Created by Yutaro Muta on 2017/09/07. +// Copyright © 2017 PyCon JP. All rights reserved. +// + +import Foundation +import APIKit +import WebAPIFramework + +final class MoreListDataStore { + + private(set) var sections: [Section] + + init(reloadData: @escaping (() -> Void)) { + self.sections = [] + getSurveyURL { + reloadData() + } + } + + private func getSurveyURL(completionHandler: @escaping (() -> Void)) { + let request = SurveyURLAPIRequest() + Session.send(request) { [weak self](result) in + switch result { + case .success(let url): + self?.sections = Section.sections(with: url) + completionHandler() + case .failure: + self?.sections = Section.sections(with: nil) + completionHandler() + } + } + } + +} + +extension MoreListDataStore { + + enum Section { + case about(rows: [Row]) + case venue(rows: [Row]) + case application(rows: [Row]) + + var title: String? { + switch self { + case .about: + return nil + case .venue: + return NSLocalizedString("venue", tableName: "MoreList", comment: "") + case .application: + return NSLocalizedString("application", tableName: "MoreList", comment: "") + } + } + + var rows: [Row] { + switch self { + case .about(let rows): + return rows + case .venue(let rows): + return rows + case .application(let rows): + return rows + } + } + + static func sections(with surveyURL: URL?) -> [Section] { + if let surveyURL = surveyURL { + return [.about(rows: [.participantsInformation, + .whatsPyConJP, + .codeOfConduct, + .summary, + .sponsor, + .staffList, + .survey(url: surveyURL)]), + .venue(rows: [.conferenceMap, + .sprintMap]), + .application(rows: [.repository, + .license, + .feedback])] + } else { + return [.about(rows: [.participantsInformation, + .whatsPyConJP, + .codeOfConduct, + .summary, + .sponsor, + .staffList]), + .venue(rows: [.conferenceMap, + .sprintMap]), + .application(rows: [.repository, + .license, + .feedback])] + } + } + + } + + enum Row: MailURLSchemeProtocol { + case participantsInformation + case whatsPyConJP + case codeOfConduct + case summary + case sponsor + case staffList + case survey(url: URL) + + case conferenceMap + case sprintMap + + case repository + case license + case feedback + + var title: String { + switch self { + case .participantsInformation: + return NSLocalizedString("participantsInformation", tableName: "MoreList", comment: "") + case .whatsPyConJP: + return NSLocalizedString("whatsPyConJP", tableName: "MoreList", comment: "") + case .codeOfConduct: + return NSLocalizedString("codeOfConduct", tableName: "MoreList", comment: "") + case .summary: + return NSLocalizedString("summary", tableName: "MoreList", comment: "") + case .sponsor: + return NSLocalizedString("sponsor", tableName: "MoreList", comment: "") + case .staffList: + return NSLocalizedString("staffList", tableName: "MoreList", comment: "") + case .survey: + return NSLocalizedString("survey", tableName: "MoreList", comment: "") + case .conferenceMap: + return NSLocalizedString("conferenceMap", tableName: "MoreList", comment: "") + case .sprintMap: + return NSLocalizedString("sprintMap", tableName: "MoreList", comment: "") + case .repository: + return NSLocalizedString("repository", tableName: "MoreList", comment: "") + case .license: + return NSLocalizedString("license", tableName: "MoreList", comment: "") + case .feedback: + return NSLocalizedString("feedback", tableName: "MoreList", comment: "") + } + } + + var identifier: String? { + switch self { + case .whatsPyConJP: + return "WhatsPyConJPViewController" + case .codeOfConduct: + return "CodeOfConductViewController" + case .summary: + return "SummaryViewController" + case .license: + return "LicenseViewController" + case .staffList: + return "StaffListViewController" + default: + return nil + } + } + + var url: URL? { + switch self { + case .participantsInformation: + return URL(string: WebConfig.baseURL + "participants/") + case .sponsor: + return URL(string: WebConfig.baseURL + "sponsors/") + case .repository: + return URL(string: "https://github.com/pyconjp/pyconjp-ios") + default: + return nil + } + } + + var urlSheme: URL? { + switch self { + case .feedback: + return mailURLScheme(to: PCJConfig.mailAddress, + subject: "Feedback for PyCon JP 2017 App", + body: String(format: "iOS version: %@\nDevice Model: %@\nReply-to:\n\nFeedback:", arguments: [UIDevice.current.systemVersion, UIDevice.current.modelType])) + default: + return nil + } + } + + } + +} diff --git a/PyConJP/Model/APIRequest/StaffListAPIRequest.swift b/PyConJP/Model/APIRequest/GitHub/StaffListAPIRequest.swift similarity index 100% rename from PyConJP/Model/APIRequest/StaffListAPIRequest.swift rename to PyConJP/Model/APIRequest/GitHub/StaffListAPIRequest.swift diff --git a/PyConJP/Model/APIRequest/GitHub/SurveyURLAPIRequest.swift b/PyConJP/Model/APIRequest/GitHub/SurveyURLAPIRequest.swift new file mode 100644 index 0000000..6a30657 --- /dev/null +++ b/PyConJP/Model/APIRequest/GitHub/SurveyURLAPIRequest.swift @@ -0,0 +1,32 @@ +// +// SurveyURLAPIRequest.swift +// PyConJP +// +// Created by Yutaro Muta on 2017/09/05. +// Copyright © 2017 PyCon JP. All rights reserved. +// + +import Foundation +import APIKit +import WebAPIFramework + +struct SurveyURLAPIRequest: GitHubRequest { + + var method: HTTPMethod { + return .get + } + + var path: String { + return "surveyURL.json" + } + + func response(from object: Any, urlResponse: HTTPURLResponse) throws -> URL { + guard let dictionary = object as? [String: Any], + let urlString = dictionary["url"] as? String, + let url = URL(string: urlString) else { + throw ResponseError.unexpectedObject(object) + } + return url + } + +} diff --git a/PyConJP/Model/APIRequest/TalkDetailAPIRequest.swift b/PyConJP/Model/APIRequest/PyConJP/TalkDetailAPIRequest.swift similarity index 100% rename from PyConJP/Model/APIRequest/TalkDetailAPIRequest.swift rename to PyConJP/Model/APIRequest/PyConJP/TalkDetailAPIRequest.swift diff --git a/PyConJP/Model/APIRequest/TalksAPIRequest.swift b/PyConJP/Model/APIRequest/PyConJP/TalksAPIRequest.swift similarity index 100% rename from PyConJP/Model/APIRequest/TalksAPIRequest.swift rename to PyConJP/Model/APIRequest/PyConJP/TalksAPIRequest.swift diff --git a/PyConJP/Resource/Localizable/Base.lproj/MoreList.strings b/PyConJP/Resource/Localizable/Base.lproj/MoreList.strings new file mode 100644 index 0000000..3dec369 --- /dev/null +++ b/PyConJP/Resource/Localizable/Base.lproj/MoreList.strings @@ -0,0 +1,28 @@ +/* + MoreList.strings + PyConJP + + Created by Yutaro Muta on 2017/09/07. + Copyright © 2017 PyCon JP. All rights reserved. +*/ + +/** + MoreListViewController + */ + +"participantsInformation" = "Participants Information"; +"whatsPyConJP" = "What is PyCon JP?"; +"codeOfConduct" = "Code of Conduct"; +"summary" = "Summary"; +"sponsor" = "Sponsor"; +"staffList" = "Staff List"; +"survey" = "Survey"; + +"venue" = "Venue Information"; +"conferenceMap" = "Tutorials・Conference"; +"sprintMap" = "Sprints"; + +"application" = "About Application"; +"repository" = "Repository"; +"license" = "The MIT License (MIT)"; +"feedback" = "Feedback (Open Mail)"; diff --git a/PyConJP/Resource/Localizable/en.lproj/MoreList.strings b/PyConJP/Resource/Localizable/en.lproj/MoreList.strings new file mode 100644 index 0000000..3dec369 --- /dev/null +++ b/PyConJP/Resource/Localizable/en.lproj/MoreList.strings @@ -0,0 +1,28 @@ +/* + MoreList.strings + PyConJP + + Created by Yutaro Muta on 2017/09/07. + Copyright © 2017 PyCon JP. All rights reserved. +*/ + +/** + MoreListViewController + */ + +"participantsInformation" = "Participants Information"; +"whatsPyConJP" = "What is PyCon JP?"; +"codeOfConduct" = "Code of Conduct"; +"summary" = "Summary"; +"sponsor" = "Sponsor"; +"staffList" = "Staff List"; +"survey" = "Survey"; + +"venue" = "Venue Information"; +"conferenceMap" = "Tutorials・Conference"; +"sprintMap" = "Sprints"; + +"application" = "About Application"; +"repository" = "Repository"; +"license" = "The MIT License (MIT)"; +"feedback" = "Feedback (Open Mail)"; diff --git a/PyConJP/Resource/Localizable/ja.lproj/MoreList.strings b/PyConJP/Resource/Localizable/ja.lproj/MoreList.strings new file mode 100644 index 0000000..84db308 --- /dev/null +++ b/PyConJP/Resource/Localizable/ja.lproj/MoreList.strings @@ -0,0 +1,28 @@ +/* + MoreList.strings + PyConJP + + Created by Yutaro Muta on 2017/09/07. + Copyright © 2017 PyCon JP. All rights reserved. +*/ + +/** + MoreListViewController + */ + +"participantsInformation" = "参加の手引き"; +"whatsPyConJP" = "PyCon JPってなに?"; +"codeOfConduct" = "行動規範"; +"summary" = "開催概要"; +"sponsor" = "スポンサー"; +"staffList" = "スタッフ一覧"; +"survey" = "アンケート"; + +"venue" = "会場情報"; +"conferenceMap" = "チュートリアル・カンファレンス"; +"sprintMap" = "スプリント"; + +"application" = "このアプリについて"; +"repository" = "リポジトリ"; +"license" = "The MIT License (MIT)"; +"feedback" = "フィードバック (Mailを起動)"; diff --git a/PyConJP/Storyboard/Base.lproj/Main.storyboard b/PyConJP/Storyboard/Base.lproj/Main.storyboard index c0accbd..4315791 100644 --- a/PyConJP/Storyboard/Base.lproj/Main.storyboard +++ b/PyConJP/Storyboard/Base.lproj/Main.storyboard @@ -1,7 +1,10 @@ - + + + + - + @@ -9,7 +12,7 @@ - + @@ -23,7 +26,7 @@ - + @@ -33,33 +36,42 @@ + + + + - @@ -79,18 +91,22 @@ + +