urisoft Опубликовано 2 Июня 2007 Жалоба Поделиться Опубликовано 2 Июня 2007 Arharвидео с экрана снять?давай. снимай. форум оригинальный английский без кучи модификаций. ага. самому интересно... чтож там за глюки появились после года юзанья другими пользователями. Наверное выросли вдруг сами...Серьезно. Интересно. Может все молчали просто все это время. И на самом деле у всех так и не работает ничего до сих пор... надо переписать более 40 файлов...Ну точно. Еще пол форума и галерею заодно.... Ссылка на комментарий Поделиться на других сайтах Прочее
polluw Опубликовано 2 Июня 2007 Жалоба Поделиться Опубликовано 2 Июня 2007 polluwверсия форума-то какая ? 2.2.2 Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 2 Июня 2007 Жалоба Поделиться Опубликовано 2 Июня 2007 глюк такой - не передается DBя уже писал вышекороче мне плевать, себе я найду способ исправить..если у кого возникнут проблемы, им помогу Ссылка на комментарий Поделиться на других сайтах Прочее
urisoft Опубликовано 2 Июня 2007 Жалоба Поделиться Опубликовано 2 Июня 2007 polluw2.2.2Ну вот с этого и надо было начинать. Тут несколькими страницами раньше уже писали про это и кажется было решение. А если кто ставил на 2.2.х поделитесь опытом с однофорумниками. Желательно с подробностями. Arharглюк такой - не передается DBВ форуме версии 2.1.х ? Где именно ?Без обид только... Че-то ты "надулся" похоже... Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 2 Июня 2007 Жалоба Поделиться Опубликовано 2 Июня 2007 это я пытаюсь подключить класс обработки ббкодов из 2.1.хдело в том, что там используется$this->ipsclass->DB->func()а при передаче$parser->ipsclass =& $ibforums; $parser->ipsclass->DB =& $DB;или даже просто$parser->ipsclass =& $ibforums;получаю call to a member function on a non-objectтоесть $parser->ipsclass->DB остается пустым, что видно при проверке его черезprint_r(get_class_methods($parser->ipsclass->DB ));причем тут же вышеprint_r(get_class_methods($ibforums->DB ));илиprint_r(get_class_methods($DB ));дает не пустой результат Ссылка на комментарий Поделиться на других сайтах Прочее
urisoft Опубликовано 2 Июня 2007 Жалоба Поделиться Опубликовано 2 Июня 2007 Arhar$ipsclass уже прописан в journal.php зачем $parser->ipsclass &= $ibforums; ? Или global $ipsclass с последующим $parser->ipsclass = &$ipsclass; так же не сработает ? Давно че-то я с пхп не возился не помню уже ничего Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 2 Июня 2007 Жалоба Поделиться Опубликовано 2 Июня 2007 сделал как в 21, немного переписав "индексный" файл журнала и основные файлы действийпри вызове файла через реквайр во всех файлах есть, например$idx = new legends();вот эти штуки комментируюпотом в индексе их вызываю(там немного подумать надо)и добавляю переменную $runme->ipsclass =& $ipsclass;а потом делаю запускающую функциюкороче можно наверно проще Ссылка на комментарий Поделиться на других сайтах Прочее
polluw Опубликовано 2 Июня 2007 Жалоба Поделиться Опубликовано 2 Июня 2007 Arhar, я ничего не поняла из вашей с urisoft переписки.Подскажи мне как сделать. Пожалуйста! Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 2 Июня 2007 Жалоба Поделиться Опубликовано 2 Июня 2007 сейчас напишу, что у меня получилось... смайлы должны заработоть после этого:(или не должны вообще)1. ./journal/legends.phpнайти require ROOT_PATH.'sources/lib/post_parser.php'; $parser = new post_parser();заменить на require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); $parser = new parse_bbcode(); $parser->ipsclass =& $ibforums; $parser->parse_bbcode = 1;найти$after = $parser->convert( array( 'TEXT' => $open.$content.$close, 'CODE' => 1 ) ); заменить на $after = $parser->pre_db_parse( $open.$content.$close ); 2. ./journal/misc/comment_edit.php найти require ROOT_PATH.'sources/lib/post_parser.php'; $parser = new post_parser(); $parser->ipsclass = &$ibforums; заменить на require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); $parser = new parse_bbcode(); $parser->ipsclass =& $ibforums; $parser->parse_bbcode = 1; найти $post = $parser->unconvert($row['post'],1,0); заменить на $post = $parser->pre_edit_parse($row['post']); 3. ./journal/misc/post_edit.php найти require ROOT_PATH.'sources/lib/post_parser.php'; $parser = new post_parser(); $parser->ipsclass = &$ibforums; заменить на require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); $parser = new parse_bbcode(); $parser->ipsclass =& $ibforums; $parser->parse_bbcode = 1; найти 'post' => $parser->unconvert($row['post'],1,0), заменить на 'post' => $parser->pre_edit_parse($row['post']), 4. ./journal/misc/post_functions.php найти require ROOT_PATH."sources/lib/post_parser.php"; $parser = new post_parser(); заменить на require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); $parser = new parse_bbcode(); $parser->ipsclass =& $ibforums; $parser->parse_bbcode = 1; $parser->parse_smilies = $ibforums->input['enableemo'] == 'yes' ? 1 : 0; найти $post = $parser->convert(array( TEXT => $ibforums->input['Post'], SMILIES => $ibforums->input['enableemo'] == 'yes' ? 1 : 0, CODE => 1, HTML => 0 )); заменить на $post = $parser->pre_db_parse($ibforums->input['Post']); найти require ROOT_PATH.'sources/lib/post_parser.php'; $parser = new post_parser(); заменить на require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); $parser = new parse_bbcode(); $parser->ipsclass =& $ibforums; $parser->parse_bbcode = $this->allow_ibcode(); $parser->parse_smilies = $ibforums->input['enableemo'] == 'yes' ? 1 : 0; найти $post = $parser->convert(array( TEXT => $ibforums->input['Post'], SMILIES => $ibforums->input['enableemo'] == 'yes' ? 1 : 0, CODE => $this->allow_ibcode(), HTML => 0 )); заменить на $post = $parser->pre_db_parse($ibforums->input['Post']); Ссылка на комментарий Поделиться на других сайтах Прочее
urisoft Опубликовано 2 Июня 2007 Жалоба Поделиться Опубликовано 2 Июня 2007 ArharЭто для какой версии форума ? polluwТолько что установил 2.2.2 и на нее дневники 2.0pb7 с приведенными тут на форуме изменениями.1. до установки в файле journal/install.php заменить $DB = new db_driver();на $classname = "db_driver_".$ibforums->vars['sql_driver']; $DB = new $classname;2. установить в соответствии с инструкцией.3. в файле journal/misc/post_function.php найти:$smilies = "<tr align='center'>\n";добавить ниже: $ibforums->vars['emo_per_row'] = 5;4. скопировать из форума 2.0.х файл jscripts/ipb_bbcode.js в папку jscripts/ все вроде. очень сильно я не копал. может что и не корректно работает, но смайлы отображаются правильно, посты постятся, настройки работают. Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 3 Июня 2007 Жалоба Поделиться Опубликовано 3 Июня 2007 это для 21ху меня просто смайлы отображаЛИСЬ до этого так: '/><!--endemo--> Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 3 Июня 2007 Жалоба Поделиться Опубликовано 3 Июня 2007 Вобщем модификация в том виде, в каком я ее помню "Запись Х закрыта для всех кроме Вас". Я мог что-то пропустить или забыть со временем, потому что выдирал мод из сильно модифицированных файлов. В частности тем кто использует тег CUT от Vicer'a советую внимательнее читать код, потому что модификацию надо проводить прямо по коду моду тега CUT или без него! Тег CUT от Vicer'a искать в этой теме (это единственный аттачный файл во всей теме http://www.ibresource.ru/forums/index.php?...ost&id=1314 ) Простой мод не для слабых духом, потому что надо будет убрать из кода ненужные вещи, если не хотите ставить тег CUT Затронутые файлы:posts.phpskin_posts.phplist_post.phpuser_search.php (прописывать в main_search.php не стал, т.к. у меня несколько иная система поиска, поэтому кому надо сделают по аналогии с user_search.phpну и lang файлы соотвественно тоже надо поменять, если будет использовать свои фразы или рисунки. Итак смотрим. skin_post.php добавим под функцию post_closed новую функцию //================================================ // post_closed2 //================================================ function post_closed2($row="") { global $ibforums, $journal; $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<<EOF <tr><td class='catend'></td></tr> <tr> <td class='postparam' align='right'><a name='p{$row['pid']}'></a>{$row['journal_link']} {$ibforums->lang['j_closed_title2']} <b>{$row['title']}</b> {$ibforums->lang['j_closed_title3']}</td> </tr> {$row['post_nav']} EOF; //--endhtml--// return $IPBHTML; } j_closed_title2 и j_closed_title3 определите сами в lang файле! list_post.php (показываю просто кусок как сделано у меня кода в render post) // render post $row['journal_link'] = $journal->skin->html['posts']->journal_link($row); if ($row['closed'] == 1) { $this->output['POSTS'] .= $journal->skin->html['posts']->post_closed2($row); $this->output['POSTS'] .= $journal->skin->html['posts']->post_row($this->post_render->process_post($row)); } else { $this->output['POSTS'] .= $journal->skin->html['posts']->post_row($this->post_render->process_post($row)); } $start_post = false; } user_search.php (с учетом модификации тега CUT) логика примерно такова, если пост закрыт и вы в списке j_view, то рендерить c учетом post_closed2, если нет, то ренедерить пост как обычно, но кода много из-за того что у меня в процедуру рендера поста встроена обработка тега CUT, выкиньте ее и получится чистый код, мне было реально влом // show closed post ? if ($row['closed'] == 1 and !$ibforums->member['j_view']) { $output['POSTS'] .= $journal->skin->html['posts']->post_closed($row); } elseif ($row['closed'] == 1 and $ibforums->member['j_view']) { if ($row['has_poll']) { $poll_pids[$row['pid']] = $row['journal_id']; } if ($row['attach_key'] != "") { $attach_pids[] = $row['pid']; } //strip post $cut_pos = stripos($row['post'], '[CUT]'); if ($cut_pos!==false) { if ( strlen($row['post']) > $cut_pos+5){ $row['post_body'] = substr( $row['post'], 0, $cut_pos); $row['post_body_extra'] = "<br /><br />[<a href='{$journal->base_url}user=".$row['journal_id']."&comm=".$row['pid']."'>Читать далее</a>...]"; }else{ $row['post_body'] = str_replace('[CUT]', '', $row['post']); $row['post_body_extra'] = ""; } $row['post'] = $row['post_body'].$row['post_body_extra']; } // render post $q = $post_render->process_post($row); if (count($search['HLITE'])) { foreach($search['HLITE'] as $val) { if ( preg_match( "/(^|\s|'|\"|>|\S)(".preg_quote($val, '/').")(\S|\s|'|\"|,|\.|!|<br|$)/is", $q['post'] ) ) { // $q['post'] = preg_replace( "/(^|\s|'|\"|>|\S)(".preg_quote($val, '/').")(\S|\s|'|\"|,|\.|!|<br|$)/is", "\\1<span class='searchlite'>\\2</span>\\3", $q['post'] ); $q['post'] = preg_replace( "/(^|\s|'|\"|>|\S)(".preg_quote($val, '/').")(\S|\s|'|\"|,|\.|!|<br|$)/is", "\\1\\2\\3", $q['post'] ); } } } $output['POSTS'] .= $journal->skin->html['posts']->post_closed2($q); $output['POSTS'] .= $journal->skin->html['posts']->post_row($q); } else { if ($row['has_poll']) { $poll_pids[$row['pid']] = $row['journal_id']; } if ($row['attach_key'] != "") { $attach_pids[] = $row['pid']; } //strip post $cut_pos = stripos($row['post'], '[CUT]'); if ($cut_pos!==false) { if ( strlen($row['post']) > $cut_pos+5){ $row['post_body'] = substr( $row['post'], 0, $cut_pos); $row['post_body_extra'] = "<br /><br />[<a href='{$journal->base_url}user=".$row['journal_id']."&comm=".$row['pid']."'>Читать далее</a>...]"; }else{ $row['post_body'] = str_replace('[CUT]', '', $row['post']); $row['post_body_extra'] = ""; } $row['post'] = $row['post_body'].$row['post_body_extra']; } // render post $q = $post_render->process_post($row); if (count($search['HLITE'])) { foreach($search['HLITE'] as $val) { if ( preg_match( "/(^|\s|'|\"|>|\S)(".preg_quote($val, '/').")(\S|\s|'|\"|,|\.|!|<br|$)/is", $q['post'] ) ) { // $q['post'] = preg_replace( "/(^|\s|'|\"|>|\S)(".preg_quote($val, '/').")(\S|\s|'|\"|,|\.|!|<br|$)/is", "\\1<span class='searchlite'>\\2</span>\\3", $q['post'] ); $q['post'] = preg_replace( "/(^|\s|'|\"|>|\S)(".preg_quote($val, '/').")(\S|\s|'|\"|,|\.|!|<br|$)/is", "\\1\\2\\3", $q['post'] ); } } } $output['POSTS'] .= $journal->skin->html['posts']->post_row($q); } $start_post = false; } $output['POSTS'] .= $journal->skin->html['posts']->post_bottom(); posts.php - почти полная аналогия с user_search.php // show closed post ? if ($row['closed'] == 1 and !$ibforums->member['j_view']) { $output['POSTS'] .= $journal->skin->html['posts']->post_closed($row); } elseif ($row['closed'] == 1 and $ibforums->member['j_view']) { if ($row['has_poll']) { $poll_pids[$row['pid']] = $row['journal_id']; } if ($row['attach_key'] != "") { $attach_pids[] = $row['pid']; } //strip post $cut_pos = stripos($row['post'], '[CUT]'); if ($cut_pos!==false) { if ( strlen($row['post']) > $cut_pos+5){ $row['post_body'] = substr( $row['post'], 0, $cut_pos); $row['post_body_extra'] = "<br /><br />[<a href='{$journal->base_url}user=".$row['journal_id']."&comm=".$row['pid']."'>Читать далее</a>...]"; }else{ $row['post_body'] = str_replace('[CUT]', '', $row['post']); $row['post_body_extra'] = ""; } $row['post'] = $row['post_body'].$row['post_body_extra']; } // render post $output['POSTS'] .= $journal->skin->html['posts']->post_closed2($row); $output['POSTS'] .= $journal->skin->html['posts']->post_row($this->post_render->process_post($row)); } else { if ($row['has_poll']) { $poll_pids[$row['pid']] = $row['journal_id']; } if ($row['attach_key'] != "") { $attach_pids[] = $row['pid']; } //strip post $cut_pos = stripos($row['post'], '[CUT]'); if ($cut_pos!==false) { if ( strlen($row['post']) > $cut_pos+5){ $row['post_body'] = substr( $row['post'], 0, $cut_pos); $row['post_body_extra'] = "<br /><br />[<a href='{$journal->base_url}user=".$row['journal_id']."&comm=".$row['pid']."'>Читать далее</a>...]"; }else{ $row['post_body'] = str_replace('[CUT]', '', $row['post']); $row['post_body_extra'] = ""; } $row['post'] = $row['post_body'].$row['post_body_extra']; } // render post $output['POSTS'] .= $journal->skin->html['posts']->post_row($this->post_render->process_post($row)); } $start_post = false; } $output['POSTS'] .= $journal->skin->html['posts']->post_bottom(); Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 3 Июня 2007 Жалоба Поделиться Опубликовано 3 Июня 2007 добавляемый файл плиз скинуть в зип архиве Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 3 Июня 2007 Жалоба Поделиться Опубликовано 3 Июня 2007 Теперь более интересный мод в состоянии разработки "ЗАГРУЗКА ФАЙЛОВ ДРУГИХ ТИПОВ"! У меня возникли проблемы с загрузкой ZIP архивов, система говорит что неправильный тип файла! В идеале необходимо дописать управление из админки на разрешение загрузки других файлов и на разрешенный размер аттачей, но это не сейчас. Подозреваю что проблемы в add_attachments2 ... но где найти не могу, аттачи txt и doc проходят без проблем ... смотреть пример можно по адресу http://bbs.krasnogorsk.ru/forum/dm Модуль загрузки файлов (mp3,doc,txt,zip)--------------------------------------------------------------------------------Затронутые файлы:------------------post_functions.phpskin_q_reply.phppost_new.phpupload_lib.php (содержимое ниже)skin_posts.phppost_render.phppost_edit.phpcomment_new.phpcomment_edit.php--------------------------------------------------------------------------------Открыть post_functions.php Находим: $data['_UPLOAD_FIELD'] = $journal->skin->html['q_reply']->upload_field($max_upload_info,$attach_field); Добавляем: $data['_UPLOAD_FIELD2'] = $journal->skin->html['q_reply']->upload_field2($max_upload_info,$attach_field); Находим функцию function add_attachment() По окончании функции добавляем еще одну: function add_attachment2() { global $ibforums, $journal, $DB; require JOURNAL_ROOT."misc/upload_lib.php"; $upload_lib = new upload_lib(); $attach_post = 0; if ($ibforums->input['attach_key'] != "") { $this->cache_attachment(); foreach ($this->attach_cache as $row) { $attach_post += $row['attach_size']; } } if ( $ibforums->cache['group_cache'][$journal->users['mgroup']]['g_j_attach_max'] > 0 ) { if ( $ibforums->cache['group_cache'][$journal->users['mgroup']]['g_j_attach_per_post'] ) { $this->main_space_left = intval( ( $ibforums->cache['group_cache'][$journal->users['mgroup']]['g_j_attach_per_post'] * 1024 ) - $attach_post ); } else { $this->get_attachment_sum(); $this->main_space_left = intval( ( $ibforums->cache['group_cache'][$journal->users['mgroup']]['g_j_attach_max'] * 1024 ) - $this->attach_sum ); } } else { if ( $ibforums->cache['group_cache'][$journal->users['mgroup']]['g_j_attach_per_post'] ) { $this->main_space_left = intval( ( $ibforums->cache['group_cache'][$journal->users['mgroup']]['g_j_attach_per_post'] * 1024 ) - $attach_post ); } else { $this->main_space_left = 1000000000; } } $ibforums->input['attach_key'] = ($ibforums->input['attach_key'] != "") ? $ibforums->input['attach_key'] : md5(microtime()); $upload_lib->max_file_size = $this->main_space_left; $upload_lib->name = "j".$journal->users['id']."_".time(); if ($upload_lib->upload('FILE_UPLOAD2')) { # $image_lib->thumb_width = $ibforums->vars['j_th_width']; # $image_lib->thumb_height = $ibforums->vars['j_th_height']; # $image_lib->make_thumbnail(); $attach_db = array( 'attach_file' => $upload_lib->name, 'attach_name' => $upload_lib->original_name, 'attach_size' => $upload_lib->file_size, 'attach_date' => time(), 'attach_temp' => 1, 'attach_pid' => 0, 'attach_cid' => 0, 'attach_journal' => $journal->users['id'], 'attach_key' => $ibforums->input['attach_key']); $db_string = $DB->compile_db_insert_string($attach_db); $DB->query("INSERT INTO ibf_jattach (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")"); $attach_db['attach_id'] = $DB->get_insert_id(); $this->attach_cache[$attach_db['attach_id']] = $attach_db; } return $upload_lib->error; } -------------------------------------------------------------------------------- Открываем файл skin_q_reply.php Находим функцию function attach_rows($row="") меняем в ней{$row['attach_size']} на {$row['attach_size']} (лучше смотрится) Находим function upload_field($max_upload_info="",$attach_field="") Меняем на function upload_field($max_upload_info="") В теле функции удаляем:{$max_upload_info} и {$attach_field} По окончании функции добавляем еще одну: //=========================================================================== // upload_field2 //=========================================================================== function upload_field2($max_upload_info="",$attach_field="") { global $ibforums, $journal; $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<<EOF <tr> <td class='post'>{$ibforums->lang['j_upload_text2']}</td> <td class='post'><input class='input' type='file' size='40' name='FILE_UPLOAD2' /> <input class='button' type="submit" name="postattach2" onclick="skip_check=1" value="{$ibforums->lang['j_add_btn']}" /> </td> </tr> <tr> <td class='post'>{$max_upload_info}</td> <td class='post'>{$attach_field}</td> </tr> EOF; //--endhtml--// return $IPBHTML; } Находим 2 вхождения {$data['_UPLOAD_FIELD']} и после каждого добавляем: {$data['_UPLOAD_FIELD2']} --------------------------------------------------------------------------------Открываем post_new.php Находим:// Upload attach И меняем весь if на следующее сочетание: if (($this->post_func->allow_upload())&&($ibforums->input['postattach']!="")) { $this_error = $this->post_func->add_attachment(); if ($ibforums->input['postattach']) { $ibforums->input['preview_post'] = 1; $skip_check_error = 1; } } elseif (($this->post_func->allow_upload())&&($ibforums->input['postattach2']!="")) { $this_error = $this->post_func->add_attachment2(); if ($ibforums->input['postattach2']) { $ibforums->input['preview_post'] = 1; $skip_check_error = 1; } } -------------------------------------------------------------------------------- Создаем новый файл upload_lib.php в директории /misc со следующим содержанием:<?php if (!defined('IN_JOURNAL')) { print "<h1>Incorrect access</h1>You cannot access this file directly."; exit(); } class upload_lib { var $original_name = ''; var $name = ''; var $path = ''; var $type = ''; // jpeg options var $mime_allowed = array ( 'audio/x-mpeg' => '.mp3', 'application/msword' => '.doc', 'application/zip' => '.zip', 'text/plain' => '.txt'); var $error = ''; function upload_lib() { global $ibforums; $this->path = $ibforums->vars['j_upload_dir']; } function upload($form_name='FILE_UPLOAD2') { global $ibforums; $this->error = ''; // Return if we don't have a file to upload if (trim($_FILES[$form_name]['name']) == "" or !$_FILES[$form_name]['name'] or $_FILES[$form_name]['name'] == "none") { return FALSE; } $this->type = preg_replace( "/^(.+?);.*$/", "\\1", $_FILES[$form_name]['type']); $this->original_name = preg_replace( "/[^\w\.]/", "_", $_FILES[$form_name]['name']); $this->file_size = $_FILES[$form_name]['size']; // Check the file size if ($this->file_size > $this->max_file_size) { $this->error = $ibforums->lang['j_err_dl_big']; return FALSE; } // Check image by mime if(!isset($this->mime_allowed[$this->type])) { $this->error = $ibforums->lang['j_err_dl_type']; return FALSE; } // Make local name if (trim($this->name) == "") { $this->name = "j_".time(); } $this->name .= $this->mime_allowed[$this->type]; // Copy the upload to the uploads directory if (! @move_uploaded_file( $_FILES[$form_name]['tmp_name'], $this->path.'/'.$this->name) ) { $this->error = $ibforums->lang['j_err_dl_file']; return FALSE; } else { @chmod( $this->path.'/'.$this->name, 0777 ); } return TRUE; } } ?>--------------------------------------------------------------------------------Открываем skin_posts.php Находим функцию function attachments_img_thumb По окончании оной добавляем: //=========================================================================== // attachments_file //=========================================================================== function attachments_file($file_name="",$file="") { global $ibforums, $journal; $IPBHTML = ""; //--starthtml--// $IPBHTML .= <<<EOF <a href='{$ibforums->vars['j_upload_url']}/{$file_name}' target='_blank'>{$file}</a> EOF; //--endhtml--// return $IPBHTML; } --------------------------------------------------------------------------------Открываем post_render.php Находим функцию function get_attachment($row) В теле функции есть последняя строчка: return $journal->skin->html['posts']->attachments_img( $row['attach_file'] ); ПЕРЕД ней добавляем: if (($row['attach_width'] == 0) and ($row['attach_height']) == 0) { return $journal->skin->html['posts']->attachments_file($row['attach_file'],$row['attach_name']); } --------------------------------------------------------------------------------Открываем post_edit.php Находим:// Upload attach И меняем весь if на следующее сочетание: if (($this->post_func->allow_upload())&&($ibforums->input['postattach']!="")) { $this_error = $this->post_func->add_attachment(); if ($ibforums->input['postattach']) { $ibforums->input['preview_post'] = 1; $skip_check_error = 1; } } elseif (($this->post_func->allow_upload())&&($ibforums->input['postattach2']!="")) { $this_error = $this->post_func->add_attachment2(); if ($ibforums->input['postattach2']) { $ibforums->input['preview_post'] = 1; $skip_check_error = 1; } } }--------------------------------------------------------------------------------Открываем comment_new.php Находим:// Upload attach И меняем весь if на следующее сочетание: if (($this->post_func->allow_upload())&&($ibforums->input['postattach']!="")) { $this_error = $this->post_func->add_attachment(); if ($ibforums->input['postattach']) { $ibforums->input['preview_post'] = 1; $skip_check_error = 1; } } elseif (($this->post_func->allow_upload())&&($ibforums->input['postattach2']!="")) { $this_error = $this->post_func->add_attachment2(); if ($ibforums->input['postattach2']) { $ibforums->input['preview_post'] = 1; $skip_check_error = 1; } } }--------------------------------------------------------------------------------Открываем comment_edit.php Находим:// Upload attach И меняем весь if на следующее сочетание: if (($this->post_func->allow_upload())&&($ibforums->input['postattach']!="")) { $this_error = $this->post_func->add_attachment(); if ($ibforums->input['postattach']) { $ibforums->input['preview_post'] = 1; $skip_check_error = 1; } } elseif (($this->post_func->allow_upload())&&($ibforums->input['postattach2']!="")) { $this_error = $this->post_func->add_attachment2(); if ($ibforums->input['postattach2']) { $ibforums->input['preview_post'] = 1; $skip_check_error = 1; } } } Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 3 Июня 2007 Жалоба Поделиться Опубликовано 3 Июня 2007 кстати я тут подумал, а почему не подключить class_upload форума на одно стандартное поле загрузки файлов?и тогда не возникнет необходимости делать 2? Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 3 Июня 2007 Жалоба Поделиться Опубликовано 3 Июня 2007 кстати я тут подумал, а почему не подключить class_upload форума на одно стандартное поле загрузки файлов?и тогда не возникнет необходимости делать 2? Была такая идея, но решили сделать пока так, чтобы понять проходит ли загрузка и как все будет работать .... это первая версия мода, в ней есть ошибки, потому что как я уже описал не аттачатся zip и mp3 файлы ни на тестовом сервере под win ни на рабочем под *nix ... сначала необходимо раскопать почему так происходит, чтобы двигаться далее. Чем так разительно отличается zip от doc или txt ... вот в чем заковырка-то!? Вобщем привязываться на форум не очень хочется ... лучше позднее сделать управление в админке, к тому же в перспективе сделать для каждого юзера отдельный каталог для аттачей (у меня уже в дневниках более 200 тысяч файлов) по user_id, чтобы не собирать сотни тысяч аттачей в одном каталоге. Также почти готов RSS мод ... первую версию еще не обкатывали на рабочей машине, но тесты прошли нормально. Ссылка на комментарий Поделиться на других сайтах Прочее
urisoft Опубликовано 3 Июня 2007 Жалоба Поделиться Опубликовано 3 Июня 2007 replicantЧем так разительно отличается zip от doc или txt ... вот в чем заковырка-то!Проверь mime_allowed.mime на ZIP:application/zipapplication/x-zip-compressed Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 3 Июня 2007 Жалоба Поделиться Опубликовано 3 Июня 2007 Замечена бага. Если пост в дневе начинается с пустой строки или с состоящей только из пробелов, то его невозможно отправить. Говорит, что сообщение пусто.копаем ValidateForm... все из-заvar m = /^s*(.+?)s*$/im;$ значит конец строкизначит другие строки не учитываются хотя и стоит m а опере вообще плевать на пробелы,она их считаетдва пробела поставил и яваскрипт оперы радостно возвращает тру... Ссылка на комментарий Поделиться на других сайтах Прочее
urisoft Опубликовано 3 Июня 2007 Жалоба Поделиться Опубликовано 3 Июня 2007 ArharДа. Там не правильно написано. И $ тут абсолютно не причем.Вот так должно быть:var m = /^\s*((.|[\\n\\r])+)\s*$/im; Строка в коде 3 раза встречается.... Заменить все. Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 3 Июня 2007 Жалоба Поделиться Опубликовано 3 Июня 2007 да, так работает, спасибо Ссылка на комментарий Поделиться на других сайтах Прочее
Lera Опубликовано 3 Июня 2007 Жалоба Поделиться Опубликовано 3 Июня 2007 Ребят, не подскажите, как лечить такой баг? Вот сначала текст хороший, с отступлением. Ничего не меняю в дизайне вообще, но через несколько дней текст съезжает. И так у многих. Я себе три раза переделывала дневник из-за этого, думала из-за дизайна траблы, но нет. Сделаю нормально, ничего не трогаю, а потом раз и съехал без полей. Вот как было пару дней назадhttp://img70.imageshack.us/img70/2133/22bl1.jpg А вот как сегодня. Текст прижимается к полям. Я себе и ещё паре человек из-за этого переделывала, а сейчас как представлю снова дизайн переписывать, так руки опускаются.http://img166.imageshack.us/img166/3348/11lx5.jpg Может есть решение без переделывания дизайнов? Ссылка на комментарий Поделиться на других сайтах Прочее
l-k Опубликовано 3 Июня 2007 Жалоба Поделиться Опубликовано 3 Июня 2007 Теперь более интересный мод в состоянии разработки "ЗАГРУЗКА ФАЙЛОВ ДРУГИХ ТИПОВ"!у меня то же самое сделано через модификацию image_lib.php, post_render.php и немножко - скинов. я бы поделилась, но у меня много чего наверчено в дневниках, мне уже сложно найти концы, где какая модификация... "записи только для автора", произвольная дата записи, загрузка файлов (не картинок), печать списка записей (не одна запись с комментариями, а все записи без комментариев), новый тип доступа в дневник - 'для группы "бывалых пользователей" и друзей', список "кто здесь" на главной странице дневников (в самих дневниках юзеры не захотели подобного списка), и что-то еще... не помню Ссылка на комментарий Поделиться на других сайтах Прочее
urisoft Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 Простой вариант добавления возможноти загрузки zip, mp3, doc и txthttp://www.urisoft.ru/journal/upload/upload.txt Тут нет возможности изменять типы загружаемых файлов из админки. Все только вручную добавлением MIME. Имена загруженных на сервак файлов конечному пользователю не видны и расширение у всех одно. Отдается файл с тем же именем которое было у залившего пользователя. Типа безопасность.... Мод хоть и рабочий, но поставляется "как есть" Найдете ошибки, исправим. Ссылка на комментарий Поделиться на других сайтах Прочее
l-k Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 Во, примерно так у меня и сделана загрузка дополнительных типов файлов, как у urisoft'а Только у меня файлы отдаются не скриптом вроде attach.php, а по прямой ссылке на сам файл. Поэтому дополнительное поле 'attach_type' не понадобилось. Безопасность... ну, те типы, что разрешены, вроде безопасны Имхо через attach.php отдавать правильней, но я на форуме столкнулась с проблемой. Пользователи загружают на форум видео. Потом просматривают его прямо в браузере, не закачивая предварительно к себе на диск. И шлют пулеметной очередью, несколько раз в секунду, однотипные запросы такого вида:"GET /index.php?act=Attach&type=post&id=44444 HTTP/1.1" 200 12646Что изрядно загружает сервер. Иногда даже до ошибки "Can't create a new thread (errno 11)". Счетчик количества просмотров видео при этом показывает цифры порядка несколько тысяч, что пугает пользователей Поэтому мне больше нравятся прямые ссылки на файлы, а не через скрипт, который, прежде чем отдать файл, авторизует пользователя по полной программе, как положено. Кстати, как оказалось, у некоторых пользователей браузеры указывают нетрадиционные mime-types (выловлено из реальных запросов):'image/x-png' => '.png''image/jpg' => '.jpg''audio/x-mpeg' => '.mp3''audio/mp3' => '.mp3' Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 replicantЧем так разительно отличается zip от doc или txt ... вот в чем заковырка-то!Проверь mime_allowed.mime на ZIP:application/zipapplication/x-zip-compressed Все работает, раньше работало только из Opera, теперь работает и из IE , сенкс! Значит мод все же был правильно сделан! Осталось разобраться только с MP3 почему он не загружается в IE. Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения