| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Быстрая цитата |
| Автор: 2man 3.8.2005, 17:41 | ||
Подскажите как сделать кнопку "быстрая цитата" на IPB 1.3. Я думаю, это где-то здесь меняется:
|
| Автор: Sardar 5.8.2005, 16:56 |
| Просто выбираем отселектированный текст через document.getSelection().toString() или document.selection.text для ИЕ. Полученный текст ставим куда угодно. |
| Автор: 2man 7.8.2005, 19:32 |
| А по-понятнее можно как-нибудь объяснить? |
| Автор: 2man 12.8.2005, 07:40 | ||||
Как я посмотрел делается у вас, я пытаюсь вставить $poster['name'] в скрипт, выглядит это дело так:
но эффекта ноль Добавлено @ 07:45 Выдает ошибку, а если меняю на:
то просто выдает обычную цитату |
| Автор: Sardar 12.8.2005, 16:39 |
| Insert, get_selection это функции этого форума, а не какие-то встроенные вещи. У нас get_selection() вызываеться по onmouseover и складывает в переменную selection отселектированный текст на странице. Затем если человек кликает на картинку, достаёться пост по id, достаёться его текст, сравниваеться с полученной селекцией. Если подстрока не найденна, то считаеться что участник кликнул на кнопку цитаты другого человека. Это всё переписанные функции. Что тебе нужно? Нежели сложно посмотреть http://forum.vingrad.ru/html/quote.js ? Впрочем написанно кривовато, в новом дизайне я переписал чуть по другому |
| Автор: 2man 13.8.2005, 17:18 | ||||||
Ты не совсем меня понял. Дело не в quote.js , а в /skin/*/skin_topic.php, скрипт идет именно оттуда. Я просто хочу заменить скрипт, тот что у вас, к примеру, на смайликами:
на скрипт, который идет из кнопки быстрая цитата. Чтобы цитируемый текст выглядел не как:
а как:
оффтоп: у вас этот самый javascript под смайликами и не работает |
| Автор: 2man 14.8.2005, 14:41 | ||||
А если после
Отправить его на quote.js?
|
| Автор: sergejzr 14.8.2005, 14:50 |
| 2man, тебе стоит наверное почитать про яваскрипт прежде чем генерировать решения |
| Автор: Sardar 14.8.2005, 15:14 | ||||||||||||
Всё что нужно это сгенерить {quote=автор, дата, время}цитата{/quote}
Это явно не JS Как сделанно здесь? Вставка цитаты делиться на две фазы: выборка селекции и собственно вставка. Выборка при наведении мышкой на кнопку, т.к. при клике селекция пропадёт. Выборка селекции:
Теперь нужно запретить цитирование от лица чужого участника, если ты вдруг нажал на чужую кнопку цитаты Функции вставки передаёться ник пользоватля, время и дата, и id поста. Выборка поста по id удобней чем доступ методами DOM, к тому же не боишся смены дизайна.
Это оригинальные скрипты форума, чуть модифицированные мной. Затем генериться кнопка:
Уверен что тебе не нужно залезать глубоко в исходники форума, просто дай ссылки на свой quote.js и вёрстку с кнопками, подкорректирую. |
| Автор: 2man 16.8.2005, 12:35 | ||
http://forum.vingrad.ru/index.php?showtopic=61173 Вот мой quote.js: http://mega-forum.net.ru/html/quote.js Что-то я немного запутался |
| Автор: Sardar 16.8.2005, 12:57 | ||
Во блин, я и не знал что такая ссылка существует Затея хорошая, но лучше ссылочку ту убрать, т.к. есть более удобная "Быстрая цитата". А по той ссылке никак определить участника и время нельзя, можно разобрать Range, выделить пост, но это будет зависить от дизайна(при смене сразу лажа) и так глючно работать, что ты сам откажешся Твой quote.js это не изменённый форумский скрипт, правильно должен работать. Ник и время, как уже сказал выше ты не получишь. В чём ещё проблема? |
| Автор: 2man 16.8.2005, 13:04 |
| Так что у меня никак не получится запихнуть быструю цитату? А если через добавление кнопки http://forum.vingrad.ru/style_images/1/p_quick_quote.gif? |
| Автор: Sardar 16.8.2005, 13:29 |
| Вся необходимая инфа для быстрой цитаты генериться на сервере, я же показал парой постов выше. Нужен ник участника, время и идентификатор поста. |
| Автор: 2man 16.8.2005, 13:34 | ||||||||
Вроде немного понял
это я пихаю в quote.js, потом
ставлю вместо
далее вставляю кнопку:
только вместо images/posttop-4off.gif наверное надо images/p_quick_quote.gif Правильно? |
| Автор: Sardar 16.8.2005, 14:27 | ||||
Почти, тебе будет не хватать функции ubbc_addAfter, замени её на paste(текст, true) - правда работать будет только под ИЕ. Моя ubbc_addAfter основанна на этом коде: http://forum.vingrad.ru/index.php?showtopic=35775
Ну какя картинка там будет, это не важно. Важно что это кнопка для одного участника, каждый участник имеет такую кнопку. |
| Автор: 2man 16.8.2005, 15:08 |
| А ты не мог бы сам добавить в мой quote.js то что надо и выложить сюда, а то я дамер в этих делах, еще чего накручу http://mega-forum.net.ru/html/quote.js |
| Автор: Sardar 16.8.2005, 16:26 |
| Нет, нужно изменять не JS, а код форума. Наведи мышкой на кнопку быстрой цитаты, в строке статуса видишь вызов. Это нужно от сервера, а код для клиента я дал в первых постах. |
| Автор: 2man 17.8.2005, 03:30 |
| Чего-то не получилось. Ошибку на странице выдает |
| Автор: Sardar 17.8.2005, 15:15 | ||
Что ты конкрентно сделал, выкладывай код, я не телепат |
| Автор: 2man 20.8.2005, 10:56 | ||||||
Так вот, какой у меня получился quote.js:
далее, чтобы не добавлять отдельную кнопку, я решил поменять значение кнопки "цитата"
это был старый код, а вот теперь новый:
В итоге кнопка "цитата" вообще пропала. Что делать? |
| Автор: Sardar 20.8.2005, 17:34 | ||||
| 2man я понял, ты совсем не разбираешся в JS, такую нелепость нагородить... Переношу топик в раздел для начинающих, т.к. никакой пользы он не понесёт. А теперь будем думать головой! Нам нужно вставить цитату от каждого участника в форму ответа. При этом дефолтовое поведение с переходом на форму расширенного ответа не нужно. Вставляемая цитата должна содержать имя участника, дату и отселектированный текст. Что имеем? На клиенте только селекцию, всё остальное доставать достаточно геморно и привязанно к дизайну, поэтому проще вставить инфу на сервере. Медитируем - я серьёзно, до полного просветления Как только снова обрёл способность думать + посмотрел мой код на предидущей странице - здадача становиться делом 2 минут. Убираем твой код с Insert, который ты бездумно копируешь и пытаешся над ним шаманить, вместо того что бы просто его в слух прочесть(английский ты то должен понимать Проблема: в моём коде используеться другая функця для вставки текста. НО! у тебя есть оригинальная paste. Обе функции делают одно и тоже, на этой ноте напрягай мозги до просветления
Не пытайся скопировать код на прямую, там ошибка И так у нас есть две функции, одна снимает селекцию, вторая вставляет её. Первую как я уже говорил лучше вызывать по наведению мышки на кнопку, тогда селекция не будет пропадать при клике. Очень мощно медитируем в это точке! Займёмся твоей кнопкой:
Не тупо копируем код, т.к. он не будет работать с пол оборота, а думаем! Очевидно нам не хватает двух деталей: переменной $author_name - ник автора и $post['quick_quote_icon'] - кнопка быстрой цитаты. Я разжевал так, что дальше вопросов быть не должно. Если не сумеешь сам, извини, но нужно править руки... |
| Автор: 2man 22.8.2005, 02:33 | ||||
| Наверное надо руки мне править, потому что не получилось. Вот мой JS:
А вот я пробую вставить кнопку:
И не получается. Ну что теперь не то? Добавлено @ 02:39 И медитировал вроде нормально |
| Автор: 2man 22.8.2005, 04:53 | ||||
Для того, чтобы была кнопка надо еще функцию прописывать. Ладно, опустим. Пусть у меня цитата вызывается через
Я меняю этот код на:
И... ошибка на странице. Значит, дело в JS. Смотрю JS. paste я поменял, insert убрал. медитирую... Тщательно медитирую... Ничего не происходит |
| Автор: Sardar 22.8.2005, 13:46 |
| Ошибка при наводе мышкой на кнопку? Или при нажатии? Какая ошибка(скопируй что пишет браузер). Дай ссылку на уже отрисованную страницу. На будущее, не заставляй меня это спрашивать, если есть ошибка то ты должен выложить лог браузера и привести отрывок сбойного кода |
| Автор: 2man 22.8.2005, 16:02 |
| Сейчас проделал тоже самое, что и раньше на локалхосте. Кнопка появляется, но никакой функции не несет, т.е. принажатии на нее ничего не происходит Я приаттачик скриншот моей кнопки, а при наводе мышкой на ник участника слева от кнопки js выглядит как: javascript:InsertQuote('<a href= Нашел вроде ошибку. заменил $author['name'] на $author_name чтобы посмотреть как цитата будет работать без ника и все стало нормально. при наводе мыши на кнопку быстрой цитаты js: javascript:InsertQuote('','11.08.2005 - 07:33', '6'); Стало ясно, что ошибка как раз в $author['name']. Но вот еще проблема после того, как я нажал на кнопку быстрой цитаты ничего не произошло и ошибку на странице не выдало Добавлено @ 16:09 Пример можешь посмотреть по этой ссылке: http://www.mega-forum.net.ru/index.php?showtopic=194 |
| Автор: 2man 22.8.2005, 16:28 |
| Видишь, если я просто навожу мышь на кнопку цитаты, у меня повляется: javascript:InsertQuote('','11.08.2005 - 07:33', '6'); А у вас так: javascript:Insert(selection, '2man','11.08.2005 - 07:33', '6'); |
| Автор: Sardar 22.8.2005, 17:34 | ||||||||
Я не могу, если ещё раз запостишь без обращения к мозгу, отправлю тему в юмор Когда ты предложил заменять ссылки на названия постов, я думал ты разбираешся в PHP и JS, следовательно можешь отличить текст от разметки и найти ошибку. Жаль я ошибался. Повторяю, это форум программистов! Если ты просто человек, не знающий ни языка и не понимаешь что есть: строки в JS, вызов функций и ошибки синтаксиса, то я не могу тебе помочь Если до сих пор не дошло о написанном выше(напряги мозги на словах "разметка", "строки", "ошибки синтаксиса"), то подумай с какого перепугу первым параметром функции InsertQuote должна быть лабуда типа '<a href=...' ?
Согласись что ты бездумно(на авось Думаем в этой точке, сильно думаем! Если думаешь в верном направлении, то окажеться, что $author['name'] возвращает вёрстку! Ещё раз очень хорошо думаем! Вероятно нам нужен ник автора без вёрстки! Ещё раз очень-очень хорошо думаем!!! Вероятно он лежит под другим ключём в массиве $author!!! Остальное предлагаю додумать самому. Если не знаешь как распечатаьт массив, не позорься в PHP, прочти мануал, это тебе поможет в будущем |
| Автор: 2man 23.8.2005, 08:27 | ||||
Я просто запостил ход своих действий. Я понимаю, что js вида javascript:InsertQuote('<a href= полный бред. Не до такой степени уж я ламер
Не совсем так. Я поставил $post['name'] и у меня все работает. При наводе мыши на кнопку все определяет замечательно: и ник стоит, и дата, и номер поста. Теперь по щелчку на кнопке у меня должна вставляться цитата. Щелкаю - ничего не происходит. Значит, теперь дело в js Добавлено @ 08:29 Код js я выложил чуть выше |
| Автор: Sardar 23.8.2005, 18:40 | ||
Нет в руках, я серьзьёзно Подсказка, глянь на свой quote.js, чего там не хватает? P.S. в следующий раз напечатай пост, но перед тем как отправить, прочти и подумай |
| Автор: 2man 23.8.2005, 20:11 | ||||||
Разве? А как же это:
Браузер никакую ошибку не выдает, я просто щелкаю по кнопке, а цитата не вставляется/
Понятное дело. А где ж еще |
| Автор: Sardar 23.8.2005, 21:06 | ||
Это то что ты отсюда взял, а теперь глянь на: http://www.mega-forum.net.ru/html/quote.js На будущее: прежде чем сказать - проверь |
| Автор: 2man 24.8.2005, 09:18 | ||
Я проверял, вот мой http://www.mega-forum.net.ru/html/quote.js :
Не знаю почему он тебе другое выдал, может из-за кеширования |
| Автор: Sardar 24.8.2005, 13:59 | ||
Нет, я несколько раз жал ctrl+F5, может ты только что код туда поставил, ведь теперь нет ошибки на странице А теперь догадайся почему цитата всё таки не работает. Смотри не на код, он в порядке, смотри на свою страницу |
| Автор: 2man 24.8.2005, 15:44 | ||
Хм.. а теперь у меня выдает ошибку на странице
В коде php сто баллов все в порядке. Так что может еще быть?? |
| Автор: 2man 25.8.2005, 15:56 |
| Вопрос решен по аське. Огромный респект Sardar ! |