Всего 122 925 комментариев

Василий Наумкин
06 июля 2014, 19:17
0
Если включен парсер pdoTools, то можно просто
auth.html?hauth_return=/[[#request.q]]
Иначе своим сниппетом выводить $_REQUEST['q'].
Василий Наумкин
06 июля 2014, 19:12
0
[[*id]] не совсем верно использовать, ведь юзер может уходить на авторизацию с «виртуальной» страницы, типа modx.pro/users/630/comments/.

Если указать id, то он вернётся на modx.pro/users/, а не на /users/630/comments/.
Николай
06 июля 2014, 19:08
0
Я прописывал
/authorization/?hauth_return=[[*id]]
И ловил уже
if ($modx->context->key == 'ru' && $modx->resource->id == '220' && $modx->user->isAuthenticated($modx->context->key)) {
    $id=$_GET['hauth_return'];
    $url=$modx->makeUrl($id);
    $modx->sendRedirect($url);
}
Я хз, как прописать ссылку, поэтому использую id :)
Завтра обновлюсь, спасибо.
Василий Наумкин
06 июля 2014, 19:00
1
0
Прокралась ошибка — поторопился я. Исправил и перезалил пакет, можно еще разок обновиться.

Редирект работает просто — нужно зайти на страницу с формой авторизации по ссылке с указанным возвратом, например:
http://mysite.ru/auth.html?hauth_return=/thispage.html

Чтобы возвращать на текущую страницу, делаем так:
http://mysite.ru/auth.html?hauth_return=[[~[[+id]]]]
Николай
06 июля 2014, 15:56
0
Откатил БД. Заменил контроллеры на старые — заработало.
Николай
06 июля 2014, 15:23
0
Изменения только в форме регистрации? Я её вынес на отдельную страницу просто. Вот всё содержимое чанка:
<div class="row" id="office-auth-form">
	<div class="col-sm-offset-2 col-md-8 office-auth-register-wrapper">
		<h4>[[%office_auth_register]]</h4>
		<form method="post" class="form-horizontal" id="office-auth-register">
			<div class="form-group">
				<label for="office-auth-register-email" class="col-md-4 control-label">[[%office_auth_register_email]]</label>
				<div class="col-md-8">
					<input type="email" name="email" placeholder="" class="form-control" id="office-auth-register-email" value="" />
					<p class="help-block"><small>[[%office_auth_register_email_desc]]</small></p>
				</div>

				<label for="office-auth-register-password" class="col-md-4 control-label">[[%office_auth_register_password]]</label>
				<div class="col-md-8">
					<input type="password" name="password" placeholder="" class="form-control" id="office-register-form-password" value="" />
					<p class="help-block"><small>[[%office_auth_register_password_desc]]</small></p>
				</div>

				<input type="hidden" name="action" value="auth/formRegister" />
				<div class="col-sm-offset-4 col-sm-8">
					<button type="submit" class="btn btn-danger">[[%office_auth_register_btn]]</button>
				</div>
			</div>
		</form>
	</div>
</div>
Заполняю всё, кроме пароля — пишет пользователь не найден. Пользователь создаётся, письмо не приходит. Или я опять чёго-то не допонял?
ps редирект сам будет работать или к ссылке надо дописывать hauth_return=..id…? (просто вчера сделал редирект, убирать или как?)

ps вывел чанк tpl.Office.auth.login обновленный. Заполнил все поля регистрации, тоже Пользователь не найден.

Со старым чанком тоже не работат.
Николай
06 июля 2014, 14:38
0
Завелось, поехало. Василий, посмотрите пожалуйста, в этой части кода нету явных касяков?
for ($i = 0; $i < count($name); $i++) {
        unset($data);
    	$data['class_key'] = 'msProduct';
    	$data['context_key'] = 'web';
    	$data['parent'] = '567';
    	$data['template'] = '4';
    	$data['pagetitle'] = (string)$name[$i];
    	$data['longtitle'] = (string)$urls[$i];
    	$data['source'] = '2';
    	$data['published'] = '1';

if ($res = $modx->getObject('modResource', array('pagetitle' => $name[$i], 'context_key' => 'web'))) {
	$data['id'] = $res->get('id');
	$response = $modx->runProcessor('resource/update', $data);
	$upd++;
} else {
$response = $modx->runProcessor('resource/create', $data);
$add++;
}

        if ($response->isError()) { print_r($modx->error->failure($response->getMessage()).'<br />'); }
    }
Если из категории удалить все ресурсы, то по новой они добавятся с лёту, без проблем. Если же я удалю хотя бы 1 ресурс, то после выполнения кода недостающий ресурс не добавляется, за то на странице выведется 582 (столько ресурсов должно было обновится, + 583й должен был добавиться) раза Array
Я так понимаю это print_r($modx->error->failure($response->getMessage())
Но почему не выводится содержимое массива?
Василий Наумкин
06 июля 2014, 13:39
0
Обновись на последнюю версию, я там добавил всё, что нужно.

Описание на этой же странице, в конце заметки. Для работы username и fullname нужно обновить чанк формы авторизации.
Василий Наумкин
06 июля 2014, 13:38
0
Включи вывод ошибок, должно что-то быть вместо белой страницы:
ini_set('display_errors', 1);
ini_set('error_reporting', -1);
Николай
06 июля 2014, 12:48
0
Наверное что то идет не так.

По скольку мой любимый ресурс из за постоянных изменений становится не любимым, я хочу забрать от туда свою базу фильмов.

<?php
$i = 1;
$content = file_get_contents('http://bloodvirus.imhonet.ru/content/films/rates/');
$pattern = '~data-content="Следующая(.*?)</span>~is';
while (preg_match($pattern, $content, $matches)) {
    
    $content = file_get_contents('http://bloodvirus.imhonet.ru/content/films/rates/?page='.$i);
    preg_match_all('~<div class="m-inlineitemslist-describe-h2">(.*?)</a>~is',$content,$result);
    
    foreach($result[0] as &$v) {
        $v = trim(strip_tags($v));
        $v=trim(substr($v,0,strlen($v)-25));
       $name[] = $v; 
    }
    preg_match_all('~<div class="m-inlineitemslist-describe-h2">.*?href="(.*?)"~is',$content,$result);
 
    foreach($result[1] as &$v) {
       $urls[] = $v; 
    }
$i++;
}

$add = 0;

    for ($i = 0; $i < count($name); $i++) {
        unset($data);
    	$data['class_key'] = 'msProduct';
    	$data['context_key'] = 'web';
    	$data['parent'] = '567';
    	$data['template'] = '4';
    	$data['pagetitle'] = $name[$i];
    	$data['longtitle'] = $urls[$i];
    	$data['source'] = '2';
    	$data['published'] = '1';
        $response = $modx->runProcessor('resource/create', $data);
        if ($response->isError()) { print_r($modx->error->failure($response->getMessage()).'<br />'); }
        $add++;
    }


echo "<br />Возможно добавлено фильмов: $add;";
Но если я добавляю условие:

if ($res = $modx->getObject('modResource', array('pagetitle' => $name[$i], 'context_key' => 'web'))) {
	$data['id'] = $res->get('id');
	$response = $modx->runProcessor('resource/update', $data);
} else {
$response = $modx->runProcessor('resource/create', $data);
}
То на выходе я имею белую страницу, без каких либо выводимых ошибок. Даже если весь перебор массива воткнуть в try. Я что то не так сделал?
Николай
06 июля 2014, 11:41
0
Замечал, но в голове с языком как-то не связывалось
Василий Наумкин
06 июля 2014, 11:33
0
А ты никогда не замечал, что чекбоксы, селекты и инпуты в разных браузерах отображаются по разному? Поле выбора файла — это как раз инпут.

Есть отдельный вид геморроя верстальщиков — сделать так, чтобы все эти элементы везде выглядели одинаково, невзирая на браузер.
Василий Наумкин
06 июля 2014, 11:18
0
Смешно.

Это браузер рисует, в зависимости от языка твоей операционной системы.
Николай
06 июля 2014, 10:26
0
Ещё в профиле в en контексте остаются кириллицей кнопка Обзор и надпись Файл не выбран. Где поменять не нашёл.
Василий Наумкин
06 июля 2014, 09:58
0
Email как имя пользователя — ставлю Нет все равно подставляет в Графу Имя e-mail.
Если эта опция отключена, то юзер может изменить своё имя в редактировании профиля. Оно не будет заменяться принудительно на email.

Но когда он регистрируется, username нет, поэтому туда подставляется email. Кстати говоря, можно в форме регистрации добавить поле username, тогда оно должно добавляться сразу.

Может оставлять в этом поле то, что до знака @, а остальное вырезать? И имя понятное будет и почта нигде не светится.
Плагином на сохранение юзера можно делать что угодно, в том числе и менять имя.

Подумаю, возможно стоит сделать так по умолчанию.
Николай
06 июля 2014, 09:07
0
кажись последний вопрос: в настройках опция Email как имя пользователя — ставлю Нет все равно подставляет в Графу Имя e-mail.
Как-то не хочется светить почты пользователей, а много где username стоит как alt=«username», а может и ещё где теперь уж не вспомнить.
Может оставлять в этом поле то, что до знака @, а остальное вырезать? И имя понятное будет и почта нигде не светится.