Здравствуйте. Есть у кого модуль массовой загрузки изображений, чтобы можно было сразу выделить несколько файлов и нажать кнопку "загрузить"?
4
Модуль массовой загрузки изображений
Автор asdos, Oct 21 2015 07:32 PM
Сообщений в теме: 3
#1
Отправлено 21 October 2015 - 07:32 PM
#3
Отправлено 21 October 2015 - 08:01 PM
Платно, но не дорого - например, http://d-sell.net/product_117.html
Бесплатно, но менее красиво и не работает в IE<10 - мне казалось, что я его выкладывал это дополнение.
=================================
Дополнение позволяет мультизагрузку фотографий, т.е. не грузить фотки товара по одной, а сразу выбрать все нужные три-пять-семь.
До кучи оно включает в себя трикивебовское дополнение (функцию), позволяющую не грузить большую/среднюю/малую фотки,
а грузить только одну большую. Средняя и малая сделаются из нее.
На IE младше десятого, если верить htmlbook.ru, input multiple работать не должно, но врядли это критично для админки.
Установка:
==========
1. в файле admin.php
1.1. ищем
чуть ниже будет
заменяем на (т.е. комментируем этот блок)
1.2. еще чуть ниже будет
меняем 32% на 99%
1.3. еще чуть ниже будет блок
его тоже заменяем на (комментируем)
1.3. еще чуть ниже та же история - блок
заменяем на (комментируя исходный блок)
2. в файле picture_functions.php
2.1. заменяем функцию AddNewPictures на
2.2 заменяем функцию Rendernames на
Бесплатно, но менее красиво и не работает в IE<10 - мне казалось, что я его выкладывал это дополнение.
=================================
Дополнение позволяет мультизагрузку фотографий, т.е. не грузить фотки товара по одной, а сразу выбрать все нужные три-пять-семь.
До кучи оно включает в себя трикивебовское дополнение (функцию), позволяющую не грузить большую/среднюю/малую фотки,
а грузить только одну большую. Средняя и малая сделаются из нее.
На IE младше десятого, если верить htmlbook.ru, input multiple работать не должно, но врядли это критично для админки.
Установка:
==========
1. в файле admin.php
1.1. ищем
echo ADD_BUTTON26;
чуть ниже будет
<td align="center"><?php echo ADMIN_ON2; ?></td>
заменяем на (т.е. комментируем этот блок)
<!-- BEGIN Picture-Multiload --> <!-- <td align="center"><?php echo ADMIN_ON2; ?></td> --> <!-- END Picture-Multiload -->
1.2. еще чуть ниже будет
<td align="center" width="32%"><?php echo ADMIN_PRODUCT_SPPICTURE; ?></td>
меняем 32% на 99%
1.3. еще чуть ниже будет блок
<td align="center" width="32%"><?php echo ADMIN_PRODUCT_THUMBNAIL; ?></td> <td align="center" width="32%"><?php echo ADMIN_PRODUCT_BIGPICTURE; ?></td>
его тоже заменяем на (комментируем)
<!-- BEGIN Picture-Multiload --> <!-- <td align="center" width="32%"><?php echo ADMIN_PRODUCT_THUMBNAIL; ?></td> <td align="center" width="32%"><?php echo ADMIN_PRODUCT_BIGPICTURE; ?></td> --> <!-- END Picture-Multiload -->
1.3. еще чуть ниже та же история - блок
<td align="left" valign="middle"><input type=radio name=default_picture <?php if (!isset($default_picture_exists)) { ?> checked <?php } ?> value=-1 > </td> <td align="center" valign="middle"><input id="pic1" onchange="confstatus(this,'pic2'),confstatus(this,'pic3');" type="file" name="new_filename" class="file" size="13"></td> <td align="center" valign="middle"><input disabled id="pic2" type="file" name="new_thumbnail" class="file" size="13"></td> <td align="center" valign="middle"><input disabled id="pic3" type="file" name="new_enlarged" class="file" size="13"></td>
заменяем на (комментируя исходный блок)
<!-- BEGIN Picture-Multiload --> <!-- <td align="center" valign="middle"><input type=radio name=default_picture <?php if (!isset($default_picture_exists)) { ?> checked <?php } ?> value=-1 > </td> <td align="center" valign="middle"><input id="pic1" onchange="confstatus(this,'pic2'),confstatus(this,'pic3');" type="file" name="new_filename" class="file" size="13"></td> <td align="center" valign="middle"><input disabled id="pic2" type="file" name="new_thumbnail" class="file" size="13"></td> <td align="center" valign="middle"><input disabled id="pic3" type="file" name="new_enlarged" class="file" size="13"></td> --> <td align="center" valign="middle"> <?php if (!isset($default_picture_exists)) { ?> <input type=hidden name="default_picture" value=-1> <?php } ?> <input multiple id="pic1" type="file" name="new_filename[]" class="file" size="180"> </td> <!-- END Picture-Multiload -->
2. в файле picture_functions.php
2.1. заменяем функцию AddNewPictures на
function AddNewPictures($productID, $filename, $thumbnail, $enlarged, $default_picture)
{
if (isset($_FILES[$filename]) && $_FILES[$filename]["name"]/* && $_FILES[$filename]["size"] > 0*/) //Picture-Multiload
{
# BEGIN Picture-Multiload
$tmp = $_FILES['new_filename'];
foreach ($_FILES[$filename]['name'] as $key => $val)
{
$_FILES['new_filename']['name'] = $tmp['name'][$key];
$_FILES['new_filename']['type'] = $tmp['type'][$key];
$_FILES['new_filename']['tmp_name'] = $tmp['tmp_name'][$key];
$_FILES['new_filename']['error'] = $tmp['error'][$key];
$_FILES['new_filename']['size'] = $tmp['size'][$key];
# $new_filename = Rendernames($filename,"data/small/");
# $new_thumbnail = Rendernames($thumbnail,"data/medium/");
# $new_enlarged = Rendernames($enlarged,"data/big/");
$new_filename = Rendernames($filename,"data/small/");
copy('data/small/'.$new_filename, $_FILES[$filename]['tmp_name']);
$new_thumbnail = Rendernames($filename,"data/medium/");
copy('data/small/'.$new_filename, $_FILES[$filename]['tmp_name']);
$new_enlarged = Rendernames($filename,"data/big/");
# END Picture-Multiload
if ($new_filename != "")
{
db_query("insert into ".PRODUCT_PICTURES."(productID, filename, thumbnail, enlarged)".
" values( ".(int)$productID.", '".xEscSQL($new_filename)."', '".xEscSQL($new_thumbnail).
"', '".xEscSQL($new_enlarged)."' ) ");
if (CONF_PHOTO_RESIZE)
{
if ($new_filename != "") Renderimage($new_filename, CONF_PHOTO_WIDTH1,"data/small/");
if ($new_thumbnail != "") Renderimage($new_thumbnail, CONF_PHOTO_WIDTH2,"data/medium/");
if ($new_enlarged != "") Renderimage($new_enlarged, CONF_PHOTO_WIDTH3,"data/big/");
}
if (CONF_PUT_WATERMARK)
{
if ($new_filename != "") Renderwatermark($new_filename,"data/small/");
if ($new_thumbnail != "") Renderwatermark($new_thumbnail,"data/medium/");
if ($new_enlarged != "") Renderwatermark($new_enlarged,"data/big/");
}
if ($default_picture == -1)
{
$default_pictureID = db_insert_id();
db_query("update ".PRODUCTS_TABLE." set default_picture = ".$default_pictureID." where productID=".(int)$productID);
}
}
# BEGIN Picture-Multiload
$default_picture = 1;
}
# END Picture-Multiload
}
}
2.2 заменяем функцию Rendernames на
// BEGIN Patch make thumbnails from single file
// by http://trickywebs.org.ua
function Rendernames($tempname, $folder)
{
$new_tempname = "";
if (isset($_FILES[$tempname]) && $_FILES[$tempname]["size"] > 0)
{
$picture_name = strtolower(str_replace(" ", "_", $_FILES[$tempname]["name"]));
$pos = strrpos($picture_name, ".");
$name = substr($picture_name, 0, $pos);
$ext = substr($picture_name, $pos + 1);
if (file_exists($folder.$picture_name))
{
$taskDone = false;
for ($i = 1; (($i < 500) && ($taskDone == false)); $i++)
{
if (!file_exists($folder.$name."_".$i.".".$ext))
{
if (is_uploaded_file($_FILES[$tempname]['tmp_name']))
{
if (move_uploaded_file($_FILES[$tempname]['tmp_name'], $folder.$name."_".
$i.".".$ext))
{
SetRightsToUploadedFile($folder.$name."_".$i.".".$ext);
$new_tempname = $name."_".$i.".".$ext;
}
} else {
if (rename($_FILES[$tempname]['tmp_name'], $folder.$name."_".$i.".".$ext))
{
SetRightsToUploadedFile($folder.$name."_".$i.".".$ext);
$new_tempname = $name."_".$i.".".$ext;
}
}
$taskDone = true;
}
}
}
else
{
if (is_uploaded_file($_FILES[$tempname]['tmp_name']))
{
if (move_uploaded_file($_FILES[$tempname]['tmp_name'], $folder.$picture_name))
{
SetRightsToUploadedFile($folder.$picture_name);
$new_tempname = $picture_name;
}
} else {
if (rename($_FILES[$tempname]['tmp_name'], $folder.$picture_name))
{
SetRightsToUploadedFile($folder.$picture_name);
$new_tempname = $picture_name;
}
}
}
}
return $new_tempname;
}
// END Patch make thumbnails from single file
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)
#4
Отправлено 21 October 2015 - 08:25 PM
Платно, но не дорого - например, http://d-sell.net/product_117.html
Бесплатно, но менее красиво и не работает в IE<10 - мне казалось, что я его выкладывал это дополнение.
Огромное спасибо! Всё работает корректно. На ИЕ наплевать =)