Rtdwivedi has uploaded a new change for review.

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


Change subject: Addition of code that will be used for setting up of editing 
system in PHP instead of JS.
......................................................................

Addition of code that will be used for setting up of editing system in PHP 
instead of JS.

Change-Id: I62b10d3d23d3282c36babdab364f4b97a6f2c85e
---
M ProofreadPage.body.php
M ProofreadPage.i18n.php
M ProofreadPage.php
M includes/ProofreadPageParser.php
M includes/page/EditProofreadPagePage.php
M includes/page/ProofreadPagePage.php
6 files changed, 54 insertions(+), 168 deletions(-)


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

diff --git a/ProofreadPage.body.php b/ProofreadPage.body.php
index ddf91eb..4b52961 100644
--- a/ProofreadPage.body.php
+++ b/ProofreadPage.body.php
@@ -113,6 +113,10 @@
                        $editor = new EditProofreadIndexPage( $article );
                        $editor->edit();
                        return false;
+               } elseif ( $article->getTitle()->inNamespace( 
self::getPageNamespaceId() ) ) {
+                       $editor = new EditProofreadPagePage( $article );
+                       $editor->edit();
+                       return false;
                } else {
                        return true;
                }
diff --git a/ProofreadPage.i18n.php b/ProofreadPage.i18n.php
index 03ffa92..91e67a0 100644
--- a/ProofreadPage.i18n.php
+++ b/ProofreadPage.i18n.php
@@ -89,6 +89,8 @@
        'proofreadpage-indexoai-eprint-content-text' => 'Metadata of books 
managed by ProofreadPage.',
        'proofreadpage-indexoai-error-schemanotfound' => 'Schema not found',
        'proofreadpage-indexoai-error-schemanotfound-text' => 'The $1 schema 
have not been found.',
+       'proofreadpage_page_invalid' => 'Invalid page',
+       'proofreadpage_page_invalid_text' => 'The page you are trying to edit 
is invalid.',
 );
 
 /** Message documentation (Message documentation)
diff --git a/ProofreadPage.php b/ProofreadPage.php
index 5fbf428..addc66e 100644
--- a/ProofreadPage.php
+++ b/ProofreadPage.php
@@ -143,15 +143,11 @@
 $wgHooks['BeforePageDisplay'][] = 'ProofreadPage::onBeforePageDisplay';
 $wgHooks['GetLinkColours'][] = 'ProofreadPage::onGetLinkColours';
 $wgHooks['ImageOpenShowImageInlineBefore'][] = 
'ProofreadPage::onImageOpenShowImageInlineBefore';
-$wgHooks['EditPage::attemptSave'][] = 
'EditProofreadPagePage::onEditPageAttemptSave';
-$wgHooks['ArticleSaveComplete'][] = 
'EditProofreadPagePage::onArticleSaveComplete';
 $wgHooks['ArticleDelete'][] = 'ProofreadPage::onArticleDelete';
 $wgHooks['ArticleUndelete'][] = 'ProofreadPage::onArticleUndelete';
-$wgHooks['EditFormPreloadText'][] = 
'EditProofreadPagePage::onEditFormPreloadText';
 $wgHooks['ArticlePurge'][] = 'ProofreadPage::onArticlePurge';
 $wgHooks['SpecialMovepageAfterMove'][] = 
'ProofreadPage::onSpecialMovepageAfterMove';
 $wgHooks['LoadExtensionSchemaUpdates'][] = 
'ProofreadIndexDbConnector::onLoadExtensionSchemaUpdates';
-$wgHooks['EditPage::importFormData'][] = 
'EditProofreadPagePage::onEditPageImportFormData';
 $wgHooks['OutputPageParserOutput'][] = 
'ProofreadPage::onOutputPageParserOutput';
 $wgHooks['wgQueryPages'][] = 'ProofreadPage::onwgQueryPages';
 $wgHooks['GetPreferences'][] = 'ProofreadPage::onGetPreferences';
diff --git a/includes/ProofreadPageParser.php b/includes/ProofreadPageParser.php
index 9ee4273..2b0388d 100644
--- a/includes/ProofreadPageParser.php
+++ b/includes/ProofreadPageParser.php
@@ -32,7 +32,7 @@
                if( !preg_match( $page_regexp, $text, $m ) ) {
                        ProofreadPage::loadIndex( $title );
                        if ( $title->prpIndexPage !== null ) {
-                               list( $header, $footer, $css, $editWidth ) = 
$title->prpIndexPage->getIndexDataForPage();
+                               list( $header, $footer, $css, $editWidth ) = 
$title->prpIndexPage->getIndexDataForPage( $title );
                        } else {
                                $header = '';
                                $footer = '';
diff --git a/includes/page/EditProofreadPagePage.php 
b/includes/page/EditProofreadPagePage.php
index 82b1e65..d3f1341 100644
--- a/includes/page/EditProofreadPagePage.php
+++ b/includes/page/EditProofreadPagePage.php
@@ -19,182 +19,66 @@
  * @ingroup ProofreadPage
  */
 
-class EditProofreadPagePage {
+class EditProofreadPagePage extends EditPage{
 
-       /**
-        * Preload text layer from multipage formats
-        * @param $textbox1
-        * @param $mTitle Title
-        * @return bool
-        */
-       public static function onEditFormPreloadText( &$textbox1, $mTitle ) {
-               global $wgContLang;
-
-               list( $pageNamespaceId, $indexNamespaceId ) = 
ProofreadPage::getPageAndIndexNamespace();
-               if ( preg_match( "/^$pageNamespaceId:(.*?)\/(.*?)$/", 
$mTitle->getPrefixedText(), $m ) ) {
-                       $imageTitle = Title::makeTitleSafe( NS_IMAGE, $m[1] );
-                       if ( !$imageTitle ) {
-                               return true;
-                       }
-
-                       $image = wfFindFile( $imageTitle );
-                       if ( $image && $image->exists() ) {
-                               $text = $image->getHandler()->getPageText( 
$image, $wgContLang->parseFormattedNumber( $m[2] ) );
-                               if ( $text ) {
-                                       $text = preg_replace( "/(\\\\n)/", 
"\n", $text );
-                                       $text = preg_replace( "/(\\\\\d*)/", 
'', $text );
-                                       $textbox1 = $text;
-                               }
-                       }
-               }
-               return true;
+       protected function isSectionEditSupported() {
+               return false; // sections and forms don't mix
        }
 
        /**
-        * @param $editpage EditPage
-        * @param $request WebRequest
-        * @return bool
-        */
-       public static function onEditPageImportFormData( $editpage, $request ) {
-               $title = $editpage->getTitle();
-               // abort if we are not a page
-               if ( !$title->inNamespace( ProofreadPage::getPageNamespaceId() 
) ) {
-                       return true;
-               }
-               if ( !$request->wasPosted() ) {
-                       return true;
-               }
-               $editpage->quality = $request->getVal( 'wpQuality' );
-               $editpage->username = $editpage->safeUnicodeInput( $request, 
'wpProofreader' );
-               $editpage->header = $editpage->safeUnicodeInput( $request, 
'wpHeaderTextbox' );
-               $editpage->footer = $editpage->safeUnicodeInput( $request, 
'wpFooterTextbox' );
-
-               // we want to keep ordinary spaces at the end of the main 
textbox
-               $text = rtrim( $request->getText( 'wpTextbox1' ), 
"\t\n\r\0\x0B" );
-               $editpage->textbox1 = $request->getBool( 'safemode' )
-                       ? $editpage->unmakesafe( $text )
-                       : $text;
-
-               if( in_array( $editpage->quality, array( '0', '1', '2', '3', 
'4' ) ) ) {
-                       // format the page
-                       $text = '<noinclude><pagequality level="' . 
$editpage->quality . '" user="' . $editpage->username . '" />' .
-                               '<div class="pagetext">' . 
$editpage->header."\n\n\n</noinclude>" .
-                               $editpage->textbox1 .
-                               "<noinclude>" . $editpage->footer . 
'</div></noinclude>';
-                       $editpage->textbox1 = $text;
-               } else {
-                       // replace deprecated template
-                       $text = $editpage->textbox1;
-                       $text = preg_replace(
-                               
"/\{\{PageQuality\|(0|1|2|3|4)(|\|(.*?))\}\}/is",
-                               "<pagequality level=\"\\1\" user=\"\\3\" />",
-                               $text
-                       );
-                       $editpage->textbox1 = $text;
-               }
-               return true;
-       }
-
-       /**
-        * Check the format of pages in "Page" namespace.
+        * Init $this->textbox1 from form content
         *
-        * @param $editpage EditPage
-        * @return Boolean
+        * @param $request WebRequest
         */
-       public static function onEditPageAttemptSave( $editpage ) {
-               global $wgOut, $wgUser;
-
-               $title = $editpage->mTitle;
-
-               // abort if we are not a page
-               if ( !$title->inNamespace( ProofreadPage::getPageNamespaceId() 
) ) {
-                       return true;
+       protected function importContentFormData( &$request ) {
+               if ( $this->textbox1 !== '' ) {
+                       return;
                }
 
-               $text = $editpage->textbox1;
-               // parse the page
-               list( $q, $username, $ptext ) = ProofreadPageParser::parsePage( 
$text, $title );
-               if( $q == -1 ) {
-                       $editpage->textbox1 = $ptext;
-                       $q = 1;
-               }
+               $value = ProofreadPageContent::newEmpty();
+               $value->setHeader( $this->safeUnicodeInput( $request, 
'wpHeaderTextbox' ) );
+               $value->setBody( $this->safeUnicodeInput( $request, 
'wpTextbox1') );
+               $value->setFooter( $this->safeUnicodeInput( $request, 
'wpFooterTextbox' ) );
+               $value->setLevel( $request->getInt( 'wpQuality' ) );
+               $value->setProofreaderFromName( $this->safeUnicodeInput( 
$request, 'wpProofreader' ) );
 
-               // read previous revision, so that I know how much I need to 
add to pr_index
-               $rev = Revision::newFromTitle( $title, false, 
Revision::READ_LATEST );
-               if( $rev ) {
-                       $old_text = $rev->getText();
-                       list( $old_q, $old_username, $old_ptext ) = 
ProofreadPageParser::parsePage( $old_text, $title );
-                       if( $old_q != -1 ) {
-                               // check usernames
-                               if( ( $old_q != $q ) && !$wgUser->isAllowed( 
'pagequality' ) ) {
-                                       $wgOut->showErrorPage( 
'proofreadpage_nologin', 'proofreadpage_nologintext' );
-                                       return false;
-                               }
-                               if ( ( ( $old_username != $username ) || ( 
$old_q != $q ) ) && ( $wgUser->getName() != $username ) ) {
-                                       $wgOut->showErrorPage( 
'proofreadpage_notallowed', 'proofreadpage_notallowedtext' );
-                                       return false;
-                               }
-                               if( ( ( $q == 4 ) && ( $old_q < 3 ) ) || ( ( $q 
== 4 ) && ( $old_q == 3 ) && ( $old_username == $username ) ) ) {
-                                       $wgOut->showErrorPage( 
'proofreadpage_notallowed', 'proofreadpage_notallowedtext' );
-                                       return false;
-                               }
-                       } else {
-                               $old_q = 1;
-                       }
-               } else {
-                       if( $q == 4 ) {
-                               $wgOut->showErrorPage( 
'proofreadpage_notallowed', 'proofreadpage_notallowedtext' );
-                               return false;
-                       }
-                       $old_q = -1;
-               }
-
-               $editpage->getArticle()->new_q = $q;
-               $editpage->getArticle()->old_q = $old_q;
-
+               $this->textbox1 = $request->getText( 'wpTextbox1' );
                return true;
+       }
+
+       protected function showContentForm() {
+               global $wgOut;
+
+               $pageLang = $this->mTitle->getPageLanguage();
+               $inputAttributes = array( 'lang' => $pageLang->getCode(), 'dir' 
=> $pageLang->getDir() );
+               if( wfReadOnly() === true ) {
+                       $inputAttributes['readonly'] = '';
+               }
+
+               $index = new ProofreadIndexPage( $this->mTitle, 
ProofreadIndexPage::getDataConfig(), $this->textbox1 );
+               $content = new ProofreadPageContent( '', $this->textbox1 );
+               $page = new ProofreadPagePage( $this->mTitle, $content, $index 
);
+               $wgOut->addHTML( Html::textarea( 'wpTextBox1', $this->textbox1, 
array( 'tabindex' => '1', 'accesskey' =>',', 'id' => 'wpTextbox1', 'cols' => 
'80', 'rows' => '25', 'style' =>'', 'lang' => 'en', 'dir' => 'ltr' ) ) );
        }
 
        /**
-        * @param $article WikiPage
-        * @return bool
+        * Check the validity of the page
         */
-       public static function onArticleSaveComplete( WikiPage &$article ) {
-               $title = $article->getTitle();
+       function internalAttemptSave( &$result, $bot = false ) {
+               global $wgOut;
 
-               // if it's an index, update pr_index table
-               if ( $title->inNamespace( ProofreadPage::getIndexNamespaceId() 
) ) {    //Move this part to EditProofreadIndexPage
-                       ProofreadPage::updatePrIndex( $article );
-                       return true;
+               $index = new ProofreadIndexPage( $this->mTitle, 
ProofreadIndexPage::getDataConfig(), $this->textbox1 );
+               $content = new ProofreadPageContent( '', $this->textbox1 );
+               $page = new ProofreadPagePage( $this->mTitle, $content, $index 
);
+
+               if( !$this->mTitle->inNamespace( 
ProofreadPage::getPageNamespaceId() ) && $index!== null ) {
+                       $wgOut->showErrorPage( 'proofreadpage_page_invalid', 
'proofreadpage_page_invalid_text' );
+                       $status = Status::newGood();
+                       $status->fatal( 'hookaborted' );
+                       $status->value = self::AS_HOOK_ERROR;
+                       return $status;
                }
-
-               // return if it is not a page
-               if ( !$title->inNamespace( ProofreadPage::getPageNamespaceId() 
) ) {
-                       return true;
-               }
-
-               /* check if there is an index */
-               if ( !isset( $title->prpIndexPage ) ) {
-                       ProofreadPage::loadIndex( $title );
-               }
-               if( $title->prpIndexPage === null ) {
-                       return true;
-               }
-
-               /**
-                * invalidate the cache of the index page
-                */
-               $title->prpIndexPage->getTitle()->invalidateCache();
-
-               /**
-                * update pr_index iteratively
-                */
-               $indexId = $title->prpIndexPage->getTitle()->getArticleID();
-               $x = ProofreadIndexDbConnector::getIndexDataFromIndexPageId( 
$indexId );
-               if( $x ) {
-                       $a = ProofreadIndexDbConnector::replaceIndexById( $x, 
$indexId, $article );
-               }
-
-               return true;
+               return parent::internalAttemptSave( $result, $bot );
        }
+
 }
diff --git a/includes/page/ProofreadPagePage.php 
b/includes/page/ProofreadPagePage.php
index 004dc3c..ebb2443 100644
--- a/includes/page/ProofreadPagePage.php
+++ b/includes/page/ProofreadPagePage.php
@@ -127,9 +127,9 @@
                if ( $this->content === null ) {
                        $rev = Revision::newFromTitle( $this->title );
                        if ( $rev === null ) {
-                               $this->content = ProofreadPageValue::newEmpty();
+                               $this->content = 
ProofreadPageContent::newEmpty();
                        } else {
-                               $this->content = 
ProofreadPageValue::newFromWikitext( $rev->getText() );
+                               $this->content = 
ProofreadPageContent::newFromWikitext( $rev->getText() );
                        }
                }
                return $this->content;

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I62b10d3d23d3282c36babdab364f4b97a6f2c85e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ProofreadPage
Gerrit-Branch: master
Gerrit-Owner: Rtdwivedi <[email protected]>

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

Reply via email to