Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Обсуждение форума > Вкл./Выкл. картинки в подписи


Автор: 2man 8.10.2005, 16:48
Думаю, этот форум давно уже нуждается в данном моде, чтобы в профиле можно было самому выбирать: хочешь ли ты смотреть картинки в подписи или нет? К тому же очень удобная штука для тех, кто сидит по траффику. У меня есть техническое решение данной проблемы. Может выложить?

Автор: cardinal 8.10.2005, 18:02
Я за, т.к. время - деньги. smile

Автор: Mayk 8.10.2005, 18:12
За.
Нужный мод.
зы.а если мод еще и флешки прибивает smile

Автор: sergejzr 8.10.2005, 18:53
там скрипт поставить и усё smile ИМХО сервер грузить этим не надо. Просмотр топика самое напряжное (после поиска конечно).
Добавлено @ 18:54
А вообще, покажи, что придумал. посмотрим smile

Автор: 2man 9.10.2005, 21:54
открываем sources/Usercp.php
Ищем:
Код

$view_sig  = "<select name='VIEW_SIGS' class='forminput'>";
Ниже добавляем:
Код

$view_sigpic  = "<select name='VIEW_SIGPICS' class='forminput'>";

Ищем:
Код

$view_sig .= $this->member['view_sigs'] ? "<option value='1' selected='selected'>".$ibforums->lang['yes']."</option>\n<option value='0'>".$ibforums->lang['no']."</option>"
                                                                                          : "<option value='1'>".$ibforums->lang['yes']."</option>\n<option value='0' selected='selected'>".$ibforums->lang['no']."</option>";

Ниже добавляем:
Код

$view_sigpic .= $this->member['view_sigpics'] ? "<option value='1' selected='selected'>".$ibforums->lang['yes']."</option>\n<option value='0'>".$ibforums->lang['no']."</option>"
                                                                                          : "<option value='1'>".$ibforums->lang['yes']."</option>\n<option value='0' selected='selected'>".$ibforums->lang['no']."</option>";

Ищем:
Код

'SIG'  => $view_sig."</select>",

Ниже добавляем:
Код

'SIGPIC'  => $view_sigpic."</select>",

открываем sources/lib/usercpfunctions.php
ищем:
Код

'view_sigs'    => $ibforums->input['VIEW_SIGS'],

После добавляем:
Код

'view_sigpics' => $ibforums->input['VIEW_SIGPICS'],

открываем Skin/s*/skin_ucp.php
Ищем в settings_end ()
Код

<tr>
<td width='70%'>{$ibforums->lang['settings_viewsig']}</td>
<td align='left'>{$data[SIG]}</td>
</tr>

Ниже ставим:
<
Код

tr>
<td width='70%'>Отображать картинки в подписях?</td>
<td align='left'>{$data[SIGPIC]}</td>
</tr>

открыавем sources/functions.php
ищем:
Код

m.id, m.name, m.mgroup, m.password, m.email,

Добавляем рядом:
Код

m.view_sigpics,

открываем sources/Topics.php
ищем:
Код

if ($row['use_sig'] == 1)
                              {
                                      if ( $ibforums->vars['sig_allow_html'] == 1 )
                                      {
                                              $poster['signature'] = $this->parser->parse_html($poster['signature'], 0);
                                      }

                                      if ( $ibforums->vars['post_wordwrap'] > 0 )
                                      {
                                              $poster['signature'] = $this->parser->my_wordwrap( $poster['signature'], $ibforums->vars['post_wordwrap']);
                                      }

Ниже:
Код

if ($ibforums->member['view_sigpics']!=1)
                                          $poster['signature']=preg_replace( "/<img src=[\"'](.+?)[\"'].+?".">/", " [<a href='\\1' target='_blank'>Картинка</a>] ", $poster['signature'] );

Потом добавляем таблицу в базу:
Код

ALTER TABLE `ibf_members` ADD `view_sigpics` TINYINT( 1 ) DEFAULT '1' NOT NULL AFTER `view_sigs` ; 

Все. smile
Автор: Hostem
Идея: AlexWM

Автор: sergejzr 9.10.2005, 22:19
Цитата(2man @ 9.10.2005, 20:54)
:

ALTER TABLE `ibf_members` ADD `view_sigpics` TINYINT( 1 ) DEFAULT '1' NOT NULL AFTER `view_sigs` ;

Вот это не нравиться. Плиз предлагай моды без изменения структуры таблиц.

Автор: 2man 11.10.2005, 00:00
А если так:
2. Откройте sources/lib/usercp_functions.php
--Найдите:
Код

if ( (strlen($HTTP_POST_VARS['Post']) > $ibforums->vars['max_sig_length']) and ($ibforums->vars['max_sig_length']) )
        {
            $std->Error( array( 'LEVEL' => 1, 'MSG' => 'sig_too_long' ) );
        }
        
        if ( $HTTP_POST_VARS['key'] != $std->return_md5_check() )
        {
            $std->Error( array( 'LEVEL' => 1, 'MSG' => 'del_post' ) );
        }

--Добавьте НИЖЕ:
Код

function filesize_url($url){
         return ($data = @file_get_contents($url)) ? strlen($data) : false;
      }    

        preg_match_all("/http:\/\/+[-a-zA-Z0-9._\/]+[.]+(gif|jpg|png)/", $HTTP_POST_VARS['Post'], $matches);
        for ($i=0; $i<count($matches[0]); $i++) {
        $summ = $summ + filesize_url($matches[0][$i]);
        }
        if ( $summ > //Размер\\ )
        {
            $std->Error( array( 'LEVEL' => 1, 'MSG' => 'sig_too_big_img' ) );
        }
---Замените в коде //Размер\\ на тот, что необходим вам(размер указывать в Кб)

3. Откройте lang/*/lang_error.php
--Найдите:
Код

$lang = array (

--Добавьте ниже:
Код

sig_too_big_img                    =>    "Суммарный размер изображений в вашей подписи превышает лимит, установленный администратором",

И никаких запросовsmile
Автор: demer
НУ как?

Автор: sergejzr 11.10.2005, 00:09
Это получше, но вот беда, картинки вообще показываться не будут ни у кого. smile

Автор: Mal Hack 11.10.2005, 00:26
Может просто в куку писать (true или false) и сверять?
Быстрый ответ в принципе (сам мод) именно по такому принципу работает.

Автор: sergejzr 11.10.2005, 00:28
Впринципе это даже лучше. Вообще эти картинки в подписи отключить и усё smile
Спасибо, 2man. Надо голосование создать
Добавлено @ 00:32
http://forum.vingrad.ru/index.php?showtopic=66942&unread=1&hl=

Автор: sergejzr 11.10.2005, 23:10
Кука неплохо только для локальных установок на непродолжительное время (такое как вкл.выкл трпнслит).
Как правило установками, зависимыми от копма на котором юзер работает, никто не пользуется. в самом деле, каждый раз на новом месте надо подстраиваться.
Просто получиться мартышкин труд по добавлению такой возможности.

Автор: Mayk 11.10.2005, 23:31
Предложение. А если попробовать компромиссный вариант- где-нибудь на сервере настройки для пользователя всё таки сохранять, но у него(клиента) тоже держать куки с настройками. Далее работа сервера выглядит так
1) клиент входит в систему
2) сервер проверяет, есть ли у клиента кука "всё настроено"
3) если есть - ничего не делает
4) если нет, то сервер откуда-то подгружает настройки и скидывает их куками клиенту + кук "всё настроено".

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

зы. пока не будем рассматривать наличие нескольких браузеров=>наборов кук у клиента.

Автор: Zero 18.10.2005, 09:36
А вот ещё вариант, я у себя так сделал:
Настроить браузер так:
"Показывать только кешированые (рисунки)" и не какого гемора.
А в случае надобности переключать обратно...

Автор: Ciber SLasH 7.11.2005, 03:08
А я вот сделал правило к Proxomitron'у:

Имя фильтра: Cut IMG from SIGNATURE
Пределы:
  • Совпадения с URL: forum.vingrad.ru
  • Разрешить многократное совпадение: checked
Границы совпадения: $NEST(<!--Signature-->,<!--E-Signature-->)
Число байт: 800
Поиск и замена:
  • Выражение: (\# $NEST(<!--aimg-->,<!--/aimg-->))+ \#
  • Текст замены: \@
и.... пращайте картинки в подписях... smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)