Вопросы

Отложить парсинг Javascript

Ищу плагин или готовое решение
Ольга
11 апреля 2018, 14:41
modx.pro
984
-2

Передача параметра из JavaScript в сниппет

Подскажите пожалуйста, какие бывают правильные варианты передачи параметра из JavaScript?
nezaicev
11 апреля 2018, 12:47
modx.pro
1 295
0

функция php для вставки в базу данных

Здравствуйте. Я как-то давно-давно спрашивал каким образом правильно экранировать данные в PDO. Со мной поделились информацией, и сейчас я везде активно использую ее.
Николай
11 апреля 2018, 12:11
modx.pro
1
2 256
+1

Подскажите дополнение для рейтинга

Добрый день. Требуется дополнение для рейтинга статей на сайте. В данный момент стоит LikeDislike, но проблема в том, что он же используется для т.н. «закрытого» голосования (авторизация через HybridAuth). Поэтому в системных настройках стоит likedislike.userLoginRequired=Да. Поэтому все прочие голосования закрыты для гостей.
Василий Одинцов
11 апреля 2018, 11:20
modx.pro
1 103
0

Переименование шаблонов в базе данных

Подскажите плиз, как массово переименовать названия шаблонов сайта Modx Revo в базе данных? Нужно изменить названия по маске, содержащейся в названиях. Например site1_category на site2_category. И можно ли также массово изменить названия чанков в базе?
Futuris
11 апреля 2018, 08:47
modx.pro
1 907
0

Подключить к странице bootstrap

Есть код:
<div class="navbar-wrapper">
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a>
<h1 class="brand"><a href="#top" style="font-family:East Sea Dokdo">English!</a></h1>
<nav class="pull-right nav-collapse collapse">
<ul id="menu-main" class="nav">
<li><a title="текст" href="#portfolio" style="font-family:Oswald">текст</a></li>
<li><a title="текст" href="#news" style="font-family:Oswald">текст</a></li>
<li><a title="текст" href="#services" style="font-family:Oswald">текст</a></li>
<li><a title="текст" href="#team" style="font-family:Oswald">текст</a></li>
<li><a title="текст" href="#contact" style="font-family:Oswald">текст</a></li>
</ul>
</nav>
</div>
<!-- /.container -->
</div>
<!-- /.navbar-inner -->
</div>
<!-- /.navbar -->
</div>
<!-- /.navbar-wrapper -->
<div id="top"></div>
Как можно это меню адаптировать для мобильных?
Ольга
11 апреля 2018, 03:22
modx.pro
1 352
-1

Как сделать табы из ресурсов?

Добрый день подскажите пожалуйста как сделать табы из ресурсов из стандартных дополнений к MODX?
FENOM и PHP не знаю!
Сергей
10 апреля 2018, 23:43
modx.pro
1 532
0

Проблема с viewport.

Подчистила все основные html ошибки.
Проблема с viewport по-прежнему сохраняется.
Как это можно решить?
UPD: Частично решила проблему, на мобильных теперь все в порядке, но на десктопе видео расползается на весь экран.
Реально ли это как-то уладить?
Ольга
10 апреля 2018, 23:31
modx.pro
858
-1

Номера заказов в minishop2

Как можно сделать нумерацию заказов по порядку, но начиная не с 1, а, например, с 500?
Анастасия
10 апреля 2018, 20:31
modx.pro
3
4 028
0

не работает авторизация через Одноклассники в hybridauth

Не могу получить email
Odnoklassniki.php
<?php
/*!
* HybridAuth
* http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
* (c) 2009-2015, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
*/

/**
 * Hybrid_Providers_Odnoklassniki provider adapter based on OAuth2 protocol
 */
class Hybrid_Providers_Odnoklassniki extends Hybrid_Provider_Model_OAuth2
{
	/**
	* ID wrappers initializer
	*/
	function initialize()
	{
		parent::initialize();
		// Provider apis end-points
		$this->api->api_base_url    = "http://api.ok.ru/fb.do";
		$this->api->authorize_url   = "http://connect.ok.ru/oauth/authorize";
		$this->api->token_url       = "http://api.odnoklassniki.ru/oauth/token.do";
		$this->api->sign_token_name = "access_token";
	}

	private function request($url, $params=false, $type="GET")
	{
		Hybrid_Logger::info("Enter OAuth2Client::request($url)");
		Hybrid_Logger::debug("OAuth2Client::request(). dump request params: ", serialize($params));
		if ($type === "GET"){
			$url = $url . (strpos($url, '?') ? '&' : '?') . http_build_query($params, '', '&');
		}
		$this->http_info = array();
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL            , $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1);
		curl_setopt($ch, CURLOPT_TIMEOUT        , $this->api->curl_time_out);
		curl_setopt($ch, CURLOPT_USERAGENT      , $this->api->curl_useragent);
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , $this->api->curl_connect_time_out);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , $this->api->curl_ssl_verifypeer);
		curl_setopt($ch, CURLOPT_HTTPHEADER     , $this->api->curl_header);
		if ($this->api->curl_proxy) {
			curl_setopt($ch, CURLOPT_PROXY  , $this->api->curl_proxy);
		}
		if ($type === "POST") {
			curl_setopt($ch, CURLOPT_POST, 1);
			if ($params) curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
		}
		$response = curl_exec($ch);
		Hybrid_Logger::debug("OAuth2Client::request(). dump request info: ", serialize(curl_getinfo($ch)));
		Hybrid_Logger::debug("OAuth2Client::request(). dump request result: ", serialize($response));
		$this->http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
		$this->http_info = array_merge($this->http_info, curl_getinfo($ch));
		curl_close ($ch);
		return $response;
	}

	private function parseRequestResult($result)
	{
		if (json_decode($result)) return json_decode($result);
		parse_str($result, $output);
		$result = new StdClass();
		foreach ($output as $k => $v) {
			$result->$k = $v;
		}
		return $result;
	}

	function authodnoklass($code)
	{
		$params = array(
			"client_id"     => $this->api->client_id,
			"client_secret" => $this->api->client_secret,
			"grant_type"    => "authorization_code",
			"redirect_uri"  => $this->api->redirect_uri,
			"code"          => $code
		);

		$response = $this->request($this->api->token_url, http_build_query($params, '', '&'), $this->api->curl_authenticate_method);
		$response = $this->parseRequestResult($response);

		if (!$response || !isset($response->access_token)) {
			throw new Exception("The Authorization Service has return: " . $response->error);
		}
		if (isset($response->access_token)) $this->api->access_token          = $response->access_token;
		if (isset($response->refresh_token)) $this->api->refresh_token        = $response->refresh_token;
		if (isset($response->expires_in)) $this->api->access_token_expires_in = $response->expires_in;

		// Calculate when the access token expire.
		// At this moment Odnoklassniki does not return expire time in response.
		// 30 minutes expire time staten in dev docs http://apiok.ru/wiki/pages/viewpage.action?pageId=42476652
		if (isset($response->expires_in)) {
			$this->api->access_token_expires_at = time() + $response->expires_in;
		}
		else {
			$this->api->access_token_expires_at = time() + 1800;
		}
		return $response;
	}

	function loginFinish()
	{
		$error = (array_key_exists('error',$_REQUEST))?$_REQUEST['error']:"";
		// Check for errors
		if ($error) {
			throw new Exception("Authentication failed! {$this->providerId} returned an error: $error", 5);
		}
		// Try to authenticate user
		$code = (array_key_exists('code',$_REQUEST))?$_REQUEST['code']:"";
		try {
			$this->authodnoklass($code);
		}
		catch (Exception $e) {
			throw new Exception("User profile request failed! {$this->providerId} returned an error: $e->getMessage() ", 6);
		}
		// Check if authenticated
		if (!$this->api->access_token) {
			throw new Exception("Authentication failed! {$this->providerId} returned an invalid access token.", 5);
		}
		// Store tokens
		$this->token("access_token" , $this->api->access_token);
		$this->token("refresh_token", $this->api->refresh_token);
		$this->token("expires_in"   , $this->api->access_token_expires_in);
		$this->token("expires_at"   , $this->api->access_token_expires_at);
		// Set user connected locally
		$this->setUserConnected();
	}

	/**
	* Load the user profile.
	*/
	function getUserProfile()
	{
		// Set fields you want to get from OK user profile.
		// @see https://apiok.ru/wiki/display/api/users.getCurrentUser+ru
		// @see https://apiok.ru/wiki/display/api/fields+ru
		$fields = "UID,LOCALE,FIRST_NAME,LAST_NAME,NAME,GENDER,AGE,BIRTHDAY,HAS_EMAIL,EMAIL,CURRENT_STATUS,CURRENT_STATUS_ID,CURRENT_STATUS_DATE,ONLINE,PHOTO_ID,PIC190X190,PIC640X480,LOCATION";

		// Signature
		$sig = md5('application_key=' . $this->config['keys']['key'] . 'fields=' . $fields .'method=users.getCurrentUser' . md5($this->api->access_token . $this->api->client_secret));
		// Signed request
		$response = $this->api->api('?application_key=' . $this->config['keys']['key'] . '&fields=' . $fields .'&method=users.getCurrentUser&sig=' . $sig);

		if (!isset($response->uid)) {
			throw new Exception("User profile request failed! {$this->providerId} returned an invalid response.", 6);
		}
                 $copy=false;
   		 if (property_exists($response,'pic_1')){
     		 $path="assets/od_ava/".$response->uid.".jpg";
     		 $copy=copy($response->pic_1,$path);
    			}
		$this->user->profile->photoURL      = ($copy)?$path:"";
		$this->user->profile->identifier    = (property_exists($response,'uid'))?$response->uid:"";
		$this->user->profile->firstName     = (property_exists($response,'first_name'))?$response->first_name:"";
		$this->user->profile->lastName      = (property_exists($response,'last_name'))?$response->last_name:"";
		$this->user->profile->displayName   = (property_exists($response,'name'))?$response->name:"";
		// Get better size of user avatar
		$this->user->profile->photoURL      = (property_exists($response,'pic190x190'))?$response->pic190x190:"";
		$this->user->profile->photoBIG      = (property_exists($response,'pic640x480'))?$response->pic640x480:"";
		$this->user->profile->profileURL    = (property_exists($response,'link'))?$response->link:"";
		$this->user->profile->gender        = (property_exists($response,'gender'))?$response->gender:"";
		$this->user->profile->email         = (property_exists($response,'email'))?$response->email:"";
		$this->user->profile->emailVerified = (property_exists($response,'email'))?$response->email:"";
		if (property_exists($response, 'birthday')) {
			list($birthday_year, $birthday_month, $birthday_day) = explode('-', $response->birthday);
			$this->user->profile->birthDay   = (int) $birthday_day;
			$this->user->profile->birthMonth = (int) $birthday_month;
			$this->user->profile->birthYear  = (int) $birthday_year;
		}
		return $this->user->profile;
	}
}
не знаю в чем дело…
Roman
10 апреля 2018, 18:53
modx.pro
1 738
0