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

Reply via email to