跳转到内容

MediaWiki:DRN-wizard.js

维基百科,自由的百科全书
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
// <nowiki>
// 2020-03-09 - 「deconverted from Gadget」只在一個頁面上使用,現在直接從 [[Wikipedia:爭議解決布告板/請求]] 進行呼叫。
mw.loader.using( 'ext.gadget.HanAssist' ).then( ( require ) => {
	const { conv, convByVar } = require( 'ext.gadget.HanAssist' );
/**
 * This is the main object that holds the state for everything
 */
function drw() {

	//Keep track of what step we are on
	this.wizard_step = 0;

	//Has the admin attempted to resolve this on the talk page
	this.talkpage = false;

	//Title of Article
	this.article_title = '';

	//Description of dispute
	this.dispute_description = '';

	//Involved users
	this.involved_users = [mw.config.get( 'wgUserName' )];

	//Previous forums
	this.previous_forums = '';

	//Desired Outcome
	this.desired_outcome = '';

	//Page where the report will be posted
	this.post_link = '';

	// Draw text box
	this.drawTitleInput = function() {
		//Appends to $( '#drwContent1' )

		$( '#drwContent1' ).append( '<h3>' + conv( { hant: '發生編輯爭議的頁面', hans: '发生编辑争议的页面' } ) + '</h3>' );
		$( '#drwContent1' ).append( '<p>'
			+ conv( {
				hant: '請提供發生編輯爭議的條目或頁面的名稱。',
				hans: '请提供发生编辑争议的条目或页面的名称。'
				
			} ) + '<br>'
			+ conv( {
				hant: '例如,如果爭議在「<nowiki>澳大利亚</nowiki>」條目,則請輸入「<b><nowiki>澳大利亚</nowiki></b>」,而非<nowiki>[[澳大利亚]]</nowiki>或「<nowiki/>https://zh.wikipedia.org/wiki/澳大利亚<nowiki/>」。請注意標題繁簡。',
				hans: '例如,如果争议在「<nowiki>澳大利亚</nowiki>」条目,则请输入「<b><nowiki>澳大利亚</nowiki></b>」,而非<nowiki>[[澳大利亚]]</nowiki>或「<nowiki/>https://zh.wikipedia.org/wiki/澳大利亚<nowiki/>」。请注意标题简繁。'
			} ) + '</p>'
		);

		var inputbox = $( document.createElement( 'input' ) );
		inputbox.attr( {
			type: 'text',
			name: 'article_title',
			value: this.article_title
		} );

		inputbox.change( function() {
			gDRW.article_title = this.value.replace( 'https://', 'http://' ).replace( 'http://zh.wikipedia.org/wiki/', '' ).replace( '_', ' ' ).replace( '[[', '' ).replace( ']]', '' );
		} );

		$( '#drwContent1' ).append( inputbox );
	};

	// Draw description textarea
	this.drawDescriptionInput = function() {
		//Appends to $( '#drwContent1' )

		$( '#drwContent1' ).append( '<h3>' + conv( { hant: '爭議概況', hans: '争议概况' } ) + '</h3>' );
		$( '#drwContent1' ).append( '<p>'
			+ conv( {
				hant: '是什麼爭議需要協助調解?請略述爭議的情況(包括緣由及各方的編輯行為)。',
				hans: '是什么争议需要协助调解?请略述争议的情况(包括缘由及各方的编辑行为)。'
				
			} ) + '</p>' );

		var desc = $( document.createElement( 'textarea' ) );
		desc.attr( {
			rows: 6,
			cols: 60,
			maxlength: 500
		} );
		desc.text( this.dispute_description );

		desc.change( function() {
			gDRW.dispute_description = this.value;
		} );
		desc.on( 'keyup', function() {
			$( '#taCount' ).text( '' + this.value.length + ' / 500' );
		} );

		$( '#drwContent1' ).append( desc );

		$( '#drwContent1' ).append( $( '<p id="taCount">' + this.dispute_description.length + ' / 500</p>' ) );
	};

	// Involved users
	this.drawUserInput = function() {
		//Appends to $( '#drwContent1' )

		$( '#drwContent1' ).append( '<h3>' + conv( { hk: '涉事用戶', tw: '涉事使用者', hans: '涉事用户' } ) + '</h3>' );
		$( '#drwContent1' ).append( '<p>'
			+ conv( {
				hk: '這次爭議還涉及哪些用戶?請在下方鍵入用戶名(不帶「User:」前綴),並以半形逗號(,)分列。請謹記通知他們參與此討論。',
				tw: '這次爭議還涉及哪些使用者?請在下方鍵入使用者名稱(不帶「User:」前綴),並以半形逗號(,)分列。請謹記通知他們參與此討論。',
				hans: '这次争议还涉及哪些用户?请在下方键入用户名(不带「User:」前缀),并以半形逗号(,)分列。请谨记通知他们参与此讨论。'
			} ) + '</p>' );

		var inputbox = $( document.createElement( 'input' ) );
		inputbox.attr( {
			type: 'text',
			name: 'involved_users',
			value: this.involved_users.join( ', ' )
		} );

		inputbox.change( function() {
			gDRW.involved_users = this.value.split( /,,/g ).map( function ( involved_user ) { return involved_user.trim(); } );
		} );

		$( '#drwContent1' ).append( inputbox );
	};

	// Draw previous forums
	this.drawPreviousInput = function() {
		//Appends to $( '#drwContent1' )

		$( '#drwContent1' ).append( '<h3>' + conv( { hant: '解決爭議', hans: '解决争议' } ) + '</h3>' );
		$( '#drwContent1' ).append( '<p>' + conv( {
			hant: '到目前為止,您已經嘗試過哪些途徑解決這次爭議?請提供這些討論的連結,使用逗號或換行分隔。例如:',
			hans: '到目前为止,您已经尝试过哪些途径解决这次争议?请提供这些讨论的链接,使用逗号或换行分隔。例如:'
		} ) + '<br>' );
		$( '#drwContent1' ).append('<ul>' +
		'<li style="font-family:monospace;"><nowiki>[[Talk:澳大利亞#從資訊框移除高等法院院長]]</li>' +
		'<li style="font-family:monospace;"><nowiki>[https://zh.wikipedia.org/wiki/Talk:澳大利亞#從資訊框移除高等法院院長 Talk:澳大利亞]</li>' +
		'</ul>' );+
		$( '#drwContent1' ).append(
			'<u>' + conv( {
				hant: '您近期至少應在相關條目的討論頁上充分嘗試討論。',
				hans: '您近期至少应在相关条目的讨论页上充分尝试讨论。'
			} ) + '</u>' +
			'<br><b style="color:red">' + conv( {
				hant: '注意:</b>如果未提供合適的討論連結,您的請求可能會被自動關閉。',
				hans: '注意:</b>如果未提供合适的讨论链接,您的请求可能会被自动关闭。'
			} ) + '</b></font></p>'
		);

		var desc = $( document.createElement( 'textarea' ) );
		desc.attr( {
			rows: 3,
			cols: 60,
			maxlength: 500
		} );
		desc.text( this.previous_forums );

		desc.change( function() {
			gDRW.previous_forums = this.value;
		} );
		desc.on( 'keyup', function() {
			$( '#pcCount' ).text( '' + this.value.length + ' / 500' );
		} );

		$( '#drwContent1' ).append( desc );

		$( '#drwContent1' ).append( $( '<p id="pcCount">' + this.previous_forums.length + ' / 500</p>' ) );
	};

	 // Draw outcome textarea
	this.drawOutcomeInput = function() {
		//Appends to $( '#drwContent1' )

		$( '#drwContent1' ).append( '<p>' + conv( { hant: '您希望我們如何協助您解決這次爭議?', hans: '您希望我们如何协助您解决这次争议?' } ) + '</p>' );

		var desc = $( document.createElement( 'textarea' ) );
		desc.attr( {
			rows: 5,
			cols: 60,
			maxlength: 500
		} );
		desc.text( this.desired_outcome );

		desc.change( function() {
			gDRW.desired_outcome = this.value;
		} );
		desc.on( 'keyup', function() {
			$( '#ocCount' ).text( '' + this.value.length + ' / 500' );
		} );

		$( '#drwContent1' ).append( desc );
		$( '#drwContent1' ).append( $( '<p id="ocCount">' + this.desired_outcome.length + ' / 500</p>' ) );
	};

	// Draw the summary content
	this.drawDRWSummary = function() {
		//Appends to $( '#drwContent1' )

		//$( '#drwContent1' ).append( list );

		//Article Title
		$( '#drwContent1' ).append( '<h3>' + conv( { hant: '發生編輯爭議的頁面', hans: '发生编辑争议的页面' } ) + '</h3>' );
		$( '#drwContent1' ).append( $( '<p></p>' ).text( this.article_title ) );

		//Dispute Description
		$( '#drwContent1' ).append( '<h3>' + conv( { hant: '爭議概況', hans: '争议概况' } ) + '</h3>' );
		$( '#drwContent1' ).append( $( '<p></p>' ).text( this.dispute_description ) );

		//Users involved
		$( '#drwContent1' ).append( '<h3>' + conv( { hk: '涉事用戶', tw: '涉事使用者', hans: '涉事用户' } ) + '</h3>' );
		$( '#drwContent1' ).append( $( '<p></p>' ).text( this.involved_users.join(', ') ) );

		//Previous forums
		$( '#drwContent1' ).append( '<h3>' + conv( { hant: '解決爭議', hans: '解决争议' } ) + '</h3>' );
		$( '#drwContent1' ).append( '<h4>' + conv( { hant: '嘗試過的爭議解決途徑', hans: '尝试过的争议解决途径' } ) + '</h4>' );
		$( '#drwContent1' ).append( $( '<p></p>' ).text( this.previous_forums ) );

		//Desired Outcome
		$( '#drwContent1' ).append( '<h4>' + conv( { hant: '您希望我們如何協助您解決這次爭議?', hans: '您希望我们如何协助您解决这次争议?' } ) + '</h4>' );
		$( '#drwContent1' ).append( $( '<p></p>' ).text( this.desired_outcome ) );

	};

	// Generate a WikiText string, representing the report.
	// Returns a string of wikitext
	this.getWikitextReport = function() {
		//Returns string of wikitext for submission to DR page
		var report = "{{DR case status}}\n{{subst:DNAU|28}}<!-- REMEMBER TO REMOVE THE PREVIOUS COMMENT WHEN CLOSING THIS THREAD! -->\n{{drn filing editor|{{subst:REVISIONUSER}}|~~~~~}}\n\n";

		//On Talk Page
		report += "<span style=\"font-size:110%\">'''您是否已在討論頁上針對這個問題進行過討論?'''</span>\n";
		report += '\n' + ( ( this.talkpage ) ? '是的,我已經在討論頁上討論過了。' : '還沒。' ) + '\n\n';

		//Article Title
		report += "<span style=\"font-size:110%\">'''爭議發生地點'''</span>\n";
		var articleArray = this.article_title.split( ',' );
		for ( var articleIndex = 0; articleIndex < articleArray.length; articleIndex++ )
		{
			report += '* {{pagelinks|' + articleArray[ articleIndex ] + '}}\n';
		}
		
		//Involved users
		report += "<span style=\"font-size:110%\">'''涉事用戶'''</span>\n";
		var userIndex;
		for ( userIndex = 0; userIndex < this.involved_users.length; userIndex++ )
		{
			var user = this.involved_users[ userIndex ];
			user = user.trim();
			if ( user ) {
				report += '* {{User|' + user + '}}\n';
			}
		}

		//Dispute Description
		report += "<span style=\"font-size:110%\">'''爭議概述'''</span>\n";
		report += '\n'+ this.dispute_description + '\n\n';

		//Previous forums
		report += "<span style=\"font-size:110%\">'''在提交到這裡之前,您嘗試過哪些方式來解決這個爭議?'''</span>\n";
		report += '\n'+ this.previous_forums + '\n\n';

		//Desired Outcome
		report += "<span style=\"font-size:110%\">'''您覺得我們要如何協助您解決這個爭議?'''</span>\n";
		report += '\n' + this.desired_outcome + '\n\n';

		//User statements
		var currentUser = mw.config.get( 'wgUserName' );
		for ( userIndex = 0; userIndex < this.involved_users.length; userIndex++ ) {
			var user = this.involved_users[ userIndex ];
			if ( user != currentUser ) {
			   report += '====' + user + "的爭議摘要  ====\n<div style=\"font-size:smaller\">請將表述控制在500字以內。</div>\n\n";
			}
		}

		//Discussion
		report += '=== ' + this.article_title + "的條目討論 ===\n<div style=\"font-size:smaller\">在志工正式開啟案件前,請盡量減少討論。如果有需要,請在條目討論頁繼續進行討論。</div>";

		return report;
	};

	// Returns an html string, representing the progress bar, based on the
	// objects state.
	this.getProgressBar = function() {
		var s1_active = ( this.wizard_step == 1 ) ? ' pr-active' : '';
		var s2_active = ( this.wizard_step == 2 ) ? ' pr-active' : '';
		var s3_active = ( this.wizard_step == 3 ) ? ' pr-active' : '';
	    var s4_active = ( this.wizard_step == 4 ) ? ' pr-active' : '';


		var signupbox = '<ul id="signuptopbox">';
		signupbox += '<li class="s1' + s1_active + '"><span class="pr-number">1</span><span>' + conv( { hant: '介紹', hans: '介绍' } ) + '</span></li>';
		signupbox += '<li class="pr-spacer' + s1_active + '"><div></div></li>';

		signupbox += '<li class="s2' + s2_active + '"><span class="pr-number">2</span><span>' + conv( { hant: '爭議類型', hans: '争议类型' } ) + '</span></li>';
		signupbox += '<li class="pr-spacer' + s2_active + '"><div></div></li>';
		
		signupbox += '<li class="s2' + s3_active + '"><span class="pr-number">3</span><span>描述</span></li>';
		signupbox += '<li class="pr-spacer' + s3_active + '"><div></div></li>';

		signupbox += '<li class="s4' + s4_active + '"><span class="pr-number">4</span><span>' + conv( { hant: '預覽請求', hans: '预览请求' } ) + '</span></li>';
		signupbox += '<li class="pr-spacer' + s4_active + '"><div></div></li>';
	
		signupbox += '</ul>';

		return signupbox;
	};

	this.getArticleTitle = function() {
		return this.article_title;
	};

	this.getDisputeDescription = function() {
		return this.dispute_description;
	};

}

/**
 * The various "show...()" functions display each of the 'screens' in the wizard
 */

function showStep1() {

	gDRW.wizard_step = 1;

	$( '#drwProgressBar' ).html( gDRW.getProgressBar() );

	$( '#drwContent1' ).html(
		'<h2>' + conv( {
			hant: '尋求解決爭議',
			hans: '寻求解决争议'
		} ) + '</h2>' +

		'<p>' +

		conv( {
			tw: '若您與其他編者編輯條目時未能<a href="https://zh.wikipedia.org/wiki/WP:CONSENSUS>商定</a>內容如何撰寫,並願意通過討論冷靜協商解決問題,即可使用本表格將爭端事宜提交到<a href="https://zh.wikipedia.org/wiki/WP:DRN">爭議解決布告板</a>,由<a href="https://zh.wikipedia.org/wiki/WP:DRVOLUNTEERS">志工編輯者</a>協助分析問題並化解爭端。',
			hk: '若您與其他編者編輯條目時未能<a href="https://zh.wikipedia.org/wiki/WP:CONSENSUS>商定</a>內容如何撰寫,並願意透過討論冷靜協商解決問題,即可使用本表格將爭端事宜提交到<a href="https://zh.wikipedia.org/wiki/WP:DRN">爭議解決佈告板</a>,由<a href="https://zh.wikipedia.org/wiki/WP:DRVOLUNTEERS">義務編輯者</a>協助分析問題並化解爭端。',
			cn: '若您与其他编者编辑条目时未能<a href="https://zh.wikipedia.org/wiki/WP:CONSENSUS>商定</a>内容如何撰写,并愿意透过讨论冷静协商解决问题,即可使用本表格将争端事宜提交到<a href="https://zh.wikipedia.org/wiki/WP:DRN">争议解决布告板</a>,由<a href="https://zh.wikipedia.org/wiki/WP:DRVOLUNTEERS">志愿编辑者</a>协助分析问题并化解争端。'
		} ) +

		'<h3>' + conv( {
			tw: '志工編輯者可以:',
			hk: '義務編輯者可以:',
			cn: '志愿编辑者可以:'
		} ) + '</h3>' +

		'<ul>' +
		'<li>' + conv( {
			hant: '提供內容建議;',
			hans: '提供内容建议;'
		} ) + '</li>' +
		'<li>' + conv( {
			hant: '提供有關方針和指引的指導;',
			hans: '提供有关方针和指引的指导;'
		} ) + '</li>' +
		'<li>' + conv( {
			hant: '調解爭端,助編輯者產生<a href="https://zh.wikipedia.org/wiki/WP:CONSENSUS">共識</a>;及',
			hans: '调解争端,助编辑者产生<a href="https://zh.wikipedia.org/wiki/WP:CONSENSUS">共识</a>;及'
		} ) + '</li>' +
		'<li>' + conv( {
			hant: '確保討論環境健康,讓編輯者體現合作精神。',
			hans: '确保讨论环境健康,让编辑者体现合作精神。'
		} ) + '</li>' +
		'</ul>' +

		'<h3>' + conv( {
			hant: '爭議解決<span style="color:green;">不會</span>:',
			hans: '争议解决<span style="color:green;">不会</span>:'
		} ) + '</h3>' +

		'<ul>' +
		'<li>' + conv( {
			tw:   '禁止其他使用者編輯',
			hk:   '禁止其他用戶編輯;',
			hans: '禁止其他用户编辑;'
		} ) + '</li>' +
		'<li>' + conv( {
			hant: '僅因您不喜歡而移除條目內容;',
			hans: '仅因您不喜欢而移除条目内容;'
		} ) + '</li>' +
		'<li>' + conv( {
			hant: '強迫其他編輯者執行某項操作;',
			hans: '强迫其他编辑者执行某项操作;'
		} ) + '</li>' +
		'<li>' + conv( {
			hant: '處理編輯者未自行嘗試協商的問題;',
			hans: '处理编辑者未自行尝试协商的问题;'
		} ) + '</li>' +
		'<li>' + conv( {
			hant: '處理用戶行為問題;及',
			hans: '处理用户行为问题;及'
		} ) + '</li>' +
		'<li>' + conv( {
			hant: '處理正在其他場合討論的爭議(如<a href="https:/zh.wikipedia.org/wiki/WP:RFC">徵求意見</a>或<a href="https://zh.wikipedia.org/wiki/WP:RFAR">仲裁</a>)。',
			hans: '处理正在其他场合讨论的争议議(如<a href="https:/zh.wikipedia.org/wiki/WP:RFC">征求意见</a>或<a href="https://zh.wikipedia.org/wiki/WP:RFAR">仲裁</a>)。' 
		} ) + '</li>' +

		'</ul></p>' +

		'<p>' + conv( {
			hant: '您是否已充分嘗試與其他編輯者在條目討論頁商討條目內容問題?',
			hans: '您是否已充分尝试与其他编辑者在条目讨论页商讨条目内容问题?' 
		} ) + '</p>'
	);

	var buttons = '<a href="#top" class="button1" id="yesContentClickButton">' + conv( {
			hant: '是,已經嘗試討論一段時間了',
			hans: '是,已经尝试讨论一段时间了' 
		} ) + '</a>';
	buttons += ' <a href="#top" class="button1" id="showCancelButton">' + conv( {
			hant: '還沒',
			hans: '还没' 
		} ) + '</a>';
	$( '#drwButtons' ).html( buttons );

	$( '#yesContentClickButton' ).click( yesContentClick );
	$( '#showCancelButton' ).click( showCancel );
}

function showStep2() {

	gDRW.wizard_step = 2;

	$( '#drwProgressBar' ).html( gDRW.getProgressBar() );

	$( '#drwContent1' ).html(
		'<h2>爭議類型</h2>' +

		'<p>' + conv( {
			hant: '本板專門處理與條目內容相關的問題,無法處理有關其他編輯者行為的問題。這個問題是否僅涉及其他編輯者的行為?',
			hans: '本板专门处理与条目内容相关的问题,无法处理有关其他编辑者行为的问题。这个问题是否仅涉及其他编辑者的行为?' 
		} ) + '</p>'
	);

	var buttons = '<a href="#top" class="button1" id="yesConductClickButton">' + conv( {
			hant: '是,這是關於另一位用戶的行為問題',
			hans: '是,这是关于另一位用户的行为问题' 
		} ) + '</a>';
	buttons += ' <a href="#top" class="button1" id="showContentDisputeForm">不是</a>';
	$( '#drwButtons' ).html( buttons );

	$( '#yesConductClickButton' ).click( showConductCancel );
	$( '#showContentDisputeForm' ).click( showStep3 );
}

function showStep3( errorMsg ) {

	gDRW.wizard_step = 3;
	$( '#drwProgressBar' ).html( gDRW.getProgressBar() );

	var intro = '';

	if ( typeof errorMsg === 'string' ) {
		intro = '<p class="warning">' + errorMsg + '</p>';
	}

	intro +=
		'<p>' +
		conv( {
			hant: '請填寫以下表格,讓其他編輯者瞭解爭議情況。',
			hans: '请填写以下表格,让其他编辑者了解争议情况。' 
		} ) +
		'</p><p>' +
		conv( {
			hant: '為確保討論精要,請注意字數限制。',
			hans: '为确保讨论精要,请注意字数限制。' 
		} )+
		'</p>';

	$( '#drwContent1' ).html( intro );

	gDRW.drawTitleInput();

	gDRW.drawDescriptionInput();

	gDRW.drawUserInput();

	gDRW.drawPreviousInput();

	gDRW.drawOutcomeInput();

	var buttons = '<a href="#top" class="button1" id="showStep1Button">上一步</a>';
	buttons += ' <a href="#top" class="button1" id="showCancelButton">取消</a>';
	buttons += ' <a href="#top" class="button1" id="showStep4Button">下一步</a>';

	$( '#drwButtons' ).html( buttons );

	$( '#showStep1Button' ).click( showStep1 );
	$( '#showCancelButton' ).click( showCancel );
	$( '#showStep4Button' ).click( showStep4 );
}

function showStep4() {

	var inputErrors = [];

	//Check that vars were filled
	if ( gDRW.article_title === '' ) {
		inputErrors.push( conv( { hant: '發生編輯爭議的頁面', hans: '发生编辑争议的页面' } ) );
	}
	if ( gDRW.dispute_description === '' ) {
		inputErrors.push( conv( { hant: '爭議概況', hans: '争议概况' } ) );
	}
	if ( gDRW.previous_forums === '' ) {
		inputErrors.push( conv( { hant: '嘗試過的爭議解決途徑', hans: '尝试过的争议解决途径' } ) );
	}
	if ( gDRW.desired_outcome === '' ) {
		inputErrors.push( conv( { hant: '預期成果', hans: '预期成果' } ) );
	}
	if ( inputErrors.length > 0 ) {
		return showStep3( conv( { hant: '所有欄位都需要填寫。尚未填寫的值:', hans: '所有栏位都需要填写。尚未填写的值:' } ) + inputErrors.join( '、' ) );
	}

	gDRW.wizard_step = 4;
	$( '#drwProgressBar' ).html( gDRW.getProgressBar() );

	$( '#drwContent1' ).html( '<p>' + conv( { hant: '以下是您提供的內容摘要。請檢查是否正確再點選提交。', hans: '以下是您提供的内容摘要。请检查是否正确在点选提交。' } ) + '</p>' );

	gDRW.drawDRWSummary();


	var buttons = '<a href="#top" class="button1" id="showStep3Button">' + conv( {
		hant: '編輯',
		hans: '编辑'
	} ) + '</a>';
	buttons += ' <a href="#top" class="button1" id="showCancelButton">取消</a>';
	buttons += ' <a href="#top" class="button1" id="doSubmitButton">保存</a>';

	$( '#drwButtons' ).html( buttons );

	$( '#showStep3Button' ).click( showStep3 );
	$( '#showCancelButton' ).click( showCancel );
	$( '#doSubmitButton' ).click( doSubmit );
}

function showResult( status ) {

	$( '#drwProgressBar' ).text( '' );

	if ( status == 'ok' ) {
		//Show thankyou
		$( '#drwContent1' ).html( '<h3>提交成功!</h3>' );
		$( '#drwContent1' ).append( $( '<a>' + conv( {
			hant: '點此閱覽您的請求。',
			hans: '点此阅览您的请求。'
		} ) + '請點選這裡來閱覽您的請求。</a>' ).attr( { href: mw.config.get( 'wgArticlePath' ).replace( '$1', gDRW.post_link ) } ) );
		$( '#drwButtons' ).html( '' );
	} else if ( status == 'error' ) {
		//Show error
		$( '#drwContent1' ).html( '<h2>' + conv( {
			hant: '出現錯誤',
			hans: '出现错误'
		} ) + '</h2><p>' + conv( {
			hant: '請重新嘗試提交。',
			hans: '请重新尝试提交。'
		} ) + '</p>' );
		$( '#drwButtons' ).html( '<a href="#top" class="button1" id="showStep4Button">返回摘要</a>' );
		$( '#showStep4Button' ).click( showStep4 );
	} else {
		$( '#drwContent1' ).html( '<h2>錯誤</p><p>發生了一些錯誤!</p>' );
		$( '#drwButtons' ).html( '' );
	}
}

function showCancel() {

	gDRW.wizard_step = 0;
	$( '#drwProgressBar' ).html( gDRW.getProgressBar() );

	$( '#drwContent1' ).html(
		'<p>' +
		conv( { hant: '尋求第三方爭議解決前,請先在條目討論頁上與其他編輯者討論問題。您可以在<a href="https://zh.wikipedia.org/wiki/WP:DISCUSSIT">這個頁面</a>找到相關指導,或者您也可以在<a href="https://zh.wikipedia.org/wiki/Special:MyTalk">您的個人討論頁</a>上放置<tt>{{helpme}}</tt>模板尋求其他編輯者的協助。', hans: '寻求第三方争议解决前,请先在条目讨论页上与其他编辑者讨论问题。您可以在<a href="https://zh.wikipedia.org/wiki/WP:DISCUSSIT">这个页面</a>找到相关指导,或者您也可以在<a href="https://zh.wikipedia.org/wiki/Special:MyTalk">您的个人讨论页</a>上放置<tt>{{helpme}}</tt>模板寻求其他编辑者的协助。' } ) +
		'</p>'
	);
	$( '#drwButtons' ).html( '<a href="#top" class="button1" id="showStep1Button">' + conv( { hant: '從頭開始', hans: '从头开始' } ) + '</a>' );
	$( '#showStep1Button' ).click( showStep1 );
}

function showConductCancel() {

	gDRW.wizard_step = 0;
	$( '#drwProgressBar' ).html( gDRW.getProgressBar() );

	$( '#drwContent1' ).html(
		'<p>' +
		conv( { hant: '此處只協助處理內容爭端。如果您對其他編輯者的行為有疑慮,請將問題提交至<a href="https://zh.wikipedia.org/wiki/WP:AN">管理員布告板</a>。', hans: '此处只协助处理内容争端。如果您对其他编辑者的行为有疑虑,请将问题提交至<a href="https://zh.wikipedia.org/wiki/WP:AN">管理员布告板</a>。' } ) +
		'</p>'
	);
	$( '#drwButtons' ).html( '<a href="#top" class="button1" id="showStep1Button"></a>' );
	$( '#showStep1Button' ).click( showStep1 );
}

/**
 * Do the final step of the DRW and post the report to the appropriate page
 */
function doSubmit() {

	//Notify user that we are doing the update
	$( '#drwProgressBar' ).html( '<div style="text-align: center"><img alt="saving report" src="https://upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif"></img></div>' );
	$( '#drwContent1' ).html( '<p>' + conv( { hant: '正在送出請求', hans: '正在送出请求' } ) + '......</p>' );

	//Decide on the page to update
	var DRPage = 'Wikipedia:爭議解決布告板'; //The default page to post this

	/**
	 * Decide where to post this dispute resolution report. In the end, DRPage needs to hold
	 * the title of the page where we post the report.
	 *
	 * gDRW.dispute_type is set the short name (index) of the user-selected dispute type
	 * gDRW.previous_forums[ 'xxx' ] will be true if the use ticked the 'xxx' checkbox in the previous forums
	 */

	//Set the post-page on the DRW object
	gDRW.post_link = DRPage + '#' + gDRW.article_title.replace( ' ', '_' );

	//Compose Report
	var report = gDRW.getWikitextReport();

	//Add new section to designated page
	var edittoken = mw.user.tokens.get( 'csrfToken' );

	var date = new Date();
	var dateString = date.toLocaleDateString();
	var summary = gDRW.article_title;

	addNewSection( DRPage, summary, report, edittoken );
}


/**
 * Event handler functions
 */
function setDisputeForum( box ) {
	//alert( 'Setting ' + gDRW.forum_labels[ box.value ] + ' to true' );
	gDRW.previous_forums[ box.value ] = box.checked;

	var linkboxid = 'link_' + box.value;

	if ( box.checked ) {
		$( '#' + linkboxid ).show();
	} else {
		$( '#' + linkboxid ).hide();
	}
}

function updateLink( box ) {
	gDRW.forum_links[ box.name ] = box.value;
}

function yesContentClick() {
	gDRW.talkpage = true;
	showStep2();
}

/**
 * Taken almost verbatim from https://www.mediawiki.org/wiki/API:Edit
 */
function addNewSection( pagetitle, summary, content, editToken ) {
	$.ajax( {
		url: mw.util.wikiScript( 'api' ),
		data: {
			format: 'json',
			action: 'edit',
			title: pagetitle,
			section: 'new',
			summary: summary,
			text: content,
			token: editToken
		},
		dataType: 'json',
		type: 'POST',
		success: function( data ) {
			if ( data && data.edit && data.edit.result == 'Success' ) {
				//window.location.reload(); // reload page if edit was successful
				showResult( 'ok' );
			} else if ( data && data.error ) {
				alert( 'Error: API returned error code "' + data.error.code + '": ' + data.error.info );
				showResult( 'error' );
			} else {
				alert( 'Error: Unknown result from API.' );
				showResult( 'error2' );
			}
		},
		error: function( xhr ) {
			alert( 'Error: Request failed.' );
		}
	} );
}


/**
 * Initialization function. Test if we should place the DRW on the current page.
 * Looks for a <div id="myDRW"></div> on the page.
 */

function runDRW() {

	if ( $( '#myDRW' ).length ){

		//importStylesheet( 'MediaWiki:Gadget-DRN-wizard.css' ); //CSS Styles for the DRW

		//Setup the App's workspace
		$( '#myDRW' ).html( '' );
		$( '#myDRW' ).append( $( '<div id="drw_main" style="height: 100%; border : 2px black solid;"></div>' ) );
		$( '#drw_main' ).append( '<div id="drwProgressBar" style="min-width: 550px; padding: 20px 25px; height: 30px; text-align: center"></div>' );
		$( '#drw_main' ).append( '<div id="drwContent1" style="min-width: 500px; padding: 25px 50px"></div>' );
		$( '#drw_main' ).append( '<div id="drwButtons" style="min-width: 500px; padding: 10px 50px; text-align: center"></div>' );

		showStep1(); //Show the first page
	}
}


var gDRW = new drw();

$( document ).ready( runDRW );
// JavaScript Document

// </nowiki>

} );