Сергей Шлоков

Сергей Шлоков

С нами с 31 января 2013; Место в рейтинге пользователей: #5
11 апреля 2015, 11:47
0
Например, тут. Или тут. В официальной документации в разных разделах есть примеры.
11 апреля 2015, 11:00
0
Получается что так.
11 апреля 2015, 08:38
0
Тебе уже понятно, что условие
'Profile.photo:!=' => "nophoto.jpg"
не будет работать?
Правильно будет
'Profile.photo:NOT LIKE' => "%nophoto.jpg",
Дальше. Тебе нужно всего 2 поля — username и fax. Так и пишем.
$q = $modx->newQuery('modUser');
$q->setClassAlias('User');
$q->innerJoin('modUserProfile', 'Profile');
$q->select('User.id,User.username,Profile.fax');
$q->where(array(
    'Profile.photo:NOT LIKE' => "%normal",
));
$users = $modx->getCollection('modUser', $q);
foreach ($users as $user) {
	echo $user->username,'[br]';
	// Сохраним fax в переменной $fax, а не в $rating
	$fax=$user->fax;
}
П.С. Тег [br] измени на правильный.
10 апреля 2015, 22:38
+1
Вы помогаете мне стать лучше
Прям рекламный слоган. Ну раз настрой позитивный, то продолжим.
Давай посмотрим, что там в поле photo есть
$q = $modx->newQuery('modUser');
$q->select('Profile.photo');
$q->innerJoin('modUserProfile', 'Profile');
$result = $modx->getCollection('modUser', $q);
foreach ($result as $user) {
	echo $user->photo.'
';
}
Есть что-то кроме «nophoto.jpg»
10 апреля 2015, 19:21
+2
Мда. Как же это можно написать такой код, когда и тут, а на rtfm.modx.com и на bezumkin.ru куча примеров и образцов.
Внутри foreach переменная $user перебивается — была объектом modUser, а стала modProfile. А обращение идет как к modUser.
Зачем нужен селект, если username можно получить просто
$myusername = $user->username;
А это чтоб врагов запутать?
$rating = $user->get('fax');
Ужас, ужас.
10 апреля 2015, 14:03
+1
Да тоже самое, только не со стороны ресурса, а со стороны TV.
Можно, например, и так.
$val = $captionTv->getValue($modx->resource->id);
Но тогда значение получится необработанное. Т.е. вместо картинки — путь, вместо даты — timestamp и т.п.
10 апреля 2015, 13:42
+1
Странно.
Попробуй заменить
$val = $modx->resource->getTVValue($tvID);
на
$val = $captionTv->renderOutput($modx->resource->id);
10 апреля 2015, 13:26
0
Потому что внутри класса обращаться надо через this.
$this->modx->user->get('id')
10 апреля 2015, 13:16
0
А вот тут можно поспорить. Глядя на тот же код, можно заметить недокументированную возможность указывать свой путь к файлам.
В системных настройках нужно указать свой путь в параметре mycalendar.assets_url и, соответственно, css и js файлы будут доступны по новому пути — «новое значение/css/» и «новое значение/js/». И пожалуйста, подключай свои файлы.
Это к разговору о разработчиках. Для простого админа это не очень прозрачно.
10 апреля 2015, 12:49
0
… но ведь же можно оставлять исходники, а рядом класть сжатый файл и подключать его...
Согласен.
10 апреля 2015, 09:44
0
А что мешает человеку, уже знающему мобильный телефон, позвонить после 17-00? Мне кажется логичнее сделать что-то типа «Не дозвонились? Оставьте телефон, мы Вам перезвоним».
10 апреля 2015, 09:10
0
Ваше решение на основе jquery.weekcalendar. Он не обновляется уже несколько лет. Плюс у него возможностей поменьше. Мне больше fullCalendar понравился.
10 апреля 2015, 09:00
+1
Наверно.
А вообще это решение — вырезка из дополнения, которое я щас заканчиваю по заказу знакомого — с авторизацией, неограниченным количеством календарей с интерфейсом в админке, уведомлением пользователя на сайте и по почте, повторением событий. В дальнейшем хочет назначать задачи пользователям и следить за исполнением.

10 апреля 2015, 08:34
+1
Все кому не лень. :)
Если нужно разрешить редактировать только авторизованным, то в сниппет перед перед сохранением параметров в сессию можно дописать условие
if (!$modx->user->isAuthenticated($modx->context->get('key'))
	$scriptProperties['readOnly'] = true;
Тогда неавторизованный пользователь может только любоваться. :)
10 апреля 2015, 08:05
0
Я так понял, что ты начал с fullCalendar, а закончил eventCalendar2.
09 апреля 2015, 08:59
+2
Поправил, но не везде. :)
В 7 строчке сниппет проверяет авторизован ли пользователь в админке
Не в админке, а в текущем контексте.
Если уж ты предложил это как готовое решение, то нужно докрутить до универсальности. Например, так, с учетом предложения Виталия вызывать сниппет перед сниппетом TicketForm:
<?php
$ctx = $modx->context->get('key');
if (!$modx->user->isAuthenticated($ctx)) {
	$username = 'ticketUser';
	$password = '********';
	$data = array(
		'username' => $username
	,'password' => $password
	,'rememberme' => 0
	,'login_context' => $ctx
	);
	$response = $modx->runProcessor('/security/login', $data);
	if ($response->isError()) {
		$modx->log(modX::LOG_LEVEL_ERROR, 'login error. Username: '.$username.', Message: 	'.$response->getMessage());
	}
}
09 апреля 2015, 07:32
0
переходя на страницу с созданием тикета мы авторизуем пользователя в админке
Почему в админке, если указан контекст web?
$data = array(
    'username' => $username
    ,'password' => $password
    ,'rememberme' => 0
    ,'login_context' => 'web'
);
Отсюда вытекает проблема. Данное решение не работает в других контекстах. Например, [ru] и [en].
08 апреля 2015, 17:48
0
Во первых, я говорил про внутренние кавычки. Во вторых, в сниппете getcontextkey вообще нет никакой необходимости. Ты запрашиваешь текущий контекст, а его можно получить и в Getkeybycontext.
08 апреля 2015, 17:16
0
[[!ClubInstagram_id? &keyins = `[[!getKeyByContext? &context=`[[getcontextkey]]` &key=`social_in_group`]]`]]
Проблемы с кавычками. Они ломают вызов. Попробуй заменить на ^.
Плюс очень сложный запрос.
[[getcontextkey]] — это сниппет или значение?