Перейти к контенту

Forum icons v 1.0.2


Рекомендуемые сообщения

я на 2.3.5 немогу поставить, немогу найти файл ./sources/admin/ad_forums.php

Ну так инструкция для 2.0, вы не заметили? :D ссылка на инструкцию для 2.3 есть в прикреплённой темы, для особенных.

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...
  • Ответы 221
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

гасколько я понимаю здесь нужно сделать SQl запрос?

 

######################################################################

Execute the following SQL queries on the database

======================================================================

ALTER TABLE `ibf_forums` ADD `icon` text NOT NULL;

ALTER TABLE `ibf_skin_sets` ADD `set_use_fimgs` tinyint(1) DEFAULT '1';

======================================================================

 

а как его сделать?

Ссылка на комментарий
Поделиться на других сайтах

гасколько я понимаю здесь нужно сделать SQl запрос?

 

######################################################################

Execute the following SQL queries on the database

======================================================================

ALTER TABLE `ibf_forums` ADD `icon` text NOT NULL;

ALTER TABLE `ibf_skin_sets` ADD `set_use_fimgs` tinyint(1) DEFAULT '1';

======================================================================

 

а как его сделать?

АЦ => Прочее => Управление SQL => Инструменты => Выполнение запроса к базе данных :D

Ссылка на комментарий
Поделиться на других сайтах

  • 3 месяца спустя...

Может кому пригодиться. Перевел и поправил немного код под 2.3.6

Себе поставил работает.

+---------------------------------------------------------------------
|   Invision Power Board v2.3.x
|  =================================================================
|   http://www.invisionpower.com
|   http://www.ibresource.ru
|  =================================================================
+---------------------------------------------------------------------
|
|   > Forum Icons PLUS
|   > by Alex/AT, based on gtasa "Forum Icons" mod
|
|   > Version: 1.1
|   > Date: 11.01.2007
|   > Last Update: 22.04.2007
|
+---------------------------------------------------------------------
|
|   > Version 1.1
|   > - Updated for IPB 2.2.2
|   > - Added AJAX icon toggle for IPB 2.2.2
|
|   > Version 1.0
|   > - Initial release
|   > - Made images clickable (with the original function of marking
|   >   forums as read, a bit hacky but works)
|   > - Made custom images work on redirects, too
|   > - Added possibility to enable/disable custom icons per skin
|   > - Icon list is sorted by name
|
|   > *** gtasa Forum Icons
|   > - Original mod
|
+---------------------------------------------------------------------
|
|   > This mod allows to assign custom icons (instead of standard IPB
|   > ones) to the forums. It does also allow to enable/disable
|   > custom icons per skin set (good for skins which make custom
|   > icons behave badly :).
|
|   > Place custom icons (.GIF) files into the ./forumicons folder
|   > which you must create in the root folder of IPB. The images
|   > must be named <icon>.gif and <icon_off>.gif, the first is for
|   > forums with new messages, the second is for forums without new
|   > messages.
|
|   > Before testing, don't forget to enable custom icons in the
|   > skin manager (using skin options).
|
+---------------------------------------------------------------------
|
|   > Author is not responsible for any consequences of using this
|   > forum modification, including those caused by this module
|   > Use at your own risk
|
+---------------------------------------------------------------------

######################################################################
АЦ => Прочее => Управление SQL => Инструменты => Выполнение запроса к базе данных
======================================================================
ALTER TABLE `ibf_forums` ADD `icon` text NOT NULL;
ALTER TABLE `ibf_skin_sets` ADD `set_use_fimgs` tinyint(1) DEFAULT '1';
======================================================================

######################################################################
Создать ./forumicons Папку в корне где расположен форум
======================================================================

######################################################################
./sources/classes/class_forums.php
======================================================================
Найти:
----------------------------------------------------------------------
	if ( $forum_data['img_new_post'] == '<{C_ON}>' )
	{
		$forum_data['img_new_post'] = $this->ipsclass->compiled_templates['skin_boards']->forum_img_with_link($forum_data['img_new_post'], $forum_data['id']);
	}
	else if ( $forum_data['img_new_post'] == '<{C_ON_CAT}>' )
	{
		$forum_data['img_new_post'] = $this->ipsclass->compiled_templates['skin_boards']->subforum_img_with_link($forum_data['img_new_post'], $forum_data['id']);
	}
----------------------------------------------------------------------
Вставить после:
----------------------------------------------------------------------
	# [B] Forum icons (Alex/AT)
	else if ( substr($forum_data['img_new_post'], 0, 12) == '<img tag="" ' )
	{
		$forum_data['img_new_post'] = '<img '.substr($forum_data['img_new_post'], 12);
		$forum_data['img_new_post'] = $this->ipsclass->compiled_templates['skin_boards']->forum_img_with_link($forum_data['img_new_post'], $forum_data['id']);
	}
	else if ( substr($forum_data['img_new_post'], 0, 16) == '<img tag="_CAT" ' )
	{
		$forum_data['img_new_post'] = '<img '.substr($forum_data['img_new_post'], 16);
		$forum_data['img_new_post'] = $this->ipsclass->compiled_templates['skin_boards']->subforum_img_with_link($forum_data['img_new_post'], $forum_data['id']);
	}
	# [E] Forum icons (Alex/AT)
----------------------------------------------------------------------
Найти:
----------------------------------------------------------------------
return ( $forum_data['last_post'] && $forum_data['last_post'] > $rtime ) ? "<{C_ON".$sub_cat_img."}>" : "<{C_OFF".$sub_cat_img."}>";
----------------------------------------------------------------------
Заменить на:
----------------------------------------------------------------------
# [B] Forum icons (Alex/AT)
if ($this->ipsclass->skin['_fimgs'] AND $forum_data['icon']){
	return ( $forum_data['last_post'] && $forum_data['last_post'] > $rtime ) ? ( "<img tag=\"".$sub_cat_img."\" src=\"".$this->ipsclass->vars['board_url']."/forumicons/".$forum_data['icon'].".png\">" )
	: "<img src=\"".$this->ipsclass->vars['board_url']."/forumicons/".$forum_data['icon']."_off.png\">";
}else{
		return ( $forum_data['last_post'] && $forum_data['last_post'] > $rtime ) ? "<{C_ON".$sub_cat_img."}>" : "<{C_OFF".$sub_cat_img."}>";
}
# [E] Forum icons (Alex/AT)
======================================================================

######################################################################
./sources/action_admin/forums.php
======================================================================
Найти:
----------------------------------------------------------------------
$form['parent_id']	= $this->ipsclass->adskin->form_dropdown("parent_id"   , $forumlist, ( isset($_POST['parent_id']) AND $_POST['parent_id'] ) 	? $_POST['parent_id']	: $forum['parent_id'] );
	$form['status']	   = $this->ipsclass->adskin->form_dropdown("status"	  , $dd_state , ( isset($_POST['status']) AND $_POST['status'] )			? $_POST['status']	   : $forum['status'] );
	$form['sub_can_post'] = $this->ipsclass->adskin->form_yes_no(  'sub_can_post', ( isset($_POST['sub_can_post']) AND $_POST['sub_can_post'] )		 ? $_POST['sub_can_post'] : ( $forum['sub_can_post'] == 1 ? 0 : 1 ) );
----------------------------------------------------------------------
Вставить после:
----------------------------------------------------------------------
	# [B] Forum icons (Alex/AT)
	$dh = opendir( ROOT_PATH.'forumicons' );
	$icons = array();
	$icons[] = array("", "Default Icons");
	while ($icon = readdir($dh)) {
		if((preg_match("/(.gif)/",$icon) || preg_match("/(.jpg)/",$icon) || preg_match("/(.jpeg)/",$icon) || preg_match("/(.png)/",$icon)) && !preg_match("/(_off)/",$icon)) {
			if($icon != '.' || $icon != '..') {
			$iconname = str_replace(".png","",$icon);
			$icons[] = array($iconname, $iconname);
			}
		}
	}
	closedir($dh);

	sort($icons);

	$form['icon'] = $this->ipsclass->adskin->form_dropdown( "icon", $icons, $_POST['icon'] ? $_POST['icon'] : $forum['icon'] );
	# [E] Forum icons (Alex/AT)
----------------------------------------------------------------------
Найти:
----------------------------------------------------------------------
	$save = array (  'name'					=> $this->ipsclass->input['name'],
----------------------------------------------------------------------
Вставить после:
----------------------------------------------------------------------
					# [B] Forum icons (Alex/AT)
					 'icon'					=> $this->ipsclass->input['icon'],
					# [E] Forum icons (Alex/AT)
======================================================================

######################################################################
./skin_acp/IPB2_Standard/acp_skin_html/cp_skin_forums.php
======================================================================
Найти:
----------------------------------------------------------------------
<tr>
  		<td width='40%' class='tablerow1'><strong>Описание</strong><div class='desctext'>HTML разрешен.<br />Переносы строк автоматически заменяются на <br>.</div></td>
  		<td width='60%' class='tablerow2'>{$form['description']}</td>
	</tr>
----------------------------------------------------------------------
Вставить перед:
----------------------------------------------------------------------
<!-- [B] Forum icons (Alex/AT) -->
<tr>
	<td width='40%' class='tablerow1'><strong>Иконка</strong></td>
	<td width='60%' class='tablerow2'>{$form['icon']}</td>
</tr>
<!-- [E] Forum icons (Alex/AT) -->
======================================================================

######################################################################
./sources/action_admin/skin_sets.php
======================================================================
Найти:
----------------------------------------------------------------------
	$new['set_name']		  = $this->ipsclass->input['set_name'];
	$new['set_image_dir']	 = $this_set['set_image_dir'];
	$new['set_hidden']		= $this->ipsclass->input['hidden'];
	$new['set_default']	   = 0;
----------------------------------------------------------------------
Вставить после:
----------------------------------------------------------------------
	# [B] Forum icons (Alex/AT)
	$new['set_use_fimgs']	 = $this->ipsclass->input['set_use_fimgs'];
	# [E] Forum icons (Alex/AT)
----------------------------------------------------------------------
Найти:
----------------------------------------------------------------------
					 'set_css_method'	  => $this->ipsclass->input['set_css_method'],
					 'set_hidden'		  => $this->ipsclass->input['set_hidden'],
					 'set_image_dir'	   => $this->ipsclass->input['set_image_dir'],
					 'set_author_email'	=> $this->ipsclass->input['set_author_email'],
----------------------------------------------------------------------
Вставить после:
----------------------------------------------------------------------
					# [B] Forum icons (Alex/AT)
					 'set_use_fimgs'	   => $this->ipsclass->input['set_use_fimgs'],
					# [E] Forum icons (Alex/AT)
----------------------------------------------------------------------
Найти:
----------------------------------------------------------------------
						   <td width='60%' class='tablerow1'>style_emoticons/ ".$this->ipsclass->adskin->form_dropdown('set_emoticon_folder', $emodirs, $row['set_emoticon_folder'])."</td>
						 </tr>
----------------------------------------------------------------------
Вставить после:
----------------------------------------------------------------------
						<!-- [B] Forum icons (Alex/AT) -->
						 <tr>
						   <td width='40%' class='tablerow1'>Использовать нестандартные иконки для форумов?</td>
						   <td width='60%' class='tablerow1'>".$this->ipsclass->adskin->form_yes_no('set_use_fimgs', $row['set_use_fimgs'])."</td>
						 </tr>
						<!-- [E] Forum icons (Alex/AT) -->
======================================================================

######################################################################
./sources/ipsclass.php
======================================================================
Найти:
----------------------------------------------------------------------
		$db_skin = $this->DB->simple_exec_query( array( 'select' => 'set_cache_css,set_cache_wrapper,set_cache_macro,set_image_dir,set_emoticon_f
older,set_skin_set_id,set_name,set_css_method', 'from' => 'skin_sets', 'where' => 'set_skin_set_id='.$id ) );
----------------------------------------------------------------------
Заменить на:
----------------------------------------------------------------------
		$db_skin = $this->DB->simple_exec_query( array( 'select' => 'set_cache_css,set_cache_wrapper,set_cache_macro,set_image_dir,set_emoticon_f
older,set_skin_set_id,set_name,set_css_method,set_use_fimgs', 'from' => 'skin_sets', 'where' => 'set_skin_set_id='.$id ) );
----------------------------------------------------------------------
Найти:
----------------------------------------------------------------------
	$this->skin['_css']		 = $db_skin['set_cache_css'];
	$this->skin['_wrapper']	 = $db_skin['set_cache_wrapper'];
	$this->skin['_macro']	   = $db_skin['set_cache_macro'];
	$this->skin['_imagedir']	= $db_skin['set_image_dir'];
	$this->skin['_emodir']	  = $db_skin['set_emoticon_folder'];
	$this->skin['_setid']	   = $db_skin['set_skin_set_id'];
----------------------------------------------------------------------
Вставить после:
----------------------------------------------------------------------
	# [B] Forum icons (Alex/AT)
	$this->skin['_fimgs']	   = $db_skin['set_use_fimgs'] ? 1 : 0;
	# [E] Forum icons (Alex/AT)
======================================================================

######################################################################
./sources/action_public/boards.php
======================================================================
Найти: (2 раза)
----------------------------------------------------------------------
			//-----------------------------------------
			// Get all subforum stats
			// and calculate
			//-----------------------------------------

			if ( isset($this->ipsclass->vars['forum_cache_minimum']) AND $this->ipsclass->vars['forum_cache_minimum'] )
			{
				$forum_data['description'] = "<!--DESCRIPTION:{$forum_data['id']}-->";
				$need_desc[] = $forum_data['id'];
			}

			if ( $forum_data['redirect_on'] )
			{
				$forum_data['redirect_hits']	= $this->ipsclass->do_number_format( $forum_data['redirect_hits'] );

				$forum_data['redirect_target'] 	= isset($forum_data['redirect_target']) ? $forum_data['redirect_target'] : '_parent';

				$temp_html .= $this->ipsclass->compiled_templates['skin_boards']->forum_redirect_row( $forum_data );
			}
			else
			{
				$temp_html .= $this->ipsclass->compiled_templates['skin_boards']->ForumRow( $this->ipsclass->forums->forums_format_lastinfo( $this->ipsclass->forums->forums_calc_children( $forum_data['id'], $forum_data ) ) );
			}
----------------------------------------------------------------------
Заменить (2 раза) 
----------------------------------------------------------------------
			//-----------------------------------------
			// Get all subforum stats
			// and calculate
			//-----------------------------------------

			if ( isset($this->ipsclass->vars['forum_cache_minimum']) AND $this->ipsclass->vars['forum_cache_minimum'] )
			{
				$forum_data['description'] = "<!--DESCRIPTION:{$forum_data['id']}-->";
				$need_desc[] = $forum_data['id'];
			}

			# [B] Forum icons (Alex/AT)
			if ( $forum_data['redirect_on'] )
			{
				# Alex/AT Mod - redirect can have images, too
				if ($this->ipsclass->skin['_fimgs'] AND ($forum_data['icon'])) {
					$temp_html_redir = $this->ipsclass->compiled_templates['skin_boards']->forum_redirect_row( $forum_data );
					$temp_html .= strtr($temp_html_redir, array('<{BR_REDIRECT}>' => "<img src=\"".$this->ipsclass->vars['board_url']."/forumicons/".$forum_data['icon'].".gif\">"));
				} else {
					$temp_html .= $this->ipsclass->compiled_templates['skin_boards']->forum_redirect_row( $forum_data );
				}
			}
			else
			{
				$temp_html .= $this->ipsclass->compiled_templates['skin_boards']->ForumRow( $this->ipsclass->forums->forums_format_lastinfo( $this->ipsclass->forums->forums_calc_children( $forum_data['id'], $forum_data ) ) );
			}
			# [E] Forum icons (Alex/AT)
======================================================================

######################################################################
./jscripts/ipb_forum.js
======================================================================
Найти:
----------------------------------------------------------------------
function boards_send_marker_update( fid, is_subforum )
{
try
{
var imgsrc = document.getElementById( 'f-'+fid ).innerHTML;
if ( imgsrc )
{
var regex  = new RegExp( "src=['\"](.*/)("+regex_markers+")['\"]");var results=imgsrc.match(regex);if(img_markers[results[2]]){imgsrc=imgsrc.replace(regex,"src='$1"+img_markers[results[2]]+"'");document.getElementById('f-'+fid).innerHTML=imgsrc;}}}catch(e){}var text_return=0;do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){return;};text_return=xmlobj.xmlhandler.responseText;};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);xmlobj.process(ipb_var_base_url+'act=xmlout&do=mark-forum&fid='+fid+'&sf='+is_subforum);if(text_return==1){return false;}}
----------------------------------------------------------------------
Заменить на:
----------------------------------------------------------------------
function boards_send_marker_update( fid, is_subforum )
{
try
{
var imgsrc = document.getElementById( 'f-'+fid ).innerHTML;
if ( imgsrc )
{
var regex  = new RegExp( "src=['\"](.*/)("+regex_markers+")['\"]");
var results=imgsrc.match(regex);
if(results && img_markers[results[2]]){
imgsrc=imgsrc.replace(regex,"src='$1"+img_markers[results[2]]+"'");
document.getElementById('f-'+fid).innerHTML=imgsrc;
}
else
{
var regex  = new RegExp( "src=['\"](.*forumicons/)(.+)(\\..+)['\"]");
var results=imgsrc.match(regex);
if(results && results[2]){
imgsrc=imgsrc.replace(regex,"src='$1$2_off$3'");
document.getElementById('f-'+fid).innerHTML=imgsrc;
}
}
}
}catch(e){}var text_return=0;do_request_function=function(){if(!xmlobj.readystate_ready_and_ok()){return;};text_return=xmlobj.xmlhandler.responseText;};xmlobj=new ajax_request();xmlobj.onreadystatechange(do_request_function);xmlobj.process(ipb_var_base_url+'act=xmlout&do=mark-forum&fid='+fid+'&sf='+is_subforum);if(text_return==1){return false;}}
======================================================================

 

Иконки поменяны с .gif на .png

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

на 2.3.4 все работает с png и отметкой о прочтении, единственное где-то ошибочка была, поправил, вспомню - напишу.

а вот для 3 никто не пробовал ставить?

Ссылка на комментарий
Поделиться на других сайтах

  • 5 месяцев спустя...
  • 3 недели спустя...

Как я понял... Илюха про ошибку не вспомнил... я заметил... Прописал на форум иконки... но она не отображается, в адресе прописывается "<img src="forumicons/home.gif_off.png"/>" как исправать? (скрипт выше от "ladaxclub")

 

Заранее спасибо.

Изменено пользователем Deluxe
Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
Прочитал всю тему.. видел ответ на мой вопрос, но все-таки хочу перестраховаться. Как поставить на форуме , чтобы в каждом разделе была картинка какую Я захочу. http://www.fotohost.by/show/7d7ce6d6bf5d45c660ac334a3e3e0b53 вот пример того, чего Я хочу. Моя версия форума IPB 2.3.6. выложите рабочий мод или что нада для этого. Спасибо всем
Ссылка на комментарий
Поделиться на других сайтах

Прочитал всю тему.. видел ответ на мой вопрос, но все-таки хочу перестраховаться. Как поставить на форуме , чтобы в каждом разделе была картинка какую Я захочу. http://www.fotohost.by/show/7d7ce6d6bf5d45c660ac334a3e3e0b53 вот пример того, чего Я хочу. Моя версия форума IPB 2.3.6. выложите рабочий мод или что нада для этого. Спасибо всем

Firefox не может найти сервер www.fotohost.by.

WTF?

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...
WTF?

В Белоруссии теперь свой собственный интернет, с блэкджеком ...

это nactop :)

Сори за неактивность. Но все равно вроде бы все появилось.. когда Я ставил по тому примеру, но все же не работает.(((Мб даст кто мод под ipb 2.3.6 Благодарю.

 

WTF?

В Белоруссии теперь свой собственный интернет, с блэкджеком ...

это nactop :)

Сори за неактивность. Но все равно вроде бы все появилось.. когда Я ставил по тому примеру, но все же не работает.(((Мб даст кто мод под ipb 2.3.6 Благодарю.

Ссылка на комментарий
Поделиться на других сайтах

  • 3 месяца спустя...

Приветствую всех форумчан, установил эту модификацию на 2.2.2, всё встало отлично (правда пришлось чуть подредактировать название классов, у меня другие) иконки работают, исправил глюк по рекомендации Sannis на прошлой странице, иконки теперь не исчезают при нескольких нажатиях, но осталась ещё одна маленькая проблемка, а именно:

 

Когда отображается иконка о непрочитаном форуме, я нажимаю её и иконка меняется на прочитаную с суффиксом _off Но при этом иконка продолжает оставаться активной, то есть при наведении на неё мышкой появляется сообщение "Отметить форум прочитанным?" Нажатие на активную иконку ничего не меняет, просто иконка остаётся кликабельной без видимых изменений. Но если обновить страницу, то ссылка пропадает, иконки становятся пасивными (то есть не кликабельными)

Подозреваю что проблема в обработчике Ajax в файле ipb_forum.js но где именно копать и что на что заменить не знаю чтобы иконка после отметки форума прочитанным без перезагрузки страницы стновилась пасивной :(

На 2.3.6 такая же проблема.

Изменено пользователем Stas11
Ссылка на комментарий
Поделиться на других сайтах

копая код заметил лишнюю скобку в коде

document.getElementById('f-'+fid).innerHTML=imgsrc;
}
}
}
}catch(e){}var text_return=0;

удалил лишнюю скобку } но при нажатии на иконку страница начала перезагружаться, то есть AJAX слетел, значит дело не в нём :(

Полагаю что данный баг описанный мною присутствует у всех кто ставил эту модификацию, но решил ли её кто нибудь?

Ссылка на комментарий
Поделиться на других сайтах

Товарищи, ну помогите плиз :) Баг не смертельный, но хотелось бы чтобы модификация срабатывала корректно и после отметки иконки прочтённым она не была активной ссылкой. Как Ajax поправить и где? Я уже третий день бъюсь с ним и ни как не пойму в каком месте конфликт. :(
Ссылка на комментарий
Поделиться на других сайтах

Дайте ссылку на ваш форум :-)
Ссылка на комментарий
Поделиться на других сайтах

Дайте ссылку на ваш форум :-)

http://www.coinsmarket.ru/forum/

 

Sannis Вся надежда на Вас :) Заранее благодарен за помощь! :drinks:

У меня уже стоит несколько Ваших модификаций (быстрая цитата и ещё что то) всё работает на ура!

Изменено пользователем Stas11
Ссылка на комментарий
Поделиться на других сайтах

В ipb_forum.js замените

document.getElementById('f-'+fid).innerHTML=imgsrc;

на

document.getElementById('f-'+fid).parentNode.innerHTML=imgsrc;

Костыльно, но на обычных скинах должно работать.

Ссылка на комментарий
Поделиться на других сайтах

Костыльно, но на обычных скинах должно работать.

Sannis Огромное спасибо за помощь! Всё заработало как положено. :)

Заменил указанный Вами код в двух местах (дримвьювер 2 таких строки нашёл) и после этого всё стало нормально, после отметки форума прочитанным, иконка становится пассивной :drinks:

Ещё раз спасибо за помощь!, другим тоже будет полезно подправить свой форум тем кто ставил данную модификацию. :)

Ссылка на комментарий
Поделиться на других сайтах

  • 1 год спустя...
Парни, спасибо за мод для 2.3.6, проглядел, а где прописывается к какому форуму какая иконка, и посоветуйте программу для того что бы иконка "делалась" прозрачной или это автоматически происходит ?
Ссылка на комментарий
Поделиться на других сайтах


×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.