https://www.mediawiki.org/wiki/Special:Code/MediaWiki/113612

Revision: 113612
Author:   santhosh
Date:     2012-03-12 05:28:15 +0000 (Mon, 12 Mar 2012)
Log Message:
-----------
Remove the restriction of 'page can reside in only one agregategroup'
Now one page can belong to multiple aggregrate groups.

Modified Paths:
--------------
    
trunk/extensions/Translate/resources/ext.translate.special.aggregategroups.js
    trunk/extensions/Translate/specials/SpecialAggregateGroups.php

Modified: 
trunk/extensions/Translate/resources/ext.translate.special.aggregategroups.js
===================================================================
--- 
trunk/extensions/Translate/resources/ext.translate.special.aggregategroups.js   
    2012-03-12 05:24:54 UTC (rev 113611)
+++ 
trunk/extensions/Translate/resources/ext.translate.special.aggregategroups.js   
    2012-03-12 05:28:15 UTC (rev 113612)
@@ -4,17 +4,20 @@
 
                function associate( event ){
                        var aggregategroup = event.target.id;
-                       var selected = $( '#tp-aggregate-groups-select-'+ 
aggregategroup + ' option:selected' ).text();
-                       var group = $( '#tp-aggregate-groups-select-'+ 
aggregategroup + ' option:selected' ).val();
+                       var $selected = $( '#tp-aggregate-groups-select-'+ 
aggregategroup + ' option:selected' );
+                       var groupName = $selected.text();
+                       var groupId = $selected.val();
                        var $select= $( 'select.tp-aggregate-group-chooser' ) ;
 
                        var successFunction = function( data, textStatus ) {
                                if ( data.error ) {
                                        alert( data.error.info );
                                }else{
-                                       $( '#tp-aggregate-groups-ol-'+ 
aggregategroup ).append( '<li><a id='+group+' 
href='+selected+'>'+selected+'</a><span class=\'tp-aggregate-remove-button\' 
id='+group+'></span></li>' );
-                                       $( 'option#'+ group ).remove();
-                                       $( 'span#'+group ).on ( "click", 
function(event){ dissociate(event); } );
+                                       $( '#tp-aggregate-groups-ol-'+ 
aggregategroup ).append( '<li><a id='+groupId+' 
href='+groupName+'>'+groupName+'</a><span class=\'tp-aggregate-remove-button\' 
id='+groupId+'></span></li>' );
+                                       // remove this group from the select.
+                                       $selected.remove();
+                                       // bind click event to the 
dissociate(remove) button.
+                                       $( 'span#'+groupId ).on ( "click", 
function(event){ dissociate(event); } );
                                }
                        };
 
@@ -22,7 +25,7 @@
                                action: "aggregategroups",
                                'do' : 'associate',
                                token: $( "#token" ).val(),
-                               group: group,
+                               group: groupId,
                                aggregategroup: aggregategroup,
                                format: "json"
                        };
@@ -30,19 +33,16 @@
                }
 
                function dissociate(event){
-                       var group = event.target.id;
-                       var selected = $( 'a#'+group ).text();
-                       var $select= $( 'select.tp-aggregate-group-chooser' ) ;
-                       var aggregategroup = $( 'a#'+group ).closest( 'div' 
).find( 'h2' ).attr( 'id' );
-
+                       var groupId = event.target.id;
+                       var groupName = $( 'a#'+groupId ).text();
+                       var aggregategroup = $( 'a#'+groupId ).closest( 'div' 
).find( 'h2' ).attr( 'id' );
+                       var $select =  $( '#tp-aggregate-groups-select-'+ 
aggregategroup );
                        var successFunction = function( data, textStatus ) {
                                if ( data.error ) {
                                        alert( data.error.info );
                                }else{
-                                       $select.each( function(){
-                                               $( this ).append( '<option 
value="'+group+'">'+selected+'</option>' );
-                                       } );
-                                       $( 'span#'+ group ).closest( 'li' 
).remove();
+                                       $select .append( '<option 
value="'+groupId+'">'+groupName+'</option>' );
+                                       $( 'span#'+ groupId ).closest( 'li' 
).remove();
                                }
                        };
 
@@ -50,7 +50,7 @@
                                action: "aggregategroups",
                                'do' : 'dissociate',
                                token: $( "#token" ).val(),
-                               group: group,
+                               group: groupId,
                                aggregategroup: aggregategroup,
                                format: "json"
                        };
@@ -59,19 +59,10 @@
 
                function removeGroup(event){
                        var aggregategroup = event.target.id;
-                       var $select= $( 'select.tp-aggregate-group-chooser') ;
-
                        var successFunction = function( data, textStatus ) {
                                if ( data.error ) {
                                        alert( data.error.info );
                                }else{
-                                       $( 'span#'+ aggregategroup 
).parent().parent().find('li a').each(function(){
-                                               $groupId = $( this ).attr('id');
-                                               $groupName = $( this ).text();
-                                               $select.each( function(){
-                                                       $ (this 
).append('<option value="'+$groupId+'">'+$groupName+'</option>');
-                                               } );
-                                       });
                                        $( 'span#'+ aggregategroup 
).closest('div#tpt-aggregate-group').remove();
                                }
                        };

Modified: trunk/extensions/Translate/specials/SpecialAggregateGroups.php
===================================================================
--- trunk/extensions/Translate/specials/SpecialAggregateGroups.php      
2012-03-12 05:24:54 UTC (rev 113611)
+++ trunk/extensions/Translate/specials/SpecialAggregateGroups.php      
2012-03-12 05:28:15 UTC (rev 113612)
@@ -84,7 +84,6 @@
                $aggregategroups = ApiAggregateGroups::getAggregateGroups( );
                $res = $this->loadPagesFromDB();
                $pages = $this->buildPageArray( $res );
-               $pages = $this->filterUnGroupedPages( $pages,  $aggregategroups 
);
                foreach ( $aggregategroups as $id => $group ) {
                        $wgOut->addHtml( "<div id='tpt-aggregate-group'>" );
 
@@ -112,7 +111,7 @@
                        }
                        $wgOut->addHtml( "</ol>" );
 
-                       $this->groupSelector ( $pages, $id );
+                       $this->groupSelector ( $pages, $group );
                        $addButton = Html::element( 'input',
                                array( 'type' => 'button',
                                        'value' =>  wfMsg( 
'tpt-aggregategroup-add' ),
@@ -148,7 +147,7 @@
                $wgOut->addHtml( $newGroupDiv );
        }
 
-       protected function groupSelector(  $pages, $id ) {
+       protected function groupSelector(  $pages, $group ) {
                global $wgOut;
                $out = $wgOut;
                if ( !count( $pages ) ) {
@@ -156,16 +155,19 @@
                        return;
                }
                $options = "\n";
+               $subgroups = $group['subgroups'];
                if ( count( $pages ) ) {
                        foreach ( $pages as $pageId => $page ) {
                                $title =  $page['title']->getText();
                                $pageid = 
TranslatablePage::getMessageGroupIdFromTitle( $page['title'] ) ;
-                               $options .= Xml::option(  $title , $pageid, 
false , array( 'id' => $pageid ) ) . "\n";
+                               if ( ! isset( $subgroups[$pageid] ) ) {
+                                       $options .= Xml::option(  $title , 
$pageid, false , array( 'id' => $pageid ) ) . "\n";
+                               }
                        }
                }
                $selector = Xml::tags( 'select',
                                array(
-                                       'id' => 'tp-aggregate-groups-select-' . 
$id,
+                                       'id' => 'tp-aggregate-groups-select-' . 
 $group['id'],
                                        'name' => 'group',
                                        'class' => 'tp-aggregate-group-chooser',
                                        ),
@@ -174,17 +176,4 @@
                $out->addHtml( $selector );
        }
 
-       protected function filterUnGroupedPages( $pages,  $aggregategroups ) {
-               foreach ( $aggregategroups as  $aggregategroup ) {
-                       $subgroups = $aggregategroup['subgroups'];
-                       foreach ( $pages as  $id => $page ) {
-                                       $pageid = 
TranslatablePage::getMessageGroupIdFromTitle( $page['title'] ) ;
-                                       if ( isset( $subgroups[$pageid] ) ) {
-                                               unset( $pages[$id] );
-                                       }
-                       }
-               }
-               return $pages;
-       }
-
 }


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

Reply via email to