jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/364214 )

Change subject: Check constraint parameters on property pages
......................................................................


Check constraint parameters on property pages

This updates the gadget to use the new wbcheckconstraintparameters API
module to check constraint statements on a property page.

Bug: T169531
Change-Id: Ief70ee62f3d98d9712c927064a9ddb937bd84a33
---
M extension.json
M i18n/en.json
M i18n/qqq.json
M modules/gadget.css
M modules/gadget.js
5 files changed, 77 insertions(+), 6 deletions(-)

Approvals:
  Jonas Kress (WMDE): Looks good to me, approved
  jenkins-bot: Verified



diff --git a/extension.json b/extension.json
index 8d22649..edad5d6 100644
--- a/extension.json
+++ b/extension.json
@@ -52,7 +52,9 @@
                "wikibase.quality.constraints.ui": {
                        "messages": [
                                "wbqc-potentialissues-short",
-                               "wbqc-potentialissues-long"
+                               "wbqc-potentialissues-long",
+                               "wbqc-badparameters-short",
+                               "wbqc-badparameters-long"
                        ]
                },
                "wikibase.quality.constraints.gadget": {
diff --git a/i18n/en.json b/i18n/en.json
index 069a662..d55b947 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -31,6 +31,8 @@
 
        "wbqc-potentialissues-short": "Potential issues",
        "wbqc-potentialissues-long": "This statement has some potential 
issues.",
+       "wbqc-badparameters-short": "Bad parameters",
+       "wbqc-badparameters-long": "This constraint statement has some invalid 
parameters.",
 
        "apihelp-wbcheckconstraints-description": "Performs constraint checks 
on any entity you want and returns the result.",
        "apihelp-wbcheckconstraints-summary": "Performs constraint checks on 
any entity you want and returns the result.",
diff --git a/i18n/qqq.json b/i18n/qqq.json
index 7a2840e..689eaa7 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -32,6 +32,8 @@
        "wbqc-constraintreport-no-parameter": "Text that is displayed when 
there was no value for a parameter given.\n{{Identical|None}}",
        "wbqc-potentialissues-short": "Headline of the constraint report popup 
shown on statements with constraint violations. Should be easy to understand 
for users, and convey that the reported violations are not always errors, but 
should be thought of as hints to the user that something might be 
wrong.\n\n{{Related|wbqc-constraintreport}}",
        "wbqc-potentialissues-long": "Title for the icon shown on statements 
with constraint violations, usually displayed by the browser when the user 
hovers over the icon with the mouse 
cursor.{{Related|wbqc-potentialissues-short}}",
+       "wbqc-badparameters-short": "Headline of the constraint parameter 
report popup shown on constraint statements with invalid constraint 
parameters.",
+       "wbqc-badparameters-long": "Title for the icon shown on constraint 
statements with invalid constraint parameters, usually displayed by the browser 
when the user hovers over the icon with the mouse 
cursor.{{Related|wbqc-badparameters-short}}",
        "apihelp-wbcheckconstraints-description": 
"{{doc-apihelp-description|wbcheckconstraints}}",
        "apihelp-wbcheckconstraints-summary": 
"{{doc-apihelp-summary|wbcheckconstraints}}",
        "apihelp-wbcheckconstraints-param-id": 
"{{doc-apihelp-param|wbcheckconstraints|id}}",
diff --git a/modules/gadget.css b/modules/gadget.css
index 73b9bc1..8e26c50 100644
--- a/modules/gadget.css
+++ b/modules/gadget.css
@@ -3,7 +3,8 @@
 .wbqc-reports-button {
        margin-left: 0.5em;
 }
-.wbqc-report {
+.wbqc-report,
+.wbqc-parameter-report {
        border-top: 1px solid #eaecf0; /* Base80 */
 }
 .wbqc-constraint-type-help {
diff --git a/modules/gadget.js b/modules/gadget.js
index 0c5d051..bf62e2c 100644
--- a/modules/gadget.js
+++ b/modules/gadget.js
@@ -3,10 +3,11 @@
 
        var entityId;
 
-       function buildWidget( reports ) {
+       function buildWidget( reports, messageKey, flags /* = '' */ ) {
                var widget = new OO.ui.PopupButtonWidget( {
                        icon: 'alert',
-                       iconTitle: mw.message( 'wbqc-potentialissues-long' 
).text(),
+                       iconTitle: mw.message( 'wbqc-' + messageKey + '-long' 
).text(),
+                       flags: flags || '',
                        framed: false,
                        classes: [ 'wbqc-reports-button' ],
                        popup: {
@@ -19,7 +20,7 @@
                                width: 400,
                                padded: true,
                                head: true,
-                               label: $( '<strong>' ).text( mw.message( 
'wbqc-potentialissues-short' ).text() )
+                               label: $( '<strong>' ).text( mw.message( 
'wbqc-' + messageKey + '-short' ).text() )
                        }
                } );
                widget.popup.$element.css( 'z-index', 2 ); // prevent collision 
with rank selector and property grey field
@@ -64,6 +65,23 @@
                }
        }
 
+       function buildParameterReport( problem ) {
+               var $report, $heading, $body;
+
+               $report = $( '<div>' )
+                       .addClass( 'wbqc-parameter-report' );
+               $heading = $( '<h4>' ); // empty for now
+               $report.append( $heading );
+               $body = $( '<p>' )
+                       .html( problem[ 'message-html' ] );
+               $report.append( $body );
+
+               return new OO.ui.PanelLayout( {
+                       expanded: false,
+                       $content: $report
+               } );
+       }
+
        function addReportsToStatement( entityData, $statement ) {
                var match = $statement.parents( '.wikibase-statementview' )[ 0 
].className.match(
                                /\bwikibase-statement-([^\s$]+\$[\dA-F-]+)\b/i
@@ -95,7 +113,42 @@
                        if ( $target.length === 0 ) {
                                $target = $statement;
                        }
-                       $target.append( buildWidget( reports ).$element );
+                       $target.append( buildWidget( reports, 'potentialissues' 
).$element );
+               }
+       }
+
+       function addParameterReports( parameterReports ) {
+               var constraintId,
+                       status,
+                       problems,
+                       reports,
+                       i,
+                       report,
+                       $statement,
+                       $target;
+
+               for ( constraintId in parameterReports ) {
+                       status = parameterReports[ constraintId ].status;
+                       if ( status === 'okay' ) {
+                               continue;
+                       }
+
+                       problems = parameterReports[ constraintId ].problems;
+                       reports = [];
+                       for ( i = 0; i < problems.length; i++ ) {
+                               report = buildParameterReport( problems[ i ] );
+                               if ( report !== null ) {
+                                       reports.push( report );
+                               }
+                       }
+
+                       $statement = $( '.wikibase-statement-' + 
constraintId.replace( /\$/g, '\\$' ) +
+                                                               ' 
.wikibase-statementview-mainsnak .wikibase-snakview-value' );
+                       $target = $statement.find( '.valueview-instaticmode' );
+                       if ( $target.length === 0 ) {
+                               $target = $statement;
+                       }
+                       $target.append( buildWidget( reports, 'badparameters', 
'warning' ).$element );
                }
        }
 
@@ -126,6 +179,17 @@
                                .each( function () { addReportsToStatement( 
data.wbcheckconstraints[ entityId ], $( this ) ); } );
                } );
 
+               if ( mw.config.get( 'wgPageContentModel' ) === 
'wikibase-property' ) {
+                       api.get( {
+                               action: 'wbcheckconstraintparameters',
+                               format: 'json',
+                               uselang: lang,
+                               propertyid: entityId
+                       } ).then( function( data ) {
+                               addParameterReports( 
data.wbcheckconstraintparameters[ entityId ] );
+                       } );
+               }
+
                mw.hook( 'wikibase.statement.saved' ).add( function( entityId, 
statementId ) {
                        api.get( {
                                action: 'wbcheckconstraints',

-- 
To view, visit https://gerrit.wikimedia.org/r/364214
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ief70ee62f3d98d9712c927064a9ddb937bd84a33
Gerrit-PatchSet: 13
Gerrit-Project: mediawiki/extensions/WikibaseQualityConstraints
Gerrit-Branch: master
Gerrit-Owner: Lucas Werkmeister (WMDE) <[email protected]>
Gerrit-Reviewer: Jonas Kress (WMDE) <[email protected]>
Gerrit-Reviewer: Lucas Werkmeister (WMDE) <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to