Мультиязычный опрос xPoller2

Всем привет, хочу показать вам мою первую переделку чужого компонента. Исходный компонент называется xPoller, разработчиком является Илья Уткин. Большое спасибо ему за компонент, разбирал устройство компонентов Modx и до сих пор разбираю на этом компоненте. Еще выражаю благодарность Василию Наумкину за курс по разработке компонентов на Modx Revo.

Что я переделал?

1. Сделал возможность голосования всеми пользователям, не только авторизованным.
2. Теперь если не указывать параметр &id, то выводится последний добавленный опрос. Простой вызов: [[!xPoller2]]
3. Поддержка мультиязычности. Для этого использовал лексиконы. Добавлена 3-я вкладка «Лексиконы», в которой можно редактировать все эти лексиконы. (Подсмотрено в компоненте UserProfile2) Для каждого вопроса и варианта ответов создаются соответствующие лексиконы в новом топике «translations», который редактируется в этой новой вкладке. При удалении вопроса удаляются и лексиконы этого вопроса.
Добавлена еще одна настройка xpoller2_culturekeys_list, в которой через запятую я указывал culturekeys языков.

Ссылка на компонент
Николай Загумённов
23 октября 2015, 01:07
modx.pro
1
5 841
+8
Поблагодарить автора Отправить деньги

Комментарии: 68

Василий Наумкин
23 октября 2015, 04:10
+4
Если это переделка чужого компонента, то странно называть его именем этого компонента, добавляя цифру 2.

Это как если кто-то выпустит форк miniShop2 под названием miniShop3 — я бы офигел.
    Павел Гвоздь
    23 октября 2015, 08:03
    0
    Хороший компонент получился. Часто требуется в моей работе с мультиязыками. Переименовать, конечно, неплохо бы опираясь на свою фантазию. Тем не менее, спасибо за труд!
      Николай Загумённов
      23 октября 2015, 09:56
      +3
      Если Илья не против, то я оставлю так как есть. Если же ему не хочется, чтобы компонент так назывался то переименую все там. Факт в том, что он мне помог, и поэтому я так его назвал, тем более компонент давно не поддерживался.
      Надеюсь он увидит этот пост и откоментит.
        Иван Бондаренко
        24 октября 2015, 13:12
        0
        Николай, здравствуйте. Не могу написать вам на почту. Сайт не разрешает, поэтому пишу тут. Можете связаться со мной? Есть вопрос по поводу компонента xPoller2. Связаться со мной можно через профиль на этом сайте. Заранее спасибо.
          Антон Пастухов
          24 октября 2015, 17:29
          0
          Николай, а вы свои доработки не пробовали отправлять в оригинальный компонент? xPoller лежи на Гитхабе (https://github.com/ilyautkin/xPoller), я не думаю, что автор отказался бы принять ваши коммиты.
            Николай Загумённов
            24 октября 2015, 18:12
            0
            Гитхаб только осваивал, поэтому делал все с нуля делал. Мне в дальнейшем будет удобнее вносить правки. Да и Илья не против, написал на почту.
            Jury
            26 октября 2015, 12:28
            0
            Добрый день, на одной странице несколько вызовов работают?
              Николай Загумённов
              26 октября 2015, 21:48
              +2
              Нет, пока не работает. Сделаю, спасибо за вопрос=)
                Николай Загумённов
                26 октября 2015, 23:00
                +2
                Готово, теперь можно несколько опросов делать на странице. Вроде отправил на modstore.pro, скоро можно обновить до версии 0.0.2
                  Jury
                  27 октября 2015, 09:05
                  0
                  Спасибо за обновленный компонент )) пошел сносить старый
                Jury
                27 октября 2015, 13:54
                0
                Подскажите как сделать только для зарегистрированных ?? проблема в том что я захожу с нового браузера новым пользователем и уже нет возможности голосовать.
                  Николай Загумённов
                  27 октября 2015, 23:19
                  0
                  1. В будущем сделаю параметр который отвечает за то, чтобы можно было выбирать. Пока так.
                  2. Дело в том, что там записывается IP в базу. Это сделано из соображений безопасности, чтобы защититься от накруток. Я тестирования я использую браузер «Тор», он меняет IP.
                    Jury
                    28 октября 2015, 10:04
                    0
                    Спасибо буду ждать, пока сделал через phx, такой параметр очень нужен, я делаю принудительный опрос среди пользователей со скрытыми результатами, хоть пользователи тором не пользуются, но зато юзают сайт с разных устройств.
                      Николай Загумённов
                      29 октября 2015, 11:42
                      +3
                      Обновил, чтобы можно было голосовать только авторизованным надо выставить allowGuest=`0`, по умолчанию 1
                        Jury
                        29 октября 2015, 11:47
                        0
                        )))) Спасибо огромное, отличный компонент!
                  Jury
                  29 октября 2015, 17:20
                  0
                  Николай, я конечно извиняюсь за то что отнимаю у вас время, но не могу не спросить! Планируете сделать возможность выбрать в вопросе сразу несколько вариантов ответа? если нет, намекните пжл. где подправить?
                    Николай Загумённов
                    30 октября 2015, 06:56
                    +1
                    Не планировал, но идея прикольная. Чуть позже сделаю. Может через параметр какой-то. Чтобы можно было указать параметр и вопрос становился мультивариантным.
                      Илья Уткин
                      30 октября 2015, 11:57
                      0
                      Кстати, у вопросов уже есть такой параметр — type
                        Jury
                        03 ноября 2015, 10:25
                        0
                        Вот у этих товарищей surveymonkey при выборе варианта с несколькими ответами type меняется с radio на checkbox, можно использовать такой же принцип
                        Павел Гвоздь
                        30 октября 2015, 08:53
                        0
                        Странно, когда голосую — возвращает весь код страницы на том месте, где были варианты ответов вместо результатов голосования. Через Феном не работает?
                          Николай Загумённов
                          30 октября 2015, 09:08
                          0
                          Хмм… Да, дело в феноме. Или в сниппете раз он не работает в феноме.
                            Павел Гвоздь
                            30 октября 2015, 09:10
                            0
                            Планируешь поправить это дело? Сейчас Феном обретает популярность и я думаю не очень хорошо, если твой компонент не будет заводится из под Фенома.
                        mngatoff
                        04 ноября 2015, 02:04
                        0
                        А у меня такой вопрос — есть вариант как-то крепить один и тот же опрос к разным страницам?
                        к примеру, есть страница некоего заведения — на ней опрос, как вам в этом заведении понравилось.
                        на другой странице — точно такой же про другое заведение.
                        понятно, что можно создать бесконечное множество опросов и вручную их крепить к заведениям, но… )
                        Василий Одинцов
                        10 ноября 2015, 15:29
                        0
                        Спасибо за компонент, но есть два вопроса:
                        1. Как его устанавливать? Ставил отсюда: modstore.pro/packages/other/xpoller2
                        Но что оттуда, что с гитхаба по ссылке выше github.com/rjkz/xPoller2 файл оформления main.css пустой. Самому дописывать? Если да, то вопрос отпадает, но что тогда с последующими обновлениями?
                        2. Вопрос с множественным выбором. Был бы лично очень признателен за реализацию.
                          Николай Загумённов
                          10 ноября 2015, 20:20
                          0
                          Сокро сделаю с множественным, все никак не доберусь. Стилей нет потому, что там бутстраповские классы. Если бутстрап не подключен, то нужно самому дописывать нужные стили.
                            Алексей Добряков
                            13 ноября 2015, 16:18
                            0
                            Сижу пол дня и понял что реально ошибка в safari из за функции
                            assets/components/xpoller2/js/web/default.js -> parent.html(html);
                            В других браузерах идеально, работает и сейчас буду пробовать прикрутить капчу, а то у меня уже за 5 минут 80 голосов накрутили
                          Алексей Добряков
                          13 ноября 2015, 13:47
                          0
                          Если я не ошибаюсь, то только в сафари есть глюк нельзя проголосовать, дублируется страница в опроснике
                            Николай Загумённов
                            14 ноября 2015, 09:05
                            +1
                            Спасибо, посмотрю.
                            На днях обновлю. Сделал опросы с множественным вариантом ответов и чтобы аякс отправлялся в файл а не в сниппет.
                              Алексей Добряков
                              14 ноября 2015, 17:26
                              0
                              Обнови пожалуйста быстрее у меня идёт опрос на мисс 2015 Нижний Новгород и люди очень жалуются и меня клиенты теребят
                                Николай Загумённов
                                14 ноября 2015, 20:43
                                +1
                                Обновил.
                                Не проверял в сафари только.
                                  Алексей Добряков
                                  15 ноября 2015, 14:26
                                  0
                                  Всё помогло, глюк исчез, можешь смело писать что исправил глюк на браузерах сафари))) Спасибо тебе большое!!! Осталось мне прикрутить капчу к анонимному опроснику и будет всё ок, а то сильно накручивают, мой совет будет возможность добавь в опросник капчу, ещё раз спасибо!!!
                                    Павел Гвоздь
                                    15 ноября 2015, 17:33
                                    +2
                                    Есть в наше время такие сервисы, вроде антигейт/антикапча, которые позволяют при помощи миллиона маленьких китайцев обойти капчу. Думаю, если кому-то нужно будет накрутить, ежели он умудрился обойти проверку по IP, — то и обойдёт проверку по капче.
                                    Вообще к капче отношусь очень скептически. С одной стороны при должном подходе она не поможет, с другой стороны она очень раздражает. На хабре проскакивали интересные идеи, которые можно было бы использовать вместо надоедливой капчи. При желании это дело можно откопать.
                                Jury
                                16 ноября 2015, 11:22
                                +2
                                Спасибо огромное, получился отличный компонент,
                              Николай Пиневич
                              18 декабря 2015, 17:55
                              0
                              Обновите пожалуйста компонент для версии MODX Revolution 2.4.2, очень хочется его использовать, но не могу установить, его нет в каталоге дополнений.
                                Николай Загумённов
                                10 января 2016, 14:58
                                0
                                У меня получается с качать с версии 2.4.2
                                  Николай Пиневич
                                  12 января 2016, 09:33
                                  0
                                  Странно, проверил на трех разных сайтах на трех разных площадках и сделанных в разное время, нигде не отображается(((
                              Евгений Webinmd
                              25 декабря 2015, 23:42
                              0
                              Во вкладе Тестирование при попытке создать вопросы к тесту вываливается 500 ошибка.
                              в браузере ссылка имеет следующий вид: ?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 в двух местах и вроде всё заработало.
                              Евгений Webinmd
                              25 декабря 2015, 23:56
                              0
                              Для тестирования в варианты ответа не плохо было бы добавить поле типа Вес ответа, а то тест пройдут, а как результат посчитать непонятно
                                Василий Одинцов
                                08 января 2016, 14:20
                                0
                                Подскажите пожалуйста в каком направлении копать. Периодически слетает оформление в результатах. Вернее, значение width у background'a. А ещё вернее, значение percentVotes присваивается равным нулю. Как следствие, происходит выравнивание по левому краю и отсутствие заполнения фоном. Как-то так:

                                Заранее спасибо.
                                  Николай Пиневич
                                  15 января 2016, 09:39
                                  0
                                  Такая же проблема, допер почему происходит, но еще не копался как исправить, а происходит потому, что когда высчитываются проценты заполнения, они записываются как «width: 37,21%» а дробные проценты корректно записывать не через запятую, а через точку, если поменять запятую на точку, то все работает корректно.
                                  Если кто найдет время и покапает как исправить, буду рад если поделитесь решением.
                                    Николай Пиневич
                                    15 января 2016, 09:54
                                    +1
                                    Решение: в сниппете 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);
                                  TITAN-UZ
                                  20 февраля 2016, 00:57
                                  0
                                  Как вывести статистику отдельно
                                    Maxim
                                    24 февраля 2016, 21:34
                                    0
                                    Здравствуйте. Создаю тестирование вызываю на странице по iD. Обновляю, «Вопрос не найден». С голосованием проблем нет. Может тестирование как то хитро вызывать нужно?
                                      Maxim
                                      24 февраля 2016, 21:38
                                      0
                                      Ошибки:
                                      (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.
                                        Maxim
                                        24 февраля 2016, 21:58
                                        0
                                        По одному вопросу можно вызывать так же по ид. Нельзя вызвать по общему ид все вопросы? Получилось только по одному
                                          Maxim
                                          26 февраля 2016, 00:39
                                          0
                                          xpoller2test нет в списке сниппетов админки. Может кто нибудь ответить, работает или нет тестирование?
                                            Николай Загумённов
                                            26 февраля 2016, 06:12
                                            +1
                                            Привет, нет, не работает.
                                              Maxim
                                              26 февраля 2016, 08:34
                                              0
                                              Доброго времени! Спасибо за ответ.
                                                Юрий
                                                11 марта 2016, 23:49
                                                0
                                                Николай.
                                                подскажите, как можно вывести результаты всех опросов «xPoller2» через pdoResource, например
                                              Maxim
                                              26 февраля 2016, 05:02
                                              0
                                              del
                                                Виктор
                                                09 марта 2016, 09:16
                                                +1
                                                Как-то странно голоса подсчитываются, не делится на общее кол-во голосов по каждому варианту ответа. Там где должно быть 50% там 100%, а там где 25% там по 50%
                                                  Алексей Смирнов
                                                  03 января 2018, 22:25
                                                  0
                                                  Проблема решается следующим образом:
                                                  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. Коментируем оба условия и вписываем сложение голосов.
                                                  Евгений Webinmd
                                                  05 октября 2016, 10:28
                                                  0
                                                  появится ли возможность завершать опросы?
                                                    Николай Загумённов
                                                    07 октября 2016, 20:18
                                                    +1
                                                    Нет, скоро сделаю другую версию компонента, как появится свободное время. На github давно висит заготовка, в ней учту этот момент. Если не забуду =)
                                                    bmu77
                                                    20 февраля 2017, 16:39
                                                    0
                                                    Здравствуйте!
                                                    Очень хороший компонент, но никак не могу отключить привязку к IP, так как необходимо привязать к своему методу проверки. allowGuest=1 не помогает.
                                                      Николай Загумённов
                                                      20 февраля 2017, 17:03
                                                      0
                                                      Там надо править сниппет и файл action.php. &allowGuest не влияет на привязку по IP
                                                      bmu77
                                                      21 февраля 2017, 09:27
                                                      0
                                                      Извиняюсь, неправильно написал. allowGuest=0 не помогает.
                                                        bmu77
                                                        21 февраля 2017, 10:06
                                                        0
                                                        Спасибо за быстрый ответ.
                                                          Sergey (Sentinel)
                                                          11 июня 2018, 15:59
                                                          0
                                                          Подскажите, как поправить эту ошибку?
                                                          http://picplus.ru/img/1806/11/34d0d93d.png
                                                            Дмитрий
                                                            19 июля 2018, 12:24
                                                            0
                                                            Товарищи, как избавиться от такой ошибки?
                                                            Fatal error: Class 'Xpoller2QuestionsManagerController' not found in .../core/model/modx/modmanagercontroller.class.php on line 943

                                                            Возникает после создания тестирования и попытки открыть пункт с вопросами.
                                                            MODX Revolution 2.6.3-pl
                                                              Sergey (Sentinel)
                                                              30 июля 2018, 18:02
                                                              0
                                                              Компонент не работает на 2.6.5, пишет «Ошибка сохранения лексикона» и ничего нельзя сделать…
                                                                Александр
                                                                23 августа 2018, 15:20
                                                                0
                                                                Столкнулся с накруткой голосов. Отправив следующий запрос — ...../assets/components/xpoller2/action.php?qid=21&oid[]=97&xp_action=answer, с нужным количеством голосов, нужным id опроса и id вопроса, можно это осуществить. Не подскажите как решить проблему?
                                                                  kaix8
                                                                  04 февраля 2019, 10:49
                                                                  0
                                                                  А не подскажите как вывести в процентах количество проголосовавших? Сейчас выводит просто, сколько человек проголосовали за вариант, а хотелось бы в процентах выводить.
                                                                    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                                                    68