User:Ou0430/Friendly/friendlyifd.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.markVfdAsMinor ( boolean )
*/
if( typeof( FriendlyConfig.markVfdAsMinor ) == 'undefined' ) {
FriendlyConfig.markVfdAsMinor = false;
}
/**
FriendlyConfig.markVfdAsMinor ( boolean )
*/
if( typeof( FriendlyConfig.markVfdAsMinor ) == 'undefined' ) {
FriendlyConfig.markVfdAsMinor = true;
}
/**
FriendlyConfig.autoNotifyVfd ( boolean )
*/
if( typeof( FriendlyConfig.autoNotifyVfd ) == 'undefined' ) {
FriendlyConfig.autoNotifyVfd = true;
}
var creator = "";
$(friendlyifd);
function friendlyifd() {
if( wgNamespaceNumber == 6 && wgCurRevisionId != false ) {
twAddPortletLink( "javascript:friendlyifd.callback()", "提刪", "friendly-ifd", "提交文件存廢討論", "");
} else {
return;
}
}
friendlyifd.callback = function friendlyifdCallback() {
var Window = new SimpleWindow( 600, 300 );
Window.setTitle( "提交文件存廢討論" );
var form = new QuickForm( friendlyifd.callback.evaluate );
form.append( {
type: 'textarea',
name: 'reason',
label: "理由"
}
);
form.append( { type:'submit', label:"提交" } );
var result = form.render();
Window.setContent( result );
Window.display();
}
friendlyifd.callbacks = {
main: function( self ) {
++Wikipedia.numberOfActionsLeft;
var xmlDoc = self.responseXML;
var exists = xmlDoc.evaluate( 'boolean(//pages/page[not(@missing)])', xmlDoc, null, XPathResult.BOOLEAN_TYPE, null ).booleanValue;
if( ! exists ) {
self.statelem.error( "文件不存在,可能已被刪除" );
return;
}
var query = {
'title': wgPageName,
'action': 'submit'
};
var wikipedia_wiki = new Wikipedia.wiki( "標記文件", query, friendlyifd.callbacks.tagPage );
wikipedia_wiki.params = self.params;
wikipedia_wiki.followRedirect = false;
wikipedia_wiki.get();
},
tagPage: function( self ) {
form = this.responseXML.getElementById( 'editform' );
var text = form.wpTextbox1.value;
text = "\{\{subst:Vfd/auto|" + self.params.reason + "\}\}\n" + text;
if( FriendlyConfig.markVfdAsPatrolled && self.params.rcid != '' ) {
var query = {
'title': wgPageName,
'action': 'markpatrolled',
'rcid': self.params.rcid
};
var wikipedia_wiki = new Wikipedia.wiki( "標記文件為已巡查", query );
wikipedia_wiki.post();
}
var query = {
'action': 'query',
'prop': 'revisions',
'titles': wgPageName,
'rvlimit': 1,
'rvprop': 'user',
'rvdir': 'newer'
}
var callback = function( self ) {
var xmlDoc = self.responseXML;
var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
creator = user;
if( wgPageName != ( 'User talk:' + user ) ) {
var query = {
'title': 'User talk:' + user,
'action': 'submit'
};
var wikipedia_wiki = new Wikipedia.wiki( "通知文件創建者" + user + '', query, friendlyifd.callbacks.userNotification );
wikipedia_wiki.params = self.params;
wikipedia_wiki.get();
} else {
Status.info( "信息", "當前文件為創建者討論頁,取消通知" ); //WTF??!
}
}
if( self.params.usertalk ) {
var wikipedia_api = new Wikipedia.api( "抓創建者數據", query, callback );
wikipedia_api.params = self.params;
wikipedia_api.post();
}
var postData = {
'wpMinoredit': FriendlyConfig.markVfdAsMinor ? '' : undefined,
'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': '',
'wpSummary': "提交文件存廢討論" + FriendlyConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
var query = {
'action': 'query',
'prop': 'revisions',
'titles': wgPageName,
'rvlimit': 1,
'rvprop': 'user',
'rvdir': 'newer'
}
var callback = function( self ) {
var xmlDoc = self.responseXML;
var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
function twodigits(num) {
return num < 10 ? '0' + num : num;
}
var date = new Date();
if( wgPageName != ( 'Wikipedia:檔案存廢討論/記錄/' + date.getUTCFullYear() + '/' + twodigits(date.getUTCMonth() + 1) + '/' + twodigits(date.getUTCDate()) ) ) {
var query = {
'title': 'Wikipedia:檔案存廢討論/記錄/' + date.getUTCFullYear() + '/' + twodigits(date.getUTCMonth() + 1) + '/' + twodigits(date.getUTCDate()),
'action': 'submit'
};
var wikipedia_wiki = new Wikipedia.wiki( "報告給WP:IFD", query, friendlyifd.callbacks.reportIfd );
wikipedia_wiki.params = self.params;
wikipedia_wiki.get();
} else {
Status.info( "信息", "當前頁面為報告頁,取消報告" ); //WTF??!
}
}
var wikipedia_api = new Wikipedia.api( "抓報告頁數據", query, callback );
wikipedia_api.params = self.params;
wikipedia_api.post();
var postData = {
'wpMinoredit': FriendlyConfig.markVfdAsMinor ? '' : undefined,
'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': '',
'wpSummary': "提交文件存廢討論" + FriendlyConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
},
userNotification: function( self ) {
var form = self.responseXML.getElementById( 'editform' );
var text = form.wpTextbox1.value;
if( text == '\n' ) {
text += "\{\{subst:welcome\}\}"
}
text += "\n\{\{subst:Idw|" + wgPageName + "\}\}\~\~\~\~";
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': '',
'wpSummary': "通知:文件\[\[" + wgPageName + "\]\]提交存廢討論" + FriendlyConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
},
reportIfd: function( self ) {
var form = self.responseXML.getElementById( 'editform' );
var text = form.wpTextbox1.value;
text += "\{\{subst:IfdItem|Filename=" + wgTitle + "|Reason=" + self.params.reason + "|Uploader=" + creator + "\}\}\~\~\~\~";
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': '',
'wpSummary': "文件\[\[" + wgPageName + "\]\]提交存廢討論" + FriendlyConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
}
}
friendlyifd.callback.evaluate = function friendlyifdCallbackEvaluate(e) {
wgPageName = wgPageName.replace( /_/g, ' ' );
var params = {
usertalk: FriendlyConfig.autoNotifyVfd != -1,
reason: e.target.reason.value,
rcid: QueryString.exists( 'rcid' ) ? QueryString.get( 'rcid' ) : ''
};
Status.init( e.target );
Wikipedia.actionCompleted.redirect = wgPageName;
Wikipedia.actionCompleted.notice = "完成";
var query = {
'action': 'query',
'titles': wgPageName
}
var wikipedia_api = new Wikipedia.api( "檢查文件是否存在", query, friendlyifd.callbacks.main );
wikipedia_api.params = params;
wikipedia_api.post();
}