Tpt has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/295716

Change subject: Makes VE -> Wikieditor switch work
......................................................................

Makes VE -> Wikieditor switch work

Adds a simple Wikitext serialization parser
 We should probably move to an API call in the future (see 
Id34b2c10bbf0cb23643b3b300e3182a4a12c9933 )

Change-Id: I315468a493ba1c770bd1d1fd89e883e9bb5ab53f
---
M modules/ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.js
1 file changed, 69 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ProofreadPage 
refs/changes/16/295716/1

diff --git a/modules/ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.js 
b/modules/ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.js
index 40baa84..3741282 100644
--- a/modules/ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.js
+++ b/modules/ve/pageTarget/ve.init.mw.ProofreadPagePageTarget.js
@@ -138,6 +138,75 @@
 };
 
 /**
+ * @inheritdoc
+ */
+ve.init.mw.ProofreadPagePageTarget.prototype.submit = function ( wikitext, 
fields ) {
+       var key, $form, params, content;
+
+       // Prevent duplicate requests
+       if ( this.submitting ) {
+               return false;
+       }
+       // Save DOM
+       this.submitting = true;
+       content = this.parseWikitext( wikitext );
+       $form = $( '<form method="post" enctype="multipart/form-data" 
style="display: none;"></form>' );
+       params = ve.extendObject( {
+               format: 'text/x-wiki',
+               model: 'proofread-page',
+               oldid: this.requestedRevId,
+               wpStarttime: this.startTimeStamp,
+               wpEdittime: this.baseTimeStamp,
+               wpHeaderTextbox: content.header,
+               wpTextbox1: content.body,
+               wpFooterTextbox: content.footer,
+               wpQuality: content.level.level,
+               wpEditToken: this.editToken
+       }, fields );
+       // Add params as hidden fields
+       for ( key in params ) {
+               $form.append( $( '<input>' ).attr( { type: 'hidden', name: key, 
value: params[ key ] } ) );
+       }
+       // Submit the form, mimicking a traditional edit
+       // Firefox requires the form to be attached
+       $form.attr( 'action', this.submitUrl ).appendTo( 'body' ).submit();
+       return true;
+};
+
+/**
+ * Parse Wikitext into the JSON serialization
+ */
+ve.init.mw.ProofreadPagePageTarget.prototype.parseWikitext = function ( 
wikitext ) {
+       var structureMatchResult, headerMatchResult, result = {
+               header: '',
+               body: '',
+               footer: '',
+               level: {
+                       level: 1,
+                       user: null
+               }
+       };
+
+       structureMatchResult = wikitext.match( 
/^<noinclude>([\s\S]*)\n*<\/noinclude>([\s\S]*)<noinclude>([\s\S]*)<\/noinclude>$/
 );
+       if ( structureMatchResult === null ) {
+               result.body = wikitext;
+               return result;
+       }
+       result.body = structureMatchResult[ 2 ];
+       result.footer = structureMatchResult[ 3 ];
+
+       headerMatchResult = structureMatchResult[ 1 ].match( /^<pagequality 
level="(0|1|2|3|4)" user="(.*)" *(\/>|> *<\/pagequality>)([\s\S]*)$/ );
+       if ( headerMatchResult === null ) {
+               result.header = structureMatchResult[ 1 ];
+               return result;
+       }
+       result.level.level = parseInt( headerMatchResult[ 1 ] );
+       result.level.user = headerMatchResult[ 2 ];
+       result.header = headerMatchResult[ 4 ];
+       return result;
+};
+
+/**
  * Split a document into balanced header, body and footer sections
  *
  * @param {HTMLDocument} doc Document

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I315468a493ba1c770bd1d1fd89e883e9bb5ab53f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ProofreadPage
Gerrit-Branch: master
Gerrit-Owner: Tpt <thoma...@hotmail.fr>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to