Сегодня нужно было загрузить порядка 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 правильное значение 🙂