Получить путь к миниатюре
Added by Евгений Градус about 1 year ago
Привет.
Я хочу сделать что-то такое.
Есть панель для выбора картинки пользователем. В ней есть кнопка "Выбрать картинку", скрытый input для url'а к картинке и тег img для отображения миниатюры выбранной картинки. Ну, чтобы пользователь видел, какую картинку он уже выбрал, по её миниатюре.
1 <div class="picPanel">
2 <img class="thumbnail" src="" id="tn_b1"/>
3 <input type="button" value="Выбрать картинку" id="b1" class="pic_select" />
4 <input type="hidden" id="pic_b1" name="pic_path" value="" />
5 </div>
elFinder я прикрутил, url картинки он мне успешно возвращает и я его вставляю, куда мне нужно. А как получить путь к миниатюре выбранной картинки, чтобы можно было отобразить эту миниатюру? Ведь для внутреннего пользования эта миниатюра у elFinder'а уже есть.
Replies (3)
RE: Получить путь к миниатюре
-
Added by Dmitry Levashov about 1 year ago
Неожидано! 0_о
Пока могу только предложить найти в файндере в элементе с классом elfinder-cwd тег label который содержит имя файла картинки и у предыдущего p получить css background-image
С jquery и firebug - написать запрос - дело пары минут
Посмотрю, можно ли будет учесть вашу хотелку в будущей версии
RE: Получить путь к миниатюре
-
Added by Евгений Градус about 1 year ago
Спасибо, Дмитрий. Да, так получилось. Правда, были проблемы с текстом label.
В общем, привожу код, который делает то, что нужно. Ещё его причешу потом. Ну и ваши замечения.
1 $( '<div class="my-elfinder" id="' + id + '"/>' ).elfinder(
2 $.extend( {}, opts,
3 {
4 editorCallback : function( url )
5 {
6 var fname = trim( url.substring( url.lastIndexOf( '/' ) + 1, url.length )); //trim() режет пробелы по краям (если вдруг).
7 var css = '';
8
9 if( fname.length > 23 ) // может, это число где-то в настройках? я не искал толком
10 fname = fname.substring( 0, 14 ) + '-' + fname.substring( 14, 23 ) + '…' + fname.substring( fname.lastIndexOf( '.' ) + 1, fname.length );
11 //^^^ вот с этим тире были проблемы, window.log его не показывает и я долго втыкал, почему нет совпадения.
12 // ну и конечно, такая строка кода пойти в итоговый код не может, это ещё в доработке нуждается.
13 $( '.el-finder-cwd label' ).each( function()
14 {
15 if( trim( $( this ).text()) == fname ) css = $( this ).prev().css( 'background' );
16 });
17
18 var tnpath = css.substring( css.indexOf( '(' ) + 1, css.indexOf( ')' ));
19
20 $( tni ).attr( 'src', tnpath ); // tni - ссылка на img, куда и вставляется путь до нужной миниатюры
21 $( target ).attr( 'value', url ); // target - ссылка на скрытый input, куда вставляется путь до выбранного файла
22
23 }
24 }
25 ));
А вообще хотелось бы, чтобы в editorCallback возвращалась не строка с url, а массив вида:
1 { name : 'myfile.ext',
2 url : 'http://example.com/images/full/myfile.ext',
3 type : 'mime/img', // или просто img
4 // а дальше доп. параметры, в зависимости от типа файла. для картинки например:
5 width : 800,
6 height : 600,
7 filesize : 127 877, // в байтах
8 tn_name : 'thumbnail.ext',
9 tn_url : 'http://example.com/images/.tmb/thumbnail.ext',
10 tn_width : 48,
11 tn_height : 48
12 }
RE: Получить путь к миниатюре
-
Added by Dmitry Levashov about 1 year ago
вот с этим тире были проблемы, window.log его не показывает
Да - это html entity ­ - если имя файла длинее чем задано где-то в опциях - файндер его сокращает при показе и делает один перенос на нов строку.
Следовательно, 100% способа сделать это в текущей версии нет(
Насчет возвращаемых данных - я планирую так сделать в новой версии и/или добавить в api команду tmb()
(1-3/3)