Страница 1 из 1

Дата и время в заголовке цитаты. Суперцитата.

Добавлено: 21 июл 2012, 14:05
xaocZ
Модификация работы кнопки "цитата". Автор сего чуда - Uho

Ссылка "цитата", та которая над аватарой

в posting_buttons.html после

Код: Выделить всё

<script type="text/javascript" src="{T_TEMPLATE_PATH}/editor.js"></script>
добавляем функуцию addsuperquote

Код: Выделить всё

<script type="text/javascript">
function addsuperquote(post_id, username, post_date)
{
   var message_name = 'message_' + post_id;
   var theSelection = '';
   var divarea = false;


   if (document.all)
   {
      divarea = document.all[message_name];

   }
   else
   {
      divarea = document.getElementById(message_name);

   }

   // 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 == '' || typeof theSelection == 'undefined' || theSelection == null)
   {
      if (divarea.innerHTML)
      {
         theSelection = divarea.innerHTML.replace(/<br>/ig, '\n');
         theSelection = theSelection.replace(/<br\/>/ig, '\n');
         theSelection = theSelection.replace(/&lt\;/ig, '<');
         theSelection = theSelection.replace(/&gt\;/ig, '>');
         theSelection = theSelection.replace(/&amp\;/ig, '&');
         theSelection = theSelection.replace(/&nbsp\;/ig, ' ');


      }
      else if (document.all)
      {
         theSelection = divarea.innerText;

      }
      else if (divarea.textContent)
      {
         theSelection = divarea.textContent;

      }
      else if (divarea.firstChild.nodeValue)
      {
         theSelection = divarea.firstChild.nodeValue;

      }
   }

   if (theSelection)
   {
insert_text('[superquote=' + username + ',' + post_id + ',' + post_date + ']' + theSelection + '[/superquote]');
   }
   return;
}
</script>

в viewtopic_body.html

Код: Выделить всё

<!-- IF QUICK_REPLY -->
            ...
         <!-- ENDIF -->
заменяем на

Код: Выделить всё

<!-- IF QUICK_REPLY -->
            <tr>
               <td class="postdetails"><a href="#postform" onclick="addsuperquote({postrow.POST_ID},'{postrow.POSTER_QUOTE}','{postrow.POST_DATE}'); insert_text('\r\n'); return false;" title="{L_QUOTE_TEXT}">{L_QUOTE}</a></td>
            </tr>
         <!-- ENDIF -->

добавляем невидимый BBCode

Код: Выделить всё

[superquote={TEXT1},{NUMBER},{TEXT2}]{TEXT3}[/superquote]

Код: Выделить всё

<div class="quotetitle"><a href="./viewtopic.php?p={NUMBER}#p{NUMBER}" title="Добавлено: {TEXT2}">{TEXT1} писал(а):</a></div><div class="quotecontent">{TEXT3}</div>

если хочешь, чтобы без всплывающей подсказки, то замена HTML BBCode'а должна быть типа такой:

Код: Выделить всё

<div class="quotetitle"><a href="./viewtopic.php?p={NUMBER}#p{NUMBER}">Добавлено: {TEXT2}, {TEXT1} писал(а):</a></div><div class="quotecontent">{TEXT3}</div>

Кнопка цитата. Работает и как ссылка над аватарой (если текст выделен), и как цитирование всего поста (если выделения нет)

идем в viewtopic_body.html
ищем

Код: Выделить всё

<!-- IF postrow.U_QUOTE --><a href="{postrow.U_QUOTE}">{QUOTE_IMG}</a> <!-- ENDIF -->
заменяем на

Код: Выделить всё

<!-- IF postrow.U_QUOTE --><!-- IF QUICK_REPLY --><a href="#postform" onclick="addsuperquote({postrow.POST_ID},'{postrow.POSTER_QUOTE}','{postrow.POST_DATE}'); insert_text('\r\n'); return false;" title="{L_QUOTE_TEXT}">{QUOTE_IMG}</a><!-- ELSE --><a href="{postrow.U_QUOTE}">{QUOTE_IMG}</a><!-- ENDIF --><!-- ENDIF -->

ищем

Код: Выделить всё

<div class="postbody">{postrow.MESSAGE}</div>
заменяем на

Код: Выделить всё

<div class="postbody" id="message_{postrow.POST_ID}">{postrow.MESSAGE}</div>

ищем

Код: Выделить всё

<!-- IF QUICK_REPLY -->
            ....
<!-- ENDIF -->
удаляем это или закомменчиваем

идем в posting_buttons.html
в функции addsuperquote()
заменяем

Код: Выделить всё

         theSelection = divarea.innerHTML.replace(/<br>/ig, '\n');
         theSelection = theSelection.replace(/<br\/>/ig, '\n');
         theSelection = theSelection.replace(/&lt\;/ig, '<');
         theSelection = theSelection.replace(/&gt\;/ig, '>');
         theSelection = theSelection.replace(/&amp\;/ig, '&');
         theSelection = theSelection.replace(/&nbsp\;/ig, ' ');
на

Код: Выделить всё

window.location='http://адрес_форума/posting.php?mode=quote&f={FORUM_ID}&p='+post_id;

Re: Дата и время в заголовке цитаты. Суперцитата.

Добавлено: 08 дек 2014, 16:17
Ариан
Помогите, пожалуйста, переделать код под мой стиль.
У меня код цитаты такой:

Код: Выделить всё

<!-- IF postrow.U_QUOTE --><a class="profile-button" href="{postrow.U_QUOTE}" title="{L_REPLY_WITH_QUOTE}"><span>Цитата</span></a>&#160;<!-- ENDIF -->
Я же хочу , чтобы цитата работала и как ссылка над аватарой (если текст выделен), и как цитирование всего поста (если выделения нет), но не хватает ума переделать этот код под свои потребности.

Код: Выделить всё

    <!-- IF postrow.U_QUOTE --><!-- IF QUICK_REPLY --><a href="#postform" onclick="addsuperquote({postrow.POST_ID},'{postrow.POSTER_QUOTE}','{postrow.POST_DATE}'); insert_text('\r\n'); return false;" title="{L_QUOTE_TEXT}">{QUOTE_IMG}</a><!-- ELSE --><a href="{postrow.U_QUOTE}">{QUOTE_IMG}</a><!-- ENDIF --><!-- ENDIF --> 
И подскажите, надо ли что-то переделывать в остальных приведённых кодах?

Re: Дата и время в заголовке цитаты. Суперцитата.

Добавлено: 08 дек 2014, 17:34
CabinetAdmin
Вроде как должна быть такого типа:

Код: Выделить всё

<!-- IF postrow.U_QUOTE --><!-- IF QUICK_REPLY --><a class="profile-button"  href="#postform" onclick="addsuperquote({postrow.POST_ID},'{postrow.POSTER_QUOTE}','{postrow.POST_DATE}'); insert_text('\r\n'); return false;" title="{L_QUOTE_TEXT}"><span>Цитата</span></a><!-- ELSE --><a class="profile-button"  href="{postrow.U_QUOTE}" title="{L_REPLY_WITH_QUOTE}"><span>Цитата</span></a><!-- ENDIF -->&#160;<!-- ENDIF -->
Ариан » Сегодня, 18:17 писал(а):И подскажите, надо ли что-то переделывать в остальных приведённых кодах?
Если только это место:

Код: Выделить всё

<!-- IF QUICK_REPLY -->
            <tr>
               <td class="postdetails"><a href="#postform" onclick="addsuperquote({postrow.POST_ID},'{postrow.POSTER_QUOTE}','{postrow.POST_DATE}'); insert_text('\r\n'); return false;" title="{L_QUOTE_TEXT}">{L_QUOTE}</a></td>
            </tr>
         <!-- ENDIF -->
тут таблица не нужна будет.

Re: Дата и время в заголовке цитаты. Суперцитата.

Добавлено: 08 дек 2014, 18:42
Ариан
Не могу найти этот код, чтобы заменить. В указанном шаблоне такой кусок отсутствует.

Код: Выделить всё

          theSelection = divarea.innerHTML.replace(/<br>/ig, '\n');
             theSelection = theSelection.replace(/<br\/>/ig, '\n');
             theSelection = theSelection.replace(/&lt\;/ig, '<');
             theSelection = theSelection.replace(/&gt\;/ig, '>');
             theSelection = theSelection.replace(/&amp\;/ig, '&');
             theSelection = theSelection.replace(/&nbsp\;/ig, ' ');

Re: Дата и время в заголовке цитаты. Суперцитата.

Добавлено: 08 дек 2014, 19:29
CabinetAdmin
Тут по сути два варианта мода. Они как раз по черте в первом сообщении делятся. Этот кусок, это правка первого варианта мода и находится он в добавленном в первый раз скрипте.

Re: Дата и время в заголовке цитаты. Суперцитата.

Добавлено: 08 дек 2014, 21:11
Ариан
Вроде бы заработало. Появился ещё один вопрос. Как оформление цитаты перенести и на суперцитату?
В CSS для цитаты прописано это:

Код: Выделить всё

/* Quote block */
blockquote {
	background: #ebebeb none 6px 8px no-repeat;
	border: 1px solid #dbdbdb;
	font-size: 0.95em;
	margin: 0.5em 1px 0 25px;
	overflow: hidden;
	padding: 5px;
}

blockquote blockquote {
	/* Nested quotes */
	background-color: #bababa;
	font-size: 1em;
	margin: 0.5em 1px 0 15px;	
}

blockquote blockquote blockquote {
	/* Nested quotes */
	background-color: #e4e4e4;
}

blockquote cite {
	/* Username/source of quoter */
	font-style: normal;
	font-weight: bold;
	margin-left: 20px;
	display: block;
	font-size: 0.9em;
}

blockquote cite cite {
	font-size: 1em;
}

blockquote.uncited {
	padding-top: 25px;
}
Код замены в BBкоде вставил этот:

Код: Выделить всё

    <div class="quotetitle"><a href="./viewtopic.php?p={NUMBER}#p{NUMBER}">Добавлено: {TEXT2}, {TEXT1} писал(а):</a></div><div class="quotecontent">{TEXT3}</div>

Re: Дата и время в заголовке цитаты. Суперцитата.

Добавлено: 09 дек 2014, 00:48
Ариан
Проблему решил поменяв код замены на

Код: Выделить всё

<blockquote><div><cite> <a href="./viewtopic.php?p={NUMBER}#p{NUMBER}">{TEXT2}, {TEXT1} писал(а):</a></cite>
{TEXT3}</div></blockquote>

Дата и время в заголовке цитаты. Суперцитата.

Добавлено: 25 ноя 2015, 18:13
Ариан
И вот теперь у меня большая проблема. Предыдущий код замены работает с просильвером, а приведённый автором работает в сабсильвере.
Как сделать, чтобы у меня оба стиля форума одинаково работали? К примеру, если создать ещё один скрытый ВВ-код, что и где надо будет поменять в шаблонах?.

Дата и время в заголовке цитаты. Суперцитата.

Добавлено: 25 ноя 2015, 20:11
CabinetAdmin
Я если честно не понял, в чём заключается проблема? Для просильвера свою замену, для саба свою... Ббкод это ббкод, какая ему разница какой стиль... Он на обоих стилях будет отображаться одинаково.

Дата и время в заголовке цитаты. Суперцитата.

Добавлено: 25 ноя 2015, 20:37
Ариан
Замена HTML в ВВ-коде для сабсильвера работает эта:

Код: Выделить всё

<div class="quotetitle"><a href="./viewtopic.php?p={NUMBER}#p{NUMBER}">Добавлено: {TEXT2}, {TEXT1} писал(а):</a></div><div class="quotecontent">{TEXT3}</div>
для просильвера работает эта:

Код: Выделить всё

<blockquote><div><cite> <a href="./viewtopic.php?p={NUMBER}#p{NUMBER}">{TEXT2}, {TEXT1} писал(а):</a></cite>
{TEXT3}</div></blockquote>
Т.е. суперцитата одновременно в двух стилях не хочет работать. Я это проверил на двух форумах.

Дата и время в заголовке цитаты. Суперцитата.

Добавлено: 25 ноя 2015, 20:52
CabinetAdmin
Завтра посмотрю, а то уже так не помню...

зы. А помимо ббкода, все остальные правки сделаны в обоих стилях? И не работает как, в обоих или только в одном?

Дата и время в заголовке цитаты. Суперцитата.

Добавлено: 25 ноя 2015, 21:41
Ариан
Все правки сделаны и перепроверены уже давно. У меня на одном форуме просильвер, на втором сабсильвер. Сейчас на втором запускаю просильвер. Долго мучился, пока не вспомнил, что были траблы больше года назад, когда одновременно на двух форумах суперцитату запускал. Сейчас на модернизируемом форуме суперцитата работает в том стиле, замену HTML которого я вставляю в ВВ-код.

Дата и время в заголовке цитаты. Суперцитата.

Добавлено: 26 ноя 2015, 19:53
CabinetAdmin
Поставил на тестовом форуме, на просильвер и сабсильвер с обоими заменами - работает. Единственный момент, это когда меняешь замену, то цитата правильно отображается либо в том, либо в другом стиле... Чтобы они отображались одинаково надо просто добавить подходящие стили.

Вот например, если использовать замену:

Код: Выделить всё

<blockquote><div><cite><a href="./viewtopic.php?p={NUMBER}#p{NUMBER}">{TEXT2}, {TEXT1} {L_WROTE}:</a></cite>{TEXT3}</div></blockquote>
это код просильверовской цитаты, в нём он будет отображаться так же как и родной, а в сабе без дизайна. Вот чтобы и в нём он начал отображаться как встроенная цитата можно добавить стили. Вот так будет выглядеть стиль для стандартного оформления цитаты в subsilver2:

Код: Выделить всё

blockquote {
	margin: 10px 5px;
	padding: 0 5px 5px;
	border-color: #A9B8C2;
	border-width: 0 1px 1px 1px;
	border-style: solid;
	font-weight: normal;
	font-size: 1em;
	line-height: 1.4em;
	font-family: "Lucida Grande", "Trebuchet MS", Helvetica, Arial, sans-serif;
	background-color: #FAFAFA;
	color: #4B5C77;
}

blockquote cite {
	margin: 0 -5px 5px;
	padding: 4px;
	border-width: 1px 1px 0 1px;
	border-style: solid;
	border-color: #A9B8C2;
	color: #333333;
	background-color: #A9B8C2;
	font-size: 0.85em;
	font-weight: bold;
	display: block;
}

blockquote cite cite {
	font-size: 1em;
}
И всё.

Дата и время в заголовке цитаты. Суперцитата.

Добавлено: 28 ноя 2015, 11:41
Ариан
Спасибо! Всё заработало.