Igor_I
13-09-2006, 21:31
Вопрос доволно специфичный, не знаю даже реализуемо это. Предисловие довольно длинное :)
Есть вики-движок -DokuWiki. http://wiki.splitbrain.org/wiki:ru:syntax образец страницы. Нажимаем кнопку Edit page и видим тулбар с иконками. результат использования некоторых из них аналогично здешним иконкам - обрамление некоего текста тегами. Функция вставки смайликов работает по другому, щелкаем по кнопке-смайлик, вылезает окошко и уже в нем выбираем смайлик, который потом вставляется в текст. Также в движке реализованна подсветка синтаксиса. http://animesarov.net.ru/wiki:syntax#подсветка синтаксиса, только вот кнопки такой нет. Хочу сделать.
Я так думаю, что все функции тулбара завязанны на этой функции. И мне думается так, что нужно соединить каким-то образом два действия данной функции - format & picker
function initToolbar(tbid,edid,tb){
if(!document.getElementById){ return; }
var toolbar = document.getElementById(tbid);
var cnt = tb.length;
for(var i=0; i<cnt; i++){
// 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 }
Если есть желание помочь :) уточните , может какие-то моменты упустил по незнанию.
Есть вики-движок -DokuWiki. http://wiki.splitbrain.org/wiki:ru:syntax образец страницы. Нажимаем кнопку Edit page и видим тулбар с иконками. результат использования некоторых из них аналогично здешним иконкам - обрамление некоего текста тегами. Функция вставки смайликов работает по другому, щелкаем по кнопке-смайлик, вылезает окошко и уже в нем выбираем смайлик, который потом вставляется в текст. Также в движке реализованна подсветка синтаксиса. http://animesarov.net.ru/wiki:syntax#подсветка синтаксиса, только вот кнопки такой нет. Хочу сделать.
Я так думаю, что все функции тулбара завязанны на этой функции. И мне думается так, что нужно соединить каким-то образом два действия данной функции - format & picker
function initToolbar(tbid,edid,tb){
if(!document.getElementById){ return; }
var toolbar = document.getElementById(tbid);
var cnt = tb.length;
for(var i=0; i<cnt; i++){
// 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 }
Если есть желание помочь :) уточните , может какие-то моменты упустил по незнанию.