• ¡Bienvenido a XenFácil!

    Estás viendo el sitio como Invitado. Para poder participar en este sitio

    y obtendrás privilegios adicionales, acceso a otras áreas y mucho mas.

    ¡Es gratis!


    ¿Ya eres miembro? Inicia sesión

Mod.Plantilla Ocultar y seleccionar contenido de los códigos BB code, html y php

luis

Administrador
Mensajes
1.636
Puntuación de reacciones
727
Puntos
613
Sitio web
xenfacil.com
País
España
Versión de XenForo
1.5.12
PayPal
Donar dinero a este usuario
Página web
Web
Aunque ya hay algo parecido en este tema, lo he adaptado y añadido algo según mis necesidades, esta modificación oculta el contenido a los invitados y muestra un botón para seleccionar el contenido de su interior si se ha iniciado sesión.

Plantilla bb_code_tag_code, borrar su contenido e insertar lo siguiente.
PHP:
<xen:require css="bb_code.css" />
 
<div class="bbCodeBlock bbCodeCode">
    <xen:if is="!{$visitor.user_id}">
        <div class="type">{xen:phrase code}:</div>
        <div style="padding:10px; text-align: center;">Necesitas <a href="{xen:link register}">Registrarte</a> o <a href="{xen:link login}">Iniciar Sesión</a> para poder ver este contenido</div>
 
    <xen:else />
 
        <div class="type"><input class="button primary" type="button" value="SELECCIONAR - {xen:phrase code}" onclick="selectCODE(this); return false;"></div>
        <pre>{xen:raw $content}</pre><xen:comment><!-- content is escaped via parser --></xen:comment>
    </xen:if>
</div>
 
<script type="text/javascript">
function selectCODE(a)
{
    // Get ID of code block
    var e = a.parentNode.parentNode.getElementsByTagName('pre')[0];
 
    // Not IE and IE9+
    if (window.getSelection)
    {
        var s = window.getSelection();
        // Safari
        if (s.setBaseAndExtent)
        {
            s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
        }
        // Firefox and Opera
        else
        {
            // workaround for bug # 42885
            if (window.opera && e.innerHTML.substring(e.innerHTML.length - 4) == '<BR>')
            {
                e.innerHTML = e.innerHTML + '&nbsp;';
            }
 
            var r = document.createRange();
            r.selectNodeContents(e);
            s.removeAllRanges();
            s.addRange(r);
        }
    }
    // Some older browsers
    else if (document.getSelection)
    {
        var s = document.getSelection();
        var r = document.createRange();
        r.selectNodeContents(e);
        s.removeAllRanges();
        s.addRange(r);
    }
    // IE
    else if (document.selection)
    {
        var r = document.body.createTextRange();
        r.moveToElementText(e);
        r.select();
    }
}
</script>

Plantilla bb_code_tag_php, borrar su contenido e insertar lo siguiente.
PHP:
<xen:require css="bb_code.css" />
 
<div class="bbCodeBlock bbCodePHP">
    <xen:if is="!{$visitor.user_id}">
        <div class="type">{xen:phrase php}:</div>
        <div style="padding:10px; text-align: center;">Necesitas <a href="{xen:link register}">Registrarte</a> o <a href="{xen:link login}">Iniciar Sesión</a> para poder ver este contenido</div>
 
    <xen:else />
 
        <div class="type"><input class="button primary" type="button" value="SELECCIONAR - {xen:phrase php}" onclick="selectPHP(this); return false;"></div>
        <div class="code">{xen:raw $content}</div><xen:comment><!-- content is escaped via parser --></xen:comment>
    </xen:if>
</div>
 
<script type="text/javascript">
function selectPHP(a)
{
    // Get ID of code block
    var e = a.parentNode.parentNode.getElementsByTagName('code')[0];
 
    // Not IE and IE9+
    if (window.getSelection)
    {
        var s = window.getSelection();
        // Safari
        if (s.setBaseAndExtent)
        {
            s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
        }
        // Firefox and Opera
        else
        {
            // workaround for bug # 42885
            if (window.opera && e.innerHTML.substring(e.innerHTML.length - 4) == '<BR>')
            {
                e.innerHTML = e.innerHTML + '&nbsp;';
            }
 
            var r = document.createRange();
            r.selectNodeContents(e);
            s.removeAllRanges();
            s.addRange(r);
        }
    }
    // Some older browsers
    else if (document.getSelection)
    {
        var s = document.getSelection();
        var r = document.createRange();
        r.selectNodeContents(e);
        s.removeAllRanges();
        s.addRange(r);
    }
    // IE
    else if (document.selection)
    {
        var r = document.body.createTextRange();
        r.moveToElementText(e);
        r.select();
    }
}
</script>

Plantilla bb_code_tag_html, borrar su contenido e insertar lo siguiente.
PHP:
<xen:require css="bb_code.css" />
 
<div class="bbCodeBlock bbCodeHtml">
    <xen:if is="!{$visitor.user_id}">
        <div class="type">{xen:phrase html}:</div>
        <div style="padding:10px; text-align: center;">Necesitas <a href="{xen:link register}">Registrarte</a> o <a href="{xen:link login}">Iniciar Sesión</a> para poder ver este contenido</div>
 
    <xen:else />
 
        <div class="type"><input class="button primary" type="button" value="SELECCIONAR - {xen:phrase html}" onclick="selectHTML(this); return false;"></div>
        <pre>{xen:raw $content}</pre><xen:comment><!-- content is escaped via parser --></xen:comment>
    </xen:if>
</div>
 
<script type="text/javascript">
function selectHTML(a)
{
    // Get ID of code block
    var e = a.parentNode.parentNode.getElementsByTagName('pre')[0];
 
    // Not IE and IE9+
    if (window.getSelection)
    {
        var s = window.getSelection();
        // Safari
        if (s.setBaseAndExtent)
        {
            s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
        }
        // Firefox and Opera
        else
        {
            // workaround for bug # 42885
            if (window.opera && e.innerHTML.substring(e.innerHTML.length - 4) == '<BR>')
            {
                e.innerHTML = e.innerHTML + '&nbsp;';
            }
 
            var r = document.createRange();
            r.selectNodeContents(e);
            s.removeAllRanges();
            s.addRange(r);
        }
    }
    // Some older browsers
    else if (document.getSelection)
    {
        var s = document.getSelection();
        var r = document.createRange();
        r.selectNodeContents(e);
        s.removeAllRanges();
        s.addRange(r);
    }
    // IE
    else if (document.selection)
    {
        var r = document.body.createTextRange();
        r.moveToElementText(e);
        r.select();
    }
}
</script>

Visualización como invitado


Oculto.png

Visualización como usuario registrado

Visible.png


Por si alguien tiene el Sistema de modificación de plantillas (TMS) instalado también dejo el archivo para importar, se importa como si fuera un complemento.

Adaptar, corregir, .... al gusto.
 

Adjuntos

  • Complemento_Ocultar_seleccionar_en_BBCodes.xml
    7,9 KB · Visitas: 28

lms

Administrador
Mensajes
7.741
Puntuación de reacciones
2.163
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web
Muy bueno.

Estoy haciendo en complemento esto mismo y ya va bastante avanzado. Lo único que no había hecho era integrar el script para copia (¿Me das permiso para integrarlo?). Además, estoy intentando que se recorte el mensaje completo a un número configurable de caracteres y, tras ello, aparezaca una solicitud de registrarse para ver el contenido completo. No me falta mucho pero el 23 estoy de guardia y el 24 comienzan las fiestas de Tudela.

Salud2
 

luis

Administrador
Mensajes
1.636
Puntuación de reacciones
727
Puntos
613
Sitio web
xenfacil.com
País
España
Versión de XenForo
1.5.12
PayPal
Donar dinero a este usuario
Página web
Web

lms

Administrador
Mensajes
7.741
Puntuación de reacciones
2.163
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web

luis

Administrador
Mensajes
1.636
Puntuación de reacciones
727
Puntos
613
Sitio web
xenfacil.com
País
España
Versión de XenForo
1.5.12
PayPal
Donar dinero a este usuario
Página web
Web
Cierto ya me había olvidado de ese tema ..
 

luis

Administrador
Mensajes
1.636
Puntuación de reacciones
727
Puntos
613
Sitio web
xenfacil.com
País
España
Versión de XenForo
1.5.12
PayPal
Donar dinero a este usuario
Página web
Web
[hide]Mu bonito (Cuando puedo empezar a romperlo??)[/hide]

El mensaje es personalizable??

PD: Buena guardia ....
 

lms

Administrador
Mensajes
7.741
Puntuación de reacciones
2.163
Puntos
2.613
Sitio web
xenfacil.com
País
España
Versión de XenForo
2.1.x
PayPal
Donar dinero a este usuario
Página web
Web
No estoy de guardia hasta el Lunes. Estoy en Fiestas. Voy como puedo.

Tengo problemas con el estilo (CSS) pero no tardará mucho ya que, básicamente está hecho y funcionando.

Salud2
 
Arriba