Dr0ptp4kt has submitted this change and it was merged.

Change subject: Native component beneath webView.
......................................................................


Native component beneath webView.

Discovered better way to make native view track web view
with autolayout. Factored to category on UIWebView for
easy top or bottom placement of tracking view.

Made lead image use the new category.

Moved article footer from html/css to native
component tracking bottom of article.

Made tracking containment use intrinsic content size
rather than hard-coded height constraints.

Change-Id: I60f1ac5b9ffbe5eb1e75c0d30926063a884019c0
---
M Wikipedia.xcodeproj/project.pbxproj
M wikipedia/Base.lproj/Main_iPhone.storyboard
A wikipedia/Categories/UIColor+WMFHexColor.h
A wikipedia/Categories/UIColor+WMFHexColor.m
A wikipedia/Categories/UIWebView+WMFTrackingView.h
A wikipedia/Categories/UIWebView+WMFTrackingView.m
A wikipedia/Images.xcassets/WikipediaWordmark.imageset/Contents.json
A wikipedia/Images.xcassets/WikipediaWordmark.imageset/WikipediaWordmark.pdf
M wikipedia/View Controllers/LeadImage/LeadImageContainer.m
A wikipedia/View Controllers/WebView/Footers/Legal/LegalFooterViewController.h
A wikipedia/View Controllers/WebView/Footers/Legal/LegalFooterViewController.m
A wikipedia/View Controllers/WebView/Footers/Legal/LegalFooterViewController.xib
A wikipedia/View 
Controllers/WebView/Footers/Options/OptionsFooterViewController.h
A wikipedia/View 
Controllers/WebView/Footers/Options/OptionsFooterViewController.m
A wikipedia/View 
Controllers/WebView/Footers/Options/OptionsFooterViewController.xib
A wikipedia/View 
Controllers/WebView/Footers/Suggestions/SuggestionsFooterViewController.h
A wikipedia/View 
Controllers/WebView/Footers/Suggestions/SuggestionsFooterViewController.m
A wikipedia/View 
Controllers/WebView/Footers/Suggestions/SuggestionsFooterViewController.xib
A wikipedia/View Controllers/WebView/WebViewBottomTrackingContainerView.h
A wikipedia/View Controllers/WebView/WebViewBottomTrackingContainerView.m
M wikipedia/View Controllers/WebView/WebViewController.m
M wikipedia/View Controllers/WebView/WebViewController_Private.h
M wikipedia/en.lproj/Localizable.strings
M www/Gruntfile.js
D www/footer-divider-notch.png
D www/footer-divider.png
M www/js/listeners.js
D www/less/langbutton.less
D www/less/lastmod.less
29 files changed, 930 insertions(+), 277 deletions(-)

Approvals:
  Dr0ptp4kt: Verified; Looks good to me, approved



diff --git a/Wikipedia.xcodeproj/project.pbxproj 
b/Wikipedia.xcodeproj/project.pbxproj
index e7052a1..b7c2089 100644
--- a/Wikipedia.xcodeproj/project.pbxproj
+++ b/Wikipedia.xcodeproj/project.pbxproj
@@ -39,15 +39,31 @@
                04292FF8185FBB0B002A13FC /* SearchResultsController.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 04292FF7185FBB0B002A13FC /* 
SearchResultsController.m */; };
                0429300A18604898002A13FC /* SavedPagesResultCell.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = 0429300418604898002A13FC /* 
SavedPagesResultCell.m */; };
                0429301018604898002A13FC /* SavedPagesViewController.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 0429300918604898002A13FC /* 
SavedPagesViewController.m */; };
+               042950CF1A9D0901009BE784 /* 
WebViewBottomTrackingContainerView.m in Sources */ = {isa = PBXBuildFile; 
fileRef = 042950CE1A9D0901009BE784 /* WebViewBottomTrackingContainerView.m */; 
};
+               042950D41A9D3BA7009BE784 /* UIColor+WMFHexColor.m in Sources */ 
= {isa = PBXBuildFile; fileRef = 042950D31A9D3BA7009BE784 /* 
UIColor+WMFHexColor.m */; };
                042A5B2619253D2A0095E172 /* CenterNavController.m in Sources */ 
= {isa = PBXBuildFile; fileRef = 042A5B2019253D2A0095E172 /* 
CenterNavController.m */; };
                042A5B2919253E570095E172 /* TopMenuViewController.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = 042A5B2819253E570095E172 /* 
TopMenuViewController.m */; };
                042A5B2C19253E690095E172 /* BottomMenuViewController.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 042A5B2B19253E690095E172 /* 
BottomMenuViewController.m */; };
                042A5B2F19257F900095E172 /* TopMenuContainerView.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = 042A5B2E19257F900095E172 /* 
TopMenuContainerView.m */; };
                042A5B36192591520095E172 /* TopMenuTextField.m in Sources */ = 
{isa = PBXBuildFile; fileRef = 042A5B31192591520095E172 /* TopMenuTextField.m 
*/; };
                042B3996192EAEEA0066B270 /* ShareMenuSavePageActivity.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 042B3995192EAEEA0066B270 /* 
ShareMenuSavePageActivity.m */; };
+               042BEAEF1A92EE66002CF320 /* UIWebView+WMFTrackingView.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 042BEAEE1A92EE66002CF320 /* 
UIWebView+WMFTrackingView.m */; };
+               042BEAF01A92EE66002CF320 /* UIWebView+WMFTrackingView.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 042BEAEE1A92EE66002CF320 /* 
UIWebView+WMFTrackingView.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 */; };
+               043BFC7A1A932BA50068B932 /* LegalFooterViewController.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 043BFC761A932BA50068B932 /* 
LegalFooterViewController.m */; };
+               043BFC7B1A932BA50068B932 /* LegalFooterViewController.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 043BFC761A932BA50068B932 /* 
LegalFooterViewController.m */; };
+               043BFC7C1A932BA50068B932 /* LegalFooterViewController.xib in 
Resources */ = {isa = PBXBuildFile; fileRef = 043BFC771A932BA50068B932 /* 
LegalFooterViewController.xib */; };
+               043BFC7D1A932BA50068B932 /* LegalFooterViewController.xib in 
Resources */ = {isa = PBXBuildFile; fileRef = 043BFC771A932BA50068B932 /* 
LegalFooterViewController.xib */; };
+               043BFC811A932BEC0068B932 /* OptionsFooterViewController.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 043BFC7F1A932BEC0068B932 /* 
OptionsFooterViewController.m */; };
+               043BFC821A932BEC0068B932 /* OptionsFooterViewController.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 043BFC7F1A932BEC0068B932 /* 
OptionsFooterViewController.m */; };
+               043BFC831A932BEC0068B932 /* OptionsFooterViewController.xib in 
Resources */ = {isa = PBXBuildFile; fileRef = 043BFC801A932BEC0068B932 /* 
OptionsFooterViewController.xib */; };
+               043BFC841A932BEC0068B932 /* OptionsFooterViewController.xib in 
Resources */ = {isa = PBXBuildFile; fileRef = 043BFC801A932BEC0068B932 /* 
OptionsFooterViewController.xib */; };
+               043BFC901A93426B0068B932 /* SuggestionsFooterViewController.m 
in Sources */ = {isa = PBXBuildFile; fileRef = 043BFC8E1A93426B0068B932 /* 
SuggestionsFooterViewController.m */; };
+               043BFC911A93426B0068B932 /* SuggestionsFooterViewController.m 
in Sources */ = {isa = PBXBuildFile; fileRef = 043BFC8E1A93426B0068B932 /* 
SuggestionsFooterViewController.m */; };
+               043BFC921A93426B0068B932 /* SuggestionsFooterViewController.xib 
in Resources */ = {isa = PBXBuildFile; fileRef = 043BFC8F1A93426B0068B932 /* 
SuggestionsFooterViewController.xib */; };
+               043BFC931A93426B0068B932 /* SuggestionsFooterViewController.xib 
in Resources */ = {isa = PBXBuildFile; fileRef = 043BFC8F1A93426B0068B932 /* 
SuggestionsFooterViewController.xib */; };
                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 
*/; };
@@ -409,6 +425,10 @@
                0429300418604898002A13FC /* SavedPagesResultCell.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= SavedPagesResultCell.m; sourceTree = "<group>"; };
                0429300818604898002A13FC /* SavedPagesViewController.h */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; 
path = SavedPagesViewController.h; sourceTree = "<group>"; };
                0429300918604898002A13FC /* SavedPagesViewController.m */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = 
sourcecode.c.objc; lineEnding = 0; path = SavedPagesViewController.m; 
sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
+               042950CD1A9D0901009BE784 /* 
WebViewBottomTrackingContainerView.h */ = {isa = PBXFileReference; fileEncoding 
= 4; lastKnownFileType = sourcecode.c.h; path = 
WebViewBottomTrackingContainerView.h; sourceTree = "<group>"; };
+               042950CE1A9D0901009BE784 /* 
WebViewBottomTrackingContainerView.m */ = {isa = PBXFileReference; fileEncoding 
= 4; lastKnownFileType = sourcecode.c.objc; path = 
WebViewBottomTrackingContainerView.m; sourceTree = "<group>"; };
+               042950D21A9D3BA7009BE784 /* UIColor+WMFHexColor.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
"UIColor+WMFHexColor.h"; sourceTree = "<group>"; };
+               042950D31A9D3BA7009BE784 /* UIColor+WMFHexColor.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= "UIColor+WMFHexColor.m"; sourceTree = "<group>"; };
                042A5B1F19253D2A0095E172 /* CenterNavController.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
CenterNavController.h; sourceTree = "<group>"; };
                042A5B2019253D2A0095E172 /* CenterNavController.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= CenterNavController.m; sourceTree = "<group>"; };
                042A5B2719253E570095E172 /* TopMenuViewController.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
TopMenuViewController.h; sourceTree = "<group>"; };
@@ -421,12 +441,23 @@
                042A5B31192591520095E172 /* TopMenuTextField.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= TopMenuTextField.m; sourceTree = "<group>"; };
                042B3994192EAEEA0066B270 /* ShareMenuSavePageActivity.h */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; 
path = ShareMenuSavePageActivity.h; sourceTree = "<group>"; };
                042B3995192EAEEA0066B270 /* ShareMenuSavePageActivity.m */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = 
sourcecode.c.objc; path = ShareMenuSavePageActivity.m; sourceTree = "<group>"; 
};
+               042BEAED1A92EE66002CF320 /* UIWebView+WMFTrackingView.h */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; 
path = "UIWebView+WMFTrackingView.h"; sourceTree = "<group>"; };
+               042BEAEE1A92EE66002CF320 /* UIWebView+WMFTrackingView.m */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = 
sourcecode.c.objc; path = "UIWebView+WMFTrackingView.m"; sourceTree = 
"<group>"; };
                0433542018A023FE009305F0 /* UIViewController+HideKeyboard.h */ 
= {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = 
sourcecode.c.h; path = "UIViewController+HideKeyboard.h"; sourceTree = 
"<group>"; };
                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>"; 
};
+               043BFC751A932BA50068B932 /* LegalFooterViewController.h */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; 
path = LegalFooterViewController.h; sourceTree = "<group>"; };
+               043BFC761A932BA50068B932 /* LegalFooterViewController.m */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = 
sourcecode.c.objc; path = LegalFooterViewController.m; sourceTree = "<group>"; 
};
+               043BFC771A932BA50068B932 /* LegalFooterViewController.xib */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = 
LegalFooterViewController.xib; sourceTree = "<group>"; };
+               043BFC7E1A932BEC0068B932 /* OptionsFooterViewController.h */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; 
path = OptionsFooterViewController.h; sourceTree = "<group>"; };
+               043BFC7F1A932BEC0068B932 /* OptionsFooterViewController.m */ = 
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = 
sourcecode.c.objc; path = OptionsFooterViewController.m; sourceTree = 
"<group>"; };
+               043BFC801A932BEC0068B932 /* OptionsFooterViewController.xib */ 
= {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path 
= OptionsFooterViewController.xib; sourceTree = "<group>"; };
+               043BFC8D1A93426B0068B932 /* SuggestionsFooterViewController.h 
*/ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = 
sourcecode.c.h; path = SuggestionsFooterViewController.h; sourceTree = 
"<group>"; };
+               043BFC8E1A93426B0068B932 /* SuggestionsFooterViewController.m 
*/ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = 
sourcecode.c.objc; path = SuggestionsFooterViewController.m; sourceTree = 
"<group>"; };
+               043BFC8F1A93426B0068B932 /* SuggestionsFooterViewController.xib 
*/ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; 
path = SuggestionsFooterViewController.xib; 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>"; };
@@ -1221,6 +1252,46 @@
                        path = Top;
                        sourceTree = "<group>";
                };
+               043BFC6C1A932B020068B932 /* Footers */ = {
+                       isa = PBXGroup;
+                       children = (
+                               043BFC8C1A93426B0068B932 /* Suggestions */,
+                               043BFC791A932BA50068B932 /* Options */,
+                               043BFC741A932BA50068B932 /* Legal */,
+                       );
+                       path = Footers;
+                       sourceTree = "<group>";
+               };
+               043BFC741A932BA50068B932 /* Legal */ = {
+                       isa = PBXGroup;
+                       children = (
+                               043BFC751A932BA50068B932 /* 
LegalFooterViewController.h */,
+                               043BFC761A932BA50068B932 /* 
LegalFooterViewController.m */,
+                               043BFC771A932BA50068B932 /* 
LegalFooterViewController.xib */,
+                       );
+                       path = Legal;
+                       sourceTree = "<group>";
+               };
+               043BFC791A932BA50068B932 /* Options */ = {
+                       isa = PBXGroup;
+                       children = (
+                               043BFC7E1A932BEC0068B932 /* 
OptionsFooterViewController.h */,
+                               043BFC7F1A932BEC0068B932 /* 
OptionsFooterViewController.m */,
+                               043BFC801A932BEC0068B932 /* 
OptionsFooterViewController.xib */,
+                       );
+                       path = Options;
+                       sourceTree = "<group>";
+               };
+               043BFC8C1A93426B0068B932 /* Suggestions */ = {
+                       isa = PBXGroup;
+                       children = (
+                               043BFC8D1A93426B0068B932 /* 
SuggestionsFooterViewController.h */,
+                               043BFC8E1A93426B0068B932 /* 
SuggestionsFooterViewController.m */,
+                               043BFC8F1A93426B0068B932 /* 
SuggestionsFooterViewController.xib */,
+                       );
+                       path = Suggestions;
+                       sourceTree = "<group>";
+               };
                043DAC481901C3D2001CD17C /* Credits */ = {
                        isa = PBXGroup;
                        children = (
@@ -1267,8 +1338,11 @@
                                0447862D185145090050563B /* WebViewController.h 
*/,
                                BCB58F491A89202F00465627 /* 
WebViewController_Private.h */,
                                0447862E185145090050563B /* WebViewController.m 
*/,
+                               042950CD1A9D0901009BE784 /* 
WebViewBottomTrackingContainerView.h */,
+                               042950CE1A9D0901009BE784 /* 
WebViewBottomTrackingContainerView.m */,
                                BCB58F461A891FDB00465627 /* 
WebViewController+ImageGalleryPresentation.h */,
                                BCB58F471A891FDB00465627 /* 
WebViewController+ImageGalleryPresentation.m */,
+                               043BFC6C1A932B020068B932 /* Footers */,
                        );
                        path = WebView;
                        sourceTree = "<group>";
@@ -1692,11 +1766,15 @@
                                04B6924F18E77B2A00F88D8A /* 
UIWebView+HideScrollGradient.m */,
                                0439317419FB092600386E8F /* 
UIWebView+LoadAssetsHtml.h */,
                                0439317519FB092600386E8F /* 
UIWebView+LoadAssetsHtml.m */,
+                               042BEAED1A92EE66002CF320 /* 
UIWebView+WMFTrackingView.h */,
+                               042BEAEE1A92EE66002CF320 /* 
UIWebView+WMFTrackingView.m */,
                                04BA489F1A80062E00CB5CAE /* UIFont+WMFStyle.h 
*/,
                                04BA48A01A80062E00CB5CAE /* UIFont+WMFStyle.m 
*/,
                                04D149D818877343006B4104 /* Alerts */,
                                BCB66A0A1A85183000C7B1FE /* 
NSString+WMFHTMLParsing.h */,
                                BCB66A0B1A85183000C7B1FE /* 
NSString+WMFHTMLParsing.m */,
+                               042950D21A9D3BA7009BE784 /* 
UIColor+WMFHexColor.h */,
+                               042950D31A9D3BA7009BE784 /* 
UIColor+WMFHexColor.m */,
                                BCB58F651A8AA22200465627 /* 
MWKLicense+ToGlyph.h */,
                                BCB58F661A8AA22200465627 /* 
MWKLicense+ToGlyph.m */,
                                BCB58F761A8D081E00465627 /* NSArray+BKIndex.h 
*/,
@@ -2270,8 +2348,8 @@
                                04272E75193FF7F000CC682F /* make-css-assets */,
                                D4C16A621970946900CD91AD /* 
update-storyboard-strings */,
                                D4C16A631970949A00CD91AD /* update-qqq */,
-                               D4991433181D51DE00E6073C /* Resources */,
                                046F268119C387BD00D7ACB3 /* icon-svgs-to-pngs 
*/,
+                               D4991433181D51DE00E6073C /* Resources */,
                                04E0C2771A7750AB00FE22DA /* 
copy-wmflogo-to-assets */,
                                45FA417DEEAE18B42A662320 /* Copy Pods Resources 
*/,
                        );
@@ -2433,6 +2511,9 @@
                                BCB669D61A83F6D300C7B1FE /* 
organization-anon.json in Resources */,
                                BCB669D91A83F6D300C7B1FE /* user-loggedin.json 
in Resources */,
                                BCB669DA1A83F6D300C7B1FE /* user-anon.json in 
Resources */,
+                               043BFC841A932BEC0068B932 /* 
OptionsFooterViewController.xib in Resources */,
+                               043BFC7D1A932BA50068B932 /* 
LegalFooterViewController.xib in Resources */,
+                               043BFC931A93426B0068B932 /* 
SuggestionsFooterViewController.xib in Resources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
@@ -2441,6 +2522,8 @@
                        buildActionMask = 2147483647;
                        files = (
                                D4B7794D1A5F36F700D06E00 /* 
OldDataSchemaBundle.bundle in Resources */,
+                               043BFC831A932BEC0068B932 /* 
OptionsFooterViewController.xib in Resources */,
+                               043BFC7C1A932BA50068B932 /* 
LegalFooterViewController.xib in Resources */,
                                04D3082C19991CB60034F106 /* 
[email protected] in Resources */,
                                D46CD8C418A1AC4F0042959E /* InfoPlist.strings 
in Resources */,
                                045EFF1B19A25FEB00D0EDBB /* 
[email protected] in Resources */,
@@ -2466,6 +2549,7 @@
                                C46FBA4B1A8530EE00C5730F /* 
Pods-acknowledgements.plist in Resources */,
                                04123630189C29EA00E0CF8E /* 
[email protected] in Resources */,
                                D4BC22B4181E9E6300CAC673 /* empty.png in 
Resources */,
+                               043BFC921A93426B0068B932 /* 
SuggestionsFooterViewController.xib in Resources */,
                                04123636189C29EA00E0CF8E /* 
abuse-filter-flag-white.png in Resources */,
                                04C7576F1A1AA2D00084AC39 /* 
RecentSearchCell.xib in Resources */,
                                041E588319B2D2C500AC140C /* 
[email protected] in Resources */,
@@ -2660,6 +2744,9 @@
                                BC50C3831A83C88F006DC7AF /* 
WMFJoinedPropertyParametersTests.m in Sources */,
                                BCB669E01A83F6D300C7B1FE /* MWKTitleTests.m in 
Sources */,
                                BCB58F451A890D9700465627 /* 
MWKImageInfo+MWKImageComparison.m in Sources */,
+                               043BFC821A932BEC0068B932 /* 
OptionsFooterViewController.m in Sources */,
+                               043BFC7B1A932BA50068B932 /* 
LegalFooterViewController.m in Sources */,
+                               043BFC911A93426B0068B932 /* 
SuggestionsFooterViewController.m in Sources */,
                                BC42735E1A7C73B300068882 /* 
NSArray+PredicateTests.m in Sources */,
                                BCB669F01A83F71C00C7B1FE /* MWKSavedPageList.m 
in Sources */,
                                BCB669FD1A84158200C7B1FE /* 
CircularBitwiseRotationTests.m in Sources */,
@@ -2703,6 +2790,7 @@
                                BCB669F41A83F71C00C7B1FE /* 
MWKRecentSearchList.m in Sources */,
                                04BA48A21A80062F00CB5CAE /* UIFont+WMFStyle.m 
in Sources */,
                                BCB669741A83F58600C7B1FE /* 
NSMutableDictionary+WMFMaybeSet.m in Sources */,
+                               042BEAF01A92EE66002CF320 /* 
UIWebView+WMFTrackingView.m in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
@@ -2715,6 +2803,7 @@
                                BCB669A61A83F6C400C7B1FE /* MWKDataObject.m in 
Sources */,
                                04DB0BEA18BD37F900B4BCF3 /* 
UIScrollView+ScrollSubviewToLocation.m in Sources */,
                                0487048B19F8262600B7D307 /* 
RandomArticleFetcher.m in Sources */,
+                               042BEAEF1A92EE66002CF320 /* 
UIWebView+WMFTrackingView.m in Sources */,
                                042A5B36192591520095E172 /* TopMenuTextField.m 
in Sources */,
                                C99844571A8C1F23001D58FD /* 
UIWebView+WMFSuppressSelection.m in Sources */,
                                04AE1C701891B302002D5487 /* NSObject+Extras.m 
in Sources */,
@@ -2729,6 +2818,7 @@
                                BCB669B61A83F6C400C7B1FE /* MWKImageList.m in 
Sources */,
                                04CFA126194B94A10088269A /* MenuLabel.m in 
Sources */,
                                04B0EA4A190B2348007458AF /* 
PreviewLicenseView.m in Sources */,
+                               043BFC811A932BEC0068B932 /* 
OptionsFooterViewController.m in Sources */,
                                0462A6D11A1FE016009412D4 /* 
SearchResultAttributedString.m in Sources */,
                                0487047F19F8262600B7D307 /* AccountCreator.m in 
Sources */,
                                04038E701A15734B00DBD1DF /* 
SearchMessageLabel.m in Sources */,
@@ -2768,6 +2858,7 @@
                                0487048519F8262600B7D307 /* EditTokenFetcher.m 
in Sources */,
                                04CCCFF71935094000E3F60C /* 
PrimaryMenuTableViewCell.m in Sources */,
                                0487048F19F8262600B7D307 /* 
WikiTextSectionFetcher.m in Sources */,
+                               042950CF1A9D0901009BE784 /* 
WebViewBottomTrackingContainerView.m in Sources */,
                                C913C89C1A94019A00BEEAF0 /* 
WMFSuggestedPagesFunnel.m in Sources */,
                                04EDEE2A1A215DBC00798076 /* 
UITableView+DynamicCellHeight.m in Sources */,
                                04CBAC7319A9B786009F3D7E /* NSArray+Predicate.m 
in Sources */,
@@ -2803,6 +2894,7 @@
                                0487048419F8262600B7D307 /* CaptchaResetter.m 
in Sources */,
                                D407E6411A51DBDA00CCC8B1 /* SchemaConverter.m 
in Sources */,
                                BCB669A71A83F6C400C7B1FE /* MWKSiteDataObject.m 
in Sources */,
+                               043BFC7A1A932BA50068B932 /* 
LegalFooterViewController.m in Sources */,
                                04821CD119895EDC007558F6 /* 
ReferenceGradientView.m in Sources */,
                                0460F8DC19B0F932001BC59B /* CenteredPathView.m 
in Sources */,
                                0472BC18193AD88C00C40BDA /* 
MWKSection+DisplayHtml.m in Sources */,
@@ -2858,6 +2950,7 @@
                                04C9509D19EF02980013F3C0 /* EventLogger.m in 
Sources */,
                                D4E8A8A719084F1300DA4765 /* SQLiteHelper.m in 
Sources */,
                                04F39590186CF80100B0D6FC /* TOCViewController.m 
in Sources */,
+                               042950D41A9D3BA7009BE784 /* 
UIColor+WMFHexColor.m in Sources */,
                                0439317619FB092600386E8F /* 
UIWebView+LoadAssetsHtml.m in Sources */,
                                04B91AA718E34BBC00FFAA1C /* 
UIView+TemporaryAnimatedXF.m in Sources */,
                                04224500197F5E09005DD0BF /* AbuseFilterAlert.m 
in Sources */,
@@ -2901,6 +2994,7 @@
                                04CFA123194B94980088269A /* MenuButton.m in 
Sources */,
                                D47BF5D4197870390067C3BC /* SavedPagesFunnel.m 
in Sources */,
                                04C43AC0183442FC006C643B /* NSString+Extras.m 
in Sources */,
+                               043BFC901A93426B0068B932 /* 
SuggestionsFooterViewController.m in Sources */,
                                04CCCFEE1935093A00E3F60C /* 
SecondaryMenuRowView.m in Sources */,
                                0442F57B19006DCC00F55DF9 /* PageHistoryLabel.m 
in Sources */,
                                041C6206199ED2A20061516F /* MWKSection+TOC.m in 
Sources */,
diff --git a/wikipedia/Base.lproj/Main_iPhone.storyboard 
b/wikipedia/Base.lproj/Main_iPhone.storyboard
index d45a015..5ba9d6d 100644
--- a/wikipedia/Base.lproj/Main_iPhone.storyboard
+++ b/wikipedia/Base.lproj/Main_iPhone.storyboard
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" 
version="3.0" toolsVersion="6254" systemVersion="13F34" 
targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" 
initialViewController="1qV-3k-dN1">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" 
version="3.0" toolsVersion="6254" systemVersion="14C109" 
targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" 
initialViewController="1qV-3k-dN1">
     <dependencies>
         <deployment identifier="iOS"/>
         <development version="5100" identifier="xcode"/>
diff --git a/wikipedia/Categories/UIColor+WMFHexColor.h 
b/wikipedia/Categories/UIColor+WMFHexColor.h
new file mode 100644
index 0000000..2750aaa
--- /dev/null
+++ b/wikipedia/Categories/UIColor+WMFHexColor.h
@@ -0,0 +1,11 @@
+//  Created by Monte Hurd on 2/24/15.
+//  Copyright (c) 2015 Wikimedia Foundation. Provided under MIT-style license; 
please copy and modify!
+
+#import <UIKit/UIKit.h>
+
+@interface UIColor (WMF_HexColor)
+
++ (UIColor *)wmf_colorWithHex: (NSInteger)hex
+                        alpha: (CGFloat)alpha;
+
+@end
diff --git a/wikipedia/Categories/UIColor+WMFHexColor.m 
b/wikipedia/Categories/UIColor+WMFHexColor.m
new file mode 100644
index 0000000..58044ed
--- /dev/null
+++ b/wikipedia/Categories/UIColor+WMFHexColor.m
@@ -0,0 +1,17 @@
+//  Created by Monte Hurd on 2/24/15.
+//  Copyright (c) 2015 Wikimedia Foundation. Provided under MIT-style license; 
please copy and modify!
+
+#import "UIColor+WMFHexColor.h"
+
+@implementation UIColor (WMF_HexColor)
+
++ (UIColor *)wmf_colorWithHex: (NSInteger)hex
+                        alpha: (CGFloat)alpha
+{
+    return [UIColor colorWithRed: ((float)((hex & 0xFF0000) >> 16)) / 255.0
+                           green: ((float)((hex & 0xFF00) >> 8)) / 255.0
+                            blue: ((float)(hex & 0xFF)) / 255.0
+                           alpha: alpha];
+}
+
+@end
diff --git a/wikipedia/Categories/UIWebView+WMFTrackingView.h 
b/wikipedia/Categories/UIWebView+WMFTrackingView.h
new file mode 100644
index 0000000..1ceba67
--- /dev/null
+++ b/wikipedia/Categories/UIWebView+WMFTrackingView.h
@@ -0,0 +1,21 @@
+//
+//  UIWebView+TrackingView.h
+//  Wikipedia
+//
+//  Created by Monte Hurd on 2/16/15.
+//  Copyright (c) 2015 Wikimedia Foundation. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef NS_ENUM(NSInteger, WMFTrackingViewLocation) {
+    WMFTrackingViewLocationTop,
+    WMFTrackingViewLocationBottom
+};
+
+@interface UIWebView (WMF_TrackingView)
+
+-(void)wmf_addTrackingView: (UIView *)view
+                atLocation: (WMFTrackingViewLocation)location;
+
+@end
diff --git a/wikipedia/Categories/UIWebView+WMFTrackingView.m 
b/wikipedia/Categories/UIWebView+WMFTrackingView.m
new file mode 100644
index 0000000..96d8cd6
--- /dev/null
+++ b/wikipedia/Categories/UIWebView+WMFTrackingView.m
@@ -0,0 +1,55 @@
+//
+//  UIWebView+TrackingView.m
+//  Wikipedia
+//
+//  Created by Monte Hurd on 2/16/15.
+//  Copyright (c) 2015 Wikimedia Foundation. All rights reserved.
+//
+
+#import "UIWebView+WMFTrackingView.h"
+
+@implementation UIWebView (TrackingView)
+
+-(void)wmf_addTrackingView: (UIView *)view
+                atLocation: (WMFTrackingViewLocation)location
+{
+    view.translatesAutoresizingMaskIntoConstraints = NO;
+    
+    UIView *webScrollView = self.scrollView;
+    [webScrollView addSubview:view];
+    
+    // Reminder - this webView subview has the sizes we want constrain
+    // "view" to, but the constraints themselves need to be added to
+    // the webView's scrollView.
+    UIView *browserView = self.scrollView.subviews[0];
+    
+    void (^constrainEqually)(NSLayoutAttribute) = ^void(NSLayoutAttribute 
attr) {
+        [webScrollView addConstraint:
+         [NSLayoutConstraint constraintWithItem: view
+                                      attribute: attr
+                                      relatedBy: NSLayoutRelationEqual
+                                         toItem: browserView
+                                      attribute: attr
+                                     multiplier: 1.0
+                                       constant: 0.0]
+         ];
+    };
+    
+    constrainEqually([self layoutAttributeForTrackingViewLocation:location]);
+    constrainEqually(NSLayoutAttributeLeading);
+    constrainEqually(NSLayoutAttributeWidth);
+}
+
+-(NSLayoutAttribute)layoutAttributeForTrackingViewLocation:(WMFTrackingViewLocation)location
+{
+    switch (location) {
+        case WMFTrackingViewLocationTop:
+            return NSLayoutAttributeTop;
+            break;
+        case WMFTrackingViewLocationBottom:
+            return NSLayoutAttributeBottom;
+            break;
+    }
+}
+
+@end
diff --git a/wikipedia/Images.xcassets/WikipediaWordmark.imageset/Contents.json 
b/wikipedia/Images.xcassets/WikipediaWordmark.imageset/Contents.json
new file mode 100644
index 0000000..d560151
--- /dev/null
+++ b/wikipedia/Images.xcassets/WikipediaWordmark.imageset/Contents.json
@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "WikipediaWordmark.pdf"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file
diff --git 
a/wikipedia/Images.xcassets/WikipediaWordmark.imageset/WikipediaWordmark.pdf 
b/wikipedia/Images.xcassets/WikipediaWordmark.imageset/WikipediaWordmark.pdf
new file mode 100644
index 0000000..bb56c9a
--- /dev/null
+++ b/wikipedia/Images.xcassets/WikipediaWordmark.imageset/WikipediaWordmark.pdf
Binary files differ
diff --git a/wikipedia/View Controllers/LeadImage/LeadImageContainer.m 
b/wikipedia/View Controllers/LeadImage/LeadImageContainer.m
index 29ebbea..a491c86 100644
--- a/wikipedia/View Controllers/LeadImage/LeadImageContainer.m
+++ b/wikipedia/View Controllers/LeadImage/LeadImageContainer.m
@@ -38,6 +38,7 @@
 @property(strong, nonatomic) MWKArticle *article;
 @property (nonatomic) BOOL isPlaceholder;
 @property(strong, nonatomic)id rotationObserver;
+@property (nonatomic) CGFloat height;
 
 @end
 
@@ -45,6 +46,7 @@
 
 -(void)awakeFromNib
 {
+    self.height = LEAD_IMAGE_CONTAINER_HEIGHT;
     self.isPlaceholder = NO;
     self.clipsToBounds = YES;
     self.backgroundColor = [UIColor clearColor];
@@ -184,20 +186,17 @@
     [self.titleLabel layoutIfNeeded];
     [self.titleDescriptionContainer layoutIfNeeded];
 
-    // Next update height of this image container.
-    CGFloat containerHeight =
-        ([self shouldHideImage]) ? (-self.frame.size.height + 
self.titleDescriptionContainer.frame.size.height) : 0;
+    self.height = ([self shouldHideImage]) ? 
self.titleDescriptionContainer.frame.size.height : LEAD_IMAGE_CONTAINER_HEIGHT;
 
-    self.frame =
-    (CGRect){
-        {0, containerHeight},
-        {self.frame.size.width, self.frame.size.height}
-    };
+    // Notify the layout system that the height has changed.
+    [self invalidateIntrinsicContentSize];
 
     // Now notify the web view of the height change.
-    CGFloat webDivHeight = ([self shouldHideImage]) ? 
self.titleDescriptionContainer.frame.size.height : self.bounds.size.height;
+    [self.delegate leadImageHeightChangedTo:@(self.height)];
+}
 
-    [self.delegate leadImageHeightChangedTo:@(webDivHeight)];
+- (CGSize)intrinsicContentSize {
+    return CGSizeMake(UIViewNoIntrinsicMetric, self.height);
 }
 
 -(void)updateTitleColors
diff --git a/wikipedia/View 
Controllers/WebView/Footers/Legal/LegalFooterViewController.h b/wikipedia/View 
Controllers/WebView/Footers/Legal/LegalFooterViewController.h
new file mode 100644
index 0000000..d5563e8
--- /dev/null
+++ b/wikipedia/View 
Controllers/WebView/Footers/Legal/LegalFooterViewController.h
@@ -0,0 +1,8 @@
+//  Created by Monte Hurd on 2/24/15.
+//  Copyright (c) 2015 Wikimedia Foundation. Provided under MIT-style license; 
please copy and modify!
+
+#import <UIKit/UIKit.h>
+
+@interface LegalFooterViewController : UIViewController
+
+@end
diff --git a/wikipedia/View 
Controllers/WebView/Footers/Legal/LegalFooterViewController.m b/wikipedia/View 
Controllers/WebView/Footers/Legal/LegalFooterViewController.m
new file mode 100644
index 0000000..79aad2b
--- /dev/null
+++ b/wikipedia/View 
Controllers/WebView/Footers/Legal/LegalFooterViewController.m
@@ -0,0 +1,80 @@
+//  Created by Monte Hurd on 2/24/15.
+//  Copyright (c) 2015 Wikimedia Foundation. Provided under MIT-style license; 
please copy and modify!
+
+#import "LegalFooterViewController.h"
+#import "NSString+FormattedAttributedString.h"
+#import "NSObject+ConstraintsScale.h"
+#import "WikipediaAppUtils.h"
+#import "PaddedLabel.h"
+#import "UIColor+WMFHexColor.h"
+#import "Defines.h"
+
+#pragma mark Font sizes
+
+static const CGFloat kLicenseFontSize = 10.0f;
+
+#pragma mark Colors
+
+static const NSInteger kLicenseTextColor = 0x565656;
+static const NSInteger kLicenseNameColor = 0x566893;
+
+#pragma mark License URL
+
+NSString * const kLicenseTitleOnENWiki =
+    
@"Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License";
+
+#pragma mark Private properties
+
+@interface LegalFooterViewController ()
+
+@property (nonatomic, weak) IBOutlet PaddedLabel *licenseLabel;
+@property (nonatomic, weak) IBOutlet UIImageView *wordmarkImageView;
+
+@end
+
+@implementation LegalFooterViewController
+
+#pragma mark Setup / view lifecycle
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    self.licenseLabel.attributedText = [self getAttributedStringForLicense];   
 
+    [self adjustConstraintsScaleForViews:@[self.licenseLabel]];
+}
+
+#pragma mark Style
+
+-(NSAttributedString *)getAttributedStringForLicense
+{
+    NSDictionary *baseStyle =
+    @{
+      NSForegroundColorAttributeName : [UIColor 
wmf_colorWithHex:kLicenseTextColor alpha:1.0],
+      NSFontAttributeName : [UIFont systemFontOfSize:kLicenseFontSize * 
MENUS_SCALE_MULTIPLIER]
+      };
+
+    NSString *footerText = MWLocalizedString(@"license-footer-text", nil);
+        
+    return
+    [footerText attributedStringWithAttributes: baseStyle
+                           substitutionStrings: 
@[MWLocalizedString(@"license-footer-name", nil)]
+                        substitutionAttributes: 
@[@{NSForegroundColorAttributeName : [UIColor 
wmf_colorWithHex:kLicenseNameColor alpha:1.0]}]];
+}
+
+#pragma mark Tap gesture handling
+
+-(IBAction)licenseTapped:(id)sender
+{
+    MWKSite *site = [[MWKSite alloc] initWithDomain:@"wikipedia.org" 
language:@"en"];
+    [NAV loadArticleWithTitle: [site titleWithString:kLicenseTitleOnENWiki]
+                     animated: NO
+              discoveryMethod: MWK_DISCOVERY_METHOD_SEARCH
+                   popToWebVC: YES];
+}
+
+#pragma mark Memory
+
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+}
+
+@end
diff --git a/wikipedia/View 
Controllers/WebView/Footers/Legal/LegalFooterViewController.xib 
b/wikipedia/View Controllers/WebView/Footers/Legal/LegalFooterViewController.xib
new file mode 100644
index 0000000..004cb5f
--- /dev/null
+++ b/wikipedia/View 
Controllers/WebView/Footers/Legal/LegalFooterViewController.xib
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" 
toolsVersion="6254" systemVersion="14C109" targetRuntime="iOS.CocoaTouch" 
propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" 
version="6247"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" 
userLabel="File's Owner" customClass="LegalFooterViewController">
+            <connections>
+                <outlet property="licenseLabel" destination="58r-oL-D8g" 
id="nlZ-cj-cF7"/>
+                <outlet property="view" destination="i5M-Pr-FkT" 
id="sfx-zR-JGt"/>
+                <outlet property="wordmarkImageView" destination="aOI-9i-zmL" 
id="BXA-Y3-gb0"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" 
customClass="UIResponder"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" 
id="i5M-Pr-FkT">
+            <rect key="frame" x="0.0" y="0.0" width="284" height="77"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" 
heightSizable="YES"/>
+            <subviews>
+                <imageView userInteractionEnabled="NO" 
contentMode="scaleAspectFit" horizontalHuggingPriority="251" 
verticalHuggingPriority="251" image="WikipediaWordmark" 
translatesAutoresizingMaskIntoConstraints="NO" id="aOI-9i-zmL">
+                    <rect key="frame" x="86" y="10" width="112" height="16"/>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" 
colorSpace="calibratedWhite"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="16" 
id="PZB-PN-taU"/>
+                        <constraint firstAttribute="width" constant="112" 
id="UcN-ol-35C"/>
+                    </constraints>
+                </imageView>
+                <label opaque="NO" contentMode="left" 
horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" 
textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" 
baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
translatesAutoresizingMaskIntoConstraints="NO" id="58r-oL-D8g" 
customClass="PaddedLabel">
+                    <rect key="frame" x="27" y="36" width="231" height="21"/>
+                    <gestureRecognizers/>
+                    <fontDescription key="fontDescription" type="system" 
pointSize="10"/>
+                    <color key="textColor" 
cocoaTouchSystemColor="darkTextColor"/>
+                    <nil key="highlightedColor"/>
+                    <connections>
+                        <outletCollection property="gestureRecognizers" 
destination="nPt-LV-uzV" appends="YES" id="Y7z-YD-FwN"/>
+                    </connections>
+                </label>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" 
colorSpace="calibratedWhite"/>
+            <constraints>
+                <constraint firstItem="58r-oL-D8g" firstAttribute="top" 
secondItem="aOI-9i-zmL" secondAttribute="bottom" constant="10" id="1Ve-Eu-ZaU"/>
+                <constraint firstAttribute="bottom" secondItem="58r-oL-D8g" 
secondAttribute="bottom" constant="20" id="C8W-en-Vy8"/>
+                <constraint firstItem="aOI-9i-zmL" firstAttribute="top" 
secondItem="i5M-Pr-FkT" secondAttribute="top" constant="10" id="W9I-lT-54a"/>
+                <constraint firstAttribute="centerX" secondItem="aOI-9i-zmL" 
secondAttribute="centerX" id="ecI-L1-uR4"/>
+                <constraint firstAttribute="trailing" secondItem="58r-oL-D8g" 
secondAttribute="trailing" constant="26" id="eix-Vq-gWR"/>
+                <constraint firstItem="58r-oL-D8g" firstAttribute="leading" 
secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="27" 
id="seG-Ke-gDp"/>
+            </constraints>
+            <nil key="simulatedStatusBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <point key="canvasLocation" x="419" y="212.5"/>
+        </view>
+        <tapGestureRecognizer id="nPt-LV-uzV">
+            <connections>
+                <action selector="licenseTapped:" destination="-1" 
id="XLl-8B-uIa"/>
+            </connections>
+        </tapGestureRecognizer>
+    </objects>
+    <resources>
+        <image name="WikipediaWordmark" width="112" height="17"/>
+    </resources>
+</document>
diff --git a/wikipedia/View 
Controllers/WebView/Footers/Options/OptionsFooterViewController.h 
b/wikipedia/View 
Controllers/WebView/Footers/Options/OptionsFooterViewController.h
new file mode 100644
index 0000000..c38538c
--- /dev/null
+++ b/wikipedia/View 
Controllers/WebView/Footers/Options/OptionsFooterViewController.h
@@ -0,0 +1,12 @@
+//  Created by Monte Hurd on 2/24/15.
+//  Copyright (c) 2015 Wikimedia Foundation. Provided under MIT-style license; 
please copy and modify!
+
+#import <UIKit/UIKit.h>
+
+@interface OptionsFooterViewController : UIViewController
+
+-(void)updateLanguageCount:(NSInteger)count;
+
+-(void)updateLastModifiedDate:(NSDate *)date userName:(NSString *)userName;
+
+@end
diff --git a/wikipedia/View 
Controllers/WebView/Footers/Options/OptionsFooterViewController.m 
b/wikipedia/View 
Controllers/WebView/Footers/Options/OptionsFooterViewController.m
new file mode 100644
index 0000000..8d85939
--- /dev/null
+++ b/wikipedia/View 
Controllers/WebView/Footers/Options/OptionsFooterViewController.m
@@ -0,0 +1,180 @@
+//  Created by Monte Hurd on 2/24/15.
+//  Copyright (c) 2015 Wikimedia Foundation. Provided under MIT-style license; 
please copy and modify!
+
+#import "OptionsFooterViewController.h"
+#import "PaddedLabel.h"
+#import "WikipediaAppUtils.h"
+#import "MWLanguageInfo.h"
+#import "WikiGlyph_Chars.h"
+#import "WikiGlyphLabel.h"
+#import "WMF_Colors.h"
+#import "Defines.h"
+#import "NSObject+ConstraintsScale.h"
+#import "NSString+FormattedAttributedString.h"
+#import "UIColor+WMFHexColor.h"
+#import "UIViewController+ModalPresent.h"
+#import "LanguagesViewController.h"
+
+#pragma mark Font sizes
+
+static const CGFloat kGlyphButtonFontSize = 23.0f;
+static const CGFloat kOptionTextFontSize = 15.0f;
+static const CGFloat kOptionTextLineSpacing = 2.0f;
+
+#pragma mark Colors
+
+static const NSInteger kBaseTextColor = 0x565656;
+
+static const NSInteger kLastModGlyphBackgroundColor = 0x565656;
+static const NSInteger kLastModGlyphForgroundColor = 0xffffff;
+static const NSInteger kLastModTimestampColor = 0x565656;
+static const NSInteger kLastModUsernameColor = 0x565656;
+
+static const NSInteger kLangGlyphBackgroundColor = 0x565656;
+static const NSInteger kLangGlyphForgroundColor = 0xffffff;
+static const NSInteger kLangCountColor = 0x565656;
+
+#pragma mark Private properties
+
+@interface OptionsFooterViewController () <LanguageSelectionDelegate>
+
+@property (nonatomic, weak) IBOutlet WikiGlyphLabel *langGlyphLabel;
+@property (nonatomic, weak) IBOutlet PaddedLabel *langLabel;
+
+@property (nonatomic, weak) IBOutlet WikiGlyphLabel *lastModGlyphLabel;
+@property (nonatomic, weak) IBOutlet PaddedLabel *lastModLabel;
+
+@end
+
+@implementation OptionsFooterViewController
+
+#pragma mark Setup / view lifecycle
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    
+    [self roundGlyphButtonCorners];
+    
+    [self adjustConstraintsScaleForViews:
+        @[self.langGlyphLabel, self.langLabel, self.lastModGlyphLabel, 
self.lastModLabel]];
+}
+
+#pragma mark Style
+
+-(void)roundGlyphButtonCorners
+{
+    self.langGlyphLabel.layer.cornerRadius = 
self.langGlyphLabel.frame.size.width / 2.0f;
+    self.lastModGlyphLabel.layer.cornerRadius = 
self.langGlyphLabel.frame.size.width / 2.0f;
+    self.langGlyphLabel.clipsToBounds = YES;
+    self.lastModGlyphLabel.clipsToBounds = YES;
+}
+
+-(NSDictionary *)getOptionTextBaseAttributes
+{
+    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] 
init];
+    paragraphStyle.lineSpacing = kOptionTextLineSpacing * 
MENUS_SCALE_MULTIPLIER;
+    return @{
+             NSFontAttributeName : [UIFont 
systemFontOfSize:kOptionTextFontSize],
+             NSForegroundColorAttributeName : [UIColor 
wmf_colorWithHex:kBaseTextColor alpha:1.0],
+             NSParagraphStyleAttributeName : paragraphStyle
+             };
+}
+
+#pragma mark Language option
+
+-(void)updateLanguageCount:(NSInteger)count
+{
+    self.langGlyphLabel.backgroundColor = [UIColor 
wmf_colorWithHex:kLangGlyphBackgroundColor alpha:1.0];
+
+    [self.langGlyphLabel setWikiText: WIKIGLYPH_TRANSLATE
+                               color: [UIColor 
wmf_colorWithHex:kLangGlyphForgroundColor alpha:1.0]
+                                size: kGlyphButtonFontSize * 
MENUS_SCALE_MULTIPLIER
+                      baselineOffset: 1.7];
+
+    self.langLabel.attributedText = [self 
getAttributedStringForOptionLanguagesWithCount:count];
+}
+
+-(NSAttributedString 
*)getAttributedStringForOptionLanguagesWithCount:(NSInteger)count
+{
+    NSString *langButtonString = [MWLocalizedString(@"language-button-text", 
nil) stringByReplacingOccurrencesOfString:@"%d" withString:@"$1"];
+    
+    return
+    [langButtonString attributedStringWithAttributes: [self 
getOptionTextBaseAttributes]
+                  substitutionStrings: @[[NSString stringWithFormat:@"%ld", 
(long)count]]
+               substitutionAttributes: @[@{NSForegroundColorAttributeName : 
[UIColor wmf_colorWithHex:kLangCountColor alpha:1.0]}]];
+}
+
+#pragma mark Last modified option
+
+-(void)updateLastModifiedDate:(NSDate *)date userName:(NSString *)userName
+{
+    self.lastModLabel.attributedText = [self 
getAttributedStringForOptionLastModifiedByUserName:userName date:date];
+
+    self.lastModGlyphLabel.backgroundColor = [UIColor 
wmf_colorWithHex:kLastModGlyphBackgroundColor alpha:1.0];
+    [self.lastModGlyphLabel setWikiText: WIKIGLYPH_PENCIL
+                                  color: [UIColor 
wmf_colorWithHex:kLastModGlyphForgroundColor alpha:1.0]
+                                   size: kGlyphButtonFontSize * 
MENUS_SCALE_MULTIPLIER
+                         baselineOffset: 1.7];
+}
+
+-(NSAttributedString 
*)getAttributedStringForOptionLastModifiedByUserName:(NSString *)userName 
date:(NSDate *)date
+{
+    NSString *relativeTimeStamp = [WikipediaAppUtils relativeTimestamp:date];
+    NSString *lastModString = userName ? 
MWLocalizedString(@"lastmodified-by-user", nil) : 
MWLocalizedString(@"lastmodified-by-anon", nil);
+
+    return
+    [lastModString attributedStringWithAttributes: [self 
getOptionTextBaseAttributes]
+                              substitutionStrings: @[relativeTimeStamp, 
(userName ? userName : @"")]
+                           substitutionAttributes: @[
+                                                     
@{NSForegroundColorAttributeName : [UIColor 
wmf_colorWithHex:kLastModTimestampColor alpha:1.0]},
+                                                     
@{NSForegroundColorAttributeName : [UIColor 
wmf_colorWithHex:kLastModUsernameColor alpha:1.0]}
+                                                     ]];
+}
+
+#pragma mark Tap gesture handling
+
+-(IBAction)historyOptionTapped:(id)sender
+{
+    [self performModalSequeWithID: @"modal_segue_show_page_history"
+                  transitionStyle: UIModalTransitionStyleCoverVertical
+                            block: nil];
+}
+
+-(IBAction)languagesOptionTapped:(id)sender
+{
+    [self performModalSequeWithID: @"modal_segue_show_languages"
+                  transitionStyle: UIModalTransitionStyleCoverVertical
+                            block: ^(LanguagesViewController *languagesVC){
+                                languagesVC.downloadLanguagesForCurrentArticle 
= YES;
+                                languagesVC.invokingVC = self;
+                                languagesVC.languageSelectionDelegate = self;
+                            }];
+}
+
+#pragma mark LanguageSelectionDelegate
+
+- (void)languageSelected:(NSDictionary *)langData 
sender:(LanguagesViewController *)sender
+{
+    MWKSite *site = [[MWKSite alloc] initWithDomain:@"wikipedia.org" 
language:langData[@"code"]];
+    MWKTitle *title = [site titleWithString:langData[@"*"]];
+    [NAV loadArticleWithTitle: title
+                     animated: NO
+              discoveryMethod: MWK_DISCOVERY_METHOD_SEARCH
+                   popToWebVC: YES];
+
+    [self dismissLanguagePicker];
+}
+
+-(void)dismissLanguagePicker
+{
+    [self.presentedViewController dismissViewControllerAnimated: YES
+                                                     completion: ^{}];
+}
+
+#pragma mark Memory
+
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+}
+
+@end
diff --git a/wikipedia/View 
Controllers/WebView/Footers/Options/OptionsFooterViewController.xib 
b/wikipedia/View 
Controllers/WebView/Footers/Options/OptionsFooterViewController.xib
new file mode 100644
index 0000000..8a99f97
--- /dev/null
+++ b/wikipedia/View 
Controllers/WebView/Footers/Options/OptionsFooterViewController.xib
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" 
toolsVersion="6254" systemVersion="14C109" targetRuntime="iOS.CocoaTouch" 
propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" 
version="6247"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" 
userLabel="File's Owner" customClass="OptionsFooterViewController">
+            <connections>
+                <outlet property="langGlyphLabel" destination="mm1-rF-r8c" 
id="eHM-Ys-X0g"/>
+                <outlet property="langLabel" destination="RCb-pP-PhF" 
id="RwU-vV-bHC"/>
+                <outlet property="lastModGlyphLabel" destination="zuf-2Y-bSx" 
id="izt-ft-K21"/>
+                <outlet property="lastModLabel" destination="GB1-DG-j0o" 
id="EWQ-ta-h5P"/>
+                <outlet property="view" destination="i5M-Pr-FkT" 
id="sfx-zR-JGt"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" 
customClass="UIResponder"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" 
id="i5M-Pr-FkT">
+            <rect key="frame" x="0.0" y="0.0" width="304" height="179"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" 
heightSizable="YES"/>
+            <subviews>
+                <view contentMode="scaleToFill" 
translatesAutoresizingMaskIntoConstraints="NO" id="co2-1E-fU5">
+                    <rect key="frame" x="20" y="30" width="264" height="129"/>
+                    <subviews>
+                        <label opaque="NO" contentMode="left" 
horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" 
textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" 
baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
translatesAutoresizingMaskIntoConstraints="NO" id="zuf-2Y-bSx" userLabel="Last 
Modified Glyph Label" customClass="WikiGlyphLabel">
+                            <rect key="frame" x="8" y="8" width="43" 
height="43"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="height" 
constant="43" id="DBA-Ac-KZs"/>
+                                <constraint firstAttribute="width" 
constant="43" id="Wb8-in-yps"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" 
type="system" pointSize="17"/>
+                            <color key="textColor" 
cocoaTouchSystemColor="darkTextColor"/>
+                            <nil key="highlightedColor"/>
+                            <connections>
+                                <outletCollection 
property="gestureRecognizers" destination="Ixc-vZ-ad3" appends="YES" 
id="3zp-ej-2fw"/>
+                            </connections>
+                        </label>
+                        <label opaque="NO" contentMode="left" 
horizontalHuggingPriority="252" text="" lineBreakMode="wordWrap" 
numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
translatesAutoresizingMaskIntoConstraints="NO" id="GB1-DG-j0o" userLabel="Last 
Modified Label" customClass="PaddedLabel">
+                            <rect key="frame" x="60" y="8" width="184" 
height="48"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="height" 
relation="greaterThanOrEqual" constant="40" id="E8z-Uj-bM6"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" 
type="system" pointSize="15"/>
+                            <color key="textColor" 
cocoaTouchSystemColor="darkTextColor"/>
+                            <nil key="highlightedColor"/>
+                            <connections>
+                                <outletCollection 
property="gestureRecognizers" destination="rdB-SV-e3J" appends="YES" 
id="iv1-bO-r19"/>
+                            </connections>
+                        </label>
+                        <label opaque="NO" contentMode="left" 
horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" 
textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" 
baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
translatesAutoresizingMaskIntoConstraints="NO" id="mm1-rF-r8c" 
userLabel="Languages Glyph Label" customClass="WikiGlyphLabel">
+                            <rect key="frame" x="8" y="69" width="43" 
height="43"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="width" 
constant="43" id="1OF-ck-n7z"/>
+                                <constraint firstAttribute="height" 
constant="43" id="au8-Qd-7NC"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" 
type="system" pointSize="17"/>
+                            <color key="textColor" 
cocoaTouchSystemColor="darkTextColor"/>
+                            <nil key="highlightedColor"/>
+                            <connections>
+                                <outletCollection 
property="gestureRecognizers" destination="eCb-H6-Jla" appends="YES" 
id="EWI-4Y-dFp"/>
+                            </connections>
+                        </label>
+                        <label opaque="NO" contentMode="left" 
horizontalHuggingPriority="252" verticalHuggingPriority="251" text="" 
lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" 
adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" 
id="RCb-pP-PhF" userLabel="Languages Label" customClass="PaddedLabel">
+                            <rect key="frame" x="60" y="69" width="184" 
height="40"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="height" 
relation="greaterThanOrEqual" constant="40" id="H8S-B1-j7y"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" 
type="system" pointSize="15"/>
+                            <color key="textColor" 
cocoaTouchSystemColor="darkTextColor"/>
+                            <nil key="highlightedColor"/>
+                            <connections>
+                                <outletCollection 
property="gestureRecognizers" destination="nOK-vf-TuE" appends="YES" 
id="4wl-b7-mos"/>
+                            </connections>
+                        </label>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" 
colorSpace="calibratedWhite"/>
+                    <constraints>
+                        <constraint firstItem="RCb-pP-PhF" 
firstAttribute="top" secondItem="GB1-DG-j0o" secondAttribute="bottom" 
constant="13" id="0Cm-Fg-Qam"/>
+                        <constraint firstItem="zuf-2Y-bSx" 
firstAttribute="top" secondItem="GB1-DG-j0o" secondAttribute="top" 
id="2H3-ZU-hGB"/>
+                        <constraint firstItem="zuf-2Y-bSx" 
firstAttribute="leading" secondItem="co2-1E-fU5" secondAttribute="leading" 
constant="8" id="69v-TI-8d2"/>
+                        <constraint firstItem="RCb-pP-PhF" 
firstAttribute="leading" secondItem="mm1-rF-r8c" secondAttribute="trailing" 
constant="9" id="7qx-sr-qnb"/>
+                        <constraint firstAttribute="trailing" 
secondItem="GB1-DG-j0o" secondAttribute="trailing" constant="20" 
id="Foq-yI-icN"/>
+                        <constraint firstItem="GB1-DG-j0o" 
firstAttribute="top" secondItem="co2-1E-fU5" secondAttribute="top" constant="8" 
id="JO3-S5-cKr"/>
+                        <constraint firstAttribute="trailing" 
secondItem="RCb-pP-PhF" secondAttribute="trailing" constant="20" 
id="SUp-Sj-HgM"/>
+                        <constraint firstAttribute="bottom" 
secondItem="RCb-pP-PhF" secondAttribute="bottom" constant="20" id="VQu-e1-5Hd"/>
+                        <constraint firstItem="GB1-DG-j0o" 
firstAttribute="leading" secondItem="zuf-2Y-bSx" secondAttribute="trailing" 
constant="9" id="buL-3h-2qy"/>
+                        <constraint firstItem="mm1-rF-r8c" 
firstAttribute="top" secondItem="RCb-pP-PhF" secondAttribute="top" 
id="dZS-zf-F0N"/>
+                        <constraint firstItem="mm1-rF-r8c" 
firstAttribute="leading" secondItem="co2-1E-fU5" secondAttribute="leading" 
constant="8" id="wOB-2y-Ecm"/>
+                    </constraints>
+                </view>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" 
colorSpace="calibratedWhite"/>
+            <constraints>
+                <constraint firstItem="co2-1E-fU5" firstAttribute="top" 
secondItem="i5M-Pr-FkT" secondAttribute="top" constant="30" id="7u2-fw-zub"/>
+                <constraint firstItem="co2-1E-fU5" firstAttribute="leading" 
secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="20" symbolic="YES" 
id="KFy-wE-jKj"/>
+                <constraint firstAttribute="bottom" secondItem="co2-1E-fU5" 
secondAttribute="bottom" constant="20" id="ehD-Kr-PJd"/>
+                <constraint firstAttribute="centerX" secondItem="co2-1E-fU5" 
secondAttribute="centerX" id="omS-GR-5T7"/>
+                <constraint firstAttribute="trailing" secondItem="co2-1E-fU5" 
secondAttribute="trailing" constant="20" symbolic="YES" id="xfd-uC-2hW"/>
+            </constraints>
+            <nil key="simulatedStatusBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <point key="canvasLocation" x="139" y="316.5"/>
+        </view>
+        <tapGestureRecognizer id="Ixc-vZ-ad3">
+            <connections>
+                <action selector="historyOptionTapped:" destination="-1" 
id="6bz-IO-pIr"/>
+            </connections>
+        </tapGestureRecognizer>
+        <tapGestureRecognizer id="rdB-SV-e3J">
+            <connections>
+                <action selector="historyOptionTapped:" destination="-1" 
id="DeI-ID-xLt"/>
+            </connections>
+        </tapGestureRecognizer>
+        <tapGestureRecognizer id="eCb-H6-Jla">
+            <connections>
+                <action selector="languagesOptionTapped:" destination="-1" 
id="Lcv-BJ-otW"/>
+            </connections>
+        </tapGestureRecognizer>
+        <tapGestureRecognizer id="nOK-vf-TuE">
+            <connections>
+                <action selector="languagesOptionTapped:" destination="-1" 
id="ysw-iR-JGk"/>
+            </connections>
+        </tapGestureRecognizer>
+    </objects>
+</document>
diff --git a/wikipedia/View 
Controllers/WebView/Footers/Suggestions/SuggestionsFooterViewController.h 
b/wikipedia/View 
Controllers/WebView/Footers/Suggestions/SuggestionsFooterViewController.h
new file mode 100644
index 0000000..9518e3b
--- /dev/null
+++ b/wikipedia/View 
Controllers/WebView/Footers/Suggestions/SuggestionsFooterViewController.h
@@ -0,0 +1,8 @@
+//  Created by Monte Hurd on 2/24/15.
+//  Copyright (c) 2015 Wikimedia Foundation. Provided under MIT-style license; 
please copy and modify!
+
+#import <UIKit/UIKit.h>
+
+@interface SuggestionsFooterViewController : UIViewController
+
+@end
diff --git a/wikipedia/View 
Controllers/WebView/Footers/Suggestions/SuggestionsFooterViewController.m 
b/wikipedia/View 
Controllers/WebView/Footers/Suggestions/SuggestionsFooterViewController.m
new file mode 100644
index 0000000..86babe7
--- /dev/null
+++ b/wikipedia/View 
Controllers/WebView/Footers/Suggestions/SuggestionsFooterViewController.m
@@ -0,0 +1,20 @@
+//  Created by Monte Hurd on 2/24/15.
+//  Copyright (c) 2015 Wikimedia Foundation. Provided under MIT-style license; 
please copy and modify!
+
+#import "SuggestionsFooterViewController.h"
+
+@interface SuggestionsFooterViewController ()
+
+@end
+
+@implementation SuggestionsFooterViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+}
+
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+}
+
+@end
diff --git a/wikipedia/View 
Controllers/WebView/Footers/Suggestions/SuggestionsFooterViewController.xib 
b/wikipedia/View 
Controllers/WebView/Footers/Suggestions/SuggestionsFooterViewController.xib
new file mode 100644
index 0000000..6de33f9
--- /dev/null
+++ b/wikipedia/View 
Controllers/WebView/Footers/Suggestions/SuggestionsFooterViewController.xib
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" 
toolsVersion="6254" systemVersion="14C109" targetRuntime="iOS.CocoaTouch" 
propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" 
version="6247"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" 
userLabel="File's Owner" customClass="SuggestionsFooterViewController">
+            <connections>
+                <outlet property="view" destination="i5M-Pr-FkT" 
id="sfx-zR-JGt"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" 
customClass="UIResponder"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" 
id="i5M-Pr-FkT">
+            <rect key="frame" x="0.0" y="0.0" width="343" height="336"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" 
heightSizable="YES"/>
+            <subviews>
+                <label opaque="NO" userInteractionEnabled="NO" 
contentMode="left" horizontalHuggingPriority="251" 
verticalHuggingPriority="251" text="This is just a placeholder for Corey's 
suggested article's." lineBreakMode="wordWrap" numberOfLines="0" 
baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
translatesAutoresizingMaskIntoConstraints="NO" id="dvv-tP-PxB">
+                    <rect key="frame" x="10" y="10" width="323" height="316"/>
+                    <color key="backgroundColor" white="1" alpha="1" 
colorSpace="calibratedWhite"/>
+                    <fontDescription key="fontDescription" type="system" 
pointSize="17"/>
+                    <color key="textColor" 
cocoaTouchSystemColor="darkTextColor"/>
+                    <nil key="highlightedColor"/>
+                </label>
+            </subviews>
+            <color key="backgroundColor" white="0.0" alpha="0.0" 
colorSpace="calibratedWhite"/>
+            <constraints>
+                <constraint firstItem="dvv-tP-PxB" firstAttribute="top" 
secondItem="i5M-Pr-FkT" secondAttribute="top" constant="10" id="BR4-yF-9nG"/>
+                <constraint firstAttribute="bottom" secondItem="dvv-tP-PxB" 
secondAttribute="bottom" constant="10" id="PMJ-1E-tqa"/>
+                <constraint firstItem="dvv-tP-PxB" firstAttribute="leading" 
secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="10" 
id="rD5-vP-BYn"/>
+                <constraint firstAttribute="trailing" secondItem="dvv-tP-PxB" 
secondAttribute="trailing" constant="10" id="v5e-k7-jpb"/>
+            </constraints>
+            <nil key="simulatedStatusBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <point key="canvasLocation" x="174.5" y="269"/>
+        </view>
+    </objects>
+</document>
diff --git a/wikipedia/View 
Controllers/WebView/WebViewBottomTrackingContainerView.h b/wikipedia/View 
Controllers/WebView/WebViewBottomTrackingContainerView.h
new file mode 100644
index 0000000..6c5ed93
--- /dev/null
+++ b/wikipedia/View Controllers/WebView/WebViewBottomTrackingContainerView.h
@@ -0,0 +1,12 @@
+//  Created by Monte Hurd on 2/24/15.
+//  Copyright (c) 2015 Wikimedia Foundation. Provided under MIT-style license; 
please copy and modify!
+
+#import <UIKit/UIKit.h>
+
+@interface WebViewBottomTrackingContainerView : UIView
+
+@property (nonatomic, readonly) CGFloat height;
+
+- (id)initWithHeight:(CGFloat)height;
+
+@end
diff --git a/wikipedia/View 
Controllers/WebView/WebViewBottomTrackingContainerView.m b/wikipedia/View 
Controllers/WebView/WebViewBottomTrackingContainerView.m
new file mode 100644
index 0000000..88efd08
--- /dev/null
+++ b/wikipedia/View Controllers/WebView/WebViewBottomTrackingContainerView.m
@@ -0,0 +1,27 @@
+//  Created by Monte Hurd on 2/24/15.
+//  Copyright (c) 2015 Wikimedia Foundation. Provided under MIT-style license; 
please copy and modify!
+
+#import "WebViewBottomTrackingContainerView.h"
+
+@interface WebViewBottomTrackingContainerView()
+
+@property (nonatomic) CGFloat height;
+
+@end
+
+@implementation WebViewBottomTrackingContainerView
+
+- (instancetype)initWithHeight:(CGFloat)height
+{
+    self = [super init];
+    if (self) {
+        self.height = height;
+    }
+    return self;
+}
+
+- (CGSize)intrinsicContentSize {
+    return CGSizeMake(UIViewNoIntrinsicMetric, self.height);
+}
+
+@end
diff --git a/wikipedia/View Controllers/WebView/WebViewController.m 
b/wikipedia/View Controllers/WebView/WebViewController.m
index 81eccb9..37330b3 100644
--- a/wikipedia/View Controllers/WebView/WebViewController.m
+++ b/wikipedia/View Controllers/WebView/WebViewController.m
@@ -40,6 +40,8 @@
     [super viewDidLoad];
 
     [self setupLeadImageContainer];
+    [self setupFooterContainer];
+    [self setupFooterSubContainers];
 
     session = [SessionSingleton sharedInstance];
     
@@ -290,6 +292,8 @@
 
 #pragma mark Scroll indicator
 
+static const CGFloat kScrollIndicatorMinYMargin = 4.0f;
+
 -(void)scrollIndicatorSetup
 {
     self.scrollIndicatorView = [[UIView alloc] init];
@@ -312,8 +316,10 @@
                                     toItem: self.webView
                                  attribute: NSLayoutAttributeTop
                                 multiplier: 1.0
-                                  constant: 0.0];
+                                  constant: kScrollIndicatorMinYMargin];
 
+    self.scrollIndicatorViewTopConstraint.priority = 
UILayoutPriorityDefaultLow;
+    
     [self.view addConstraint:self.scrollIndicatorViewTopConstraint];
 
     [self.view addConstraint:[NSLayoutConstraint constraintWithItem: 
self.scrollIndicatorView
@@ -331,7 +337,15 @@
                                                           attribute: 
NSLayoutAttributeNotAnAttribute
                                                          multiplier: 1.0
                                                            constant: 
SCROLL_INDICATOR_WIDTH]];
-    
+
+    [self.view addConstraint:[NSLayoutConstraint constraintWithItem: 
self.scrollIndicatorView
+                                                          attribute: 
NSLayoutAttributeBottom
+                                                          relatedBy: 
NSLayoutRelationLessThanOrEqual
+                                                             toItem: 
self.webView
+                                                          attribute: 
NSLayoutAttributeBottom
+                                                         multiplier: 1.0
+                                                           constant: 
-kScrollIndicatorMinYMargin]];
+
     self.scrollIndicatorViewHeightConstraint =
     [NSLayoutConstraint constraintWithItem: self.scrollIndicatorView
                                  attribute: NSLayoutAttributeHeight
@@ -344,14 +358,20 @@
     [self.view addConstraint:self.scrollIndicatorViewHeightConstraint];
 }
 
+-(CGFloat)bottomMostNativeSubContainerY
+{
+    UIView *lastSubContainer = [self.footerContainer.subviews lastObject];
+    return lastSubContainer.frame.origin.y;
+}
+
 -(void)scrollIndicatorMove
 {
-    CGFloat f = self.webView.scrollView.contentSize.height - 
BOTTOM_SCROLL_LIMIT_HEIGHT;
+    CGFloat f = self.webView.scrollView.contentSize.height - 
kBottomScrollSpacerHeight + [self bottomMostNativeSubContainerY];
     if (f == 0) f = 0.00001f;
     //self.scrollIndicatorView.alpha = [self tocDrawerIsOpen] ? 0.0f : 1.0f;
     CGFloat percent = self.webView.scrollView.contentOffset.y / f;
     //NSLog(@"percent = %f", percent);
-    self.scrollIndicatorViewTopConstraint.constant = percent * 
(self.bottomBarView.frame.origin.y - SCROLL_INDICATOR_HEIGHT) + 8.0;
+    self.scrollIndicatorViewTopConstraint.constant = percent * 
(self.bottomBarView.frame.origin.y - SCROLL_INDICATOR_HEIGHT) + 
kScrollIndicatorMinYMargin;
 }
 
 #pragma mark Sync config/ios.json if necessary
@@ -855,31 +875,6 @@
         }
     }];
     
-    [self.bridge addListener:@"langClicked" withBlock:^(NSString *messageType, 
NSDictionary *payload) {
-        WebViewController *strSelf = weakSelf;
-        if (!strSelf) { return; }
-
-        if([strSelf tocDrawerIsOpen]){
-            [strSelf tocHide];
-            return;
-        }
-
-        NSLog(@"Language button pushed");
-        [strSelf languageButtonPushed];
-    }];
-    
-    [self.bridge addListener:@"historyClicked" withBlock:^(NSString 
*messageType, NSDictionary *payload) {
-        WebViewController *strSelf = weakSelf;
-        if (!strSelf) { return; }
-
-        if([strSelf tocDrawerIsOpen]){
-            [strSelf tocHide];
-            return;
-        }
-
-        [strSelf historyButtonPushed];
-    }];
-    
     [self.bridge addListener:@"nonAnchorTouchEndedWithoutDragging" 
withBlock:^(NSString *messageType, NSDictionary *payload) {
         WebViewController *strSelf = weakSelf;
         if (!strSelf) { return; }
@@ -1093,9 +1088,9 @@
     // When trying to scroll the bottom of the web view article all the way to
     // the top, this is the minimum amount that will be allowed to be onscreen
     // before we limit scrolling.
-    CGFloat onscreenMinHeight = 210;
+    CGFloat onscreenMinHeight = -[self bottomMostNativeSubContainerY];
     
-    CGFloat offsetMaxY = BOTTOM_SCROLL_LIMIT_HEIGHT + onscreenMinHeight;
+    CGFloat offsetMaxY = kBottomScrollSpacerHeight + onscreenMinHeight;
     
     if ((webScrollView.contentSize.height - webScrollView.contentOffset.y) < 
offsetMaxY){
         CGPoint p = CGPointMake(webScrollView.contentOffset.x,
@@ -1575,10 +1570,10 @@
     }
     
     if (![[SessionSingleton sharedInstance] isCurrentArticleMain]) {
-        [sectionTextArray addObject: [self renderFooterDivider]];
-        [sectionTextArray addObject: [self renderLastModified:lastModified 
by:lastModifiedBy]];
-        [sectionTextArray addObject: [self renderLanguageButtonForCount: 
langCount]];
-        [sectionTextArray addObject: [self renderLicenseFooter]];
+        NSString *lastModifiedByUserName =
+        (lastModifiedBy && !lastModifiedBy.anonymous) ? lastModifiedBy.name : 
nil;
+        [self.footerOptionsController updateLanguageCount:langCount];
+        [self.footerOptionsController updateLastModifiedDate:lastModified 
userName:lastModifiedByUserName];
     }
     
     // This is important! Ensures bottom of web view article can be scrolled 
closer to the top of
@@ -1586,7 +1581,7 @@
     // Note: had to add "px" to the height because we added "<!DOCTYPE html>" 
to the top
     // of the index.html - it won't actually give the div height w/o this now 
(no longer
     // using quirks mode now that doctype specified).
-    [sectionTextArray addObject: [NSString stringWithFormat:@"<div 
style='height:%dpx;background-color:white;'></div>", 
BOTTOM_SCROLL_LIMIT_HEIGHT]];
+    [sectionTextArray addObject: [NSString stringWithFormat:@"<div 
style='height:%dpx;background-color:white;'></div>", 
(int)kBottomScrollSpacerHeight]];
     
     // Join article sections text
     NSString *joint = @""; //@"<div style=\"height:20px;\"></div>";
@@ -1626,76 +1621,6 @@
         [self tocShowWithDuration:@0.0f];
     }
 }
-
--(NSString *)renderFooterDivider
-{
-    NSString *langCode = [[NSLocale preferredLanguages] objectAtIndex:0];
-    MWLanguageInfo *lang = [MWLanguageInfo languageInfoForCode:langCode];
-    NSString *dir = lang.dir;
-    return [NSString stringWithFormat:@"<hr class=\"mw-footer-divider\" 
dir=\"%@\">", dir];
-}
-
--(NSString *)renderLanguageButtonForCount:(NSInteger)count
-{
-    if (count > 0) {
-        NSString *langCode = [[NSLocale preferredLanguages] objectAtIndex:0];
-        MWLanguageInfo *lang = [MWLanguageInfo languageInfoForCode:langCode];
-        NSString *dir = lang.dir;
-
-        NSString *icon = WIKIGLYPH_TRANSLATE;
-        NSString *text = [NSString 
localizedStringWithFormat:MWLocalizedString(@"language-button-text", nil), 
(int)count];
-        
-        return [NSString stringWithFormat:@"<button id=\"mw-language-button\" 
dir=\"%@\" class=\"mw-language-button mw-footer-button\">"
-                                          @"<div>"
-                                          @"<span><span 
class=\"mw-footer-icon\">%@</span></span>"
-                                          @"<span>%@</span>"
-                                          @"</div>"
-                                          @"</button>", dir, icon, text];
-    } else {
-        return @"";
-    }
-}
-
--(NSString *)renderLastModified:(NSDate *)date by:(MWKUser *)user
-{
-    NSString *langCode = [[NSLocale preferredLanguages] objectAtIndex:0];
-    MWLanguageInfo *lang = [MWLanguageInfo languageInfoForCode:langCode];
-    NSString *dir = lang.dir;
-    NSString *icon = WIKIGLYPH_PENCIL;
-
-    NSString *ts = [WikipediaAppUtils relativeTimestamp:date];
-    NSString *recent = (fabs([date timeIntervalSinceNow]) < 60*60*24) ? 
@"recent" : @"";
-    NSString *lm;
-    if (user && !user.anonymous) {
-        lm = [[MWLocalizedString(@"lastmodified-by-user", nil)
-               stringByReplacingOccurrencesOfString:@"$1" withString:ts]
-                stringByReplacingOccurrencesOfString:@"$2" 
withString:user.name];
-    } else {
-        lm = [MWLocalizedString(@"lastmodified-by-anon", nil)
-              stringByReplacingOccurrencesOfString:@"$1" withString:ts];
-    }
-
-    return [NSString stringWithFormat:@"<button id=\"mw-last-modified\" 
dir=\"%@\" class=\"mw-last-modified mw-footer-button %@\">"
-            @"<div>"
-            @"<span><span class=\"mw-footer-icon\">%@</span></span>"
-            @"<span>%@</span>"
-            @"</div>"
-            @"</button>", dir, recent, icon, lm];
-}
-
--(NSString *)renderLicenseFooter
-{
-    NSString *langCode = [[NSLocale preferredLanguages] objectAtIndex:0];
-    MWLanguageInfo *lang = [MWLanguageInfo languageInfoForCode:langCode];
-    NSString *dir = lang.dir;
-    
-    NSString *licenseName = MWLocalizedString(@"license-footer-name", nil);
-    NSString *licenseLink = [NSString stringWithFormat:@"<a 
href=\"https://en.m.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\";>%@</a>",
 licenseName];
-    NSString *licenseText = [MWLocalizedString(@"license-footer-text", nil) 
stringByReplacingOccurrencesOfString:@"$1" withString:licenseLink];
-    
-    return [NSString stringWithFormat:@"<div dir=\"%@\" 
class=\"mw-license-footer\">%@</div>", dir, licenseText];
-}
-
 
 #pragma mark Scroll to last section after rotate
 
@@ -1860,44 +1785,6 @@
                                        constant: 0];
 
     [self.view addConstraint:self.bottomBarViewBottomConstraint];
-}
-
-#pragma mark Languages
-
--(void)languageButtonPushed
-{
-    [self performModalSequeWithID: @"modal_segue_show_languages"
-                  transitionStyle: UIModalTransitionStyleCoverVertical
-                            block: ^(LanguagesViewController *languagesVC){
-                                languagesVC.downloadLanguagesForCurrentArticle 
= YES;
-                                languagesVC.invokingVC = self;
-                                languagesVC.languageSelectionDelegate = self;
-                            }];
-}
-
--(void)historyButtonPushed
-{
-    [self performModalSequeWithID: @"modal_segue_show_page_history"
-                  transitionStyle: UIModalTransitionStyleCoverVertical
-                            block: nil];
-}
-
-- (void)languageSelected:(NSDictionary *)langData 
sender:(LanguagesViewController *)sender
-{
-    MWKSite *site = [[MWKSite alloc] initWithDomain:@"wikipedia.org" 
language:langData[@"code"]];
-    MWKTitle *title = [site titleWithString:langData[@"*"]];
-    [NAV loadArticleWithTitle: title
-                     animated: NO
-              discoveryMethod: MWK_DISCOVERY_METHOD_SEARCH
-                   popToWebVC: YES];
-
-    [self dismissLanguagePicker];
-}
-
--(void)dismissLanguagePicker
-{
-    [self.presentedViewController dismissViewControllerAnimated: YES
-                                                     completion: ^{}];
 }
 
 -(void)showProtectedDialog
@@ -2151,18 +2038,8 @@
                                 action:@selector(didTouchLeadImage:)
                       forControlEvents:UIControlEventTouchUpInside];
 
-    // Because of autolayout weirdness with adding subview's to UIWebView's
-    // scrollview (which is done so we'll get scroll tracking and scaling
-    // when TOC appears for free), autoresizingMask is used - this also means
-    // we need to manually update leadImageContainer's frame on rotate - which
-    // is presently done in its "updateNonImageElements" method.
-    self.leadImageContainer.autoresizingMask =
-        (UIViewAutoresizingFlexibleLeftMargin | 
UIViewAutoresizingFlexibleWidth);
-    
-    [self.webView.scrollView addSubview:self.leadImageContainer];
-    
-    self.leadImageContainer.frame =
-        (CGRect){{0, 0}, {self.webView.scrollView.frame.size.width, 
LEAD_IMAGE_CONTAINER_HEIGHT}};
+    [self.webView wmf_addTrackingView: self.leadImageContainer
+                           atLocation: WMFTrackingViewLocationTop];
 }
 
 - (void)leadImageHeightChangedTo: (NSNumber *)height
@@ -2205,4 +2082,88 @@
     [self presentGalleryForArticle:session.article 
showingImage:session.article.image];
 }
 
+#pragma mark Footer container
+
+-(void)setupFooterContainer
+{
+    if (!self.footerContainer) {
+        self.footerContainer = [[WebViewBottomTrackingContainerView alloc] 
initWithHeight:kBottomScrollSpacerHeight];
+        self.footerContainer.backgroundColor = [UIColor lightGrayColor];
+        
+        [self.webView wmf_addTrackingView: self.footerContainer
+                               atLocation: WMFTrackingViewLocationBottom];
+    }
+}
+
+-(void)setupFooterSubContainers
+{
+    if (self.footerContainer.subviews.count == 0) {
+        
+        UIView*(^addSubContainer)() = ^UIView*() {
+            UIView *subContainer = [[UIView alloc] init];
+            //subContainer.layer.borderWidth = 1.0f;
+            //subContainer.layer.borderColor = [UIColor greenColor].CGColor;
+            subContainer.translatesAutoresizingMaskIntoConstraints = NO;
+            [self.footerContainer addSubview:subContainer];
+            [self.footerContainer addConstraints:
+             [NSLayoutConstraint constraintsWithVisualFormat: 
@"H:|[subContainer]|"
+                                                     options: 0
+                                                     metrics: nil
+                                                       views: 
@{@"subContainer": subContainer}]];
+            return subContainer;
+        };
+        
+        UIView *suggestionsContainer = addSubContainer();
+        UIView *optionsContainer = addSubContainer();
+        UIView *legalContainer = addSubContainer();
+        
+        NSDictionary *views =
+        @{
+          @"suggestionsContainer": suggestionsContainer,
+          @"optionsContainer": optionsContainer,
+          @"legalContainer": legalContainer
+          };
+        
+        [self.footerContainer addConstraints:
+         [NSLayoutConstraint constraintsWithVisualFormat: 
@"V:|[suggestionsContainer(240)][optionsContainer][legalContainer]"
+                                                 options: 0
+                                                 metrics: nil
+                                                   views: views]];
+        
+        SuggestionsFooterViewController *suggestionsController = 
[[SuggestionsFooterViewController alloc] init];
+        [self addChildController:suggestionsController 
toContainerView:suggestionsContainer];
+        
+        self.footerOptionsController = [[OptionsFooterViewController alloc] 
init];
+        [self addChildController:self.footerOptionsController 
toContainerView:optionsContainer];
+        
+        LegalFooterViewController *legalController = 
[[LegalFooterViewController alloc] init];
+        [self addChildController:legalController 
toContainerView:legalContainer];
+    }
+}
+
+- (void)addChildController: (UIViewController*)childController
+           toContainerView: (UIView *)containerView;
+{
+   [self addChildViewController:childController];
+   childController.view.translatesAutoresizingMaskIntoConstraints = NO;
+   [containerView addSubview:childController.view];
+
+    NSDictionary *views = @{
+        @"contentView": childController.view
+    };
+
+    [containerView addConstraints:
+     [NSLayoutConstraint constraintsWithVisualFormat: @"V:|[contentView]|"
+                                             options: 0
+                                             metrics: nil
+                                               views: views]];
+    [containerView addConstraints:
+     [NSLayoutConstraint constraintsWithVisualFormat: @"H:|[contentView]|"
+                                             options: 0
+                                             metrics: nil
+                                               views: views]];
+
+   [childController didMoveToParentViewController:self];
+}
+
 @end
diff --git a/wikipedia/View Controllers/WebView/WebViewController_Private.h 
b/wikipedia/View Controllers/WebView/WebViewController_Private.h
index 2a4a233..7b8fb97 100644
--- a/wikipedia/View Controllers/WebView/WebViewController_Private.h
+++ b/wikipedia/View Controllers/WebView/WebViewController_Private.h
@@ -60,6 +60,12 @@
 #import "UIFont+WMFStyle.h"
 #import "WebViewController+ImageGalleryPresentation.h"
 
+#import "UIWebView+WMFTrackingView.h"
+#import "SuggestionsFooterViewController.h"
+#import "OptionsFooterViewController.h"
+#import "LegalFooterViewController.h"
+#import "WebViewBottomTrackingContainerView.h"
+
 //#import "UIView+Debugging.h"
 
 #define TOC_TOGGLE_ANIMATION_DURATION @0.225f
@@ -72,7 +78,7 @@
 #define SCROLL_INDICATOR_BORDER_COLOR [UIColor lightGrayColor]
 #define SCROLL_INDICATOR_BACKGROUND_COLOR [UIColor whiteColor]
 
-#define BOTTOM_SCROLL_LIMIT_HEIGHT 2000
+static const CGFloat kBottomScrollSpacerHeight = 2000.0f;
 
 // This controls how fast the swipe has to be (side-to-side).
 #define TOC_SWIPE_TRIGGER_MIN_X_VELOCITY 600.0f
@@ -83,7 +89,7 @@
 
 static const int kMinimumTextSelectionLength = 10;
 
-@interface WebViewController () <LanguageSelectionDelegate>
+@interface WebViewController ()
 {
     CGFloat scrollViewDragBeganVerticalOffset_;
     SessionSingleton *session;
@@ -140,6 +146,9 @@
 
 @property (strong, nonatomic) LeadImageContainer *leadImageContainer;
 
+@property (strong, nonatomic) WebViewBottomTrackingContainerView 
*footerContainer;
+@property (strong, nonatomic) OptionsFooterViewController 
*footerOptionsController;
+
 @property (strong, nonatomic) IBOutlet NSLayoutConstraint 
*webViewBottomConstraint;
 
 @property (nonatomic) BOOL didLastNavigateByBackOrForward;
diff --git a/wikipedia/en.lproj/Localizable.strings 
b/wikipedia/en.lproj/Localizable.strings
index 1314d30..06f6b2e 100644
--- a/wikipedia/en.lproj/Localizable.strings
+++ b/wikipedia/en.lproj/Localizable.strings
@@ -206,8 +206,8 @@
 "timestamp-months" = "%d months ago";
 "timestamp-years" = "%d years ago";
 
-"lastmodified-by-user" = "Modified $1 by $2";
-"lastmodified-by-anon" = "Modified $1 by an anonymous user";
+"lastmodified-by-user" = "Edited $1 by $2";
+"lastmodified-by-anon" = "Edited $1 by an anonymous user";
 
 "button-next" = "Next";
 "button-done" = "Done";
diff --git a/www/Gruntfile.js b/www/Gruntfile.js
index b8e822b..d611ea6 100644
--- a/www/Gruntfile.js
+++ b/www/Gruntfile.js
@@ -32,7 +32,7 @@
           optimization: 2
         },
         files: [
-          { src: ["less/langbutton.less", "less/lastmod.less", 
"less/table.less"], dest: distFolder + "footer.css"},
+          { src: ["less/table.less"], dest: distFolder + "footer.css"},
           { src: ["less/styleoverrides.less"], dest: distFolder + 
"styleoverrides.css"}
         ]
       }
diff --git a/www/footer-divider-notch.png b/www/footer-divider-notch.png
deleted file mode 100644
index c0c0b80..0000000
--- a/www/footer-divider-notch.png
+++ /dev/null
Binary files differ
diff --git a/www/footer-divider.png b/www/footer-divider.png
deleted file mode 100644
index ea0728a..0000000
--- a/www/footer-divider.png
+++ /dev/null
Binary files differ
diff --git a/www/js/listeners.js b/www/js/listeners.js
index 78d6d8b..262fd6e 100644
--- a/www/js/listeners.js
+++ b/www/js/listeners.js
@@ -142,24 +142,13 @@
             }
          }
 
-    // Handle BUTTON tag taps.
     } else {
-        var buttonTarget = findParent(event.target, 'BUTTON');
-        if (buttonTarget && (buttonTarget.tagName === "BUTTON")){
-            if (buttonTarget.id === "mw-language-button") {
-                bridge.sendMessage( 'langClicked', {} );
-            }else if (buttonTarget.id === "mw-last-modified") {
-                bridge.sendMessage( 'historyClicked', {} );
-            }
-        } else {
-            // Do NOT prevent default behavior -- this is needed to for 
instance
-            // handle deselection of text.
-            bridge.sendMessage('nonAnchorTouchEndedWithoutDragging',
-                               {
-                                   id: event.target.getAttribute( "id" ),
-                                   tagName: event.target.tagName
-                               });
-        }
+         // Do NOT prevent default behavior -- this is needed to for instance
+         // handle deselection of text.
+         bridge.sendMessage('nonAnchorTouchEndedWithoutDragging', {
+                                id: event.target.getAttribute( "id" ),
+                                tagName: event.target.tagName
+                          });
     }
 }
 
diff --git a/www/less/langbutton.less b/www/less/langbutton.less
deleted file mode 100644
index aae8b95..0000000
--- a/www/less/langbutton.less
+++ /dev/null
@@ -1,81 +0,0 @@
-.mw-footer-divider {
-    appearance: none;
-    -webkit-appearance: none;
-    
-    display: block;
-    width: 100%;
-    height: 12px;
-
-    border: none;
-    background: url(footer-divider-notch.png) no-repeat,
-                url(footer-divider.png);
-    background-size: 60px 12px;
-       margin-top: 24px;
-}
-.mw-footer-divider[dir=rtl] {
-    -webkit-transform: scaleX(-1);
-    transform: scaleX(-1);
-}
-
-.mw-footer-button {
-       appearance: none;
-       -webkit-appearance: none;
-    
-    display: table;
-    width: 100%;
-
-    color: #333;
-    
-    padding: 12px;
-
-    margin-top: 20px;
-}
-.mw-footer-button + .mw-footer-button {
-       padding-top: 0;
-       margin-bottom: 12px;
-}
-.mw-footer-button>div {
-    display: table-row;
-}
-.mw-footer-button>div>span {
-    display: table-cell;
-       vertical-align: middle;
-}
-.mw-footer-icon {
-    display: inline-block;
-    vertical-align: text-top;
-    text-align: center;
-
-    width: 44px;
-    height: 44px;
-    border-radius: 22px;
-
-    font-family: "WikiFont-Glyphs";
-    font-size: 26px;
-    color: white;
-    background-color: #333;
-}
-.mw-footer-button[dir=ltr]>div>span
-{
-    text-align: left;
-    padding-left: 6px;
-}
-.mw-footer-button[dir=rtl]>div>span
-{
-    text-align: right;
-    padding-right: 6px;
-}
-.mw-footer-button>div>span+span
-{
-    padding-left: 12px;
-    padding-right: 12px;
-       line-height: 1.25em;
-}
-
-.mw-license-footer
-{
-    text-align: center;
-    font-size: 10px;
-    margin-top: 24px;
-    margin-bottom: 24px;
-}
diff --git a/www/less/lastmod.less b/www/less/lastmod.less
deleted file mode 100644
index 43cf707..0000000
--- a/www/less/lastmod.less
+++ /dev/null
@@ -1,6 +0,0 @@
-.mw-last-modified.recent {
-       color: #27aa65;
-}
-.mw-last-modified.recent .mw-footer-icon {
-    background-color: #27aa65;
-}

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I60f1ac5b9ffbe5eb1e75c0d30926063a884019c0
Gerrit-PatchSet: 20
Gerrit-Project: apps/ios/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mhurd <[email protected]>
Gerrit-Reviewer: Bgerstle <[email protected]>
Gerrit-Reviewer: Dr0ptp4kt <[email protected]>
Gerrit-Reviewer: Fjalapeno <[email protected]>
Gerrit-Reviewer: Mhurd <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to