Skip to content
This repository has been archived by the owner on Dec 21, 2017. It is now read-only.

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Pierre Rudloff committed May 3, 2014
0 parents commit c88ba10
Show file tree
Hide file tree
Showing 4 changed files with 135 additions and 0 deletions.
23 changes: 23 additions & 0 deletions ReviewAndMerge.class.php
@@ -0,0 +1,23 @@
<?php

class ReviewAndMerge
{
function checkIfCanEdit($editpage)
{
global $wgOut, $wgUser;
if ($editpage->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());
}
}
}

?>
16 changes: 16 additions & 0 deletions ReviewAndMerge.i18n.php
@@ -0,0 +1,16 @@
<?php
/**
* Internationalisation for myextension
*
* @file
* @ingroup Extensions
*/
$messages = array();

/** English
* @author <your username>
*/
$messages[ 'en' ] = array(
'reviewandmerge' => "Review and Merge"
);

17 changes: 17 additions & 0 deletions ReviewAndMerge.php
@@ -0,0 +1,17 @@
<?php
$wgExtensionCredits['validextensionclass'][] = array(
'name' => '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';
?>
79 changes: 79 additions & 0 deletions SpecialReviewAndMerge.php
@@ -0,0 +1,79 @@
<?php
class SpecialReviewAndMerge extends SpecialPage {
function __construct() {
parent::__construct( 'ReviewAndMerge' );
}

function execute( $par ) {
$request = $this->getRequest();
$output = $this->getOutput();
$this->setHeaders();

$html = '';
$origTitle = Title::newFromText(
$_GET['article']
);
$origPage = new WikiPage(
$origTitle
);
$html .= '<h2>'.$_GET['article'].'</h2>';

$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 .= '<form action="" method="post"><table class="wikitable">';
$i = 0;
foreach ($diff->edits as $edit) {
$i++;
if ($edit->type != 'copy') {
if ($edit->type == 'add') {
$html .= '<tr style="background-color: #ccffcc;">';
} else if ($edit->type == 'delete') {
$html .= '<tr style="background-color: #ffffaa;">';
} else if ($edit->type == 'change') {
$html .= '<tr style="background-color: #eeeeee;">';
} else {
$html .= '<tr>';
}
$html .= '<td>
<input type="hidden" name="origEdit_'.$i.'" value="'.urlencode(implode($edit->orig)).'" />
<input type="hidden" name="newEdit_'.$i.'" value="'.urlencode(implode($edit->closing)).'" />
<input name="keepEdit_'.$i.'" type="checkbox" checked />
</td><td>';
foreach ($edit->orig as $orig) {
$html .= $orig.'<br/>';
}
$html .= '</td><td>';

foreach ($edit->closing as $closing) {
$html .= $closing.'<br/>';
}
$html .= '</td></tr>';
}
}
$html .='</table>
<input type="hidden" name="nbEdits" value="'.$i.'" />
<input type="submit" value="Valider les modifications" />
</form>';
$output->addHTML($html);
}
}
}

0 comments on commit c88ba10

Please sign in to comment.