форум vBSupport.ru > vBulletin > vBulletin 3.8.x > Вопросы по vBulletin 3.8
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'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
Gostemilov
Специалист
Default HTML в сообщениях для админов
0

Я понимаю, что тема избита, но постараюсь обьяснить с чего это я вдруг занялся некромантией.

Итак, дано: скопипастить некий текст, в котором около 25-30 различных таблиц. И не надо отсылать меня к замечательному хаку Luvilla, он у меня установлен, просто время на создание даже ОДНОГО подобного поста (а их, честно говоря, нужны сотни) с лихвой перекрывает время на создание этого.

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

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

Вариант номер 2- хак Allow HTML to Usergroups. Уж не знаю почему, но у меня, например, работать отказывается категорически, ДАЖЕ после того, как во всех 3 модулях выкинут ВЕСЬ код и оставлено только dohtml=1

Собственно, именно этот хак и подкинул мне следующую идею. Если есть некая переменная, разрешающая постинг HTML в конкретном разделе (я так сильно подозреваю, что это что-то из таблицы forum.options ), то где-то же она при написании поста на глобальном уровне проверяется?

То есть если при создании поста несколько изменить эту проверку и вместо опции "Есть ли разрешение на постинг HTML в этом разделе" проверять банальное if usergroupid=6 - то проблему можно считать решенной. Верно я мыслю?

Вопрос - никто не знает, где именно начинать копать методом глубокого бурения?

P.S. Для тех, кто, не дочитав, начнет что-то про угрозу безопасности - повторяю, usergropid=6 - это админы, то есть в даннгом случае - я и я уж как-нибудь разберусь, что мне можно вставлять, чтобы не убить форум
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
StenLi
На доске почёта
Пожизненный блэк
 
banned nax
Default
0

эммм)))) Взять какую-нибудь либу html -> bbcode, потом добавить теги для таблицы, потом запустить скрипт, и на выходе получить разбитые посты, которые можно будет уже добавлять в воблу, не?)

Просто html даже в сообщениях админов - это не самая хорошая идея...
 
 
Gostemilov
Специалист
Default
0

Я привел пример с несколькими десятками таблиц в посте. Это уже оправдывает HTML. Но - я нашел другой способ и сейчас его дорабатываю. Парсится-то где? Правильно, вызов идет из newthread.php и вызывается function_wysiwig. Что мешает влезть кривыми ручонками и переформатировать код таблиц под код хака Luvilla?

Gostemilov добавил 09.05.2013 в 10:32
В общем, такой расклад - помогайте всем миром в newthread.php добавлено перед вызовом

PHP Code:
$newpost['message'] = convert_wysiwyg_html_to_bbcode($vbulletin->GPC['message'], $foruminfo['allowhtml']); 
такая вот страшная конструкция (потом сведу в 1 команду, пока отладка)

PHP Code:
        $newpost['message'] =& $vbulletin->GPC['message'];
    
$newpost['message'] = preg_replace ('#<table.*>#iU','<br/>[table 1 0 1]',$newpost['message']);
    
$newpost['message'] = str_replace ('</table>','[/table]',$newpost['message']);
    
$newpost['message'] = preg_replace ('#<tr.*>#iU','',$newpost['message']);
    
$newpost['message'] = str_replace ('</tr>','',$newpost['message']);
    
$newpost['message'] = str_replace ('</td>','',$newpost['message']);
    
$newpost['message'] = preg_replace ('#<td.*>#iU','|',$newpost['message']);
    
$newpost['message'] = preg_replace ('#<p.*>#iU','',$newpost['message']);
    
$newpost['message'] = str_replace ('</p>','<br/>',$newpost['message']);
    
$newpost['message'] = str_replace ('<tbody>','',$newpost['message']);
    
$newpost['message'] = str_replace ('</tbody>','',$newpost['message']); 
что дает на выходе ПОЧТИ, ***, нужный результат, а именно:

PHP Code:
<table style="background-color: transparent; border: 1px solid #e1e1e1; margin: 0px; padding: 0px; outline: 0px; vertical-align: baseline; border-collapse: collapse; border-spacing: 0px; width: 909px; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 15px;" border="0" cellpadding="0" cellspacing="0">
<
tbody>
<
tr style="background-color: transparent; border: 1px solid #e1e1e1; font-style: inherit; margin: 0px; padding-left: 7px; outline: 0px; vertical-align: baseline;">
<
td style="background-color: transparent; border: 1px solid #e1e1e1; font-style: inherit; margin: 0px; padding-left: 7px; outline: 0px; vertical-align: baseline;" valign="top" width="237">
<
p style="margin-top: 0px; margin-bottom: 5px; padding: 0px 5px;">Температура раствора А</p>
</
td>
<
td style="background-color: transparent; border: 1px solid #e1e1e1; font-style: inherit; margin: 0px; padding-left: 7px; outline: 0px; vertical-align: baseline;" valign="top" width="62">
<
p style="margin-top: 0px; margin-bottom: 5px; padding: 0px 5px;"></p>
</
td>
<
td style="background-color: transparent; border: 1px solid #e1e1e1; font-style: inherit; margin: 0px; padding-left: 7px; outline: 0px; vertical-align: baseline;" valign="top" width="59">
<
p style="margin-top: 0px; margin-bottom: 5px; padding: 0px 5px;">+</p>
</
td>
<
td style="background-color: transparent; border: 1px solid #e1e1e1; font-style: inherit; margin: 0px; padding-left: 7px; outline: 0px; vertical-align: baseline;" valign="top" width="55">
<
p style="margin-top: 0px; margin-bottom: 5px; padding: 0px 5px;">+10°</p>
</
td>
</
tr>
<
tr style="background-color: transparent; border: 1px solid #e1e1e1; font-style: inherit; margin: 0px; padding-left: 7px; outline: 0px; vertical-align: baseline;">
<
td style="background-color: transparent; border: 1px solid #e1e1e1; font-style: inherit; margin: 0px; padding-left: 7px; outline: 0px; vertical-align: baseline;" valign="top" width="237">
<
p style="margin-top: 0px; margin-bottom: 5px; padding: 0px 5px;">На 1 л раствора А добавить раствора Б</p>
</
td>
<
td style="background-color: transparent; border: 1px solid #e1e1e1; font-style: inherit; margin: 0px; padding-left: 7px; outline: 0px; vertical-align: baseline;" valign="top" width="62">
<
p style="margin-top: 0px; margin-bottom: 5px; padding: 0px 5px;">50 мл</p>
</
td>
<
td style="background-color: transparent; border: 1px solid #e1e1e1; font-style: inherit; margin: 0px; padding-left: 7px; outline: 0px; vertical-align: baseline;" valign="top" width="59">
<
p style="margin-top: 0px; margin-bottom: 5px; padding: 0px 5px;">35 мл</p>
</
td>
<
td style="background-color: transparent; border: 1px solid #e1e1e1; font-style: inherit; margin: 0px; padding-left: 7px; outline: 0px; vertical-align: baseline;" valign="top" width="55">
<
p style="margin-top: 0px; margin-bottom: 5px; padding: 0px 5px;">20 мл</p>
</
td>
</
tr>
</
tbody>
</
table
плавно превращается в



но я никак не могу сообразить, каким образом убрать перевод строки, чтобы таблица отображалась корректно?

Last edited by Gostemilov : 05-09-2013 at 11:32 AM. Reason: Добавлено сообщение
 
 
Luvilla
Гость
Default

Quote:
Originally Posted by Gostemilov View Post
Вариант решения проблемы номер раз - создать раздел с доступом только для админов, в нем разрешить HTML, а потом, после создания поста, перетаскивать пост в нужный раздел на всеобщее, так сказать, обозрение.
ничего не получится
после "перетаскивания" хтмл перестанет парситься

Quote:
Originally Posted by Gostemilov View Post
Вариант номер 2- хак Allow HTML to Usergroups. Уж не знаю почему, но у меня, например, работать отказывается категорически
а какой конкретно хак? их несколько в ходу, пару раз ставила - его использование вполне оправдано
у меня есть проверенный рабочий вариант

Quote:
Originally Posted by Gostemilov View Post
плавно превращается в
я не прочла, что там перед этой строкой (много текста)... но по скрину, то, что набрано в редакторе - так и должно выводиться
тебе нужно автоматически убрать все переводы строк?
 
 
Gostemilov
Специалист
Default
0

Я вот что сделал - обычный код таблицы через str_replace и preg_replace приводится к BB-кодам, используемым в хаке TABLE

То есть <table class ....> меняется на [table 1 0 1] , вместо <tr> ставится <br />, вместо <td> ставится | и </td> выкидывается вообще

В результате в пост уже идет форматированная как надо таблица. Но!

Вот на чем я споткнулся

Есть код

PHP Code:
<table><tr><td>текст</td></tr></table
и он уже обрабатывается правильно и таблица идет в пост.

далее:

PHP Code:

<class="тут много чего напихано"какой-то текст</p>
<
table><tr><td>текст</td></tr></table
и, чтобы избавиться от форматирования кода источника я, естественно, через регулярку выкидываю <p> и </p> иди меняю их на <p> безо всякого CSS, что, в общем, одно и то же и все опять выводится замечательно.

А вот когда это параграф ВНУТРИ таблицы....

PHP Code:
<class="тут много чего напихано"какой-то текст</p>
<
table><tr><td><class="тут много чего напихано"какой-то текст</p></td></tr></table
В общем , еще раз:

дано: http://photonik.ru/index.php/fotomat...ie-proyaviteli , надо снять рецепт и вставить в пост.

Или так - если убирать <p>

PHP Code:
    $newpost['message'] = preg_replace ('#<p.*>#iU','',$newpost['message']);
    
$newpost['message'] = str_replace ('</p>','<br/>',$newpost['message']); 


Или так - если не убирать, CSS источника все убивает нафиг и рушится форматирование таблицы

PHP Code:
//    $newpost['message'] = preg_replace ('#<p.*>#iU','',$newpost['message']);
//    $newpost['message'] = str_replace ('</p>','<br/>',$newpost['message']); 



Gostemilov добавил 09.05.2013 в 11:49
Все, сообразил. Я просто с самого начала привожу текст поста к 1 строке без переводов строк

PHP Code:
        $newpost['message'] =& $vbulletin->GPC['message'];
$newpost['message'] = str_replace(array("\r\n""\r""\n"), ''$newpost['message']); 
Затем гоню регулярки и, в самом конце

PHP Code:
    $newpost['message'] = str_replace ('<br/>|','|',$newpost['message']); 
убираю перенос строк в таблицах там, где он не нужен.

Конечно, там есть еще над чем поработать, но, в принципе, процесс пошел.

Gostemilov добавил 09.05.2013 в 11:55
http://photo-continent.ru/showthread.php?t=129 - простой копипаст с http://www.canon.ru/For_Home/Product...00D/index.aspx

Gostemilov добавил 09.05.2013 в 18:54
Стою на асфальте я, в лыжи обутый.. То ли лыжи не едут, то ли я голосовал за Путина.

В функции convert_wysiwyg_html_to_bbcode прямо указано, чем пост в разделе с разрешенным HTML отличается от поста в разделе с запрещенным HTML. Это что, ВСЕ????!!!!

Ну ладно, выдрать и выкинуть все скрипты, это полезно. Хорошо, допустим теги типа <strong> являются ужасно вредными. Ну перенос строки поправить. И ВСЕ??? И вот из-за этого тут столько бодяги?

PHP Code:
    if (!$allowhtml)
    {
        
$text str_replace('<br/>''<br />'$text);
        
$text preg_replace('#<script[^>]*>(.*)</script>#siU'''$text);
        
$text strip_tags($text'<b><strong><i><em><u><a><div><span><p><blockquote><ol><ul><li><font><img><br><h1><h2><h3><h4><h5><h6>');
    } 
То есть можно СМЕЛО разрешать HTML всем и везде, откопировав ОДНУ строку кода насчет скриптов??? Я бы еще IFRAME добавил, порядочная гадость.

Или как?

Last edited by Gostemilov : 05-09-2013 at 07:54 PM. Reason: Добавлено сообщение
 
 
xorex
Эксперт
vBSponsor
 
xorex's Avatar
Default
0

Quote:
Originally Posted by Gostemilov View Post
Вариант номер 2- хак Allow HTML to Usergroups. Уж не знаю почему, но у меня, например, работать отказывается категорически, ДАЖЕ после того, как во всех 3 модулях выкинут ВЕСЬ код и оставлено только dohtml=1
если пробовали использовать этот и с ним проблемы то поставьте этот, с ним проблем не было замечено.
 
 
GiRassell
Эксперт
 
GiRassell's Avatar
Default
0

AHIP 1.1 - HTML в сообщениях в разделах, где это запрещено, не подходит?
 

Tags
html


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 10:51 AM.


Powered by vBulletin® Version 4.x.fuck
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.