http://www.mediawiki.org/wiki/Special:Code/MediaWiki/96575
Revision: 96575
Author: jeroendedauw
Date: 2011-09-08 15:15:14 +0000 (Thu, 08 Sep 2011)
Log Message:
-----------
fix bug 30644
Modified Paths:
--------------
trunk/extensions/UploadWizard/UploadWizard.i18n.php
trunk/extensions/UploadWizard/UploadWizard.php
trunk/extensions/UploadWizard/UploadWizardHooks.php
trunk/extensions/UploadWizard/includes/UploadWizardCampaign.php
trunk/extensions/UploadWizard/includes/specials/SpecialUploadCampaigns.php
Added Paths:
-----------
trunk/extensions/UploadWizard/api/
trunk/extensions/UploadWizard/api/ApiDeleteUploadCampaign.php
trunk/extensions/UploadWizard/resources/ext.upwiz.campaigns.js
Modified: trunk/extensions/UploadWizard/UploadWizard.i18n.php
===================================================================
--- trunk/extensions/UploadWizard/UploadWizard.i18n.php 2011-09-08 15:03:56 UTC
(rev 96574)
+++ trunk/extensions/UploadWizard/UploadWizard.i18n.php 2011-09-08 15:15:14 UTC
(rev 96575)
@@ -314,6 +314,8 @@
'mwe-upwiz-campaigns-editing' => 'Upload campaign configuration',
'mwe-upwiz-campaigns-delete' => 'Delete',
'mwe-upwiz-campaigns-confdel' => 'Are you sure you want to delete this
campaign?',
+ 'mwe-upwiz-campaigns-delete-failed' => 'Could not delete the campaign.',
+ 'mwe-upwiz-campaigns-confirm-delete' => 'Are you sure you want to
delete this campaign?',
// Special:UploadCampaign
'uploadcampaign-legend' => 'Upload campaign configuration',
Modified: trunk/extensions/UploadWizard/UploadWizard.php
===================================================================
--- trunk/extensions/UploadWizard/UploadWizard.php 2011-09-08 15:03:56 UTC
(rev 96574)
+++ trunk/extensions/UploadWizard/UploadWizard.php 2011-09-08 15:15:14 UTC
(rev 96575)
@@ -37,6 +37,7 @@
foreach ( array(
'UploadWizardMessages' => $wgUpwizDir,
'UploadWizardHooks' => $wgUpwizDir,
+ 'ApiDeleteUploadCampaign' => $wgUpwizDir . '/api',
'UploadWizardConfig' => $wgUpwizDir . '/includes',
'UploadWizardTutorial' => $wgUpwizDir . '/includes',
'UploadWizardCampaign' => $wgUpwizDir . '/includes',
@@ -60,6 +61,8 @@
$wgSpecialPages['UploadCampaign'] = 'SpecialUploadCampaign';
$wgSpecialPageGroups['UploadCampaign'] = 'media';
+$wgAPIModules['deleteuploadcampaign'] = 'ApiDeleteUploadCampaign';
+
// Disable ResourceLoader support by default, it's currently broken
// $wgUploadWizardDisableResourceLoader = true;
Modified: trunk/extensions/UploadWizard/UploadWizardHooks.php
===================================================================
--- trunk/extensions/UploadWizard/UploadWizardHooks.php 2011-09-08 15:03:56 UTC
(rev 96574)
+++ trunk/extensions/UploadWizard/UploadWizardHooks.php 2011-09-08 15:15:14 UTC
(rev 96575)
@@ -389,6 +389,15 @@
'resources/mw.MockUploadHandler.js'
),
),
+ 'ext.uploadWizard.campaigns' => array(
+ 'scripts' => array(
+ 'resources/ext.upwiz.campaigns.js'
+ ),
+ 'messages' => array(
+ 'mwe-upwiz-campaigns-delete-failed',
+ 'mwe-upwiz-campaigns-confirm-delete',
+ ),
+ ),
);
/*
Added: trunk/extensions/UploadWizard/api/ApiDeleteUploadCampaign.php
===================================================================
--- trunk/extensions/UploadWizard/api/ApiDeleteUploadCampaign.php
(rev 0)
+++ trunk/extensions/UploadWizard/api/ApiDeleteUploadCampaign.php
2011-09-08 15:15:14 UTC (rev 96575)
@@ -0,0 +1,98 @@
+<?php
+
+/**
+ * API module to delete upload wizard campaigns.
+ *
+ * @since 1.2
+ *
+ * @file ApiDeleteUploadCampaign.php
+ * @ingroup Upload
+ * @ingroup API
+ *
+ * @licence GNU GPL v3+
+ * @author Jeroen De Dauw < [email protected] >
+ */
+class ApiDeleteUploadCampaign extends ApiBase {
+
+ public function __construct( $main, $action ) {
+ parent::__construct( $main, $action );
+ }
+
+ public function execute() {
+ global $wgUser;
+
+ if ( !$wgUser->isAllowed( 'upwizcampaigns' ) ||
$wgUser->isBlocked() ) {
+ $this->dieUsageMsg( array( 'badaccess-groups' ) );
+ }
+
+ $params = $this->extractRequestParams();
+
+ $everythingOk = true;
+
+ foreach ( $params['ids'] as $id ) {
+ $campaign = new UploadWizardCampaign( $id );
+ $everythingOk = $campaign->deleteFromDB() &&
$everythingOk;
+ }
+
+ $this->getResult()->addValue(
+ null,
+ 'success',
+ $everythingOk
+ );
+ }
+
+ public function needsToken() {
+ return true;
+ }
+
+ public function getTokenSalt() {
+ $params = $this->extractRequestParams();
+ return 'deletecampaign' . implode( '|', $params['ids'] );
+ }
+
+ public function mustBePosted() {
+ return true;
+ }
+
+ public function getAllowedParams() {
+ return array(
+ 'ids' => array(
+ ApiBase::PARAM_TYPE => 'integer',
+ ApiBase::PARAM_REQUIRED => true,
+ ApiBase::PARAM_ISMULTI => true,
+ ),
+ 'token' => null,
+ );
+ }
+
+ public function getParamDescription() {
+ return array(
+ 'ids' => 'The IDs of the campaigns to delete',
+ 'token' => 'Edit token. You can get one of these
through prop=info.',
+ );
+ }
+
+ public function getDescription() {
+ return array(
+ 'API module for deleting surveys.'
+ );
+ }
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'missingparam', 'ids' ),
+ ) );
+ }
+
+ protected function getExamples() {
+ return array(
+ 'api.php?action=deleteuploadcampaign&ids=42',
+ 'api.php?action=deleteuploadcampaign&ids=4|2',
+ );
+ }
+
+ public function getVersion() {
+ return __CLASS__ . ': $Id: $';
+ }
+
+}
Property changes on:
trunk/extensions/UploadWizard/api/ApiDeleteUploadCampaign.php
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/extensions/UploadWizard/includes/UploadWizardCampaign.php
===================================================================
--- trunk/extensions/UploadWizard/includes/UploadWizardCampaign.php
2011-09-08 15:03:56 UTC (rev 96574)
+++ trunk/extensions/UploadWizard/includes/UploadWizardCampaign.php
2011-09-08 15:15:14 UTC (rev 96575)
@@ -65,7 +65,7 @@
* @param boolean $isEnabled
* @param array $config
*/
- public function __construct( $id, $name, $isEnabled, array $config ) {
+ public function __construct( $id, $name = '', $isEnabled = false, array
$config = array() ) {
$this->id = $id;
$this->name = $name;
$this->isEnabled = $isEnabled;
Modified:
trunk/extensions/UploadWizard/includes/specials/SpecialUploadCampaigns.php
===================================================================
--- trunk/extensions/UploadWizard/includes/specials/SpecialUploadCampaigns.php
2011-09-08 15:03:56 UTC (rev 96574)
+++ trunk/extensions/UploadWizard/includes/specials/SpecialUploadCampaigns.php
2011-09-08 15:15:14 UTC (rev 96575)
@@ -57,7 +57,6 @@
$this->setHeaders();
$this->outputHeader();
- $subPage = explode( '/', $subPage, 4 );
// If the user is authorized, display the page, if not, show an
error.
if ( $this->userCanExecute( $wgUser ) ) {
@@ -66,12 +65,6 @@
&& $wgRequest->getCheck( 'newcampaign' ) ) {
$this->getOutput()->redirect(
SpecialPage::getTitleFor( 'UploadCampaign', $wgRequest->getVal( 'newcampaign' )
)->getLocalURL() );
}
- elseif ( count( $subPage ) == 4 && $subPage[0] == 'del'
- && $wgUser->matchEditToken( $subPage[3],
serialize( array( $subPage[1], $subPage[2] ) ) ) ) {
- $campaign = UploadWizardCampaign::newFromId(
$subPage[1], false );
- $campaign->deleteFromDB();
- $this->getOutput()->redirect(
$this->getTitle()->getLocalURL() );
- }
else {
$this->displayUploadCamaigns();
}
@@ -175,11 +168,6 @@
global $wgUser;
foreach ( $campaigns as $campaign ) {
- $editToken = $wgUser->editToken( serialize( array(
- $campaign->campaign_id,
- $campaign->campaign_name
- ) ) );
-
$out->addHTML(
'<tr>' .
'<td>' .
@@ -205,10 +193,10 @@
Html::element(
'a',
array(
- 'href' =>
$this->getTitle(
-
implode( '/', array( 'del', $campaign->campaign_id, $campaign->campaign_name,
$editToken ) )
-
)->getLocalURL(),
- 'onclick' =>
'return confirm( "' . wfMsg( 'mwe-upwiz-campaigns-confdel' ) . '" )'
+ 'href' => '#',
+ 'class' =>
'campaign-delete',
+
'data-campaign-id' => $campaign->campaign_id,
+
'data-campaign-token' => $wgUser->editToken( 'deletecampaign' .
$campaign->campaign_id )
),
wfMsg(
'mwe-upwiz-campaigns-delete' )
) .
@@ -219,6 +207,8 @@
$out->addHTML( '</tbody>' );
$out->addHTML( '</table>' );
+
+ $out->addModules( 'ext.uploadWizard.campaigns' );
}
}
Added: trunk/extensions/UploadWizard/resources/ext.upwiz.campaigns.js
===================================================================
--- trunk/extensions/UploadWizard/resources/ext.upwiz.campaigns.js
(rev 0)
+++ trunk/extensions/UploadWizard/resources/ext.upwiz.campaigns.js
2011-09-08 15:15:14 UTC (rev 96575)
@@ -0,0 +1,50 @@
+/**
+ * JavasSript for the Special:UploadCampaigns of the UploadWizard MediaWiki
extension.
+ * @see
https://secure.wikimedia.org/wikipedia/mediawiki/wiki/Extension:UploadWizard
+ *
+ * @licence GNU GPL v3 or later
+ * @author Jeroen De Dauw <jeroendedauw at gmail dot com>
+ */
+
+(function( $ ) { $( document ).ready( function() {
+
+ function deleteCampaign( options, successCallback, failCallback ) {
+ $.post(
+ wgScriptPath + '/api.php',
+ {
+ 'action': 'deleteuploadcampaign',
+ 'format': 'json',
+ 'ids': options.id,
+ 'token': options.token
+ },
+ function( data ) {
+ if ( data.success ) {
+ successCallback();
+ } else {
+ failCallback( mw.msg(
'mwe-upwiz-campaigns-delete-failed' ) );
+ }
+ }
+ );
+ }
+
+ $( '.campaign-delete' ).click( function() {
+ $this = $( this );
+
+ if ( confirm( mw.msg( 'mwe-upwiz-campaigns-confirm-delete' ) )
) {
+ deleteCampaign(
+ {
+ id: $this.attr( 'data-campaign-id' ),
+ token: $this.attr(
'data-campaign-token' )
+ },
+ function() {
+ $this.closest( 'tr' ).slideUp( 'slow',
function() { $( this ).remove(); } );
+ },
+ function( error ) {
+ alert( error );
+ }
+ );
+ }
+ return false;
+ } );
+
+} ); })( jQuery );
\ No newline at end of file
Property changes on:
trunk/extensions/UploadWizard/resources/ext.upwiz.campaigns.js
___________________________________________________________________
Added: svn:eol-style
+ native
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs