Canvis

13 937 bytes eliminats ,  16:36 27 març 2009
sense resum d'edició
Llínea 1: Llínea 1: −
//<nowiki>
+
/** HotCat *****************************************************************
/**
+
  *    Origem: [[Wikipedia:Software/Scripts/HotCat.js]]
* Ajoute des liens après les catégories pour rapidement
+
   *     Ajuda: [[Wikipedia:Software/Scripts/HotCat]]
* supprimer / modifier / ajouter une catégorie sur un article.
+
  * Descrição: Adiciona, altera e remove as ctegorias.
* Utilise Ajax et l'api MediaWiki pour rechercher une catégorie.
+
   *     Autor: [[commons:user:Magnus Manske]]
* Version adaptée pour WP:fr de [[:commons:MediaWiki:HotCat.js]]
+
   ********************************************************************************************/
*  
+
document.write('<script type="text/javascript" src="'
* Auteur original : Magnus Manske
+
+ 'http://pt.wikipedia.org/w/index.php?title=Wikipedia:Software/Scripts/HotCat.js'
* Adaptation pour WP:fr : Zelda
+
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
* [[Catégorie:MediaWiki:Fonction Monobook en JavaScript]]
  −
*/
  −
 
  −
// VARIABLES PERSONNALISABLES
  −
 
  −
// Suggestion delay in ms
  −
var hotcat_suggestion_delay = 200;
  −
 
  −
// Taille de la liste déroulante (en items)
  −
var hotcat_list_size = 10;
  −
 
  −
// Nombre de categories suggérées lors de la recherche
  −
var hotcat_list_items = 50;
  −
 
  −
// Permet d'enregistrer automatiquement la modif sans repasser par la fenêtre d'édition
  −
// var hotcat_autocommit = false;
  −
 
  −
// Permet d'afficher la liste de suggestion vers le bas
  −
// var hotcat_list_down = false;
  −
 
  −
// FIN DE LA PERSONNALISATION DES VARIABLES
  −
 
  −
var hotcat_running = 0 ;
  −
var hotcat_last_v = "" ;
  −
var hotcat_exists_yes = "http://upload.wikimedia.org/wikipedia/commons/thumb/b/be/P_yes.svg/20px-P_yes.svg.png" ;
  −
var hotcat_exists_no = "http://upload.wikimedia.org/wikipedia/commons/thumb/4/42/P_no.svg/20px-P_no.svg.png" ;
  −
 
  −
if( wgNamespaceNumber%2 == 0 && document.URL.indexOf("printable=yes")==-1) addOnloadHook ( hotcat ) ;
  −
 
  −
function hotcat () {
  −
  if ( hotcat_check_action() ) return ; // Edited page, reloading anyway
  −
 
  −
  var catlinks = document.getElementById("catlinks");
  −
 
  −
  if (! catlinks) { // all except discussion
  −
  // let's create a fake one
  −
  var bodyC = document.getElementById("bodyContent");
  −
  catlinks = document.createElement("div");
  −
  catlinks.id = "catlinks";
  −
  catlinks.className = "catlinks";
  −
  catlinks = bodyC.appendChild(catlinks);
  −
  }
  −
 
  −
  var catline = document.getElementById ('mw-normal-catlinks'); // Since MW 1.13alpha
  −
  if( !catline ) {
  −
  catline = catlinks.insertBefore(document.createElement("div"), catlinks.firstChild);
  −
  catline.id = "mw-normal-catlinks";
  −
  }
  −
 
  −
  if ( catline == null || typeof catline == 'undefined' ) return ;
  −
 
  −
  hotcat_modify_existing ( catline ) ;
  −
  hotcat_append_add_span ( catline ) ;
  −
}
  −
 
  −
function hotcat_append_add_span ( catline ) {
  −
  var span_add = document.createElement ( "span" ) ;
  −
  var span_sep = document.createTextNode ( " | " ) ;
  −
  if ( catline.firstChild ) catline.appendChild ( span_sep ) ;
  −
  else {
  −
  var a = document.createElement('a');
  −
  a.href = '/wiki/Catégorie:Accueil';
  −
  a.title = 'Catégorie:Accueil';
  −
  a.appendChild(document.createTextNode('Catégories'));
  −
  catline.appendChild(a);
  −
  catline.appendChild(document.createTextNode(' : '));
  −
  }
  −
  catline.appendChild ( span_add ) ;
  −
  hotcat_create_span ( span_add ) ;
  −
}
  −
 
  −
String.prototype.ucFirst = function () {
  −
  return this.substr(0,1).toUpperCase() + this.substr(1,this.length);
  −
}
  −
 
  −
function hotcat_modify_span ( span , i ) {
  −
  var cat_title = span.firstChild.getAttribute ( "title" ) ;
  −
  // Removing leading Category:
  −
  cat_title = cat_title.substr(cat_title.indexOf(":") + 1);
  −
  var sep1 = document.createTextNode ( " " ) ;
  −
  var a1 = document.createTextNode ( "(–)" ) ;
  −
  var remove_link = document.createElement ( "a" ) ;
  −
  remove_link.href = "javascript:hotcat_remove(\"" + cat_title + "\");" ;
  −
  remove_link.appendChild ( a1 ) ;
  −
  span.appendChild ( sep1 ) ;
  −
  span.appendChild ( remove_link ) ;
  −
 
  −
  var mod_id = "hotcat_modify_" + i ;
  −
  var sep2 = document.createTextNode ( " " ) ;
  −
  var a2 = document.createTextNode ( "(±)" ) ;
  −
  var modify_link = document.createElement ( "a" ) ;
  −
  modify_link.id = mod_id ;
  −
  modify_link.href = "javascript:hotcat_modify(\"" + mod_id + "\");" ;
  −
  modify_link.appendChild ( a2 ) ;
  −
  span.appendChild ( sep2 ) ;
  −
  span.appendChild ( modify_link ) ;
  −
}
  −
 
  −
function hotcat_modify_existing ( catline ) {
  −
  var spans = catline.getElementsByTagName ( "span" ) ;
  −
  for ( var i = 0 ; i < spans.length ; i++ ) {
  −
    hotcat_modify_span ( spans[i] , i ) ;
  −
  }
  −
}
  −
 
  −
function hotcat_remove ( cat_title ) {
  −
  var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
  −
  if (window.confirm("Voulez-vous vraiment supprimer la catégorie '" + cat_title + "' ?")) {
  −
    document.location = editlk + '&hotcat_removecat=' + encodeURIComponent(cat_title) ;
  −
  }
  −
}
  −
 
  −
function hotcatGetParamValue(paramName, h) {
  −
        if (typeof h == 'undefined' ) { h = document.location.href; }
  −
        var cmdRe=RegExp('[&?]'+paramName+'=([^&]*)');
  −
        var m=cmdRe.exec(h);
  −
        if (m) {
  −
                try {
  −
                        return decodeURIComponent(m[1]);
  −
                } catch (someError) {}
  −
        }
  −
        return null;
  −
}
  −
 
  −
function hotcat_check_action () {
  −
  var ret = 0 ;
  −
  if ( wgAction != "edit" ) return ret ; // Not an edit page, so no business...
  −
  var summary = new Array () ;
  −
  var t = document.editform.wpTextbox1.value ;
  −
  var prevent_autocommit = 1 ;
  −
  if ( typeof hotcat_autocommit != 'undefined' && hotcat_autocommit ) prevent_autocommit = 0 ;
  −
 
  −
  // Remove existing category?
  −
  var hrc = hotcatGetParamValue('hotcat_removecat') ;
  −
  // Add new category?
  −
  var hnc = hotcatGetParamValue('hotcat_newcat') ;
  −
 
  −
  if ( typeof hrc != "undefined" && hrc != null && hrc != "" ) {
  −
    var hcre = new RegExp("(\\s*)\\[\\[ *(?:Catégorie|Category) *: *" + hrc.replace(/([\\\^\$\*\+\?\.\|\{\}\[\]\(\)])/g, "\\$1") + " *(\\|[^\\]]*)?\\]\\]", "gi");
  −
    var matches = t.match(hcre);
  −
    if (matches != null && matches.length == 1) { // Found one occurrence of the category - good!
  −
      if ( typeof hnc != "undefined" && hnc != null && hnc != "" ) {
  −
        t = t.replace(hcre, "$1[[Catégorie:" + hnc + "$2]]");
  −
        summary.push ( "Modification de la catégorie [[Catégorie:" + hrc + "]] → [[Catégorie:" + hnc + "]]" ) ;
  −
      } else {
  −
        t = t.replace(hcre, "");
  −
        summary.push ( "Retrait de la catégorie [[Catégorie:" + hrc + "]]" ) ;
  −
      }
  −
      ret = 1 ;
  −
    } else {
  −
      alert ( "Impossible de trouver une occurrence unique de \"" + hrc + "\" - elle est peut-être incluse via un modèle" ) ;
  −
      prevent_autocommit = 1 ;
  −
    }
  −
   } else {
  −
     // Only adding?
  −
    if ( typeof hnc != "undefined" && hnc != null && hnc != "" ) {
  −
      // Looking for last cat
  −
      var re = /\[\[(?:Catégorie|Category):[^\]]+\]\]/ig
  −
      var index = -1;
  −
      while (re.exec(t) != null) index = re.lastIndex;
  −
      var txt = "[[Catégorie:" + hnc + "]]" ;
  −
      if (index < 0) {
  −
        t = t + '\n' + txt ;
  −
      } else {
  −
        t = t.substring(0, index) + '\n' + txt + t.substring(index);
  −
      }
  −
      summary.push ( "Ajout rapide de la catégorie [[Catégorie:" + hnc + "]]" ) ;
  −
      ret = 1 ;
  −
    }
  −
   }
  −
 
  −
  if ( ret ) {
  −
     document.editform.wpTextbox1.value = t ;
  −
    document.editform.wpSummary.value = summary.join( " ; " ) + " (avec [[MediaWiki:Gadget-HotCats.js|HotCats]])" ;
  −
    document.editform.wpMinoredit.checked = true ;
  −
    if ( !prevent_autocommit ) {
  −
      document.getElementById("bodyContent").style.display = "none" ; // Hiding the entire edit section so as not to tempt the user into editing...
  −
      document.editform.wpSave.click();
  −
    }
  −
  }
  −
 
  −
   // This is the end, my friend, the end...
  −
  return ret ;
  −
}
  −
 
  −
function hotcat_clear_span ( span_add ) {
  −
  while ( span_add.firstChild ) span_add.removeChild ( span_add.firstChild ) ;
  −
}
  −
 
  −
function hotcat_create_span ( span_add ) {
  −
  hotcat_clear_span ( span_add ) ;
  −
  var a_add = document.createElement ( "a" ) ;
  −
  var a_text = document.createTextNode ( "(+)" ) ;
  −
  span_add.id = "hotcat_add" ;
  −
  a_add.href = "javascript:hotcat_add_new()" ;
  −
  a_add.appendChild ( a_text ) ;
  −
  span_add.appendChild ( a_add ) ;
  −
}
  −
 
  −
function hotcat_modify ( link_id ) {
  −
  var link = document.getElementById ( link_id ) ;
  −
  var span = link.parentNode ;
  −
  var catname = span.firstChild.firstChild.data ;
  −
 
  −
  while ( span.firstChild.nextSibling ) span.removeChild ( span.firstChild.nextSibling ) ;
  −
  span.firstChild.style.display = "none" ;
  −
  hotcat_create_new_span ( span , catname ) ;
  −
  hotcat_last_v = "" ;
  −
  hotcat_text_changed () ; // Update icon
  −
}
  −
 
  −
function hotcat_add_new () {
  −
  var span_add = document.getElementById ( "hotcat_add" ) ;
  −
  hotcat_clear_span ( span_add ) ;
  −
  hotcat_last_v = "" ;
  −
  hotcat_create_new_span ( span_add , "" ) ;
  −
}
  −
 
  −
function hotcat_create_new_span ( thespan , init_text ) {
  −
  var form = document.createElement ( "form" ) ;
  −
  form.method = "post" ;
  −
  form.onsubmit = function () { hotcat_ok(); return false; } ;
  −
  form.id = "hotcat_form" ;
  −
  form.style.display = "inline" ;
  −
 
  −
  var list = document.createElement ( "select" ) ;
  −
  list.id = "hotcat_list" ;
  −
  list.onclick = function () { document.getElementById("hotcat_text").value = document.getElementById("hotcat_list").value ; hotcat_text_changed() ; } ;
  −
  list.ondblclick = function () { document.getElementById("hotcat_text").value = document.getElementById("hotcat_list").value ; hotcat_text_changed() ; hotcat_ok(); } ;
  −
  list.style.display = "none" ;
  −
 
  −
  var text = document.createElement ( "input" ) ;
  −
  text.size = 40 ;
  −
  text.id = "hotcat_text" ;
  −
  text.type = "text" ;
  −
  text.value = init_text ;
  −
  text.onkeyup = function () { window.setTimeout("hotcat_text_changed();", hotcat_suggestion_delay ); } ;
  −
 
  −
  var exists = document.createElement ( "img" ) ;
  −
  exists.id = "hotcat_exists" ;
  −
  exists.src = hotcat_exists_no ;
  −
 
  −
  var OK = document.createElement ( "input" ) ;
  −
  OK.type = "button" ;
  −
  OK.value = "OK" ;
  −
  OK.onclick = hotcat_ok ;
  −
 
  −
  var cancel = document.createElement ( "input" ) ;
  −
  cancel.type = "button" ;
  −
  cancel.value = "Annuler" ;
  −
  cancel.onclick = hotcat_cancel ;
  −
 
  −
  form.appendChild ( list ) ;
  −
  form.appendChild ( text ) ;
  −
  form.appendChild ( exists ) ;
  −
  form.appendChild ( OK ) ;
  −
  form.appendChild ( cancel ) ;
  −
  thespan.appendChild ( form ) ;
  −
  text.focus () ;
  −
}
  −
 
  −
function hotcat_ok () {
  −
  var text = document.getElementById ( "hotcat_text" ) ;
  −
  var v = text.value ;
  −
 
  −
  // Empty category ?
  −
  if ( v == "" ) {
  −
    hotcat_cancel() ;
  −
    return ;
  −
  }
  −
 
  −
  var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
  −
  var url = editlk + '&hotcat_newcat=' + encodeURIComponent( v ) ;
  −
 
  −
  // Editing existing?
  −
  var span = text.parentNode.parentNode ; // span.form.text
  −
  if ( span.id != "hotcat_add" ) { // Not plain "addition"
  −
    var cat_title = span.firstChild.innerHTML ;
  −
    // Removing leading Category:
  −
    cat_title = cat_title.substr(cat_title.indexOf(":") + 1);
  −
    url += '&hotcat_removecat=' + encodeURIComponent( cat_title ) ;
  −
  }
  −
 
  −
  document.location = url ;
  −
}
  −
 
  −
function hotcat_cancel () {
  −
  var span = document.getElementById("hotcat_form").parentNode ;
  −
  if ( span.id == "hotcat_add" ) {
  −
    hotcat_create_span ( span ) ;
  −
  } else {
  −
    while ( span.firstChild.nextSibling ) span.removeChild ( span.firstChild.nextSibling ) ;
  −
    span.firstChild.style.display = "" ;
  −
    for ( var i = 0 ; i < span.parentNode.childNodes.length ; i++ ) {
  −
      if ( span.parentNode.childNodes[i] != span ) continue ;
  −
      hotcat_modify_span ( span , i ) ;
  −
      break ;
  −
    }
  −
  }
  −
}
  −
 
  −
function hotcat_text_changed () {
  −
  if ( hotcat_running ) return ;
  −
  var text = document.getElementById ( "hotcat_text" ) ;
  −
  var v = text.value.ucFirst() ;
  −
  if ( hotcat_last_v == v ) return ; // Nothing's changed...
  −
 
  −
  hotcat_running = 1 ;
  −
  hotcat_last_v = v ;
  −
 
  −
  if ( v != "" ) {
  −
    var url = wgServer + "/" + wgScriptPath + "/api.php?format=xml&action=query&list=allpages&apnamespace=14&apfrom=" + encodeURIComponent( v ) + "&aplimit=" + encodeURIComponent( hotcat_list_items );
  −
    if ( typeof ( hotcat_xmlhttp ) != "undefined" ) hotcat_xmlhttp.abort() ; // Just to make sure...
  −
    hotcat_xmlhttp = new sajax_init_object() ;
  −
    hotcat_xmlhttp.open('GET', url, true);
  −
    hotcat_xmlhttp.onreadystatechange = function () {
  −
          if ( typeof hotcat_xmlhttp == "undefined" ) return ;
  −
          if (hotcat_xmlhttp.readyState == 4) {
  −
              var xml = hotcat_xmlhttp.responseXML ;
  −
              if ( xml == null ) return ;
  −
              var pages = xml.getElementsByTagName( "p" ) ;
  −
              var titles = new Array () ;
  −
              for ( var i = 0 ; i < pages.length ; i++ ) {
  −
                var s = pages[i].getAttribute("title");
  −
                // Removing leading "Category:"
  −
                s = s.substr(s.indexOf(":") + 1);
  −
                if ( s.substr ( 0 , hotcat_last_v.length ) != hotcat_last_v ) break ;
  −
                titles.push ( s ) ;
  −
              }
  −
              hotcat_show_suggestions ( titles ) ;
  −
          }
  −
      };
  −
    hotcat_xmlhttp.send(null);
  −
  } else {
  −
    var titles = new Array () ;
  −
    hotcat_show_suggestions ( titles ) ;
  −
  }
  −
  hotcat_running = 0 ;
  −
}
  −
 
  −
function hotcat_show_suggestions ( titles ) {
  −
  var text = document.getElementById ( "hotcat_text" ) ;
  −
  var list = document.getElementById ( "hotcat_list" ) ;
  −
  var icon = document.getElementById ( "hotcat_exists" ) ;
  −
  if ( titles.length == 0 ) {
  −
    list.style.display = "none" ;
  −
    icon.src = hotcat_exists_no ;
  −
    return ;
  −
  }
  −
 
  −
  var listh = hotcat_list_size * 20 ;
  −
  if (titles.length < hotcat_list_size) {
  −
    listh = titles.length * 20 ;
  −
  }
  −
  var nl = parseInt ( text.parentNode.offsetLeft ) - 1 ;
  −
  var nt = parseInt(text.offsetTop) - listh ;
  −
  // Parameter to show suggestion list beneath categories instead of above
  −
  if (typeof hotcat_list_down != "undefined" && hotcat_list_down) {
  −
    nt = text.offsetTop + text.offsetHeight;
  −
  }
  −
  list.size = 5 ;
  −
  list.style.align = "left" ;
  −
  list.style.zIndex = 5 ;
  −
  list.style.position = "absolute" ;
  −
  list.style.top = nt + "px" ;
  −
  list.style.width = text.offsetWidth + "px" ;
  −
  list.style.height = listh + "px" ;
  −
  list.style.left = nl + "px" ;
  −
  while ( list.firstChild ) list.removeChild ( list.firstChild ) ;
  −
  for ( var i = 0 ; i < titles.length ; i++ ) {
  −
    var opt = document.createElement ( "option" ) ;
  −
    var ot = document.createTextNode ( titles[i] ) ;
  −
    opt.appendChild ( ot ) ;
  −
    opt.setAttribute( "value", titles[i] );
  −
    list.appendChild ( opt ) ;
  −
  }
  −
 
  −
  list.style.display = "block" ;
  −
 
  −
  icon.src = hotcat_exists_yes ;
  −
 
  −
  var first_title = titles.shift () ;
  −
  if ( first_title == hotcat_last_v ) return ;
  −
 
  −
  var suggestion = first_title;
  −
 
  −
  text.value = suggestion  ;
  −
  if (text.createTextRange) {
  −
    // IE
  −
    var ra = text.createTextRange();
  −
    ra.moveStart("character", hotcat_last_v.length);
  −
    ra.moveEnd("character", suggestion.length);
  −
    ra.select();
  −
  } else if( is_khtml ) {
  −
    text.setSelectionRange( hotcat_last_v.length, suggestion.length );
  −
  } else {
  −
    text.selectionStart = hotcat_last_v.length ;
  −
    text.selectionEnd = suggestion.length ;
  −
  }
  −
}
  −
//</nowiki>
 
2012

edicions