Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Помогите с соединением двух функцией на JavaScript

Ответить
Настройки темы
[решено] Помогите с соединением двух функцией на JavaScript

Ветеран


Сообщения: 1862
Благодарности: 132


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Igor_I
Дата: 16-09-2006
Вопрос доволно специфичный, не знаю даже реализуемо это. Предисловие довольно длинное
Есть вики-движок -DokuWiki. http://wiki.splitbrain.org/wiki:ru:syntax образец страницы. Нажимаем кнопку Edit page и видим тулбар с иконками. результат использования некоторых из них аналогично здешним иконкам - обрамление некоего текста тегами. Функция вставки смайликов работает по другому, щелкаем по кнопке-смайлик, вылезает окошко и уже в нем выбираем смайлик, который потом вставляется в текст. Также в движке реализованна подсветка синтаксиса. http://animesarov.net.ru/wiki:syntax...тка синтаксиса, только вот кнопки такой нет. Хочу сделать.
Я так думаю, что все функции тулбара завязанны на этой функции. И мне думается так, что нужно соединить каким-то образом два действия данной функции - format & picker
PHP код: Выделить весь код

function initToolbar(tbid,edid,tb){    

 if(!
document.getElementById){ return; }     
var 
toolbar document.getElementById(tbid);     
var 
cnt tb.length;     
for(var 
i=0i<cnti++){         
// create new button         
btn createToolButton(tb[i]['icon'],                                
tb[i]['title'],                                
tb[i]['key']);          
// add button action dependend on type 
        
switch(tb[i]['type']){             
    case 
'format':                 
var 
sample tb[i]['title'];                 
if(
tb[i]['sample']){ sample tb[i]['sample']; }                  
eval(
"btn.onclick = function(){insertTags('"+                                         
jsEscape(edid)+"','"+                                         
jsEscape(tb[i]['open'])+"','"+                                         
jsEscape(tb[i]['close'])+"','"+                                         
jsEscape(sample)+                                     
"');return false;}");                 
toolbar.appendChild(btn);                 
break;                                                               
            case 
'insert':                 
eval(
"btn.onclick = function(){insertAtCarret('"+                                         
jsEscape(edid)+"','"+                                         
jsEscape(tb[i]['insert'])+                                     
"');return false;}");                 
toolbar.appendChild(btn);                 
break;             
          case 
'signature':                 
if(
typeof(SIG) != 'undefined' && SIG != ''){                     
eval(
"btn.onclick = function(){insertAtCarret('"+                                             
jsEscape(edid)+"','"+                                             
jsEscape(SIG)+                                         
"');return false;}");                     
toolbar.appendChild(btn);                 }                 
break;             
         case 
'picker':                 
createPicker('picker'+i,                              
tb[i]['list'],                              
tb[i]['icobase'],                              
edid);                 
eval(
"btn.onclick = function(){showPicker('picker"+i+                                     
"',this);return false;}");                 
toolbar.appendChild(btn);                 
break;                          
       case 
'mediapopup':                 
eval(
"btn.onclick = function(){window.open('"+                                         
jsEscape(tb[i]['url']+NS)+"','"+                                         
jsEscape(tb[i]['name'])+"','"+                                         
jsEscape(tb[i]['options'])+                                     
"');return false;}");                
toolbar.appendChild(btn);                 
break;         
// end switch     
// end for } 

Если есть желание помочь уточните , может какие-то моменты упустил по незнанию.

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 21:31, 13-09-2006

 

Пользователь


Сообщения: 67
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


что-то я не въехал, чего же ты хочешь???
подсветку символа включать или новый тип кнопки???

приведенный кусок кода создает кнопки на тулбаре
а что делает функция showPicker???

Отправлено: 12:53, 15-09-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


Вложения
Тип файла: rar edit.rar
(4.1 Kb, 2 просмотров)

Цитата:
а что делает функция showPicker???
Эта функция показывает окошко, со смайликами.
В общем-то получилось где-то наполовину. Тег вставляется, но вот если есть выделенный текст, то он не обрамляется тегами, как надо, а просто стирается. К сожалению негде показать, что получилось.
Функции, мною добавленные, находятся в пркрепленном файле в самом конце файла.

Цитата:
что-то я не въехал, чего же ты хочешь???
подсветку символа включать или новый тип кнопки???
Новый тип кнопки, который вставляет тег
<code css> </code>
А поскольку на месте css может оказаться любое другое слово, то их надо бы выбирать во всплывающем окошке.

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 16:19, 16-09-2006 | #3


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


Изображения
Тип файла: gif dw1.gif
(28.5 Kb, 3 просмотров)
Тип файла: gif dw2.gif
(8.4 Kb, 3 просмотров)

Вот, что получилось. Кнопки были найдены
На втором скрине результат и кнопки "php" и кнопки побольше.

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 16:32, 16-09-2006 | #4


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Т.е. они там заложены были, их только активировать надо было, так?

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 16:44, 16-09-2006 | #5


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


Нет. Имелось ввиду, что кнопки какие были, такие и запихнул, ну лень было рисовать специально кнопки.

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 17:00, 16-09-2006 | #6


Пользователь


Сообщения: 67
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


вот это место поподробнее:
Код: Выделить весь код
        case 'picker':                  
createPicker('picker'+i,                               
tb[i]['list'],                               
tb[i]['icobase'],                               
edid);                  
eval("btn.onclick = function(){showPicker('picker"+i+                                      
"',this);return false;}");                  
toolbar.appendChild(btn);                  
break;
либо в createPicker либо в showPicker (хотя скорее всего в первом) заполняется то, что будет в окошке - туда и надо список всех слов, которые могут оказаться вместо css (напр. параметр tb[i]['list'])

а вот чтобы текст между тэгами сохранялся... посмотри функцию insertTags
если сможешь, выложи сюда код

Отправлено: 18:08, 18-09-2006 | #7


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


Все функции в прикрепленном файле edit.rar. Последние две функции мои, исправленные.
проблема заключается в этом участке кода.

PHP код: Выделить весь код

eval("btn.onclick = function(){pickerInsertCode('"+id+"','"+

                                   
jsEscape(list[key])+"','"+   
                                  
jsEscape(edid)+"');return false;}"); 

При клике по кнопке вызывается функция pickerInsertCode, которая и рисует слова из массива list[key]. Вернее в эту функцию передаются три параметра.
.............

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 20:14, 18-09-2006 | #8


Пользователь


Сообщения: 67
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


итак, тебе вместо
Код: Выделить весь код
	text="<code "+text+"></code>";
    insertAtCarret(edid,text);
строка 500
надо использовать
Код: Выделить весь код
insertTags(edid,'<code '+text+'>', '</code>', '');
тогда текст внутри тэгов останется (должен остаться)

а что за проблема??? слова не рисуются??? или окошко не показывается???
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:00, 19-09-2006 | #9


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


Спасибо. Держи первое сообщение.
Нечто подобное уже делал, но я сначала определял переменные tagclose & tagopen, а потом их уже подставлял. И 4 переменную не убирал - поэтому наверно не работало. А может еще какая мелочь.
А зачем убирать функцию insertAtCarret?
Осталаль проблема, но это уже дело в Опере. Во всплывающем окошке практически нет пробелов, а если их добавляешь, то в ИЕ пробелы получаются большими.
Ладно, это мелочи

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 20:18, 19-09-2006 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Помогите с соединением двух функцией на JavaScript

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - Помогите разобраться с соединением двух компов upsaa Сетевое оборудование 2 13-03-2009 18:01
[решено] Текстовый редактор с функцией добавления пункта меню/кнопки Котяра Хочу все знать 6 18-04-2008 22:37
Помогите с JavaScript arruk Вебмастеру 13 01-09-2005 09:52
Помогите с JavaScript mitiya2004 Вебмастеру 9 09-04-2004 08:27
JavaScript помогите разобраться! Pavel88 Вебмастеру 4 28-12-2002 19:42




 
Переход