Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.

  • Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
  • Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
  • Internet Explorer / Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5
  • Opera: натисніть Ctrl-F5
//<nowiki>
if ( typeof( window.projector ) == 'undefined' ) {
	window.projector  = {
		projects: [{
			id: 'astro',
			name: '🔭 Астрономія',
			template: '{{Проєкт:Астрономія|важливість=|рівень=}}',
			pattern: /Проєкт:Астрономія/,
		}, {
			id: 'bio',
			name: "☣ Біологія",
			template: "{{Стаття проєкту Біологія|class=|importance=}}",
			pattern: /проєкту ((Молекулярна )?біологія|Екологія|Ентомологія|Історія біології|Г?риби|Птахи)/i,
		}, {
			id: 'comp_sci',
			name: "💻 Комп'ютерні науки",
			template: "{{Стаття проєкту Комп'ютерні науки|важливість=|рівень=}}",
			pattern: /проєкту Комп'ютерні науки/,
		}, {
			id: 'math',
			name: "∑ Математика",
			template: "{{Вікіпроєкт Математика|важливість=|рівень=}}",
			pattern: /Вікіпроєкт Математика/,
		}, {
			id: 'med',
			name: "🩺 Медицина",
			template: "{{Вікіпроєкт:Медицина|важливість=|рівень=}}",
			pattern: /Вікіпроєкт:Медицина/,
		}, {
			id: 'cinema',
			name: '🎥 Кінематограф',
			template: '{{Вікіпроєкт:Кінематограф|важливість=|рівень=}}',
			pattern: /Вікіпроєкт:Кінематограф/,
		}, {
			id: 'games',
			name: '🎮 Ігри',
			template: '{{Проєкт:Відеоігри|важливість=|рівень=}}',
			pattern: /Проєкт:Відеоігри/,
		}, {
			id: 'music',
			name: '𝄞 Музика',
			template: '{{Проєкт:Музика|важливість=|рівень=}}',
			pattern: /Проєкт:Музика/,
		}, {
			id: 'fanta',
			name: '👽 Фантастика',
			template: '{{Вікіпроєкт:Фантастика|важливість=|рівень=}}',
			pattern: /Вікіпроєкт:(Фентезі|(Наукова )?Фантастика( жахів)?)/,
		}, {
			id: 'mil',
			name: '⚔️ Військова історія',
			template: '{{Стаття проєкту Військова історія|важливість=|рівень=}}',
			pattern: /Стаття проєкту Військова історія/,
		}, {
			id: 'miltech',
			name: '🚀 Військова техніка',
			template: '{{Стаття проєкту Військова техніка|важливість=|рівень=}}',
			pattern: /Стаття проєкту Військова техніка/,
		}, {
			id: 'phys',
			name: '⚛️ Фізика',
			template: '{{Стаття проєкту Фізика|важливість=|рівень=}}',
			pattern: /Стаття проєкту Фізика/,
		}, {
			id: 'football',
			name: '⚽ Футбол',
			template: '{{Вікіпроєкт:Футбол}}',
			pattern: /Вікіпроєкт:Футбол/,
		},
		],
		api: new mw.Api(),
		upsertPage: function(title, text, comment) {
			if(this.talk) { // exists
				return this.api.edit(title, function() {
					return {
						text: text,
						summary: comment,
						minor: true,
					};
				})
			} else { // missing
				return this.api.create(title, {}, text)
			}
		},
		install: function () {
			var PR = this;
			this.readPage(this.getTalkPageTitle(), function(text) {
				PR.talk = text;
				$.each(PR.projects, function() {
					$('#PR-' + this.id).prop('checked', text.match(this.pattern));
				})
			})
			$('#p-Участь').append('<h3 class="vector-menu-heading">Проекти сторінки:</h3>')
			$('#p-Участь').append('<div class="vector-menu-content"><ul class="vector-menu-content-list" id="PR-list"></ul></div>');
			var save_btn = $('<button>Зберегти</button>').click(function() {
				PR.save($(this));
			});
			$('#p-Участь').append(save_btn);
			$.each(PR.projects, function() {
				$('#PR-list').append(
					'<li class="mw-list-item">' + 
					'<span style="font-size: 1.5em; display: inline-block; width: 30px; height:30px">' +
					this.name.split(' ')[0] +
					'</span><input type="checkbox" name="PR-radio" id="PR-' +
					this.id + '">' + this.name.split(' ')[1] + '</input></li>'
				);
			});
		},
		save: function(button) {
			console.log(button);
			var PR = this;
			var comment = [];
			var text = this.talk;
			$.each(PR.projects, function() {
				var have = text.match(this.pattern);
				var want = $('#PR-' + this.id).prop('checked');
				if(!have && want) {
					text = this.template + '\n' + text
					comment.push('додав проєкт ' + this.name)
				}
			});
			button.text("Редагування сторінки обговорення...");
				
			this.upsertPage(this.getTalkPageTitle(), text, comment.join(', ')).then(
			function(res) {
				button.text("Збережено");
			}, function(fail) {
				console.log('fail', fail);
				button.text("Холєра!");
			});
		},
		getTalkPageTitle: function() {
			var ns = mw.config.get('wgNamespaceNumber');
			if (ns % 2 == 0) { // Not talk page
				ns++ 
			}
			return mw.config.get('wgFormattedNamespaces')[ns] + ':' + mw.config.get('wgTitle');
		},
		readPage: function(title, success) {
			var param = {
				action: 'query',
				prop: 'revisions',
				format: 'json',
				rvprop: 'content|timestamp',
				rvlimit: '1',
				titles: title,
				indexpageids: ''
			};
			$.get(mw.util.wikiScript('api'), param).done(function(data) {
    			var page = data.query.pages[data.query.pageids[0]];
                var text = '';
                if (page.revisions) {
                    text = page.revisions[0]['*'];
                }
                success(text);
			});
		},
	};
}
$(document).ready(function () {
	if (mw.config.get('wgNamespaceNumber') > -1) {
		projector.install()
	}
});
//</nowiki>