Ajax загрузка изображений на imageshack

Как сделать загрузку изображений на внешний хостинг для форума phpBB3

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.
 • Просмотры: 6023
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Ajax загрузка изображений на imageshack

12 июн 2011, 16:53

Мод для загрузки изображений на сервис изображений imageshack.
На imageshack устнановлен максимальный лимит в 500 загрузок для бесплатного аккаунта.
Данный мод НЕ совместим с модом Ajax загрузка изображений на imgur (Ajax загрузка изображений на imgur), если указанный мод уже установлен, из этой инструкции нужно выполнить только пункты: 1, 2, 5
minimods_imageshack_uploader.7z
1. Скачиваем архив, распаковываем, заменяем файлы форума файлами из директории /minimods_imageshack_uploader/

2. Для загрузки изображений на imageshack необходимо получить API ключ, идём по этой http://stream.imageshack.us/api/ ссылке, заполняем форму, после этого в самом низу в строке key отобразится ключ, сохраняем его значение.

3. В phpmyadmin выполнить (если префикс таблиц не phpbb_ - заменить на свой)

Код: Выделить всё

INSERT INTO `phpbb_config` (`config_name`, `config_value`, `is_dynamic`) VALUES ('ppkbb_upload_max_image_size', '0 1048576', '0');
4. Переделать файлы:

/includes/acp/acp_board.php после

Код: Выделить всё

						'allow_birthdays'		=> array('lang' => 'ALLOW_BIRTHDAYS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
						'allow_quick_reply'		=> array('lang' => 'ALLOW_QUICK_REPLY',		'validate' => 'bool',	'type' => 'custom', 'method' => 'quick_reply', 'explain' => true),
добавить

Код: Выделить всё

						'ppkbb_upload_max_image_size'		=> array('lang' => 'PPKBB_UPLOAD_MAX_IMAGE_SIZE',		'validate' => 'string',	'type' => 'text:14:14', 'explain' => true),//PPK
/posting.php перед

Код: Выделить всё

// Start assigning vars for main posting page ...
$template->assign_vars(array(
добавить

Код: Выделить всё

//PPK
$ppkbb_upload_max_image_size=my_split_config($config['ppkbb_upload_max_image_size'], 2, 'my_int_val');
$user->lang['IMAGE_MAX_SIZE']=sprintf($user->lang['IMAGE_MAX_SIZE'], get_formatted_filesize(get_upload_max_filesize($ppkbb_upload_max_image_size[1])));
//PPK
перед

Код: Выделить всё

	'S_PRIVMSGS'				=> false,
добавить

Код: Выделить всё

	'S_ENABLE_IMAGE_UPLOAD' => $ppkbb_upload_max_image_size[0] ? true : false,
	'S_IMAGE_UPLOAD' => append_sid($phpbb_root_path.'image_upload.'.$phpEx),
	'S_MAX_IMAGE_SIZE' => $ppkbb_upload_max_image_size[1],
/viewtopic.php перед

Код: Выделить всё

// Send vars to template
$template->assign_vars(array(
добавить

Код: Выделить всё

//PPK
$ppkbb_upload_max_image_size=my_split_config($config['ppkbb_upload_max_image_size'], 2, 'my_int_val');
$user->lang['IMAGE_MAX_SIZE']=sprintf($user->lang['IMAGE_MAX_SIZE'], get_formatted_filesize(get_upload_max_filesize($ppkbb_upload_max_image_size[1])));
//PPK
перед

Код: Выделить всё

	'DELETE_IMG' 		=> $user->img('icon_post_delete', 'DELETE_POST'),
	'INFO_IMG' 			=> $user->img('icon_post_info', 'VIEW_INFO'),
добавить

Код: Выделить всё

	'S_ENABLE_IMAGE_UPLOAD' => $ppkbb_upload_max_image_size[0] ? true : false,
	'S_IMAGE_UPLOAD' => append_sid($phpbb_root_path.'image_upload.'.$phpEx),
	'S_MAX_IMAGE_SIZE' => $ppkbb_upload_max_image_size[1],
/language/ru/common.php перед
добавить

Код: Выделить всё

	'IMAGE_MAX_SIZE' => 'Максимальный размер изображения: %s',
	'UPLOAD_IMAGE' => 'Добавить изображения',
	'IMAGE_NAME' => 'Имя изображения',
	'ADD_IMAGE' => 'Добавить изображение',
/language/ru/acp/board.php перед
добавить

Код: Выделить всё

	'PPKBB_UPLOAD_MAX_IMAGE_SIZE' => 'Максимальный размер загружаемых изображений',
	'PPKBB_UPLOAD_MAX_IMAGE_SIZE_EXPLAIN' => 'Два числа через пробел, <br /><strong>число 1</strong>: включить возможность загрузки изображений на внешний хостинг, <br /><strong>число 2</strong>: максимальный размер загружаемых изображений на внешний хостинг (в байтах), данная опция может быть переопределена в файле конфигурации php',
/includes/functions.php перед

Код: Выделить всё

/**
* Set dynamic config value with arithmetic operation.
*/
добавить

Код: Выделить всё

function get_upload_max_filesize($s=0)
{
	$max_filesize = @ini_get('upload_max_filesize');
	$unit = 'MB';
	if(!empty($max_filesize))
	{
		$unit = strtolower(substr($max_filesize, -1, 1));
		$max_filesize = (int) $max_filesize;

		$unit = ($unit == 'k') ? 'KB' : (($unit == 'g') ? 'GB' : 'MB');
	}
	else
	{
		$max_filesize=0;
	}
	switch($unit)
	{
		case 'KB':
			$max_filesize=$max_filesize*1024;
		break;
		case 'MB':
			$max_filesize=$max_filesize*1024*1024;
		break;
		case 'GB':
			$max_filesize=$max_filesize*1024*1024*1024;
		break;
	}
	$s && $s < $max_filesize ? $max_filesize=$s : '';

	return $max_filesize;
}
ищем текст

Код: Выделить всё

function my_split_config
если ничего не нашлось, перед

Код: Выделить всё

/**
* Set dynamic config value with arithmetic operation.
*/
добавить

Код: Выделить всё

function my_split_config($config, $count=0, $type=false, $split='')
{
	$count=intval($count);
	$s_config=$count > 0 ? @explode($split ? $split : ' ', $config, $count) : @explode($split ? $split : ' ', $config);
	$count=$count > 0 ? $count : sizeof($s_config);
	if($count)
	{
		for($i=0;$i<$count;$i++)
		{
			if($type)
			{
				if(is_array($type) && @function_exists(@$type[$i]))
				{
					$s_config[$i]=call_user_func($type[$i], @$s_config[$i]);
				}
				else if(@function_exists($type))
				{
					$s_config[$i]=call_user_func($type, @$s_config[$i]);
				}
				else
				{
					$s_config[$i]=@$s_config[$i];
				}
			}
			else
			{
				$s_config[$i]=@$s_config[$i];
			}
		}
	}

	return $s_config;
}
/styles/prosilver/template/posting_editor.html после

Код: Выделить всё

<script type="text/javascript">
// <![CDATA[
	onload_functions.push('apply_onkeypress_event()');
// ]]>
</script>
добавить

Код: Выделить всё

<script type="text/javascript" src="{ROOT_PATH}tracker/addons/js/jquery.form.js"></script>
<script type="text/javascript">
// <![CDATA[
jQuery(document).ready(
	function($)
	{
		$('#uploadForm').ajaxForm({
			beforeSubmit: function(a,f,o)
			{
				o.dataType = $('#uploadResponseType')[0].value;
				$('#uploadOutput').html('<img src="./images/ajax-loader.gif" alt="" />');
			},
			resetForm: true,
			dataType: 'html',
			success: function(data)
			{
				var $out = $('#uploadOutput');
				$('#uploadOutput').html('');
				$out.append('<div>'+ data +'</div>');
			}
			});
		}
	);
// ]]>
</script>
/styles/prosilver/template/posting_layout.html после
добавить

Код: Выделить всё

<!-- IF S_ENABLE_IMAGE_UPLOAD -->
<div class="panel">
	<div class="inner"><span class="corners-top"><span></span></span>
			<div style="text-align:center;">
			<form id="uploadForm" action="{S_IMAGE_UPLOAD}" method="POST" enctype="multipart/form-data">
				<!-- IF S_MAX_IMAGE_SIZE --><input type="hidden" name="MAX_FILE_SIZE" value="{S_MAX_IMAGE_SIZE}" /><!-- ENDIF -->
				<strong>{L_IMAGE_NAME}</strong>: <input title="{L_IMAGE_MAX_SIZE}" size="50" class="inputbox autowidth" type="file" name="fileupload" />
				<input type="hidden" id="uploadResponseType" name="mimetype" value="html" />
				<input type="submit" value="{L_ADD_IMAGE}" class="button2" />
			</form>
			<div id="uploadOutput"></div>
			</div>
	<span class="corners-bottom"><span></span></span></div>
</div>
<!-- ENDIF -->
/styles/prosilver/template/quickreply_editor.html удалить

Код: Выделить всё

<form method="post" action="{U_QR_ACTION}">
перед

Код: Выделить всё

				<h2>{L_QUICKREPLY}</h2>
добавить

Код: Выделить всё

<form id="postform" method="post" action="{U_QR_ACTION}">
удалить
перед

Код: Выделить всё

				<a href="" class="right-box up" onclick="hide_qr(false); return false;" title="{L_COLLAPSE_QR}">{L_COLLAPSE_QR}</a>
добавить

Код: Выделить всё

		</form>
		<!-- IF S_ENABLE_IMAGE_UPLOAD -->
		<div style="text-align:center;">
			<form id="uploadForm" action="{S_IMAGE_UPLOAD}" method="POST" enctype="multipart/form-data">
				<!-- IF S_MAX_IMAGE_SIZE --><input type="hidden" name="MAX_FILE_SIZE" value="{S_MAX_IMAGE_SIZE}" /><!-- ENDIF -->
				<strong>{L_IMAGE_NAME}</strong>: <input title="{L_IMAGE_MAX_SIZE}" size="50" class="inputbox autowidth" type="file" name="fileupload" />
				<input type="hidden" id="uploadResponseType" name="mimetype" value="html" />
				<input type="submit" value="{L_ADD_IMAGE}" class="button2" />
			</form>
			<div id="uploadOutput"></div>
		</div>
		<!-- ENDIF -->
после

Код: Выделить всё

	onload_functions.push('init_qr();');
	// ]]>
</script>
добавить

Код: Выделить всё

<script type="text/javascript" src="{ROOT_PATH}tracker/addons/js/jquery.form.js"></script>
<script type="text/javascript">
// <![CDATA[
jQuery(document).ready(
	function($)
	{
		$('#uploadForm').ajaxForm({
			beforeSubmit: function(a,f,o)
			{
				o.dataType = $('#uploadResponseType')[0].value;
				$('#uploadOutput').html('<img src="./images/ajax-loader.gif" alt="" />');
			},
			resetForm: true,
			dataType: 'html',
			success: function(data)
			{
				var $out = $('#uploadOutput');
				$('#uploadOutput').html('');
				$out.append('<div>'+ data +'</div>');
			}
			});
		}
	);
// ]]>
</script>
если мод устанавливается не на ppkBB3cker или форма стандартного быстрого ответа не доработана для отображения бб-кодов в форме быстрого ответа, после

Код: Выделить всё

	onload_functions.push('init_qr();');
	// ]]>
</script>
добавить

Код: Выделить всё

<script type="text/javascript">
// <![CDATA[
	var form_name = 'postform';
	var text_name = <!-- IF $SIG_EDIT -->'signature'<!-- ELSE -->'message'<!-- ENDIF -->;
	var load_draft = false;
	var upload = false;
// ]]>
</script>
<script type="text/javascript" src="{T_TEMPLATE_PATH}/editor.js"></script>
/styles/subsilver2/template/posting_body.html после

Код: Выделить всё

	{S_FORM_TOKEN}
	</form>
добавить

Код: Выделить всё

<script type="text/javascript" src="{ROOT_PATH}tracker/addons/js/jquery.form.js"></script>
<script type="text/javascript">
// <![CDATA[
jQuery(document).ready(
	function($)
	{
		$('#uploadForm').ajaxForm({
			beforeSubmit: function(a,f,o)
			{
				o.dataType = $('#uploadResponseType')[0].value;
				$('#uploadOutput').html('<img src="./images/ajax-loader.gif" alt="" />');
			},
			resetForm: true,
			dataType: 'html',
			success: function(data)
			{
				var $out = $('#uploadOutput');
				$('#uploadOutput').html('');
				$out.append('<div>'+ data +'</div>');
			}
			});
		}
	);
// ]]>
</script>
<!-- IF S_ENABLE_IMAGE_UPLOAD -->
		<table class="tablebg" width="100%" cellspacing="1">
		<tr>
			<td class="row1">
			<div style="text-align:center;">
			<form id="uploadForm" action="{S_IMAGE_UPLOAD}" method="POST" enctype="multipart/form-data">
				<!-- IF S_MAX_IMAGE_SIZE --><input type="hidden" name="MAX_FILE_SIZE" value="{S_MAX_IMAGE_SIZE}" /><!-- ENDIF -->
				<strong>{L_IMAGE_NAME}</strong>: <input title="{L_IMAGE_MAX_SIZE}" size="50" class="inputbox autowidth" type="file" name="fileupload" />
				<input type="hidden" id="uploadResponseType" name="mimetype" value="html" />
				<input type="submit" value="{L_ADD_IMAGE}" class="button2" />
			</form>
			<div id="uploadOutput"></div>
			</div>
			</td>
		</tr>
		</table>
<!-- ENDIF -->
/styles/subsilver2/template/quickreply_editor.html после
добавить

Код: Выделить всё

<script type="text/javascript" src="{ROOT_PATH}tracker/addons/js/jquery.form.js"></script>
<script type="text/javascript">
// <![CDATA[
jQuery(document).ready(
	function($)
	{
		$('#uploadForm').ajaxForm({
			beforeSubmit: function(a,f,o)
			{
				o.dataType = $('#uploadResponseType')[0].value;
				$('#uploadOutput').html('<img src="./images/ajax-loader.gif" alt="" />');
			},
			resetForm: true,
			dataType: 'html',
			success: function(data)
			{
				var $out = $('#uploadOutput');
				$('#uploadOutput').html('');
				$out.append('<div>'+ data +'</div>');
			}
			});
		}
	);
// ]]>
</script>
<!-- IF S_ENABLE_IMAGE_UPLOAD -->
		<table class="tablebg" width="100%" cellspacing="1">
		<tr>
			<td class="row1">
			<div style="text-align:center;">
			<form id="uploadForm" action="{S_IMAGE_UPLOAD}" method="POST" enctype="multipart/form-data">
				<!-- IF S_MAX_IMAGE_SIZE --><input type="hidden" name="MAX_FILE_SIZE" value="{S_MAX_IMAGE_SIZE}" /><!-- ENDIF -->
				<strong>{L_IMAGE_NAME}</strong>: <input title="{L_IMAGE_MAX_SIZE}" size="50" class="inputbox autowidth" type="file" name="fileupload" />
				<input type="hidden" id="uploadResponseType" name="mimetype" value="html" />
				<input type="submit" value="{L_ADD_IMAGE}" class="button2" />
			</form>
			<div id="uploadOutput"></div>
			</div>
			</td>
		</tr>
		</table>
<!-- ENDIF -->
заменить

Код: Выделить всё

<form method="post" action="{U_QR_ACTION}">
на

Код: Выделить всё

<form id="postform" method="post" action="{U_QR_ACTION}">
если мод устанавливается не на ppkBB3cker или форма стандартного быстрого ответа не доработана для отображения бб-кодов в форме быстрого ответа, после
добавить

Код: Выделить всё

<script type="text/javascript">
// <![CDATA[
	var form_name = 'postform';
	var text_name = <!-- IF $SIG_EDIT -->'signature'<!-- ELSE -->'message'<!-- ENDIF -->;
	var load_draft = false;
	var upload = false;
// ]]>
</script>
<script type="text/javascript" src="{T_TEMPLATE_PATH}/editor.js"></script>
5. /image_upload.php в строке

Код: Выделить всё

$imageshack_key='00000000000000000';
заменить

Код: Выделить всё

00000000000000000
на значение API ключа, который был получен на сайте imageshack

6. Очистить кеш, обновить стили, настроить опцию.

Результат, скриншоты:
Опция в адм. разделе:


Форма загрузки изображения при создании темы:


Ссылка для вставки бб-кода загруженного изображения:

--
Для работы мода так же необходимо подключение библиотеки jQuery.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Pr
Prado
Поблагодарили: 16 раз
Сообщения: 168
Зарегистрирован: 25 июн 2010, 07:23
Сообщение

Ajax загрузка изображений на imageshack

13 июн 2011, 07:50

Поставил, проверил, работает - большое спасибо.
Что-то непойму - у меня добавление изображений возможно только на форумах, а на категориях трекера нету! Это так задумано, или только у меня? :(
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Ajax загрузка изображений на imageshack

13 июн 2011, 09:58

Для стиля prosilver нужно в файле posting_tracker_layout.html сделать то-же самое, что для файла posting_layout.html, а для стиля subsilver2 аналогично в файлах posting_tracker_body.html и posting_body.html
Pr
Prado
Поблагодарили: 16 раз
Сообщения: 168
Зарегистрирован: 25 июн 2010, 07:23
Сообщение

Ajax загрузка изображений на imageshack

13 июн 2011, 10:07

Спасибо за помощь, конечно бы не плохо если имелась отдельная страница для загрузки изображений
Типа как подобная здесь:
fi
fitamin4ik23
Благодарил (а): 6 раз
Сообщения: 32
Зарегистрирован: 11 июн 2011, 01:35
Сообщение

Ajax загрузка изображений на imageshack

13 июн 2011, 11:25

Спасибо ППК большое, хороший мод придется попыхтеть.1 Вопрос как убрать тогда вложения чтоб изображения на мой сервер не заливались зв раннее спасибо
Pr
Prado
Поблагодарили: 16 раз
Сообщения: 168
Зарегистрирован: 25 июн 2010, 07:23
Сообщение

Ajax загрузка изображений на imageshack

13 июн 2011, 12:02

адм.раздел - вкладка сообщения - подраздел: вложения - Настройки вложений - Разрешить вложения: Да Нет
Или всё таки если вложения использовать будешь, то адм.раздел - вкладка сообщения - подраздел: вложения - группы расширение - там убери расширения н изображения
fi
fitamin4ik23
Благодарил (а): 6 раз
Сообщения: 32
Зарегистрирован: 11 июн 2011, 01:35
Сообщение

Ajax загрузка изображений на imageshack

13 июн 2011, 13:54

Prado угу спасибо, вопрос а если я буду заливать на тот хостинг изображений то их как постер можно будет юзать елси я уберу вложения и еще если убрать вложения то торренты нельзя вроде заливать да?
fi
fitamin4ik23
Благодарил (а): 6 раз
Сообщения: 32
Зарегистрирован: 11 июн 2011, 01:35
Сообщение

Ajax загрузка изображений на imageshack

13 июн 2011, 15:44

не получилось поставить :cry:
Fatal error: Cannot redeclare my_split_config() (previously declared in /var/www/user/data/www/site.ru/includes/functions.php:378) in /var/www/user/data/www/site.ru/includes/functions.php on line 444
fi
fitamin4ik23
Благодарил (а): 6 раз
Сообщения: 32
Зарегистрирован: 11 июн 2011, 01:35
Сообщение

Ajax загрузка изображений на imageshack

13 июн 2011, 15:55

Странно все стало норм, но опции загрузить на imageshack вообще нет мб иза стиля?? стиль "two" в него ставил код от prosilver, помогите пожалуйсто да еще кому не сложно скиньте эти файлы готовые а то понять не могу что за дела.. :?:
Аватара пользователя
votept
Благодарил (а): 49 раз
Поблагодарили: 62 раза
Сообщения: 806
Зарегистрирован: 18 июл 2010, 17:57
Сообщение

Ajax загрузка изображений на imageshack

13 июн 2011, 16:25

:o сто раз перепровери и хоть что делай, в админке ничего не появляется :(

Вернуться в «Минимоды и хаки для phpBB3»