User:Shizhao/flickrcat.js

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
if (mw.config.get("wgNamespaceNumber") == 6 && mw.config.get("wgAction")=="view") {
	// set save_button
	var save_button = mw.html.element( 'span', {class:"mw-ui-button mw-ui-progressive", id:"flickrcat_save"}, new mw.html.Raw("Flickrcat Save"));
	$("td.fileinfo-paramfield:contains(Flickr tags)").append(`<br /><small>${save_button}</small>`);
	
	// addd category link
	var n = 0;
	$("td.fileinfo-paramfield:contains(Flickr tags)+td code").each(function(){
		var tagtext = $(this).text();
		var cattitle = "Category:" + tagtext;
		var api = new mw.Api();
		api.isCategory(cattitle).done( function ( existcat ) {
	    	if (existcat){
	    		//console.log(cattitle);
	    		//console.log(mw.util.getUrl( cattitle ));
	    		//console.log(mw.html.Raw(tagtext));
				//var taghtml = mw.html.element( 'a', {href: mw.util.getUrl( cattitle )}, new mw.html.Raw(tagtext) );
				var taghtml = `<code><a href="${mw.util.getUrl( cattitle )}">${tagtext}</a></code><a id="flickrcat_add" href=""><b>+</b></a>`;
				$(`td.fileinfo-paramfield:contains(Flickr tags)+td code:eq(${n})`).replaceWith(taghtml);
			}
			n += 1;
		} );
	});
	
	//select category to flickrcat_add
	var flickrcat_add =[];
	$("td.fileinfo-paramfield:contains(Flickr tags)+td").on('click','a#flickrcat_add',function(e){
		e.preventDefault();
		var flickrtag_add = $(this).prev().text();
		if (flickrcat_add.includes(flickrtag_add)) {
			console.log( flickrtag_add + ' exist' );
		} else {
			flickrcat_add.push("Category:"+flickrtag_add);
			var s_tag = mw.html.element( 's', {}, new mw.html.Raw($(this).prev().html()));
			$(this).prev().replaceWith(s_tag);
		}
	});
	
	$("td.fileinfo-paramfield:contains(Flickr tags)").on('click','span#flickrcat_save',function(e){
		e.preventDefault();
		var cat_wikitext = flickrcat_add.join(']]\n[[');
		var all_cat_wikitext = `\n[[${cat_wikitext}]]\n{\{subst:chc}\}\n`;
	
		new mw.Api().edit(
		    mw.config.get( "wgPageName" ),
		    function ( revision ) {
		        return {
		            text: revision.content.replace( /\{\{Uncategorized\|.*\}\}/, all_cat_wikitext ),
		            summary: 'Add categories via [[User:Shizhao/flickrcat.js|Flickrcat]]',
		            assert: 'user',
		            minor: false
		        };
		    }
		)
		.then( function () {
		    console.log( 'Saved!' );
		    location.reload();
		} );
	});
}