Index: branches/wmf/1.17wmf1/extensions/CentralNotice/CentralNoticeLogPager.php |
— | — | @@ -1,127 +1,73 @@ |
2 | 2 | <?php |
3 | 3 | |
4 | | -class CentralNoticeLogPager extends ReverseChronologicalPager { |
| 4 | +class CentralNoticeBannerLogPager extends CentralNoticeLogPager { |
5 | 5 | var $viewPage, $special; |
6 | 6 | |
7 | 7 | function __construct( $special ) { |
8 | | - global $wgRequest; |
9 | 8 | $this->special = $special; |
10 | | - parent::__construct(); |
| 9 | + parent::__construct($special); |
11 | 10 | |
12 | | - // Override paging defaults |
13 | | - list( $this->mLimit, /* $offset */ ) = $this->mRequest->getLimitOffset( 20, '' ); |
14 | | - $this->mLimitsShown = array( 20, 50, 100 ); |
15 | | - |
16 | | - $this->viewPage = SpecialPage::getTitleFor( 'CentralNotice' ); |
| 11 | + $this->viewPage = SpecialPage::getTitleFor( 'NoticeTemplate', 'view' ); |
17 | 12 | } |
18 | 13 | |
19 | 14 | /** |
20 | 15 | * Sort the log list by timestamp |
21 | 16 | */ |
22 | 17 | function getIndexField() { |
23 | | - return 'notlog_timestamp'; |
| 18 | + return 'tmplog_timestamp'; |
24 | 19 | } |
25 | 20 | |
26 | 21 | /** |
27 | 22 | * Pull log entries from the database |
28 | 23 | */ |
29 | 24 | function getQueryInfo() { |
30 | | - global $wgRequest; |
31 | | - |
32 | | - $filterStartDate = 0; |
33 | | - $filterEndDate = 0; |
34 | | - $startYear = $wgRequest->getVal( 'start_year' ); |
35 | | - if ( $startYear === 'other' ) $startYear = null; |
36 | | - $startMonth = $wgRequest->getVal( 'start_month' ); |
37 | | - if ( $startMonth === 'other' ) $startMonth = null; |
38 | | - $startDay = $wgRequest->getVal( 'start_day' ); |
39 | | - if ( $startDay === 'other' ) $startDay = null; |
40 | | - $endYear = $wgRequest->getVal( 'end_year' ); |
41 | | - if ( $endYear === 'other' ) $endYear = null; |
42 | | - $endMonth = $wgRequest->getVal( 'end_month' ); |
43 | | - if ( $endMonth === 'other' ) $endMonth = null; |
44 | | - $endDay = $wgRequest->getVal( 'end_day' ); |
45 | | - if ( $endDay === 'other' ) $endDay = null; |
46 | | - |
47 | | - if ( $startYear && $startMonth && $startDay ) { |
48 | | - $filterStartDate = $startYear . $startMonth . $startDay; |
49 | | - } |
50 | | - if ( $endYear && $endMonth && $endDay ) { |
51 | | - $filterEndDate = $endYear . $endMonth . $endDay; |
52 | | - } |
53 | | - $filterCampaign = $wgRequest->getVal( 'campaign' ); |
54 | | - $filterUser = $wgRequest->getVal( 'user' ); |
55 | | - $reset = $wgRequest->getVal( 'centralnoticelogreset' ); |
56 | | - |
57 | | - $info = array( |
58 | | - 'tables' => array( 'cn_notice_log' ), |
| 25 | + return array( |
| 26 | + 'tables' => array( 'cn_template_log' ), |
59 | 27 | 'fields' => '*', |
60 | | - 'conds' => array() |
61 | 28 | ); |
62 | | - |
63 | | - if ( !$reset ) { |
64 | | - if ( $filterStartDate > 0 ) { |
65 | | - $filterStartDate = intval( $filterStartDate.'000000' ); |
66 | | - $info['conds'][] = "notlog_timestamp >= $filterStartDate"; |
67 | | - } |
68 | | - if ( $filterEndDate > 0 ) { |
69 | | - $filterEndDate = intval( $filterEndDate.'000000' ); |
70 | | - $info['conds'][] = "notlog_timestamp < $filterEndDate"; |
71 | | - } |
72 | | - if ( $filterCampaign ) { |
73 | | - $info['conds'][] = "notlog_not_name LIKE '$filterCampaign'"; |
74 | | - } |
75 | | - if ( $filterUser ) { |
76 | | - $user = User::newFromName( $filterUser ); |
77 | | - $userId = $user->getId(); |
78 | | - $info['conds'][] = "notlog_user_id = $userId"; |
79 | | - } |
80 | | - } |
81 | | - |
82 | | - return $info; |
83 | 29 | } |
84 | 30 | |
85 | | - /** |
| 31 | + /** |
86 | 32 | * Generate the content of each table row (1 row = 1 log entry) |
87 | 33 | */ |
88 | 34 | function formatRow( $row ) { |
89 | 35 | global $wgLang, $wgExtensionAssetsPath; |
90 | 36 | |
91 | 37 | // Create a user object so we can pull the name, user page, etc. |
92 | | - $loggedUser = User::newFromId( $row->notlog_user_id ); |
| 38 | + $loggedUser = User::newFromId( $row->tmplog_user_id ); |
93 | 39 | // Create the user page link |
94 | 40 | $userLink = $this->getSkin()->makeLinkObj( $loggedUser->getUserPage(), |
95 | 41 | $loggedUser->getName() ); |
96 | 42 | $userTalkLink = $this->getSkin()->makeLinkObj( $loggedUser->getTalkPage(), |
97 | 43 | wfMsg ( 'centralnotice-talk-link' ) ); |
98 | 44 | |
99 | | - // Create the campaign link |
100 | | - $campaignLink = $this->getSkin()->makeLinkObj( $this->viewPage, |
101 | | - htmlspecialchars( $row->notlog_not_name ), |
102 | | - 'method=listNoticeDetail¬ice=' . urlencode( $row->notlog_not_name ) ); |
| 45 | + // Create the banner link |
| 46 | + $bannerLink = $this->getSkin()->makeLinkObj( $this->viewPage, |
| 47 | + htmlspecialchars( $row->tmplog_template_name ), |
| 48 | + 'template=' . urlencode( $row->tmplog_template_name ) ); |
103 | 49 | |
104 | 50 | // Begin log entry primary row |
105 | 51 | $htmlOut = Xml::openElement( 'tr' ); |
106 | 52 | |
107 | 53 | $htmlOut .= Xml::openElement( 'td', array( 'valign' => 'top' ) ); |
108 | | - if ( $row->notlog_action !== 'removed' ) { |
109 | | - $htmlOut .= '<a href="javascript:toggleLogDisplay(\''.$row->notlog_id.'\')">'. |
110 | | - '<img src="'.$wgExtensionAssetsPath.'/CentralNotice/collapsed.png" id="cn-collapsed-'.$row->notlog_id.'" style="display:block;"/>'. |
111 | | - '<img src="'.$wgExtensionAssetsPath.'/CentralNotice/uncollapsed.png" id="cn-uncollapsed-'.$row->notlog_id.'" style="display:none;"/>'. |
| 54 | + if ( $row->tmplog_action !== 'removed' ) { |
| 55 | + $htmlOut .= '<a href="javascript:toggleLogDisplay(\''.$row->tmplog_id.'\')">'. |
| 56 | + '<img src="'.$wgExtensionAssetsPath.'/CentralNotice/collapsed.png" id="cn-collapsed-'.$row->tmplog_id.'" style="display:block;vertical-align:baseline;"/>'. |
| 57 | + '<img src="'.$wgExtensionAssetsPath.'/CentralNotice/uncollapsed.png" id="cn-uncollapsed-'.$row->tmplog_id.'" style="display:none;vertical-align:baseline;"/>'. |
112 | 58 | '</a>'; |
113 | 59 | } |
114 | 60 | $htmlOut .= Xml::closeElement( 'td' ); |
115 | 61 | $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top', 'class' => 'primary' ), |
116 | | - $wgLang->date( $row->notlog_timestamp ) . ' ' . $wgLang->time( $row->notlog_timestamp ) |
| 62 | + $wgLang->date( $row->tmplog_timestamp ) . ' ' . $wgLang->time( $row->tmplog_timestamp ) |
117 | 63 | ); |
118 | 64 | $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top', 'class' => 'primary' ), |
119 | 65 | wfMsg ( 'centralnotice-user-links', $userLink, $userTalkLink ) |
120 | 66 | ); |
121 | 67 | $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top', 'class' => 'primary' ), |
122 | | - $row->notlog_action |
| 68 | + $row->tmplog_action |
123 | 69 | ); |
124 | 70 | $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top', 'class' => 'primary' ), |
125 | | - $campaignLink |
| 71 | + $bannerLink |
126 | 72 | ); |
127 | 73 | $htmlOut .= Xml::tags( 'td', array(), |
128 | 74 | ' ' |
— | — | @@ -130,17 +76,17 @@ |
131 | 77 | // End log entry primary row |
132 | 78 | $htmlOut .= Xml::closeElement( 'tr' ); |
133 | 79 | |
134 | | - if ( $row->notlog_action !== 'removed' ) { |
| 80 | + if ( $row->tmplog_action !== 'removed' ) { |
135 | 81 | // Begin log entry secondary row |
136 | | - $htmlOut .= Xml::openElement( 'tr', array( 'id' => 'cn-log-details-'.$row->notlog_id, 'style' => 'display:none;' ) ); |
| 82 | + $htmlOut .= Xml::openElement( 'tr', array( 'id' => 'cn-log-details-'.$row->tmplog_id, 'style' => 'display:none;' ) ); |
137 | 83 | |
138 | 84 | $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top' ), |
139 | 85 | ' ' // force a table cell in older browsers |
140 | 86 | ); |
141 | 87 | $htmlOut .= Xml::openElement( 'td', array( 'valign' => 'top', 'colspan' => '5' ) ); |
142 | | - if ( $row->notlog_action == 'created' ) { |
| 88 | + if ( $row->tmplog_action == 'created' ) { |
143 | 89 | $htmlOut .= $this->showInitialSettings( $row ); |
144 | | - } else if ( $row->notlog_action == 'modified' ) { |
| 90 | + } else if ( $row->tmplog_action == 'modified' ) { |
145 | 91 | $htmlOut .= $this->showChanges( $row ); |
146 | 92 | } |
147 | 93 | $htmlOut .= Xml::closeElement( 'td' ); |
— | — | @@ -152,53 +98,62 @@ |
153 | 99 | return $htmlOut; |
154 | 100 | } |
155 | 101 | |
| 102 | + function getStartBody() { |
| 103 | + $htmlOut = ''; |
| 104 | + $htmlOut .= Xml::openElement( 'table', array( 'id' => 'cn-campaign-logs', 'cellpadding' => 3 ) ); |
| 105 | + $htmlOut .= Xml::openElement( 'tr' ); |
| 106 | + $htmlOut .= Xml::element( 'th', array( 'style' => 'width: 20px;' ) ); |
| 107 | + $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 130px;' ), |
| 108 | + wfMsg ( 'centralnotice-timestamp' ) |
| 109 | + ); |
| 110 | + $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 160px;' ), |
| 111 | + wfMsg ( 'centralnotice-user' ) |
| 112 | + ); |
| 113 | + $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 100px;' ), |
| 114 | + wfMsg ( 'centralnotice-action' ) |
| 115 | + ); |
| 116 | + $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 160px;' ), |
| 117 | + wfMsg ( 'centralnotice-banner' ) |
| 118 | + ); |
| 119 | + $htmlOut .= Xml::tags( 'td', array(), |
| 120 | + ' ' |
| 121 | + ); |
| 122 | + $htmlOut .= Xml::closeElement( 'tr' ); |
| 123 | + return $htmlOut; |
| 124 | + } |
| 125 | + |
| 126 | + /** |
| 127 | + * Close table |
| 128 | + */ |
| 129 | + function getEndBody() { |
| 130 | + $htmlOut = ''; |
| 131 | + $htmlOut .= Xml::closeElement( 'table' ); |
| 132 | + return $htmlOut; |
| 133 | + } |
| 134 | + |
156 | 135 | function showInitialSettings( $row ) { |
157 | 136 | global $wgLang; |
158 | 137 | $details = ''; |
159 | 138 | $details .= wfMsg ( |
160 | 139 | 'centralnotice-log-label', |
161 | | - wfMsg ( 'centralnotice-start-date' ), |
162 | | - $wgLang->date( $row->notlog_end_start ).' '.$wgLang->time( $row->notlog_end_start ) |
| 140 | + wfMsg ( 'centralnotice-anon' ), |
| 141 | + ($row->tmplog_end_anon ? 'on' : 'off') |
163 | 142 | )."<br/>"; |
164 | 143 | $details .= wfMsg ( |
165 | 144 | 'centralnotice-log-label', |
166 | | - wfMsg ( 'centralnotice-end-date' ), |
167 | | - $wgLang->date( $row->notlog_end_end ).' '.$wgLang->time( $row->notlog_end_end ) |
| 145 | + wfMsg ( 'centralnotice-account' ), |
| 146 | + ($row->tmplog_end_account ? 'on' : 'off') |
168 | 147 | )."<br/>"; |
169 | 148 | $details .= wfMsg ( |
170 | 149 | 'centralnotice-log-label', |
171 | | - wfMsg ( 'centralnotice-projects' ), |
172 | | - $row->notlog_end_projects |
| 150 | + wfMsg ( 'centralnotice-fundraising' ), |
| 151 | + ($row->tmplog_end_fundraising ? 'on' : 'off') |
173 | 152 | )."<br/>"; |
174 | | - $language_count = count( explode ( ', ', $row->notlog_end_languages ) ); |
175 | | - $languageList = ''; |
176 | | - if ( $language_count > 15 ) { |
177 | | - $languageList = wfMsg ( 'centralnotice-multiple-languages', $language_count ); |
178 | | - } elseif ( $language_count > 0 ) { |
179 | | - $languageList = $row->notlog_end_languages; |
180 | | - } |
181 | | - $details .= wfMsg ( |
182 | | - 'centralnotice-log-label', |
183 | | - wfMsg ( 'centralnotice-languages' ), |
184 | | - $languageList |
185 | | - )."<br/>"; |
186 | | - $details .= wfMsg ( |
187 | | - 'centralnotice-log-label', |
188 | | - wfMsg ( 'centralnotice-geo' ), |
189 | | - ($row->notlog_end_geo ? 'on' : 'off') |
190 | | - )."<br/>"; |
191 | | - if ( $row->notlog_end_geo ) { |
192 | | - $country_count = count( explode ( ', ', $row->notlog_end_countries ) ); |
193 | | - $countryList = ''; |
194 | | - if ( $country_count > 20 ) { |
195 | | - $countryList = wfMsg ( 'centralnotice-multiple-countries', $country_count ); |
196 | | - } elseif ( $country_count > 0 ) { |
197 | | - $countryList = $row->notlog_end_countries; |
198 | | - } |
| 153 | + if ( $row->tmplog_end_landingpages ) { |
199 | 154 | $details .= wfMsg ( |
200 | 155 | 'centralnotice-log-label', |
201 | | - wfMsg ( 'centralnotice-countries' ), |
202 | | - $countryList |
| 156 | + wfMsg ( 'centralnotice-landingpages' ), |
| 157 | + $row->tmplog_end_landingpages |
203 | 158 | )."<br/>"; |
204 | 159 | } |
205 | 160 | return $details; |
— | — | @@ -207,70 +162,25 @@ |
208 | 163 | function showChanges( $row ) { |
209 | 164 | global $wgLang; |
210 | 165 | $details = ''; |
211 | | - if ( $row->notlog_begin_start !== $row->notlog_end_start ) { |
| 166 | + $details .= $this->testBooleanChange( 'anon', $row ); |
| 167 | + $details .= $this->testBooleanChange( 'account', $row ); |
| 168 | + $details .= $this->testBooleanChange( 'fundraising', $row ); |
| 169 | + $details .= $this->testTextChange( 'landingpages', $row ); |
| 170 | + if ( $row->tmplog_content_change ) { |
| 171 | + // Show changes to banner content |
212 | 172 | $details .= wfMsg ( |
213 | 173 | 'centralnotice-log-label', |
214 | | - wfMsg ( 'centralnotice-start-date' ), |
215 | | - wfMsg ( |
216 | | - 'centralnotice-changed', |
217 | | - $wgLang->date( $row->notlog_begin_start ).' '.$wgLang->time( $row->notlog_begin_start ), |
218 | | - $wgLang->date( $row->notlog_end_start ).' '.$wgLang->time( $row->notlog_end_start ) |
219 | | - ) |
| 174 | + wfMsg ( 'centralnotice-banner-content' ), |
| 175 | + wfMsg ( 'centralnotice-banner-content-changed' ) |
220 | 176 | )."<br/>"; |
221 | 177 | } |
222 | | - if ( $row->notlog_begin_end !== $row->notlog_end_end ) { |
223 | | - $details .= wfMsg ( |
224 | | - 'centralnotice-log-label', |
225 | | - wfMsg ( 'centralnotice-end-date' ), |
226 | | - wfMsg ( |
227 | | - 'centralnotice-changed', |
228 | | - $wgLang->date( $row->notlog_begin_end ).' '.$wgLang->time( $row->notlog_begin_end ), |
229 | | - $wgLang->date( $row->notlog_end_end ).' '.$wgLang->time( $row->notlog_end_end ) |
230 | | - ) |
231 | | - )."<br/>"; |
232 | | - } |
233 | | - $details .= $this->testBooleanChange( 'enabled', $row ); |
234 | | - $details .= $this->testBooleanChange( 'preferred', $row ); |
235 | | - $details .= $this->testBooleanChange( 'locked', $row ); |
236 | | - $details .= $this->testBooleanChange( 'geo', $row ); |
237 | | - $details .= $this->testSetChange( 'projects', $row ); |
238 | | - $details .= $this->testSetChange( 'languages', $row ); |
239 | | - $details .= $this->testSetChange( 'countries', $row ); |
240 | | - if ( $row->notlog_begin_banners !== $row->notlog_end_banners ) { |
241 | | - // Show changes to banner weights and assignment |
242 | | - $beginBannersObject = json_decode( $row->notlog_begin_banners ); |
243 | | - $endBannersObject = json_decode( $row->notlog_end_banners ); |
244 | | - $beginBanners = array(); |
245 | | - $endBanners = array(); |
246 | | - foreach( $beginBannersObject as $key => $weight ) { |
247 | | - $beginBanners[$key] = $key.' ('.$weight.')'; |
248 | | - } |
249 | | - foreach( $endBannersObject as $key => $weight ) { |
250 | | - $endBanners[$key] = $key.' ('.$weight.')'; |
251 | | - } |
252 | | - if ( $beginBanners ) { |
253 | | - $before = implode( ', ', $beginBanners ); |
254 | | - } else { |
255 | | - $before = wfMsg ( 'centralnotice-no-assignments' ); |
256 | | - } |
257 | | - if ( $endBanners ) { |
258 | | - $after = implode( ', ', $endBanners ); |
259 | | - } else { |
260 | | - $after = wfMsg ( 'centralnotice-no-assignments' ); |
261 | | - } |
262 | | - $details .= wfMsg ( |
263 | | - 'centralnotice-log-label', |
264 | | - wfMsg ( 'centralnotice-templates' ), |
265 | | - wfMsg ( 'centralnotice-changed', $before, $after) |
266 | | - )."<br/>"; |
267 | | - } |
268 | 178 | return $details; |
269 | 179 | } |
270 | 180 | |
271 | 181 | private function testBooleanChange( $param, $row ) { |
272 | 182 | $result = ''; |
273 | | - $beginField = 'notlog_begin_'.$param; |
274 | | - $endField = 'notlog_end_'.$param; |
| 183 | + $beginField = 'tmplog_begin_'.$param; |
| 184 | + $endField = 'tmplog_end_'.$param; |
275 | 185 | if ( $row->$beginField !== $row->$endField ) { |
276 | 186 | $result .= wfMsg ( |
277 | 187 | 'centralnotice-log-label', |
— | — | @@ -284,73 +194,22 @@ |
285 | 195 | } |
286 | 196 | return $result; |
287 | 197 | } |
288 | | - |
289 | | - private function testSetChange( $param, $row ) { |
| 198 | + |
| 199 | + private function testTextChange( $param, $row ) { |
290 | 200 | $result = ''; |
291 | | - $beginField = 'notlog_begin_'.$param; |
292 | | - $endField = 'notlog_end_'.$param; |
| 201 | + $beginField = 'tmplog_begin_'.$param; |
| 202 | + $endField = 'tmplog_end_'.$param; |
293 | 203 | if ( $row->$beginField !== $row->$endField ) { |
294 | | - $beginSet = array(); |
295 | | - $endSet = array(); |
296 | | - if ( $row->$beginField ) { |
297 | | - $beginSet = explode( ', ', $row->$beginField ); |
298 | | - } |
299 | | - if ( $row->$endField ) { |
300 | | - $endSet = explode( ', ', $row->$endField ); |
301 | | - } |
302 | | - $added = array_diff( $endSet, $beginSet ); |
303 | | - $removed = array_diff( $beginSet, $endSet ); |
304 | | - $differences = ''; |
305 | | - if ( $added ) { |
306 | | - $differences .= wfMsg ( 'centralnotice-added', implode( ', ', $added ) ); |
307 | | - if ( $removed ) $differences .= '; '; |
308 | | - } |
309 | | - if ( $removed ) { |
310 | | - $differences .= wfMsg ( 'centralnotice-removed', implode( ', ', $removed ) ); |
311 | | - } |
312 | 204 | $result .= wfMsg ( |
313 | 205 | 'centralnotice-log-label', |
314 | 206 | wfMsg ( 'centralnotice-'.$param ), |
315 | | - $differences |
| 207 | + wfMsg ( |
| 208 | + 'centralnotice-changed', |
| 209 | + $row->$beginField, |
| 210 | + $row->$endField |
| 211 | + ) |
316 | 212 | )."<br/>"; |
317 | 213 | } |
318 | 214 | return $result; |
319 | 215 | } |
320 | | - |
321 | | - /** |
322 | | - * Specify table headers |
323 | | - */ |
324 | | - function getStartBody() { |
325 | | - $htmlOut = ''; |
326 | | - $htmlOut .= Xml::openElement( 'table', array( 'id' => 'cn-campaign-logs', 'cellpadding' => 3 ) ); |
327 | | - $htmlOut .= Xml::openElement( 'tr' ); |
328 | | - $htmlOut .= Xml::element( 'th', array( 'style' => 'width: 20px;' ) ); |
329 | | - $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 130px;' ), |
330 | | - wfMsg ( 'centralnotice-timestamp' ) |
331 | | - ); |
332 | | - $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 160px;' ), |
333 | | - wfMsg ( 'centralnotice-user' ) |
334 | | - ); |
335 | | - $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 100px;' ), |
336 | | - wfMsg ( 'centralnotice-action' ) |
337 | | - ); |
338 | | - $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 160px;' ), |
339 | | - wfMsg ( 'centralnotice-notice' ) |
340 | | - ); |
341 | | - $htmlOut .= Xml::tags( 'td', array(), |
342 | | - ' ' |
343 | | - ); |
344 | | - $htmlOut .= Xml::closeElement( 'tr' ); |
345 | | - return $htmlOut; |
346 | | - } |
347 | | - |
348 | | - /** |
349 | | - * Close table |
350 | | - */ |
351 | | - function getEndBody() { |
352 | | - $htmlOut = ''; |
353 | | - $htmlOut .= Xml::closeElement( 'table' ); |
354 | | - return $htmlOut; |
355 | | - } |
356 | | - |
357 | 216 | } |
Property changes on: branches/wmf/1.17wmf1/extensions/CentralNotice/CentralNoticeLogPager.php |
___________________________________________________________________ |
Added: svn:mergeinfo |
358 | 217 | Merged /trunk/phase3/extensions/CentralNotice/CentralNoticeLogPager.php:r63545-63546,63549,63643,63764,63897-63901,64113,64509,65387,65391,65555,65590,65650,65816,77555,77558-77560,77563-77565,77573 |
359 | 218 | Merged /trunk/extensions/CentralNotice/CentralNoticeBannerLogPager.php:r95524-95535 |
360 | 219 | Merged /branches/wmf-deployment/extensions/CentralNotice/CentralNoticeLogPager.php:r60970 |
361 | 220 | Merged /branches/wmf/1.16wmf4/extensions/CentralNotice/CentralNoticeLogPager.php:r67177,69199,76243,77266 |
362 | 221 | Merged /trunk/extensions/CentralNotice/CentralNoticeLogPager.php:r62820-67552,67557,67559-71720,71725-71731,71734-71739,71748-71753,71774-71997,72058-72131,72136-73830,73847,73850,73852,73855,73959,73963,73973,73980,73983,73991,73994-73995,74000-74321,74325-74406,75376-75470,75567,75643,75646,75674,75680,75726,75849,75889,75908,75973,76141,76145,76333,76347,76351,76356-76358,76361,76363,76462,76543,76763,77622-79761,79780,79783-80145,80147-80148,80150,80152-80602,81461-83563,83565-91117,91146,91368-92408,92767 |