Сuriosity

Сuriosity

С нами с 19 марта 2015; Место в рейтинге пользователей: #170
Сuriosity
26 апреля 2018, 11:53
0
Верным решением, думаю, будет использование своего плагина, который будут обрабатывать нужные поля…
Благо есть не малый перечень событий…
Например, OnBeforeCommentSave
Сuriosity
01 августа 2017, 22:21
0
Если такой подход верный, то как такую проверку(редактирование) значения повесить на:
<textarea name="text" id="comment-editor" cols="30" rows="10" class="form-control"></textarea>
или на:
<input type="radio" name="val" value="1">
??
Сuriosity
01 августа 2017, 20:08
0
По поводу 1-го вопроса..
Правильный ли такой подход?
В чанке с формой, вместо:
<input type="text" name="my_value" value="[[+my_value]]" id="comment-my_value" class="form-control"/>
пишу:
<input type="text" name="my_value" value="[[+my_value:strip_tags]]" id="comment-my_value" class="form-control"/>
или
<input type="text" name="my_value" value="[[!mySnippetFilter? &val=`[[+my_value]]`]]" id="comment-my_value" class="form-control"/>
Сuriosity
15 июля 2017, 18:29
0
Александр, уж извините, но плагин в таком виде не годится.
Он не проверят на то, заполнен ли конкретный TV и сразу добавляет «images/»
В результате, если пользователь не заполнил это TV, в журнал ошибок придет что-то похожее на:
[2017-07-15 19:27:15] (ERROR @ mysite.com\core\model\phpthumb\modphpthumb.class.php : 121) phpThumb was unable to generate a thumbnail for: mysite.com\core\cache\phpthumb\mysite.com__srcc2ea3cdb3e01b45fbd73e8f6867b7c60_par0ba78bb0326502335f8683fdf331013a_dat0.jpeg
[2017-07-15 19:27:15] (ERROR @ mysite.com\core\model\phpthumb\modphpthumb.class.php : 133) Error outputting thumbnail:
OutputThumbnail() failed because !is_resource($this->gdimg_output) in file "phpthumb.class.php" on line 618
К тому же этот код не универсален. Например, здесь приходится жестко прописывать $directory.
Так же плагину можно указать только один TV ($tvName), а ведь похожих TV можете быть много.
Возможно стоит указать, чтоб переменная $directory получала автоматом baseUrl
А переменная $tvName имела тип массив…
Сuriosity
13 июля 2017, 20:40
0
Если вы про настройку TV и его параметр «Параметры вывода», то это никак не решает вопрос. Специально только-что еще раз проверил.
Сuriosity
13 июля 2017, 20:16
+1
Александр, спасибо!
Примерно через 1,5 часа после опубликования своего вопроса, я и сам обратил внимание, на то, что при работе с tv image, modx старается вставлять перед tv недостающий путь, добавляя baseUrl.
Учитывая, что pdoTools — сила, пришлось поискать как там решается вопрос с недостающим baseUrl при работе с TV
Так что, примерно через пол часа, в официальном мануале обнаружил еще и предусмотренный для этих случаев параметр "&prepareTVs".

Вопрос можно отметить как решенный, хоть и косвенно!

Но, все же, учитывая, что вопрос стоял:
Как сделать так, чтоб в TV поле «img_1», приходил полный путь (images/other/test.jpg)?
я решил поискать решения еще.
Мне хочется, чтоб в Базе данных TV для изображений и файлов содержали в себе полный путь.
Так что стал экспериментировать…

И как вариант решения, пока остановился на этом, в силу его простоты:
1) Создаю источник файлов
Имя: Images
basePath:
basePathRelative: Да
baseUrl:
baseUrlRelative: Да
allowedFileTypes: jpg,jpeg,png,gif
imageExtensions: jpg,jpeg,png,gif
skipFiles: .svn,.git,_notes,nbproject,.idea,.DS_Store,core,manager,assets,connectors,css,js

То есть, медиа источник «Images» будет отбращаться к корню сайта.
Но благодаря параметру «skipFiles», запретил показ папок: core,manager,assets,connectors,css,js
Ну а чтоб не было видно системных файлов и файлов-скриптов (.htaccess,config.core.php,index.php,robots.txt), то в параметре «allowedFileTypes» указываем, выводить только картинки.

Осталось решить вопрос, чтоб пользователь, использующий источник «Images», не мог загружать картинки в корень сайта. Для этого создаем плагин, который любезно предоставил Николай Ланец.

Теперь пользователь (тот же контент-менеджер), сможет видеть конкретную папку (в моем случае «images») с ее содержимым, ну а при выборе изображения в TV будет сохраняться полный путь.
Сuriosity
13 октября 2015, 01:53
0
Василий, спасибо!

Активационную ссылку просто так не создать.
Я так понял, что если просто так не создать, значит необходимо создать не про сто так…
Через несколько дней придется за деньги просить кого-то из сообщества создать такой компонент.
Уверен, что он понадобится не только мне да и не только в странах СНГ.
Да и разместив его на главном репозитории и на modstore.pro, увеличится популяризация как этого сообщества, так и MODX в целом.

P.S.
Приношу извинения за столь поздний ответ. Уезжал, не было возможности…

P.P.S.
По вашему компоненту Tickets тоже будет не мало «хотелок», не сложных, но важных. Сейчас, пока, собираю их в кучу, скоро буду к Вам стучаться!
Сuriosity
05 октября 2015, 01:56
0
Конечно же, я читал эту скудную документацию по Login…

То что Вы мне ответили, как я понимаю, это не то.

Сниппет «ConfirmRegister» – это обработчик. Когда пользователь кликает по активационной ссылке, то он приходит на страницу, где стоит этот ConfirmRegister. После чего ConfirmRegister решает правильная это активационная ссылка или нет. Если правильная, то сниппет активирует аккаунт пользователя.

Вот смотрите:
1) Страница регистрации

[[!Register?
    &submitVar=`registerbtn`
    &activationEmailTpl=`lgnActivateEmailTpl`
    &activationEmailSubject=`Спасибо за регистрацию!`
    &usergroups=`users`
    &submittedResourceId=`6`
    &activationResourceId=`7`
	&validate=`nospam:blank,
	username:required:minLength=^3^:maxLength=^20^,
	fullname:required:minLength=^1^:maxLength=^30^,
	email:required:email,
	password:required:minLength=^8^:maxLength=^30^,
	password_confirm:password_confirm=^password^`
	&placeholderPrefix=`reg.`
]]


<form action="[[~[[*id]]]]" method="post">
	<input type="hidden" name="nospam" value="[[!+reg.nospam]]">
	<input type="text" name="username" id="username" value="[[!+reg.username]]">
	<input type="text" name="fullname" id="fullname" value="[[!+reg.fullname]]">
	<input type="text" name="email" id="email" placeholder="yourmail@site.com" value="[[!+reg.email]]">
	<input type="password" name="password" id="password" placeholder="Пароль" value="[[!+reg.password]]">
	<input type="password" name="password_confirm" id="password_confirm" placeholder="Повторить пароль" value="[[!+reg.password_confirm]]">
	<input type="submit" name="registerbtn" value="Зарегестрироваться">
</form>
Где:

&activationEmailTpl — шаблон с письмом, которое отправится после удачной отправки формы регистрации. Именно в этом письме и будет активационная ссылка.
&submittedResourceId — страница, на которую перенаправит после удачной отправки формы регистрации. Здесь пишем что-то типа: На ваш email отправлено письмо ссылкой…
&activationResourceId — а вот, собственно, страница, на которой находится сниппет «ConfirmRegister». Именно на эту страницу перенаправит та самая ссылка, которую будущий пользователь кликнет в своем письме.

2) Страница 7 содержит:

[[!ConfirmRegister?
	&redirectTo=`11`
	&errorPage=`2`
]]
Где:
&redirectTo — страница, на которую перенаправит сниппет ConfirmRegister. И перенаправит туда только в том случае, если сниппет ConfirmRegister одобрил активационную ссылку.
&errorPage — здесь указан ID страницы, кторая является 404. Тоесть, для тех, кто зашел на активационную страницу(7) не по активационной ссылке, а напрямую — увидят 404 ошибку.

Так вот, меня же интересует:
Как реализовать страницу «Повторный запрос на отправку письма активации аккаунта» с формой, где пользователь может ввести свой email и нажав на кнопку «Отправить запрос», получит свою долгожданную ссылку на активацию? Желательно, чтоб можно было делать такой запрос на конкретный email раз в 3 часа.
Если совсем коротко, то: Как создать активационную ссылку?..
Но, все же, хотелось бы узнать как реализовать форму с двух инпутов (логин и кнопка), которая будет отправлять на указанный email (если он существует в базе) письмо с активационной ссылкой, но не более одного раза в 3 часа.
Сuriosity
26 августа 2015, 20:16
0
Василий, большое спасибо!
Я изначально говорил, что ошибка вылазит у меня… причем очень давно.

К сожалению, пока я не силен в php, но логически возникает вопрос…
Если при загрузке стандартным загрузчиком, нет проблем с превью, а с встроенным загрузчиком Tickets есть, то, возможно, проблему можно решить не только через настройку сервера, а и через код самого компонента.
P.S. Еще раз большое спасибо, что указали путь.
Сuriosity
26 августа 2015, 19:56
0
После загрузки картинки в Журнале ошибок появляется:
(в показанном тексте журнала заменил название сайта на несуществующий)
[2015-08-26 16:43:36] (ERROR @ /assets/components/tickets/action.php) [Tickets] Could not generate thumbnail for "/images/users/0/2864bbcc1411c5b43a6b64620d35be2bb0a2b3d8.jpg". Array
(
    [0] => phpThumb() v1.7.13-201406261000 in file "phpthumb.class.php" on line 220
    [1] => setCacheDirectory() starting with config_cache_directory = "/var/www/kraina3/kraina.tk/core/cache/phpthumb/" in file "phpthumb.class.php" on line 961
    [2] => setting config_cache_directory to realpath(/var/www/site12343/site1234.tk/core/cache/phpthumb) = "/var/www/site12343/site1234.tk/core/cache/phpthumb" in file "phpthumb.class.php" on line 989
    [3] => setSourceFilename(/tmp/tkt_vfvTqG) set $this->sourceFilename to "/tmp/tkt_vfvTqG" in file "phpthumb.class.php" on line 271
    [4] => Addding ImageMagick formats to $AvailableImageOutputFormats (text;ico;bmp;wbmp;gif;png;jpeg) in file "phpthumb.class.php" on line 919
    [5] => $AvailableImageOutputFormats = array(text;ico;bmp;wbmp;gif;png;jpeg) in file "phpthumb.class.php" on line 925
    [6] => $this->thumbnailFormat set to $this->config_output_format "jpeg" in file "phpthumb.class.php" on line 936
    [7] => $this->thumbnailFormat set to $this->f "jpeg" in file "phpthumb.class.php" on line 943
    [8] => $this->thumbnailQuality set to "90" in file "phpthumb.class.php" on line 953
    [9] => !$this->config_allow_src_above_docroot therefore setting "/tmp/tkt_vfvTqG" (outside "/var/www/site12343/site1234.tk") to null in file "modphpthumb.class.php" on line 307
    [10] => $this->sourceFilename set to "" in file "phpthumb.class.php" on line 849
    [11] => phpThumb() v1.7.13-201406261000
http://phpthumb.sourceforge.net

Error messages disabled.

edit phpThumb.config.php and (temporarily) set
$PHPTHUMB_CONFIG['disable_debug'] = false;
to view the details of this error in file "phpthumb.class.php" on line 4050
    [12] => !$this->config_allow_src_above_docroot therefore setting "/tmp/tkt_vfvTqG" (outside "/var/www/site12343/site1234.tk") to null in file "modphpthumb.class.php" on line 307
    [13] => SetCacheFilename() _src set from md5($this->sourceFilename) "" = "d41d8cd98f00b204e9800998ecf8427e" in file "phpthumb.class.php" on line 3443
    [14] => SetCacheFilename() _par set from md5(_bg000000_farC_zc1_h90_w120_dpi150_q90) in file "phpthumb.class.php" on line 3476
    [15] => starting ExtractEXIFgetImageSize() in file "phpthumb.class.php" on line 3236
    [16] => skipping GetImageSize() because $this->sourceFilename is empty in file "phpthumb.class.php" on line 3248
    [17] => GetImageSize("") failed in file "phpthumb.class.php" on line 3279
    [18] => $this->useRawIMoutput=false because "bg" is set in file "phpthumb.class.php" on line 1502
    [19] => $this->useRawIMoutput=false after checking $UnAllowedParameters in file "phpthumb.class.php" on line 1508
    [20] => ImageMagickThumbnailToGD() aborting because $this->sourceFilename is empty in file "phpthumb.class.php" on line 1552
    [21] => ImageMagickThumbnailToGD() failed in file "phpthumb.class.php" on line 3286
    [22] => SetOrientationDependantWidthHeight() starting with ""x"" in file "phpthumb.class.php" on line 3215
    [23] => SetOrientationDependantWidthHeight() setting w="120", h="90" in file "phpthumb.class.php" on line 3231
    [24] => EXIF thumbnail extraction: (size=0; type=""; 0x0) in file "phpthumb.class.php" on line 3343
    [25] => starting SourceImageToGD() in file "phpthumb.class.php" on line 3603
    [26] => Not using EXIF thumbnail data because $this->exif_thumbnail_data is empty in file "phpthumb.class.php" on line 3674
    [27] => $this->gdimg_source is still empty in file "phpthumb.class.php" on line 3726
    [28] => ImageMagickThumbnailToGD() failed in file "phpthumb.class.php" on line 3728
    [29] => phpThumb() v1.7.13-201406261000
http://phpthumb.sourceforge.net

Error messages disabled.

edit phpThumb.config.php and (temporarily) set
$PHPTHUMB_CONFIG['disable_debug'] = false;
to view the details of this error in file "phpthumb.class.php" on line 4050
    [30] => SourceImageToGD() failed in file "phpthumb.class.php" on line 351
)
Вот так выглядит в живую:
Сuriosity
26 августа 2015, 18:27
0
Поток твоих мыслей понятен и логичен, но если сравнить количество пользователей modx.pro и тех, кто оставляет комментарии и пишет вопросы, то, лично мне, видится, что: либо среди них 90% заядлые скрытные молчуны либо не плохие программисты, которым такие проблемы проблемами не являются…
P.S. Кста, на этой странице кроме меня еще два человека косвенно, но подтвердили проблему.
P.P.S. Я понял твою позицию, не буду больше беспокоить по этому вопросу.
Сuriosity
26 августа 2015, 18:15
0
Да я это сразу тогда и прочитал, просто пришлось пока прикрыть глаза на проблему, и заниматься более актуальными вопросами в разработке проекта с Tickets.
P.S. Судя по ответу, то проблема действительно скрывается в сервере. Но правильно ли это, если компонент для modx работает на одном сервере, но не работает на других?
Сuriosity
26 августа 2015, 18:07
0
Василий, приветствую!
К сожалению, проблема с генерацией thumb для изображений, загруженных при создании тикета (да и при редактировании черновика), все еще актуальна. Перепробовал все возможные версии Tickets (сейчас работаю с 1.6.6-pl), пробовал на двух разных хостингах и менял локальные сервера. Но проблема все та же…
Василий, просьба, найдите пару минут, посмотрите в этом направлении, может где-то что-то не оптимизировано или еще что… Ведь проблема же не только у меня. Да и нормально же создаются превью в стандартном загрузчике Modx…
Василий, если совсем на это нет времени, толкните хоть на тот путь, где искать решение трабла…
P.S. Загрузка изображений проходит в нормальном режиме, но не создаются миниатюры.
Сuriosity
19 августа 2015, 15:53
0
на версии modx 2.35 установка Tickets работает нормально!
Сuriosity
19 августа 2015, 15:36
0
Мои приветствия.
Установил modx 2.4, все компоненты хорошо установились кроме Tickets.
Установка виснет на «Trying to install pdoTools. Please wait...» или на Jevix
Пробовал устанавливать и pdoTools и Jevix до Тикетс, пробовал не устанавливать, а только загружать, в общем по-разному… результат один — виснет установка.

Василий, не знаю с чем связанно, возможно с версией modx 2.4, а может и с новой версией пдотулс, потому как до этого не было проблем.
Пожалуйста просветите.
Сuriosity
06 мая 2015, 08:03
0
Взять хотяб хабр… Ну да ладно, на вкус и цвет…

Василий, подскажите, как оптимальней реализовать вопрос, что чуть выше?
Василий, пожалуйста, подскажите, как в панели статистик, что под каждым тикетом, кроме всего прочего, вывести плейсхолдеры:
— рейтинг автора;
— количество лайков за посты автора;
— количество добавленных им в избранное;
— в общем те значения, что находятся в таблице tickets_authors.

Интересует, чтоб выводило в панелях как в общей ленте. Вызывая, например, так:
[[!pdoPage? &element=`getTickets` &tpl=`tpl_Tickets.list.row`]]

Так и в панели по самим тикетом. Вызывая, например, так:
[[!TicketMeta? &tpl=`tpl_Tickets.meta`]]

Вопрос, можно ли в вызове этих сниппетов, прописать какой-то параметр, который будет делать дополнительную выборку в таблице tickets_authors и отдавать соответствующие плейсхолдеры?
Если нет, то как оптимально это реализовать?
Сuriosity
06 мая 2015, 07:58
0
))) Ах ха ха!
Комментарий я оставил относительно применения голосования ко всем ресурсам. И всего лишь как вариант… достаточно гибкий вариант…
Но, судя по вашему саркастически-стёбному ответу, этот вариант совсем никудышный и совсем не рассматривается.
Сuriosity
05 мая 2015, 23:31
0
Как идея, если рейтинг будет считаться от значений, что указаны в TVпараметрах раздела или ресурса?
К примеру, из коробки создаются TVпараметры с уникальными названиями, например:
TVrateTickets, TVrateComments, TVrateStars,…
В значениях по умолчанию прописать уже какие-то балы.
А админ уже сам будет решать, в какие шаблоны включать все эти TVпараметры, а в какие нет. Так же он будет сам решать, какие значения будут в этих TV для каждого раздела или даже ресурса.
Ну а подсчет рейтинга всегда будет зависеть от значений в TVrateTickets, TVrateComments, TVrateStars…
Сuriosity
05 мая 2015, 22:43
0
Я так понял, сейчас получается, что таблица tickets_authors есть, но в сниппетах getTickets и TicketMeta не прописано к ней обращения и соответственно нет плейсхолдеров.
Если это так, то, возможно, стоит внести изменения?)
Это было бы логично, чтоб в панели под тикетами были не только: количество просмотров, количество голосов и звезд, но и рейтинг пользователя…
Сuriosity
05 мая 2015, 21:24
0
Как вариант.
Можно, если хочу вывести ленту тикетов, при вызове [[!pdoPage? &element=`getTickets` &tpl=`tpl_Tickets.list.row`]]
Использовать в шаблоне tpl_Tickets.list.row вызов еще одного сниппета
[[!pdoUsers?
&tpl=`tpl-user-meta-info`
&groups=`users`
&users=`-1,[[*createdby:userinfo=`id`]]`
&innerJoin=`{«AuthorProfile»:{«class»:«TicketAuthor»}}`
&sortby=`AuthorProfile.rating`
&sortdir=`DESC`
&select=`{«AuthorProfile»:"*"}`
]]

А если зайти на сам тикет, то под контентом вызвать не только [[!TicketMeta? &tpl=`tpl_Tickets.meta`]]
, а еще и pdoUsers.

Но, думается мне, это как-то уж совсем не оптимально…

Василий, подскажите как быть, направьте на правильный путь…