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

Reply via email to