Forums / National / Russian / Тех. поддержка / Запросы документации

<<<1...5...10...33343536373839>>>

Принимаем вопросы от населения

webitproff
#526 2023-05-30 12:03
#46739 Kabak:

1) Как правильно подключить GetUserInfo.js и строки для js.js  при установке плагина ?

2) и чтобы плагин заработал через Ajax у меня , а не как standalone

 

Добавлено 5 минут спустя:

js.js  исправил.

$("input[name=rusername]").after("<div id=\"divMy_Name\"></div>");
$("input[name=ruseremail]").after("<div id=\"divEmail\"></div>");
$("input[name=rusername]").blur(function() { process_name(); })
$("input[name=ruseremail]").blur(function() { process_email(); })

Тогда нужно чтобы скрипт выполнался только на одной странице сайта - регистрационной. Соотвественно js скрипт нужно грузить только на users.register.tpl

Добавлено 3 минуты спустя:

у меня получается оба скрипта GetUserInfo.js и js.js  находятся не в папке с плагином, а в папке themes\имя_темы\js\

Павел же писал вам.

1. перенесите в папку с плагином

2. по моему примеру создайте файл nevalidate.rc.php с хуком для rc

 и уже в него код

<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=rc
[END_COT_EXT]
==================== */
 
/**
 *  for Cotonti
 *
 * @package 
 * @version 
 * @author 
 * @copyright Copyright 
 * @license BSD
 */
 
defined('COT_CODE') or die('Wrong URL');
 
if (isset($_GET['e']) && $_GET['e'] == 'users' && isset($_GET['m']) && $_GET['m'] == 'register'){
Resources::linkFileFooter(Cot::$cfg['plugins_dir'] . '/nevalidate/GetUserInfo.js', 'js');
 
Resources::embedFooter(<<<JS
$().ready(function() {
$("section.div_block_register input[name=rusername]").after("<div id=\"divMy_Name\"></div>");
$("section.div_block_register input[name=ruseremail]").after("<div id=\"divEmail\"></div>");
  
$("section.div_block_register input[name=rusername]").blur(function(){
        process_name();
})
  
$("section.div_block_register input[name=ruseremail]").blur(function(){
        process_email();
})
});
JS
);
};

вот пример

 

Добавлено 47 секунд спустя:

по айяксу - я тут ноль

аккаунт удален - не срослось с разработчиками
ушел на другой движок
Dayver
#527 2023-05-30 12:06

а еще тут

xmlHttp.open("GET", "index.php?e=nevalidate&email=" + email_1, true);

попробуйте указывать не относительный путь а абсолютный

Pavlo Tkachenko aka Dayver
Kabak Online
#528 2023-05-30 12:08

кстати почему такой странный выбор имён для переменных в виде массива - можно ж проще

1

2

3

4

5

$verif_name = cot_import('name','G','TXT');

$verif_email = cot_import('email','G','TXT');

 

if (empty($verif_name)){

...

 

Не работате скрипт так.  почему-то.  Вероятно, поэтому и написал как написал :

$name['user_name'] = cot_import('name','G','TXT');
$email['user_email'] = cot_import('email','G','TXT');

if (trim($name['user_name']) == '')
{
...

 

Dayver
#529 2023-05-30 12:20
#46741 Kabak:

Идеально, когда оба скрипта js прописываются и подключаются при установке плагина, но я не знаю как это сделать.

по этому вопросу уже ответ прозвучал.

1) создаёте в папке плагина файл nevalidate.rc.php 

2) для порядка GetUserInfo.js переносите в подпапку js что б путь к нему был plugins/nevalidate/js/GetUserInfo.js

3) пишите в него код (дублирую уже указанный выше, устранив неточности в пути файла и селекторах .... но не проверяю на работоспособность тут вы уж сами)

<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=rc
[END_COT_EXT]
==================== */
defined('COT_CODE') or die('Wrong URL');
  
if (isset($_GET['e']) && $_GET['e'] == 'users' && isset($_GET['m']) && $_GET['m'] == 'register') {
     Resources::linkFileFooter(Cot::$cfg['plugins_dir'] . '/nevalidate/js/GetUserInfo.js', 'js');
     Resources::embedFooter('
          $().ready(function() {
                    $("input[name=rusername]").after("<div id=\"divMy_Name\"></div>");
                    $("input[name=ruseremail]").after("<div id=\"divEmail\"></div>");
                    $("input[name=rusername]").blur(function(){
                              process_name();
                    })
                    $("input[name=ruseremail]").blur(function(){
                              process_email();
                    })
          });
    ');
};

4) заходите в админку и в плагине нажимаете Обновить

5) заходите на страницу регистрации и проверяете исходный код сгенерированный движком - есть ли подключеный скрипт GetUserInfo.js и присутсвует ли внедрённый инлайн код инициализации

Pavlo Tkachenko aka Dayver
Kabak Online
#530 2023-05-30 12:24
#46742 webitproff:
#46739 Kabak:

1) Как правильно подключить GetUserInfo.js и строки для js.js  при установке плагина ?

2) и чтобы плагин заработал через Ajax у меня , а не как standalone

 

Добавлено 5 минут спустя:

js.js  исправил.

$("input[name=rusername]").after("<div id=\"divMy_Name\"></div>");
$("input[name=ruseremail]").after("<div id=\"divEmail\"></div>");
$("input[name=rusername]").blur(function() { process_name(); })
$("input[name=ruseremail]").blur(function() { process_email(); })

Тогда нужно чтобы скрипт выполнался только на одной странице сайта - регистрационной. Соотвественно js скрипт нужно грузить только на users.register.tpl

Добавлено 3 минуты спустя:

у меня получается оба скрипта GetUserInfo.js и js.js  находятся не в папке с плагином, а в папке themes\имя_темы\js\

Павел же писал вам.

1. перенесите в папку с плагином

2. по моему примеру создайте файл nevalidate.rc.php с хуком для rc

 и уже в него код

<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=rc
[END_COT_EXT]
==================== */
 
/**
 *  for Cotonti
 *
 * @package 
 * @version 
 * @author 
 * @copyright Copyright 
 * @license BSD
 */
 
defined('COT_CODE') or die('Wrong URL');
 
if (isset($_GET['e']) && $_GET['e'] == 'users' && isset($_GET['m']) && $_GET['m'] == 'register'){
Resources::linkFileFooter(Cot::$cfg['plugins_dir'] . '/nevalidate/GetUserInfo.js', 'js');
 
Resources::embedFooter(<<<JS
$().ready(function() {
$("section.div_block_register input[name=rusername]").after("<div id=\"divMy_Name\"></div>");
$("section.div_block_register input[name=ruseremail]").after("<div id=\"divEmail\"></div>");
  
$("section.div_block_register input[name=rusername]").blur(function(){
        process_name();
})
  
$("section.div_block_register input[name=ruseremail]").blur(function(){
        process_email();
})
});
JS
);
};

вот пример

 

Добавлено 47 секунд спустя:

по айяксу - я тут ноль

Fatal error: Uncaught Exception: Resource file «themes/Night_Lightning/js/GetUserInfo.js» not exists in /var/www/apcfix/system/Resources.php:131 Stack trace: #0 /var/www/apcfix/themes/Night_Lightning/Night_Lightning.rc.php(20): Resources::addFile() #1 /var/www/apcfix/system/common.php(714): include('...') #2 /var/www/apcfix/index.php(94): require_once('...') #3 {main} thrown in /var/www/apcfix/system/Resources.php on line 131

webitproff
#531 2023-05-30 12:26
#46746 Kabak:
#46742 

Fatal error: Uncaught Exception: Resource file «themes/Night_Lightning/js/GetUserInfo.js» not exists in /var/www/apcfix/system/Resources.php:131 Stack trace: #0 /var/www/apcfix/themes/Night_Lightning/Night_Lightning.rc.php(20): Resources::addFile() #1 /var/www/apcfix/system/common.php(714): include('...') #2 /var/www/apcfix/index.php(94): require_once('...') #3 {main} thrown in /var/www/apcfix/system/Resources.php on line 131

удалите в Night_Lightning/Night_Lightning.rc.php

любое упоминание GetUserInfo.js

Добавлено 1 минута спустя:

в .rc своей темы закоментируйте строку, котороя подключает GetUserInfo.js из расположения в шаблоне, потому и рекомендуется это делать через плагин

аккаунт удален - не срослось с разработчиками
ушел на другой движок
Dayver
#532 2023-05-30 12:28
#46734 Kopusha:

1. в users/inc/ создаем users.ajax.php
 

<?php
defined('COT_CODE') or die('Wrong URL');
global $db_users, $db;
include_once cot_incfile("users", "module");
$a = cot_import('a', 'G', 'TXT');
$m = cot_import("m", "G", "TXT");
$login = cot_import("login", "G", "TXT");
$email = cot_import("email", "G", "TXT");
$data["success"] = false;

if ($a == "checklogin") {
	$user_exists = (bool)cot::$db->query("SELECT user_id FROM ".cot::$db->users." WHERE user_name = ? LIMIT 1",
        array($login))->fetch();
	$data["text"] = //как отработать оповещение, у каждого свое
	$data["user_exists"] = $user_exists;
    print json_encode($data);
}

if ($a == "checkemail") {
	$email_exists = (bool)cot::$db->query("SELECT user_id FROM ".cot::$db->users." WHERE user_email = ? LIMIT 1",
        array($email))->fetch();
	$data["text"] = //как отработать оповещение, у каждого свое
	$data["email_exists"] = $email_exists;
    print json_encode($data);
}

в корне users - users.rc.php

<?php

/* ====================
  [BEGIN_COT_EXT]
  Hooks=rc
  Order=9999
  [END_COT_EXT]
  ==================== */

defined('COT_CODE') or die('Wrong URL');

if ($usr['id'] > 0) {
}
else
{
	if ($_GET['e'] == 'users' && $_GET['m'] == 'register') {
		cot_rc_link_footer("modules/users/js/users.js");
	}
}

Далее users/js/users.js

$(function () {
		$('#form input:text[name="rusername"]').blur(function() {
			    if($(this).val().length>=2)
				{
			        $login = $(this).val();
			        $.ajax({
			            url: 'index.php?e=users&m=ajax&a=checklogin&login=' + $login,
			            method: "GET",
			        }).done(function (h) {
						d = $.parseJSON(h);
						
			            if (d.user_exists) {
							//тут как фронэнд отработает код ошибки
}
			        });
			        return false;
			    }
		});	
		$('#useremail').blur(function() {
			    if($(this).val().length>=2)
				{
			        $email = $(this).val();
			        $.ajax({
			            url: 'index.php?e=users&m=ajax&a=checkemail&email=' + $email,
			            method: "GET",
			        }).done(function (h) {
						d = $.parseJSON(h);
						
			            if (d.email_exists) {
							//тут как фронэнд отработает код ошибки
							$('.email input').parent().removeClass('success');
			            }
			            else
			            {
							//email validation
							var regex = new RegExp(
						        '^(([^<>()[\\]\\\\.,;:\\s@\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\"]+)*)|' +
						        '(\\".+\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])' +
						        '|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$'
						    );
						    $('.email input').on('keyup', function(e) {
						        $(this).parent().toggleClass('success', regex.test($(this).val()));
						    }); 
}
});
			        return false;
			    }
		});	
});    

вроде бы все, выдирал с рабочего проекта где много другого, может что и забыл

модуль есесно обновить

Кстати это решение если оформить в виде плагина то будет действительно проще и лаконичнее для понимания + лучше илюстрирует работу движковых систем

Pavlo Tkachenko aka Dayver
Kabak Online
#533 2023-05-30 12:36
#46747 webitproff:
#46746 Kabak:
#46742 

Fatal error: Uncaught Exception: Resource file «themes/Night_Lightning/js/GetUserInfo.js» not exists in /var/www/apcfix/system/Resources.php:131 Stack trace: #0 /var/www/apcfix/themes/Night_Lightning/Night_Lightning.rc.php(20): Resources::addFile() #1 /var/www/apcfix/system/common.php(714): include('...') #2 /var/www/apcfix/index.php(94): require_once('...') #3 {main} thrown in /var/www/apcfix/system/Resources.php on line 131

удалите в Night_Lightning/Night_Lightning.rc.php

любое упоминание GetUserInfo.js

Добавлено 1 минута спустя:

в .rc своей темы закоментируйте строку, котороя подключает GetUserInfo.js из расположения в шаблоне, потому и рекомендуется это делать через плагин

Да.  тупанул.

 

Заработал плагин, но как standalone.   При hook=Ajax не работает    (  да , на сайте включена отладка я там отлаживаю плагины )   Но всё другое и Ajax  работает

This post was edited by Kabak (2023-05-30 12:42, 11 months ago)
webitproff
#534 2023-05-30 12:44
#46749 Kabak:

 

Заработал плагин, но как standalone.   При hook=Ajax не работает    (  да , на сайте включена отладка я там отлаживаю плагины )   Но всё другое и Ajax  работает

ну по "Ajax " фг знает ))) тут не курю laugh

аккаунт удален - не срослось с разработчиками
ушел на другой движок
Kabak Online
#535 2023-05-30 12:50

Если то, что плагин как standalone - не проблема, то оформлю всё красиво и выложу на GIT. 

 

Я очень балодарен всем кто мне помогал с этим плагином. 

Kopusha
#536 2023-05-30 12:52
#46735 Dayver:

Оговорка номер один - советовать хакать дефолный модуль - не очень потому что при очередном обновлении все хаки уплывут в мир забвения. А возможно народ подумал что проект мёртв и обновлений ожидать не стоит - но чудеса случаются)

Так и было, да у меня и system папка уже не обновится. 

Добавлено 5 минут спустя:

 

У меня это не как плаг и даже не как часть модуля, все идет через апишку типа микросервисов, хз как обозвать этого монстра)

Проверка лог мейл это 1% от всего только на юзеров завязанного, там и автоустановка таймзоны, и геолокация и онлайн-оффлайн на ажаксе каждые 15 сек и проверка пароля на базах слитых паролей (дописываю) и тд. Когда все доработаю выложу с 10ок тюториалов если не помру)

This post was edited by Kopusha (2023-05-30 12:59, 11 months ago)
webitproff
#537 2023-05-30 13:01
#46752 Kopusha:
 

У меня это не как плаг и даже не как часть модуля, все идет через апишку типа микросервисов, хз как обозвать этого монстра)

Проверка лог мейл это 1% от всего только на юзеров завязанного, там и автоустановка таймзоны, и геолокация и онлайн-оффлайн на ажаксе каждые 15 сек и проверка пароля на базах слитых паролей (дописываю) и тд. Когда все доработаю выложу с 10ок тюториалов если не помру)

интригующе... ))

аккаунт удален - не срослось с разработчиками
ушел на другой движок
Kopusha
#538 2023-05-30 13:13

Я просто очень много чем занят, а это все на петпроекте. Основной бизнес на сайте тоже на коте но без всяких извращений, там скучно)

а петпроект это больше поле для экспериментов. В том виде как сейчас - нерабочее глючное говно)

webitproff
#539 2023-05-30 13:28
#46754 Kopusha:

а петпроект это больше поле для экспериментов. В том виде как сейчас - нерабочее глючное говно)

так выкладывайте, что не жалко - будем делать конфетку ))

Добавлено 2 часа спустя:

Прошу подсказать, есть ли разница в выражениях ниже, и если есть то в чем?

Cot::$usr['isadmin']) = cot_auth('page', 'any');

и

Cot::$usr['isadmin']) = cot_auth('page', 'any', 'RWA');

 

аккаунт удален - не срослось с разработчиками
ушел на другой движок
This post was edited by webitproff (2023-05-30 15:55, 11 months ago)
Kabak Online
#540 2023-05-30 17:01

Выложил  на https://github.com/Kabak/nevalidate

и здесь появился

<<<1...5...10...33343536373839>>>