User:Ou0430/Friendly/friendlytalkback.js
< User:Ou0430 | Friendly
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
- Opera:按 Ctrl-F5。
// If FriendlyConfig aint exist.
if( typeof( FriendlyConfig ) == 'undefined' ) {
FriendlyConfig = {};
}
/**
FriendlyConfig.summaryAd ( string )
If ad should be added or not to summary, default [[WP:FRIENDLY|Friendly]]
*/
if( typeof( FriendlyConfig.summaryAd ) == 'undefined' ) {
FriendlyConfig.summaryAd = " using [[WP:FRIENDLY|Friendly]]";
}
/**
FriendlyConfig.markTalkbackAsMinor ( boolean )
*/
if( typeof( FriendlyConfig.markTalkbackAsMinor ) == 'undefined' ) {
FriendlyConfig.markTalkbackAsMinor = true;
}
/**
FriendlyConfig.insertHeadings ( boolean )
*/
if( typeof( FriendlyConfig.insertHeadings ) == 'undefined' ) {
FriendlyConfig.insertHeadings = true;
}
/**
FriendlyConfig.insertSignature ( boolean )
*/
if( typeof( FriendlyConfig.insertSignature ) == 'undefined' ) {
FriendlyConfig.insertSignature = true;
}
/**
FriendlyConfig.talkbackHeading ( String )
*/
if( typeof( FriendlyConfig.talkbackHeading ) == 'undefined' ) {
FriendlyConfig.talkbackHeading = '回复通告'
}
$(friendlytalkback);
function friendlytalkback() {
if( wgNamespaceNumber == 3 ) {
var username = wgTitle.split( '/' )[0].replace( /\"/, "\\\""); // only first part before any slashes
twAddPortletLink( "javascript:friendlytalkback.callback(\"" + username + "\")", wgULS("回复","回覆"), "friendly-talkback", wgULS("新回复通告","新回覆通告"), "");
}
}
friendlytalkback.callback = function friendlytalkbackCallback( uid ) {
if( uid == wgUserName ){
alert( '請不要回覆自己。' );
return;
}
var Window = new SimpleWindow( 600, 350 );
Window.setTitle( "Talkback" );
var form = new QuickForm( friendlytalkback.callback.evaluate );
form.append( { type: 'radio', name: 'tbtarget',
list: [ {
label: '我的討論頁',
value: 'mytalk',
checked: 'true' },
{
label: '其他用戶的討論頁',
value: 'usertalk' },
{
label: '其他討論頁',
value: 'other' } ],
event: friendlytalkback.callback.change_target
} );
form.append( {
type: 'field',
label: 'Work area',
name: 'work_area'
} );
var result = form.render();
Window.setContent( result );
Window.display();
// We must init the
var evt = document.createEvent( "Event" );
evt.initEvent( 'change', true, true );
result.tbtarget[0].dispatchEvent( evt );
}
friendlytalkback.callback.change_target = function friendlytagCallbackChangeTarget(e) {
var value = e.target.value;
var root = e.target.form;
var old_area;
for( var i = 0; i < root.childNodes.length; ++i ) {
var node = root.childNodes[i];
if(
node instanceof Element &&
node.getAttribute( 'name' ) == 'work_area'
) {
old_area = node;
break;
}
}
var work_area = new QuickForm.element( {
type: 'field',
label: '回覆信息',
name: 'work_area'
} );
switch( value ) {
default:
case 'mytalk':
work_area.append( {
type:'input',
name:'section',
label:'鏈接章節(可選)'
} );
break;
case 'usertalk':
work_area.append( {
type:'input',
name:'page',
label:'用户'
} );
work_area.append( {
type:'input',
name:'section',
label:'鏈接章節(可選)'
} );
break;
case 'other':
work_area.append( {
type:'input',
name:'page',
label:'完整頁面名稱'
} );
work_area.append( {
type:'input',
name:'section',
label:'鏈接章節(可選)'
} );
break;
}
work_area.append( { type:'textarea', label:'附加信息(可選):', name:'message' } );
work_area.append( { type:'submit' } );
work_area = work_area.render();
old_area.parentNode.replaceChild( work_area, old_area );
}
friendlytalkback.callbacks = {
main: function( self ) {
self.statelem.status( '抓編輯令牌...' );
var xmlDoc = self.responseXML;
var editToken = xmlDoc.evaluate( '//page/@edittoken', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
var text = '{\{talkback|';
if( self.params.tbtarget == 'usertalk' || self.params.tbtarget == 'other' ) {
text += self.params.page;
} else {
text += wgUserName;
}
if( self.params.section != '' ) {
text += '|' + self.params.section;
}
text += '\}\}';
if( self.params.message != '' ) {
text += '\n' + self.params.message + '--\~\~\~\~';
} else if( FriendlyConfig.insertSignature ) {
text += '\n--\~\~\~\~';
}
var query = {
'action': 'edit',
'title': wgPageName,
'section': 'new',
'text': text,
'token': editToken,
'summary': FriendlyConfig.talkbackHeading,
'minor': FriendlyConfig.markTalkbackAsMinor ? 1 : undefined
};
var wikipedia_api = new Wikipedia.api( '添加回覆通告到用戶討論頁...', query, null, self.statelem );
wikipedia_api.post();
}
}
friendlytalkback.callback.evaluate = function friendlytalkbackCallbackEvaluate(e) {
var tbtarget = e.target.getChecked( 'tbtarget' )[0];
var page = null;
var section = e.target.section.value;
if( tbtarget == 'usertalk' || tbtarget == 'other' ) {
page = e.target.page.value;
if( tbtarget == 'usertalk' ) {
if( page == '' ) {
alert( '您必須指定用戶名' );
return;
}
} else {
if( page == '' ) {
alert( '您必須指定頁面名稱' );
return;
}
}
}
var params = {
tbtarget: tbtarget,
page: page,
section: section,
message: e.target.message.value
};
Status.init( e.target );
Wikipedia.actionCompleted.redirect = wgPageName;
Wikipedia.actionCompleted.notice = "完成";
var query = {
'action': 'query',
'prop': 'info',
'intoken': 'edit',
'titles': wgPageName
};
var wikipedia_api = new Wikipedia.api( '狀態', query, friendlytalkback.callbacks.main );
wikipedia_api.params = params;
wikipedia_api.post();
}