luis
Administrador
- Mensajes
- 1.636
- Puntuación de reacciones
- 728
- Puntos
- 613
- Sitio web
- xenfacil.com
- Versión de XenForo
- 1.5.12
- 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.
Plantilla bb_code_tag_php, borrar su contenido e insertar lo siguiente.
Plantilla bb_code_tag_html, borrar su contenido e insertar lo siguiente.
Visualización como invitado
Visualización como usuario registrado
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.
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 + ' ';
}
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 + ' ';
}
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 + ' ';
}
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
Visualización como usuario registrado
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.