Leben Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 под 2.2.2 планируется сделать такой хороший мод? Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 Разбор полетов с IE7 и MIME-TYPES var $mime_allowed = array ( 'application/msword' => '.doc', 'application/zip' => '.zip', 'application/x-zip-compressed' => '.zip', 'audio/x-mpeg' => '.mp3', 'audio/mpeg' => '.mp3', 'audio/mp3' => '.mp3', 'text/plain' => '.txt'); Гарантировано работают zip, mp3, doc, txt (тестировал на apache c включенным mod_mime и mime_magic), браузеры ie 6-7, opera 9, firefox 2 Ссылка на комментарий Поделиться на других сайтах Прочее
urisoft Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 Пользователи загружают на форум видео. Потом просматривают его прямо в браузере, не закачивая предварительно к себе на диск. И шлют пулеметной очередью, несколько раз в секунду, однотипные запросыпрямые ссылки на файлы, а не через скрипт, который, прежде чем отдать файл, авторизует пользователя по полной программе, как положеноДа. С одной стороны конечно плохо через скрипт. Лишние запросы и проч., но с другой стороны так нет возможности смотреть загруженные файлы в закрытых дневниках (правда нет проверки на закрытые записи (можно легко добавить))... Ну а переделать на прямую ссылку - всего 2 строчки заменить Ссылка на комментарий Поделиться на других сайтах Прочее
l-k Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 replicantразбор полетов... на всякий случай еще раз (извините за навязчивость ) позволю себе напомнить: вот еще 2 mime типа, которых нет в вашем списке:'image/x-png' => '.png''image/jpg' => '.jpg'вдруг у кого-то еще, как у меня, была проблема - некоторые пользователи не могли загружать jpg и png. Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 если сделать вот так: Журнал - Дневникто читабельные ссылки и все самописные теги естессно тоже работают Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 LeraСамо по себе так происходить не можетэто из-за изменеия стиля например такие свойства margin или padding Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 (правда нет проверки на закрытые записи (можно легко добавить))... Ну а переделать на прямую ссылку - всего 2 строчки заменить Добавляем проверку запрета просмотра по прямой ссылке на файл через .htaccess в папке upload RewriteEngine On RewriteOptions MaxRedirects=100 RewriteCond %{HTTP_REFERER} !^http://(www\.)?site1\.ru/ [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?site2\.ru/ [NC] #RewriteCond %{HTTP_REFERER} !^$ RewriteRule \.(jpe?g|gif|png|jpg|mp3|doc|txt|zip)$ http://www.site.ru/fake.gif [L] Если у вас папка UPLOAD состоит из подкаталогов, куда аттачи скидываются по-юзерным или по-месячным методом прокатит такой код RewriteEngine On RewriteOptions MaxRedirects=100 RewriteCond %{HTTP_REFERER} !^http://(www\.)?site1\.ru/ [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?site2\.ru/ [NC] #RewriteCond %{HTTP_REFERER} !^$ RewriteRule /*/*\.*$ http://www.site.ru/fake.gif [L] в таком случае файл должен лежать в /upload/ и будет защищать все подкаталоги со всеми файлами, дальше уже возможны любые вариации на ваше усмотрение site1 site2 список разрешенных url, www.site.ru/fake.gif - картинка или файл заглушка, который будет подставляться в случае попытки прямого обращения по url файла из папки аттачей За основу взята идея Anna из мода запрета обращения к папкам и файлам. replicantразбор полетов... на всякий случай еще раз (извините за навязчивость ) позволю себе напомнить: вот еще 2 mime типа, которых нет в вашем списке:'image/x-png' => '.png''image/jpg' => '.jpg'вдруг у кого-то еще, как у меня, была проблема - некоторые пользователи не могли загружать jpg и png. Эти типы есть у меня в image_lib.php, я в своем разборе полетов указывал типы для zip, mp3, doc, txt, которые позволят работать моду опубликованному мною выше и использующему upload_lib.php Вобщем указанные мной типы подходят для этого поста Журнал - Дневник Вопрос залу: кто-нибудь использует метод хранения аттачей как /uploads/user_id/ т.е. сохранение аттачей в каталогах по id юзера? ИМХО очень логичное решение проблемы кучи файлов в одном каталоге. У кого-нибудь идеи такого мода? Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 идея проста, нам же известен номер пользователя, от которого грузится файл?(он передается в названии файла)этот номер оттуда забираем регуляркойпри аплоаде смотрим, есть ли уже такая папканет - создать и @chmod 777если не создалось, то тут уж в главную директорию пихаемплюс возвращаем некоторые данные типа directory после загрузкиэти данные пишем в новую колонку в таблице аттачей (которую создаем ALTER TABLE) Ссылка на комментарий Поделиться на других сайтах Прочее
l-k Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 я в своем разборе полетов указывал типы для zip, mp3, doc, txt, которые позволят работать моду опубликованному мною выше и использующему upload_lib.php Понятно. Туплю! Я использую систему хранения аттачей, как в Invision Gallery - новый подкаталог создается, когда количество файлов в старом превысит порог, установленный в админке. Было бы, конечно, здорово сделать так, как ты предлагаешь, но на момент, когда я добавляла эту систему, у нас на форуме были уже десятки тысяч загруженных файлов и не захотелось это разгребать.ИМХО очень логичное решение проблемы кучи файлов в одном каталоге.Да, так было бы удобней! Только опять-таки - проблема с переходом на эту систему. Придется распихивать имеющиеся файлы по папкам. Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 зачем разпихивать?в таблице по умолчанию значение папки будет стандартное ('')а новые файлы будут писаться в 'nnnn' Ссылка на комментарий Поделиться на других сайтах Прочее
l-k Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 Arhar, да, конечно. Но если не перемещать уже загруженные файлы, тогда теряется основной плюс решения "все файлы пользователя - в одном месте, в папке с его id". Тогда все равно, как именно дробить файлы по подкаталогам. Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 хм, а php может перемещать файлы?можно автоматизировать процесс. Ссылка на комментарий Поделиться на других сайтах Прочее
l-k Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 Перемещать? Конечно. Копируем файл на новом месте, а на старом - стираем. PHP много чего может, было бы время и желание все это сделать хехе, "о сколько нам открытий чудных"... вот php.net мне подсказывает, что и для перемещения файла есть функция, называется rename() Ссылка на комментарий Поделиться на других сайтах Прочее
urisoft Опубликовано 4 Июня 2007 Жалоба Поделиться Опубликовано 4 Июня 2007 Arharидея проста, нам же известен номер пользователя, от которого грузится файл?(он передается в названии файла)этот номер оттуда забираем регуляркойне надо регуляркой. зачем усложнять. $journal->users['id'] всегда содержит ID текущего дневника. только про global $journal; надо не забыть там где он нужен. replicantДобавляем проверку запрета просмотра по прямой ссылке на файл через .htaccess в папке uploadЯ не это имел ввиду. Так нельзя запретить просмотр аттачей в закрытом дневнике/записи. Ну вобщем каждый выберет то, что ему больше подходит... Вариантов много. Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 5 Июня 2007 Жалоба Поделиться Опубликовано 5 Июня 2007 Я смотрю еще не все сделали вынос CSS-кода из кода страницыЕсли кому-то надо кроме меня , то вот так делаем: В файле /journal/journal.php находим: (в функции output)$output['CSS'] .= "\n".implode(" ",@file($ibforums->vars['j_user_css_dir']."/style_".$this->users['id'].".css")); и заменяем на это:$output['CSS'] .= "\n<link rel='stylesheet' type='text/css' href='".$ibforums->vars['j_user_css_url']."/style_".$this->users['id'].".css'>"; находим: (в функции redirect_screen)$css .= "\n".implode(" ",@file($ibforums->vars['j_user_css_dir']."/style_".$this->users['id'].".css")); и заменяем на это:$css .= "\n<link rel='stylesheet' type='text/css' href='".$ibforums->vars['j_user_css_url']."/style_".$this->users['id'].".css'>"; Lera.....Вот как было пару дней назадhttp://img70.imageshack.us/img70/2133/22bl1.jpg А вот как сегодня. Текст прижимается к полям. Я себе и ещё паре человек из-за этого переделывала, а сейчас как представлю снова дизайн переписывать, так руки опускаются.http://img166.imageshack.us/img166/3348/11lx5.jpg Может есть решение без переделывания дизайнов?как я и говорил в стиле все делоа конкретнее вот в этом у .post свойство прописано PADDING-LEFT: 3px;либо до 6-ки увелич, либо просто вместо этого поставь padding: 6px; Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 5 Июня 2007 Жалоба Поделиться Опубликовано 5 Июня 2007 Я не это имел ввиду. Так нельзя запретить просмотр аттачей в закрытом дневнике/записи. Ну вобщем каждый выберет то, что ему больше подходит... Вариантов много. Я есс-но понял что ты имел ввиду совсем другое, но вариант с htaccess - это скажем так первый шаг избавиться от слишком "подозрительных" друзей, которые попав в список доступа к журналу начинают трезвонить обо всех фотках и раскидывать по сети url'ы приватных файлов. Еще это удобный способ запретить автоматическое создание ресурсов на других сайтах, которые создает из картинок робот, бегающий и дергающий url аттачей. Я смотрю еще не все сделали вынос CSS-кода из кода страницы А какова основная цель данного изменения? Экономия на размере страницы или решение проблем с кеширование стиля некоторыми браузерами? Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 5 Июня 2007 Жалоба Поделиться Опубликовано 5 Июня 2007 А какова основная цель данного изменения? Экономия на размере страницы или решение проблем с кеширование стиля некоторыми браузерами? 1. ДА уменьшаем размер. что имхо вполне логично. Особено если юзверь внес кучу изменений с выбраный стиль то размер страницы растет и растет.2. ДА кеширование, помоему очевидно что CSS не так часто и менется же. ну и зачем пользователям регулярно читающим эти блоги получать все снова и снова?3. Поисковикам пофиг на оформление им нужно мясо (ну это как добивающий фактор )4. У форума есть настроечка которая позволяет "кешить" CSS вот и Дневникам такое тоже нужно. Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 5 Июня 2007 Жалоба Поделиться Опубликовано 5 Июня 2007 тогда сделать настройку "кешировать ваш дизайн?" Ссылка на комментарий Поделиться на других сайтах Прочее
Lera Опубликовано 5 Июня 2007 Жалоба Поделиться Опубликовано 5 Июня 2007 xRay, спасибо, PADDING-LEFT: 3px; решил все проблемы. Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 5 Июня 2007 Жалоба Поделиться Опубликовано 5 Июня 2007 Сократим размер css 1. SQLALTER TABLE ibf_jmembers ADD j_css_cache tinyint(1) default 0 AFTER j_css_custom2. ./journal/journal.phpнайти$output['CSS'] .= "\n".implode(" ",@file($ibforums->vars['j_user_css_dir']."/style_".$this->users['id'].".css"));заменить на if($this->users['j_css_cache']) { $output['CSS'] .= "\n<link rel='stylesheet' type='text/css' href='".$ibforums->vars['j_user_css_url']."/style_".$this->users['id'].".css'>"; } else { $output['CSS'] .= "\n".implode(" ",@file($ibforums->vars['j_user_css_dir']."/style_".$this->users['id'].".css")); }найти$css .= "\n".implode(" ",@file($ibforums->vars['j_user_css_dir']."/style_".$this->users['id'].".css"));заменить на if($this->users['j_css_cache']) { $css .= "\n<link rel='stylesheet' type='text/css' href='".$ibforums->vars['j_user_css_url']."/style_".$this->users['id'].".css'>"; } else { $css .= "\n".implode(" ",@file($ibforums->vars['j_user_css_dir']."/style_".$this->users['id'].".css")); }3. ./journal/dosetup.phpнайти 'j_settings' => $do_setting,добавить после 'j_css_cache' => intval($ibforums->input['j_css_cache']),4. ./journal/setup.phpнайти $blocks = array('j_show_img','j_auto_mail');заменить на $blocks = array('j_show_img','j_css_cache','j_auto_mail');5. ./journal/skin_cache/1/skin_setup.phpнайти <tr> <td class='row'>{$ibforums->lang['j_show_img']}</td> <td class='row'>{$row['j_show_img']}</td> </tr>добавить после <tr> <td class='row'><b>Кешировать свой дизайн?</b></td> <td class='row'>{$row['j_css_cache']}</td> </tr> пробуем Ссылка на комментарий Поделиться на других сайтах Прочее
wrm Опубликовано 5 Июня 2007 Жалоба Поделиться Опубликовано 5 Июня 2007 Ребят, НЕ ЗАБУДЬТЕ ПРО ИЗМЕНЕНИЕ ДАТ ЗАПИСЕЙ!!! Это же всем пригодится! l-k, а можно ссылочку на твой сервис дневников?И может ты выложишь измененные файлики, чтобы мы могли покопаться и взять нужное? Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 5 Июня 2007 Жалоба Поделиться Опубликовано 5 Июня 2007 вопрос не про изменение дат, а про "пин" записи через минут 45 наверно сделаю уффсделал)сейчас соберу инструкцию.. Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 5 Июня 2007 Жалоба Поделиться Опубликовано 5 Июня 2007 Что-то с кешированием странное, по идее после установки мода в исходной странице не должно быть кода CSS при включении кеширования, а там он есть. Хм, буду копать. Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 5 Июня 2007 Жалоба Поделиться Опубликовано 5 Июня 2007 1. SQLALTER TABLE ibf_jposts ADD pinned tinyint(1) default 0 AFTER closed2. ./journal/journal.phpнайти 'close' => 'misc/post_misc', 'open' => 'misc/post_misc',добавить после 'pin' => 'misc/post_misc', 'unpin' => 'misc/post_misc',3. ./journal/misc/post_misc.phpнайти case 'close': $this->close_post(1); break; case 'open': $this->close_post(0); break;добавить после case 'pin': $this->pin_post(1); break; case 'unpin': $this->pin_post(0); break;найти // -------------------------------- // Delete journal post // -------------------------------- function delete_post()добавить ПЕРЕД function pin_post($id) { global $ibforums, $DB, $journal; // Check post $DB->query("SELECT pid FROM ibf_jposts WHERE pid='".$ibforums->input['pid']."' AND journal_id='".$journal->users['id']."'"); if (!$DB->get_num_rows()) { $journal->err_journal($ibforums->lang['j_err_data']); } // Update database $DB->query("UPDATE ibf_jposts SET pinned='".$id."' WHERE pid='".$ibforums->input['pid']."' AND journal_id='".$journal->users['id']."'"); // jump back $journal->redirect_screen(($id == 1) ? 'Запись Закреплена' : 'Запись Откреплена',$journal->base_url."user=".$journal->users['id']."&view=".$ibforums->input['pid']); }4. ./journal/posts.phpнайти // Get posts $DB->query("SELECT p.*, m.mgroup FROM ibf_jposts p LEFT JOIN ibf_jmembers m ON (m.id=p.author_id) WHERE p.journal_id='".$journal->users['id']."' ORDER BY p.post_date DESC LIMIT ".$ibforums->input['st'].",".$journal->users['j_post_page']);ЗАМЕНИТЬ на $DB->query("SELECT p.*, m.mgroup FROM ibf_jposts p LEFT JOIN ibf_jmembers m ON (m.id=p.author_id) WHERE p.journal_id='".$journal->users['id']."' AND p.pinned = 1 ORDER BY p.post_date DESC"); // Start show posts if ($DB->get_num_rows()) { // Process all posts $attach_pids = array(); $poll_pids = array(); $old_date = ""; $start_post = true; while ($row = $DB->fetch_row()) { $post = ''; list($row['date'],$row['time']) = explode("|",$journal->get_date($row['post_date'],"d F Y|H:i")); // New day ? if ($old_date != $row['date']) { if (!$start_post) { $output['PINNED'] .= $journal->skin->html['posts']->post_bottom(); } $output['PINNED'] .= $journal->skin->html['posts']->post_top($row); $old_date = $row['date']; } // show closed post ? if ($row['closed'] == 1 and !$ibforums->member['j_view']) { $output['PINNED'] .= $journal->skin->html['posts']->post_closed($row); } else { if ($row['has_poll']) { $poll_pids[$row['pid']] = $row['journal_id']; } if ($row['attach_key'] != "") { $attach_pids[] = $row['pid']; } // render post $output['PINNED'] .= $journal->skin->html['posts']->post_row($this->post_render->process_post($row)); } $start_post = false; } $output['PINNED'] .= $journal->skin->html['posts']->post_bottom(); // process polls if (count($poll_pids)) { $output['PINNED'] = $this->post_render->render_poll($output['PINNED'],$poll_pids); } // process attached pic's if (count($attach_pids)) { $output['PINNED'] = $this->post_render->render_attach($output['PINNED'],$attach_pids,0,0,1); } } // Get posts $DB->query("SELECT p.*, m.mgroup FROM ibf_jposts p LEFT JOIN ibf_jmembers m ON (m.id=p.author_id) WHERE p.journal_id='".$journal->users['id']."' AND p.pinned = 0 ORDER BY p.post_date DESC LIMIT ".$ibforums->input['st'].",".$journal->users['j_post_page']);не забудьте добавить тег cut и ваши моды! 5. ./journal/misc/post_render.phpнайти $row['edit_btn'] .= $journal->skin->html['posts']->post_btn($row,$row['closed'] ? 'open' : 'close',$row['closed'] ? $ibforums->lang['j_open_btn'] : $ibforums->lang['j_close_btn']);заменить на $row['edit_btn'] .= $journal->skin->html['posts']->post_btn($row, $row['closed'] ? 'open' : 'close',$row['closed'] ? $ibforums->lang['j_open_btn'] : $ibforums->lang['j_close_btn'], $row['pinned'] ? 'unpin' : 'pin',$row['pinned'] ? 'Открепить' : 'Закрепить'); 6. ./journal/skin_cache/1/skin_posts.phpнайти<!--J.PAGE_LINKS--> {$row['POSTS']}добавить ПЕРЕД{$row['PINNED']}найти$close="",$close_text=""добавить,$pin="",$pin_text="" найти<a href="{$journal->base_url}user={$row['journal_id']}&pid={$row['pid']}&aid={$close}">{$close_text}</a> & #149;добавить после<a href="{journal.script_url}user={$row['journal_id']}&pid={$row['pid']}&aid={$pin}">{$pin_text}</a> & #149;& #149; Слитноhttp://img71.imageshack.us/img71/7937/pinnedjpostgs7.jpg Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 5 Июня 2007 Жалоба Поделиться Опубликовано 5 Июня 2007 2 Arhar: на ленте друзей закрепленный пост не сказывается каким-нибудь образом? Вопрос: Кто-нибудь тестировал дневники на превышение лимита на весь дневник отведенного для загрузки файлов? У меня почему-то перескакивает за лимит и загружает файлы дальше, хотя может быть не детально тестировал. Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения