From c88ba103b782fe20babf8e26fc270ebec9f19824 Mon Sep 17 00:00:00 2001 From: Pierre Rudloff Date: Sat, 3 May 2014 18:12:19 +0200 Subject: [PATCH] Initial commit --- ReviewAndMerge.class.php | 23 ++++++++++++ ReviewAndMerge.i18n.php | 16 ++++++++ ReviewAndMerge.php | 17 +++++++++ SpecialReviewAndMerge.php | 79 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 135 insertions(+) create mode 100644 ReviewAndMerge.class.php create mode 100644 ReviewAndMerge.i18n.php create mode 100644 ReviewAndMerge.php create mode 100644 SpecialReviewAndMerge.php diff --git a/ReviewAndMerge.class.php b/ReviewAndMerge.class.php new file mode 100644 index 0000000..21f474f --- /dev/null +++ b/ReviewAndMerge.class.php @@ -0,0 +1,23 @@ +getContextTitle()->getSubpageText() !== 'Review') { + if ($editpage->getArticle()->getText()) { + $wgOut->redirect(Title::newFromText($editpage->getContextTitle()->getBaseText().'/Review')->getEditURL()); + } + } else { + $origPage = new WikiPage( + Title::newFromText( + $editpage->getContextTitle()->getBaseText() + ) + ); + $editpage->setPreloadedText($origPage->getText()); + } + } +} + +?> diff --git a/ReviewAndMerge.i18n.php b/ReviewAndMerge.i18n.php new file mode 100644 index 0000000..e964642 --- /dev/null +++ b/ReviewAndMerge.i18n.php @@ -0,0 +1,16 @@ + + */ +$messages[ 'en' ] = array( + 'reviewandmerge' => "Review and Merge" +); + diff --git a/ReviewAndMerge.php b/ReviewAndMerge.php new file mode 100644 index 0000000..4b65603 --- /dev/null +++ b/ReviewAndMerge.php @@ -0,0 +1,17 @@ + 'ReviewAndMerge', + 'author' =>'ShakePeers', + 'url' => 'http://shakepeers.org/' +); + +require_once 'ReviewAndMerge.class.php'; + +//$wgGroupPermissions['*']['edit'] = false; +//$wgGroupPermissions['user']['edit'] = false; +$wgHooks['AlternateEdit'][] = 'ReviewAndMerge::checkIfCanEdit'; +$wgAutoloadClasses['ReviewAndMerge'] = __DIR__.'/ReviewAndMerge.class.php'; +$wgAutoloadClasses['SpecialReviewAndMerge'] = __DIR__.'/SpecialReviewAndMerge.php'; +$wgSpecialPages['ReviewAndMerge'] = 'SpecialReviewAndMerge'; +$wgExtensionMessagesFiles[ 'ReviewAndMerge' ] = __DIR__ . '/ReviewAndMerge.i18n.php'; +?> diff --git a/SpecialReviewAndMerge.php b/SpecialReviewAndMerge.php new file mode 100644 index 0000000..91abe5b --- /dev/null +++ b/SpecialReviewAndMerge.php @@ -0,0 +1,79 @@ +getRequest(); + $output = $this->getOutput(); + $this->setHeaders(); + + $html = ''; + $origTitle = Title::newFromText( + $_GET['article'] + ); + $origPage = new WikiPage( + $origTitle + ); + $html .= '

'.$_GET['article'].'

'; + + $reviewPage = new WikiPage( + Title::newFromText( + $_GET['article'].'/Review' + ) + ); + $regexp = '/(?<=[.?!])\s+(?=[a-z])/i'; + $origText = $origPage->getText(); + $diff = new Diff(preg_split($regexp, $origText), preg_split($regexp, $reviewPage->getText())); + if (isset($_POST['nbEdits'])) { + for ($i = 0; $i <= $_POST['nbEdits']; $i++) { + if (isset($_POST['keepEdit_'.$i]) && $_POST['keepEdit_'.$i] == 'on') { + $origText = (str_replace(urldecode($_POST['origEdit_'.$i]), urldecode($_POST['newEdit_'.$i]), $origText)); + } + } + var_dump($origText); + $editpage = new EditPage(new Article($origTitle)); + $editpage->setContextTitle($origTitle); + $editpage->setPreloadedText($origText); + var_dump($editpage); + $editpage->showEditForm(); + } else { + $html .= '
'; + $i = 0; + foreach ($diff->edits as $edit) { + $i++; + if ($edit->type != 'copy') { + if ($edit->type == 'add') { + $html .= ''; + } else if ($edit->type == 'delete') { + $html .= ''; + } else if ($edit->type == 'change') { + $html .= ''; + } else { + $html .= ''; + } + $html .= ''; + } + } + $html .='
+ + + + '; + foreach ($edit->orig as $orig) { + $html .= $orig.'
'; + } + $html .= '
'; + + foreach ($edit->closing as $closing) { + $html .= $closing.'
'; + } + $html .= '
+ + +
'; + $output->addHTML($html); + } + } +}