« MediaWiki:Common-IntersectionCategorie.js » : différence entre les versions
Contenu supprimé Contenu ajouté
mAucun résumé des modifications |
mAucun résumé des modifications |
||
Ligne 2 :
* Utilise http://www.mediawiki.org/wiki/Extension:DynamicPageList_(Wikimedia)
* pour présenter l’intersection de catégorie aux utilisateurs. L’interface est
* sur http://fr.wikisource.org/wiki/
* le nom de cette page peut varier, voir la variable special_pagename
*
* Page layout is built on special_pagename and must provide placeholder html
* element with the following id:
* input_cat : place of the dropdown menu selecting the cat group
* input_listbox_cat: place of the category selection listbox
* input_listbox_nocat: place of the not category selection listbox (unused)
* submit_button: place of the submit button
* output_result: place of the query result.
*/
var intersection_categorie = {
Ligne 8 ⟶ 17 :
* TODO :
*
* 1) (point obsolète)
*
* 2) Alternative à 1), les sous-page de la page contenant l’interface
*
▲ * groupes des catégories candidats à la recherche.
*
* 3) permettre de mettre en place
* contenant un <div id="recherche_dans_les_categories"></div> ? (NON)
*
* 4) gérer les nocat= en ajoutant une seconde listbox, par exemple
* DynamicPageList ne permet pas
* qui sont dans la cat 00% et 25% mais on peut obtenir la même
* information en sélectionnant les textes qui sont dans la cat
Ligne 29 ⟶ 34 :
* 5) ajouter des liens suivants et précédents.
*
* 6)
*
* 7) permettre de voir la date
* catégorie sélectionné ?
*
* 8) Suivi des pages liées ne fonctionne pas avec des liens ajoutés
* DynamicPageList est limité à six catégories, est-ce qu'il s'agit▼
* dynamiquement, mais c’est faisable. Mais dans ce cas suivi des pages
* de six category= plus six nocategory= ou de six en tout.▼
* liées ne montrera que le suivi des liens pour les liens visibles
* sur la page.
*
*/
special_pagename : "Wikisource:Recherche_dans_les_catégories",
possible_author_category : [
"Auteurs de l'Antiquité",
Ligne 161 ⟶ 173 :
],
return this.possible_intersection[$("#dropdown option:selected").text()];
},
default_query : function () {
return {
nocat : [],
count : 50,
offset : 0
};
},
add_dpl_result_to_page : function (datas) {
$("#output_result").html(datas.parse.text["*"]);
var
this.
▲ if (cat.length)
if
$("#ca-nstab-project > span > a").attr("href", url);
$("#ca-view > span > a").attr("href", url);
}
},
build_url : function (
var url = mw.config.get("wgServer") + mw.config.get("wgScriptPath");
url += "/index.php?title=" +
for (var i = 0; i < query.cat.length; ++i)
url += "&cat=" + encodeURIComponent(query.cat[i]);
for (var i = 0; i < query.nocat.length; ++i)
url += "¬cat=" + encodeURIComponent(query.nocat[i]);
url += "&offset=" + query.offset;
url += "&count=" + query.count;
return url;
},
exec_user_query : function () {
var
$("#select_cat option:selected").each(function () {
query.cat.push($(this).text());
});
if (query.cat.length || query.nocat.length)
window.location.assign(this.build_url(
},
build_listbox : function (cat, id) {
var text = "<select
for (var i = 0; i < cat.length; ++i)
text += "<option value='" + i + "'>" + cat[i] + "</option>";
return text + "</select
},
return "<DynamicPageList>\n"
+ "count =
+ "offset = " + query.offset + "\n"
+ "order = sortkey\n"
+ "shownamespace = false\n"
+ "category = " + query.cat.join("\ncategory = ") + "\n";
+ "nocategory = " + query.nocat.join("\nnocategory = ") + "\n";
+ "</DynamicPageList>";
},
dpl_query : function (
var
var url = mw.config.get("wgServer") + mw.config.get("wgScriptPath")
+ "/api.php?action=parse&callback=intersection_categorie.add_dpl_result_to_page"
+ "&format=json&text=" + encodeURIComponent(
this.create_script_obj(url)
},
Ligne 226 ⟶ 256 :
},
set_selected : function (cat, possible_cat, id) {
for (var i = 0 ; i < cat.length; ++i) {
for (var j = 0 ; j < possible_cat.length; ++j) {
if (cat[i].replace("_", " ") == possible_cat[j])
$("#
}
}
},
cat_from_string : function (str
var query = this.default_query();
if (str.charAt[0] = "?")
str = str.slice(1);
Ligne 243 ⟶ 275 :
if (key_value.length == 2) {
if (key_value[0] == "cat")
query.cat.push(decodeURIComponent(key_value[1]).replace("_", " "));
else if (key_value[0] == "nocat")
query.nocat.push(decodeURIComponent(key_value[1]).replace("_", " "));
else if (key_value[0] == "offset")
query.offset = Number(key_value[1]);
else if (key_value[0] == "count")
query.count = Number(key_value[1]);
}
}
return query;
},
query_from_url : function () {
var
this.
▲ if (cat.length)
▲ this.dpl_query(cat, nocat);
},
guess_cat_group_from_url : function() {
var
▲ if (cat.length) {
for (var group in this.possible_intersection) {
var possible_cat = this.possible_intersection[group];
for (var i = 0; i < possible_cat.length; ++i) {
if (result.cat[0] == possible_cat[i])
return group;
}
Ligne 275 ⟶ 308 :
dropdown_change : function() {
$("#
},
Ligne 286 ⟶ 319 :
$("#dropdown").val(this.guess_cat_group_from_url());
$("#dropdown").change();
},
add_submit_button : function() {
$("#submit_button").html("<button type='button' onclick='intersection_categorie.exec_user_query()'>Exécuter la requête</button>");
},
Ligne 293 ⟶ 330 :
"Intersection d’articles" : this.possible_article_category
};
$("#
this.add_submit_button();
this.add_dropdown_list();
this.query_from_url();
Ligne 301 ⟶ 337 :
}
if (mw.config.get("wgPageName") == intersection_categorie.special_pagename && mw.config.get("
intersection_categorie.setup();
|