Mhurd has uploaded a new change for review.
https://gerrit.wikimedia.org/r/148445
Change subject: Restyle abuse filter warning/disallow screen.
......................................................................
Restyle abuse filter warning/disallow screen.
Change-Id: I056ed6110745c0b95b3e12dcb1166f1ad170486c
---
M Wikipedia.xcodeproj/project.pbxproj
M wikipedia/View Controllers/Navigation/Top/TopMenuViewController.m
A wikipedia/View Controllers/Preview/AbuseFilterAlert.h
A wikipedia/View Controllers/Preview/AbuseFilterAlert.m
M wikipedia/View Controllers/Preview/PreviewAndSaveViewController.m
M wikipedia/en.lproj/Localizable.strings
M wikipedia/qqq.lproj/Localizable.strings
7 files changed, 365 insertions(+), 44 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/ios/wikipedia
refs/changes/45/148445/1
diff --git a/Wikipedia.xcodeproj/project.pbxproj
b/Wikipedia.xcodeproj/project.pbxproj
index 47da97e..f122cff 100644
--- a/Wikipedia.xcodeproj/project.pbxproj
+++ b/Wikipedia.xcodeproj/project.pbxproj
@@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */
0400EB0318AAEEC60043ECE2 /*
UINavigationController+SearchNavStack.m in Sources */ = {isa = PBXBuildFile;
fileRef = 0400EB0218AAEEC60043ECE2 /* UINavigationController+SearchNavStack.m
*/; };
+ 04062607197DC1D1000BC084 /* AbuseFilterAlert.m in Sources */ =
{isa = PBXBuildFile; fileRef = 04062606197DC1D1000BC084 /* AbuseFilterAlert.m
*/; };
0406CEF618F8C390007EE43E /* LogEventOp.m in Sources */ = {isa =
PBXBuildFile; fileRef = 0406CEF518F8C390007EE43E /* LogEventOp.m */; };
04082B5318ADA25A00FAF3D6 /* text_field_x_circle_gray.png in
Resources */ = {isa = PBXBuildFile; fileRef = 04082B5118ADA25A00FAF3D6 /*
text_field_x_circle_gray.png */; };
04082B5518ADA25A00FAF3D6 /* [email protected] in
Resources */ = {isa = PBXBuildFile; fileRef = 04082B5218ADA25A00FAF3D6 /*
[email protected] */; };
@@ -186,6 +187,8 @@
/* Begin PBXFileReference section */
0400EB0118AAEEC60043ECE2 /*
UINavigationController+SearchNavStack.h */ = {isa = PBXFileReference;
fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
"UINavigationController+SearchNavStack.h"; sourceTree = "<group>"; };
0400EB0218AAEEC60043ECE2 /*
UINavigationController+SearchNavStack.m */ = {isa = PBXFileReference;
fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path =
"UINavigationController+SearchNavStack.m"; sourceTree = "<group>"; };
+ 04062605197DC1D1000BC084 /* AbuseFilterAlert.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
AbuseFilterAlert.h; sourceTree = "<group>"; };
+ 04062606197DC1D1000BC084 /* AbuseFilterAlert.m */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path
= AbuseFilterAlert.m; sourceTree = "<group>"; };
0406CEF418F8C390007EE43E /* LogEventOp.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
LogEventOp.h; sourceTree = "<group>"; };
0406CEF518F8C390007EE43E /* LogEventOp.m */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path
= LogEventOp.m; sourceTree = "<group>"; };
04082B5118ADA25A00FAF3D6 /* text_field_x_circle_gray.png */ =
{isa = PBXFileReference; lastKnownFileType = image.png; path =
text_field_x_circle_gray.png; sourceTree = "<group>"; };
@@ -1338,6 +1341,8 @@
04B0EA46190B2319007458AF /*
PreviewLicenseView.xib */,
04B0EA48190B2348007458AF /*
PreviewLicenseView.h */,
04B0EA49190B2348007458AF /*
PreviewLicenseView.m */,
+ 04062605197DC1D1000BC084 /* AbuseFilterAlert.h
*/,
+ 04062606197DC1D1000BC084 /* AbuseFilterAlert.m
*/,
);
path = Preview;
sourceTree = "<group>";
@@ -1906,6 +1911,7 @@
04F39590186CF80100B0D6FC /* TOCViewController.m
in Sources */,
04D75824189248E900CE2040 /*
DownloadLangLinksOp.m in Sources */,
04B91AA718E34BBC00FFAA1C /*
UIView+TemporaryAnimatedXF.m in Sources */,
+ 04062607197DC1D1000BC084 /* AbuseFilterAlert.m
in Sources */,
D4B0AE0819366A0A00F0AC90 /*
CreateAccountFunnel.m in Sources */,
04F27B7818FE0F2E00EDD838 /*
PageHistoryViewController.m in Sources */,
049B640C18AAF36200D98BD4 /*
UIViewController+SearchChildViewControllers.m in Sources */,
diff --git a/wikipedia/View Controllers/Navigation/Top/TopMenuViewController.m
b/wikipedia/View Controllers/Navigation/Top/TopMenuViewController.m
index 2e9c411..99b35af 100644
--- a/wikipedia/View Controllers/Navigation/Top/TopMenuViewController.m
+++ b/wikipedia/View Controllers/Navigation/Top/TopMenuViewController.m
@@ -427,14 +427,14 @@
@"H:|-(4)-[NAVBAR_BUTTON_X(50)]-(16)-[NAVBAR_LABEL]-(10)-[NAVBAR_BUTTON_DONE(50@250)]|";
break;
case NAVBAR_MODE_EDIT_WIKITEXT_WARNING:
- self.label.text =
MWLocalizedString(@"navbar-title-mode-edit-wikitext-warning", nil);
+ //self.label.text =
MWLocalizedString(@"navbar-title-mode-edit-wikitext-warning", nil);
self.navBarSubViewsHorizontalVFLString =
-
@"H:|-(4)-[NAVBAR_BUTTON_X(50)]-(16)-[NAVBAR_LABEL]-(10)-[NAVBAR_BUTTON_CHECK(60)]|";
+
@"H:|-(4)-[NAVBAR_BUTTON_ARROW_LEFT(50)]-(16)-[NAVBAR_LABEL]-(10)-[NAVBAR_BUTTON_SAVE(50@250)]|";
break;
case NAVBAR_MODE_EDIT_WIKITEXT_DISALLOW:
- self.label.text =
MWLocalizedString(@"navbar-title-mode-edit-wikitext-disallow", nil);
+ //self.label.text =
MWLocalizedString(@"navbar-title-mode-edit-wikitext-disallow", nil);
self.navBarSubViewsHorizontalVFLString =
- @"H:|-(4)-[NAVBAR_BUTTON_X(50)]-(10)-[NAVBAR_LABEL]-(60)-|";
+
@"H:|-(4)-[NAVBAR_BUTTON_ARROW_LEFT(50)]-(10)-[NAVBAR_LABEL]-(60)-|";
break;
case NAVBAR_MODE_EDIT_WIKITEXT_PREVIEW:
self.label.text = @"";
diff --git a/wikipedia/View Controllers/Preview/AbuseFilterAlert.h
b/wikipedia/View Controllers/Preview/AbuseFilterAlert.h
new file mode 100644
index 0000000..38feb7b
--- /dev/null
+++ b/wikipedia/View Controllers/Preview/AbuseFilterAlert.h
@@ -0,0 +1,17 @@
+// Created by Monte Hurd on 7/21/14.
+// Copyright (c) 2014 Wikimedia Foundation. Provided under MIT-style license;
please copy and modify!
+
+#import "TabularScrollView.h"
+
+typedef NS_ENUM(NSInteger, AbuseFilterAlertType) {
+ ABUSE_FILTER_WARNING,
+ ABUSE_FILTER_DISALLOW
+};
+
+@interface AbuseFilterAlert : TabularScrollView
+
+- (id)initWithType: (AbuseFilterAlertType) alertType;
+
+@property (nonatomic, readonly) AbuseFilterAlertType alertType;
+
+@end
diff --git a/wikipedia/View Controllers/Preview/AbuseFilterAlert.m
b/wikipedia/View Controllers/Preview/AbuseFilterAlert.m
new file mode 100644
index 0000000..0b931bc
--- /dev/null
+++ b/wikipedia/View Controllers/Preview/AbuseFilterAlert.m
@@ -0,0 +1,294 @@
+// Created by Monte Hurd on 7/21/14.
+// Copyright (c) 2014 Wikimedia Foundation. Provided under MIT-style license;
please copy and modify!
+
+#import "AbuseFilterAlert.h"
+#import "PaddedLabel.h"
+#import "Defines.h"
+#import "WikiGlyphLabel.h"
+#import "WikiGlyph_Chars.h"
+#import "WMF_Colors.h"
+#import "WikipediaAppUtils.h"
+
+typedef NS_ENUM(NSInteger, ViewType) {
+ VIEW_TYPE_ICON,
+ VIEW_TYPE_HEADING,
+ VIEW_TYPE_SUBHEADING,
+ VIEW_TYPE_ITEM
+};
+
+@interface AbuseFilterAlert ()
+
+@property (nonatomic, strong) NSMutableArray *subViews;
+
+@property (nonatomic, strong) NSMutableArray *subViewData;
+
+@end
+
+@implementation AbuseFilterAlert
+
+- (id)initWithType: (AbuseFilterAlertType) alertType
+{
+ self = [super init];
+ if (self) {
+ self.subViews = @[].mutableCopy;
+ self.subViewData = @[].mutableCopy;
+ self.backgroundColor = [UIColor whiteColor]; //CHROME_COLOR;
+ self.translatesAutoresizingMaskIntoConstraints = NO;
+ _alertType = alertType;
+ [self setupSubViewData];
+ [self makeSubViews];
+ self.minSubviewHeight = 40;
+ [self setTabularSubviews:self.subViews];
+ }
+ return self;
+}
+
+-(void) setupSubViewData
+{
+ [self.subViewData addObject:
+ @{
+ @"type": @(VIEW_TYPE_ICON),
+ @"string": ((self.alertType == ABUSE_FILTER_DISALLOW) ? WIKIGLYPH_X :
WIKIGLYPH_FLAG),
+ @"backgroundColor": ((self.alertType == ABUSE_FILTER_DISALLOW) ?
WMF_COLOR_RED : WMF_COLOR_ORANGE),
+ @"fontColor": [UIColor whiteColor],
+ @"fontSize": @((self.alertType == ABUSE_FILTER_DISALLOW) ? 74 : 70),
+ @"baselineOffset": @((self.alertType == ABUSE_FILTER_DISALLOW) ? 2.0 :
0.0)
+ }
+ ];
+
+ switch (self.alertType) {
+ case ABUSE_FILTER_WARNING:
+
+ [self.subViewData addObjectsFromArray:
+ @[
+ @{
+ @"type": @(VIEW_TYPE_HEADING),
+ @"string":
MWLocalizedString(@"abuse-filter-warning-heading", nil),
+ @"backgroundColor": [UIColor whiteColor],
+ @"fontColor": [UIColor darkGrayColor],
+ @"fontSize": @(23),
+ @"baselineOffset": @(0)
+ },
+ @{
+ @"type": @(VIEW_TYPE_SUBHEADING),
+ @"string":
MWLocalizedString(@"abuse-filter-warning-subheading", nil),
+ @"backgroundColor": [UIColor whiteColor],
+ @"fontColor": [UIColor lightGrayColor],
+ @"fontSize": @(16),
+ @"baselineOffset": @(0)
+ },
+ @{
+ @"type": @(VIEW_TYPE_ITEM),
+ @"string": MWLocalizedString(@"abuse-filter-warning-caps",
nil),
+ @"backgroundColor": [UIColor whiteColor],
+ @"fontColor": [UIColor blackColor],
+ @"fontSize": @(16),
+ @"baselineOffset": @(0)
+ },
+ @{
+ @"type": @(VIEW_TYPE_ITEM),
+ @"string":
MWLocalizedString(@"abuse-filter-warning-blanking", nil),
+ @"backgroundColor": [UIColor whiteColor],
+ @"fontColor": [UIColor blackColor],
+ @"fontSize": @(16),
+ @"baselineOffset": @(0)
+ },
+ @{
+ @"type": @(VIEW_TYPE_ITEM),
+ @"string":
MWLocalizedString(@"abuse-filter-warning-irrelevant", nil),
+ @"backgroundColor": [UIColor whiteColor],
+ @"fontColor": [UIColor blackColor],
+ @"fontSize": @(16),
+ @"baselineOffset": @(0)
+ },
+ @{
+ @"type": @(VIEW_TYPE_ITEM),
+ @"string":
MWLocalizedString(@"abuse-filter-warning-repeat", nil),
+ @"backgroundColor": [UIColor whiteColor],
+ @"fontColor": [UIColor blackColor],
+ @"fontSize": @(16),
+ @"baselineOffset": @(0)
+ }
+ ]];
+
+ break;
+ case ABUSE_FILTER_DISALLOW:
+
+ [self.subViewData addObjectsFromArray:
+ @[
+ @{
+ @"type": @(VIEW_TYPE_HEADING),
+ @"string":
MWLocalizedString(@"abuse-filter-disallow-heading", nil),
+ @"backgroundColor": [UIColor whiteColor],
+ @"fontColor": [UIColor darkGrayColor],
+ @"fontSize": @(23),
+ @"baselineOffset": @(0)
+ },
+ @{
+ @"type": @(VIEW_TYPE_ITEM),
+ @"string":
MWLocalizedString(@"abuse-filter-disallow-unconstructive", nil),
+ @"backgroundColor": [UIColor whiteColor],
+ @"fontColor": [UIColor blackColor],
+ @"fontSize": @(16),
+ @"baselineOffset": @(0)
+ },
+ @{
+ @"type": @(VIEW_TYPE_ITEM),
+ @"string":
MWLocalizedString(@"abuse-filter-disallow-notable", nil),
+ @"backgroundColor": [UIColor whiteColor],
+ @"fontColor": [UIColor blackColor],
+ @"fontSize": @(16),
+ @"baselineOffset": @(0)
+ }
+ ]];
+
+ break;
+ default:
+ break;
+ }
+}
+
+-(void)makeSubViews
+{
+ for (NSDictionary *viewData in self.subViewData) {
+ NSNumber *type = viewData[@"type"];
+ switch (type.integerValue) {
+ case VIEW_TYPE_ICON:
+ {
+ UIView *view = [[UIView alloc] init];
+ view.backgroundColor = CHROME_COLOR;
+
+ WikiGlyphLabel *label = [[WikiGlyphLabel alloc] init];
+ label.translatesAutoresizingMaskIntoConstraints = NO;
+ label.textAlignment = NSTextAlignmentCenter;
+
+ label.backgroundColor = viewData[@"backgroundColor"];
+ NSNumber *fontSize = viewData[@"fontSize"];
+ NSNumber *baselineOffset = viewData[@"baselineOffset"];
+
+ [label setWikiText: viewData[@"string"]
+ color: viewData[@"fontColor"]
+ size: fontSize.floatValue
+ baselineOffset: baselineOffset.floatValue];
+
+ CGFloat iconHeight = 78.0;
+ label.layer.cornerRadius = iconHeight / 2.0;
+ label.clipsToBounds = YES;
+
+ [view addSubview:label];
+
+ NSDictionary *views = @{@"label": label, @"v1": view};
+ NSDictionary *metrics = @{@"iconHeight": @(iconHeight)};
+
+ [view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat: @"V:[v1(125)]"
+
options: 0
+
metrics: nil
+
views: views]];
+
+ [view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat: @"V:[label(iconHeight)]"
+
options: 0
+
metrics: metrics
+
views: views]];
+
+ [view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat: @"H:[label(iconHeight)]"
+
options: 0
+
metrics: metrics
+
views: views]];
+
+ [view addConstraint: [NSLayoutConstraint constraintWithItem:
label
+ attribute:
NSLayoutAttributeCenterX
+ relatedBy:
NSLayoutRelationEqual
+ toItem:
view
+ attribute:
NSLayoutAttributeCenterX
+ multiplier: 1
+ constant:
0]];
+
+ [view addConstraint: [NSLayoutConstraint constraintWithItem:
label
+ attribute:
NSLayoutAttributeCenterY
+ relatedBy:
NSLayoutRelationEqual
+ toItem:
view
+ attribute:
NSLayoutAttributeCenterY
+ multiplier: 1
+ constant:
0]];
+ [self.subViews addObject:view];
+ }
+ break;
+ default:
+ {
+ PaddedLabel *label = [[PaddedLabel alloc] init];
+ label.numberOfLines = 0;
+ label.lineBreakMode = NSLineBreakByWordWrapping;
+ label.translatesAutoresizingMaskIntoConstraints = NO;
+ label.backgroundColor = viewData[@"backgroundColor"];
+
+ CGFloat nonHeadingBottomSpacing = (self.alertType ==
ABUSE_FILTER_DISALLOW) ? 22 : 8;
+
+ label.padding = (type.integerValue == VIEW_TYPE_HEADING) ?
+ UIEdgeInsetsMake(21, 22, 21, 16)
+ :
+ UIEdgeInsetsMake(8, 22, nonHeadingBottomSpacing, 16);
+
+ [self setText:MWLocalizedString(viewData[@"string"], nil)
forLabel:label subViewData:viewData];
+
+ [self.subViews addObject:label];
+ }
+ break;
+ }
+ }
+}
+
+-(void)setText:(NSString *)text forLabel:(UILabel *)label
subViewData:(NSDictionary *)viewData
+{
+
+ NSNumber *type = viewData[@"type"];
+ NSNumber *size = viewData[@"fontSize"];
+ UIColor *color = viewData[@"fontColor"];
+ UIFont *font = (type.integerValue == VIEW_TYPE_HEADING) ?
+ [UIFont boldSystemFontOfSize:size.floatValue]
+ :
+ [UIFont systemFontOfSize:size.floatValue];
+ NSNumber *offset = viewData[@"baselineOffset"];
+
+ CGFloat kearning = 0.0;
+
+ NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]
init];
+
+ switch (type.integerValue) {
+ case VIEW_TYPE_HEADING:
+ paragraphStyle.lineSpacing = 3;
+ kearning = 0.4;
+ break;
+ case VIEW_TYPE_SUBHEADING:
+ paragraphStyle.lineSpacing = 2;
+ kearning = 0.0;
+ break;
+ default:
+ paragraphStyle.lineSpacing = 6;
+ kearning = 0.0;
+ break;
+ }
+
+ NSDictionary *attributes =
+ @{
+ NSFontAttributeName: font,
+ NSForegroundColorAttributeName : color,
+ NSBaselineOffsetAttributeName: offset,
+ NSKernAttributeName : @(kearning),
+ NSParagraphStyleAttributeName : paragraphStyle
+ };
+
+ label.attributedText =
+ [[NSAttributedString alloc] initWithString: text
+ attributes: attributes];
+}
+
+/*
+ // Only override drawRect: if you perform custom drawing.
+ // An empty implementation adversely affects performance during animation.
+ - (void)drawRect:(CGRect)rect
+ {
+ // Drawing code
+ }
+ */
+
+@end
diff --git a/wikipedia/View Controllers/Preview/PreviewAndSaveViewController.m
b/wikipedia/View Controllers/Preview/PreviewAndSaveViewController.m
index ff72324..fcd403f 100644
--- a/wikipedia/View Controllers/Preview/PreviewAndSaveViewController.m
+++ b/wikipedia/View Controllers/Preview/PreviewAndSaveViewController.m
@@ -31,6 +31,7 @@
#import "PreviewLicenseView.h"
#import "LoginViewController.h"
#import "UIScrollView+ScrollSubviewToLocation.h"
+#import "AbuseFilterAlert.h"
typedef enum {
CANNED_SUMMARY_TYPOS = 0,
@@ -628,12 +629,11 @@
// Hides the license panel. Needed if logged in and a
disallow is triggered.
[self.navigationController topActionSheetHide];
- NSString *restyledWarningHtml = [self
restyleAbuseFilterWarningHtml:warningHtml];
[self fadeAlert];
- [self showHTMLAlert: restyledWarningHtml
- bannerImage: [UIImage imageNamed:bannerImage]
- bannerColor: bannerColor
- ];
+ AbuseFilterAlertType alertType =
+ (error.code ==
WIKITEXT_UPLOAD_ERROR_ABUSEFILTER_DISALLOWED) ? ABUSE_FILTER_DISALLOW :
ABUSE_FILTER_WARNING;
+ [self showAbuseFilterAlertOfType:alertType];
+
});
}
break;
@@ -710,6 +710,25 @@
[QueuesSingleton sharedInstance].sectionWikiTextUploadQ.suspended = NO;
}
+-(void)showAbuseFilterAlertOfType:(AbuseFilterAlertType)alertType
+{
+ AbuseFilterAlert *abuseFilterAlert = [[AbuseFilterAlert alloc]
initWithType:alertType];
+
+ [self.view addSubview:abuseFilterAlert];
+
+ NSDictionary *views = @{@"abuseFilterAlert": abuseFilterAlert};
+
+ [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:
@"H:|[abuseFilterAlert]|"
+ options: 0
+ metrics:
nil
+ views:
views]];
+
+ [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:
@"V:|[abuseFilterAlert]|"
+ options: 0
+ metrics:
nil
+ views:
views]];
+}
+
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString: @"Preview_Captcha_Embed"]) {
@@ -764,41 +783,6 @@
-(void)captchaTextFieldDidChange:(UITextField *)textField
{
[self highlightCaptchaSubmitButton:(textField.text.length == 0) ? NO :
YES];
-}
-
-//TODO: this shouldn't be in the controller. Find it a nice home.
--(NSString *)restyleAbuseFilterWarningHtml:(NSString *)warningHtml
-{
- // Abuse filter warnings have html :( Re-style as best we can...
- return [NSString stringWithFormat:
- @"\
- <html>\
- <head>\
- <style>\
- *{\
- background-color:transparent!important;\
- border-color:transparent!important;\
- width:auto!important;\
- font:auto!important;\
- font-family:sans-serif!important;\
- font-size:14px!important;\
- color:rgb(85, 85, 85)!important;\
- line-height:22px!important;\
- text-align:left!important;\
- }\
-
td[style]{background-color:transparent!important;border-style:none!important;}\
- IMG{zoom:0.5;margin:20px}\
-
body{padding:21px!important;padding-top:16px!important;margin:0px!important;}\
- </style>\
- </head>\
- <body>\
- <div>\
- %@\
- </div>\
- </body>\
- </html>\
- ",
- warningHtml];
}
// BOOL userIsloggedIn = [SessionSingleton
sharedInstance].keychainCredentials.userName ? YES : NO;
diff --git a/wikipedia/en.lproj/Localizable.strings
b/wikipedia/en.lproj/Localizable.strings
index a58f959..92e3cab 100644
--- a/wikipedia/en.lproj/Localizable.strings
+++ b/wikipedia/en.lproj/Localizable.strings
@@ -180,3 +180,14 @@
"license-footer-name" = "CC BY-SA 3.0";
"table-of-contents-heading" = "Contents";
+
+"abuse-filter-warning-heading" = "This looks like an unconstructive edit, are
you sure you want to save it?";
+"abuse-filter-warning-subheading" = "Your edit may contain one or more of the
following:";
+"abuse-filter-warning-caps" = "Typing in all caps";
+"abuse-filter-warning-blanking" = "Blanking articles or spamming";
+"abuse-filter-warning-irrelevant" = "Irrelevant external links and images";
+"abuse-filter-warning-repeat" = "Repeating characters";
+
+"abuse-filter-disallow-heading" = "You cannot save this edit. Please go back
and change it.";
+"abuse-filter-disallow-unconstructive" = "An automated filter has identified
this edit as potentially unconstructive and potential vandalism.";
+"abuse-filter-disallow-notable" = "Wikipedia is an encyclopedia and only
neutral, notable content belongs here.";
diff --git a/wikipedia/qqq.lproj/Localizable.strings
b/wikipedia/qqq.lproj/Localizable.strings
index add9162..9b67e21 100644
--- a/wikipedia/qqq.lproj/Localizable.strings
+++ b/wikipedia/qqq.lproj/Localizable.strings
@@ -159,3 +159,12 @@
"main-menu-rate-app" = "Button text for showing the app in the app store so
user can rate the app";
"main-menu-terms-of-use" = "Button text for showing site terms of use";
"main-menu-show-today" = "Button text for showing mobile version of main page";
+"abuse-filter-warning-heading" = "Header text for unconstructive edit warning";
+"abuse-filter-warning-subheading" = "Subheading text for potentially
unconstructive edit warning";
+"abuse-filter-warning-caps" = "Label text for typing in all capitals";
+"abuse-filter-warning-blanking" = "Label text for blanking articles or
spamming";
+"abuse-filter-warning-irrelevant" = "Label text for irrelevant external links
and images";
+"abuse-filter-warning-repeat" = "Label text for repeating characters";
+"abuse-filter-disallow-heading" = "Header text for disallowed edit warning.";
+"abuse-filter-disallow-unconstructive" = "Label text for unconstructive edit
description";
+"abuse-filter-disallow-notable" = "Label text for notable content description";
--
To view, visit https://gerrit.wikimedia.org/r/148445
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I056ed6110745c0b95b3e12dcb1166f1ad170486c
Gerrit-PatchSet: 1
Gerrit-Project: apps/ios/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mhurd <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits