форум vBSupport.ru > vBSupport.ru > Гурушник > kerk
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
kerk
k0t
 
kerk's Avatar
Default Предпросмотр текста сообщения, Message Quick Preview AJAX
14

делает все то же самое, что и хак из этой темы
за тем исключением, что предпросмотр текста можно увидеть только кликнув по соотв. кнопке* под словом "Сообщение", а не при наборе текста
клик по этому слову работает так же, скрывает кнопку предпросмотра и не показывает ее пока не нажать снова
сделал такой вариант как альтернативу (он же и установлен в данный момент на саппорте)
используется только свой обработчик на яваскрипт, xbbcode.js удален из дистрибутива за ненадобностью
* отправляется запрос из яваскрипта в свой пхп скрипт, который парсит ббкоды и отправляет обратно в браузер уже отформатированный текст
запросы в БД так же НЕ осуществляются, работает только парсер ббкодов, но уже на пхп
в этом варианте парсятся все ббкоды, которые есть на форуме, в том числе и смайлы
инструкция по установке в архиве

Скачать: Message Quick Preview AJAX (4.4 Кб)
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
True
Администратор
 
True's Avatar
Default
1

А если сделать листенер по тайм-ауту, т.е. чтобы срабатывал запрос в аякс после, скажем трёхсекундной паузы в наборе текста?
 
 
kerk
k0t
 
kerk's Avatar
Default
0

и когда останавливать таймер?
можно предположить, что после отправки поста
но если узер набил несколько строк текста и умотал по делам на пол дня, а вкладку с этим редактором оставил открытой?
я изначально рассматривал возможные варианты
ничего не придумалось кроме тех двух, что уже выложил, это:
парсинг ббкодов при наборе текста, но без использования PHP + Ajax - только голый яваскрипт
парсинг ббкодов по клику на кнопке предпросмотра, с использованием PHP + Ajax - но без парсера ббкодов на яваскрипте (он здесь ну никак не нужен вобщем то )
если есть идеи/варианты - делайте =)
скрипты публичные и бесплатные
будет рабочий вариант, поделитесь в соотв. разделе
 
 
Core dumped
Продвинутый
 
Core dumped's Avatar
Default
1

Quote:
Originally Posted by kerk View Post
но если узер набил несколько строк текста и умотал по делам на пол дня, а вкладку с этим редактором оставил открытой?
То предпросмотр выполнится один раз, примерно через 3 секунды после окончания ввода?
Там же по-идее событие просто будет ставить флаг, который таймер будет периодически просматривать и на его основании принимать решение. Получил предпросмотр, выставил флаг в false и уснул, до тех пор пока пользовательский ввод (Какой-нибудь keyUp там или типа того) не выставит его обратно.
Ну или вообще на каждое нажатие создавать свой таймер с перезаписью в последующих. Не было нажатия за три секунды - таймер выполнился, были - он перезаписался и выполнится лишь через 3 секунды с момента последнего нажатия.
 
 
kerk
k0t
 
kerk's Avatar
Default
0

setTimeout()
или
setInterval()
?
 
 
Core dumped
Продвинутый
 
Core dumped's Avatar
Default
0

В первом случае интервал, во втором timeout.
В псевдокоде в первом случае:
Code:
var changedFlag = false;
setInterval(function() {
 if(changedFlag) constructPreview();
}, 3000);
document.addEventListener('keyup', function() { changedFlag = true; });
Во втором
Code:
var timeout;
document.addEventListener('keyup', function() {
if(timeout) clearTimeout(timeout);
timeout = setTimeout(constructPreview, 3000);
});
Вроде примерно так выходит.

Core dumped добавил 15.07.2015 в 00:40
Ой ей-ей, в первом конечно же после constructPreview changedFlag = false надо ставить. Вот как раз пример того, как не хватает правки своих постов.

Last edited by Core dumped : 07-15-2015 at 01:40 AM. Reason: Добавлено сообщение
 
 
kerk
k0t
 
kerk's Avatar
Default
0

Quote:
Originally Posted by Core dumped View Post
Code:
document.addEventListener('keyup', function() { changedFlag = true; });
addEventListener - не по феншую
тем более на документе
у библиотеки YUI есть свое
Code:
YAHOO.util.Event.on('elementID', "event", myfunction, this, true);
или так (если нужно отследить событие)
Code:
// обработчик отправки поста по хоткею Ctrl+Enter
function myfunction(e)
{
    e = e || YAHOO.util.Event.getEvent(e);
    if(e.ctrlKey && ((e.keyCode == 10) || (e.keyCode == 13)))
    {
        var targ = YAHOO.util.Event.getTarget(e);
        qr_prepare_submit(targ.form, 0);
        if(!allow_ajax_qr)
        {
            targ.form.submit();
        }
        return false;
    }
}
// обработчик отлова нажания клавиш
YAHOO.util.Event.on('vB_Editor_QR_textarea', "keypress", function(e)
{
    myfunction(e);
}, this, true);
 
 
True
Администратор
 
True's Avatar
Default
0

Quote:
Originally Posted by kerk View Post
и когда останавливать таймер?
срабатывает 1 раз спустя 3 секунды, потом запускается только после нового нажатия на клавишу.
 
 
kerk
k0t
 
kerk's Avatar
Default
0

т.е. пока человек печатает, таймер постоянно перезаписывается и предпросмотр не выполняется?
 
 
Core dumped
Продвинутый
 
Core dumped's Avatar
Default
0

Quote:
Originally Posted by kerk View Post
addEventListener - не по феншую
Ок, в следующий раз буду писать bindEvent, чтобы более явно указывать на псевдокод. К сожалению не могу поправить свое сообщение, так что останется там eventListener.
Про библиотеки в данном случае особо речи нет, это просто иллюстрация слов, не более. Порой пара строк псевдокода позволит лучше раскрыть идею, чем пара-тройка абзацев.

Quote:
Originally Posted by kerk View Post
т.е. пока человек печатает, таймер постоянно перезаписывается и предпросмотр не выполняется?
Ну да, если пойти по второму сценарию. Там это, в общем-то наглядно показано, остается имплементировать логику constructPreview. В первом случае таймер будет всего один, но будет сложнее откладывать выполнение на три секунды после последнего нажатия. То бишь в первом варианте проверка необходимости предпросмотра будет каждые 3 секунды.
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 12:55 PM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.