MediaWiki:Gadget-nytt uppslag.js
Hoppa till navigering
Hoppa till sök
OBS: Efter du har publicerat sidan kan du behöva tömma din webbläsares cache för att se ändringarna.
- Firefox / Safari: Håll ned Skift och klicka på Uppdatera sidan eller tryck Ctrl-F5 eller Ctrl-R (⌘-R på Mac)
- Google Chrome: Tryck Ctrl-Skift-R (⌘-Skift-R på Mac)
- Internet Explorer / Edge: Håll ned Ctrl och klicka på Uppdatera eller tryck Ctrl-F5
- Opera: Tryck Ctrl-F5.
if ((mw.config.get( 'wgAction' ) === 'edit' || mw.config.get( 'wgAction' ) === 'submit') &&
mw.config.get( 'wgNamespaceNumber' ) === 0) {
// Import [[MediaWiki:Gadget-data-lang.json]] and [[MediaWiki:Gadget-data-h3.json]]
mw.loader.using(['ext.gadget.data-lang', 'ext.gadget.data-h3'], create_new_article_help);
}
function create_new_article_help() {
function get_user_data(what, backup) {
try { // don't crash if localStorage is inactivated
var list = window.localStorage && localStorage.getItem('nytt uppslag:' + what);
} catch (e) {}
if (list) {
list = list.split(',');
for (var i = 0; backup && i < backup.length && list.length < 5; i++) {
if ($.inArray(backup[i], list) === -1) {
list.push(backup[i]);
}
}
return list;
} else {
return backup;
}
}
function set_user_data(what, item) {
try { // don't crash if localStorage is inactivated
if (window.localStorage) {
var list = get_user_data(what) || [];
var item_pos = $.inArray(item, list);
if (item_pos !== -1) {
// move it to the front of the list
list = [item].concat(list.slice(0, item_pos), list.slice(item_pos+1));
} else {
// max 5 items
if (list.unshift(item) > 5) {
list.length = 5;
}
}
localStorage.setItem('nytt uppslag:' + what, list.join(','))
}
} catch (e) {}
}
function uc_first(str) {
return str.charAt(0).toUpperCase() + str.substr(1);
}
function lc_first(str) {
return str.charAt(0).toLowerCase() + str.substr(1);
}
function submit_definition(e) {
e.preventDefault();
function get_code(all, chosen) {
chosen = chosen.toLowerCase();
if (all[chosen]) {
return chosen;
}
for (var i in all) {
if (all[i] === chosen) {
return i;
}
}
return false;
}
var lang = get_code(langs, $('#nu_lang').val());
var h3 = get_code(h3s, $('#nu_h3').val());
var definition = $('#nu_definition').val().replace(/^\s*(.*?)\s*$/, '$1');
// definitions aren't complete sentences
definition = lc_first(definition.replace(/\.$/, ''));
if (!lang) {
alert('Du har inte angett ett korrekt språk. Välj ett i listan.');
$('#nu_lang').focus();
return false;
}
if (!h3) {
alert('Du har inte angett en korrekt ordklass/H3-rubrik. Välj en i listan.');
$('#nu_h3').focus();
return false;
}
var entry = '=='+uc_first(langs[lang])+'==\n' +
'==='+uc_first(h3s[h3])+'===\n' +
'{\{'+h3+'|'+lang+'}}\n' +
"'''"+mw.config.get( 'wgTitle' )+"'''\n"+
'#'+definition;
$('#nu_definition').val('');
var code = $('#wpTextbox1').val();
code += code ? '\n\n'+entry : entry;
$('#wpTextbox1')
.val(code)
.attr('rows', code.split('\n', 17).length + 8); // standard: 25
var summary = $('#wpSummary').val();
var new_summary = 'nytt uppslag (' + langs[lang] + ')';
$('#wpSummary').val(
!summary ? new_summary :
summary.indexOf(new_summary) !== -1 ? summary :
summary + '; ' + new_summary
);
if (!definition) {
$('#wpTextbox1').focus();
} else {
$('#nu_saveTooltip').show();
$('#wpSave').focus();
}
set_user_data('lang', lang);
set_user_data('h3', h3);
}
function fade_save_tooltip() {
setTimeout(function () {
$('#nu_saveTooltip div').hide('slow', function () {
$('#nu_saveTooltip').hide();
$(this).show();
});
}, 500);
}
function lc_obj(obj) {
var res = {};
for (var i in obj) {
res[i] = obj[i].toLowerCase();
}
return res;
}
// Initialize
var container = $('#nytt_uppslag');
if (!container.length) {
return;
}
var langs = lc_obj(window.dataLang.main);
var h3s = lc_obj(window.dataH3);
var show_langs = get_user_data('lang',
(window.nyttUppslagSprak || $('#nu_language_input').data('show')).split(',')
);
var show_h3s = get_user_data('h3',
(window.nyttUppslagH3 || $('#nu_h3_input').data('show')).split(',')
);
// för språk och ordklass
function multiple_choice(o) {
var i;
var links = $('<span>');
var select = $('<select>', { css: { display: 'none' }, change: set });
for (i = 0; i < o.show.length; i++) {
links.append($('<a>', { href: '', click: set, text: o.all[o.show[i]] }), ' - ');
}
$('<option>', {value: '-', text: o.select_title}).appendTo(select);
for (i in o.all) {
$('<option>', {text: o.all[i]}).appendTo(select);
}
links.append($('<a>', { href: '', click: switch_to_select, text: 'mer...' }), select);
o.elem.empty().append(
$('<input>', {id: o.id, value: o.all[o.show[0]], tabindex: 1 }),
' ',
links);
function set(e) {
e.preventDefault();
// use val if <select>, use text if <a>
var val = $(this).val() || $(this).text();
if (val !== '-') {
$('#'+o.id).val(val);
}
}
function switch_to_select(e) {
e.preventDefault();
$(this).hide()
.next().show().focus();
}
}
multiple_choice({
elem: $('#nu_language_input'),
show: show_langs,
all: langs,
id: 'nu_lang',
select_title: 'Fler språk...'
});
multiple_choice({
elem: $('#nu_h3_input'),
show: show_h3s,
all: h3s,
id: 'nu_h3',
select_title: 'Fler H3-rubriker...'
});
// put a <form> around the whole thing
container.wrap($('<form>', {submit: submit_definition}));
// tips
$('#nu_tips').appendTo('#nu_tips_position');
$('#nu_definition_input').append($('<input>').prop({ id: 'nu_definition', autocomplete: 'off', tabindex: 1 }));
$('#nu_submit_button').wrapInner($('<button>', { type: 'submit', tabindex: 1 }));
$('#nu_help_link a').attr('target', '_blank'); // hjälplänken öppnas i nytt fönster
container.addClass('enabled');
$('#nu_saveTooltip').on('mouseout', fade_save_tooltip).insertBefore('#wpSave');
$('#wpSave').on('blur', fade_save_tooltip);
$('#nytt_uppslag .javascript').show();
}