Работа с CKEditor в JavaScript, Drupal

Иногда программисты сталкиваются с необходимостью создать инстанцию CKEditor редактора на фронте. Например, если этот редактор должен появляться по нажатию на кнопку. Обычно это делается через получение формы с сервера:

<?php
/**
 * Form builder for editor.
 */
function mymodule_editor_form($form, &$form_state) {
 $form['editor']...

Проверка переменных в JS или аналог isset в PHP

Ох уж этот js... Сегодня снова пришлось углубиться в дебри JS и снова эти ужасные typeof и undefined... От одной мысли меня передёргивает. Мы же в 21ом веке живем!!! Что творится в javascript ?

if (typeof window.var1 !== 'undefined' && typeof window.var1.var2 !== 'undefined' && typeof window.var1.var2.var3 !== ...

Drupal ajax страницы без перезагрузки

Это всего лишь мокап, который я накидал за 20 минут "на коленке" и он требует доработки, но уже сейчас этот js-скрипт позволит простым сайтам работать без перезагрузки страниц.

Для примера, можно сёрфить по нодам в блоге или переходить из редактирования ноды в режим просмотра ноды. В большей степени, продолжают корректно работать ajax-ссылки,...

Запрет на исследование элементов в браузере

disallow-to-debug

Этот js-сниппет запрещает "Исследовать элементы" на странице. Если быть точнее, при открытии браузерной консоли он циклически останавливает работу js-скрипта брекпоинтом, запрещая тем самым использовать селектор элементов.

(function () {
 (function a() {
 try {
 (function b(i) {
 if (('' + (i / i)).length !== 1 || i % 20 === 0) {
 (...

Обновление представления (views) через ajax

Заставить работать какую-либо вьюху с ajax не сложно. Достаточно зайти в настройки и установить параметр Use Ajax: Yes.
ajax-view

К сожалению, модуль Views не предоставляет JS API для программного обновления этой вьюхи. Поэтому, пишем свою функцию (комментарии в коде):

function refreshView(view_id, display_id) {
 var instances = Drupal.views.instances,...