Сегодня нужно было загрузить порядка 30 изображений, все бы было хорошо, но имена у этих картинок были все разные и не красивые. И как Вы уже понял мне нужно было их переименовать, для решения этой проблемы было 2 способа: Первый из них, это потратить кучу времени переименновывая все изображения вручную, а второй - это подправить код движка так, чтобы все происходило автоматически при загрузки их на сервер, что я собственно и сделал. Решил поделится, вдруг кому пригодится 🙂
Установка хака переименования загруженных файлов и картинок:
- Открываем engine/ajax/upload.php
- Находим:
$image_name = totranslit( convert_unicode( implode( ".", $img_name_arr ), $config['charset'] ) ) . "." . $type;
- Заменяем на:
$imagename = totranslit( trim( htmlspecialchars( strip_tags( convert_unicode( $_POST['imagename'], $config['charset'] ) ) ) ) ); if ( $imagename != '' ) $image_name = $imagename . '.' . $type; else $image_name = totranslit( convert_unicode( implode( ".", $img_name_arr ), $config['charset'] ) ) . "." . $type;
- Находим:
- Открываем engine\inc\files.php
- Находим:
$imageurl = trim( htmlspecialchars( strip_tags( $_POST['imageurl'] ) ) );
- Ниже вставляем:
$imagename = totranslit( trim( htmlspecialchars( strip_tags( $_POST['imagename'] ) ) ) );
- Находим 2 раза:
if( $image_name != "" ) { $curr_key = key( $img_name_arr ); unset( $img_name_arr[$curr_key] ); $image_name = totranslit( implode( ".", $img_name_arr ) ) . "." . $type; } - Заменяем на:
if ( $imagename != '' ) $image_name = $imagename . '.' . $type; elseif ( $image_name != '' ) { $curr_key = key( $img_name_arr ); unset( $img_name_arr[$curr_key] ); $image_name = totranslit( implode( '.', $img_name_arr ) ) . '.' . $type; } - Находим:
<div>{$lang['upload_t_size']} <input type="text" name="t_size" id="t_size" size=9 value="{$config['max_image']}"> px <select name="t_seite" id="t_seite"><option value="0" {$t_seite_selected[0]}>{$lang['upload_t_seite_1']}</option><option value="1" {$t_seite_selected[1]}>{$lang['upload_t_seite_2']}</option><option value="2" {$t_seite_selected[2]}>{$lang['upload_t_seite_3']}</option></select></div> - Ниже вставляем:
<div>Изменить имя файла на: <input type="text" name="imagename" size="55" /></div>
- Находим:
- Вот и все. Данный хак, действует как при массовой, так и при обычной загрузки.
Автор: Брупт
п.с.: у себя доработал с ява-скриптом, что бы автоматом брался заголовок новости и подставлялся в нужное окошко при аплоаде. если нужна и эта правка - пишите в комментах.
наконец-то у себя доработал функционал по транслиту в кодировке win-1251. сделал следующее:
в файле /engine/inc/inserttag.php нашел функцию function image_upload() и привел ее к следующему виду:
function image_upload()
{
//var ttile = $('#title').value;
var ttile = document.getElementById('title').value;
function get_trans(txt) {
en_to_ru = {
'а': 'a',
'б': 'b',
'в': 'v',
'г': 'g',
'д': 'd',
'е': 'e',
'ё': 'jo',
'ж': 'zh',
'з': 'z',
'и': 'i',
'й': 'j',
'к': 'k',
'л': 'l',
'м': 'm',
'н': 'n',
'о': 'o',
'п': 'p',
'р': 'r',
'с': 's',
'т': 't',
'у': 'u',
'ф': 'f',
'х': 'h',
'ц': 'c',
'ч': 'ch',
'ш': 'sh',
'щ': 'sch',
'ъ': '',
'ы': 'y',
'ь': '',
'э': 'e',
'ю': 'ju',
'я': 'ja',
' ': '_',
'і': 'i',
'ї': 'i'
};
nameVal = txt.toLowerCase();
nameVal = trim(nameVal);
nameVal = nameVal.split("");
var trans = new String();
for (i = 0; i < nameVal.length; i++) {
for (key in en_to_ru) {
val = en_to_ru[key];
if (key == nameVal[i]) {
trans += val;
break
} else if (key == "ї") {
trans += nameVal[i]
};
};
};
return trans;
}
function trim(string) {
//Удаляем пробел в начале строки и ненужные символы
string = string.replace(/(^\s+)|'|"|<|>|\!|\||@|#|$|%|^|\^|\$|\\|\/|&|\*|\(\)|\|\/|;|\+|№|,|\?|:|{|}|\[|\]/g, "");
return string;
};
alert(get_trans(ttile));
var ttile2 = (get_trans(ttile));
window.open('?mod=files&action=quick&area=' + selField + '&author={$row['autor']}&news_id={$id}&new_title=' + ttile2 + '', '_Addimage', 'toolbar=0,location=0,status=0, left=0, top=0, menubar=0,scrollbars=yes,resizable=0,width=640,height=550');
}
в итоге в окошко загрузки начало передаваться через GET правильное значение 🙂

