АвторСообщение
злой гений




Пост N: 2541
Ответственность: Общ.организация, другая деятельность - по запросу
Зарегистрирован: 19.09.06
Рейтинг: 17
ссылка на сообщение  Отправлено: 24.06.09 23:10. Заголовок: Скрипт добавления кнопок на панель редактирования и рядом с "отправить"


Часть для HTML-верх



<script type="text/javascript"> 
function isDirective(arg){
/*
Проверяет директиву на истинность
arg - массив списков номеров вида [razdel,filenumber,group,work,msgid]
Пропускать элементы нельзя, но можно опустить последние.
*/
function createDirective(code, varname){
if(code=='*')return 'true';
var s=code.split(','), s1;
var t=[];
for(var i=0;i<s.length;i++){
if(s[i].search(/(\d+)-(\d+)/)>-1){
t[i]='!('+RegExp.$1+'<='+varname+'&&'+varname+'<='+RegExp.$2+')';
}else if(s[i].search(/(\d+)-/)>-1){
t[i]=RegExp.$1+'>'+varname;
}else if(s[i].search(/-(\d+)/)>-1){
t[i]=RegExp.$1+'<'+varname;
}else if(s[i].search(/!(\d+)/)>-1){
t[i]=RegExp.$1+'=='+varname;
}else if(s[i].search(/(\d+)/)>-1){
t[i]=RegExp.$1+'!='+varname;
}
}
return '!('+t.join(' && ')+')';
}
if(arg.length==0)return true;
var t=[],v=['razdel','filenumber','group','work','msgid'];
for(var i=0;i<arg.length&&i<v.length;i++){
t[i]=createDirective(arg[i],v[i]);
}
return eval(t.join(' && '));
}

function appendButtons(){
/*
Добавляет кнопки на форму ответа
Принимает сколько угодно аргументов представляющих собой массивы вида
[[razdel,filenumber,group,work,msgid],image,alt,href,target]
*/
var test=true;
if(theForm)if(theForm.message)test=false;
if(test)return;

var textAr=theForm.message;
var par=textAr.parentNode;
var a, img;
var relative =textAr.previousSibling;
for(var j=0; j<arguments.length; j++){
if(isDirective(arguments[j][0])){
if(arguments[j][1]=='br'){
par.insertBefore(document.createElement('BR'), relative);
}else{
a = document.createElement('A');
a.href = arguments[j][3];
a.target=arguments[j][4];
a.title=arguments[j][2];

img=document.createElement('IMG');
img.src = arguments[j][1];
img.border = 0;
img.alt = arguments[j][2];
img.style.height=16;
img.style.width=16;
a.appendChild(img);

par.insertBefore(a, relative);
par.insertBefore(document.createTextNode(unescape('%20')), relative);
}
}
}
}

function appendInputButtons(){
/*
Добавляет кнопки Input на форму ответа
Принимает сколько угодно аргументов представляющих собой массивы вида
[[razdel,filenumber,group,work,msgid],text,code]
*/
var test=true;
if(theForm)if(theForm.message)test=false;
if(test)return;

var input;
var par=theForm.message.parentNode.parentNode.nextSibling.childNodes[1];
for(var j=0; j<arguments.length; j++){
if(isDirective(arguments[j][0])){
if(arguments[j][1]=='br'){
par.appendChild(document.createElement('BR'));
}else{
input = document.createElement('input');
input.className = 'sender';
input.type = 'button';
input.value = arguments[j][1];
input.onclick = new Function(arguments[j][2]);
par.appendChild(input);
par.appendChild(document.createTextNode(unescape('%20')));
}
}
}
}
</script>


Вызов функций в HTML-низ


Вызов функции appendButtons
Функция добавляет кнопки на панель редактирования (над окноп ввода сообщения)
Функция принимает сколько угодно аргументов, каждый аргумент соответствует одной добавляемой кнопке.
Структура аргумента:
[условие,image,alt,href,target]

image - картинка кнопки
alt - всплывающая подсказка
href - ссылка или команда кнопки
target - где открывать ссылку: _blank - новое окно браузера, _self - в текущее окно.

условие - вложенный массив, представляющий инструкцию о том, в каких случаях показывать кнопки.
[razdel,filenumber,group,work,msgid] - Пропускать элементы нельзя, но можно опустить последние/

razdel - список номеров разделов, в которых нужно показывать кнопку
filenumber - список номеров тем, в которых нужно показывать кнопку
group - список номеров групп, которым нужно показывать кнопку
work - список номеров типов страниц, в которых нужно показывать кнопку
0 - страница раздела с таблицей тем и формой для создания новой темы
1 - страница темы с формой ответа
2 - отдельная страница с формой для создания новой темы
3 - отдельная страница с формой для создания нового опроса
4 - страница отправки личного сообщения
6 - отдельная страница с формой для ответа в тему
7 - страница правки сообщения
msgid - разрешенные номера сообщений. Из-за особеннойтей нумерации постов, я рекомендую использовать только значения 0 - для первого поста темы, !0 - для всех постов кроме первого и * - для всех постов.

Список номеров составляется так: номера идут через запятую, можно задавать диапазоны через - (например 1-5), диапазон может быть оганичен только содной стороны ('-2' - до 2; '2-' - от 2 и больше), можно запретить номер знаком ! (например !3), можно разрешить любые номера знаком *.
Примеры списка:
'0-3,6,7'
'!0'
'2-'
'*'

Пример добавления кнопок
appendButtons( 
[[],'http://s40.radikal.ru/i089/0905/7a/5744fd321f1e.gif','жирный курсив красный',"javascript:pst3('','','','[font color=red][i][b]','[/b][/i][/font]')",'_self'],
[['*','*','2-'],'http://i064.radikal.ru/0905/e1/32f40ac71812.gif','Вставить медаль','javascript:addMedal();','_self'],
[['0','26-'],'http://s51.radikal.ru/i133/0905/fa/89a218d4b770.gif','Шаблон заявки','javascript:RolesAddShablon()','_self'],
[['0','26-','2-','7','!0'],'http://s56.radikal.ru/i153/0905/45/7ad86b9aa2c5.gif','Добавить в каталог','javascript:AddGame();','_self']
);


Вызов функции appendInputButtons
Функция добавляет кнопки рядом с кнопками "Отправить" и "Предпросмотр"
Функция принимает сколько угодно аргументов, каждый аргумент соответствует одной добавляемой кнопке.
Структура аргумента:
[условие,text,code]

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

условие составляется так же, как для функции appendButtons

Пример добавления кнопки:
appendInputButtons([['0'],'Проба','alert("Здарвствуй Мир!")']);

Вид скрипта HTML-низ


<script type="text/javascript"> 
appendButtons(аргументы через запятую);
appendInputButtons(аргументы через запятую);
</script>

Назначение функций и устройство аргументов описано выше.

Самообразование - это главное и основное.
http://htmlbook.ru/ - мощный справочник по HTML и CSS
Аккуратное кодирование - половина успеха.
ЖЖ JID:кементариндур@jabber.ru
Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 5 [только новые]







Пост N: 29
Зарегистрирован: 09.03.07
Рейтинг: 0
ссылка на сообщение  Отправлено: 25.06.09 06:58. Заголовок: Что-то не выходит ка..


Что-то не выходит каменый цветок((((
http://elvenkingdom.forum24.ru

Спасибо: 0 
ПрофильЦитата Ответить
злой гений




Пост N: 2543
Ответственность: Общ.организация, другая деятельность - по запросу
Зарегистрирован: 19.09.06
Рейтинг: 17
ссылка на сообщение  Отправлено: 25.06.09 16:59. Заголовок: Сам подход плохой. Я..


Сам подход плохой.
Я же говорил - зашить в функцию. Вы функции когда-нибудь создавали?

Самообразование - это главное и основное.
http://htmlbook.ru/ - мощный справочник по HTML и CSS
Аккуратное кодирование - половина успеха.
ЖЖ JID:кементариндур@jabber.ru
Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 31
Зарегистрирован: 09.03.07
Рейтинг: 0
ссылка на сообщение  Отправлено: 25.06.09 17:01. Заголовок: Zenitchik, нет, вот ..


Zenitchik, нет, вот функции я как раз никогда и не создавала ((( Попыталась разобраться по вашему примеру, но не смогла

Спасибо: 1 
ПрофильЦитата Ответить
злой гений




Пост N: 2544
Ответственность: Общ.организация, другая деятельность - по запросу
Зарегистрирован: 19.09.06
Рейтинг: 17
ссылка на сообщение  Отправлено: 25.06.09 17:41. Заголовок: По примерам разбират..


По примерам разбираться - гиблое дело.
Суть в том, что функция - это одно слово, чтобы много не писать.
Т.е. она содержит код, который будет выполнен, когда вы ее вызываете.
А еще почитайте вот что: http://katalogue.org/zenitchik/JavaScript/clientguide13/fcns.htm

Раз есть желание - лучше сразу научиться. Чем черт не шутит - может когда-нибудь я к вам за скриптом приду :)

Самообразование - это главное и основное.
http://htmlbook.ru/ - мощный справочник по HTML и CSS
Аккуратное кодирование - половина успеха.
ЖЖ JID:кементариндур@jabber.ru
Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 32
Зарегистрирован: 09.03.07
Рейтинг: 0
ссылка на сообщение  Отправлено: 25.06.09 18:20. Заголовок: Я на самом деле лучш..


Я на самом деле лучше разбираюсь с текстом и конкретным примером... По тем текстам я ничего не понимаю ((( А вот разбираясь на конкретных примерах начинаю понимать суть (собственно так и училась на хтмл). И если вас не затруднит, не мог ли бы вы этот конкретный пример предоставить. Хотя бы просто с фразами что и где писать

Спасибо: 1 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



в отличии от других моделей, Samsung Galaxy Star имеет вместительное дисковое пространство в этом интернет магазине