Полезная информация


----

Начать новую тему Ответить на тему
АвторСообщение

 Сообщение Отправка сообщений с CTRL+ENTER в phpBB3 2012-04-26

Аватар пользователя

Введение

Многим админам наверняка хотелось бы иметь возможность отправки сообщений на форуме с помощью связки CTRL+ENTER ибо это очень удобная функция. Сам себе искал решение, нашел, теперь хочу с вами поделиться. В данном мини-анонсе я рассмотрю 2 способа реализации отправки сообщений с помощью CTRL+ENTER.

Способ 1. В лоб или обойдемся без скриптов

Впринципе описанный ниже способ 100% работает на стилях, основанных на prosilver, а вот на стилях на основе subsilver2 все не так гладко - в мозиле и хроме все без косяков, а в опере при использовании связки CTRL+ENTER открывается еще одно окно, в котором сообщение отправлено, а так же остается окно в котором вы еще находитесь в редакторе сообщений. Вообщем разобью инструкцию по основным стилям.

Для стилей на основе prosilver
  • Инструкция для стандартного ответа в теме
Открыть styles/ваш стиль/template/posting_editor.html и найти строку кода
 <textarea <!-- IF S_UCP_ACTION and not S_PRIVMSGS and not S_EDIT_DRAFT -->name="signature"
 

Далее, в этой строке найти
 class="inputbox">{MESSAGE}{DRAFT_MESSAGE}{SIGNATURE}</textarea>
 

И заменить его на
 class="inputbox" onKeyPress = "if (event.keyCode==10 || (event.ctrlKey && event.keyCode==13)) {document.getElementById('postform').post.click();}">{MESSAGE}{DRAFT_MESSAGE}{SIGNATURE}</textarea>
 

Найти
<input  type="submit" accesskey="s" tabindex="6" name="post"
 

Заменить на
<input title="Ctrl+Enter" type="submit" accesskey="s" tabindex="6" name="post"
 

  • Инструкция для стандартного Быстрого Ответа (не путать со похожим модом!!!)
Открыть styles/ваш стиль/template/quickreply_editor.html и найти
class="inputbox"></textarea>
 

Заменить на
class="inputbox" onKeyPress = "if (event.keyCode==10 || (event.ctrlKey && event.keyCode==13)) {document.getElementById('postform').post.click();}"></textarea>
 

Найти
<input type="submit" accesskey="s" tabindex="6" name="post" value="{L_SUBMIT}" class="button1" />
 

Заменить на
<input title="Ctrl+Enter" type="submit" accesskey="s" tabindex="6" name="post" value="{L_SUBMIT}" class="button1" />
 

ВНИМАНИЕ !!!Описанные выше правки сделать 2 раза ибо в коде 2 раза встречаются нужные элементы !!!


Для стилей на основе subsilver2
  • Инструкция для стандартного ответа в теме
Открыть styles/ваш стиль/template/posting_body.html
>{MESSAGE}</textarea>
 

Добавить перед
onKeyPress="if((event.keyCode==10)||((event.ctrlKey)&&(event.keyCode==13))) document.postform.post[0].click();"
 


  • Инструкция для стандартного Быстрого Ответа (не путать со похожим модом!!!)
Открыть styles/ваш стиль/template/quickreply_editor.html и найти
>{MESSAGE}</textarea>
 

Добавить перед
onKeyPress="if((event.keyCode==10)||((event.ctrlKey)&&(event.keyCode==13))) document.postform.post[0].click();"
 



Способ 2. Для тех у кого подключены скрипты или универсальное решение

Во многих форумах наверняка подключен скрипт JQuery либо Mootools 1.1, таким образом можно реализовать отправку связкой CTRL+ENTER без особых усилий. Данное решение подходит для любых стилей.

Открыть styles/ваш стиль/template/overall_footer.html и перед закрывающим тегом </body> добавить код
  • Если у вас подключен JQuery, то добавляем
<!-- IF S_POST_ACTION or S_QUICK_REPLY -->
<script type="text/javascript">
   $('#postform textarea').keypress(function(event) {
      if ($(this).attr('name') == 'message' && (event.keyCode == 10 || (event.ctrlKey && event.keyCode == 13))) {
         $('<input type="hidden" name="post" />').appendTo($('#postform'));
         $('#postform').submit();
      }
   });

   $('input[name="post"]').attr('title', 'Ctrl+Enter');
</script>
<!-- ENDIF -->
 

  • Если у вас подключен Mootools 1.1, то добавляем
<!-- IF S_POST_ACTION or S_QUICK_REPLY -->
<script type="text/javascript">
   $$('#postform textarea').addEvent('keypress', function(event) {
      if ($(this).name == 'message' && (event.keyCode == 10 || (event.ctrlKey && event.keyCode == 13))) {
         new Element('input').setProperties({'type': 'hidden', 'name': 'post'}).injectAfter($(this));
         $('postform').submit();
      }
   });

   $$('input[name="post"]').setProperty('title', 'Ctrl+Enter');
</script>
<!-- ENDIF -->
 


Лично себе я поставил по второму способу, можете потестировать :co_ol:


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!

Теги темы
Отправка сообщений с CTRL+ENTER в phpBB3, CTRL+ENTER отправить сообщение
          Вернуться наверх  
 


Аватар пользователя

Глупо, будут ложные срабатывания, если пользователь захочет больше переносов строк сделать))Тем более это действие займет пару секунд, что будет расценено как приказ отправить форму ответа


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

DeaDRoMeO писал(а):

если пользователь захочет больше переносов строк сделать

а, точно...


_________________
Подпись:
Я уже прошел тот период когда можно было забывать про очистку кеша ©salexcorp
          Вернуться наверх  
 


Аватар пользователя

Благодарю за такую возможность, использования на форуме отправкой CTRL+ENTER, все сделал, но не могу понять как переименовать кнопку отправить, на CTRL+ENTER, стиль построен на сабсильвере


          Вернуться наверх  
 


Аватар пользователя

Лучше не трогать это, при наведении на кнопку должна быть всплывашка с подсказкой, что сообщение можно отправить связкой клавиш


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

К моему сожалению, это не происходит, нет вспышки


          Вернуться наверх  
 


Аватар пользователя

Смотрите, в форме быстрого ответа на моем форуме есть кнопочка Оправить (CTRL+ENTER), наведите курсор на нее и подержите пару секунд, всплывает окошечко маленькое, у вас такого нет?


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

Блин поставил мод и не работает. Хотел подключить скрипт JQuery, в overall_footer.html произвел правку, в overall_header.html подключил скрипт но не работает. Пробовал просто поставить по первому способу дя стиля на основе subsilver2, но сработало только для ответа и то с открытием дополнительной страницы, а для мода бистрого ответа нет. Помогите подключить правильно чтоб полностью работало. Спасибо


          Вернуться наверх  
 


Аватар пользователя

Здравствуйте. Пробовал поставить отправку сообщений с CTRL+ENTER и ничего не получаеться у меня стоит мод Super Quick Reply и хотел поставить для него отправку, но не работает ни первый вариант ни второй. Что делать? До мода Super Quick Reply есть файл super_quick_reply.html и я в нем пробовал изменить строки, все вставил но не работает. Строки я нашел которые отвечают за отправку. Буду очень вам благодарен спасибо.


          Вернуться наверх  
 


Аватар пользователя

Я посмотрел в phpBB3 Встроенная функция отправки сообщения - ALT+S. В латинской раскладке.
для оперы - Shift+Esc+S, для лисы - Shift+Alt+S.

А как можно поменять это на CTRL+ENTER. Спасибо


          Вернуться наверх  
 


Аватар пользователя

yanandriy писал(а):

До мода Super Quick Reply есть файл super_quick_reply.html

Дайте полный код этого файла


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

Вот код. Спасибо

<!-- IF S_SQR_ACTIVE -->
<form action="{S_SQR_POST_ACTION}" method="post" name="postform" enctype="multipart/form-data">
<table class="tablebg" width="100%" cellspacing="1">
<tr>
<th colspan="2"><b>{L_POST_REPLY}</b></th>
</tr>
<!-- IF not S_USER_LOGGED_IN -->
<tr>
<td class="row1"><b class="genmed">{L_USERNAME}:</b></td>
<td class="row2"><input class="post" type="text" tabindex="1" name="username" size="25" value="" /></td>
</tr>
<!-- ENDIF -->
<tr>
<td class="row1" width="22%"><b class="genmed">{L_SUBJECT}:</b></td>
<td class="row2" width="78%"><input class="post" style="width:450px" type="text" name="subject" size="45" maxlength="60" tabindex="2" value="{S_SQR_SUBJECT}" /></td>
</tr>
<tr>
<td class="row1" valign="top"><b class="genmed">{L_MESSAGE_BODY}:</b><br /><br />
<!-- IF S_SMILIES_ALLOWED -->
<div class="scrollBox">
<div id="pane" class="scroll-pane">
<table width="100%" cellspacing="5" cellpadding="0" border="0" align="center">
<tr>
<td class="gensmall" align="center"><b>{L_SMILIES}</b></td>
</tr>
<tr>
<td align="center">
<!-- BEGIN smiley -->
<a href="#" onclick="insert_text('{smiley.A_SMILEY_CODE}', true); return false;" style="line-height: 20px;"><img src="{smiley.SMILEY_IMG}" width="{smiley.SMILEY_WIDTH}" height="{smiley.SMILEY_HEIGHT}" alt="{smiley.SMILEY_CODE}" title="{smiley.SMILEY_DESC}" hspace="2" vspace="2" /></a>
<!-- END smiley -->
</td>
</tr>

<!-- IF S_SHOW_SMILEY_LINK -->
<tr>
<td align="center"><a class="nav" href="{U_MORE_SMILIES}" onclick="popup(this.href, 300, 350, '_phpbbsmilies'); return false;">{L_MORE_SMILIES}</a></td>
</tr>
<!-- ENDIF -->

</table></div></div>
<!-- ENDIF -->
</td>
<td class="row2" valign="top">
<script type="text/javascript">
// <![CDATA[
var form_name = 'postform';
var text_name = 'message';
var SQRFocusFix = true;
/**
* Add quote text to message
*/
function sqr_addquote(username,url)
{
// Get text selection - not only the post content :(
if (window.getSelection)
{
theSelection = window.getSelection().toString();
}
else if (document.getSelection)
{
theSelection = document.getSelection();
}
else if (document.selection)
{
theSelection = document.selection.createRange().text;
}

if (theSelection)
{
insert_text('
' + username + ' писал(а):

' + theSelection + '
');
}
else
{
//alert('Select text to be quoted!');
window.location.href = url;
}
return;
}
// ]]>
</script>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<!-- INCLUDE posting_buttons.html -->
<tr>
<td valign="top" style="width: 100%;"><textarea name="message" rows="15" cols="76" tabindex="3" style="width: 98%;"></textarea></td>
<!-- IF S_BBCODE_ALLOWED -->
<td width="80" align="center" valign="top">
<script type="text/javascript">
// <![CDATA[
colorPalette('v', 14, 6)
// ]]>
</script>
</td>
<!-- ENDIF -->
</tr>
</table>
</td>
</tr>
<tr>
<td class="row1" valign="top"><b class="genmed">{L_OPTIONS}:</b></td>
<td class="row2">
<table cellpadding="1">
<!-- IF S_BBCODE_ALLOWED -->
<tr>
<td><input type="checkbox" class="radio" name="disable_bbcode"{S_BBCODE_CHECKED} /></td>
<td class="gen">{L_DISABLE_BBCODE}</td>
</tr>
<!-- ENDIF -->
<!-- IF S_SMILIES_ALLOWED -->
<tr>
<td><input type="checkbox" class="radio" name="disable_smilies"{S_SMILIES_CHECKED} /></td>
<td class="gen">{L_DISABLE_SMILIES}</td>
</tr>
<!-- ENDIF -->
<!-- IF S_LINKS_ALLOWED -->
<tr>
<td><input type="checkbox" class="radio" name="disable_magic_url"{S_MAGIC_URL_CHECKED} /></td>
<td class="gen">{L_DISABLE_MAGIC_URL}</td>
</tr>
<!-- ENDIF -->
<!-- IF S_SIG_ALLOWED -->
<tr>
<td><input type="checkbox" class="radio" name="attach_sig"{S_SIGNATURE_CHECKED} /></td>
<td class="gen">{L_ATTACH_SIG}</td>
</tr>
<!-- ENDIF -->
<!-- IF S_NOTIFY_ALLOWED -->
<tr>
<td><input type="checkbox" class="radio" name="notify"{S_NOTIFY_CHECKED} /></td>
<td class="gen">{L_NOTIFY_REPLY}</td>
</tr>
<!-- ENDIF -->
<!-- IF S_LOCK_TOPIC_ALLOWED -->
<tr>
<td><input type="checkbox" class="radio" name="lock_topic"{S_LOCK_TOPIC_CHECKED} /></td>
<td class="gen">{L_LOCK_TOPIC}</td>
</tr>
<!-- ENDIF -->
</table>
</td>
</tr>
<!-- IF PRIME_CAPTCHA_TITLE -->
<tr>
<th colspan="2" valign="middle">{PRIME_CAPTCHA_TITLE}</th>
</tr>
<tr>
<td class="row3" colspan="2"><span class="gensmall">{PRIME_CAPTCHA_DESCRIPTION}</span></td>
</tr>
<tr>
<td class="row1"><b class="genmed">{PRIME_CAPTCHA_INSTRUCTIONS}:</b></td>
<td class="row2">{PRIME_CAPTCHA_KEY_PHRASE}<br /><input class="post" name="{PRIME_CAPTCHA_FIELD_KEY_RESPONSE}" size="30" value="" type="text" />{PRIME_CAPTCHA_HIDDEN_FIELDS}</td>
</tr>
<!-- ENDIF -->
<!-- IF S_CONFIRM_CODE -->
<tr>
<th colspan="2" valign="middle">{L_POST_CONFIRMATION}</th>
</tr>
<tr>
<td class="row3" colspan="2"><span class="gensmall">{L_POST_CONFIRM_EXPLAIN}</span></td>
</tr>
<tr>
<td class="row1" colspan="2" align="center">
<input type="hidden" name="confirm_id" value="{CONFIRM_ID}" />
{CONFIRM_IMAGE}
</td>
</tr>
<tr>
<td class="row1"><b class="genmed">{L_CONFIRM_CODE}: </b><br /><span class="gensmall">{L_CONFIRM_CODE_EXPLAIN}</span></td>
<td class="row2"><input class="post" type="text" name="confirm_code" size="8" maxlength="8" /></td>
</tr>
<!-- ENDIF -->
<tr>
<td class="cat" colspan="2" align="center">
<input class="btnlite" type="submit" tabindex="10" name="preview" value="{L_PREVIEW}" />
&nbsp; <input class="btnmain" type="submit" accesskey="s" tabindex="11" name="post" value="{L_SUBMIT}" />
&nbsp; <input class="btnlite" type="reset" accesskey="c" tabindex="14" value="{L_CANCEL}" />
</td>
</tr>
</table>
{S_SQR_HIDDEN_FIELDS}
{S_FORM_TOKEN}
</form>
<!-- ENDIF -->


          Вернуться наверх  
 


Аватар пользователя

Так, берете второй способ и во вставляемом коде заменяете
<!-- IF S_POST_ACTION or S_QUICK_REPLY -->
 

На
<!-- IF S_POST_ACTION or S_SQR_POST_ACTION -->
 

В предоставленном вами коде есть все айди, значит беда лишь в этой строке


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

Вобще неработает. В overall_header.html подключил jquery.js
<script type="text/javascript" src="/jquery.js"></script>

В overall_footer.html вставил
<!-- IF S_POST_ACTION or S_SQR_POST_ACTION -->
<script type="text/javascript">
$('#postform textarea').keypress(function(event) {
if ($(this).attr('name') == 'message' && (event.keyCode == 10 || (event.ctrlKey && event.keyCode == 13))) {
$('<input type="hidden" name="post" />').appendTo($('#postform'));
$('#postform').submit();
}
});

$('input[name="post"]').attr('title', 'Ctrl+Enter');
</script>
<!-- ENDIF -->


Подскажите что не так делаю. Спасибо


          Вернуться наверх  
 


Аватар пользователя

Кхммм, а jquery.js в корне форума лежит ?? Вообще какая версия у него


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

Да лежит Версия самая новая 2.0. Я переименовал как и указал путь jquery.js. Даже пробовал подключить jquery гугла.


          Вернуться наверх  
 


Аватар пользователя

Блин малехо проглядел, вообщем оставляйте все что сделали + в шаблоне быстрого ответа найти
method="post"
 

Вставить после найденного
id="postform"
 

Найти
name="message"
 

Вставить после найденного
id="message"
 

Вот теперь должно заработать


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

Сергей, огромное вам спасибо, все получилось.
А как еще можно сделать чтоб кнопка "Отправить" была как у вас "Отправить (Ctrl+ ENTER)". Спасибо.


          Вернуться наверх  
 


Аватар пользователя

Собственно открываете шаблон быстрого ответа, ставите сразу же ему кодировку UTF-8 без BOOM, находите кусок
&nbsp; <input class="btnmain" type="submit" accesskey="s" tabindex="11" name="post" value="{L_SUBMIT}" />
 

Меняете {L_SUBMIT} на любой текст. В файлы локализации лучше не лезть ибо повсеместно ваш текст появится, лучше напрямую в шаблоне исправьте


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

Спасибо вам большое, все получилось.


          Вернуться наверх  
 


Аватар пользователя

На здоровьице)


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 
 
Начать новую тему Ответить на тему


Дополнительные возможности

  Похожие темы  Автор  Ответов  Просмотров  Последнее сообщение 
Аватар пользователя Posts merging phpbb3 (Склейка сообщений)
Posts merging - модификация для phpbb3, позволяющая склеивать идущие подряд сообщения от одного пользователя

DeaDRoMeO

78

4754

Аватар пользователя

12 сен 2017, 09:32

DeaDRoMeO

Аватар пользователя Adaptive Hide BBcodes phpbb3 (скрытие содержимого сообщений)
Adaptive Hide BBcodes - модификация для phpbb3, добавляющая группу ВВ-кодов для скрытия содержимого сообщения (иными словами ВВ-код хайда)

DeaDRoMeO

57

3298

Аватар пользователя

23 янв 2016, 06:15

DeaDRoMeO

Аватар пользователя Forum SEO phpbb3
Forum SEO phpbb3 - прекрасный мод в плане СЕО оптимизации для форумов phpbb3, позволит вам задать описание и список ключевых слов для каждого раздела и подфорума.

DeaDRoMeO

253

16923

Аватар пользователя

27 ноя 2017, 20:18

DeaDRoMeO

Аватар пользователя Top Stats phpbb3
Top Stats - модификация для phpbb3, организующая на главной странице форума 7 блоков с разнообразной статистикой

DeaDRoMeO

73

11519

Аватар пользователя

08 янв 2016, 11:22

DeaDRoMeO

Аватар пользователя Лог регистраций phpbb3
Лог регистраций phpbb3 - полезное в администрировании дополнение для phpbb3, данная модификация ведет лог всех ответов пользователей при регистрации

DeaDRoMeO

125

12158

Аватар пользователя

05 дек 2015, 20:27

Чародейка

Оставить свой комментарий

Поделиться темой с помощью

Ссылки на тему

Прямая ссылка:
BB-код для форумов, сайтов, блогов:
HTML ссылка:
 


cron

Самая неформальная поддержка phpBB :P