Diferencia entre revisiones de «MediaWiki:Filtros.js»

De Diccionario Interactivo Ceán Bermúdez
Ir a la navegación Ir a la búsqueda
 
(No se muestran 108 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
 
jQuery(document).ready(function($){
 
jQuery(document).ready(function($){
 +
 +
if($(".iframe-libro").length){
 +
$(".iframe-libro").html('<iframe id="Iframe1" class="iframe-paginas" data-delay="50" width="100%" height="700" frameborder="0" src="' + $(".iframe-libro").data("src") + '"></iframe>')
 +
}
 +
if($(".tomos").length){
 +
$(".tomos a").click(function(e){
 +
var ulrTomo = $(this).attr("href");
 +
console.log(ulrTomo);
 +
//$('#Iframe1').attr("src", "https://"+ulrTomo);
 +
$(".l-tomo").addClass("hide");
 +
$(ulrTomo).removeClass("hide");
 +
$(".tomos a span").removeClass("active");
 +
$("span",this).addClass("active");
 +
e.preventDefault();
 +
})
 +
}
 
 
 
function listFilter(input, list) {  
 
function listFilter(input, list) {  
Línea 24: Línea 40:
 
             }
 
             }
 
           });
 
           });
         
 
 
       
 
             
 
         
 
 
            
 
            
 
            
 
            
Línea 43: Línea 54:
 
   }
 
   }
 
    
 
    
   if($('.mw-category').length > 0){
+
   setTimeout(function(){
  var filtro = $('<div class="filtro"><input type="text" id="filtro" /></div>');
+
    if($('.mw-category').length > 0){
  $('.mw-category').prepend(filtro);
+
        var filtro = $('<div class="filtro"><img src="/skins/Vector/images/search.png?39f97"><input type="text" id="filtro" /></div>');
listFilter($('#filtro'),$('.mw-category '));
+
        $('.mw-category').prepend(filtro);
  }
+
        listFilter($('#filtro'),$('.mw-category '));
 
+
    }
 +
   
 +
    if($('#listwidget-1-nav').length > 0){
 +
        var filtro = $('<div class="filtro"><img src="/skins/Vector/images/search.png?39f97"><input type="text" placeholder="Busca en el listado" class="createboxInput" id="filtro" /></div>');
 +
        $('#listwidget-1-nav').append(filtro);
 +
       
 +
        var abbrs = {};
 +
        $("ul#listwidget-1 li a").each(function (i) {
 +
        if(this.firstChild.nodeValue!=null){
 +
            var letter1 = this.firstChild.nodeValue.toLowerCase().trim();
 +
            abbrs[letter1] = this;
 +
var inicial = letter1[0];           
 +
            if($(this).closest('li').hasClass('ln--')){
 +
            if(inicial == 'á') inicial = 'a';
 +
            else if(inicial == 'é') inicial = 'e';
 +
            else if(inicial == 'í') inicial = 'i';
 +
            else if(inicial == 'ó') inicial = 'o';
 +
            else if(inicial == 'ú') inicial = 'u';
 +
            $(this).closest('li').removeClass('ln--').addClass('ln-'+inicial);
 +
            }
 +
        }
 +
        });
 +
        //console.log(abbrs);
 +
        var abbrsLetters = {};
 +
        $(".ln-letters a").each(function (i) {
 +
        if(this.firstChild.nodeValue!=null){
 +
            var letter =  this.firstChild.nodeValue.toLowerCase().trim();
 +
            letter = letter.replace("-", "");
 +
            if(letter == "09") letter="_";
 +
            if(letter == "...") letter="-";
 +
            //console.log("#listwidget-1 li.ln-" + letter)
 +
            abbrsLetters[letter] = $("#listwidget-1 li.ln-" + letter ).length;
 +
        }
 +
        });
 +
        //console.log(abbrsLetters)
 +
        $('.ln-last').hide();
 +
        $('.ln-selected').click();
 +
       
 +
        $("#filtro").on("keyup", function() {
 +
        var filterBy = this.value.toLowerCase().trim();
 +
        if(filterBy.length > 3){
 +
            for (var abbr in abbrs) {
 +
                var li = abbrs[abbr];
 +
                if (abbr.indexOf(filterBy) !== -1) {
 +
                    $(li).parent().parent().parent().show()
 +
                    //console.log(li)
 +
                    // show li
 +
                }else{
 +
                    $(li).parent().parent().parent().hide()
 +
                }
 +
            }
 +
        }else{
 +
            for (var abbr in abbrs) {
 +
                var li = abbrs[abbr];
 +
                $(li).parent().parent().parent().show()
 +
            }
 +
        }
 +
        });
 +
       
 +
        // Ponemos número de búsquedas:
 +
        for (var lt in abbrsLetters) {
 +
            var lnum = abbrsLetters[lt];
 +
            $("." + lt).append(" <span>(" + lnum + ")</span>")
 +
            //console.log(lt + ">" + lnum)
 +
        }
 +
       
 +
    }
 +
    },500)
 
    
 
    
 
});
 
});
  
// Control de parámetros
+
// Control de parámetros para búsqueda resaltada
 +
var paramresalte = "find";
 
//Recuperamos parámetros
 
//Recuperamos parámetros
 
var get_params = function(search_string) {
 
var get_params = function(search_string) {
Línea 79: Línea 158:
 
if(params["search"]){
 
if(params["search"]){
 
document.querySelectorAll(".mw-search-result-heading a").forEach(a => {
 
document.querySelectorAll(".mw-search-result-heading a").forEach(a => {
             a.href = a.href + "?find="+params["search"];
+
             a.href = a.href + "?"+paramresalte+"="+params["search"];
 +
        });
 +
}
 +
 +
 +
var InstantSearch = {
 +
 
 +
    "highlight": function (container, highlightText)
 +
    {
 +
        var internalHighlighter = function (options)
 +
        {
 +
 
 +
            var id = {
 +
                container: "container",
 +
                tokens: "tokens",
 +
                all: "all",
 +
                token: "token",
 +
                className: "className",
 +
                sensitiveSearch: "sensitiveSearch"
 +
            },
 +
            tokens = options[id.tokens],
 +
            allClassName = options[id.all][id.className],
 +
            allSensitiveSearch = options[id.all][id.sensitiveSearch];
 +
 
 +
 
 +
            function checkAndReplace(node, tokenArr, classNameAll, sensitiveSearchAll)
 +
            {
 +
                var nodeVal = node.nodeValue, parentNode = node.parentNode,
 +
                    i, j, curToken, myToken, myClassName, mySensitiveSearch,
 +
                    finalClassName, finalSensitiveSearch,
 +
                    foundIndex, begin, matched, end,
 +
                    textNode, span, isFirst;
 +
 
 +
                for (i = 0, j = tokenArr.length; i < j; i++)
 +
                {
 +
                    curToken = tokenArr[i];
 +
                    myToken = curToken[id.token];
 +
                    myClassName = curToken[id.className];
 +
                    mySensitiveSearch = curToken[id.sensitiveSearch];
 +
 
 +
                    finalClassName = (classNameAll ? myClassName + " " + classNameAll : myClassName);
 +
 
 +
                    finalSensitiveSearch = (typeof sensitiveSearchAll !== "undefined" ? sensitiveSearchAll : mySensitiveSearch);
 +
 
 +
                    isFirst = true;
 +
                    while (true)
 +
                    {
 +
                        if (finalSensitiveSearch)
 +
                            foundIndex = nodeVal.indexOf(myToken);
 +
                        else
 +
                            foundIndex = nodeVal.toLowerCase().indexOf(myToken.toLowerCase());
 +
 
 +
                        if (foundIndex < 0)
 +
                        {
 +
                            if (isFirst)
 +
                                break;
 +
 
 +
                            if (nodeVal)
 +
                            {
 +
                                textNode = document.createTextNode(nodeVal);
 +
                                parentNode.insertBefore(textNode, node);
 +
                            } // End if (nodeVal)
 +
 
 +
                            parentNode.removeChild(node);
 +
                            break;
 +
                        } // End if (foundIndex < 0)
 +
 
 +
                        isFirst = false;
 +
 
 +
 
 +
                        begin = nodeVal.substring(0, foundIndex);
 +
                        matched = nodeVal.substr(foundIndex, myToken.length);
 +
 
 +
                        if (begin)
 +
                        {
 +
                            textNode = document.createTextNode(begin);
 +
                            parentNode.insertBefore(textNode, node);
 +
                        } // End if (begin)
 +
 
 +
                        span = document.createElement("span");
 +
                        span.className += finalClassName;
 +
                        span.appendChild(document.createTextNode(matched));
 +
                        parentNode.insertBefore(span, node);
 +
 
 +
                        nodeVal = nodeVal.substring(foundIndex + myToken.length);
 +
                    } // Whend
 +
 
 +
                } // Next i
 +
            }; // End Function checkAndReplace
 +
 
 +
            function iterator(p)
 +
            {
 +
                if (p === null) return;
 +
 
 +
                var children = Array.prototype.slice.call(p.childNodes), i, cur;
 +
 
 +
                if (children.length)
 +
                {
 +
                    for (i = 0; i < children.length; i++)
 +
                    {
 +
                        cur = children[i];
 +
                        if (cur.nodeType === 3)
 +
                        {
 +
                            checkAndReplace(cur, tokens, allClassName, allSensitiveSearch);
 +
                        }
 +
                        else if (cur.nodeType === 1)
 +
                        {
 +
                            iterator(cur);
 +
                        }
 +
                    }
 +
                }
 +
            }; // End Function iterator
 +
 
 +
            iterator(options[id.container]);
 +
        } // End Function highlighter
 +
        ;
 +
 
 +
 
 +
        internalHighlighter(
 +
            {
 +
                container: container
 +
                , all:
 +
                    {
 +
                        className: "highlighter"
 +
                    }
 +
                , tokens: [
 +
                    {
 +
                        token: highlightText
 +
                        , className: "highlight"
 +
                        , sensitiveSearch: false
 +
                    }
 +
                ]
 +
            }
 +
        ); // End Call internalHighlighter
 +
 
 +
    } // End Function highlight
 +
 
 +
};
 +
 +
 +
if(params[paramresalte]){
 +
var container = document.getElementById("mw-content-text");
 +
var findWord = params[paramresalte];
 +
findWord = findWord.replace(",", "");
 +
const regex = /(?<=")[^"]+(?=")/;
 +
var find1 = findWord.match(regex);
 +
console.log(find1);
 +
if(find1!=null){
 +
findWord = find1[0].replace("+", " ");
 +
}
 +
var findWordArr =  findWord.split("+");
 +
//$('html,body').animate({scrollTop:( )},1000,function(){});
 +
findWordArr.forEach(a => {
 +
            InstantSearch.highlight(container, a);
 
         });
 
         });
 +
   
 
}
 
}
 +
 +
if(params["redlink"]){
 +
if(params["redlink"] == "1"){
 +
var htmlModal =  `
 +
<h2>Vas a crear un nuevo contenido. ¿Esta nueva página corresponde con una obra?</h2>
 +
<div class="modal-txt">Si es una obra se asignará la categoría correspondiente y se recargará la página. Después podrás volver a editar la obra. Te recomendamos que edites <strong>mediante el formuario</strong>.</div>
 +
<div class="modal-btn">
 +
<div class="hide spinner">Un momento por favor...</div>
 +
<a class="btn" href="javascript://" onclick="modalAction(1)">Sí, es una obra</a>
 +
<a class="btn" href="javascript://" onclick="modalAction(0)">No, es una página</a>
 +
</div>
 +
`
 +
$("#content").append('<div id="modal-edit" class="modal-editar"><div class="modal-container"><div class="modal-editar-wrapper">'+htmlModal+'</div></div></div>')
 +
function modalAction(accion){
 +
switch(accion){
 +
case 1:
 +
//Ponemos la cateogoria
 +
$("textarea#wpTextbox1").val("{{Obra:footer}}[[Category:Obras]]");
 +
$(".btn").addClass("hide");
 +
$(".spinner").removeClass("hide");
 +
$("#editform").submit();
 +
break;
 +
case 0:
 +
$("#modal-edit").remove();
 +
break;
 +
}
 +
}
 +
}
 +
}
 +
 +
function waitForEl(selector, callback){
 +
    var poller1 = setInterval(function(){
 +
        $jObject = jQuery(selector);
 +
        if($jObject.length < 1){
 +
            return;
 +
        }
 +
        clearInterval(poller1);
 +
        callback($jObject)
 +
    },5);
 +
}
 +
if(params["title"]){
 +
waitForEl("#postedit-modqueued", function() {
 +
  $("#postedit-modqueued p").first().append('<p class="aviso-edit-form">Te recomendamos que edites el contenido <a href="/wiki/Especial:FormEdit/Obra/'+params["title"]+'">desde este formulario</a></p>')
 +
$(".mw-notification").addClass("mw-edit-form");
 +
$(".aviso-edit-form").slideDown();
 +
});
 +
}
 +
//Añadir edición de formulario en modal de aviso de moderación
 +
/*setTimeout(function(){
 +
if($("#postedit-modqueued").length > 0 && params["title"]){
 +
$("#postedit-modqueued p").first().append('<p class="aviso-edit-form">Te recomendamos que edites el contenido <a href="/wiki/Especial:FormEdit/Obra/'+params["title"]+'">desde este formulario</a></p>')
 +
$(".mw-notification").addClass("mw-edit-form");
 +
$(".aviso-edit-form").slideDown();
 +
}
 +
}, 500)*/
 +
 +
 +
//Aviso de contenido nuevo
 +
if($("body").hasClass("action-view") && $.trim($("#mw-content-text .mw-parser-output").text()) === "" && $("#mw-content-text .mw-parser-output").length > 0){
 +
if($("#catlinks").length > 0 ){
 +
if($.trim($("#catlinks").text()) != ""){
 +
var htmlModal =  `
 +
<h2>Gracias por ayudarnos a hacer crecer el diccionario</h2>
 +
<div class="modal-txt">Antes de que comiences la edición de la obra, sólo queremos que tengas en cuenta las siguientes recomendaciones:<br>
 +
<ul>
 +
<li>Para una correcta edición de todos los datos, es recomendable que edites <strong>mediante el formuario</strong>.</li>
 +
<li>Puedes encontrar la opción <strong>"Editar con formulario"</strong> en la parte del menú superior junto al buscador.</li>
 +
<li>No es necesario que se completen todos los datos</li>
 +
<li>Si editas directamente, asegúrate de no borrar el código de la categoría asociada a la obra</li>
 +
</ul>
 +
</div>
 +
<div class="modal-btn">
 +
<div class="hide spinner">Un momento por favor...</div>
 +
<a class="btn" href="javascript://" onclick="$('#modal-edit').remove();">Continuar</a>
 +
</div>
 +
`
 +
$("#content").append('<div id="modal-edit" class="modal-editar"><div class="modal-container"><div class="modal-editar-wrapper">'+htmlModal+'</div></div></div>')
 +
}
 +
}
 +
}
 +
 +
$('.add-referencia').click(function(e){
 +
e.preventDefault();
 +
 +
var htmlModal =  `
 +
<h2>Nueva referencia bibliográfica</h2>
 +
<div class="modal-txt">
 +
<form id="form-referencia" class="filtro">
 +
<div class="bloque-tipo">
 +
<label>Tipo de referencia</label>
 +
<select name="tipo" id="tipo"  class="createboxInput webfonts-changed">
 +
<option value="libro">Libro</option>
 +
<option value="capitulo">Capítulo de libro</option>
 +
<option value="catalogo">Catálogo de exposición</option>
 +
<option value="ficha">Ficha de catálogo de exposición</option>
 +
<option value="revista">Artículo de revista</option>
 +
<option value="web">Página web</option>
 +
</select>
 +
</div>
 +
<div class="bloque-autores">
 +
<label>Autores: <a href="#" class="add-autor">Añadir autor</a></label>
 +
<div class="autores-container"></div>
 +
</div>
 +
 +
<div class="form-block libro capitulo">
 +
<label>Título del libro</label>
 +
<input type="text" name="titulo-libro" id="titulo-libro" class="createboxInput webfonts-changed" />
 +
</div>
 +
<div class="form-block capitulo">
 +
<label>Capítulo del libro</label>
 +
<input type="text" name="capitulo-libro" id="capitulo-libro" class="createboxInput webfonts-changed" />
 +
</div>
 +
<div class="form-block capitulo ficha bloque-autores">
 +
<label>Editor / Comisario: <a href="#" class="add-editor">Añadir editor</a></label>
 +
<div class="editores-container"></div>
 +
</div>
 +
<div class="form-block ficha">
 +
<label>Título de la obra</label>
 +
<input type="text" name="titulo-obra" id="titulo-obra" class="createboxInput webfonts-changed" />
 +
</div>
 +
<div class="form-block catalogo ficha">
 +
<label>Título exposición</label>
 +
<input type="text" name="titulo-exposicion" id="titulo-exposicion" class="createboxInput webfonts-changed" />
 +
</div>
 +
<div class="form-block revista">
 +
<label>Título artículo</label>
 +
<input type="text" name="titulo-articulo" id="titulo-articulo" class="createboxInput webfonts-changed" />
 +
</div>
 +
<div class="form-block revista">
 +
<label>Título revista</label>
 +
<input type="text" name="titulo-revista" id="titulo-revista" class="createboxInput webfonts-changed" />
 +
</div>
 +
<div class="form-block web">
 +
<label>Título web</label>
 +
<input type="text" name="titulo-web" id="titulo-web" class="createboxInput webfonts-changed" />
 +
</div>
 +
<div class="form-block web">
 +
<label>Título publicación</label>
 +
<input type="text" name="titulo-publicacion-web" id="titulo-publicacion-web" class="createboxInput webfonts-changed" />
 +
</div>
 +
<div class="form-block libro capitulo">
 +
<label>Lugar de edición</label>
 +
<input type="text" name="lugar-edicion" id="lugar-edicion" class="createboxInput webfonts-changed" />
 +
</div>
 +
<div class="form-block catalogo ficha">
 +
<label>Lugar de la exposición</label>
 +
<input type="text" name="lugar-exposicion" id="lugar-exposicion" class="createboxInput webfonts-changed" />
 +
</div>
 +
<div class="form-block catalogo ficha">
 +
<label>Museo o institución</label>
 +
<input type="text" name="museo-institucion" id="museo-institucion" class="createboxInput webfonts-changed" />
 +
</div>
 +
 +
<div class="form-block libro capitulo">
 +
<label>Año de edición</label>
 +
<input type="text" name="anyo-edicion" id="anyo-edicion" class="createboxInput webfonts-changed"/>
 +
</div>
 +
<div class="form-block catalogo ficha revista">
 +
<label>Año</label>
 +
<input type="text" name="anyo" id="anyo" class="createboxInput webfonts-changed"/>
 +
</div>
 +
<div class="form-block ficha revista">
 +
<label>Número</label>
 +
<input type="text" name="numero" id="numero" class="createboxInput webfonts-changed" />
 +
</div>
 +
<div class="form-block libro capitulo catalogo ficha revista">
 +
<label>Páginas</label>
 +
<input type="text" name="paginas" id="paginas" class="createboxInput webfonts-changed" />
 +
</div>
 +
<div class="form-block web">
 +
<label>URL</label>
 +
<input type="text" name="url" id="url" class="createboxInput webfonts-changed" />
 +
</div>
 +
<div class="form-block web">
 +
<label>Consultado en fecha</label>
 +
<input type="text" name="fecha_consulta" id="fecha_consulta" class="createboxInput webfonts-changed" />
 +
</div>
 +
</form>
 +
</div>
 +
<div class="modal-btn">
 +
<div class="hide spinner">Un momento por favor...</div>
 +
<a class="btn" href="javascript://" onclick="$('#modal-edit').remove();">Cancelar</a>
 +
<a class="btn" href="javascript://" onclick="insertar_referencia();$('#modal-edit').remove();" style="background:#e1251b">Insertar</a>
 +
</div>
 +
`
 +
$("#content").append('<div id="modal-edit" class="modal-editar modal-editar-ref"><div class="modal-container"><div class="modal-editar-wrapper">'+htmlModal+'</div></div></div>');
 +
$('.libro').slideDown({
 +
  start: function () {
 +
    $(this).css({
 +
      display: "flex"
 +
    })
 +
  }
 +
});
 +
});
 +
 +
$('body').on('click','.add-autor',function(e){
 +
e.preventDefault();
 +
 +
var html = `<div class="bloque-autor">
 +
<input type="text" name="iniciales[]" class="iniciales createboxInput webfonts-changed" placeholder="Inicial" />
 +
<input type="text" name="apellidos[]" class="apellidos createboxInput webfonts-changed" placeholder="Apellido" />
 +
<a href="#" class="borrar-autor">X</a>
 +
</div>`;
 +
$('.autores-container').append(html);
 +
});
 +
$('body').on('click','.add-editor',function(e){
 +
e.preventDefault();
 +
 +
var html = `<div class="bloque-autor">
 +
<input type="text" name="iniciales_ed[]" class="iniciales_ed createboxInput webfonts-changed" placeholder="Inicial" />
 +
<input type="text" name="apellidos_ed[]" class="apellidos_ed createboxInput webfonts-changed" placeholder="Apellido" />
 +
<a href="#" class="borrar-autor">X</a>
 +
</div>`;
 +
$('.editores-container').append(html);
 +
});
 +
 +
$('body').on('click','.borrar-autor',function(e){
 +
e.preventDefault();
 +
$(this).closest('.bloque-autor').remove();
 +
});
 +
 +
 +
$('body').on('change','#tipo',function(e){
 +
e.preventDefault();
 +
 +
var tipo = $(this).find('option:selected').val();
 +
$('.form-block').hide();
 +
$('.'+tipo).slideDown({
 +
  start: function () {
 +
    $(this).css({
 +
      display: "flex"
 +
    })
 +
  }
 +
});
 +
});
 +
 +
 +
function insertar_referencia(){
 +
var tipo = $('#tipo').find('option:selected').val();
 +
var ref = "\n*";
 +
var editores = '';
 +
 +
$('.iniciales').each(function(index){
 +
if(index < 2){
 +
ref = ref + $(this).val()+'. '+$('.apellidos:eq('+index+')').val()+', ';
 +
} else if(index == 2) {
 +
ref = ref + 'et al., ';
 +
}
 +
});
 +
 +
$('.iniciales_ed').each(function(index){
 +
if(index < 2){
 +
editores = editores + $(this).val()+'. '+$('.apellidos_ed:eq('+index+')').val();
 +
if(index+1 < $('.iniciales_ed').length ){
 +
editores = editores+', ';
 +
}
 +
} else if(index == 2) {
 +
editores = editores + 'et al. ';
 +
}
 +
});
 +
if(tipo == 'capitulo' && editores.length > 0) editores = editores+' (eds.),';
 +
if(tipo == 'ficha' && editores.length > 0) editores = editores+' (coord.),';
 +
 +
 +
switch(tipo){
 +
case 'libro':
 +
ref = ref + "''" + $('#titulo-libro').val()+ "''" +', '+$('#lugar-edicion').val()+', '+$('#anyo-edicion').val()+', p.'+$('#paginas').val()+'.'
 +
break;
 +
case 'capitulo':
 +
ref = ref + '"Capítulo ' + $('#capitulo-libro').val()+'" en '+"''" + $('#titulo-libro').val()+ "''" +', '+' '+editores+' '+$('#lugar-edicion').val()+', '+$('#anyo-edicion').val()+', pp.'+$('#paginas').val()+'.'
 +
break;
 +
case 'catalogo':
 +
ref = ref + "''" + $('#titulo-exposicion').val()+ "'', cat.exp. " +', '+$('#lugar-exposicion').val()+', '+$('#museo-institucion').val()+', '+$('#anyo').val()+', p.'+$('#paginas').val()+'.'
 +
break;
 +
case 'ficha':
 +
ref = ref + '"' + $('#titulo-obra').val() + '", en '+' '+editores+' ' + "''" + $('#titulo-exposicion').val()+ "'', cat.exp." +', '+$('#lugar-exposicion').val()+', '+$('#museo-institucion').val()+', '+$('#anyo').val()+', n.'+$('#numero').val()+', pp.'+$('#paginas').val()+'.'
 +
break;
 +
case 'revista':
 +
ref = ref + '"' + $('#titulo-articulo').val() + '", '+ "''" + $('#titulo-revista').val()+ "''" +', n.'+$('#numero').val()+', ';
 +
if($('#anyo').val) {
 +
ref = ref + $('#anyo').val()+', ';
 +
}
 +
ref = ref + 'p.'+$('#paginas').val()+'.'
 +
break;
 +
case 'web':
 +
if($('#titulo-publicacion-web').val()){
 +
ref = ref + '"' + $('#titulo-web').val() + '", en ' + $('#titulo-publicacion-web').val() + '. Accesible en: ' + $('#url').val() + ' (consultado en ' + $('#fecha_consulta').val()+')';
 +
} else {
 +
ref = ref + $('#titulo-web').val() + ' [en línea], ' + $('#url').val()+ ' (consultado en ' + $('#fecha_consulta').val()+')';
 +
}
 +
break;
 +
}
 +
 +
console.log(ref);
 +
var refs = $('textarea[name*="[ref_bibliografica]"]').val();
 +
$('textarea[name*="[ref_bibliografica]"]').val( refs + ref);
 +
}
 +
 +
//$('#referencias-footer').append($('#referencias-obra'));
 +
//$('#referencias-obra').show();
 +
 +
//$("#footer-info-lastmod").append(" El Diccionario interactivo de Ceán Bermúdez está subvencionado por la Dirección General de Bibliotecas, Archivos y Museos (Área de Gobierno de Cultura, Turismo y Deporte) del Ayuntamiento de Madrid con cargo a los presupuestos municipales del año 2020")

Revisión actual del 09:49 20 ene 2022

jQuery(document).ready(function($){

	if($(".iframe-libro").length){
		$(".iframe-libro").html('<iframe id="Iframe1" class="iframe-paginas" data-delay="50" width="100%" height="700" frameborder="0" src="' + $(".iframe-libro").data("src") + '"></iframe>')
	}
	if($(".tomos").length){
		$(".tomos a").click(function(e){
			var ulrTomo = $(this).attr("href");
			console.log(ulrTomo);
			//$('#Iframe1').attr("src", "https://"+ulrTomo);
			$(".l-tomo").addClass("hide");
			$(ulrTomo).removeClass("hide");
			$(".tomos a span").removeClass("active");
			$("span",this).addClass("active");
			e.preventDefault();
		})
	}
	
	function listFilter(input, list) { 
    var sc = true;
    $(input)
      .change( function () {
        var filter = $(this).val();        
        if(filter) {
          $(list).find("li:not(:Contains(" + filter + "))").slideUp(function(){
              if($(this).closest('.mw-category-group').find('li:visible').length == 0){ 
                if($(this).closest('.mw-category-group').is(':visible')) { 
                  $(this).closest('.mw-category-group').slideUp();                
                }
              } else {
                if(!$(this).closest('.mw-category-group').is(':visible')) {
                  $(this).closest('.mw-category-group').slideDown();
                }
              }            
          });

          $(list).find("li:Contains(" + filter + ")").slideDown(function(){
            if(!$(this).closest('.mw-category-group').is(':visible')) {
              $(this).closest('.mw-category-group').slideDown();            
            }
          });
          
          
        } else {
          $(list).find("li").slideDown();
          $('.mw-category-group').slideDown();
        }
        return false;
      })
    .keyup( function () { 
        $(this).change();
         if(sc) {$("html, body").animate({ scrollTop: $(".filtro").offset().top - 80 }, 500);sc=false;}
    });
  }
  
  setTimeout(function(){ 
    if($('.mw-category').length > 0){
        var filtro = $('<div class="filtro"><img src="/skins/Vector/images/search.png?39f97"><input type="text" id="filtro" /></div>');
        $('.mw-category').prepend(filtro);
        listFilter($('#filtro'),$('.mw-category '));	
    }
    
    if($('#listwidget-1-nav').length > 0){
        var filtro = $('<div class="filtro"><img src="/skins/Vector/images/search.png?39f97"><input type="text" placeholder="Busca en el listado" class="createboxInput" id="filtro" /></div>');
        $('#listwidget-1-nav').append(filtro);
        
        var abbrs = {};
        $("ul#listwidget-1 li a").each(function (i) {
        	if(this.firstChild.nodeValue!=null){
            	var letter1 = this.firstChild.nodeValue.toLowerCase().trim();
            	abbrs[letter1] = this;
				var inicial = letter1[0];            	
            	if($(this).closest('li').hasClass('ln--')){
            		if(inicial == 'á') inicial = 'a';
            		else if(inicial == 'é') inicial = 'e';
            		else if(inicial == 'í') inicial = 'i';
            		else if(inicial == 'ó') inicial = 'o';
            		else if(inicial == 'ú') inicial = 'u';
            		$(this).closest('li').removeClass('ln--').addClass('ln-'+inicial);
            	}
        	}
        });
        //console.log(abbrs);
        var abbrsLetters = {};
        $(".ln-letters a").each(function (i) {
        	if(this.firstChild.nodeValue!=null){
	            var letter =  this.firstChild.nodeValue.toLowerCase().trim();
	            letter = letter.replace("-", "");
	            if(letter == "09") letter="_";
	            if(letter == "...") letter="-"; 
	            //console.log("#listwidget-1 li.ln-" + letter)
	            abbrsLetters[letter] = $("#listwidget-1 li.ln-" + letter ).length;
        	}
        });
        //console.log(abbrsLetters)
        $('.ln-last').hide();
        $('.ln-selected').click();
        
        $("#filtro").on("keyup", function() {
        var filterBy = this.value.toLowerCase().trim();
        if(filterBy.length > 3){
            for (var abbr in abbrs) {
                var li = abbrs[abbr];
                if (abbr.indexOf(filterBy) !== -1) {
                    $(li).parent().parent().parent().show()
                    //console.log(li)
                    // show li
                }else{
                    $(li).parent().parent().parent().hide()
                }
            }
        }else{
            for (var abbr in abbrs) {
                var li = abbrs[abbr];
                $(li).parent().parent().parent().show()
            }
        }
        });	
        
        // Ponemos número de búsquedas:
        for (var lt in abbrsLetters) {
            var lnum = abbrsLetters[lt];
            $("." + lt).append(" <span>(" + lnum + ")</span>")
            //console.log(lt + ">" + lnum)
        }
        
    }
    },500)
  
});

// Control de parámetros para búsqueda resaltada
	var paramresalte = "find";
	//Recuperamos parámetros
	var get_params = function(search_string) {
	
	    var parse = function(params, pairs) {
	      var pair = pairs[0];
	      var parts = pair.split('=');
	      var key = decodeURIComponent(parts[0]);
	      var value = decodeURIComponent(parts.slice(1).join('='));
	  
	      // Handle multiple parameters of the same name
	      if (typeof params[key] === "undefined") {
	        params[key] = value;
	      } else {
	        params[key] = [].concat(params[key], value);
	      }
	  
	      return pairs.length == 1 ? params : parse(params, pairs.slice(1))
	    }
	  
	    // Get rid of leading ?
	    return search_string.length == 0 ? {} : parse({}, search_string.substr(1).split('&'));
	  }

	var params = get_params(location.search);
	if(params["search"]){
		document.querySelectorAll(".mw-search-result-heading a").forEach(a => {
            a.href = a.href + "?"+paramresalte+"="+params["search"];
        });
	}
	
	
	var InstantSearch = {

    "highlight": function (container, highlightText)
    {
        var internalHighlighter = function (options)
        {

            var id = {
                container: "container",
                tokens: "tokens",
                all: "all",
                token: "token",
                className: "className",
                sensitiveSearch: "sensitiveSearch"
            },
            tokens = options[id.tokens],
            allClassName = options[id.all][id.className],
            allSensitiveSearch = options[id.all][id.sensitiveSearch];


            function checkAndReplace(node, tokenArr, classNameAll, sensitiveSearchAll)
            {
                var nodeVal = node.nodeValue, parentNode = node.parentNode,
                    i, j, curToken, myToken, myClassName, mySensitiveSearch,
                    finalClassName, finalSensitiveSearch,
                    foundIndex, begin, matched, end,
                    textNode, span, isFirst;

                for (i = 0, j = tokenArr.length; i < j; i++)
                {
                    curToken = tokenArr[i];
                    myToken = curToken[id.token];
                    myClassName = curToken[id.className];
                    mySensitiveSearch = curToken[id.sensitiveSearch];

                    finalClassName = (classNameAll ? myClassName + " " + classNameAll : myClassName);

                    finalSensitiveSearch = (typeof sensitiveSearchAll !== "undefined" ? sensitiveSearchAll : mySensitiveSearch);

                    isFirst = true;
                    while (true)
                    {
                        if (finalSensitiveSearch)
                            foundIndex = nodeVal.indexOf(myToken);
                        else
                            foundIndex = nodeVal.toLowerCase().indexOf(myToken.toLowerCase());

                        if (foundIndex < 0)
                        {
                            if (isFirst)
                                break;

                            if (nodeVal)
                            {
                                textNode = document.createTextNode(nodeVal);
                                parentNode.insertBefore(textNode, node);
                            } // End if (nodeVal)

                            parentNode.removeChild(node);
                            break;
                        } // End if (foundIndex < 0)

                        isFirst = false;


                        begin = nodeVal.substring(0, foundIndex);
                        matched = nodeVal.substr(foundIndex, myToken.length);

                        if (begin)
                        {
                            textNode = document.createTextNode(begin);
                            parentNode.insertBefore(textNode, node);
                        } // End if (begin)

                        span = document.createElement("span");
                        span.className += finalClassName;
                        span.appendChild(document.createTextNode(matched));
                        parentNode.insertBefore(span, node);

                        nodeVal = nodeVal.substring(foundIndex + myToken.length);
                    } // Whend

                } // Next i 
            }; // End Function checkAndReplace 

            function iterator(p)
            {
                if (p === null) return;

                var children = Array.prototype.slice.call(p.childNodes), i, cur;

                if (children.length)
                {
                    for (i = 0; i < children.length; i++)
                    {
                        cur = children[i];
                        if (cur.nodeType === 3)
                        {
                            checkAndReplace(cur, tokens, allClassName, allSensitiveSearch);
                        }
                        else if (cur.nodeType === 1)
                        {
                            iterator(cur);
                        }
                    }
                }
            }; // End Function iterator

            iterator(options[id.container]);
        } // End Function highlighter
        ;


        internalHighlighter(
            {
                container: container
                , all:
                    {
                        className: "highlighter"
                    }
                , tokens: [
                    {
                        token: highlightText
                        , className: "highlight"
                        , sensitiveSearch: false
                    }
                ]
            }
        ); // End Call internalHighlighter 

    } // End Function highlight

};
	
	
	if(params[paramresalte]){
		var container = document.getElementById("mw-content-text");
		var findWord = params[paramresalte];
		findWord = findWord.replace(",", "");
		const regex = /(?<=")[^"]+(?=")/;
		var find1 = findWord.match(regex);
		console.log(find1);
		if(find1!=null){
			findWord = find1[0].replace("+", " ");
		}
		var findWordArr =  findWord.split("+");
		//$('html,body').animate({scrollTop:( )},1000,function(){});
		findWordArr.forEach(a => {
            InstantSearch.highlight(container, a);
        });
    	
	}
	
	if(params["redlink"]){
		if(params["redlink"] == "1"){
			var htmlModal =  ` 
			<h2>Vas a crear un nuevo contenido. ¿Esta nueva página corresponde con una obra?</h2>
			<div class="modal-txt">Si es una obra se asignará la categoría correspondiente y se recargará la página. Después podrás volver a editar la obra. Te recomendamos que edites <strong>mediante el formuario</strong>.</div>
			<div class="modal-btn">
				<div class="hide spinner">Un momento por favor...</div>
				<a class="btn" href="javascript://" onclick="modalAction(1)">Sí, es una obra</a>
				<a class="btn" href="javascript://" onclick="modalAction(0)">No, es una página</a>
			</div>
			`
			$("#content").append('<div id="modal-edit" class="modal-editar"><div class="modal-container"><div class="modal-editar-wrapper">'+htmlModal+'</div></div></div>')
			function modalAction(accion){
				switch(accion){
					case 1:
						//Ponemos la cateogoria
						$("textarea#wpTextbox1").val("{{Obra:footer}}[[Category:Obras]]");
						$(".btn").addClass("hide");
						$(".spinner").removeClass("hide");
						$("#editform").submit();
						break;
					case 0:
						$("#modal-edit").remove();
						break;
				}
			}
		}
	}
	
	function waitForEl(selector, callback){
	    var poller1 = setInterval(function(){
	        $jObject = jQuery(selector);
	        if($jObject.length < 1){
	            return;
	        }
	        clearInterval(poller1);
	        callback($jObject)
	    },5);
	}
	if(params["title"]){
		waitForEl("#postedit-modqueued", function() {
		  	$("#postedit-modqueued p").first().append('<p class="aviso-edit-form">Te recomendamos que edites el contenido <a href="/wiki/Especial:FormEdit/Obra/'+params["title"]+'">desde este formulario</a></p>')
			$(".mw-notification").addClass("mw-edit-form");
			$(".aviso-edit-form").slideDown();
		});
	}
	//Añadir edición de formulario en modal de aviso de moderación
	/*setTimeout(function(){
		if($("#postedit-modqueued").length > 0 && params["title"]){
		$("#postedit-modqueued p").first().append('<p class="aviso-edit-form">Te recomendamos que edites el contenido <a href="/wiki/Especial:FormEdit/Obra/'+params["title"]+'">desde este formulario</a></p>')
		$(".mw-notification").addClass("mw-edit-form");
		$(".aviso-edit-form").slideDown();
	}
	}, 500)*/
	
	
	//Aviso de contenido nuevo
	if($("body").hasClass("action-view") && $.trim($("#mw-content-text .mw-parser-output").text()) === "" && $("#mw-content-text .mw-parser-output").length > 0){
		if($("#catlinks").length > 0 ){
			if($.trim($("#catlinks").text()) != ""){
				var htmlModal =  ` 
				<h2>Gracias por ayudarnos a hacer crecer el diccionario</h2>
				<div class="modal-txt">Antes de que comiences la edición de la obra, sólo queremos que tengas en cuenta las siguientes recomendaciones:<br>
					<ul>
						<li>Para una correcta edición de todos los datos, es recomendable que edites <strong>mediante el formuario</strong>.</li>
						<li>Puedes encontrar la opción <strong>"Editar con formulario"</strong> en la parte del menú superior junto al buscador.</li>
						<li>No es necesario que se completen todos los datos</li>
						<li>Si editas directamente, asegúrate de no borrar el código de la categoría asociada a la obra</li>
					</ul>
				</div>
				<div class="modal-btn">
					<div class="hide spinner">Un momento por favor...</div>
					<a class="btn" href="javascript://" onclick="$('#modal-edit').remove();">Continuar</a>
				</div>
				`
				$("#content").append('<div id="modal-edit" class="modal-editar"><div class="modal-container"><div class="modal-editar-wrapper">'+htmlModal+'</div></div></div>')
			}
		}
	}
	
	$('.add-referencia').click(function(e){
		e.preventDefault();
		
		var htmlModal =  ` 
				<h2>Nueva referencia bibliográfica</h2>
				<div class="modal-txt">
					<form id="form-referencia" class="filtro">
						<div class="bloque-tipo">
							<label>Tipo de referencia</label>
							<select name="tipo" id="tipo"  class="createboxInput webfonts-changed">
								<option value="libro">Libro</option>
								<option value="capitulo">Capítulo de libro</option>
								<option value="catalogo">Catálogo de exposición</option>
								<option value="ficha">Ficha de catálogo de exposición</option>
								<option value="revista">Artículo de revista</option>
								<option value="web">Página web</option>
							</select>
						</div>
						<div class="bloque-autores">
						<label>Autores: <a href="#" class="add-autor">Añadir autor</a></label>
						<div class="autores-container"></div>
						</div>
						
						<div class="form-block libro capitulo">
							<label>Título del libro</label>
							<input type="text" name="titulo-libro" id="titulo-libro" class="createboxInput webfonts-changed" />
						</div>
						<div class="form-block capitulo">
							<label>Capítulo del libro</label>
							<input type="text" name="capitulo-libro" id="capitulo-libro" class="createboxInput webfonts-changed" />
						</div>
						<div class="form-block capitulo ficha bloque-autores">
						<label>Editor / Comisario: <a href="#" class="add-editor">Añadir editor</a></label>
						<div class="editores-container"></div>
						</div>
						<div class="form-block ficha">
							<label>Título de la obra</label>
							<input type="text" name="titulo-obra" id="titulo-obra" class="createboxInput webfonts-changed" />
						</div>
						<div class="form-block catalogo ficha">
							<label>Título exposición</label>
							<input type="text" name="titulo-exposicion" id="titulo-exposicion" class="createboxInput webfonts-changed" />
						</div>
						<div class="form-block revista">
							<label>Título artículo</label>
							<input type="text" name="titulo-articulo" id="titulo-articulo" class="createboxInput webfonts-changed" />
						</div>
						<div class="form-block revista">
							<label>Título revista</label>
							<input type="text" name="titulo-revista" id="titulo-revista" class="createboxInput webfonts-changed" />
						</div>
						<div class="form-block web">
							<label>Título web</label>
							<input type="text" name="titulo-web" id="titulo-web" class="createboxInput webfonts-changed" />
						</div>
						<div class="form-block web">
							<label>Título publicación</label>
							<input type="text" name="titulo-publicacion-web" id="titulo-publicacion-web" class="createboxInput webfonts-changed" />
						</div>
						<div class="form-block libro capitulo">
							<label>Lugar de edición</label>
							<input type="text" name="lugar-edicion" id="lugar-edicion" class="createboxInput webfonts-changed" />
						</div>
						<div class="form-block catalogo ficha">
							<label>Lugar de la exposición</label>
							<input type="text" name="lugar-exposicion" id="lugar-exposicion" class="createboxInput webfonts-changed" />
						</div>
						<div class="form-block catalogo ficha">
							<label>Museo o institución</label>
							<input type="text" name="museo-institucion" id="museo-institucion" class="createboxInput webfonts-changed" />
						</div>
						
						<div class="form-block libro capitulo">
							<label>Año de edición</label>
							<input type="text" name="anyo-edicion" id="anyo-edicion" class="createboxInput webfonts-changed"/>
						</div>
						<div class="form-block catalogo ficha revista">
							<label>Año</label>
							<input type="text" name="anyo" id="anyo" class="createboxInput webfonts-changed"/>
						</div>
						<div class="form-block ficha revista">
							<label>Número</label>
							<input type="text" name="numero" id="numero" class="createboxInput webfonts-changed" />
						</div>
						<div class="form-block libro capitulo catalogo ficha revista">
							<label>Páginas</label>
							<input type="text" name="paginas" id="paginas" class="createboxInput webfonts-changed" />
						</div>
						<div class="form-block web">
							<label>URL</label>
							<input type="text" name="url" id="url" class="createboxInput webfonts-changed" />
						</div>
						<div class="form-block web">
							<label>Consultado en fecha</label>
							<input type="text" name="fecha_consulta" id="fecha_consulta" class="createboxInput webfonts-changed" />
						</div>
					</form>
				</div>
				<div class="modal-btn">
					<div class="hide spinner">Un momento por favor...</div>
					<a class="btn" href="javascript://" onclick="$('#modal-edit').remove();">Cancelar</a>
					<a class="btn" href="javascript://" onclick="insertar_referencia();$('#modal-edit').remove();" style="background:#e1251b">Insertar</a>
				</div>
				`
				$("#content").append('<div id="modal-edit" class="modal-editar modal-editar-ref"><div class="modal-container"><div class="modal-editar-wrapper">'+htmlModal+'</div></div></div>');
				$('.libro').slideDown({
				  start: function () {
				    $(this).css({
				      display: "flex"
				    })
				  }
				});
	});
	
	$('body').on('click','.add-autor',function(e){
		e.preventDefault();
		
		var html = `<div class="bloque-autor">
							<input type="text" name="iniciales[]" class="iniciales createboxInput webfonts-changed" placeholder="Inicial" />
							<input type="text" name="apellidos[]" class="apellidos createboxInput webfonts-changed" placeholder="Apellido" />
							<a href="#" class="borrar-autor">X</a>
						</div>`;
		$('.autores-container').append(html);
	});
	$('body').on('click','.add-editor',function(e){
		e.preventDefault();
		
		var html = `<div class="bloque-autor">
							<input type="text" name="iniciales_ed[]" class="iniciales_ed createboxInput webfonts-changed" placeholder="Inicial" />
							<input type="text" name="apellidos_ed[]" class="apellidos_ed createboxInput webfonts-changed" placeholder="Apellido" />
							<a href="#" class="borrar-autor">X</a>
						</div>`;
		$('.editores-container').append(html);
	});
	
	$('body').on('click','.borrar-autor',function(e){
		e.preventDefault();
		$(this).closest('.bloque-autor').remove();
	});
	
		
		$('body').on('change','#tipo',function(e){
			e.preventDefault();
			
			var tipo = $(this).find('option:selected').val();
			$('.form-block').hide();
			$('.'+tipo).slideDown({
			  start: function () {
			    $(this).css({
			      display: "flex"
			    })
			  }
			});
		});
		
		
	function insertar_referencia(){
		var tipo = $('#tipo').find('option:selected').val();
		var ref = "\n*";
		var editores = '';
		
		$('.iniciales').each(function(index){
			if(index < 2){
				ref = ref + $(this).val()+'. '+$('.apellidos:eq('+index+')').val()+', ';
			} else if(index == 2) {
				ref = ref + 'et al., ';
			}
		});
		
		$('.iniciales_ed').each(function(index){
			if(index < 2){
				editores = editores + $(this).val()+'. '+$('.apellidos_ed:eq('+index+')').val();
				if(index+1 < $('.iniciales_ed').length ){
					editores = editores+', ';
				}
			} else if(index == 2) {
				editores = editores + 'et al. ';
			}
		});
		if(tipo == 'capitulo' && editores.length > 0) editores = editores+' (eds.),';
		if(tipo == 'ficha' && editores.length > 0) editores = editores+' (coord.),';

		
		switch(tipo){
			case 'libro':
				ref = ref + "''" + $('#titulo-libro').val()+ "''" +', '+$('#lugar-edicion').val()+', '+$('#anyo-edicion').val()+', p.'+$('#paginas').val()+'.'
				break;
			case 'capitulo':
				ref = ref + '"Capítulo ' + $('#capitulo-libro').val()+'" en '+"''" + $('#titulo-libro').val()+ "''" +', '+' '+editores+' '+$('#lugar-edicion').val()+', '+$('#anyo-edicion').val()+', pp.'+$('#paginas').val()+'.'
				break;
			case 'catalogo':
				ref = ref + "''" + $('#titulo-exposicion').val()+ "'', cat.exp. " +', '+$('#lugar-exposicion').val()+', '+$('#museo-institucion').val()+', '+$('#anyo').val()+', p.'+$('#paginas').val()+'.'
				break;
			case 'ficha':
				ref = ref + '"' + $('#titulo-obra').val() + '", en '+' '+editores+' ' + "''" + $('#titulo-exposicion').val()+ "'', cat.exp." +', '+$('#lugar-exposicion').val()+', '+$('#museo-institucion').val()+', '+$('#anyo').val()+', n.'+$('#numero').val()+', pp.'+$('#paginas').val()+'.'
				break;
			case 'revista':
				ref = ref + '"' + $('#titulo-articulo').val() + '", '+ "''" + $('#titulo-revista').val()+ "''" +', n.'+$('#numero').val()+', ';
				if($('#anyo').val) {
					ref = ref + $('#anyo').val()+', ';
				}
				ref = ref + 'p.'+$('#paginas').val()+'.'
				break;
			case 'web':
				if($('#titulo-publicacion-web').val()){
					ref = ref + '"' + $('#titulo-web').val() + '", en ' + $('#titulo-publicacion-web').val() + '. Accesible en: ' + $('#url').val() + ' (consultado en ' + $('#fecha_consulta').val()+')';
				} else {
					ref = ref + $('#titulo-web').val() + ' [en línea], ' + $('#url').val()+ ' (consultado en ' + $('#fecha_consulta').val()+')';
				}
				break;
		}
		
		console.log(ref);
		var refs = $('textarea[name*="[ref_bibliografica]"]').val();
		$('textarea[name*="[ref_bibliografica]"]').val( refs + ref);
	}
	
	//$('#referencias-footer').append($('#referencias-obra'));
	//$('#referencias-obra').show();
	
	//$("#footer-info-lastmod").append(" El Diccionario interactivo de Ceán Bermúdez está subvencionado por la Dirección General de Bibliotecas, Archivos y Museos (Área de Gobierno de Cultura, Turismo y Deporte) del Ayuntamiento de Madrid con cargo a los presupuestos municipales del año 2020")