Компонент Office и открытый бета-тест репозитория

Долго ли, коротко ли, но вот и подошел долгожданный момент открытого тестирования нашего репозитория. На сегодня у нас в строю только небольшая часть личного кабинета (новый компонент Office) и полностью рабочий репо, из которого можно загружать бесплатные дополнения.
Платные загружать пока нельзя, ибо не готов еще процесс приема платы, и остальные навороты. Поэтому, сегодня мы проверяем только самый основной функционал.
Чтобы проверять было интереснее, в репозитории лежит свежая версия miniShop2 2.0.1 с огромным количеством исправлений и редактированием заказов. Также есть модифицированный getPage, под именем getPageExt.
Про MS2.0.1 отдельная заметка, а здесь я расскажу, как подключиться к репозиторию.

Авторизация

За авторизацию, обновление профиля и личный кабинет у нас отвечает новый компонент Office. Это универсальный личный кабинет с очень гибкой и расширяемой модульной структурой, наподобие классов MS2, только попроще.
Авторизация организована довольна необычно: паролей и логинов нет, для входа нужен только email.
На указанное мыло придет ссылка для активации аккаунта, при переходе - мгновенная авторизация и редирект в профиль, для внесения нужных данных. Логином пользователя служит его email, дубликаты почты запрещены.
Принцип работы честно подсмотрен у artgorbunov.ru, только мы его немного доработали. Например, у нас можно не только выйти из профиля в любой момент времени (и зайти обратно по новой ссылке), но и сменить email.
Учитывая, что при смене почтового ящика меняется и логин юзера, и происходит это только после активации по ссылке (во избежания утери профиля при опечатке) - вы можете представить, как я намучился, программируя эту систему.
Однако, все работает быстро, гладко и вроде бы, без глюков. Это базовый функционал авторизации через Office.

Редактирование профиля

Это второй базовый контроллер, основная часть которого позаимствована из HybridAuth. Здесь нет социальных сетей (они появятся позже), зато код обновления профиля латался раза 3, после шалостей Евгения Борисова. Так что - проверено, уязвимостей нет.
Структура Office позволяет каждому контроллеру грузить свои чанки, javascript и css - чем я и пользуюсь по полной. Всё, что только можно, работает через ajax, никаких перезагрузок при отправке формы. Конечно, на месте, ставшие уже привычными, красные и зелёные всплывающие сообщения через jGrowl.

Управление ключами

Для работы с нашем репозиторием необходима пара логин\ключ, абсолютно все действия возможны только для авторизованного сайта.
Количество ключей не ограничено, для каждого вашего сайта нужно сгенерировать свой уникальный ключ, в дальнейшем к ним будут привязываться покупки. Генерация производится самостоятельно в следующем разделе кабинета - управление ключами.
Тут вышло интересно.
Я довольно долго сижу в бэкенде MODX и очень привык к определенному уровню функциональности Ext JS. Ну, то есть я делаю таблицу, задаю действия, пишу процессоры и всё - она работает сама. У меня не болит голова про оформление, вывод надписи "ничего не найдено", подключение лексиконов и прочее. Окошки выпригивают, кнопочки нажимаются, запросики на сервер уходят, ответы от процессоров приходят.
Ляпота, отказаться невозможно.
Конечно, первым делом я решил найти что-то подобное на jQuery, для написания фронтенда Office. Самое близкое, что подсказали - Kendo UI. Очень крутая и интересная штука, которую, однако, нужно учить и интегрировать в MODX.
Сразу вплыла куча непоняток с локализацией, лексиконами, непривычные виджеты и необходимость добавления этого UI в пакет (пара лишних мегабайт, с оформлением). Самое критичное, конечно - время на изучение.
Поэтому потыкавшись несколько часов я вернулся к проверенному еще в MS1 варианту - использовать Ext JS прямо из админки MODX. Только теперь это сделано на гораздо более высоком уровне:
  • Хорошо выглядит, нет проблем с разметкой

  • Используется родная тема MODX (она явно симпатичнее, чем от Ext). Возможно, потом напишем и свою.

  • Самое главное: все нужные скрипты и лексиконы выносятся из админки при помощи php, склеиваются, сжимаются и складываются в /assets. То есть, админку можно наглухо закрывать по ip - гость туда все равно не попадает и не использует файлы из /manager.

Заодно и страница со всеми скриптами и стилями стала весить Вот, что вышло:
Понимаю, что Ext JS нравится далеко не всем (а зря), но это не особо важно, ибо используемые библиотеки зависят от контроллера Office, а он может быть любым.
То есть, на странице с управлением ключами работа организована через Ext, а в обновлении профиля - нет. Разработчик сам выбирает, что ему подключать в своем контроллере.
Хочу еще отметить, что при такой удачной интеграции Ext JS, во фронтенд можно вынести абсолютно все: управление ресурсами, заказами, товарами, галереей и что душа пожелает.
Плюсуем удобную авторизацию, редактирование профиля и кучу будущих контроллеров на все случаи жизни (которые довольно просто пишутся) и понимаем, что Office тоже платный и появится в репозитории только после открытия магазина.
Часто спрашивают, - "а будет личный кабинет для MS2?" Ага, это оно.

И все таки, как подключиться к репозиторию?

Упс, я немного увлекся рассказом про Office, поэтому возвращаемся к сути заметки:
  1. Нужно авторизоваться на http://store.simpledream.ru/

  2. Заполнить свое имя в профиле

  3. Создать новый ключик

  4. Зайти в админку своего сайта и добавить нового провайдера (логин - ваш email в репо, api ключ копипастим из всплывающего окошка)

Адрес для запросов - http://store.simpledream.ru/extras/ - при заходе из браузера будет 404, не удивляйтесь, так надо.
  1. Переключаем на другого провайдера и смотрим, что есть.
Пока небогато, но MS2 и другие мои пакеты будут распространяться отсюда, в первую очередь, ибо в родном репозитории реально достала фигня с "необновлением".

Заключение

На всякий случай напоминаю, что это бета тест, и вполне возможно, что скоро личный кабинет будет закрыт для дальнейшей разработки. Репозиторий, конечно, будет работать без перебоев - он уже готов.
Внешний вид, логика работы и всё остальное может еще десять раз поменяться. С нетерпением жду сообщений об ошибках и проблемах в комментариях к заметке.

Обновлено 24.05.13

Официальный репозиторий в очередной раз прилёг отдохнуть.
Постараюсь в ближайшее время перенести все свои пакеты в наш репо - уже пора.

43 комментария

Alex Vakhitov
Круто (: Правда когда подключал затупил сильно, не заметил что скопировал адрес с пробелом в конце и долго не мог понять почему я не могу приконектиться
СикретНаме
Мои конгратулэйты, Василий (вроде даже багов не видать).
Мордынский Николай
Подключился пакеты вижу кнопка загрузить зеленая - >пыщь -> грузится грузится грузится ололололо )) не загрузилось ((
Василий Наумкин
Упс, исправил.
Мордынский Николай
Угу загрузил после загрузки на список скачанных и установленных пакетов криво переадресация стоит или хз пишет грузится обновляю страницу список пуст. при этом кнопка домой (домик неактивна)
Выбираю модх поставщика нормально переадресовывается
Василий Наумкин
Это уже не от меня зависит.
Мордынский Николай
судя по id регистарций было 15 уже скачиваний 5 ))
Александр Наумов
Здорово все!! Подключился, установил MS2.
Василий Наумкин
И теперь при новых релизах у тебя будет загораться кнопочка "обновить" =)
Александр Наумов
Здорово, теперь буду ждать в продаже пакет Office.
Sadykh Sadykhov
Отличная работа! Сколько в человеко-часах ушло времени? :)
Василий Наумкин
На Office 32 часа, но он еще не закончен + на сам сайт часов 8.
Но я не учитываю многие вещи, типа метания с Kendo UI.
Евгений Борисов
Ну раз это открытый beta тест, то вот еще:
Непонятно зачем графа хост, если она автоматически заполняется. При чем заполняется только 1 раз (в первый раз при соединении с данным ключиком).
Василий Наумкин
Чтобы тебе проще было видеть, для какого сайта этот ключ. Я не верю, что все будут заполнять description и не начнется путаницы.
Также, скорее всего, будет привязка ключа к домену и блокировка попыток зайти с другого имени.
Евгений Борисов
Также, скорее всего, будет привязка ключа к домену и блокировка попыток зайти с другого имени.
А зачем так жестко? Ключ есть. Мыло есть. Может у меня для 1 клиента сразу несколько сайтов - какой смысл штамповать кучу ключей для него. И раз уж такая пьянка, то логи хостов с которых идет обращение логируются? **кионарап я**
Василий Наумкин
Смысл в том, что платные дополнения привязываются к ключу, а не к пользователю.
Почему так? Потому что покупка - это поддержка. Это ответы на вопросы, это трата времени. Разбираться с работой компонента, купленного 1 раз на 10 сайтах интереса нет.
Конечно будут скидки при нескольких покупках, сам процесс еще обсуждается - это всё пока теория. В коде заложены и vip ключи - по ним доступны все пакеты сразу, безлимит.
Исходники от большинства компонентов будут на github - можно будет не покупать и собирать самому - но без поддержки, понятно. По большому счету, продаваться будет даже не сам компонент, а консультации по работе с ним и документация.
Ясен пончик, все обращения к репозиторию детально логируются.
Евгений Борисов
По большому счету, продаваться будет даже не сам компонент, а консультации по работе с ним и документация.
и > Разбираться с работой компонента, купленного 1 раз на 10 сайтах интереса нет
Незнаю как будет на практике. Но у меня в голове немного не связываются вот эти два пункта. Ну, поживем увидим.
Воеводский Михаил
Василий, как быть в ситуации, когда ключ получается и используется на техническом домене, а затем сайт переносится на основной домен?
Василий Наумкин
Напишешь в ТП и привяжут к другому домену.
Поддержка должна быть нашем козырем, так что дело 5 минут.
Виталий Батушев
Документацию в оффлайн-версиях продавать не думаете? Для меня резко за последнюю неделю встала проблема отсутствия интернета, пришлось сидеть на локальном сайте и проблема отсутствия оффлайн-документации стала критичной.
Василий Наумкин
Вот я даже не знаю, как это организовать.
Она же меняется постоянно, регулярно задают вопросы, каждый день что-то новое в комментариях. Проблема с том, что если появляется такая документация, которая не меняется и не обновляется - то проект уже не развивается.
Тут только один вариант - писать сразу доки при подготовке новой версии, и прикладывать к ней, что выглядит трудозатратно.
Так что, не знаю, как тут быть. Сохраняй пока странички в html, как 10 лет назад.
Виталий Киреев
Основной репозиторий modx упал с 502 ошибкой. Это как-то связано? :D
Василий Наумкин
Конечно, он же Ruby сделан, а не MODX - вот и падает =)
Alex Vakhitov
Надо было на Django делать, а не на какомто руби ((:
Иван Брежнев
Насколько мне известно Django это Framework, а Ruby - язык. Поэтому правильно было бы написать "на Питоне".
P.S. Если конечно под Ruby вы не подразумеваете RoR ))
Alex Vakhitov
Все правильно вам известно (: Репозиторий modx построен на рельсах поэтому не стал уточнять язык программирования
Pavel Kravchuk
пробовал зарегистрироваться на репозитории simpledream. Что то не приходят письма с ссылкой можете помочь?
Василий Наумкин
70 человек зарегистрировались без проблем.
Разбирайся со своей почтой.
Pavel Kravchuk
сорри .... письмо попало в спам :(
Василий Наумкин
Понял, надо мне spf прописать - забыл.
Сергей Шлоков
Мне кажется, пагинация для 15 компонентов только мешает. Удобнее огласить сразу весь список.
Проблема с активацией! Перехожу по присланному урлу: http://store.simpledream.ru/?action=auth%2Flogin&email=inforomb%40gmail.com&hash=3db8f4b2e60XXXXXXXXXXXXXXXXXXXXXXX Пишет: На этой странице обнаружена циклическая переадресация... А повторно получить ссылку не могу, пишет - такой емайл уже используется.... Блин, очень нужен MS2... UPD: Чуть позже пустил мой емайл повторно и вроде без проблем активировался...
Василий Наумкин
Был баг, пофиксил. Спасибо!
Ссылки на активацию (при условии, что предыдущая была не использована) можно получать раз в 30 минут. На всякий случай сократил до 10.
Alexandr Lisovskiy
Очень круто, спасибо. А как можно посмотреть/скачать office? UPD: Имеется в виду приобрести :)
Василий Наумкин
Посмотреть ты его можешь в личном кабинете, а купить только после открытия магазина, которым я сейчас активно занимаюсь.
Скоро, надеюсь, запущу.
Зарегистрировался,ссылка пришла, переход по ней результата не дал-открывается сайт,но я не авторизован.
Василий Наумкин
Запроси еще раз ссылочку.
После тебя уже 3 человека активировались.
вошел..странный баг..
Василий Наумкин
Вполне может быть, что баг - система совсем новенькая и необычная.
Посмотрим дальше.
СикретНаме
MiniShop2 откуда качать то, с родного или вашего репозитария? Будет ли его версия в родном репозитории обновляться нормально или только в вашем? Будут ли расширения нормально вставать в версию из родного репозитория?
Василий Наумкин
Качай откуда хочешь, это дело добровольное.
СикретНаме
Просто показалось, что в вашем репозитарии новее версия, вот и думаю, не будет ли так, что в родном гораздо позже обновления будут появляться.?
Василий Наумкин
Ты сравни какая лежит версия там. И какая у нас.
Многое прояснится.
bezumkin.ru
Personal website of Vasily Naumkin
Прямой эфир
Василий Наумкин
01.07.2024, 11:56:41
Да, верно, именно так. А в контроллере, скорее всего, ловить данные методом post.
Василий Наумкин
26.06.2024, 09:38:15
О, точно, вылезает если не залогинен. Спасибо, исправил!
Василий Наумкин
09.04.2024, 04:45:01
> Ошибка 500 Это не похоже на ошибку Nginx, это скорее всего ошибка PHP - надо смотреть его логи. ...
Futuris
04.04.2024, 08:56:12
Я просто немного запутался. Когда в абзаце "Vesp/Core" ты пишешь про "новый trait FileModel", я поду...
Василий Наумкин
20.03.2024, 21:21:52
Volledig!
Андрей
14.03.2024, 13:47:10
Василий! Как всегда очень круто! Моё почтение!
russel gal
09.03.2024, 20:17:18
> А этот стоило написать хотя бы затем, чтобы получить комментарий от юзера, который ничего не писал...
Александр Наумов
27.01.2024, 03:06:18
Василий, спасибо! Извини, тупанул.
Василий Наумкин
22.01.2024, 07:43:20
Давай-давай!
Василий Наумкин
24.12.2023, 14:26:13
Спасибо!