Здравствуйте друзья!
На протяжении месяца мы мечтали о
безграничности настройки вида административной панели MODx. Чтож, мечты умеют воплощаться в реальность…
Сегодня завершён процесс написания первой ветки плагина JSAM!
JSAM — это уникальный плагин для административной панели MODx, который демонстрирует всю гибкость языка JavaScript и показывает невиданный ранее функционал. И всё это в одном объекте!
И сейчас настал тот момент, когда нужно выпустить текущий бета-релиз из головы, чтобы он не запортил удивительные мысли об второй ветке развития JSAM.
Встречайте,
JSAM 0.0.2beta1!
Я постарался максимально упростить период ознакомления с плагином, его функционалом путём переплетения всей доступной информации.
Для старта вам необходимо пройти на
страничку описания установки плагина, которую я описал у себя в
блоге. Данная страничка будет являться вашим путеводителем и с помощью неё вы узнаете, где скачать плагин и что с ним делать. После вы узнаете о существовании
SpeedUp-документации. По тестированию хочется сказать одно — вашим лучшим другом будет исходный код главного JS-файла, находящегося по адресу
assets/plugins/jsam/jsam.js, а также консоль FireBug и функция log.
В данном релизе присутствует не весь заявленный функционал в виду окончания развития этой ветки JSAM.
Новая планируемая ветка —
0.1.0 — очень переписанное ядро и разделение представления информации. По новой ветке больше ничего не буду говорить, но она будет ужасно аппетитна и её разработка начнётся после моего отдыха и небольших результатов этого тестирования :)
Ну чтож, тестируем, спрашиваем, делимся опытом и улыбаемся.
Вперёд!
Комментарии (116)
RSS свернуть / развернутьburik
Сложное это дело однако)
Regent
Regent
burik
Это при запуске админки правый нижный фрейм.
Regent
elastic
mamamiya
Вашу проблему можно будет решить с помощью написания виджета
Regent
elastic
Смотрите подробности в консоли firebug по объекту jsam.data
Regent
Regent
Виджет EndlessFields — превращает поле в интерактивный менеджер полей(а точнее значений).
Это первый внешний виджет(например в отличии от вшитого vFls) для JSAM.
Подробности:
Насколько вы успели заметить, здесь при инициализации виджета можно установить разделитель между значениями полей. По умолчанию стоит разделитель ||. Но я рекомендую поставить более сложный разделитель, так как пользователь сам может ввести ||. Например можно поставить разделитель ~_||_~
Виджет был написан на основе виджета vFls и использует его стили.
Сразу примерчик для ТВ параметра!
Результат:
Скачать виджет EndlessFields!
Regent
mamamiya
вот если бы еще при настройке можно было тип полей указывать (текстовое поле, текстарея, выпадающий список)… :)
antonkuzmin
Кстати, до сих пор непонятно, понадобился кому-нибудь плагин? Не вижу ни одного комментария об использовании, вот и задумываюсь, а стоит ли продолжать разработку?
Regent
Carw
Regent
на самом деле функционал нужный, некоторые недостающие функции ММ сам доделывал на коленке, заплатками. а тут есть все и даже больше.
antonkuzmin
banev
pitbull
Regent
И что самое интересное, для сложных виджетов я планирую использовать JS-аналоги PHP функций serialize и unserialize — структура выходных данных виджета будет идеально сохранятся и легко получатся на сервере!
P. S. Хотелось бы послушать хоть немного комментариев от людей, использовавших плагин :)
Regent
Закинь таки тему на форум modxcms.com, чтобы увеличить аудиторию.
pitbull
Иначе при сегодняшнем малозадокументированном варианте могут возникать у одного человека десятки и десятки вопросов…
Regent
banev
banev
Regent
И ещё — к релизу надо постараться перекрыть все функции MM — их не так уж и много. К сожалению я ещё не добрался до прикрутки плагина к админки, но думаю доберусь в течение недели.
1) Насколько я понимаю все вопросы по поводу СОКРЫТИЯ, ПЕРЕНОСА и ПЕРЕИМЕНОВАНИЯ параметров, tv-параметров, чанков и табов ты закрыл (надеюсь change_field_help тоже).
2) mm_inherit — Неплохая штука, жалко что у ММ распространяется только на текстовые поля.
3) mm_default — может пригодиться.
4) mm_synch_fields — ни разу не нашел применения у меня… :)
5) mm_createTab — тоже решено, вроде.
6) mm_widget_showimagetvs — отличная вещь, насколько я понимаю, может быть заменена «левым» плагином Show Image TVs.
7) mm_widget_colors — не юзал.
8) mm_widget_tags — не юзал.
9) mm_widget_accessdenied — вот это супервещь, но её бы доработать, впрочем я тебе уже наверное плешь проел по этому поводу :)
banev
1) Не организован только перенос(организовывается в одну строчку). Но в версии 0.1.0 будет всего этого сполна.
jsam.document.help — для работы с подсказками(скрытие, удаление, добавление к любому полю)
jsam.document.split — для работы с разделителями между полями(добавление, удаление)
Параметры и TV-параметры в свете jSam — одно и тоже)
2) Вчера думал на счёт наследования — организовывается легко для стандартных полей. С TV-параметрами(точнее с их типами) придётся повозится. Я думаю, на выходе получится такая функция:
jsam.document.field.inherit( fieldName );
3) jsam.document.field.default — с лёгкостью. Но опять же надо подумать на счёт нестандартных полей(чекбоксы и т. д)
4) synch_fields можно организовать, но опять же вопрос — её хоть раз реально применял кто-нибудь?
5) На счёт табов — целый объект для работы. Можно переименовывать, скрывать, перемещать и делать активным любой таб — и всё это по его названию.
6) showimagetvs — по функциональности самый лёгкий виджет. Можно будет организовать его в строчек 10 кода)
Вообще планируется написать нормальный виджет для изображений — интерактивный менеджер изображений.
7) 8) Данных виджетов можно наштамповать гору, подключив jQueryUI.
9) accessdenied — просто сделаемс.
Продолжаю наблюдать обзорные комментарии =)
Regent
pitbull
Вместо Заголовок придётся писать Page title и т. д.
Нужно немного будет модифицировать функцию выборки — передавав в неё строку в нижнем регистре, обозначающую единное слово, возвращать поле, у инпута которого атрибут name будет равен этой строке.
Другими словами
Будет аналогично
Regent
Хотя смена языка админки не самое мое любимое занятие, но такое возможно, хотя и маловероятно, наверное.
pitbull
Carw
lesch
А можно как-нибудь настраивать цвета оверлеев? :)
burik
Нужно зайти в редактирование плагина и там изменить немного массив с опциями.
Например для странички редактирования ресурса
#F6FFFF заменить на свой цвет. Можно ещё добавить своих стилей.
Надеюсь, понятно объяснил?
Кстати, на счёт jQuery — ещё не решил, откуда его подключать. Для проектов на локалке лучше будет подключение jQuery из папки плагина конечно. А вот уже для веба — тянуть с Google Code(будет быстрее благодаря CDN и кешироваться). Вот что я думаю.
Regent
Leadmonkey
Всё правильно установили? Белый экран, а что дальше? Что в консоли ещё написано?
Regent
Leadmonkey
Regent
Leadmonkey
1. ID шаблона
2. Название поля(Например Фотографии)
Regent
название TV — photo
Leadmonkey
Regent
Leadmonkey
Поэтому на данный момент содержимое файла jsam_rules.js у вас должно быть такое:
Regent
Leadmonkey
Пока единственный выход в этой версии — вручную сменить кое-что в файле jsam.js
Если сильно надо, могу показать, как с папки Files на Images поменять
Regent
Leadmonkey
Leadmonkey
Насколько вы поняли, можно производить логическую настройку по уровню вложенности документа.
Будет возможность просто отключить расширение Inherit Parent Template(т. е. теперь InPTemplate). И будет возможность наследовать от родителя всё, что угодно. Например:
Regent
Даю кусок на сервере под официальный сайт (форум, если надо и т.д.). Сервер не супер пупер, но все-же:
Atom DualCore 1.6GHz 2Gb RAM
Для проекта я думаю хватит «по уши».
Взамен хочу… чтобы плагин рос и развивался!!! )
Если интересно, прошу стучать в личку.
abadello
Сейчас в развитие проекта нужен только один единственный вклад — тестирование, тестирование и ещё раз тестирование со стороны обывателей MODx!
Без каких либо результатов тестирования я даже продолжить разработку не могу, так как не знаю, вообще сейчас на что обращать внимание, на что упор делать и т. д.
Нужны хорошие обзоры!
Regent
А по поводу тестирования — нужна внятная документация что почему и для чего. Плюс не все хорошо понимают JS — нужны пояснения. Иначе тестирование встанет, поскольку тестировать будут только специалисты.
Так же я считаю необходимым хоть банальный но модуль с конфигами и прочее (бэкэнд). Не хорошо в файлы плагинов лазить.
А в целом считаю плагин мега нужным и важным. Спасибо!
abadello
По документации — есть документация по всем методам объекта. От человека потребуется лишь использовав её написать правила. В файле правил есть небольшие пояснения в добавок ко всему этому.
Другими словами кому действительно это нужно, смогут разобраться. А сильно большая аудитория для тестирования и не нужна пока.
Спасибо!
Regent
mamamiya
Такая бы функция удаляла все теги из фрейма и выводила необязательное сообщение message. Таким образом можно будет запретить к редактированию/просмотру что угодно!
Regent
anteyru
Leadmonkey
Regent
Leadmonkey
Единственное — не получится сделать текущей вкладку «Дочерние ресурсы», так как jSam не подключается во фрейм обзора ресурса. Иначе бы было возможно…
Regent
Leadmonkey
pitbull
На счёт второй части комментария — не совсем понял про таблицы…
Regent
Но далеко не все юные падаваны знают, что в модикс есть закладка обзор документов, где теже 100 документов легче и удобнее просматривать.
Ну и плюс в юмле порядок сортировки можно тамже менять, не открывая подряд каждый документ.
Вот о чем я.
зы: А какой умник молча минус поставил? хоть бы рассказал, с чем это он не согласен.
pitbull
Только надо подумать, как это лучше сделать…
Regent
Но сразу возникло много вопросов.
1)Например. Как и pitbull хочу сделать в верхнем меню вкладку, чтобы вела на определенные каталоги и 1. в дереве слева показывала ТОЛЬКО содержимое этого самого каталога, 2. При нажатии на ссылку сверху в основном фрейме показывала документы либо таблицей как это уже умеет модХ, либо еще лучше вольным образом, который диктуется определенным чанком.
2)Далее. Возник вопрос. Вот в ссылках часто пробегает параметр «a». Ну в ссылках которые есть в примере вида index.php?a=5&id=123. Где можно поглядеть полный список этих а по номерам, какое что значит и как их по-умному использовать…
3) А поля на странице создания/редактирования документа можно местами как-то менять?
4) в фрейме дерева реализовать бы функцию show и hideall. Т.е. Типа спрятал все, после этого вернул то, что надо. Ну или проще еще ф-ю типа спрятать все, кроме…
Еще чего вспомню — напишу.
lesch
2) a в ссылке — это action, т. е. действие. Полный список в файле index.php. Плагин уже это a по умному — определяет тип фрейма. Сколько сейчас в index.php a, столько по идее же должно быть фреймов * 1,5.
3) Можно пока только средствами jQuery
4) Реализовать то можно, но одно но — существуют вложенные ресурсы. Скрыв один можно скрыть довольно большое количество ресурсов. А после этого показать тот, который нужно, может не получится
Regent
4) ну вот у меня есть некий ресурс в корне, в нем еще 7 шт. Я хочу сделать так, чтобы у меня было семь страниц на которых в дереве отображалось только содержимое содержимое этих ресурсов по одному на каждую соответственно. Это реально как-то сделать без особого геморроя?
lesch
4) Теперь по этому пункту ничего не понял.
Regent
1) я хочу, по нажатию в меню на ссылку, получать не редктирование ресурса, не обзор его хар-к, а сразу листинг вложенных в него ресурсов в основном фрейме. В идеале — листинг который генерится на основе чанка.
4) плюс к тому что написал в первом пункте хочу либо спрятать дерево без возможности вынуть (есть такой вариант?) либо оставить в нем только вложенные ресурсы определенного ресурса. Ну вот приведу пример. У меня есть ресурс в корне. Звать его Каталог, в нем есть 7 ресурсов. Ну там Одежда, Белье, etc. В раздел одежда вложено еще 10 разделов, в которые добавляются товары. Когда я в верхнем меню кликаю на ссылке Одежда (допустим ссылка уже создана с помошью jsam) я хочу попасть на листинг вложенных ресурсов в основном фрейме (см. пункт 1) и в дереве я хочу видеть только то, что вложено в ресурс «Одежда». По возможности — начиная с третьего уровня вложенности. Если еще не понятно — какбы «превратить ресурс Одежда в корень». Как-то так =)
lesch
Если самому делать, то как вариант — добавить новый тип фрейма(обзор ресурса) в jsam, в нём сделать активной вкладку «Дочерние ресурсы» и спрятать все вкладки.
4) Это по сути — активное управление деревом. С помощью стандартных средств пока реализовать нельзя
Regent
lesch
Regent
lesch
1. В правила добавить
2. В jsam.inc.php после строчки 144 добавить код типа:
После этого теоретически должен поддерживаться фрейм обзора ресурса
Regent
Сделал всё как ты написал при установки. В файле jsam_rules.js раскомментирование примеров ничего не даёт, долго думать времени у меня мало, буду признателен за поддержку. То есть понятно, не получается даже протестировать то, встал ли плагин или где-то при установки проблема возникла, либо что-то с настройками системы modx…
Firebug не приходилось ещё использовать в javascript экспериментах, у меня в консоли есть всё, что мне не нужно, а вот того, что нужно нет… Так ли он важен?
atomoc
Для начала нужно посмотреть, подключился ли jSam — в консоль он отправит сообщение об успешном подключении
Regent
atomoc
Чтото типо этого
Regent
atomoc
В диком восторге! Всё очень здорево!
Пара вопросов:
1. Можно ли поля в документе отсортировать (сменить позицию поля)
2. Кнопки в tree (новый документ, новая ссылка и т.п.) скрыл через jquery, а в jsam есть апи для доступа к этим кнопкам?
И еще одна моя несбыточная мечта (к JSAM не относится, но все же): драгндроп документов в дереве с jquery
Vampire
Всё таки не зря думал об обратной совместимости)
1. Пока нет такой функции, но будет. Сейчас это можно сделать только с помощью jQuery
2. Хорошая мысль! Положил идею в копилку.
3. Так? — кликаем на документе в дереве и перетаскиваем на желаемых ресурс. В итоге наш документ становится детём того документа. Если так, то это можно… сделать!
Regent
Carw
Перемещение ресурса в дочерние ресурсы родителя?
Regent
1) Редактировать 10 документ и сделать его индекс равным 0 (например.)
2) Нужно зайти в модуль Doc Manager и сделать сортировку пунктов.
А тут — схватил, перетянул и индекс исправился. А если перетянул в другую ветку, то сменился еще и родитель.
Carw
А вот если на том же уровне есть 5 документов с menuindex=0 и скажем последний документ этого уровня перетягивают в начальную позицию на этом уровне(до первого документа), то какой-же должен стать menuindex у этого документа?
Regent
1) Запомнить старый индекс у пункта
2) Посчитать новый
3) Если новый индекс отличается от старого, то обновить информацию о нем в базе.
Так все нулевые индексы исчезнут при попытке сортировки.
Carw
Дерево будет обновляться при отпускании кнопки мыши
Regent
Во-первых: отрицательные значения menuindex допустимы
Во-вторых: если я не ошибаюсь, то при одинаковом menuindex у нескольких документов сортировка идет по createdon
Vampire
На счёт отрицательных значений утверждать не могу, но это хорошая мысль. Кстати, при редактировании документа кнопки(вверх и вниз) около поля позиции в меня не позволяют опуститься ниже нуля.
Regent
А насчет createdon — я и не говорю, чтобы его менять…
Я к тому, что: идут документы с индексами 1,2,3,4,5 И например 5-й документ надо переместить между 1 и 2 — для этого ему необходимо присвоить индекс 1 (если предположить что его дата создания больше первого документа)
По крайне мере — именно так я и делаю ручками, когда нужно что-то отсортировать.
Было бы правильнее если индексы создавались по десяткам: 10,20,30 — в этом случаю куда меньше проблем, чтобы вставить документ между соответствующими документами. Кстати — по ходу родилась идея — добавить в контекстное меню пункты «Вставить документ (ссылку) до/после»
Vampire
Насчёт индексов по десяткам у нового документа — можно тоже реализовать.
И на счёт контекстного меню — тоже осуществимо.
Regent
наверное все таки более правильно — переписать все индексы.
а то уж слишком много заморочек со всякими условиями
Vampire
Пять документов с индексами 0, 4, 3, 0, 5. К примеру последний перемещаем на вторую позицию. Индексы переписываются и становятся 0, 1, 2, 3, 4. Создаём новый документ, и забываем изменить индекс, который равен нулю… :)
Regent
Форматирование поля через jquery — особенно касается полей типа «дата» (дата публикации и т.п.).
С чего родилась идея: в поле можно руками прописывать дату (если далекая дата — в календаре листать не удобно), формат поля ДД-ММ-ГГГГ ЧЧ: ММ: СС. Очень часто приходится копипастить даты вида 01.01.2001 1:01:01 — приходиться руками менять точки на минусы — жутко раздражает. В jQuery где то попадался плагин, который умеет форматировать (приводить к заданному формату).
Календарик, кстати, тоже можно jquery-вский прикрытить покрасивше, но это не принципиально.
Vampire
В jQuery UI Datepicker нет поля для ввода часов/минут/секунд.
Regent
jQuery tooltip в дереве.
Стандартный title выглядит коряво.
Vampire
Любой HTML-tooltip будет почти всегда больше ширины дерева меню, и будет появляться скролл.
Regent
интересно — а можно ли через js выводить tooltip в родительском фрейме?
Vampire
Одно препятствие — как нормально при наведении выводить всплывающие подсказки?
Regent
elastic
Меня пока от использования удерживает только обращение ко всем элементам по имени, а не по id какому-нить.
pitbull
Вот и пропал я почти на целое лето в связи с кое-какими личными делами…
Вижу, уже вышел 1.0.4 и Revo…
Я сам уже многое позабыл)
Надеюсь, вернусь в сентябре и постараюсь всё вспомнить…
Сейчас конечно есть вечный SVN, в котором ктото врятле меня разберётся)
Надеюсь, вы поможете мне всё вспомнить…
Regent
Carw
banev
mamamiya
Я вернулся(сегодня приехал домой, на блоге отписал) в РуНет только из-за этого проекта :)
Чтож, разгребу дела в реале и попытаюсь вспомнить ВСЁ! :-P
Сейчас всё помню примерно как после какой-то пьянки на утро(
Ещё думаю, что сам сайт с доками не осилю уже, нужно больше времени, которого сейчас у меня не будет. Либо придётся присмотреть очень удобное готовое решение, либо не знаю :-(
Regent
Carw
banev
Сегодня опять вернулся домой, наверно приступлю к реанимации своей памяти.
Вижу 1.0.4 вышел… Сейчас вспомню, как денвер включать и в бой =)
Regent
mamamiya
Конечно пока это всё с трудом, но потихоньку. Чтобы дальше продолжить разработку, нужен план действий, которого пока нет. Чтобы его создать, нужно полностью опять понять и держать в голове все исходники с примерами и вторая обязательная часть — ваши предложения по поводу плагина. Это лучше всего сделать сейчас только одним путём — написать доки к текущей версии и выпустить её на пробу)))
Так что подсказывайте удобный движок, буду потихоньку писать документацию, может что то важное по ходу дела вспомню, допишу в плагин перед релизом.
Вот такой движок бы нужен — удобная работа с примерами(картинки, код(JS, PHP...), путь к функции/объекту и т. д.), ну вобщем оч. удобный движок для примеров который только может быть =)
Подсказывайте ;)
Regent
abadello
Ещё был старый док… но он наверн уже не подходит
Кстати, уж извините за неоправданные надежды по проекту :( Так получилось что в свои 18 лет в один момент у меня закончилось всё свободное время :(
Прошёл год и я всё забыл… Эх, было классно )
Сейчас вот поступаю в универ на инженера-программиста, незнаю незнаю, может я и вернусь в этот мир :)
Regent
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.