Mhurd has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/127378

Change subject: First pass at credits page.
......................................................................

First pass at credits page.

Temporary menu entry and icon at bottom of main menu.

Tapping on items loads respective urls in Safari.

Change-Id: Ibe65df5cba9223d66dfa9bd7a8769a24f0c059ec
---
M Wikipedia.xcodeproj/project.pbxproj
M wikipedia/Base.lproj/Main_iPhone.storyboard
A wikipedia/View Controllers/Credits/CreditsViewController.h
A wikipedia/View Controllers/Credits/CreditsViewController.m
M wikipedia/View Controllers/MainMenu/MainMenuViewController.m
M wikipedia/en.lproj/Localizable.strings
M wikipedia/qqq.lproj/Localizable.strings
7 files changed, 290 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/ios/wikipedia 
refs/changes/78/127378/1

diff --git a/Wikipedia.xcodeproj/project.pbxproj 
b/Wikipedia.xcodeproj/project.pbxproj
index e56f9c0..6027a44 100644
--- a/Wikipedia.xcodeproj/project.pbxproj
+++ b/Wikipedia.xcodeproj/project.pbxproj
@@ -70,6 +70,7 @@
                043649E018E2573E00B528DB /* main_menu_save.png in Resources */ 
= {isa = PBXBuildFile; fileRef = 043649BE18E2573E00B528DB /* main_menu_save.png 
*/; };
                043649E218E2573E00B528DB /* main_menu_s...@2x.png in Resources 
*/ = {isa = PBXBuildFile; fileRef = 043649BF18E2573E00B528DB /* 
main_menu_s...@2x.png */; };
                043C668A18BE9A8E00580E9B /* PreviewWikiTextOp.m in Sources */ = 
{isa = PBXBuildFile; fileRef = 043C668918BE9A8E00580E9B /* PreviewWikiTextOp.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 
*/; };
                043F18E918D9885F00D8489A /* TitleSubtitleView.m in Sources */ = 
{isa = PBXBuildFile; fileRef = 043F18E818D9885F00D8489A /* TitleSubtitleView.m 
*/; };
@@ -285,6 +286,8 @@
                043649BF18E2573E00B528DB /* main_menu_s...@2x.png */ = {isa = 
PBXFileReference; lastKnownFileType = image.png; path = 
"main_menu_s...@2x.png"; sourceTree = "<group>"; };
                043C668818BE9A8E00580E9B /* PreviewWikiTextOp.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
PreviewWikiTextOp.h; sourceTree = "<group>"; };
                043C668918BE9A8E00580E9B /* PreviewWikiTextOp.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= PreviewWikiTextOp.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>"; };
                043F18DC18D9691D00D8489A /* TopActionSheetLabel.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= TopActionSheetLabel.m; sourceTree = "<group>"; };
                043F18DF18D9691D00D8489A /* 
UINavigationController+TopActionSheet.h */ = {isa = PBXFileReference; 
fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
"UINavigationController+TopActionSheet.h"; sourceTree = "<group>"; };
@@ -734,6 +737,15 @@
                        path = TopNav;
                        sourceTree = "<group>";
                };
+               043DAC481901C3D2001CD17C /* Credits */ = {
+                       isa = PBXGroup;
+                       children = (
+                               043DAC491901C3EE001CD17C /* 
CreditsViewController.h */,
+                               043DAC4A1901C3EE001CD17C /* 
CreditsViewController.m */,
+                       );
+                       path = Credits;
+                       sourceTree = "<group>";
+               };
                043F18DA18D9691D00D8489A /* TopActionSheet */ = {
                        isa = PBXGroup;
                        children = (
@@ -962,6 +974,7 @@
                        children = (
                                04A97E8418B81D440046B166 /* AccountCreation */,
                                04B7B9BA18B5569600A63551 /* Captcha */,
+                               043DAC481901C3D2001CD17C /* Credits */,
                                04B9C42618CE5D25003B5058 /* EditSummary */,
                                0447861F185145090050563B /* History */,
                                041A3B5718E11ED90079FF1C /* Languages */,
@@ -1575,6 +1588,7 @@
                                041A3B5E18E11ED90079FF1C /* LanguagesCell.m in 
Sources */,
                                04D34DD91863F70A00610A87 /* Section.m in 
Sources */,
                                04C8781018F4A42700FA3B99 /* 
AccountCreationTokenOp.m in Sources */,
+                               043DAC4B1901C3EE001CD17C /* 
CreditsViewController.m in Sources */,
                                D42E75EB18D11237002EA7E5 /* MWLanguageInfo.m in 
Sources */,
                                04A81E8618871EB000EEBADB /* 
Section+ImageRecords.m in Sources */,
                                047FF5471889078C009DB293 /* Image+Convenience.m 
in Sources */,
diff --git a/wikipedia/Base.lproj/Main_iPhone.storyboard 
b/wikipedia/Base.lproj/Main_iPhone.storyboard
index 27be88e..0ea82c3 100644
--- a/wikipedia/Base.lproj/Main_iPhone.storyboard
+++ b/wikipedia/Base.lproj/Main_iPhone.storyboard
@@ -606,6 +606,154 @@
             </objects>
             <point key="canvasLocation" x="1104" y="1317"/>
         </scene>
+        <!--Credits View Controller-->
+        <scene sceneID="5Ik-j0-hCD">
+            <objects>
+                <viewController restorationIdentifier="CreditsViewController" 
storyboardIdentifier="CreditsViewController" id="myl-z3-aa0" 
customClass="CreditsViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="Cq6-KC-8bv"/>
+                        <viewControllerLayoutGuide type="bottom" 
id="jJw-w1-zeH"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="XBS-Es-znJ">
+                        <rect key="frame" x="0.0" y="0.0" width="320" 
height="568"/>
+                        <autoresizingMask key="autoresizingMask" 
flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <scrollView clipsSubviews="YES" 
multipleTouchEnabled="YES" contentMode="scaleToFill" 
translatesAutoresizingMaskIntoConstraints="NO" id="qEv-qB-FRv">
+                                <rect key="frame" x="0.0" y="0.0" width="320" 
height="568"/>
+                                <autoresizingMask key="autoresizingMask" 
flexibleMaxX="YES" flexibleMinY="YES"/>
+                                <subviews>
+                                    <view contentMode="scaleToFill" 
translatesAutoresizingMaskIntoConstraints="NO" id="ULA-VS-Px0">
+                                        <rect key="frame" x="0.0" y="0.0" 
width="320" height="388"/>
+                                        <autoresizingMask 
key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <subviews>
+                                            <label opaque="NO" 
clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" 
horizontalHuggingPriority="251" verticalHuggingPriority="251" text="credits" 
textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" 
baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
preferredMaxLayoutWidth="280" translatesAutoresizingMaskIntoConstraints="NO" 
id="ieH-d1-Ds7">
+                                                <rect key="frame" x="20" 
y="40" width="280" height="21"/>
+                                                <autoresizingMask 
key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                <constraints>
+                                                    <constraint 
firstAttribute="width" constant="280" id="Na3-NC-NRz"/>
+                                                </constraints>
+                                                <fontDescription 
key="fontDescription" type="boldSystem" pointSize="17"/>
+                                                <nil key="highlightedColor"/>
+                                            </label>
+                                            <label opaque="NO" 
clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" 
horizontalHuggingPriority="251" verticalHuggingPriority="251" text="wikimedia" 
textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" 
baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
preferredMaxLayoutWidth="280" translatesAutoresizingMaskIntoConstraints="NO" 
id="5KU-bp-5Fs">
+                                                <rect key="frame" x="20" 
y="91" width="280" height="21"/>
+                                                <autoresizingMask 
key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                <constraints>
+                                                    <constraint 
firstAttribute="width" constant="280" id="WRH-2x-NwJ"/>
+                                                </constraints>
+                                                <fontDescription 
key="fontDescription" type="boldSystem" pointSize="17"/>
+                                                <nil key="highlightedColor"/>
+                                            </label>
+                                            <label opaque="NO" 
clipsSubviews="YES" contentMode="left" horizontalHuggingPriority="251" 
verticalHuggingPriority="251" text="main repo" lineBreakMode="wordWrap" 
numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
preferredMaxLayoutWidth="280" translatesAutoresizingMaskIntoConstraints="NO" 
id="gzT-kN-7kp">
+                                                <rect key="frame" x="20" 
y="132" width="280" height="21"/>
+                                                <autoresizingMask 
key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                <constraints>
+                                                    <constraint 
firstAttribute="width" constant="280" id="lKk-3W-MB7"/>
+                                                </constraints>
+                                                <fontDescription 
key="fontDescription" type="system" pointSize="17"/>
+                                                <nil key="highlightedColor"/>
+                                            </label>
+                                            <label opaque="NO" 
clipsSubviews="YES" contentMode="left" horizontalHuggingPriority="251" 
verticalHuggingPriority="251" text="github repo" lineBreakMode="wordWrap" 
numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
preferredMaxLayoutWidth="280" translatesAutoresizingMaskIntoConstraints="NO" 
id="3gs-D6-glW">
+                                                <rect key="frame" x="20" 
y="173" width="280" height="21"/>
+                                                <autoresizingMask 
key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                <constraints>
+                                                    <constraint 
firstAttribute="width" constant="280" id="xsY-AA-RGV"/>
+                                                </constraints>
+                                                <fontDescription 
key="fontDescription" type="system" pointSize="17"/>
+                                                <nil key="highlightedColor"/>
+                                            </label>
+                                            <label opaque="NO" 
clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" 
horizontalHuggingPriority="251" verticalHuggingPriority="251" text="external" 
textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" 
baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
preferredMaxLayoutWidth="280" translatesAutoresizingMaskIntoConstraints="NO" 
id="ven-ec-xzg">
+                                                <rect key="frame" x="20" 
y="224" width="280" height="21"/>
+                                                <autoresizingMask 
key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                <constraints>
+                                                    <constraint 
firstAttribute="width" constant="280" id="9pZ-GE-rBr"/>
+                                                </constraints>
+                                                <fontDescription 
key="fontDescription" type="boldSystem" pointSize="17"/>
+                                                <nil key="highlightedColor"/>
+                                            </label>
+                                            <label opaque="NO" 
clipsSubviews="YES" contentMode="left" horizontalHuggingPriority="251" 
verticalHuggingPriority="251" text="WikiFont" lineBreakMode="wordWrap" 
numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
preferredMaxLayoutWidth="280" translatesAutoresizingMaskIntoConstraints="NO" 
id="qQl-8k-ux4">
+                                                <rect key="frame" x="20" 
y="265" width="280" height="21"/>
+                                                <autoresizingMask 
key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                <constraints>
+                                                    <constraint 
firstAttribute="width" constant="280" id="Cty-XK-Glb"/>
+                                                </constraints>
+                                                <fontDescription 
key="fontDescription" type="system" pointSize="17"/>
+                                                <nil key="highlightedColor"/>
+                                            </label>
+                                            <label opaque="NO" 
clipsSubviews="YES" contentMode="left" horizontalHuggingPriority="251" 
verticalHuggingPriority="251" text="HPPLE" lineBreakMode="wordWrap" 
numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
preferredMaxLayoutWidth="280" translatesAutoresizingMaskIntoConstraints="NO" 
id="eSk-uQ-Ran">
+                                                <rect key="frame" x="20" 
y="306" width="280" height="21"/>
+                                                <autoresizingMask 
key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                <constraints>
+                                                    <constraint 
firstAttribute="width" constant="280" id="vyu-2A-a3C"/>
+                                                </constraints>
+                                                <fontDescription 
key="fontDescription" type="system" pointSize="17"/>
+                                                <nil key="highlightedColor"/>
+                                            </label>
+                                            <label opaque="NO" 
clipsSubviews="YES" contentMode="left" horizontalHuggingPriority="251" 
verticalHuggingPriority="251" text="NSDate-Extensions" lineBreakMode="wordWrap" 
numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
preferredMaxLayoutWidth="280" translatesAutoresizingMaskIntoConstraints="NO" 
id="6O2-5x-h41">
+                                                <rect key="frame" x="20" 
y="347" width="280" height="21"/>
+                                                <autoresizingMask 
key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                <constraints>
+                                                    <constraint 
firstAttribute="width" constant="280" id="Iwk-F6-h8L"/>
+                                                </constraints>
+                                                <fontDescription 
key="fontDescription" type="system" pointSize="17"/>
+                                                <nil key="highlightedColor"/>
+                                            </label>
+                                        </subviews>
+                                        <color key="backgroundColor" white="1" 
alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                                        <constraints>
+                                            <constraint 
firstAttribute="centerX" secondItem="6O2-5x-h41" secondAttribute="centerX" 
id="EIq-xZ-kkz"/>
+                                            <constraint 
firstAttribute="centerX" secondItem="ven-ec-xzg" secondAttribute="centerX" 
id="JY2-7J-igk"/>
+                                            <constraint firstItem="gzT-kN-7kp" 
firstAttribute="top" secondItem="5KU-bp-5Fs" secondAttribute="bottom" 
constant="20" id="TDr-V6-jrb"/>
+                                            <constraint firstItem="ieH-d1-Ds7" 
firstAttribute="top" secondItem="ULA-VS-Px0" secondAttribute="top" 
constant="40" id="TgT-z1-cyX"/>
+                                            <constraint 
firstAttribute="centerX" secondItem="ieH-d1-Ds7" secondAttribute="centerX" 
id="Tvt-qg-VEN"/>
+                                            <constraint firstItem="3gs-D6-glW" 
firstAttribute="top" secondItem="gzT-kN-7kp" secondAttribute="bottom" 
constant="20" id="Ucc-Sd-cUw"/>
+                                            <constraint 
firstAttribute="centerX" secondItem="5KU-bp-5Fs" secondAttribute="centerX" 
id="UpL-3N-aXi"/>
+                                            <constraint 
firstAttribute="centerX" secondItem="qQl-8k-ux4" secondAttribute="centerX" 
id="e1J-N7-ngT"/>
+                                            <constraint firstItem="6O2-5x-h41" 
firstAttribute="top" secondItem="eSk-uQ-Ran" secondAttribute="bottom" 
constant="20" id="fbY-ch-ngz"/>
+                                            <constraint firstItem="qQl-8k-ux4" 
firstAttribute="top" secondItem="ven-ec-xzg" secondAttribute="bottom" 
constant="20" id="ker-bq-3OO"/>
+                                            <constraint 
firstAttribute="centerX" secondItem="3gs-D6-glW" secondAttribute="centerX" 
id="pBH-cw-bNf"/>
+                                            <constraint firstItem="5KU-bp-5Fs" 
firstAttribute="top" secondItem="ieH-d1-Ds7" secondAttribute="bottom" 
constant="30" id="r1q-r9-uD6"/>
+                                            <constraint 
firstAttribute="centerX" secondItem="eSk-uQ-Ran" secondAttribute="centerX" 
id="rrs-gS-Ihn"/>
+                                            <constraint firstItem="eSk-uQ-Ran" 
firstAttribute="top" secondItem="qQl-8k-ux4" secondAttribute="bottom" 
constant="20" id="vfW-pJ-nvd"/>
+                                            <constraint 
firstAttribute="bottom" secondItem="6O2-5x-h41" secondAttribute="bottom" 
constant="20" symbolic="YES" id="wuw-9H-qQr"/>
+                                            <constraint 
firstAttribute="centerX" secondItem="gzT-kN-7kp" secondAttribute="centerX" 
id="xzk-5q-Czv"/>
+                                            <constraint firstItem="ven-ec-xzg" 
firstAttribute="top" secondItem="3gs-D6-glW" secondAttribute="bottom" 
constant="30" id="ytD-4S-psy"/>
+                                        </constraints>
+                                    </view>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="ULA-VS-Px0" 
firstAttribute="top" secondItem="qEv-qB-FRv" secondAttribute="top" 
id="5e3-gz-foX"/>
+                                    <constraint firstAttribute="trailing" 
secondItem="ULA-VS-Px0" secondAttribute="trailing" id="7l1-Xx-j8M"/>
+                                    <constraint firstAttribute="bottom" 
secondItem="ULA-VS-Px0" secondAttribute="bottom" constant="80" id="G7i-FS-P8G"/>
+                                    <constraint firstAttribute="width" 
secondItem="ULA-VS-Px0" secondAttribute="width" id="VLV-SK-Sv6"/>
+                                    <constraint firstItem="ULA-VS-Px0" 
firstAttribute="leading" secondItem="qEv-qB-FRv" secondAttribute="leading" 
id="gqk-UN-TvC"/>
+                                </constraints>
+                            </scrollView>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" 
colorSpace="custom" customColorSpace="calibratedWhite"/>
+                        <constraints>
+                            <constraint firstAttribute="trailing" 
secondItem="qEv-qB-FRv" secondAttribute="trailing" id="4Ln-Qz-emi"/>
+                            <constraint firstAttribute="bottom" 
secondItem="qEv-qB-FRv" secondAttribute="bottom" id="De2-ZF-dN4"/>
+                            <constraint firstItem="qEv-qB-FRv" 
firstAttribute="top" secondItem="XBS-Es-znJ" secondAttribute="top" 
id="Hmj-4p-eoK"/>
+                            <constraint firstItem="qEv-qB-FRv" 
firstAttribute="leading" secondItem="XBS-Es-znJ" secondAttribute="leading" 
id="sdn-y4-Yyg"/>
+                        </constraints>
+                    </view>
+                    <extendedEdge key="edgesForExtendedLayout" bottom="YES"/>
+                    <connections>
+                        <outlet property="externalLibrariesLabel" 
destination="ven-ec-xzg" id="ipE-Zd-jCl"/>
+                        <outlet property="gerritLabel" 
destination="gzT-kN-7kp" id="8PW-lc-Csn"/>
+                        <outlet property="githubLabel" 
destination="3gs-D6-glW" id="fUX-qN-QZ5"/>
+                        <outlet property="hppleLabel" destination="eSk-uQ-Ran" 
id="qN0-Td-phW"/>
+                        <outlet property="nsdateLabel" 
destination="6O2-5x-h41" id="iCt-hu-Fa8"/>
+                        <outlet property="titleLabel" destination="ieH-d1-Ds7" 
id="X4Z-41-eO2"/>
+                        <outlet property="wikiFontLabel" 
destination="qQl-8k-ux4" id="yBp-Z2-ibr"/>
+                        <outlet property="wikimediaReposLabel" 
destination="5KU-bp-5Fs" id="chD-0j-d6F"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" 
id="BLG-HG-Go1" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="554" y="2885"/>
+        </scene>
         <!--Preview And Save View Controller-->
         <scene sceneID="TJS-xh-DjB">
             <objects>
@@ -711,25 +859,25 @@
                         <viewControllerLayoutGuide type="bottom" 
id="NcO-7E-4V6"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="2UF-VY-OwF">
-                        <rect key="frame" x="0.0" y="0.0" width="320" 
height="163"/>
+                        <rect key="frame" x="0.0" y="0.0" width="280" 
height="163"/>
                         <autoresizingMask key="autoresizingMask" 
flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <imageView userInteractionEnabled="NO" 
contentMode="scaleAspectFit" horizontalHuggingPriority="251" 
verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" 
id="ubi-fl-THX">
-                                <rect key="frame" x="0.0" y="20" width="320" 
height="70"/>
+                                <rect key="frame" x="0.0" y="20" width="280" 
height="70"/>
                                 <autoresizingMask key="autoresizingMask" 
flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <constraints>
                                     <constraint firstAttribute="height" 
constant="70" id="djK-ra-WHc"/>
                                 </constraints>
                             </imageView>
                             <button opaque="NO" contentMode="scaleToFill" 
contentHorizontalAlignment="center" contentVerticalAlignment="center" 
buttonType="roundedRect" lineBreakMode="wordWrap" 
translatesAutoresizingMaskIntoConstraints="NO" id="21c-U6-yfo">
-                                <rect key="frame" x="0.0" y="100" width="320" 
height="30"/>
+                                <rect key="frame" x="0.0" y="100" width="280" 
height="30"/>
                                 <autoresizingMask key="autoresizingMask" 
flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <state key="normal" title="Show another 
captcha">
                                     <color key="titleShadowColor" white="0.5" 
alpha="1" colorSpace="calibratedWhite"/>
                                 </state>
                             </button>
                             <textField opaque="NO" clipsSubviews="YES" 
contentMode="scaleToFill" contentHorizontalAlignment="left" 
contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter 
CAPTCHA text from image above" minimumFontSize="17" 
clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" 
id="gPg-cg-Yjy">
-                                <rect key="frame" x="20" y="140" width="280" 
height="30"/>
+                                <rect key="frame" x="0.0" y="140" width="280" 
height="30"/>
                                 <autoresizingMask key="autoresizingMask" 
flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <constraints>
                                     <constraint firstAttribute="width" 
constant="280" id="6wn-Hx-rhl"/>
@@ -1091,6 +1239,6 @@
         <simulatedScreenMetrics key="destination" type="retina4"/>
     </simulatedMetricsContainer>
     <inferredMetricsTieBreakers>
-        <segue reference="ca4-hw-8WK"/>
+        <segue reference="HJg-5s-ewq"/>
     </inferredMetricsTieBreakers>
 </document>
diff --git a/wikipedia/View Controllers/Credits/CreditsViewController.h 
b/wikipedia/View Controllers/Credits/CreditsViewController.h
new file mode 100644
index 0000000..68a8fc8
--- /dev/null
+++ b/wikipedia/View Controllers/Credits/CreditsViewController.h
@@ -0,0 +1,18 @@
+//  Created by Monte Hurd on 4/18/14.
+//  Copyright (c) 2013 Wikimedia Foundation. Provided under MIT-style license; 
please copy and modify!
+
+#import <UIKit/UIKit.h>
+
+@interface CreditsViewController : UIViewController
+
+@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
+@property (weak, nonatomic) IBOutlet UILabel *wikimediaReposLabel;
+@property (weak, nonatomic) IBOutlet UILabel *externalLibrariesLabel;
+@property (weak, nonatomic) IBOutlet UILabel *githubLabel;
+@property (weak, nonatomic) IBOutlet UILabel *gerritLabel;
+
+@property (weak, nonatomic) IBOutlet UILabel *wikiFontLabel;
+@property (weak, nonatomic) IBOutlet UILabel *hppleLabel;
+@property (weak, nonatomic) IBOutlet UILabel *nsdateLabel;
+
+@end
diff --git a/wikipedia/View Controllers/Credits/CreditsViewController.m 
b/wikipedia/View Controllers/Credits/CreditsViewController.m
new file mode 100644
index 0000000..23d2073
--- /dev/null
+++ b/wikipedia/View Controllers/Credits/CreditsViewController.m
@@ -0,0 +1,74 @@
+//  Created by Monte Hurd on 4/18/14.
+//  Copyright (c) 2013 Wikimedia Foundation. Provided under MIT-style license; 
please copy and modify!
+
+#import "CreditsViewController.h"
+#import "WikipediaAppUtils.h"
+
+@interface CreditsViewController ()
+
+@end
+
+@implementation CreditsViewController
+
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+
+    self.navigationItem.hidesBackButton = YES;
+
+    self.titleLabel.text = MWLocalizedString(@"credits-title", nil);
+    self.wikimediaReposLabel.text = 
MWLocalizedString(@"credits-wikimedia-repos", nil);
+    self.externalLibrariesLabel.text = 
MWLocalizedString(@"credits-external-libraries", nil);
+    self.githubLabel.text = MWLocalizedString(@"credits-github-mirror", nil);
+    self.gerritLabel.text = MWLocalizedString(@"credits-gerrit-repo", nil);
+    
+    [self addTapRecognizerToView:self.githubLabel];
+    [self addTapRecognizerToView:self.gerritLabel];
+    [self addTapRecognizerToView:self.wikiFontLabel];
+    [self addTapRecognizerToView:self.hppleLabel];
+    [self addTapRecognizerToView:self.nsdateLabel];
+}
+
+-(void)addTapRecognizerToView:(UIView *)view
+{
+    [view addGestureRecognizer:
+        [[UITapGestureRecognizer alloc] initWithTarget:self 
action:@selector(viewTapped:)]
+     ];
+}
+
+-(void)viewTapped:(UITapGestureRecognizer *)recognizer
+{
+    NSString *url = nil;
+    if (recognizer.view == self.githubLabel) {
+        url = @"https://github.com/wikimedia/apps-ios-wikipedia";;
+    }else if (recognizer.view == self.gerritLabel) {
+        url = 
@"https://gerrit.wikimedia.org/r/#/q/project:apps/ios/wikipedia,n,z";;
+    }else if (recognizer.view == self.wikiFontLabel) {
+        url = @"https://github.com/munmay/WikiFont";;
+    }else if (recognizer.view == self.hppleLabel) {
+        url = @"https://github.com/topfunky/hpple";;
+    }else if (recognizer.view == self.nsdateLabel) {
+        url = @"https://github.com/erica/NSDate-Extensions";;
+    }
+    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
+}
+
+- (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/MainMenu/MainMenuViewController.m 
b/wikipedia/View Controllers/MainMenu/MainMenuViewController.m
index e65b6c7..7e372b5 100644
--- a/wikipedia/View Controllers/MainMenu/MainMenuViewController.m
+++ b/wikipedia/View Controllers/MainMenu/MainMenuViewController.m
@@ -24,6 +24,7 @@
 
 #import "MainMenuRowView.h"
 #import "PageHistoryViewController.h"
+#import "CreditsViewController.h"
 
 #pragma mark - Defines
 
@@ -39,7 +40,8 @@
     ROW_INDEX_SEARCH_LANGUAGE = 5,
     ROW_INDEX_ZERO_WARN_WHEN_LEAVING = 6,
     ROW_INDEX_SEND_FEEDBACK = 7,
-    ROW_INDEX_PAGE_HISTORY = 8
+    ROW_INDEX_PAGE_HISTORY = 8,
+    ROW_INDEX_CREDITS = 9
 } MainMenuRowIndex;
 
 #pragma mark - Private
@@ -277,6 +279,14 @@
           @"imageName": @"main_menu_save.png",
           @"highlighted": @YES,
           }.mutableCopy
+        ,
+      @{
+          @"domain": [SessionSingleton sharedInstance].domain,
+          @"title": MWLocalizedString(@"main-menu-credits", nil),
+          @"tag": @(ROW_INDEX_CREDITS),
+          @"imageName": @"main_menu_foreign_characters_gray.png",
+          @"highlighted": @YES,
+          }.mutableCopy
       ].mutableCopy;
 
     self.rowData = rowData;
@@ -387,6 +397,13 @@
                 [NAV pushViewController:pageHistoryVC animated:YES];
             }
                 break;
+            case ROW_INDEX_CREDITS:
+            {
+                CreditsViewController *creditsVC =
+                    [NAV.storyboard 
instantiateViewControllerWithIdentifier:@"CreditsViewController"];
+                [NAV pushViewController:creditsVC animated:YES];
+            }
+                break;
             default:
                 break;
         }
diff --git a/wikipedia/en.lproj/Localizable.strings 
b/wikipedia/en.lproj/Localizable.strings
index dbd3230..b212ea7 100644
--- a/wikipedia/en.lproj/Localizable.strings
+++ b/wikipedia/en.lproj/Localizable.strings
@@ -76,6 +76,7 @@
 "main-menu-feedback-heading" = "Feedback";
 "main-menu-send-feedback" = "Send feedback";
 "main-menu-show-page-history" = "History of changes to $1";
+"main-menu-credits" = "Credits";
 
 "saved-pages-title" = "Saved Pages";
 "page-history-title" = "Page History";
@@ -108,3 +109,9 @@
 
 "article-pull-to-refresh-prompt" = "Pull to refresh article";
 "article-pull-to-refresh-is-refreshing" = "Refreshing article";
+
+"credits-title" = "Open source repositories";
+"credits-wikimedia-repos" = "Wikimedia";
+"credits-gerrit-repo" = "App main (Gerrit)";
+"credits-github-mirror" = "App mirror (GitHub)";
+"credits-external-libraries" = "External";
diff --git a/wikipedia/qqq.lproj/Localizable.strings 
b/wikipedia/qqq.lproj/Localizable.strings
index 6e1250c..eb8bc84 100644
--- a/wikipedia/qqq.lproj/Localizable.strings
+++ b/wikipedia/qqq.lproj/Localizable.strings
@@ -73,6 +73,7 @@
 "main-menu-feedback-heading" = "Header text for app 
feedback.\n{{Identical|Feedback}}";
 "main-menu-send-feedback" = "Button text for button to send app 
feedback.\n{{Identical|Send feedback}}";
 "main-menu-show-page-history" = "Button text for showing history of changes to 
current article. Parameters:\n* $1 - page title";
+"main-menu-credits" = "Button text for showing credits for external open 
source libraries used";
 "saved-pages-title" = "Header text for Saved Pages 
interface.\n{{Identical|Saved page}}";
 "page-history-title" = "Header text for Page History interface";
 "navbar-title-mode-edit-wikitext" = "Header text shown when wikitext is being 
edited";
@@ -99,3 +100,8 @@
 "fetching-random-article" = "Alert text shown when fetching a random article";
 "article-pull-to-refresh-prompt" = "Label text informing user article may be 
pulled down to refresh";
 "article-pull-to-refresh-is-refreshing" = "Label text shown when user pulls 
down on article to refresh";
+"credits-title" = "Title for credits page";
+"credits-wikimedia-repos" = "Title for area of credits page showing Wikimedia 
open source repositories for app";
+"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";

-- 
To view, visit https://gerrit.wikimedia.org/r/127378
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibe65df5cba9223d66dfa9bd7a8769a24f0c059ec
Gerrit-PatchSet: 1
Gerrit-Project: apps/ios/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mhurd <mh...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to