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

[2.3.x]Отметить людей; IP.Gallery; RC 1.3


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

  • Ответы 92
  • Создана
  • Последний ответ

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

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

Загружено фотографий

сайт автора яваскрипта - http://marqueetool.net/

проверьте там работает?

 

в ие не хочет сапака...

зато вот здесь работает http://www.defusion.org.uk/

 

сделал в профиле выпадающее меню, с фотками на которых отмечен, но не сильно нравится, какие еще будут решения???

http://i047.radikal.ru/0806/ea/8d559cdcf21c.jpg

http://i052.radikal.ru/0806/13/758c35d14f1f.jpg

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

боюсь что defusion позволяет только одно выделение, там маловато примеров

выпадающее меню неплохо, но если фоток будет 300, то тогда придется мучатся, лучше сделать отдельный блок на странице профиля, или еще проще отдельную страницу с выводом всех фоток, использованием st, в общем стандартным механизмом, как тема

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

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

сделал закладку как у компонентов с выводом превьюшек фоток

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

супер

просто для 2.1.х так не сделаешь, а я приоритетно пишу для него

 

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

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

BooDi

поделись если для >2.2 делал )

Arhar

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

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

для 2.2 и 2.3 оказалось легко, сам не ожидал

создаешь в /forum/sources/components_public/profile/

два файла: например gde.conf.php и gde.php

в конфиг файле

<?php
$CONFIG['plugin_name']		= 'Где я есть'; // что будет написано на кнопке
$CONFIG['plugin_lang_bit']	= 'pp_tab_gde';
$CONFIG['plugin_key']		 = 'gde';
$CONFIG['plugin_enabled']	 = 1; // включение
$CONFIG['plugin_order'] = 1; // порядок вывода закладок
?>

 

а сам плагин получается:

<?php

if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Куда???</h1>Стоять нах.";
exit();
}

class profile_gde
{
var $ipsclass;

	function return_html_block( $member=array() ) 
{
// эта часть для отображения в скольких фотках человек отмечен
	$this->ipsclass->DB->build_query( array( 'select'   => 'COUNT(image_id) as kolvo',
				 'from'	 => 'gallery_peoples',
				 'where'	=> 'member_id='.$member['id'],
				  ) );

	$this->ipsclass->DB->exec_query();
	$roww = $this->ipsclass->DB->fetch_row();
	if($roww['kolvo']==1) $skoka='1 фотографии'; else $skoka=$roww['kolvo'].' фотографиях';
	$i=0; $prisutstvie="Меня отметили на ".$skoka.":<br><br><table><tr>";

// дальше формирование таблицы с превьюшками
	$this->ipsclass->DB->build_query( array( 'select'   => 'f.image_id as imga',
				 'from'	 => array( 'gallery_peoples' => 'f' ),
				 'where'	=> 'f.member_id='.$member['id'],
				 'add_join' => array( 0 => array( 'select' => 'm.masked_file_name as flnm',
								  'from'   => array( 'gallery_images' => 'm' ),
								  'where'  => 'm.id=f.image_id',
								  'type'   => 'left' ) ) ) );

	$this->ipsclass->DB->exec_query();
		while( $row = $this->ipsclass->DB->fetch_row() )
	{

	$i++;

			// этот кусок для определения вертикальная или горизонтальная, пока только для того, чтоп все были одного размера
			// исправь на свой полный путь до файлов галереи
	$img_size = getimagesize('/home/public_html/forum/uploads/gallerys/tn_'.$row['flnm']); 
 	$file_width = $img_size[0];
 	$file_height = $img_size[1];
	if ($file_width>$file_height) $storona="width='200'"; else $storona="height='200'";

			// ссылки может придёцо подредактировать до нужного
	$prisutstvie.="<td><a href='index.php?automodule=gallery&req=si&img=".$row['imga']."'><img src='/uploads/gallerys/tn_".$row['flnm']."' ".$storona."></a></td>";

			// это тоже пока заготовка, чтоб в строке по три фотки было
	if($i==3) {$prisutstvie.="</tr><tr>"; $i=0;}
	}
	$prisutstvie.="</tr></table>";

		return $prisutstvie ? $prisutstvie : $this->ipsclass->compiled_templates['skin_profile']->personal_portal_no_content( 'err_no_posts_to_show' );
}

}
?>

 

пока даю в том виде, в котором у меня оно сейчас. каждый думаю изменит как он хочет...

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

свой полный путь до файлов

getimagesize(ROOT_PATH.'uploads/gallerys/tn_'.$row['flnm']);

href='index.php?automodule

href='{$this->ipsclass->base_url}automodule

+ еще один left join к таблице категорий по image.category_id=category.id за category.perms_view (как то так, подсмотри в бд)

и потом

if(!$this->ipsclass->check_perms($row['perms_view'])) continue;

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

что то я не понял, как на 2.3.3 (2.1.1) должен отображаться отмечение людей? или что надо исправить? напишите толковый мануал))
Ссылка на комментарий
Поделиться на других сайтах

просмотрел топик, вроде стало яснее, но я так и не понял как должно работать! я всё выполнил и доп.действия тоже, но как должно происходить само выделение? я когда нажимаю отметить появляется снизу форма для указания ника и справо непонятный сервый столбец высотой с фотографию... столбец статичен... а при попытке нажать на фотографию она увеличивается!

 

IPB 2.3.3 IPG 2.2.1

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

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

Афтору респект всё вышло !

Как насчет настройки, чтоб пользователь мог разрешать только друзьям отмечать его, что скажите :D ?

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

Вобщем заметил баг тоесть если страница не полностью загрузилась а курсор держать на выделеном имени то потом когда отводиш вся картинка затемняется а когда наводиш вокруг темно а обьект выдиления светлый O_o

Как зделать без затемнения фона чтоб просто контур был мне кажется этого достаточно :D

 

И опера по странному загружает поочереди мелькают выделеные обьекты ;)

 

Arhar у меня путь к картинкам галереи

/forum/uploads/1190371883/tn_gallery_2_1_132715.jpg

 

причём папок куча разных фоток на метров 700 )))

 

может ответ находится в Табе Галлереи?

да только я не силен в ПХП так поверхностно

Дело в том что в этой вкладке уже есть колонки выравнивание инфа рейтинг и т.п. Я думаю не проще переделать его для вывода в отмеченных файлах ?


<?php


if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}

class profile_gallery
{
/**
* Global IPSCLASS
* @var	object
*/
var $ipsclass;

/*-------------------------------------------------------------------------*/
// Return data
/*-------------------------------------------------------------------------*/

/**
* Returns a block of HTML back to the ajax handler
* which then replaces the inline content with the HTML
* returned.
*
*/
function return_html_block( $member=array() ) 
{
	if( !$this->ipsclass->DB->field_exists( "id", "gallery_images" ) )
	{
		return $this->ipsclass->lang['err_no_posts_to_show'];
	}

	if( !$this->ipsclass->member['g_gallery_use'] )
	{
		return $this->ipsclass->lang['err_no_posts_to_show'];
	}

	define( 'GALLERY_PATH'	 , ROOT_PATH . 'sources/components_public/gallery/' );
	define( 'GALLERY_LIBS'	 , GALLERY_PATH . 'lib/' );

	$this->ipsclass->load_language( 'lang_gallery' );
	$this->ipsclass->load_template( 'skin_gallery_global' );

	//-----------------------------------------
	// Get gallery library and API
	//-----------------------------------------

	require_once( ROOT_PATH . 'sources/api/api_core.php' );
	require_once( ROOT_PATH . 'sources/api/gallery/api_gallery.php' );

	require( GALLERY_LIBS . 'lib_categories.php' );
	$this->category 			= new lib_categories();
	$this->category->ipsclass 	=& $this->ipsclass;
	$this->category->normal_init();

       require_once( GALLERY_LIBS . 'lib_gallery.php' );
       $this->glib 			= new lib_gallery();
       $this->glib->ipsclass 	=& $this->ipsclass;
       $this->glib->category	=& $this->category;

	//-----------------------------------------
	// Create API Object
	//-----------------------------------------

	$gal_api 			= new api_gallery;
	$gal_api->ipsclass 	= $this->ipsclass;
	$gal_api->glib 		= & $this->glib;
	$gal_api->category	= & $this->category;

	//-----------------------------------------
	// Get images
	//-----------------------------------------

	$images = $gal_api->return_gallery_data( $member['id'], 6, 0 );

	//-----------------------------------------
	// Get Image Library
	//-----------------------------------------

	require_once ( GALLERY_LIBS . 'lib_imagelisting.php' );
	$img_list = new lib_imagelisting();
	$img_list->ipsclass 	=& $this->ipsclass;
	$img_list->glib 		=& $this->glib;
	$img_list->category		=& $this->category;
	$img_list->init();

	//-----------------------------------------
	// Pass some values from API
	//-----------------------------------------

	$img_list->res 				= $gal_api->res;
	$img_list->total_images 	= $gal_api->total;

	//-----------------------------------------
	// Ready to pull formatted stuff?
	//-----------------------------------------

	$output = "<script type='text/javascript'>var ids_to_imgs = new Array();</script>";
	$output .= $this->ipsclass->compiled_templates['skin_gallery_global']->globals();

	$output .= $img_list->img_html->container_row_top( $this->ipsclass->compiled_templates['skin_gallery_global']->link_macro( $this->ipsclass->base_url . 'autocom=gallery&req=search&op=do_search&mid=' . $member['id'], $this->ipsclass->lang['where_all_member'] ) );

	$output .= $img_list->get_html_listing( array( 	'imgs_per_col'  => 3,
													'imgs_per_row'  => 2,
													'can_rate'		=> ( $this->ipsclass->vars['gallery_use_rate'] AND $this->ipsclass->member['g_rate'] ) ? 1 : 0,
	                                           ) 		);	

	$output .= $img_list->img_html->container_row_bottom();

	$output .= "<script type='text/javascript'>menu_do_global_init();</script>";




	//-----------------------------------------
	// Macros...
	//-----------------------------------------

	if ( ! is_array( $this->ipsclass->skin['_macros'] ) OR ! count( $this->ipsclass->skin['_macros'] ) )
   	{
   		$this->ipsclass->skin['_macros'] = unserialize( stripslashes($this->ipsclass->skin['_macro']) );
   	}

	if ( is_array( $this->ipsclass->skin['_macros'] ) )
     	{
		foreach( $this->ipsclass->skin['_macros'] as $row )
		{
			if ( $row['macro_value'] != "" )
			{
				$output = str_replace( "<{".$row['macro_value']."}>", $row['macro_replace'], $output );
			}
		}
	}

	$output = str_replace( "<#IMG_DIR#>", $this->ipsclass->skin['_imagedir'], $output );
	$output = str_replace( "<#EMO_DIR#>", $this->ipsclass->skin['_emodir']  , $output );		


	return $output;
}

}


?>

ПС

И еще если стоит разрешение менять отображаемое имя у пользователей ?

а в gallery_peoples записано старое может стоит вытягивать имя по ИД из members_display_name или службу синхранизации сделать ???

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

Да и вообще мне кажется надо в gallery_peoples добавить переменную кто отметил это и админить упростит и отслеживание

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

Kvendi: нету такого!!! када начинаю так выделять у меня открывается фотография в полный размер! может это как то связано с тем что у меня в шаблонах раньше не было <div class="fullimagewrap"> ???

 

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

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

Arhar у меня путь к картинкам галереи

/forum/uploads/1190371883/tn_gallery_2_1_132715.jpg

 

причём папок куча разных фоток на метров 700 )))

 

Решается так:

 

В файле gde.php вот это

 

'add_join' => array( 0 => array( 'select' => 'm.masked_file_name as flnm',

 

заменяем на это

 

'add_join' => array( 0 => array( 'select' => 'm.masked_file_name as flnm, m.directory as directory',

 

а все gallerys (т.е путь/uploads/gallerys/tn_'.$row['flnm']) в файле заменяем на

 

'.$row['directory'].'

 

(т.е. должно быть - путь/uploads/'.$row['directory'].'/tn_'.$row['flnm']) - встречается два раза

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

Theron

прбовал не помогло тупо пустота вот что у меня вышло

<?php

if ( ! defined( 'IN_IPB' ) )
{
   print "<h1>Куда???</h1>Стоять нах.";
   exit();
}

class profile_gde
{
   var $ipsclass;

       function return_html_block( $member=array() ) 
   {
// эта часть для отображения в скольких фотках человек отмечен
       $this->ipsclass->DB->build_query( array( 'select'   => 'COUNT(image_id) as kolvo',
                    'from'     => 'gallery_peoples',
                    'where'    => 'member_id='.$member['id'],
                     ) );

       $this->ipsclass->DB->exec_query();
       $roww = $this->ipsclass->DB->fetch_row();
       if($roww['kolvo']==1) $skoka='1 фотографии'; else $skoka=$roww['kolvo'].' фотографиях';
       $i=0; $prisutstvie="Меня отметили на ".$skoka.":<br><br><table><tr>";

// дальше формирование таблицы с превьюшками
       $this->ipsclass->DB->build_query( array( 'select'   => 'f.image_id as imga',
                    'from'     => array( 'gallery_peoples' => 'f' ),
                    'where'    => 'f.member_id='.$member['id'],
                    'add_join' => array( 0 => array( 'select' => 'm.masked_file_name as flnm, m.directory as directory',
                                     'from'   => array( 'gallery_images' => 'm' ),
                                     'where'  => 'm.id=f.image_id',
                                     'type'   => 'left' ) ) ) );

       $this->ipsclass->DB->exec_query();
       while( $row = $this->ipsclass->DB->fetch_row() )
       {

       $i++;

               // этот кусок для определения вертикальная или горизонтальная, пока только для того, чтоп все были одного размера
               // исправь на свой полный путь до файлов галереи
       $img_size = $getimagesize( ROOT_PATH.'/uploads/'.$row['directory'].'/tn_'.$row['flnm']);

        $file_width = $img_size[0];
        $file_height = $img_size[1];
       if ($file_width>$file_height) $storona="width='200'"; else $storona="height='200'";

               // ссылки может придёцо подредактировать до нужного
       $prisutstvie.="<td><a href='{$this->ipsclass->base_url}automodule=gallery&req=si&img=".$row['imga']."'><img src='/uploads/'.$row['directory'].'/tn_".$row['flnm']."' ".$storona."></a></td>";

               // это тоже пока заготовка, чтоб в строке по три фотки было
       if($i==3) {$prisutstvie.="</tr><tr>"; $i=0;}
       }
       $prisutstvie.="</tr></table>";

           return $prisutstvie ? $prisutstvie : $this->ipsclass->compiled_templates['skin_profile']->personal_portal_no_content( 'err_no_posts_to_show' );
   }

}
?>

также не мешалобы сделать чтоб при отмечании самого себя тебе ЛС не приходило :D

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

Ну да, тупанул я. Замени

 

<img src='/uploads/'.$row['directory'].'/tn_".$row['flnm']."' ".$storona.">

на

 

<img src='/uploads/".$row['directory']."/tn_".$row['flnm']."' ".$storona.">

И всёже не пашет :D

что у меня тут опять не так?

<?php

if ( ! defined( 'IN_IPB' ) )
{
   print "<h1>Куда???</h1>Стоять нах.";
   exit();
}

class profile_gde
{
   var $ipsclass;

       function return_html_block( $member=array() ) 
   {
// эта часть для отображения в скольких фотках человек отмечен
       $this->ipsclass->DB->build_query( array( 'select'   => 'COUNT(image_id) as kolvo',
                    'from'     => 'gallery_peoples',
                    'where'    => 'member_id='.$member['id'],
                     ) );

       $this->ipsclass->DB->exec_query();
       $roww = $this->ipsclass->DB->fetch_row();
       if($roww['kolvo']==1) $skoka='1 фотографии'; else $skoka=$roww['kolvo'].' фотографиях';
       $i=0; $prisutstvie="Меня отметили на ".$skoka.":<br><br><table><tr>";

// дальше формирование таблицы с превьюшками
       $this->ipsclass->DB->build_query( array( 'select'   => 'f.image_id as imga',
                    'from'     => array( 'gallery_peoples' => 'f' ),
                    'where'    => 'f.member_id='.$member['id'],
                    'add_join' => array( 0 => array( 'select' => 'm.masked_file_name as flnm, m.directory as directory',
                                     'from'   => array( 'gallery_images' => 'm' ),
                                     'where'  => 'm.id=f.image_id',
                                     'type'   => 'left' ) ) ) );

       $this->ipsclass->DB->exec_query();
       while( $row = $this->ipsclass->DB->fetch_row() )
       {

       $i++;

               // этот кусок для определения вертикальная или горизонтальная, пока только для того, чтоп все были одного размера
               // исправь на свой полный путь до файлов галереи
       $img_size = $getimagesize( ROOT_PATH.'/uploads/".$row['directory']."/tn_'.$row['flnm']);

        $file_width = $img_size[0];
        $file_height = $img_size[1];
       if ($file_width>$file_height) $storona="width='200'"; else $storona="height='200'";

               // ссылки может придёцо подредактировать до нужного
       $prisutstvie.="<td><a href='{$this->ipsclass->base_url}automodule=gallery&req=si&img=".$row['imga']."'><img src='/uploads/".$row['directory']."/tn_".$row['flnm']."' ".$storona."></a></td>";

               // это тоже пока заготовка, чтоб в строке по три фотки было
       if($i==3) {$prisutstvie.="</tr><tr>"; $i=0;}
       }
       $prisutstvie.="</tr></table>";

           return $prisutstvie ? $prisutstvie : $this->ipsclass->compiled_templates['skin_profile']->personal_portal_no_content( 'err_no_posts_to_show' );
   }

}
?>

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


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

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

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