DCDozer

DCDozer

+11
Репутация
0
Рейтинг
#1 Проверка капчи средствами javascript 9 августа 2017 в 10:35
Pocus, спасибо за ссылку! Правда, приведенный там код у меня не захотел работать.)) Но тем не менее помог понять в каком направлении нужно двигаться. Вот что в итоге получилось.
  1.  
  2. <script src="https://www.google.com/recaptcha/api.js"></script>
  3. <div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY" data-callback="correctCaptcha"></div>
  4. <script type="text/javascript">
  5. var correctCaptcha = function(response) {
  6. if (response.length > 0) {
  7. alert("Вы прошли проверку!");
  8. }
  9. };
  10. </script>
  11.  
#2 Проверка капчи средствами javascript 8 августа 2017 в 19:30
Zau4man, спасибо, буду копать.
#3 Проверка капчи средствами javascript 8 августа 2017 в 19:19
Lora, если по теме сказать нечего, проходите мимо. В описании форума написано

Вопрос-ответ

, а не вопрос-вопрос. Или вы таким образом медальки зарабатываете?
#4 Проверка капчи средствами javascript 8 августа 2017 в 08:01

Речь о рекаптче от гугл?

Lora
Да.

А разве она на несразу проверяется?

Lora
Вы у меня спрашиваете? Если бы я знал, то, наверное, не начал новую тему. И если она сразу проверяется, то не могли бы привести пример того, как можно узнать введена капча или нет. Будьте так любезны.
#5 Последовательный выбор 7 августа 2017 в 17:12


DCDozer, тут есть бескостыльное решение, правда дорого берут smile.

Loadырь
Ну, мне уже не надо. Работает как надо. smile
#6 Последовательный выбор 7 августа 2017 в 16:54

Мне тоже нужен подобный выбор категорий при добавлении объявления на сайте.

vladimird
vladimird, если еще актуально, то вот небольшой хак. Последовательный выбор категорий реализовал уже давно, правда пришлось писать функцию-костыль, чтобы работало как надо. Но не смотря на это, при определенных условиях не помогал и этот костыль.
И вот совсем недавно нашел время, чтобы все довести до ума (с моей непрофессиональной точки зрения).
Итак, в файле /templates/ваш_шаблон/assets/ui/form.tpl.php в самом начале определяем местоположение. Если находимся на странице добавления того контента, в котором требуется последовательный выбор категорий, то далее подключаем этот последовательный выбор.
  1.  
  2. // Определяем местоположение. Если находимся на странице добавления объявлений,
  3. // то в переменную $board будет записано какое-то положительное число,
  4. // если это страница добавления другого контента, запишется "0".
  5. $uri = cmsCore::getInstance()->uri_absolute;
  6. $board = (strpos($uri, 'board'));
  7.  
Далее в этом же файле ищем строку
  1. <?php echo $field->getInput($value); ?>
и заменяем ее этим кодом
  1.  
  2. <?php
  3. if ($board > 0 && $name == 'category_id') {include('dependent_lists.php'); }
  4. else echo $field->getInput($value);
  5. ?>
  6.  
Сам файл /templates/ваш_шаблон/assets/ui/dependent_lists.php здесь. В нем нужно найти строку
  1. url: "/ads/categories", // Ссылка на action
где ads — контроллер, categories — экшен. Здесь вместо "ads" нужно вставить название какого-то своего контроллера, а в папке
/system/controllers/ваш_контроллер/actions создать файл categories.php со следующим содержимым
  1.  
  2. <?php
  3.  
  4. class actionAdsCategories extends cmsAction {
  5.  
  6. public function run() {
  7.  
  8. $categories_list = NULL;
  9. if (!isset($_POST['parent_id']) || !$_POST['parent_id']) {
  10. exit("Нет данных определяющих тип запроса");
  11. }
  12. else {
  13. $parent_id = trim($_POST['parent_id']);
  14. $content_model = cmsCore::getModel('content');
  15. $categories = $content_model->getCategoriesTree('board', true);
  16. $arr_cat = array();
  17. if (is_array($categories)){
  18. foreach($categories as $item_cat){
  19. $arr_cat[$item_cat['id']] = array('id' => $item_cat['id'], 'parent_id' => $item_cat['parent_id'], 'title' => $item_cat['title']);
  20. }
  21. }
  22. $categories_list = array_categories_to_list($arr_cat, $parent_id);
  23. }
  24. echo json_encode($categories_list);
  25. die();
  26. }
  27. }
  28. ?>
  29.  
В названии класса вместо "Ads" вставляете название своего контроллера.
В файл /templates/ваш_шаблон/assets/helper.php дописываем функцию array_categories_to_list

  1.  
  2. function array_categories_to_list($categories, $filter){
  3.  
  4. $list = array();
  5. if (is_array($categories)){
  6. $i = 0;
  7. foreach($categories as $item){
  8. if ($item['parent_id'] == $filter) {
  9. $list[$i+1] = array('id' => $item['id'], 'title' => $item['title']);
  10. $i++;
  11. }
  12. }
  13. $list[0] = array('count' => $i);
  14. }
  15. return $list;
  16. }
  17.  
#1 Проверка капчи средствами javascript 7 августа 2017 в 13:43
Здравствуйте! Подскажите, пожалуйста, как проверить капчу средствами javascript до отправки формы. Я так понимаю, что при регистрации капча проверяется в момент отправки формы, а как проверить сразу же после ввода? Например, пользователь ввел капчу и если ввел правильно, появляется кнопка или становится активной.
#8 Удалить дату и время в комментариях 5 августа 2017 в 00:26


Всем привет! Перерыл всю папку comments в контролёрах, но так и не нашел, какие строки удалить, чтобы в комментариях не отображались дата и время((( Может кто-нибудь подскажет?

GoodWay
Шаблон надо править. В файле /templates/ваш_шаблон/controllers/comments/comment.tpl.php строка 64 (v 2.8.0)
  1. <span class="<?php echo $no_approved_class; ?>"><?php echo html_date_time($entry['date_pub']); ?></span>
#9 Поднятие в биллинге на время 17 апреля 2017 в 23:37
AndroS, ну, когда я пытался реализовать такое средствами движка, то не смог этого сделать, после чего пришлось учиться кодить. smile
#10 Поднятие в биллинге на время 17 апреля 2017 в 23:33
Jestik, возможно я ошибаюсь, но думаю, что просто настройками не обойтись.

И я правильно понял, что таким макаром, если я установлю например значение в неделю. то юзеру каждую неделю нужно будет поднимать обьявление? (если так то отлично)

Jestik
Да. Сейчас у вас сортировка происходит по полям "Поднять в поиске" и "Дата добавления". Для того, чтобы в нужный момент убрать галочку с поля "Поднять в поиске" нужно создать поле date_top_end, в котором будет храниться дата и время истечения срока размещения объявления в топе. А потом нужно каждый раз при загрузке списка объявлений проверять не пора ли снимать галку с поля "Поднять в поиске" и если пора, то снимать эту галку. Но для этого нужно внести изменения в шаблон списка объявлений, а так же сделать в меню кнопку "Поднять в поиске", при нажатии на которую будут заполняться поля is_top и date_top_end, ну и конечно же списываться средства со счета юзера.
У Evanescence на его сайте есть урок, который поможет вам в этом разобраться.
#11 Поднятие в биллинге на время 17 апреля 2017 в 22:33
Jestik, нужно в типе контента "Объявления" создать невидимое поле date_top_end, которое будет заполняться в момент нажатия кнопки "Поднять в поиске" путем прибавления к текущей дате количества дней (в секундах), на которое объявление поднимается в поиске. После этого в шаблоне списка объявлений сделать проверку — если текущая дата > date_top_end, то is_top = false.
#12 [ЕСТЬ РЕШЕНИЕ] Биллинг. Как получить цену действия? 17 апреля 2017 в 06:45
taleh, премного благодарен.
#1 [ЕСТЬ РЕШЕНИЕ] Биллинг. Как получить цену действия? 16 апреля 2017 в 16:34
Здравствуйте!
Подскажите, пожалуйста, метод, с помощью которого можно получить цену действия для текущего авторизованного пользователя.
#14 Последовательный выбор 4 января 2017 в 01:44


Просто видно я не понял о чём речь. Сори. Судя по скрину вы создали поле "На длительный срок", как я понял типа-список. Это понятно. И что теперь нужно? Вывести его при определённых условиях или что? Файл myselect.php для чего?

Lora
Когда имеется большое количество категорий, то с выбором нужной могут возникнуть сложности, так как выбирать приходится из общего списка.
Поэтому я решил сделать последовательный выбор категорий. После загрузки страницы в форме имеем один селект со списком родительских категорий, после выбора нужной появляется второй селект с дочерними категориями и так до тех пор, пока не будет выбрана категория последнего уровня вложенности.
Проблема заключается в том, что прикрутить все это к форме я прикрутил, все выводится, все выбирается, но при нажатии на кнопку "Сохранить" появляется сообщение "Найдены ошибки в форме". Полагаю, что просто добавить селекты в шаблон недостаточно.
#15 Последовательный выбор 3 января 2017 в 14:36


но вот как и куда передать значение последнего селекта я не знаю.

DCDozer
А чего его передавать? Он сам передастся и выведется на странице, если всё правильно сделали.

Lora
Скажите, что я делаю неправильно?
В файле /templates/мой_шаблон/assets/ui/form.tpl.php подключаю файл myselect.php
  1. // Если выполняется следующее условие, то вместо кода, который содержится между тегами
  2. // <fieldset></fieldset> исполняем код из подключаемого файла myselect.php
  3. if ($board == true && $fieldset['title'] == 'Категория'){ include('myselect.php'); } else {
  1. <div id="tab-<?php echo $fieldset_id; ?>" class="tab" <?php if($form->is_tabbed && $index){ ?>style="display: none;"<?php } ?>>
  2. <fieldset id="fset_<?php echo $fieldset_id; ?>"
  3. <?php if (isset($fieldset['class'])){ ?>class="<?php echo $fieldset['class']; ?>"<?php } ?>
  4. <?php if (isset($fieldset['is_hidden'])){ ?>style="display:none"<?php } ?>>
  5. <?php if (!empty($fieldset['title']) && !$form->is_tabbed){ ?>
  6. <legend><?php echo $fieldset['title']; ?></legend>
  7. <?php } ?>
  8. <?php
  9. $content_model = cmsCore::getModel('content');
  10. $categories = $content_model->getCategoriesTree('board', true);
  11. $arr_cat = array();
  12. if (is_array($categories)){
  13. foreach($categories as $item_cat){
  14. $arr_cat[$item_cat['id']] = array('id' => $item_cat['id'],'parent_id' => $item_cat['parent_id'], 'title' => $item_cat['title']);
  15. }
  16. }
  17. $parent_id = 1;
  18. $categories_list = array_categories_to_list($arr_cat, $parent_id);
  19. ?>
  20. <div id="f_category_id" class="field ft_list">
  21. <div>
  22. <select id="first_select" data-placeholder="Выберите категорию" onchange="newList(this.value);">
  23. <option value="" selected></option>
  24. <?php
  25. foreach($categories_list as $item_cat_list){
  26. if (!empty($item_cat_list['id'])&&!empty($item_cat_list['title'])){
  27. $id = $item_cat_list['id'];
  28. $title = $item_cat_list['title'];
  29. $html = "\t".'<option value = "'.htmlspecialchars($id).'">'.htmlspecialchars($title).'</option>'."\n";
  30. echo $html;
  31. }
  32. }
  33. ?>
  34. </select>
  35. <script type="text/javascript">$('#first_select').chosen({disable_search_threshold: 8, width: '100%', allow_single_deselect: true});</script>
  36. </div>
  37. <!-- Здесь, если это необходимо, будут добавляться дивы с селектами -->
  38. </div>
  39. </fieldset>
  40. </div>
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.