Магазин
Правила Ответы на вопросы Конфиденциальность
Магазин
Правила Ответы на вопросы Конфиденциальность
  • Быстрые действия Ярлыки
    Общие действия
    Связаться с администрацией
    • Бот

       

Минимоды и хаки для phpBB3

  • Список форумов
  • Форумы по phpBB 3.0
  • Другие моды для phpBB 3.0
  • Минимоды и хаки для phpBB3

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

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

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.

48 сообщений
  • 1
  • 2
  • 3
  • 4
  • 5
  • След.
Просмотры: 8904 • 
  • Аватара пользователя
    PPK Сообщение 30.08.2012
    Мод для загрузки изображений на сервис изображений imgur.
    На imgur установлен максимальный лимит в 225 отображаемых изображений для бесплатного аккаунта.
    Для работы мода необходимо установленное расширение php-curl.
    На imgur установлен максимальный лимит в 50 загрузок в час.
    Данный мод НЕ совместим с модом Ajax загрузка изображений на imageshack (Ajax загрузка изображений на imageshack), если указанный мод уже установлен, из этой инструкции нужно выполнить только пункты: 1, 2, 5
    minimods_imgur_uploader.zip
    1. Скачиваем архив, распаковываем, заменяем файлы форума файлами из директории /root/

    2. Для загрузки изображений на imgur необходимо получить API ключ, идём по этой https://imgur.com/register/api_anon ссылке, заполняем форму, после этого в поле Developer 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 после

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

    // Common global functions
    
    добавить

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

    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
    если ничего не нашлось, после

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

    // Common global functions
    
    добавить

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

    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 после

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

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

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

    <!-- 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}">
    или

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

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

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

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

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

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

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

    </form>
    перед

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

    				<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 после

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

    </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 -->
    заменить (если найдено)

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

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

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

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

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

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

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

    <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 в строке

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

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

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

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

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

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


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


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


    --
    Для работы мода так же необходимо подключение библиотеки jQuery.
    У вас нет необходимых прав для просмотра вложений в этом сообщении. Попробуйте зарегистрироваться или войти на форум.
PPK
  • USER57 Сообщение 30.08.2012
    PPK
    Супер ты нас балуешь :D
    http://star-anime.ru
USER57
  • vulkan3 Сообщение 01.09.2012
    Все сменил все работает , спасибо PPK
vulkan3
  • gazgaz Сообщение 04.09.2012
    День добрый Уважаемые!

    Установил Ваш отличный мод для заливки изображений. Все сделал как написано. Все прошло гладко и без проблем. НО...

    При попытке загрузки изображения мне пишет:
    "Ошибка загрузки изображения, попробуйте позже ... (Максимальный размер изображения: 1 МБ)"


    Подскажите в чем может быть проблема?
    Есть мысль, может конечно и глупая, что может API ключ еще не действует или еще что...
gazgaz
  • Аватара пользователя
    PPK Сообщение 04.09.2012
    API ключ в ЛС, любые изображения вызывают эту ошибку?
PPK
  • gazgaz Сообщение 05.09.2012
    PPK писал(а):любые изображения вызывают эту ошибку?
    все :(

    Добавлено спустя 41 секунду:
    API отправил Вам в ЛС

    Добавлено спустя 2 минуты 59 секунд:
    делал сегодня же тоже самое, но для imageshack все прекрасно работает

    Добавлено спустя 22 часа 25 секунд:
    никаких соображений? :oops:
gazgaz
  • Аватара пользователя
    PPK Сообщение 05.09.2012
    ещё не смотрел ..

    Добавлено спустя 1 час 39 минут 51 секунду:
    API ключ рабочий, в настройках мода что стоит?
PPK
  • gazgaz Сообщение 05.09.2012
gazgaz
  • Аватара пользователя
    PPK Сообщение 06.09.2012
    1. php-curl установлен?
    2. ошибки в логах форума/сервера?
    3.
    image_upload.php.tar.gz
    скачать, распаковать, подставить свой API ключ, заменить этим файлом файл из мода, посмотреть, что пишет при загрузке изображений.
    У вас нет необходимых прав для просмотра вложений в этом сообщении. Попробуйте зарегистрироваться или войти на форум.
PPK
  • gazgaz Сообщение 06.09.2012
    PPK писал(а):1. php-curl установлен?
    2. ошибки в логах форума/сервера?
    3.
    image_upload.php.tar.gz
    (1.59 КБ) Скачиваний: 1
    1.
    2.
    3.скачал, ввёл API

    итог:
    ничего не изменилось(((

    п.с.: Уважаемый PPK, не смею тебя более отвлекать. Придётся остановиться на решении для imageshack. Благо оно работает.

    Благодарю за уделённое время!
gazgaz
48 сообщений
  • 1
  • 2
  • 3
  • 4
  • 5
  • След.

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

Time: 0.000s | Queries: 0 | Peak Memory Usage: 0.00 МБ | GZIP: Unknown | SQL Explain
  • Список форумов
2018, made with by ThemeKita Создано на основе phpBB® Forum Software © phpBB Limited Русская поддержка phpBB (C) 2009-2026 @ PPK
  • Часовой пояс: UTC+04:00
Участники темы
Список форумов Участники темы
Перейти
Сайт ↳   Новости по сайту ↳   Новости обновлений ↳   Вопросы по сайту ↳   Non-russian speakers forum Форумы по phpBB 3.1-3.3 ↳   Расширения для phpBB 3.1-3.3 ↳   Бета-версии и расширения в разработке ↳   База расширений ↳   Поиск и запросы расширений ↳   Расширения для phpBB 3.1-3.3 для донаторов ↳   Условно-бесплатные расширения ↳   Платные расширения ↳   Расширения для подписчиков ↳   Запросы расширений, функционала и переводов для подписчиков ↳   Переводы расширений для phpBB3.1-3.3 ↳   Стили для phpBB 3.1-3.3 ↳   Вопросы по phpBB 3.1-3.3 Форумы по phpBB 3.0 ↳   Мод трекера ppkBB3cker ↳   Новости по трекеру и обновлениям ↳   Ошибки, проблемы, недочёты ↳   Предложения по новым функциям и возможностям ↳   Вопросы, ответы и примеры решений ↳   Моды и стили для трекера ↳   Готовые стили для трекера ↳   Запросы стилей для трекера ↳   Стили в разработке ↳   Готовые моды для трекера ↳   Запросы модов для трекера ↳   Моды в разработке ↳   Остальное ↳   Часто задаваемые вопросы ↳   Ваши трекеры ↳   Мод трекера xbtBB3cker ↳   Новости по трекеру и обновлениям ↳   Вопросы, ответы, ошибки и обсуждение ↳   Другие моды для phpBB 3.0 ↳   Минимоды и хаки для phpBB3 ↳   phpBB 3.0 ppkBB3cker Edition ↳   Платные услуги, моды, стили для phpBB 3.0 ↳   BB2Spoiler/BB3Spoiler ↳   BB3Topics ↳   BB3Sape ↳   BB3UserAgentInfo ↳   Вопросы по phpBB 3.0 ↳   Вне тематики форума