Мультиязычный опрос xPoller2
Всем привет, хочу показать вам мою первую переделку чужого компонента. Исходный компонент называется xPoller, разработчиком является Илья Уткин. Большое спасибо ему за компонент, разбирал устройство компонентов Modx и до сих пор разбираю на этом компоненте. Еще выражаю благодарность Василию Наумкину за курс по разработке компонентов на Modx Revo.
Что я переделал?
1. Сделал возможность голосования всеми пользователям, не только авторизованным.
2. Теперь если не указывать параметр &id, то выводится последний добавленный опрос. Простой вызов: [[!xPoller2]]
3. Поддержка мультиязычности. Для этого использовал лексиконы. Добавлена 3-я вкладка «Лексиконы», в которой можно редактировать все эти лексиконы. (Подсмотрено в компоненте UserProfile2) Для каждого вопроса и варианта ответов создаются соответствующие лексиконы в новом топике «translations», который редактируется в этой новой вкладке. При удалении вопроса удаляются и лексиконы этого вопроса.
Добавлена еще одна настройка xpoller2_culturekeys_list, в которой через запятую я указывал culturekeys языков.
Ссылка на компонент
Что я переделал?
1. Сделал возможность голосования всеми пользователям, не только авторизованным.
2. Теперь если не указывать параметр &id, то выводится последний добавленный опрос. Простой вызов: [[!xPoller2]]
3. Поддержка мультиязычности. Для этого использовал лексиконы. Добавлена 3-я вкладка «Лексиконы», в которой можно редактировать все эти лексиконы. (Подсмотрено в компоненте UserProfile2) Для каждого вопроса и варианта ответов создаются соответствующие лексиконы в новом топике «translations», который редактируется в этой новой вкладке. При удалении вопроса удаляются и лексиконы этого вопроса.
Добавлена еще одна настройка xpoller2_culturekeys_list, в которой через запятую я указывал culturekeys языков.
Ссылка на компонент
Поблагодарить автора
Отправить деньги
Комментарии: 68
Если это переделка чужого компонента, то странно называть его именем этого компонента, добавляя цифру 2.
Это как если кто-то выпустит форк miniShop2 под названием miniShop3 — я бы офигел.
Это как если кто-то выпустит форк miniShop2 под названием miniShop3 — я бы офигел.
Хороший компонент получился. Часто требуется в моей работе с мультиязыками. Переименовать, конечно, неплохо бы опираясь на свою фантазию. Тем не менее, спасибо за труд!
Если Илья не против, то я оставлю так как есть. Если же ему не хочется, чтобы компонент так назывался то переименую все там. Факт в том, что он мне помог, и поэтому я так его назвал, тем более компонент давно не поддерживался.
Надеюсь он увидит этот пост и откоментит.
Надеюсь он увидит этот пост и откоментит.
Николай, здравствуйте. Не могу написать вам на почту. Сайт не разрешает, поэтому пишу тут. Можете связаться со мной? Есть вопрос по поводу компонента xPoller2. Связаться со мной можно через профиль на этом сайте. Заранее спасибо.
Николай, а вы свои доработки не пробовали отправлять в оригинальный компонент? xPoller лежи на Гитхабе (https://github.com/ilyautkin/xPoller), я не думаю, что автор отказался бы принять ваши коммиты.
Гитхаб только осваивал, поэтому делал все с нуля делал. Мне в дальнейшем будет удобнее вносить правки. Да и Илья не против, написал на почту.
Добрый день, на одной странице несколько вызовов работают?
Нет, пока не работает. Сделаю, спасибо за вопрос=)
Готово, теперь можно несколько опросов делать на странице. Вроде отправил на modstore.pro, скоро можно обновить до версии 0.0.2
Спасибо за обновленный компонент )) пошел сносить старый
Подскажите как сделать только для зарегистрированных ?? проблема в том что я захожу с нового браузера новым пользователем и уже нет возможности голосовать.
1. В будущем сделаю параметр который отвечает за то, чтобы можно было выбирать. Пока так.
2. Дело в том, что там записывается IP в базу. Это сделано из соображений безопасности, чтобы защититься от накруток. Я тестирования я использую браузер «Тор», он меняет IP.
2. Дело в том, что там записывается IP в базу. Это сделано из соображений безопасности, чтобы защититься от накруток. Я тестирования я использую браузер «Тор», он меняет IP.
Спасибо буду ждать, пока сделал через phx, такой параметр очень нужен, я делаю принудительный опрос среди пользователей со скрытыми результатами, хоть пользователи тором не пользуются, но зато юзают сайт с разных устройств.
Обновил, чтобы можно было голосовать только авторизованным надо выставить allowGuest=`0`, по умолчанию 1
)))) Спасибо огромное, отличный компонент!
Николай, я конечно извиняюсь за то что отнимаю у вас время, но не могу не спросить! Планируете сделать возможность выбрать в вопросе сразу несколько вариантов ответа? если нет, намекните пжл. где подправить?
Не планировал, но идея прикольная. Чуть позже сделаю. Может через параметр какой-то. Чтобы можно было указать параметр и вопрос становился мультивариантным.
Кстати, у вопросов уже есть такой параметр — type
Вот у этих товарищей surveymonkey при выборе варианта с несколькими ответами type меняется с radio на checkbox, можно использовать такой же принцип
Странно, когда голосую — возвращает весь код страницы на том месте, где были варианты ответов вместо результатов голосования. Через Феном не работает?
Хмм… Да, дело в феноме. Или в сниппете раз он не работает в феноме.
Планируешь поправить это дело? Сейчас Феном обретает популярность и я думаю не очень хорошо, если твой компонент не будет заводится из под Фенома.
Планирую=)
Тут временное решение: https://modx.pro/help/6356/
Тут временное решение: https://modx.pro/help/6356/
Спасибо, что скинул ссылку, которую я тебе скинул в скайпе. :)
А у меня такой вопрос — есть вариант как-то крепить один и тот же опрос к разным страницам?
к примеру, есть страница некоего заведения — на ней опрос, как вам в этом заведении понравилось.
на другой странице — точно такой же про другое заведение.
понятно, что можно создать бесконечное множество опросов и вручную их крепить к заведениям, но… )
к примеру, есть страница некоего заведения — на ней опрос, как вам в этом заведении понравилось.
на другой странице — точно такой же про другое заведение.
понятно, что можно создать бесконечное множество опросов и вручную их крепить к заведениям, но… )
… но так это только и решишь… :)
Спасибо за компонент, но есть два вопроса:
1. Как его устанавливать? Ставил отсюда: modstore.pro/packages/other/xpoller2
Но что оттуда, что с гитхаба по ссылке выше github.com/rjkz/xPoller2 файл оформления main.css пустой. Самому дописывать? Если да, то вопрос отпадает, но что тогда с последующими обновлениями?
2. Вопрос с множественным выбором. Был бы лично очень признателен за реализацию.
1. Как его устанавливать? Ставил отсюда: modstore.pro/packages/other/xpoller2
Но что оттуда, что с гитхаба по ссылке выше github.com/rjkz/xPoller2 файл оформления main.css пустой. Самому дописывать? Если да, то вопрос отпадает, но что тогда с последующими обновлениями?
2. Вопрос с множественным выбором. Был бы лично очень признателен за реализацию.
Сокро сделаю с множественным, все никак не доберусь. Стилей нет потому, что там бутстраповские классы. Если бутстрап не подключен, то нужно самому дописывать нужные стили.
Сижу пол дня и понял что реально ошибка в safari из за функции
assets/components/xpoller2/js/web/default.js -> parent.html(html);
В других браузерах идеально, работает и сейчас буду пробовать прикрутить капчу, а то у меня уже за 5 минут 80 голосов накрутили
Если я не ошибаюсь, то только в сафари есть глюк нельзя проголосовать, дублируется страница в опроснике
Спасибо, посмотрю.
На днях обновлю. Сделал опросы с множественным вариантом ответов и чтобы аякс отправлялся в файл а не в сниппет.
На днях обновлю. Сделал опросы с множественным вариантом ответов и чтобы аякс отправлялся в файл а не в сниппет.
Обнови пожалуйста быстрее у меня идёт опрос на мисс 2015 Нижний Новгород и люди очень жалуются и меня клиенты теребят
Обновил.
Не проверял в сафари только.
Не проверял в сафари только.
Всё помогло, глюк исчез, можешь смело писать что исправил глюк на браузерах сафари))) Спасибо тебе большое!!! Осталось мне прикрутить капчу к анонимному опроснику и будет всё ок, а то сильно накручивают, мой совет будет возможность добавь в опросник капчу, ещё раз спасибо!!!
Есть в наше время такие сервисы, вроде антигейт/антикапча, которые позволяют при помощи миллиона маленьких китайцев обойти капчу. Думаю, если кому-то нужно будет накрутить, ежели он умудрился обойти проверку по IP, — то и обойдёт проверку по капче.
Вообще к капче отношусь очень скептически. С одной стороны при должном подходе она не поможет, с другой стороны она очень раздражает. На хабре проскакивали интересные идеи, которые можно было бы использовать вместо надоедливой капчи. При желании это дело можно откопать.
Вообще к капче отношусь очень скептически. С одной стороны при должном подходе она не поможет, с другой стороны она очень раздражает. На хабре проскакивали интересные идеи, которые можно было бы использовать вместо надоедливой капчи. При желании это дело можно откопать.
Спасибо огромное, получился отличный компонент,
Обновите пожалуйста компонент для версии MODX Revolution 2.4.2, очень хочется его использовать, но не могу установить, его нет в каталоге дополнений.
У меня получается с качать с версии 2.4.2
Странно, проверил на трех разных сайтах на трех разных площадках и сделанных в разное время, нигде не отображается(((
репозиторий не modstore.pro вроде
Во вкладе Тестирование при попытке создать вопросы к тесту вываливается 500 ошибка.
в браузере ссылка имеет следующий вид: ?a=8&action=questions&test=1
В общем в файле core/components/xpoller2/controllersquestions.class.php переименовал XpollerQuestionsManagerController в Xpoller2QuestionsManagerController в двух местах и вроде всё заработало.
в браузере ссылка имеет следующий вид: ?a=8&action=questions&test=1
Fatal error: Class 'Xpoller2QuestionsManagerController' not found in /home/w/------/public_html/core/model/modx/modmanagercontroller.class.php on line 973
В общем в файле core/components/xpoller2/controllersquestions.class.php переименовал XpollerQuestionsManagerController в Xpoller2QuestionsManagerController в двух местах и вроде всё заработало.
Спасибо, скоро обновлю!
Для тестирования в варианты ответа не плохо было бы добавить поле типа Вес ответа, а то тест пройдут, а как результат посчитать непонятно
Подскажите пожалуйста в каком направлении копать. Периодически слетает оформление в результатах. Вернее, значение width у background'a. А ещё вернее, значение percentVotes присваивается равным нулю. Как следствие, происходит выравнивание по левому краю и отсутствие заполнения фоном. Как-то так:
Заранее спасибо.
Заранее спасибо.
Такая же проблема, допер почему происходит, но еще не копался как исправить, а происходит потому, что когда высчитываются проценты заполнения, они записываются как «width: 37,21%» а дробные проценты корректно записывать не через запятую, а через точку, если поменять запятую на точку, то все работает корректно.
Если кто найдет время и покапает как исправить, буду рад если поделитесь решением.
Если кто найдет время и покапает как исправить, буду рад если поделитесь решением.
Решение: в сниппете xpoller2 в строке 123 заменить строчку:
Или более простое, убрать дробление на сотые процентов, просто убрать двойку, т.е. заменить на:
$option['percentVotes'] = round($option['votes'] / $output['maxVotes'] * 100, 2);
на:$fixpercent = round($option['votes'] / $output['maxVotes'] * 100, 2);
$option['percentVotes'] = number_format($fixpercent, 2, '.', '');
Или более простое, убрать дробление на сотые процентов, просто убрать двойку, т.е. заменить на:
$option['percentVotes'] = round($option['votes'] / $output['maxVotes'] * 100);
Как вывести статистику отдельно
Здравствуйте. Создаю тестирование вызываю на странице по iD. Обновляю, «Вопрос не найден». С голосованием проблем нет. Может тестирование как то хитро вызывать нужно?
Ошибки:
(ERROR @ /assets/components/xpoller2/action.php) No class specified for loadClass
(...)xpAnswer::load() is not a valid static method.
(...)Could not load class: xpAnswer from mysql.xpanswer.
По одному вопросу можно вызывать так же по ид. Нельзя вызвать по общему ид все вопросы? Получилось только по одному
xpoller2test нет в списке сниппетов админки. Может кто нибудь ответить, работает или нет тестирование?
Привет, нет, не работает.
Доброго времени! Спасибо за ответ.
Николай.
подскажите, как можно вывести результаты всех опросов «xPoller2» через pdoResource, например
подскажите, как можно вывести результаты всех опросов «xPoller2» через pdoResource, например
del
Как-то странно голоса подсчитываются, не делится на общее кол-во голосов по каждому варианту ответа. Там где должно быть 50% там 100%, а там где 25% там по 50%
Проблема решается следующим образом:
1. Копируете снипет xPoller2 и переименовываете.
2. Находим строчку 112:
1. Копируете снипет xPoller2 и переименовываете.
2. Находим строчку 112:
foreach ($options as $option) {
$output['maxVotes'] += $option['votes'];
//if (empty($output['maxVotes'])) $output['maxVotes'] = $option['votes'];
//if ($output['maxVotes'] < $option['votes']) $output['maxVotes'] = $option['votes'];
}
3. Коментируем оба условия и вписываем сложение голосов.
появится ли возможность завершать опросы?
Нет, скоро сделаю другую версию компонента, как появится свободное время. На github давно висит заготовка, в ней учту этот момент. Если не забуду =)
Здравствуйте!
Очень хороший компонент, но никак не могу отключить привязку к IP, так как необходимо привязать к своему методу проверки. allowGuest=1 не помогает.
Очень хороший компонент, но никак не могу отключить привязку к IP, так как необходимо привязать к своему методу проверки. allowGuest=1 не помогает.
Там надо править сниппет и файл action.php. &allowGuest не влияет на привязку по IP
Извиняюсь, неправильно написал. allowGuest=0 не помогает.
Спасибо за быстрый ответ.
Подскажите, как поправить эту ошибку?
http://picplus.ru/img/1806/11/34d0d93d.png
http://picplus.ru/img/1806/11/34d0d93d.png
Товарищи, как избавиться от такой ошибки?
Fatal error: Class 'Xpoller2QuestionsManagerController' not found in .../core/model/modx/modmanagercontroller.class.php on line 943
Возникает после создания тестирования и попытки открыть пункт с вопросами.
MODX Revolution 2.6.3-pl
Fatal error: Class 'Xpoller2QuestionsManagerController' not found in .../core/model/modx/modmanagercontroller.class.php on line 943
Возникает после создания тестирования и попытки открыть пункт с вопросами.
MODX Revolution 2.6.3-pl
Компонент не работает на 2.6.5, пишет «Ошибка сохранения лексикона» и ничего нельзя сделать…
Столкнулся с накруткой голосов. Отправив следующий запрос — ...../assets/components/xpoller2/action.php?qid=21&oid[]=97&xp_action=answer, с нужным количеством голосов, нужным id опроса и id вопроса, можно это осуществить. Не подскажите как решить проблему?
А не подскажите как вывести в процентах количество проголосовавших? Сейчас выводит просто, сколько человек проголосовали за вариант, а хотелось бы в процентах выводить.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.