Comunidad de diseño web y desarrollo en internet online

problema con el bbcode y el tinymce

Citar            
MensajeEscrito el 15 Sep 2008 05:24 pm
Buenas, espero q todos esten bien y siempre hacia adelante :P

quiero saber si ustedes conocen la forma para publicar codigos dentro de un foro, es que estoy haciendo una pagina web y le inserte un editor (TinyMce 3.2) eh intentado de todo sobre como dice el manual de poner el bbcode en el header y activar todo lo posible, lo que pasa es que intenta hacer esto

Código :

<?php   ?>
me sale esto

Código :

 
, y si tiene texto sin etiquetas me sale solo el texto y no lo puedo configurar.

cuando introduzco el texto en mysql lo inserto asi ejempo:

Código :


//limpio el texto
$text1=htmlentities($text);

//luego lo imprimo asi otro ducumento
$text1=html_entitys_decode($text);



en verdad quisiera saber si alguien me puede ayudar gracias de ante mano

Por zomb

84 de clabLevel

1 tutorial

 

msie7
Citar            
MensajeEscrito el 16 Sep 2008 07:17 pm
Creo que la función "html_entity_decode" es la que te está dando problemas.

La variable "$text1" devolverá el "$text" codificado. Eso es:

Código :

$text = "Mi 'texto' tiene <b>bbcode</b>";

echo htmlentities($text); // devolverá: Mi 'texto' tiene &lt;b&gt;bbcode&lt:/b&gt;


Creo que esto es lo que necesitas que se imprima por pantalla ya que el explorador interpretará estos códigos y los reemplazará por su símbolo.

Cuando utilizas la función "html_entity_decode($text)", estás diciendo que todo lo codificado se decodifique para así mostrar el lenguaje en código.

Código :

$text = "devolverá: Mi 'texto' tiene &lt;b&gt;bbcode&lt:/b&gt;";

echo html_entity_decode($text); // devolverá: Mi 'texto' tiene <b>bbcode</b>;


... esto será interpretado como código html, entonces el explorador lo ejecutará.

Espero sea de ayuda. Saludos.

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

mozilla
Citar            
MensajeEscrito el 17 Sep 2008 05:10 pm
si eso me ayudo gracias pero no todo en si tu ve que modificar el tinymce el archivo editor_plugin.js del bbcode, lo tuve que hacer porq no me leia el bbcode este codigo lo encontre despues de matarme buscando en el foro tinymce.

Código :

/**
 * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
 *
 * @author Moxiecode
 * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
 */
            
(function() {
    tinymce.create('tinymce.plugins.BBCodePlugin', {
        init : function(ed, url) {
            var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase();

            ed.onBeforeSetContent.add(function(ed, o) {
                o.content = t['_' + dialect + '_bbcode2html'](o.content);
            });

            ed.onPostProcess.add(function(ed, o) {
                if (o.set)
                    o.content = t['_' + dialect + '_bbcode2html'](o.content);

                if (o.get)
                    o.content = t['_' + dialect + '_html2bbcode'](o.content);
            });
        },

        getInfo : function() {
            return {
                longname : 'BBCode Plugin',
                author : 'Moxiecode Systems AB',
                authorurl : 'http://tinymce.moxiecode.com',
                infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',
                version : tinymce.majorVersion + "." + tinymce.minorVersion
            };
        },

        // Private methods
        // HTML -> BBCode in PunBB dialect
        _punbb_html2bbcode : function(s) {
            s = tinymce.trim(s);
            //alert('html: ' + s);
            function getTagName(el) {
                return el.match(/\w+/);
            }
            function elGetAttribute(el,name) {
                var r = new RegExp(name+"=\"([^\"]*)\"");
                var m = r.exec(el);
                if (m && m[1]) {
                    return m[1];

                }
                return null;
            }
            function getRule(el,name) {
                var r = new RegExp("[\";]\\s*"+name+":\\s*([^\";]*?)%?[;\"]");
                var m = r.exec(el);
                if (m && m[1]) {

                    return m[1];
                }
                return null;

            }
            function analyzeCouple(opening,closing) {
                var res = new Array();
                var op = getTagName(opening);
                if (op == 'p') {
                    opening = '';
                    closing = '\n';
                }
                if (op == 'a') {
                    opening = "[url= + elGetAttribute(opening,'href') + ]";
                    closing = "[/url]";
                }
                if (op == 'span') {
                    if (getRule(opening,'color')) {
                        opening = '[color= + getRule(opening,\'color\') + ]';
                        closing = '[/color]';
                    }
                    if (getRule(opening,'background-color')) {
                        opening = '[bgcolor=' + getRule(opening,'background-color') + ']';
                        closing = '[/bgcolor]';                    
                    }
                    if (getRule(opening,'font-size')) {
                        var n = getRule(opening,'font-size').match(/\d+/);
                        opening = '[size=' + n + ']';
                        closing = '[/size]';                    
                    }
                    if (getRule(opening,'text-decoration')=='underline') {
                        opening = '[u]';
                        closing = '[/u]';                    
                    }
                    if (getRule(opening,'text-decoration')=='line-through') {
                        opening = '[s]';
                        closing = '[/s]';                    
                    }
                }
                if (op == 'img') {
                    opening = "[img]"+elGetAttribute(opening,'src');
                    closing = "[/img]";
                }
                if ((op == 'strong')||(op == 'b')) {
                    opening = "[b]";
                    closing = "[/b]";
                }
                if ((op == 'em')||(op == 'i')) {
                    opening = "[i]";
                    closing = "[/i]";
                }
                if (op == 'ul') {
                    opening = "[ul]";
                    closing = "[/ul]";
                }
                if (op == 'ol') {
                    opening = "[ol]";
                    closing = "[/ol]";
                }
                if (op == 'li') {
                    opening = "[li]";
                    closing = "[/li]";
                }
                res[0] = opening;
                res[1] = closing;
                return res;
            }
            function getNodeType(tag) {
                if (tag.match(/<(?!\/)[^>]*[^\/]>/) != null)
                    return 1;     // opening
                if (tag.match(/<[\/][^>]*>/) != null)
                    return 2;     // closing
                if (tag.match(/<[^>]*[\/]>/) != null)
                    return 3;     // closed directly
                return 0;         // string
            }
            function rep(re, str) {
                s = s.replace(re, str);
            };


            var repSpanSplit = /<span\s+style="([^:]+:[^;]+;)\s*([^"]+)">(.*?)<\/span>/ig;
                while (repSpanSplit.test(s)) {
                 s = s.replace(repSpanSplit, "<span style=\"$1\"><span style=\"$2\">$3</span></span>");
                }

            rep(/\n/gi,' ');
            rep(/<br\s*\/?>/gi,"\n");
            
            var match = s.match(/<.*?>|[^<]*/ig);
            var result = new Array();
            var position = 0;
            for (var i = 0; i< match.length; i++) {
            //alert('segment: ' + match[i].replace('\n','.').replace(' ','-'));
            if (getNodeType(match[i])==1) {
                var backtrace = 0;
                    for (var y = i; y < match.length; y++) {
                        if (getNodeType(match[y])==1) {
                         backtrace++;
                        }
                        if (getNodeType(match[y])==2) {
                         backtrace--;
                        }
                        if (backtrace == 0) {
                        var a = analyzeCouple(match[i],match[y]);
                        match[i] = a[0];
                        match[y] = a[1];
                        break;
                        }
                    }
                } else if (getNodeType(match[i])==3) {
                    var a = analyzeCouple(match[i], null);
                    match[i] = a[0] + a[1];
                }
            }
        s = match.join('');
        
            rep(/&nbsp;/gi," ");
            rep(/&quot;/gi,"\"");
            rep(/&lt;/gi,"<");
            rep(/&gt;/gi,">");
            rep(/&amp;/gi,"&");


        var repNestedSize = /(\[size=\d+\])(.*?)\[size=\d+\](.*?)\[\/size\](.*?)\[\/size\]/gi
        while (repNestedSize.test(s))
            rep(repNestedSize,"[size=$1]$2$3[/size]");
            rep(/\[size=\[size=(\d+)\]\](.*?)\[\/size\]/gi, "[size=$1]$2[/size]");                
        return s; 


        },
// --------------------------------------------------------------------------------------
        // BBCode -> HTML from PunBB dialect
        _punbb_bbcode2html : function(s) {

            s = tinymce.trim(s);
            //alert('bbcode: ' + s);
            function getTagName(el) {
                return el.match(/\w+/);
            }
            function bbGetParam(el) {
                var r = /=\"?([^\]]*)\"?/;
                var m = r.exec(el);
                if (m && m[1]) {
                    return m[1];

                }
                return null;
            }
            function analyzeCouple(opening,closing,content) {
                var res = new Array();
                var op = getTagName(opening);
                if (op == 'url') {
                    opening = '<a href="' + bbGetParam(opening) + '">';
                    closing = '</a>';
                }
                if (op == 'color') {
                    opening = '<span style="color:'+bbGetParam(opening)+';">';
                    closing = '</span>';
                }
                if (op == 'bgcolor') {
                    opening = '<span style="background-color:'+bbGetParam(opening)+';">';
                    closing = '</span>';
                }
                if (op == 'size') {
                    opening = '<span style="font-size:'+bbGetParam(opening)+'%;">';
                    closing = '</span>';
                }
                if (op == 'u') {
                    opening = '<span style="text-decoration:underline;">';
                    closing = '</span>';
                }
                if (op == 's') {
                    opening = '<span style="text-decoration:line-through;">';
                    closing = '</span>';
                }
                if (op == 'img') {
                    opening = '<img src="' + content + '" />';
                    closing = '';
                    content = '';
                }
                if (op == 'b') {
                    opening = "<strong>";
                    closing = "</strong>";
                }
                if (op == 'i') {
                    opening = "<em>";
                    closing = "</em>";
                }
                if (op == 'ul') {
                    opening = "<ul>";
                    closing = "</ul>";
                }
                if (op == 'ol') {
                    opening = "<ol>";
                    closing = "</ol>";
                }
                if (op == 'li') {
                    opening = "<li>";
                    closing = "</li>";
                }
                res[0] = opening;
                res[1] = closing;
                res[2] = content;
                return res;
            }
            function getNodeType(tag) {
                if (tag.match(/\[[^\/][^\]]*\]/) != null)
                    return 1;     // opening
                if (tag.match(/\[[\/]\w+\]/) != null)
                    return 2;     // closing
                return 0;         // string
            }

            function rep(re, str) {
                s = s.replace(re, str);
            };

            rep(/\r\n|\n/gi,"<br />");


            var match = s.match(/\[.*?\]|\[?[^\[]*/ig);
            var result = new Array();
            var position = 0;
            for (var i = 0; i< match.length; i++) {
            if (getNodeType(match[i])==1) {
                var backtrace = 0;
                    for (var y = i; y < match.length; y++) {
                        if (getNodeType(match[y])==1) {
                         backtrace++;
                        }
                        if (getNodeType(match[y])==2) {
                         backtrace--;
                        }
                        if (backtrace == 0) {
                        var a = analyzeCouple(match[i],match[y],match[i+1]);
                        match[i] = a[0];
                        match[y] = a[1];
                        match[i+1] = a[2];
                        break;
                        }
                    }
                }
            }
            // some fixes
            //rep(/\[size=(\d+)\](.*?)\[size=\d+\](.*?)\[\/size\](.*?)\[\/size\]/gi,"[size=$1]$2$3[/size]");
            //rep(/\[size=\[size=(\d+)\]\](.*?)\[\/size\]/gi, "[size=$1]$2[/size]");
            s = match.join('');
            return '<p>' + s + '</p>'; 
        }
    });

    // Register plugin
    tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin);
})();


espero que si alguien tiene un problema similar a esto le sirva y gracias por su ayuda

Por zomb

84 de clabLevel

1 tutorial

 

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.