Кто владеет javascript ом?

(Ответов: 24, Просмотров: 1731)
Страница 2 из 3 Первая 123 Последняя
  1. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Цитата Сообщение от assai Посмотреть сообщение
    ну как вариант можно попробовать найти кнопки дополнительные
    согласен, есть.. но везде инструкции как их добавлять в cms разных. а как добавить кнопку просто в тинимсе нету(((( ни инструкций ни даже похожих кнопок... что очень печально...
    • 0
  2. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Ура, нашел решение, в общем код кнопки приведенный выше работает.. но есть проблемка:
    нужно перед тем как заключать в теги делать из символов сущности по аналогии с функцией htmlspecialchars() в PHP. Нашел функцию на JS которая это делает:
    Код:
    function htmlspecialchars(html) {
    html = html.replace(/&/g, "&");
    html = html.replace(/</g, "&lt;");
    html = html.replace(/>/g, "&gt;");
    html = html.replace(/"/g, "&quot;");
    return html;
    }
    Пробовал так:

    Код:
    (function()
            {
                    tinymce.create("tinymce.plugins.myplugin",
                    {
                            init:
                            function(ed,c) {
                                    ed.addButton('preCode', {
                                            title : '<code>',
                                            image : c+'/img/preCode.gif',
                                            
                                            onclick : function() {
                                                    opentag = '<pre><code>';
                                                    closetag = '</code></pre>';
                                                    content = ed.selection.getSel();
                                                    
                                                    function htmlspecialchars(content) { 
                                                    // Сначала необходимо заменить & 
                                                    content = html.replace(/&/g, "&amp;"); 
                                                    // А затем всё остальное в любой последовательности 
                                                    content = html.replace(/</g, "&lt;"); 
                                                    content = html.replace(/>/g, "&gt;"); 
                                                    content = html.replace(/"/g, "&quot;"); 
                                                    // Возвращаем полученное значение 
                                                    return content; 
                                                    }
     
                                                    ed.focus();
                                                    ed.selection.setContent(opentag+content+closetag);
                                            }
                                    });
                            }
                    });
            tinymce.PluginManager.add("myplugin",tinymce.plugins.myplugin)
            }
    )();
    Но она не работает, думаю что параметры неверно передаю, либо неверно происходит возврат значения.
    Есть идея правильного решения у кого нибудь? или на ошибку укажите...
    Последний раз редактировалось cOAPerator; 05.01.2012 в 19:20.
    • 0
  3. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Мне не по силам дописать, знаний мало.
    Ребята, за денюжку допишете эту кнопку? если согласны пишите в ЛС, объясню какой нужен функционал и обсудим стоимость.
    • 0
  4. Дипломник
    • Регистрация: 29.11.2009
    • Сообщений: 131
    • Репутация: 32
    function htmlspecialchars(html) {
    html = html.replace(/&/g, "&amp;");
    html = html.replace(/</g, "&lt;");
    return html;
    }
    А в вашей функции вы получаете переменную content, а заменяете текст в переменной html. Смените везде на content и будет вам счастье.
    • 0
  5. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Весёлый химик, пробовал, так:
    function htmlspecialchars(content) {
    content = content.replace(/&/g, "&amp;");
    content = content.replace(/</g, "&lt;");
    content = content.replace(/>/g, "&gt;");
    content = content.replace(/"/g, "&quot;");
    return content;

    не работает так тоже(((
    Не преобразует.. и тег вставляет не с обоих сторон а оба тега в конце
    Последний раз редактировалось cOAPerator; 06.01.2012 в 18:18.
    • 0
  6. Дипломник
    • Регистрация: 29.11.2009
    • Сообщений: 131
    • Репутация: 32
    cOAPerator, ну лапонька, ну функцию-то ты описал, а кто ж вызывать ее будет?
    Тебе надо надо , т.е. content = htmlspecialchars(content); писать после объявления этой функции, либо вообще убрать эту функцию и просто
    content = content.replace(/&/g, "&amp;");
    content = content.replace(/</g, "&lt;");
    content = content.replace(/>/g, "&gt;");
    content = content.replace(/"/g, "&quot;");
    оставить. Это как минимум, потому что может там еще есть с tinymce заморочки какие, а просто по javascript объясняю.
    • 0
  7. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Весёлый химик, спасибо за ответ, я пробовал оба способа:
    так:
    Код:
    (function()
    	{
    		tinymce.create("tinymce.plugins.custombuttons", {
    			init: function(ed,c) {
    				ed.addButton('preCode', {
    					title : '<code>',
    					image : c+'/img/preCode.gif',
    					onclick : function() {
    						opentag = '<pre><code>';
    						closetag = '</code></pre>';
    						content = ed.selection.getSel();
    
    						function htmlspecialchars(content) { 
    						content = content.replace(/&/g, "&amp;"); 
    						content = content.replace(/</g, "&lt;"); 
    						content = content.replace(/>/g, "&gt;"); 
    						content = content.replace(/"/g, "&quot;"); 
    						//return content; 
    						}
    						content = htmlspecialchars(content);
    						ed.focus();
    						ed.selection.setContent(opentag+content+closetag);
    					}
    				});
    			}
    		});
    	tinymce.PluginManager.add("custombuttons",tinymce.plugins.custombuttons)
    	}
    )();
    и вот так:
    Код:
    (function()
    	{
    		tinymce.create("tinymce.plugins.custombuttons", {
    			init: function(ed,c) {
    				ed.addButton('preCode', {
    					title : '<code>',
    					image : c+'/img/preCode.gif',
    					onclick : function() {
    						opentag = '<pre><code>';
    						closetag = '</code></pre>';
    						content = ed.selection.getSel();
    
    						content = content.replace(/&/g, "&amp;"); 
    						content = content.replace(/</g, "&lt;"); 
    						content = content.replace(/>/g, "&gt;"); 
    						content = content.replace(/"/g, "&quot;"); 
    						
    						ed.focus();
    						ed.selection.setContent(opentag+content+closetag);
    					}
    				});
    			}
    		});
    	tinymce.PluginManager.add("custombuttons",tinymce.plugins.custombuttons)
    	}
    )();
    Про то что надо вызывать написанную функцию, я подумал и попробовал сразу по аналогии с php, второй вариант попробовал но он не работает тоже.
    в обоих случаях перестает вообще кнопка работать. В чем причина не могу понять никак...
    Последний раз редактировалось cOAPerator; 08.01.2012 в 01:25.
    • 0
  8. Дипломник
    • Регистрация: 29.11.2009
    • Сообщений: 131
    • Репутация: 32
    Таки пришлось документацию по tinymce почитать :)
    Код:
    <script type="text/javascript">
        (function () {
            tinymce.create('tinymce.plugins.ExamplePlugin', {
                init:function (ed, url) {
                    ed.addCommand('mceExample', function () {
    
                        var opentag = '<pre><code>';
                        var closetag = '</code></pre>';
                        var content = ed.selection.getContent();
                        console.log(content);
    //                    content = content.replace(/&/g, "&amp;");
    //                    content = content.replace(/</g, "&lt;");
    //                    content = content.replace(/>/g, "&gt;");
    //                    content = content.replace(/"/g, "&quot;");
                        ed.focus();
                        ed.selection.setContent(opentag + content + closetag);
                    });
                    ed.addButton('example', {
                        title:'<C>',
                        image:url + '/img/example.gif',
                        cmd:'mceExample'
                    });
                }
            });
            tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin);
        })();
    </script>
    Развлекайтесь :)
    Важное - ваша функция должна выполняться не на onclick по кнопке, а надо оформить ее отдельной командой, чтобы был доступ к объекту самого редактора, во-вторых я там жирным выделил метод получения выделнного сейчас содержимого (можно еще просто текст получать), плюс я закомментировал ваши преобразования, а то получается html-код, хотя если именно он вам и нужен - то раскомментируйте обратно.
    • 1

    Спасибо сказали:

    cOAPerator(10.01.2012),
  9. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Весёлый химик, Спасибо за столь полный и быстрый ответ. Сегодня опробую обязательно. Как я и предполагал, мне такого кода не осилить пока....
    В качестве пополнения знаний, поясните пожалуйста - console.log(content); - это для регистрации событий, то есть в редакторе есть кнопки undo/redo (отменить/повторить действие) - чтобы это действие запоминалось?
    Цитата Сообщение от Весёлый химик Посмотреть сообщение
    ваша функция должна выполняться не на onclick по кнопке, а надо оформить ее отдельной командой, чтобы был доступ к объекту самого редактора
    - и эта функция если я правильно понял, потом все-равно привязывается вот тут
    Цитата Сообщение от Весёлый химик Посмотреть сообщение
    ed.addButton('example', {
    title:'<C>',
    image:url + '/img/example.gif',
    cmd:'mceExample'
    к кнопке?
    Цитата Сообщение от Весёлый химик Посмотреть сообщение
    плюс я закомментировал ваши преобразования, а то получается html-код
    суть была в том что при вставке html кода, он оставался в исходном виде при вставке в бд,а нужно было делать из тегов сущьности... чтобы при выводе не происходило обработки тегов, а осуществлялся их вывод как текст. А посему раскоментирую строки...

    PS: Серьезно, низкий Вам поклон! Вы единственный кто помог за все время на 3 форумах! В качестве благодарности я напишу о вас, на своем сайте пару строк... и возражений я не приму) Напишите плиз как Ваше имя мне в ЛС, а то не нашел в профиле имени..
    Последний раз редактировалось cOAPerator; 08.01.2012 в 16:31.
    • 0
  10. Дипломник
    • Регистрация: 29.11.2009
    • Сообщений: 131
    • Репутация: 32
    Цитата Сообщение от cOAPerator Посмотреть сообщение
    console.log(content);
    Это уберите лучше, я просто во время отладки это использовал, чтобы посмотреть значения переменных. Это в файрбаг/драгонфлай/консоль выводит значение переменной. Если не уберете - в ИЕ ошибки могут показываться.
    Насчет привязки функции - да, сначала регистрируете команду "mceExample", потом назначаете ее кнопке.
    Вообще код почти целиком взят с сайта tinymce - http://www.tinymce.com/wiki.php/Creating_a_plugin
    • 1

    Спасибо сказали:

    cOAPerator(10.01.2012),
Страница 2 из 3 Первая 123 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
Javascript оптимизатор
Дайджест блогосферы 0 13.08.2011 01:26
Анимированные кнопки без JavaScript
Дайджест блогосферы 0 04.04.2011 16:43
помогите с javascript
Web программирование 1 30.01.2011 14:46
Подозрительный Javascript/IFrame
Web программирование 4 15.11.2010 20:02

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры