Александр Туниеков

Александр Туниеков

С нами с 19 декабря 2015; Место в рейтинге пользователей: #15
Александр Туниеков
30 марта 2016, 02:20
+1
Задали вопрос программисту, а он попытался запрограммировать в вас код ответа :)
Я перед тем как задавать вопросы пробую сам разобраться. Диалог с техподдержкой сразу становиться конструктивней :-).
Александр Туниеков
30 марта 2016, 01:55
0
Ага. А это пример, что очень нужно поэтому и не понятно. (извиняюсь, что-то на морализаторство потянуло.)
Довольно мало во фронте и несколько неупорядоченно. Хотя больше то наверно не нужно.
сниппеты:
getDefaultUserOrg — Показывает форму редактирования или просмотра данных организации.
Если пользователь в группе Администраторы, то есть права на редактирование, показывает чанк editOrgOuter со строками из чанка editOrgRow. Иначе форму просмотра viewOrgOuter. Параметр onlyView ='1' также показывает viewOrgOuter с editOrgRow для вставки данных организации в какую-нибудь другую форму. (Планировалось, что один пользователь может находиться в разных организациях. Но пришлось урезаться, а название сниппета осталось.)
В форме editOrgOuter, кнопка пользователи переход на страницу пользователей организации со сниппетом
editOrgsUsers — Показывает пользователей организации и инвайты в нее.
Сниппет — показывает таблицу пользователей. Чанки editUserOrgOuter и editUserOrgRow. В таблице кнопки:
Редактирование группы прав пользователя и отключение пользователя. При отключении пользователя его права становятся нулевыми.
То есть функция $Orgs->testAccess($access) из класса organizations.class.php вернет false на любое право. Право — это строка вида «edit_org_data». Настраивается в админке.
$Orgs->getDefaultOrg($userId); возвращает id организации.
В чанке editUserOrgOuter так же таблица инвайтов организации, модальная форма редактирования прав пользователя и модальная форма создания инвайта. Про инвайты пока пропустим.
Сниппет checkAccess проверяет права. Если успешно, то возвращает чанк trueTpl. Иначе параметр falseMsg. Можно перед показом какого-либо ресурса проверить права.
CheckConteiner inviteReg и loginRegisterHook используются при регистрации пользователя. Написаны под [Login] и как они подойдут для других компонентов не знаю. Я их не юзал.
Для подсказок DaData нужно bootstrap, bootstrap3-typeahead.min.js, orgs.js из папки assets\components\organizations\js
Посмотреть код и как это выглядит можно на демо-сайте http://z9233215.bget.ru/
Как разработчику компонента мне кажется все очевидным. Я еще не знаю какие проблемы и вопросы у Вас могут возникнуть. Попробуйте разобраться. Задавайте вопросы. Может Вы потом захотите написать хороший урок по компоненту :-).
Александр Туниеков
29 марта 2016, 23:09
0
Вау :-) спасибо. Мне всерьез разбираться было лень. Такой четкий ответ радует.
«Выпад» в сторону Modstore и др. был просто примером моего первоначального понимания GPL.
Текст моей «лицензии» несет в себе совсем другую цель, чем лицензия GPL. Поэтому я и не планировал разбираться с ней. Но Ваш пост полезен. Еще раз спасибо.
Цель моей «лицензии», в общем — то, несколько уменьшить влияние власти и госструктур на общество. Они мне как-то не нравятся :-).

1. Этот абзац понятен. Однако, желания читать пост, увы, не появилось :(
Может быть вам это не сильно нужно? Может зачем компонент вы уже поняли, а использовать пока не планируете?
У MODx, например, далеко не все возможности задокументированы. Приходиться искать информацию в поиске. Есть своя цена и за внятное описание и своя цена за освоение информации. Если вы хотите разобраться, то я постараюсь вам помочь. А если в этом нет насущной необходимости, то зачем напрягаться и мне и вам? :-)
Александр Туниеков
29 марта 2016, 21:43
0
Я конечно умный блин повыпендриваться полезло. Не понял, что к чему. В праве продавать вроде никто не сомневается. Речь только об обязанности исходники предоставить.
Александр Туниеков
29 марта 2016, 21:35
0
Ну, во первых, я тут просто выкладываю свое мнение. Возможно оно ошибочно. Буду рад если меня поправят. Цапаться мне не всегда интересно. Во вторых, я никого не хотел обидеть. Даже если получиться поцапаться :-).

1. Свободное != бесплатное. У нас код не обфусцирован, в бинарники не зажат, никаких проверок лицензий нет. При загрузке пакета ты получаешь исходный PHP, с которым можешь делать, что хочешь.
Транспортный пакет — это не Source Code. _build нет. В лицензии сказано предоставь Source Code.

2. А иначе, если мы де-юре нехорошие люди, а ты такой красивый со своей странной «лицензией», как ты собрался продаваться в modstore.pro?
modstore.pro как услуга продавца. Тем кто хочет оплатить труд автора. Что-то я не догоняю суть претензии. GPL вроде распространять код под своей лицензией не заставляет. Ссылка на Source Code есть. Что мешает продаваться в modstore.pro?

Как говориться, или трусы надень, или крестик сними.
А вдруг я хочу голый под под лучами солнца позагарать? :-)
Александр Туниеков
29 марта 2016, 21:01
0
Ну мне не охота долго разбираться, но они должны предоставлять исходники. Вроде это:
Package providers are free for everyone, and we use the revenue from our Premium Extras to help sustain that service.
Не знаю, только купившим или вообще всем, но скорей всего у них это где-то прописано и учитывается.
На modstore.pro чувствуется, что GPL далеко не всем понятна. Возможно, и владельцу магазина. Умиляют авторы, что пишут что-то вроде «вот мы тут вам исходник предоставили, пожертвовали так сказать собой, можете ставить бесплатно». Просто по условиям GPL, они обязаны предоставить исходник пользователям и они могут свободно его изменять и свободно распространять. И дрюкнуть через суд их может любой пользователь.
Я пример просто привел. Мне зарабатывать на чужих багах нет желания. Я типо умный, гордый. Типо и так на хлеб с маслом себе заработаю :-).
Александр Туниеков
29 марта 2016, 20:13
0
Пример гарантий: запрещается создавать на основе свободной программы под GPL другой проект, не предоставляя его исходники пользователям. Таким образом, данная лицензия вовсе не позволяет делать с программами «что угодно», как могут ошибочно трактовать данную лицензию плохо знакомые с ней.
https://ru.wikipedia.org/wiki/GNU_General_Public_License
Александр Туниеков
29 марта 2016, 18:18
0
1) Ну, во первых, я довольно ленив и стремлюсь писать кратко и сжато. В итоге получаются обрывки мыслей — тезисы. Во вторых, я люблю попридумывать что-нибудь не стандартное и в процессе, незаметно для себя, сдвигаю значения понятий. Есть риск, что более разжеванное описание запутает читателя еще больше. Проще сделать подробное описание уже в процессе общения с заинтересованными собеседниками.
Надеюсь мои сложносочиненные предложения Вас не запутали ;-).

2) В принципе, я, думаю, людям можно доверять. Хотя, конечно, бывает разное, но, большая часть неблаговидных поступков, как я думаю, совершается либо из нужды либо при недостаточной информированности.
Например, лицензия MODx — GPL. Она требует, чтобы любое ПО производное от MODx было доступно всем для скачивания модифицирования и распространения. Де-юре, магазин modstore.pro уже сам по себе противоречит GPL. ПО не является свободно доступным для скачивания. Теоретически, я могу как пользователь ПО производного от MODx подать в суд магазин и отсудить энную сумму у магазина за нарушение магазином моих прав по лицензии GPL :-). К счастью, русская правовая система до таких извращений еще не дошла. Но в общем-то активно к ним стремиться.
Моя «лицензия» нацелена на то, чтобы вообще отвязать покупку и продажу ПО от правового поля. Умение доверять необходимо и для бизнеса и для общества в целом. Никакие договора отсутствие извратов не гарантируют. Строить доверительные отношения на принципе правового насилия изначально ущербно :-).
Александр Туниеков
29 марта 2016, 17:11
0
В чем потребность использовать dadata.ru и сливать им информацию о ком либо?
Хм… других способов сильно облегчить ввод данных я не знаю :-). И отключение от сервиса даже не предусмотрел. Хотя для параноиков, наверно, галочку стоит ввести.
В целом, спасибо. Титаническая работа.
Пожалуйста. Хотя эпитет титаническая работа удивляет. 3 месяца — это не так много, для путного компонента.
Александр Туниеков
20 декабря 2015, 23:08
0
Простите за язвительность. Раздражен был тем, что веллосипед делал. Проблема в том, что прежде чем писать, я потратил довольно много времени на поиск нужного компонента. И ничего не нашел… Искал на на русском. Английский меня раздражает. Вашу документацию сложно найти. Для новичка. До запроса modx двунаправленную синхронизацию данных еще додуматься надо. Конечно
Цель Gitify — обеспечить двунаправленную синхронизацию данных, обычно хранящихся в базе данных MODX, что позволит версионировать код через Git.
полное описание для посвященного в идеалогию git. Но если развернуть это предложение на пару абзацев, в поиске найти Gitify будет гораздо проще.

Для текущих задач, ChangePack мне подходит. Работает как и задумывался. Хотя интересно сделать лучше. Можно выделять на каждую копию сайта пул id и после создания ресурса перезаписывать его id разрешенным id. Возможно подойдет для 2-5 разработчиков. Но это уже без «версионировать код через Git». Неясно будет ли компонент полезным. И захотят ли его, например, купить :). Сейчас буду текущим проектом заниматься. Дорабатывать нет времени.
Александр Туниеков
20 декабря 2015, 16:21
0
Не факт ;). По задумкам, возможно, у меня бы получилось лучше :). Но пока Gitify не ставил. Еще не понятно как он работает. Документация на русском пока не айс.
Цель Gitify — обеспечить двунаправленную синхронизацию данных, обычно хранящихся в базе данных MODX, что позволит версионировать код через Git.
Умная фраза :). С налета не поймешь, что это такое Gitify умеет делать и зачем он нужен. Да и в поиске modx синхронизация копий сайта Gitify не отсвечивал :).
Ладно это я несколько раздражен. Зацепила ваша фраза :).
Можно несколько поподробней как Gitify разрешает конфликты с Id.
Так же с версии 0.9 Gitify build автоматически пытается решить проблему дублирования id и первичных ключей для контента и других объектов. Когда находится объект, первичный ключ которого (обычно это ID) уже существует, этот объект временно сохраняется в памяти. После полного завершения остальной сборки, включающей очистку, будет произведена попытка разрешить этот конфликт. В случае перемещения или переименования объекта/ресурса, благодаря очистке «старый» объект будет удален, в результате чего новый будет вставлен правильно. Если же конфликт на самом деле есть (возможно два разработчика добавили новый ресурс или объект в разных ветках), сохраненный в памяти объект будет вставлен с новым ID. Так же в этом случае для него будет запущена команда Gitify extract.
Ничего не понятно. С честь чего «объект временно сохраняется в памяти». Мм… это понял — билд же делается. Схема работы: с базы локального сайта делается extract в файлы Gitify, файлы Gitify синхронизируются с репозиторием git, другой разработчик синхронизирует репозиторий git со своими файлами Gitify и делает билд данных в свою копию сайта.
Интересно :). Только как быть с рабочим сайтом, который находиться где-то на хостинге где есть только apache и ftp. Как его обновлять?
сохраненный в памяти объект будет вставлен с новым ID. Так же в этом случае для него будет запущена команда Gitify extract.
Не слишком приятно :(. В коде может ссылка на id ресурса. При изменении его id нужно править код.
Александр Туниеков
20 декабря 2015, 03:36
0
Интересно :). Знал бы, не разрабатывал свой веллосипед :). Но свой велосипед пока удобнее, потом посмотрим…
Александр Туниеков
20 декабря 2015, 03:18
0
Ну лучшее враг хорошего. Сейчас мне пока такого хватает. Потом можно допилить. При закидывании на боевой сайт, Id ресурса перезаписывается. Если на боевом сразу кто-нибудь ресурсы создает, возникнет конфликт. У меня пока только я создаю новые ресурсы, и мне только следить, чтобы одновременно не писать на боевом и тестовом.
Вообщем, если дорабатывать компонент, нужно довольно много продумать. Когда буду и буду ли вообще я этим заниматься пока неясно :).