r114966 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r114965‎ | r114966 | r114967 >
Date:17:49, 19 April 2012
Author:catrope
Status:deferred
Tags:
Comment:
1.19wmf1: Update ArticleFeedbackv5 from git (wmf/1.20wmf1)
Modified paths:
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/ArticleFeedbackv5.flagging.php (modified) (history)
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/ArticleFeedbackv5.hooks.php (modified) (history)
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/ArticleFeedbackv5.i18n.php (modified) (history)
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/ArticleFeedbackv5.php (modified) (history)
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/SpecialArticleFeedbackv5.php (modified) (history)
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/api/ApiArticleFeedbackv5.php (modified) (history)
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/api/ApiArticleFeedbackv5Utils.php (modified) (history)
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/api/ApiViewFeedbackArticleFeedbackv5.php (modified) (history)
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.css (modified) (history)
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.js (modified) (history)
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.css (modified) (history)
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.js (modified) (history)
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/sql/ArticleFeedbackv5.sql (modified) (history)
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/sql/alter.sql (modified) (history)
  • /branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/sql/filter_count.sql (modified) (history)

Diff [purge]

Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/sql/ArticleFeedbackv5.sql
@@ -54,6 +54,7 @@
5555 af_is_unhidden boolean NOT NULL DEFAULT FALSE,
5656 af_is_undeleted boolean NOT NULL DEFAULT FALSE,
5757 af_is_declined boolean NOT NULL DEFAULT FALSE,
 58+ af_is_unrequested boolean NOT NULL DEFAULT FALSE,
5859 -- keep track of "this has a comment" for filtering purposes (avoids a join)
5960 af_has_comment boolean NOT NULL DEFAULT FALSE,
6061 -- Keep track of number of activities (hide/show/flag/unflag)
@@ -61,13 +62,14 @@
6263 -- should be equivalent to counting rows in logging table
6364 af_activity_count integer unsigned NOT NULL DEFAULT 0,
6465 af_suppress_count integer unsigned NOT NULL DEFAULT 0,
65 - -- keep the user id of the last hider and/or oversighter of the feedback
 66+ -- keep the user id of the status event of the feedback
6667 -- only registered users can do this, which is why no ips
67 - -- data used on the overlay of hidden/oversighted items
68 - af_hide_user_id integer unsigned NOT NULL DEFAULT 0,
69 - af_hide_timestamp binary(14) NOT NULL DEFAULT '',
70 - af_oversight_user_id integer unsigned NOT NULL DEFAULT 0,
71 - af_oversight_timestamp binary(14) NOT NULL DEFAULT ''
 68+ -- data used on the overlay status line
 69+ af_last_status varchar(16) NULL,
 70+ af_last_status_user_id integer unsigned NOT NULL DEFAULT 0,
 71+ af_last_status_timestamp binary(14) NOT NULL DEFAULT '',
 72+ -- flag if this was an autohide operation
 73+ af_is_autohide boolean NOT NULL DEFAULT FALSE
7274 ) /*$wgDBTableOptions*/;
7375 CREATE INDEX /*i*/af_page_user_token_id ON /*_*/aft_article_feedback (af_page_id, af_user_id, af_user_anon_token, af_id);
7476 CREATE INDEX /*i*/af_revision_id ON /*_*/aft_article_feedback (af_revision_id);
Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/sql/alter.sql
@@ -158,6 +158,27 @@
159159 UPDATE /*_*/aft_article_feedback SET af_experiment = CONCAT(af_form_id, 'E') WHERE DATE(af_created) > '2012-03-21' AND af_link_id = 5;
160160 UPDATE /*_*/aft_article_feedback SET af_experiment = CONCAT(af_form_id, '?') WHERE DATE(af_created) > '2012-03-21' AND af_link_id = 0;
161161
162 -
163162 -- Added 3/30 (emsmith)
164163 ALTER TABLE /*_*/aft_article_feedback ADD COLUMN af_suppress_count integer unsigned NOT NULL DEFAULT 0;
 164+
 165+-- Added 4/3 (emsmith)
 166+ALTER TABLE /*_*/aft_article_feedback ADD COLUMN af_last_status enum('hidden', 'autohide', 'unhidden', 'deleted', 'undeleted', 'request', 'unrequest', 'declined', 'autoflag') NULL;
 167+ALTER TABLE /*_*/aft_article_feedback ADD COLUMN af_last_status_user_id integer unsigned NOT NULL DEFAULT 0;
 168+ALTER TABLE /*_*/aft_article_feedback ADD COLUMN af_last_status_timestamp binary(14) NOT NULL DEFAULT '';
 169+
 170+UPDATE /*_*/aft_article_feedback SET af_last_status_timestamp = af_oversight_timestamp, af_last_status_user_id = af_oversight_user_id, af_last_status = 'deleted' WHERE af_is_deleted IS TRUE;
 171+UPDATE /*_*/aft_article_feedback SET af_last_status_timestamp = af_hide_timestamp, af_last_status_user_id = af_hide_user_id, af_last_status = 'hidden' WHERE af_is_hidden IS TRUE;
 172+
 173+ALTER TABLE /*_*/aft_article_feedback ADD COLUMN af_is_autohide BOOLEAN NOT NULL DEFAULT FALSE;
 174+ALTER TABLE /*_*/aft_article_feedback ADD COLUMN af_is_unrequested BOOLEAN NOT NULL DEFAULT FALSE;
 175+UPDATE /*_*/aft_article_feedback SET af_is_autohide = 1 WHERE af_is_hidden IS TRUE AND af_hide_user_id < 1;
 176+UPDATE /*_*/aft_article_feedback SET af_last_status = 'autohide' WHERE af_is_autohide IS TRUE;
 177+
 178+ALTER TABLE /*_*/aft_article_feedback DROP COLUMN af_hide_timestamp;
 179+ALTER TABLE /*_*/aft_article_feedback DROP COLUMN af_hide_user_id;
 180+ALTER TABLE /*_*/aft_article_feedback DROP COLUMN af_oversight_timestamp;
 181+ALTER TABLE /*_*/aft_article_feedback DROP COLUMN af_oversight_user_id;
 182+
 183+-- Added 4/17 (reha)
 184+ALTER TABLE /*_*/aft_article_feedback CHANGE COLUMN af_last_status af_last_status varchar(16) NULL;
 185+
Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/sql/filter_count.sql
@@ -1,35 +1,46 @@
22 DELETE FROM aft_article_filter_count;
33
4 -INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'all', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 GROUP BY af_page_id;
 4+-- visible-comment
 5+UPDATE aft_article_feedback, aft_article_answer SET af_has_comment = TRUE WHERE af_form_id = 1 AND af_id = aa_feedback_id AND aa_response_text IS NOT NULL;
 6+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'visible-comment', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_has_comment IS TRUE AND af_is_deleted IS FALSE AND af_is_hidden IS FALSE GROUP BY af_page_id;
57
6 -INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'notdeleted', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_deleted IS FALSE GROUP BY af_page_id;
 8+-- helpful
 9+UPDATE aft_article_feedback SET af_net_helpfulness = CONVERT(af_helpful_count, SIGNED) - CONVERT(af_unhelpful_count, SIGNED);
 10+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'visible-helpful', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_net_helpfulness > 0 AND af_is_deleted IS FALSE AND af_is_hidden IS FALSE GROUP BY af_page_id;
711
8 -INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'comment', COUNT(*) FROM aft_article_feedback, aft_article_answer WHERE af_form_id = 1 AND af_id = aa_feedback_id AND aa_response_text IS NOT NULL AND af_is_hidden IS FALSE AND af_is_deleted IS FALSE GROUP BY af_page_id;
 12+-- unhelpful
 13+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'visible-unhelpful', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_net_helpfulness > 0 AND af_is_deleted IS FALSE AND af_is_hidden IS FALSE GROUP BY af_page_id;
914
10 -INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'deleted', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_deleted IS TRUE GROUP BY af_page_id;
11 -INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'undeleted', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_deleted IS FALSE AND af_is_undeleted IS TRUE GROUP BY af_page_id;
 15+-- abusive
 16+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'visible-abusive', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_abuse_count > 0 AND af_is_deleted IS FALSE AND af_is_hidden IS FALSE GROUP BY af_page_id;
1217
13 -INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'visible', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_hidden IS FALSE AND af_is_deleted IS FALSE GROUP BY af_page_id;
14 -INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'invisible', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_hidden IS TRUE GROUP BY af_page_id;
15 -INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'unhidden', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_hidden IS FALSE AND af_is_unhidden IS TRUE GROUP BY af_page_id;
 18+-- hidden
 19+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'notdeleted-hidden', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_hidden IS TRUE AND af_is_deleted IS FALSE GROUP BY af_page_id;
 20+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'all-hidden', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_hidden IS TRUE GROUP BY af_page_id;
1621
17 -INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'abusive', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_abuse_count > 0 AND af_is_hidden IS FALSE AND af_is_deleted IS FALSE GROUP BY af_page_id;
 22+-- unhidden
 23+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'notdeleted-unhidden', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_unhidden IS TRUE AND af_is_deleted IS FALSE GROUP BY af_page_id;
 24+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'all-unhidden', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_unhidden IS TRUE GROUP BY af_page_id;
1825
19 -INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'needsoversight', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_oversight_count > 0 GROUP BY af_page_id;
 26+-- requested
 27+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'notdeleted-requested', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_oversight_count > 0 AND af_is_deleted IS FALSE GROUP BY af_page_id;
 28+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'all-requested', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_oversight_count > 0 GROUP BY af_page_id;
2029
21 -INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'declined', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_declined IS TRUE GROUP BY af_page_id;
 30+-- unrequested
 31+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'notdeleted-unrequested', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_unrequested IS TRUE AND af_is_deleted IS FALSE GROUP BY af_page_id;
 32+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'all-unrequested', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_unrequested IS TRUE GROUP BY af_page_id;
2233
23 -INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'helpful', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND CONVERT(af_helpful_count, SIGNED) - CONVERT(af_unhelpful_count, SIGNED) > 0 AND af_is_hidden IS FALSE AND af_is_deleted IS FALSE GROUP BY af_page_id;
24 -INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'unhelpful', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND CONVERT(af_helpful_count, SIGNED) - CONVERT(af_unhelpful_count, SIGNED) < 0 AND af_is_hidden IS FALSE AND af_is_deleted IS FALSE GROUP BY af_page_id;
 34+-- declined
 35+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'notdeleted-declined', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_declined IS TRUE AND af_is_deleted IS FALSE GROUP BY af_page_id;
 36+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'all-declined', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_declined IS TRUE GROUP BY af_page_id;
 37+
 38+-- oversighted
 39+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'all-oversighted', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_deleted IS TRUE GROUP BY af_page_id;
 40+
 41+-- unoversighted
 42+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'all-unoversighted', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_undeleted IS TRUE GROUP BY af_page_id;
 43+
 44+-- all/notdeleted/visible
 45+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'visible', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_deleted IS FALSE AND af_is_hidden IS FALSE GROUP BY af_page_id;
 46+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'notdeleted', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 AND af_is_deleted IS FALSE GROUP BY af_page_id;
 47+INSERT INTO aft_article_filter_count(afc_page_id, afc_filter_name, afc_filter_count) SELECT af_page_id, 'all', COUNT(*) FROM aft_article_feedback WHERE af_form_id = 1 GROUP BY af_page_id;
Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/ArticleFeedbackv5.flagging.php
@@ -76,13 +76,11 @@
7777 $filters = array();
7878 $update = array();
7979 $results = array();
 80+ $log = array();
8081
8182 // start
8283 $where = array( 'af_id' => $this->feedbackId );
8384
84 - // we may not actually use this, but don't want to repeat this a million times
85 - $default_user = wfMessage( 'articlefeedbackv5-default-user' )->text();
86 -
8785 // we use ONE db connection that talks to master
8886 $dbw = wfGetDB( DB_MASTER );
8987 $dbw->begin();
@@ -94,103 +92,264 @@
9593 if ( $record === false || !$record->af_id ) {
9694 // no-op, because this is already broken
9795 $error = 'articlefeedbackv5-invalid-feedback-id';
98 -
 96+ // deleting means to "mark as oversighted" and "delete" it
9997 } elseif ( 'delete' == $flag && $this->isAllowed( 'aftv5-delete-feedback' ) ) {
 98+ // oversight and optional autohide (if not hidden)
 99+ if ( $direction == 'increase' && !$record->af_is_deleted ) {
 100+ $update['af_is_deleted'] = true;
 101+ $update['af_is_undeleted'] = false;
100102
101 - // deleting means to "mark as oversighted" and "delete" it
102 - // oversighting also auto-hides the item
 103+ $log[] = array('oversight', $notes, $this->isSystemCall());
103104
104 - // increase means "oversight this"
105 - if ( $direction == 'increase' ) {
106 - $activity = 'oversight';
 105+ // always increment oversighted count and decrement notdeleted
 106+ $filters = array('all-oversighted' => 1,
 107+ 'notdeleted' => -1);
107108
108 - // delete
109 - $update['af_is_deleted'] = true;
110 - $update['af_is_undeleted'] = false;
111 - // only store the oversighter on delete/oversight
112 - $update['af_oversight_user_id'] = $this->getUserId();
113 - $update['af_oversight_timestamp'] = $timestamp;
114 - // delete specific filters
115 - $filters['deleted'] = 1;
116 - $filters['notdeleted'] = -1;
117 - if ( true == $record->af_is_undeleted ) {
118 - $filters['undeleted'] = -1;
 109+ // if this was previously visible, adjust counts
 110+ $filters = $this->visibleCounts( $record, $filters, 'invisible' );
 111+
 112+ // adjust notdeleted counts
 113+ if( $record->af_is_hidden ) {
 114+ $filters['notdeleted-hidden'] = -1;
119115 }
 116+ if( $record->af_is_unhidden ) {
 117+ $filters['notdeleted-unhidden'] = -1;
 118+ }
 119+ if( $record->af_oversight_count > 0 ) {
 120+ $filters['notdeleted-requested'] = -1;
 121+ }
 122+ if( $record->af_is_unrequested ) {
 123+ $filters['notdeleted-unrequested'] = -1;
 124+ }
 125+ if( $record->af_is_declined ) {
 126+ $filters['notdeleted-declined'] = -1;
 127+ }
120128
121 - // This is data for the "hidden by, oversighted by" red line
122 - $results['oversight-user'] = $this->getUserLink();
123 - $results['oversight-timestamp'] = wfTimestamp( TS_RFC2822, $timestamp );
 129+ // adjust undeleted count if necessary
 130+ if( $record->af_is_undeleted ) {
 131+ $filters['all-unoversighted'] = -1;
 132+ }
124133
125134 // autohide if not hidden
126135 if ( false == $record->af_is_hidden ) {
 136+ // we must tell the helper method this record is deleted for filter purposes
 137+ $record->af_is_deleted = true;
 138+
127139 $update['af_is_hidden'] = true;
128140 $update['af_is_unhidden'] = false;
129 - $filters = $this->changeFilterCounts( $record, $filters, 'hide' );
130 - // 0 is used for "autohidden" purposes, we'll explicitly set it to overwrite last hider
131 - $update['af_hide_user_id'] = 0;
132 - $update['af_hide_timestamp'] = $timestamp;
133 - $implicit_hide = true; // for logging
134 - // tell front-end autohiding was done
 141+ $update['af_is_autohide'] = true;
 142+
 143+ $update['af_last_status'] = 'autohide';
 144+ $update['af_last_status_user_id'] = $this->getUserId();
 145+ $update['af_last_status_timestamp'] = $timestamp;
 146+
 147+ $log[] = array( 'autohide', '', $this->getUserId );
 148+
135149 $results['autohidden'] = 1;
136 - // This is data for the "hidden by, oversighted by" red line
137 - $results['hide-user'] = ApiArticleFeedbackv5Utils::getUserLink( null, $default_user );
138 - $results['hide-timestamp'] = wfTimestamp( TS_RFC2822, $timestamp );
 150+ $results['status-line'] = $this->createStatusLine( 'autohide', $this->getUserId(), $timestamp );
 151+
 152+ // NOTE: we've already adjusted all visiblity counts above so we only do hide specific ones
 153+ $filters = $this->hideCounts( $record, $filters, 'hide' );
 154+
 155+ } else {
 156+
 157+ $update['af_last_status'] = 'deleted';
 158+ $update['af_last_status_user_id'] = $this->getUserId();
 159+ $update['af_last_status_timestamp'] = $timestamp;
 160+
 161+ $results['status-line'] = $this->createStatusLine( 'deleted', $this->getUserId(), $timestamp );
139162 }
140163
141 - } else {
142 - // decrease means "unoversight this" but does NOT auto-unhide
143 - $activity = 'unoversight';
 164+ // unoversight (no autohide)
 165+ } elseif( $direction == 'decrease' && $record->af_is_deleted ) {
 166+
144167 $update['af_is_deleted'] = false;
145168 $update['af_is_undeleted'] = true;
146 - // increment "undeleted", decrement "deleted"
147 - // NOTE: we do not touch visible, since hidden controls visiblity
148 - $filters['deleted'] = -1;
149 - $filters['undeleted'] = 1;
150 - // increment "notdeleted" for count of everything but oversighted
151 - $filters['notdeleted'] = 1;
152 - }
153169
154 - } elseif ( 'hide' == $flag && $this->isAllowed( 'aftv5-hide-feedback' ) ) {
 170+ $update['af_last_status'] = 'undeleted';
 171+ $update['af_last_status_user_id'] = $this->getUserId();
 172+ $update['af_last_status_timestamp'] = $timestamp;
155173
156 - // increase means "hide this"
157 - if ( $direction == 'increase' ) {
158 - $activity = 'hidden';
 174+ $log[] = array('unoversight', $notes, $this->isSystemCall());
 175+ $results['status-line'] = $this->createStatusLine( 'undeleted', $this->getUserId(), $timestamp );
159176
160 - // hide
 177+ $filters = array('all-unoversighted' => 1,
 178+ 'all-oversighted' => -1);
 179+
 180+ $filters = $this->visibleCounts( $record, $filters, 'visible' );
 181+
 182+ // adjust notdeleted counts
 183+ if( $record->af_is_hidden ) {
 184+ $filters['notdeleted-hidden'] = 1;
 185+ }
 186+ if( $record->af_is_unhidden ) {
 187+ $filters['notdeleted-unhidden'] = 1;
 188+ }
 189+ if( $record->af_oversight_count > 0 ) {
 190+ $filters['notdeleted-requested'] = 1;
 191+ }
 192+ if( $record->af_is_unrequested ) {
 193+ $filters['notdeleted-unrequested'] = 1;
 194+ }
 195+ if( $record->af_is_declined ) {
 196+ $filters['notdeleted-declined'] = 1;
 197+ }
 198+
 199+ } else {
 200+ $error = 'articlefeedbackv5-invalid-feedback-state';
 201+ }
 202+ // hidden is only visible to monitors or oversighters
 203+ } elseif ( 'hide' == $flag && $this->isAllowed( 'aftv5-hide-feedback' ) ) {
 204+ if ( $direction == 'increase' && !$record->af_is_hidden ) {
161205 $update['af_is_hidden'] = true;
162206 $update['af_is_unhidden'] = false;
163 - // only store the hider on hide not show
164 - $update['af_hide_user_id'] = $this->getUserId();
165 - $update['af_hide_timestamp'] = $timestamp;
166 - $filters = $this->changeFilterCounts( $record, $filters, 'hide' );
167207
168 - // This is data for the "hidden by, oversighted by" red line
169 - $results['hide-user'] = $this->getUserLink();
170 - $results['hide-timestamp'] = wfTimestamp( TS_RFC2822, $timestamp );
 208+ $update['af_last_status'] = 'hidden';
 209+ $update['af_last_status_user_id'] = $this->getUserId();
 210+ $update['af_last_status_timestamp'] = $timestamp;
171211
172 - } else {
173 - // decrease means "unhide this"
174 - $activity = 'unhidden';
 212+ $filters = array();
175213
 214+ $filters = $this->hideCounts( $record, $filters, 'hide' );
 215+ $filters = $this->visibleCounts( $record, $filters, 'invisible' );
 216+
 217+ $log[] = array('hidden', $notes, $this->isSystemCall());
 218+ $results['status-line'] = $this->createStatusLine( 'hidden', $this->getUserId(), $timestamp );
 219+
 220+ } elseif( $direction == 'decrease' && $record->af_is_hidden ) {
 221+
176222 $update['af_is_hidden'] = false;
177223 $update['af_is_unhidden'] = true;
178224
179 - $filters = $this->changeFilterCounts( $record, $filters, 'show' );
 225+ $update['af_last_status'] = 'unhidden';
 226+ $update['af_last_status_user_id'] = $this->getUserId();
 227+ $update['af_last_status_timestamp'] = $timestamp;
 228+
 229+ $filters = array();
 230+
 231+ $filters = $this->hideCounts( $record, $filters, 'show' );
 232+ $filters = $this->visibleCounts( $record, $filters, 'visible' );
 233+
 234+ $log[] = array('unhidden', $notes, $this->isSystemCall());
 235+ $results['status-line'] = $this->createStatusLine( 'unhidden', $this->getUserId(), $timestamp );
 236+
 237+ } else {
 238+ $error = 'articlefeedbackv5-invalid-feedback-state';
180239 }
 240+ // request/unrequest oversight
 241+ } elseif ( 'oversight' === $flag && $this->isAllowed( 'aftv5-hide-feedback' ) ) {
 242+ if ( $direction == 'increase' ) {
181243
 244+ $log[] = array('request', $notes, $this->isSystemCall());
 245+
 246+ // NOTE: we are bypassing traditional sql escaping here
 247+ $update[] = "af_oversight_count = af_oversight_count + 1";
 248+
 249+ // we do not increment anything by default
 250+ $filters = array();
 251+
 252+ // if this is a NEW request, increment our counters
 253+ if ( $record->af_oversight_count < 1 ) {
 254+ $filters['all-requested'] = 1;
 255+ if ( $record->af_is_deleted == false ) {
 256+ $filters['notdeleted-requested'] = 1;
 257+ }
 258+ }
 259+
 260+ // turn off unrequested if necessary
 261+ if( $record->af_is_unrequested ) {
 262+ $filters['all-unrequested'] = -1;
 263+ $update['af_is_unrequested'] = false;
 264+ if ( $record->af_is_deleted == false ) {
 265+ $filters['notdeleted-unrequested'] = -1;
 266+ }
 267+ }
 268+
 269+ if ( false == $record->af_is_hidden ) {
 270+
 271+ $update['af_is_hidden'] = true;
 272+ $update['af_is_unhidden'] = false;
 273+ $update['af_is_autohide'] = true;
 274+
 275+ $update['af_last_status'] = 'autohide';
 276+ $update['af_last_status_user_id'] = $this->getUserId();
 277+ $update['af_last_status_timestamp'] = $timestamp;
 278+
 279+ $log[] = array( 'autohide', '', $this->getUserId );
 280+
 281+ $results['autohidden'] = 1;
 282+ $results['status-line'] = $this->createStatusLine( 'autohide', $this->getUserId(), $timestamp );
 283+
 284+ $filters = $this->hideCounts( $record, $filters, 'hide' );
 285+ // NOTE: unlike autohide after oversight, we must do the visiblity filter
 286+ $filters = $this->visibleCounts( $record, $filters, 'invisible' );
 287+
 288+ } else {
 289+ $update['af_last_status'] = 'request';
 290+ $update['af_last_status_user_id'] = $this->getUserId();
 291+ $update['af_last_status_timestamp'] = $timestamp;
 292+ $results['status-line'] = $this->createStatusLine( 'request', $this->getUserId(), $timestamp );
 293+ }
 294+
 295+ // IF the previous setting was 0, send an email
 296+ if ( $record->af_oversight_count < 1 ) {
 297+ $this->sendOversightEmail();
 298+ }
 299+
 300+ } elseif ( $direction == 'decrease' ) {
 301+
 302+ $log[] = array('unrequest', $notes, $this->isSystemCall());
 303+ $filters = array();
 304+
 305+ if( ( $record->af_oversight_count - 1 ) < 1) {
 306+ $update['af_is_unrequested'] = true;
 307+ $filters['all-unrequested'] = 1;
 308+ $filters['all-requested'] = -1;
 309+ if ( $record->af_is_deleted == false ) {
 310+ $filters['notdeleted-unrequested'] = 1;
 311+ $filters['notdeleted-requested'] = -1;
 312+ }
 313+ }
 314+
 315+ // NOTE: we are bypassing traditional sql escaping here
 316+ $update[] = "af_oversight_count = GREATEST(CONVERT(af_oversight_count, SIGNED) - 1, 0)";
 317+ $update['af_last_status'] = 'unrequest';
 318+ $update['af_last_status_user_id'] = $this->getUserId();
 319+ $update['af_last_status_timestamp'] = $timestamp;
 320+ $results['status-line'] = $this->createStatusLine( 'unrequest', $this->getUserId(), $timestamp );
 321+
 322+ } else {
 323+ $error = 'articlefeedbackv5-invalid-feedback-state';
 324+ }
 325+ // this is "decline oversight" which unsets all request/unrequest on a piece of feedback
182326 } elseif ( 'resetoversight' === $flag && $this->isAllowed( 'aftv5-delete-feedback' ) ) {
183327
184 - $activity = 'decline';
 328+ $log[] = array('decline', $notes, $this->isSystemCall());
 329+
185330 // oversight request count becomes 0
186331 $update['af_oversight_count'] = 0;
187 - // declined oversight is flagged
188332 $update['af_is_declined'] = true;
189 - $filters['declined'] = 1;
190 - // if the oversight count was greater then 1
191 - if ( 0 < $record->af_oversight_count ) {
192 - $filters['needsoversight'] = -1;
 333+ $update['af_last_status'] = 'declined';
 334+ $update['af_last_status_user_id'] = $this->getUserId();
 335+ $update['af_last_status_timestamp'] = $timestamp;
 336+
 337+ // always increment our all declined
 338+ $filters = array('all-declined' => 1);
 339+ if ( $record->af_oversight_count > 0 ) {
 340+ $filters['all-requested'] = -1;
193341 }
194342
 343+ // if this is NOT deleted, change our notdeleted request items
 344+ if( $record->af_is_deleted == false) {
 345+ $filters['notdeleted-declined'] = 1;
 346+ if ( $record->af_oversight_count > 0 ) {
 347+ $filters['notdeleted-requested'] = -1;
 348+ }
 349+ }
 350+
 351+ $results['status-line'] = $this->createStatusLine( 'declined', $this->getUserId(), $timestamp );
 352+
 353+ // this is flag/unflag for abuse
195354 } elseif ( 'abuse' === $flag ) {
196355
197356 // Conditional formatting for abuse flag
@@ -198,6 +357,7 @@
199358 $wgArticleFeedbackv5HideAbuseThreshold;
200359
201360 $results['abuse_count'] = $record->af_abuse_count;
 361+ $filters = array();
202362
203363 // Make the abuse count in the result reflect this vote.
204364 if ( $direction == 'increase' ) {
@@ -213,95 +373,74 @@
214374 $results['abusive'] = 1;
215375 }
216376
217 - // Adding a new abuse flag: abusive++
 377+ if ( $this->isSystemCall() ) {
 378+ $log[] = array('autoflag', $notes, $this->isSystemCall());
 379+ } else {
 380+ $log[] = array('flag', $notes, $this->isSystemCall());
 381+ }
 382+
218383 if ( $direction == 'increase' ) {
219 - $activity = 'flag';
220 - $filters['abusive'] = 1;
221 - // NOTE: we are bypassing traditional sql escaping here
 384+
222385 $update[] = "af_abuse_count = af_abuse_count + 1";
223386
 387+ if ( $results['abuse_count'] > 0
 388+ && $record->af_is_hidden == false && $record->af_is_deleted == false ) {
 389+ $filters['visible-abusive'] = 1;
 390+ }
 391+
224392 // Auto-hide after threshold flags
225393 if ( $record->af_abuse_count > $wgArticleFeedbackv5HideAbuseThreshold
226394 && false == $record->af_is_hidden ) {
227 - // hide
 395+
228396 $update['af_is_hidden'] = true;
229397 $update['af_is_unhidden'] = false;
230 - // 0 is used for "autohidden" purposes, we'll explicitly set it to overwrite last hider
231 - $update['af_hide_user_id'] = 0;
232 - $update['af_hide_timestamp'] = $timestamp;
 398+ $update['af_is_autohide'] = true;
233399
234 - $filters = $this->changeFilterCounts( $record, $filters, 'hide' );
235 - $results['abuse-hidden'] = 1;
236 - $implicit_hide = true;
 400+ $update['af_last_status'] = 'autohide';
 401+ $update['af_last_status_user_id'] = $this->getUserId();
 402+ $update['af_last_status_timestamp'] = $timestamp;
237403
238 - // tell front-end autohiding was done
 404+ $log[] = array( 'autohide', '', $this->getUserId );
 405+
239406 $results['autohidden'] = 1;
240 - // This is data for the "hidden by, oversighted by" red line
241 - $results['hide-user'] = ApiArticleFeedbackv5Utils::getUserLink( null, $default_user );
242 - $results['hide-timestamp'] = wfTimestamp( TS_RFC2822, $timestamp );
 407+ $results['status-line'] = $this->createStatusLine( 'autohide', $this->getUserId(), $timestamp );
 408+
 409+ $filters = $this->hideCounts( $record, $filters, 'hide' );
 410+ // NOTE: unlike autohide after oversight, we must do the visiblity filter
 411+ $filters = $this->visibleCounts( $record, $filters, 'invisible' );
 412+
 413+ } elseif ( $this->getUserId() < 1 ) {
 414+ $update['af_last_status'] = 'autoflag';
 415+ $update['af_last_status_user_id'] = 0;
 416+ $update['af_last_status_timestamp'] = $timestamp;
 417+ $results['status-line'] = $this->createStatusLine( 'autoflag', 0, $timestamp );
243418 }
244 - }
245419
246 - // Removing the last abuse flag: abusive--
247 - elseif ( $direction == 'decrease' ) {
248 - $activity = 'unflag';
249 - $filters['abusive'] = -1;
 420+ } elseif ( $direction == 'decrease' ) {
 421+
 422+ $log[] = array('unflag', $notes, $this->isSystemCall());
 423+
250424 // NOTE: we are bypassing traditional sql escaping here
251425 $update[] = "af_abuse_count = GREATEST(CONVERT(af_abuse_count, SIGNED) -1, 0)";
252426
253 - // Un-hide if we don't have 5 flags anymore
254 - if ( $record->af_abuse_count == 5 && true == $record->af_is_hidden ) {
 427+ if ( $results['abuse_count'] < 1
 428+ && $record->af_is_hidden == false && $record->af_is_deleted == false ) {
 429+ $filters['visible-abusive'] = -1;
 430+ }
 431+
 432+ // Un-hide if we don't have threshold flags anymore
 433+ if ( $record->af_abuse_count < $wgArticleFeedbackv5AbusiveThreshold && true == $record->af_is_autohide ) {
255434 $update['af_is_hidden'] = false;
256435 $update['af_is_unhidden'] = true;
257436
258 - $filters = $this->changeFilterCounts( $record, $filters, 'show' );
 437+ $filters = $this->hideCounts( $record, $filters, 'show' );
 438+ $filters = $this->visibleCounts( $record, $filters, 'visible' );
259439
260 - $implicit_unhide = true;
 440+ $log[] = array( 'unhidden', 'Automatic un-hide', 0 );
261441 }
262 - } else {
263 - // TODO: real error here?
264 - $error = 'articlefeedbackv5-invalid-feedback-flag';
265 - }
266442
267 - // NOTE: this is actually request/unrequest oversight and works similar to abuse
268 - } elseif ( 'oversight' === $flag && $this->isAllowed( 'aftv5-hide-feedback' ) ) {
269 -
270 - if ( $direction == 'increase' ) {
271 - $activity = 'request';
272 - $filters['needsoversight'] = 1;
273 - // NOTE: we are bypassing traditional sql escaping here
274 - $update[] = "af_oversight_count = af_oversight_count + 1";
275 -
276 - // autohide if not hidden
277 - if ( false == $record->af_is_hidden ) {
278 - $update['af_is_hidden'] = true;
279 - $update['af_is_unhidden'] = false;
280 - // 0 is used for "autohidden" purposes, we'll explicitly set it to overwrite last hider
281 - $update['af_hide_user_id'] = 0;
282 - $update['af_hide_timestamp'] = $timestamp;
283 -
284 - $filters = $this->changeFilterCounts( $record, $filters, 'hide' );
285 - $implicit_hide = true; // for logging
286 - // tell front-end autohiding was done
287 - $results['autohidden'] = 1;
288 - // This is data for the "hidden by, oversighted by" red line
289 - $results['hide-user'] = ApiArticleFeedbackv5Utils::getUserLink( null, $default_user );
290 - $results['hide-timestamp'] = wfTimestamp( TS_RFC2822, $timestamp );
291 - }
292 -
293 - // IF the previous setting was 0, send an email
294 - if ( $record->af_oversight_count < 1 ) {
295 - $this->sendOversightEmail();
296 - }
297 -
298 - } elseif ( $direction == 'decrease' ) {
299 - $activity = 'unrequest';
300 - $filters['needsoversight'] = -1;
301 - // NOTE: we are bypassing traditional sql escaping here
302 - $update[] = "af_oversight_count = GREATEST(CONVERT(af_oversight_count, SIGNED) - 1, 0)";
303443 } else {
304 - // TODO: real error here?
305 - $error = 'articlefeedbackv5-invalid-feedback-flag';
 444+ $error = 'articlefeedbackv5-invalid-feedback-state';
306445 }
307446
308447 // helpful and unhelpful flagging
@@ -310,6 +449,7 @@
311450 $results['toggle'] = $toggle;
312451 $helpful = $record->af_helpful_count;
313452 $unhelpful = $record->af_unhelpful_count;
 453+ $filters = array();
314454
315455 // if toggle is on, we are decreasing one and increasing the other atomically
316456 // means one less http request and the counts don't mess up
@@ -321,8 +461,9 @@
322462 // NOTE: we are bypassing traditional sql escaping here
323463 $update[] = "af_helpful_count = af_helpful_count + 1";
324464 $update[] = "af_unhelpful_count = GREATEST(0, CONVERT(af_unhelpful_count, SIGNED) - 1)";
 465+
325466 $helpful++;
326 - $unhelpful--;
 467+ $unhelpful = max(0, --$unhelpful);
327468
328469 } elseif ( ( ( $flag == 'unhelpful' && $direction == 'increase' )
329470 || ( $flag == 'helpful' && $direction == 'decrease' ) )
@@ -330,7 +471,7 @@
331472 // NOTE: we are bypassing traditional sql escaping here
332473 $update[] = "af_unhelpful_count = af_unhelpful_count + 1";
333474 $update[] = "af_helpful_count = GREATEST(0, CONVERT(af_helpful_count, SIGNED) - 1)";
334 - $helpful--;
 475+ $helpful = max(0, --$helpful);
335476 $unhelpful++;
336477 }
337478
@@ -343,7 +484,7 @@
344485 } elseif ( 'unhelpful' === $flag && $direction == 'decrease' ) {
345486 // NOTE: we are bypassing traditional sql escaping here
346487 $update[] = "af_unhelpful_count = GREATEST(0, CONVERT(af_unhelpful_count, SIGNED) - 1)";
347 - $unhelpful--;
 488+ $unhelpful = max(0, --$unhelpful);
348489 } elseif ( $flag == 'helpful' && $direction == 'increase' ) {
349490 // NOTE: we are bypassing traditional sql escaping here
350491 $update[] = "af_helpful_count = af_helpful_count + 1";
@@ -351,41 +492,42 @@
352493 } elseif ( $flag == 'helpful' && $direction == 'decrease' ) {
353494 // NOTE: we are bypassing traditional sql escaping here
354495 $update[] = "af_helpful_count = GREATEST(0, CONVERT(af_helpful_count, SIGNED) - 1)";
355 - $helpful--;
 496+ $helpful = max(0, --$helpful);
356497 }
357498
358499 }
359500
 501+ // note this is signed - no max/min needed here
360502 $netHelpfulness = $helpful - $unhelpful;
361503
362 - // increase helpful OR decrease unhelpful
363 - if ( ( ( $flag == 'helpful' && $direction == 'increase' )
364 - || ( $flag == 'unhelpful' && $direction == 'decrease' ) )
365 - ) {
366 - // net was -1: no longer unhelpful
367 - if ( $netHelpfulness == -1 ) {
368 - $filters['unhelpful'] = -1;
 504+ // If net == 0 neither helpful nor unhelpful
 505+ if ( $netHelpfulness == 0 ) {
 506+ // if it WAS unhelpful or helpful undo
 507+ if ( $record->af_net_helpfulness < 0 ) {
 508+ $filters['visible-unhelpful'] = -1;
 509+ } elseif ( $record->af_net_helpfulness > 0 ) {
 510+ $filters['visible-helpful'] = -1;
369511 }
370 -
371 - // net was 0: now helpful
372 - if ( $netHelpfulness == 0 ) {
373 - $filters['helpful'] = 1;
 512+ // if net > 0 we are now helpful
 513+ } elseif ( $netHelpfulness > 0 ) {
 514+ // if it WAS unhelpful undo
 515+ if ( $record->af_net_helpfulness < 0 ) {
 516+ $filters['visible-unhelpful'] = -1;
374517 }
375 - }
376 -
377 - // increase unhelpful OR decrease unhelpful
378 - if ( ( ( $flag == 'unhelpful' && $direction == 'increase' )
379 - || ( $flag == 'helpful' && $direction == 'decrease' ) )
380 - ) {
381 - // net was 1: no longer helpful
382 - if ( $netHelpfulness == 1 ) {
383 - $filters['helpful'] = -1;
 518+ // if it didn't use to be helpful but now is, bump it
 519+ if ( $record->af_net_helpfulness < 1 ) {
 520+ $filters['visible-helpful'] = 1;
384521 }
385 -
386 - // net was 0: now unhelpful
387 - if ( $netHelpfulness == 0 ) {
388 - $filters['unhelpful'] = 1;
 522+ // if net < 0 we are now unhelpful
 523+ } elseif ( $netHelpfulness < 0 ) {
 524+ // if it WAS helpful undo
 525+ if ( $record->af_net_helpfulness > 0 ) {
 526+ $filters['visible-helpful'] = -1;
389527 }
 528+ // if it didn't use to be unhelpful but now is, bump it
 529+ if ( $record->af_net_helpfulness > -1 ) {
 530+ $filters['visible-unhelpful'] = 1;
 531+ }
390532 }
391533
392534 } else {
@@ -405,19 +547,7 @@
406548 // Update the filter count rollups.
407549 ApiArticleFeedbackv5Utils::updateFilterCounts( $dbw, $this->pageId, $filters );
408550
409 - $dbw->commit(); // everything went well, so we commit our db changes
410 -
411 - // helpfulness counts are NOT logged, no activity is set
412 - if ( isset( $activity ) ) {
413 - ApiArticleFeedbackv5Utils::logActivity( $activity, $this->pageId, $this->feedbackId, $notes, $this->isSystemCall() );
414 - }
415 -
416 - // handle implicit hide/show logging
417 - if ( isset( $implicit_hide ) && $implicit_hide ) {
418 - ApiArticleFeedbackv5Utils::logActivity( 'hidden' , $this->pageId, $this->feedbackId, '', true );
419 - }
420 -
421 - // Update helpful/unhelpful display count after submission.
 551+ // Update helpful/unhelpful display count after submission but BEFORE db commit to stay in the transaction
422552 if ( $flag == 'helpful' || $flag == 'unhelpful' ) {
423553
424554 // no negative numbers please
@@ -434,11 +564,19 @@
435565 'aft_article_feedback',
436566 array( 'af_net_helpfulness = CONVERT(af_helpful_count, SIGNED) - CONVERT(af_unhelpful_count, SIGNED)' ),
437567 array(
438 - 'af_id' => $params['feedbackid'],
 568+ 'af_id' => $this->feedbackId,
439569 ),
440570 __METHOD__
441571 );
442572 }
 573+
 574+ $dbw->commit(); // everything went well, so we commit our db changes
 575+
 576+ // activity logging
 577+ foreach( $log as $entry ) {
 578+ ApiArticleFeedbackv5Utils::logActivity( $entry[0], $this->pageId, $this->feedbackId, $entry[1], $entry[2] );
 579+ }
 580+
443581 }
444582
445583 if ( isset( $error ) ) {
@@ -493,7 +631,7 @@
494632 */
495633 public function getUserLink() {
496634 if ( $this->isSystemCall() ) {
497 - return ApiArticleFeedbackv5Utils::getUserLink( null, $default_user );
 635+ return ApiArticleFeedbackv5Utils::getUserLink( 0, null );
498636 }
499637 return ApiArticleFeedbackv5Utils::getUserLink( $this->user );
500638 }
@@ -522,64 +660,101 @@
523661 'af_is_undeleted',
524662 'af_is_declined',
525663 'af_has_comment',
526 - 'af_oversight_count' ),
 664+ 'af_oversight_count',
 665+ 'af_is_unrequested',
 666+ 'af_is_autohide'),
527667 array( 'af_id' => $id )
528668 );
529669 return $record;
530670 }
531671
532672 /**
533 - * Helper function to manipulate all flags when hiding/showing a piece of feedback
 673+ * Helper function - if an item is deleted OR it is hidden, then
 674+ * all visible items need to be adjusted
534675 *
 676+ * Just pass in a record, if it is already hidden or deleted no changes are made
 677+ * to filters, otherwise all visible items are changed
 678+ *
535679 * @param object $record existing feedback database record
536680 * @param array $filters existing filters
537 - * @param string $action 'hide' or 'show'
 681+ * @param string $action visible or invisible
538682 * @return array the filter array with new filter choices added
539683 */
540 - protected function changeFilterCounts( $record, $filters, $action ) {
541 - // only filters that hide shouldn't manipulate are
542 - // all, deleted, undeleted, and notdeleted
 684+ protected function visibleCounts( $record, $filters, $action = 'invisible' ) {
543685
544 - // use -1 (decrement) for hide, 1 for increment (show) - default is hide
545 - switch( $action ) {
546 - case 'show':
547 - $int = 1;
548 - // if we're showing, this will increment
549 - $filters['unhidden'] = 1;
550 - break;
551 - default:
552 - // if we're hiding, and was unhidden, decrement
553 - if ( true == $record->af_is_unhidden ) {
554 - $filters['unhidden'] = -1;
555 - }
556 - $int = -1;
557 - break;
 686+ if( $action === 'visible' ) {
 687+ if ( $record->af_is_hidden == false && $record->af_is_deleted == false) {
 688+ return $filters;
 689+ }
 690+ $int = 1;
 691+ } else {
 692+ if ( $record->af_is_hidden == true || $record->af_is_deleted == true) {
 693+ return $filters;
 694+ }
 695+ $int = -1;
558696 }
559697
560 - // visible, invisible, unhidden
 698+ // visible is only decremented for hide or delete
561699 $filters['visible'] = $int;
562 - $filters['invisible'] = -$int; // opposite of int
563700
564 - // comment
565 - if ( true == $record->af_has_comment ) {
566 - $filters['comment'] = $int;
 701+ // all can see
 702+ if( $record->af_has_comment ) {
 703+ $filters['visible-comment'] = $int;
567704 }
 705+ if( $record->af_net_helpfulness > 0 ) {
 706+ $filters['visible-helpful'] = $int;
 707+ }
568708
569 - // abusive
570 - if ( $record->af_abuse_count > 1 ) {
571 - $filters['abusive'] = $int;
 709+ // monitors can see
 710+ if( $record->af_net_helpfulness < 0 ) {
 711+ $filters['visible-unhelpful'] = $int;
572712 }
573 - // helpful and unhelpful
574 - if ( $record->af_net_helpfulness > 1 ) {
575 - $filters['helpful'] = $int;
576 - } elseif ( $record->af_net_helpfulness < 1 ) {
577 - $filters['unhelpful'] = $int;
 713+ if( $record->af_abuse_count > 0 ) {
 714+ $filters['visible-abusive'] = $int;
578715 }
579716
580717 return $filters;
581718 }
582719
583720 /**
 721+ * Helper function - all filter changes for hiding a row because autohide
 722+ * will use this
 723+ *
 724+ * @param object $record existing feedback database record
 725+ * @param array $filters existing filters
 726+ * @return array the filter array with new filter choices added
 727+ */
 728+ protected function hideCounts( $record, $filters, $action = 'hide' ) {
 729+
 730+ if( $action === 'show' ) {
 731+ // we always increment total unhidden count, and if it's not deleted increment notdeleted count
 732+ if ( !$record->af_is_deleted ) {
 733+ $filters['notdeleted-unhidden'] = 1;
 734+ $filters['notdeleted-hidden'] = -1;
 735+ }
 736+
 737+ $filters['all-unhidden'] = 1;
 738+ $filters['all-hidden'] = -1;
 739+
 740+ } else {
 741+ // we always increment total hidden count, and if it's not deleted increment notdeleted count
 742+ if ( !$record->af_is_deleted ) {
 743+ $filters['notdeleted-hidden'] = 1;
 744+ if( $record->af_is_unhidden ) {
 745+ $filters['notdeleted-unhidden'] = -1;
 746+ }
 747+ }
 748+ $filters['all-hidden'] = 1;
 749+
 750+ if( $record->af_is_unhidden ) {
 751+ $filters['all-unhidden'] = -1;
 752+ }
 753+ }
 754+
 755+ return $filters;
 756+ }
 757+
 758+ /**
584759 * Helper function to dig out page url and title, feedback permalink, and
585760 * requestor page url and name - if all this data can be retrieved properly
586761 * it shoves an email job into the queue for sending to the oversighters'
@@ -623,5 +798,21 @@
624799 $job->insert();
625800 }
626801
 802+ /**
 803+ * Helper function to create a new red status line based on the last status line created
 804+ * action performed
 805+ */
 806+ protected function createStatusLine( $last_status, $last_status_user_id, $last_status_timestamp ) {
 807+ global $wgLang;
 808+
 809+ return Html::rawElement( 'span', array(
 810+ 'class' => 'articleFeedbackv5-feedback-status-marker'
 811+ ),
 812+ wfMessage( 'articlefeedbackv5-status-' . $last_status )
 813+ ->rawParams( ApiArticleFeedbackv5Utils::getUserLink( $last_status_user_id ) )
 814+ ->params( $wgLang->date( $last_status_timestamp ),
 815+ $wgLang->time( $last_status_timestamp ) )
 816+ ->escaped()
 817+ );
 818+ }
627819 }
628 -
Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/ArticleFeedbackv5.i18n.php
@@ -47,6 +47,7 @@
4848 'articlefeedbackv5-error-nofeedback' => 'Please enter your feedback.',
4949 'articlefeedbackv5-error-flagging' => 'Error flagging feedback.',
5050
 51+
5152 /* Special Page */
5253 'articlefeedbackv5-form-tools-label' => 'Tools',
5354 'articlefeedbackv5-form-helpful-label' => 'Is this feedback helpful?',
@@ -55,17 +56,18 @@
5657 'articlefeedbackv5-form-helpful-votes' => '{{PLURAL:$1|1 yes|$1 yes}} / {{PLURAL:$2|1 no|$2 no}}',
5758 'articlefeedbackv5-special-add-feedback' => 'Add your feedback',
5859 'articlefeedbackv5-special-filter-all' => 'All (oversight) ($1)',
59 - 'articlefeedbackv5-special-filter-notdeleted' => 'All ($1)',
 60+ 'articlefeedbackv5-special-filter-notdeleted' => 'All (hidden) ($1)',
6061 'articlefeedbackv5-special-filter-comment' => 'Comments only ($1)',
6162 'articlefeedbackv5-special-filter-abusive' => 'Flagged as abuse ($1)',
6263 'articlefeedbackv5-special-filter-helpful' => 'Helpful ($1)',
6364 'articlefeedbackv5-special-filter-unhelpful' => 'Unhelpful ($1)',
64 - 'articlefeedbackv5-special-filter-needsoversight' => 'Oversight requested ($1)',
 65+ 'articlefeedbackv5-special-filter-requested' => 'Oversight requested ($1)',
 66+ 'articlefeedbackv5-special-filter-unrequested' => 'Oversight unrequested ($1)',
6567 'articlefeedbackv5-special-filter-visible' => 'All visible ($1)',
66 - 'articlefeedbackv5-special-filter-invisible' => 'Hidden ($1)',
67 - 'articlefeedbackv5-special-filter-deleted' => 'Oversighted ($1)',
68 - 'articlefeedbackv5-special-filter-undeleted' => 'Un-oversighted ($1)',
69 - 'articlefeedbackv5-special-filter-declined' => 'Oversight Declined ($1)',
 68+ 'articlefeedbackv5-special-filter-hidden' => 'Hidden ($1)',
 69+ 'articlefeedbackv5-special-filter-oversighted' => 'Oversighted ($1)',
 70+ 'articlefeedbackv5-special-filter-unoversighted' => 'Un-oversighted ($1)',
 71+ 'articlefeedbackv5-special-filter-declined' => 'Oversight declined ($1)',
7072 'articlefeedbackv5-special-filter-unhidden' => 'Un-hidden ($1)',
7173 'articlefeedbackv5-special-sort-age' => 'Date',
7274 'articlefeedbackv5-special-sort-helpful' => 'Helpful',
@@ -81,8 +83,15 @@
8284 'articlefeedbackv5-special-more' => 'Show more posts',
8385 'articlefeedbackv5-special-pagetitle' => 'Feedback: $1',
8486 'articlefeedbackv5-form-optionid' => 'Option $1',
85 - 'articlefeedbackv5-hidden' => 'This post was hidden by $1 on $2',
86 - 'articlefeedbackv5-deleted' => 'This post was deleted by $1 on $2',
 87+ 'articlefeedbackv5-status-hidden' => 'This post was hidden by $1 on $2 at $3',
 88+ 'articlefeedbackv5-status-unhidden' => 'This post was unhidden by $1 on $2 at $3',
 89+ 'articlefeedbackv5-status-request' => 'Oversight for this post was requested by $1 on $2 at $3',
 90+ 'articlefeedbackv5-status-unrequest' => 'Oversight for this post was un-requested by $1 on $2 at $3',
 91+ 'articlefeedbackv5-status-declined' => 'Oversight for this post was declined by $1 on $2 at $3',
 92+ 'articlefeedbackv5-status-autohide' => 'This post was auto-hidden by $1 on $2 at $3',
 93+ 'articlefeedbackv5-status-deleted' => 'This post was oversighted by $1 on $2 at $3',
 94+ 'articlefeedbackv5-status-undeleted' => 'This post was un-oversighted by $1 on $2 at $3',
 95+ 'articlefeedbackv5-status-autoflag' => 'This post was auto-flagged by $1 on $2 at $3',
8796 'articlefeedbackv5-form-hide' => 'Hide this post',
8897 'articlefeedbackv5-form-unhide' => 'Unhide this post',
8998 'articlefeedbackv5-form-helpful' => 'Mark as helpful ($1)',
@@ -113,6 +122,7 @@
114123 'articlefeedbackv5-error-loading-feedback' => 'Error loading feedback',
115124 'articlefeedbackv5-invalid-feedback-id' => 'Invalid feedback ID',
116125 'articlefeedbackv5-invalid-feedback-flag' => 'Invalid feedback flag',
 126+ 'articlefeedbackv5-invalid-feedback-state' => 'Invalid feedback flag state',
117127 'articlefeedbackv5-go-to-article' => 'View article',
118128 'articlefeedbackv5-discussion-page' => 'Talk',
119129 'articlefeedbackv5-whats-this' => 'Help',
@@ -249,6 +259,10 @@
250260 'articlefeedbackv5-bucket4-learn-to-edit' => 'Learn how to edit',
251261 'articlefeedbackv5-bucket4-form-submit' => 'Edit this page',
252262 'articlefeedbackv5-bucket4-help-tooltip-info' => 'Wikipedia wants to know what you think. Help improve this page by becoming an editor.',
 263+ 'articlefeedbackv5-bucket4-noedit-title' => 'Help improve Wikipedia',
 264+ 'articlefeedbackv5-bucket4-noedit-teaser-line1' => 'This website is created by people like you.',
 265+ 'articlefeedbackv5-bucket4-noedit-teaser-line2' => 'Can you give us a hand?',
 266+ 'articlefeedbackv5-bucket4-noedit-form-submit' => 'Learn more',
253267
254268 /* Option 5 (just like AFTv4, but ported to work with v5) */
255269 'articlefeedbackv5-bucket5-form-switch-label' => 'Rate this page',
@@ -341,11 +355,13 @@
342356 'articlefeedbackv5-log-unoversight' => 'removed the oversight [[$1]] status from feedback',
343357 'articlefeedbackv5-log-hidden' => 'hid the feedback [[$1]]',
344358 'articlefeedbackv5-log-unhidden' => 'unhid the feedback [[$1]]',
345 - 'articlefeedbackv5-log-decline' => 'declined oversight request from the feedback [[$1]]',
346 - 'articlefeedbackv5-log-request' => 'requested oversight on the feedback [[$1]]',
347 - 'articlefeedbackv5-log-unrequest' => 'removed the requested oversight on the feedback [[$1]]',
 359+ 'articlefeedbackv5-log-decline' => 'declined oversight for the feedback [[$1]]',
 360+ 'articlefeedbackv5-log-request' => 'requested oversight for [[$1]]',
 361+ 'articlefeedbackv5-log-unrequest' => 'un-requested oversight for [[$1]]',
348362 'articlefeedbackv5-log-flag' => 'flagged the feedback [[$1]] as abuse',
349363 'articlefeedbackv5-log-unflag' => 'unflagged the feedback [[$1]] as abuse',
 364+ 'articlefeedbackv5-log-autohide' => 'auto-hid the feedback [[$1]] as abuse',
 365+ 'articlefeedbackv5-log-autoflag' => 'auto-flagged the feedback [[$1]] as abuse',
350366
351367 /* Activity Pane phrases */
352368 'articlefeedbackv5-activity-pane-header' => 'Activity Log',
@@ -485,11 +501,10 @@
486502 'articlefeedbackv5-special-filter-abusive' => '{{Identical|Abusive}}',
487503 'articlefeedbackv5-special-filter-helpful' => 'Feedback that has been marked as helpful',
488504 'articlefeedbackv5-special-filter-unhelpful' => 'Feedback that has been marked as unhelpful',
489 - 'articlefeedbackv5-special-filter-invisible' => '{{Identical|Hidden}}',
490 - 'articlefeedbackv5-special-filter-deleted' => '{{Identical|Deleted}}',
 505+ 'articlefeedbackv5-special-filter-hidden' => '{{Identical|Hidden}}',
 506+ 'articlefeedbackv5-special-filter-oversighted' => '{{Identical|Deleted}}',
491507 'articlefeedbackv5-special-sort-age' => '{{Identical|Date}}',
492508 'articlefeedbackv5-special-sort-rating' => '{{Identical|Rating}}',
493 - 'articlefeedbackv5-special-goback' => 'Link to take a user from a feedback permalink back to the listing of all feedback',
494509 'articlefeedbackv5-special-sort-label-before' => 'Place to put a label before the sort options',
495510 'articlefeedbackv5-special-filter-label-before' => 'Place to put a label before the filter select box',
496511 'articlefeedbackv5-special-showing' => 'Text to show how many feedback psots have been posted to this article. $1 is the number of posts (needs plural support)',
@@ -499,12 +514,42 @@
500515 'articlefeedbackv5-special-more' => '{{Identical|More}}',
501516 'articlefeedbackv5-special-pagetitle' => 'Page title for [[Special:ArticleFeedbackv5]]. Parameters:
502517 * $1 is the title of the article for which we show the feedback',
503 - 'articlefeedbackv5-hidden' => 'The marker that appears on a comment if it has been hidden by a monitor.
 518+ 'articlefeedbackv5-status-hidden' => 'The marker that appears on a comment if it has been hidden by a monitor.
504519 * $1 is the name of the monitor who performed the hide
505 -* $2 is the timestamp for when the hide occurred',
506 - 'articlefeedbackv5-deleted' => 'The marker that appears on a comment if it has been deleted by an oversighter.
 520+* $2 is the date when the hide occurred
 521+* $3 is the time when the hide occurred',
 522+ 'articlefeedbackv5-status-unhidden' => 'The marker that appears on a comment if it has been unhidden by a user.
 523+* $1 is the name of the monitor who performed the unhide
 524+* $2 is the date when the unhide occurred
 525+* $3 is the time when the unhide occurred',
 526+ 'articlefeedbackv5-status-request' => 'The marker that appears on a comment if a user has requested oversight.
 527+* $1 is the name of the monitor who requested oversight
 528+* $2 is the date when the request occurred
 529+* $3 is the time when the request occurred',
 530+ 'articlefeedbackv5-status-unrequest' => 'The marker that appears on a comment if a user has canceled an oversight request.
 531+* $1 is the name of the monitor who canceled the oversight request
 532+* $2 is the date when the cancelation request occurred
 533+* $3 is the time when the cancelation request occurred',
 534+ 'articlefeedbackv5-status-declined' => 'The marker that appears on a comment if a user has declined an oversight request.
 535+* $1 is the name of the oversighter who declined the oversight request
 536+* $2 is the date when the decline occurred
 537+* $3 is the time when the decline occurred',
 538+ 'articlefeedbackv5-status-autohide' => 'The marker that appears on a comment if it has been autohidden by the extension.
 539+* $1 is the name of the monitor who performed the hide
 540+* $2 is the date when the hide occurred
 541+* $3 is the time when the hide occurred',
 542+ 'articlefeedbackv5-status-deleted' => 'The marker that appears on a comment if it has been deleted by an oversighter.
507543 * $1 is the name of the oversighter who performed the delete
508 -* $2 is the timestamp for when the deletion occurred',
 544+* $2 is the date when the deletion occurred
 545+* $3 is the time when the deletion occurred',
 546+ 'articlefeedbackv5-status-undeleted' => 'The marker that appears on a comment if a user has un-oversighted.
 547+* $1 is the name of the oversighter who un-oversighted
 548+* $2 is the date when the unoversight occurred
 549+* $3 is the time when the unoversight occurred',
 550+ 'articlefeedbackv5-status-autoflag' => 'The marker that appears on a comment if it has been automatically flagged as abuse.
 551+* $1 is a link to the faq about how autoflagging works
 552+* $2 is the date when the autoflag occurred
 553+* $3 is the time when the autoflag occurred',
509554 'articlefeedbackv5-form-abuse' => 'Link text allowing the user to flag feedback as abuse. $1 is the number of times the feedback has been flagged previously.',
510555 'articlefeedbackv5-form-abuse-masked' => 'Link text allowing the user to flag feedback as abuse, without the count included in {{msg-mw|articlefeedbackv5-form-abuse}}',
511556 'articlefeedbackv5-form-delete' => '{{Identical|Delete}}',
@@ -560,7 +605,8 @@
561606 'articlefeedbackv5-mask-text-hidden' => 'Text to be displayed on the hidden post mask',
562607 'articlefeedbackv5-mask-text-oversight' => 'Text to be displayed on the oversighted post mask',
563608 'articlefeedbackv5-mask-postnumber' => 'Template for post number, to be displayed on the hidden post mask',
564 - 'articlefeedbackv5-special-disclaimer' => 'Cautionary text that is displayed in red at the top of the feedback dashboard. This will be removed when the requirements and design of this feature are more final.',
 609+ 'articlefeedbackv5-special-disclaimer' => 'Cautionary text that is displayed in red at the top of the feedback dashboard. This will be removed when the requirements and design of this feature are more final.',
 610+ 'articlefeedbackv5-special-goback' => 'Link to take a user from a feedback permalink back to the listing of all feedback',
565611 'articlefeedbackv5-noteflyover-hide-caption' => 'Hide post note flyover panel - panel caption',
566612 'articlefeedbackv5-noteflyover-hide-label' => 'Hide post note flyover panel - text area label',
567613 'articlefeedbackv5-noteflyover-hide-placeholder' => 'Hide post note flyover panel - text area placeholder text',
@@ -636,6 +682,10 @@
637683 'articlefeedbackv5-bucket4-learn-to-edit' => 'The text for the "Learn how to edit" link',
638684 'articlefeedbackv5-bucket4-form-submit' => 'The text for the big edit button',
639685 'articlefeedbackv5-bucket4-help-tooltip-info' => 'Overrides {{msg-mw|articlefeedbackv5-help-tooltip-info}} for option 4.',
 686+ 'articlefeedbackv5-bucket4-noedit-title' => 'This is the title of the feedback panel for option 4, when the user cannot edit the article',
 687+ 'articlefeedbackv5-bucket4-noedit-teaser-line1' => 'The first line of the teaser text for option 4, when the user cannot edit the article',
 688+ 'articlefeedbackv5-bucket4-noedit-teaser-line2' => 'The second line of the teaser text for option 4, when the user cannot edit the article',
 689+ 'articlefeedbackv5-bucket4-noedit-form-submit' => 'The text for the big button, when the user cannot edit the article',
640690 'articlefeedbackv5-bucket5-form-panel-explanation' => '{{Identical|What is this}}',
641691 'articlefeedbackv5-bucket5-form-panel-explanation-link' => 'Do not translate "Project:". Also translate the "ArticleFeedback" special page name at [[Special:AdvancedTranslate]].',
642692 'articlefeedbackv5-bucket5-form-panel-helpimprove' => 'This message may not use <nowiki>{{SITENAME}}</nowiki>.',
@@ -682,6 +732,8 @@
683733 'articlefeedbackv5-log-unrequest' => 'Un-request oversight action log string (an oversight request asks an oversighter to delete feedback)',
684734 'articlefeedbackv5-log-flag' => 'Flag post as abuse action log string',
685735 'articlefeedbackv5-log-unflag' => 'Unflag post as abuse action log string',
 736+ 'articlefeedbackv5-log-autohide' => 'Hide a post automatically (for example, when requesting oversight, oversighting, too many abuse flags)',
 737+ 'articlefeedbackv5-log-autoflag' => 'Flag a post as abuse automatically (for example, spam and abuse filtering mechanisms may do this)',
686738 'articlefeedbackv5-activity-pane-header' => 'Flyover panel caption',
687739 'articlefeedbackv5-activity-feedback-info' => 'Post information template. Parameters:
688740 * $1 is the feedback post ID,
@@ -718,13 +770,12 @@
719771 'articlefeedbackv5-disable-flyover-help-emphasis-text' => 'The emphasis text for {{msg-mw|articlefeedbackv5-disable-flyover-help}} (the name of the tool)',
720772 'articlefeedbackv5-disable-flyover-help-location' => 'A short indication of where to go to change your Article Feedback preferences, inside {{msg-mw|articlefeedbackv5-disable-flyover-help}}',
721773 'articlefeedbackv5-disable-flyover-prefbutton' => 'The text of the big glossy button used to send the user to their preferences in the tooltip that pops up when you click the close button on a feedback trigger link, explaining how to remove the Article Feedback tool',
 774+ 'abusefilter-edit-action-aftv5flagabuse' => 'The text for the checkbox used by Special:AbuseFilter to indicate that a rule should result in the feedback being auto-flagged as abuse',
722775 'articlefeedbackv5-abusefilter-note-aftv5flagabuse' => 'The note to add to the activity log when auto-flagging a new feedback post as abuse (<code>$1</code> is the name of the filter)',
723 - 'abusefilter-edit-action-aftv5flagabuse' => 'The text for the checkbox used by Special:AbuseFilter to indicate that a rule should result in the feedback being auto-flagged as abuse',
724776 'abusefilter-edit-action-aftv5hide' => 'The text for the checkbox used by Special:AbuseFilter to indicate that a rule should result in the feedback being auto-hidden',
 777+ 'articlefeedbackv5-abusefilter-note-aftv5hide' => 'The note to add to the activity log when auto-hiding a new feedback post (<code>$1</code> is the name of the filter)',
725778 'abusefilter-edit-action-aftv5requestoversight' => 'The text for the checkbox used by Special:AbuseFilter to indicate that a rule should result in oversight being automatically requested for the feedback',
726 - 'articlefeedbackv5-abusefilter-note-aftv5hide' => 'The note to add to the activity log when auto-hiding a new feedback post (<code>$1</code> is the name of the filter)',
727779 'articlefeedbackv5-abusefilter-note-aftv5requestoversight' => 'The note to add to the activity log when automatically requesting oversight for a new feedback post (<code>$1</code> is the name of the filter)',
728 - 'articlefeedbackv5-warning-abuse' => 'A basic warning message that may be used by Special:AbuseFilter to let the user know their comment has violated policy (<code>$1</code> is the name of the filter)',
729780 );
730781
731782 /** Afrikaans (Afrikaans)
@@ -1068,10 +1119,10 @@
10691120 'articlefeedbackv5-special-filter-abusive' => 'Пазначаныя як злоўжываньне ($1)',
10701121 'articlefeedbackv5-special-filter-helpful' => 'Карысныя ($1)',
10711122 'articlefeedbackv5-special-filter-unhelpful' => 'Некарысныя ($1)',
1072 - 'articlefeedbackv5-special-filter-needsoversight' => 'Запытаныя на назіраньне ($1)',
 1123+ 'articlefeedbackv5-special-filter-requested' => 'Запытаныя на назіраньне ($1)',
10731124 'articlefeedbackv5-special-filter-visible' => 'Усе бачныя ($1)',
1074 - 'articlefeedbackv5-special-filter-invisible' => 'Схаваны ($1)',
1075 - 'articlefeedbackv5-special-filter-deleted' => 'Рэвізаваныя ($1)',
 1125+ 'articlefeedbackv5-special-filter-hidden' => 'Схаваны ($1)',
 1126+ 'articlefeedbackv5-special-filter-oversighted' => 'Рэвізаваныя ($1)',
10761127 'articlefeedbackv5-special-sort-age' => 'Дата',
10771128 'articlefeedbackv5-special-sort-helpful' => 'Карыснасьць',
10781129 'articlefeedbackv5-special-sort-rating' => 'Адзнака',
@@ -1084,8 +1135,6 @@
10851136 'articlefeedbackv5-special-more' => 'Паказаць болей паведамленьняў',
10861137 'articlefeedbackv5-special-pagetitle' => 'Водгук: $1',
10871138 'articlefeedbackv5-form-optionid' => 'Варыянт $1',
1088 - 'articlefeedbackv5-hidden' => 'Гэтае паведамленьне было схаванае аўтарызаваным рэдактарам',
1089 - 'articlefeedbackv5-deleted' => 'Гэтае паведамленьне было выдаленае назіраючымі',
10901139 'articlefeedbackv5-form-hide' => 'Схаваць гэтае паведамленьне',
10911140 'articlefeedbackv5-form-unhide' => 'Паказаць гэтае паведамленьне',
10921141 'articlefeedbackv5-form-helpful' => 'Пазначаныя як карысныя ($1)',
@@ -1467,11 +1516,11 @@
14681517 'articlefeedbackv5-special-filter-abusive' => 'Merket evel dizereat ($1)',
14691518 'articlefeedbackv5-special-filter-helpful' => 'Talvoudus ($1)',
14701519 'articlefeedbackv5-special-filter-unhelpful' => 'Didalvez ($1)',
1471 - 'articlefeedbackv5-special-filter-needsoversight' => 'Ezhomm da evezhiañ ($1)',
 1520+ 'articlefeedbackv5-special-filter-requested' => 'Ezhomm da evezhiañ ($1)',
14721521 'articlefeedbackv5-special-filter-visible' => 'Gwelus an holl ($1)',
1473 - 'articlefeedbackv5-special-filter-invisible' => 'Kuzhet ($1)',
1474 - 'articlefeedbackv5-special-filter-deleted' => 'Evezhiet ($1)',
1475 - 'articlefeedbackv5-special-filter-undeleted' => 'Paouezet da evezhiañ ($1)',
 1522+ 'articlefeedbackv5-special-filter-hidden' => 'Kuzhet ($1)',
 1523+ 'articlefeedbackv5-special-filter-oversighted' => 'Evezhiet ($1)',
 1524+ 'articlefeedbackv5-special-filter-unoversighted' => 'Paouezet da evezhiañ ($1)',
14761525 'articlefeedbackv5-special-filter-declined' => 'Evezhiañ distaolet ($1)',
14771526 'articlefeedbackv5-special-filter-unhidden' => 'Anguzhet ($1)',
14781527 'articlefeedbackv5-special-sort-age' => 'Deiziad',
@@ -1486,10 +1535,8 @@
14871536 'articlefeedbackv5-special-more' => 'Diskouez evezhiadennoù all',
14881537 'articlefeedbackv5-special-pagetitle' => 'Soñj: $1',
14891538 'articlefeedbackv5-form-optionid' => 'Dibarzh $1',
1490 - 'articlefeedbackv5-hidden' => 'Kuzhet eo bet an evezhiadenn-mañ gant ur skridaozer aotreet',
1491 - 'articlefeedbackv5-deleted' => 'Diverket eo bet an evezhiadenn-mañ gant an evezhierien',
14921539 'articlefeedbackv5-form-hide' => 'Kuzhat ar gemennadenn-mañ',
1493 - 'articlefeedbackv5-form-unhide' => 'Diskouez an evezhiadenn-mañ',
 1540+ 'articlefeedbackv5-form-unhide' => 'Diguzhat an notenn-mañ',
14941541 'articlefeedbackv5-form-helpful' => 'Merkañ evel talvoudus ($1)',
14951542 'articlefeedbackv5-form-abuse' => 'Merkañ evel dizereat ($1)',
14961543 'articlefeedbackv5-form-abuse-masked' => 'Merkañ evel dizereat',
@@ -1546,16 +1593,18 @@
15471594 'articlefeedbackv5-timestamp-months' => '{{PLURAL: $1|$1 miz|$1 miz}}',
15481595 'articlefeedbackv5-timestamp-weeks' => '{{PLURAL: $1|$1 sizhunvezh|$1 sizhunvezh}}',
15491596 'articlefeedbackv5-timestamp-seconds' => "nebeutoc'h eget ur vunutenn",
 1597+ 'articlefeedbackv5-mask-text-hidden' => 'Kuzhet eo bet an notenn-mañ gant ur skridaozer aotreet',
 1598+ 'articlefeedbackv5-mask-text-oversight' => 'Evezhiet eo bet an notenn-mañ gant ur skridaozer aotreet',
15501599 'articlefeedbackv5-mask-postnumber' => 'Kemennadenn #$1',
15511600 'articlefeedbackv5-noteflyover-hide-caption' => 'Kuzhat ar gemennadenn-mañ',
15521601 'articlefeedbackv5-noteflyover-hide-label' => 'Ouzhpennañ un notenn',
15531602 'articlefeedbackv5-noteflyover-hide-placeholder' => "Perak 'ta kuzhat an notenn-mañ ?",
15541603 'articlefeedbackv5-noteflyover-hide-submit' => 'Kuzhat ar gemennadenn-mañ',
15551604 'articlefeedbackv5-noteflyover-hide-help' => "Gouzout hiroc'h",
1556 - 'articlefeedbackv5-noteflyover-show-caption' => 'Diskouez an evezhiadenn-mañ',
 1605+ 'articlefeedbackv5-noteflyover-show-caption' => 'Diguzhat an notenn-mañ',
15571606 'articlefeedbackv5-noteflyover-show-label' => 'Ouzhpennañ un notenn',
1558 - 'articlefeedbackv5-noteflyover-show-placeholder' => "Perak 'ta diskouez an notenn-mañ ?",
1559 - 'articlefeedbackv5-noteflyover-show-submit' => 'Diskouez an evezhiadenn-mañ',
 1607+ 'articlefeedbackv5-noteflyover-show-placeholder' => 'Perak diguzhat an notenn-mañ ?',
 1608+ 'articlefeedbackv5-noteflyover-show-submit' => 'Diguzhat an notenn-mañ',
15601609 'articlefeedbackv5-noteflyover-show-help' => "Gouzout hiroc'h",
15611610 'articlefeedbackv5-noteflyover-requestoversight-caption' => 'Goulenn ma vo evezhiet',
15621611 'articlefeedbackv5-noteflyover-requestoversight-label' => 'Ouzhpennañ un notenn',
@@ -1700,7 +1749,7 @@
17011750 'articlefeedbackv5-log-flag' => 'merket an evezhiadenn [[$1]] evel dizereat',
17021751 'articlefeedbackv5-log-unflag' => 'diverket dizereadegezh an evezhiadenn [[$1]]',
17031752 'articlefeedbackv5-activity-pane-header' => 'Marilh obererezh',
1704 - 'articlefeedbackv5-activity-feedback-info' => 'Evezhiadenn postet gant #$1',
 1753+ 'articlefeedbackv5-activity-feedback-info' => 'Evezhiadenn bost #$1 gant $2',
17051754 'articlefeedbackv5-activity-feedback-date' => 'Postet war $1',
17061755 'articlefeedbackv5-activity-permalink' => 'Peurliamm',
17071756 'articlefeedbackv5-activity-request' => 'Evezhiañ goulennet war',
@@ -1712,7 +1761,7 @@
17131762 'articlefeedbackv5-activity-unflag' => 'na verkañ an notenn-mañ ken war',
17141763 'articlefeedbackv5-activity-oversight' => 'evezhiañ an notenn-mañ war',
17151764 'articlefeedbackv5-activity-unoversight' => 'lemel an evezhiañ evit an notenn-mañ war',
1716 - 'articlefeedbackv5-activity-count' => '$1 oberiadenn war an notenn-mañ',
 1765+ 'articlefeedbackv5-activity-count' => '{{PLURAL:$1|$1 oberiadenn war an notenn-mañ|$1 oberiadenn war an notenn-mañ}}',
17171766 'articlefeedbackv5-activity-more' => "Diskouez muioc'h a obererezh",
17181767 'articlefeedbackv5-emailcapture-response-body' => "Demat deoc'h !
17191768
@@ -1736,6 +1785,10 @@
17371786
17381787 A wir galon ganeoc'h ha trugarez deoc'h,
17391788 Skipailh {{SITENAME}}",
 1789+ 'articlefeedbackv5-disable-flyover-title' => 'Lemel kuit an ostilh-mañ ?',
 1790+ 'articlefeedbackv5-disable-flyover-help-location' => 'Ma fenndibaboù > Neuz',
 1791+ 'articlefeedbackv5-disable-flyover-prefbutton' => "Mont da'm fenndibaboù",
 1792+ 'articlefeedbackv5-abusefilter-note-aftv5hide' => 'Kuzhet ent emgefre. Reolenn : $1',
17401793 );
17411794
17421795 /** Bosnian (Bosanski)
@@ -2203,8 +2256,8 @@
22042257 'articlefeedbackv5-error-email' => 'Diese E-Mail-Adresse ist ungültig.',
22052258 'articlefeedbackv5-error-blocked' => 'Gesperrte Benutzer können keine Rückmeldung geben.',
22062259 'articlefeedbackv5-error-validation' => 'Fehler beim Validieren.',
2207 - 'articlefeedbackv5-error-abuse' => 'Dein Kommentar verstößt gegen die $1. Bitte ändere ihn.',
2208 - 'articlefeedbackv5-error-abuse-linktext' => 'Richtlinie bezüglich des Missbrauchs einer Rückmeldung',
 2260+ 'articlefeedbackv5-error-abuse' => 'Dein Beitrag wurde vom Softwarefilter zurückgewiesen, der nahelegt, dass er möglicherweise Wikipedias $1 verletzt. Bitte überarbeite deinen Beitrag und versuche es noch einmal.',
 2261+ 'articlefeedbackv5-error-abuse-linktext' => 'Richtlinien zu Rückmeldungen',
22092262 'articlefeedbackv5-error-unknown' => 'Unbekannter Fehler.',
22102263 'articlefeedbackv5-error-submit' => 'Fehler beim Speichern.',
22112264 'articlefeedbackv5-error-nofeedback' => 'Bitte gib Deine Rückmeldung ein.',
@@ -2216,16 +2269,16 @@
22172270 'articlefeedbackv5-form-helpful-votes' => '{{PLURAL:$1|1 x Ja|$1 x Ja}} / {{PLURAL:$2|1 x Nein|$2 x Nein}}',
22182271 'articlefeedbackv5-special-add-feedback' => 'Gib eine Rückmeldung',
22192272 'articlefeedbackv5-special-filter-all' => 'Alle ($1)',
2220 - 'articlefeedbackv5-special-filter-notdeleted' => 'Alle ($1)',
 2273+ 'articlefeedbackv5-special-filter-notdeleted' => 'Alle (versteckt) ($1)',
22212274 'articlefeedbackv5-special-filter-comment' => 'Nur Kommentare ($1)',
22222275 'articlefeedbackv5-special-filter-abusive' => 'Als Missbrauch gekennzeichnet ($1)',
22232276 'articlefeedbackv5-special-filter-helpful' => 'Hilfreich ($1)',
22242277 'articlefeedbackv5-special-filter-unhelpful' => 'Nicht hilfreich ($1)',
2225 - 'articlefeedbackv5-special-filter-needsoversight' => "Löschung (''„oversight“'') gefordert ($1)",
 2278+ 'articlefeedbackv5-special-filter-requested' => "Löschung (''„oversight“'') gefordert ($1)",
22262279 'articlefeedbackv5-special-filter-visible' => 'Alle sichtbaren ($1)',
2227 - 'articlefeedbackv5-special-filter-invisible' => 'Versteckt ($1)',
2228 - 'articlefeedbackv5-special-filter-deleted' => 'Gelöscht ($1)',
2229 - 'articlefeedbackv5-special-filter-undeleted' => "Löschung (''„oversight“'') zurückgenommen ($1)",
 2280+ 'articlefeedbackv5-special-filter-hidden' => 'Versteckt ($1)',
 2281+ 'articlefeedbackv5-special-filter-oversighted' => 'Gelöscht ($1)',
 2282+ 'articlefeedbackv5-special-filter-unoversighted' => "Löschung (''„oversight“'') zurückgenommen ($1)",
22302283 'articlefeedbackv5-special-filter-declined' => "Löschung (''„oversight“'') abgelehnt ($1)",
22312284 'articlefeedbackv5-special-filter-unhidden' => 'Sichtbar gemacht ($1)',
22322285 'articlefeedbackv5-special-sort-age' => 'Datum',
@@ -2240,8 +2293,9 @@
22412294 'articlefeedbackv5-special-more' => 'Weitere Rückmeldungen anzeigen',
22422295 'articlefeedbackv5-special-pagetitle' => 'Rückmeldung: $1',
22432296 'articlefeedbackv5-form-optionid' => 'Option $1',
2244 - 'articlefeedbackv5-hidden' => 'Dieser Beitrag wurde von $1 am $2 ausgeblendet',
2245 - 'articlefeedbackv5-deleted' => 'Dieser Beitrag wurde von $1 am $2 gelöscht',
 2297+ 'articlefeedbackv5-status-hidden' => 'Dieser Beitrag wurde von $1 am $2 um $3 versteckt',
 2298+ 'articlefeedbackv5-status-autohide' => 'Dieser Beitrag wurde von $1 am $2 um $3 automatisch versteckt',
 2299+ 'articlefeedbackv5-status-autoflag' => 'Dieser Beitrag wurde von $1 am $2 um $3 automatisch gekennzeichnet',
22462300 'articlefeedbackv5-form-hide' => 'Diese Rückmeldung ausblenden',
22472301 'articlefeedbackv5-form-unhide' => 'Diesen Beitrag einblenden',
22482302 'articlefeedbackv5-form-helpful' => 'Als hilfreich markieren ($1)',
@@ -2272,6 +2326,7 @@
22732327 'articlefeedbackv5-error-loading-feedback' => 'Fehler beim Laden der Rückmeldung',
22742328 'articlefeedbackv5-invalid-feedback-id' => 'Ungültige Rückmeldungskennung',
22752329 'articlefeedbackv5-invalid-feedback-flag' => 'Ungültige Rückmeldungskennzeichnung',
 2330+ 'articlefeedbackv5-invalid-feedback-state' => 'Ungültiger Kennzeichnungsstatus zur Rückmeldung',
22762331 'articlefeedbackv5-go-to-article' => 'Seite ansehen',
22772332 'articlefeedbackv5-discussion-page' => 'Diskussion',
22782333 'articlefeedbackv5-whats-this' => 'Hilfe',
@@ -2303,7 +2358,8 @@
23042359 'articlefeedbackv5-mask-text-hidden' => 'Dieser Beitrag wurde von einem dazu berechtigten Benutzer ausgeblendet.',
23052360 'articlefeedbackv5-mask-text-oversight' => 'Dieser Beitrag wurde von einem dazu berechtigten Benutzer versteckt.',
23062361 'articlefeedbackv5-mask-postnumber' => 'Beitrag Nr. $1',
2307 - 'articlefeedbackv5-special-disclaimer' => 'Es handelt sich um einen Prototypen. Nutze ihn nicht, es sei denn, du wirst dazu eingeladen es zu tun.',
 2362+ 'articlefeedbackv5-special-disclaimer' => 'Dies ist ein Prototyp. Nutze ihn nicht; es sei denn, du wirst dazu eingeladen, es zu tun.',
 2363+ 'articlefeedbackv5-special-goback' => 'Zurück zur Liste der Rückmeldungen',
23082364 'articlefeedbackv5-noteflyover-hide-caption' => 'Diese Rückmeldung ausblenden',
23092365 'articlefeedbackv5-noteflyover-hide-label' => 'Eine Anmerkung hinzufügen',
23102366 'articlefeedbackv5-noteflyover-hide-placeholder' => 'Warum blendest du diese Rückmeldung aus?',
@@ -2311,7 +2367,7 @@
23122368 'articlefeedbackv5-noteflyover-hide-help' => 'Weitere Informationen',
23132369 'articlefeedbackv5-noteflyover-show-caption' => 'Diesen Beitrag einblenden',
23142370 'articlefeedbackv5-noteflyover-show-label' => 'Eine Anmerkung hinzufügen',
2315 - 'articlefeedbackv5-noteflyover-show-placeholder' => 'Warum blendest du diese Rückmeldung ein?',
 2371+ 'articlefeedbackv5-noteflyover-show-placeholder' => 'Warum stellst du diese Rückmeldung wieder her?',
23162372 'articlefeedbackv5-noteflyover-show-submit' => 'Diesen Beitrag einblenden',
23172373 'articlefeedbackv5-noteflyover-show-help' => 'Weitere Informationen',
23182374 'articlefeedbackv5-noteflyover-requestoversight-caption' => 'Löschung beantragen',
@@ -2375,6 +2431,10 @@
23762432 'articlefeedbackv5-bucket4-learn-to-edit' => 'Lerne, wie man Seiten bearbeitet',
23772433 'articlefeedbackv5-bucket4-form-submit' => 'Diese Seite bearbeiten',
23782434 'articlefeedbackv5-bucket4-help-tooltip-info' => 'Wikipedia möchte wissen, was du denkst. Hilf mit, diese Seite zu verbessern, indem du ein Autor wirst.',
 2435+ 'articlefeedbackv5-bucket4-noedit-title' => 'Hilf die Wikipedia zu verbessern',
 2436+ 'articlefeedbackv5-bucket4-noedit-teaser-line1' => 'Diese Website wird von Menschen wie dir erstellt.',
 2437+ 'articlefeedbackv5-bucket4-noedit-teaser-line2' => 'Kannst du uns helfen?',
 2438+ 'articlefeedbackv5-bucket4-noedit-form-submit' => 'Weitere Informationen',
23792439 'articlefeedbackv5-bucket5-form-switch-label' => 'Diese Seite einschätzen',
23802440 'articlefeedbackv5-bucket5-form-panel-title' => 'Diese Seite einschätzen',
23812441 'articlefeedbackv5-bucket5-form-panel-explanation' => 'Worum handelt es sich?',
@@ -2453,7 +2513,7 @@
24542514 'articlefeedbackv5-log-hidden' => 'versteckte die Rückmeldung [[$1]]',
24552515 'articlefeedbackv5-log-unhidden' => 'blendete die Rückmeldung [[$1]] wieder ein',
24562516 'articlefeedbackv5-log-decline' => 'lehnte den Löschantrag zur Rückmeldung [[$1]] ab',
2457 - 'articlefeedbackv5-log-request' => 'beantragte die Löschung der Rückmeldung [[$1]]',
 2517+ 'articlefeedbackv5-log-request' => 'beantragte die Löschung von [[$1]]',
24582518 'articlefeedbackv5-log-unrequest' => 'entfernte den Löschantrag zur Rückmeldung [[$1]]',
24592519 'articlefeedbackv5-log-flag' => 'kennzeichnete die Rückmeldung [[$1]] als Missbrauch',
24602520 'articlefeedbackv5-log-unflag' => 'entfernte die Missbrauchskennzeichnung der Rückmeldung [[$1]]',
@@ -2521,9 +2581,14 @@
25222582 'articlefeedbackv5-disable-flyover-title' => 'Diese Funktion entfernen?',
25232583 'articlefeedbackv5-disable-flyover-help-goto' => 'Um die $1 zu entfernen, geh zu',
25242584 'articlefeedbackv5-disable-flyover-help-emphasis-text' => 'Rückmeldungen zu Artikeln',
2525 - 'articlefeedbackv5-disable-flyover-help-location' => 'Einstellungen > Aussehen',
2526 - 'articlefeedbackv5-disable-flyover-help-direction' => 'und klicke auf',
 2585+ 'articlefeedbackv5-disable-flyover-help-location' => 'Meine Einstellungen > Aussehen',
25272586 'articlefeedbackv5-disable-flyover-prefbutton' => 'Zu meinen Einstellungen',
 2587+ 'abusefilter-edit-action-aftv5flagabuse' => '(Seiteneinschätzung) Automatisch als Missbrauch kennzeichnen',
 2588+ 'articlefeedbackv5-abusefilter-note-aftv5flagabuse' => 'Automatisch als Missbrauch gekennzeichnet. Regel: $1',
 2589+ 'abusefilter-edit-action-aftv5hide' => '(Seiteneinschätzung) Automatisch verstecken',
 2590+ 'articlefeedbackv5-abusefilter-note-aftv5hide' => 'Automatisch versteckt. Regel: $1',
 2591+ 'abusefilter-edit-action-aftv5requestoversight' => '(Seiteneinschätzung) Automatisch Löschung beantragen',
 2592+ 'articlefeedbackv5-abusefilter-note-aftv5requestoversight' => 'Automatisch Löschung beantragt. Regel: $1',
25282593 );
25292594
25302595 /** German (formal address) (‪Deutsch (Sie-Form)‬)
@@ -2541,12 +2606,12 @@
25422607 'articlefeedbackv5-cta2-confirmation-call' => 'Diese Website wird von Menschen wie Ihnen erstellt. Können Sie uns helfen?',
25432608 'articlefeedbackv5-cta3-confirmation-title' => 'Bitte nehmen Sie an einer kurzen Umfrage teil',
25442609 'articlefeedbackv5-error' => 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.',
2545 - 'articlefeedbackv5-error-abuse' => 'Ihr Kommentar verstößt gegen die $1. Bitte ändern Sie ihn.',
 2610+ 'articlefeedbackv5-error-abuse' => 'Ihr Beitrag wurde vom Softwarefilter zurückgewiesen, der nahelegt, dass er möglicherweise Wikipedias $1 verletzt. Bitte überarbeiten Sie Ihren Beitrag und versuchen es noch einmal.',
25462611 'articlefeedbackv5-error-nofeedback' => 'Bitte geben Sie Ihre Rückmeldung ein.',
25472612 'articlefeedbackv5-special-add-feedback' => 'Geben Sie ein Rückmeldung',
2548 - 'articlefeedbackv5-special-disclaimer' => 'Es handelt sich um einen Prototypen. Nutzen Sie ihn nicht, es sei denn, Sie werden dazu eingeladen es zu tun.',
 2613+ 'articlefeedbackv5-special-disclaimer' => 'Dies ist ein Prototyp. Nutzen Sie ihn nicht; es sei denn, Sie werden dazu eingeladen, es zu tun.',
25492614 'articlefeedbackv5-noteflyover-hide-placeholder' => 'Warum blenden Sie diese Rückmeldung aus?',
2550 - 'articlefeedbackv5-noteflyover-show-placeholder' => 'Warum blenden Sie diese Rückmeldung ein?',
 2615+ 'articlefeedbackv5-noteflyover-show-placeholder' => 'Warum stellen Sie diese Rückmeldung wieder her?',
25512616 'articlefeedbackv5-noteflyover-requestoversight-placeholder' => 'Warum beantragen Sie die Löschung?',
25522617 'articlefeedbackv5-noteflyover-unrequestoversight-placeholder' => 'Warum nehmen Sie den Antrag zur Löschung zurück?',
25532618 'articlefeedbackv5-noteflyover-oversight-placeholder' => 'Warum verstecken Sie diese Rückmeldung?',
@@ -2570,6 +2635,9 @@
25712636 'articlefeedbackv5-bucket4-teaser-line2' => 'Nur zu, versuchen Sie es und seien Sie mutig!',
25722637 'articlefeedbackv5-bucket4-learn-to-edit' => 'Lernen Sie wie man Seiten bearbeitet',
25732638 'articlefeedbackv5-bucket4-help-tooltip-info' => 'Wikipedia möchte wissen, was Sie denken. Helfen Sie mit, diese Seite zu verbessern, indem Sie ein Autor werden.',
 2639+ 'articlefeedbackv5-bucket4-noedit-title' => 'Helfen Sie die Wikipedia zu verbessern',
 2640+ 'articlefeedbackv5-bucket4-noedit-teaser-line1' => 'Diese Website wird von Menschen wie Ihnen erstellt.',
 2641+ 'articlefeedbackv5-bucket4-noedit-teaser-line2' => 'Können Sie uns helfen?',
25742642 'articlefeedbackv5-bucket5-form-panel-helpimprove' => 'Ich möchte dabei helfen, Wikipedia zu verbessern. Senden Sie mir bitte eine E-Mail. (optional)',
25752643 'articlefeedbackv5-bucket5-form-panel-helpimprove-note' => 'Wir werden Ihnen eine Bestätigungs-E-Mail senden. Wir geben Ihre E-Mail-Adresse, gemäß unserer $1, nicht an Dritte weiter.',
25762644 'articlefeedbackv5-bucket5-form-panel-pending' => 'Ihre Bewertung wurde noch nicht übertragen',
@@ -2657,8 +2725,8 @@
26582726 'articlefeedbackv5-error-email' => 'Toś ta e-mailowa adresa njejo płaśiwa.',
26592727 'articlefeedbackv5-error-blocked' => 'Zablokěrowane wužywarje njamógu komentary pósłaś.',
26602728 'articlefeedbackv5-error-validation' => 'Pśekontrolěrowańska zmólka.',
2661 - 'articlefeedbackv5-error-abuse' => 'Twój komentar pśejźo se pśeśiwo $1. Pšosym změń jen.',
2662 - 'articlefeedbackv5-error-abuse-linktext' => 'Pšawidła za znjewužywanje komentarow',
 2729+ 'articlefeedbackv5-error-abuse' => 'Twój komentar jo se pśez softwarowy filter wótpokazał, kótaryž měni, až wón jo pśeśiwo $1 Wikipedije pśejšeł. Pšosym pśeglědaj swój komentar a wopytaj hyšći raz.',
 2730+ 'articlefeedbackv5-error-abuse-linktext' => 'směrnicam za komentary',
26632731 'articlefeedbackv5-error-unknown' => 'Njeznata zmólka.',
26642732 'articlefeedbackv5-error-submit' => 'Zmólka pśi wótesćełanju formulara.',
26652733 'articlefeedbackv5-error-nofeedback' => 'Pšosym zapódaj swój komentar.',
@@ -2675,10 +2743,10 @@
26762744 'articlefeedbackv5-special-filter-abusive' => 'Ako znjewužywanje wóznamjenjony ($1)',
26772745 'articlefeedbackv5-special-filter-helpful' => 'Pomocniwy ($1)',
26782746 'articlefeedbackv5-special-filter-unhelpful' => 'Njepomocniwy ($1)',
2679 - 'articlefeedbackv5-special-filter-needsoversight' => 'Doglědowanje pominane ($1)',
 2747+ 'articlefeedbackv5-special-filter-requested' => 'Doglědowanje pominane ($1)',
26802748 'articlefeedbackv5-special-filter-visible' => 'Wšykne widobne ($1)',
2681 - 'articlefeedbackv5-special-filter-invisible' => 'Schowany ($1)',
2682 - 'articlefeedbackv5-special-filter-deleted' => 'Doglědowany ($1)',
 2749+ 'articlefeedbackv5-special-filter-hidden' => 'Schowany ($1)',
 2750+ 'articlefeedbackv5-special-filter-oversighted' => 'Doglědowany ($1)',
26832751 'articlefeedbackv5-special-filter-declined' => 'Doglědowanje wótpokazane ($1)',
26842752 'articlefeedbackv5-special-filter-unhidden' => 'Zasej pokazany ($1)',
26852753 'articlefeedbackv5-special-sort-age' => 'Datum',
@@ -2693,8 +2761,6 @@
26942762 'articlefeedbackv5-special-more' => 'Dalšne powěsći pokazaś',
26952763 'articlefeedbackv5-special-pagetitle' => 'Komentary: $1',
26962764 'articlefeedbackv5-form-optionid' => 'Opcija $1',
2697 - 'articlefeedbackv5-hidden' => 'Toś ten pśinosk jo se wót $1 dnja $2 schował',
2698 - 'articlefeedbackv5-deleted' => 'Toś ten pśinosk jo se wót $1 dnja $2 wulašował',
26992765 'articlefeedbackv5-form-hide' => 'Toś ten pśinosk schowaś',
27002766 'articlefeedbackv5-form-unhide' => 'Toś tu powěsć pokazaś',
27012767 'articlefeedbackv5-form-helpful' => 'Ako pomocniwy markěrowaś ($1)',
@@ -3068,7 +3134,7 @@
30693135 'articlefeedbackv5-special-filter-notdeleted' => 'Ĉio ($1)',
30703136 'articlefeedbackv5-special-filter-abusive' => 'Marki kiel misuzon ($1)',
30713137 'articlefeedbackv5-special-filter-visible' => 'Ĉio videbla ($1)',
3072 - 'articlefeedbackv5-special-filter-invisible' => 'Kaŝita ($1)',
 3138+ 'articlefeedbackv5-special-filter-hidden' => 'Kaŝita ($1)',
30733139 'articlefeedbackv5-special-sort-age' => 'Dato',
30743140 'articlefeedbackv5-special-sort-rating' => 'Takso',
30753141 'articlefeedbackv5-special-sort-label-before' => 'Ordigi laŭ:',
@@ -3273,8 +3339,8 @@
32743340 'articlefeedbackv5-error-email' => 'La dirección de correo electrónico no es válida.',
32753341 'articlefeedbackv5-error-blocked' => 'Los usuarios bloqueados no pueden enviar comentarios.',
32763342 'articlefeedbackv5-error-validation' => 'Error de validación',
3277 - 'articlefeedbackv5-error-abuse' => 'Su comentario viola la $1. Por favor revíselo.',
3278 - 'articlefeedbackv5-error-abuse-linktext' => 'política de abuso de los comentarios',
 3343+ 'articlefeedbackv5-error-abuse' => 'Su mensaje (post) ha sido rechazado por un filtro de software que sugiere que puede haber violado $1 de Wikipedia. Revise su post e inténtelo de nuevo.',
 3344+ 'articlefeedbackv5-error-abuse-linktext' => 'guía para los comentarios',
32793345 'articlefeedbackv5-error-unknown' => 'Error desconocido.',
32803346 'articlefeedbackv5-error-submit' => 'Error de envío de formulario.',
32813347 'articlefeedbackv5-error-nofeedback' => 'Introduce tus comentarios.',
@@ -3286,16 +3352,17 @@
32873353 'articlefeedbackv5-form-helpful-votes' => '{{PLURAL:$1|1 sí|$1 sí}} / {{PLURAL:$2|1 no|$2 no}}',
32883354 'articlefeedbackv5-special-add-feedback' => 'Envíe su comentario',
32893355 'articlefeedbackv5-special-filter-all' => 'Todos (supervisión) ($1)',
3290 - 'articlefeedbackv5-special-filter-notdeleted' => 'Todos ($1)',
 3356+ 'articlefeedbackv5-special-filter-notdeleted' => 'Todos (ocultos) ($1)',
32913357 'articlefeedbackv5-special-filter-comment' => 'Sólo comentarios ($1)',
32923358 'articlefeedbackv5-special-filter-abusive' => 'Marcado como inadecuado ($1)',
32933359 'articlefeedbackv5-special-filter-helpful' => 'Útil ($1)',
32943360 'articlefeedbackv5-special-filter-unhelpful' => 'Inútil ($1)',
3295 - 'articlefeedbackv5-special-filter-needsoversight' => 'Supervisión solicitada ($1)',
 3361+ 'articlefeedbackv5-special-filter-requested' => 'Supervisión solicitada ($1)',
 3362+ 'articlefeedbackv5-special-filter-unrequested' => 'Supervisión no solicitada ($1)',
32963363 'articlefeedbackv5-special-filter-visible' => 'Todo visible ($1)',
3297 - 'articlefeedbackv5-special-filter-invisible' => 'Oculto ($1)',
3298 - 'articlefeedbackv5-special-filter-deleted' => 'Supervisado ($1)',
3299 - 'articlefeedbackv5-special-filter-undeleted' => 'No supervisado ($1)',
 3364+ 'articlefeedbackv5-special-filter-hidden' => 'Oculto ($1)',
 3365+ 'articlefeedbackv5-special-filter-oversighted' => 'Supervisado ($1)',
 3366+ 'articlefeedbackv5-special-filter-unoversighted' => 'No supervisado ($1)',
33003367 'articlefeedbackv5-special-filter-declined' => 'Supervisión rechazada ($1)',
33013368 'articlefeedbackv5-special-filter-unhidden' => 'No ocultado ($1)',
33023369 'articlefeedbackv5-special-sort-age' => 'Fecha',
@@ -3310,8 +3377,15 @@
33113378 'articlefeedbackv5-special-more' => 'Mostrar más entradas',
33123379 'articlefeedbackv5-special-pagetitle' => 'Comentarios:$1',
33133380 'articlefeedbackv5-form-optionid' => 'Opción $1',
3314 - 'articlefeedbackv5-hidden' => 'Esta entrada (post) fue ocultada por $1 en $2',
3315 - 'articlefeedbackv5-deleted' => 'Esta entrada (post) fue eliminada por $1 en $2',
 3381+ 'articlefeedbackv5-status-hidden' => 'Esta entrada (post) fue ocultada por $1 en $2 el $3',
 3382+ 'articlefeedbackv5-status-unhidden' => 'Esta entrada (post) fue desocultada por $1 en $2 el $3',
 3383+ 'articlefeedbackv5-status-request' => 'La supervisión para esta entrada (post) fue solicitada por $1 en $2 el $3',
 3384+ 'articlefeedbackv5-status-unrequest' => 'La anulación de la solicitud de supervisión para esta entrada (post) fue realizada por $1 en $2 el $3',
 3385+ 'articlefeedbackv5-status-declined' => 'La supervisión para esta entrada (post) fue rechazada por $1 en $2 el $3',
 3386+ 'articlefeedbackv5-status-autohide' => 'Esta entrada (post) fue auto-ocultada por $1 en $2 el $3',
 3387+ 'articlefeedbackv5-status-deleted' => 'Esta entrada (post) fue supervisada por $1 en $2 el $3',
 3388+ 'articlefeedbackv5-status-undeleted' => 'Se anuló la supervisión de esta entrada (post) por $1 en $2 el $3',
 3389+ 'articlefeedbackv5-status-autoflag' => 'Esta entrada (post) fue desmarcada por $1 en $2 el $3',
33163390 'articlefeedbackv5-form-hide' => 'Ocultar esta entrada (post)',
33173391 'articlefeedbackv5-form-unhide' => 'Descubrir esta entrada (post)',
33183392 'articlefeedbackv5-form-helpful' => 'Marcar como útil ($1)',
@@ -3374,6 +3448,7 @@
33753449 'articlefeedbackv5-mask-text-oversight' => 'Esta entrada (post) fue supervisada por un editor autorizado',
33763450 'articlefeedbackv5-mask-postnumber' => "Mensaje (''post'') #$1",
33773451 'articlefeedbackv5-special-disclaimer' => 'Esto es un prototipo. Por favor no lo utilice a menos que ha sido invitado para hacerlo.',
 3452+ 'articlefeedbackv5-special-goback' => 'volver a la lista de comentarios',
33783453 'articlefeedbackv5-noteflyover-hide-caption' => 'Ocultar esta entrada (post)',
33793454 'articlefeedbackv5-noteflyover-hide-label' => 'Agregar una nota',
33803455 'articlefeedbackv5-noteflyover-hide-placeholder' => '¿Por qué está ocultando esta entrada de blog (post)?',
@@ -3522,9 +3597,9 @@
35233598 'articlefeedbackv5-log-unoversight' => 'eliminado el estado de supervisión [[$1]] del comentario',
35243599 'articlefeedbackv5-log-hidden' => 'ocultar el comentario [[$1]]',
35253600 'articlefeedbackv5-log-unhidden' => 'desocultar el comentario [[$1]]',
3526 - 'articlefeedbackv5-log-decline' => 'rechazada la petición de supervisión del comentario [[$1]]',
3527 - 'articlefeedbackv5-log-request' => 'solicitada supervisión del comentario [[$1]]',
3528 - 'articlefeedbackv5-log-unrequest' => 'eliminada la supervisión solicitada del comentario [[$1]]',
 3601+ 'articlefeedbackv5-log-decline' => 'rechazada la supervisión del comentario [[$1]]',
 3602+ 'articlefeedbackv5-log-request' => 'solicitada supervisión de [[$1]]',
 3603+ 'articlefeedbackv5-log-unrequest' => 'Anulada la supervisión del comentario [[$1]]',
35293604 'articlefeedbackv5-log-flag' => 'marcado el comentario [[$1]] como abusivo',
35303605 'articlefeedbackv5-log-unflag' => 'desmarcado el comentario [[$1]] como abusivo',
35313606 'articlefeedbackv5-activity-pane-header' => 'Registro de actividad',
@@ -3590,6 +3665,12 @@
35913666 'articlefeedbackv5-disable-flyover-help-location' => 'Mis preferencias > Aspecto',
35923667 'articlefeedbackv5-disable-flyover-help-direction' => 'y verifique',
35933668 'articlefeedbackv5-disable-flyover-prefbutton' => 'Ir a Mis preferencias',
 3669+ 'abusefilter-edit-action-aftv5flagabuse' => '(Comentarios del artículo) Marcado automático como abusivo',
 3670+ 'articlefeedbackv5-abusefilter-note-aftv5flagabuse' => 'Marcado automáticamente como abuso. Regla: $1',
 3671+ 'abusefilter-edit-action-aftv5hide' => '(Comentarios del artículo) Ocultar automáticamente',
 3672+ 'articlefeedbackv5-abusefilter-note-aftv5hide' => 'Ocultado automáticamente. Regla: $1',
 3673+ 'abusefilter-edit-action-aftv5requestoversight' => '(Comentarios del artículo) Solicitud de supervisión automática',
 3674+ 'articlefeedbackv5-abusefilter-note-aftv5requestoversight' => 'Supervisión solicitada automáticamente. Regla: $1',
35943675 );
35953676
35963677 /** Estonian (Eesti)
@@ -3771,6 +3852,7 @@
37723853 'articlefeedbackv5-error-unknown' => 'خطای ناشناخته.',
37733854 'articlefeedbackv5-error-submit' => 'خطای در فرستادن فرم.',
37743855 'articlefeedbackv5-error-nofeedback' => 'خواهشمندیم بازخورد خود را وارد کنید.',
 3856+ 'articlefeedbackv5-error-flagging' => 'خطا در پرچم‌دارکردن بازخورد.',
37753857 'articlefeedbackv5-form-tools-label' => 'ابزارها',
37763858 'articlefeedbackv5-form-helpful-yes-label' => 'بله',
37773859 'articlefeedbackv5-form-helpful-no-label' => 'خیر',
@@ -3778,8 +3860,10 @@
37793861 'articlefeedbackv5-special-filter-all' => 'همه (نظارت) ($1)',
37803862 'articlefeedbackv5-special-filter-notdeleted' => 'همه ($1)',
37813863 'articlefeedbackv5-special-filter-comment' => 'فقط نظرات ($1)',
 3864+ 'articlefeedbackv5-special-filter-helpful' => 'مفید ($1)',
 3865+ 'articlefeedbackv5-special-filter-unhelpful' => 'غیرمفید ($1)',
37823866 'articlefeedbackv5-special-filter-visible' => 'همگی قابل دیدن ($1)',
3783 - 'articlefeedbackv5-special-filter-invisible' => 'پنهان ($1)',
 3867+ 'articlefeedbackv5-special-filter-hidden' => 'پنهان ($1)',
37843868 'articlefeedbackv5-special-sort-age' => 'تاریخ',
37853869 'articlefeedbackv5-special-sort-helpful' => 'سودمند',
37863870 'articlefeedbackv5-special-sort-rating' => 'ارزش‌دهی',
@@ -3835,9 +3919,13 @@
38363920 'articlefeedbackv5-timestamp-months' => '{{PLURAL:$1|$1 ماه|$1 ماه}}',
38373921 'articlefeedbackv5-timestamp-weeks' => '{{PLURAL:$1|$1 هفته|$1 هفته}}',
38383922 'articlefeedbackv5-timestamp-seconds' => 'کمتر از ۱ دقیقه',
 3923+ 'articlefeedbackv5-mask-postnumber' => 'پست #$1',
38393924 'articlefeedbackv5-noteflyover-hide-caption' => 'پنهان کردن این پست',
38403925 'articlefeedbackv5-noteflyover-hide-label' => 'افزودن یادداشت',
 3926+ 'articlefeedbackv5-noteflyover-hide-submit' => 'پنهان‌کردن این پست',
38413927 'articlefeedbackv5-noteflyover-hide-help' => 'اطلاعات بیشتر',
 3928+ 'articlefeedbackv5-noteflyover-show-caption' => 'آشکارکردن این پست',
 3929+ 'articlefeedbackv5-noteflyover-show-label' => 'افزودن یادداشت',
38423930 'articlefeedbackv5-noteflyover-show-help' => 'اطلاعات بیشتر',
38433931 'articlefeedbackv5-noteflyover-requestoversight-label' => 'افزودن یادداشت',
38443932 'articlefeedbackv5-noteflyover-requestoversight-help' => 'اطلاعات بیشتر',
@@ -3950,7 +4038,11 @@
39514039 'articlefeedbackv5-toolbox-linktext' => 'بهبود این صفحه',
39524040 'articlefeedbackv5-disable-preference' => 'ابزار بازخورد مقاله را در صفحه‌ها نشان نده',
39534041 'right-aftv5-hide-feedback' => 'پنهان‌کردن بازخورد',
 4042+ 'right-aftv5-delete-feedback' => 'حذف بازخورد',
 4043+ 'right-aftv5-see-deleted-feedback' => 'نمایش بازخورد حذف‌شده',
 4044+ 'right-aftv5-see-hidden-feedback' => 'نمایش بازخورد پنهان',
39544045 'articlefeedbackv5-activity-pane-header' => 'سیاههٔ فعالیت',
 4046+ 'articlefeedbackv5-activity-more' => 'نمایش فعالیت بیشتر',
39554047 'articlefeedbackv5-emailcapture-response-body' => 'سلام!
39564048
39574049 از شما برای ابراز علاقه در بهبود {{SITENAME}} تشکر می‌کنم.
@@ -3973,6 +4065,8 @@
39744066
39754067 با تشکر از شما، بهترین آرزوها را برایتان داریم،
39764068 گروه {{SITENAME}}',
 4069+ 'articlefeedbackv5-disable-flyover-help-emphasis-text' => 'ارزیابی مقاله‌ها',
 4070+ 'articlefeedbackv5-disable-flyover-prefbutton' => 'رفتن به ترجیحات من',
39774071 );
39784072
39794073 /** Finnish (Suomi)
@@ -4180,7 +4274,9 @@
41814275 );
41824276
41834277 /** French (Français)
 4278+ * @author Cquoi
41844279 * @author Crochet.david
 4280+ * @author Dereckson
41854281 * @author Faure.thomas
41864282 * @author Gomoko
41874283 * @author Grondin
@@ -4212,8 +4308,8 @@
42134309 'articlefeedbackv5-error-email' => 'Cette adresse de courriel n’est pas valide.',
42144310 'articlefeedbackv5-error-blocked' => 'Les utilisateurs bloqués ne doivent pas pouvoir envoyer de commentaires.',
42154311 'articlefeedbackv5-error-validation' => 'Erreur de validation.',
4216 - 'articlefeedbackv5-error-abuse' => 'Votre commentaire viole la $1. Veuillez le revoir.',
4217 - 'articlefeedbackv5-error-abuse-linktext' => "politique d'abus sur les commentaires",
 4312+ 'articlefeedbackv5-error-abuse' => "Votre publication a été rejetée par un logiciel de filtrage qui suggère qu'elle peut violer $1 de Wikipédia. Veuillez revoir votre proposition et essayer de nouveau.",
 4313+ 'articlefeedbackv5-error-abuse-linktext' => 'lignes de conduite sur les commentaires',
42184314 'articlefeedbackv5-error-unknown' => 'Erreur inconnue.',
42194315 'articlefeedbackv5-error-submit' => 'Erreur lors de la soumission du formulaire.',
42204316 'articlefeedbackv5-error-nofeedback' => 'Veuillez entrer votre avis.',
@@ -4225,16 +4321,17 @@
42264322 'articlefeedbackv5-form-helpful-votes' => '{{PLURAL:$1|1 oui|$1 oui}} / {{PLURAL:$2|1 non|$2 non}}',
42274323 'articlefeedbackv5-special-add-feedback' => 'Ajouter votre avis',
42284324 'articlefeedbackv5-special-filter-all' => 'Tous (surveillance) ($1)',
4229 - 'articlefeedbackv5-special-filter-notdeleted' => 'Tous ($1)',
 4325+ 'articlefeedbackv5-special-filter-notdeleted' => 'Tous (caché) ( $1 )',
42304326 'articlefeedbackv5-special-filter-comment' => 'Commentaires seulement ($1)',
42314327 'articlefeedbackv5-special-filter-abusive' => 'Marqué comme abusif ($1)',
42324328 'articlefeedbackv5-special-filter-helpful' => 'Utile ($1)',
42334329 'articlefeedbackv5-special-filter-unhelpful' => 'Inutile ($1)',
4234 - 'articlefeedbackv5-special-filter-needsoversight' => 'Surveillance demandée ($1)',
 4330+ 'articlefeedbackv5-special-filter-requested' => 'Surveillance demandée ($1)',
 4331+ 'articlefeedbackv5-special-filter-unrequested' => 'Surveillance non demandée ($1)',
42354332 'articlefeedbackv5-special-filter-visible' => 'Tous visibles ($1)',
4236 - 'articlefeedbackv5-special-filter-invisible' => 'Caché ($1)',
4237 - 'articlefeedbackv5-special-filter-deleted' => 'Surveillé ($1)',
4238 - 'articlefeedbackv5-special-filter-undeleted' => 'Plus surveillé ($1)',
 4333+ 'articlefeedbackv5-special-filter-hidden' => 'Caché ($1)',
 4334+ 'articlefeedbackv5-special-filter-oversighted' => 'Surveillé ($1)',
 4335+ 'articlefeedbackv5-special-filter-unoversighted' => 'Plus surveillé ($1)',
42394336 'articlefeedbackv5-special-filter-declined' => 'Surveillance refusée ($1)',
42404337 'articlefeedbackv5-special-filter-unhidden' => 'Non-masqué ($1)',
42414338 'articlefeedbackv5-special-sort-age' => 'Date',
@@ -4249,8 +4346,9 @@
42504347 'articlefeedbackv5-special-more' => 'Afficher davantage de notes',
42514348 'articlefeedbackv5-special-pagetitle' => 'Avis: $1',
42524349 'articlefeedbackv5-form-optionid' => 'Option $1',
4253 - 'articlefeedbackv5-hidden' => 'Cette note a été masquée par $1 sur $2',
4254 - 'articlefeedbackv5-deleted' => 'Cette note a été supprimée par $1 sur $2',
 4350+ 'articlefeedbackv5-status-hidden' => 'Ce commentaire a été masqué par $1 le $2 à $3',
 4351+ 'articlefeedbackv5-status-unhidden' => 'Ce commentaire a été ré-affiché par $1 le $2',
 4352+ 'articlefeedbackv5-status-request' => 'La surveillance de ce commentaire a été demandée par $1 le $2 à $3',
42554353 'articlefeedbackv5-form-hide' => 'Masquer cette publication',
42564354 'articlefeedbackv5-form-unhide' => 'Ne plus cacher ce mot',
42574355 'articlefeedbackv5-form-helpful' => 'Marquer comme utile ($1)',
@@ -4313,6 +4411,7 @@
43144412 'articlefeedbackv5-mask-text-oversight' => 'Cette note a été surveillée par un éditeur agréé',
43154413 'articlefeedbackv5-mask-postnumber' => 'Note #$1',
43164414 'articlefeedbackv5-special-disclaimer' => "Il s'agit d'un prototype. Veuillez ne pas l'utiliser sauf si vous y avez été invités.",
 4415+ 'articlefeedbackv5-special-goback' => 'Revenir à la liste des commentaires',
43174416 'articlefeedbackv5-noteflyover-hide-caption' => 'Cacher cette note',
43184417 'articlefeedbackv5-noteflyover-hide-label' => 'Ajouter une note',
43194418 'articlefeedbackv5-noteflyover-hide-placeholder' => 'Pourquoi cachez-vous cette note?',
@@ -4529,6 +4628,12 @@
45304629 'articlefeedbackv5-disable-flyover-help-location' => 'Mes Préférences > Apparence',
45314630 'articlefeedbackv5-disable-flyover-help-direction' => 'et cocher',
45324631 'articlefeedbackv5-disable-flyover-prefbutton' => 'Aller à mes préférences',
 4632+ 'abusefilter-edit-action-aftv5flagabuse' => "(Commentaires de l'article) Marquage automatique comme abusif",
 4633+ 'articlefeedbackv5-abusefilter-note-aftv5flagabuse' => 'Automatiquement marqué comme abusif. Règle: $1',
 4634+ 'abusefilter-edit-action-aftv5hide' => "(Commentaires de l'article) Masquage automatique",
 4635+ 'articlefeedbackv5-abusefilter-note-aftv5hide' => 'Automatiquement caché. Règle: $1',
 4636+ 'abusefilter-edit-action-aftv5requestoversight' => "(Commentaires de l'article) Surveillance demandée automatiquement",
 4637+ 'articlefeedbackv5-abusefilter-note-aftv5requestoversight' => 'Surveillance automatiquement demandée. Règle: $1',
45334638 );
45344639
45354640 /** Franco-Provençal (Arpetan)
@@ -4745,8 +4850,8 @@
47464851 'articlefeedbackv5-error-email' => 'O enderezo de correo electrónico é incorrecto.',
47474852 'articlefeedbackv5-error-blocked' => 'Os usuarios bloqueados non poden enviar comentarios.',
47484853 'articlefeedbackv5-error-validation' => 'Erro de validación.',
4749 - 'articlefeedbackv5-error-abuse' => 'O seu comentario incumpre a $1. Revise as súas palabras.',
4750 - 'articlefeedbackv5-error-abuse-linktext' => 'política de abuso',
 4854+ 'articlefeedbackv5-error-abuse' => 'O filtro do software rexeitou o seu comentario porque incumpre as $1 da Wikipedia. Revise as súas palabras e inténteo de novo.',
 4855+ 'articlefeedbackv5-error-abuse-linktext' => 'normas sobre comentarios',
47514856 'articlefeedbackv5-error-unknown' => 'Erro descoñecido.',
47524857 'articlefeedbackv5-error-submit' => 'Erro no envío do formulario.',
47534858 'articlefeedbackv5-error-nofeedback' => 'Dea a súa opinión.',
@@ -4763,11 +4868,11 @@
47644869 'articlefeedbackv5-special-filter-abusive' => 'Marcado como abusivo ($1)',
47654870 'articlefeedbackv5-special-filter-helpful' => 'Útil ($1)',
47664871 'articlefeedbackv5-special-filter-unhelpful' => 'Inútil ($1)',
4767 - 'articlefeedbackv5-special-filter-needsoversight' => 'Supervisión solicitada ($1)',
 4872+ 'articlefeedbackv5-special-filter-requested' => 'Supervisión solicitada ($1)',
47684873 'articlefeedbackv5-special-filter-visible' => 'Todos os visibles ($1)',
4769 - 'articlefeedbackv5-special-filter-invisible' => 'Agochado ($1)',
4770 - 'articlefeedbackv5-special-filter-deleted' => 'Supervisado ($1)',
4771 - 'articlefeedbackv5-special-filter-undeleted' => 'Supervisión retirada ($1)',
 4874+ 'articlefeedbackv5-special-filter-hidden' => 'Agochado ($1)',
 4875+ 'articlefeedbackv5-special-filter-oversighted' => 'Supervisado ($1)',
 4876+ 'articlefeedbackv5-special-filter-unoversighted' => 'Supervisión retirada ($1)',
47724877 'articlefeedbackv5-special-filter-declined' => 'Supervisión rexeitada ($1)',
47734878 'articlefeedbackv5-special-filter-unhidden' => 'Descuberto ($1)',
47744879 'articlefeedbackv5-special-sort-age' => 'Data',
@@ -4782,8 +4887,6 @@
47834888 'articlefeedbackv5-special-more' => 'Mostrar máis mensaxes',
47844889 'articlefeedbackv5-special-pagetitle' => 'Comentarios: $1',
47854890 'articlefeedbackv5-form-optionid' => 'Opción $1',
4786 - 'articlefeedbackv5-hidden' => '$1 agochou esta mensaxe o $2',
4787 - 'articlefeedbackv5-deleted' => '$1 borrou esta mensaxe o $2',
47884891 'articlefeedbackv5-form-hide' => 'Agochar esta mensaxe',
47894892 'articlefeedbackv5-form-unhide' => 'Descubrir esta mensaxe',
47904893 'articlefeedbackv5-form-helpful' => 'Marcar como útil ($1)',
@@ -4846,6 +4949,7 @@
48474950 'articlefeedbackv5-mask-text-oversight' => 'Un editor autorizado supervisou esta mensaxe',
48484951 'articlefeedbackv5-mask-postnumber' => 'Mensaxe nº$1',
48494952 'articlefeedbackv5-special-disclaimer' => 'Isto é un prototipo. Non o use a menos que o convidasen a facelo.',
 4953+ 'articlefeedbackv5-special-goback' => 'Volver á lista de comentarios',
48504954 'articlefeedbackv5-noteflyover-hide-caption' => 'Agochar esta mensaxe',
48514955 'articlefeedbackv5-noteflyover-hide-label' => 'Engadir unha nota',
48524956 'articlefeedbackv5-noteflyover-hide-placeholder' => 'Por que agocha esta mensaxe?',
@@ -5066,11 +5170,17 @@
50675171 está en probas na Wikipedia en inglés e que a páxina de comentarios
50685172 non a pode ver a comunidade durante este período de probas.',
50695173 'articlefeedbackv5-disable-flyover-title' => 'Quere eliminar a ferramenta?',
5070 - 'articlefeedbackv5-disable-flyover-help-goto' => 'Para eliminar a $1, vaia a',
 5174+ 'articlefeedbackv5-disable-flyover-help' => 'Para eliminar a $1, vaia ata $2 e marque a caixa "$3"',
50715175 'articlefeedbackv5-disable-flyover-help-emphasis-text' => 'ferramenta de avaliación de artigos',
50725176 'articlefeedbackv5-disable-flyover-help-location' => 'As miñas preferencias > Aparencia',
50735177 'articlefeedbackv5-disable-flyover-help-direction' => 'e seleccione',
50745178 'articlefeedbackv5-disable-flyover-prefbutton' => 'Ir ás preferencias',
 5179+ 'abusefilter-edit-action-aftv5flagabuse' => '(Avaliación de artigos) Marcado automaticamente como abusivo',
 5180+ 'articlefeedbackv5-abusefilter-note-aftv5flagabuse' => 'Marcado automaticamente como abusivo. Regra: $1',
 5181+ 'abusefilter-edit-action-aftv5hide' => '(Avaliación de artigos) Agochado automaticamente',
 5182+ 'articlefeedbackv5-abusefilter-note-aftv5hide' => 'Agochado automaticamente. Regra: $1',
 5183+ 'abusefilter-edit-action-aftv5requestoversight' => '(Avaliación de artigos) Supervisión solicitada automaticamente',
 5184+ 'articlefeedbackv5-abusefilter-note-aftv5requestoversight' => 'Supervisión solicitada automaticamente. Regra: $1',
50755185 );
50765186
50775187 /** Swiss German (Alemannisch)
@@ -5195,7 +5305,7 @@
51965306 'articlefeedbackv5-error-email' => 'כתובת דוא"ל זו אינה תקינה.',
51975307 'articlefeedbackv5-error-blocked' => 'משתמשים חסומים אינם יכולים לשלוח משוב.',
51985308 'articlefeedbackv5-error-validation' => 'שגיאת אימות.',
5199 - 'articlefeedbackv5-error-abuse' => 'ההערה שלך מפרה את $1. נא לתקן אותה.',
 5309+ 'articlefeedbackv5-error-abuse' => 'תוכנת סינון דחתה את ההערה שלך, כי נראה שהיא מפרה את ה$1 של ויקיפדיה. נא לשנות את ההערה ולנסות שוב.',
52005310 'articlefeedbackv5-error-abuse-linktext' => 'מדיניות השימוש לרעה במשוב',
52015311 'articlefeedbackv5-error-unknown' => 'שגיאה לא מוכרת.',
52025312 'articlefeedbackv5-error-submit' => 'שגיאה בהזנת הטופס.',
@@ -5213,11 +5323,11 @@
52145324 'articlefeedbackv5-special-filter-abusive' => 'סומן כפוגעני ($1)',
52155325 'articlefeedbackv5-special-filter-helpful' => 'מועיל ($1)',
52165326 'articlefeedbackv5-special-filter-unhelpful' => 'לא מועיל ($1)',
5217 - 'articlefeedbackv5-special-filter-needsoversight' => 'נדרשת ביקורת ($1)',
 5327+ 'articlefeedbackv5-special-filter-requested' => 'נדרשת ביקורת ($1)',
52185328 'articlefeedbackv5-special-filter-visible' => 'הכול גלוי ($1)',
5219 - 'articlefeedbackv5-special-filter-invisible' => 'מוסתר ($1)',
5220 - 'articlefeedbackv5-special-filter-deleted' => 'הוסתר לאחר ביקורת ($1)',
5221 - 'articlefeedbackv5-special-filter-undeleted' => 'הסתרה לאחר ביקורת בוטלה ($1)',
 5329+ 'articlefeedbackv5-special-filter-hidden' => 'מוסתר ($1)',
 5330+ 'articlefeedbackv5-special-filter-oversighted' => 'הוסתר לאחר ביקורת ($1)',
 5331+ 'articlefeedbackv5-special-filter-unoversighted' => 'הסתרה לאחר ביקורת בוטלה ($1)',
52225332 'articlefeedbackv5-special-filter-declined' => 'בקשת ביקורת והסתרה נדתחה ($1)',
52235333 'articlefeedbackv5-special-filter-unhidden' => 'ההסתרה בוטלה ($1)',
52245334 'articlefeedbackv5-special-sort-age' => 'תאריך',
@@ -5232,8 +5342,6 @@
52335343 'articlefeedbackv5-special-more' => 'רשומות נוספות',
52345344 'articlefeedbackv5-special-pagetitle' => 'משוב: $1',
52355345 'articlefeedbackv5-form-optionid' => 'אפשרות $1',
5236 - 'articlefeedbackv5-hidden' => 'הרשומה הזאת הוסתרה על־ידי עורך מורשה',
5237 - 'articlefeedbackv5-deleted' => 'הרשומה הזאת נמחקה על־ידי $1 ב־$2',
52385346 'articlefeedbackv5-form-hide' => 'הסתרת הרשומה הזאת',
52395347 'articlefeedbackv5-form-unhide' => 'לבטל את הסתרת הרשומה הזאת',
52405348 'articlefeedbackv5-form-helpful' => 'סימון כיעילה ($1)',
@@ -5292,7 +5400,10 @@
52935401 'articlefeedbackv5-timestamp-months' => '{{PLURAL:$1|חודש אחד|$1 חודשים|חודשיים}}',
52945402 'articlefeedbackv5-timestamp-weeks' => '{{PLURAL:$1|שבוע אחד|$1 שבועות|שבועיים}}',
52955403 'articlefeedbackv5-timestamp-seconds' => 'פחות מדקה',
 5404+ 'articlefeedbackv5-mask-text-hidden' => 'הרשומה הזאת הוסתרה על־ידי עורך מורשה',
52965405 'articlefeedbackv5-mask-postnumber' => 'רשומה מס׳ $1',
 5406+ 'articlefeedbackv5-special-disclaimer' => 'זה רק אבטיפוס. נא לא להשתמש בו אלא אם הוזמנת במפורש לעשות את זה.',
 5407+ 'articlefeedbackv5-special-goback' => 'חזרה לרשימת משובים.',
52975408 'articlefeedbackv5-noteflyover-hide-caption' => 'הסתרת הרשומה הזאת',
52985409 'articlefeedbackv5-noteflyover-hide-label' => 'הוספת הערה',
52995410 'articlefeedbackv5-noteflyover-hide-placeholder' => 'למה ביקשת להסתיר את הרשומה הזאת?',
@@ -5733,8 +5844,8 @@
57345845 'articlefeedbackv5-error-email' => 'Tuta e-mejlowa adresa płaćiwa njeje.',
57355846 'articlefeedbackv5-error-blocked' => 'Zablokowani wužiwarjo njemóža komentary pósłać.',
57365847 'articlefeedbackv5-error-validation' => 'Přepruwowanski zmylk',
5737 - 'articlefeedbackv5-error-abuse' => 'Twój komentar přeńdźe so přećiwo $1. Prošu změń jón.',
5738 - 'articlefeedbackv5-error-abuse-linktext' => 'Prawidła za znjewužiwanje komentarow',
 5848+ 'articlefeedbackv5-error-abuse' => 'Twój komentar je so přez softwarowy filter wotpokazał, kotryž měni, zo wón je přećiwo $1 Wikipedije přešoł. Prošu přepruwuj swój komentar a spytaj hišće raz.',
 5849+ 'articlefeedbackv5-error-abuse-linktext' => 'směrnicam za komentary',
57395850 'articlefeedbackv5-error-unknown' => 'Njeznaty zmylk.',
57405851 'articlefeedbackv5-error-submit' => 'Zmylk při wotesyłanju formulara.',
57415852 'articlefeedbackv5-error-nofeedback' => 'Prošu zapodaj swój komentar.',
@@ -5751,11 +5862,11 @@
57525863 'articlefeedbackv5-special-filter-abusive' => 'Jako znjewužiwanje woznamjeny ($1)',
57535864 'articlefeedbackv5-special-filter-helpful' => 'Pomocliwy ($1)',
57545865 'articlefeedbackv5-special-filter-unhelpful' => 'Njepomocliwy ($1)',
5755 - 'articlefeedbackv5-special-filter-needsoversight' => 'Dohladowanje požadane ($1)',
 5866+ 'articlefeedbackv5-special-filter-requested' => 'Dohladowanje požadane ($1)',
57565867 'articlefeedbackv5-special-filter-visible' => 'Wšě widźomne ($1)',
5757 - 'articlefeedbackv5-special-filter-invisible' => 'Schowany ($1)',
5758 - 'articlefeedbackv5-special-filter-deleted' => 'Dohladowany ($1)',
5759 - 'articlefeedbackv5-special-filter-undeleted' => 'Dohladowanje wotstronjene ($1)',
 5868+ 'articlefeedbackv5-special-filter-hidden' => 'Schowany ($1)',
 5869+ 'articlefeedbackv5-special-filter-oversighted' => 'Dohladowany ($1)',
 5870+ 'articlefeedbackv5-special-filter-unoversighted' => 'Dohladowanje wotstronjene ($1)',
57605871 'articlefeedbackv5-special-filter-declined' => 'Dohladowanje wotpokazane ($1)',
57615872 'articlefeedbackv5-special-filter-unhidden' => 'Zaso pokazany ($1)',
57625873 'articlefeedbackv5-special-sort-age' => 'Datum',
@@ -5770,8 +5881,6 @@
57715882 'articlefeedbackv5-special-more' => 'Dalše powěsće pokazać',
57725883 'articlefeedbackv5-special-pagetitle' => 'Komentary: $1',
57735884 'articlefeedbackv5-form-optionid' => 'Opcija $1',
5774 - 'articlefeedbackv5-hidden' => 'Tutón přinošk je so wot $1 dnja $2 schował',
5775 - 'articlefeedbackv5-deleted' => 'Tutón přinošk je so wot $1 dnja $2 zhašał',
57765885 'articlefeedbackv5-form-hide' => 'Tutón komentar schować',
57775886 'articlefeedbackv5-form-unhide' => 'Tutu powěsć pokazać',
57785887 'articlefeedbackv5-form-helpful' => 'Jako pomocliwy markěrować ($1)',
@@ -5834,6 +5943,7 @@
58355944 'articlefeedbackv5-mask-text-oversight' => 'Tutón přinošk je so wot awtorizowaneho wužiwarja dohladował',
58365945 'articlefeedbackv5-mask-postnumber' => 'Přinošk čo. $1',
58375946 'articlefeedbackv5-special-disclaimer' => 'To je prototyp. Prošu njewužij jón, chibazo će přeprošeja to činić.',
 5947+ 'articlefeedbackv5-special-goback' => 'Wróćo k lisćinje komentarow',
58385948 'articlefeedbackv5-noteflyover-hide-caption' => 'Tutón komentar schować',
58395949 'articlefeedbackv5-noteflyover-hide-label' => 'Přispomnjenku přidać',
58405950 'articlefeedbackv5-noteflyover-hide-placeholder' => 'Čehodla chowaš tutón komentar?',
@@ -6049,6 +6159,12 @@
60506160 'articlefeedbackv5-disable-flyover-help-location' => 'Nastajenja > Napohlad',
60516161 'articlefeedbackv5-disable-flyover-help-direction' => 'a klikń na',
60526162 'articlefeedbackv5-disable-flyover-prefbutton' => 'K nastajenjam',
 6163+ 'abusefilter-edit-action-aftv5flagabuse' => '(Article Feedback) Awtomatisce jako znjewužiće woznamjenić',
 6164+ 'articlefeedbackv5-abusefilter-note-aftv5flagabuse' => 'Awtomatisce jako znjewužiće woznamjenjeny. Prawidło: $1',
 6165+ 'abusefilter-edit-action-aftv5hide' => '(Article Feedback) Awtomatisce schować',
 6166+ 'articlefeedbackv5-abusefilter-note-aftv5hide' => 'Awtomatisce schowany. Prawidło: $1',
 6167+ 'abusefilter-edit-action-aftv5requestoversight' => '(Article Feedback) Awtomatisce dohladowanje požadać',
 6168+ 'articlefeedbackv5-abusefilter-note-aftv5requestoversight' => 'Dohladowanje je so awtomatisce požadało. Prawidło: $1',
60536169 );
60546170
60556171 /** Hungarian (Magyar)
@@ -6302,8 +6418,8 @@
63036419 'articlefeedbackv5-error-email' => 'Iste adresse de e-mail non es valide.',
63046420 'articlefeedbackv5-error-blocked' => 'Usatores blocate non pote submitter commentarios.',
63056421 'articlefeedbackv5-error-validation' => 'Error de validation.',
6306 - 'articlefeedbackv5-error-abuse' => 'Iste commento viola le $1. Per favor revide lo.',
6307 - 'articlefeedbackv5-error-abuse-linktext' => 'politica sur le abuso de evalutation',
 6422+ 'articlefeedbackv5-error-abuse' => 'Iste message ha essite rejectate per un filtro de software que suggere que illo pote haber violate le $1 de Wikipedia. Per favor revide le message e reproba.',
 6423+ 'articlefeedbackv5-error-abuse-linktext' => 'directivas de evalutation',
63086424 'articlefeedbackv5-error-unknown' => 'Error incognite.',
63096425 'articlefeedbackv5-error-submit' => 'Error durante le submission del formulario.',
63106426 'articlefeedbackv5-error-nofeedback' => 'Per favor insere tu commentario.',
@@ -6320,11 +6436,11 @@
63216437 'articlefeedbackv5-special-filter-abusive' => 'Marcate como abuso ($1)',
63226438 'articlefeedbackv5-special-filter-helpful' => 'Utile ($1)',
63236439 'articlefeedbackv5-special-filter-unhelpful' => 'Inutile ($1)',
6324 - 'articlefeedbackv5-special-filter-needsoversight' => ' Supervision requestate ($1)',
 6440+ 'articlefeedbackv5-special-filter-requested' => ' Supervision requestate ($1)',
63256441 'articlefeedbackv5-special-filter-visible' => 'Totes visibile ($1)',
6326 - 'articlefeedbackv5-special-filter-invisible' => 'Celate ($1)',
6327 - 'articlefeedbackv5-special-filter-deleted' => 'Supervisate ($1)',
6328 - 'articlefeedbackv5-special-filter-undeleted' => 'Non plus supervisate ($1)',
 6442+ 'articlefeedbackv5-special-filter-hidden' => 'Celate ($1)',
 6443+ 'articlefeedbackv5-special-filter-oversighted' => 'Supervisate ($1)',
 6444+ 'articlefeedbackv5-special-filter-unoversighted' => 'Non plus supervisate ($1)',
63296445 'articlefeedbackv5-special-filter-declined' => 'Supervision declinate ($1)',
63306446 'articlefeedbackv5-special-filter-unhidden' => 'Revelate ($1)',
63316447 'articlefeedbackv5-special-sort-age' => 'Data',
@@ -6339,8 +6455,6 @@
63406456 'articlefeedbackv5-special-more' => 'Monstrar plus messages',
63416457 'articlefeedbackv5-special-pagetitle' => 'Evalutation: $1',
63426458 'articlefeedbackv5-form-optionid' => 'Option $1',
6343 - 'articlefeedbackv5-hidden' => 'Iste message esseva celate per $1 le $2',
6344 - 'articlefeedbackv5-deleted' => 'Iste message ha essite delite per $1 le $2',
63456459 'articlefeedbackv5-form-hide' => 'Celar iste message',
63466460 'articlefeedbackv5-form-unhide' => 'Revelar iste message',
63476461 'articlefeedbackv5-form-helpful' => 'Marcar como utile ($1)',
@@ -6403,6 +6517,7 @@
64046518 'articlefeedbackv5-mask-text-oversight' => 'Iste message esseva mittite sub supervision per un redactor autorisate',
64056519 'articlefeedbackv5-mask-postnumber' => 'Message №$1',
64066520 'articlefeedbackv5-special-disclaimer' => 'Isto es un prototypo. Per favor non usa lo a minus que tu ha essite invitate a facer lo.',
 6521+ 'articlefeedbackv5-special-goback' => 'Retornar al lista de evalutationes',
64076522 'articlefeedbackv5-noteflyover-hide-caption' => 'Celar iste message',
64086523 'articlefeedbackv5-noteflyover-hide-label' => 'Adder un nota',
64096524 'articlefeedbackv5-noteflyover-hide-placeholder' => 'Proque cela tu iste message?',
@@ -6620,6 +6735,12 @@
66216736 'articlefeedbackv5-disable-flyover-help-location' => 'Mi preferentias > Apparentia',
66226737 'articlefeedbackv5-disable-flyover-help-direction' => 'e marca',
66236738 'articlefeedbackv5-disable-flyover-prefbutton' => 'Vader a mi preferentias',
 6739+ 'abusefilter-edit-action-aftv5flagabuse' => '(Evalutation de articulos) Marcar automaticamente como abuso',
 6740+ 'articlefeedbackv5-abusefilter-note-aftv5flagabuse' => 'Marcate automaticamente como abuso. Regula: $1',
 6741+ 'abusefilter-edit-action-aftv5hide' => '(Evalutation de articulos) Celar automaticamente',
 6742+ 'articlefeedbackv5-abusefilter-note-aftv5hide' => 'Celate automaticamente. Regula: $1',
 6743+ 'abusefilter-edit-action-aftv5requestoversight' => '(Evalutation de articulos) Requestar supervision automaticamente',
 6744+ 'articlefeedbackv5-abusefilter-note-aftv5requestoversight' => 'Supervision requestate automaticamente. Regula: $1',
66246745 );
66256746
66266747 /** Indonesian (Bahasa Indonesia)
@@ -6798,10 +6919,10 @@
67996920 'articlefeedbackv5-special-filter-abusive' => 'Namarkaan a kaala agab-abuso ($1)',
68006921 'articlefeedbackv5-special-filter-helpful' => 'Tumultulong ($1)',
68016922 'articlefeedbackv5-special-filter-unhelpful' => 'Saan a makatulong ($1)',
6802 - 'articlefeedbackv5-special-filter-needsoversight' => 'Agkiddaw ti pinagilasin ($1)',
 6923+ 'articlefeedbackv5-special-filter-requested' => 'Agkiddaw ti pinagilasin ($1)',
68036924 'articlefeedbackv5-special-filter-visible' => 'Makita amin ($1)',
6804 - 'articlefeedbackv5-special-filter-invisible' => 'Nailemmeng ($1)',
6805 - 'articlefeedbackv5-special-filter-deleted' => 'Nailasinan ($1)',
 6925+ 'articlefeedbackv5-special-filter-hidden' => 'Nailemmeng ($1)',
 6926+ 'articlefeedbackv5-special-filter-oversighted' => 'Nailasinan ($1)',
68066927 'articlefeedbackv5-special-sort-age' => 'Petsa',
68076928 'articlefeedbackv5-special-sort-helpful' => 'Nakatulong',
68086929 'articlefeedbackv5-special-sort-label-before' => 'Agbilin babaen ti:',
@@ -7173,19 +7294,38 @@
71747295 * @author Marine-Blue
71757296 * @author Ohgi
71767297 * @author Schu
 7298+ * @author Shirayuki
71777299 * @author Whym
71787300 * @author Yanajin66
71797301 * @author 青子守歌
71807302 */
71817303 $messages['ja'] = array(
 7304+ 'articlefeedbackv5-cta1-edit-linktext' => 'このページを編集',
71827305 'articlefeedbackv5-error' => 'エラーが発生しました。後でもう一度試してください。',
 7306+ 'articlefeedbackv5-form-helpful-yes-label' => 'はい',
 7307+ 'articlefeedbackv5-form-helpful-no-label' => 'いいえ',
 7308+ 'articlefeedbackv5-special-add-feedback' => 'あなたのフィードバックを追加',
 7309+ 'articlefeedbackv5-special-filter-notdeleted' => 'すべて ($1)',
 7310+ 'articlefeedbackv5-special-filter-comment' => 'コメントのみ ($1)',
 7311+ 'articlefeedbackv5-special-filter-hidden' => '非表示 ($1)',
 7312+ 'articlefeedbackv5-special-sort-age' => '日付',
 7313+ 'articlefeedbackv5-special-sort-rating' => '評価',
 7314+ 'articlefeedbackv5-special-filter-label-before' => '表示中:',
 7315+ 'articlefeedbackv5-form-optionid' => 'オプション $1',
 7316+ 'articlefeedbackv5-form-delete' => 'オーバーサイト',
 7317+ 'articlefeedbackv5-discussion-page' => '会話',
 7318+ 'articlefeedbackv5-whats-this' => 'ヘルプ',
71837319 'articleFeedbackv5-table-caption-dailyhighsandlows' => '今日の最高値と最低値',
71847320 'articleFeedbackv5-table-caption-dailyhighs' => '最も高い評価があるページ:$1',
71857321 'articleFeedbackv5-table-caption-dailylows' => '最も低い評価があるページ:$1',
71867322 'articleFeedbackv5-table-heading-page' => 'ページ',
71877323 'articleFeedbackv5-table-heading-average' => '平均',
71887324 'articlefeedbackv5' => '記事のフィードバックのダッシュ​​ボード',
7189 - 'articlefeedbackv5-desc' => '記事の評価',
 7325+ 'articlefeedbackv5-desc' => '記事のフィードバック',
 7326+ 'articlefeedbackv5-beta-notice' => 'ベータ',
 7327+ 'articlefeedbackv5-viewactivity' => '活動を表示',
 7328+ 'articlefeedbackv5-bucket1-toggle-found-yes' => 'はい',
 7329+ 'articlefeedbackv5-bucket1-toggle-found-no' => 'いいえ',
71907330 'articlefeedbackv5-bucket5-form-switch-label' => 'このページを評価',
71917331 'articlefeedbackv5-bucket5-form-panel-title' => 'このページを評価',
71927332 'articlefeedbackv5-bucket5-form-panel-explanation' => 'これは何?',
@@ -7195,7 +7335,7 @@
71967336 'articlefeedbackv5-bucket5-form-panel-expertise-profession' => '自分の職業の一部である',
71977337 'articlefeedbackv5-bucket5-form-panel-expertise-hobby' => '個人的に深い情熱を注いでいる',
71987338 'articlefeedbackv5-bucket5-form-panel-expertise-other' => '自分の知識源はこの中にない',
7199 - 'articlefeedbackv5-bucket5-form-panel-helpimprove' => 'ウィキペディアを改善するための電子メールを受信する(自由選択)',
 7339+ 'articlefeedbackv5-bucket5-form-panel-helpimprove' => 'Wikipedia の改善を手伝いたいので、私にメールを送信してください (任意)',
72007340 'articlefeedbackv5-bucket5-form-panel-helpimprove-privacy' => 'プライバシー・ポリシー',
72017341 'articlefeedbackv5-bucket5-form-panel-submit' => '評価を送信',
72027342 'articlefeedbackv5-bucket5-form-panel-pending' => 'あなたの評価がまだ送信されていません',
@@ -7254,6 +7394,7 @@
72557395 'articlefeedbackv5-cta2-confirmation-title' => 'დაგვეხმარეთ ვიკიპედიის გაუმჯობესებაში',
72567396 'articlefeedbackv5-cta2-button-text' => 'გაიგეთ მეტი',
72577397 'articlefeedbackv5-error' => 'წარმოიშვა რაღაც შეცდომა. გთხოვთ სცადეთ მოგვიანებით.',
 7398+ 'articlefeedbackv5-error-validation' => 'შემოწმების შეცდომა.',
72587399 'articlefeedbackv5-error-unknown' => 'უცნობი შეცდომა.',
72597400 'articlefeedbackv5-form-tools-label' => 'ხელსაწყოები',
72607401 'articlefeedbackv5-form-helpful-yes-label' => 'დიახ',
@@ -7263,7 +7404,9 @@
72647405 'articlefeedbackv5-special-filter-comment' => 'მხოლოდ კომენტარები ($1)',
72657406 'articlefeedbackv5-special-filter-abusive' => 'მონიშნული როგორც ბოროტად გამოყენება ($1)',
72667407 'articlefeedbackv5-special-filter-visible' => 'ყველა ხილული ($1)',
7267 - 'articlefeedbackv5-special-filter-invisible' => 'დამალული ($1)',
 7408+ 'articlefeedbackv5-special-filter-hidden' => 'დამალული ($1)',
 7409+ 'articlefeedbackv5-special-sort-age' => 'თარიღი',
 7410+ 'articleFeedbackv5-comment-ago' => '$1 წინ',
72687411 'articlefeedbackv5-go-to-article' => 'სტატიის ხილვა',
72697412 'articlefeedbackv5-discussion-page' => 'განხილვა',
72707413 'articlefeedbackv5-whats-this' => 'დახმარება',
@@ -7306,6 +7449,7 @@
73077450 'articlefeedbackv5-bucket2-problem-label' => 'პრობლემა',
73087451 'articlefeedbackv5-bucket5-form-switch-label' => 'ამ გვერდის შეფასება',
73097452 'articlefeedbackv5-bucket5-form-panel-title' => 'ამ გვერდის შეფასება',
 7453+ 'articlefeedbackv5-bucket5-form-panel-explanation' => 'რა არის ეს?',
73107454 'articlefeedbackv5-bucket5-form-panel-clear' => 'შეფასება წაიშალა',
73117455 'articlefeedbackv5-bucket5-form-panel-expertise' => 'მე მაქვს წინასწარი ცოდნა ამ თემის შესახებ (არასავალდებულო)',
73127456 'articlefeedbackv5-bucket5-form-panel-expertise-studies' => 'მე ეს კოლეჯში/უმაღლეს სასწავლებელში ვისწავლე',
@@ -7332,6 +7476,7 @@
73337477 'articlefeedbackv5-bucket5-wellwritten-tooltip-2' => 'გასაგებად ძნელი',
73347478 'articlefeedbackv5-help-tooltip-title' => 'რა არის ეს?',
73357479 'articlefeedbackv5-transparency-terms-linktext' => 'პირობები',
 7480+ 'articlefeedbackv5-disable-flyover-title' => 'წავშალო ეს ხელსაწყო?',
73367481 );
73377482
73387483 /** Korean (한국어)
@@ -7587,7 +7732,7 @@
75887733 'articlefeedbackv5-error-email' => 'Déi Mailadress ass net valabel.',
75897734 'articlefeedbackv5-error-blocked' => 'Gespaarte Benotzer kënne kee Feedback ginn.',
75907735 'articlefeedbackv5-error-validation' => 'Feeler beim Validéieren.',
7591 - 'articlefeedbackv5-error-abuse-linktext' => 'Mëssbrauchs-Richtlinne vum Feedback',
 7736+ 'articlefeedbackv5-error-abuse-linktext' => 'Richtlinne vum Feedback',
75927737 'articlefeedbackv5-error-unknown' => 'Onbekannte Feeler.',
75937738 'articlefeedbackv5-error-nofeedback' => 'Gitt w.e.g. Äre Feedback an.',
75947739 'articlefeedbackv5-error-flagging' => 'Feeler beim Markéiere vum Feedback',
@@ -7603,10 +7748,10 @@
76047749 'articlefeedbackv5-special-filter-abusive' => 'Als Mëssbrauch markéiert ($1)',
76057750 'articlefeedbackv5-special-filter-helpful' => 'Hëllefräich ($1)',
76067751 'articlefeedbackv5-special-filter-unhelpful' => 'Net-hëllefräich ($1)',
7607 - 'articlefeedbackv5-special-filter-needsoversight' => 'Iwwerwaachung gefrot ($1)',
 7752+ 'articlefeedbackv5-special-filter-requested' => 'Iwwerwaachung gefrot ($1)',
76087753 'articlefeedbackv5-special-filter-visible' => 'Alles visibel ($1)',
7609 - 'articlefeedbackv5-special-filter-invisible' => 'Verstoppt ($1)',
7610 - 'articlefeedbackv5-special-filter-deleted' => 'Iwwerwaacht ($1)',
 7754+ 'articlefeedbackv5-special-filter-hidden' => 'Verstoppt ($1)',
 7755+ 'articlefeedbackv5-special-filter-oversighted' => 'Iwwerwaacht ($1)',
76117756 'articlefeedbackv5-special-filter-unhidden' => 'Net-verstoppt ($1)',
76127757 'articlefeedbackv5-special-sort-age' => 'Datum',
76137758 'articlefeedbackv5-special-sort-helpful' => 'Hëllefräich',
@@ -7618,8 +7763,6 @@
76197764 'articlefeedbackv5-special-more' => 'Méi Réckmeldunge weisen',
76207765 'articlefeedbackv5-special-pagetitle' => 'Feedback: $1',
76217766 'articlefeedbackv5-form-optionid' => 'Optioun $1',
7622 - 'articlefeedbackv5-hidden' => 'Dëse Beitrag gouf vum $1 de(n) $2 verstoppt',
7623 - 'articlefeedbackv5-deleted' => 'Dës Réckmeldung gouf vum $1 de(n) $2 geläscht',
76247767 'articlefeedbackv5-form-hide' => 'Verstoppt dës Réckmeldung',
76257768 'articlefeedbackv5-form-unhide' => 'Dës Réckmeldung nees weisen',
76267769 'articlefeedbackv5-form-helpful' => 'als hëllefräich markéieren ($1)',
@@ -7663,6 +7806,7 @@
76647807 'articlefeedbackv5-comment-more' => 'Méi',
76657808 'articlefeedbackv5-comment-less' => 'Manner',
76667809 'articlefeedbackv5-beta-notice' => 'Beta',
 7810+ 'articlefeedbackv5-viewactivity' => 'Aktivitéit weisen',
76677811 'articlefeedbackv5-timestamp-years' => '{{PLURAL:$1|engem Joer|$1 Joer}}',
76687812 'articlefeedbackv5-timestamp-months' => '{{PLURAL:$1|engem Mount|$1 Méint}}',
76697813 'articlefeedbackv5-timestamp-weeks' => '{{PLURAL: $1|enger Woch|$1 Wochen}}',
@@ -7820,6 +7964,11 @@
78217965
78227966 E schéine Bonjour a villmools Merci,
78237967 Är {{SITENAME}}-Equipe',
 7968+ 'articlefeedbackv5-disable-flyover-title' => 'Dës Fonctioun ewechhuelen?',
 7969+ 'articlefeedbackv5-disable-flyover-help-emphasis-text' => 'Artikel Feedback',
 7970+ 'articlefeedbackv5-disable-flyover-help-location' => 'Meng Astellungen > Ausgesinn',
 7971+ 'articlefeedbackv5-disable-flyover-prefbutton' => 'Op meng Astellunge goen',
 7972+ 'articlefeedbackv5-abusefilter-note-aftv5hide' => 'Automatesch verstoppt. Regel: $1',
78247973 );
78257974
78267975 /** Limburgish (Limburgs)
@@ -8308,8 +8457,8 @@
83098458 'articlefeedbackv5-error-email' => 'Таа е-пошта е неважечка.',
83108459 'articlefeedbackv5-error-blocked' => 'Блокираните корисници не можат да даваат мислења.',
83118460 'articlefeedbackv5-error-validation' => 'Грешка при проверката.',
8312 - 'articlefeedbackv5-error-abuse' => 'Вашиот коментар ги крши $1. Изменете го.',
8313 - 'articlefeedbackv5-error-abuse-linktext' => 'правилата за злоупотреба во мислењата',
 8461+ 'articlefeedbackv5-error-abuse' => 'Вашиот коментар е одбиен од програмскиот филтер бидејќи смета дека со тоа ги прекршувате $1 на Википедија. Изменете го коментарот и обидете се повторно.',
 8462+ 'articlefeedbackv5-error-abuse-linktext' => 'правилата за искажување на мислења',
83148463 'articlefeedbackv5-error-unknown' => 'Непозната грешка.',
83158464 'articlefeedbackv5-error-submit' => 'Грешка при поднесување на образецот.',
83168465 'articlefeedbackv5-error-nofeedback' => 'Внесете мислење.',
@@ -8321,16 +8470,17 @@
83228471 'articlefeedbackv5-form-helpful-votes' => '{{PLURAL:$1|1 да|$1 да}} / {{PLURAL:$2|1 не|$2 не}}',
83238472 'articlefeedbackv5-special-add-feedback' => 'Дајте ваше мислење',
83248473 'articlefeedbackv5-special-filter-all' => 'Сите (заверка) ($1)',
8325 - 'articlefeedbackv5-special-filter-notdeleted' => 'Сите ($1)',
 8474+ 'articlefeedbackv5-special-filter-notdeleted' => 'Сите (скриени) ($1)',
83268475 'articlefeedbackv5-special-filter-comment' => 'Само коментари ($1)',
83278476 'articlefeedbackv5-special-filter-abusive' => 'Означени како навредливи ($1)',
83288477 'articlefeedbackv5-special-filter-helpful' => 'Корисни ($1)',
83298478 'articlefeedbackv5-special-filter-unhelpful' => 'Некорисни ($1)',
8330 - 'articlefeedbackv5-special-filter-needsoversight' => 'Побарана заверка ($1)',
 8479+ 'articlefeedbackv5-special-filter-requested' => 'Побарана заверка ($1)',
 8480+ 'articlefeedbackv5-special-filter-unrequested' => 'Откажано барање за заверка ($1)',
83318481 'articlefeedbackv5-special-filter-visible' => 'Сите видливи ($1)',
8332 - 'articlefeedbackv5-special-filter-invisible' => 'Скриени ($1)',
8333 - 'articlefeedbackv5-special-filter-deleted' => 'Заверени ($1)',
8334 - 'articlefeedbackv5-special-filter-undeleted' => 'Поништени заверки ($1)',
 8482+ 'articlefeedbackv5-special-filter-hidden' => 'Скриени ($1)',
 8483+ 'articlefeedbackv5-special-filter-oversighted' => 'Заверени ($1)',
 8484+ 'articlefeedbackv5-special-filter-unoversighted' => 'Поништени заверки ($1)',
83358485 'articlefeedbackv5-special-filter-declined' => 'Одбиени заверки ($1)',
83368486 'articlefeedbackv5-special-filter-unhidden' => 'Откриени ($1)',
83378487 'articlefeedbackv5-special-sort-age' => 'Датум',
@@ -8345,8 +8495,15 @@
83468496 'articlefeedbackv5-special-more' => 'Повеќе објави',
83478497 'articlefeedbackv5-special-pagetitle' => 'Мислење: $1',
83488498 'articlefeedbackv5-form-optionid' => 'Можност $1',
8349 - 'articlefeedbackv5-hidden' => 'Оваа објава е скриена од $1 на $2',
8350 - 'articlefeedbackv5-deleted' => 'Објавата е избришана од $1 на $2',
 8499+ 'articlefeedbackv5-status-hidden' => 'Оваа објава е скриена од $1 на $2 во $3',
 8500+ 'articlefeedbackv5-status-unhidden' => 'Оваа објава е откриена од $1 на $2 во $3',
 8501+ 'articlefeedbackv5-status-request' => '$1 побара заверка на објавава на $2 во $3',
 8502+ 'articlefeedbackv5-status-unrequest' => '$1 го откажа барањето за заверка на објавава на $2 во $3',
 8503+ 'articlefeedbackv5-status-declined' => '$1 ја одби заверката на објавава на $2 во $3',
 8504+ 'articlefeedbackv5-status-autohide' => 'Оваа објава е автоскриена од $1 на $2 во $3',
 8505+ 'articlefeedbackv5-status-deleted' => 'Оваа објава е заверена од $1 на $2 во $3',
 8506+ 'articlefeedbackv5-status-undeleted' => 'На оваа објава ѝ е отстранета заверката од $1 на $2 во $3',
 8507+ 'articlefeedbackv5-status-autoflag' => 'Оваа објава е автоозначена од $1 на $2 во $3',
83518508 'articlefeedbackv5-form-hide' => 'Скриј го мислењево',
83528509 'articlefeedbackv5-form-unhide' => 'Откриј ја објавата',
83538510 'articlefeedbackv5-form-helpful' => 'Означи како корисно ($1)',
@@ -8377,6 +8534,7 @@
83788535 'articlefeedbackv5-error-loading-feedback' => 'Грешка при вчитувањето на мислењето',
83798536 'articlefeedbackv5-invalid-feedback-id' => 'Неважечка назнака на мислењето',
83808537 'articlefeedbackv5-invalid-feedback-flag' => 'Неважечка ознака за мислење',
 8538+ 'articlefeedbackv5-invalid-feedback-state' => 'Ознаката е во неважечка состојба',
83818539 'articlefeedbackv5-go-to-article' => 'Погл. статијата',
83828540 'articlefeedbackv5-discussion-page' => 'Разговор',
83838541 'articlefeedbackv5-whats-this' => 'Помош',
@@ -8410,6 +8568,7 @@
84118569 'articlefeedbackv5-mask-text-oversight' => 'Оваа објава е заверена од овластен уредник',
84128570 'articlefeedbackv5-mask-postnumber' => 'Објава бр. $1',
84138571 'articlefeedbackv5-special-disclaimer' => 'Ова е прототип. Не користете го доколку немате посебна покана.',
 8572+ 'articlefeedbackv5-special-goback' => 'Назад на Списокот на мислења',
84148573 'articlefeedbackv5-noteflyover-hide-caption' => 'Скриј ја објавава',
84158574 'articlefeedbackv5-noteflyover-hide-label' => 'Додај белешка',
84168575 'articlefeedbackv5-noteflyover-hide-placeholder' => 'Зошто ја криете објавава?',
@@ -8481,6 +8640,10 @@
84828641 'articlefeedbackv5-bucket4-learn-to-edit' => 'Дознајте како да уредувате',
84838642 'articlefeedbackv5-bucket4-form-submit' => 'Уреди ја страницава',
84848643 'articlefeedbackv5-bucket4-help-tooltip-info' => 'Википедија би сакала да знае што мислите. Помогнете ни да ја подобриме страницата -- станете уредник.',
 8644+ 'articlefeedbackv5-bucket4-noedit-title' => 'Помогнете ни да ја подобриме Википедија',
 8645+ 'articlefeedbackv5-bucket4-noedit-teaser-line1' => 'Ова мрежно место го создаваат луѓе како Вас.',
 8646+ 'articlefeedbackv5-bucket4-noedit-teaser-line2' => 'Би сакале ли да ни помогнете?',
 8647+ 'articlefeedbackv5-bucket4-noedit-form-submit' => 'Дознајте повеќе',
84858648 'articlefeedbackv5-bucket5-form-switch-label' => 'Оценете ја страницава',
84868649 'articlefeedbackv5-bucket5-form-panel-title' => 'Оценете ја страницава',
84878650 'articlefeedbackv5-bucket5-form-panel-explanation' => 'Што е ова?',
@@ -8561,11 +8724,13 @@
85628725 'articlefeedbackv5-log-unoversight' => 'отстранет прегледниот статус на [[$1]] од мислењето',
85638726 'articlefeedbackv5-log-hidden' => 'скриено мислењето [[$1]]',
85648727 'articlefeedbackv5-log-unhidden' => 'откриено мислењето [[$1]]',
8565 - 'articlefeedbackv5-log-decline' => 'одбиено барањето за заверка на мислењето [[$1]]',
8566 - 'articlefeedbackv5-log-request' => 'побарана заверка на мислењето [[$1]]',
8567 - 'articlefeedbackv5-log-unrequest' => 'отстранета побараната заверка на мислењето [[$1]]',
 8728+ 'articlefeedbackv5-log-decline' => 'одбиена заверката на мислењето [[$1]]',
 8729+ 'articlefeedbackv5-log-request' => 'побара заверка на [[$1]]',
 8730+ 'articlefeedbackv5-log-unrequest' => 'отстранета заверката на [[$1]]',
85688731 'articlefeedbackv5-log-flag' => 'означено мислењето [[$1]] како злоупотреба',
85698732 'articlefeedbackv5-log-unflag' => 'тргната ознаката за злоупотреба од мислењето [[$1]]',
 8733+ 'articlefeedbackv5-log-autohide' => 'автоскриено мислењето [[$1]] како злоупотреба',
 8734+ 'articlefeedbackv5-log-autoflag' => 'автоозначено мислењето [[$1]] како злоупотреба',
85708735 'articlefeedbackv5-activity-pane-header' => 'Дневник на активности',
85718736 'articlefeedbackv5-activity-feedback-info' => 'Мислење бр. $1 од $2',
85728737 'articlefeedbackv5-activity-feedback-date' => 'Објавено на $1',
@@ -8632,6 +8797,12 @@
86338798 'articlefeedbackv5-disable-flyover-help-location' => '„мои нагодувања > Изглед“',
86348799 'articlefeedbackv5-disable-flyover-help-direction' => 'и штиклирајте го',
86358800 'articlefeedbackv5-disable-flyover-prefbutton' => 'Одете на вашите нагодувања',
 8801+ 'abusefilter-edit-action-aftv5flagabuse' => '(Мислење за статија) Автоматски означи како злоупотреба',
 8802+ 'articlefeedbackv5-abusefilter-note-aftv5flagabuse' => 'Автоматски означено како злоупотреба. Правило: $1',
 8803+ 'abusefilter-edit-action-aftv5hide' => '(Мислење за статија) Автоматски криј',
 8804+ 'articlefeedbackv5-abusefilter-note-aftv5hide' => 'Автоматски скриено. Правило: $1',
 8805+ 'abusefilter-edit-action-aftv5requestoversight' => '(Мислење за статија) Автоматски побарај заверка',
 8806+ 'articlefeedbackv5-abusefilter-note-aftv5requestoversight' => 'Автоматски побарана заверка. Правило: $1',
86368807 );
86378808
86388809 /** Malayalam (മലയാളം)
@@ -8660,10 +8831,11 @@
86618832 'articlefeedbackv5-special-filter-helpful' => 'സഹായകരം ($1)',
86628833 'articlefeedbackv5-special-filter-unhelpful' => 'സഹായകരമല്ല ($1)',
86638834 'articlefeedbackv5-special-filter-visible' => 'എല്ലാം ദൃശ്യം ($1)',
8664 - 'articlefeedbackv5-special-filter-invisible' => 'മറയ്ക്കപ്പെട്ടത് ($1)',
8665 - 'articlefeedbackv5-special-filter-deleted' => 'മായ്ച്ചവ ($1)',
 8835+ 'articlefeedbackv5-special-filter-hidden' => 'മറയ്ക്കപ്പെട്ടത് ($1)',
 8836+ 'articlefeedbackv5-special-filter-oversighted' => 'മായ്ച്ചവ ($1)',
86668837 'articlefeedbackv5-special-sort-age' => 'തീയതി',
86678838 'articlefeedbackv5-special-sort-helpful' => 'സഹായകരം',
 8839+ 'articlefeedbackv5-special-sort-rating' => 'നിലവാരമിടൽ',
86688840 'articlefeedbackv5-special-sort-label-before' => 'ക്രമീകരിക്കേണ്ടത്:',
86698841 'articlefeedbackv5-special-filter-label-before' => 'പ്രദർശിപ്പിക്കുന്നവ:',
86708842 'articleFeedbackv5-comment-ago' => '$1 മുമ്പ്',
@@ -8687,7 +8859,7 @@
86888860 'articlefeedbackv5' => 'ലേഖനത്തിന്റെ മൂല്യനിർണ്ണയ നിയന്ത്രണോപാധികൾ',
86898861 'articlefeedbackv5-desc' => 'ലേഖനത്തിന്റെ മൂല്യനിർണ്ണയം (പ്രാരംഭ പതിപ്പ്)',
86908862 'articlefeedbackv5-comment-more' => 'കൂടുതൽ',
8691 - 'articlefeedbackv5-comment-less' => 'സംഗ്രഹം',
 8863+ 'articlefeedbackv5-comment-less' => 'കുറവ്',
86928864 'articlefeedbackv5-beta-notice' => 'ബീറ്റ',
86938865 'articlefeedbackv5-timestamp-years' => '{{PLURAL:$1|ഒരു വർഷം|$1 വർഷം}}',
86948866 'articlefeedbackv5-timestamp-months' => '{{PLURAL:$1|ഒരു മാസം|$1 മാസം}}',
@@ -8840,8 +9012,9 @@
88419013 'articlefeedbackv5-error-email' => 'Alamat e-mel itu tidak sah.',
88429014 'articlefeedbackv5-error-blocked' => 'Pengguna yang disekat tidak boleh menyerahkan maklum balas.',
88439015 'articlefeedbackv5-error-validation' => 'Ralat pengesahan.',
8844 - 'articlefeedbackv5-error-abuse' => 'Ulasan anda menyalahi $1. Sila semak dan betulkannya.',
8845 - 'articlefeedbackv5-error-abuse-linktext' => 'dasar salah guna maklum balas',
 9016+ 'articlefeedbackv5-error-abuse' => 'Pos anda telah ditolak oleh penapis perisian yang percaya bahawa pos itu telah melanggar $1 Wikipedia.
 9017+Sila semak pos anda dan cuba lagi',
 9018+ 'articlefeedbackv5-error-abuse-linktext' => 'garis panduan maklum balas',
88469019 'articlefeedbackv5-error-unknown' => 'Ralat yang tidak diketahui.',
88479020 'articlefeedbackv5-error-submit' => 'Ralat ketika menyerahkan borang.',
88489021 'articlefeedbackv5-error-nofeedback' => 'Sila isikan maklum balas anda.',
@@ -8858,11 +9031,11 @@
88599032 'articlefeedbackv5-special-filter-abusive' => 'Dibenderakan sebagai salah guna ($1)',
88609033 'articlefeedbackv5-special-filter-helpful' => 'Membantu ($1)',
88619034 'articlefeedbackv5-special-filter-unhelpful' => 'Tidak membantu ($1)',
8862 - 'articlefeedbackv5-special-filter-needsoversight' => 'Penghapusan dipohon ($1)',
 9035+ 'articlefeedbackv5-special-filter-requested' => 'Penghapusan dipohon ($1)',
88639036 'articlefeedbackv5-special-filter-visible' => 'Semua yang tampak ($1)',
8864 - 'articlefeedbackv5-special-filter-invisible' => 'Tersorok ($1)',
8865 - 'articlefeedbackv5-special-filter-deleted' => 'Dihapuskan ($1)',
8866 - 'articlefeedbackv5-special-filter-undeleted' => 'Dinyahhapuskan ($1)',
 9037+ 'articlefeedbackv5-special-filter-hidden' => 'Tersorok ($1)',
 9038+ 'articlefeedbackv5-special-filter-oversighted' => 'Dihapuskan ($1)',
 9039+ 'articlefeedbackv5-special-filter-unoversighted' => 'Dinyahhapuskan ($1)',
88679040 'articlefeedbackv5-special-filter-declined' => 'Penghapusan Ditolak ($1)',
88689041 'articlefeedbackv5-special-filter-unhidden' => 'Ditunjukkan semula ($1)',
88699042 'articlefeedbackv5-special-sort-age' => 'Tarikh',
@@ -8877,8 +9050,6 @@
88789051 'articlefeedbackv5-special-more' => 'Tunjukkan banyak lagi pos',
88799052 'articlefeedbackv5-special-pagetitle' => 'Maklum balas: $1',
88809053 'articlefeedbackv5-form-optionid' => 'Pilihan $1',
8881 - 'articlefeedbackv5-hidden' => 'Pos ini disorokkan oleh $1 di $2',
8882 - 'articlefeedbackv5-deleted' => 'Pos ini telah dihapuskan oleh $1 pada $2',
88839054 'articlefeedbackv5-form-hide' => 'Sorokkan pos ini',
88849055 'articlefeedbackv5-form-unhide' => 'Dedahkan pos ini',
88859056 'articlefeedbackv5-form-helpful' => 'Tanda sebagai membantu ($1)',
@@ -8940,6 +9111,8 @@
89419112 'articlefeedbackv5-mask-text-hidden' => 'Pos ini disorokkan oleh seorang penyunting yang berizin',
89429113 'articlefeedbackv5-mask-text-oversight' => 'Pos ini dihapuskan oleh seorang penyunting yang berizin',
89439114 'articlefeedbackv5-mask-postnumber' => 'Pos #$1',
 9115+ 'articlefeedbackv5-special-disclaimer' => 'Ini ialah prototaip. Tolong jangan gunakannya melainkan anda dijemput.',
 9116+ 'articlefeedbackv5-special-goback' => 'Kembali ke senarai maklum balas',
89449117 'articlefeedbackv5-noteflyover-hide-caption' => 'Sorokkan pos ini',
89459118 'articlefeedbackv5-noteflyover-hide-label' => 'Tulis catatan',
89469119 'articlefeedbackv5-noteflyover-hide-placeholder' => 'Mengapakah anda menyorokkan pos ini?',
@@ -9157,6 +9330,12 @@
91589331 'articlefeedbackv5-disable-flyover-help-location' => 'Keutamaan saya > Penampilan',
91599332 'articlefeedbackv5-disable-flyover-help-direction' => 'dan raitkan',
91609333 'articlefeedbackv5-disable-flyover-prefbutton' => 'Pergi ke keutamaan saya',
 9334+ 'abusefilter-edit-action-aftv5flagabuse' => '(Maklum Balas Rencana) Tanda sebagai salah guna secara automatik',
 9335+ 'articlefeedbackv5-abusefilter-note-aftv5flagabuse' => 'Ditandai secara automatik sebagai salah guna. Peraturan: $1',
 9336+ 'abusefilter-edit-action-aftv5hide' => '(Maklum Balas Rencana) Sorokkan secara automatik',
 9337+ 'articlefeedbackv5-abusefilter-note-aftv5hide' => 'Disorokkan secara automatik. Peraturan: $1',
 9338+ 'abusefilter-edit-action-aftv5requestoversight' => '(Maklum Balas Rencana) Pohon penghapusan secara automatik',
 9339+ 'articlefeedbackv5-abusefilter-note-aftv5requestoversight' => 'Penghapusan dipohon secara automatik. Peraturan: $1',
91619340 );
91629341
91639342 /** Maltese (Malti)
@@ -9554,8 +9733,8 @@
95559734 'articlefeedbackv5-error-email' => 'Dat e-mailadres is niet geldig.',
95569735 'articlefeedbackv5-error-blocked' => 'Geblokkeerde gebruikers mogen geen terugkoppeling verzenden.',
95579736 'articlefeedbackv5-error-validation' => 'Validatiefout.',
9558 - 'articlefeedbackv5-error-abuse' => 'Uw opmerking in strijd met de $1. Pas uw opmerking alstublieft aan.',
9559 - 'articlefeedbackv5-error-abuse-linktext' => 'beleid voor terugkoppelingsmisbruik',
 9737+ 'articlefeedbackv5-error-abuse' => 'Uw bericht is afgewezen door een softwarefilter die aangeeft dat de $1 van Wikipedia mogelijk geschonden zouden worden. Pas uw opmerking alstublieft aan en probeer het opnieuw.',
 9738+ 'articlefeedbackv5-error-abuse-linktext' => 'richtlijnen voor terugkoppeling',
95609739 'articlefeedbackv5-error-unknown' => 'Onbekende fout.',
95619740 'articlefeedbackv5-error-submit' => 'Fout bij het opslaan van het formulier.',
95629741 'articlefeedbackv5-error-nofeedback' => 'Geef uw terugkoppeling.',
@@ -9572,11 +9751,11 @@
95739752 'articlefeedbackv5-special-filter-abusive' => 'Gemarkeerd als misbruik ($1)',
95749753 'articlefeedbackv5-special-filter-helpful' => 'Nuttig ($1)',
95759754 'articlefeedbackv5-special-filter-unhelpful' => 'Niet nuttig ($1)',
9576 - 'articlefeedbackv5-special-filter-needsoversight' => 'Toezicht aangevraagd ($1)',
 9755+ 'articlefeedbackv5-special-filter-requested' => 'Toezicht aangevraagd ($1)',
95779756 'articlefeedbackv5-special-filter-visible' => 'Alle zichtbaar ($1)',
9578 - 'articlefeedbackv5-special-filter-invisible' => 'Verborgen ($1)',
9579 - 'articlefeedbackv5-special-filter-deleted' => 'Verwijderd ($1)',
9580 - 'articlefeedbackv5-special-filter-undeleted' => 'Toezicht ongedaan gemaakt ($1)',
 9757+ 'articlefeedbackv5-special-filter-hidden' => 'Verborgen ($1)',
 9758+ 'articlefeedbackv5-special-filter-oversighted' => 'Verwijderd ($1)',
 9759+ 'articlefeedbackv5-special-filter-unoversighted' => 'Toezicht ongedaan gemaakt ($1)',
95819760 'articlefeedbackv5-special-filter-declined' => 'Verwijdering verworpen ($1)',
95829761 'articlefeedbackv5-special-filter-unhidden' => 'Opnieuw weergegeven ($1)',
95839762 'articlefeedbackv5-special-sort-age' => 'Datum',
@@ -9591,8 +9770,6 @@
95929771 'articlefeedbackv5-special-more' => 'Meer berichten weergeven',
95939772 'articlefeedbackv5-special-pagetitle' => 'Terugkoppeling: $1',
95949773 'articlefeedbackv5-form-optionid' => 'Optie $1',
9595 - 'articlefeedbackv5-hidden' => 'Dit bericht is verborgen door $1 op $2',
9596 - 'articlefeedbackv5-deleted' => 'Dit bericht is verwijderd door $1 op $2',
95979774 'articlefeedbackv5-form-hide' => 'Bericht verbergen',
95989775 'articlefeedbackv5-form-unhide' => 'Bericht niet langer verbergen',
95999776 'articlefeedbackv5-form-helpful' => 'Markeren als nuttig ($1)',
@@ -9654,6 +9831,7 @@
96559832 'articlefeedbackv5-mask-text-hidden' => 'Dit bericht is verborgen door een daartoe gerechtigde gebruiker',
96569833 'articlefeedbackv5-mask-text-oversight' => 'Dit bericht staat onder toezicht na een beslissing van een daartoe gerechtigde gebruiker',
96579834 'articlefeedbackv5-mask-postnumber' => 'Bericht #$1',
 9835+ 'articlefeedbackv5-special-disclaimer' => 'Dit is een prototype. Gebruik het niet als u niet bent uitgenodigd.',
96589836 'articlefeedbackv5-noteflyover-hide-caption' => 'Dit bericht verbergen',
96599837 'articlefeedbackv5-noteflyover-hide-label' => 'Opmerking toevoegen',
96609838 'articlefeedbackv5-noteflyover-hide-placeholder' => 'Waarom verbergt u dit bericht?',
@@ -9867,6 +10045,13 @@
986810046 $4
986910047
987010048 Bedenk u dat "paginaterugkoppeling v5" nog steeds in een vroeg stadium van ontwikkeling is en wordt getest in de Engelstalige Wikipedia. De pagina voor terugkoppeling wordt nog niet beschikbaar gesteld aan de gemeenschap gedurende deze testperiode.',
 10049+ 'articlefeedbackv5-disable-flyover-title' => 'Dit hulpprogramma verwijderen?',
 10050+ 'articlefeedbackv5-disable-flyover-help' => 'Ga naar $2 en vink $3 aan om $1 te verwijderen',
 10051+ 'articlefeedbackv5-disable-flyover-help-emphasis-text' => 'Paginabeoordeling',
 10052+ 'articlefeedbackv5-disable-flyover-help-location' => 'Mijn voorkeuren > Uiterlijk',
 10053+ 'articlefeedbackv5-disable-flyover-prefbutton' => 'Ga naar mijn voorkeuren',
 10054+ 'articlefeedbackv5-abusefilter-note-aftv5flagabuse' => 'Automatisch gemarkeerd als misbruik. Regel: $1',
 10055+ 'articlefeedbackv5-abusefilter-note-aftv5hide' => 'Automatisch verborgen. Regel: $1',
987110056 );
987210057
987310058 /** ‪Nederlands (informeel)‬ (‪Nederlands (informeel)‬)
@@ -10086,6 +10271,7 @@
1008710272
1008810273 /** Polish (Polski)
1008910274 * @author BeginaFelicysym
 10275+ * @author Odder
1009010276 * @author Olgak85
1009110277 * @author Sp5uhe
1009210278 */
@@ -10100,9 +10286,15 @@
1010110287 'articlefeedbackv5-cta2-confirmation-call' => 'Ta strona jest tworzona przez ludzi jak Ty. Pomożesz nam?',
1010210288 'articlefeedbackv5-cta2-button-text' => 'Dowiedz się więcej',
1010310289 'articlefeedbackv5-cta3-confirmation-title' => 'Poświęć chwilę czasu na wypełnienie krótkiej ankiety',
 10290+ 'articlefeedbackv5-cta3-confirmation-call' => 'To zajmie tylko minutę a pomoże w ulepszeniu Wikipedii.',
 10291+ 'articlefeedbackv5-cta3-button-text' => 'Początek ankiety',
1010410292 'articlefeedbackv5-error' => 'Wystąpił błąd. Proszę spróbować ponownie później.',
 10293+ 'articlefeedbackv5-page-disabled' => 'Strona opinii o artykule nie została aktywowana dla tego artykułu.',
1010510294 'articlefeedbackv5-error-email' => 'Adres e-mail nie jest prawidłowy.',
 10295+ 'articlefeedbackv5-error-blocked' => 'Zablokowani użytkownicy nie mogą przesyłać opinii.',
1010610296 'articlefeedbackv5-error-validation' => 'Błąd sprawdzania poprawności.',
 10297+ 'articlefeedbackv5-error-abuse' => 'Twój wpis został odrzucony przez oprogramowanie filtrujące z sugestią naruszenia zapisów $1 Wikipedii. Zweryfikuj wpis i spróbuj ponownie.',
 10298+ 'articlefeedbackv5-error-abuse-linktext' => 'wytyczne odnośnie opinii',
1010710299 'articlefeedbackv5-error-unknown' => 'Nieznany błąd.',
1010810300 'articlefeedbackv5-error-submit' => 'Błąd przesyłania formularza.',
1010910301 'articlefeedbackv5-error-nofeedback' => 'Proszę wprowadzić swoje opinie.',
@@ -10119,11 +10311,11 @@
1012010312 'articlefeedbackv5-special-filter-abusive' => 'Oznaczone jako nadużycie ($1)',
1012110313 'articlefeedbackv5-special-filter-helpful' => 'Pomocne ($1)',
1012210314 'articlefeedbackv5-special-filter-unhelpful' => 'Nieprzydatne ($1)',
10123 - 'articlefeedbackv5-special-filter-needsoversight' => 'Wymagany nadzór ( $1 )',
 10315+ 'articlefeedbackv5-special-filter-requested' => 'Wymagany nadzór ( $1 )',
1012410316 'articlefeedbackv5-special-filter-visible' => 'Wszystkie widoczne ($1)',
10125 - 'articlefeedbackv5-special-filter-invisible' => 'Niewidoczne ($1)',
10126 - 'articlefeedbackv5-special-filter-deleted' => 'Ocenzurowano ($1)',
10127 - 'articlefeedbackv5-special-filter-undeleted' => 'Usunięto cenzurę ($1)',
 10317+ 'articlefeedbackv5-special-filter-hidden' => 'Niewidoczne ($1)',
 10318+ 'articlefeedbackv5-special-filter-oversighted' => 'Ocenzurowano ($1)',
 10319+ 'articlefeedbackv5-special-filter-unoversighted' => 'Usunięto cenzurę ($1)',
1012810320 'articlefeedbackv5-special-filter-declined' => 'Cenzura odrzucona ($1)',
1012910321 'articlefeedbackv5-special-filter-unhidden' => 'Odkryto ($1)',
1013010322 'articlefeedbackv5-special-sort-age' => 'Data',
@@ -10138,8 +10330,6 @@
1013910331 'articlefeedbackv5-special-more' => 'Pokaż więcej wpisów',
1014010332 'articlefeedbackv5-special-pagetitle' => 'Informacje zwrotne: $1',
1014110333 'articlefeedbackv5-form-optionid' => 'Opcja $1',
10142 - 'articlefeedbackv5-hidden' => 'Ten wpis został ukryty $2 przez $1',
10143 - 'articlefeedbackv5-deleted' => 'Ten post został usunięty $2 przez $1',
1014410334 'articlefeedbackv5-form-hide' => 'Ukryj ten wpis',
1014510335 'articlefeedbackv5-form-unhide' => 'Odkryj ten wpis',
1014610336 'articlefeedbackv5-form-helpful' => 'Oznacz jako przydatny ($1)',
@@ -10201,6 +10391,8 @@
1020210392 'articlefeedbackv5-mask-text-hidden' => 'Ten post wpis ukryty przez upoważnionego edytora',
1020310393 'articlefeedbackv5-mask-text-oversight' => 'Ten wpis został zweryfikowany przez upoważnionego edytora',
1020410394 'articlefeedbackv5-mask-postnumber' => 'Wpis #$1',
 10395+ 'articlefeedbackv5-special-disclaimer' => 'To jest prototyp. Można go używać wyłącznie na specjalne zaproszenie.',
 10396+ 'articlefeedbackv5-special-goback' => 'Wróć do listy opinii',
1020510397 'articlefeedbackv5-noteflyover-hide-caption' => 'Ukryj ten wpis',
1020610398 'articlefeedbackv5-noteflyover-hide-label' => 'Dodaj notatkę',
1020710399 'articlefeedbackv5-noteflyover-hide-placeholder' => 'Dlaczego ukrywasz ten wpis?',
@@ -10346,7 +10538,9 @@
1034710539 'articlefeedbackv5-log-header' => 'Jest to dziennik aktywności na elementach ocen zebranych dla artykułów przy użyciu narzędzia Opinie artykułu.',
1034810540 'articlefeedbackv5-log-oversight' => 'zmieniono status opinii [[$1]] na ocenzurowany',
1034910541 'articlefeedbackv5-log-unoversight' => 'usunięto cenzurę statusu [[$1]] z opinii',
10350 - 'articlefeedbackv5-activity-pane-header' => 'Dziennik aktywności',
 10542+ 'articlefeedbackv5-log-hidden' => 'ukryj opinię [[$1]]',
 10543+ 'articlefeedbackv5-log-unhidden' => 'pokaż opinię [[$1]]',
 10544+ 'articlefeedbackv5-activity-pane-header' => 'Rejestr aktywności',
1035110545 'articlefeedbackv5-activity-feedback-info' => 'Ocena wpisu #$1 przez $2',
1035210546 'articlefeedbackv5-activity-feedback-date' => 'Zamieszczono $1',
1035310547 'articlefeedbackv5-activity-permalink' => 'permalink',
@@ -10592,7 +10786,7 @@
1059310787 'articlefeedbackv5-special-filter-helpful' => 'ګټور ($1)',
1059410788 'articlefeedbackv5-special-filter-unhelpful' => 'ناګټور ($1)',
1059510789 'articlefeedbackv5-special-filter-visible' => 'ټول ښکاره ($1)',
10596 - 'articlefeedbackv5-special-filter-invisible' => 'پټ ($1)',
 10790+ 'articlefeedbackv5-special-filter-hidden' => 'پټ ($1)',
1059710791 'articlefeedbackv5-special-sort-age' => 'نېټه',
1059810792 'articlefeedbackv5-special-sort-helpful' => 'ګټور',
1059910793 'articlefeedbackv5-special-sort-rating' => 'ارزونه',
@@ -10688,9 +10882,9 @@
1068910883 'articlefeedbackv5-special-filter-abusive' => 'Marcado como abusivo ($1)',
1069010884 'articlefeedbackv5-special-filter-helpful' => 'Útil ($1)',
1069110885 'articlefeedbackv5-special-filter-unhelpful' => 'Inútil ($1)',
10692 - 'articlefeedbackv5-special-filter-needsoversight' => 'Supervisão solicitada ($1)',
 10886+ 'articlefeedbackv5-special-filter-requested' => 'Supervisão solicitada ($1)',
1069310887 'articlefeedbackv5-special-filter-visible' => 'Todos visíveis ($1)',
10694 - 'articlefeedbackv5-special-filter-invisible' => 'Oculto ($1)',
 10888+ 'articlefeedbackv5-special-filter-hidden' => 'Oculto ($1)',
1069510889 'articlefeedbackv5-special-sort-age' => 'Data',
1069610890 'articlefeedbackv5-form2-header-praise' => '{{GENDER:$1|$1}} teve um elogio:',
1069710891 'articlefeedbackv5-form2-header-problem' => '{{GENDER:$1|$1}} teve um problema:',
@@ -10834,11 +11028,11 @@
1083511029 'articlefeedbackv5-special-filter-abusive' => 'Marcado como abusivo ($1)',
1083611030 'articlefeedbackv5-special-filter-helpful' => 'Útil ($1)',
1083711031 'articlefeedbackv5-special-filter-unhelpful' => 'Inútil ($1)',
10838 - 'articlefeedbackv5-special-filter-needsoversight' => 'Supervisão solicitada ($1)',
 11032+ 'articlefeedbackv5-special-filter-requested' => 'Supervisão solicitada ($1)',
1083911033 'articlefeedbackv5-special-filter-visible' => 'Todos visíveis ($1)',
10840 - 'articlefeedbackv5-special-filter-invisible' => 'Oculto ($1)',
10841 - 'articlefeedbackv5-special-filter-deleted' => 'Supervisado ($1)',
10842 - 'articlefeedbackv5-special-filter-undeleted' => 'Não supervisado ($1)',
 11034+ 'articlefeedbackv5-special-filter-hidden' => 'Oculto ($1)',
 11035+ 'articlefeedbackv5-special-filter-oversighted' => 'Supervisado ($1)',
 11036+ 'articlefeedbackv5-special-filter-unoversighted' => 'Não supervisado ($1)',
1084311037 'articlefeedbackv5-special-filter-declined' => 'Supervisão rejeitada ($1)',
1084411038 'articlefeedbackv5-special-filter-unhidden' => 'Não ocultado ($1)',
1084511039 'articlefeedbackv5-special-sort-age' => 'Data',
@@ -10853,8 +11047,6 @@
1085411048 'articlefeedbackv5-special-more' => 'Mostrar mais comentários',
1085511049 'articlefeedbackv5-special-pagetitle' => 'Comentários: $1',
1085611050 'articlefeedbackv5-form-optionid' => 'Opção $1',
10857 - 'articlefeedbackv5-hidden' => 'Este comentário foi ocultado por um editor autorizado',
10858 - 'articlefeedbackv5-deleted' => 'Este comentário foi excluído por oversighters',
1085911051 'articlefeedbackv5-form-hide' => 'Ocultar este post',
1086011052 'articlefeedbackv5-form-unhide' => 'Mostrar este comentário',
1086111053 'articlefeedbackv5-form-helpful' => 'Marcar como útil ($1)',
@@ -11063,17 +11255,28 @@
1106411256 'articlefeedbackv5-cta2-button-text' => 'Aflați mai multe',
1106511257 'articlefeedbackv5-error' => 'A apărut o eroare. Vă rugăm să reîncercați mai târziu.',
1106611258 'articlefeedbackv5-error-email' => 'Această adresă de e-mail nu este validă.',
 11259+ 'articlefeedbackv5-error-blocked' => 'Utilizatorii blocați nu pot trimite păreri.',
1106711260 'articlefeedbackv5-error-validation' => 'Eroare de validare.',
 11261+ 'articlefeedbackv5-error-abuse' => 'Mesajul dumneavoastră a fost respins de un filtru software, sugerând că acesta ar fi încălcat $1 ale Wikipediei. Vă rugăm să-l revizuiți și să încercați din nou.',
 11262+ 'articlefeedbackv5-error-abuse-linktext' => 'normele de conduită pentru comentarii',
1106811263 'articlefeedbackv5-error-unknown' => 'Eroare necunoscută.',
1106911264 'articlefeedbackv5-error-submit' => 'Eroare la trimiterea formularului.',
1107011265 'articlefeedbackv5-error-nofeedback' => 'Vă rugăm să vă scrieți părerea.',
1107111266 'articlefeedbackv5-error-flagging' => 'Eroare la semnalizarea părerii.',
 11267+ 'articlefeedbackv5-form-tools-label' => 'Unelte',
 11268+ 'articlefeedbackv5-form-helpful-yes-label' => 'Da',
 11269+ 'articlefeedbackv5-form-helpful-no-label' => 'Nu',
 11270+ 'articlefeedbackv5-form-helpful-votes' => '{{PLURAL:$1|1 „da”|$1 de „da”}} / {{PLURAL:$2|1 „nu”|$2 de „nu”}}',
1107211271 'articlefeedbackv5-special-filter-all' => 'Toate (supraveghere) ($1)',
 11272+ 'articlefeedbackv5-special-filter-notdeleted' => 'Toate (ascunse) ($1)',
 11273+ 'articlefeedbackv5-special-filter-comment' => 'Doar comentarii ($1)',
1107311274 'articlefeedbackv5-special-filter-visible' => 'Toate vizibile ($1)',
11074 - 'articlefeedbackv5-special-filter-invisible' => 'Ascunsă ($1)',
11075 - 'articlefeedbackv5-special-sort-label-before' => 'Ordonați după:',
 11275+ 'articlefeedbackv5-special-filter-hidden' => 'Ascunsă ($1)',
 11276+ 'articlefeedbackv5-special-sort-age' => 'Dată',
 11277+ 'articlefeedbackv5-special-sort-label-before' => 'Sortare după:',
1107611278 'articlefeedbackv5-special-filter-label-before' => 'Se afișează:',
1107711279 'articlefeedbackv5-special-showing' => '{{PLURAL:$1|1 mesaj de feedback|$1 mesaje de feedback|$1 de mesaje de feedback}} pentru acest articol',
 11280+ 'articleFeedbackv5-comment-ago' => '$1 în urmă',
1107811281 'articlefeedbackv5-special-more' => 'Arată mai multe postări',
1107911282 'articlefeedbackv5-form-optionid' => 'Opțiunea $1',
1108011283 'articlefeedbackv5-form-hide' => 'Ascunde această postare',
@@ -11110,6 +11313,14 @@
1111111314 * Recent scăzute: articole care au primit cel puțin 70% calificative slabe (2 stele sau mai puțin) în orice categorie în ultimele 24 de ore. Numai articolele care au primit cel puțin 10 evaluări în ultimele 24 de ore sunt incluse.",
1111211315 'articlefeedbackv5' => 'Panou de control evaluare articol',
1111311316 'articlefeedbackv5-desc' => 'Evaluare articol',
 11317+ 'articlefeedbackv5-comment-more' => 'Mai mult',
 11318+ 'articlefeedbackv5-comment-less' => 'Mai puțin',
 11319+ 'articlefeedbackv5-beta-notice' => 'Beta',
 11320+ 'articlefeedbackv5-viewactivity' => 'Vizualizare activitate',
 11321+ 'articlefeedbackv5-timestamp-years' => '{{PLURAL:$1|$1 an|$1 ani|$1 de ani}}',
 11322+ 'articlefeedbackv5-timestamp-months' => '{{PLURAL:$1|$1 lună|$1 luni|$1 de luni}}',
 11323+ 'articlefeedbackv5-timestamp-weeks' => '{{PLURAL:$1|$1 săptămână|$1 săptămâni|$1 de săptămâni}}',
 11324+ 'articlefeedbackv5-timestamp-seconds' => 'mai puțin de 1 minut',
1111411325 'articlefeedbackv5-bucket1-title' => 'Ajutați la îmbunătățirea paginii',
1111511326 'articlefeedbackv5-bucket1-question-toggle' => 'Ați găsit ceea ce ați căutat?',
1111611327 'articlefeedbackv5-bucket1-toggle-found-yes' => 'Da',
@@ -11142,7 +11353,7 @@
1114311354 'articlefeedbackv5-bucket4-title' => 'Ajutați la îmbunătățirea acestei pagini',
1114411355 'articlefeedbackv5-bucket4-subhead' => 'Știați că puteți modifica această pagină?',
1114511356 'articlefeedbackv5-bucket4-teaser-line1' => 'Wikipedia funcționează deoarece oricine poate modifica paginile ei.',
11146 - 'articlefeedbackv5-bucket4-teaser-line2' => 'Dați-i drumul, faceți o încercare. Îndrăzniți!',
 11357+ 'articlefeedbackv5-bucket4-teaser-line2' => 'Dați-i drumul, faceți o încercare. Fiți îndrăzneț!',
1114711358 'articlefeedbackv5-bucket4-learn-to-edit' => 'Aflați cum să modificați o pagină',
1114811359 'articlefeedbackv5-bucket4-form-submit' => 'Modificați această pagină',
1114911360 'articlefeedbackv5-bucket4-help-tooltip-info' => 'Wikipedia dorește să știe ce gândiți. Ajutați la îmbunătățirea acestei pagini devenind un editor.',
@@ -11202,8 +11413,10 @@
1120311414 'articlefeedbackv5-help-tooltip-linktext' => 'Aflați mai multe',
1120411415 'articlefeedbackv5-transparency-terms' => 'Prin trimitere, sunteți de acord cu acești $1.',
1120511416 'articlefeedbackv5-transparency-terms-linktext' => 'termeni',
 11417+ 'articlefeedbackv5-sitesub-linktext' => 'Îmbunătățiți această pagină',
1120611418 'articlefeedbackv5-titlebar-linktext' => 'Ajutați la îmbunătățirea acestei pagini >>',
1120711419 'articlefeedbackv5-fixedtab-linktext' => 'Îmbunătățiți această pagină',
 11420+ 'articlefeedbackv5-bottomrighttab-linktext' => 'Îmbunătățiți această pagină',
1120811421 'articlefeedbackv5-section-linktext' => 'părere',
1120911422 'articlefeedbackv5-toolbox-linktext' => 'Îmbunătățiți această pagină',
1121011423 'articlefeedbackv5-disable-preference' => 'Nu afișa widgetul pentru evaluarea articolelor în cadrul paginilor',
@@ -11229,6 +11442,7 @@
1123011443
1123111444 Vă mulțumim și vă urăm toate cele bune,
1123211445 Echipa proiectului {{SITENAME}}',
 11446+ 'articlefeedbackv5-disable-flyover-title' => 'Eliminați acest instrument?',
1123311447 );
1123411448
1123511449 /** Tarandíne (Tarandíne)
@@ -11256,10 +11470,13 @@
1125711471 'articlefeedbackv5-form-tools-label' => 'Struminde',
1125811472 'articlefeedbackv5-form-helpful-yes-label' => 'Sìne',
1125911473 'articlefeedbackv5-form-helpful-no-label' => 'None',
 11474+ 'articlefeedbackv5-special-add-feedback' => "Manne 'a segnalaziona toje",
1126011475 'articlefeedbackv5-special-filter-all' => 'Tutte (sorveglie) ($1)',
1126111476 'articlefeedbackv5-special-filter-notdeleted' => 'Tutte ($1)',
1126211477 'articlefeedbackv5-special-filter-visible' => 'Tutte Vesibbile ($1)',
11263 - 'articlefeedbackv5-special-filter-invisible' => 'Scunnute ($1)',
 11478+ 'articlefeedbackv5-special-filter-hidden' => 'Scunnute ($1)',
 11479+ 'articlefeedbackv5-special-sort-age' => 'Date',
 11480+ 'articlefeedbackv5-special-sort-helpful' => 'Utile',
1126411481 'articlefeedbackv5-special-sort-label-before' => 'Urdenate pe:',
1126511482 'articlefeedbackv5-special-filter-label-before' => 'Ste face vedè:',
1126611483 'articlefeedbackv5-special-showing' => '{{PLURAL:$1|1 messàgge de segnalazione|$1 messàgge de segnalazione}} sus a sta pàgene',
@@ -11268,20 +11485,21 @@
1126911486 'articlefeedbackv5-form-optionid' => 'Opzione $1',
1127011487 'articlefeedbackv5-form-hide' => 'Scunne stu messagge',
1127111488 'articlefeedbackv5-form-abuse' => 'Signale cumme abuse ($1)',
11272 - 'articlefeedbackv5-form-delete' => 'Scangille (sorveglianze)',
 11489+ 'articlefeedbackv5-form-abuse-masked' => 'Signe cumme abbuse',
 11490+ 'articlefeedbackv5-form-delete' => 'Supervisione',
1127311491 'articlefeedbackv5-form-header' => 'Feedback #$1, a $2',
11274 - 'articlefeedbackv5-form1-header-found' => '{{GENDER:$1|$1}} honne acchjate quidde ca stavane cercanne',
11275 - 'articlefeedbackv5-form1-header-not-found' => "{{GENDER:$1|$1}} non g'honne acchjate quidde ca stavane cercanne",
11276 - 'articlefeedbackv5-form2-header-praise' => "{{GENDER:$1|$1}} have 'nu commende:",
11277 - 'articlefeedbackv5-form2-header-problem' => "{{GENDER:$1|$1}} ave 'na lode:",
 11492+ 'articlefeedbackv5-form1-header-found' => '{{GENDER:$1|$2 onne acchiate quidde ca ste cercavane}}',
 11493+ 'articlefeedbackv5-form1-header-not-found' => "{{GENDER:$1|$2 non g'onne acchiate quidde ca ste cercavane}}",
 11494+ 'articlefeedbackv5-form2-header-praise' => '{{GENDER:$1|$1}} ave na lode:',
 11495+ 'articlefeedbackv5-form2-header-problem' => "{{GENDER:$1|$1}} ave 'nu probbleme:",
1127811496 'articlefeedbackv5-form2-header-question' => "{{GENDER:$1|$1}} ave 'na domande:",
1127911497 'articlefeedbackv5-form2-header-suggestion' => "{{GENDER:$1|$1}} ave 'nu suggerimende:",
11280 - 'articlefeedbackv5-form3-header' => "$1 valute 'stà pàgene $2/5",
11281 - 'articlefeedbackv5-form4-header' => "L'utine jè state presendate c'u module CTA-only.",
11282 - 'articlefeedbackv5-form5-header' => "$1 valute 'stà pàgene:",
 11498+ 'articlefeedbackv5-form3-header' => '{{GENDER:$1|$1}} valute stà pàgene $2/5',
 11499+ 'articlefeedbackv5-form4-header' => "{{GENDER:$1|$1}} ha state presendate c'u module CTA-only.",
 11500+ 'articlefeedbackv5-form5-header' => '{{GENDER:$1|$1}} valute stà pàgene:',
1128311501 'articlefeedbackv5-form-not-shown' => "{{GENDER:$1|$1}} non g'ha fatte vedè 'nu module de segnalazione.",
1128411502 'articlefeedbackv5-form-invalid' => "'U module ID d'u feedback non g'ète valide.",
11285 - 'articlefeedbackv5-abuse-saved' => "Abuse de l'assignazione salvate",
 11503+ 'articlefeedbackv5-abuse-saved' => 'Signate cumme abbuse ($1)',
1128611504 'articlefeedbackv5-error-loading-feedback' => "Errore d'u carecamènde feedback.",
1128711505 'articlefeedbackv5-invalid-feedback-id' => "L' ID d'u feedback non g'ète valide.",
1128811506 'articlefeedbackv5-invalid-feedback-flag' => "L'assignazione d'u feedback non g'ète valide.",
@@ -11289,7 +11507,7 @@
1129011508 'articlefeedbackv5-discussion-page' => "'Ngazzamende",
1129111509 'articlefeedbackv5-whats-this' => 'Ajute',
1129211510 'articlefeedbackv5-invalid-page-id' => 'Pàgene ID invalide',
11293 - 'articlefeedbackv5-percent-found' => '$1 de utinde honne acchijate quidde ca stavane cercanne.',
 11511+ 'articlefeedbackv5-percent-found' => '$1 onne acchiate quidde ca ste cercavane.',
1129411512 'articlefeedbackv5-overall-rating' => 'Valutazione: $1/5',
1129511513 'articlefeedbackv5-special-title' => '== Segnalazione ==',
1129611514 'articleFeedbackv5-table-caption-dailyhighsandlows' => 'Le megghie e le pesce de osce',
@@ -11306,6 +11524,9 @@
1130711525 'articlefeedbackv5-comment-more' => 'De cchiù',
1130811526 'articlefeedbackv5-comment-less' => 'De mene',
1130911527 'articlefeedbackv5-beta-notice' => 'Beta',
 11528+ 'articlefeedbackv5-timestamp-years' => '{{PLURAL:$1|$1 anne|$1 anne}}',
 11529+ 'articlefeedbackv5-timestamp-months' => '{{PLURAL:$1|$1 mese|$1 mise}}',
 11530+ 'articlefeedbackv5-timestamp-weeks' => '{{PLURAL:$1|$1 sumane|$1 sumane}}',
1131011531 'articlefeedbackv5-bucket1-title' => "Danne 'na màne a migliorà sta pàgene",
1131111532 'articlefeedbackv5-bucket1-question-toggle' => 'Hagghie acchijate quidde ca stave cercanne?',
1131211533 'articlefeedbackv5-bucket1-toggle-found-yes' => 'Sìne',
@@ -11411,6 +11632,7 @@
1141211633 'articlefeedbackv5-section-linktext' => 'feedback',
1141311634 'articlefeedbackv5-toolbox-linktext' => 'Perfezione sta pàgene',
1141411635 'articlefeedbackv5-privacyurl' => '//wikimediafoundation.org/wiki/Feedback_privacy_statement',
 11636+ 'articlefeedbackv5-activity-pane-header' => 'Archivije de le attività',
1141511637 'articlefeedbackv5-emailcapture-response-body' => "Cià!
1141611638
1141711639 Grazie purcé è avute inderesse a dà 'na màne pe migliorà {{SITENAME}}.
@@ -11469,8 +11691,8 @@
1147011692 'articlefeedbackv5-error-email' => 'Недопустимый адрес электронной почты.',
1147111693 'articlefeedbackv5-error-blocked' => 'Заблокированные пользователи не могут представлять отзыв.',
1147211694 'articlefeedbackv5-error-validation' => 'Ошибка проверки.',
11473 - 'articlefeedbackv5-error-abuse' => 'Ваш комментарий нарушает $1. Просьба пересмотреть его.',
11474 - 'articlefeedbackv5-error-abuse-linktext' => 'политику злоупотребления в отзывах',
 11695+ 'articlefeedbackv5-error-abuse' => 'Ваше сообщение было отвергнуто программным фильтром, который определил, что оно может нарушить $1 Википедии. Пожалуйста скорректируйте своё сообщение и повторите попытку.',
 11696+ 'articlefeedbackv5-error-abuse-linktext' => 'правила написания отзывов',
1147511697 'articlefeedbackv5-error-unknown' => 'Неизвестная ошибка.',
1147611698 'articlefeedbackv5-error-submit' => 'Ошибка при отправке данных формы.',
1147711699 'articlefeedbackv5-error-nofeedback' => 'Введите, пожалуйста, ваш отзыв.',
@@ -11487,11 +11709,11 @@
1148811710 'articlefeedbackv5-special-filter-abusive' => 'Помечено как злоупотребление ($1)',
1148911711 'articlefeedbackv5-special-filter-helpful' => 'Полезный ($1)',
1149011712 'articlefeedbackv5-special-filter-unhelpful' => 'Бесполезный ($1)',
11491 - 'articlefeedbackv5-special-filter-needsoversight' => 'Запрошен надзор ($1)',
 11713+ 'articlefeedbackv5-special-filter-requested' => 'Запрошен надзор ($1)',
1149211714 'articlefeedbackv5-special-filter-visible' => 'Все видимые ( $1 )',
11493 - 'articlefeedbackv5-special-filter-invisible' => 'Скрытые ( $1 )',
11494 - 'articlefeedbackv5-special-filter-deleted' => 'Под надзором ($1)',
11495 - 'articlefeedbackv5-special-filter-undeleted' => 'Без надзора ($1)',
 11715+ 'articlefeedbackv5-special-filter-hidden' => 'Скрытые ( $1 )',
 11716+ 'articlefeedbackv5-special-filter-oversighted' => 'Под надзором ($1)',
 11717+ 'articlefeedbackv5-special-filter-unoversighted' => 'Без надзора ($1)',
1149611718 'articlefeedbackv5-special-filter-declined' => 'Надзор отклонен ( $1 )',
1149711719 'articlefeedbackv5-special-filter-unhidden' => 'Нескрытый ($1)',
1149811720 'articlefeedbackv5-special-sort-age' => 'Дата',
@@ -11506,8 +11728,6 @@
1150711729 'articlefeedbackv5-special-more' => 'Показать больше отзывов',
1150811730 'articlefeedbackv5-special-pagetitle' => 'Отзыв: $1',
1150911731 'articlefeedbackv5-form-optionid' => 'Вариант $1',
11510 - 'articlefeedbackv5-hidden' => 'Этот отзыв скрыт авторизованным редактором',
11511 - 'articlefeedbackv5-deleted' => 'Этот отзыв был удален надзирателями',
1151211732 'articlefeedbackv5-form-hide' => 'Скрыть это сообщение',
1151311733 'articlefeedbackv5-form-unhide' => 'Показать этот отзыв',
1151411734 'articlefeedbackv5-form-helpful' => 'Пометить как полезную ($1)',
@@ -11567,7 +11787,11 @@
1156811788 'articlefeedbackv5-timestamp-months' => '{{PLURAL:$1|$1 месяц|$1 месяца|$1 месяцев}}',
1156911789 'articlefeedbackv5-timestamp-weeks' => '{{PLURAL:$1|$1 неделя|$1 недели|$1 недель}}',
1157011790 'articlefeedbackv5-timestamp-seconds' => 'менее 1 минуты',
 11791+ 'articlefeedbackv5-mask-text-hidden' => 'Этот отзыв скрыт авторизованным редактором',
 11792+ 'articlefeedbackv5-mask-text-oversight' => 'Этот отзыв скрыт от всех авторизованным редактором',
1157111793 'articlefeedbackv5-mask-postnumber' => 'Отзыв #$1',
 11794+ 'articlefeedbackv5-special-disclaimer' => 'Это прототип. Не используйте его, если вас специально не приглашали.',
 11795+ 'articlefeedbackv5-special-goback' => 'Вернуться к списку отзывов',
1157211796 'articlefeedbackv5-noteflyover-hide-caption' => 'Скрыть этот отзыв',
1157311797 'articlefeedbackv5-noteflyover-hide-label' => 'Добавить примечание',
1157411798 'articlefeedbackv5-noteflyover-hide-placeholder' => 'Почему вы скрыли этот отзыв?',
@@ -11732,9 +11956,9 @@
1173311957 'articlefeedbackv5-activity-flag' => 'поставил отметку о злоупотреблении в',
1173411958 'articlefeedbackv5-activity-unhidden' => 'убрал скрытие отзыва в',
1173511959 'articlefeedbackv5-activity-unflag' => 'убрал отметку о злоупотреблении в',
11736 - 'articlefeedbackv5-activity-oversight' => 'надзирает этот отзыв с',
11737 - 'articlefeedbackv5-activity-unoversight' => 'убрал надзор с',
11738 - 'articlefeedbackv5-activity-count' => '$1 действий на этот отзыв',
 11960+ 'articlefeedbackv5-activity-oversight' => 'скрыл этот отзыв с',
 11961+ 'articlefeedbackv5-activity-unoversight' => 'раскрыл этот отзыв с',
 11962+ 'articlefeedbackv5-activity-count' => '{{PLURAL:$1|$1 действие на этот отзыв|$1 действия на этот отзыв|$1 действий на этот отзыв}}',
1173911963 'articlefeedbackv5-activity-more' => 'Показать дополнительные действия',
1174011964 'articlefeedbackv5-emailcapture-response-body' => 'Здравствуйте!
1174111965
@@ -11758,7 +11982,7 @@
1175911983
1176011984 С наилучшими пожеланиями и благодарностью
1176111985 Команда проекта {{SITENAME}}',
11762 - 'articlefeedbackv5-email-request-oversight-subject' => '$1 запросил скрытие $2',
 11986+ 'articlefeedbackv5-email-request-oversight-subject' => 'Запрошено сокрытие для страницы отзыва',
1176311987 );
1176411988
1176511989 /** Rusyn (Русиньскый)
@@ -12186,8 +12410,8 @@
1218712411 'articlefeedbackv5-error-email' => 'Ta elektronski naslov ni veljaven.',
1218812412 'articlefeedbackv5-error-blocked' => 'Blokirani uporabniki ne smejo objavljati povratnih informacij.',
1218912413 'articlefeedbackv5-error-validation' => 'Napaka pri preverjanju.',
12190 - 'articlefeedbackv5-error-abuse' => 'Vaš komentar krši $1. Prosimo, popravite ga.',
12191 - 'articlefeedbackv5-error-abuse-linktext' => 'Politika zlorabe povratnih informacij',
 12414+ 'articlefeedbackv5-error-abuse' => 'Vašo objavo je zavrnil programski filter, ki sumi, da objava morda krši Wikipedijine $1. Prosimo, popravite vašo objavo in poskusite znova.',
 12415+ 'articlefeedbackv5-error-abuse-linktext' => 'smernice povratnih informacij',
1219212416 'articlefeedbackv5-error-unknown' => 'Neznana napaka.',
1219312417 'articlefeedbackv5-error-submit' => 'Napaka pri predložitvi obrazca.',
1219412418 'articlefeedbackv5-error-nofeedback' => 'Prosimo, vnesite svoj odziv.',
@@ -12204,11 +12428,11 @@
1220512429 'articlefeedbackv5-special-filter-abusive' => 'Označeno kot zloraba ($1)',
1220612430 'articlefeedbackv5-special-filter-helpful' => 'V pomoč ($1)',
1220712431 'articlefeedbackv5-special-filter-unhelpful' => 'Nekoristno ($1)',
12208 - 'articlefeedbackv5-special-filter-needsoversight' => 'Nadzor (brisanje) zahtevan ($1)',
 12432+ 'articlefeedbackv5-special-filter-requested' => 'Nadzor (brisanje) zahtevan ($1)',
1220912433 'articlefeedbackv5-special-filter-visible' => 'Vsi vidni ($1)',
12210 - 'articlefeedbackv5-special-filter-invisible' => 'Skriti ($1)',
12211 - 'articlefeedbackv5-special-filter-deleted' => 'Izbrisano ($1)',
12212 - 'articlefeedbackv5-special-filter-undeleted' => 'Izbris razveljavljen ($1)',
 12434+ 'articlefeedbackv5-special-filter-hidden' => 'Skriti ($1)',
 12435+ 'articlefeedbackv5-special-filter-oversighted' => 'Izbrisano ($1)',
 12436+ 'articlefeedbackv5-special-filter-unoversighted' => 'Izbris razveljavljen ($1)',
1221312437 'articlefeedbackv5-special-filter-declined' => 'Izbris zavrnjen ($1)',
1221412438 'articlefeedbackv5-special-filter-unhidden' => 'Razkrito ($1)',
1221512439 'articlefeedbackv5-special-sort-age' => 'Datum',
@@ -12223,8 +12447,6 @@
1222412448 'articlefeedbackv5-special-more' => 'Prikaži več objav',
1222512449 'articlefeedbackv5-special-pagetitle' => 'Povratna informacija: $1',
1222612450 'articlefeedbackv5-form-optionid' => 'Možnost $1',
12227 - 'articlefeedbackv5-hidden' => 'Objavo je {{GENDER:skril|skrila|skril}} $1 ob $2.',
12228 - 'articlefeedbackv5-deleted' => 'Objavo je {{GENDER:|izbrisal|izbrisala|izbrisal}} $1 ob $2.',
1222912451 'articlefeedbackv5-form-hide' => 'Skrij objavo',
1223012452 'articlefeedbackv5-form-unhide' => 'Razkrij objavo',
1223112453 'articlefeedbackv5-form-helpful' => 'Označi kot koristno ($1)',
@@ -12286,6 +12508,7 @@
1228712509 'articlefeedbackv5-mask-text-hidden' => 'Ta komentar je skril pooblaščeni urednik.',
1228812510 'articlefeedbackv5-mask-text-oversight' => 'Ta komentar je eden od pooblaščenih urednikov izbrisal.',
1228912511 'articlefeedbackv5-mask-postnumber' => 'Objavi $1',
 12512+ 'articlefeedbackv5-special-disclaimer' => 'To je prototip. Prosimo, da ga ne uporabljate, razen v primeru, če ste bili povabljeni.',
1229012513 'articlefeedbackv5-noteflyover-hide-caption' => 'Skrij objavo',
1229112514 'articlefeedbackv5-noteflyover-hide-label' => 'Dodaj opombo',
1229212515 'articlefeedbackv5-noteflyover-hide-placeholder' => 'Zakaj skrivate objavo?',
@@ -12501,6 +12724,11 @@
1250212725 Prosimo, upoštevajte, daje orodje za povratna sporočila v5 še vedno v zgodnjih
1250312726 fazah razvoja in da stran s povratnimi sporočili za obdobje preizkušanja ni na
1250412727 razpolago celotnemu občestvu.',
 12728+ 'articlefeedbackv5-disable-flyover-title' => 'Odstranim orodje?',
 12729+ 'articlefeedbackv5-disable-flyover-help' => 'Za odstranitev $1 pojdite na $2 in odkljukajte $3',
 12730+ 'articlefeedbackv5-disable-flyover-help-emphasis-text' => 'Povratna informacija članka',
 12731+ 'articlefeedbackv5-disable-flyover-help-location' => 'Nastavitve > Videz',
 12732+ 'articlefeedbackv5-disable-flyover-prefbutton' => 'Pojdi na moje nastavitve',
1250512733 );
1250612734
1250712735 /** Serbian (Cyrillic script) (‪Српски (ћирилица)‬)
@@ -12814,7 +13042,7 @@
1281513043 'articlefeedbackv5-special-filter-helpful' => 'Användbart ($1)',
1281613044 'articlefeedbackv5-special-filter-unhelpful' => 'Inte användbart ($1)',
1281713045 'articlefeedbackv5-special-filter-visible' => 'Alla synliga ($1)',
12818 - 'articlefeedbackv5-special-filter-invisible' => 'Osynlig',
 13046+ 'articlefeedbackv5-special-filter-hidden' => 'Dold ($1)',
1281913047 'articlefeedbackv5-special-sort-age' => 'Datum',
1282013048 'articlefeedbackv5-special-sort-helpful' => 'Användbar',
1282113049 'articlefeedbackv5-special-sort-rating' => 'Betyg',
@@ -12827,8 +13055,6 @@
1282813056 'articlefeedbackv5-special-more' => 'Visa fler inlägg',
1282913057 'articlefeedbackv5-special-pagetitle' => 'Feedback: $1',
1283013058 'articlefeedbackv5-form-optionid' => 'Alternativ $1',
12831 - 'articlefeedbackv5-hidden' => 'Denna post doldes av $1 den $2',
12832 - 'articlefeedbackv5-deleted' => 'Denna post har tog bort av $1 den $2',
1283313059 'articlefeedbackv5-form-hide' => 'Dölj detta inlägg',
1283413060 'articlefeedbackv5-form-unhide' => 'Ta fram denna post',
1283513061 'articlefeedbackv5-form-helpful' => 'Markera som användbar ($1)',
@@ -12847,7 +13073,7 @@
1284813074 'articlefeedbackv5-discussion-page' => 'Diskussion',
1284913075 'articlefeedbackv5-whats-this' => 'Vad är detta?',
1285013076 'articlefeedbackv5-invalid-page-id' => 'Ogiltigt sid-ID',
12851 - 'articlefeedbackv5-percent-found' => '$1 av användarna hittade vad de letade efter.',
 13077+ 'articlefeedbackv5-percent-found' => '$1 hittade vad de letade efter',
1285213078 'articlefeedbackv5-overall-rating' => 'Betyg: $1/5',
1285313079 'articlefeedbackv5-special-title' => '==Feedback==',
1285413080 'articleFeedbackv5-table-caption-dailyhighsandlows' => 'Dagens toppar och dalar',
@@ -13238,6 +13464,7 @@
1323913465
1324013466 /** Turkish (Türkçe)
1324113467 * @author 82-145
 13468+ * @author Bilalokms
1324213469 * @author Cekli829
1324313470 * @author CnkALTDS
1324413471 * @author Emperyan
@@ -13260,6 +13487,7 @@
1326113488 'articlefeedbackv5-cta3-button-text' => 'Ankete başla',
1326213489 'articlefeedbackv5-error' => 'Bir hata meydana geldi. Lütfen daha sonra tekrar deneyin.',
1326313490 'articlefeedbackv5-error-email' => 'Bu e-posta adresi geçerli değil.',
 13491+ 'articlefeedbackv5-error-blocked' => 'Engellenmiş kullanıcılar geri bildirim gönderemez.',
1326413492 'articlefeedbackv5-error-validation' => 'Doğrulama hatası.',
1326513493 'articlefeedbackv5-error-abuse' => 'Yorumunuz $1 ilkesini ihlal ediyor. Lütfen bunu düzeltin.',
1326613494 'articlefeedbackv5-error-abuse-linktext' => 'geri bildirim kötüye kullanım ilkesi',
@@ -13271,22 +13499,30 @@
1327213500 'articlefeedbackv5-form-helpful-yes-label' => 'Evet',
1327313501 'articlefeedbackv5-form-helpful-no-label' => 'Hayır',
1327413502 'articlefeedbackv5-special-add-feedback' => 'Geri bildirim ekleyin',
13275 - 'articlefeedbackv5-special-filter-all' => 'Hepsi ($1)',
 13503+ 'articlefeedbackv5-special-filter-all' => 'Hepsi (gözetim) ($1)',
 13504+ 'articlefeedbackv5-special-filter-notdeleted' => 'Hepsi ($1)',
1327613505 'articlefeedbackv5-special-filter-comment' => 'Sadece yorumlar ($1)',
13277 - 'articlefeedbackv5-special-filter-invisible' => '($1) gizlendi',
13278 - 'articlefeedbackv5-special-filter-deleted' => '($1) silindi',
 13506+ 'articlefeedbackv5-special-filter-abusive' => 'İstismar olarak bayraklandı ($1)',
 13507+ 'articlefeedbackv5-special-filter-hidden' => '($1) gizlendi',
 13508+ 'articlefeedbackv5-special-filter-oversighted' => '($1) silindi',
1327913509 'articlefeedbackv5-special-sort-age' => 'Tarih',
 13510+ 'articlefeedbackv5-special-filter-label-before' => 'Gösteriliyor:',
1328013511 'articleFeedbackv5-comment-ago' => '$1 önce',
1328113512 'articlefeedbackv5-revision-link' => 'Özgün sürümü görüntüle',
1328213513 'articlefeedbackv5-special-more' => 'Daha fazla',
1328313514 'articlefeedbackv5-special-pagetitle' => 'Geri bildirim: $1',
1328413515 'articlefeedbackv5-form-optionid' => 'Seçenek $1',
13285 - 'articlefeedbackv5-hidden' => 'Gizli',
13286 - 'articlefeedbackv5-form-delete' => 'Sil',
 13516+ 'articlefeedbackv5-form-hide' => 'Bu yazıyı gizle',
 13517+ 'articlefeedbackv5-form-unhide' => 'Bu yazıyı göster',
 13518+ 'articlefeedbackv5-form-abuse' => 'İstismar olarak bayraklayın ($1)',
 13519+ 'articlefeedbackv5-form-abuse-masked' => 'İstismar olarak bayraklayın',
 13520+ 'articlefeedbackv5-form-delete' => 'Gözetim',
 13521+ 'articlefeedbackv5-abuse-saved' => 'İstismar olarak bayraklandı ($1)',
 13522+ 'articlefeedbackv5-abuse-saved-masked' => 'İstismar olarak bayraklandı',
1328713523 'articlefeedbackv5-go-to-article' => 'Maddeyi görüntüle',
1328813524 'articlefeedbackv5-discussion-page' => 'Tartışma',
1328913525 'articlefeedbackv5-whats-this' => 'Yardım',
13290 - 'articlefeedbackv5-overall-rating' => 'Oran',
 13526+ 'articlefeedbackv5-overall-rating' => 'Oran: $1/5',
1329113527 'articlefeedbackv5-special-title' => '==Geri bildirim==',
1329213528 'articleFeedbackv5-table-heading-page' => 'Madde',
1329313529 'articleFeedbackv5-table-heading-average' => 'Ortalama',
@@ -13313,6 +13549,7 @@
1331413550 'articlefeedbackv5-noteflyover-unrequestoversight-submit' => 'İsteği iptal et',
1331513551 'articlefeedbackv5-noteflyover-unrequestoversight-help' => 'Daha fazla bilgi',
1331613552 'articlefeedbackv5-noteflyover-oversight-label' => 'Not ekle',
 13553+ 'articlefeedbackv5-noteflyover-oversight-help' => 'Daha fazla bilgi',
1331713554 'articlefeedbackv5-noteflyover-unoversight-label' => 'Not ekle',
1331813555 'articlefeedbackv5-noteflyover-unoversight-help' => 'Daha fazla bilgi',
1331913556 'articlefeedbackv5-noteflyover-declineoversight-label' => 'Not ekle',
@@ -13781,15 +14018,18 @@
1378214019 */
1378314020 $messages['yi'] = array(
1378414021 'articlefeedbackv5-cta-thanks' => 'אַ דאַנק',
13785 - 'articlefeedbackv5-special-filter-all' => 'אַלע',
 14022+ 'articlefeedbackv5-special-filter-all' => 'אַלע (קאנטראל) ($1)',
1378614023 'articlefeedbackv5-special-filter-notdeleted' => 'אלע ($1)',
1378714024 'articlefeedbackv5-special-filter-comment' => 'נאר הערות ($1)',
1378814025 'articlefeedbackv5-special-filter-abusive' => 'געצייכנט ווי קרומבאניץ',
1378914026 'articlefeedbackv5-special-filter-helpful' => 'העלפֿיק ($1)',
1379014027 'articlefeedbackv5-special-filter-unhelpful' => 'נישט העלפיק ($1)',
13791 - 'articlefeedbackv5-special-filter-needsoversight' => 'רעצענזיע געפאדערט ($1)',
 14028+ 'articlefeedbackv5-special-filter-requested' => 'רעצענזיע געפאדערט ($1)',
1379214029 'articlefeedbackv5-special-filter-visible' => 'אלע זעבאר ($1)',
13793 - 'articlefeedbackv5-special-filter-invisible' => 'באהאלטן ($1)',
 14030+ 'articlefeedbackv5-special-filter-hidden' => 'באהאלטן ($1)',
 14031+ 'articlefeedbackv5-special-sort-age' => 'דאַטע',
 14032+ 'articlefeedbackv5-special-sort-label-before' => 'סארטירן לויט:',
 14033+ 'articleFeedbackv5-comment-ago' => 'פֿאַר $1',
1379414034 'articlefeedbackv5-special-more' => 'ווייזן נאך מעלדונגען',
1379514035 'articlefeedbackv5-special-pagetitle' => 'פֿידבעק: $1',
1379614036 'articlefeedbackv5-form-optionid' => 'ברירה $1',
@@ -13808,9 +14048,10 @@
1380914049 'articlefeedbackv5-discussion-page' => 'שמועס',
1381014050 'articlefeedbackv5-whats-this' => 'הילף',
1381114051 'articlefeedbackv5-invalid-page-id' => 'אומגילטיקער בלאט אידענטיפיצירער',
13812 - 'articlefeedbackv5-percent-found' => '$1 פון באניצער האבן געטראפן וואס זיי האבן געזוכט.',
 14052+ 'articlefeedbackv5-percent-found' => '$1 האבן געטראפֿן וואס זיי האבן געזוכט.',
1381314053 'articlefeedbackv5-overall-rating' => 'שאַצונג: $1/5',
1381414054 'articlefeedbackv5-special-title' => '==פֿידבעק==',
 14055+ 'articleFeedbackv5-table-caption-dailyhighsandlows' => 'היינטיקע הויכן און טיפן',
1381514056 'articleFeedbackv5-table-heading-page' => 'אַרטיקל',
1381614057 'articleFeedbackv5-table-heading-average' => 'דורכשניט',
1381714058 'articlefeedbackv5' => 'ארטיקל פֿידבעק טאוול',
@@ -13838,6 +14079,7 @@
1383914080 * @author Anakmalaysia
1384014081 * @author Bencmq
1384114082 * @author Breawycker
 14083+ * @author Dimension
1384214084 * @author Hydra
1384314085 * @author Hzy980512
1384414086 * @author Liangent
@@ -13845,6 +14087,7 @@
1384614088 * @author PhiLiP
1384714089 * @author Shizhao
1384814090 * @author Xiaomingyan
 14091+ * @author Yfdyh000
1384914092 * @author 阿pp
1385014093 */
1385114094 $messages['zh-hans'] = array(
@@ -13865,7 +14108,7 @@
1386614109 'articlefeedbackv5-error-email' => '此电子邮件地址无效。',
1386714110 'articlefeedbackv5-error-blocked' => '被阻止的用户不能提交反馈。',
1386814111 'articlefeedbackv5-error-validation' => '验证错误。',
13869 - 'articlefeedbackv5-error-abuse' => '您的评论违反了$1,请修改之。',
 14112+ 'articlefeedbackv5-error-abuse' => '您的评论被软件过滤器拒绝,它可能违反了维基百科的$1。请修改您的评论再试。',
1387014113 'articlefeedbackv5-error-abuse-linktext' => '反馈滥用政策',
1387114114 'articlefeedbackv5-error-unknown' => '未知错误。',
1387214115 'articlefeedbackv5-error-submit' => '表单提交错误。',
@@ -13883,11 +14126,11 @@
1388414127 'articlefeedbackv5-special-filter-abusive' => '标记为滥用($1)',
1388514128 'articlefeedbackv5-special-filter-helpful' => '有帮助($1)',
1388614129 'articlefeedbackv5-special-filter-unhelpful' => '无益($1)',
13887 - 'articlefeedbackv5-special-filter-needsoversight' => '请求删除($1)',
 14130+ 'articlefeedbackv5-special-filter-requested' => '请求删除($1)',
1388814131 'articlefeedbackv5-special-filter-visible' => '所有可见($1)',
13889 - 'articlefeedbackv5-special-filter-invisible' => '隐藏($1)',
13890 - 'articlefeedbackv5-special-filter-deleted' => '已删除($1)',
13891 - 'articlefeedbackv5-special-filter-undeleted' => '尚未监督( $1 )',
 14132+ 'articlefeedbackv5-special-filter-hidden' => '隐藏($1)',
 14133+ 'articlefeedbackv5-special-filter-oversighted' => '已删除($1)',
 14134+ 'articlefeedbackv5-special-filter-unoversighted' => '尚未监督( $1 )',
1389214135 'articlefeedbackv5-special-filter-declined' => '拒绝监督 ( $1 )',
1389314136 'articlefeedbackv5-special-filter-unhidden' => '取消隐藏($1)',
1389414137 'articlefeedbackv5-special-sort-age' => '日期',
@@ -13902,8 +14145,6 @@
1390314146 'articlefeedbackv5-special-more' => '显示更多帖子',
1390414147 'articlefeedbackv5-special-pagetitle' => '反馈:$1',
1390514148 'articlefeedbackv5-form-optionid' => '选项$1',
13906 - 'articlefeedbackv5-hidden' => '$1在$2之上隐藏了该帖',
13907 - 'articlefeedbackv5-deleted' => '$1在$2之上删除了该帖',
1390814149 'articlefeedbackv5-form-hide' => '隐藏这篇文章',
1390914150 'articlefeedbackv5-form-unhide' => '取消隐藏该帖',
1391014151 'articlefeedbackv5-form-helpful' => '标记为有帮助($1)',
@@ -13962,7 +14203,9 @@
1396314204 'articlefeedbackv5-timestamp-months' => '{{PLURAL:$1|$1个月|$1个月}}',
1396414205 'articlefeedbackv5-timestamp-weeks' => '{{PLURAL:$1|$1周|$1周}}',
1396514206 'articlefeedbackv5-timestamp-seconds' => '不到1分钟',
 14207+ 'articlefeedbackv5-mask-text-hidden' => '此评论被一名已授权编者隐藏',
1396614208 'articlefeedbackv5-mask-postnumber' => '帖子#$1',
 14209+ 'articlefeedbackv5-special-goback' => '回到反馈列表',
1396714210 'articlefeedbackv5-noteflyover-hide-caption' => '隐藏该帖',
1396814211 'articlefeedbackv5-noteflyover-hide-label' => '添加注释',
1396914212 'articlefeedbackv5-noteflyover-hide-placeholder' => '您为什么隐藏该帖?',
@@ -14105,6 +14348,8 @@
1410614349 'right-aftv5-see-deleted-feedback' => '查看已删除的反馈',
1410714350 'right-aftv5-see-hidden-feedback' => '查看隐藏的反馈',
1410814351 'articlefeedbackv5-log-name' => '文章反馈活动日志',
 14352+ 'articlefeedbackv5-activity-pane-header' => '活动日志',
 14353+ 'articlefeedbackv5-activity-more' => '显示更多活动',
1410914354 'articlefeedbackv5-emailcapture-response-body' => '您好!
1411014355
1411114356 谢谢您表示愿意帮助我们改善{{SITENAME}}。
@@ -14127,6 +14372,10 @@
1412814373
1412914374 祝好,致谢,
1413014375 {{SITENAME}}团队',
 14376+ 'articlefeedbackv5-disable-flyover-title' => '移除此工具吗?',
 14377+ 'articlefeedbackv5-disable-flyover-help' => '若要删除 $1,请转至 $2,并勾选 $3',
 14378+ 'articlefeedbackv5-disable-flyover-help-location' => '参数设置 > 外观',
 14379+ 'articlefeedbackv5-disable-flyover-prefbutton' => '转至参数设置',
1413114380 );
1413214381
1413314382 /** Traditional Chinese (‪中文(繁體)‬)
@@ -14174,8 +14423,8 @@
1417514424 'articlefeedbackv5-special-filter-helpful' => '有幫助($1)',
1417614425 'articlefeedbackv5-special-filter-unhelpful' => '無益($1)',
1417714426 'articlefeedbackv5-special-filter-visible' => '所有可見($1)',
14178 - 'articlefeedbackv5-special-filter-invisible' => '隱藏($1)',
14179 - 'articlefeedbackv5-special-filter-deleted' => '已刪除($1)',
 14427+ 'articlefeedbackv5-special-filter-hidden' => '隱藏($1)',
 14428+ 'articlefeedbackv5-special-filter-oversighted' => '已刪除($1)',
1418014429 'articlefeedbackv5-special-sort-age' => '日期',
1418114430 'articlefeedbackv5-special-sort-helpful' => '有幫助',
1418214431 'articlefeedbackv5-special-sort-rating' => '評級',
Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.css
@@ -489,8 +489,7 @@
490490 opacity : 0.4;
491491 filter: alpha(opacity=40);
492492 }
493 -#articleFeedbackv5-show-feedback .articleFeedbackv5-feedback-hidden .articleFeedbackv5-feedback-hidden-marker,
494 -#articleFeedbackv5-show-feedback .articleFeedbackv5-feedback-deleted .articleFeedbackv5-feedback-deleted-marker {
 493+#articleFeedbackv5-show-feedback .articleFeedbackv5-feedback-status-marker {
495494 font-weight: bold;
496495 color: red;
497496 display: block;
Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.css
@@ -485,7 +485,7 @@
486486 right: -105px;
487487 font-size: 12px;
488488 width: 234px;
489 - color: #000;
 489+ color: #000;
490490 }
491491
492492 .articleFeedbackv5-tooltip .tooltip-top {
@@ -804,8 +804,8 @@
805805 }
806806
807807 /*** Option 4 ***/
808 -.articleFeedbackv5-option-4 .articleFeedbackv5-submit {
809 - float: right;
 808+.articleFeedbackv5-option-4.articleFeedbackv5-ui .articleFeedbackv5-cta-button {
 809+ margin-top: 10px !important;
810810 }
811811 .articleFeedbackv5-option-4 .articleFeedbackv5-disclosure {
812812 float: left;
@@ -826,7 +826,14 @@
827827 .articleFeedbackv5-option-4 .articleFeedbackv5-submit span {
828828 margin: 8px 0 0;
829829 }
 830+.articleFeedbackv5-option-4 .articleFeedbackv5-tooltip {
 831+ top: -350px;
 832+}
830833
 834+.articleFeedbackv5-option-4-noedit .articleFeedbackv5-tooltip {
 835+ top: -310px;
 836+}
 837+
831838 /*** Option 5 ***/
832839 #articleFeedbackv5-option-5 .articleFeedbackv5-submit {
833840 float: right;
@@ -1058,7 +1065,7 @@
10591066 }
10601067 .articleFeedbackv5-fixedtabbox {
10611068 position: relative;
1062 - /*-moz-transform:rotate(90deg);
 1069+ /*-moz-transform:rotate(90deg);
10631070 -moz-transform-origin: top left;
10641071 -webkit-transform: rotate(90deg);
10651072 -webkit-transform-origin: top left;
@@ -1087,7 +1094,7 @@
10881095 /*padding: 5px 10px;
10891096 color: #fff;
10901097 text-align: center;
1091 - writing-mode: tb-rl;*/
 1098+ writing-mode: tb-rl;*/
10921099 position: absolute;
10931100 z-index: 999;
10941101 }
@@ -1183,7 +1190,7 @@
11841191 .articleFeedbackv5-flyover-header {
11851192 -moz-border-radius: 3px 3px 0 0;
11861193 -webkit-border-radius: 3px 3px 0 0;
1187 - border-radius: 3px 3px 0 0;
 1194+ border-radius: 3px 3px 0 0;
11881195 -khtml-border-radius: 3px 3px 0 0;
11891196 }
11901197 .articleFeedbackv5-flyover-header h3 {
Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.js
@@ -28,6 +28,8 @@
2929
3030 // {{{ articleFeedbackv5special definition
3131
 32+ // TODO: jam sort/filter options into URL anchors, and use them as defaults if present.
 33+
3234 $.articleFeedbackv5special = {};
3335
3436 // {{{ Properties
@@ -46,7 +48,7 @@
4749 * Controls for the list: sort, filter, continue flag, etc
4850 */
4951 $.articleFeedbackv5special.listControls = {
50 - filter: 'comment',
 52+ filter: 'visible-comment',
5153 filterValue: undefined, // Permalinks require a feedback ID
5254 sort: 'age',
5355 sortDirection: 'desc',
@@ -480,24 +482,22 @@
481483 /**
482484 * Utility method: Marks a feedback row hidden
483485 *
484 - * @param $row element the feedback row
485 - * @param hide_user string the user's name, linked to their user page
486 - * @param hide_timestamp string the timestamp
 486+ * @param $row element the feedback row
 487+ * @param $status_line element the status line
487488 */
488 - $.articleFeedbackv5special.markHidden = function ( $row, hide_user, hide_timestamp ) {
489 - if ( $row.data( 'deleted' ) ) {
 489+ $.articleFeedbackv5special.markHidden = function ( $row, $status_line ) {
 490+ if ( $status_line ) {
490491 $.articleFeedbackv5special.unmarkDeleted( $row );
491 - }
492 - if ( $row.data( 'hidden' ) ) {
493492 $.articleFeedbackv5special.unmarkHidden( $row );
494493 }
495494 $row.addClass( 'articleFeedbackv5-feedback-hidden' )
496495 .data( 'hidden', true );
497 - $row.find( '.articleFeedbackv5-comment-wrap' ).addClass( 'articleFeedbackv5-h3-push');
498 - $( '<span class="articleFeedbackv5-feedback-hidden-marker"></span>' )
499 - // this is on purpose html not text- hide_user is a link
500 - .html( mw.msg( 'articlefeedbackv5-hidden', hide_user, hide_timestamp) )
501 - .insertBefore( $row.find( '.articleFeedbackv5-comment-wrap' ) );
 496+ var $marker = $row.find('articleFeedbackv5-feedback-status-marker');
 497+
 498+ if ( 0 == $marker.length ) {
 499+ $( $status_line).insertBefore( $row.find( '.articleFeedbackv5-comment-wrap' ) );
 500+ $row.find( '.articleFeedbackv5-comment-wrap' ).addClass( 'articleFeedbackv5-h3-push');
 501+ }
502502 $.articleFeedbackv5special.maskPost( $row, 'hidden');
503503 };
504504
@@ -512,7 +512,7 @@
513513 $.articleFeedbackv5special.unmarkHidden = function ( $row ) {
514514 $row.removeClass( 'articleFeedbackv5-feedback-hidden' )
515515 .data( 'hidden', false );
516 - $row.find( '.articleFeedbackv5-feedback-hidden-marker' ).remove();
 516+ $row.find( '.articleFeedbackv5-feedback-status-marker' ).remove();
517517 $row.find( '.articleFeedbackv5-comment-wrap' ).removeClass( 'articleFeedbackv5-h3-push');
518518 };
519519
@@ -526,12 +526,12 @@
527527 * @param $row element the feedback row
528528 * @param type string the mask type
529529 */
530 - $.articleFeedbackv5special.maskPost = function( $row, type ) {
 530+ $.articleFeedbackv5special.maskPost = function( $row, $type ) {
531531 var $screen = $row.find( '.articleFeedbackv5-post-screen' );
532532 if( 0 == $screen.length ) {
533533 $screen = $( $.articleFeedbackv5special.maskHtmlTemplate );
534534 $screen.find( '.articleFeedbackv5-mask-text' )
535 - .text( mw.msg( 'articlefeedbackv5-mask-text-' + type ) );
 535+ .text( mw.msg( 'articlefeedbackv5-mask-text-' + $type ) );
536536 $screen.find( '.articleFeedbackv5-mask-postid' )
537537 .text( mw.msg( 'articlefeedbackv5-mask-postnumber', $row.attr( 'rel' ) ) );
538538 $row.prepend( $screen );
@@ -551,24 +551,22 @@
552552 /**
553553 * Utility method: Marks a feedback row deleted
554554 *
555 - * @param $row element the feedback row
556 - * @param oversight_user string the user's name, linked to their user page
557 - * @param oversight_timestamp string the timestamp
 555+ * @param $row element the feedback row
 556+ * @param $status_line element the status line
558557 */
559 - $.articleFeedbackv5special.markDeleted = function ( $row, oversight_user, oversight_timestamp ) {
560 - if ( $row.data( 'deleted' ) ) {
 558+ $.articleFeedbackv5special.markDeleted = function ( $row, $status_line ) {
 559+ if ( $status_line ) {
561560 $.articleFeedbackv5special.unmarkDeleted( $row );
562 - }
563 - if ( $row.data( 'hidden' ) ) {
564561 $.articleFeedbackv5special.unmarkHidden( $row );
565562 }
566563 $row.addClass( 'articleFeedbackv5-feedback-deleted' )
567564 .data( 'deleted', true );
568 - var $marker = $( '<span class="articleFeedbackv5-feedback-deleted-marker"></span>' )
569 - // this is on purpose html not text- oversight_user is a link
570 - .html( mw.msg( 'articlefeedbackv5-deleted', oversight_user, oversight_timestamp ) )
571 - .insertBefore( $row.find( '.articleFeedbackv5-comment-wrap' ) );
572 - $row.find( '.articleFeedbackv5-comment-wrap' ).addClass( 'articleFeedbackv5-h3-push');
 565+ var $marker = $row.find('articleFeedbackv5-feedback-status-marker');
 566+
 567+ if ( 0 == $marker.length ) {
 568+ $( $status_line).insertBefore( $row.find( '.articleFeedbackv5-comment-wrap' ) );
 569+ $row.find( '.articleFeedbackv5-comment-wrap' ).addClass( 'articleFeedbackv5-h3-push');
 570+ }
573571 $.articleFeedbackv5special.maskPost( $row, 'oversight' );
574572 };
575573
@@ -583,7 +581,7 @@
584582 $.articleFeedbackv5special.unmarkDeleted = function ( $row ) {
585583 $row.removeClass( 'articleFeedbackv5-feedback-deleted' )
586584 .data( 'deleted', false );
587 - $row.find( '.articleFeedbackv5-feedback-deleted-marker' ).remove();
 585+ $row.find( '.articleFeedbackv5-feedback-status-marker' ).remove();
588586 $row.find( '.articleFeedbackv5-comment-wrap' ).removeClass( 'articleFeedbackv5-h3-push');
589587 };
590588
@@ -815,9 +813,9 @@
816814 .css( 'top', $screen.innerHeight() / 2 - 12 );
817815
818816 } else if ( $( this ).hasClass( 'articleFeedbackv5-feedback-deleted' ) ) {
819 - $.articleFeedbackv5special.markDeleted( $( this ), $( this ).attr('oversight-user'), $( this ).attr('oversight-timestamp'));
 817+ $.articleFeedbackv5special.markDeleted( $( this ) );
820818 } else if ( $( this ).hasClass( 'articleFeedbackv5-feedback-hidden' ) ) {
821 - $.articleFeedbackv5special.markHidden( $( this ), $( this ).attr('hide-user'), $( this ).attr('hide-timestamp'));
 819+ $.articleFeedbackv5special.markHidden( $( this ) );
822820 }
823821
824822
@@ -1044,8 +1042,7 @@
10451043 }
10461044 if ( data['articlefeedbackv5-flag-feedback']['abuse-hidden'] ) {
10471045 $.articleFeedbackv5special.markHidden( $link.closest( '.articleFeedbackv5-feedback' ),
1048 - data['articlefeedbackv5-flag-feedback']['hide-user'],
1049 - data['articlefeedbackv5-flag-feedback']['hide-timestamp']);
 1046+ data['articlefeedbackv5-flag-feedback']['status-line']);
10501047 }
10511048 $link.attr( 'id', 'articleFeedbackv5-unabuse-link-' + id )
10521049 .removeClass( 'articleFeedbackv5-abuse-link' )
@@ -1083,8 +1080,7 @@
10841081 }
10851082 if ( data['articlefeedbackv5-flag-feedback']['abuse-hidden'] ) {
10861083 $.articleFeedbackv5special.markHidden( $link.closest( '.articleFeedbackv5-feedback' ),
1087 - data['articlefeedbackv5-flag-feedback']['hide-user'],
1088 - data['articlefeedbackv5-flag-feedback']['hide-timestamp']);
 1084+ data['articlefeedbackv5-flag-feedback']['status-line']);
10891085 }
10901086 $link.attr( 'id', 'articleFeedbackv5-abuse-link-' + id )
10911087 .removeClass( 'articleFeedbackv5-unabuse-link' )
@@ -1109,8 +1105,7 @@
11101106 .addClass( 'articleFeedbackv5-show-link' );
11111107
11121108 $.articleFeedbackv5special.markHidden( $link.closest( '.articleFeedbackv5-feedback' ),
1113 - data['articlefeedbackv5-flag-feedback']['hide-user'],
1114 - data['articlefeedbackv5-flag-feedback']['hide-timestamp']);
 1109+ data['articlefeedbackv5-flag-feedback']['status-line']);
11151110 $.articleFeedbackv5special.setActivityFlag( id, 'hide', true );
11161111 }
11171112 },
@@ -1129,7 +1124,11 @@
11301125 .text( mw.msg( 'articlefeedbackv5-form-hide' ) )
11311126 .removeClass( 'articleFeedbackv5-show-link' )
11321127 .addClass( 'articleFeedbackv5-hide-link' );
1133 - $.articleFeedbackv5special.unmarkHidden( $link.closest( '.articleFeedbackv5-feedback' ));
 1128+
 1129+ var $row = $link.closest( '.articleFeedbackv5-feedback' );
 1130+ $.articleFeedbackv5special.unmarkHidden( $row );
 1131+ $( data['articlefeedbackv5-flag-feedback']['status-line'] ).insertBefore( $row.find( '.articleFeedbackv5-comment-wrap' ) );
 1132+ $row.find( '.articleFeedbackv5-comment-wrap' ).addClass( 'articleFeedbackv5-h3-push');
11341133 $.articleFeedbackv5special.setActivityFlag( id, 'hide', false );
11351134 }
11361135 },
@@ -1158,9 +1157,14 @@
11591158 .addClass( 'articleFeedbackv5-show-link' );
11601159
11611160 $.articleFeedbackv5special.markHidden( $new_link.closest( '.articleFeedbackv5-feedback' ),
1162 - data['articlefeedbackv5-flag-feedback']['hide-user'],
1163 - data['articlefeedbackv5-flag-feedback']['hide-timestamp']);
 1161+ data['articlefeedbackv5-flag-feedback']['status-line']);
11641162 $.articleFeedbackv5special.setActivityFlag( id, 'hide', true );
 1163+ } else {
 1164+ var $row = $link.closest( '.articleFeedbackv5-feedback' );
 1165+ $row.find( '.articleFeedbackv5-feedback-status-marker' ).remove();
 1166+
 1167+ $( data['articlefeedbackv5-flag-feedback']['status-line'] ).insertBefore( $row.find( '.articleFeedbackv5-comment-wrap' ) );
 1168+ $row.find( '.articleFeedbackv5-comment-wrap' ).addClass( 'articleFeedbackv5-h3-push');
11651169 }
11661170 }
11671171 },
@@ -1173,12 +1177,19 @@
11741178 'apiFlagType': 'oversight',
11751179 'apiFlagDir': -1,
11761180 'onSuccess': function( id, data ) {
 1181+ var $row = $( '#articleFeedbackv5-unrequestoversight-link-' + id ).closest( '.articleFeedbackv5-feedback' );
 1182+
11771183 $( '#articleFeedbackv5-unrequestoversight-link-' + id )
11781184 .attr( 'action', 'requestoversight' )
11791185 .attr( 'id', 'articleFeedbackv5-requestoversight-link-' + id )
11801186 .text( mw.msg( 'articlefeedbackv5-form-oversight' ) )
11811187 .removeClass( 'articleFeedbackv5-unrequestoversight-link' )
11821188 .addClass( 'articleFeedbackv5-requestoversight-link');
 1189+
 1190+ $row.find( '.articleFeedbackv5-feedback-status-marker' ).remove();
 1191+
 1192+ $( data['articlefeedbackv5-flag-feedback']['status-line'] ).insertBefore( $row.find( '.articleFeedbackv5-comment-wrap' ) );
 1193+ $row.find( '.articleFeedbackv5-comment-wrap' ).addClass( 'articleFeedbackv5-h3-push');
11831194 }
11841195 },
11851196
@@ -1209,8 +1220,7 @@
12101221 .addClass( 'articleFeedbackv5-unoversight-link' );
12111222
12121223 $.articleFeedbackv5special.markDeleted( $link.closest( '.articleFeedbackv5-feedback' ) ,
1213 - data['articlefeedbackv5-flag-feedback']['oversight-user'],
1214 - data['articlefeedbackv5-flag-feedback']['oversight-timestamp']);
 1224+ data['articlefeedbackv5-flag-feedback']['status-line']);
12151225 $.articleFeedbackv5special.setActivityFlag( id, 'delete', true );
12161226 }
12171227 },
@@ -1232,7 +1242,11 @@
12331243 .text( mw.msg( 'articlefeedbackv5-form-delete' ) )
12341244 .removeClass( 'articleFeedbackv5-unoversight-link' )
12351245 .addClass( 'articleFeedbackv5-oversight-link' );
1236 - $.articleFeedbackv5special.unmarkDeleted( $link.closest( '.articleFeedbackv5-feedback' ) );
 1246+
 1247+ var $row = $link.closest( '.articleFeedbackv5-feedback' );
 1248+ $.articleFeedbackv5special.unmarkDeleted( $row );
 1249+ $( data['articlefeedbackv5-flag-feedback']['status-line'] ).insertBefore( $row.find( '.articleFeedbackv5-comment-wrap' ) );
 1250+ $row.find( '.articleFeedbackv5-comment-wrap' ).addClass( 'articleFeedbackv5-h3-push');
12371251 $.articleFeedbackv5special.setActivityFlag( id, 'delete', false );
12381252 }
12391253 },
@@ -1245,7 +1259,12 @@
12461260 'apiFlagType': 'resetoversight',
12471261 'apiFlagDir': 1,
12481262 'onSuccess': function( id, data ) {
1249 - $( '#articleFeedbackv5-declineoversight-link-' + id ).remove();
 1263+ var $row = $( '#articleFeedbackv5-declineoversight-link-' + id )
 1264+ .closest( '.articleFeedbackv5-feedback' );
 1265+ $row.find( '.articleFeedbackv5-feedback-status-marker' ).remove();
 1266+
 1267+ $( data['articlefeedbackv5-flag-feedback']['status-line'] ).insertBefore( $row.find( '.articleFeedbackv5-comment-wrap' ) );
 1268+ $row.find( '.articleFeedbackv5-comment-wrap' ).addClass( 'articleFeedbackv5-h3-push');
12501269 }
12511270 },
12521271
Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.js
@@ -452,8 +452,6 @@
453453 $block.find( '.articleFeedbackv5-submit' )
454454 .click( function ( e ) {
455455 e.preventDefault();
456 - $.articleFeedbackv5.trackClick( $.articleFeedbackv5.experiment() + '-submit-' +
457 - ( $.articleFeedbackv5.inDialog ? 'overlay' : 'bottom' ) );
458456 $.articleFeedbackv5.submitForm();
459457 } );
460458 },
@@ -506,6 +504,134 @@
507505
508506 // }}}
509507
 508+ },
 509+
 510+ // }}}
 511+ // {{{ Bucket 4
 512+
 513+ /**
 514+ * Bucket 4: Help Improve This Article
 515+ */
 516+ '4': {
 517+
 518+ // {{{ templates
 519+
 520+ /**
 521+ * Pull out the markup so it's easy to find
 522+ */
 523+ templates: {
 524+
 525+ /**
 526+ * The template for the whole block, if the user can edit the
 527+ * article
 528+ */
 529+ editable: '\
 530+ <div>\
 531+ <div class="form-row articleFeedbackv5-bucket4-toggle">\
 532+ <p class="sub-header"><strong><html:msg key="bucket4-subhead" /></strong></p>\
 533+ <p class="instructions-left"><html:msg key="bucket4-teaser-line1" /><br />\
 534+ <html:msg key="bucket4-teaser-line2" /></p>\
 535+ </div>\
 536+ <div class="articleFeedbackv5-disclosure">\
 537+ <p><a class="articleFeedbackv5-learn-to-edit" target="_blank"><html:msg key="bucket4-learn-to-edit" /> &raquo;</a></p>\
 538+ </div>\
 539+ <a class="articleFeedbackv5-cta-button" id="articleFeedbackv5-submit-bttn"><html:msg key="bucket4-form-submit" /></a>\
 540+ <div class="clear"></div>\
 541+ </div>\
 542+ ',
 543+
 544+ /**
 545+ * The template for the whole block, if the user cannot edit the
 546+ * article
 547+ */
 548+ noneditable: '\
 549+ <div>\
 550+ <div class="form-row articleFeedbackv5-bucket4-toggle">\
 551+ <p class="instructions-left"><html:msg key="bucket4-noedit-teaser-line1" /><br />\
 552+ <html:msg key="bucket4-noedit-teaser-line2" /></p>\
 553+ </div>\
 554+ <div class="articleFeedbackv5-disclosure">\
 555+ <p>&nbsp;</p>\
 556+ </div>\
 557+ <a class="articleFeedbackv5-cta-button" id="articleFeedbackv5-submit-bttn"><html:msg key="bucket4-noedit-form-submit" /></a>\
 558+ <div class="clear"></div>\
 559+ </div>\
 560+ '
 561+
 562+ },
 563+
 564+ // }}}
 565+ // {{{ getTitle
 566+
 567+ /**
 568+ * Gets the title
 569+ *
 570+ * @return string the title
 571+ */
 572+ getTitle: function () {
 573+ return mw.msg( $.articleFeedbackv5.editable ? 'articlefeedbackv5-bucket4-title' : 'articlefeedbackv5-bucket4-noedit-title' );
 574+ },
 575+
 576+ // }}}
 577+ // {{{ buildForm
 578+
 579+ /**
 580+ * Builds the empty form
 581+ *
 582+ * @return Element the form
 583+ */
 584+ buildForm: function () {
 585+
 586+ // Start up the block to return
 587+ var $block = $( $.articleFeedbackv5.editable ? $.articleFeedbackv5.currentBucket().templates.editable : $.articleFeedbackv5.currentBucket().templates.noneditable );
 588+
 589+ // Fill in the learn to edit link
 590+ $block.find( '.articleFeedbackv5-learn-to-edit' )
 591+ .attr( 'href', mw.msg( 'articlefeedbackv5-cta1-learn-how-url' ) );
 592+
 593+ // Fill in the button link
 594+ var track_id = $.articleFeedbackv5.experiment() + '-button_click-' +
 595+ ( $.articleFeedbackv5.inDialog ? 'overlay' : 'bottom' );
 596+ if ( $.articleFeedbackv5.editable ) {
 597+ $block.find( '.articleFeedbackv5-cta-button' )
 598+ .attr( 'href', $.articleFeedbackv5.editUrl( track_id ) );
 599+ } else {
 600+ var learn_url = mw.msg( 'articlefeedbackv5-cta1-learn-how-url' );
 601+ $block.find( '.articleFeedbackv5-cta-button' )
 602+ .attr( 'href', $.articleFeedbackv5.trackingUrl( learn_url, track_id ) );
 603+ }
 604+
 605+ // Turn the submit into a slick button
 606+ $block.find( '.articleFeedbackv5-cta-button' )
 607+ .button()
 608+ .addClass( 'ui-button-blue' )
 609+
 610+ return $block;
 611+ },
 612+
 613+ // }}}
 614+ // {{{ afterBuild
 615+
 616+ /**
 617+ * Handles any setup that has to be done once the markup is in the
 618+ * holder
 619+ */
 620+ afterBuild: function () {
 621+ // Set a custom message
 622+ $.articleFeedbackv5.$holder
 623+ .add( $.articleFeedbackv5.$dialog)
 624+ .find( '.articleFeedbackv5-tooltip-info' )
 625+ .text( mw.msg( 'articlefeedbackv5-bucket4-help-tooltip-info' ) );
 626+ // Add a class so we can drop the tooltip down a bit for the
 627+ // learn-more version
 628+ if ( !$.articleFeedbackv5.editable ) {
 629+ $.articleFeedbackv5.find( '.articleFeedbackv5-ui' )
 630+ .addClass( 'articleFeedbackv5-option-4-noedit' );
 631+ }
 632+ }
 633+
 634+ // }}}
 635+
510636 }
511637
512638 // }}}
@@ -592,18 +718,7 @@
593719 * @return bool whether the CTA can be displayed
594720 */
595721 verify: function () {
596 - // An empty restrictions array means anyone can edit
597 - var restrictions = mw.config.get( 'wgRestrictionEdit', [] );
598 - if ( restrictions.length ) {
599 - var groups = mw.config.get( 'wgUserGroups' );
600 - // Verify that each restriction exists in the user's groups
601 - for ( var i = 0; i < restrictions.length; i++ ) {
602 - if ( $.inArray( restrictions[i], groups ) < 0 ) {
603 - return false;
604 - }
605 - }
606 - }
607 - return true;
 722+ return $.articleFeedbackv5.editable;
608723 },
609724
610725 // }}}
@@ -1398,8 +1513,12 @@
13991514 $.articleFeedbackv5.clickTracking = $.articleFeedbackv5.checkClickTracking();
14001515 // Has the user already submitted ratings for this page at this revision?
14011516 $.articleFeedbackv5.alreadySubmitted = $.cookie( $.articleFeedbackv5.prefix( 'submitted' ) ) === 'true';
 1517+ // Can the user edit the page?
 1518+ $.articleFeedbackv5.editable = $.articleFeedbackv5.userCanEdit();
14021519 // Go ahead and bucket right away
14031520 $.articleFeedbackv5.selectBucket();
 1521+ // Select the trigger link(s)
 1522+ $.articleFeedbackv5.selectTriggerLinks();
14041523 // Anything the bucket needs to do?
14051524 if ( 'init' in $.articleFeedbackv5.currentBucket() ) {
14061525 $.articleFeedbackv5.currentBucket().init();
@@ -1413,12 +1532,16 @@
14141533 } );
14151534 // Keep track of links that must be removed after a successful submission
14161535 $.articleFeedbackv5.$toRemove = $( [] );
1417 - // Select the trigger link(s)
1418 - $.articleFeedbackv5.selectTriggerLinks();
 1536+ // Add them
14191537 $.articleFeedbackv5.addTriggerLinks();
14201538 // Track init at 1%
14211539 if ( Math.random() * 100 < 1 ) {
1422 - $.articleFeedbackv5.trackClick( $.articleFeedbackv5.experiment() + '-init' );
 1540+ var exp = $.articleFeedbackv5.experiment();
 1541+ if ( $.articleFeedbackv5.bucketId == 4 ) {
 1542+ exp = exp.replace('_edit', '');
 1543+ exp = exp.replace('_learn_more', '-noedit');
 1544+ }
 1545+ $.articleFeedbackv5.trackClick( exp + '-init' );
14231546 }
14241547 };
14251548
@@ -1437,7 +1560,7 @@
14381561 // 1. Requested in query string (debug only)
14391562 // 2. From cookie (see below)
14401563 // 3. Core bucketing
1441 - var knownBuckets = { '0': true, '1': true };
 1564+ var knownBuckets = { '0': true, '1': true, '4': true };
14421565 var requested = mw.util.getParamValue( 'aftv5_form' );
14431566 var cookieval = $.cookie( $.articleFeedbackv5.prefix( 'display-bucket' ) );
14441567 if ( requested in knownBuckets ) {
@@ -1449,7 +1572,7 @@
14501573 'ext.articleFeedbackv5-display',
14511574 mw.config.get( 'wgArticleFeedbackv5DisplayBuckets' )
14521575 );
1453 - var nameMap = { zero: '0', one: '1' };
 1576+ var nameMap = { zero: '0', one: '1', four: '4' };
14541577 $.articleFeedbackv5.bucketId = nameMap[bucketName];
14551578 }
14561579 // Drop in a cookie to keep track of their display bucket;
@@ -1461,7 +1584,7 @@
14621585 { 'expires': cfg.expires, 'path': '/' }
14631586 );
14641587 if ( $.articleFeedbackv5.debug ) {
1465 - aft5_debug( 'Using bucket #' + $.articleFeedbackv5.bucketId );
 1588+ aft5_debug( 'Using form option #' + $.articleFeedbackv5.bucketId );
14661589 }
14671590 };
14681591
@@ -1497,11 +1620,12 @@
14981621 */
14991622 $.articleFeedbackv5.selectTriggerLinks = function () {
15001623 // The bucketed link:
1501 - // 1. Display buckets 0 or 5? Always no link.
 1624+ // 1. Display bucket 0 or 4-not-editable? Always no link.
15021625 // 2. Requested in query string (debug only)
15031626 // 3. Random bucketing
15041627 var bucketedLink = 'X';
1505 - if ( '5' != $.articleFeedbackv5.bucketId && '0' != $.articleFeedbackv5.bucketId ) {
 1628+ if ( ! ( '0' == $.articleFeedbackv5.bucketId
 1629+ || ( '4' == $.articleFeedbackv5.bucketId && !$.articleFeedbackv5.editable ) ) ) {
15061630 var cfg = mw.config.get( 'wgArticleFeedbackv5LinkBuckets' );
15071631 if ( 'buckets' in cfg ) {
15081632 var knownBuckets = cfg.buckets;
@@ -1525,8 +1649,29 @@
15261650 };
15271651
15281652 // }}}
 1653+ // {{{ userCanEdit
15291654
 1655+ /**
 1656+ * Returns whether the user can edit the article
 1657+ */
 1658+ $.articleFeedbackv5.userCanEdit = function () {
 1659+ // An empty restrictions array means anyone can edit
 1660+ var restrictions = mw.config.get( 'wgRestrictionEdit', [] );
 1661+ if ( restrictions.length ) {
 1662+ var groups = mw.config.get( 'wgUserGroups' );
 1663+ // Verify that each restriction exists in the user's groups
 1664+ for ( var i = 0; i < restrictions.length; i++ ) {
 1665+ if ( $.inArray( restrictions[i], groups ) < 0 ) {
 1666+ return false;
 1667+ }
 1668+ }
 1669+ }
 1670+ return true;
 1671+ };
 1672+
15301673 // }}}
 1674+
 1675+ // }}}
15311676 // {{{ Utility methods
15321677
15331678 // {{{ prefix
@@ -1680,7 +1825,15 @@
16811826 * @return string the experiment (e.g. "option1A")
16821827 */
16831828 $.articleFeedbackv5.experiment = function () {
1684 - return 'option' + $.articleFeedbackv5.bucketId + $.articleFeedbackv5.floatingLinkId;
 1829+ var exp = 'optionSE_' + $.articleFeedbackv5.bucketId + $.articleFeedbackv5.floatingLinkId;
 1830+ if ( $.articleFeedbackv5.bucketId == 4 ) {
 1831+ if ( $.articleFeedbackv5.editable ) {
 1832+ exp += '_edit';
 1833+ } else {
 1834+ exp += '_learn_more';
 1835+ }
 1836+ }
 1837+ return exp;
16851838 };
16861839
16871840 // }}}
@@ -1737,12 +1890,13 @@
17381891 'articleFeedbackv5_click_tracking': $.articleFeedbackv5.clickTracking ? '1' : '0',
17391892 };
17401893 if ( $.articleFeedbackv5.clickTracking ) {
1741 - params.articleFeedbackv5_ct_token = $.cookie( 'clicktracking-session' );
1742 - params.articleFeedbackv5_bucket_id = $.articleFeedbackv5.bucketId;
1743 - params.articleFeedbackv5_cta_id = $.articleFeedbackv5.ctaId;
1744 - params.articleFeedbackv5_f_link_id = $.articleFeedbackv5.floatingLinkId;
1745 - params.articleFeedbackv5_link_id = $.articleFeedbackv5.submittedLinkId;
1746 - params.articleFeedbackv5_location = $.articleFeedbackv5.inDialog ? 'overlay' : 'bottom';
 1894+ params.articleFeedbackv5_ct_token = $.cookie( 'clicktracking-session' );
 1895+ params.articleFeedbackv5_bucket_id = $.articleFeedbackv5.bucketId;
 1896+ params.articleFeedbackv5_cta_id = $.articleFeedbackv5.ctaId;
 1897+ params.articleFeedbackv5_link_id = $.articleFeedbackv5.submittedLinkId;
 1898+ params.articleFeedbackv5_f_link_id = $.articleFeedbackv5.floatingLinkId;
 1899+ params.articleFeedbackv5_experiment = $.articleFeedbackv5.experiment();
 1900+ params.articleFeedbackv5_location = $.articleFeedbackv5.inDialog ? 'overlay' : 'bottom';
17471901 }
17481902 var url = mw.config.get( 'wgScript' ) + '?' + $.param( params );
17491903 if ( trackingId ) {
@@ -1965,6 +2119,10 @@
19662120 'link': $.articleFeedbackv5.submittedLinkId
19672121 } );
19682122
 2123+ // Track the submit click
 2124+ $.articleFeedbackv5.trackClick( $.articleFeedbackv5.experiment() + '-submit_attempt-' +
 2125+ ( $.articleFeedbackv5.inDialog ? 'overlay' : 'bottom' ) );
 2126+
19692127 // Send off the ajax request
19702128 $.ajax( {
19712129 'url': $.articleFeedbackv5.apiUrl,
@@ -1986,17 +2144,25 @@
19872145 // the trigger link replacing the form. _SWITCH_CLEAR_
19882146 $.articleFeedbackv5.$toRemove.remove();
19892147 $.articleFeedbackv5.$toRemove = $( [] );
 2148+ // Track the success
 2149+ $.articleFeedbackv5.trackClick( $.articleFeedbackv5.experiment() + '-submit_success-' +
 2150+ ( $.articleFeedbackv5.inDialog ? 'overlay' : 'bottom' ) );
19902151 } else {
 2152+ var code = 'unknown';
19912153 var msg;
19922154 if ( 'error' in data ) {
19932155 if ( typeof( data.error ) == 'object' ) {
19942156 msg = data.error;
 2157+ if ( 'code' in data.error ) {
 2158+ code = data.error.code;
 2159+ }
19952160 } else if ( 'articlefeedbackv5-error-abuse' == data.error ) {
19962161 msg = $.articleFeedbackv5.buildLink( data.error, {
19972162 href: mw.msg( 'articlefeedbackv5-error-abuse-link' ),
19982163 text: 'articlefeedbackv5-error-abuse-linktext',
19992164 target: '_blank'
20002165 });
 2166+ code = 'afreject';
20012167 } else {
20022168 msg = mw.msg( data.error );
20032169 }
@@ -2004,9 +2170,15 @@
20052171 // NB: Warnings come from the AbuseFilter and are
20062172 // already translated.
20072173 msg = data.warning;
 2174+ code = 'afwarn';
20082175 } else {
20092176 msg = { info: mw.msg( 'articlefeedbackv5-error-unknown' ) };
20102177 }
 2178+ // Track the error
 2179+ $.articleFeedbackv5.trackClick( $.articleFeedbackv5.experiment() +
 2180+ '-submit_error_' + code + '-' +
 2181+ ( $.articleFeedbackv5.inDialog ? 'overlay' : 'bottom' ) );
 2182+ // Set up error state
20112183 $.articleFeedbackv5.markFormErrors( { _api : msg } );
20122184 $.articleFeedbackv5.unlockForm();
20132185 if ( $.articleFeedbackv5.inDialog ) {
@@ -2014,7 +2186,12 @@
20152187 }
20162188 }
20172189 },
2018 - 'error': function () {
 2190+ 'error': function (xhr, tstatus, error) {
 2191+ // Track the error
 2192+ $.articleFeedbackv5.trackClick( $.articleFeedbackv5.experiment() +
 2193+ '-submit_error_jquery-' +
 2194+ ( $.articleFeedbackv5.inDialog ? 'overlay' : 'bottom' ) );
 2195+ // Set up error state
20192196 var err = { _api: { info: mw.msg( 'articlefeedbackv5-error-submit' ) } };
20202197 $.articleFeedbackv5.markFormErrors( err );
20212198 $.articleFeedbackv5.unlockForm();
Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/ArticleFeedbackv5.php
@@ -21,6 +21,9 @@
2222 // Help link for oversight email
2323 $wgArticleFeedbackv5OversightEmailHelp = 'http://en.wikipedia.org/wiki/Wikipedia:Article_Feedback_Tool/Version_5/Help/Feedback_page_Oversighters';
2424
 25+// Help link for auto flag/hide etc
 26+$wgArticleFeedbackv5AutoHelp = 'http://en.wikipedia.org/wiki/Wikipedia:Article_Feedback_Tool/Version_5/Help';
 27+
2528 // How long text-based feedback is allowed to be before returning an error.
2629 // Set to 0 to disable length checking entirely.
2730 $wgArticleFeedbackv5MaxCommentLength = 0;
@@ -80,17 +83,17 @@
8184 // the new odds are applied to everyone, not just people who have yet to be
8285 // placed in a bucket.
8386 'buckets' => array(
84 - 'zero' => 0,
85 - 'one' => 100,
86 - 'two' => 0,
 87+ 'zero' => 33,
 88+ 'one' => 33,
 89+ 'two' => 0,
8790 'three' => 0,
88 - 'four' => 0,
89 - 'five' => 0,
 91+ 'four' => 33,
 92+ 'five' => 0,
9093 ),
9194 // This version number is added to all tracking event names, so that
9295 // changes in the software don't corrupt the data being collected. Bump
9396 // this when you want to start a new "experiment".
94 - 'version' => 1,
 97+ 'version' => 2,
9598 // Let users be tracked for a month, and then rebucket them, allowing some
9699 // churn.
97100 'expires' => 30,
@@ -113,7 +116,7 @@
114117 ),
115118 // This version number is added to all tracking event names, so that changes in the software
116119 // don't corrupt the data being collected. Bump this when you want to start a new "experiment".
117 - 'version' => 1,
 120+ 'version' => 2,
118121 // Let users be tracked for a month, and then rebucket them, allowing some churn
119122 'expires' => 30,
120123 // Track the event of users being bucketed - so we can be sure the odds
@@ -313,19 +316,16 @@
314317 $wgLogTypes[] = 'articlefeedbackv5';
315318 $wgLogNames['articlefeedbackv5'] = 'articlefeedbackv5-log-name';
316319 $wgLogHeaders['articlefeedbackv5'] = 'articlefeedbackv5-log-header';
317 -$wgLogActions['suppress/oversight'] = 'articlefeedbackv5-log-oversight';
318 -$wgLogActions['suppress/unoversight'] = 'articlefeedbackv5-log-unoversight';
319 -$wgLogActions['articlefeedbackv5/hidden'] = 'articlefeedbackv5-log-hidden';
320 -$wgLogActions['articlefeedbackv5/unhidden'] = 'articlefeedbackv5-log-unhidden';
321 -$wgLogActions['suppress/decline'] = 'articlefeedbackv5-log-decline';
322 -$wgLogActions['suppress/request'] = 'articlefeedbackv5-log-request';
323 -$wgLogActions['suppress/unrequest'] = 'articlefeedbackv5-log-unrequest';
324 -$wgLogActions['articlefeedbackv5/flag'] = 'articlefeedbackv5-log-flag';
325 -$wgLogActions['articlefeedbackv5/unflag'] = 'articlefeedbackv5-log-unflag';
 320+foreach ( array( 'hidden', 'unhidden', 'flag', 'unflag', 'autoflag', 'autohide' ) as $t) {
 321+ $wgLogActionsHandlers["articlefeedbackv5/$t"] = 'ArticleFeedbackv5Hooks::formatActivityLogEntry';
 322+}
 323+foreach ( array( 'oversight', 'unoversight', 'decline', 'request', 'unrequest' ) as $t) {
 324+ $wgLogActionsHandlers["suppress/$t"] = 'ArticleFeedbackv5Hooks::formatActivityLogEntry';
 325+}
326326
327327 // Add custom action handlers for AbuseFilter
 328+$wgAbuseFilterAvailableActions[] = 'aftv5flagabuse';
328329 // Not for this release
329 -// $wgAbuseFilterAvailableActions[] = 'aftv5flagabuse';
330330 // $wgAbuseFilterAvailableActions[] = 'aftv5hide';
331331 // $wgAbuseFilterAvailableActions[] = 'aftv5requestoversight';
332332
Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/api/ApiArticleFeedbackv5.php
@@ -25,6 +25,9 @@
2626 // Warn for abuse?
2727 private $warnForAbuse = false;
2828
 29+ // filters incremented on creation
 30+ protected $filters = array( 'visible' => 1, 'notdeleted' => 1, 'all' => 1);
 31+
2932 /**
3033 * Constructor
3134 */
@@ -268,6 +271,7 @@
269272 * @param $pageId int the page ID
270273 */
271274 private function findAbuse( &$value, $pageId ) {
 275+
272276 // Respect $wgSpamRegex
273277 global $wgSpamRegex;
274278 if ( ( is_array( $wgSpamRegex ) && count( $wgSpamRegex ) > 0 )
@@ -313,8 +317,8 @@
314318 // Add custom action handlers
315319 global $wgAbuseFilterCustomActionsHandlers;
316320 $flagCallback = array( $this, 'callbackAbuseActionFlag' );
 321+ $wgAbuseFilterCustomActionsHandlers['aftv5flagabuse'] = $flagCallback;
317322 // Not for this release
318 - // $wgAbuseFilterCustomActionsHandlers['aftv5flagabuse'] = $flagCallback;
319323 // $wgAbuseFilterCustomActionsHandlers['aftv5hide'] = $flagCallback;
320324 // $wgAbuseFilterCustomActionsHandlers['aftv5requestoversight'] = $flagCallback;
321325
@@ -398,15 +402,14 @@
399403
400404 public function updateFilterCounts( $dbw, $pageId, $answers ) {
401405
402 - // a new item should be in all and visible by default, increment those counters
403 - $filters = array( 'all' => 1, 'visible' => 1, 'notdeleted' => 1 );
 406+ $filters = $this->filters;
404407
405408 // if this record has a comment attached then increment comment as well
406409 // notice we do not need to walk the entire array, since any one hit
407410 // counts - aa_response_text is "comment" in the values
408411 foreach ( $answers as $a ) {
409412 if ( $a['aa_response_text'] !== null ) {
410 - $filters['comment'] = 1;
 413+ $filters['visible-comment'] = 1;
411414 break;
412415 }
413416 }
Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/api/ApiViewFeedbackArticleFeedbackv5.php
@@ -30,6 +30,7 @@
3131 * Execute the API call: Pull the requested feedback
3232 */
3333 public function execute() {
 34+ global $wgLang;
3435 $params = $this->extractRequestParams();
3536 $result = $this->getResult();
3637 $pageId = $params['pageid'];
@@ -53,7 +54,6 @@
5455
5556 if ( $this->isPermalink ) {
5657 $page_title = Title::newFromRow($record[0])->getPrefixedText();
57 -
5858 $html .= Linker::link(
5959 SpecialPage::getTitleFor( 'ArticleFeedbackv5', $page_title ),
6060 wfMessage( 'articlefeedbackv5-special-goback' )->escaped());
@@ -224,10 +224,9 @@
225225 'af_net_helpfulness', 'af_revision_id',
226226 'page_latest', 'page_title', 'page_namespace',
227227 'rating.aa_response_boolean AS yes_no',
228 - 'af_hide_user_id',
229 - 'af_hide_timestamp',
230 - 'af_oversight_user_id',
231 - 'af_oversight_timestamp'
 228+ 'af_last_status',
 229+ 'af_last_status_user_id',
 230+ 'af_last_status_timestamp'
232231 ),
233232 array( 'af_id' => $ids ),
234233 __METHOD__,
@@ -275,9 +274,13 @@
276275
277276 private function getFilterCriteria( $filter, $filterValue = null ) {
278277 global $wgUser;
 278+
279279 $where = array();
280 - $hiddenFilters = array( 'id', 'invisible', 'notdeleted', 'all', 'deleted', 'needsoversight', 'declined' );
281 - $deletedFilters = array( 'id', 'all', 'deleted' );
 280+ $hiddenFilters = array( 'all-hidden', 'notdeleted-hidden', 'all-unhidden', 'notdeleted-unhidden',
 281+ 'all-requested', 'notdeleted-requested', 'all-unrequested', 'notdeleted-unrequested',
 282+ 'all-declined', 'notdeleted-declined', 'all-oversighted', 'all-unoversighted', 'notdeleted', 'all' );
 283+ $deletedFilters = array( 'all', 'all-unoversighted', 'all-oversighted', 'all-hidden', 'all-unhidden', 'all-requested',
 284+ 'all-unrequested', 'all-declined');
282285
283286 // Never show hidden or deleted posts unless specifically requested
284287 // and user has access.
@@ -292,45 +295,52 @@
293296 }
294297
295298 switch ( $filter ) {
296 - case 'needsoversight':
297 - $where[] = 'af_oversight_count > 0';
298 - break;
 299+ // special case - doesn't get any hidden/deleted filtering and is used for permalinks
299300 case 'id':
300 - # Used for permalinks.
 301+ // overwrite any and all where conditions
301302 $where = array('af_id' => $filterValue);
302303 $this->isPermalink = true;
303304 break;
304 - case 'visible':
305 - $where[] = 'af_is_deleted IS FALSE';
306 - $where[] = 'af_is_hidden IS FALSE';
 305+
 306+ // regular filters
 307+ case 'visible-comment':
 308+ $where[] = 'af_has_comment IS TRUE';
307309 break;
308 - case 'invisible':
 310+ case 'visible-helpful':
 311+ $where[] = 'af_net_helpfulness > 0';
 312+ break;
 313+ case 'visible-unhelpful':
 314+ $where[] = 'af_net_helpfulness < 0';
 315+ break;
 316+ case 'visible-abusive':
 317+ $where[] = 'af_abuse_count > 0';
 318+ break;
 319+ case 'notdeleted-hidden':
 320+ case 'all-hidden':
309321 $where[] = 'af_is_hidden IS TRUE';
310322 break;
311 - case 'unhidden':
 323+ case 'notdeleted-unhidden':
 324+ case 'all-unhidden':
312325 $where[] = 'af_is_unhidden IS TRUE';
313326 break;
314 - case 'abusive':
315 - $where[] = 'af_abuse_count > 0';
 327+ case 'notdeleted-requested':
 328+ case 'all-requested':
 329+ $where[] = 'af_oversight_count > 0';
316330 break;
317 - case 'helpful':
318 - $where[] = 'af_net_helpfulness > 0';
 331+ case 'notdeleted-unrequested':
 332+ case 'all-unrequested':
 333+ $where[] = 'af_is_unrequested IS TRUE';
319334 break;
320 - case 'unhelpful':
321 - $where[] = 'af_net_helpfulness < 0';
 335+ case 'notdeleted-declined':
 336+ case 'all-declined':
 337+ $where[] = 'af_is_declined IS TRUE';
322338 break;
323 - case 'comment':
324 - $where[] = 'comment.aa_response_text IS NOT NULL';
325 - break;
326 - case 'deleted':
 339+ case 'all-oversighted':
327340 $where[] = 'af_is_deleted IS TRUE';
328341 break;
329 - case 'undeleted':
 342+ case 'all-unoversighted':
330343 $where[] = 'af_is_undeleted IS TRUE';
331344 break;
332 - case 'declined':
333 - $where[] = 'af_is_declined';
334 - break;
335345 default:
336346 break;
337347 }
@@ -341,6 +351,7 @@
342352 protected function renderFeedback( $record ) {
343353 global $wgUser, $wgLang;
344354 $id = $record[0]->af_id;
 355+ $content = '';
345356
346357 switch( $record[0]->af_form_id ) {
347358 case 1: $content .= $this->renderBucket1( $record ); break;
@@ -358,7 +369,6 @@
359370 $can_vote = !$wgUser->isBlocked();
360371 $can_hide = $wgUser->isAllowed( 'aftv5-hide-feedback' );
361372 $can_delete = $wgUser->isAllowed( 'aftv5-delete-feedback' );
362 - $default_user = wfMessage( 'articlefeedbackv5-default-user' )->text();
363373
364374 // if this is permalinked - if oversighted or hidden we might be doing empty gray mask
365375 if ( ( $this->isPermalink && $record[0]->af_is_deleted
@@ -368,20 +378,11 @@
369379
370380 // hide or oversight?
371381 if ( $record[0]->af_is_deleted ) {
372 - $user = $record[0]->af_oversight_user_id;
373 - $timestamp = $record[0]->af_oversight_timestamp;
374382 $class = 'oversight';
375 - $msg_string = 'deleted';
376383 } else {
377 - $user = $record[0]->af_hide_user_id;
378 - $timestamp = $record[0]->af_hide_timestamp;
379384 $class = 'hidden';
380 - $msg_string = $class;
381385 }
382386
383 - $user_link = ApiArticleFeedbackv5Utils::getUserLink( $user, $default_user );
384 - $user_timestamp = wfTimestamp( TS_RFC2822, $timestamp );
385 -
386387 return Html::openElement( 'div', array(
387388 'class' => 'articleFeedbackv5-feedback articleFeedbackv5-feedback-' . $class . ' articleFeedbackv5-feedback-emptymask'
388389 ) )
@@ -404,10 +405,12 @@
405406 . Html::closeElement( 'div' )
406407
407408 . Html::rawElement( 'span', array(
408 - 'class' => 'articleFeedbackv5-feedback-' . $msg_string . '-marker'
 409+ 'class' => 'articleFeedbackv5-feedback-status-marker'
409410 ),
410 - wfMessage( 'articlefeedbackv5-' . $msg_string)
411 - ->rawParams($user_link, $user_timestamp )
 411+ wfMessage( 'articlefeedbackv5-status-' . $record[0]->af_last_status )
 412+ ->rawParams( ApiArticleFeedbackv5Utils::getUserLink( $record[0]->af_last_status_user_id ) )
 413+ ->params( $wgLang->date( $record[0]->af_last_status_timestamp ),
 414+ $wgLang->time( $record[0]->af_last_status_timestamp ) )
412415 ->escaped()
413416 )
414417
@@ -423,7 +426,7 @@
424427 'class' => 'articleFeedbackv5-vote-wrapper'
425428 ) )
426429 . Html::openElement( 'div', array( 'class' => 'articleFeedbackv5-comment-foot' ) );
427 -
 430+
428431 if ( $can_vote ) {
429432 $footer_links .= Html::element( 'span', array(
430433 'class' => 'articleFeedbackv5-helpful-caption'
@@ -462,7 +465,7 @@
463466 ), wfMessage( $msg, $wgLang->formatNum( $record[0]->af_abuse_count ) )->text() );
464467 }
465468 $footer_links .= Html::closeElement( 'div' );
466 -
 469+
467470 /*$footer_links .= Html::element( 'span', array(
468471 'class' => 'articleFeedbackv5-helpful-votes'
469472 ), wfMessage( 'articlefeedbackv5-form-helpful-votes', ( $record[0]->af_helpful_count + $record[0]->af_unhelpful_count ), $record[0]->af_helpful_count, $record[0]->af_unhelpful_count ) )
@@ -473,7 +476,7 @@
474477 'class' => 'articleFeedbackv5-abuse-link'
475478 ), wfMessage( 'articlefeedbackv5-form-abuse', $record[0]->af_abuse_count )->text() ) ) : '' )
476479 . Html::closeElement( 'div' );*/
477 -
 480+
478481 // Don't render the toolbox if they can't do anything with it.
479482 $tools = null;
480483 if ( $can_hide || $can_delete ) {
@@ -502,7 +505,7 @@
503506 'href' => '#',
504507 ), wfMessage( "articlefeedbackv5-form-" . $msg )->text() ) );
505508 }
506 -
 509+
507510 // !can delete == request oversight
508511 if ( $can_hide && !$can_delete ) {
509512 if ( $record[0]->af_oversight_count > 0 ) {
@@ -518,10 +521,10 @@
519522 'href' => '#',
520523 ), wfMessage( "articlefeedbackv5-form-" . $msg )->text() ) );
521524 }
522 -
 525+
523526 // can delete == do oversight
524527 if ( $can_delete ) {
525 -
 528+
526529 // if we have oversight requested, add "decline oversight" link
527530 if ( $record[0]->af_oversight_count > 0 ) {
528531 $tools .= Html::rawElement( 'li', array(), Html::element( 'a', array(
@@ -530,7 +533,7 @@
531534 'href' => '#',
532535 ), wfMessage( "articlefeedbackv5-form-decline" )->text() ) );
533536 }
534 -
 537+
535538 if ( $record[0]->af_is_deleted > 0 ) {
536539 $msg = 'undelete';
537540 $class = 'unoversight';
@@ -544,18 +547,18 @@
545548 'href' => '#',
546549 ), wfMessage( "articlefeedbackv5-form-" . $msg )->text() ) );
547550 }
548 -
 551+
549552 // view activity link
550553 $tools .= Html::rawElement( 'li', array(), Html::element( 'a', array(
551554 'id' => "articleFeedbackv5-activity-link-$id",
552555 'class' => "articleFeedbackv5-activity-link",
553556 'href' => '#',
554557 ), wfMessage( "articlefeedbackv5-viewactivity" )->text() ) );
555 -
 558+
556559 $tools .= Html::closeElement( 'ul' )
557560 . Html::closeElement( 'div' );
558561 }
559 -
 562+
560563 $topClass = 'articleFeedbackv5-feedback';
561564 if ( $record[0]->af_is_hidden ) {
562565 $topClass .= ' articleFeedbackv5-feedback-hidden';
@@ -563,26 +566,33 @@
564567 if ( $record[0]->af_is_deleted ) {
565568 $topClass .= ' articleFeedbackv5-feedback-deleted';
566569 }
567 -
568 - $attributes = array(
569 - 'class' => $topClass,
570 - 'rel' => $id
571 - );
572 - if ( $record[0]->af_is_hidden ) {
573 -
574 - $attributes['hide-user'] = ApiArticleFeedbackv5Utils::getUserLink( $record[0]->af_hide_user_id, $default_user );
575 - $attributes['hide-timestamp'] = wfTimestamp( TS_RFC2822, $record[0]->af_hide_timestamp );
 570+
 571+ $status_line = '';
 572+ $extra_class = '';
 573+
 574+ // order of status to show
 575+ if ( $record[0]->af_last_status ) {
 576+ $status_line = Html::rawElement( 'span', array(
 577+ 'class' => 'articleFeedbackv5-feedback-status-marker'
 578+ ),
 579+ wfMessage( 'articlefeedbackv5-status-' . $record[0]->af_last_status )
 580+ ->rawParams( ApiArticleFeedbackv5Utils::getUserLink( $record[0]->af_last_status_user_id ) )
 581+ ->params( $wgLang->date( $record[0]->af_last_status_timestamp ),
 582+ $wgLang->time( $record[0]->af_last_status_timestamp ) )
 583+ ->escaped()
 584+ );
 585+
 586+
 587+ $extra_class = ' articleFeedbackv5-h3-push';
576588 }
577 - if ( $record[0]->af_is_deleted ) {
578 -
579 - $attributes['oversight-user'] = ApiArticleFeedbackv5Utils::getUserLink( $record[0]->af_oversight_user_id, $default_user );
580 - $attributes['oversight-timestamp'] = wfTimestamp( TS_RFC2822, $record[0]->af_oversight_timestamp );
581 - }
582589 }
583590
584 - return Html::openElement( 'div', $attributes )
 591+ return Html::openElement( 'div', array(
 592+ 'class' => $topClass,
 593+ 'rel' => $id ) )
 594+ . $status_line
585595 . Html::openElement( 'div', array(
586 - 'class' => "articleFeedbackv5-comment-wrap"
 596+ 'class' => "articleFeedbackv5-comment-wrap" . $extra_class
587597 ) )
588598 . $content
589599 . $footer_links
@@ -658,10 +668,10 @@
659669
660670
661671 private function renderBucket1( $record ) {
662 - if ( $record['found']->aa_response_boolean == 1 ) {
 672+ if ( isset( $record['found'] ) && $record['found']->aa_response_boolean == 1 ) {
663673 $msg = 'articlefeedbackv5-form1-header-found';
664674 $class = 'positive';
665 - } elseif ( $record['found']->aa_response_boolean !== null ) {
 675+ } elseif ( isset( $record['found'] ) && $record['found']->aa_response_boolean !== null ) {
666676 $msg = 'articlefeedbackv5-form1-header-not-found';
667677 $class = 'negative';
668678 } else {
@@ -854,11 +864,17 @@
855865 ApiBase::PARAM_REQUIRED => false,
856866 ApiBase::PARAM_ISMULTI => false,
857867 ApiBase::PARAM_TYPE => array(
858 - 'all', 'notdeleted',
859 - 'invisible', 'visible', 'unhidden',
860 - 'comment', 'id',
861 - 'helpful', 'unhelpful', 'abusive',
862 - 'deleted', 'undeleted', 'needsoversight', 'declined' )
 868+ // permalinks
 869+ 'id',
 870+ // basic
 871+ 'visible-comment', 'visible-helpful', 'visible-comments', 'visible',
 872+ // autoconfirmed
 873+ 'visible-unhelpful', 'visible-abusive',
 874+ // monitors
 875+ 'notdeleted-hidden', 'notdeleted-unhidden', 'notdeleted-requested', 'notdeleted-unrequested', 'notdeleted-declined', 'notdeleted',
 876+ // oversighters
 877+ 'all-hidden', 'all-unhidden', 'all-requested', 'all-unrequested', 'all-declined',
 878+ 'all-oversighted', 'all-unoversighted', 'all')
863879 ),
864880 'filtervalue' => array(
865881 ApiBase::PARAM_REQUIRED => false,
Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/api/ApiArticleFeedbackv5Utils.php
@@ -207,13 +207,14 @@
208208 * @param $pageId int the id of the page so we can look it up
209209 * @param $itemId int the id of the feedback item, used to build permalinks
210210 * @param $notes string any notes that were stored with the activity
211 - * @param $auto boolean true if this was an "automatic" action, if so the log doer is changed
 211+ * @param $doer int id of user who did the action, null will use currently logged in user
 212+ * @param $params array of parameters that can be passed into the msg thing - used for "perpetrator" for log entry
212213 */
213 - public static function logActivity( $type, $pageId, $itemId, $notes, $auto = false ) {
 214+ public static function logActivity( $type, $pageId, $itemId, $notes, $doer = null, $params = array() ) {
214215
215216 // These are our valid activity log actions
216217 $valid = array( 'oversight', 'unoversight', 'hidden', 'unhidden',
217 - 'decline', 'request', 'unrequest', 'flag', 'unflag' );
 218+ 'decline', 'request', 'unrequest', 'flag', 'unflag', 'autoflag', 'autohide' );
218219
219220 // suppress
220221 $suppress = array( 'oversight', 'unoversight', 'decline', 'request', 'unrequest');
@@ -252,9 +253,13 @@
253254 $notes = $wgLang->truncate( $notes, $wgArticleFeedbackv5MaxActivityNoteLength );
254255
255256 // if this is an automatic action, we create our special extension doer and send
256 - if ( $auto ) {
257 - $default_user = wfMessage( 'articlefeedbackv5-default-user' )->text();
258 - $doer = User::newFromName( $default_user );
 257+ if ( $doer ) {
 258+ if ( $doer > 0) {
 259+ $default_user = wfMessage( 'articlefeedbackv5-default-user' )->text();
 260+ $doer = User::newFromName( $default_user );
 261+ } else {
 262+ $doer = User::newFromId( $doer );
 263+ }
259264 // I cannot see how this could fail, but if it does do not log
260265 if ( !$doer ) {
261266 return;
@@ -265,7 +270,7 @@
266271
267272 $log = new LogPage( $logtype, false );
268273 // comments become the notes section from the feedback
269 - $log->addEntry( $type, $permalink, $notes, array(), $doer );
 274+ $log->addEntry( $type, $permalink, $notes, $params, $doer );
270275
271276 // update our log count by 1
272277 $dbw = wfGetDB( DB_MASTER );
@@ -296,6 +301,12 @@
297302 $userId = (int) $user_id;
298303 if ( $userId !== 0 ) { // logged-in users
299304 $user = User::newFromId( $userId );
 305+ } elseif ( is_null($user_ip) || $userId == 0 ) { // magic user
 306+ global $wgArticleFeedbackv5AutoHelp;
 307+ $element = Linker::makeExternalLink(
 308+ $wgArticleFeedbackv5AutoHelp,
 309+ wfMessage( 'articlefeedbackv5-default-user' )->text());
 310+ return $element;
300311 } else { // IP users
301312 $userText = $user_ip;
302313 $user = User::newFromName( $userText, false );
Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/SpecialArticleFeedbackv5.php
@@ -16,8 +16,8 @@
1717 */
1818 class SpecialArticleFeedbackv5 extends UnlistedSpecialPage {
1919 private $filters = array(
20 - 'comment',
21 - 'helpful',
 20+ 'visible-comment',
 21+ 'visible-helpful',
2222 'visible'
2323 );
2424 private $sorts = array(
@@ -26,6 +26,10 @@
2727 'rating'
2828 );
2929
 30+ protected $showHidden;
 31+ protected $showDeleted;
 32+ protected $defaultFilters;
 33+
3034 /**
3135 * Constructor
3236 */
@@ -33,32 +37,22 @@
3438 global $wgUser;
3539 parent::__construct( 'ArticleFeedbackv5' );
3640
37 - $showHidden = $wgUser->isAllowed( 'aftv5-see-hidden-feedback' );
38 - $showDeleted = $wgUser->isAllowed( 'aftv5-see-deleted-feedback' );
 41+ $this->showHidden = $wgUser->isAllowed( 'aftv5-see-hidden-feedback' );
 42+ $this->showDeleted = $wgUser->isAllowed( 'aftv5-see-deleted-feedback' );
 43+ $this->defaultFilters = $this->filters;
3944
40 - if ( $showDeleted ) {
 45+ if ( $this->showDeleted ) {
4146 array_push( $this->filters,
42 - 'unhelpful', 'abusive', 'invisible', 'unhidden', 'needsoversight', 'deleted', 'undeleted', 'declined'
 47+ 'visible-unhelpful', 'visible-abusive', 'all-hidden', 'all-unhidden',
 48+ 'all-requested', 'all-unrequested', 'all-declined',
 49+ 'all-oversighted', 'all-unoversighted', 'all'
4350 );
44 - } elseif ( $showHidden ) {
 51+ } elseif ( $this->showHidden ) {
4552 array_push( $this->filters,
46 - 'unhelpful', 'abusive', 'invisible', 'unhidden', 'needsoversight', 'undeleted', 'declined'
 53+ 'visible-unhelpful', 'visible-abusive', 'notdeleted-hidden', 'notdeleted-unhidden',
 54+ 'notdeleted-requested', 'notdeleted-unrequested', 'notdeleted-declined','notdeleted'
4755 );
4856 }
49 -
50 - // NOTE: The 'all' option actually displays different things
51 - // based on the users role, which is handled in the filter:
52 - // - deleter's all is actually everything
53 - // - hidder's all is 'visible + hidden'
54 - // - regular non-admin only has 'all visible' not 'all'
55 -
56 - // The all option, if any, is only added once, at the end of the list,
57 - // which is why it's down here instead.
58 - if ( $showDeleted ) {
59 - $this->filters[] = 'all';
60 - } elseif( $showHidden ) {
61 - $this->filters[] = 'notdeleted';
62 - }
6357 }
6458
6559 /**
@@ -263,9 +257,11 @@
264258 $opts = array();
265259 $counts = $this->getFilterCounts( $pageId );
266260 foreach ( $this->filters as $filter ) {
 261+
267262 $count = array_key_exists( $filter, $counts ) ? $counts[$filter] : 0;
268 - $key = $this->msg( 'articlefeedbackv5-special-filter-'.$filter, $count )->escaped();
269 - if( in_array( $filter, array( 'comment', 'helpful', 'visible' ) ) ) {
 263+ $msg_key = str_replace(array('all-', 'visible-', 'notdeleted-'), '', $filter);
 264+ $key = $this->msg( 'articlefeedbackv5-special-filter-' . $msg_key, $count )->escaped();
 265+ if( in_array( $filter, $this->defaultFilters ) ) {
270266 $opts[ (string) $key ] = $filter;
271267 } else {
272268 $opts[ '---------' ][ (string) $key ] = $filter;
Index: branches/wmf/1.19wmf1/extensions/ArticleFeedbackv5/ArticleFeedbackv5.hooks.php
@@ -113,6 +113,10 @@
114114 'articlefeedbackv5-bucket4-learn-to-edit',
115115 'articlefeedbackv5-bucket4-form-submit',
116116 'articlefeedbackv5-bucket4-help-tooltip-info',
 117+ 'articlefeedbackv5-bucket4-noedit-title',
 118+ 'articlefeedbackv5-bucket4-noedit-teaser-line1',
 119+ 'articlefeedbackv5-bucket4-noedit-teaser-line2',
 120+ 'articlefeedbackv5-bucket4-noedit-form-submit',
117121 'articlefeedbackv5-bucket5-form-switch-label',
118122 'articlefeedbackv5-bucket5-form-panel-title',
119123 'articlefeedbackv5-bucket5-form-panel-explanation',
@@ -183,8 +187,6 @@
184188 'articlefeedbackv5-form-undelete',
185189 'articlefeedbackv5-form-oversight',
186190 'articlefeedbackv5-form-unoversight',
187 - 'articlefeedbackv5-hidden',
188 - 'articlefeedbackv5-deleted',
189191 'articlefeedbackv5-comment-more',
190192 'articlefeedbackv5-comment-less',
191193 'articlefeedbackv5-error-loading-feedback',
@@ -385,6 +387,42 @@
386388 }
387389
388390 /**
 391+ * Formats an activity log entry
 392+ *
 393+ * @param $type string the log type
 394+ * @param $action string the action (usually, but not always, the flag)
 395+ * @param $title Title the title
 396+ * @param $skin Skin the skin
 397+ * @param $params array any extra params
 398+ * @param $filterWikilinks bool whether to filter links
 399+ * @return string the log entry
 400+ */
 401+ public static function formatActivityLogEntry( $type, $action, $title, $skin, $params, $filterWikilinks = false ) {
 402+
 403+ if ( preg_match( '|^ArticleFeedbackv5/(.*)/(\d+)$|', $title->getDBKey(), $matches ) ) {
 404+ $page = Title::newFromDBKey( $matches[1] );
 405+ $fbid = $matches[2];
 406+ } else {
 407+ $fbid = '?';
 408+ }
 409+
 410+ $fbtext = wfMessage( 'articlefeedbackv5-log-feedback-linktext',
 411+ $fbid )->escaped();
 412+ $fblink = Message::rawParam( Linker::makeLinkObj( $title, $fbtext ) );
 413+
 414+ if ( $page ) {
 415+ $pagelink = Message::rawParam( Linker::makeLinkObj( $page ) );
 416+ } else {
 417+ $pagelink = '?';
 418+ }
 419+
 420+ global $wgLang, $wgContLang;
 421+ $language = $skin === null ? $wgContLang : $wgLang;
 422+ return wfMessage( "articlefeedbackv5-log-$action" )->params(
 423+ array( $fblink, $pagelink ) )->inLanguage( $language )->text();
 424+ }
 425+
 426+ /**
389427 * Pushes the tracking fields into the edit page
390428 *
391429 * @see http://www.mediawiki.org/wiki/Manual:Hooks/EditPage::showEditForm:fields
@@ -394,18 +432,20 @@
395433 */
396434 public static function pushTrackingFieldsToEdit( $editPage, $output ) {
397435 $request = $output->getRequest();
398 - $tracking = $request->getVal( 'articleFeedbackv5_click_tracking' );
399 - $bucketId = $request->getVal( 'articleFeedbackv5_bucket_id' );
400 - $ctaId = $request->getVal( 'articleFeedbackv5_cta_id' );
401 - $flinkId = $request->getVal( 'articleFeedbackv5_f_link_id' );
402 - $location = $request->getVal( 'articleFeedbackv5_location' );
403 - $token = $request->getVal( 'articleFeedbackv5_ct_token' );
404 - $ctEvent = $request->getVal( 'articleFeedbackv5_ct_event' );
 436+ $tracking = $request->getVal( 'articleFeedbackv5_click_tracking' );
 437+ $bucketId = $request->getVal( 'articleFeedbackv5_bucket_id' );
 438+ $ctaId = $request->getVal( 'articleFeedbackv5_cta_id' );
 439+ $flinkId = $request->getVal( 'articleFeedbackv5_f_link_id' );
 440+ $experiment = $request->getVal( 'articleFeedbackv5_experiment' );
 441+ $location = $request->getVal( 'articleFeedbackv5_location' );
 442+ $token = $request->getVal( 'articleFeedbackv5_ct_token' );
 443+ $ctEvent = $request->getVal( 'articleFeedbackv5_ct_event' );
405444
406445 $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_click_tracking', $tracking );
407446 $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_bucket_id', $bucketId );
408447 $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_cta_id', $ctaId );
409448 $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_f_link_id', $flinkId );
 449+ $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_experiment', $experiment );
410450 $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_location', $location );
411451 $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_ct_token', $token );
412452 $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_ct_event', $ctEvent );
@@ -468,20 +508,25 @@
469509 return;
470510 }
471511
472 - $version = $wgArticleFeedbackv5Tracking['version'];
473 - $bucketId = $request->getVal( 'articleFeedbackv5_bucket_id' );
474 - $ctaId = $request->getVal( 'articleFeedbackv5_cta_id' );
475 - $flinkId = $request->getVal( 'articleFeedbackv5_f_link_id' );
476 - $location = $request->getVal( 'articleFeedbackv5_location' );
477 - $token = $request->getVal( 'articleFeedbackv5_ct_token' );
478 - $ctEvent = $request->getVal( 'articleFeedbackv5_ct_event' );
 512+ $version = $wgArticleFeedbackv5Tracking['version'];
 513+ $bucketId = $request->getVal( 'articleFeedbackv5_bucket_id' );
 514+ $ctaId = $request->getVal( 'articleFeedbackv5_cta_id' );
 515+ $flinkId = $request->getVal( 'articleFeedbackv5_f_link_id' );
 516+ $experiment = $request->getVal( 'articleFeedbackv5_experiment' );
 517+ $location = $request->getVal( 'articleFeedbackv5_location' );
 518+ $token = $request->getVal( 'articleFeedbackv5_ct_token' );
 519+ $ctEvent = $request->getVal( 'articleFeedbackv5_ct_event' );
479520
480521 if ( $ctEvent ) {
481522 $trackingId = $ctEvent . '-' . $event;
482523 } else {
483 - $trackingId = 'ext.articleFeedbackv5@' . $version
484 - . '-option' . $bucketId . $flinkId
485 - . '-cta_' . ( isset( $ctas[$ctaId] ) ? $ctas[$ctaId] : 'unknown' )
 524+ $trackingId = 'ext.articleFeedbackv5@' . $version;
 525+ if ( $experiment ) {
 526+ $trackingId .= '-' . $experiment; // Stage 3 or greater
 527+ } else {
 528+ $trackingId .= '-option' . $bucketId . $flinkId; // Prior to stage 3; handles cached js
 529+ }
 530+ $trackingId .= '-cta_' . ( isset( $ctas[$ctaId] ) ? $ctas[$ctaId] : 'unknown' )
486531 . '-' . $event
487532 . '-' . $location;
488533 }

Follow-up revisions

RevisionCommit summaryAuthorDate
r114967Followup r114966: add forgotten filecatrope18:11, 19 April 2012

Status & tagging log