http://www.mediawiki.org/wiki/Special:Code/MediaWiki/76351

Revision: 76351
Author:   kaldari
Date:     2010-11-08 23:29:23 +0000 (Mon, 08 Nov 2010)
Log Message:
-----------
more work towards multi-project selection - bug 20229

Modified Paths:
--------------
    trunk/extensions/CentralNotice/SpecialCentralNotice.php
    trunk/extensions/CentralNotice/centralnotice.js

Modified: trunk/extensions/CentralNotice/SpecialCentralNotice.php
===================================================================
--- trunk/extensions/CentralNotice/SpecialCentralNotice.php     2010-11-08 
23:21:04 UTC (rev 76350)
+++ trunk/extensions/CentralNotice/SpecialCentralNotice.php     2010-11-08 
23:29:23 UTC (rev 76351)
@@ -760,7 +760,6 @@
                                'not_end',
                                'not_enabled',
                                'not_preferred',
-                               'not_project',
                                'not_locked',
                                'not_geo'
                        ),
@@ -789,7 +788,7 @@
                                $isEnabled = $wgRequest->getCheck( 'enabled' );
                                $isPreferred = $wgRequest->getCheck( 
'preferred' );
                                $isLocked = $wgRequest->getCheck( 'locked' );
-                               $projectSelected = $wgRequest->getVal( 
'project_name' );
+                               $noticeProjects = $wgRequest->getArray( 
'projects', array() );
                                $noticeLanguages = $wgRequest->getArray( 
'project_languages', array() );
                                $isGeotargeted = $wgRequest->getCheck( 
'geotargeted' );
                                $countries = $wgRequest->getArray( 
'geo_countries', array() );
@@ -799,7 +798,7 @@
                                $isEnabled = ( $row->not_enabled == '1' );
                                $isPreferred = ( $row->not_preferred == '1' );
                                $isLocked = ( $row->not_locked == '1' );
-                               $projectSelected = $row->not_project;
+                               $noticeProjects = $this->getNoticeProjects( 
$notice );
                                $noticeLanguages = $this->getNoticeLanguages( 
$notice );
                                $isGeotargeted = ( $row->not_geo == '1' );
                                $countries = $this->getNoticeCountries( $notice 
);
@@ -833,8 +832,10 @@
                        $htmlOut .= Xml::closeElement( 'tr' );
                        // Project
                        $htmlOut .= Xml::openElement( 'tr' );
-                       $htmlOut .= Xml::tags( 'td', array(), wfMsgHtml( 
'centralnotice-projects' ) );
-                       $htmlOut .= Xml::tags( 'td', array(), 
$this->projectDropDownList( $projectSelected ) );
+                       $htmlOut .= Xml::tags( 'td', array( 'valign' => 'top' 
), 
+                               wfMsgHtml( 'centralnotice-projects' ) );
+                       $htmlOut .= Xml::tags( 'td', array(), 
+                               $this->projectMultiSelector( $noticeProjects ) 
);
                        $htmlOut .= Xml::closeElement( 'tr' );
                        // Languages
                        $htmlOut .= Xml::openElement( 'tr' );
@@ -1256,6 +1257,21 @@
                        return null;
                 }
        }
+       
+       function getNoticeProjects( $noticeName ) {
+               $dbr = wfGetDB( DB_SLAVE );
+               $eNoticeName = htmlspecialchars( $noticeName );
+               $row = $dbr->selectRow( 'cn_notices', 'not_id', array( 
'not_name' => $eNoticeName ) );
+               $projects = array();
+               if ( $row ) {
+                       $res = $dbr->select( 'cn_notice_projects', 
'np_project', 
+                               array( 'np_notice_id' => $row->not_id ) );
+                       foreach ( $res as $projectRow ) {
+                               $projects[] = $projectRow->np_project;
+                       }
+               }
+               return $projects;
+       }
 
        function getNoticeLanguages( $noticeName ) {
                $dbr = wfGetDB( DB_SLAVE );

Modified: trunk/extensions/CentralNotice/centralnotice.js
===================================================================
--- trunk/extensions/CentralNotice/centralnotice.js     2010-11-08 23:21:04 UTC 
(rev 76350)
+++ trunk/extensions/CentralNotice/centralnotice.js     2010-11-08 23:29:23 UTC 
(rev 76351)
@@ -1,3 +1,10 @@
+function selectProjects( selectAll ) {
+       var selectBox = document.getElementById('projects[]');
+       var firstSelect = selectBox.options.length - 1;
+       for (var i = firstSelect; i >= 0; i--) {
+               selectBox.options[i].selected = selectAll;
+       }
+}
 function selectLanguages( selectAll ) {
        var selectBox = document.getElementById('project_languages[]');
        var firstSelect = selectBox.options.length - 1;


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

Reply via email to