Модуль Image Insert Codes

Аватар пользователя chimir chimir 28 сентября 2016 в 0:06
2

Аналог модуля Image Insert Codes для Drupal 7

batbug wrote:

Что он делает: производит блок, в котором отображаются коды для быстрой вставки текущего изображения на другие сайты, блоги, форумы и.т.д.

Image Insert Codes

При установке модуля появляется блок "Image Insert Code"

На странице настроек модуля (admin/config/user-interface/image-insert-codes) можно выбрать:

  1. Нужные вам коды, отключив все не нужные.
  2. Поле изображения, для которого будут показываться коды
  3. Стиль изображения для использования в качестве превьюшек
  4. Показывать коды сразу или в свернутом филдсете

Image Insert Codes

Для вставки в шаблон ноды, есть переменная $codes

Image Insert Codes

Модуль написал чисто из интереса, интересует, на сколько правильный код и вообще подход.

UPD:
По рекомендации goodboy

  1. Переменную $codes заменил на $image_insert_codes
  2. В image_insert_codes.admin.inc использовал system_settings_form($form); для сохранения формы

По рекомендации adubovskoy разместил на github'е

ВложениеРазмер
Иконка пакета image_insert_codes-7.x-.zip3.49 КБ

Комментарии

Аватар пользователя goodboy goodboy 28 сентября 2016 в 15:55

Модуль не ставил, смотрел только код. Стандартам, в принципе, соответствует, хотя проверку вы не пройдете.

1. В image_insert_codes.admin.inc в форме предлагаю использовать return system_settings_form($form);
Тогда в сабмите не нужно перечислять все поля. Или есть какая-то причина не использовать эту функцию?
2. $vars['codes'] = drupal_get_form('image_insert_codes_form'); - может, все же переменную image_codes хотя бы, а лучше image_insert_codes .
3.

 if ($code[1]) {
      $form['codes']['html-full-img'] = array(
        '#type' => 'textfield',
        '#title' => t('HTML'),
        '#value' => '<img src="' . $url . '" alt="' . $node->title . '" />',
        '#size' => 22,
        '#attributes' => array('class' => array('class' => 'imageinsertcodes')),
        '#description' => t('Full image.'),
      );
    }

    if ($code[2]) {
      $form['codes']['html-clickable'] = array(
        '#type' => 'textfield',
        '#title' => t('HTML'),
        '#value' => '<a href="' . $url . '" title="' . $node->title . '">' . $preview . '</a>',
        '#size' => 22,
        '#attributes' => array('class' => array('class' => 'imageinsertcodes')),
        '#description' => t('Clickable preview.'),
      );
    }

Может, как-то циклом можно, половина полей повторяется.

4. Было бы здорово, если бы можно было дополнять список форматов - программно (альтерить что-то) или через админку

Аватар пользователя chimir chimir 28 сентября 2016 в 19:01

Спасибо, за то что посмотрели код и за все замечания

1.

goodboy wrote:

причина не использовать эту функцию?

изначально хотел по другому реализовать выбор полей изображения, и для это был нужен такой подход. Сейчас в этом нет необходимости, вы правы.
2. Да, наверно так лучше
3. К сожалению не знаю как
4. Программно можно добавить поля в hook_form_FORM_ID_alter().

Аватар пользователя goodboy goodboy 28 сентября 2016 в 20:53

Я имел в виду, все форматы заключить в некий массив и в цикле проверять на видимость и выводить в $form:

foreach ($image_insert_codes_formats as $name => $item) {
  if ($item['visible']) {
    $form['codes'][$name] = array(
        '#type' => 'textfield',
        '#title' => $item['title'],
        '#value' => $item['value'],
        '#size' => 22,
        '#attributes' => array('class' => array('class' => 'imageinsertcodes')),
        '#description' => $item['description'],
      );
   }
}

Вместо числовых индексов можно использовать индексы из формы: 'html-full-img', 'html-clickable' и т.д.

Насчет расширения числа форматов, легкое решение на ум не приходит. Я бы использовал Entity API, дал возможность добавлять/изменять/удалять форматы. Те пять готовых можно было бы добавлять по-умолчанию при установке модуля. По-хорошему, использовать свою таблицу. Но это feature request, информация к размышлению.