Brion VIBBER has submitted this change and it was merged. Change subject: Change "Credits" to "About". ......................................................................
Change "Credits" to "About". Includes version info and other items from Android version. Updated doc type index.html to strict. Updated doc types to not include outdated version info. Re-added "repositories" section to About page. Change-Id: I9914dd0c56af25d7ecf9cbeb25245b939540a0a4 --- M Wikipedia.xcodeproj/project.pbxproj M scripts/icon-svgs-to-pngs.sh M wikipedia/Base.lproj/Main_iPhone.storyboard A wikipedia/Categories/UIWebView+LoadAssetsHtml.h A wikipedia/Categories/UIWebView+LoadAssetsHtml.m A wikipedia/Images.xcassets/WMFLogo_60.imageset/Contents.json A wikipedia/Images.xcassets/WMFLogo_60.imageset/wmf_logo.svg A wikipedia/Images.xcassets/WMFLogo_60.imageset/wmflogo_120.png A wikipedia/Images.xcassets/WMFLogo_60.imageset/wmflogo_180.png A wikipedia/Images.xcassets/WMFLogo_60.imageset/wmflogo_60.png A wikipedia/View Controllers/About/AboutViewController.h A wikipedia/View Controllers/About/AboutViewController.m A wikipedia/View Controllers/About/AboutViewController.plist M wikipedia/View Controllers/Navigation/Secondary/SecondaryMenuViewController.m A wikipedia/assets/about.html M wikipedia/assets/abusefilter.html A wikipedia/assets/images/wmflogo_120.png A wikipedia/assets/images/wmflogo_180.png A wikipedia/assets/images/wmflogo_60.png M wikipedia/assets/index.html M wikipedia/assets/preview.html M wikipedia/en.lproj/Localizable.strings M wikipedia/mw-bridge/CommunicationBridge.m M wikipedia/qqq.lproj/Localizable.strings M www/Gruntfile.js A www/about.html M www/abusefilter.html A www/images/wmflogo_120.png A www/images/wmflogo_180.png A www/images/wmflogo_60.png M www/index.html M www/preview.html 32 files changed, 715 insertions(+), 35 deletions(-) Approvals: Brion VIBBER: Looks good to me, approved jenkins-bot: Verified diff --git a/Wikipedia.xcodeproj/project.pbxproj b/Wikipedia.xcodeproj/project.pbxproj index db352b1..ad429ca 100644 --- a/Wikipedia.xcodeproj/project.pbxproj +++ b/Wikipedia.xcodeproj/project.pbxproj @@ -46,6 +46,7 @@ 042B3996192EAEEA0066B270 /* ShareMenuSavePageActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 042B3995192EAEEA0066B270 /* ShareMenuSavePageActivity.m */; }; 0433542218A023FE009305F0 /* UIViewController+HideKeyboard.m in Sources */ = {isa = PBXBuildFile; fileRef = 0433542118A023FE009305F0 /* UIViewController+HideKeyboard.m */; }; 0433542618A093C5009305F0 /* UIView+RemoveConstraints.m in Sources */ = {isa = PBXBuildFile; fileRef = 0433542518A093C5009305F0 /* UIView+RemoveConstraints.m */; }; + 0439317619FB092600386E8F /* UIWebView+LoadAssetsHtml.m in Sources */ = {isa = PBXBuildFile; fileRef = 0439317519FB092600386E8F /* UIWebView+LoadAssetsHtml.m */; }; 043DAC4B1901C3EE001CD17C /* CreditsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 043DAC4A1901C3EE001CD17C /* CreditsViewController.m */; }; 043F18E118D9691D00D8489A /* TopActionSheetLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 043F18DC18D9691D00D8489A /* TopActionSheetLabel.m */; }; 043F18E518D9691D00D8489A /* UINavigationController+TopActionSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = 043F18E018D9691D00D8489A /* UINavigationController+TopActionSheet.m */; }; @@ -66,6 +67,7 @@ 04530AF81935C07500022512 /* ModalContentViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 04530AF71935C07500022512 /* ModalContentViewController.m */; }; 04530AFB1935C2B500022512 /* EmptySegue.m in Sources */ = {isa = PBXBuildFile; fileRef = 04530AFA1935C2B500022512 /* EmptySegue.m */; }; 045A9F0D18F6090E0057EA85 /* assets in Resources */ = {isa = PBXBuildFile; fileRef = 045A9F0C18F6090E0057EA85 /* assets */; }; + 045D872119FAD2FA0035C1F9 /* AboutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 045D872019FAD2FA0035C1F9 /* AboutViewController.m */; }; 045EFF1A19A25FEB00D0EDBB /* logo-placeholder-search.png in Resources */ = {isa = PBXBuildFile; fileRef = 045EFF1819A25FEB00D0EDBB /* logo-placeholder-search.png */; }; 045EFF1B19A25FEB00D0EDBB /* logo-placeholder-sea...@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 045EFF1919A25FEB00D0EDBB /* logo-placeholder-sea...@2x.png */; }; 0460F8DC19B0F932001BC59B /* CenteredPathView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0460F8DB19B0F932001BC59B /* CenteredPathView.m */; }; @@ -81,6 +83,7 @@ 047ED63918C13E4900442BE3 /* PreviewWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = 047ED63818C13E4900442BE3 /* PreviewWebView.m */; }; 047FF5471889078C009DB293 /* Image+Convenience.m in Sources */ = {isa = PBXBuildFile; fileRef = 047FF5461889078C009DB293 /* Image+Convenience.m */; }; 04821CD119895EDC007558F6 /* ReferenceGradientView.m in Sources */ = {isa = PBXBuildFile; fileRef = 04821CD019895EDC007558F6 /* ReferenceGradientView.m */; }; + 0484411E19FF15AF00FD26C5 /* AboutViewController.plist in Resources */ = {isa = PBXBuildFile; fileRef = 0484411D19FF15AF00FD26C5 /* AboutViewController.plist */; }; 0484E3DE19D9D19B0085D18D /* UIView+ConstraintsScale.m in Sources */ = {isa = PBXBuildFile; fileRef = 0484E3DD19D9D19B0085D18D /* UIView+ConstraintsScale.m */; }; 0485FECF1994D5AE00141361 /* NearbyResultCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0485FECD1994D5AE00141361 /* NearbyResultCell.xib */; }; 0487041419F7683300B7D307 /* Cocoapods Notes.txt in Resources */ = {isa = PBXBuildFile; fileRef = 0487041319F7683300B7D307 /* Cocoapods Notes.txt */; }; @@ -312,6 +315,8 @@ 0433542118A023FE009305F0 /* UIViewController+HideKeyboard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+HideKeyboard.m"; sourceTree = "<group>"; }; 0433542418A093C5009305F0 /* UIView+RemoveConstraints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+RemoveConstraints.h"; sourceTree = "<group>"; }; 0433542518A093C5009305F0 /* UIView+RemoveConstraints.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+RemoveConstraints.m"; sourceTree = "<group>"; }; + 0439317419FB092600386E8F /* UIWebView+LoadAssetsHtml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIWebView+LoadAssetsHtml.h"; sourceTree = "<group>"; }; + 0439317519FB092600386E8F /* UIWebView+LoadAssetsHtml.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIWebView+LoadAssetsHtml.m"; sourceTree = "<group>"; }; 043DAC491901C3EE001CD17C /* CreditsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CreditsViewController.h; sourceTree = "<group>"; }; 043DAC4A1901C3EE001CD17C /* CreditsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CreditsViewController.m; sourceTree = "<group>"; }; 043F18DB18D9691D00D8489A /* TopActionSheetLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TopActionSheetLabel.h; sourceTree = "<group>"; }; @@ -352,6 +357,8 @@ 04530AF91935C2B500022512 /* EmptySegue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmptySegue.h; sourceTree = "<group>"; }; 04530AFA1935C2B500022512 /* EmptySegue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EmptySegue.m; sourceTree = "<group>"; }; 045A9F0C18F6090E0057EA85 /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; path = assets; sourceTree = "<group>"; }; + 045D871F19FAD2FA0035C1F9 /* AboutViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AboutViewController.h; sourceTree = "<group>"; }; + 045D872019FAD2FA0035C1F9 /* AboutViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AboutViewController.m; sourceTree = "<group>"; }; 045EFF1819A25FEB00D0EDBB /* logo-placeholder-search.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "logo-placeholder-search.png"; sourceTree = "<group>"; }; 045EFF1919A25FEB00D0EDBB /* logo-placeholder-sea...@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "logo-placeholder-sea...@2x.png"; sourceTree = "<group>"; }; 0460F8DA19B0F932001BC59B /* CenteredPathView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CenteredPathView.h; sourceTree = "<group>"; }; @@ -381,6 +388,7 @@ 047FF5461889078C009DB293 /* Image+Convenience.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Image+Convenience.m"; sourceTree = "<group>"; }; 04821CCF19895EDC007558F6 /* ReferenceGradientView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReferenceGradientView.h; sourceTree = "<group>"; }; 04821CD019895EDC007558F6 /* ReferenceGradientView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReferenceGradientView.m; sourceTree = "<group>"; }; + 0484411D19FF15AF00FD26C5 /* AboutViewController.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = AboutViewController.plist; sourceTree = "<group>"; }; 0484E3DC19D9D19B0085D18D /* UIView+ConstraintsScale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+ConstraintsScale.h"; sourceTree = "<group>"; }; 0484E3DD19D9D19B0085D18D /* UIView+ConstraintsScale.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+ConstraintsScale.m"; sourceTree = "<group>"; }; 0485FECD1994D5AE00141361 /* NearbyResultCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NearbyResultCell.xib; sourceTree = "<group>"; }; @@ -1040,6 +1048,16 @@ path = ModalOverlay; sourceTree = "<group>"; }; + 045D871D19FAD2D00035C1F9 /* About */ = { + isa = PBXGroup; + children = ( + 045D871F19FAD2FA0035C1F9 /* AboutViewController.h */, + 045D872019FAD2FA0035C1F9 /* AboutViewController.m */, + 0484411D19FF15AF00FD26C5 /* AboutViewController.plist */, + ); + path = About; + sourceTree = "<group>"; + }; 0460F8D919B0F90E001BC59B /* CenteredPathView */ = { isa = PBXGroup; children = ( @@ -1283,6 +1301,7 @@ 04C43AB0183441A4006C643B /* View Controllers */ = { isa = PBXGroup; children = ( + 045D871D19FAD2D00035C1F9 /* About */, 04A97E8418B81D440046B166 /* AccountCreation */, 04B7B9BA18B5569600A63551 /* Captcha */, 043DAC481901C3D2001CD17C /* Credits */, @@ -1378,6 +1397,8 @@ 04F0E2E9186EDC1A00468738 /* UIWebView+ElementLocation.m */, 04B6924E18E77B2A00F88D8A /* UIWebView+HideScrollGradient.h */, 04B6924F18E77B2A00F88D8A /* UIWebView+HideScrollGradient.m */, + 0439317419FB092600386E8F /* UIWebView+LoadAssetsHtml.h */, + 0439317519FB092600386E8F /* UIWebView+LoadAssetsHtml.m */, 04D149D818877343006B4104 /* Alerts */, ); path = Categories; @@ -1684,11 +1705,11 @@ 048702AE19F75B0800B7D307 /* ShellScript */, D4991431181D51DE00E6073C /* Sources */, D4991432181D51DE00E6073C /* Frameworks */, + 046F268119C387BD00D7ACB3 /* ShellScript */, 04272E7619404CDF00CC682F /* ShellScript */, 04272E75193FF7F000CC682F /* ShellScript */, D4C16A621970946900CD91AD /* ShellScript */, D4C16A631970949A00CD91AD /* ShellScript */, - 046F268119C387BD00D7ACB3 /* ShellScript */, D4991433181D51DE00E6073C /* Resources */, ); buildRules = ( @@ -1875,6 +1896,7 @@ D47FEE2019C8CB0000B998C8 /* (null) in Resources */, 04123638189C29EA00E0CF8E /* abuse-filter-flag-wh...@2x.png in Resources */, 04C91CEF195520990035ED1B /* logo-onboarding-subti...@2x.png in Resources */, + 0484411E19FF15AF00FD26C5 /* AboutViewController.plist in Resources */, 04C91CEE195520990035ED1B /* logo-onboarding-subtitle.png in Resources */, 045EFF1A19A25FEB00D0EDBB /* logo-placeholder-search.png in Resources */, 04224502197F5E09005DD0BF /* BulletedLabel.xib in Resources */, @@ -1921,6 +1943,7 @@ "$(SRCROOT)/wikipedia/Images.xcassets/AppIcon.appiconset/icon.svg", "$(SRCROOT)/wikipedia/Images.xcassets/RecentPagesEmpty.imageset/recent.svg", "$(SRCROOT)/wikipedia/Images.xcassets/SavedPagesEmpty.imageset/savedpages.svg", + "$(SRCROOT)/wikipedia/Images.xcassets/WMFLogo_60.imageset/wmf_logo.svg", ); outputPaths = ( ); @@ -1988,6 +2011,7 @@ 042A5B36192591520095E172 /* TopMenuTextField.m in Sources */, 04AE1C701891B302002D5487 /* NSObject+Extras.m in Sources */, 04B7B9BD18B5570E00A63551 /* CaptchaViewController.m in Sources */, + 045D872119FAD2FA0035C1F9 /* AboutViewController.m in Sources */, 04C43AA4183440C1006C643B /* MWNetworkActivityIndicatorManager.m in Sources */, 0447863D185145090050563B /* WebViewController.m in Sources */, 0487048A19F8262600B7D307 /* PreviewHtmlFetcher.m in Sources */, @@ -2094,6 +2118,7 @@ 04C9509D19EF02980013F3C0 /* EventLogger.m in Sources */, D4E8A8A719084F1300DA4765 /* SQLiteHelper.m in Sources */, 04F39590186CF80100B0D6FC /* TOCViewController.m in Sources */, + 0439317619FB092600386E8F /* UIWebView+LoadAssetsHtml.m in Sources */, 04B91AA718E34BBC00FFAA1C /* UIView+TemporaryAnimatedXF.m in Sources */, 04224500197F5E09005DD0BF /* AbuseFilterAlert.m in Sources */, D4B0AE0819366A0A00F0AC90 /* CreateAccountFunnel.m in Sources */, diff --git a/scripts/icon-svgs-to-pngs.sh b/scripts/icon-svgs-to-pngs.sh index 2ba0f67..e4bf258 100755 --- a/scripts/icon-svgs-to-pngs.sh +++ b/scripts/icon-svgs-to-pngs.sh @@ -7,3 +7,7 @@ ruby -e '[120,240,360].each { |x| `/Applications/Inkscape.app/Contents/Resources/bin/inkscape --export-png "wikipedia/Images.xcassets/RecentPagesEmpty.imageset/recent#{x}.png" -w #{x} '"$SCRIPT_INPUT_FILE_1"'` }' ruby -e '[120,240,360].each { |x| `/Applications/Inkscape.app/Contents/Resources/bin/inkscape --export-png "wikipedia/Images.xcassets/SavedPagesEmpty.imageset/savedpages#{x}.png" -w #{x} '"$SCRIPT_INPUT_FILE_2"'` }' + +ruby -e '[60,120,180].each { |x| `/Applications/Inkscape.app/Contents/Resources/bin/inkscape --export-png "wikipedia/Images.xcassets/WMFLogo_60.imageset/wmflogo_#{x}.png" -w #{x} '"$SCRIPT_INPUT_FILE_3"'` }' + +ruby -e '[60,120,180].each { |x| `/Applications/Inkscape.app/Contents/Resources/bin/inkscape --export-png "www/images/wmflogo_#{x}.png" -w #{x} '"$SCRIPT_INPUT_FILE_3"'` }' diff --git a/wikipedia/Base.lproj/Main_iPhone.storyboard b/wikipedia/Base.lproj/Main_iPhone.storyboard index e65cdfd..a5bbbbc 100644 --- a/wikipedia/Base.lproj/Main_iPhone.storyboard +++ b/wikipedia/Base.lproj/Main_iPhone.storyboard @@ -5,6 +5,7 @@ <development version="5100" identifier="xcode"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6244"/> <capability name="Alignment constraints with different attributes" minToolsVersion="5.1"/> + <capability name="Constraints to layout margins" minToolsVersion="6.0"/> </dependencies> <scenes> <!--Languages View Controller--> @@ -113,7 +114,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="I47-Yh-yr4" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="324" y="251"/> + <point key="canvasLocation" x="522" y="-162"/> </scene> <!--Page History View Controller--> <scene sceneID="nqw-r1-g0T"> @@ -1021,7 +1022,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="Lwh-ga-zh6" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="111" y="-1469"/> + <point key="canvasLocation" x="111" y="-899"/> </scene> <!--Search Results Controller--> <scene sceneID="Jmf-xS-W4M"> @@ -1060,7 +1061,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="QYs-yc-yzW" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="629" y="-164"/> + <point key="canvasLocation" x="941" y="-130"/> </scene> <!--Web View Controller--> <scene sceneID="ufC-wZ-h7g"> @@ -1396,7 +1397,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="mef-6q-1qK" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="-585" y="-3251"/> + <point key="canvasLocation" x="111" y="-1530"/> </scene> <!--ReferenceVC--> <scene sceneID="oNi-7F-FeN"> @@ -1682,7 +1683,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="heC-Be-Fgw" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="478" y="501"/> + <point key="canvasLocation" x="89" y="250"/> </scene> <!--Center Nav Controller--> <scene sceneID="dor-Wk-JQd"> @@ -1764,6 +1765,39 @@ </objects> <point key="canvasLocation" x="111" y="-6277"/> </scene> + <!--About View Controller--> + <scene sceneID="1T4-cp-JUc"> + <objects> + <viewController restorationIdentifier="AboutViewController" storyboardIdentifier="AboutViewController" id="XBx-HT-7Nb" customClass="AboutViewController" sceneMemberID="viewController"> + <layoutGuides> + <viewControllerLayoutGuide type="top" id="6Pt-o7-LWr"/> + <viewControllerLayoutGuide type="bottom" id="bm9-VB-zc0"/> + </layoutGuides> + <view key="view" contentMode="scaleToFill" id="0dn-de-ub8"> + <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <webView clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RuO-Uu-LzH"> + <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + </webView> + </subviews> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstItem="RuO-Uu-LzH" firstAttribute="bottom" secondItem="0dn-de-ub8" secondAttribute="bottomMargin" id="B5e-Py-Wnj"/> + <constraint firstItem="RuO-Uu-LzH" firstAttribute="leading" secondItem="0dn-de-ub8" secondAttribute="leading" id="RhE-aT-0we"/> + <constraint firstItem="RuO-Uu-LzH" firstAttribute="top" secondItem="0dn-de-ub8" secondAttribute="topMargin" id="Ui3-Iv-6ZS"/> + <constraint firstAttribute="trailing" secondItem="RuO-Uu-LzH" secondAttribute="trailing" id="m6K-i2-U2o"/> + </constraints> + </view> + <connections> + <outlet property="webView" destination="RuO-Uu-LzH" id="wmz-k2-G2w"/> + </connections> + </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="MUa-PK-2vN" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="-585" y="-3155"/> + </scene> <!--Modal Content View Controller--> <scene sceneID="ucp-TA-lD3"> <objects> @@ -1790,6 +1824,7 @@ <segue destination="Sst-9G-sfn" kind="custom" identifier="modal_segue_show_page_history" customClass="EmptySegue" id="XIR-ro-Nuv"/> <segue destination="vqp-1K-wjM" kind="custom" identifier="modal_segue_show_languages" customClass="EmptySegue" id="4tK-6e-A2j"/> <segue destination="O3D-bU-RYB" kind="custom" identifier="modal_segue_show_nearby" customClass="EmptySegue" id="Npp-Oj-MXW"/> + <segue destination="XBx-HT-7Nb" kind="custom" identifier="modal_segue_show_about" customClass="EmptySegue" id="4K1-vh-0Ac"/> </connections> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="41a-r2-anV" userLabel="First Responder" sceneMemberID="firstResponder"/> diff --git a/wikipedia/Categories/UIWebView+LoadAssetsHtml.h b/wikipedia/Categories/UIWebView+LoadAssetsHtml.h new file mode 100644 index 0000000..6db5425 --- /dev/null +++ b/wikipedia/Categories/UIWebView+LoadAssetsHtml.h @@ -0,0 +1,11 @@ +// Created by Monte Hurd on 10/24/14. +// Copyright (c) 2013 Wikimedia Foundation. Provided under MIT-style license; please copy and modify! + +#import <UIKit/UIKit.h> + +@interface UIWebView (LoadAssetsHtml) + +// Loads contents of fileName. Assumes the file is in the "assets" folder. +-(void)loadHTMLFromAssetsFile:(NSString *)fileName; + +@end diff --git a/wikipedia/Categories/UIWebView+LoadAssetsHtml.m b/wikipedia/Categories/UIWebView+LoadAssetsHtml.m new file mode 100644 index 0000000..3938158 --- /dev/null +++ b/wikipedia/Categories/UIWebView+LoadAssetsHtml.m @@ -0,0 +1,19 @@ +// Created by Monte Hurd on 10/24/14. +// Copyright (c) 2013 Wikimedia Foundation. Provided under MIT-style license; please copy and modify! + +#import "UIWebView+LoadAssetsHtml.h" + +@implementation UIWebView (LoadAssetsHtml) + +-(void)loadHTMLFromAssetsFile:(NSString *)fileName +{ + NSArray *documentsPath = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES); + NSString *assetsPath = [[documentsPath firstObject] stringByAppendingPathComponent:@"assets"]; + NSString *indexHTMLFilePath = [assetsPath stringByAppendingPathComponent:fileName]; + NSString *encodedAssetsPath = [assetsPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + NSURL *baseURL = [NSURL URLWithString:[NSString stringWithFormat:@"file:///%@/", encodedAssetsPath]]; + NSData *fileData = [[NSFileManager defaultManager] contentsAtPath: indexHTMLFilePath]; + [self loadData:fileData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:baseURL]; +} + +@end diff --git a/wikipedia/Images.xcassets/WMFLogo_60.imageset/Contents.json b/wikipedia/Images.xcassets/WMFLogo_60.imageset/Contents.json new file mode 100644 index 0000000..66256b5 --- /dev/null +++ b/wikipedia/Images.xcassets/WMFLogo_60.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "wmflogo_60.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "wmflogo_120.png" + }, + { + "idiom" : "universal", + "scale" : "3x", + "filename" : "wmflogo_180.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/wikipedia/Images.xcassets/WMFLogo_60.imageset/wmf_logo.svg b/wikipedia/Images.xcassets/WMFLogo_60.imageset/wmf_logo.svg new file mode 100644 index 0000000..e7ef65e --- /dev/null +++ b/wikipedia/Images.xcassets/WMFLogo_60.imageset/wmf_logo.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" standalone="yes"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> + +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" + id="Wikimedia logo" + viewBox="-599 -599 1198 1198" width="1024" height="1024"> +<defs> + <clipPath id="mask"> + <path d="M 47.5,-87.5 v 425 h -95 v -425 l -552,-552 v 1250 h 1199 v -1250 z" /> + </clipPath> +</defs> +<g clip-path="url(#mask)"> + <circle id="green parts" fill="#396" r="336.5"/> + <circle id="blue arc" fill="none" stroke="#069" r="480.25" stroke-width="135.5" /> +</g> +<circle fill="#900" cy="-379.5" r="184.5" id="red circle"/> +</svg> diff --git a/wikipedia/Images.xcassets/WMFLogo_60.imageset/wmflogo_120.png b/wikipedia/Images.xcassets/WMFLogo_60.imageset/wmflogo_120.png new file mode 100644 index 0000000..bcf48aa --- /dev/null +++ b/wikipedia/Images.xcassets/WMFLogo_60.imageset/wmflogo_120.png Binary files differ diff --git a/wikipedia/Images.xcassets/WMFLogo_60.imageset/wmflogo_180.png b/wikipedia/Images.xcassets/WMFLogo_60.imageset/wmflogo_180.png new file mode 100644 index 0000000..d525463 --- /dev/null +++ b/wikipedia/Images.xcassets/WMFLogo_60.imageset/wmflogo_180.png Binary files differ diff --git a/wikipedia/Images.xcassets/WMFLogo_60.imageset/wmflogo_60.png b/wikipedia/Images.xcassets/WMFLogo_60.imageset/wmflogo_60.png new file mode 100644 index 0000000..ba64109 --- /dev/null +++ b/wikipedia/Images.xcassets/WMFLogo_60.imageset/wmflogo_60.png Binary files differ diff --git a/wikipedia/View Controllers/About/AboutViewController.h b/wikipedia/View Controllers/About/AboutViewController.h new file mode 100644 index 0000000..e03aa82 --- /dev/null +++ b/wikipedia/View Controllers/About/AboutViewController.h @@ -0,0 +1,16 @@ +// Created by Monte Hurd on 10/24/14. +// Copyright (c) 2013 Wikimedia Foundation. Provided under MIT-style license; please copy and modify! + +#import <UIKit/UIKit.h> +#import "TopMenuViewController.h" + +@interface AboutViewController : UIViewController <UIWebViewDelegate> + +@property (weak, nonatomic) IBOutlet UIWebView *webView; + +@property (nonatomic) NavBarMode navBarMode; + +@property (weak, nonatomic) id truePresentingVC; +@property (weak, nonatomic) TopMenuViewController *topMenuViewController; + +@end diff --git a/wikipedia/View Controllers/About/AboutViewController.m b/wikipedia/View Controllers/About/AboutViewController.m new file mode 100644 index 0000000..bdee482 --- /dev/null +++ b/wikipedia/View Controllers/About/AboutViewController.m @@ -0,0 +1,216 @@ +// Created by Monte Hurd on 10/24/14. +// Copyright (c) 2013 Wikimedia Foundation. Provided under MIT-style license; please copy and modify! + +#import "AboutViewController.h" +#import "WikipediaAppUtils.h" +#import "UIViewController+ModalPop.h" +#import "UIWebView+LoadAssetsHtml.h" +#import "Defines.h" + +@interface AboutViewController () + +@property (nonatomic, retain) NSDictionary *data; +@property (nonatomic, retain, readonly) NSString *contributors; +@property (nonatomic, retain, readonly) NSString *repositoryLinks; +@property (nonatomic, retain, readonly) NSString *libraryLinks; +@property (nonatomic, retain, readonly) NSDictionary *urls; +@property (nonatomic, retain, readonly) NSString *feedbackURL; + +@end + +@implementation AboutViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"AboutViewController" ofType:@"plist"]; + self.data = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath]; + self.webView.delegate = self; + [self.webView loadHTMLFromAssetsFile:@"about.html"]; +} + +-(void)viewDidAppear:(BOOL)animated +{ + [super viewDidAppear:animated]; + + [[NSNotificationCenter defaultCenter] addObserver: self + selector: @selector(navItemTappedNotification:) + name: @"NavItemTapped" + object: nil]; +} + +-(void)viewWillDisappear:(BOOL)animated +{ + [[NSNotificationCenter defaultCenter] removeObserver: self + name: @"NavItemTapped" + object: nil]; + [super viewWillDisappear:animated]; +} + +- (void)navItemTappedNotification:(NSNotification *)notification +{ + NSDictionary *userInfo = [notification userInfo]; + UIView *tappedItem = userInfo[@"tappedItem"]; + + switch (tappedItem.tag) { + case NAVBAR_BUTTON_X: + [self popModal]; + break; + default: + break; + } +} + +-(NavBarMode)navBarMode +{ + return NAVBAR_MODE_X_WITH_LABEL; +} + +-(NSString *)title +{ + return MWLocalizedString(@"about-title", nil); +} + +- (BOOL)prefersStatusBarHidden +{ + return NO; +} + +-(NSString *)contributors +{ + return [self.data[@"contributors"] componentsJoinedByString:@", "]; +} + +-(NSDictionary *)urls +{ + return self.data[@"urls"]; +} + +-(NSString *)libraryLinks +{ + NSMutableDictionary *libraries = (NSMutableDictionary *)self.data[@"libraries"]; + + for (NSString *library in libraries.copy) { + libraries[library] = [self getLinkHTMLForURL:libraries[library] title:library]; + } + + NSString *output = [libraries.allValues componentsJoinedByString:@", "]; + return output; +} + +-(NSString *)repositoryLinks +{ + NSMutableDictionary *repos = (NSMutableDictionary *)self.data[@"repositories"]; + + for (NSString *repo in repos.copy) { + repos[repo] = [self getLinkHTMLForURL:repos[repo] title:repo]; + } + + NSString *output = [repos.allValues componentsJoinedByString:@", "]; + return output; +} + +-(NSString *)feedbackUrl +{ + NSString *feedbackUrl = self.urls[@"feedback"]; + feedbackUrl = [feedbackUrl stringByReplacingOccurrencesOfString:@"$1" withString:[WikipediaAppUtils versionedUserAgent]]; + + NSString *encodedUrlString = + [feedbackUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + + return encodedUrlString; +} + +-(NSString *)getLinkHTMLForURL:(NSString *)url title:(NSString *)title +{ + return [NSString stringWithFormat:@"<a href='%@'>%@</a>", url, title]; +} + +- (void)webViewDidFinishLoad:(UIWebView *)webView +{ + NSString*(^stringEscapedForJavasacript)(NSString*) = ^ NSString*(NSString *string) { + // FROM: http://stackoverflow.com/a/13569786 + // valid JSON object need to be an array or dictionary + NSArray *arrayForEncoding = @[string]; + NSString *jsonString = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:arrayForEncoding options:0 error:nil] encoding:NSUTF8StringEncoding]; + NSString *escapedString = [jsonString substringWithRange:NSMakeRange(2, jsonString.length - 4)]; + return escapedString; + }; + + void (^setDivHTML)(NSString*, NSString*) = ^ void(NSString *divId, NSString *twnString) { + twnString = stringEscapedForJavasacript(twnString); + [self.webView stringByEvaluatingJavaScriptFromString: + [NSString stringWithFormat:@"document.getElementById('%@').innerHTML = \"%@\";", divId, twnString]]; + }; + + NSDictionary *appInfo = [[NSBundle mainBundle] infoDictionary]; + NSString *version = appInfo[@"CFBundleVersion"] ? appInfo[@"CFBundleVersion"] : @"Unknown version"; + + setDivHTML(@"version", version); + setDivHTML(@"wikipedia", MWLocalizedString(@"about-wikipedia", nil)); + setDivHTML(@"contributors_title", MWLocalizedString(@"about-contributors", nil)); + setDivHTML(@"contributors_body", self.contributors); + setDivHTML(@"translators_title", MWLocalizedString(@"about-translators", nil)); + setDivHTML(@"libraries_title", MWLocalizedString(@"about-libraries", nil)); + setDivHTML(@"libraries_body", self.libraryLinks); + setDivHTML(@"repositories_title", MWLocalizedString(@"about-repositories", nil)); + setDivHTML(@"repositories_body", self.repositoryLinks); + setDivHTML(@"feedback_body", [self getLinkHTMLForURL:self.feedbackURL title:MWLocalizedString(@"about-send-feedback", nil)]); + + NSString *twnUrl = self.urls[@"twn"]; + NSString *translatorsLink = [self getLinkHTMLForURL:twnUrl title:twnUrl]; + NSString *translatorDetails = + [MWLocalizedString(@"about-translators-details", nil) stringByReplacingOccurrencesOfString: @"$1" + withString: translatorsLink]; + setDivHTML(@"translators_body", translatorDetails); + + NSString *wmfUrl = self.urls[@"wmf"]; + NSString *foundation = [self getLinkHTMLForURL:wmfUrl title:MWLocalizedString(@"about-wikimedia-foundation", nil)]; + NSString *footer = + [MWLocalizedString(@"about-product-of", nil) stringByReplacingOccurrencesOfString: @"$1" + withString: foundation]; + setDivHTML(@"footer", footer); + + NSString *textDirection = ([WikipediaAppUtils isDeviceLanguageRTL] ? @"rtl" : @"ltr"); + NSString *textDirectionJS = [NSString stringWithFormat:@"document.body.style.direction = '%@'", textDirection]; + [self.webView stringByEvaluatingJavaScriptFromString:textDirectionJS]; + + NSString *fontSizeJS = [NSString stringWithFormat:@"document.body.style.fontSize = '%f%%'", (MENUS_SCALE_MULTIPLIER * 100.0f)]; + [self.webView stringByEvaluatingJavaScriptFromString:fontSizeJS]; +} + +// Force web view links to open in Safari. +// From: http://stackoverflow.com/a/2532884 +-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; +{ + NSURL *requestURL = [request URL]; + if ( + ( + [[requestURL scheme] isEqualToString:@"http"] + || + [[requestURL scheme] isEqualToString:@"https"] + || + [[requestURL scheme] isEqualToString:@"mailto"]) + && (navigationType == UIWebViewNavigationTypeLinkClicked) + ) { + return ![[UIApplication sharedApplication] openURL:requestURL]; + } + return YES; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* + #pragma mark - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. + } + */ + +@end diff --git a/wikipedia/View Controllers/About/AboutViewController.plist b/wikipedia/View Controllers/About/AboutViewController.plist new file mode 100644 index 0000000..24ff96c --- /dev/null +++ b/wikipedia/View Controllers/About/AboutViewController.plist @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>urls</key> + <dict> + <key>feedback</key> + <string>mailto:mobile-ios-wikipe...@wikimedia.org?subject=Feedback:$1</string> + <key>twn</key> + <string>http://translatewiki.net</string> + <key>wmf</key> + <string>http://wikimediafoundation.org</string> + </dict> + <key>libraries</key> + <dict> + <key>WikiFont</key> + <string>https://github.com/munmay/WikiFont</string> + <key>HPPLE</key> + <string>https://github.com/topfunky/hpple</string> + <key>NSDate-Extensions</key> + <string>https://github.com/erica/NSDate-Extensions</string> + <key>AFNetworking</key> + <string>https://github.com/AFNetworking/AFNetworking</string> + <key>CocoaPods</key> + <string>http://cocoapods.org</string> + </dict> + <key>repositories</key> + <dict> + <key>GitHub</key> + <string>https://github.com/wikimedia/apps-ios-wikipedia</string> + <key>Gerrit</key> + <string>https://gerrit.wikimedia.org/r/#/q/project:apps/ios/wikipedia,n,z</string> + </dict> + <key>contributors</key> + <array> + <string>Adam Baso</string> + <string>Amir E. Aharoni</string> + <string>Anirudh S</string> + <string>Bernd Sitzmann</string> + <string>Brion Vibber</string> + <string>Dan Garry</string> + <string>Dmitry Brant</string> + <string>Kenan Wang</string> + <string>Maryana Pinchuk</string> + <string>Max Semenik</string> + <string>Moiz Syed</string> + <string>Monte Hurd</string> + <string>Mun May Tee</string> + <string>Nicole Borrelli</string> + <string>Niklas Laxström</string> + <string>Thomas PT</string> + <string>Tomasz Finc</string> + <string>Vibha Bamba</string> + <string>Yuvi Panda</string> + </array> +</dict> +</plist> diff --git a/wikipedia/View Controllers/Navigation/Secondary/SecondaryMenuViewController.m b/wikipedia/View Controllers/Navigation/Secondary/SecondaryMenuViewController.m index 08adda1..e24a3ca 100644 --- a/wikipedia/View Controllers/Navigation/Secondary/SecondaryMenuViewController.m +++ b/wikipedia/View Controllers/Navigation/Secondary/SecondaryMenuViewController.m @@ -38,26 +38,26 @@ #define URL_TERMS @"https://m.wikimediafoundation.org/wiki/Terms_of_Use" #define URL_RATE_APP @"itms-apps://itunes.apple.com/app/id324715238" -typedef enum { - SECONDARY_MENU_ROW_INDEX_LOGIN = 0, - SECONDARY_MENU_ROW_INDEX_SAVED_PAGES = 1, - SECONDARY_MENU_ROW_INDEX_SAVE_PAGE = 2, - SECONDARY_MENU_ROW_INDEX_SEARCH_LANGUAGE = 3, - SECONDARY_MENU_ROW_INDEX_ZERO_FAQ = 4, - SECONDARY_MENU_ROW_INDEX_ZERO_WARN_WHEN_LEAVING = 5, - SECONDARY_MENU_ROW_INDEX_SEND_FEEDBACK = 6, - SECONDARY_MENU_ROW_INDEX_PAGE_HISTORY = 7, - SECONDARY_MENU_ROW_INDEX_CREDITS = 8, - SECONDARY_MENU_ROW_INDEX_SEND_USAGE_REPORTS = 9, - SECONDARY_MENU_ROW_INDEX_PRIVACY_POLICY = 10, - SECONDARY_MENU_ROW_INDEX_TERMS = 11, - SECONDARY_MENU_ROW_INDEX_RATE_APP = 12, - SECONDARY_MENU_ROW_INDEX_HEADING_ZERO = 13, - SECONDARY_MENU_ROW_INDEX_HEADING_LEGAL = 14, - SECONDARY_MENU_ROW_INDEX_HEADING_BLANK = 15, - SECONDARY_MENU_ROW_INDEX_HEADING_BLANK_2 = 16 - -} SecondaryMenuRowIndex; +typedef NS_ENUM(NSUInteger, SecondaryMenuRowIndex) { + SECONDARY_MENU_ROW_INDEX_LOGIN, + SECONDARY_MENU_ROW_INDEX_SAVED_PAGES, + SECONDARY_MENU_ROW_INDEX_SAVE_PAGE, + SECONDARY_MENU_ROW_INDEX_SEARCH_LANGUAGE, + SECONDARY_MENU_ROW_INDEX_ZERO_FAQ, + SECONDARY_MENU_ROW_INDEX_ZERO_WARN_WHEN_LEAVING, + SECONDARY_MENU_ROW_INDEX_SEND_FEEDBACK, + SECONDARY_MENU_ROW_INDEX_PAGE_HISTORY, + SECONDARY_MENU_ROW_INDEX_CREDITS, + SECONDARY_MENU_ROW_INDEX_ABOUT, + SECONDARY_MENU_ROW_INDEX_SEND_USAGE_REPORTS, + SECONDARY_MENU_ROW_INDEX_PRIVACY_POLICY, + SECONDARY_MENU_ROW_INDEX_TERMS, + SECONDARY_MENU_ROW_INDEX_RATE_APP, + SECONDARY_MENU_ROW_INDEX_HEADING_ZERO, + SECONDARY_MENU_ROW_INDEX_HEADING_LEGAL, + SECONDARY_MENU_ROW_INDEX_HEADING_BLANK, + SECONDARY_MENU_ROW_INDEX_HEADING_BLANK_2 +}; #pragma mark - Private @@ -436,10 +436,20 @@ @"type": @(ROW_TYPE_HEADING), }.mutableCopy , + /* @{ @"domain": [SessionSingleton sharedInstance].domain, @"title": MWLocalizedString(@"main-menu-credits", nil), @"tag": @(SECONDARY_MENU_ROW_INDEX_CREDITS), + @"icon": IOS_WIKIGLYPH_DOWN, + @"type": @(ROW_TYPE_SELECTION), + }.mutableCopy + , + */ + @{ + @"domain": [SessionSingleton sharedInstance].domain, + @"title": MWLocalizedString(@"main-menu-about", nil), + @"tag": @(SECONDARY_MENU_ROW_INDEX_ABOUT), @"icon": IOS_WIKIGLYPH_DOWN, @"type": @(ROW_TYPE_SELECTION), }.mutableCopy @@ -641,6 +651,7 @@ block: nil]; } break; + /* case SECONDARY_MENU_ROW_INDEX_CREDITS: { [self performModalSequeWithID: @"modal_segue_show_credits" @@ -648,6 +659,14 @@ block: nil]; } break; + */ + case SECONDARY_MENU_ROW_INDEX_ABOUT: + { + [self performModalSequeWithID: @"modal_segue_show_about" + transitionStyle: UIModalTransitionStyleCoverVertical + block: nil]; + } + break; default: break; } diff --git a/wikipedia/assets/about.html b/wikipedia/assets/about.html new file mode 100644 index 0000000..4137636 --- /dev/null +++ b/wikipedia/assets/about.html @@ -0,0 +1,104 @@ +<!DOCTYPE html> +<html> + <head> + <meta name="viewport" id="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes, minimum-scale=1.0, maximum-scale=1.0"> + + <style type="text/css"> + + body{ + font-size:100%; + margin:1.45em; + font-family: Helvetica; + color:#444444; + border-style:none; + -webkit-text-size-adjust: none; + direction:ltr; + } + + div body{ + margin-top:0.5em; + margin-bottom:0.5em; + } + + .heading{ + font-weight:bold; + color:#000000; + } + + #version{ + font-size:1.5em; + } + + #wikipedia{ + font-size:2.0em; + } + + .title{ + color:#888888; + margin-bottom:0.5em; + } + + A{ + color:#4F76eB; + } + + .feedback{ + text-align:center; + } + + .title, .feedback{ + margin-top:1.5em; + } + + .footer-table{ + margin-top:1.0em; + width:100%; + } + + .footer{ + width:100%; + } + + .wmf-logo{ + padding-right:0.5em; + } + + </style> + </head> + <body> + + <div id="wikipedia" class="heading">wikipedia</div> + + <div id="version" class="heading">version</div> + + <div id="contributors_title" class="title">contributors_title</div> + + <div id="contributors_body">contributors_body</div> + + <div id="translators_title" class="title">translators_title</div> + + <div id="translators_body">translators_body</div> + + <div id="libraries_title" class="title">libraries_title</div> + + <div id="libraries_body">libraries_body</div> + + <div id="repositories_title" class="title">repositories_title</div> + + <div id="repositories_body">repositories_body</div> + + <div id="feedback_body" class="feedback">feedback_body</div> + + <table class="footer-table"> + <tr> + <td> + <img class="wmf-logo" src="./images/wmflogo_60.png" srcset="./images/wmflogo_60.png 1x, ./images/wmflogo_120.png 2x, ./images/wmflogo_180.png 3x"> + </td> + <td id="footer" class="footer"> + footer + </td> + </tr> + </table> + + </body> +</html> diff --git a/wikipedia/assets/abusefilter.html b/wikipedia/assets/abusefilter.html index 2433884..2f41e82 100644 --- a/wikipedia/assets/abusefilter.html +++ b/wikipedia/assets/abusefilter.html @@ -1,3 +1,4 @@ +<!DOCTYPE html> <html class="content-ltr ui-ltr" dir="ltr"> <head> diff --git a/wikipedia/assets/images/wmflogo_120.png b/wikipedia/assets/images/wmflogo_120.png new file mode 100644 index 0000000..bcf48aa --- /dev/null +++ b/wikipedia/assets/images/wmflogo_120.png Binary files differ diff --git a/wikipedia/assets/images/wmflogo_180.png b/wikipedia/assets/images/wmflogo_180.png new file mode 100644 index 0000000..d525463 --- /dev/null +++ b/wikipedia/assets/images/wmflogo_180.png Binary files differ diff --git a/wikipedia/assets/images/wmflogo_60.png b/wikipedia/assets/images/wmflogo_60.png new file mode 100644 index 0000000..ba64109 --- /dev/null +++ b/wikipedia/assets/images/wmflogo_60.png Binary files differ diff --git a/wikipedia/assets/index.html b/wikipedia/assets/index.html index 6dab995..9e63ac9 100644 --- a/wikipedia/assets/index.html +++ b/wikipedia/assets/index.html @@ -1,3 +1,4 @@ +<!DOCTYPE html> <html> <head> diff --git a/wikipedia/assets/preview.html b/wikipedia/assets/preview.html index 63a893b..ea2ccf8 100644 --- a/wikipedia/assets/preview.html +++ b/wikipedia/assets/preview.html @@ -1,3 +1,4 @@ +<!DOCTYPE html> <html class="content-ltr ui-ltr" dir="ltr"> <head> diff --git a/wikipedia/en.lproj/Localizable.strings b/wikipedia/en.lproj/Localizable.strings index 16262cc..c9159ee 100644 --- a/wikipedia/en.lproj/Localizable.strings +++ b/wikipedia/en.lproj/Localizable.strings @@ -101,6 +101,7 @@ "main-menu-send-feedback" = "Send app feedback"; "main-menu-show-page-history" = "History of changes to $1"; "main-menu-credits" = "Credits"; +"main-menu-about" = "About the Wikipedia app"; "main-menu-zero-faq" = "Wikipedia Zero FAQ"; "main-menu-privacy-policy" = "Privacy policy"; "main-menu-terms-of-use" = "Terms of use"; @@ -157,6 +158,17 @@ "credits-github-mirror" = "App mirror (GitHub)"; "credits-external-libraries" = "External repositories"; +"about-title" = "About"; +"about-wikipedia" = "Wikipedia"; +"about-contributors" = "contributors"; +"about-translators" = "translators"; +"about-translators-details" = "This app was translated by the volunteer translators at $1"; +"about-libraries" = "libraries used"; +"about-repositories" = "repositories"; +"about-send-feedback" = "Send app feedback"; +"about-product-of" = "A product of the $1"; +"about-wikimedia-foundation" = "Wikimedia Foundation"; + "share-menu-save-page" = "Save page"; "share-menu-page-saved" = "Saved for offline reading."; "share-menu-page-saved-access" = "Tip: to access your saved pages, tap $1 above or long-press $2 below."; diff --git a/wikipedia/mw-bridge/CommunicationBridge.m b/wikipedia/mw-bridge/CommunicationBridge.m index 0c74f08..c2e8ee5 100644 --- a/wikipedia/mw-bridge/CommunicationBridge.m +++ b/wikipedia/mw-bridge/CommunicationBridge.m @@ -2,6 +2,7 @@ // Copyright (c) 2013 Wikimedia Foundation. Provided under MIT-style license; please copy and modify! #import "CommunicationBridge.h" +#import "UIWebView+LoadAssetsHtml.h" @interface CommunicationBridge (){ @@ -103,14 +104,8 @@ htmlFileName: (NSString *)htmlFileName { webView.delegate = self; - - NSArray *documentsPath = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES); - NSString *assetsPath = [[documentsPath firstObject] stringByAppendingPathComponent:@"assets"]; - NSString *indexHTMLFilePath = [assetsPath stringByAppendingPathComponent:htmlFileName]; - NSString *encodedAssetsPath = [assetsPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; - NSURL *baseURL = [NSURL URLWithString:[NSString stringWithFormat:@"file:///%@/", encodedAssetsPath]]; - NSData *indexHTMLFileData = [[NSFileManager defaultManager] contentsAtPath: indexHTMLFilePath]; - [webView loadData:indexHTMLFileData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:baseURL]; + + [webView loadHTMLFromAssetsFile:htmlFileName]; } static NSString *bridgeURLPrefix = @"x-wikipedia-bridge:"; diff --git a/wikipedia/qqq.lproj/Localizable.strings b/wikipedia/qqq.lproj/Localizable.strings index d2e25fa..fe7154e 100644 --- a/wikipedia/qqq.lproj/Localizable.strings +++ b/wikipedia/qqq.lproj/Localizable.strings @@ -109,6 +109,7 @@ "main-menu-show-today" = "Button text for showing mobile version of main page\n{{Identical|Today}}"; "main-menu-nearby" = "Button for showing nearby articles.\n{{Identical|Nearby}}"; "main-menu-more" = "Button for showing additional settings and menu items.\n{{Identical|More}}"; +"main-menu-about" = "Button for showing information about the app."; "saved-pages-title" = "Header text for Saved Pages interface.\n{{Identical|Saved page}}"; "saved-pages-clear-confirmation-heading" = "Heading text of delete all confirmation dialog"; "saved-pages-clear-confirmation-sub-heading" = "Sub-heading text of delete all confirmation dialog"; @@ -147,6 +148,16 @@ "credits-gerrit-repo" = "Text for item linking to the app's main gerrit repository"; "credits-github-mirror" = "Text for item linking to the app's mirrored GitHub repository"; "credits-external-libraries" = "Title for area of credits page showing external open source libraries used by app.\n{{Identical|External}}"; +"about-title" = "Title for credits page"; +"about-wikipedia" = "Wikipedia"; +"about-contributors" = "Label text for contributors section of the about page"; +"about-translators" = "Label text for translators section of the about page"; +"about-translators-details" = "Description of volunteer translation. $1 is translatewiki url."; +"about-libraries" = "Label text for libraries section of the about page"; +"about-repositories" = "Label text for repositories section of the about page"; +"about-send-feedback" = "Link text for sending app feedback"; +"about-product-of" = "Description of who produced the app. $1 is the name of the foundation"; +"about-wikimedia-foundation" = "Name of the Wikimedia Foundation. Used by 'about-product-of'."; "share-menu-save-page" = "Button text for saving current page from the share menu"; "share-menu-page-saved" = "Alert text shown when page saved for offline reading.\n\nSee also:\n* {{msg-wm|Wikipedia-ios-share-menu-page-saved-access}}"; "share-menu-page-saved-access" = "Reminder to user of ways to access saved pages. Parameters:\n* $1 - the main menu W icon\n* $2 - the save page heart icon\nSee also:\n* {{msg-wm|Wikipedia-ios-share-menu-page-saved}}"; diff --git a/www/Gruntfile.js b/www/Gruntfile.js index e8fe65f..3ca968e 100644 --- a/www/Gruntfile.js +++ b/www/Gruntfile.js @@ -37,8 +37,14 @@ copy: { main: { files: [ - {src: ["index.html", "preview.html", "abusefilter.html", "bundle.js", "footer.css"], dest: "../wikipedia/assets/"} + {src: ["index.html", "preview.html", "abusefilter.html", "about.html", "bundle.js", "footer.css"], dest: "../wikipedia/assets/"} ] + }, + files: { + cwd: 'images', // folder to copy + src: '**/*', // copy all files and subfolders + dest: '../wikipedia/assets/images', // destination folder + expand: true // required when using cwd } }, watch: { diff --git a/www/about.html b/www/about.html new file mode 100644 index 0000000..4137636 --- /dev/null +++ b/www/about.html @@ -0,0 +1,104 @@ +<!DOCTYPE html> +<html> + <head> + <meta name="viewport" id="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes, minimum-scale=1.0, maximum-scale=1.0"> + + <style type="text/css"> + + body{ + font-size:100%; + margin:1.45em; + font-family: Helvetica; + color:#444444; + border-style:none; + -webkit-text-size-adjust: none; + direction:ltr; + } + + div body{ + margin-top:0.5em; + margin-bottom:0.5em; + } + + .heading{ + font-weight:bold; + color:#000000; + } + + #version{ + font-size:1.5em; + } + + #wikipedia{ + font-size:2.0em; + } + + .title{ + color:#888888; + margin-bottom:0.5em; + } + + A{ + color:#4F76eB; + } + + .feedback{ + text-align:center; + } + + .title, .feedback{ + margin-top:1.5em; + } + + .footer-table{ + margin-top:1.0em; + width:100%; + } + + .footer{ + width:100%; + } + + .wmf-logo{ + padding-right:0.5em; + } + + </style> + </head> + <body> + + <div id="wikipedia" class="heading">wikipedia</div> + + <div id="version" class="heading">version</div> + + <div id="contributors_title" class="title">contributors_title</div> + + <div id="contributors_body">contributors_body</div> + + <div id="translators_title" class="title">translators_title</div> + + <div id="translators_body">translators_body</div> + + <div id="libraries_title" class="title">libraries_title</div> + + <div id="libraries_body">libraries_body</div> + + <div id="repositories_title" class="title">repositories_title</div> + + <div id="repositories_body">repositories_body</div> + + <div id="feedback_body" class="feedback">feedback_body</div> + + <table class="footer-table"> + <tr> + <td> + <img class="wmf-logo" src="./images/wmflogo_60.png" srcset="./images/wmflogo_60.png 1x, ./images/wmflogo_120.png 2x, ./images/wmflogo_180.png 3x"> + </td> + <td id="footer" class="footer"> + footer + </td> + </tr> + </table> + + </body> +</html> diff --git a/www/abusefilter.html b/www/abusefilter.html index 2433884..2f41e82 100644 --- a/www/abusefilter.html +++ b/www/abusefilter.html @@ -1,3 +1,4 @@ +<!DOCTYPE html> <html class="content-ltr ui-ltr" dir="ltr"> <head> diff --git a/www/images/wmflogo_120.png b/www/images/wmflogo_120.png new file mode 100644 index 0000000..bcf48aa --- /dev/null +++ b/www/images/wmflogo_120.png Binary files differ diff --git a/www/images/wmflogo_180.png b/www/images/wmflogo_180.png new file mode 100644 index 0000000..d525463 --- /dev/null +++ b/www/images/wmflogo_180.png Binary files differ diff --git a/www/images/wmflogo_60.png b/www/images/wmflogo_60.png new file mode 100644 index 0000000..ba64109 --- /dev/null +++ b/www/images/wmflogo_60.png Binary files differ diff --git a/www/index.html b/www/index.html index 6dab995..9e63ac9 100644 --- a/www/index.html +++ b/www/index.html @@ -1,3 +1,4 @@ +<!DOCTYPE html> <html> <head> diff --git a/www/preview.html b/www/preview.html index 63a893b..ea2ccf8 100644 --- a/www/preview.html +++ b/www/preview.html @@ -1,3 +1,4 @@ +<!DOCTYPE html> <html class="content-ltr ui-ltr" dir="ltr"> <head> -- To view, visit https://gerrit.wikimedia.org/r/169305 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9914dd0c56af25d7ecf9cbeb25245b939540a0a4 Gerrit-PatchSet: 2 Gerrit-Project: apps/ios/wikipedia Gerrit-Branch: master Gerrit-Owner: Mhurd <mh...@wikimedia.org> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits