Установка Ubuntu на VirtualBox

Долгое время для разработки я использовал готовую сборку Quickstart в качестве локального сервера. Совсем недавно я решился установить и настроить свой локальный сервер с нуля. В связи с этим я буду писать статейки по каждому этапу, что и как я делал. Сегодня я опишу процесс установки Ubuntu на VirtualBox.

Установка Oracle VM Virtualbox

Здесь все просто и подробно останавливаться на этом шаге я не буду. Все что нужно сделать - скачать и установить последнюю версию Oracle VM Virtualbox....

Как добавить форму редактирования поля сущности к своей форме

Задача - создать пользовательскую форму редактирования поля field_body у ноды типа Article. После отправки формы, новое значение должно быть обновлено у этого поля:

/**
 * Form constructor for the edit "field_body".
 *
 * @see example_my_custom_form_submit()
 * @ingroup forms
 */
function example_my_custom_form($form, $form_state, $node) {
  $form_state['storage']['node'] = $node;

  $form['#parents'] = array();

  // Получаем язык поля.
  $langcode = field_language('node', $node, 'field_body');

  // Получаем...

TableDrag. Как убрать "Show/Hide row weights"

Пример кода, который позволяет убрать ссылку "Show/Hide row weights".

Шаг 1. Альтерим форму, для того, что бы добавить свой js файл:

/**
 * Implements hook_form_FORM_ID_alter().
 */
function custom_form_node_form_alter(&$form, &$form_state) {
  $form['#attached']['js'][] = array(
    'data' => drupal_get_path('module', custom') . '/js/custom-tabledrag.js',
    'weight' => -2,
  );
}

Шаг 2. Убираем ссылку в js файле:

// Namespace...

Имитация клика по ссылке с помощью jQuery

Сегодня мы поговорим о том, как имитировать клик по ссылке при определенном событии. Задача на первый взгляд кажется простой, но имеются некоторые "подводные камни", которые мы сейчас и рассмотрим.

Например, на странице имеется 2 ссылки:

<a id="link-1" href="url-1">Link 1</a>
<a id="link-2" href="url-2">Link 2</a>

Задача: при клике по ссылке 1, сделать клик по ссылке 2 таким образом, что бы переход осуществился на урл ссылки 2. Первое, что приходит в голову, это следующий код:

JOIN таблицы в своем views field handler-е

Пример JOIN-а таблицы в своем views field handler:

/**
  * Called to add the field to a query.
  */
public function query() {
  $this->ensure_my_table();

  $join = new views_join();
  $join->definition = array(
    'table' => 'variable_store',
    'field' => 'name',
    'left_table' => $this->table_alias,
    'left_field' => 'name',
    'type' => 'INNER',
  );
  $join->construct();
  $join->adjusted = TRUE;

  // Присоединяем таблицу 'variable_store' по колонке 'name'.
  $this->table_alias...

Как сделать, чтобы команда ctools_modal_command_dismiss срабатывала через несколько секунд

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

Шаг 1. Создаем в своем модуле файл *.js и в нем создаем новую команду, у меня она будет называться example_modal_dismiss:

(function ($) {

  /**
   * Command to dismiss the modal.
   */
  Drupal.ajax.prototype.commands.example_modal_dismiss =...

Как запретить чтение, запись и удаление директории tmb в модуле elFinder file manager

Пример кода, который позволяет запретить чтение, запись и удаление директории tmb при использовании модуля elFinder file manager:

/**
 * Implements hook_elfinder_connector_init().
 */
function example_elfinder_connector_init($options) {
  $options['perms']['/^' . $options['tmbDir'] . '/'] = array(
    'read' => FALSE,
    'write' => FALSE,
    'rm' => FALSE,
  );
  return $options;
}

Код проверен на модуле версии 7.x-0.8 и библиотеке elFinder версии 1.2

Создаем свой стиль для Colorbox

Сегодня мы поговорим о том, как можно добавить пользовательский стиль для модуля Colorbox. В одном из последних проектов мне потребовалось написать свой стиль и я сразу же подумал, что никаких проблем не будет, ведь у модуля есть страница настроек, на которой можно выбирать стили, а значит должно быть и API для добавления стилей. Я очень сильно ошибался, как оказалось, у модуля нет нормального API. Придется ухищрятся...

Для начала определимся, что стиль в общем случае состоит из двух файлов: CSS и JS...