diff --git a/data/resources-svg/README.md b/data/resources-svg/README.md index e55a623b22..c863ad16ac 100644 --- a/data/resources-svg/README.md +++ b/data/resources-svg/README.md @@ -9,3 +9,5 @@ Twitter icon is downloaded from https://about.twitter.com/en/who-we-are/brand-to VK icon is downloaded from https://vk.com/brand Line logo is downloaded from https://line.me/en/logo + +Wikimedia Commons logo is downloaded from https://commons.wikimedia.org/wiki/File:Commons-logo.svg diff --git a/data/resources-svg/ic_wikimedia_commons_white.svg b/data/resources-svg/ic_wikimedia_commons_white.svg new file mode 100644 index 0000000000..5248821bfe --- /dev/null +++ b/data/resources-svg/ic_wikimedia_commons_white.svg @@ -0,0 +1,22 @@ + + +Wikimedia Commons Logo + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/strings/strings.txt b/data/strings/strings.txt index 41094deb26..ffb9f3b270 100644 --- a/data/strings/strings.txt +++ b/data/strings/strings.txt @@ -9057,12 +9057,13 @@ [read_in_wikipedia] comment = Place Page link to Wikipedia article (if map object has it). - tags = android + tags = android,ios en = Wikipedia ar = ويكيبيديا be = Вікіпедыя ca = Viquipèdia el = Wikipedia + es = Wikipedia fa = ویکی پدیا fr = Wikipédia it = Wikipedia @@ -9077,6 +9078,11 @@ zh-Hans = 维基百科 zh-Hant = 維基百科 + [wikimedia_commons] + comment = Place Page link to Wikimedia Commons. + tags = android,ios + en = Wikimedia Commons + [p2p_your_location] tags = android,ios en = Your Location diff --git a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.h b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.h index 8a13ab875b..9533f55927 100644 --- a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.h +++ b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.h @@ -11,6 +11,8 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic, readonly, nullable) NSString *phone; @property(nonatomic, readonly, nullable) NSURL *phoneUrl; @property(nonatomic, readonly, nullable) NSString *website; +@property(nonatomic, readonly, nullable) NSString *wikipedia; +@property(nonatomic, readonly, nullable) NSString *wikimediaCommons; @property(nonatomic, readonly, nullable) NSString *facebook; @property(nonatomic, readonly, nullable) NSString *instagram; @property(nonatomic, readonly, nullable) NSString *twitter; diff --git a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.mm b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.mm index 18fafea7d7..8e265d8ac1 100644 --- a/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.mm +++ b/iphone/CoreApi/CoreApi/PlacePageData/Common/PlacePageInfoData.mm @@ -46,6 +46,8 @@ using namespace osm; break; } case MetadataID::FMD_WEBSITE: _website = ToNSString(value); break; + case MetadataID::FMD_WIKIPEDIA: _wikipedia = ToNSString(value); break; + case MetadataID::FMD_WIKIMEDIA_COMMONS: _wikimediaCommons = ToNSString(value); break; case MetadataID::FMD_EMAIL: _email = ToNSString(value); _emailUrl = [NSURL URLWithString:[NSString stringWithFormat:@"mailto:%@", _email]]; diff --git a/iphone/Maps/Images.xcassets/Place Page/ic_placepage_wikimedia_commons.imageset/Contents.json b/iphone/Maps/Images.xcassets/Place Page/ic_placepage_wikimedia_commons.imageset/Contents.json new file mode 100644 index 0000000000..80339920ab --- /dev/null +++ b/iphone/Maps/Images.xcassets/Place Page/ic_placepage_wikimedia_commons.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "ic_placepage_wikimedia_commons.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "ic_placepage_wikimedia_commons@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "ic_placepage_wikimedia_commons@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "template" + } +} diff --git a/iphone/Maps/Images.xcassets/Place Page/ic_placepage_wikimedia_commons.imageset/ic_placepage_wikimedia_commons.png b/iphone/Maps/Images.xcassets/Place Page/ic_placepage_wikimedia_commons.imageset/ic_placepage_wikimedia_commons.png new file mode 100644 index 0000000000..77deac96ae Binary files /dev/null and b/iphone/Maps/Images.xcassets/Place Page/ic_placepage_wikimedia_commons.imageset/ic_placepage_wikimedia_commons.png differ diff --git a/iphone/Maps/Images.xcassets/Place Page/ic_placepage_wikimedia_commons.imageset/ic_placepage_wikimedia_commons@2x.png b/iphone/Maps/Images.xcassets/Place Page/ic_placepage_wikimedia_commons.imageset/ic_placepage_wikimedia_commons@2x.png new file mode 100644 index 0000000000..8b5ca76c51 Binary files /dev/null and b/iphone/Maps/Images.xcassets/Place Page/ic_placepage_wikimedia_commons.imageset/ic_placepage_wikimedia_commons@2x.png differ diff --git a/iphone/Maps/Images.xcassets/Place Page/ic_placepage_wikimedia_commons.imageset/ic_placepage_wikimedia_commons@3x.png b/iphone/Maps/Images.xcassets/Place Page/ic_placepage_wikimedia_commons.imageset/ic_placepage_wikimedia_commons@3x.png new file mode 100644 index 0000000000..91c1ce0598 Binary files /dev/null and b/iphone/Maps/Images.xcassets/Place Page/ic_placepage_wikimedia_commons.imageset/ic_placepage_wikimedia_commons@3x.png differ diff --git a/iphone/Maps/UI/PlacePage/Components/PlacePageInfoViewController.swift b/iphone/Maps/UI/PlacePage/Components/PlacePageInfoViewController.swift index 5b28c424a9..8f2428e6d7 100644 --- a/iphone/Maps/UI/PlacePage/Components/PlacePageInfoViewController.swift +++ b/iphone/Maps/UI/PlacePage/Components/PlacePageInfoViewController.swift @@ -52,6 +52,8 @@ class InfoItemViewController: UIViewController { protocol PlacePageInfoViewControllerDelegate: AnyObject { func didPressCall() func didPressWebsite() + func didPressWikipedia() + func didPressWikimediaCommons() func didPressFacebook() func didPressInstagram() func didPressTwitter() @@ -75,6 +77,8 @@ class PlacePageInfoViewController: UIViewController { private var rawOpeningHoursView: InfoItemViewController? private var phoneView: InfoItemViewController? private var websiteView: InfoItemViewController? + private var wikipediaView: InfoItemViewController? + private var wikimediaCommonsView: InfoItemViewController? private var emailView: InfoItemViewController? private var facebookView: InfoItemViewController? private var instagramView: InfoItemViewController? @@ -134,6 +138,18 @@ class PlacePageInfoViewController: UIViewController { self?.delegate?.didPressWebsite() } } + + if let wikipedia = placePageInfoData.wikipedia { + wikipediaView = createInfoItem(L("read_in_wikipedia"), icon: UIImage(named: "ic_placepage_wiki"), style: .link) { [weak self] in + self?.delegate?.didPressWikipedia() + } + } + + if let wikimediaCommons = placePageInfoData.wikimediaCommons { + wikimediaCommonsView = createInfoItem(L("wikimedia_commons"), icon: UIImage(named: "ic_placepage_wikimedia_commons"), style: .link) { [weak self] in + self?.delegate?.didPressWikimediaCommons() + } + } if let wifi = placePageInfoData.wifiAvailable { wifiView = createInfoItem(wifi, icon: UIImage(named: "ic_placepage_wifi")) diff --git a/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift b/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift index 04f60d5ec8..5eec841fcb 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageInteractor.swift @@ -33,6 +33,14 @@ extension PlacePageInteractor: PlacePageInfoViewControllerDelegate { MWMPlacePageManagerHelper.openWebsite(placePageData) } + func didPressWikipedia() { + MWMPlacePageManagerHelper.openWikipedia(placePageData) + } + + func didPressWikimediaCommons() { + MWMPlacePageManagerHelper.openWikimediaCommons(placePageData) + } + func didPressFacebook() { MWMPlacePageManagerHelper.openFacebook(placePageData) } diff --git a/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManager.mm b/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManager.mm index a25567ddf0..d4d7b34603 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManager.mm +++ b/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManager.mm @@ -229,6 +229,14 @@ using namespace storage; [self.ownerViewController openUrl:data.infoData.website]; } +- (void)openWikipedia:(PlacePageData *)data { + [self.ownerViewController openUrl:data.infoData.wikipedia]; +} + +- (void)openWikimediaCommons:(PlacePageData *)data { + [self.ownerViewController openUrl:data.infoData.wikimediaCommons]; +} + - (void)openFacebook:(PlacePageData *)data { [self.ownerViewController openUrl:[NSString stringWithFormat:@"https://m.facebook.com/%@", data.infoData.facebook]]; } diff --git a/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManagerHelper.h b/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManagerHelper.h index 23e2370f9c..669eea8ca2 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManagerHelper.h +++ b/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManagerHelper.h @@ -8,6 +8,8 @@ + (void)addBusiness; + (void)addPlace:(CLLocationCoordinate2D)coordinate; + (void)openWebsite:(PlacePageData *)data; ++ (void)openWikipedia:(PlacePageData *)data; ++ (void)openWikimediaCommons:(PlacePageData *)data; + (void)openEmail:(PlacePageData *)data; + (void)openFacebook:(PlacePageData *)data; + (void)openInstagram:(PlacePageData *)data; diff --git a/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManagerHelper.mm b/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManagerHelper.mm index f970bf5051..099d1272eb 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManagerHelper.mm +++ b/iphone/Maps/UI/PlacePage/PlacePageManager/MWMPlacePageManagerHelper.mm @@ -15,6 +15,8 @@ - (void)addBusiness; - (void)addPlace:(CLLocationCoordinate2D)coordinate; - (void)openWebsite:(PlacePageData *)data; +- (void)openWikipedia:(PlacePageData *)data; +- (void)openWikimediaCommons:(PlacePageData *)data; - (void)openEmail:(PlacePageData *)data; - (void)openFacebook:(PlacePageData *)data; - (void)openInstagram:(PlacePageData *)data; @@ -72,6 +74,14 @@ [[MWMMapViewControlsManager manager].placePageManager openEmail:data]; } ++ (void)openWikipedia:(PlacePageData *)data { + [[MWMMapViewControlsManager manager].placePageManager openWikipedia:data]; +} + ++ (void)openWikimediaCommons:(PlacePageData *)data { + [[MWMMapViewControlsManager manager].placePageManager openWikimediaCommons:data]; +} + + (void)openFacebook:(PlacePageData *)data { [[MWMMapViewControlsManager manager].placePageManager openFacebook:data]; }