Jump to content

(CSI/IPS/MODULE) Контактная информация

Featured Replies

index.php?app=downloads&module=display&s

Название: (CSI/IPS/MODULE) Контактная информация

Добавил: WebFox

Добавлен: 24 Мар 2015

Категория: Хуки, Модификации для IP.Board

Название по-русски : (CSI/IPS/MODULE) Контактная информация

Версия IP.Board: 3.4.x

Лицензия: _creativecommons.org/licenses/by-nc-nd/4.0/

Совместная разработка CYBERSPACE Industries и FM-Web.uz.

Блок для боковой панели, позволяющий вывести контактную информацию пользователей форума.

В этом дополнении используются иконки "Font Awesome". Для подключения иконок "Font Awesome" необходимо установить hook .

Основные возможности:

  • доступно 5 контактов для заполнения;
  • включение / отключение всего блока с контактной информацией и для каждого из контактов;
  • параметры доступа групп пользователей для всего блока с контактной информацией и для каждого из контактов;
  • автодополнение при наборе имени пользователя для для добавления в контакт;
  • поле для заметки, позволяющее вывести дополнительную информацию о контакте;
  • поля для контактной информации Skype, ВКонтакте и Facebook.

Link to comment
https://ipbmafia.ru/topic/10915-csiipsmodule-kontaktnaya-informaciya/
Share on other sites

Отличный хук, взял себе ток иконки ВК и Skype очень маленькие. И когда жмёшь на иконку заметки, нечего не происходит Как исправить ?


А всё разобрался, всё работает. Спасибо за хук, давно искал его.

Edited by igor

Link to comment
https://ipbmafia.ru/topic/10915-csiipsmodule-kontaktnaya-informaciya/?&do=findComment&comment=84259
Share on other sites

Хук может быть и хороший, но реализация унылая. Нет алгоритмизации, в простонародье просто г-код.

 

Весь этот код

      'info'          => array(
        0               => array(
          'include'       => $this->settings['csiIPS_contactInfo_row01_include'],
          'member_group'  => $this->settings['csiIPS_contactInfo_row01_userGroups'],
          'username'      => $this->settings['csiIPS_contactInfo_row01_username'],
          'skype'         => $this->settings['csiIPS_contactInfo_row01_skype'],
          'note'          => $this->settings['csiIPS_contactInfo_row01_note'],
          'vk'            => $this->settings['csiIPS_contactInfo_row01_vk'],
          'fb'            => $this->settings['csiIPS_contactInfo_row01_fb'],
        ),
        1               => array(
          'include'       => $this->settings['csiIPS_contactInfo_row02_include'],
          'member_group'  => $this->settings['csiIPS_contactInfo_row02_userGroups'],
          'username'      => $this->settings['csiIPS_contactInfo_row02_username'],
          'note'          => $this->settings['csiIPS_contactInfo_row02_note'],
          'skype'         => $this->settings['csiIPS_contactInfo_row02_skype'],
          'vk'            => $this->settings['csiIPS_contactInfo_row02_vk'],
          'fb'            => $this->settings['csiIPS_contactInfo_row02_fb'],
        ),
        2               => array(
          'include'       => $this->settings['csiIPS_contactInfo_row03_include'],
          'member_group'  => $this->settings['csiIPS_contactInfo_row03_userGroups'],
          'username'      => $this->settings['csiIPS_contactInfo_row03_username'],
          'note'          => $this->settings['csiIPS_contactInfo_row03_note'],
          'skype'         => $this->settings['csiIPS_contactInfo_row03_skype'],
          'vk'            => $this->settings['csiIPS_contactInfo_row03_vk'],
          'fb'            => $this->settings['csiIPS_contactInfo_row03_fb'],
        ),
        3               => array(
          'include'       => $this->settings['csiIPS_contactInfo_row04_include'],
          'member_group'  => $this->settings['csiIPS_contactInfo_row04_userGroups'],
          'username'      => $this->settings['csiIPS_contactInfo_row04_username'],
          'note'          => $this->settings['csiIPS_contactInfo_row04_note'],
          'skype'         => $this->settings['csiIPS_contactInfo_row04_skype'],
          'vk'            => $this->settings['csiIPS_contactInfo_row04_vk'],
          'fb'            => $this->settings['csiIPS_contactInfo_row04_fb'],
        ),
        4               => array(
          'include'       => $this->settings['csiIPS_contactInfo_row05_include'],
          'member_group'  => $this->settings['csiIPS_contactInfo_row05_userGroups'],
          'username'      => $this->settings['csiIPS_contactInfo_row05_username'],
          'note'          => $this->settings['csiIPS_contactInfo_row05_note'],
          'skype'         => $this->settings['csiIPS_contactInfo_row05_skype'],
          'vk'            => $this->settings['csiIPS_contactInfo_row05_vk'],
          'fb'            => $this->settings['csiIPS_contactInfo_row05_fb'],
        ),
      ),
    );
	
    if ($settings['member_group']) {$settings['member_group'] = IPSMember::isInGroup($this->memberData, explode(',', $settings['member_group']));}

    if ($settings['info'][0]['member_group']) {$settings['info'][0]['member_group'] = IPSMember::isInGroup($this->memberData, explode(',', $settings['info'][0]['member_group']));}
    if ($settings['info'][1]['member_group']) {$settings['info'][1]['member_group'] = IPSMember::isInGroup($this->memberData, explode(',', $settings['info'][1]['member_group']));}
    if ($settings['info'][2]['member_group']) {$settings['info'][2]['member_group'] = IPSMember::isInGroup($this->memberData, explode(',', $settings['info'][2]['member_group']));}
    if ($settings['info'][3]['member_group']) {$settings['info'][3]['member_group'] = IPSMember::isInGroup($this->memberData, explode(',', $settings['info'][3]['member_group']));}
    if ($settings['info'][4]['member_group']) {$settings['info'][4]['member_group'] = IPSMember::isInGroup($this->memberData, explode(',', $settings['info'][4]['member_group']));}

    if ($settings['info'][0]['username']) {$settings['info'][0]['username'] = IPSText::getTextClass('bbcode')->preDisplayParse(IPSText::getTextClass('bbcode')->preDbParse("[0]['username'] . "']"));}
    if ($settings['info'][1]['username']) {$settings['info'][1]['username'] = IPSText::getTextClass('bbcode')->preDisplayParse(IPSText::getTextClass('bbcode')->preDbParse("[1]['username'] . "']"));}
    if ($settings['info'][2]['username']) {$settings['info'][2]['username'] = IPSText::getTextClass('bbcode')->preDisplayParse(IPSText::getTextClass('bbcode')->preDbParse("[2]['username'] . "']"));}
    if ($settings['info'][3]['username']) {$settings['info'][3]['username'] = IPSText::getTextClass('bbcode')->preDisplayParse(IPSText::getTextClass('bbcode')->preDbParse("[3]['username'] . "']"));}
    if ($settings['info'][4]['username']) {$settings['info'][4]['username'] = IPSText::getTextClass('bbcode')->preDisplayParse(IPSText::getTextClass('bbcode')->preDbParse("[4]['username'] . "']"));}

можно заменить одним этим

	for( $i=0; $i<=4; $i++ )
	{
		$info = array(
			'include'       => $this->settings['csiIPS_contactInfo_row'.$i.'_include'],
			'member_group'  => $this->settings['csiIPS_contactInfo_row'.$i.'_userGroups'],
			'username'      => $this->settings['csiIPS_contactInfo_row'.$i.'_username'],
			'note'          => $this->settings['csiIPS_contactInfo_row'.$i.'_note'],
			'skype'         => $this->settings['csiIPS_contactInfo_row'.$i.'_skype'],
			'vk'            => $this->settings['csiIPS_contactInfo_row'.$i.'_vk'],
			'fb'            => $this->settings['csiIPS_contactInfo_row'.$i.'_fb'],
		);
		
		if( $info['member_group'] )
		{
			$info['member_group'] = IPSMember::isInGroup( $this->memberData, explode( ',', $info['member_group'] ) );
		}
		if( $info['username'] )
		{
			$info['username'] = IPSText::getTextClass('bbcode')->preDisplayParse( IPSText::getTextClass('bbcode')->preDbParse( "}']" ) );
		}
		
		$settings['info'][$i] = $info;
	}

И опять эти повторяющиеся настройки для каждой отдельной сущности. По 7 настроек на 5 сущности это 35 лишних настроек в бд. Может быть не очень удобно, но можно создать одно поле textarea, и вписывать каждую сущность с новой строки в формате key=value&key-n=value-n. Поле с описанием настроек имеет тип text, можно туда всунуть js скрипт, который бы отформатировал этот формат в удобный для  управления пользователем.

Edited by soka

Link to comment
https://ipbmafia.ru/topic/10915-csiipsmodule-kontaktnaya-informaciya/?&do=findComment&comment=84388
Share on other sites

soka, благодарю за критику.

 

 

 

Поле с описанием настроек имеет тип text, можно туда всунуть js скрипт, который бы отформатировал этот формат в удобный для  управления пользователем.

Разве ИПБ не фильтрует яваскрипт в настройках? Никогда не встраивал, поэтому не знаю.

 

По поводу качества кода, согласен. Но хук делает то, что должен. Большего от него нет необходимости.

Но возьму твои рекомендации на заметку. Про цикл я не подумал. :)

Link to comment
https://ipbmafia.ru/topic/10915-csiipsmodule-kontaktnaya-informaciya/?&do=findComment&comment=84390
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.