Santhosh has submitted this change and it was merged.
Change subject: Dynamic rendering and selection of workflow states
......................................................................
Dynamic rendering and selection of workflow states
Change-Id: Ic0daa07b8ab26b607d02bf3b44fb07f8fa94c257
---
M Translate.php
M resources/js/ext.translate.base.js
M resources/js/ext.translate.groupselector.js
M resources/js/ext.translate.messagetable.js
M resources/js/ext.translate.special.translate.js
M specials/SpecialTranslate.php
6 files changed, 86 insertions(+), 60 deletions(-)
Approvals:
Santhosh: Verified; Looks good to me, approved
diff --git a/Translate.php b/Translate.php
index 561fffc..ef502f3 100644
--- a/Translate.php
+++ b/Translate.php
@@ -466,6 +466,7 @@
'translate-workflow-set-error-alreadyset',
'translate-js-support-unsaved-warning',
'translate-documentation-language',
+ 'translate-workflow-state-',
),
) + $resourcePaths;
diff --git a/resources/js/ext.translate.base.js
b/resources/js/ext.translate.base.js
index d424f92..4797433 100644
--- a/resources/js/ext.translate.base.js
+++ b/resources/js/ext.translate.base.js
@@ -12,6 +12,7 @@
// indexed by language code
languageStatsLoader: {},
+ messageGroups: {},
/**
* Get language stats for a language from the API.
* @param {string} language Language code.
@@ -34,6 +35,23 @@
return mw.translate.languageStatsLoader[language];
},
+ loadMessageGroups: function () {
+ var loader,
+ queryParams = {
+ action: 'query',
+ format: 'json',
+ meta: 'messagegroups',
+ mgformat: 'tree',
+ mgprop:
'id|label|description|icon|priority|prioritylangs|priorityforce|workflowstates',
+ mgiconsize: '32'
+ };
+ loader = new mw.Api().get( queryParams );
+ loader.done( function ( result ) {
+ mw.translate.messageGroups =
result.query.messagegroups;
+ } );
+ return loader;
+ },
+
/**
* Check if the current user is allowed to translate on this
wiki.
* @return {boolean}
diff --git a/resources/js/ext.translate.groupselector.js
b/resources/js/ext.translate.groupselector.js
index e9d3161..9078cd5 100644
--- a/resources/js/ext.translate.groupselector.js
+++ b/resources/js/ext.translate.groupselector.js
@@ -374,27 +374,8 @@
* @param parentGroupId
*/
loadGroups: function ( parentGroupId ) {
- var queryParams,
- groupSelector = this;
-
- if ( !TranslateMessageGroupSelector.loader ) {
- queryParams = {
- action: 'query',
- format: 'json',
- meta: 'messagegroups',
- mgformat: 'tree',
- mgprop:
'id|label|description|icon|priority|prioritylangs|priorityforce|workflowstates',
- // Keep this in sync with css!
- mgiconsize: '32'
- };
-
- TranslateMessageGroupSelector.loader = new
mw.Api().get( queryParams );
- }
-
- TranslateMessageGroupSelector.loader.done( function (
result ) {
- groupSelector.$menu.data( 'msggroups',
result.query.messagegroups );
- groupSelector.addGroupRows( parentGroupId, null
);
- } );
+ this.$menu.data( 'msggroups',
mw.translate.messageGroups );
+ this.addGroupRows( parentGroupId, null );
},
/**
@@ -580,7 +561,7 @@
var i, messageGroup;
if ( !messageGroups ) {
- messageGroups = this.$menu.data( 'msggroups' );
+ messageGroups = mw.translate.messageGroups;
}
for ( i = 0; i < messageGroups.length; i++ ) {
diff --git a/resources/js/ext.translate.messagetable.js
b/resources/js/ext.translate.messagetable.js
index ff30c4d..fb9b9c9 100644
--- a/resources/js/ext.translate.messagetable.js
+++ b/resources/js/ext.translate.messagetable.js
@@ -270,7 +270,8 @@
$.when(
mw.translate.getMessages( messagegroup,
targetLanguage, offset, pageSize, filter )
).then( function ( result ) {
- var messages = result.query.messagecollection;
+ var messages = result.query.messagecollection,
+ $workflowSelector = $(
'ul.tux-workflow-status-selector ' );
$.each( messages, function ( index, message ) {
message.group = messagegroup;
@@ -301,6 +302,20 @@
$( '.tux-messagetable-loader-more' ).text(
mw.msg(
'tux-messagetable-loading-messages', Math.min( remaining, pageSize ) )
);
+
+ mw.translate.prepareWorkflowSelector(
mw.translate.getGroup( messagegroup ) );
+ if ( result.query.metadata &&
result.query.metadata.state ) {
+ $workflowSelector.find( 'li' ).each(
function () {
+ var $this = $( this );
+
+ if ( $this.data( 'state' ).id
=== result.query.metadata.state ) {
+ $(
'.tux-workflow-status' ).text( mw.msg( 'translate-workflowstatus',
$this.text() ) );
+ $this.addClass(
'selected' );
+ } else {
+ $this.removeClass(
'selected' );
+ }
+ } );
+ }
} );
},
@@ -394,7 +409,6 @@
$( this ).addClass( 'hide' );
} );
- $( '.tux-messagelist' ).messagetable();
} );
var delay = ( function () {
diff --git a/resources/js/ext.translate.special.translate.js
b/resources/js/ext.translate.special.translate.js
index df31079..a1e3ae5 100644
--- a/resources/js/ext.translate.special.translate.js
+++ b/resources/js/ext.translate.special.translate.js
@@ -80,6 +80,7 @@
mw.translate.loadMessages( changes );
mw.translate.changeUrl( changes );
+ mw.translate.prepareWorkflowSelector( group );
},
changeLanguage: function ( language ) {
@@ -142,6 +143,32 @@
};
return api.post( params );
+ },
+
+
+ prepareWorkflowSelector: function ( group ) {
+ var $selector = $( 'ul.tux-workflow-status-selector' ),
+ workflowstates = group.workflowstates;
+
+ $selector.empty();
+
+ $.each( workflowstates, function ( id, workflowstate ) {
+ if ( workflowstate._canchange ) {
+ workflowstate.id = id;
+ $selector.append( $('<li>')
+ .data( 'state', workflowstate )
+ .text( workflowstate._name )
+ .on( 'click', function() {
+ $selector.find(
'.selected' ).removeClass( 'selected' );
+ $( this ).addClass(
'selected' )
+
.parent().addClass( 'hide' );
+
workflowSelectionHandler( $( this ).data( 'state' ) );
+ })
+ );
+ }
+ } );
+ $( '.tux-workflow-status' ).text( mw.msg(
'translate-workflow-state-' ) );
+ return $selector;
}
} );
@@ -201,6 +228,19 @@
.filter( '.translated, .proofread' );
}
+ function workflowSelectionHandler ( state ) {
+ var $status = $( '.tux-workflow-status' );
+
+ $status.text( mw.msg( 'translate-workflow-set-doing' ) );
+ mw.translate.changeWorkflowStatus( $status.data( 'group' ),
+ $status.data( 'language' ),
+ state.id,
+ $status.data( 'token' )
+ ).done( function() {
+ $status.text( mw.msg( 'translate-workflowstatus',
state._name ) );
+ } );
+ }
+
$( document ).ready( function () {
var uiLanguage, $translateContainer, $hideTranslatedButton,
docLanguageAutonym, docLanguageCode, ulsOptions,
filter, uri;
@@ -223,10 +263,11 @@
ourWindowOnBeforeUnloadRegister();
prepareWorkflowSelector();
-
$.when(
// Get ready with language stats
- mw.translate.loadLanguageStats( uiLanguage )
+ mw.translate.loadLanguageStats( uiLanguage ),
+ // Get ready with message groups
+ mw.translate.loadMessageGroups()
).then( function () {
$( '.ext-translate-msggroup-selector .grouplink'
).msggroupselector( {
onSelect: groupSelectorHandler
@@ -235,6 +276,7 @@
language: uiLanguage,
group: $( '.tux-message-list-statsbar' ).data(
'messagegroup' )
} );
+ $( '.tux-messagelist' ).messagetable();
} );
// Use ULS for language selection if it's available
diff --git a/specials/SpecialTranslate.php b/specials/SpecialTranslate.php
index 03dd659..f47b207 100644
--- a/specials/SpecialTranslate.php
+++ b/specials/SpecialTranslate.php
@@ -653,44 +653,14 @@
'data-token' => ApiGroupReview::getToken( 0, '' ),
'data-group' => $this->options['group'],
'data-language' => $this->options['language'],
- ), $this->msg( "translate-workflow-state-" )->escaped() );
+ ) );
$selectorRow = Html::openElement( 'div', array( 'class' =>
'row' ) );
+ $selectorRow .= $selector;
$options = Html::openElement( 'ul', array( 'class' =>
'tux-workflow-status-selector hide' ) );
-
- $user = $this->getUser();
- if ( $user->isAllowed( 'translate-groupreview' ) ) {
- // Add an option for every state
- foreach ( $stateConfig as $state => $config ) {
- $stateMessage = $this->msg(
"translate-workflow-state-$state" );
- $stateText = $stateMessage->isBlank() ? $state
: $stateMessage->text();
-
- $attributes = array( 'data-state' => $state );
-
- if ( $state === strval( $current ) ) {
- $attributes['class'] = 'selected';
- $selector = Html::element( 'div', array(
- 'class' =>
'tux-workflow-status',
- 'data-token' =>
ApiGroupReview::getToken( 0, '' ),
- 'data-group' =>
$this->options['group'],
- 'data-language' =>
$this->options['language'],
- ), $this->msg(
'translate-workflowstatus', $stateText )->escaped() );
- }
-
- if ( is_array( $config ) && isset(
$config['right'] )
- && !$user->isAllowed( $config['right'] )
- ) {
- // Dont add - continue
- continue;
- }
-
- $options .= Html::element( 'li', $attributes,
$stateText );
- }
- $selectorRow .= $selector;
- }
- $options .= Html::closeElement( 'ul' );
- return $selectorRow . $options . Html::closeElement( 'div' );
+ $options .= Html::closeElement( 'ul');
+ return $selectorRow. $options. Html::closeElement( 'div');
}
protected function getWorkflowStatus() {
--
To view, visit https://gerrit.wikimedia.org/r/47076
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ic0daa07b8ab26b607d02bf3b44fb07f8fa94c257
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Translate
Gerrit-Branch: master
Gerrit-Owner: Santhosh <[email protected]>
Gerrit-Reviewer: Amire80 <[email protected]>
Gerrit-Reviewer: Nikerabbit <[email protected]>
Gerrit-Reviewer: Santhosh <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits