Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Пикап Форум - Всемирный форум пикаперов _ Обсуждение сайта и форума _ ВНИМАНИЕ! Новые функции на форуме

Автор: Директор Пляжа 24.10.2010, 18:06

Итак, покопался в скриптах.

В тестовом режиме добавил следующие возможности:

1. Обратите внимание в постах, рядом с вашими никами и аватарами теперь две новых ссылки: "Вставить ник" и "Цитата". При клике на п. "Вставить ник" внизу автоматически открывается окно быстрого ответа, куда вставляется никнейм пользователя, выделенный жирным. Также, если вы выделите какую то часть сообщения пользователя и нажмете на ссылку "Цитата", то сообщение будет процитировано внизу в форме быстрого ответа.

Что это все означает? Офигенную экономию времени, лишних движений и снижение нагрузки на форум. Фактически вам не нужно кликать на ссылку "Ответить", а приступить к постингу сразу, не покидая страницу. К тому же решена пресловутая проблема с мультицитированием.

2. Обратите внимание, над списком пользователей появился пункт - "Обновить список", при клике на которой произойдет обновление списка пользователей онлайн, без перезагрузки страницы. Реализовано с помощью технологии AJAX. Можно было, конечно, сделать так, чтобы список обновлялся динамически, без клика по пункту "Обновить...", но это создало бы нагрузку на сервер.

3. По умолчанию в личных сообщениях теперь доступна полноценная форма ответа. Теперь чатится в ЛС будет проще и опять же, не надо лишний раз грузить страницу, чтобы написать ответ. Проверьте свои ящики, обнаружите нововведение.

4. Немногим известно, что существует облегченная, текстовая версия форума по адресу - http://www.pickupforum.com/lofiversion/ . Как видите, это версия без баннеров, графики и прочих перегруженных элементов. Например таким образом удобно смотреть форум с телефона. Но была одна проблема - смотреть форум можно, а отвечать в темах нельзя. Так вот, теперь такая возомжность появилась. Теперь вы можете постить на форум со своих мобильников, не растрачивая трафик.

5. Теперь можно постить видео. Ура:)

Видео интерпретируется автоматически. Т.е. вы просто пишите в сообщении ссылку на видео и движок форума автоматом будет рисовать окошко.

Поддерживаются следующие сервисы:

rutube.ru
video.mail.ru
smotri.com
ukrtube.com.ua
video.bigmir.net
video.online.ua
www.u-tube.ru
kiwi.kz
youtube.com
vimeo.com

Но вот в некоторых случаях может потребоваться заключение ссылки на видео в теги media
youtube.com
video.yandex.ru

Обращаю внимание, что введение новых функций частенько означает введение новых багов и глюков. Так что если у вас что-то заработает не так, появятся непонятные куски кода или произойдет что то еще, отписывайтесь.

Автор: Гней Помпей 24.10.2010, 18:13

у меня не работают ни "вставить ник", ни "цитата".
Возможно, потому, что функции прописывается как "http://www.pickupforum.com/java script:ins()"
убери пробелы в слове "javascript"

Автор: Аpple 24.10.2010, 18:19

Предлагаю сделать определение для nestedQuotes.
Рекурсивный обход дерева до автора со сбором мета-информации.

Автор: Гней Помпей 24.10.2010, 18:37

вооо, теперь намано

Автор: Директор Пляжа 24.10.2010, 19:28

В Хроме вставка ника и цитаты не работает.

Автор: Водар Паветра 24.10.2010, 20:47

Цитата
В Хроме вставка ника и цитаты не работает.

пилять! я только им и пользуюсь... кстати, в этот раз сработало!

Автор: Водар Паветра 24.10.2010, 20:49

вставка цитат работает и в Хроме, однако они вставляются в окно быстрого ответа без тэгов [ quote][ /quote]...

Автор: Директор Пляжа 24.10.2010, 21:31

Теперь можно постить видео. Ура:)

Видео интерпретируется автоматически. Т.е. вы просто пишите в сообщении ссылку на видео и движок форума автоматом будет рисовать окошко.

Поддерживаются следующие сервисы:

rutube.ru
video.mail.ru
smotri.com
ukrtube.com.ua
video.bigmir.net
video.online.ua
www.u-tube.ru
kiwi.kz
youtube.com
vimeo.com

Но вот в некоторых случаях может потребоваться заключение ссылки на видео в теги media
youtube.com
video.yandex.ru

Ну и пример:


Автор: Директор Пляжа 24.10.2010, 21:41

Цитата(Водар Паветра @ 24.10.2010, 21:49) *
вставка цитат работает и в Хроме, однако они вставляются в окно быстрого ответа без тэгов [ quote][ /quote]...
Shit happens.
К сожалению не могу пока найти способа срабатывания этой фигни во всех браузерах... там либо только для Хрома, либо Firefox, IE начиная с 7 версии, Opera... но не Хром.
Кусок Javascript кода, который отвечает за вставку могу выложить, если кто знает, как его универсальным сделать, будет гуд.

Автор: 4YBAK 24.10.2010, 23:29

класс! с цитированием гораздо легче жить!

Автор: Аpple 25.10.2010, 9:11

Цитата(Директор Пляжа) *
Кусок Javascript кода, который отвечает за вставку могу выложить, если кто знает, как его универсальным сделать, будет гуд.

Выкладывай, посмотрим.

Автор: OLYssA 25.10.2010, 9:36

че ты вы нахимичили, форум тупит, когда переходишь с раздела в раздел

Автор: Директор Пляжа 25.10.2010, 9:43

Забыл упомянуть, замечания Олиссы рассматриваться не будут. Она неправильно обозначает проблемы и замечания:)

Автор: OLYssA 25.10.2010, 16:15

Ну и не рассматривай)

Автор: Директор Пляжа 25.10.2010, 16:39

Цитата(OLYssA @ 25.10.2010, 17:15) *
Ну и не рассматривай)
Оля, я посмотрю конечно... но ты скажи конкретно, что не так? При каких действиях? И.т.д.



Автор: OLYssA 25.10.2010, 16:41

когда находясь в одном разделе нажимаешь на верхнюю ссылку главной страницы (не картинку, а именно название) форум подвисает. А если на картинку - то норм.

Автор: Директор Пляжа 25.10.2010, 16:49

Цитата(OLYssA @ 25.10.2010, 17:41) *
когда находясь в одном разделе нажимаешь на верхнюю ссылку главной страницы (не картинку, а именно название) форум подвисает. А если на картинку - то норм.
Он не подвисает. Это обрабатываются скрипты. По ощущениями, стало немного медленее грузится, да... и это закономерно, ведь добавился новый код с введением новых функций.
Но мы тут с Яриком сегодня вечерком будем разбираться. Видишь ли, проблема может быть и на стороне хостера также... проблемы с кэшированием и.т.д.

Пока что кликай на картинку... хотя такое поведение немного странно:)

Автор: Директор Пляжа 25.10.2010, 20:36

Короче... добавил вроде отправку быстрого сообщения через AJAX без перезагрузки страницы... но... не работает так, как надо :)

Автор: Директор Пляжа 25.10.2010, 22:36

Так и не удалось добиться нормальной работы модуля AJAX, посему функция отключил. Не выходит тут пока мини-Вконтактик.

Кстати в профиле скоро можно будет указывать ссылку на страницу вконтакте:) Coming soon!


Автор: Директор Пляжа 25.10.2010, 23:04

Цитата(Аpple @ 25.10.2010, 10:11) *
Цитата(Директор Пляжа) *
Кусок Javascript кода, который отвечает за вставку могу выложить, если кто знает, как его универсальным сделать, будет гуд.

Выкладывай, посмотрим.


Вот код:

Код
if ( $poster['id'] )
                {
                        $poster['_members_display_name'] = "<a href='{$this->base_url}showuser={$poster['id']}'>{$poster['members_display_name_short']}</a>";
                        $poster['ins_nick'] = "<a href=\"java script:ins('".str_replace(array(" ", "'"), array("& nbsp;", "\'"), $poster['members_display_name'] )."')\">Вставить ник</a>";
                }
                $qqn = str_replace( array(" ", "'"), array("&nbsp;", "\& #39;"), $poster['members_display_name'] );
                $poster['ins_q'] = "<a onmouseover=\"copyQ('{$qqn}','{$row['q_date']}', '{$row['pid']}');\" href=\"java script:pasteQ();\">Цитата</a>";


Теоретически если его дописать под определение браузера, чтобы он подгружал работающую функцию при определении USER-Agent пользователя, то можно решить проблему)

Автор: Аpple 26.10.2010, 13:04

Цитата(Директор Пляжа) *
Вот код

Это ж стандартное формирование вывода на РНР, вызова функций, которые занимаются непосредственно вставкой (определение copyQ() и ins() ) тут нет =)

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

Цитата(Директор Пляжа) *
чтобы он подгружал работающую функцию при определении USER-Agent пользователя

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

Автор: Аpple 26.10.2010, 15:06

Покопал.
Не зря говорят "It's easy to optimize correct code, than correct optimized one".
Ждем-с код, в котором определены все функции, отвечающие за цитирование и вставку.

Автор: Директор Пляжа 26.10.2010, 18:34

Цитата(Аpple @ 26.10.2010, 14:04) *
Цитата(Директор Пляжа) *
Вот код

Это ж стандартное формирование вывода на РНР, вызова функций, которые занимаются непосредственно вставкой (определение copyQ() и ins() ) тут нет =)

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

Цитата(Директор Пляжа) *
чтобы он подгружал работающую функцию при определении USER-Agent пользователя

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

if Chrome
{
код
}

А вот и используемый код:

Код
function ins(name)
{
    my_show_div(my_getbyid('qr_open'));
    if (document.REPLIER.Post)
    {
        var input=document.REPLIER.Post;
        input.value=input.value+"[b]"+name+"[/b]"+" \n"
    }
}

function copyQ(qinf,date,pid)
{
    txt='';
    if (document.getSelection)
    {
        txt=document.getSelection();
    }
    else if (document.selection)
    {
        txt=document.selection.createRange().text;
    }
    if (txt.replace(" ","") != "")
    {
        txt='[quote name=\''+qinf+'\' date=\''+date+'\' post='+pid+']\n'+txt+'\n[/quote]\n';
    }
}

function pasteQ()
{
    my_show_div(my_getbyid('qr_open'));
    if (document.REPLIER.Post)
        document.REPLIER.Post.value += txt;
}




Автор: Аpple 26.10.2010, 19:10

Значит так-с, говорю по коду, который выложен выше, БЕЗ проверок.
Т.е чисто по памяти и по знаниям (если вдруг ошибся - значит херово).

Мне конечно не дано понять суть разделения одного функционала на две разные функции, ну да ладно.
В Хроме не срабатывает последний кусок кода.
Я ПОЛАГАЮ из-за того, что не происходит неявного преобразования типа к строковому объекту.
getSelection возвращает, насколько я помню, не ТЕКСТ, а объект, в котором содержится информация об элементе, тип и др., включая метод toString.
Попробую набросать свой вариант быстренько (опечатки могут быть, т.к пишу прям на форуме):

Код
window.quoteSelection;

function ins(name) {
var fastReply = document.getElementById("fast-reply_textarea");

if(typeof(fastReply) != "undefined") {
  fastReply.value += '\r\n[b]' + name + '[/b]\r\n';
}
}

function copyQ(qinf, date, pid) {
if(document.getSelection()) {
  window.quoteSelection = document.getSelection().toString();
} else window.quoteSelection = document.selection.createRange().text;

window.quoteSelection = '\r\n[quote name="'+qinf+'" post="'+pid+'" date="'+date+'"]' + window.quoteSelection + '[/quote]\r\n';
}


function pasteQ() {
var fastReply = document.getElementById("fast-reply_textarea");

if(typeof(fastReply) != "undefined") {
  fastReply.value += window.quoteSelection;
}
}

Хотя лично я не вижу смысла в разделении copyQ и pasteQ.
И плавающее окошко, ИМХО, удобней =))

Автор: Аpple 26.10.2010, 19:28

*ушел на вечерний пикап*
Ыыы =))

Автор: Директор Пляжа 26.10.2010, 19:38

Ладно, попробую потестить:)

Автор: Директор Пляжа 26.10.2010, 19:41

Плавающее окошко, кстати, поставлю :)

Автор: Директор Пляжа 26.10.2010, 19:48

В Хроме заработало :) В остальных перестало :)

Но не без глюков и в Хроме. Например если цитировать текст, то он

Код
[quote=...][/quote]
не инсертит.


Автор: Директор Пляжа 26.10.2010, 20:00

окошко поставил :)

Автор: Директор Пляжа 26.10.2010, 20:08

...которое не работает в Огнелисе и Хроме

Код:

Цитата
function qr_float( status )
{
if ( status == 1 )
{
document.getElementById('fast-reply-controls').className='rte-buttonbar-float';
document.getElementById('qr_options').style.display='none';
document.getElementById('qr_flink').innerHTML='<a href="java script:qr_float(0);">нормальное окно ответа</a>';
}
else
{
document.getElementById('fast-reply-controls').className='rte-buttonbar';
document.getElementById('qr_options').style.display='';
document.getElementById('qr_flink').innerHTML='<a href="java script:qr_float(1);">«плавающее» окно ответа</a>';
document.REPLIER.Post.focus();
}
}

Автор: Директор Пляжа 26.10.2010, 20:20

форма заработала в Файфокс, thanks to Гней Попмей :)

Автор: Аpple 26.10.2010, 23:32

Попробовал переписать код.
Да, Сафари меня жестоко поимел, но в хроме, увы, багов не было.
Код:

Код
function insertQuote() {
    var quoteArea = document.getElementById("fast-reply_textarea");
    var quoteSelected;
    
    if(document.getSelection) {
        quoteSelected = document.getSelection().toString();
    } else if(document.selection && document.selection.createRange) {
        quoteSelected = document.selection.createRange().text;
    } else {
        quoteSelected = window.getSelection().toString();
    }

    quoteArea.value += '[quote]' + quoteSelected + '[/quote]\r\n';
}

Проверен:
1. IE 6+
2. Safari 3+
3. Firefox
4. Chrome
5. Opera

Никаких ошибок, включая правильную вставку тегов цитаты.
Если не будет работать - ей богу не знаю, уволить тогда меня надо =)

Автор: Директор Пляжа 27.10.2010, 20:31

Отлично! Немного усовершенствуем, и переименуем функцию, чтобы в шаблонах имя не менять:

Код
function ins(name)
{
    my_show_div(my_getbyid('qr_open'));
    if (document.REPLIER.Post)
    {
        var input=document.REPLIER.Post;
        input.value=input.value+"[b]"+name+"[/b]"+" \n"
    }
}

function copyQ(qinf,date,pid) {
    var quoteArea = document.getElementById("fast-reply_textarea");
    var quoteSelected;
    
    if(document.getSelection) {
        quoteSelected = document.getSelection().toString();
    } else if(document.selection && document.selection.createRange) {
        quoteSelected = document.selection.createRange().text;
    } else {
        quoteSelected = window.getSelection().toString();
    }

    quoteArea.value += '[quote name=\''+qinf+'\' date=\''+date+'\' post='+pid+']' + quoteSelected + '[/quote]\r\n';
}

function pasteQ()
{
    my_show_div(my_getbyid('qr_open'));
    if (document.REPLIER.Post)
        document.REPLIER.Post.value += txt;
}

Автор: Директор Пляжа 27.10.2010, 20:40

...ну и заменим код немного:

Код
if ( $poster['id'] )
                {
                        $poster['_members_display_name'] = "<a href='{$this->base_url}showuser={$poster['id']}'>{$poster['members_display_name_short']}</a>";
                        $poster['ins_nick'] = "<a href=\"java script:ins('".str_replace(array(" ", "'"), array("&nbsp;", "\'"), $poster['members_display_name'] )."')\">Вставить ник</a>";
                }
                $qqn = str_replace( array(" ", "& #39;"), array("&nbsp;", "\'"), $poster['members_display_name'] );
                $poster['ins_q'] = "<a onClick=\"copyQ('{$qqn}','{$row['q_date']}', '{$row['pid']}');\" href=\"java script:pasteQ();\">Цитата</a>";


вместо onmouseover, вставим onClick, так как Хром при наведении начинает автоматом вставлять текст в окно ввода:)

Apple, огромное спасибо!!!

Автор: Директор Пляжа 27.10.2010, 20:48

Итак, подытожим.

Благодаря кодерскому гуру Apple (фанфары и благодарности) стала во всех популярных браузерах работать функция Вставки ника и Быстрой Цитаты. Фактически, не нужно теперь жать Ответить, а сразу приступать к постингу... тем более, что в "Быстром ответе" теперь доступно плавающее окошко... которое, правда, в Хроме работать отказывается.

Пару фишек еще обязательно добавлю и обновлю первый пост.


Автор: Аpple 27.10.2010, 21:25

Цитата(Директор Пляжа) *
Apple, огромное спасибо!!!

Пожалуйста =)

Цитата(Директор Пляжа) *
которое, правда, в Хроме работать отказывается.

Надо будет глянуть обязательно.

Автор: Директор Пляжа 27.10.2010, 22:43

Код
<script type="text/javascript">
<!--
        document.onkeydown=function(e){
        if (e) event=e
        if ((event.keyCode==13)&&(event.ctrlKey)){
                try{
                        if (e){
                                                document.REPLIER.submit.click();
                        }
                }catch(e){};
        }}
-->
</script>

Добавил отправку сообщений по CTRL+Enter при быстром ответе

Автор: Директор Пляжа 27.10.2010, 23:18

Цитата(Аpple @ 27.10.2010, 22:25) *
Надо будет глянуть обязательно.
Уже работает. Там из за одного пункта не работало ни в Огнелисе, ни в Хроме.

Автор: Tirgis 7.11.2010, 18:05

Цитата(Директор Пляжа @ 24.10.2010, 18:06) *
4. Немногим известно, что существует облегченная, текстовая версия форума по адресу - http://www.pickupforum.com/lofiversion/ . Как видите, это версия без баннеров, графики и прочих перегруженных элементов. Например таким образом удобно смотреть форум с телефона. Но была одна проблема - смотреть форум можно, а отвечать в темах нельзя. Так вот, теперь такая возомжность появилась. Теперь вы можете постить на форум со своих мобильников, не растрачивая трафик.


УРА! Но с моего мобильника не работает. Samsung S5620.

Автор: stuffin muffin 1.4.2011, 20:34

я вас прошу - добавьте ироничный смайлик. его пипец как не хватает на этом форуме ab.gif

Автор: RK 14.6.2011, 19:16

По посту графики: добавьте плз автоподбор размера окна. А то некоторые посты сильно расширяются ввысь и вширь.

Автор: Sap R3 18.5.2014, 9:07

А ещё сделайте плиз, чтобы любое редактирование и исправление текста в теме отмечалось ещё в списке тем, т.е. если я изменил своё сообщение в теме, то это отмечается ещё перед открытием темы, например посл. изменение: время часы/минуты, день/месяц/год.

Автор: Olyssiya 19.5.2014, 6:14

Цитата(Sap R3 @ 18.5.2014, 12:07) *
А ещё сделайте плиз, чтобы любое редактирование и исправление текста в теме отмечалось ещё в списке тем, т.е. если я изменил своё сообщение в теме, то это отмечается ещё перед открытием темы, например посл. изменение: время часы/минуты, день/месяц/год.


Автор, на черта?
У тебя на форуме 6 сообщений

Автор: Makedonskiy 21.5.2014, 20:42

Цитата(Olyssiya @ 19.5.2014, 7:14) *
Цитата(Sap R3 @ 18.5.2014, 12:07) *
А ещё сделайте плиз, чтобы любое редактирование и исправление текста в теме отмечалось ещё в списке тем, т.е. если я изменил своё сообщение в теме, то это отмечается ещё перед открытием темы, например посл. изменение: время часы/минуты, день/месяц/год.


Автор, на черта?
У тебя на форуме 6 сообщений


Иначе он уйдет от нас, и нам будет грустно!!! ac.gif

Автор: KLOD 15.11.2014, 3:56

Товарищи админы. Сделайте вверху еще одну кнпочку "сообщения за день"

Если например зайти с планшета и кликнуть "Новые сообщения" прочитать темку, пока выделилась минута другая.
То потом, когда сажусь дома за комп, чтобы ответить - приходится искать их вручную и теряются темы, которые не прочел. Т.е. они уже не отображаются в списке новых. Так неоднократно пропускал темы, в которых люди просили моего совета.

Дополнительная кнопка "сообщения за день" была бы очень кстати

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)