К содержанию

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

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

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

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

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

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

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

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

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

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