1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

Отправка сообщений по Ctrl+Enter

Тема в разделе "Модификации шаблонов", создана пользователем Kn1ght, 23.05.2011.

Загрузка
  1. Kn1ght

    Kn1ght Местный

    Регистрация:
    16.02.11
    Сообщения:
    180
    Симпатии:
    47
    Версия XF:
    1.2.4
    Доброго времени суток.
    Хочу сделать отправку ответов из "Быстрый ответ" по нажатию Ctrl+Enter, но что-то никак не могу найти куда впихнуть событие:
    Код:
    onkeypress="if((event.ctrlKey) && ((event.keyCode==10)||(event.keyCode==13))) {this.form.submit();}"
    Не получается найти ту textarea что отвечает за быстрый ответ (quickreply).

    Заранее спасибо за помощь.
     
    Jumuro нравится это.
  2. slowpoke

    slowpoke Местный

    Регистрация:
    07.10.10
    Сообщения:
    158
    Симпатии:
    81
    Версия XF:
    1.1.1
    rom4ik92, Alex Gludo и -=ExE=- нравится это.
  3. Alex Gludo

    Alex Gludo Bazinga!

    Регистрация:
    24.01.11
    Сообщения:
    484
    Симпатии:
    293
    Разобрались, как сделать?
    Можно готовый фак по реализации? :)
     
  4. Palych

    Palych Местный

    Регистрация:
    21.12.10
    Сообщения:
    269
    Симпатии:
    59
    Версия XF:
    1.1.1
  5. slowpoke

    slowpoke Местный

    Регистрация:
    07.10.10
    Сообщения:
    158
    Симпатии:
    81
    Версия XF:
    1.1.1
    Ну смотрите, код, приведённый вами выше, работает только для textarea, которая используется только в упрощённом редакторе, но в полнофункциональном редакторе, для "моментального" применения бб-кодов и прочих плюшек используется iframe.
    Рекомендую вам почитать как устроенны wysiwyg-редакторы, тогда всё прояснится. Но скажу сразу, отправку по Ctrl+Enter или любой другой комбинации клавиш, для полнофункционального редактора невозможен.
     
    Kn1ght нравится это.
  6. Kn1ght

    Kn1ght Местный

    Регистрация:
    16.02.11
    Сообщения:
    180
    Симпатии:
    47
    Версия XF:
    1.2.4
    панятно, спасибо за разъяснение.
     
  7. Finelai

    Finelai Местный

    Регистрация:
    22.06.12
    Сообщения:
    100
    Симпатии:
    11
    Версия XF:
    1.1.3
    Год прошел. Ситуация изменилась? Плагин есть?
     
  8. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Нет. Но можете написать.
    Если писать лень, то можно подправить шаблон editor_js_setup. Там нужно две модификации внести.
    1. Находим
    Код:
    <xen:hook name="editor_js_setup" params="{xen:array 'editorId={$editorId}'}">
    Меняем на
    Код:
    <xen:hook name="editor_js_setup" params="{xen:array 'editorId={$editorId}'}">
    
    function getKeystroke(e)
    {
       var keynum;
    
       /* get keycode depending on IE vs. everyone else */
       keynum = (window.event) ? event.keyCode : e.keyCode;
    
       /* only interested in CTRL and ALT sequences */
       if((e.ctrlKey == 1) || (e.altKey == 1))
       {
          switch(keynum)
          {
             case 13:  /* enter key */
                document.getElementById("QuickReply").getElementsByClassName("primary button")[0].click();
                break;
          }
       }
    }
    2. Находим
    Код:
    xenforo_bbcode_switch_text: ["{xen:jsescape {xen:phrase use_bb_code_editor}}", "{xen:jsescape {xen:phrase use_rich_text_editor}}"]
    Меняем на
    Код:
    xenforo_bbcode_switch_text: ["{xen:jsescape {xen:phrase use_bb_code_editor}}", "{xen:jsescape {xen:phrase use_rich_text_editor}}"],
    
                    setup: function(ed) {
                        ed.onKeyPress.add(function(ed, e) {
                            getKeystroke(e);
                        });
                    }
    Можно оформить для TMS. Также можно написать плагин с использованием хуков.
     
    Urusai, TAIFUN и Finelai нравится это.
  9. Finelai

    Finelai Местный

    Регистрация:
    22.06.12
    Сообщения:
    100
    Симпатии:
    11
    Версия XF:
    1.1.3
    infis сделал как вы написали и сразу побежал проверять во всех браузерах, по привычке. Незнаю почему, но в IE, Iron'e (Chrome) и Safari не работает. В Opera и FireFox работает.
     
  10. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    А это уже лучше спецов javascript спрашивать. Я не знаток.

    Попробуйте перед case 13: поставить еще один вариант - case 10:
    Т.е. должно получиться:
    Код:
    <xen:hook name="editor_js_setup" params="{xen:array 'editorId={$editorId}'}">
     
    function getKeystroke(e)
    {
      var keynum;
     
      /* get keycode depending on IE vs. everyone else */
      keynum = (window.event) ? event.keyCode : e.keyCode;
     
      /* only interested in CTRL and ALT sequences */
      if((e.ctrlKey == 1) || (e.altKey == 1))
      {
          switch(keynum)
          {
            case 10:  /* enter key IE*/
            case 13:  /* enter key */
                document.getElementById("QuickReply").getElementsByClassName("primary button")[0].click();
                break;
          }
      }
    }
    Как минимум, IE9 после этого стал работать.
     
    Urusai нравится это.
  11. Urusai

    Urusai Активный пользователь

    Регистрация:
    06.01.13
    Сообщения:
    71
    Симпатии:
    5
    Версия XF:
    1.4.9
    Последний код подходит под хром(=
     
  12. Kn1ght

    Kn1ght Местный

    Регистрация:
    16.02.11
    Сообщения:
    180
    Симпатии:
    47
    Версия XF:
    1.2.4
    в 1.2 кто нибудь пробовал добавить данный функционал?
    п.с. у меня пока не получается.
     
  13. Дмитрий Артёменко

    Дмитрий Артёменко Местный

    Регистрация:
    26.09.11
    Сообщения:
    195
    Симпатии:
    3
    Версия XF:
    1.3.1
    Тоже интересно
     
  14. Urusai

    Urusai Активный пользователь

    Регистрация:
    06.01.13
    Сообщения:
    71
    Симпатии:
    5
    Версия XF:
    1.4.9
    Да.. было бы не плохо...
     
  15. Aiden

    Aiden Местный

    Регистрация:
    03.01.12
    Сообщения:
    202
    Симпатии:
    74
    Версия XF:
    1.4.3
    Зачем? Tab+Enter и всё.
     
  16. Urusai

    Urusai Активный пользователь

    Регистрация:
    06.01.13
    Сообщения:
    71
    Симпатии:
    5
    Версия XF:
    1.4.9
    Ну так большинство пользователей привыкло. Так в аське, вконтакте и т.д... Это удобно.
     
  17. Георгий Шевченко

    Георгий Шевченко Местный

    Регистрация:
    07.12.13
    Сообщения:
    44
    Симпатии:
    27
    Версия XF:
    1.4.7
    а вот где это искать?
    В editor_js_setup нету такого.
     
    Последнее редактирование: 26.03.2014
  18. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Это только для XenForo 1.1.x. На версиях 1.2 и 1.3 другой редактор используется.
     
  19. Георгий Шевченко

    Георгий Шевченко Местный

    Регистрация:
    07.12.13
    Сообщения:
    44
    Симпатии:
    27
    Версия XF:
    1.4.7
    @adder

    А есть решение для 1.2.x ?
     
  20. Георгий Шевченко

    Георгий Шевченко Местный

    Регистрация:
    07.12.13
    Сообщения:
    44
    Симпатии:
    27
    Версия XF:
    1.4.7

Поделиться этой страницей