MediaWiki:Comments.js

Материал из Викиновостей, свободного источника новостей

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
 // из [[:en:MediaWiki:Comments.js]], автор [[:en:User:TheFearow]]
 // смотрите [[en:Wikinews:Commentary pages on news events]].
 // ==========================================================================
 // MediaWiki interface button for Comments page based on [[commons:mediawiki:extra-tabs.js]].
 // Originally written by Dbenbenn, Avatar, Duesentrieb and Arnomane
 // Усовершенствовал для Викиновостей bawolff. Установил darklama
 // переписал bawolff в мае 2011.
 //
 // При копировании в другие Вики, желательно создать специальный css.
 
 // Выполняет проверку api.php на существование страницы,
 // поэтому несуществующая страница комментариев будет красной,
 // а существующая - обычной вкладкой.

 // Будет лучше, если он сможет проверит несколько страниц одного запроса.
 
var checkCommentaryPageExist = function (pageName, id, query) {
	pageName = mw.util.wikiUrlencode( pageName );
	var success = function (x) {
		if ( !x || !x.query || !x.query.pages ) {
			mw.log( "Error getting redlinks for opinion tab" );
			return;
		}
		if ( x.query.pages['-1'] ) {
			// Means its missing.
			var url = mw.config.get( 'wgScriptPath' ) +
				'/index.php?action=edit&redlink=1&title=' + pageName + '&' + query;
			$( '#' + id + ' a' ).attr( 'href', url );
			$( '#' + id ).addClass( 'new' );
		}
	};
	$.ajax(
		mw.config.get( 'wgScriptPath' ) + '/api.php?action=query&format=json&titles=' + pageName
	).then(success);
};
 
$(function comment() {
	// Интерфейс. При переводе изменять только это.
	var OpinionTabName = 'Комментарии';
	var TalkTabName = 'Обсуждение статьи';
	var ArticleTabName = 'Статья';
	var OpinionTabTooltip = 'Выскажите свою точку зрения';
	var OpinionNS = 102;
	// Дополнительно для добавления и редактирования url:
	var OpinionParams = 'preload=Викиновости:Комментарии/Заготовка&editintro=Викиновости:Комментарии/Вступление';
	// Конец перевода.
	// -------------------
    var title = mw.config.get('wgTitle');
    var skin = mw.config.get('skin');
	if (title === 'Main Page' || title === 'Заглавная страница') return;
	var portlet = skin === 'vector' ? 'p-namespaces' : 'p-cactions';
	switch(mw.config.get('wgNamespaceNumber')) {
		case 1:
		case 0:
			var targetPage = mw.config.get( 'wgFormattedNamespaces' )[OpinionNS] + ':' + title;
			var url = mw.util.getUrl( targetPage );

			var res = mw.util.addPortletLink(
				'p-namespaces',
				url,
				OpinionTabName,
				'ca-comments',
				OpinionTabTooltip
			);
			if ( !res ) {
				// No p-namespaces portal. Must be monobook then.
				var res2 = mw.util.addPortletLink(
					'p-cactions',
					url,
					OpinionTabName,
					'ca-comments',
					OpinionTabTooltip,
					undefined, /* accesskey */
					jQuery('#ca-edit')[0] /* nextnode */
				);
				if ( !res2 ) {
					mw.log( "Error adding opinions tab" );
				}
			}
			checkCommentaryPageExist(targetPage, 'ca-comments', OpinionParams);
	       		break;
		case 90: /* LQT thread */
			var targetPage = mw.config.get( 'wgTitle' ).replace(/\/.*$/, '');
			var talkTarget = mw.config.get( 'wgFormattedNamespaces' )[1] + ':' + targetPage;

			var before =  document.getElementById('ca-nstab-thread');
			var talk = mw.util.addPortletLink(
				portlet,
				mw.util.getUrl( talkTarget ),
				TalkTabName,
				"ca-main-talk", undefined, undefined, before
			);
			mw.util.addPortletLink(
				portlet,
				mw.util.getUrl( targetPage ),
				ArticleTabName,
				"ca-nstab-main",
				undefined, undefined, talk
			);

			checkCommentaryPageExist(targetPage, 'ca-nstab-main', '');
			checkCommentaryPageExist(talkTarget, 'ca-main-talk', '');
			break;
		case OpinionNS:
			var targetPage = mw.config.get( 'wgTitle' );
			var talkTarget = mw.config.get( 'wgFormattedNamespaces' )[1] + ':' + targetPage;

			var before = document.getElementById('ca-nstab-' +
				mw.config.get( 'wgFormattedNamespaces' )[OpinionNS].toLowerCase() );
			var talk = mw.util.addPortletLink(
				portlet,
				mw.util.getUrl( talkTarget ),
				TalkTabName,
				"ca-main-talk", undefined, undefined, before
			);
			mw.util.addPortletLink(
				portlet,
				mw.util.getUrl( targetPage ),
				ArticleTabName,
				"ca-nstab-main",
				undefined, undefined, talk
			);

			checkCommentaryPageExist(targetPage, 'ca-nstab-main', '');
			checkCommentaryPageExist(talkTarget, 'ca-main-talk', '');

			break;
		/* do stuff */
	}
});