Тема: Attachment_Mod Где скачать?
Уважаемые форумчане, может кто выложит ссылку на этот мод а то найти не могу.
Заранне большое спасибо!!
|
Фонд моральной поддержки |
|
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
PunBB по-русски → Модули и плагины → Attachment_Mod Где скачать?
Уважаемые форумчане, может кто выложит ссылку на этот мод а то найти не могу.
Заранне большое спасибо!!
Все скачал вот начал устанавливать и неразобрался с кодом.
В ридми написано что нужно в код поправки вносить. Там нужно заменять строчки или просто добовлять строчки в код после указанных???
Прошу помоч! С уважением, ACAB1488
Там же по-нерусски написано: AFTER, ADD (при помощи мозга и словаря получаем "после, добавить") REPLACE WITH (при помощи словаря, но уже без мозга: "заменить на") и т.д.
Славик огромное спасибо.
Мозг включил, начал настраивать ![]()
есть полезное добавление для Attachment mod 2.0.1 - показ превьюшек (thumbnails) в теле сообщения, если присоединен графический файл.
Пример: [s]http //master.1wd.ru/viewtopic.php?id=1[/s] - "отладочный" сайт постоянно обновляется
сделано как первый шаг в написании своей галереи
1. в папке img создаем подпапку для превьюшек. это для того, чтобы не создавать их каждый раз на лету.
img/thumb
туда помещаем иконку для "битой картинки" с именем err_thumb.jpg. например такую ![]()
2. в файл include/attach/attach_func.php добавляем новую функцию:
function create_tmb($orig_fname, $thum_fname, $thumb_width=200, $thumb_height=200)
{
$rgb = 0xFFFFFF;
$quality = 80;
$size = @getimagesize($orig_fname);
if( $size === false) return false;
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)) return false;
$orig_img = $icfunc($orig_fname);
if( ($size[0] <= $thumb_width) && ($size[1] <= $thumb_height) ) {
// use original size
$width = $size['0'];
$height = $size['1'];
} else {
// fit to size
$ratio_width = $size['0'] / $thumb_height;
$ratio_height = $size['1'] / $thumb_width;
if( $ratio_width<$ratio_height ) {
$height = $thumb_height;
$width = $size['0'] / $ratio_height;
} else {
$width = $thumb_width;
$height = $size['1'] / $ratio_width;
}
}
$thum_img = imagecreatetruecolor($width, $height);
imagefill($thum_img, 0, 0, $rgb);
imagecopyresampled($thum_img, $orig_img, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
imagejpeg($thum_img, $thum_fname, $quality);
flush();
imagedestroy($orig_img);
imagedestroy($thum_img);
return true;
}3a. в файле viewtopic.php находим такой код:
$result_attach = $db->query('SELECT af.id, af.filename, af.size, af.downloads FROM '.$db->prefix.'attach_2_files AS af WHERE af.post_id='.$cur_post['id']) or error('Unable to fetch if there were any attachments to the post', __FILE__, __LINE__, $db->error());добавляем поле location
$result_attach = $db->query('SELECT af.id, af.filename, af.size, af.downloads, af.location FROM '.$db->prefix.'attach_2_files AS af WHERE af.post_id='.$cur_post['id']) or error('Unable to fetch if there were any attachments to the post', __FILE__, __LINE__, $db->error());3b. ниже в файле viewtopic.php находим такой код:
if($attach_allow_download){//check if the user is allowed to download it.
$attach_output .= $lang_attach['Attachments:'].' ';
while(list($attachment_id, $attachment_filename, $attachment_size, $attachment_downloads)=$db->fetch_row($result_attach)){
$attachment_extension=attach_get_extension($attachment_filename);
$attach_output .= '<br />'."\n\t\t\t\t\t\t".attach_icon($attachment_extension).' <a href="./attachment.php?item='.$attachment_id.'">'.$attachment_filename.'</a>, '.$lang_attach['Size:'].' '.number_format($attachment_size).' '.$lang_attach['bytes'].', '.$lang_attach['Downloads:'].' '.number_format($attachment_downloads);
}
}заменяем на
if($attach_allow_download){//check if the user is allowed to download it.
$attach_output .= $lang_attach['Attachments:'];
while(list($attachment_id, $attachment_filename, $attachment_size, $attachment_downloads, $attach_location)=$db->fetch_row($result_attach)){
$attachment_ref = './attachment.php?item='.$attachment_id;
$attachment_extension = attach_get_extension($attachment_filename);
if(in_array($attachment_extension, array('jpg','jpeg','gif','png'))) {
$orig_file = $pun_config['attach_basefolder'].$attach_location;
$thmb_file = './img/thumb/'.$attachment_id.'.jpg';
if(!file_exists($thmb_file)) {
set_time_limit(30);
if(!create_tmb($orig_file, $thmb_file))
copy('./img/thumb/err_thumb.jpg', $thmb_file);
}
$attach_output .= "<br />\n\t\t\t\t\t\t<a href=\"".$attachment_ref.'"><img src="'.$thmb_file.'"></a>';
}
$attach_output .= "<br />\n\t\t\t\t\t\t".attach_icon($attachment_extension).' <a href="'.$attachment_ref.'">'.$attachment_filename.'</a>, '.$lang_attach['Size:'].' '.number_format($attachment_size).' '.$lang_attach['bytes'].', '.$lang_attach['Downloads:'].' '.number_format($attachment_downloads);
}
}важно: при удалении вложения превьюшка не удаляется. допишите сами ![]()
вы вероятно заметили, что превьющка делается всегда в формате JPEG. меня это устраивает. кому надо - могут усложнить функцию сами.
может допишет кто нибудь уже?
и еще очень надо - чтобы картинка (да и вообще аттач) вставлялся не внизу поста а bb-ТЕГОМ например туда куда мне надо!!!
это сложно сделать?
может допишет кто нибудь уже?
и еще очень надо - чтобы картинка (да и вообще аттач) вставлялся не внизу поста а bb-ТЕГОМ например туда куда мне надо!!!
это сложно сделать?
что именно дописать?
когда ты емайлом шлешь письмо с вложениями - у тебя есть возможность передвигать аттачи? этот мод - полный аналог почтового аттача. не надо из газонокосилки делать автомобиль - Г* получится.
сделайте хотябы автоудаление превьюшки!!
автоудаление превьюшки:
в файле include/attach/attach_func.php ищем строку:
$result = $db->query('DELETE FROM '.$db->prefix.'attach_2_files WHERE id = \''.$item.'\' LIMIT 1')or error('Unable to delete attachment record in database',__FILE__,__LINE__,$db->error());сразу за ней добавляем
$thmb_file = './img/thumb/'.$item.'.jpg';
unlink($thmb_file);все!
огромное спасибо!! седня ночью поставлю мод!!!
Все сделал как ты написал, но вместо превью всегда битая картинка ... может руки кривые или нехватает чего то.
но вместо превью всегда битая картинка
сервер случано не "русский апач"?
проверь - исходная "большая" картинка не побилась при закачке? скачай ее назад и открой. если битая - может помочь добавление такой строки в .htaccess
CharsetRecodeMultipartForms OffПара вопросов по моду:
1. Как сделать, чтоб добавлять аттач чрез быстрый ответ?
2. Как сделать, чтоб размер аттача выводился в килобайтах, а не байтах?
Картинка большая небитая - открывается нормально.
Апач в америке на хостмонстер.ком, правда пхп и мускул там древние.
Вобщем и без превью меня устраивает ).
считаю просто необходимыми взаимно моды аттач и аякс превью (потому что иначе просто жмешь превью - и сбрасываются выбранные аттачи ![]()
а еще - ктонибудь сделайте как здесь: 194.187.207.250/forum/topic.php?id=5
чтобы аттачи можно было вставлять тегами в сообщение?
Добавлено Mon Dec 25 20:03:51 2006 :
и еще файл с именем "_бедра_да2474.jpg"
получился во вложении: "_бедра_РґР°2474.jpg"
видимо тоже надо мультибайтные функции менять!
(кодировка utf8, колейт utf8_unicode_ci)
где взять их список всех ??
Добавлено Mon Dec 25 20:06:54 2006 :
и еще:
откуда взялась идея комментарии к статье обязательно второй страницей?
это же неправильно!
если статья - 4 абзаца, и к ней 5 комментариев - это очень немного. а большинство и будут такими (форум это короткое общение).
даже все блоги так устроены- комментари сразу же снизу статьи. зачем лишний переход?
2maru, ты кажется не тот топик пишеш. народ не поймет. про статьи - это в суперкатегории.
А правда что Attachment Mod для каждого поста делает запрос к бд? У меня так. Мне кажется что можно выбирать вместе с постами
Добавлено Tue Dec 26 15:05:38 2006 :
Хотя нет, с постами тут не прокатит. Может стоит сделать поле has_attach в табличке posts, чтоб сразу все был ясно? Да и рулесы выбираются для каждого поста, но в зависимости от форума.В общем я совсем разочаровался в моде ![]()
Slavik, да. Для каждого поста свой запрос к БД. Я для себя это дело оптимизировал - делаю доп.запросы по аттачам если аттач есть. А наличие или отсутствие аттача сделал доп. колонкой в таблице собщений.
Можно конечно еще больше схитрить - для каждого сообщения иметь некий attach_msg, который апдейтить при добавлении аттачей, и выводить его ВСЕГДА вместе с самим сообщением. Таким образом омжно избежать лишние запросы на каждом собщении с аттачем. Но выборку из рулезов делать один фиг придется один раз.
Но вообще у меня таких вот "возможных вариантов оптимизаций" столько уже в голове навозникало, что хватит на свой совершенно иной форум ![]()
Короче решил добавить поле has_attach в табличку posts, которое либо 0 либо 1. А рулесы выбирать только при необходимости (буду проверять isset переменная с рулесами и тогда делать или не делать запрос на права). Еще можешь поделиться вариантами оптимизации, может вместе чего-нибдуь сваяем ![]()
Slavik,
Как я уже написал выше можно добавить еще одно текстовое поле в которое впихивать список аттачей (сериализированный). Что-то вроде кеша списка аттачей. В результате за один селект можно будет вытащить и само сообщение и список аттачей. Размер поля думаю не очень большой можно сделать. И в этом случае has_attach не будет нужен впринципе. Разумеется, сам список аттачей в своей таблице тоже должен храниться.
Рулесы само собой селектить ДО списка сообщений. Один доп селект, даже если ни одного аттача на текущей странице нет - не сильно усугубит ситуацию.
А вообще, все эти рулесы можно впихнуть как и основные переменные punbb в кеш. В массивчик какой-нибудь. Но с этим кеширование рулезов придется сильно помудрить.
Гляньте еще вот этот скриптик: 194.187.207.250/forum/attach_rulwiz.php.txt
В свое время запарился править рулесы дефолтовой аттач-админкой. Для себя сделал кросс-табовую версию с активным использованием джаваскрипта (копирования отдельных правил, целых столбцов и колонок).
Правила в Attachment mod прямо скажем замороченные! Я недолго думая добавил два столбца в forum_perms. Плюч пару опций в config - дефолтовые значения. Теперь права на аттачи задаются полностью аналогично остальным правам. Для большинства случаев оно себя оправдывает.
Сложности возникают, если надо в один форум грузить только jpeg до 200кб, а в другой только zip до 1Мб. Думаю сделать механизм перекрытия глобальных опциями конкретного форума, если они заданы. Пока все на стадии обдумывания.
PunBB по-русски → Модули и плагины → Attachment_Mod Где скачать?
Сгенерировано за 0.267 секунды (52% PHP — 48% БД) 11 запросов к базе данных
Технологии с открытым исходным кодом, несомненно, обладают серьезным преимуществом над аналогичными продуктами, распространяемыми по ограниченным лицензиям. И совершенно неважно, что это. Возможно это:
Впрочем, неважно. Что бы это ни было, важно всячески поощрять и поддерживать Open Source в любом виде. Тем более, что вы знаете, PunBB распространяется по лицензии GPL/GNU. И спасибо за внимание.