Organizations

Личный кабинет организаций.
Автор дополнения
touol
Пакетов
12
Закачек
972
Обычно отвечает в течение суток
Автор дополнения
Пакетов
12
Закачек
972
Обычно отвечает в течение суток
Версия 2.4.3-beta
Дата выпуска 03.08.2023
Загрузки 63
Просмотры 11 772
На php 8 не тестировалось
Organizations — Личный кабинет организаций для CMS MODx. К одной организации может быть привязано несколько пользователей MODX с разными правами на редактирование данных (документов) организации.
Личный кабинет организовывается с помощью Login.
В ЛК создается 3 страницы:
1 регистрация
[[$pageRegistration]]
2 профиль
<div class="loginMessage">[[+errors]]</div>
<br />
<div class="loginLogin">
    <div class="loginRegister">
        <a href="[[+logoutUrl]]" title="[[+actionMsg]]">[[+actionMsg]]</a>
    </div>
</div>
<div class='profile block'>
	<div class='right'>
		<div class="update-profile">
			[[!UpdateProfile? &submitVar=`login-updprof-btn` &excludeExtended=`nospam,login-updprof-btn`]]
			<form class="form" action="[[~[[*id]]]]" method="post">
			<input type="hidden" name="nospam" value="[[!+reg.nospam]]" />
			<div class="updprof-error">[[+error.message]]</div>
				<span>[[+login.update_success:if=`[[+login.update_success]]`:is=`1`:then=`[[%login.profile_updated? &namespace=`login` &topic=`updateprofile`]]`]]</span>
		</div>
		<span>Контактная информация</span>
		<div class='person'>
			
			<div class='info_point'>
					<div class='info_text'><text class='name'>Ф.И.О.*:</text></div>
					<input type="text" name="fullname" id="fullname" value="[[!+fullname]]" class="textfield" />
					<div class="error">[[!+error.fullname]]</div>
			</div>
			<div class='info_point'>
				<div class='info_text'><text class='name'>Адрес эл. почты*:</text></div>
				<input type="text" name="email" id="email" value="[[!+email]]" class="textfield" />
				<div class="error">[[!+error.email]]</div>
			</div>
			<div class='info_point'>		
				<div class='info_text'><text class='name'>Телефон:</text></div>
				<input type="text" name="phone" id="phone" value="[[!+phone]]" class="textfield" />
				<div class="error">[[!+error.phone]]</div>
			</div>
		</div>
		<input type="button"  class='update_pass' value="Обновить пароль" onclick="$(location).attr('href','smenit-parol.html');">
		<input type="submit"  class='edit' name="login-updprof-btn" value="Редактировать профиль">
		</form>
		<form class="form" action="[[~[[*id]]]]" method="post">
			<div class='bis'>
				<span>Данные организации:</span>
				[[!getDefaultUserOrg?]]	
			</div>
		</form>
	</div>
</div>
3 пользователи
Адрес polzovateli.html (В случае другого алиаса страницы отредактировать чанк editOrgOuter в строке )
на страницу поместить вызов сниппета:
[[!editOrgsUsers?]]

Пользователям Организации можно назначить группу прав. Группы прав редактируются в админке в настройках.
На страницах ЛК где нужно организовать проверку прав пользователя организации можно использовать сниппет checkAccess.
Например:
[[!checkAccess?
&access=`raschet_new`
&trueTpl=`page_new_raschet`
&falseMsg=`У Вас нет прав на создание расчета! Возможно Ваша учетная запись отключена в Вашей организации.`
]]
Здесь сниппет находит организацию пользователя и проверяет право на создание нового расчета.

В сниппета можно получить id организации пользователя с помощью следующего кода:
if (!$Orgs = $modx->getService('organizations', 'Organizations',$modx->getOption('organizations_core_path', null, $modx->getOption('core_path') . 'components/organizations/') . 'model/organizations/', $scriptProperties)) {
	return 'Could not load Organizations class!';
}
$userId = $modx->user->get('id');
//получить огр пользователя по умолчанию
$defaultOrg = $Orgs->getDefaultOrg($userId);

Реализовано:
  1. В форме регистрации пользователя на сайте и в админке, данные Организации загружаются с сервера DaData.
  2. После отправки формы регистрации, в каталог записываются данные Организации и создается связь между зарегистрированным пользователем MODx и Организацией.
  3. Данные Организации и ее связи с профилями пользователей редактируются в админке сайта (таблица OrgsUsersLink связывает таблицу Orgs с modUser, таблицей стандартного класса пользователей MODx).
  4. Пользователям Организации можно назначить группу прав. Группы прав редактируются в админке.
  5. Группа Администраторов Организации может редактировать права пользователей во фронтэнде и создавать инвайты (приглашения) для сотрудников организации на сайт. При регистрации пользователя с кодом инвайта, содается связь профиля пользователя с организацией и назначается группа прав, заданная при создании инвайта.
  6. Организации можно назначить менеджера и скидку. Менеджеры сайта могут самостоятельно зарегистрировать Организацию на сайте и отправить инвайт для контактного лица Организации. (Так удобнее. Можно сразу назначить скидку и нужные данные Организации. Пользователям остается только придумать свой логин, пароль и начинать работать. Ни менеджерам сайта, ни администраторам организации не нужно придумывать логины и пароли пользователей. И не нужно заботиться об их отправке пользователю и об их сохранности).
  7. При создании инвайта, его можно автоматически отправить на почту пользователя.
  8. В админке для организации можно создать купон, временную или разовую скидку, процентную или фиксированную.
Ссылка на демо http://z9233215.bget.ru/.
https://github.com/touol/Organizations.

Админка компонента:

Настройки:


Для работы с DaData.ru нужно ввести их ключ API в настройках системы. И там же, нужно указать ID групп менеджеров и ID групп пользователей.


Обсуждение компонента в сообществе MODX.PRO.

Поле скидка для организаций в пакете это просто поле. Для того чтобы скидки работали в минишопе нужно писать плагин.

2.4.3-beta Добавлено поле Юрлицо.

2.4.2-beta Исправлено пустые поля в форме редактирования организации в PHP 7.

2.4.1-beta Добавлена выгрузка организаций. Исправлено phptype=text. Адаптация под bootstrap 4. Исправлено «modAction support is deprecated»

2.3.2-beta Добавлен поиск по id организации.

2.3.1-beta Добавлен ввод данных организации через Dadata в регистрации.

2.3.0-beta Добавлена возможность регистрации как физического лица. Исправлены предупреждения в журнале ошибок.

2.2.4-beta Исправлена ошибка редактирования связи пользователя и организации менеджером. Добавлены сниппеты: orgsTVSelect Сниппет для вывода списка организаций в TV список. getOrgDataByID Простой сниппет для вывода данных организации.

2.2.2-beta

Последние обсуждения в сообществе MODX.pro