логин: 
<< предыдущая заметкаследующая заметка >>
04 февраля 2013
Вынес редактор в отдельный шаблон и добавил TinyMCE и ElRTE

Вынес редактор в отдельный шаблон. Добавил TinyMCE и ElRTE как варианты (появляются в выпадающем админском меню).

Для проверки: вот так выглядит в движке TinyMCE, вот так выглядит ElRTE, а вот так старый, но слегка обновленный штатный редактор.

Как установить такое себе в движок? Уж извините, этот ужас я в свой инсталлятор не запихну, каждый из этих монстров весит втрое больше, чем весь мой код ;) Поэтому вам придется создать по месту расположения движка папку /extended и распаковать туда эти пакеты, скачав с сайтов разработчиков. А именно:

1. Надо через /install обновить движок, получив обновления и темплейты для новых редакторов.

2. Для TinyMCE — cкачать timymce.zip и распаковать, чтобы получилось /extended/tinymce/

3. Для ElRTE — cкачать elrte.zip и распаковать (переименовав в elrte), чтобы получилось /extended/elrte/

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
Mac Firefox
 Москва
1
0
ну вот, так недалеко и до jquery и прочих удобных фреймворков
Linux Firefox
 Москва
1
0
Leonid Kaganov
Очень далеко. В справочнике возможностей jquery на 2/3 - то, что умеет и мой фреймфорк на 20кб, а оставшаяся треть - просто тупое дублирование функционала обычного JS. Последнее преподносится наивным хомячкам как достижение jquery, хотя это лишь более короткая мнемоника штатных функций JS, которую предлагается вызубрить вместо изучения возможностей самого языка. Грубо говоря, у меня в main.js вместо $().хуйня пишется idd().хуйня, вот и вся разница ;) Но при этом jquery не умеет и трети того, чем занимается мой фреймфорк: всякие там междоменные транспорты и взаимодействия, клавиатурные шорткей и прочее.

Jquery - для легкого программирования дизайна среди новичков. Да и то - в основном из-за эффектов анимации и всевозможных визуальных эффектов и плагинов, напиленных всем миром. Ну так поэтому в моем движке даже пользователю разрешен JS и шаблоны дизайна - пожалуйста, подключай Jquery и строй себе любые навороты. Но для самого движка, глубоких взаимодействий с сервером и серьезных задач - он никакой.

Я бы еще понял, если бы в jquery было то, что мне может понадобиться в будущем. Криптопроцессор, например, выполняющий md5, sha1 и умеющий подписывать посылки ключами PGP. А так - бессмысленная для меня штука.
Windows Firefox
0
0
можно попробовать отлавливать события onload, onreadystatechange: http://stackoverflow.com/a/6725358
Linux Firefox
 Москва
0
0
Leonid Kaganov
Спасибо!
Но пока для меня загадка вот этот кусок:
if (!callback.done && (!state || /loaded|complete/.test(state))) {
callback.done = true;
callback();
}

Во-первых, /loaded|complete/.test(state) - это для меня загадочная строчка. Я что-то пропустил в JS? Да, нашел, оказывается есть такое чудо: http://javascript.ru/RegExp/test

Но главное непонятно, что такое callback.done = true; callback(); В смысле, понятно, что хотели обезопасить функцию callback() от повторного вызова. Но, если я правильно понимаю, if(callback.done) вывалится с ошибкой, если это самое .done как-то специально не описать заранее в функции?

В общем, спасибо, постараюсь использовать. Только вместо этих дурацких done мне придется придумать какую-нибудь свою системы флажков, тем более, что загрузить следует не один скрипт, а пачку, а выполнить инициализацию только после того, как загрузятся все (а они могут в разном порядке грузиться).

Интересно, во всех ли браузерах это работает, и можно ли тем же способом грузить css...
Linux Ubuntu Firefox
0
0
lleo.me/[email protected]Артем Павлов
Ну, callback в данном случае, скорее всего, объект.

Проверка !callback.done в данном случае равносильна проверке callback.done == undefined

То есть кусок кода
var callback = {};
if (!callback.done) {
callback.done = "ok!";
alert(callback.done);
}

работает идентично

var callback = {};
if (callback.done == undefined) {
callback.done = "ok!";
alert(callback.done);
}
Linux Firefox
 Москва
0
0
Leonid Kaganov
Не понимаю. Если callback не определен, то
if(callback==undefined) остановит скрипт с ошибкой, хотя undefined.
Почему же тогда не вылетит if(callback.done), если callback есть, но в нем не определен done?
Windows Firefox
 Омск
0
0
lleo.me/[email protected]Артем Павлов
Потому что в яваскрипте нельзя проверить существование глобальной переменной через if(a == undefined).

Есть два пути решения:

1. Проверка типа несуществующей переменной вернет undefined: if(typeof a == undefined) {//do something}

2. Все глобальные переменные яваскрипта - это свойства объекта window. Поэтому if(window.a == undefined) работает правильно.

Для локальных переменных все немного иначе, поэтому код

var callback;
if (callback == undefined) {
alert('lol');
}

работает правильно.
Windows Firefox
 Омск
0
0
lleo.me/[email protected]Артем Павлов
Кстати, код

if (!window.callback) {
alert('lol');
}

тоже отработает правильно.

Но вариант с прямым указанием undefined мне лично больше нравится, потому что яваскрипт при автоматическом приведении типов все пытается преобразовать в строку. Из-за этого возникают всякие странные штуки типа результата работы [1, 5, 10].sort()
Linux Firefox
 Москва
0
0
Leonid Kaganov
О, спасибо. Наконец-то я понял.
Windows Firefox
 Санкт-Петербург
0
0
[email protected]Кошак (cats-shadow)
Обновил с /blog - перестала сохраняться новая заметка. :( Попробую пересинхронизироваться с /dnevnik...

Upd. Старый редактор (с /dnevnik) работает, как и раньше. :)
Linux Firefox
 Москва
0
0
Leonid Kaganov
Предлагаю очистить кэш браузера! Там мог сохраниться старый main_mini.js

Сам main.js у меня обновляется путем дописывания к его урлу ?кода_mtime_файла, а вот с main_mini.js по техническим причинам это сделать труднее, поэтому пока так.
Windows Firefox
 Санкт-Петербург
0
0
[email protected]Кошак (cats-shadow)
Не помогло.
При нажатии кнопки "сохранить" мелькает картинка спирали, а окно не закрывается.

При редактировании существующей заметки все варианты редактора грузятся, но: сохраняют изменения только штатный редактор (из меню админа и из редактирования заметки), TinyMCE и аварийный редактор. Elrte грузится, но не сохраняет изменений.
Linux Firefox
 Москва
0
0
Leonid Kaganov
Это очень странно. Все ли файлы движка обновились? Например, ajax/editor.php

И что при этом пишет в консоль ошибок?
Windows Firefox
 Санкт-Петербург
0
0
[email protected]Кошак (cats-shadow)
>И что при этом пишет в консоль ошибок?
Хм. Как в неё заглянуть?

Upd. Шайтан. однако! заработало! Но elrte по-прежнему не сохраняет отредактированное.

И, кстати, окно с формой авторизации теперь отрисовывается почему-то с сильным смещением вправо/вниз, по сравнению с тем, как было раньше (в /blog - тоже). Сначала появляется маленькое "окошко" "логин" с точкой(?) почти по центру эерана, а потом в тех же координатах (верхний левый угол) отрисовывается форма логина.
Linux Firefox
 Москва
0
0
Leonid Kaganov
Ctrl+Alt+J :)
Windows Firefox
 Санкт-Петербург
0
0
[email protected]Кошак (cats-shadow)
Видать "фокс" у меня "не той системы", такого сочетания клавиш не знает. :) Зато сообразил, куда копать - Shift-Ctrl-J
Сейчас попробую посмотреть, что будет.

При попытке сохранить форму в Elrte его родной кнопкой:
Метка времени: 05.02.2013 2:06:42
Предупреждение: Форма была отправлена в кодировке windows-1251, в которой невозможно закодировать все символы Unicode, поэтому данные, введённые пользователем, могли быть искажены. Чтобы избежать этой проблемы, страница должна быть изменена таким образом, чтобы форма отправлялась в кодировке UTF-8, для чего нужно либо изменить кодировку самой страницы на UTF-8, либо указать accept-charset=utf-8 в элементе формы.
Источник: http://cats-shadow.cats-home.net/extended/elrte/js/jquery-1.[...]
Строка: 17

При нажатии кнопку "сохранить" на форме штатного редактора - в консоли ошибок пусто, форма редактора не закрывается.
Linux Firefox
 Москва
0
0
Leonid Kaganov
Что еще за "родная кнопка" у Elrte?! У него нет и не может быть никаких родных кнопок, он же понятия не имеет, как, куда и что сохранять. Да и вообще не умеет это делать по аяксу.

Если там есть "родная кнопка" - она работать не должна категорически, в лучшем случае попытается обновить страницу, отправив чего-нибудь в POST. А это совсем не то, что нужно.
Windows Firefox
 Санкт-Петербург
0
0
[email protected]Кошак (cats-shadow)
Есть. С пиктограммой дискеты. Просто пробовал добыть хоть какое-то сообщение об ошибке кроме ругательств на неопределенные элементы css.
Linux Firefox
 Москва
0
0
Leonid Kaganov
Короче, надо обновить в движке template/editor_erlite.htm
Я там пофиксил ошибку. Оказывается, там надо одну строчку местной ебанины добавить при записи:
http://elrte.org/redmine/boards/3/topics/4340?r=4434#message[...]

Да, и разумеется запись будет работать только со штатной кнопкой. Чем занимается внутренняя иконка с дискеткой внутри elrte (или как ее убрать), мне неведомо.
Windows Firefox
 Санкт-Петербург
0
0
[email protected]Кошак (cats-shadow)
В штатном редакторе не работают кнопки вставки различных тегов по выделенному тексту. К примеру, вставка ссылки вызывает ошибку:
Метка времени: 05.02.2013 15:06:39
Ошибка: TypeError: e is null
Источник: http://cats-shadow.cats-home.net/js/main.js?1360006064
Строка: 519

Также периодически сыплется ошибка
Метка времени: 05.02.2013 15:07:18
Ошибка: TypeError: D.hasChildNodes is not a function
Источник: http://cats-shadow.cats-home.net/extended/tinymce/jscripts/t[...]
Строка: 1
Windows Firefox
 Санкт-Петербург
0
0
[email protected]Кошак (cats-shadow)
Поймал ошибку сохранения в штатном редакторе:
Метка времени: 05.02.2013 16:16:24
Ошибка: TypeError: idd(...) is null
Источник: http://cats-shadow.cats-home.net/js/main.js?1360006064
Строка: 427
Linux Firefox
 Москва
0
0
Leonid Kaganov
Это старая ошибка, она связана с автосохранением по-моему, и я ее не скоро поправлю. Она не мешает особо.
Linux Firefox
 Пенза
0
0
По ссылке "штатный редактор" открывается TinyMCE. Это нормально?
Linux Firefox
 Пенза
0
0
И ещё оба pедактоpа дописывают в конце какой-то стpанный абзац.



Windows Firefox
0
0
sergeperovsky
Открываю
http://sergeperovsky.binoniq.net/2013/01/31.html
Рыжая пимпочка есть - значит залогинен правильно, как хозяин.
Редактор открывается, хоть для новой заметки, хоть для редактирования. Но запомнить нельзя:
Fatal error: /ajax/editor.php You are not admin!
Linux Firefox
 Москва
0
0
Leonid Kaganov
Беда какая... Там, похоже, проблема с авторизацией сохранилась. Ладно, будем фиксить дальше, когда снова время появится.
Linux Firefox
 Москва
0
0
Leonid Kaganov
А нет, это была ошибка в многоюзерском режиме движка (у меня в блоге она была незаметна, потому что я здесь пишу в рутовый акаунт как админ 0). А вот на Бинонике нашел, пофиксил.
Windows Firefox
0
0
ugolek (#2734544)
при попытке добавить новую заметку пишет ошибку:

Fatal error: /ajax/editor.php
You are not admin!

Куки и кэш обновлял, в другом браузере пробовал.
Linux Firefox
 Москва
0
0
Leonid Kaganov
Вы не можете добавить заметку на этом сайте, потому что это мой личный сайт.

Если речь идет о другом сайте (например, о вашем или каком-то другом), то имеет смысл этот факт уточнять в первых строках. Здесь, в техблоге, мы обсуждаем движок, и подробности важны.
Windows Firefox
0
0
ugolek (#2734544)
прошу прощения за неточность. Заметку пытаюсь добавить на ugolek.binoiq.net
Linux Firefox
 Москва
0
0
Leonid Kaganov
Ага. Тогда я бы предложил зайти в /install и прописать себя в админы (ADD ADMINS). С некоторых пор мы вынесли системный пароль отдельно, и владельца нулевого аккаунта надо просто один раз назначить вручную.

Также имеет смысл проверить в том же /install, нет ли там каких-нибудь обновлений для таблиц MySQL, которые он прямо в центре экрана предлагает выполнить, рисуя соответствующие кнопки.
Windows Firefox
0
0
ugolek (#2734544)
Зашел в /install. При вводе пароля юзера ugolek и нажатии Login сообщает, что пароль неверный. Ввожу правильно, на всякий случай поменял пароль юзера - тот же результат.
При нажатии INSTALL - Admin only! /ajax/module.php:1

Никаких обновлений для таблиц выполнить не предлагает.
Linux Firefox
 Москва
0
0
Leonid Kaganov
Нет, пароль в данном случае - это пароль админа. Он задается при инсталляции движка, сбросить его можно только руками, забравшись в config.php и удалив ключ из кавычек в строке:
$admin_hash1="";
После чего, зайдя в /install (главное, успеть первым :) его можно снова задать.
Windows Firefox
0
0
sergeperovsky
При вызове пункта меню или, как у меня, при нажатии кнопки ЗАПИСАТЬ в редакторе?

всего комментариев: 35

<< предыдущая заметка следующая заметка >>