מדיה ויקי:Gadget-catSexSelector.js: הבדלים בין גרסאות בדף
מראה
מ ערן העביר את הדף מדיה ויקי:סקריפטים/110.js לשם מדיה ויקי:Gadget-catSexSelector.js תוך דריסת הפניה |
מ קבוצות |
||
| שורה 14: | שורה 14: | ||
if ( mw.config.get('wgCanonicalNamespace') === 'Category' ) { | if ( mw.config.get('wgCanonicalNamespace') === 'Category' ) { | ||
var sexSelector = $('<div><a id="manAndWomanSelector" href="#" title="'+i18nLocal['manAndWomanSelector']+'">👫</a> / <a id="manSelector" href="#"title="'+i18nLocal['manSelector']+'">👨</a> / <a id="womanSelector" href="#"title="'+i18nLocal['womanSelector']+'">👩</a></div>'); | var sexSelector = $('<div><a id="manAndWomanSelector" href="#" title="'+i18nLocal['manAndWomanSelector']+'">👫</a> / <a id="manSelector" href="#" title="'+i18nLocal['manSelector']+'">👨</a> / <a id="womanSelector" href="#" title="'+i18nLocal['womanSelector']+'">👩</a></div>'); | ||
$('#bodyContent').prepend(sexSelector) | $('#bodyContent').prepend(sexSelector) | ||
| שורה 24: | שורה 24: | ||
categories: mw.config.get('wgTitle'), | categories: mw.config.get('wgTitle'), | ||
interface_language: mw.config.get('wgUserLanguage'), | interface_language: mw.config.get('wgUserLanguage'), | ||
doit: 1 | doit: 1, | ||
add_defaultsort: 'on', | |||
sortby: 'defaultsort' | |||
}; | }; | ||
var categoryOrigContent = $('#mw-pages .mw-category').html(); | var categoryOrigContent = $('#mw-pages .mw-category').html(); | ||
var manParams = $.extend({wikidata_prop_item_use: 'Q6581097'}, baseParams); | var manParams = $.extend({wikidata_prop_item_use: 'Q6581097'}, baseParams); | ||
var womanParams = $.extend({wikidata_prop_item_use: 'Q6581072'}, baseParams); | var womanParams = $.extend({wikidata_prop_item_use: 'Q6581072', depth: 1 }, baseParams); // too common that women places in sub category hence depth | ||
$('#manAndWomanSelector').css({border: '3px solid #000', padding: '3px'}).click(function(e){ | $('#manAndWomanSelector').css({border: '3px solid #000', padding: '3px'}).click(function(e){ | ||
$('#manAndWomanSelector, #manSelector, #womanSelector').css({border: '', padding: ''}); | $('#manAndWomanSelector, #manSelector, #womanSelector').css({border: '', padding: ''}); | ||
| שורה 53: | שורה 55: | ||
}); | }); | ||
function loadCategoryData(title, data) | // pages usually have default sort, but sometimes not and then fallback to title | ||
function pageDefSort (p) { return p.metadata.defaultsort || p.title; } | |||
var | |||
for(var i=0;i<data.length;i++){ | function addGroup(group) { | ||
pages.push(mw. | if (group==null) return; | ||
var groupDiv = $('<div>', {'class': 'mw-category-group' }); | |||
var groupTitle = $('<h3>').text(group.key[0]); | |||
var groupPages = $('<ul>').append($.map(group.pages, function(t){ return $('<li>').append($('<a>', {text: t.getNameText(), href: t.getUrl()}))[0] })); | |||
$('#mw-pages .mw-category').append(groupDiv.append(groupTitle).append(groupPages)); | |||
} | |||
function loadCategoryData(title, data) { | |||
$('#mw-pages .mw-category').html(''); | |||
$('#mw-pages p').remove(); | |||
var group = null; | |||
for(var i = 0; i < data.length; i++) { | |||
if (group == null || group.key != pageDefSort(data[i])[0]) { | |||
addGroup(group); | |||
group = { key: pageDefSort(data[i])[0], pages: [] }; | |||
} | |||
group.pages.push(new mw.Title(data[i].title, data[i].namespace)); | |||
} | } | ||
addGroup(group); | |||
} | } | ||
} | } | ||
גרסה מ־07:19, 27 במרץ 2021
var i18n = {
en: {
'manAndWomanSelector': 'No selection for men/women (default)',
'manSelector': 'Show men only',
'womanSelector': 'Show women only'
},
he: {
'manAndWomanSelector': 'ללא בחירה של גברים/נשים (ברירת מחדל)',
'manSelector': 'הצגה של גברים בלבד',
'womanSelector': 'הצגה של נשים בלבד'
}
}
var i18nLocal = i18n[mw.config.get('wgUserLanguage')];
if ( mw.config.get('wgCanonicalNamespace') === 'Category' ) {
var sexSelector = $('<div><a id="manAndWomanSelector" href="#" title="'+i18nLocal['manAndWomanSelector']+'">👫</a> / <a id="manSelector" href="#" title="'+i18nLocal['manSelector']+'">👨</a> / <a id="womanSelector" href="#" title="'+i18nLocal['womanSelector']+'">👩</a></div>');
$('#bodyContent').prepend(sexSelector)
var perScanBaseHref = 'https://petscan.wmflabs.org/?';
var baseParams = {
project:'wikipedia',
language: mw.config.get('wgContentLanguage'),
categories: mw.config.get('wgTitle'),
interface_language: mw.config.get('wgUserLanguage'),
doit: 1,
add_defaultsort: 'on',
sortby: 'defaultsort'
};
var categoryOrigContent = $('#mw-pages .mw-category').html();
var manParams = $.extend({wikidata_prop_item_use: 'Q6581097'}, baseParams);
var womanParams = $.extend({wikidata_prop_item_use: 'Q6581072', depth: 1 }, baseParams); // too common that women places in sub category hence depth
$('#manAndWomanSelector').css({border: '3px solid #000', padding: '3px'}).click(function(e){
$('#manAndWomanSelector, #manSelector, #womanSelector').css({border: '', padding: ''});
$('#manAndWomanSelector').css({border: '3px solid #000', padding: '3px'});
$('#mw-pages .mw-category').html(categoryOrigContent);
e.preventDefault();
});
$('#manSelector').prop('href', perScanBaseHref+ $.param(manParams)).click(function(e){
$.get(perScanBaseHref, $.extend({format:'json'},manParams)).done(function(d){
loadCategoryData('', d['*'][0]['a']['*']);
$('#manAndWomanSelector, #manSelector, #womanSelector').css({border: '', padding: ''});
$('#manSelector').css({border: '3px solid #000', padding: '3px'});
});
e.preventDefault();
});
$('#womanSelector').prop('href', perScanBaseHref+ $.param(womanParams)).click(function(e){
$.get(perScanBaseHref, $.extend({format:'json'},womanParams)).done(function(d){
loadCategoryData('', d['*'][0]['a']['*']);
$('#manAndWomanSelector, #manSelector, #womanSelector').css({border: '', padding: ''});
$('#womanSelector').css({border: '3px solid #000', padding: '3px'});
});
e.preventDefault();
});
// pages usually have default sort, but sometimes not and then fallback to title
function pageDefSort (p) { return p.metadata.defaultsort || p.title; }
function addGroup(group) {
if (group==null) return;
var groupDiv = $('<div>', {'class': 'mw-category-group' });
var groupTitle = $('<h3>').text(group.key[0]);
var groupPages = $('<ul>').append($.map(group.pages, function(t){ return $('<li>').append($('<a>', {text: t.getNameText(), href: t.getUrl()}))[0] }));
$('#mw-pages .mw-category').append(groupDiv.append(groupTitle).append(groupPages));
}
function loadCategoryData(title, data) {
$('#mw-pages .mw-category').html('');
$('#mw-pages p').remove();
var group = null;
for(var i = 0; i < data.length; i++) {
if (group == null || group.key != pageDefSort(data[i])[0]) {
addGroup(group);
group = { key: pageDefSort(data[i])[0], pages: [] };
}
group.pages.push(new mw.Title(data[i].title, data[i].namespace));
}
addGroup(group);
}
}