Index: branches/wmf/1.17wmf1/extensions/CentralNotice/CentralNotice.php |
— | — | @@ -121,6 +121,9 @@ |
122 | 122 | |
123 | 123 | $wgSpecialPages['BannerAllocation'] = 'SpecialBannerAllocation'; |
124 | 124 | $wgAutoloadClasses['SpecialBannerAllocation'] = $specialDir . 'SpecialBannerAllocation.php'; |
| 125 | + |
| 126 | + $wgSpecialPages['CentralNoticeLogs'] = 'SpecialCentralNoticeLogs'; |
| 127 | + $wgAutoloadClasses['SpecialCentralNoticeLogs'] = $specialDir . 'SpecialCentralNoticeLogs.php'; |
125 | 128 | } |
126 | 129 | } |
127 | 130 | |
— | — | @@ -144,6 +147,8 @@ |
145 | 148 | $base . '/patches/patch-notice_countries.sql' ); |
146 | 149 | $wgExtNewTables[] = array( 'cn_notice_projects', |
147 | 150 | $base . '/patches/patch-notice_projects.sql' ); |
| 151 | + $wgExtNewTables[] = array( 'cn_notice_log', |
| 152 | + $base . '/patches/patch-notice_log.sql' ); |
148 | 153 | } |
149 | 154 | } else { |
150 | 155 | if ( $updater->getDB()->getType() == 'mysql' ) { |
— | — | @@ -161,6 +166,8 @@ |
162 | 167 | $base . '/patches/patch-notice_countries.sql', true ) ); |
163 | 168 | $updater->addExtensionUpdate( array( 'addTable', 'cn_notice_projects', |
164 | 169 | $base . '/patches/patch-notice_projects.sql', true ) ); |
| 170 | + $updater->addExtensionUpdate( array( 'addTable', 'cn_notice_log', |
| 171 | + $base . '/patches/patch-notice_log.sql', true ) ); |
165 | 172 | } |
166 | 173 | } |
167 | 174 | return true; |
Property changes on: branches/wmf/1.17wmf1/extensions/CentralNotice/CentralNotice.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
168 | 175 | Merged /trunk/extensions/CentralNotice/CentralNotice.php:r91118-92408 |
Index: branches/wmf/1.17wmf1/extensions/CentralNotice/special/SpecialBannerListLoader.php |
— | — | @@ -64,12 +64,12 @@ |
65 | 65 | // Quick short circuit to show preferred campaigns |
66 | 66 | if ( $campaigns ) { |
67 | 67 | // Pull banners |
68 | | - $banners = CentralNoticeDB::selectBannersAssigned( $campaigns ); |
| 68 | + $banners = CentralNoticeDB::getCampaignBanners( $campaigns ); |
69 | 69 | } |
70 | 70 | |
71 | 71 | // Didn't find any preferred banners so do an old style lookup |
72 | 72 | if ( !$banners ) { |
73 | | - $banners = CentralNotice::selectNoticeTemplates( |
| 73 | + $banners = CentralNoticeDB::getBannersByTarget( |
74 | 74 | $this->project, $this->language, $this->location ); |
75 | 75 | } |
76 | 76 | |
Property changes on: branches/wmf/1.17wmf1/extensions/CentralNotice/special/SpecialBannerController.php |
___________________________________________________________________ |
Deleted: svn:mergeinfo |
77 | 77 | Reverse-merged /branches/wmf-deployment/extensions/CentralNotice/special/SpecialBannerController.php:r60970 |
78 | 78 | Reverse-merged /branches/wmf/1.16wmf4/extensions/CentralNotice/special/SpecialBannerController.php:r67177,69199,76243,77266 |
79 | 79 | Reverse-merged /trunk/extensions/CentralNotice/special/SpecialBannerController.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-91217 |
80 | 80 | Reverse-merged /trunk/phase3/extensions/CentralNotice/special/SpecialBannerController.php:r63545-63546,63549,63643,63764,63897-63901,64113,64509,65387,65391,65555,65590,65650,65816,77555,77558-77560,77563-77565,77573 |
Index: branches/wmf/1.17wmf1/extensions/CentralNotice/special/SpecialCentralNotice.php |
— | — | @@ -57,85 +57,9 @@ |
58 | 58 | // Check authentication token |
59 | 59 | if ( $wgUser->matchEditToken( $wgRequest->getVal( 'authtoken' ) ) ) { |
60 | 60 | |
61 | | - // Handle removing campaigns |
62 | | - $toRemove = $wgRequest->getArray( 'removeNotices' ); |
63 | | - if ( $toRemove ) { |
64 | | - // Remove campaigns in list |
65 | | - foreach ( $toRemove as $notice ) { |
66 | | - $this->removeNotice( $notice ); |
67 | | - } |
68 | | - |
69 | | - // Skip subsequent form handling and show list of campaigns |
70 | | - $this->listNotices(); |
71 | | - $wgOut->addHTML( Xml::closeElement( 'div' ) ); |
72 | | - return; |
73 | | - } |
74 | | - |
75 | | - // Handle locking/unlocking campaigns |
76 | | - $lockedNotices = $wgRequest->getArray( 'locked' ); |
77 | | - if ( $lockedNotices ) { |
78 | | - // Build list of campaigns to lock |
79 | | - $unlockedNotices = array_diff( $this->getAllCampaignNames(), $lockedNotices ); |
80 | | - |
81 | | - // Set locked/unlocked flag accordingly |
82 | | - foreach ( $lockedNotices as $notice ) { |
83 | | - $this->updateLock( $notice, '1' ); |
84 | | - } |
85 | | - foreach ( $unlockedNotices as $notice ) { |
86 | | - $this->updateLock( $notice, '0' ); |
87 | | - } |
88 | | - // Handle updates if no post content came through (all checkboxes unchecked) |
89 | | - } elseif ( $method !== 'addNotice' ) { |
90 | | - $allNotices = $this->getAllCampaignNames(); |
91 | | - foreach ( $allNotices as $notice ) { |
92 | | - $this->updateLock( $notice, '0' ); |
93 | | - } |
94 | | - } |
95 | | - |
96 | | - // Handle enabling/disabling campaigns |
97 | | - $enabledNotices = $wgRequest->getArray( 'enabled' ); |
98 | | - if ( $enabledNotices ) { |
99 | | - // Build list of campaigns to disable |
100 | | - $disabledNotices = array_diff( $this->getAllCampaignNames(), $enabledNotices ); |
101 | | - |
102 | | - // Set enabled/disabled flag accordingly |
103 | | - foreach ( $enabledNotices as $notice ) { |
104 | | - $this->updateEnabled( $notice, '1' ); |
105 | | - } |
106 | | - foreach ( $disabledNotices as $notice ) { |
107 | | - $this->updateEnabled( $notice, '0' ); |
108 | | - } |
109 | | - // Handle updates if no post content came through (all checkboxes unchecked) |
110 | | - } elseif ( $method !== 'addNotice' ) { |
111 | | - $allNotices = $this->getAllCampaignNames(); |
112 | | - foreach ( $allNotices as $notice ) { |
113 | | - $this->updateEnabled( $notice, '0' ); |
114 | | - } |
115 | | - } |
116 | | - |
117 | | - // Handle setting preferred campaigns |
118 | | - $preferredNotices = $wgRequest->getArray( 'preferred' ); |
119 | | - if ( $preferredNotices ) { |
120 | | - // Build list of campaigns to unset |
121 | | - $unsetNotices = array_diff( $this->getAllCampaignNames(), $preferredNotices ); |
122 | | - |
123 | | - // Set flag accordingly |
124 | | - foreach ( $preferredNotices as $notice ) { |
125 | | - $this->updatePreferred( $notice, '1' ); |
126 | | - } |
127 | | - foreach ( $unsetNotices as $notice ) { |
128 | | - $this->updatePreferred( $notice, '0' ); |
129 | | - } |
130 | | - // Handle updates if no post content came through (all checkboxes unchecked) |
131 | | - } elseif ( $method !== 'addNotice' ) { |
132 | | - $allNotices = $this->getAllCampaignNames(); |
133 | | - foreach ( $allNotices as $notice ) { |
134 | | - $this->updatePreferred( $notice, '0' ); |
135 | | - } |
136 | | - } |
137 | | - |
138 | | - // Handle adding of campaign |
| 61 | + // Handle adding a campaign |
139 | 62 | if ( $method == 'addNotice' ) { |
| 63 | + |
140 | 64 | $noticeName = $wgRequest->getVal( 'noticeName' ); |
141 | 65 | $start = $wgRequest->getArray( 'start' ); |
142 | 66 | $projects = $wgRequest->getArray( 'projects' ); |
— | — | @@ -148,6 +72,99 @@ |
149 | 73 | $this->addNotice( $noticeName, '0', $start, $projects, |
150 | 74 | $project_languages, $geotargeted, $geo_countries ); |
151 | 75 | } |
| 76 | + |
| 77 | + // Handle changing settings to existing campaigns |
| 78 | + } else { |
| 79 | + |
| 80 | + // Handle removing campaigns |
| 81 | + $toRemove = $wgRequest->getArray( 'removeNotices' ); |
| 82 | + if ( $toRemove ) { |
| 83 | + // Remove campaigns in list |
| 84 | + foreach ( $toRemove as $notice ) { |
| 85 | + $this->removeNotice( $notice ); |
| 86 | + } |
| 87 | + } |
| 88 | + |
| 89 | + // Get all the initial campaign settings for logging |
| 90 | + $allCampaignNames = $this->getAllCampaignNames(); |
| 91 | + $allInitialCampaignSettings = array(); |
| 92 | + foreach ( $allCampaignNames as $campaignName ) { |
| 93 | + $allInitialCampaignSettings[$campaignName] = CentralNoticeDB::getCampaignSettings( $campaignName, false ); |
| 94 | + } |
| 95 | + |
| 96 | + // Handle locking/unlocking campaigns |
| 97 | + $lockedNotices = $wgRequest->getArray( 'locked' ); |
| 98 | + if ( $lockedNotices ) { |
| 99 | + // Build list of campaigns to lock |
| 100 | + $unlockedNotices = array_diff( $this->getAllCampaignNames(), $lockedNotices ); |
| 101 | + |
| 102 | + // Set locked/unlocked flag accordingly |
| 103 | + foreach ( $lockedNotices as $notice ) { |
| 104 | + $this->setBooleanCampaignSetting( $notice, 'locked', 1 ); |
| 105 | + } |
| 106 | + foreach ( $unlockedNotices as $notice ) { |
| 107 | + $this->setBooleanCampaignSetting( $notice, 'locked', 0 ); |
| 108 | + } |
| 109 | + // Handle updates if no post content came through (all checkboxes unchecked) |
| 110 | + } else { |
| 111 | + $allNotices = $this->getAllCampaignNames(); |
| 112 | + foreach ( $allNotices as $notice ) { |
| 113 | + $this->setBooleanCampaignSetting( $notice, 'locked', 0 ); |
| 114 | + } |
| 115 | + } |
| 116 | + |
| 117 | + // Handle enabling/disabling campaigns |
| 118 | + $enabledNotices = $wgRequest->getArray( 'enabled' ); |
| 119 | + if ( $enabledNotices ) { |
| 120 | + // Build list of campaigns to disable |
| 121 | + $disabledNotices = array_diff( $this->getAllCampaignNames(), $enabledNotices ); |
| 122 | + |
| 123 | + // Set enabled/disabled flag accordingly |
| 124 | + foreach ( $enabledNotices as $notice ) { |
| 125 | + $this->setBooleanCampaignSetting( $notice, 'enabled', 1 ); |
| 126 | + } |
| 127 | + foreach ( $disabledNotices as $notice ) { |
| 128 | + $this->setBooleanCampaignSetting( $notice, 'enabled', 0 ); |
| 129 | + } |
| 130 | + // Handle updates if no post content came through (all checkboxes unchecked) |
| 131 | + } else { |
| 132 | + $allNotices = $this->getAllCampaignNames(); |
| 133 | + foreach ( $allNotices as $notice ) { |
| 134 | + $this->setBooleanCampaignSetting( $notice, 'enabled', 0 ); |
| 135 | + } |
| 136 | + } |
| 137 | + |
| 138 | + // Handle setting preferred campaigns |
| 139 | + $preferredNotices = $wgRequest->getArray( 'preferred' ); |
| 140 | + if ( $preferredNotices ) { |
| 141 | + // Build list of campaigns to unset |
| 142 | + $unsetNotices = array_diff( $this->getAllCampaignNames(), $preferredNotices ); |
| 143 | + |
| 144 | + // Set flag accordingly |
| 145 | + foreach ( $preferredNotices as $notice ) { |
| 146 | + $this->setBooleanCampaignSetting( $notice, 'preferred', 1 ); |
| 147 | + } |
| 148 | + foreach ( $unsetNotices as $notice ) { |
| 149 | + $this->setBooleanCampaignSetting( $notice, 'preferred', 0 ); |
| 150 | + } |
| 151 | + // Handle updates if no post content came through (all checkboxes unchecked) |
| 152 | + } else { |
| 153 | + $allNotices = $this->getAllCampaignNames(); |
| 154 | + foreach ( $allNotices as $notice ) { |
| 155 | + $this->setBooleanCampaignSetting( $notice, 'preferred', 0 ); |
| 156 | + } |
| 157 | + } |
| 158 | + |
| 159 | + // Get all the final campaign settings for potential logging |
| 160 | + foreach ( $allCampaignNames as $campaignName ) { |
| 161 | + $finalCampaignSettings = CentralNoticeDB::getCampaignSettings( $campaignName, false ); |
| 162 | + $diffs = array_diff_assoc( $allInitialCampaignSettings[$campaignName], $finalCampaignSettings ); |
| 163 | + // If there are changes, log them |
| 164 | + if ( $diffs ) { |
| 165 | + $campaignId = CentralNotice::getNoticeId( $campaignName ); |
| 166 | + $this->logCampaignChange( 'modified', $campaignId, $allInitialCampaignSettings[$campaignName], $finalCampaignSettings ); |
| 167 | + } |
| 168 | + } |
152 | 169 | } |
153 | 170 | |
154 | 171 | // If there were no errors, reload the page to prevent duplicate form submission |
— | — | @@ -179,7 +196,8 @@ |
180 | 197 | $pages = array( |
181 | 198 | 'CentralNotice' => wfMsg( 'centralnotice-notices' ), |
182 | 199 | 'NoticeTemplate' => wfMsg ( 'centralnotice-templates' ), |
183 | | - 'BannerAllocation' => wfMsg ( 'centralnotice-allocation' ) |
| 200 | + 'BannerAllocation' => wfMsg ( 'centralnotice-allocation' ), |
| 201 | + 'CentralNoticeLogs' => wfMsg ( 'centralnotice-logs' ) |
184 | 202 | ); |
185 | 203 | $htmlOut = Xml::openElement( 'ul', array( 'id' => 'preftoc' ) ); |
186 | 204 | foreach ( $pages as $page => $msg ) { |
— | — | @@ -365,7 +383,7 @@ |
366 | 384 | 'method=listNoticeDetail¬ice=' . urlencode( $row->not_name ) ); |
367 | 385 | |
368 | 386 | // Projects |
369 | | - $projects = $this->getNoticeProjects( $row->not_name ); |
| 387 | + $projects = CentralNotice::getNoticeProjects( $row->not_name ); |
370 | 388 | $project_count = count( $projects ); |
371 | 389 | $projectList = ''; |
372 | 390 | if ( $project_count > 1 ) { |
— | — | @@ -387,7 +405,7 @@ |
388 | 406 | $fields[] = $projectList; |
389 | 407 | |
390 | 408 | // Languages |
391 | | - $project_langs = $this->getNoticeLanguages( $row->not_name ); |
| 409 | + $project_langs = CentralNotice::getNoticeLanguages( $row->not_name ); |
392 | 410 | $language_count = count( $project_langs ); |
393 | 411 | $languageList = ''; |
394 | 412 | if ( $language_count > 3 ) { |
— | — | @@ -538,7 +556,7 @@ |
539 | 557 | // Countries |
540 | 558 | $htmlOut .= Xml::openElement( 'tr' ); |
541 | 559 | $htmlOut .= Xml::tags( 'td', array(), |
542 | | - Xml::label( wfMsg( 'centralnotice-geotargeted' ), 'geotargeted' ) ); |
| 560 | + Xml::label( wfMsg( 'centralnotice-geo' ), 'geotargeted' ) ); |
543 | 561 | $htmlOut .= Xml::tags( 'td', array(), |
544 | 562 | Xml::check( 'geotargeted', false, |
545 | 563 | wfArrayMerge( $readonly, array( 'value' => 1, 'id' => 'geotargeted' ) ) ) ); |
— | — | @@ -598,36 +616,38 @@ |
599 | 617 | } |
600 | 618 | } |
601 | 619 | |
| 620 | + $initialCampaignSettings = CentralNoticeDB::getCampaignSettings( $notice ); |
| 621 | + |
602 | 622 | // Handle locking/unlocking campaign |
603 | 623 | if ( $wgRequest->getCheck( 'locked' ) ) { |
604 | | - $this->updateLock( $notice, '1' ); |
| 624 | + $this->setBooleanCampaignSetting( $notice, 'locked', 1 ); |
605 | 625 | } else { |
606 | | - $this->updateLock( $notice, 0 ); |
| 626 | + $this->setBooleanCampaignSetting( $notice, 'locked', 0 ); |
607 | 627 | } |
608 | 628 | |
609 | 629 | // Handle enabling/disabling campaign |
610 | 630 | if ( $wgRequest->getCheck( 'enabled' ) ) { |
611 | | - $this->updateEnabled( $notice, '1' ); |
| 631 | + $this->setBooleanCampaignSetting( $notice, 'enabled', 1 ); |
612 | 632 | } else { |
613 | | - $this->updateEnabled( $notice, 0 ); |
| 633 | + $this->setBooleanCampaignSetting( $notice, 'enabled', 0 ); |
614 | 634 | } |
615 | 635 | |
616 | 636 | // Handle setting campaign to preferred/not preferred |
617 | 637 | if ( $wgRequest->getCheck( 'preferred' ) ) { |
618 | | - $this->updatePreferred( $notice, '1' ); |
| 638 | + $this->setBooleanCampaignSetting( $notice, 'preferred', 1 ); |
619 | 639 | } else { |
620 | | - $this->updatePreferred( $notice, 0 ); |
| 640 | + $this->setBooleanCampaignSetting( $notice, 'preferred', 0 ); |
621 | 641 | } |
622 | 642 | |
623 | 643 | // Handle updating geotargeting |
624 | 644 | if ( $wgRequest->getCheck( 'geotargeted' ) ) { |
625 | | - $this->updateGeotargeted( $notice, 1 ); |
| 645 | + $this->setBooleanCampaignSetting( $notice, 'geo', 1 ); |
626 | 646 | $countries = $wgRequest->getArray( 'geo_countries' ); |
627 | 647 | if ( $countries ) { |
628 | 648 | $this->updateCountries( $notice, $countries ); |
629 | 649 | } |
630 | 650 | } else { |
631 | | - $this->updateGeotargeted( $notice, 0 ); |
| 651 | + $this->setBooleanCampaignSetting( $notice, 'geo', 0 ); |
632 | 652 | } |
633 | 653 | |
634 | 654 | // Handle updating the start and end settings |
— | — | @@ -690,6 +710,10 @@ |
691 | 711 | $this->updateProjectLanguages( $notice, $projectLangs ); |
692 | 712 | } |
693 | 713 | |
| 714 | + $finalCampaignSettings = CentralNoticeDB::getCampaignSettings( $notice ); |
| 715 | + $campaignId = CentralNotice::getNoticeId( $notice ); |
| 716 | + $this->logCampaignChange( 'modified', $campaignId, $initialCampaignSettings, $finalCampaignSettings ); |
| 717 | + |
694 | 718 | // If there were no errors, reload the page to prevent duplicate form submission |
695 | 719 | if ( !$this->centralNoticeError ) { |
696 | 720 | $wgOut->redirect( $this->getTitle()->getLocalUrl( |
— | — | @@ -773,26 +797,11 @@ |
774 | 798 | } else { |
775 | 799 | $readonly = array( 'disabled' => 'disabled' ); |
776 | 800 | } |
777 | | - $dbr = wfGetDB( DB_SLAVE ); |
778 | | - |
779 | | - // Get campaign info from database |
780 | | - $row = $dbr->selectRow( 'cn_notices', |
781 | | - array( |
782 | | - 'not_id', |
783 | | - 'not_name', |
784 | | - 'not_start', |
785 | | - 'not_end', |
786 | | - 'not_enabled', |
787 | | - 'not_preferred', |
788 | | - 'not_locked', |
789 | | - 'not_geo' |
790 | | - ), |
791 | | - array( 'not_name' => $notice ), |
792 | | - __METHOD__ |
793 | | - ); |
794 | 801 | |
795 | | - if ( $row ) { |
| 802 | + $campaign = CentralNoticeDB::getCampaignSettings( $notice ); |
796 | 803 | |
| 804 | + if ( $campaign ) { |
| 805 | + |
797 | 806 | // If there was an error, we'll need to restore the state of the form |
798 | 807 | if ( $wgRequest->wasPosted() ) { |
799 | 808 | $startArray = $wgRequest->getArray( 'start' ); |
— | — | @@ -817,15 +826,15 @@ |
818 | 827 | $isGeotargeted = $wgRequest->getCheck( 'geotargeted' ); |
819 | 828 | $countries = $wgRequest->getArray( 'geo_countries', array() ); |
820 | 829 | } else { // Defaults |
821 | | - $startTimestamp = $row->not_start; |
822 | | - $endTimestamp = $row->not_end; |
823 | | - $isEnabled = ( $row->not_enabled == '1' ); |
824 | | - $isPreferred = ( $row->not_preferred == '1' ); |
825 | | - $isLocked = ( $row->not_locked == '1' ); |
826 | | - $noticeProjects = $this->getNoticeProjects( $notice ); |
827 | | - $noticeLanguages = $this->getNoticeLanguages( $notice ); |
828 | | - $isGeotargeted = ( $row->not_geo == '1' ); |
829 | | - $countries = $this->getNoticeCountries( $notice ); |
| 830 | + $startTimestamp = $campaign['start']; |
| 831 | + $endTimestamp = $campaign['end']; |
| 832 | + $isEnabled = ( $campaign['enabled'] == '1' ); |
| 833 | + $isPreferred = ( $campaign['preferred'] == '1' ); |
| 834 | + $isLocked = ( $campaign['locked'] == '1' ); |
| 835 | + $noticeProjects = CentralNotice::getNoticeProjects( $notice ); |
| 836 | + $noticeLanguages = CentralNotice::getNoticeLanguages( $notice ); |
| 837 | + $isGeotargeted = ( $campaign['geo'] == '1' ); |
| 838 | + $countries = CentralNotice::getNoticeCountries( $notice ); |
830 | 839 | } |
831 | 840 | |
832 | 841 | // Build Html |
— | — | @@ -871,12 +880,12 @@ |
872 | 881 | // Countries |
873 | 882 | $htmlOut .= Xml::openElement( 'tr' ); |
874 | 883 | $htmlOut .= Xml::tags( 'td', array(), |
875 | | - Xml::label( wfMsg( 'centralnotice-geotargeted' ), 'geotargeted' ) ); |
| 884 | + Xml::label( wfMsg( 'centralnotice-geo' ), 'geotargeted' ) ); |
876 | 885 | $htmlOut .= Xml::tags( 'td', array(), |
877 | 886 | Xml::check( 'geotargeted', $isGeotargeted, |
878 | 887 | wfArrayMerge( |
879 | 888 | $readonly, |
880 | | - array( 'value' => $row->not_name, 'id' => 'geotargeted' ) ) ) ); |
| 889 | + array( 'value' => $notice, 'id' => 'geotargeted' ) ) ) ); |
881 | 890 | $htmlOut .= Xml::closeElement( 'tr' ); |
882 | 891 | if ( $isGeotargeted ) { |
883 | 892 | $htmlOut .= Xml::openElement( 'tr', array( 'id'=>'geoMultiSelector' ) ); |
— | — | @@ -895,7 +904,7 @@ |
896 | 905 | $htmlOut .= Xml::tags( 'td', array(), |
897 | 906 | Xml::check( 'enabled', $isEnabled, |
898 | 907 | wfArrayMerge( $readonly, |
899 | | - array( 'value' => $row->not_name, 'id' => 'enabled' ) ) ) ); |
| 908 | + array( 'value' => $notice, 'id' => 'enabled' ) ) ) ); |
900 | 909 | $htmlOut .= Xml::closeElement( 'tr' ); |
901 | 910 | // Preferred |
902 | 911 | $htmlOut .= Xml::openElement( 'tr' ); |
— | — | @@ -904,7 +913,7 @@ |
905 | 914 | $htmlOut .= Xml::tags( 'td', array(), |
906 | 915 | Xml::check( 'preferred', $isPreferred, |
907 | 916 | wfArrayMerge( $readonly, |
908 | | - array( 'value' => $row->not_name, 'id' => 'preferred' ) ) ) ); |
| 917 | + array( 'value' => $notice, 'id' => 'preferred' ) ) ) ); |
909 | 918 | $htmlOut .= Xml::closeElement( 'tr' ); |
910 | 919 | // Locked |
911 | 920 | $htmlOut .= Xml::openElement( 'tr' ); |
— | — | @@ -913,7 +922,7 @@ |
914 | 923 | $htmlOut .= Xml::tags( 'td', array(), |
915 | 924 | Xml::check( 'locked', $isLocked, |
916 | 925 | wfArrayMerge( $readonly, |
917 | | - array( 'value' => $row->not_name, 'id' => 'locked' ) ) ) ); |
| 926 | + array( 'value' => $notice, 'id' => 'locked' ) ) ) ); |
918 | 927 | $htmlOut .= Xml::closeElement( 'tr' ); |
919 | 928 | if ( $this->editable ) { |
920 | 929 | // Locked |
— | — | @@ -922,7 +931,7 @@ |
923 | 932 | Xml::label( wfMsg( 'centralnotice-remove' ), 'remove' ) ); |
924 | 933 | $htmlOut .= Xml::tags( 'td', array(), |
925 | 934 | Xml::check( 'remove', false, |
926 | | - array( 'value' => $row->not_name, 'id' => 'remove' ) ) ); |
| 935 | + array( 'value' => $notice, 'id' => 'remove' ) ) ); |
927 | 936 | $htmlOut .= Xml::closeElement( 'tr' ); |
928 | 937 | } |
929 | 938 | $htmlOut .= Xml::closeElement( 'table' ); |
— | — | @@ -1073,90 +1082,6 @@ |
1074 | 1083 | return $htmlOut; |
1075 | 1084 | } |
1076 | 1085 | |
1077 | | - /** |
1078 | | - * Lookup function for active banners under a given language/project/location. This function is |
1079 | | - * called by SpecialBannerListLoader::getJsonList() in order to build the banner list JSON for |
1080 | | - * each project. |
1081 | | - * @return a 2D array of running banners with associated weights and settings |
1082 | | - */ |
1083 | | - static function selectNoticeTemplates( $project, $language, $location = null ) { |
1084 | | - global $wgCentralDBname; |
1085 | | - |
1086 | | - $campaigns = array(); |
1087 | | - $dbr = wfGetDB( DB_SLAVE, array(), $wgCentralDBname ); |
1088 | | - $encTimestamp = $dbr->addQuotes( $dbr->timestamp() ); |
1089 | | - |
1090 | | - // Pull non-geotargeted campaigns |
1091 | | - $campaignResults1 = $dbr->select( |
1092 | | - array( |
1093 | | - 'cn_notices', |
1094 | | - 'cn_notice_projects', |
1095 | | - 'cn_notice_languages' |
1096 | | - ), |
1097 | | - array( |
1098 | | - 'not_id' |
1099 | | - ), |
1100 | | - array( |
1101 | | - "not_start <= $encTimestamp", |
1102 | | - "not_end >= $encTimestamp", |
1103 | | - 'not_enabled = 1', // enabled |
1104 | | - 'not_geo = 0', // not geotargeted |
1105 | | - 'np_notice_id = cn_notices.not_id', |
1106 | | - 'np_project' => $project, |
1107 | | - 'nl_notice_id = cn_notices.not_id', |
1108 | | - 'nl_language' => $language |
1109 | | - ), |
1110 | | - __METHOD__ |
1111 | | - ); |
1112 | | - foreach ( $campaignResults1 as $row ) { |
1113 | | - $campaigns[] = $row->not_id; |
1114 | | - } |
1115 | | - if ( $location ) { |
1116 | | - |
1117 | | - // Normalize location parameter (should be an uppercase 2-letter country code) |
1118 | | - preg_match( '/[a-zA-Z][a-zA-Z]/', $location, $matches ); |
1119 | | - if ( $matches ) { |
1120 | | - $location = strtoupper( $matches[0] ); |
1121 | | - |
1122 | | - // Pull geotargeted campaigns |
1123 | | - $campaignResults2 = $dbr->select( |
1124 | | - array( |
1125 | | - 'cn_notices', |
1126 | | - 'cn_notice_projects', |
1127 | | - 'cn_notice_languages', |
1128 | | - 'cn_notice_countries' |
1129 | | - ), |
1130 | | - array( |
1131 | | - 'not_id' |
1132 | | - ), |
1133 | | - array( |
1134 | | - "not_start <= $encTimestamp", |
1135 | | - "not_end >= $encTimestamp", |
1136 | | - 'not_enabled = 1', // enabled |
1137 | | - 'not_geo = 1', // geotargeted |
1138 | | - 'nc_notice_id = cn_notices.not_id', |
1139 | | - 'nc_country' => $location, |
1140 | | - 'np_notice_id = cn_notices.not_id', |
1141 | | - 'np_project' => $project, |
1142 | | - 'nl_notice_id = cn_notices.not_id', |
1143 | | - 'nl_language' => $language |
1144 | | - ), |
1145 | | - __METHOD__ |
1146 | | - ); |
1147 | | - foreach ( $campaignResults2 as $row ) { |
1148 | | - $campaigns[] = $row->not_id; |
1149 | | - } |
1150 | | - } |
1151 | | - } |
1152 | | - |
1153 | | - $templates = array(); |
1154 | | - if ( $campaigns ) { |
1155 | | - // Pull all banners assigned to the campaigns |
1156 | | - $templates = CentralNoticeDB::selectBannersAssigned( $campaigns ); |
1157 | | - } |
1158 | | - return $templates; |
1159 | | - } |
1160 | | - |
1161 | 1086 | function addNotice( $noticeName, $enabled, $start, $projects, |
1162 | 1087 | $project_languages, $geotargeted, $geo_countries ) |
1163 | 1088 | { |
— | — | @@ -1170,6 +1095,7 @@ |
1171 | 1096 | $this->showError( 'centralnotice-no-language' ); |
1172 | 1097 | return; |
1173 | 1098 | } else { |
| 1099 | + if ( !$geo_countries ) $geo_countries = array(); |
1174 | 1100 | $dbw = wfGetDB( DB_MASTER ); |
1175 | 1101 | $dbw->begin(); |
1176 | 1102 | $start['hour'] = substr( $start['hour'], 0 , 2 ); |
— | — | @@ -1219,7 +1145,7 @@ |
1220 | 1146 | $res = $dbw->insert( 'cn_notice_languages', $insertArray, |
1221 | 1147 | __METHOD__, array( 'IGNORE' ) ); |
1222 | 1148 | |
1223 | | - if ( $geotargeted && $geo_countries ) { |
| 1149 | + if ( $geotargeted ) { |
1224 | 1150 | // Do multi-row insert for campaign countries |
1225 | 1151 | $insertArray = array(); |
1226 | 1152 | foreach( $geo_countries as $code ) { |
— | — | @@ -1230,6 +1156,22 @@ |
1231 | 1157 | } |
1232 | 1158 | |
1233 | 1159 | $dbw->commit(); |
| 1160 | + |
| 1161 | + // Log the creation of the campaign |
| 1162 | + $beginSettings = array(); |
| 1163 | + $endSettings = array( |
| 1164 | + 'projects' => implode( ", ", $projects ), |
| 1165 | + 'languages' => implode( ", ", $project_languages ), |
| 1166 | + 'countries' => implode( ", ", $geo_countries ), |
| 1167 | + 'start' => $dbw->timestamp( $startTs ), |
| 1168 | + 'end' => $dbw->timestamp( $endTs ), |
| 1169 | + 'enabled' => $enabled, |
| 1170 | + 'preferred' => 0, |
| 1171 | + 'locked' => 0, |
| 1172 | + 'geo' => $geotargeted |
| 1173 | + ); |
| 1174 | + $this->logCampaignChange( 'created', $not_id, $beginSettings, $endSettings ); |
| 1175 | + |
1234 | 1176 | return; |
1235 | 1177 | } |
1236 | 1178 | } |
— | — | @@ -1249,13 +1191,19 @@ |
1250 | 1192 | $this->showError( 'centralnotice-notice-is-locked' ); |
1251 | 1193 | return; |
1252 | 1194 | } else { |
| 1195 | + // Log the removal of the campaign |
| 1196 | + $noticeId = CentralNotice::getNoticeId( $noticeName ); |
| 1197 | + $this->logCampaignChange( 'removed', $noticeId ); |
| 1198 | + |
1253 | 1199 | $dbw = wfGetDB( DB_MASTER ); |
1254 | 1200 | $dbw->begin(); |
1255 | | - $noticeId = htmlspecialchars( $this->getNoticeId( $noticeName ) ); |
1256 | 1201 | $res = $dbw->delete( 'cn_assignments', array ( 'not_id' => $noticeId ) ); |
1257 | 1202 | $res = $dbw->delete( 'cn_notices', array ( 'not_name' => $noticeName ) ); |
1258 | 1203 | $res = $dbw->delete( 'cn_notice_languages', array ( 'nl_notice_id' => $noticeId ) ); |
| 1204 | + $res = $dbw->delete( 'cn_notice_projects', array ( 'np_notice_id' => $noticeId ) ); |
| 1205 | + $res = $dbw->delete( 'cn_notice_countries', array ( 'nc_notice_id' => $noticeId ) ); |
1259 | 1206 | $dbw->commit(); |
| 1207 | + |
1260 | 1208 | return; |
1261 | 1209 | } |
1262 | 1210 | } |
— | — | @@ -1264,7 +1212,7 @@ |
1265 | 1213 | $dbr = wfGetDB( DB_SLAVE ); |
1266 | 1214 | |
1267 | 1215 | $eNoticeName = htmlspecialchars ( $noticeName ); |
1268 | | - $noticeId = $this->getNoticeId( $eNoticeName ); |
| 1216 | + $noticeId = CentralNotice::getNoticeId( $eNoticeName ); |
1269 | 1217 | $templateId = $this->getTemplateId( $templateName ); |
1270 | 1218 | $res = $dbr->select( 'cn_assignments', 'asn_id', |
1271 | 1219 | array( |
— | — | @@ -1277,7 +1225,7 @@ |
1278 | 1226 | } else { |
1279 | 1227 | $dbw = wfGetDB( DB_MASTER ); |
1280 | 1228 | $dbw->begin(); |
1281 | | - $noticeId = $this->getNoticeId( $eNoticeName ); |
| 1229 | + $noticeId = CentralNotice::getNoticeId( $eNoticeName ); |
1282 | 1230 | $res = $dbw->insert( 'cn_assignments', |
1283 | 1231 | array( |
1284 | 1232 | 'tmp_id' => $templateId, |
— | — | @@ -1317,7 +1265,7 @@ |
1318 | 1266 | return null; |
1319 | 1267 | } |
1320 | 1268 | |
1321 | | - function getNoticeProjects( $noticeName ) { |
| 1269 | + static function getNoticeProjects( $noticeName ) { |
1322 | 1270 | $dbr = wfGetDB( DB_SLAVE ); |
1323 | 1271 | $eNoticeName = htmlspecialchars( $noticeName ); |
1324 | 1272 | $row = $dbr->selectRow( 'cn_notices', 'not_id', array( 'not_name' => $eNoticeName ) ); |
— | — | @@ -1332,7 +1280,7 @@ |
1333 | 1281 | return $projects; |
1334 | 1282 | } |
1335 | 1283 | |
1336 | | - function getNoticeLanguages( $noticeName ) { |
| 1284 | + static function getNoticeLanguages( $noticeName ) { |
1337 | 1285 | $dbr = wfGetDB( DB_SLAVE ); |
1338 | 1286 | $eNoticeName = htmlspecialchars( $noticeName ); |
1339 | 1287 | $row = $dbr->selectRow( 'cn_notices', 'not_id', array( 'not_name' => $eNoticeName ) ); |
— | — | @@ -1347,7 +1295,7 @@ |
1348 | 1296 | return $languages; |
1349 | 1297 | } |
1350 | 1298 | |
1351 | | - function getNoticeCountries( $noticeName ) { |
| 1299 | + static function getNoticeCountries( $noticeName ) { |
1352 | 1300 | $dbr = wfGetDB( DB_SLAVE ); |
1353 | 1301 | $eNoticeName = htmlspecialchars( $noticeName ); |
1354 | 1302 | $row = $dbr->selectRow( 'cn_notices', 'not_id', array( 'not_name' => $eNoticeName ) ); |
— | — | @@ -1362,14 +1310,6 @@ |
1363 | 1311 | return $countries; |
1364 | 1312 | } |
1365 | 1313 | |
1366 | | - function getNoticeProjectName( $noticeName ) { |
1367 | | - $dbr = wfGetDB( DB_SLAVE ); |
1368 | | - $eNoticeName = htmlspecialchars( $noticeName ); |
1369 | | - $res = $dbr->select( 'cn_notices', 'not_project', array( 'not_name' => $eNoticeName ) ); |
1370 | | - $row = $dbr->fetchObject( $res ); |
1371 | | - return $row->not_project; |
1372 | | - } |
1373 | | - |
1374 | 1314 | function getTemplateId( $templateName ) { |
1375 | 1315 | $dbr = wfGetDB( DB_SLAVE ); |
1376 | 1316 | $templateName = htmlspecialchars ( $templateName ); |
— | — | @@ -1381,7 +1321,7 @@ |
1382 | 1322 | function removeTemplateFor( $noticeName, $templateName ) { |
1383 | 1323 | $dbw = wfGetDB( DB_MASTER ); |
1384 | 1324 | $dbw->begin(); |
1385 | | - $noticeId = $this->getNoticeId( $noticeName ); |
| 1325 | + $noticeId = CentralNotice::getNoticeId( $noticeName ); |
1386 | 1326 | $templateId = $this->getTemplateId( $templateName ); |
1387 | 1327 | $dbw->delete( 'cn_assignments', array ( 'tmp_id' => $templateId, 'not_id' => $noticeId ) ); |
1388 | 1328 | $dbw->commit(); |
— | — | @@ -1415,70 +1355,30 @@ |
1416 | 1356 | array( 'not_name' => $noticeName ) |
1417 | 1357 | ); |
1418 | 1358 | } |
1419 | | - |
1420 | | - /** |
1421 | | - * Update the enabled/disabled state of a campaign |
1422 | | - */ |
1423 | | - private function updateEnabled( $noticeName, $isEnabled ) { |
1424 | | - if ( !$this->noticeExists( $noticeName ) ) { |
1425 | | - $this->showError( 'centralnotice-doesnt-exist' ); |
1426 | | - } else { |
1427 | | - $dbw = wfGetDB( DB_MASTER ); |
1428 | | - $res = $dbw->update( 'cn_notices', |
1429 | | - array( 'not_enabled' => $isEnabled ), |
1430 | | - array( 'not_name' => $noticeName ) |
1431 | | - ); |
1432 | | - } |
1433 | | - } |
1434 | 1359 | |
1435 | 1360 | /** |
1436 | | - * Update the preferred/not preferred state of a campaign |
| 1361 | + * Update a boolean setting on a campaign |
| 1362 | + * @param $noticeName string: Name of the campaign |
| 1363 | + * @param $settingName string: Name of a boolean setting (enabled, preferred, locked, or geo) |
| 1364 | + * @param $settingValue boolean: Value to use for the setting |
1437 | 1365 | */ |
1438 | | - function updatePreferred( $noticeName, $isPreferred ) { |
| 1366 | + private function setBooleanCampaignSetting( $noticeName, $settingName, $settingValue ) { |
1439 | 1367 | if ( !$this->noticeExists( $noticeName ) ) { |
1440 | | - $this->showError( 'centralnotice-doesnt-exist' ); |
| 1368 | + // Exit quietly since campaign may have been deleted at the same time. |
| 1369 | + return; |
1441 | 1370 | } else { |
| 1371 | + $settingName = strtolower( $settingName ); |
1442 | 1372 | $dbw = wfGetDB( DB_MASTER ); |
1443 | 1373 | $res = $dbw->update( 'cn_notices', |
1444 | | - array( 'not_preferred' => $isPreferred ), |
| 1374 | + array( 'not_'.$settingName => $settingValue ), |
1445 | 1375 | array( 'not_name' => $noticeName ) |
1446 | 1376 | ); |
1447 | 1377 | } |
1448 | 1378 | } |
1449 | 1379 | |
1450 | | - /** |
1451 | | - * Update the geotargeted/not geotargeted state of a campaign |
1452 | | - */ |
1453 | | - function updateGeotargeted( $noticeName, $isGeotargeted ) { |
1454 | | - if ( !$this->noticeExists( $noticeName ) ) { |
1455 | | - $this->showError( 'centralnotice-doesnt-exist' ); |
1456 | | - } else { |
1457 | | - $dbw = wfGetDB( DB_MASTER ); |
1458 | | - $res = $dbw->update( 'cn_notices', |
1459 | | - array( 'not_geo' => $isGeotargeted ), |
1460 | | - array( 'not_name' => $noticeName ) |
1461 | | - ); |
1462 | | - } |
1463 | | - } |
1464 | | - |
1465 | | - /** |
1466 | | - * Update the locked/unlocked state of a campaign |
1467 | | - */ |
1468 | | - function updateLock( $noticeName, $isLocked ) { |
1469 | | - if ( !$this->noticeExists( $noticeName ) ) { |
1470 | | - $this->showError( 'centralnotice-doesnt-exist' ); |
1471 | | - } else { |
1472 | | - $dbw = wfGetDB( DB_MASTER ); |
1473 | | - $res = $dbw->update( 'cn_notices', |
1474 | | - array( 'not_locked' => $isLocked ), |
1475 | | - array( 'not_name' => $noticeName ) |
1476 | | - ); |
1477 | | - } |
1478 | | - } |
1479 | | - |
1480 | 1380 | function updateWeight( $noticeName, $templateId, $weight ) { |
1481 | 1381 | $dbw = wfGetDB( DB_MASTER ); |
1482 | | - $noticeId = $this->getNoticeId( $noticeName ); |
| 1382 | + $noticeId = CentralNotice::getNoticeId( $noticeName ); |
1483 | 1383 | $dbw->update( 'cn_assignments', |
1484 | 1384 | array ( 'tmp_weight' => $weight ), |
1485 | 1385 | array( |
— | — | @@ -1623,7 +1523,7 @@ |
1624 | 1524 | $dbw->begin(); |
1625 | 1525 | |
1626 | 1526 | // Get the previously assigned projects |
1627 | | - $oldProjects = $this->getNoticeProjects( $notice ); |
| 1527 | + $oldProjects = CentralNotice::getNoticeProjects( $notice ); |
1628 | 1528 | |
1629 | 1529 | // Get the notice id |
1630 | 1530 | $row = $dbw->selectRow( 'cn_notices', 'not_id', array( 'not_name' => $notice ) ); |
— | — | @@ -1652,7 +1552,7 @@ |
1653 | 1553 | $dbw->begin(); |
1654 | 1554 | |
1655 | 1555 | // Get the previously assigned languages |
1656 | | - $oldLanguages = $this->getNoticeLanguages( $notice ); |
| 1556 | + $oldLanguages = CentralNotice::getNoticeLanguages( $notice ); |
1657 | 1557 | |
1658 | 1558 | // Get the notice id |
1659 | 1559 | $row = $dbw->selectRow( 'cn_notices', 'not_id', array( 'not_name' => $notice ) ); |
— | — | @@ -1680,7 +1580,7 @@ |
1681 | 1581 | $dbw = wfGetDB( DB_MASTER ); |
1682 | 1582 | |
1683 | 1583 | // Get the previously assigned languages |
1684 | | - $oldCountries = $this->getNoticeCountries( $notice ); |
| 1584 | + $oldCountries = CentralNotice::getNoticeCountries( $notice ); |
1685 | 1585 | |
1686 | 1586 | // Get the notice id |
1687 | 1587 | $row = $dbw->selectRow( 'cn_notices', 'not_id', array( 'not_name' => $notice ) ); |
— | — | @@ -1775,6 +1675,42 @@ |
1776 | 1676 | } |
1777 | 1677 | return $htmlOut; |
1778 | 1678 | } |
| 1679 | + |
| 1680 | + /** |
| 1681 | + * Log any changes related to a campaign |
| 1682 | + * @param $action string: 'created', 'modified', or 'removed' |
| 1683 | + * @param $campaignId integer: ID of campaign |
| 1684 | + * @param $beginSettings array of campaign settings before changes (optional) |
| 1685 | + * @param $endSettings array of campaign settings after changes (optional) |
| 1686 | + * @param $beginAssignments array of banner assignments before changes (optional) |
| 1687 | + * @param $endAssignments array of banner assignments after changes (optional) |
| 1688 | + */ |
| 1689 | + function logCampaignChange( $action, $campaignId, $beginSettings = array(), |
| 1690 | + $endSettings = array(), $beginAssignments = array(), $endAssignments = array() ) |
| 1691 | + { |
| 1692 | + global $wgUser; |
| 1693 | + |
| 1694 | + $dbw = wfGetDB( DB_MASTER ); |
| 1695 | + |
| 1696 | + $log = array( |
| 1697 | + 'notlog_timestamp' => $dbw->timestamp(), |
| 1698 | + 'notlog_user_id' => $wgUser->getId(), |
| 1699 | + 'notlog_action' => $action, |
| 1700 | + 'notlog_not_id' => $campaignId, |
| 1701 | + 'notlog_not_name' => CentralNotice::getNoticeName( $campaignId ) |
| 1702 | + ); |
| 1703 | + |
| 1704 | + foreach ( $beginSettings as $key => $value ) { |
| 1705 | + $log['notlog_begin_'.$key] = $value; |
| 1706 | + } |
| 1707 | + foreach ( $endSettings as $key => $value ) { |
| 1708 | + $log['notlog_end_'.$key] = $value; |
| 1709 | + } |
| 1710 | + |
| 1711 | + $res = $dbw->insert( 'cn_notice_log', $log ); |
| 1712 | + $log_id = $dbw->insertId(); |
| 1713 | + return $log_id; |
| 1714 | + } |
1779 | 1715 | } |
1780 | 1716 | |
1781 | 1717 | class CentralNoticePager extends TemplatePager { |
Property changes on: branches/wmf/1.17wmf1/extensions/CentralNotice/special/SpecialBannerLoader.php |
___________________________________________________________________ |
Deleted: svn:mergeinfo |
1782 | 1718 | Reverse-merged /trunk/phase3/extensions/CentralNotice/special/SpecialBannerLoader.php:r63545-63546,63549,63643,63764,63897-63901,64113,64509,65387,65391,65555,65590,65650,65816,77555,77558-77560,77563-77565,77573 |
1783 | 1719 | Reverse-merged /branches/wmf-deployment/extensions/CentralNotice/special/SpecialBannerLoader.php:r60970 |
1784 | 1720 | Reverse-merged /branches/wmf/1.16wmf4/extensions/CentralNotice/special/SpecialBannerLoader.php:r67177,69199,76243,77266 |
1785 | 1721 | Reverse-merged /trunk/extensions/CentralNotice/special/SpecialBannerLoader.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-91217 |
Index: branches/wmf/1.17wmf1/extensions/CentralNotice/special/SpecialCentralNoticeLogs.php |
— | — | @@ -54,7 +54,8 @@ |
55 | 55 | $htmlOut .= Xml::closeElement( 'form' ); |
56 | 56 | |
57 | 57 | // End log selection fieldset |
58 | | - $htmlOut .= Xml::closeElement( 'fieldset' ); |
| 58 | + // Uncomment when we have multiple logs |
| 59 | + //$htmlOut .= Xml::closeElement( 'fieldset' ); |
59 | 60 | |
60 | 61 | $wgOut->addHTML( $htmlOut ); |
61 | 62 | |
— | — | @@ -70,14 +71,21 @@ |
71 | 72 | function showLog( $logType ) { |
72 | 73 | global $wgOut; |
73 | 74 | |
| 75 | + $pager = new CentralNoticeLogPager( $this ); |
74 | 76 | $htmlOut = ''; |
75 | 77 | |
76 | 78 | // Begin log fieldset |
77 | | - $htmlOut .= Xml::openElement( 'fieldset', array( 'class' => 'prefsection' ) ); |
| 79 | + // Uncomment when we have multiple logs |
| 80 | + //$htmlOut .= Xml::openElement( 'fieldset', array( 'class' => 'prefsection' ) ); |
78 | 81 | |
79 | | - $htmlOut .= Xml::tags( 'p', null, |
80 | | - '<i>Coming soon...</i>' |
81 | | - ); |
| 82 | + // Show paginated list of log entries |
| 83 | + $htmlOut .= Xml::tags( 'div', |
| 84 | + array( 'class' => 'cn-pager' ), |
| 85 | + $pager->getNavigationBar() ); |
| 86 | + $htmlOut .= $pager->getBody(); |
| 87 | + $htmlOut .= Xml::tags( 'div', |
| 88 | + array( 'class' => 'cn-pager' ), |
| 89 | + $pager->getNavigationBar() ); |
82 | 90 | |
83 | 91 | // End log fieldset |
84 | 92 | $htmlOut .= Xml::closeElement( 'fieldset' ); |
— | — | @@ -86,3 +94,307 @@ |
87 | 95 | } |
88 | 96 | |
89 | 97 | } |
| 98 | + |
| 99 | +class CentralNoticeLogPager extends ReverseChronologicalPager { |
| 100 | + var $viewPage, $special; |
| 101 | + |
| 102 | + function __construct( $special ) { |
| 103 | + $this->special = $special; |
| 104 | + parent::__construct(); |
| 105 | + |
| 106 | + // Override paging defaults |
| 107 | + list( $this->mLimit, /* $offset */ ) = $this->mRequest->getLimitOffset( 20, '' ); |
| 108 | + $this->mLimitsShown = array( 20, 50, 100 ); |
| 109 | + |
| 110 | + $this->viewPage = SpecialPage::getTitleFor( 'CentralNotice' ); |
| 111 | + } |
| 112 | + |
| 113 | + /** |
| 114 | + * Sort the log list by timestamp |
| 115 | + */ |
| 116 | + function getIndexField() { |
| 117 | + return 'notlog_timestamp'; |
| 118 | + } |
| 119 | + |
| 120 | + /** |
| 121 | + * Pull log entries from the database |
| 122 | + */ |
| 123 | + function getQueryInfo() { |
| 124 | + return array( |
| 125 | + 'tables' => array( 'cn_notice_log' ), |
| 126 | + 'fields' => '*', |
| 127 | + ); |
| 128 | + } |
| 129 | + |
| 130 | + /** |
| 131 | + * Generate the content of each table row (1 row = 1 log entry) |
| 132 | + */ |
| 133 | + function formatRow( $row ) { |
| 134 | + global $wgLang, $wgExtensionAssetsPath; |
| 135 | + |
| 136 | + // Create a user object so we can pull the name, user page, etc. |
| 137 | + $loggedUser = User::newFromId( $row->notlog_user_id ); |
| 138 | + // Create the user page link |
| 139 | + $userLink = $this->getSkin()->makeLinkObj( $loggedUser->getUserPage(), |
| 140 | + $loggedUser->getName() ); |
| 141 | + $userTalkLink = $this->getSkin()->makeLinkObj( $loggedUser->getTalkPage(), |
| 142 | + wfMsg ( 'centralnotice-talk-link' ) ); |
| 143 | + |
| 144 | + // Create the campaign link |
| 145 | + $campaignLink = $this->getSkin()->makeLinkObj( $this->viewPage, |
| 146 | + htmlspecialchars( $row->notlog_not_name ), |
| 147 | + 'method=listNoticeDetail¬ice=' . urlencode( $row->notlog_not_name ) ); |
| 148 | + |
| 149 | + // Begin log entry primary row |
| 150 | + $htmlOut = Xml::openElement( 'tr' ); |
| 151 | + |
| 152 | + $htmlOut .= Xml::openElement( 'td', array( 'valign' => 'top' ) ); |
| 153 | + if ( $row->notlog_action !== 'removed' ) { |
| 154 | + $htmlOut .= '<a href="javascript:toggleDisplay(\''.$row->notlog_id.'\')">'. |
| 155 | + '<img src="'.$wgExtensionAssetsPath.'/CentralNotice/collapsed.png" id="cn-collapsed-'.$row->notlog_id.'" style="display:block;vertical-align:baseline;"/>'. |
| 156 | + '<img src="'.$wgExtensionAssetsPath.'/CentralNotice/uncollapsed.png" id="cn-uncollapsed-'.$row->notlog_id.'" style="display:none;vertical-align:baseline;"/>'. |
| 157 | + '</a>'; |
| 158 | + } |
| 159 | + $htmlOut .= Xml::closeElement( 'td' ); |
| 160 | + $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top', 'class' => 'primary' ), |
| 161 | + $wgLang->date( $row->notlog_timestamp ) . ' ' . $wgLang->time( $row->notlog_timestamp ) |
| 162 | + ); |
| 163 | + $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top', 'class' => 'primary' ), |
| 164 | + wfMsg ( 'centralnotice-user-links', $userLink, $userTalkLink ) |
| 165 | + ); |
| 166 | + $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top', 'class' => 'primary' ), |
| 167 | + $row->notlog_action |
| 168 | + ); |
| 169 | + $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top', 'class' => 'primary' ), |
| 170 | + $campaignLink |
| 171 | + ); |
| 172 | + $htmlOut .= Xml::tags( 'td', array(), |
| 173 | + ' ' |
| 174 | + ); |
| 175 | + |
| 176 | + // End log entry primary row |
| 177 | + $htmlOut .= Xml::closeElement( 'tr' ); |
| 178 | + |
| 179 | + if ( $row->notlog_action !== 'removed' ) { |
| 180 | + // Begin log entry secondary row |
| 181 | + $htmlOut .= Xml::openElement( 'tr', array( 'id' => 'cn-log-details-'.$row->notlog_id, 'style' => 'display:none;' ) ); |
| 182 | + |
| 183 | + $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top' ), |
| 184 | + ' ' // force a table cell in older browsers |
| 185 | + ); |
| 186 | + $htmlOut .= Xml::openElement( 'td', array( 'valign' => 'top', 'colspan' => '5' ) ); |
| 187 | + if ( $row->notlog_action == 'created' ) { |
| 188 | + $htmlOut .= $this->showInitialSettings( $row ); |
| 189 | + } else if ( $row->notlog_action == 'modified' ) { |
| 190 | + $htmlOut .= $this->showChanges( $row ); |
| 191 | + } |
| 192 | + $htmlOut .= Xml::closeElement( 'td' ); |
| 193 | + |
| 194 | + // End log entry primary row |
| 195 | + $htmlOut .= Xml::closeElement( 'tr' ); |
| 196 | + } |
| 197 | + |
| 198 | + return $htmlOut; |
| 199 | + } |
| 200 | + |
| 201 | + function showInitialSettings( $row ) { |
| 202 | + global $wgLang; |
| 203 | + $details = ''; |
| 204 | + $details .= wfMsg ( |
| 205 | + 'centralnotice-log-label', |
| 206 | + wfMsg ( 'centralnotice-start-date' ), |
| 207 | + $wgLang->date( $row->notlog_end_start ).' '.$wgLang->time( $row->notlog_end_start ) |
| 208 | + )."<br/>"; |
| 209 | + $details .= wfMsg ( |
| 210 | + 'centralnotice-log-label', |
| 211 | + wfMsg ( 'centralnotice-end-date' ), |
| 212 | + $wgLang->date( $row->notlog_end_end ).' '.$wgLang->time( $row->notlog_end_end ) |
| 213 | + )."<br/>"; |
| 214 | + $details .= wfMsg ( |
| 215 | + 'centralnotice-log-label', |
| 216 | + wfMsg ( 'centralnotice-projects' ), |
| 217 | + $row->notlog_end_projects |
| 218 | + )."<br/>"; |
| 219 | + $language_count = count( explode ( ', ', $row->notlog_end_languages ) ); |
| 220 | + $languageList = ''; |
| 221 | + if ( $language_count > 15 ) { |
| 222 | + $languageList = wfMsg ( 'centralnotice-multiple-languages', $language_count ); |
| 223 | + } elseif ( $language_count > 0 ) { |
| 224 | + $languageList = $row->notlog_end_languages; |
| 225 | + } |
| 226 | + $details .= wfMsg ( |
| 227 | + 'centralnotice-log-label', |
| 228 | + wfMsg ( 'centralnotice-languages' ), |
| 229 | + $languageList |
| 230 | + )."<br/>"; |
| 231 | + $details .= wfMsg ( |
| 232 | + 'centralnotice-log-label', |
| 233 | + wfMsg ( 'centralnotice-geo' ), |
| 234 | + ($row->notlog_end_geo ? 'on' : 'off') |
| 235 | + )."<br/>"; |
| 236 | + if ( $row->notlog_end_geo ) { |
| 237 | + $country_count = count( explode ( ', ', $row->notlog_end_countries ) ); |
| 238 | + $countryList = ''; |
| 239 | + if ( $country_count > 20 ) { |
| 240 | + $countryList = wfMsg ( 'centralnotice-multiple-countries', $country_count ); |
| 241 | + } elseif ( $country_count > 0 ) { |
| 242 | + $countryList = $row->notlog_end_countries; |
| 243 | + } |
| 244 | + $details .= wfMsg ( |
| 245 | + 'centralnotice-log-label', |
| 246 | + wfMsg ( 'centralnotice-countries' ), |
| 247 | + $countryList |
| 248 | + )."<br/>"; |
| 249 | + } |
| 250 | + return $details; |
| 251 | + } |
| 252 | + |
| 253 | + function showChanges( $row ) { |
| 254 | + global $wgLang; |
| 255 | + $details = ''; |
| 256 | + if ( $row->notlog_begin_start !== $row->notlog_end_start ) { |
| 257 | + $details .= wfMsg ( |
| 258 | + 'centralnotice-log-label', |
| 259 | + wfMsg ( 'centralnotice-start-date' ), |
| 260 | + wfMsg ( |
| 261 | + 'centralnotice-changed', |
| 262 | + $wgLang->date( $row->notlog_begin_start ).' '.$wgLang->time( $row->notlog_begin_start ), |
| 263 | + $wgLang->date( $row->notlog_end_start ).' '.$wgLang->time( $row->notlog_end_start ) |
| 264 | + ) |
| 265 | + )."<br/>"; |
| 266 | + } |
| 267 | + if ( $row->notlog_begin_end !== $row->notlog_end_end ) { |
| 268 | + $details .= wfMsg ( |
| 269 | + 'centralnotice-log-label', |
| 270 | + wfMsg ( 'centralnotice-end-date' ), |
| 271 | + wfMsg ( |
| 272 | + 'centralnotice-changed', |
| 273 | + $wgLang->date( $row->notlog_begin_end ).' '.$wgLang->time( $row->notlog_begin_end ), |
| 274 | + $wgLang->date( $row->notlog_end_end ).' '.$wgLang->time( $row->notlog_end_end ) |
| 275 | + ) |
| 276 | + )."<br/>"; |
| 277 | + } |
| 278 | + $details .= $this->testBooleanChange( 'enabled', $row ); |
| 279 | + $details .= $this->testBooleanChange( 'preferred', $row ); |
| 280 | + $details .= $this->testBooleanChange( 'locked', $row ); |
| 281 | + $details .= $this->testBooleanChange( 'geo', $row ); |
| 282 | + $details .= $this->testSetChange( 'projects', $row ); |
| 283 | + $details .= $this->testSetChange( 'languages', $row ); |
| 284 | + $details .= $this->testSetChange( 'countries', $row ); |
| 285 | + if ( $row->notlog_begin_banners !== $row->notlog_end_banners ) { |
| 286 | + // Show changes to banner weights and assignment |
| 287 | + $beginBannersObject = json_decode( $row->notlog_begin_banners ); |
| 288 | + $endBannersObject = json_decode( $row->notlog_end_banners ); |
| 289 | + $beginBanners = array(); |
| 290 | + $endBanners = array(); |
| 291 | + foreach( $beginBannersObject as $key => $weight ) { |
| 292 | + $beginBanners[$key] = $key.' ('.$weight.')'; |
| 293 | + } |
| 294 | + foreach( $endBannersObject as $key => $weight ) { |
| 295 | + $endBanners[$key] = $key.' ('.$weight.')'; |
| 296 | + } |
| 297 | + if ( $beginBanners ) { |
| 298 | + $before = implode( ', ', $beginBanners ); |
| 299 | + } else { |
| 300 | + $before = wfMsg ( 'centralnotice-no-assignments' ); |
| 301 | + } |
| 302 | + if ( $endBanners ) { |
| 303 | + $after = implode( ', ', $endBanners ); |
| 304 | + } else { |
| 305 | + $after = wfMsg ( 'centralnotice-no-assignments' ); |
| 306 | + } |
| 307 | + $details .= wfMsg ( |
| 308 | + 'centralnotice-log-label', |
| 309 | + wfMsg ( 'centralnotice-templates' ), |
| 310 | + wfMsg ( 'centralnotice-changed', $before, $after) |
| 311 | + )."<br/>"; |
| 312 | + } |
| 313 | + return $details; |
| 314 | + } |
| 315 | + |
| 316 | + private function testBooleanChange( $param, $row ) { |
| 317 | + $result = ''; |
| 318 | + $beginField = 'notlog_begin_'.$param; |
| 319 | + $endField = 'notlog_end_'.$param; |
| 320 | + if ( $row->$beginField !== $row->$endField ) { |
| 321 | + $result .= wfMsg ( |
| 322 | + 'centralnotice-log-label', |
| 323 | + wfMsg ( 'centralnotice-'.$param ), |
| 324 | + wfMsg ( |
| 325 | + 'centralnotice-changed', |
| 326 | + ( $row->$beginField ? wfMsg ( 'centralnotice-on' ) : wfMsg ( 'centralnotice-off' ) ), |
| 327 | + ( $row->$endField ? wfMsg ( 'centralnotice-on' ) : wfMsg ( 'centralnotice-off' ) ) |
| 328 | + ) |
| 329 | + )."<br/>"; |
| 330 | + } |
| 331 | + return $result; |
| 332 | + } |
| 333 | + |
| 334 | + private function testSetChange( $param, $row ) { |
| 335 | + $result = ''; |
| 336 | + $beginField = 'notlog_begin_'.$param; |
| 337 | + $endField = 'notlog_end_'.$param; |
| 338 | + if ( $row->$beginField !== $row->$endField ) { |
| 339 | + $beginSet = array(); |
| 340 | + $endSet = array(); |
| 341 | + if ( $row->$beginField ) { |
| 342 | + $beginSet = explode( ', ', $row->$beginField ); |
| 343 | + } |
| 344 | + if ( $row->$endField ) { |
| 345 | + $endSet = explode( ', ', $row->$endField ); |
| 346 | + } |
| 347 | + $added = array_diff( $endSet, $beginSet ); |
| 348 | + $removed = array_diff( $beginSet, $endSet ); |
| 349 | + $differences = ''; |
| 350 | + if ( $added ) { |
| 351 | + $differences .= wfMsg ( 'centralnotice-added', implode( ', ', $added ) ); |
| 352 | + if ( $removed ) $differences .= '; '; |
| 353 | + } |
| 354 | + if ( $removed ) { |
| 355 | + $differences .= wfMsg ( 'centralnotice-removed', implode( ', ', $removed ) ); |
| 356 | + } |
| 357 | + $result .= wfMsg ( |
| 358 | + 'centralnotice-log-label', |
| 359 | + wfMsg ( 'centralnotice-'.$param ), |
| 360 | + $differences |
| 361 | + )."<br/>"; |
| 362 | + } |
| 363 | + return $result; |
| 364 | + } |
| 365 | + |
| 366 | + /** |
| 367 | + * Specify table headers |
| 368 | + */ |
| 369 | + function getStartBody() { |
| 370 | + $htmlOut = ''; |
| 371 | + $htmlOut .= Xml::openElement( 'table', array( 'id' => 'cn-campaign-logs', 'cellpadding' => 3 ) ); |
| 372 | + $htmlOut .= Xml::openElement( 'tr' ); |
| 373 | + $htmlOut .= Xml::element( 'th', array( 'style' => 'width: 20px;' ) ); |
| 374 | + $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 130px;' ), |
| 375 | + wfMsg ( 'centralnotice-timestamp' ) |
| 376 | + ); |
| 377 | + $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 160px;' ), |
| 378 | + wfMsg ( 'centralnotice-user' ) |
| 379 | + ); |
| 380 | + $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 100px;' ), |
| 381 | + wfMsg ( 'centralnotice-action' ) |
| 382 | + ); |
| 383 | + $htmlOut .= Xml::element( 'th', array( 'align' => 'left', 'style' => 'width: 160px;' ), |
| 384 | + wfMsg ( 'centralnotice-notice' ) |
| 385 | + ); |
| 386 | + $htmlOut .= Xml::tags( 'td', array(), |
| 387 | + ' ' |
| 388 | + ); |
| 389 | + $htmlOut .= Xml::closeElement( 'tr' ); |
| 390 | + return $htmlOut; |
| 391 | + } |
| 392 | + |
| 393 | + /** |
| 394 | + * Close table |
| 395 | + */ |
| 396 | + function getEndBody() { |
| 397 | + $htmlOut = ''; |
| 398 | + $htmlOut .= Xml::closeElement( 'table' ); |
| 399 | + return $htmlOut; |
| 400 | + } |
| 401 | +} |
Index: branches/wmf/1.17wmf1/extensions/CentralNotice/centralnotice.css |
— | — | @@ -57,6 +57,21 @@ |
58 | 58 | margin-left:1.6em; |
59 | 59 | margin-right:1.6em; |
60 | 60 | } |
| 61 | +#preferences table#cn-campaign-logs { |
| 62 | + width: auto; |
| 63 | +} |
| 64 | +#preferences table#cn-campaign-logs td.primary { |
| 65 | + background-color: #F0F0F0; |
| 66 | +} |
| 67 | +#preferences .cn-new-value { |
| 68 | + color: #006400; |
| 69 | +} |
| 70 | +#preferences .cn-old-value { |
| 71 | + color: #8B0000; |
| 72 | +} |
| 73 | +#preferences .cn-log-label { |
| 74 | + font-weight: bold; |
| 75 | +} |
61 | 76 | |
62 | 77 | /* Vector-specific definitions */ |
63 | 78 | body.skin-vector #preferences fieldset.prefsection { |
Index: branches/wmf/1.17wmf1/extensions/CentralNotice/patches/patch-notice_logs.sql |
— | — | @@ -1,34 +0,0 @@ |
2 | | - |
3 | | -CREATE TABLE IF NOT EXISTS /*$wgDBprefix*/cn_notice_log ( |
4 | | - `notlog_id` int unsigned NOT NULL PRIMARY KEY auto_increment, |
5 | | - `notlog_timestamp` binary(14) NOT NULL, |
6 | | - `notlog_user_id` int unsigned NOT NULL, |
7 | | - `notlog_action` enum('created','modified','removed') NOT NULL DEFAULT 'modified', |
8 | | - `notlog_not_id` int unsigned NOT NULL, |
9 | | - `notlog_begin_name` varchar(255), |
10 | | - `notlog_end_name` varchar(255), |
11 | | - `notlog_begin_projects` varchar(255), |
12 | | - `notlog_end_projects` varchar(255), |
13 | | - `notlog_begin_languages` text, |
14 | | - `notlog_end_languages` text, |
15 | | - `notlog_begin_countries` text, |
16 | | - `notlog_end_countries` text, |
17 | | - `notlog_begin_start` char(14), |
18 | | - `notlog_end_start` char(14), |
19 | | - `notlog_begin_end` char(14), |
20 | | - `notlog_end_end` char(14), |
21 | | - `notlog_begin_enabled` tinyint(1), |
22 | | - `notlog_end_enabled` tinyint(1), |
23 | | - `notlog_begin_preferred` tinyint(1), |
24 | | - `notlog_end_preferred` tinyint(1), |
25 | | - `notlog_begin_locked` tinyint(1), |
26 | | - `notlog_end_locked` tinyint(1), |
27 | | - `notlog_begin_geo` tinyint(1), |
28 | | - `notlog_end_geo` tinyint(1), |
29 | | - `notlog_begin_assignments` text, |
30 | | - `notlog_end_assignments` text |
31 | | -) /*$wgDBTableOptions*/; |
32 | | -CREATE INDEX /*i*/notlog_timestamp ON /*_*/cn_notice_log (notlog_timestamp); |
33 | | -CREATE INDEX /*i*/notlog_user_id ON /*_*/cn_notice_log (notlog_user_id, notlog_timestamp); |
34 | | -CREATE INDEX /*i*/notlog_not_id ON /*_*/cn_notice_log (notlog_not_id, notlog_timestamp); |
\ No newline at end of file |
Index: branches/wmf/1.17wmf1/extensions/CentralNotice/patches/patch-notice_log.sql |
— | — | @@ -0,0 +1,33 @@ |
| 2 | +-- Update to allow for logging of changes to campaign settings. |
| 3 | + |
| 4 | +CREATE TABLE IF NOT EXISTS /*$wgDBprefix*/cn_notice_log ( |
| 5 | + `notlog_id` int unsigned NOT NULL PRIMARY KEY auto_increment, |
| 6 | + `notlog_timestamp` binary(14) NOT NULL, |
| 7 | + `notlog_user_id` int unsigned NOT NULL, |
| 8 | + `notlog_action` enum('created','modified','removed') NOT NULL DEFAULT 'modified', |
| 9 | + `notlog_not_id` int unsigned NOT NULL, |
| 10 | + `notlog_not_name` varchar(255) DEFAULT NULL, |
| 11 | + `notlog_begin_projects` varchar(255) DEFAULT NULL, |
| 12 | + `notlog_end_projects` varchar(255) DEFAULT NULL, |
| 13 | + `notlog_begin_languages` text, |
| 14 | + `notlog_end_languages` text, |
| 15 | + `notlog_begin_countries` text, |
| 16 | + `notlog_end_countries` text, |
| 17 | + `notlog_begin_start` char(14) DEFAULT NULL, |
| 18 | + `notlog_end_start` char(14) DEFAULT NULL, |
| 19 | + `notlog_begin_end` char(14) DEFAULT NULL, |
| 20 | + `notlog_end_end` char(14) DEFAULT NULL, |
| 21 | + `notlog_begin_enabled` tinyint(1) DEFAULT NULL, |
| 22 | + `notlog_end_enabled` tinyint(1) DEFAULT NULL, |
| 23 | + `notlog_begin_preferred` tinyint(1) DEFAULT NULL, |
| 24 | + `notlog_end_preferred` tinyint(1) DEFAULT NULL, |
| 25 | + `notlog_begin_locked` tinyint(1) DEFAULT NULL, |
| 26 | + `notlog_end_locked` tinyint(1) DEFAULT NULL, |
| 27 | + `notlog_begin_geo` tinyint(1) DEFAULT NULL, |
| 28 | + `notlog_end_geo` tinyint(1) DEFAULT NULL, |
| 29 | + `notlog_begin_banners` text, |
| 30 | + `notlog_end_banners` text |
| 31 | +) /*$wgDBTableOptions*/; |
| 32 | +CREATE INDEX /*i*/notlog_timestamp ON /*_*/cn_notice_log (notlog_timestamp); |
| 33 | +CREATE INDEX /*i*/notlog_user_id ON /*_*/cn_notice_log (notlog_user_id, notlog_timestamp); |
| 34 | +CREATE INDEX /*i*/notlog_not_id ON /*_*/cn_notice_log (notlog_not_id, notlog_timestamp); |
\ No newline at end of file |
Property changes on: branches/wmf/1.17wmf1/extensions/CentralNotice/patches/patch-notice_log.sql |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 35 | + native |
Property changes on: branches/wmf/1.17wmf1/extensions/CentralNotice/CentralNotice.sql |
___________________________________________________________________ |
Modified: svn:mergeinfo |
2 | 36 | Merged /trunk/extensions/CentralNotice/CentralNotice.sql:r91118-92408 |
Index: branches/wmf/1.17wmf1/extensions/CentralNotice/collapsed.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/wmf/1.17wmf1/extensions/CentralNotice/collapsed.png |
___________________________________________________________________ |
Added: svn:mime-type |
3 | 37 | + application/octet-stream |
Index: branches/wmf/1.17wmf1/extensions/CentralNotice/uncollapsed.png |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/wmf/1.17wmf1/extensions/CentralNotice/uncollapsed.png |
___________________________________________________________________ |
Added: svn:mime-type |
4 | 38 | + application/octet-stream |
Index: branches/wmf/1.17wmf1/extensions/CentralNotice/CentralNotice.i18n.php |
— | — | @@ -39,7 +39,9 @@ |
40 | 40 | 'centralnotice-show-notices' => 'Show campaigns', |
41 | 41 | 'centralnotice-list-templates' => 'List banners', |
42 | 42 | 'centralnotice-multiple-projects' => 'Multiple ($1)', |
43 | | - 'centralnotice-multiple-languages' => 'Multiple ($1)', 'centralnotice-all-projects' => 'All projects', |
| 43 | + 'centralnotice-multiple-languages' => 'Multiple ($1)', |
| 44 | + 'centralnotice-multiple-countries' => 'Multiple ($1)', |
| 45 | + 'centralnotice-all-projects' => 'All projects', |
44 | 46 | 'centralnotice-language-listing' => '$1 - $2', |
45 | 47 | 'centralnotice-translations' => 'Translations', |
46 | 48 | 'centralnotice-translate-to' => 'Translate to', |
— | — | @@ -131,7 +133,7 @@ |
132 | 134 | 'centralnotice-banner-fundraising' => 'This is a fundraising banner', |
133 | 135 | 'centralnotice-banner-fundraising-help' => 'Create an anchor tag in the banner body with id="cn_fundraising_link" and enter one or more landing pages below, for example, "JimmyAppeal01". The href of the link will be constructed automatically.', |
134 | 136 | 'centralnotice-banner-landing-pages' => 'Landing pages (comma-separated):', |
135 | | - 'centralnotice-geotargeted' => 'Geotargeted', |
| 137 | + 'centralnotice-geo' => 'Geotargeted', |
136 | 138 | 'centralnotice-countries' => 'Countries', |
137 | 139 | 'centralnotice-allocation' => 'Allocation', |
138 | 140 | 'centralnotice-view-allocation' => 'View banner allocation', |
— | — | @@ -146,6 +148,19 @@ |
147 | 149 | 'centralnotice-preferred' => 'Preferred', |
148 | 150 | 'centralnotice-logs' => 'Logs', |
149 | 151 | 'centralnotice-view-logs' => 'View logs', |
| 152 | + 'centralnotice-timestamp' => 'Timestamp', |
| 153 | + 'centralnotice-user' => 'User', |
| 154 | + 'centralnotice-action' => 'Action', |
| 155 | + 'centralnotice-changed' => 'Changed from <span class="cn-old-value">$1</span> to <span class="cn-new-value">$2</span>', |
| 156 | + 'centralnotice-on' => 'on', |
| 157 | + 'centralnotice-off' => 'off', |
| 158 | + 'centralnotice-added' => 'Added <span class="cn-new-value">$1</span>', |
| 159 | + 'centralnotice-removed' => 'Removed <span class="cn-old-value">$1</span>', |
| 160 | + 'centralnotice-banners-changed' => 'Banner assignments were changed', |
| 161 | + 'centralnotice-no-assignments' => 'no banners assigned', |
| 162 | + 'centralnotice-talk-link' => 'talk', |
| 163 | + 'centralnotice-user-links' => '$1 ($2)', |
| 164 | + 'centralnotice-log-label' => '<span class="cn-log-label">$1:</span> $2', |
150 | 165 | ); |
151 | 166 | |
152 | 167 | /** Message documentation (Message documentation) |
— | — | @@ -174,14 +189,22 @@ |
175 | 190 | 'centralnotice-summary' => 'Used in Special:CentralNotice', |
176 | 191 | 'centralnotice-end-date' => '{{Identical|End date}}', |
177 | 192 | 'centralnotice-enabled' => '{{Identical|Enabled}}', |
178 | | - 'centralnotice-modify' => '{{Identical|Submit}}', |
| 193 | + 'centralnotice-modify' => 'Submit button on: |
| 194 | +* "change translation language" dialog box on [[m:Special:NoticeTemplate]] |
| 195 | +* "view banner allocation" on [[m:Special:BannerAllocation]] |
| 196 | +* any others? |
| 197 | + |
| 198 | +{{Identical|Submit}}', |
179 | 199 | 'centralnotice-save-banner' => 'Label for the submit button which saves a CentralNotice banner.', |
180 | 200 | 'centralnotice-preview' => '{{Identical|Preview}}', |
181 | 201 | 'centralnotice-nopreview' => '{{Identical|Nopreview}}', |
182 | 202 | 'centralnotice-remove' => '{{Identical|Remove}}', |
183 | 203 | 'centralnotice-translate-heading' => 'Fieldset label. $1 is a name of a template.', |
| 204 | + 'centralnotice-manage' => 'Title of sub-page of [http://meta.wikimedia.org/wiki/Special:CentralNotice Manage Central Notice] special page.', |
184 | 205 | 'centralnotice-add' => '{{Identical|Add}}', |
185 | | - 'centralnotice-multiple-languages' => '$1 is the number of languages in which the notice is available. It is always greater than 3. This message in the column "languages" in the table.', |
| 206 | + 'centralnotice-multiple-languages' => '$1 is the number of languages in which the notice is available. It is always greater than 3. This message is in the column "languages" in the table.', |
| 207 | + 'centralnotice-multiple-countries' => '$1 is the number of countries in which the notice is available.', |
| 208 | + 'centralnotice-all-projects' => 'Data entry in the column "Projects" in the table on the [[m:Special:CentralNotice|Central Notice]] special page.', |
186 | 209 | 'centralnotice-language-listing' => 'A language listing for the language multi-select box. First parameter is the language code. Second parameter is the name of the language.', |
187 | 210 | 'centralnotice-translations' => '{{Identical|Translation}}', |
188 | 211 | 'centralnotice-translate' => '{{Identical|Translate}}', |
— | — | @@ -209,15 +232,27 @@ |
210 | 233 | 'centralnotice-insert' => '{{Identical|Insert}}', |
211 | 234 | 'centralnotice-hide-button' => 'See also {{msg|Centralnotice-expand-button}}.', |
212 | 235 | 'centralnotice-expand-button' => 'See also {{msg|Centralnotice-hide-button}}.', |
213 | | - 'centralnotice-geotargeted' => 'Used to label a checkbox which activates geotargeting', |
| 236 | + 'centralnotice-geo' => 'Used to label a checkbox which activates geotargeting', |
| 237 | + 'centralnotice-allocation' => 'Tab for sub-page [[m:BannerAllocation|banner allocation]] to central notice special page.', |
| 238 | + 'centralnotice-view-allocation' => 'Heading of dialog box on [[m:Special:BannerAllocation|banner allocation]] special page.', |
| 239 | + 'centralnotice-allocation-instructions' => 'Dialog box instructions on [[m:Special:BannerAllocation|banner allocation]] special page.', |
214 | 240 | 'centralnotice-languages' => '{{Identical|Language}}', |
215 | | - 'centralnotice-projects' => '{{Identical|Project}}', |
| 241 | + 'centralnotice-projects' => 'Column heading of a table in the [http://meta.wikimedia.org/wiki/Special:CentralNotice Manage Central Notice] special page |
| 242 | + |
| 243 | +{{Identical|Project}}', |
216 | 244 | 'centralnotice-country' => '{{Identical|Country}}', |
| 245 | + 'centralnotice-no-allocation' => 'Message for nil result to query on [[m:Special:BannerAllocation|banner allocation]] special page.', |
217 | 246 | 'centralnotice-allocation-description' => 'A description of the environment the allocation of which is being described. |
218 | 247 | * $1 is the language code for the site (e.g "en"). |
219 | 248 | * $2 is the project name for the site (e.g. "wikipedia"). |
220 | 249 | * $3 is the country code (e.g. "US").', |
221 | 250 | 'centralnotice-logs' => 'Label for tab which displays a log of changes', |
| 251 | + 'centralnotice-user' => '{{Identical|User}}', |
| 252 | + 'centralnotice-action' => '{{Identical|Action}}', |
| 253 | + 'centralnotice-no-assignments' => 'Appears in the middle of a sentence; should be all lower case.', |
| 254 | + 'centralnotice-talk-link' => 'Link for user talk page; should be lower case.', |
| 255 | + 'centralnotice-user-links' => '$1 is a link to the user page, $2 is a link to the user talk page.', |
| 256 | + 'centralnotice-log-label' => '$1 is a label for a setting, $2 is the value of the setting (or changes to the setting)', |
222 | 257 | ); |
223 | 258 | |
224 | 259 | /** Afrikaans (Afrikaans) |
— | — | @@ -415,6 +450,7 @@ |
416 | 451 | 'centralnotice' => 'مدير الإخطار المركزي', |
417 | 452 | 'noticetemplate' => 'إداري الإخطار المركزي', |
418 | 453 | 'bannerallocation' => 'أخطار الإداري المركزي', |
| 454 | + 'centralnoticelogs' => 'إداري الإخطار المركزي', |
419 | 455 | 'right-centralnotice-admin' => 'أدر الإخطارات المركزية', |
420 | 456 | 'action-centralnotice-admin' => 'التحكم بالإعلانات المركزية', |
421 | 457 | 'centralnotice-desc' => 'يضيف إعلانا مركزيا للموقع', |
— | — | @@ -532,7 +568,7 @@ |
533 | 569 | 'centralnotice-banner-fundraising' => 'هذا هو شعار جمع التبرعات.', |
534 | 570 | 'centralnotice-banner-fundraising-help' => 'إنشاء علامة ارتساء في نص الشعار مع معرف = "cn_fundraising_link"، وقم بإدخال واحد أو أكثر الصفحات المقصودة أدناه، على سبيل المثال، "JimmyAppeal01". سيتم تعبيد href الارتباط تلقائياً.', |
535 | 571 | 'centralnotice-banner-landing-pages' => 'الصفحات المقصودة (مفصولة بفواصل) :', |
536 | | - 'centralnotice-geotargeted' => 'الاستهداف الجغرافي', |
| 572 | + 'centralnotice-geo' => 'الاستهداف الجغرافي', |
537 | 573 | 'centralnotice-countries' => 'الدول', |
538 | 574 | 'centralnotice-allocation' => 'تخصيص', |
539 | 575 | 'centralnotice-view-allocation' => 'موقع عرض الشعار', |
— | — | @@ -546,6 +582,11 @@ |
547 | 583 | 'centralnotice-documentwrite-error' => 'لا يمكن إستخدام التعبير document.write() في داخل الشعار. |
548 | 584 | للحصول على مزيد من المعلومات راجع http://meta.wikimedia.org/wiki/Help:CentralNotice .', |
549 | 585 | 'centralnotice-preferred' => 'مفضل', |
| 586 | + 'centralnotice-logs' => 'سجلات', |
| 587 | + 'centralnotice-view-logs' => 'عرض السجلات', |
| 588 | + 'centralnotice-timestamp' => 'طابع زمني', |
| 589 | + 'centralnotice-user' => 'مستخدم', |
| 590 | + 'centralnotice-action' => 'فعل', |
550 | 591 | ); |
551 | 592 | |
552 | 593 | /** Aramaic (ܐܪܡܝܐ) |
— | — | @@ -904,7 +945,7 @@ |
905 | 946 | 'centralnotice-banner-type' => 'Баннер төрө:', |
906 | 947 | 'centralnotice-banner-hidable' => 'Статик/йәшерелеүсән', |
907 | 948 | 'centralnotice-banner-collapsible' => 'Төрөлөүсән', |
908 | | - 'centralnotice-geotargeted' => 'Геобәйләнеш', |
| 949 | + 'centralnotice-geo' => 'Геобәйләнеш', |
909 | 950 | 'centralnotice-countries' => 'Илдәр', |
910 | 951 | 'centralnotice-allocation' => 'Урынлашыу', |
911 | 952 | 'centralnotice-view-allocation' => 'Баннерҙарҙың урынлашыуын ҡарау', |
— | — | @@ -920,6 +961,15 @@ |
921 | 962 | 'centralnotice-preferred' => 'Өҫтөнлөк бирелгән', |
922 | 963 | ); |
923 | 964 | |
| 965 | +/** Bavarian (Boarisch) |
| 966 | + * @author Mucalexx |
| 967 | + */ |
| 968 | +$messages['bar'] = array( |
| 969 | + 'centralnotice-translate-to' => 'Ywersetzen auf', |
| 970 | + 'centralnotice-translate' => 'Ywersetzen', |
| 971 | + 'centralnotice-english' => 'Englisch', |
| 972 | +); |
| 973 | + |
924 | 974 | /** Southern Balochi (بلوچی مکرانی) |
925 | 975 | * @author Mostafadaneshvar |
926 | 976 | */ |
— | — | @@ -996,6 +1046,7 @@ |
997 | 1047 | 'centralnotice-list-templates' => 'Сьпіс паведамленьняў', |
998 | 1048 | 'centralnotice-multiple-projects' => 'некалькі ($1)', |
999 | 1049 | 'centralnotice-multiple-languages' => 'некалькі ($1)', |
| 1050 | + 'centralnotice-multiple-countries' => 'Некалькі ($1)', |
1000 | 1051 | 'centralnotice-all-projects' => 'Усе праекты', |
1001 | 1052 | 'centralnotice-translations' => 'Пераклады', |
1002 | 1053 | 'centralnotice-translate-to' => 'Пераклад на', |
— | — | @@ -1087,7 +1138,7 @@ |
1088 | 1139 | 'centralnotice-banner-fundraising' => 'Гэта банэр для збору ахвяраваньняў', |
1089 | 1140 | 'centralnotice-banner-fundraising-help' => 'Стварыце тэг спасылкі ў зьмесьце банэра з id="cn_fundraising_link" і пазначце адну ці некалькі мэтавых старонак, напрыклад, «JimmyAppeal01». Атрыбут href будзе створаны аўтаматычна.', |
1090 | 1141 | 'centralnotice-banner-landing-pages' => 'Мэтавыя старонкі (праз коску):', |
1091 | | - 'centralnotice-geotargeted' => 'Геаграфічная прывязка', |
| 1142 | + 'centralnotice-geo' => 'Геаграфічная прывязка', |
1092 | 1143 | 'centralnotice-countries' => 'Краіны', |
1093 | 1144 | 'centralnotice-allocation' => 'Прызначэньне', |
1094 | 1145 | 'centralnotice-view-allocation' => 'Паказаць разьмяшчэньне банэра', |
— | — | @@ -1103,6 +1154,10 @@ |
1104 | 1155 | 'centralnotice-preferred' => 'Пажадана', |
1105 | 1156 | 'centralnotice-logs' => 'Журналы падзеяў', |
1106 | 1157 | 'centralnotice-view-logs' => 'Паказаць журнал падзеяў', |
| 1158 | + 'centralnotice-timestamp' => 'Дата/час', |
| 1159 | + 'centralnotice-user' => 'Удзельнік', |
| 1160 | + 'centralnotice-action' => 'Дзеяньне', |
| 1161 | + 'centralnotice-changed' => 'Зьмяніць з <span class="cn-old-value">$1</span> на <span class="cn-new-value">$2</span>', |
1107 | 1162 | ); |
1108 | 1163 | |
1109 | 1164 | /** Bulgarian (Български) |
— | — | @@ -1298,7 +1353,7 @@ |
1299 | 1354 | 'centralnotice-banner-type' => 'ব্যানারের ধরন:', |
1300 | 1355 | 'centralnotice-banner-hidable' => 'স্ট্যাটিক/লুকানোযোগ্য', |
1301 | 1356 | 'centralnotice-banner-collapsible' => 'ভাঁজযোগ্য', |
1302 | | - 'centralnotice-geotargeted' => 'স্থানাংকলক্ষ্য', |
| 1357 | + 'centralnotice-geo' => 'স্থানাংকলক্ষ্য', |
1303 | 1358 | 'centralnotice-countries' => 'দেশ', |
1304 | 1359 | 'centralnotice-languages' => 'ভাষা', |
1305 | 1360 | 'centralnotice-projects' => 'প্রকল্প', |
— | — | @@ -1452,7 +1507,7 @@ |
1453 | 1508 | 'centralnotice-banner-fundraising' => "Ur giton dastum arc'hant eo hemañ", |
1454 | 1509 | 'centralnotice-banner-fundraising-help' => 'Krouiñ ur valizenn eoriañ e-korf ar giton gant id = "cn_fundraising_link" ha merkit ur bajenn dal pe meur a hini a-is, da skouer, "JimmyAppeal01". Savet e vo href al liamm ent emgefre.', |
1455 | 1510 | 'centralnotice-banner-landing-pages' => 'Pajennoù pal (dispartiet dre skejoù) :', |
1456 | | - 'centralnotice-geotargeted' => "Geolec'hiet", |
| 1511 | + 'centralnotice-geo' => "Geolec'hiet", |
1457 | 1512 | 'centralnotice-countries' => 'Broioù', |
1458 | 1513 | 'centralnotice-allocation' => 'Skorenn', |
1459 | 1514 | 'centralnotice-view-allocation' => 'Gwelout skorenn ar giton', |
— | — | @@ -1595,7 +1650,7 @@ |
1596 | 1651 | 'centralnotice-banner-fundraising' => 'Ovo je plakat za donacije', |
1597 | 1652 | 'centralnotice-banner-fundraising-help' => 'Pravi oznaku za uklapanje u tijelo banera sa id="cn_fundraising_link" i unosi jedan ili više ciljnih članaka ispod, naprimjer, "JimmyAppeal01". Oznaka href za link će biti automatski napravljen.', |
1598 | 1653 | 'centralnotice-banner-landing-pages' => 'Ciljne stranice (razdvojene zarezima):', |
1599 | | - 'centralnotice-geotargeted' => 'Geociljano', |
| 1654 | + 'centralnotice-geo' => 'Geociljano', |
1600 | 1655 | 'centralnotice-countries' => 'Države', |
1601 | 1656 | 'centralnotice-allocation' => 'Raspoređivanje', |
1602 | 1657 | 'centralnotice-view-allocation' => 'Pogledaj dodjelu obavještenja', |
— | — | @@ -1740,7 +1795,7 @@ |
1741 | 1796 | 'centralnotice-banner-type' => 'Tipus de pancarta:', |
1742 | 1797 | 'centralnotice-banner-hidable' => 'Estàtic/Amagable', |
1743 | 1798 | 'centralnotice-banner-collapsible' => 'Plegable', |
1744 | | - 'centralnotice-geotargeted' => 'Geolocalitzat', |
| 1799 | + 'centralnotice-geo' => 'Geolocalitzat', |
1745 | 1800 | 'centralnotice-countries' => 'Països', |
1746 | 1801 | 'centralnotice-allocation' => 'Assignació', |
1747 | 1802 | 'centralnotice-view-allocation' => 'Veure la disposició de la pancarta', |
— | — | @@ -1910,7 +1965,7 @@ |
1911 | 1966 | 'centralnotice-banner-fundraising' => 'Tohle je banner pro fundraising', |
1912 | 1967 | 'centralnotice-banner-fundraising-help' => 'V těle banneru vytvořte odkaz s id="cn_fundraising_link" a níže zadejte jednu nebo více cílových stránek, například „JimmyAppeal01“. U odkazu se href vyplní automaticky.', |
1913 | 1968 | 'centralnotice-banner-landing-pages' => 'Cílové stránky (oddělené čárkou):', |
1914 | | - 'centralnotice-geotargeted' => 'Zeměpisně cílené', |
| 1969 | + 'centralnotice-geo' => 'Zeměpisně cílené', |
1915 | 1970 | 'centralnotice-countries' => 'Země', |
1916 | 1971 | 'centralnotice-allocation' => 'Přidělení', |
1917 | 1972 | 'centralnotice-view-allocation' => 'Zobrazit přidělení bannerů', |
— | — | @@ -1933,7 +1988,7 @@ |
1934 | 1989 | * @author Xxglennxx |
1935 | 1990 | */ |
1936 | 1991 | $messages['cy'] = array( |
1937 | | - 'centralnotice' => "Gweinyddu'r hysbysiad canolog", |
| 1992 | + 'centralnotice' => 'Gweinyddu hysbysiadau canolog', |
1938 | 1993 | 'noticetemplate' => "Gweinyddu'r hysbysiad canolog", |
1939 | 1994 | 'bannerallocation' => "Gweinyddu'r hysbysiad canolog", |
1940 | 1995 | 'right-centralnotice-admin' => 'Gweinyddu hysbysiadau canolog', |
— | — | @@ -1945,7 +2000,7 @@ |
1946 | 2001 | 'centralnotice-notice-name' => "Enw'r hysbysiad", |
1947 | 2002 | 'centralnotice-end-date' => 'Dyddiad y daw i ben', |
1948 | 2003 | 'centralnotice-enabled' => 'Wedi ei alluogi', |
1949 | | - 'centralnotice-modify' => 'Gosoder', |
| 2004 | + 'centralnotice-modify' => 'Dangoser', |
1950 | 2005 | 'centralnotice-save-banner' => 'Cadwer y baner', |
1951 | 2006 | 'centralnotice-preview' => 'Rhagolwg', |
1952 | 2007 | 'centralnotice-add-new' => 'Ychwanegu hysbysiad canolog newydd', |
— | — | @@ -1959,6 +2014,9 @@ |
1960 | 2015 | 'centralnotice-add-template' => 'Ychwanegu nodyn', |
1961 | 2016 | 'centralnotice-show-notices' => 'Dangos yr hysbysiadau', |
1962 | 2017 | 'centralnotice-list-templates' => "Rhestru'r nodiadau", |
| 2018 | + 'centralnotice-multiple-projects' => 'Nifer ($1)', |
| 2019 | + 'centralnotice-multiple-languages' => 'Nifer ($1)', |
| 2020 | + 'centralnotice-all-projects' => 'Pob prosiect', |
1963 | 2021 | 'centralnotice-translations' => 'Cyfieithiadau', |
1964 | 2022 | 'centralnotice-translate-to' => "Cyfieithu i'r", |
1965 | 2023 | 'centralnotice-translate' => 'Cyfieithu', |
— | — | @@ -1998,6 +2056,7 @@ |
1999 | 2057 | 'centralnotice-end-time' => 'Amser y daw i ben (UTC)', |
2000 | 2058 | 'centralnotice-no-templates' => 'Ni chanfuwyd unrhyw faner. |
2001 | 2059 | Ychwanegwch rai!', |
| 2060 | + 'centralnotice-available-templates' => 'Y baneri sydd ar gael', |
2002 | 2061 | 'centralnotice-weights' => 'Pwysau', |
2003 | 2062 | 'centralnotice-notice-is-locked' => "Mae'r hysbysiad wedi ei gloi. |
2004 | 2063 | Ni chaiff ei dynnu i ffwrdd", |
— | — | @@ -2013,13 +2072,24 @@ |
2014 | 2073 | 'centralnotice-close-button' => 'Botwm cau', |
2015 | 2074 | 'centralnotice-translate-button' => 'Cyswllt i annog cyfieithu', |
2016 | 2075 | 'centralnotice-donate-button' => 'Botwm rhoi', |
| 2076 | + 'centralnotice-banner-display' => 'Dangos i:', |
2017 | 2077 | 'centralnotice-banner-anonymous' => 'Defnyddwyr anhysbys', |
| 2078 | + 'centralnotice-banner-logged-in' => 'Defnyddwyr sydd wedi mewngofnodi', |
| 2079 | + 'centralnotice-banner-fundraising' => 'Mae hwn yn faner codi arian', |
2018 | 2080 | 'centralnotice-countries' => 'Gwledydd', |
2019 | | - 'centralnotice-view-allocation' => 'Gweld dosbarthiad y faner', |
| 2081 | + 'centralnotice-allocation' => 'Dyraniad', |
| 2082 | + 'centralnotice-view-allocation' => 'Gweld dyraniad baneri', |
| 2083 | + 'centralnotice-allocation-instructions' => 'Dewiswch y cyfuniad o feysydd yr hoffech weld dyraniad y baneri arno:', |
2020 | 2084 | 'centralnotice-languages' => 'Ieithoedd', |
| 2085 | + 'centralnotice-projects' => 'Prosiectau', |
2021 | 2086 | 'centralnotice-country' => 'Gwlad', |
| 2087 | + 'centralnotice-no-allocation' => 'Dim baneri wedi eu dyrannu.', |
| 2088 | + 'centralnotice-allocation-description' => 'Dyraniad y baneri ar $1.$2 yn $3:', |
2022 | 2089 | 'centralnotice-percentage' => 'Canran', |
2023 | 2090 | 'centralnotice-preferred' => 'Gorau gennych', |
| 2091 | + 'centralnotice-logs' => 'Logiau', |
| 2092 | + 'centralnotice-view-logs' => 'Gweld y logiau', |
| 2093 | + 'centralnotice-user' => 'Defnyddiwr', |
2024 | 2094 | ); |
2025 | 2095 | |
2026 | 2096 | /** Danish (Dansk) |
— | — | @@ -2117,6 +2187,7 @@ |
2118 | 2188 | * @author Metalhead64 |
2119 | 2189 | * @author Purodha |
2120 | 2190 | * @author Raimond Spekking |
| 2191 | + * @author Robby |
2121 | 2192 | * @author The Evil IP address |
2122 | 2193 | * @author Umherirrender |
2123 | 2194 | */ |
— | — | @@ -2151,6 +2222,7 @@ |
2152 | 2223 | 'centralnotice-list-templates' => 'Vorlagen auflisten', |
2153 | 2224 | 'centralnotice-multiple-projects' => 'mehrere ($1)', |
2154 | 2225 | 'centralnotice-multiple-languages' => 'mehrere ($1)', |
| 2226 | + 'centralnotice-multiple-countries' => 'mehrere ($1)', |
2155 | 2227 | 'centralnotice-all-projects' => 'Alle Projekte', |
2156 | 2228 | 'centralnotice-translations' => 'Übersetzungen', |
2157 | 2229 | 'centralnotice-translate-to' => 'Übersetzen in', |
— | — | @@ -2242,7 +2314,7 @@ |
2243 | 2315 | 'centralnotice-banner-fundraising' => 'Dies ist ein Fundraisingbanner', |
2244 | 2316 | 'centralnotice-banner-fundraising-help' => 'Ein Ankerelement im Korpus des Banners mit id="cn_fundraising_link" erstellen sowie eine oder mehrere Zielseiten, wie bspw. "JimmysAufruf01". Das href-Attribut des Links wird automatisch erstellt.', |
2245 | 2317 | 'centralnotice-banner-landing-pages' => 'Zielseiten (durch Kommata getrennt):', |
2246 | | - 'centralnotice-geotargeted' => 'Geo-anvisiert', |
| 2318 | + 'centralnotice-geo' => 'Geo-anvisiert', |
2247 | 2319 | 'centralnotice-countries' => 'Staaten', |
2248 | 2320 | 'centralnotice-allocation' => 'Anordnung', |
2249 | 2321 | 'centralnotice-view-allocation' => 'Anordnung der Vorlagen ansehen', |
— | — | @@ -2258,6 +2330,17 @@ |
2259 | 2331 | 'centralnotice-preferred' => 'Bevorzugt', |
2260 | 2332 | 'centralnotice-logs' => 'Logbücher', |
2261 | 2333 | 'centralnotice-view-logs' => 'Logbücher ansehen', |
| 2334 | + 'centralnotice-timestamp' => 'Zeitstempel', |
| 2335 | + 'centralnotice-user' => 'Benutzer', |
| 2336 | + 'centralnotice-action' => 'Aktion', |
| 2337 | + 'centralnotice-changed' => 'Von <span class="cn-old-value">$1</span> zu <span class="cn-new-value">$2</span> geändert', |
| 2338 | + 'centralnotice-on' => 'an', |
| 2339 | + 'centralnotice-off' => 'aus', |
| 2340 | + 'centralnotice-added' => '<span class="cn-new-value">$1</span> hinzugefügt', |
| 2341 | + 'centralnotice-removed' => '<span class="cn-old-value">$1</span> entfernt', |
| 2342 | + 'centralnotice-banners-changed' => 'Bannerzuordnungen wurden geändert', |
| 2343 | + 'centralnotice-no-assignments' => 'keine Banner zugeordnet', |
| 2344 | + 'centralnotice-talk-link' => 'Diskussion', |
2262 | 2345 | ); |
2263 | 2346 | |
2264 | 2347 | /** German (formal address) (Deutsch (Sie-Form)) |
— | — | @@ -2478,7 +2561,7 @@ |
2479 | 2562 | 'centralnotice-banner-type' => 'Chórgojowy typ:', |
2480 | 2563 | 'centralnotice-banner-hidable' => 'Statiski/Chowajobny', |
2481 | 2564 | 'centralnotice-banner-collapsible' => 'Fałdujobny', |
2482 | | - 'centralnotice-geotargeted' => 'Geolokalizěrowany', |
| 2565 | + 'centralnotice-geo' => 'Geolokalizěrowany', |
2483 | 2566 | 'centralnotice-countries' => 'Kraje', |
2484 | 2567 | 'centralnotice-allocation' => 'Zrědowanje', |
2485 | 2568 | 'centralnotice-view-allocation' => 'Zrědowanje banarja se woglědaś', |
— | — | @@ -2629,7 +2712,7 @@ |
2630 | 2713 | 'centralnotice-banner-type' => 'Τύπος banner:', |
2631 | 2714 | 'centralnotice-banner-hidable' => 'Στατικό / Αποκρύψιμο', |
2632 | 2715 | 'centralnotice-banner-collapsible' => 'Πτυσσόμενο', |
2633 | | - 'centralnotice-geotargeted' => 'Γεωγραφικά στοχοποιημένο', |
| 2716 | + 'centralnotice-geo' => 'Γεωγραφικά στοχοποιημένο', |
2634 | 2717 | 'centralnotice-countries' => 'Χώρες', |
2635 | 2718 | 'centralnotice-allocation' => 'Κατανομή', |
2636 | 2719 | 'centralnotice-view-allocation' => 'Δείτε κατανομή banner', |
— | — | @@ -2768,7 +2851,7 @@ |
2769 | 2852 | 'centralnotice-banner-type' => 'Rubanda tipo:', |
2770 | 2853 | 'centralnotice-banner-hidable' => 'Statika/Kaŝebla', |
2771 | 2854 | 'centralnotice-banner-collapsible' => 'Maletendebla', |
2772 | | - 'centralnotice-geotargeted' => 'Ŝalti geografian lokigadon', |
| 2855 | + 'centralnotice-geo' => 'Ŝalti geografian lokigadon', |
2773 | 2856 | 'centralnotice-countries' => 'Landoj', |
2774 | 2857 | 'centralnotice-allocation' => 'Asigno', |
2775 | 2858 | 'centralnotice-view-allocation' => 'Vidi asignon de reklamrubando', |
— | — | @@ -2792,6 +2875,7 @@ |
2793 | 2876 | * @author Imre |
2794 | 2877 | * @author Locos epraix |
2795 | 2878 | * @author McDutchie |
| 2879 | + * @author Mor |
2796 | 2880 | * @author Muro de Aguas |
2797 | 2881 | * @author Peter17 |
2798 | 2882 | * @author Remember the dot |
— | — | @@ -2850,7 +2934,7 @@ |
2851 | 2935 | No se ha añadido', |
2852 | 2936 | 'centralnotice-notice-doesnt-exist' => 'La campaña no existe.', |
2853 | 2937 | 'centralnotice-remove-notice-doesnt-exist' => 'La campaña no existe. |
2854 | | -Nada que remover.', |
| 2938 | +Nada que eliminar.', |
2855 | 2939 | 'centralnotice-banner-doesnt-exist' => 'La pancarta no existe.', |
2856 | 2940 | 'centralnotice-template-still-bound' => 'La plantilla todavía está enlazada a un aviso. |
2857 | 2941 | No se borrará.', |
— | — | @@ -2917,7 +3001,7 @@ |
2918 | 3002 | 'centralnotice-banner-hidable' => 'Estático/Ocultable', |
2919 | 3003 | 'centralnotice-banner-collapsible' => 'Colapsable', |
2920 | 3004 | 'centralnotice-banner-fundraising' => 'Esto es un anuncio de la campaña de recaudación de fondos', |
2921 | | - 'centralnotice-geotargeted' => 'Geosegmentado', |
| 3005 | + 'centralnotice-geo' => 'Geosegmentado', |
2922 | 3006 | 'centralnotice-countries' => 'Países', |
2923 | 3007 | 'centralnotice-allocation' => 'Asignación', |
2924 | 3008 | 'centralnotice-view-allocation' => 'Asignación de visualización de pancarta', |
— | — | @@ -3039,7 +3123,7 @@ |
3040 | 3124 | 'centralnotice-banner-logged-in' => 'Sisseloginud kasutajatele', |
3041 | 3125 | 'centralnotice-banner-type' => 'Malli tüüp:', |
3042 | 3126 | 'centralnotice-banner-collapsible' => 'Kokkulükatav', |
3043 | | - 'centralnotice-geotargeted' => 'Kohamääranguga', |
| 3127 | + 'centralnotice-geo' => 'Kohamääranguga', |
3044 | 3128 | 'centralnotice-countries' => 'Riigid', |
3045 | 3129 | 'centralnotice-allocation' => 'Ülesseadmine', |
3046 | 3130 | 'centralnotice-view-allocation' => 'Mallide ülesseade vaatamine', |
— | — | @@ -3242,7 +3326,7 @@ |
3243 | 3327 | 'centralnotice-banner-type' => 'نوع پرچم:', |
3244 | 3328 | 'centralnotice-banner-hidable' => 'ایستا/نهفتنی', |
3245 | 3329 | 'centralnotice-banner-collapsible' => 'متلاشیپذیر', |
3246 | | - 'centralnotice-geotargeted' => 'دارای تخصیص جغرفیایی', |
| 3330 | + 'centralnotice-geo' => 'دارای تخصیص جغرفیایی', |
3247 | 3331 | 'centralnotice-countries' => 'کشورها', |
3248 | 3332 | 'centralnotice-allocation' => 'تخصیص', |
3249 | 3333 | 'centralnotice-view-allocation' => 'نمایش تخصیص آگهی', |
— | — | @@ -3384,7 +3468,7 @@ |
3385 | 3469 | 'centralnotice-banner-type' => 'Bannerityyppi', |
3386 | 3470 | 'centralnotice-banner-hidable' => 'Pysyvä/Piilotettava', |
3387 | 3471 | 'centralnotice-banner-collapsible' => 'Piilotettava', |
3388 | | - 'centralnotice-geotargeted' => 'Maantieteellisesti suunnattu', |
| 3472 | + 'centralnotice-geo' => 'Maantieteellisesti suunnattu', |
3389 | 3473 | 'centralnotice-countries' => 'Maat', |
3390 | 3474 | 'centralnotice-allocation' => 'Jakaminen', |
3391 | 3475 | 'centralnotice-view-allocation' => 'Näytä bannerin jakaminen', |
— | — | @@ -3535,7 +3619,7 @@ |
3536 | 3620 | 'centralnotice-banner-fundraising' => "Il s'agit d'une bannière de levée de fonds", |
3537 | 3621 | 'centralnotice-banner-fundraising-help' => 'Créer une balise d\'ancrage dans le corps de la bannière avec id = "cn_fundraising_link" et entrez un ou plusieurs pages de destination ci-dessous, par exemple, "JimmyAppeal01". Le href du lien sera construit automatiquement.', |
3538 | 3622 | 'centralnotice-banner-landing-pages' => 'Pages de destination (séparées par des virgules):', |
3539 | | - 'centralnotice-geotargeted' => 'Géolocalisé', |
| 3623 | + 'centralnotice-geo' => 'Géolocalisé', |
3540 | 3624 | 'centralnotice-countries' => 'Pays', |
3541 | 3625 | 'centralnotice-allocation' => 'Allocation', |
3542 | 3626 | 'centralnotice-view-allocation' => 'Voir la disposition de bannière', |
— | — | @@ -3674,7 +3758,7 @@ |
3675 | 3759 | 'centralnotice-banner-type' => 'Tipo de baniére :', |
3676 | 3760 | 'centralnotice-banner-hidable' => 'Statica / cachâbla', |
3677 | 3761 | 'centralnotice-banner-collapsible' => 'Rèductibla', |
3678 | | - 'centralnotice-geotargeted' => 'G·eolocalisâ', |
| 3762 | + 'centralnotice-geo' => 'G·eolocalisâ', |
3679 | 3763 | 'centralnotice-countries' => 'Payis', |
3680 | 3764 | 'centralnotice-allocation' => 'Alocacion', |
3681 | 3765 | 'centralnotice-view-allocation' => 'Vêre l’alocacion de baniére', |
— | — | @@ -3686,6 +3770,8 @@ |
3687 | 3771 | 'centralnotice-allocation-description' => 'Alocacion de baniére por $1.$2 en $3 :', |
3688 | 3772 | 'centralnotice-percentage' => 'Porcentâjo', |
3689 | 3773 | 'centralnotice-preferred' => 'Prèferâ', |
| 3774 | + 'centralnotice-logs' => 'Jornals', |
| 3775 | + 'centralnotice-view-logs' => 'Vêre los jornals', |
3690 | 3776 | ); |
3691 | 3777 | |
3692 | 3778 | /** Irish (Gaeilge) |
— | — | @@ -3820,7 +3906,7 @@ |
3821 | 3907 | 'centralnotice-banner-fundraising' => 'Este é un cartel da recadación de fondos', |
3822 | 3908 | 'centralnotice-banner-fundraising-help' => 'Cree unha etiqueta de largo no corpo do cartel con id="cn_fundraising_link" e insira a continuación unha ou máis páxina de destino; por exemplo, "JimmyAppeal01". O parámetro href da ligazón construirase automaticamente.', |
3823 | 3909 | 'centralnotice-banner-landing-pages' => 'Páxinas de destino (separadas por comas):', |
3824 | | - 'centralnotice-geotargeted' => 'Localizado xeograficamente', |
| 3910 | + 'centralnotice-geo' => 'Localizado xeograficamente', |
3825 | 3911 | 'centralnotice-countries' => 'Países', |
3826 | 3912 | 'centralnotice-allocation' => 'Asignación', |
3827 | 3913 | 'centralnotice-view-allocation' => 'Ollar a asignación do modelo', |
— | — | @@ -3983,7 +4069,7 @@ |
3984 | 4070 | 'centralnotice-banner-type' => 'Bannertyp:', |
3985 | 4071 | 'centralnotice-banner-hidable' => 'Statisch/Uusbländbar', |
3986 | 4072 | 'centralnotice-banner-collapsible' => 'Yyklappbar', |
3987 | | - 'centralnotice-geotargeted' => 'Geo-aavisiert', |
| 4073 | + 'centralnotice-geo' => 'Geo-aavisiert', |
3988 | 4074 | 'centralnotice-countries' => 'Länder', |
3989 | 4075 | 'centralnotice-allocation' => 'Zuewysig', |
3990 | 4076 | 'centralnotice-view-allocation' => 'Aaornig vu dr Banner aaluege', |
— | — | @@ -4036,6 +4122,7 @@ |
4037 | 4123 | 'centralnotice-list-templates' => 'רשימת תבניות', |
4038 | 4124 | 'centralnotice-multiple-projects' => 'מרובים ($1)', |
4039 | 4125 | 'centralnotice-multiple-languages' => 'מרובות ($1)', |
| 4126 | + 'centralnotice-multiple-countries' => 'מרובות ($1)', |
4040 | 4127 | 'centralnotice-all-projects' => 'כל המיזמים', |
4041 | 4128 | 'centralnotice-translations' => 'תרגומים', |
4042 | 4129 | 'centralnotice-translate-to' => 'תרגום ל', |
— | — | @@ -4127,7 +4214,7 @@ |
4128 | 4215 | 'centralnotice-banner-fundraising' => 'זוהי כרזת התרמה', |
4129 | 4216 | 'centralnotice-banner-fundraising-help' => 'נא ליצור תג עוגן בגוף הכּרזה עם id="cn_fundraising_link" ולהזין דף נחיתה אחד או יותר בהמשך, למשל "JimmyAppeal01". ערך ה־href של הקישור ייבנה באופן אוטומטי.', |
4130 | 4217 | 'centralnotice-banner-landing-pages' => 'דפי נחיתה (מופרדים בפסיקים):', |
4131 | | - 'centralnotice-geotargeted' => 'ממוקד גאוגרפית', |
| 4218 | + 'centralnotice-geo' => 'ממוקד גאוגרפית', |
4132 | 4219 | 'centralnotice-countries' => 'מדינות', |
4133 | 4220 | 'centralnotice-allocation' => 'הקצאה', |
4134 | 4221 | 'centralnotice-view-allocation' => 'צפייה בהקצאת הבאנר', |
— | — | @@ -4143,6 +4230,17 @@ |
4144 | 4231 | 'centralnotice-preferred' => 'מועדפת', |
4145 | 4232 | 'centralnotice-logs' => 'יומנים', |
4146 | 4233 | 'centralnotice-view-logs' => 'הצגת יומנים', |
| 4234 | + 'centralnotice-timestamp' => 'חותם זמן', |
| 4235 | + 'centralnotice-user' => 'משתמש', |
| 4236 | + 'centralnotice-action' => 'פעולה', |
| 4237 | + 'centralnotice-changed' => 'שונה מהערך <span class="cn-old-value">$1</span> לערך <span class="cn-new-value">$2</span>', |
| 4238 | + 'centralnotice-on' => 'פעיל', |
| 4239 | + 'centralnotice-off' => 'כבוי', |
| 4240 | + 'centralnotice-added' => 'נוסף: <span class="cn-new-value">$1</span>', |
| 4241 | + 'centralnotice-removed' => 'הוסר: <span class="cn-old-value">$1</span>', |
| 4242 | + 'centralnotice-banners-changed' => 'הקצאות של כרזות שונו', |
| 4243 | + 'centralnotice-no-assignments' => 'לא הוקצו כרזות', |
| 4244 | + 'centralnotice-talk-link' => 'שיחה', |
4147 | 4245 | ); |
4148 | 4246 | |
4149 | 4247 | /** Hindi (हिन्दी) |
— | — | @@ -4284,7 +4382,7 @@ |
4285 | 4383 | 'centralnotice-banner-type' => 'Tip obavijesti:', |
4286 | 4384 | 'centralnotice-banner-hidable' => 'Statični/Dinamični', |
4287 | 4385 | 'centralnotice-banner-collapsible' => 'Moguće sakriti', |
4288 | | - 'centralnotice-geotargeted' => 'Geociljano', |
| 4386 | + 'centralnotice-geo' => 'Geociljano', |
4289 | 4387 | 'centralnotice-countries' => 'Države', |
4290 | 4388 | 'centralnotice-allocation' => 'Dodjela', |
4291 | 4389 | 'centralnotice-view-allocation' => 'Prikaži raspodjelu obavijesti', |
— | — | @@ -4421,7 +4519,7 @@ |
4422 | 4520 | 'centralnotice-banner-type' => 'Chorhojowy typ:', |
4423 | 4521 | 'centralnotice-banner-hidable' => 'Statiski/Chowajomny', |
4424 | 4522 | 'centralnotice-banner-collapsible' => 'Fałdujomny', |
4425 | | - 'centralnotice-geotargeted' => 'Geolokalizowany', |
| 4523 | + 'centralnotice-geo' => 'Geolokalizowany', |
4426 | 4524 | 'centralnotice-countries' => 'Kraje', |
4427 | 4525 | 'centralnotice-allocation' => 'Přidźělenje', |
4428 | 4526 | 'centralnotice-view-allocation' => 'Přidźělenje chorhoje sej wobhladać', |
— | — | @@ -4560,7 +4658,7 @@ |
4561 | 4659 | 'centralnotice-banner-type' => 'Hirdetés típusa:', |
4562 | 4660 | 'centralnotice-banner-hidable' => 'Statikus/elrejthető', |
4563 | 4661 | 'centralnotice-banner-collapsible' => 'Becsukható', |
4564 | | - 'centralnotice-geotargeted' => 'Célzás földrajzi hely szerint', |
| 4662 | + 'centralnotice-geo' => 'Célzás földrajzi hely szerint', |
4565 | 4663 | 'centralnotice-countries' => 'Országok', |
4566 | 4664 | 'centralnotice-allocation' => 'Kiosztás', |
4567 | 4665 | 'centralnotice-view-allocation' => 'Hirdetéskiosztás megtekintése', |
— | — | @@ -4610,6 +4708,7 @@ |
4611 | 4709 | 'centralnotice-list-templates' => 'Listar bandieras', |
4612 | 4710 | 'centralnotice-multiple-projects' => 'multiple ($1)', |
4613 | 4711 | 'centralnotice-multiple-languages' => 'multiple ($1)', |
| 4712 | + 'centralnotice-multiple-countries' => 'Multiple ($1)', |
4614 | 4713 | 'centralnotice-all-projects' => 'Tote le projectos', |
4615 | 4714 | 'centralnotice-translations' => 'Traductiones', |
4616 | 4715 | 'centralnotice-translate-to' => 'Traducer in', |
— | — | @@ -4701,7 +4800,7 @@ |
4702 | 4801 | 'centralnotice-banner-fundraising' => 'Isto es un bandiera de collecta de fundos', |
4703 | 4802 | 'centralnotice-banner-fundraising-help' => 'Crea un etiquetta de ancora in le corpore del bandiera con id="cn_fundraising_link" e entra un o plus paginas de arrivata hic infra, per exemplo "AppelloJimmy01". Le "href" del ligamine essera construite automaticamente.', |
4704 | 4803 | 'centralnotice-banner-landing-pages' => 'Paginas de arrivata (separate per commas):', |
4705 | | - 'centralnotice-geotargeted' => 'Localisation geographic', |
| 4804 | + 'centralnotice-geo' => 'Localisation geographic', |
4706 | 4805 | 'centralnotice-countries' => 'Paises', |
4707 | 4806 | 'centralnotice-allocation' => 'Allocation', |
4708 | 4807 | 'centralnotice-view-allocation' => 'Vider allocation de bandieras', |
— | — | @@ -4717,6 +4816,17 @@ |
4718 | 4817 | 'centralnotice-preferred' => 'Preferite', |
4719 | 4818 | 'centralnotice-logs' => 'Registros', |
4720 | 4819 | 'centralnotice-view-logs' => 'Vider registros', |
| 4820 | + 'centralnotice-timestamp' => 'Data e hora', |
| 4821 | + 'centralnotice-user' => 'Usator', |
| 4822 | + 'centralnotice-action' => 'Action', |
| 4823 | + 'centralnotice-changed' => 'Cambiate de <span class="cn-old-value">$1</span> a <span class="cn-new-value">$2</span>', |
| 4824 | + 'centralnotice-on' => 'active', |
| 4825 | + 'centralnotice-off' => 'inactive', |
| 4826 | + 'centralnotice-added' => '<span class="cn-new-value">$1</span> addite', |
| 4827 | + 'centralnotice-removed' => '<span class="cn-old-value">$1</span> removite', |
| 4828 | + 'centralnotice-banners-changed' => 'Assignationes de bandieras ha essite cambiate', |
| 4829 | + 'centralnotice-no-assignments' => 'nulle bandieras assignate', |
| 4830 | + 'centralnotice-talk-link' => 'discussion', |
4721 | 4831 | ); |
4722 | 4832 | |
4723 | 4833 | /** Indonesian (Bahasa Indonesia) |
— | — | @@ -4845,7 +4955,7 @@ |
4846 | 4956 | 'centralnotice-banner-type' => 'Jenis panji:', |
4847 | 4957 | 'centralnotice-banner-hidable' => 'Statis/Dapat disembunyikan', |
4848 | 4958 | 'centralnotice-banner-collapsible' => 'Dapat dibuka', |
4849 | | - 'centralnotice-geotargeted' => 'Ditargetgeokan', |
| 4959 | + 'centralnotice-geo' => 'Ditargetgeokan', |
4850 | 4960 | 'centralnotice-countries' => 'Negara', |
4851 | 4961 | 'centralnotice-allocation' => 'Alokasi', |
4852 | 4962 | 'centralnotice-view-allocation' => 'Lihat alokasi pengumuman', |
— | — | @@ -4883,7 +4993,7 @@ |
4884 | 4994 | 'centralnotice-project-name' => 'Áhà orürü', |
4885 | 4995 | 'centralnotice-start-date' => 'Bìdó ubochi', |
4886 | 4996 | 'centralnotice-message' => 'Ozi', |
4887 | | - 'centralnotice-clone-name' => 'Áhà', |
| 4997 | + 'centralnotice-clone-name' => 'Áhà:', |
4888 | 4998 | ); |
4889 | 4999 | |
4890 | 5000 | /** Ingush (ГІалгІай Ğalğaj) |
— | — | @@ -4938,6 +5048,7 @@ |
4939 | 5049 | 'centralnotice' => 'Gestione avviso centralizzato', |
4940 | 5050 | 'noticetemplate' => 'Gestione avviso centralizzato', |
4941 | 5051 | 'bannerallocation' => 'Gestione avviso centralizzato', |
| 5052 | + 'centralnoticelogs' => 'Gestione avviso centralizzato', |
4942 | 5053 | 'right-centralnotice-admin' => 'Gestisce gli avvisi centralizzati', |
4943 | 5054 | 'action-centralnotice-admin' => 'gestire gli avvisi centralizzati', |
4944 | 5055 | 'centralnotice-desc' => 'Aggiunge un avviso centralizzato a inizio pagina (sitenotice)', |
— | — | @@ -5038,6 +5149,7 @@ |
5039 | 5150 | 'centralnotice-banner-type' => 'Tipo banner:', |
5040 | 5151 | 'centralnotice-banner-hidable' => 'Fisso/Nascondibile', |
5041 | 5152 | 'centralnotice-banner-collapsible' => 'Contraibile', |
| 5153 | + 'centralnotice-banner-fundraising' => 'Questo è un banner per la raccolta fondi', |
5042 | 5154 | 'centralnotice-countries' => 'Paesi', |
5043 | 5155 | 'centralnotice-languages' => 'Lingue', |
5044 | 5156 | 'centralnotice-projects' => 'Progetti', |
— | — | @@ -5046,6 +5158,15 @@ |
5047 | 5159 | 'centralnotice-documentwrite-error' => 'Non è possibile usare document.write() dentro un banner. |
5048 | 5160 | Vedi http://meta.wikimedia.org/wiki/Help:CentralNotice per maggiori informazioni.', |
5049 | 5161 | 'centralnotice-preferred' => 'Preferito', |
| 5162 | + 'centralnotice-logs' => 'Log', |
| 5163 | + 'centralnotice-view-logs' => 'Vedi i log', |
| 5164 | + 'centralnotice-timestamp' => 'Data e ora', |
| 5165 | + 'centralnotice-user' => 'Utente', |
| 5166 | + 'centralnotice-action' => 'Azione', |
| 5167 | + 'centralnotice-changed' => 'Modificato da <span class="cn-old-value">$1</span> a <span class="cn-new-value">$2</span>', |
| 5168 | + 'centralnotice-added' => 'Aggiunto <span class="cn-new-value">$1</span>', |
| 5169 | + 'centralnotice-removed' => 'Rimosso <span class="cn-old-value">$1</span>', |
| 5170 | + 'centralnotice-talk-link' => 'discussione', |
5050 | 5171 | ); |
5051 | 5172 | |
5052 | 5173 | /** Japanese (日本語) |
— | — | @@ -5062,6 +5183,7 @@ |
5063 | 5184 | 'centralnotice' => '中央管理通知の管理', |
5064 | 5185 | 'noticetemplate' => '中央管理通知の管理', |
5065 | 5186 | 'bannerallocation' => '中央管理通知の管理', |
| 5187 | + 'centralnoticelogs' => '中央管理通知管理', |
5066 | 5188 | 'right-centralnotice-admin' => '中央管理通知の管理', |
5067 | 5189 | 'action-centralnotice-admin' => '中央管理通知の管理', |
5068 | 5190 | 'centralnotice-desc' => '中央管理のサイト通知を追加する', |
— | — | @@ -5172,7 +5294,8 @@ |
5173 | 5295 | 'centralnotice-banner-type' => 'テンプレートの種類:', |
5174 | 5296 | 'centralnotice-banner-hidable' => '固定/非表示可', |
5175 | 5297 | 'centralnotice-banner-collapsible' => '折りたたみ', |
5176 | | - 'centralnotice-geotargeted' => '対象地域', |
| 5298 | + 'centralnotice-banner-fundraising' => 'これは資金調達のバナーです', |
| 5299 | + 'centralnotice-geo' => '対象地域', |
5177 | 5300 | 'centralnotice-countries' => '国', |
5178 | 5301 | 'centralnotice-allocation' => '割り当て', |
5179 | 5302 | 'centralnotice-view-allocation' => 'テンプレートの割り当てを表示', |
— | — | @@ -5383,7 +5506,7 @@ |
5384 | 5507 | 'centralnotice-banner-type' => 'ბანერის ტიპი:', |
5385 | 5508 | 'centralnotice-banner-hidable' => 'სტატიკური/დაფარული', |
5386 | 5509 | 'centralnotice-banner-collapsible' => 'დასაკეცი', |
5387 | | - 'centralnotice-geotargeted' => 'გეო-მიზნობრივი', |
| 5510 | + 'centralnotice-geo' => 'გეო-მიზნობრივი', |
5388 | 5511 | 'centralnotice-countries' => 'ქვეყნები', |
5389 | 5512 | 'centralnotice-allocation' => 'განაწილება', |
5390 | 5513 | 'centralnotice-view-allocation' => 'თარგების განაწილების ხილვა', |
— | — | @@ -5485,7 +5608,7 @@ |
5486 | 5609 | 'centralnotice-banner-hidable' => 'នឹងថ្កល់/អាចលាក់បាន', |
5487 | 5610 | 'centralnotice-banner-collapsible' => 'អាចបង្រួញបាន', |
5488 | 5611 | 'centralnotice-banner-fundraising' => 'នេះជាបដាសំរាប់ឃោសនារៃអង្គាសប្រាក់', |
5489 | | - 'centralnotice-geotargeted' => 'អាចកំនត់តំបន់សំរាប់បង្ហាញ', |
| 5612 | + 'centralnotice-geo' => 'អាចកំនត់តំបន់សំរាប់បង្ហាញ', |
5490 | 5613 | 'centralnotice-countries' => 'ប្រទេស', |
5491 | 5614 | 'centralnotice-languages' => 'ភាសា', |
5492 | 5615 | 'centralnotice-projects' => 'គំរោង', |
— | — | @@ -5625,7 +5748,7 @@ |
5626 | 5749 | 'centralnotice-banner-type' => '배너 유형:', |
5627 | 5750 | 'centralnotice-banner-hidable' => '정적/숨길 수 있음', |
5628 | 5751 | 'centralnotice-banner-collapsible' => '접을 수 있음', |
5629 | | - 'centralnotice-geotargeted' => '특정 지역을 대상으로 공지', |
| 5752 | + 'centralnotice-geo' => '특정 지역을 대상으로 공지', |
5630 | 5753 | 'centralnotice-countries' => '국가', |
5631 | 5754 | 'centralnotice-allocation' => '배당', |
5632 | 5755 | 'centralnotice-languages' => '언어', |
— | — | @@ -5643,6 +5766,7 @@ |
5644 | 5767 | 'centralnotice' => 'Zentraal Nohreschte verwallde', |
5645 | 5768 | 'noticetemplate' => 'Zentraal Nohreschte verwallde', |
5646 | 5769 | 'bannerallocation' => 'Zentraal Nohreschte verwallde', |
| 5770 | + 'centralnoticelogs' => 'Verwalldung vun de zentraal Nohreschte', |
5647 | 5771 | 'right-centralnotice-admin' => 'Zentraal Nohreschte verwallde', |
5648 | 5772 | 'action-centralnotice-admin' => 'zentraal Nohreschte ze verwallde', |
5649 | 5773 | 'centralnotice-desc' => "Brengk en zentraale ''sitenotice'' en et wiki", |
— | — | @@ -5669,6 +5793,7 @@ |
5670 | 5794 | 'centralnotice-list-templates' => 'Banner_Schablohne opleßte', |
5671 | 5795 | 'centralnotice-multiple-projects' => 'etlijje ($1)', |
5672 | 5796 | 'centralnotice-multiple-languages' => 'etlijje ($1)', |
| 5797 | + 'centralnotice-multiple-countries' => 'etlijje ($1)', |
5673 | 5798 | 'centralnotice-all-projects' => 'All Projäkte', |
5674 | 5799 | 'centralnotice-language-listing' => '$1 — $2', |
5675 | 5800 | 'centralnotice-translations' => 'Övversäzonge', |
— | — | @@ -5760,7 +5885,10 @@ |
5761 | 5886 | 'centralnotice-banner-type' => 'De Zoot Banner_Schablohn:', |
5762 | 5887 | 'centralnotice-banner-hidable' => 'Faß udder ußschaltbaa', |
5763 | 5888 | 'centralnotice-banner-collapsible' => 'Enklappbaa', |
5764 | | - 'centralnotice-geotargeted' => 'Met Koodinaate op de Ääd', |
| 5889 | + 'centralnotice-banner-fundraising' => 'Dat es en Banner_Schablohn för noh Jeld ze froore', |
| 5890 | + 'centralnotice-banner-fundraising-help' => 'Donn ene Anker en dä Banner_Schablohn ongerbrenge met <code lang="en">id="cn_fundraising_link"</code> un en Zielsigg udder mieh dovun, esu jät wi „Dem Jimmy-singe-Oproof-01“. E <code lang="en">href</code>-Kommando fö dä Lenk kriss De automattesch dobei jemaat.', |
| 5891 | + 'centralnotice-banner-landing-pages' => 'Zielsigge för aanzekumme, med Kommas dozwesche', |
| 5892 | + 'centralnotice-geo' => 'Met Koodinaate op de Ääd', |
5765 | 5893 | 'centralnotice-countries' => 'Länder', |
5766 | 5894 | 'centralnotice-allocation' => 'Verdeilong', |
5767 | 5895 | 'centralnotice-view-allocation' => 'De Banner_Schablohne iehr Zohdeilong beloore', |
— | — | @@ -5774,6 +5902,19 @@ |
5775 | 5903 | 'centralnotice-documentwrite-error' => 'Mer künne <code lang="en">document.write()</code> nit ennerhallef vun ene Banner_Schablohn bruche. |
5776 | 5904 | Loor op http://meta.wikimedia.org/wiki/Help:CentralNotice wann De mieh weße wells.', |
5777 | 5905 | 'centralnotice-preferred' => 'Förjetrocke!', |
| 5906 | + 'centralnotice-logs' => 'Logböcher', |
| 5907 | + 'centralnotice-view-logs' => 'Logböcher aanloore', |
| 5908 | + 'centralnotice-timestamp' => 'Dattum un Zick', |
| 5909 | + 'centralnotice-user' => '{{ns:User}}', |
| 5910 | + 'centralnotice-action' => 'Wat jedonn?', |
| 5911 | + 'centralnotice-changed' => 'Vun <span class="cn-old-value">$1</span> op <span class="cn-new-value">$2</span> verändert.', |
| 5912 | + 'centralnotice-on' => 'aan', |
| 5913 | + 'centralnotice-off' => 'uß', |
| 5914 | + 'centralnotice-added' => '<span class="cn-new-value">$1</span> dobei jedonn.', |
| 5915 | + 'centralnotice-removed' => '<span class="cn-new-value">$1</span> fott jenumme.', |
| 5916 | + 'centralnotice-banners-changed' => 'Banner_Schablohne woodte anders udder neu zohjedeilt', |
| 5917 | + 'centralnotice-no-assignments' => 'Kein Banner_Schablohne zohjedeilt', |
| 5918 | + 'centralnotice-talk-link' => 'klaafe', |
5778 | 5919 | ); |
5779 | 5920 | |
5780 | 5921 | /** Kurdish (Latin) (Kurdî (Latin)) |
— | — | @@ -5846,6 +5987,7 @@ |
5847 | 5988 | 'centralnotice-list-templates' => 'Lëscht vun de Banneren', |
5848 | 5989 | 'centralnotice-multiple-projects' => 'méi ($1)', |
5849 | 5990 | 'centralnotice-multiple-languages' => 'méi ($1)', |
| 5991 | + 'centralnotice-multiple-countries' => 'Méi ($1)', |
5850 | 5992 | 'centralnotice-all-projects' => 'All Projeten', |
5851 | 5993 | 'centralnotice-translations' => 'Iwwersetzungen', |
5852 | 5994 | 'centralnotice-translate-to' => 'Iwwersetzen op', |
— | — | @@ -5935,7 +6077,7 @@ |
5936 | 6078 | 'centralnotice-banner-hidable' => 'Statesch/Ka verstoppt ginn', |
5937 | 6079 | 'centralnotice-banner-collapsible' => 'Aklappbar', |
5938 | 6080 | 'centralnotice-banner-fundraising' => "Dëst ass e Banner vun enger Campagne fir Don'en ze sammelen", |
5939 | | - 'centralnotice-geotargeted' => 'Geografesch geziilt', |
| 6081 | + 'centralnotice-geo' => 'Geografesch geziilt', |
5940 | 6082 | 'centralnotice-countries' => 'Länner', |
5941 | 6083 | 'centralnotice-allocation' => 'Dispositioun', |
5942 | 6084 | 'centralnotice-view-allocation' => 'Dispositioun vum Banner weisen', |
— | — | @@ -5950,6 +6092,15 @@ |
5951 | 6093 | Kuckt http://meta.wikimedia.org/wiki/Help:CentralNotice fir méi Informatiounen.', |
5952 | 6094 | 'centralnotice-preferred' => 'Am léiwsten', |
5953 | 6095 | 'centralnotice-logs' => 'Logbicher', |
| 6096 | + 'centralnotice-view-logs' => 'Logbicher weisen', |
| 6097 | + 'centralnotice-timestamp' => 'Zäitstempel', |
| 6098 | + 'centralnotice-user' => 'Benotzer', |
| 6099 | + 'centralnotice-action' => 'Aktioun', |
| 6100 | + 'centralnotice-on' => 'un', |
| 6101 | + 'centralnotice-off' => 'aus', |
| 6102 | + 'centralnotice-added' => '<span class="cn-new-value">$1</span> derbäigesat', |
| 6103 | + 'centralnotice-removed' => '<span class="cn-old-value">$1</span> ewechgeholl', |
| 6104 | + 'centralnotice-talk-link' => 'Diskussioun', |
5954 | 6105 | ); |
5955 | 6106 | |
5956 | 6107 | /** Lingua Franca Nova (Lingua Franca Nova) |
— | — | @@ -6082,7 +6233,7 @@ |
6083 | 6234 | 'centralnotice-banner-type' => 'Vaantiep:', |
6084 | 6235 | 'centralnotice-banner-hidable' => 'Statisch/verbergbaar', |
6085 | 6236 | 'centralnotice-banner-collapsible' => 'inklapbaar', |
6086 | | - 'centralnotice-geotargeted' => 'Geografische doele', |
| 6237 | + 'centralnotice-geo' => 'Geografische doele', |
6087 | 6238 | 'centralnotice-countries' => 'Lenj', |
6088 | 6239 | 'centralnotice-allocation' => 'Toewiezing', |
6089 | 6240 | 'centralnotice-view-allocation' => 'Betrach vaantoewiezing', |
— | — | @@ -6168,7 +6319,7 @@ |
6169 | 6320 | 'centralnotice-banner-type' => 'Pranešimo tipas:', |
6170 | 6321 | 'centralnotice-banner-hidable' => 'Statinis/Paslepiamas', |
6171 | 6322 | 'centralnotice-banner-collapsible' => 'Sutraukiamas', |
6172 | | - 'centralnotice-geotargeted' => 'Taikomas geografiškai', |
| 6323 | + 'centralnotice-geo' => 'Taikomas geografiškai', |
6173 | 6324 | 'centralnotice-countries' => 'Valstybės', |
6174 | 6325 | 'centralnotice-languages' => 'Kalbos', |
6175 | 6326 | 'centralnotice-projects' => 'Projektai', |
— | — | @@ -6326,6 +6477,7 @@ |
6327 | 6478 | 'centralnotice-list-templates' => 'Наведи шаблони', |
6328 | 6479 | 'centralnotice-multiple-projects' => 'повеќе ($1)', |
6329 | 6480 | 'centralnotice-multiple-languages' => 'повеќе ($1)', |
| 6481 | + 'centralnotice-multiple-countries' => 'Повеќе ($1)', |
6330 | 6482 | 'centralnotice-all-projects' => 'Сите проекти', |
6331 | 6483 | 'centralnotice-translations' => 'Преводи', |
6332 | 6484 | 'centralnotice-translate-to' => 'Преведи на', |
— | — | @@ -6417,7 +6569,7 @@ |
6418 | 6570 | 'centralnotice-banner-fundraising' => 'Ова е плакат за прибирање на средства', |
6419 | 6571 | 'centralnotice-banner-fundraising-help' => 'Создајте ознака за вкотвување во содржината на плакатот со id="cn_fundraising_link" и внесете една или повеќе целни страници, како на пр. „JimmyAppeal01“. href на врската ќе се исконструира автоматски.', |
6420 | 6572 | 'centralnotice-banner-landing-pages' => 'Целни страници (одделени со запирки):', |
6421 | | - 'centralnotice-geotargeted' => 'Геобележано', |
| 6573 | + 'centralnotice-geo' => 'Геобележано', |
6422 | 6574 | 'centralnotice-countries' => 'Земји', |
6423 | 6575 | 'centralnotice-allocation' => 'Распределба', |
6424 | 6576 | 'centralnotice-view-allocation' => 'Преглед на распределбата на плакати', |
— | — | @@ -6432,6 +6584,17 @@ |
6433 | 6585 | 'centralnotice-preferred' => 'Претпочитано', |
6434 | 6586 | 'centralnotice-logs' => 'Дневници', |
6435 | 6587 | 'centralnotice-view-logs' => 'Погл. дневници', |
| 6588 | + 'centralnotice-timestamp' => 'Време и датум', |
| 6589 | + 'centralnotice-user' => 'Корисник', |
| 6590 | + 'centralnotice-action' => 'Дејство', |
| 6591 | + 'centralnotice-changed' => 'Изменето од <span class="cn-old-value">$1</span> на <span class="cn-new-value">$2</span>', |
| 6592 | + 'centralnotice-on' => 'вкл', |
| 6593 | + 'centralnotice-off' => 'искл', |
| 6594 | + 'centralnotice-added' => 'Додадено <span class="cn-new-value">$1</span>', |
| 6595 | + 'centralnotice-removed' => 'Отстрането <span class="cn-old-value">$1</span>', |
| 6596 | + 'centralnotice-banners-changed' => 'Задавањата на плакатите се изменети', |
| 6597 | + 'centralnotice-no-assignments' => 'нема зададено плакати', |
| 6598 | + 'centralnotice-talk-link' => 'разговор', |
6436 | 6599 | ); |
6437 | 6600 | |
6438 | 6601 | /** Malayalam (മലയാളം) |
— | — | @@ -6469,8 +6632,9 @@ |
6470 | 6633 | 'centralnotice-list-templates' => 'ഫലകങ്ങൾ പട്ടികവത്കരിക്കുക', |
6471 | 6634 | 'centralnotice-multiple-projects' => 'നിരവധി ($1)', |
6472 | 6635 | 'centralnotice-multiple-languages' => 'നിരവധി ($1)', |
| 6636 | + 'centralnotice-multiple-countries' => 'നിരവധി ($1)', |
6473 | 6637 | 'centralnotice-all-projects' => 'എല്ലാ പദ്ധതികളും', |
6474 | | - 'centralnotice-translations' => 'തർജ്ജമകൾ', |
| 6638 | + 'centralnotice-translations' => 'പരിഭാഷകൾ', |
6475 | 6639 | 'centralnotice-translate-to' => 'ഇതിലേയ്ക്ക് തർജ്ജമ ചെയ്യുക', |
6476 | 6640 | 'centralnotice-translate' => 'തർജ്ജമ ചെയ്യുക', |
6477 | 6641 | 'centralnotice-english' => 'ഇംഗ്ലീഷ്', |
— | — | @@ -6559,7 +6723,7 @@ |
6560 | 6724 | 'centralnotice-banner-collapsible' => 'ചുരുക്കാവുന്നത്', |
6561 | 6725 | 'centralnotice-banner-fundraising' => 'ഇത് ഫണ്ട്റൈസിങ് എഴുത്തുപട്ടയാണ്', |
6562 | 6726 | 'centralnotice-banner-landing-pages' => 'എത്തിച്ചേരേണ്ട താളുകൾ (അങ്കുശത്താൽ വേർതിരിച്ച്):', |
6563 | | - 'centralnotice-geotargeted' => 'ഭൂപ്രദേശങ്ങൾ ലക്ഷ്യമാക്കിയവ', |
| 6727 | + 'centralnotice-geo' => 'ഭൂപ്രദേശങ്ങൾ ലക്ഷ്യമാക്കിയവ', |
6564 | 6728 | 'centralnotice-countries' => 'രാജ്യങ്ങൾ', |
6565 | 6729 | 'centralnotice-allocation' => 'വിന്യാസം', |
6566 | 6730 | 'centralnotice-view-allocation' => 'എഴുത്തുപട്ടയ്ക്ക് അനുവദിച്ചിരിക്കുന്ന സ്ഥാനം കാണുക', |
— | — | @@ -6575,6 +6739,15 @@ |
6576 | 6740 | 'centralnotice-preferred' => 'അഭിലഷണീയമായുള്ളത്', |
6577 | 6741 | 'centralnotice-logs' => 'പ്രവർത്തനരേഖകൾ', |
6578 | 6742 | 'centralnotice-view-logs' => 'പ്രവർത്തനരേഖകൾ കാണുക', |
| 6743 | + 'centralnotice-timestamp' => 'സമയമുദ്ര', |
| 6744 | + 'centralnotice-user' => 'ഉപയോക്താവ്', |
| 6745 | + 'centralnotice-action' => 'നടപടി', |
| 6746 | + 'centralnotice-changed' => '<span class="cn-old-value">$1</span> എന്നത് <span class="cn-new-value">$2</span> എന്നാക്കി മാറ്റിയിരിക്കുന്നു', |
| 6747 | + 'centralnotice-on' => 'സജ്ജമാക്കുക', |
| 6748 | + 'centralnotice-off' => 'പ്രവർത്തനരഹിതമാക്കുക', |
| 6749 | + 'centralnotice-added' => '<span class="cn-new-value">$1</span> കൂട്ടിച്ചേർത്തിരിക്കുന്നു', |
| 6750 | + 'centralnotice-removed' => '<span class="cn-old-value">$1</span> നീക്കം ചെയ്തിരിക്കുന്നു', |
| 6751 | + 'centralnotice-talk-link' => 'സംവാദം', |
6579 | 6752 | ); |
6580 | 6753 | |
6581 | 6754 | /** Mongolian (Монгол) |
— | — | @@ -6640,28 +6813,35 @@ |
6641 | 6814 | $messages['ms'] = array( |
6642 | 6815 | 'centralnotice' => 'Pentadbiran pemberitahuan pusat', |
6643 | 6816 | 'noticetemplate' => 'Pentadbiran pemberitahuan pusat', |
| 6817 | + 'bannerallocation' => 'Pentadbiran pemberitahuan pusat', |
| 6818 | + 'centralnoticelogs' => 'Pentadbiran pemberitahuan pusat', |
6644 | 6819 | 'right-centralnotice-admin' => 'Mengurus pemberitahuan pusat', |
6645 | 6820 | 'action-centralnotice-admin' => 'mengurus pemberitahuan pusat', |
6646 | | - 'centralnotice-desc' => 'Menambah pemberitahuan pusat', |
6647 | | - 'centralnotice-summary' => 'Anda boleh menggunakan modul ini untuk menyunting pemberitahuan pusat yang disediakan. Anda juga boleh menambah atau membuang pemberitahuan yang lama.', |
6648 | | - 'centralnotice-query' => 'Ubah suai pemberitahuan semasa', |
6649 | | - 'centralnotice-notice-name' => 'Nama pemberitahuan', |
| 6821 | + 'centralnotice-desc' => 'Menambahkan pemberitahuan pusat', |
| 6822 | + 'centralnotice-summary' => 'Anda boleh menggunakan modul ini untuk menyunting pemberitahuan pusat yang disediakan. |
| 6823 | +Anda juga boleh menambahkan atau membuang pemberitahuan yang lama.', |
| 6824 | + 'centralnotice-query' => 'Ubah suai kempen semasa', |
| 6825 | + 'centralnotice-notice-name' => 'Nama kempen', |
6650 | 6826 | 'centralnotice-end-date' => 'Tarikh tamat', |
6651 | 6827 | 'centralnotice-enabled' => 'Dihidupkan', |
6652 | 6828 | 'centralnotice-modify' => 'Serahkan', |
| 6829 | + 'centralnotice-save-banner' => 'Simpan sepanduk', |
6653 | 6830 | 'centralnotice-preview' => 'Pralihat', |
6654 | 6831 | 'centralnotice-nopreview' => '(Tiada pralihat)', |
6655 | | - 'centralnotice-add-new' => 'Tambah pemberitahuan pusat baru', |
| 6832 | + 'centralnotice-add-new' => 'Tambahkan kempen baru', |
6656 | 6833 | 'centralnotice-remove' => 'Buang', |
6657 | 6834 | 'centralnotice-translate-heading' => 'Penterjemahan $1', |
6658 | | - 'centralnotice-manage' => 'Urus pemberitahuan pusat', |
| 6835 | + 'centralnotice-manage' => 'Urus kempen', |
| 6836 | + 'centralnotice-manage-templates' => 'Urus sepanduk', |
6659 | 6837 | 'centralnotice-add' => 'Tambahkan', |
6660 | | - 'centralnotice-add-notice' => 'Tambah pemberitahuan', |
| 6838 | + 'centralnotice-add-notice' => 'Tambahkan kempen', |
| 6839 | + 'centralnotice-edit-notice' => 'Sunting kempen', |
6661 | 6840 | 'centralnotice-add-template' => 'Tambah templat', |
6662 | | - 'centralnotice-show-notices' => 'Papar pemberitahuan', |
| 6841 | + 'centralnotice-show-notices' => 'Paparkan kempen', |
6663 | 6842 | 'centralnotice-list-templates' => 'Senarai templat', |
6664 | 6843 | 'centralnotice-multiple-projects' => 'Berbilang ($1)', |
6665 | 6844 | 'centralnotice-multiple-languages' => 'Berbilang ($1)', |
| 6845 | + 'centralnotice-multiple-countries' => 'Berbilang ($1)', |
6666 | 6846 | 'centralnotice-all-projects' => 'Semua projek', |
6667 | 6847 | 'centralnotice-translations' => 'Terjemahan', |
6668 | 6848 | 'centralnotice-translate-to' => 'Terjemah', |
— | — | @@ -6675,12 +6855,19 @@ |
6676 | 6856 | 'centralnotice-locked' => 'Dikunci', |
6677 | 6857 | 'centralnotice-notice' => 'Kempen', |
6678 | 6858 | 'centralnotice-notice-heading' => 'Kempen: $1', |
6679 | | - 'centralnotice-notices' => 'Pemberitahuan', |
6680 | | - 'centralnotice-notice-exists' => 'Pemberitahuan telah pun wujud dan tidak ditambah.', |
6681 | | - 'centralnotice-template-exists' => 'Templat telah pun wujud dan tidak ditambah.', |
| 6859 | + 'centralnotice-notices' => 'Kempen', |
| 6860 | + 'centralnotice-notice-exists' => 'Kempen telah pun wujud. |
| 6861 | +Tidak boleh ditambahkan.', |
| 6862 | + 'centralnotice-no-language' => 'Tiada bahasa dipilih untuk kempen. Tidak boleh ditambahkan.', |
| 6863 | + 'centralnotice-no-project' => 'Tiada projek dipilih untuk kempen. Tidak boleh ditambahkan.', |
| 6864 | + 'centralnotice-template-exists' => 'Sepanduk telah pun wujud. |
| 6865 | +Tidak boleh ditambahkan.', |
6682 | 6866 | 'centralnotice-notice-doesnt-exist' => 'Kempen tidak wujud.', |
| 6867 | + 'centralnotice-remove-notice-doesnt-exist' => 'Kempen tidak wujud. |
| 6868 | +Tiada apa untuk dibuang.', |
6683 | 6869 | 'centralnotice-banner-doesnt-exist' => 'Sepanduk tak wujud.', |
6684 | | - 'centralnotice-template-still-bound' => 'Templat masih digunakan untuk pemberitahuan dan tidak dibuang.', |
| 6870 | + 'centralnotice-template-still-bound' => 'Sepanduk masih terikat dengan kempen. |
| 6871 | +Tidak boleh dibuang.', |
6685 | 6872 | 'centralnotice-template-body' => 'Kandungan templat:', |
6686 | 6873 | 'centralnotice-day' => 'Hari', |
6687 | 6874 | 'centralnotice-year' => 'Tahun', |
— | — | @@ -6712,6 +6899,7 @@ |
6713 | 6900 | 'centralnotice-number-uses' => 'Penggunaan', |
6714 | 6901 | 'centralnotice-settings' => 'Tetapan', |
6715 | 6902 | 'centralnotice-edit-template' => 'Sunting templat', |
| 6903 | + 'centralnotice-edit-template-summary' => 'Untuk mencipta pesanan yang boleh disetempatkan, sertakan rentetan bertanda dalam tiga pasang tanda pendakap, cth. {{{jimbo-quote}}}.', |
6716 | 6904 | 'centralnotice-message' => 'Pesanan', |
6717 | 6905 | 'centralnotice-message-not-set' => 'Pesanan tidak ditetapkan', |
6718 | 6906 | 'centralnotice-clone' => 'Salin', |
— | — | @@ -6721,12 +6909,48 @@ |
6722 | 6910 | 'centralnotice-insert' => 'Masukkan: $1', |
6723 | 6911 | 'centralnotice-hide-button' => 'Sorokkan pautan', |
6724 | 6912 | 'centralnotice-collapse-button' => 'Lipat pautan', |
6725 | | - 'centralnotice-expand-button' => 'Bentangkan pautan', |
| 6913 | + 'centralnotice-expand-button' => 'Kembangkan pautan', |
6726 | 6914 | 'centralnotice-close-button' => 'Butang tutup', |
6727 | 6915 | 'centralnotice-translate-button' => 'Pautan bantu menterjemah', |
| 6916 | + 'centralnotice-donate-button' => 'Butang derma', |
| 6917 | + 'centralnotice-expanded-banner' => 'Sepanduk kembang', |
| 6918 | + 'centralnotice-collapsed-banner' => 'Sepanduk terlipat', |
| 6919 | + 'centralnotice-banner-display' => 'Paparkan ke:', |
| 6920 | + 'centralnotice-banner-anonymous' => 'Pengguna tanpa nama', |
| 6921 | + 'centralnotice-banner-logged-in' => 'Pengguna log masuk', |
| 6922 | + 'centralnotice-banner-type' => 'Jenis sepanduk:', |
| 6923 | + 'centralnotice-banner-hidable' => 'Statik/Boleh sorok', |
| 6924 | + 'centralnotice-banner-collapsible' => 'Boleh lipat', |
| 6925 | + 'centralnotice-banner-fundraising' => 'Ini ialah sepanduk pungut derma', |
| 6926 | + 'centralnotice-banner-fundraising-help' => 'Cipta tag sauh dalam badan sepanduk dengan id="cn_fundraising_link" dan isikan satu atau lebih laman pendaratan di bawah, contohnya, "JimmyAppeal01". href pautan akan dibina secara automatik.', |
| 6927 | + 'centralnotice-banner-landing-pages' => 'Laman pendaratan (diasingkan dengan tanda koma):', |
| 6928 | + 'centralnotice-geo' => 'Digeosasar', |
| 6929 | + 'centralnotice-countries' => 'Negara', |
| 6930 | + 'centralnotice-allocation' => 'Peruntukan', |
| 6931 | + 'centralnotice-view-allocation' => 'Lihat peruntukan sepanduk', |
| 6932 | + 'centralnotice-allocation-instructions' => 'Pilih persekitaran yang mana anda ingin melihat peruntukan sepanduk:', |
6728 | 6933 | 'centralnotice-languages' => 'Bahasa', |
| 6934 | + 'centralnotice-projects' => 'Projek', |
6729 | 6935 | 'centralnotice-country' => 'Negara', |
| 6936 | + 'centralnotice-no-allocation' => 'Tiada sepanduk diperuntukkan.', |
| 6937 | + 'centralnotice-allocation-description' => 'Peruntukan sepanduk untuk $1.$2 di $3:', |
| 6938 | + 'centralnotice-percentage' => 'Peratusan', |
| 6939 | + 'centralnotice-documentwrite-error' => 'document.write() tidak boleh digunakan di dalam sepanduk. |
| 6940 | +Rujuk http://meta.wikimedia.org/wiki/Help:CentralNotice untuk maklumat lanjut.', |
6730 | 6941 | 'centralnotice-preferred' => 'Dipilih', |
| 6942 | + 'centralnotice-logs' => 'Log', |
| 6943 | + 'centralnotice-view-logs' => 'Lihat log', |
| 6944 | + 'centralnotice-timestamp' => 'Cop masa', |
| 6945 | + 'centralnotice-user' => 'Pengguna', |
| 6946 | + 'centralnotice-action' => 'Tindakan', |
| 6947 | + 'centralnotice-changed' => 'Ditukar dari <span class="cn-old-value">$1</span> ke <span class="cn-new-value">$2</span>', |
| 6948 | + 'centralnotice-on' => 'buka', |
| 6949 | + 'centralnotice-off' => 'tutup', |
| 6950 | + 'centralnotice-added' => '<span class="cn-new-value">$1</span> ditambahkan', |
| 6951 | + 'centralnotice-removed' => '<span class="cn-new-value">$1</span> dibuang', |
| 6952 | + 'centralnotice-banners-changed' => 'Peruntukan sepanduk diubah', |
| 6953 | + 'centralnotice-no-assignments' => 'tiada sepanduk yang diberikan', |
| 6954 | + 'centralnotice-talk-link' => 'bincang', |
6731 | 6955 | ); |
6732 | 6956 | |
6733 | 6957 | /** Maltese (Malti) |
— | — | @@ -6949,6 +7173,7 @@ |
6950 | 7174 | 'centralnotice-list-templates' => 'Sjablonen weergeven', |
6951 | 7175 | 'centralnotice-multiple-projects' => 'meerdere ($1)', |
6952 | 7176 | 'centralnotice-multiple-languages' => 'meerdere ($1)', |
| 7177 | + 'centralnotice-multiple-countries' => 'Meerdere ($1)', |
6953 | 7178 | 'centralnotice-all-projects' => 'Alle projecten', |
6954 | 7179 | 'centralnotice-translations' => 'Vertalingen', |
6955 | 7180 | 'centralnotice-translate-to' => 'Vertalen naar', |
— | — | @@ -7041,7 +7266,7 @@ |
7042 | 7267 | 'centralnotice-banner-fundraising' => 'Dit is een fondsenwervingsbanner', |
7043 | 7268 | 'centralnotice-banner-fundraising-help' => 'Maak een ankertag in de body van de banner met id="cn_fundraising_link" en voer hieronder een of meer bestemmingspagina\'s in, bijvoorbeeld "JimmyAppeal01". De href voor de verwijzing wordt automatisch geconstrueerd.', |
7044 | 7269 | 'centralnotice-banner-landing-pages' => "Landingspagina's (kommagescheiden):", |
7045 | | - 'centralnotice-geotargeted' => 'Geografische doelen', |
| 7270 | + 'centralnotice-geo' => 'Geografische doelen', |
7046 | 7271 | 'centralnotice-countries' => 'Landen', |
7047 | 7272 | 'centralnotice-allocation' => 'Toewijzing', |
7048 | 7273 | 'centralnotice-view-allocation' => 'Bannertoewijzing bekijken', |
— | — | @@ -7057,6 +7282,17 @@ |
7058 | 7283 | 'centralnotice-preferred' => 'Voorkeur', |
7059 | 7284 | 'centralnotice-logs' => 'Logboeken', |
7060 | 7285 | 'centralnotice-view-logs' => 'Logboeken bekijken', |
| 7286 | + 'centralnotice-timestamp' => 'Tijdstip', |
| 7287 | + 'centralnotice-user' => 'Gebruiker', |
| 7288 | + 'centralnotice-action' => 'Handeling', |
| 7289 | + 'centralnotice-changed' => 'Gewijzigd van <span class="cn-old-value">$1</span> naar <span class="cn-new-value">$2</span>', |
| 7290 | + 'centralnotice-on' => 'aan', |
| 7291 | + 'centralnotice-off' => 'af', |
| 7292 | + 'centralnotice-added' => '<span class="cn-new-value">$1</span> toegevoegd', |
| 7293 | + 'centralnotice-removed' => '<span class="cn-old-value">$1</span> verwijderd', |
| 7294 | + 'centralnotice-banners-changed' => 'Bannertoewijzingen zijn gewijzigd', |
| 7295 | + 'centralnotice-no-assignments' => 'geen banners toegewezen', |
| 7296 | + 'centralnotice-talk-link' => 'overleg', |
7061 | 7297 | ); |
7062 | 7298 | |
7063 | 7299 | /** Norwegian Nynorsk (Norsk (nynorsk)) |
— | — | @@ -7266,7 +7502,7 @@ |
7267 | 7503 | 'centralnotice-banner-type' => 'Banner type:', |
7268 | 7504 | 'centralnotice-banner-hidable' => 'Statisk/skjulbar', |
7269 | 7505 | 'centralnotice-banner-collapsible' => 'Sammenleggbar', |
7270 | | - 'centralnotice-geotargeted' => 'Geografisk målrettet', |
| 7506 | + 'centralnotice-geo' => 'Geografisk målrettet', |
7271 | 7507 | 'centralnotice-countries' => 'Land', |
7272 | 7508 | 'centralnotice-allocation' => 'Tildeling', |
7273 | 7509 | 'centralnotice-view-allocation' => 'Vis bannertildeling', |
— | — | @@ -7471,6 +7707,7 @@ |
7472 | 7708 | 'centralnotice-list-templates' => 'Lista szablonów', |
7473 | 7709 | 'centralnotice-multiple-projects' => 'wiele ($1)', |
7474 | 7710 | 'centralnotice-multiple-languages' => 'wiele ($1)', |
| 7711 | + 'centralnotice-multiple-countries' => 'Wiele ($1)', |
7475 | 7712 | 'centralnotice-all-projects' => 'Wszystkie projekty', |
7476 | 7713 | 'centralnotice-translations' => 'Tłumaczenia', |
7477 | 7714 | 'centralnotice-translate-to' => 'Przetłumacz na', |
— | — | @@ -7555,7 +7792,7 @@ |
7556 | 7793 | 'centralnotice-banner-fundraising' => 'Baner zbiórki pieniędzy', |
7557 | 7794 | 'centralnotice-banner-fundraising-help' => 'Utwórz znacznik kotwicy w ciele banera z id="cn_fundraising_link" i wprowadź jedną lub więcej stron docelowych, na przykład "ApelJimmiego01". Dla linku href zostanie wygenerowane automatycznie.', |
7558 | 7795 | 'centralnotice-banner-landing-pages' => 'Strony docelowe (rozdzielone przecinkami):', |
7559 | | - 'centralnotice-geotargeted' => 'Geograficznie nakierowane', |
| 7796 | + 'centralnotice-geo' => 'Geograficznie nakierowane', |
7560 | 7797 | 'centralnotice-countries' => 'Kraje', |
7561 | 7798 | 'centralnotice-allocation' => 'Przydział', |
7562 | 7799 | 'centralnotice-view-allocation' => 'Zobacz przydziały dla banera', |
— | — | @@ -7571,6 +7808,17 @@ |
7572 | 7809 | 'centralnotice-preferred' => 'Preferowany', |
7573 | 7810 | 'centralnotice-logs' => 'Rejestr operacji', |
7574 | 7811 | 'centralnotice-view-logs' => 'Rejestr odsłon', |
| 7812 | + 'centralnotice-timestamp' => 'Data i czas', |
| 7813 | + 'centralnotice-user' => 'Użytkownik', |
| 7814 | + 'centralnotice-action' => 'Akcja', |
| 7815 | + 'centralnotice-changed' => 'Zmieniono z <span class="cn-old-value">$1</span> na <span class="cn-new-value">$2</span>', |
| 7816 | + 'centralnotice-on' => 'włączone', |
| 7817 | + 'centralnotice-off' => 'wyłączone', |
| 7818 | + 'centralnotice-added' => 'Dodano <span class="cn-new-value">$1</span>', |
| 7819 | + 'centralnotice-removed' => 'Usunięto <span class="cn-old-value">$1</span>', |
| 7820 | + 'centralnotice-banners-changed' => 'Zmieniono przydział banera', |
| 7821 | + 'centralnotice-no-assignments' => 'brak przydzielonych banerów', |
| 7822 | + 'centralnotice-talk-link' => 'dyskusja', |
7575 | 7823 | ); |
7576 | 7824 | |
7577 | 7825 | /** Piedmontese (Piemontèis) |
— | — | @@ -7695,7 +7943,7 @@ |
7696 | 7944 | 'centralnotice-banner-type' => 'Sòrt ëd tilèt:', |
7697 | 7945 | 'centralnotice-banner-hidable' => 'Stàtich/Stërmàbil', |
7698 | 7946 | 'centralnotice-banner-collapsible' => 'Strenzìbil', |
7699 | | - 'centralnotice-geotargeted' => 'Geolocalisà', |
| 7947 | + 'centralnotice-geo' => 'Geolocalisà', |
7700 | 7948 | 'centralnotice-countries' => 'Pais', |
7701 | 7949 | 'centralnotice-allocation' => 'Alocassion', |
7702 | 7950 | 'centralnotice-view-allocation' => 'Vëdde la disposission dël tilèt', |
— | — | @@ -7800,8 +8048,9 @@ |
7801 | 8049 | 'centralnotice-add-template' => 'Adicionar um modelo', |
7802 | 8050 | 'centralnotice-show-notices' => 'Mostrar avisos', |
7803 | 8051 | 'centralnotice-list-templates' => 'Listar modelos', |
7804 | | - 'centralnotice-multiple-projects' => 'múltiplas ($1)', |
7805 | | - 'centralnotice-multiple-languages' => 'múltiplas ($1)', |
| 8052 | + 'centralnotice-multiple-projects' => 'Múltiplos ($1)', |
| 8053 | + 'centralnotice-multiple-languages' => 'Múltiplas ($1)', |
| 8054 | + 'centralnotice-multiple-countries' => 'Múltiplos ($1)', |
7806 | 8055 | 'centralnotice-all-projects' => 'Todos os projetos', |
7807 | 8056 | 'centralnotice-translations' => 'Traduções', |
7808 | 8057 | 'centralnotice-translate-to' => 'Traduzir para', |
— | — | @@ -7819,7 +8068,7 @@ |
7820 | 8069 | 'centralnotice-notice-exists' => 'O aviso já existe. |
7821 | 8070 | Não será adicionado.', |
7822 | 8071 | 'centralnotice-no-language' => 'Não foi seleccionada uma língua para o aviso centralizado. O aviso não será adicionado.', |
7823 | | - 'centralnotice-no-project' => 'Nenhum projeto foi selecionado para a campanha. Não acrescentado.', |
| 8072 | + 'centralnotice-no-project' => 'Não foi seleccionado um projecto para o aviso centralizado. O aviso não será adicionado.', |
7824 | 8073 | 'centralnotice-template-exists' => 'O modelo já existe. |
7825 | 8074 | Não será adicionado.', |
7826 | 8075 | 'centralnotice-notice-doesnt-exist' => 'O aviso não existe.', |
— | — | @@ -7893,7 +8142,7 @@ |
7894 | 8143 | 'centralnotice-banner-fundraising' => 'Este é um modelo de angariação de fundos', |
7895 | 8144 | 'centralnotice-banner-fundraising-help' => 'Crie uma âncora no corpo do modelo com id="cn_fundraising_link" e introduza abaixo uma ou mais páginas de destino. Por exemplo, "ApeloJimmy01". O parâmetro href do link será construído automaticamente.', |
7896 | 8145 | 'centralnotice-banner-landing-pages' => 'Páginas de destino (separadas por vírgulas):', |
7897 | | - 'centralnotice-geotargeted' => 'Com segmentação geográfica', |
| 8146 | + 'centralnotice-geo' => 'Com segmentação geográfica', |
7898 | 8147 | 'centralnotice-countries' => 'Países', |
7899 | 8148 | 'centralnotice-allocation' => 'Atribuição', |
7900 | 8149 | 'centralnotice-view-allocation' => 'Ver atribuição de modelos', |
— | — | @@ -7909,6 +8158,17 @@ |
7910 | 8159 | 'centralnotice-preferred' => 'Preferido', |
7911 | 8160 | 'centralnotice-logs' => 'Registos', |
7912 | 8161 | 'centralnotice-view-logs' => 'Ver registos', |
| 8162 | + 'centralnotice-timestamp' => 'Data e hora', |
| 8163 | + 'centralnotice-user' => 'Utilizador', |
| 8164 | + 'centralnotice-action' => 'Acção', |
| 8165 | + 'centralnotice-changed' => 'Alterado de <span class="cn-old-value">$1</span> para <span class="cn-new-value">$2</span>', |
| 8166 | + 'centralnotice-on' => 'activo', |
| 8167 | + 'centralnotice-off' => 'inactivo', |
| 8168 | + 'centralnotice-added' => '<span class="cn-new-value">$1</span> foi adicionado', |
| 8169 | + 'centralnotice-removed' => '<span class="cn-old-value">$1</span> foi removido', |
| 8170 | + 'centralnotice-banners-changed' => 'As atribuições de modelos foram alteradas', |
| 8171 | + 'centralnotice-no-assignments' => 'não há modelos atribuídos', |
| 8172 | + 'centralnotice-talk-link' => 'discussão', |
7913 | 8173 | ); |
7914 | 8174 | |
7915 | 8175 | /** Brazilian Portuguese (Português do Brasil) |
— | — | @@ -7948,6 +8208,7 @@ |
7949 | 8209 | 'centralnotice-list-templates' => 'Listar modelos', |
7950 | 8210 | 'centralnotice-multiple-projects' => 'múltiplas ($1)', |
7951 | 8211 | 'centralnotice-multiple-languages' => 'múltiplas ($1)', |
| 8212 | + 'centralnotice-multiple-countries' => 'Múltiplos ($1)', |
7952 | 8213 | 'centralnotice-all-projects' => 'Todos os projetos', |
7953 | 8214 | 'centralnotice-translations' => 'Traduções', |
7954 | 8215 | 'centralnotice-translate-to' => 'Traduzir para', |
— | — | @@ -8039,7 +8300,7 @@ |
8040 | 8301 | 'centralnotice-banner-fundraising' => 'Este é um banner de angariação de fundos', |
8041 | 8302 | 'centralnotice-banner-fundraising-help' => 'Crie uma âncora no corpo do banner com id="cn_fundraising_link" e introduza abaixo uma ou mais páginas de destino. Por exemplo, "ApeloJimmy01". O parâmetro href do link será construído automaticamente.', |
8042 | 8303 | 'centralnotice-banner-landing-pages' => 'Páginas de destino (separadas por vírgulas):', |
8043 | | - 'centralnotice-geotargeted' => 'Localizado geograficamente', |
| 8304 | + 'centralnotice-geo' => 'Localizado geograficamente', |
8044 | 8305 | 'centralnotice-countries' => 'Países', |
8045 | 8306 | 'centralnotice-allocation' => 'Atribuição', |
8046 | 8307 | 'centralnotice-view-allocation' => 'Ver atribuição de modelos', |
— | — | @@ -8055,6 +8316,17 @@ |
8056 | 8317 | 'centralnotice-preferred' => 'Preferido', |
8057 | 8318 | 'centralnotice-logs' => 'Registros', |
8058 | 8319 | 'centralnotice-view-logs' => 'Ver registros', |
| 8320 | + 'centralnotice-timestamp' => 'Data e hora', |
| 8321 | + 'centralnotice-user' => 'Usuário', |
| 8322 | + 'centralnotice-action' => 'Ação', |
| 8323 | + 'centralnotice-changed' => 'Alterado de <span class="cn-old-value">$1</span> para <span class="cn-new-value">$2</span>', |
| 8324 | + 'centralnotice-on' => 'ativo', |
| 8325 | + 'centralnotice-off' => 'inativo', |
| 8326 | + 'centralnotice-added' => '<span class="cn-new-value">$1</span> foi adicionado', |
| 8327 | + 'centralnotice-removed' => '<span class="cn-old-value">$1</span> foi removido', |
| 8328 | + 'centralnotice-banners-changed' => 'As atribuições do banner foram alteradas', |
| 8329 | + 'centralnotice-no-assignments' => 'não há banners atribuídos', |
| 8330 | + 'centralnotice-talk-link' => 'discussão', |
8059 | 8331 | ); |
8060 | 8332 | |
8061 | 8333 | /** Quechua (Runa Simi) |
— | — | @@ -8178,7 +8450,7 @@ |
8179 | 8451 | 'centralnotice-banner-type' => 'Unancha laya:', |
8180 | 8452 | 'centralnotice-banner-hidable' => 'Ranuy/Pakana', |
8181 | 8453 | 'centralnotice-banner-collapsible' => 'Thuñichina', |
8182 | | - 'centralnotice-geotargeted' => 'Allpapacha taripanachasqa', |
| 8454 | + 'centralnotice-geo' => 'Allpapacha taripanachasqa', |
8183 | 8455 | 'centralnotice-countries' => 'Mama llaqtakuna', |
8184 | 8456 | 'centralnotice-allocation' => 'Ñiqinchay', |
8185 | 8457 | 'centralnotice-view-allocation' => 'Unancha ñiqinchayta qhaway', |
— | — | @@ -8319,7 +8591,9 @@ |
8320 | 8592 | 'centralnotice-banner-type' => 'Tip banner:', |
8321 | 8593 | 'centralnotice-banner-hidable' => 'Static/Ascuns', |
8322 | 8594 | 'centralnotice-banner-collapsible' => 'Reductibil', |
8323 | | - 'centralnotice-geotargeted' => 'Geolocalizat', |
| 8595 | + 'centralnotice-banner-fundraising' => 'Acesta este un banner pentru strângerea de fonduri', |
| 8596 | + 'centralnotice-banner-landing-pages' => 'Pagini de destinație (separate prin virgulă):', |
| 8597 | + 'centralnotice-geo' => 'Geolocalizat', |
8324 | 8598 | 'centralnotice-countries' => 'Țări', |
8325 | 8599 | 'centralnotice-allocation' => 'Alocare', |
8326 | 8600 | 'centralnotice-view-allocation' => 'Vedeți alocarea bannerului', |
— | — | @@ -8327,10 +8601,16 @@ |
8328 | 8602 | 'centralnotice-projects' => 'Proiecte', |
8329 | 8603 | 'centralnotice-country' => 'Țară', |
8330 | 8604 | 'centralnotice-no-allocation' => 'Niciun banner alocat.', |
| 8605 | + 'centralnotice-allocation-description' => 'Alocare de banner pentru $1.$2 în $3:', |
8331 | 8606 | 'centralnotice-percentage' => 'Procentaj', |
8332 | 8607 | 'centralnotice-documentwrite-error' => 'document.write() nu poate fi folosit într-un banner. |
8333 | 8608 | Vedeți http://meta.wikimedia.org/wiki/Help:CentralNotice pentru mai multe informații.', |
8334 | 8609 | 'centralnotice-preferred' => 'Preferat', |
| 8610 | + 'centralnotice-logs' => 'Jurnale', |
| 8611 | + 'centralnotice-view-logs' => 'Vezi jurnale', |
| 8612 | + 'centralnotice-timestamp' => 'Data și ora', |
| 8613 | + 'centralnotice-user' => 'Utilizator', |
| 8614 | + 'centralnotice-action' => 'Acțiune', |
8335 | 8615 | ); |
8336 | 8616 | |
8337 | 8617 | /** Tarandíne (Tarandíne) |
— | — | @@ -8455,7 +8735,7 @@ |
8456 | 8736 | 'centralnotice-banner-type' => 'Tipe de banner:', |
8457 | 8737 | 'centralnotice-banner-hidable' => 'Stateche/Scunnibbele', |
8458 | 8738 | 'centralnotice-banner-collapsible' => 'Collassabbele', |
8459 | | - 'centralnotice-geotargeted' => 'Geo referenziate', |
| 8739 | + 'centralnotice-geo' => 'Geo referenziate', |
8460 | 8740 | 'centralnotice-countries' => 'Paìse', |
8461 | 8741 | 'centralnotice-allocation' => 'Allocazione', |
8462 | 8742 | 'centralnotice-view-allocation' => "Visualizze l'assignazione d'u banner", |
— | — | @@ -8602,7 +8882,7 @@ |
8603 | 8883 | 'centralnotice-banner-fundraising' => 'Это баннер сбора средств', |
8604 | 8884 | 'centralnotice-banner-fundraising-help' => 'Создайте тег ссылки в тела баннера с id="cn_fundraising_link" и укажите ниже одну или несколько целевых страниц, например, «JimmyAppeal01». Поле HREF ссылки будет создано автоматически.', |
8605 | 8885 | 'centralnotice-banner-landing-pages' => 'Целевые страницы (через запятую):', |
8606 | | - 'centralnotice-geotargeted' => 'Геопривязка', |
| 8886 | + 'centralnotice-geo' => 'Геопривязка', |
8607 | 8887 | 'centralnotice-countries' => 'Страны', |
8608 | 8888 | 'centralnotice-allocation' => 'Распределение', |
8609 | 8889 | 'centralnotice-view-allocation' => 'Просмотр размещения баннеров', |
— | — | @@ -8618,6 +8898,9 @@ |
8619 | 8899 | 'centralnotice-preferred' => 'Желательно', |
8620 | 8900 | 'centralnotice-logs' => 'Журналы', |
8621 | 8901 | 'centralnotice-view-logs' => 'Просмотр журналов', |
| 8902 | + 'centralnotice-timestamp' => 'Дата/время', |
| 8903 | + 'centralnotice-user' => 'Участник', |
| 8904 | + 'centralnotice-action' => 'Действие', |
8622 | 8905 | ); |
8623 | 8906 | |
8624 | 8907 | /** Rusyn (Русиньскый) |
— | — | @@ -8735,7 +9018,7 @@ |
8736 | 9019 | 'centralnotice-banner-type' => 'Тіп банера:', |
8737 | 9020 | 'centralnotice-banner-hidable' => 'Статічный / Сховательный', |
8738 | 9021 | 'centralnotice-banner-collapsible' => 'Зложытельный', |
8739 | | - 'centralnotice-geotargeted' => 'Ґеоґрафічно цілене', |
| 9022 | + 'centralnotice-geo' => 'Ґеоґрафічно цілене', |
8740 | 9023 | 'centralnotice-countries' => 'Країны', |
8741 | 9024 | 'centralnotice-allocation' => 'Придїлїня', |
8742 | 9025 | 'centralnotice-view-allocation' => 'Зобразити придїлїня баверів', |
— | — | @@ -8874,7 +9157,7 @@ |
8875 | 9158 | 'centralnotice-banner-hidable' => 'Статическэй / Кистэниллэр', |
8876 | 9159 | 'centralnotice-banner-collapsible' => 'Кыччатыллар', |
8877 | 9160 | 'centralnotice-banner-fundraising' => 'Харчы хомуйуу бааннера', |
8878 | | - 'centralnotice-geotargeted' => 'Сиргэ баайыы', |
| 9161 | + 'centralnotice-geo' => 'Сиргэ баайыы', |
8879 | 9162 | 'centralnotice-countries' => 'Дойдулар', |
8880 | 9163 | 'centralnotice-allocation' => 'Тарҕаныыта', |
8881 | 9164 | 'centralnotice-view-allocation' => 'Бааннердар ханна баалларын көрүү', |
— | — | @@ -9107,7 +9390,7 @@ |
9108 | 9391 | 'centralnotice-banner-type' => 'බැනර වර්ගය:', |
9109 | 9392 | 'centralnotice-banner-hidable' => 'ස්ථිතික/සැඟවිය හැකි', |
9110 | 9393 | 'centralnotice-banner-collapsible' => 'කුඩා කළ හැකි', |
9111 | | - 'centralnotice-geotargeted' => 'භූමි එල්ල කළ (geotargeted)', |
| 9394 | + 'centralnotice-geo' => 'භූමි එල්ල කළ (geotargeted)', |
9112 | 9395 | 'centralnotice-countries' => 'රටවල්', |
9113 | 9396 | 'centralnotice-allocation' => 'වෙන්කිරීම', |
9114 | 9397 | 'centralnotice-view-allocation' => 'බැනරයේ වෙන්කිරීම පෙන්වන්න', |
— | — | @@ -9233,7 +9516,7 @@ |
9234 | 9517 | 'centralnotice-banner-type' => 'Typ oznamu:', |
9235 | 9518 | 'centralnotice-banner-hidable' => 'Statický/skrývateľný', |
9236 | 9519 | 'centralnotice-banner-collapsible' => 'Zbaliteľný', |
9237 | | - 'centralnotice-geotargeted' => 'Geograficky cielený', |
| 9520 | + 'centralnotice-geo' => 'Geograficky cielený', |
9238 | 9521 | 'centralnotice-countries' => 'Krajiny', |
9239 | 9522 | 'centralnotice-allocation' => 'Alokácia', |
9240 | 9523 | 'centralnotice-view-allocation' => 'Zobraziť alokáciu oznamu', |
— | — | @@ -9283,6 +9566,7 @@ |
9284 | 9567 | 'centralnotice-list-templates' => 'Seznam pasic', |
9285 | 9568 | 'centralnotice-multiple-projects' => 'več ($1)', |
9286 | 9569 | 'centralnotice-multiple-languages' => 'več ($1)', |
| 9570 | + 'centralnotice-multiple-countries' => 'Več ($1)', |
9287 | 9571 | 'centralnotice-all-projects' => 'Vsi projekti', |
9288 | 9572 | 'centralnotice-translations' => 'Prevodi', |
9289 | 9573 | 'centralnotice-translate-to' => 'Prevedi v', |
— | — | @@ -9374,7 +9658,7 @@ |
9375 | 9659 | 'centralnotice-banner-fundraising' => 'To je donatorska pasica', |
9376 | 9660 | 'centralnotice-banner-fundraising-help' => 'Ustvarite sidrno oznako v telesu pasice z id="cn_fundraising_link" in spodaj vnesite eno ali več ciljnih strani, na primer "JimmyAppeal01". Celotna povezava bo ustvarjena samodejno.', |
9377 | 9661 | 'centralnotice-banner-landing-pages' => 'Ciljne strani (ločene z vejicami):', |
9378 | | - 'centralnotice-geotargeted' => 'Geociljano', |
| 9662 | + 'centralnotice-geo' => 'Geociljano', |
9379 | 9663 | 'centralnotice-countries' => 'Države', |
9380 | 9664 | 'centralnotice-allocation' => 'Dodelitev', |
9381 | 9665 | 'centralnotice-view-allocation' => 'Ogled dodelitve pasic', |
— | — | @@ -9390,6 +9674,17 @@ |
9391 | 9675 | 'centralnotice-preferred' => 'Prednostno', |
9392 | 9676 | 'centralnotice-logs' => 'Dnevniki', |
9393 | 9677 | 'centralnotice-view-logs' => 'Ogled dnevnikov', |
| 9678 | + 'centralnotice-timestamp' => 'Časovni žig', |
| 9679 | + 'centralnotice-user' => 'Uporabnik', |
| 9680 | + 'centralnotice-action' => 'Dejanje', |
| 9681 | + 'centralnotice-changed' => 'Spremenjeno iz <span class="cn-old-value">$1</span> v <span class="cn-new-value">$2</span>', |
| 9682 | + 'centralnotice-on' => 'vklopljeno', |
| 9683 | + 'centralnotice-off' => 'izklopljeno', |
| 9684 | + 'centralnotice-added' => 'Dodano <span class="cn-new-value">$1</span>', |
| 9685 | + 'centralnotice-removed' => 'Odstranjeno <span class="cn-old-value">$1</span>', |
| 9686 | + 'centralnotice-banners-changed' => 'Naloge pasice so spremenjene', |
| 9687 | + 'centralnotice-no-assignments' => 'ni dodeljenih pasic', |
| 9688 | + 'centralnotice-talk-link' => 'pogovor', |
9394 | 9689 | ); |
9395 | 9690 | |
9396 | 9691 | /** Albanian (Shqip) |
— | — | @@ -9519,7 +9814,7 @@ |
9520 | 9815 | 'centralnotice-banner-fundraising' => 'Ky është një flamur për mbledhjen e fondeve', |
9521 | 9816 | 'centralnotice-banner-fundraising-help' => 'Krijo një spirancë tag në trup flamurin me id = "cn_fundraising_link" dhe hyjnë në një apo më shumë faqe ulje më poshtë, për shembull, "JimmyAppeal01". Href e lidhjes do të ndërtohet automatikisht.', |
9522 | 9817 | 'centralnotice-banner-landing-pages' => 'Faqet ulje (comma-ndarë):', |
9523 | | - 'centralnotice-geotargeted' => 'Geo-objektiv', |
| 9818 | + 'centralnotice-geo' => 'Geo-objektiv', |
9524 | 9819 | 'centralnotice-countries' => 'Shtetet', |
9525 | 9820 | 'centralnotice-allocation' => 'Rregullimi', |
9526 | 9821 | 'centralnotice-view-allocation' => 'Shikoni rregullimin e Stampës', |
— | — | @@ -9777,9 +10072,11 @@ |
9778 | 10073 | * @author Cohan |
9779 | 10074 | * @author Fluff |
9780 | 10075 | * @author Lejonel |
| 10076 | + * @author Lokal Profil |
9781 | 10077 | * @author M.M.S. |
9782 | 10078 | * @author Najami |
9783 | 10079 | * @author Tobulos1 |
| 10080 | + * @author WikiPhoenix |
9784 | 10081 | */ |
9785 | 10082 | $messages['sv'] = array( |
9786 | 10083 | 'centralnotice' => 'Centralmeddelande-administration', |
— | — | @@ -9899,7 +10196,7 @@ |
9900 | 10197 | 'centralnotice-banner-type' => 'Bannertyp:', |
9901 | 10198 | 'centralnotice-banner-hidable' => 'Statisk/gömbar', |
9902 | 10199 | 'centralnotice-banner-collapsible' => 'Hopfällbar', |
9903 | | - 'centralnotice-geotargeted' => 'Geografiskt fokuserat', |
| 10200 | + 'centralnotice-geo' => 'Geografiskt fokuserat', |
9904 | 10201 | 'centralnotice-countries' => 'Länder', |
9905 | 10202 | 'centralnotice-allocation' => 'Tilldelning', |
9906 | 10203 | 'centralnotice-view-allocation' => 'Visa bannertilldelning', |
— | — | @@ -9913,6 +10210,15 @@ |
9914 | 10211 | 'centralnotice-documentwrite-error' => 'document.write() kan inte användas inom en banner. |
9915 | 10212 | Se http://meta.wikimedia.org/wiki/Help:CentralNotice för mer information.', |
9916 | 10213 | 'centralnotice-preferred' => 'Föredragen', |
| 10214 | + 'centralnotice-logs' => 'Loggar', |
| 10215 | + 'centralnotice-view-logs' => 'Visa loggar', |
| 10216 | + 'centralnotice-timestamp' => 'Tidsstämpel', |
| 10217 | + 'centralnotice-user' => 'Användare', |
| 10218 | + 'centralnotice-action' => 'Åtgärd', |
| 10219 | + 'centralnotice-on' => 'på', |
| 10220 | + 'centralnotice-off' => 'av', |
| 10221 | + 'centralnotice-added' => 'Lade till <span class="cn-new-value">$1</span>', |
| 10222 | + 'centralnotice-removed' => 'Tog bort <span class="cn-old-value">$1</span>', |
9917 | 10223 | ); |
9918 | 10224 | |
9919 | 10225 | /** Swahili (Kiswahili) |
— | — | @@ -10511,7 +10817,7 @@ |
10512 | 10818 | 'centralnotice-banner-type' => 'Banner görnüşi:', |
10513 | 10819 | 'centralnotice-banner-hidable' => 'Statik/Gizlenilýän', |
10514 | 10820 | 'centralnotice-banner-collapsible' => 'Düýrlenýän', |
10515 | | - 'centralnotice-geotargeted' => 'Geo-bellikli', |
| 10821 | + 'centralnotice-geo' => 'Geo-bellikli', |
10516 | 10822 | 'centralnotice-countries' => 'Ýurtlar', |
10517 | 10823 | 'centralnotice-allocation' => 'Ýerleşiş', |
10518 | 10824 | 'centralnotice-view-allocation' => 'Bannerleriň ýerleşişini görkez', |
— | — | @@ -10642,7 +10948,7 @@ |
10643 | 10949 | 'centralnotice-banner-type' => 'Uri ng bandera:', |
10644 | 10950 | 'centralnotice-banner-hidable' => 'Hindi tumitinag/Maitatago', |
10645 | 10951 | 'centralnotice-banner-collapsible' => 'Maititiklop', |
10646 | | - 'centralnotice-geotargeted' => 'Puntiryang heograpiya', |
| 10952 | + 'centralnotice-geo' => 'Puntiryang heograpiya', |
10647 | 10953 | 'centralnotice-countries' => 'Mga bansa', |
10648 | 10954 | 'centralnotice-allocation' => 'Paglalaan', |
10649 | 10955 | 'centralnotice-view-allocation' => 'Tingnan ang kabahagi ng bandera', |
— | — | @@ -10790,7 +11096,7 @@ |
10791 | 11097 | 'centralnotice-banner-type' => 'Afiş türü:', |
10792 | 11098 | 'centralnotice-banner-hidable' => 'Statik/Gizlenebilir', |
10793 | 11099 | 'centralnotice-banner-collapsible' => 'Daralabilir', |
10794 | | - 'centralnotice-geotargeted' => 'Geo-hedefli', |
| 11100 | + 'centralnotice-geo' => 'Geo-hedefli', |
10795 | 11101 | 'centralnotice-countries' => 'Ülkeler', |
10796 | 11102 | 'centralnotice-allocation' => 'Tahsis', |
10797 | 11103 | 'centralnotice-view-allocation' => 'Afiş tahsisini gör', |
— | — | @@ -10913,7 +11219,7 @@ |
10914 | 11220 | 'centralnotice-banner-type' => 'Өлгенең төре:', |
10915 | 11221 | 'centralnotice-banner-hidable' => 'Тикторышлы/ Ябылучан', |
10916 | 11222 | 'centralnotice-banner-collapsible' => 'Ябылучан', |
10917 | | - 'centralnotice-geotargeted' => 'Геоялгану', |
| 11223 | + 'centralnotice-geo' => 'Геоялгану', |
10918 | 11224 | 'centralnotice-countries' => 'Илләр', |
10919 | 11225 | 'centralnotice-allocation' => 'Таралу', |
10920 | 11226 | 'centralnotice-view-allocation' => 'Өлгеләрнең таралуын карау', |
— | — | @@ -11080,7 +11386,7 @@ |
11081 | 11387 | 'centralnotice-banner-type' => 'Тип банера:', |
11082 | 11388 | 'centralnotice-banner-hidable' => 'Статичний / Приховуваний', |
11083 | 11389 | 'centralnotice-banner-collapsible' => 'Що згортається', |
11084 | | - 'centralnotice-geotargeted' => "Геоприв'язка", |
| 11390 | + 'centralnotice-geo' => "Геоприв'язка", |
11085 | 11391 | 'centralnotice-countries' => 'Країни', |
11086 | 11392 | 'centralnotice-allocation' => 'Розподіл', |
11087 | 11393 | 'centralnotice-view-allocation' => 'Переглянути розміщення банера', |
— | — | @@ -11214,7 +11520,7 @@ |
11215 | 11521 | 'centralnotice-banner-type' => 'Tipo de banner:', |
11216 | 11522 | 'centralnotice-banner-hidable' => 'Statico/Che se sara', |
11217 | 11523 | 'centralnotice-banner-collapsible' => 'Che se sara', |
11218 | | - 'centralnotice-geotargeted' => 'Geolocalisà', |
| 11524 | + 'centralnotice-geo' => 'Geolocalisà', |
11219 | 11525 | 'centralnotice-countries' => 'Paesi', |
11220 | 11526 | 'centralnotice-allocation' => 'Alocassion', |
11221 | 11527 | 'centralnotice-view-allocation' => 'Varda la disposission dei banner', |
— | — | @@ -11335,6 +11641,7 @@ |
11336 | 11642 | 'centralnotice-list-templates' => 'Liệt kê các bảng', |
11337 | 11643 | 'centralnotice-multiple-projects' => 'đa ngữ ($1)', |
11338 | 11644 | 'centralnotice-multiple-languages' => 'đa ngữ ($1)', |
| 11645 | + 'centralnotice-multiple-countries' => 'Đa quốc gia ($1)', |
11339 | 11646 | 'centralnotice-all-projects' => 'Tất cả các dự án', |
11340 | 11647 | 'centralnotice-language-listing' => '$1 – $2', |
11341 | 11648 | 'centralnotice-translations' => 'Bản dịch', |
— | — | @@ -11416,7 +11723,7 @@ |
11417 | 11724 | 'centralnotice-banner-fundraising' => 'Đây là một biểu ngữ gây quỹ', |
11418 | 11725 | 'centralnotice-banner-fundraising-help' => 'Tạo một thẻ neo trong phần chính của biểu ngữ có thuộc tính id="cn_fundraising_link" và nhập tên của ít nhất một trang đích ở dưới, thí dụ “JimmyAppeal01”. Thuộc tính href của liên kết sẽ được biên soạn tự động.', |
11419 | 11726 | 'centralnotice-banner-landing-pages' => 'Các trang đích (định giới bằng dấu phẩy):', |
11420 | | - 'centralnotice-geotargeted' => 'Mục tiêu địa lý', |
| 11727 | + 'centralnotice-geo' => 'Mục tiêu địa lý', |
11421 | 11728 | 'centralnotice-countries' => 'Quốc gia', |
11422 | 11729 | 'centralnotice-allocation' => 'Phân bổ', |
11423 | 11730 | 'centralnotice-view-allocation' => 'Xem cách phân phối bảng', |
— | — | @@ -11432,6 +11739,17 @@ |
11433 | 11740 | 'centralnotice-preferred' => 'Nổi bật hơn', |
11434 | 11741 | 'centralnotice-logs' => 'Nhật trình', |
11435 | 11742 | 'centralnotice-view-logs' => 'Xem nhật trình', |
| 11743 | + 'centralnotice-timestamp' => 'Thời gian', |
| 11744 | + 'centralnotice-user' => 'Người dùng', |
| 11745 | + 'centralnotice-action' => 'Tác vụ', |
| 11746 | + 'centralnotice-changed' => 'Thay đổi từ <span class="cn-old-value">$1</span> thành <span class="cn-new-value">$2</span>', |
| 11747 | + 'centralnotice-on' => 'bật', |
| 11748 | + 'centralnotice-off' => 'tắt', |
| 11749 | + 'centralnotice-added' => 'Thêm <span class="cn-new-value">$1</span>', |
| 11750 | + 'centralnotice-removed' => 'Gỡ <span class="cn-old-value">$1</span>', |
| 11751 | + 'centralnotice-banners-changed' => 'Đã thay đổi các chỉ định biểu ngữ', |
| 11752 | + 'centralnotice-no-assignments' => 'không chỉ định biểu ngữ', |
| 11753 | + 'centralnotice-talk-link' => 'thảo luận', |
11436 | 11754 | ); |
11437 | 11755 | |
11438 | 11756 | /** Volapük (Volapük) |
— | — | @@ -11706,7 +12024,7 @@ |
11707 | 12025 | 'centralnotice-settings' => '设置', |
11708 | 12026 | 'centralnotice-edit-template' => '编辑模板', |
11709 | 12027 | 'centralnotice-edit-template-summary' => '欲创建一个可本地化的消息,请用三对花括号分隔含连字符的字符串,例如{{{jimbo-quote}}}。', |
11710 | | - 'centralnotice-message' => '消息', |
| 12028 | + 'centralnotice-message' => '信息', |
11711 | 12029 | 'centralnotice-message-not-set' => '没有设置消息', |
11712 | 12030 | 'centralnotice-clone' => '建立副本', |
11713 | 12031 | 'centralnotice-clone-notice' => '创建一个模板的副本', |
— | — | @@ -11729,7 +12047,7 @@ |
11730 | 12048 | 'centralnotice-banner-collapsible' => '可收缩', |
11731 | 12049 | 'centralnotice-banner-fundraising' => '这是一个筹款横幅', |
11732 | 12050 | 'centralnotice-banner-landing-pages' => '登录页(逗号分隔):', |
11733 | | - 'centralnotice-geotargeted' => '已地理定位的', |
| 12051 | + 'centralnotice-geo' => '已地理定位的', |
11734 | 12052 | 'centralnotice-countries' => '国家', |
11735 | 12053 | 'centralnotice-allocation' => '配额', |
11736 | 12054 | 'centralnotice-view-allocation' => '察看横幅配额', |
— | — | @@ -11872,7 +12190,7 @@ |
11873 | 12191 | 'centralnotice-banner-type' => '橫幅類型:', |
11874 | 12192 | 'centralnotice-banner-hidable' => '靜態可隱藏', |
11875 | 12193 | 'centralnotice-banner-collapsible' => '可摺疊', |
11876 | | - 'centralnotice-geotargeted' => '已地理定位的', |
| 12194 | + 'centralnotice-geo' => '已地理定位的', |
11877 | 12195 | 'centralnotice-countries' => '國家', |
11878 | 12196 | 'centralnotice-allocation' => '分配', |
11879 | 12197 | 'centralnotice-view-allocation' => '查看橫幅分配', |
Index: branches/wmf/1.17wmf1/extensions/CentralNotice/CentralNotice.db.php |
— | — | @@ -118,13 +118,73 @@ |
119 | 119 | |
120 | 120 | return $notices; |
121 | 121 | } |
| 122 | + |
| 123 | + /* |
| 124 | + * Return settings for a campaign |
| 125 | + * @param $campaignName string: The name of the campaign |
| 126 | + * @param $detailed boolean: Whether or not to include targeting and banner assignment info |
| 127 | + * @return an array of settings |
| 128 | + */ |
| 129 | + static function getCampaignSettings( $campaignName, $detailed = true ) { |
| 130 | + global $wgCentralDBname; |
| 131 | + |
| 132 | + $dbr = wfGetDB( DB_SLAVE, array(), $wgCentralDBname ); |
| 133 | + |
| 134 | + $campaign = array(); |
122 | 135 | |
| 136 | + // Get campaign info from database |
| 137 | + $row = $dbr->selectRow( 'cn_notices', |
| 138 | + array( |
| 139 | + 'not_id', |
| 140 | + 'not_start', |
| 141 | + 'not_end', |
| 142 | + 'not_enabled', |
| 143 | + 'not_preferred', |
| 144 | + 'not_locked', |
| 145 | + 'not_geo' |
| 146 | + ), |
| 147 | + array( 'not_name' => $campaignName ), |
| 148 | + __METHOD__ |
| 149 | + ); |
| 150 | + if ( $row ) { |
| 151 | + $campaign = array( |
| 152 | + 'start' => $row->not_start, |
| 153 | + 'end' => $row->not_end, |
| 154 | + 'enabled' => $row->not_enabled, |
| 155 | + 'preferred' => $row->not_preferred, |
| 156 | + 'locked' => $row->not_locked, |
| 157 | + 'geo' => $row->not_geo |
| 158 | + ); |
| 159 | + } |
| 160 | + |
| 161 | + if ( $detailed ) { |
| 162 | + $projects = CentralNotice::getNoticeProjects( $campaignName ); |
| 163 | + $languages = CentralNotice::getNoticeLanguages( $campaignName ); |
| 164 | + $geo_countries = CentralNotice::getNoticeCountries( $campaignName ); |
| 165 | + $campaign['projects'] = implode( ", ", $projects ); |
| 166 | + $campaign['languages'] = implode( ", ", $languages ); |
| 167 | + $campaign['countries'] = implode( ", ", $geo_countries ); |
| 168 | + |
| 169 | + $bannersIn = CentralNoticeDB::getCampaignBanners( $row->not_id ); |
| 170 | + $bannersOut = array(); |
| 171 | + // All we want are the banner names and weights |
| 172 | + foreach ( $bannersIn as $key => $row ) { |
| 173 | + $outKey = $bannersIn[$key]['name']; |
| 174 | + $bannersOut[$outKey] = $bannersIn[$key]['weight']; |
| 175 | + } |
| 176 | + // Encode into a JSON string for storage |
| 177 | + $campaign['banners'] = FormatJson::encode( $bannersOut ); |
| 178 | + } |
| 179 | + |
| 180 | + return $campaign; |
| 181 | + } |
| 182 | + |
123 | 183 | /* |
124 | 184 | * Given one or more campaign ids, return all banners bound to them |
125 | 185 | * @param $campaigns An array of id numbers |
126 | 186 | * @return a 2D array of banners with associated weights and settings |
127 | 187 | */ |
128 | | - static function selectBannersAssigned( $campaigns ) { |
| 188 | + static function getCampaignBanners( $campaigns ) { |
129 | 189 | global $wgCentralDBname; |
130 | 190 | |
131 | 191 | $dbr = wfGetDB( DB_SLAVE, array(), $wgCentralDBname ); |
— | — | @@ -170,6 +230,90 @@ |
171 | 231 | return $templates; |
172 | 232 | } |
173 | 233 | |
| 234 | + /** |
| 235 | + * Lookup function for active banners under a given language/project/location. This function is |
| 236 | + * called by SpecialBannerListLoader::getJsonList() in order to build the banner list JSON for |
| 237 | + * each project. |
| 238 | + * @return a 2D array of running banners with associated weights and settings |
| 239 | + */ |
| 240 | + static function getBannersByTarget( $project, $language, $location = null ) { |
| 241 | + global $wgCentralDBname; |
| 242 | + |
| 243 | + $campaigns = array(); |
| 244 | + $dbr = wfGetDB( DB_SLAVE, array(), $wgCentralDBname ); |
| 245 | + $encTimestamp = $dbr->addQuotes( $dbr->timestamp() ); |
| 246 | + |
| 247 | + // Pull non-geotargeted campaigns |
| 248 | + $campaignResults1 = $dbr->select( |
| 249 | + array( |
| 250 | + 'cn_notices', |
| 251 | + 'cn_notice_projects', |
| 252 | + 'cn_notice_languages' |
| 253 | + ), |
| 254 | + array( |
| 255 | + 'not_id' |
| 256 | + ), |
| 257 | + array( |
| 258 | + "not_start <= $encTimestamp", |
| 259 | + "not_end >= $encTimestamp", |
| 260 | + 'not_enabled = 1', // enabled |
| 261 | + 'not_geo = 0', // not geotargeted |
| 262 | + 'np_notice_id = cn_notices.not_id', |
| 263 | + 'np_project' => $project, |
| 264 | + 'nl_notice_id = cn_notices.not_id', |
| 265 | + 'nl_language' => $language |
| 266 | + ), |
| 267 | + __METHOD__ |
| 268 | + ); |
| 269 | + foreach ( $campaignResults1 as $row ) { |
| 270 | + $campaigns[] = $row->not_id; |
| 271 | + } |
| 272 | + if ( $location ) { |
| 273 | + |
| 274 | + // Normalize location parameter (should be an uppercase 2-letter country code) |
| 275 | + preg_match( '/[a-zA-Z][a-zA-Z]/', $location, $matches ); |
| 276 | + if ( $matches ) { |
| 277 | + $location = strtoupper( $matches[0] ); |
| 278 | + |
| 279 | + // Pull geotargeted campaigns |
| 280 | + $campaignResults2 = $dbr->select( |
| 281 | + array( |
| 282 | + 'cn_notices', |
| 283 | + 'cn_notice_projects', |
| 284 | + 'cn_notice_languages', |
| 285 | + 'cn_notice_countries' |
| 286 | + ), |
| 287 | + array( |
| 288 | + 'not_id' |
| 289 | + ), |
| 290 | + array( |
| 291 | + "not_start <= $encTimestamp", |
| 292 | + "not_end >= $encTimestamp", |
| 293 | + 'not_enabled = 1', // enabled |
| 294 | + 'not_geo = 1', // geotargeted |
| 295 | + 'nc_notice_id = cn_notices.not_id', |
| 296 | + 'nc_country' => $location, |
| 297 | + 'np_notice_id = cn_notices.not_id', |
| 298 | + 'np_project' => $project, |
| 299 | + 'nl_notice_id = cn_notices.not_id', |
| 300 | + 'nl_language' => $language |
| 301 | + ), |
| 302 | + __METHOD__ |
| 303 | + ); |
| 304 | + foreach ( $campaignResults2 as $row ) { |
| 305 | + $campaigns[] = $row->not_id; |
| 306 | + } |
| 307 | + } |
| 308 | + } |
| 309 | + |
| 310 | + $templates = array(); |
| 311 | + if ( $campaigns ) { |
| 312 | + // Pull all banners assigned to the campaigns |
| 313 | + $templates = CentralNoticeDB::getCampaignBanners( $campaigns ); |
| 314 | + } |
| 315 | + return $templates; |
| 316 | + } |
| 317 | + |
174 | 318 | /* |
175 | 319 | * See if a given banner exists in the database |
176 | 320 | */ |
Index: branches/wmf/1.17wmf1/extensions/CentralNotice/centralnotice.js |
— | — | @@ -1,3 +1,17 @@ |
| 2 | +function toggleDisplay( logId ) { |
| 3 | + var thisCollapsed = document.getElementById( 'cn-collapsed-'+logId ); |
| 4 | + var thisUncollapsed = document.getElementById( 'cn-uncollapsed-'+logId ); |
| 5 | + var thisDetails = document.getElementById( 'cn-log-details-'+logId ); |
| 6 | + if ( thisCollapsed.style.display == "none" ) { |
| 7 | + thisUncollapsed.style.display = "none"; |
| 8 | + thisCollapsed.style.display = "block"; |
| 9 | + thisDetails.style.display = "none"; |
| 10 | + } else { |
| 11 | + thisCollapsed.style.display = "none"; |
| 12 | + thisUncollapsed.style.display = "block"; |
| 13 | + thisDetails.style.display = "table-row"; |
| 14 | + } |
| 15 | +} |
2 | 16 | function selectProjects( selectAll ) { |
3 | 17 | var selectBox = document.getElementById('projects[]'); |
4 | 18 | var firstSelect = selectBox.options.length - 1; |
Property changes on: branches/wmf/1.17wmf1/extensions/CentralNotice |
___________________________________________________________________ |
Modified: svn:mergeinfo |
5 | 19 | Merged /trunk/extensions/CentralNotice:r91118-92408 |