Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Быстрая цитата 
:(
    Опции темы
2man
Дата 3.8.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2007
Регистрация: 6.5.2005
Где: Нижние Чигири

Репутация: нет
Всего: 71



Подскажите как сделать кнопку "быстрая цитата" на IPB 1.3. Я думаю, это где-то здесь меняется:
Код

<td class='pformleft'>
   <center>Для вставки цитаты, выделите нужный текст и <br><a href="javascript:Insert(selection)" onMouseDown="get_selection()"><b>НАЖМИТЕ СЮДА</b></a>



--------------------
Быстро поднятое - упавшим не считаеся
PM MAIL ICQ MSN   Вверх
Sardar
Дата 5.8.2005, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Просто выбираем отселектированный текст через document.getSelection().toString() или document.selection.text для ИЕ. Полученный текст ставим куда угодно.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
2man
Дата 7.8.2005, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2007
Регистрация: 6.5.2005
Где: Нижние Чигири

Репутация: нет
Всего: 71



А по-понятнее можно как-нибудь объяснить?


--------------------
Быстро поднятое - упавшим не считаеся
PM MAIL ICQ MSN   Вверх
2man
Дата 12.8.2005, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2007
Регистрация: 6.5.2005
Где: Нижние Чигири

Репутация: нет
Всего: 71



Как я посмотрел делается у вас, я пытаюсь вставить $poster['name'] в скрипт, выглядит это дело так:
Код

<td class='pformleft'>
   <center>Для вставки цитаты, выделите нужный текст и <br><a href="javascript:Insert(selection, $poster['name'])" onMouseDown="get_selection()"><b>НАЖМИТЕ СЮДА</b></a>

но эффекта ноль smile
Добавлено @ 07:45
Выдает ошибку, а если меняю на:
Код

<a href="javascript:Insert(selection, 'name')" onMouseDown="get_selection()"

то просто выдает обычную цитату smile


--------------------
Быстро поднятое - упавшим не считаеся
PM MAIL ICQ MSN   Вверх
Sardar
Дата 12.8.2005, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Insert, get_selection это функции этого форума, а не какие-то встроенные вещи.

У нас get_selection() вызываеться по onmouseover и складывает в переменную selection отселектированный текст на странице. Затем если человек кликает на картинку, достаёться пост по id, достаёться его текст, сравниваеться с полученной селекцией. Если подстрока не найденна, то считаеться что участник кликнул на кнопку цитаты другого человека.
Это всё переписанные функции.

Что тебе нужно? Нежели сложно посмотреть http://forum.vingrad.ru/html/quote.js ?
Впрочем написанно кривовато, в новом дизайне я переписал чуть по другому smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
2man
Дата 13.8.2005, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2007
Регистрация: 6.5.2005
Где: Нижние Чигири

Репутация: нет
Всего: 71



Ты не совсем меня понял. Дело не в quote.js , а в /skin/*/skin_topic.php, скрипт идет именно оттуда. Я просто хочу заменить скрипт, тот что у вас, к примеру, на смайликами:
Цитата
Для вставки имени(ника), кликните на нем.

Для того, чтобы вставить цитату с этой страницы, выделите её и нажмите здесь.

на скрипт, который идет из кнопки быстрая цитата.
Чтобы цитируемый текст выглядел не как:
Цитата
Впрочем написанно кривовато

а как:
Цитата(Sardar @ 12.8.2005, 15:39)
Впрочем написанно кривовато


оффтоп: у вас этот самый javascript под смайликами и не работает smile


--------------------
Быстро поднятое - упавшим не считаеся
PM MAIL ICQ MSN   Вверх
2man
Дата 14.8.2005, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2007
Регистрация: 6.5.2005
Где: Нижние Чигири

Репутация: нет
Всего: 71



А если после
Код

<a href="javascript:Insert(selection, 'name')" onMouseDown="get_selection()"

Отправить его на quote.js?
Код

<a href="javascript:Insert(selection, 'name')" onMouseDown="get_selection()<QUOTE.JS>"



--------------------
Быстро поднятое - упавшим не считаеся
PM MAIL ICQ MSN   Вверх
sergejzr
Дата 14.8.2005, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 10
Всего: 360



2man, тебе стоит наверное почитать про яваскрипт прежде чем генерировать решения smile)


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sardar
Дата 14.8.2005, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(2man @ 13.8.2005, 16:18)
Чтобы цитируемый текст выглядел не как:

Всё что нужно это сгенерить {quote=автор, дата, время}цитата{/quote}
Цитата(2man @ 13.8.2005, 16:18)
оффтоп: у вас этот самый javascript под смайликами и не работает
Где? Всё работает... подробней?
Цитата(2man @ 14.8.2005, 13:41)
Отправить его на quote.js?

Это явно не JS smile

Как сделанно здесь? Вставка цитаты делиться на две фазы: выборка селекции и собственно вставка. Выборка при наведении мышкой на кнопку, т.к. при клике селекция пропадёт.

Выборка селекции:
Код
//функция помещает селекцию со страницы в переменную InsertQuote.selection
InsertQuote.prepare=function() {
  if(document.getSelection) {
    if(typeof(window.getSelection)!="undefined") InsertQuote.selection=window.getSelection();
    else InsertQuote.selection=document.getSelection();
  } else InsertQuote.selection=document.selection.createRange().text;
}


Теперь нужно запретить цитирование от лица чужого участника, если ты вдруг нажал на чужую кнопку цитаты smile
Функции вставки передаёться ник пользоватля, время и дата, и id поста. Выборка поста по id удобней чем доступ методами DOM, к тому же не боишся смены дизайна.
Код

function InsertQuote(nick, datetime, postid) { //k,r,s
    if(InsertQuote.selection.toString().length>0) { //если селекция была
      var pst=document.getElementById(postid), sl="";
      var uct = (typeof(pst.innerText)!="undefined")? pst.innerText: (typeof(pst.textContent)!="undefined")? pst.textContent: "";
      if(n6||window.opera) {//небольшой патчь для оперы
        uct=extractRus(uct);
        sl=extractRus(InsertQuote.selection.toString());
      } else sl=InsertQuote.selection.toString();
      //проверим являеться ли отселектированный текст чатью поста участника
      if(uct.indexOf(sl)<0) {alert("Вы нажали на кнопку цитаты другого участника");return;}
      //вставим пост, у тебя другая функция
      ubbc_addAfter(((post.target.length>0)? "\n": "")+"[quote"+(nick?("="+nick+", "+datetime):"")+"]\n"+(InsertQuote.selection.toString())+"\n[/quote]\n");
    }
}

//патчь
function extractRus(txt){
  var h=[], v=0;
  function fltr(l){ return ((l>=1072&&l<=1103)||(l>=1040&&l<=1071)); }
  for(var i=0, e; i<txt.length; i++) {
    if(fltr(txt.charCodeAt(i))){
      for(e=i+1; e<txt.length&&fltr(txt.charCodeAt(e)); ++e);
      h.push(txt.substring(i,e));
      i=e;
    }
  }
 return h.join('');
}

Это оригинальные скрипты форума, чуть модифицированные мной.

Затем генериться кнопка:
Код
<img src="images/posttop4-off.gif" alt="Быстрая цитата" title="Скопировать выделение в поле ввода" onmouseover="InsertQuote.prepare();" onclick="InsertQuote('Sardar', '1.12.2004, 18:53', 'post308353')" />
<!-- где пост имеет идентификатор -->
<td class="post-row2r color1r" id="post308353">Содержимое поста...


Уверен что тебе не нужно залезать глубоко в исходники форума, просто дай ссылки на свой quote.js и вёрстку с кнопками, подкорректирую.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
2man
Дата 16.8.2005, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2007
Регистрация: 6.5.2005
Где: Нижние Чигири

Репутация: нет
Всего: 71



Цитата(Sardar @ 14.8.2005, 14:14)
Где? Всё работает... подробней?

http://forum.vingrad.ru/index.php?showtopic=61173
Вот мой quote.js:
http://mega-forum.net.ru/html/quote.js
Что-то я немного запутался smile smile В каком файле верстка кнопок находится?


--------------------
Быстро поднятое - упавшим не считаеся
PM MAIL ICQ MSN   Вверх
Sardar
Дата 16.8.2005, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(2man @ 16.8.2005, 11:35)
http://forum.vingrad.ru/index.php?showtopic=61173

Во блин, я и не знал что такая ссылка существует smile

Затея хорошая, но лучше ссылочку ту убрать, т.к. есть более удобная "Быстрая цитата". А по той ссылке никак определить участника и время нельзя, можно разобрать Range, выделить пост, но это будет зависить от дизайна(при смене сразу лажа) и так глючно работать, что ты сам откажешся smile

Твой quote.js это не изменённый форумский скрипт, правильно должен работать. Ник и время, как уже сказал выше ты не получишь. В чём ещё проблема?


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
2man
Дата 16.8.2005, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2007
Регистрация: 6.5.2005
Где: Нижние Чигири

Репутация: нет
Всего: 71



Так что у меня никак не получится запихнуть быструю цитату? А если через добавление кнопки --Resize_Images_Alt_Text--?


--------------------
Быстро поднятое - упавшим не считаеся
PM MAIL ICQ MSN   Вверх
Sardar
Дата 16.8.2005, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



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


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
2man
Дата 16.8.2005, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2007
Регистрация: 6.5.2005
Где: Нижние Чигири

Репутация: нет
Всего: 71



Вроде немного понял
Код

function InsertQuote(nick, datetime, postid) { //k,r,s
    if(InsertQuote.selection.toString().length>0) { //если селекция была
      var pst=document.getElementById(postid), sl="";
      var uct = (typeof(pst.innerText)!="undefined")? pst.innerText: (typeof(pst.textContent)!="undefined")? pst.textContent: "";
      if(n6||window.opera) {//небольшой патчь для оперы
        uct=extractRus(uct);
        sl=extractRus(InsertQuote.selection.toString());
      } else sl=InsertQuote.selection.toString();
      //проверим являеться ли отселектированный текст чатью поста участника
      if(uct.indexOf(sl)<0) {alert("Вы нажали на кнопку цитаты другого участника");return;}
      //вставим пост, у тебя другая функция
      ubbc_addAfter(((post.target.length>0)? "\n": "")+"[quote"+(nick?("="+nick+", "+datetime):"")+"]\n"+(InsertQuote.selection.toString())+"\n[/quote]\n");
    }
}

//патчь
function extractRus(txt){
  var h=[], v=0;
  function fltr(l){ return ((l>=1072&&l<=1103)||(l>=1040&&l<=1071)); }
  for(var i=0, e; i<txt.length; i++) {
    if(fltr(txt.charCodeAt(i))){
      for(e=i+1; e<txt.length&&fltr(txt.charCodeAt(e)); ++e);
      h.push(txt.substring(i,e));
      i=e;
    }
  }
 return h.join('');
}

это я пихаю в quote.js, потом
Код

//функция помещает селекцию со страницы в переменную InsertQuote.selection
InsertQuote.prepare=function() {
  if(document.getSelection) {
    if(typeof(window.getSelection)!="undefined") InsertQuote.selection=window.getSelection();
    else InsertQuote.selection=document.getSelection();
  } else InsertQuote.selection=document.selection.createRange().text;
}

ставлю вместо
Код

function get_selection() {
   if (document.getSelection){
    selection = document.getSelection();
    selection = selection.replace(/\r\n\r\n/gi, "_doublecaret_");
    selection = selection.replace(/\r\n/gi, " ");
       while (selection.indexOf("  ") !=-1) selection = selection.replace(/  /gi, ""); 
    selection = selection.replace(/_doublecaret_/gi, "\r\n\r\n");
  } else
      selection = document.selection.createRange().text;
}

далее вставляю кнопку:
Код

<img src="images/posttop4-off.gif" alt="Быстрая цитата" title="Скопировать выделение в поле ввода" onmouseover="InsertQuote.prepare();" onclick="InsertQuote('Sardar', '1.12.2004, 18:53', 'post308353')" />
<!-- где пост имеет идентификатор -->
<td class="post-row2r color1r" id="post308353">Содержимое поста...

только вместо images/posttop-4off.gif наверное надо images/p_quick_quote.gif
Правильно?


--------------------
Быстро поднятое - упавшим не считаеся
PM MAIL ICQ MSN   Вверх
Sardar
Дата 16.8.2005, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(2man @ 16.8.2005, 12:34)
Вроде немного понял

Почти, тебе будет не хватать функции ubbc_addAfter, замени её на paste(текст, true) - правда работать будет только под ИЕ. Моя ubbc_addAfter основанна на этом коде:
http://forum.vingrad.ru/index.php?showtopic=35775

Цитата(2man @ 16.8.2005, 12:34)
только вместо images/posttop-4off.gif наверное надо images/p_quick_quote.gif

Ну какя картинка там будет, это не важно. Важно что это кнопка для одного участника, каждый участник имеет такую кнопку.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0618 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.