На imageshack устнановлен максимальный лимит в 500 загрузок для бесплатного аккаунта.
Данный мод НЕ совместим с модом Ajax загрузка изображений на imgur (Ajax загрузка изображений на imgur), если указанный мод уже установлен, из этой инструкции нужно выполнить только пункты: 1, 2, 5
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');
/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
Код: Выделить всё
// 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],
Код: Выделить всё
// 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],
Код: Выделить всё
));
?>
Код: Выделить всё
'IMAGE_MAX_SIZE' => 'Максимальный размер изображения: %s',
'UPLOAD_IMAGE' => 'Добавить изображения',
'IMAGE_NAME' => 'Имя изображения',
'ADD_IMAGE' => 'Добавить изображение',
Код: Выделить всё
));
?>
Код: Выделить всё
'PPKBB_UPLOAD_MAX_IMAGE_SIZE' => 'Максимальный размер загружаемых изображений',
'PPKBB_UPLOAD_MAX_IMAGE_SIZE_EXPLAIN' => 'Два числа через пробел, <br /><strong>число 1</strong>: включить возможность загрузки изображений на внешний хостинг, <br /><strong>число 2</strong>: максимальный размер загружаемых изображений на внешний хостинг (в байтах), данная опция может быть переопределена в файле конфигурации 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;
}
Код: Выделить всё
<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>
Код: Выделить всё
</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 -->
Код: Выделить всё
<form 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>
Код: Выделить всё
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>
Код: Выделить всё
{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 -->
Код: Выделить всё
</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}">
Код: Выделить всё
</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>
Код: Выделить всё
$imageshack_key='00000000000000000';
Код: Выделить всё
00000000000000000
6. Очистить кеш, обновить стили, настроить опцию.
Результат, скриншоты:
Опция в адм. разделе:
Форма загрузки изображения при создании темы:
Ссылка для вставки бб-кода загруженного изображения:
--
Для работы мода так же необходимо подключение библиотеки jQuery.