→ Bueditor и ImageCache — доработка кнопки изображения

Bueditor и ImageCacheBueditor и ImageCache мечтали ли вы об этом? Это сбылось. На сайте разработчика BUEditor появилась кнопка для вставки и редактирования изображения с выбором пресета ImageCache. Код есть для кнопок D5 и D6. Я лишь немного изменила код, так как я не использую и не планирую использовать модуль IMCE, поэтому и выкинула лишний код.

Код для D6:

  1. php:
  2. $filepath = url(file_directory_path());
  3. $presets = array('' => '');
  4. foreach (imagecache_presets() as $preset) {
  5.   $presets[$preset['presetname']]= $preset['presetname'];
  6. }
  7. $presets = drupal_to_js($presets);
  8.  
  9. return "js:
  10. var form = [
  11.  {name: 'src', title: 'URL Изображения', required: 1},
  12.  {name: 'preset', title: 'ImageCache', type: 'select', options: $presets},
  13.  {name: 'alt', title: 'Альтернативный текст', required: 1}
  14. ];
  15.  
  16. E.tagDialog('img', form, {title: 'Вставить/редактировать изображение', submit: function(tag, form) {
  17.  var ps = form.elements['attr_preset'];
  18.  var url = form.elements['attr_src'];
  19.  var fp = '$filepath';
  20.  if (ps.value) {
  21.    url.value = fp +'/imagecache/'+ ps.value + url.value.substr(fp.length);
  22.    ps.value = '';
  23.  }
  24.  E.tgdSubmit(tag, form);
  25. }})";

Все тоже «НО» для кнопки изображения — все еще не вставляет ссылку на это изображение.

В оригинале и для D5 смотрите на сайте разработчика BUEditor'а.

UPD (20-05-2010): Вы так же можете скачать код, для более удобного использования.

Во вложении вы найдете:

  • оригинал + IMCE (Improved version for 6.x-2.x)
  • переделанный мной код для использования без IMCE (отображает все пресеты)
  • переделанный мной код для использования без IMCE (отображает только указанные пресеты)
  • и оригинал + IMCE (для Drupal 5 версии)

Комментарий над надо кодом разъясняет, какой код для чего.

ПредпросмотрВложениеРазмер
BUEditor_Imagecache_Button_ported_by_ELLECTRONC.js_.gz1.19 КБ
RSS-материал

21 Комментарий [Нет новых]

Аватар пользователя Ingumsky

Спасибо. Это действительно интересно. Вот только у меня вопрос появился — откуда берётся в итоге пресет для изображения, если мы его (изображение) не загружаем на сайт? Ведь мы указываем только ссылку на картинку, которая будет грузиться с другого сайта. Или я что-то неправильно понимаю?

И ещё. Мне кажется, было бы логичным ограничить выбор пресетов. К примеру, я на своём сайте использую для разных целей штук семь пресетов, но хочу, чтобы посетители могли в своих комментариях выбирать только один из двух, которые я специально для них сделаю. Это реально?

Аватар пользователя EllECTRONC

Хмм… Для удаленных изображений ImageCache не работает, поэтому не сработает и кнопка. Подмигивание Так что сначала нужно загрузить изображение по-друпальски, после чего скопировать ссылку на него, типа /sites/default/files/image.ext и все происходит как надо. Улыбка

Да, это реально. Для этого нужно в опциях вместо $presets указать те пресеты, которые вам нужны в редакторе и убрать генерацию массива вначале кода. Или заполнить массив вручную, что гораздо проще.

P.S.: И прошу прощения, в коде была ошибка, материал обновлен.

Аватар пользователя EllECTRONC

Запись снова обновлена.

Аватар пользователя r2d2

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

апрра

Аватар пользователя EllECTRONC

Тогда лучше использовать Image Resize Filter и будет достаточно просто указать ширину и/или высоту желаемого изображения. Пример вы уже видите. Подмигивание

Аватар пользователя r2d2

спасибо, но все осталось как и было - я вам большую картинку, а вы вынуждены изменять её в ручную.

Хочется, чтоб автоматически это происходило! Улыбка

Аватар пользователя r2d2

в голову приходит такая идея - сделать чтобы движок брал тэг имг в комментарии пользователя, и автоматически подставлял width="500" например

Аватар пользователя EllECTRONC

Так ручками же надо вписать любой размер изображения хоть 500 хоть 200… 100

Вставка изображения

Аватар пользователя r2d2

это известно, речь об удобстве для пользователя.

ведь по сути - лажа, что пользователю приходится вводить какие-то цифры, да ещё и тэг alt заполнять.

ищу решение на эту шляпу, думал вы мож что подскажите.
В общем, будем искать!

Аватар пользователя EllECTRONC

Если вам нужен единственный размер изображения и вы используете bueditor, то тут я тоже проблемы не вижу, задайте по умолчанию это значение вот и все. Либо несколько размеров можно в выпадающем списке задать… хотя…это дико вообще, что пользователи не утруждают себя элементарным заполнением формы. Вот раньше вообще все от руки писалось Улыбка и ничего картинки в материалах не огромные. WYSIWYG не сразу появились.

Аватар пользователя r2d2

а вот и не дико)

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

это естественно, отец вырастил яблоню, а нам надо только яблоко сорвать и наслаждаться.

Аватар пользователя EllECTRONC
это естественно, отец вырастил яблоню, а нам надо только яблоко сорвать и наслаждаться.r2d2

Палец о палец не ударить и яблочек сладких поесть… и это естественно? Хоть что-то, а сделать придется… Подмигивание

P.S.: аватары обрезаются лишь для гармоничности.

Аватар пользователя r2d2

у каждого своя работа - он яблок поел, да пошел железную дорогу строить

а сайты пусть умельцы делают

Аватар пользователя EllECTRONC

В любом случае, если вам нужен определенный размер(ы), не вижу препятствия вставить это в код кнопки.

Аватар пользователя r2d2

да, спасибо за участие!

Аватар пользователя r2d2

о майн гад!

а не подскажете как изменить код кнопки вставки изображения, чтобы задать фиксированную ширину, ну например 400px?

js:
var B = eDefBrowseButton('/?q=imce/browse', 'attr_src', 'Browse', 'image');
var form = [
 {name: 'src', title: 'Адрес изображения', suffix: B},
 {name: 'width', title: 'Ширина x Высота', suffix: ' x ', getnext: true, attributes: {size: 3}},
 {name: 'height', attributes: {size: 3}},
 {name: 'alt', title: 'Альтернативный текст'},
];
eDefTagDialog('img', form, 'Вставить/Редактировать изображение', 'Вставить');

Аватар пользователя EllECTRONC

Подскажу! Нужно просто добавить атрибут value и задать значение, получится вот так:

 // Задаем значение через value
 {name: 'width', title: 'Ширина x Высота', suffix: ' x ', getnext: true, attributes: {size: 3, value: '400'}},

Аватар пользователя r2d2

Большое вам спасибо! Это прекрасно!

Аватар пользователя Сергей

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

Аватар пользователя EllECTRONC

Если это вопрос, можно ли. То ответ — да. Это не мое решение, я только изменила чуть-чуть.

Если это вопрос как это сделать, про пройдите, на сайт разработчика по ссылке в посте, там в комментариях есть подсказка.

И еще там есть вариант этой кнопки для D7.

Что ты об этом думаешь?

МультиВход
ИЛИ

Комментарии