Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Модули (http://forum.mynuke.ru/forumdisplay.php?f=17)
-   -   Album (http://forum.mynuke.ru/showthread.php?t=1678)

Wind 02.04.2006 02:43

Album
 
Вложений: 1
Все, что косается этой галереи обсуждаем здесь.
И начать я хочу с некоторых добавлений и изменений, которые я сделал:
- Исправление ссылок (изначально по какой не тыркне попадаешь на гл. страницу).
- Отображение flash файлов.
- Добавление шаблона и изменение содержимого файлов для его правельного отображения.
- Добавление блока случайного фото.
Для того, чтобы все работало качаем архив и заливем все в папочку www, заменяем. А также выполняем в phpmyadmin sql запрос (sql.txt в архиве).
Наслождайтесь!

А теперь вопрос! Блок, что в архиве работате прекрасно, но он отображает лиш картинки и не хочет выводить flash файлы. Как сделать проверку следующего типа: если случайный файл имеет разрешение flash, тогда выводить всегда одну и ту же картинку и просто под ней писать имя файла????
Вот код:

if (eregi("block-Album.php",$PHP_SELF)) {
Header("Location: index.php");
die();
}

$blocks_modules[randompic] = array(
'title' => "randompic",
'func_display' => 'randompic',
'func_add' => '',
'func_update' => '',
'text_type' => 'randompic',
'text_type_long' => '',
'text_content' => "randompic",
'support_nukecode' => false,
'allow_create' => false,
'allow_delete' => false,
'form_url' => false,
'form_content' => false,
'form_refresh' => false
);

global $user, $prefix;

include 'modules/Album/admin/config.php';
mt_srand((double)microtime()*1000000);
if (is_user($user))
$total = mysql_fetch_array(mysql_query("SELECT COUNT(p.pid) AS total FROM $prefix"._Album_pictures." AS p LEFT JOIN $prefix"._Album_categories." AS c ON c.gallid=p.gid WHERE c.visible>=1"));
else
$total = mysql_fetch_array(mysql_query("SELECT COUNT(p.pid) AS total FROM $prefix"._Album_pictures." AS p LEFT JOIN $prefix"._Album_categories." AS c ON c.gallid=p.gid WHERE c.visible>=2"));

$p = mt_rand(0,($total[total] - 1));

$pic = mysql_fetch_array(mysql_query("SELECT p.pid, p.img, p.name, p.description, c.galloc FROM $prefix"._Album_pictures." AS p LEFT JOIN $prefix"._Album_categories." AS c ON c.gallid=p.gid LIMIT $p,1"));

$pic[description] = htmlentities($pic[description]);

if (file_exists("$gallerypath/$pic[galloc]/$pic[img]"))
$content = "<center><br><a href=\"modules.php?name=Album&file=index&do=showpic&amp;pid=$pic[pid]\"><img src=\"$gallerypath/$pic[galloc]/$pic[img]\" width=\"140\" border=\"0\" alt=\"$pic[description]\"><br><font size=\"1\">$pic[name]</font></a><br><br><a href=\"modules.php?name=Album\">Перейти в галерею</a></center>";
else
$content = "<center><br><a href=\"modules.php?name=Album&file=index&do=showpic&amp;pid=$pic[pid]\"><img src=\"$gallerypath/$pic[galloc]/$pic[img]\" width=\"140\" border=\"0\" alt=\"$pic[description]\"><br><font size=\"1\">$pic[name]</font></a><br><br><a href=\"modules.php?name=Album\">Перейти в галерею</a></center>";

то есть надо сделать еще одну проверку.
Что-то в таком духе:

if ( файл.swf)

$content = "<center><br><a href=\"modules.php?name=Album&file=index&do=showpic&amp;pid=$pic[pid]\"><img src=\"images/flash.jpg\" width=\"140\" border=\"0\" alt=\"$pic[description]\"><br><font size=\"1\">$pic[name]</font></a><br><br><a href=\"modules.php?name=Album\">Перейти в галерею</a></center>";

Soniks 02.04.2006 04:19

Разумно изменить на:
PHP код:
 $pic['description'] = htmlspecialchars($pic['description']);
if (
file_exists($gallerypath."/".$pic['galloc']."/".$pic['img'])){
    
$exec explode(".",strtolower($pic['img']));
    
$exec end($exec);
    if(
$exec == "swf"){
  
$content "<center><br><a href=\"modules.php?name=Album&file=index&do=showpic&amp;pid=$pic[pid]\"><img src=\"images/swf.gif\" width=\"140\" border=\"0\" alt=\"$pic[description]\"><br><font size=\"1\">$pic[name]</font></a><br><br><a href=\"modules.php?name=Album\">Перейти в галерею</a></center>";
 }else{
  
$content "<center><br><a href=\"modules.php?name=Album&file=index&do=showpic&amp;pid=$pic[pid]\"><img src=\"$gallerypath/$pic[galloc]/$pic[img]\" width=\"140\" border=\"0\" alt=\"$pic[description]\"><br><font size=\"1\">$pic[name]</font></a><br><br><a href=\"modules.php?name=Album\">Перейти в галерею</a></center>";
 }


здесь swf.gif являеться той само картинкой информирующая о том что это флешка

Episod 02.04.2006 11:50

Вложений: 1
каким образом загружать ? нажимаю загружать ниже появляется - загрузка файлов имена файлов не должны содержать русские буквы ! а где файлы загружать так и не понял...

Wind 03.04.2006 01:17

имена файлов не должны содержать русские буквы ! это я дописал, так как это галерея не понимает файлы с русским названием. А загружать размеется через админку. А то, что у тебя на скрине это для добавление файлов пользователоями, а не отображается ничего у тебя потому что в настройках надо разрешить.

Еще один прибомбасик. Открываем mainfile.php, находим :
themesidebox($title, $content);
}
}

function loginbox() {

и перед тим вставляем:

$result = $db->sql_query("SELECT COUNT(pid) AS total FROM $prefix"._album_pictures_newpicture."");
$wait = $db->sql_fetchrow($result);
$content .= "<strong><big>&middot;</big></strong>&nbsp;<a href=\"".$admin_file.".php?op=album&do=validnew&amp;type=checknew\">"._GALPOSTEDMEDIA.'</a> '.sprintf(_GALWAITING, $wait[total])."<br>";

В language\lang-russian.php добавляем:
define("_GALPOSTEDMEDIA","Галерея");
define("_GALWAITING","%d");

Теперь в админ блоке Ждут проверки: будут отображаться файлы галереи, которые ждут проверки, что очень удобно.

Так, у меня еще вопрос: Как сделать, чтобы пользователи могли добавлять файлы сразу без проверки админа?

Episod 03.04.2006 01:32

Wind Смотря на функции блока,то видно что юзеры могут добавлять файлы... при нажатии кнопки добавить ничего не происходит.. что доказывает не дееспорсобность!
Ты под пользователем можеш добавить фаил не заходя в админ паель ?

Wind 03.04.2006 01:36

А также еще вопрос по одному блоку.
Вот его содержимое:

$length=5; //number of thumbs

global $prefix, $dbi;
$content="";
function truncate_string5($str)
{
$maxlength = 20; // maximum lenght of name in block

if (strlen($str) > $maxlength)
return substr($str, 0, $maxlength)." ...";
else
return $str;
}

$result = sql_query("SELECT pid, img, name FROM nuke_Album_pictures ORDER BY pid DESC LIMIT $length", $dbi);

if (mysql_num_rows($result) <= 0) {
$content = "No pictures...";
return false;
}

$content .= "<br><center>";
while ($row = mysql_fetch_array($result)) {

$content .= "<a href=\"modules.php?name=Album&file=index&do=showpic&amp;pid={$row['pid']}\"><img src=\"modules/Album/album/$result[galloc]/thumb_{$row['img']}\" border=\"0\"><br>" . truncate_string5($row['name']) . "</a><br><br>\n";
}
?>

Блок выводит последние $length=5 файлов добавленных в галерею. Броблема вот в чем: нужно чтобы он понял, что $result[galloc] - это путь к файлу. Дело в том, что galloc находится в nuke_album_categories и нужно его как-то дописать в $result. Ссылка отображается правельно, имена файлов тоже да и места под картинки есть, нет только самих картинок =). Помоги пожалуйста.

Цитата ты под пользователем можеш добавить фаил не заходя в админ паель ?

да могу! вспомнил! у меня тоже сперва так было, когда на своем компе ставил, а потом залил на сервер и все нормально стало. попробуй пересоздать базу галереи.

Wind 04.04.2006 01:00

нашел еще один косяк, которй срочно надо исправлять. когда добавляешь несколько фоток сразу методом поиска по папке, то он пишет , что всего скажем 40 файлов в галереи, а возле самих категорий в которые добавлял количество файлов не меняет. как исправить?

Wind 06.04.2006 01:05

Как на главной странице этой галереи сделать внизу еще один отдельный блок как бы? то есть там блок с logo и блок с категориями, а мне нужен еще один ниже. Пытался сделать так: создавал файл last.php в папке с модулем album с таким вот содержанием:
<?php
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
get_lang($module_name);
include("header.php");
OpenTable();
echo "тест";
CloseTable();
include("footer.php");
?>
а потом только куда не дописвал строчку
include("modules/Album/last.php"); то есть действовал по типу, как в модуле news работатю комментарии, но ничего не вышло.
Как и что надо сделать?

Wind 22.04.2006 18:59

взываю о помощи!!! читаем выше.

Soniks 25.04.2006 21:37

Wind если вы будите инклудить вайл в скрипт то, вызов стандарных функций нюки не нужно делать, достаточно просто
<?php
OpenTable();
echo "тест";
CloseTable();
?>
если не выводит данное слово, то значит, что в то место кода куда вы вставляете инклуд, там не проходит скрипт, смотрите синтаксис


Часовой пояс GMT +4, время: 03:23.

Copyright © 2005 by Soniks