Update
This commit is contained in:
@@ -1,5 +1,13 @@
|
||||
<?php
|
||||
return [
|
||||
'rest' => [
|
||||
'value' => [
|
||||
'defaultNamespace' => '\\Bitrix\\Rest\\V3\\Realisation\\Controllers',
|
||||
'routes' => [
|
||||
'documentation' => 'rest.documentation.openApi',
|
||||
],
|
||||
]
|
||||
],
|
||||
'controllers' => [
|
||||
'value' => [
|
||||
'defaultNamespace' => '\\Bitrix\\Rest\\Controller',
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
<?php
|
||||
|
||||
CModule::AddAutoloadClasses(
|
||||
"rest",
|
||||
array(
|
||||
"CRestServer" => "classes/general/rest.php",
|
||||
"CRestUtil" => "classes/general/rest_util.php",
|
||||
"CRestEvent" => "classes/general/rest_event.php",
|
||||
"CRestEventCallback" => "classes/general/rest_event.php",
|
||||
"CRestEventSession" => "classes/general/rest_event.php",
|
||||
"IRestService" => "classes/general/rest.php",
|
||||
"CRestProvider" => "classes/general/rest_provider.php",
|
||||
"CBitrixRestEntity" => "classes/general/restentity.php",
|
||||
"CRestServerBatchItem" => "classes/general/rest.php",
|
||||
"rest" => "install/index.php",
|
||||
)
|
||||
);
|
||||
'rest',
|
||||
[
|
||||
'CRestServer' => 'classes/general/rest.php',
|
||||
'CRestApiServer' => 'classes/general/RestApiServer.php',
|
||||
'CRestUtil' => 'classes/general/rest_util.php',
|
||||
'CRestEvent' => 'classes/general/rest_event.php',
|
||||
'CRestEventCallback' => 'classes/general/rest_event.php',
|
||||
'CRestEventSession' => 'classes/general/rest_event.php',
|
||||
'IRestService' => 'classes/general/rest.php',
|
||||
'CRestProvider' => 'classes/general/rest_provider.php',
|
||||
'CBitrixRestEntity' => 'classes/general/restentity.php',
|
||||
'CRestServerBatchItem' => 'classes/general/rest.php',
|
||||
'rest' => 'install/index.php',
|
||||
]
|
||||
);
|
||||
|
||||
@@ -0,0 +1,541 @@
|
||||
<?php
|
||||
|
||||
use Bitrix\Main\DI\ServiceLocator;
|
||||
use Bitrix\Main\Engine\ControllerBuilder;
|
||||
use Bitrix\Main\Engine\CurrentUser;
|
||||
use Bitrix\Main\Loader;
|
||||
use Bitrix\Main\LoaderException;
|
||||
use Bitrix\Main\ModuleManager;
|
||||
use Bitrix\Main\ObjectException;
|
||||
use Bitrix\Main\SystemException;
|
||||
use Bitrix\Rest\Engine\Access\LoadLimiter;
|
||||
use Bitrix\Rest\Engine\RestManager;
|
||||
use Bitrix\Rest\Event\Session;
|
||||
use Bitrix\Rest\RestExceptionInterface;
|
||||
use Bitrix\Rest\Tools\Diagnostics\RestServerProcessLogger;
|
||||
use Bitrix\Rest\UsageStatTable;
|
||||
use Bitrix\Rest\V3\Controllers\RestController;
|
||||
use Bitrix\Rest\V3\Exceptions\AccessDeniedException;
|
||||
use Bitrix\Rest\V3\Exceptions\Internal\InternalException;
|
||||
use Bitrix\Rest\V3\Exceptions\InvalidSelectException;
|
||||
use Bitrix\Rest\V3\Exceptions\LicenseException;
|
||||
use Bitrix\Rest\V3\Exceptions\MethodNotFoundException;
|
||||
use Bitrix\Rest\V3\Exceptions\RateLimitException;
|
||||
use Bitrix\Rest\V3\Exceptions\RestException;
|
||||
use Bitrix\Rest\V3\Interaction\Request\BatchRequest;
|
||||
use Bitrix\Rest\V3\Interaction\Request\ServerRequest;
|
||||
use Bitrix\Rest\V3\Interaction\Response\BatchResponse;
|
||||
use Bitrix\Rest\V3\Interaction\Response\ErrorResponse;
|
||||
use Bitrix\Rest\V3\Interaction\Response\Response;
|
||||
use Bitrix\Rest\V3\Interaction\Response\ResponseWithRelations;
|
||||
use Bitrix\Rest\V3\Schema\MethodDescription;
|
||||
use Bitrix\Rest\V3\Schema\SchemaManager;
|
||||
|
||||
class CRestApiServer extends CRestServer
|
||||
{
|
||||
protected ?string $localErrorLanguage = null;
|
||||
/**
|
||||
* @var MethodDescription[]
|
||||
*/
|
||||
protected ?array $methodDescriptions = null;
|
||||
|
||||
/**
|
||||
* @var string[]
|
||||
*/
|
||||
private array $availableScopes = [CRestUtil::GLOBAL_SCOPE];
|
||||
private ?array $requestAccess = null;
|
||||
|
||||
protected SchemaManager $schemaManager;
|
||||
|
||||
/**
|
||||
* @param $params
|
||||
* @throws AccessDeniedException
|
||||
*/
|
||||
public function __construct($params)
|
||||
{
|
||||
$this->transport = self::TRANSPORT_JSON;
|
||||
$this->localErrorLanguage = $params['LOCAL_ERROR_LANGUAGE'] ?? null;
|
||||
$this->schemaManager = ServiceLocator::getInstance()->get(SchemaManager::class);
|
||||
|
||||
if (!$this->checkSite())
|
||||
{
|
||||
throw new AccessDeniedException(status: self::STATUS_WRONG_REQUEST);
|
||||
}
|
||||
|
||||
parent::__construct($params);
|
||||
|
||||
$routes = $this->schemaManager->getRouteAliases();
|
||||
$this->method = $routes[$this->method] ?? $this->method;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return MethodDescription[]
|
||||
*/
|
||||
protected function getMethodDescriptions(): array
|
||||
{
|
||||
if ($this->methodDescriptions === null)
|
||||
{
|
||||
$this->methodDescriptions = $this->schemaManager->getMethodDescriptions();
|
||||
}
|
||||
return $this->methodDescriptions;
|
||||
}
|
||||
|
||||
protected function getMethodDescription(string $method): ?MethodDescription
|
||||
{
|
||||
return $this->schemaManager->getMethodDescription($method);
|
||||
}
|
||||
|
||||
public function processServerRequest(ServerRequest $request)
|
||||
{
|
||||
$this->timeStart = microtime(true);
|
||||
|
||||
if (!defined('BX24_REST_SKIP_SEND_HEADERS'))
|
||||
{
|
||||
CRestUtil::sendHeaders();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
return $this->processServerExecution($request);
|
||||
}
|
||||
catch (Throwable $e)
|
||||
{
|
||||
return $this->processException($e);
|
||||
}
|
||||
}
|
||||
|
||||
private function processServerExecution(ServerRequest $request)
|
||||
{
|
||||
$this->initServerExecution($request);
|
||||
|
||||
$methodDescription = $this->getMethodDescription($request->getMethod());
|
||||
if ($methodDescription === null || !Loader::includeModule($methodDescription->getModule()))
|
||||
{
|
||||
throw new MethodNotFoundException($request->getMethod());
|
||||
}
|
||||
|
||||
$this->initRequestScope($request);
|
||||
|
||||
$this->checkServerAuth($request);
|
||||
|
||||
UsageStatTable::log($this);
|
||||
$logger = new RestServerProcessLogger($this);
|
||||
$logger->logRequest();
|
||||
|
||||
$result = $this->processServerRequestCall($request);
|
||||
|
||||
$logger->logResponse($result);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected function checkServerAuth(ServerRequest $request): bool
|
||||
{
|
||||
$res = $this->getRequestAccess($request->getQuery());
|
||||
|
||||
$this->authType = $res['auth_type'];
|
||||
$this->clientId = $res['client_id'] ?? null;
|
||||
$this->passwordId = $res['password_id'] ?? null;
|
||||
$this->authData = $res;
|
||||
|
||||
if (isset($this->authData['auth_connector']) && !$this->canUseConnectors())
|
||||
{
|
||||
throw new LicenseException(status: self::STATUS_FORBIDDEN);
|
||||
}
|
||||
|
||||
if (isset($res['parameters_clear']))
|
||||
{
|
||||
$query = $request->getQuery();
|
||||
foreach ((array)$res['parameters_clear'] as $param)
|
||||
{
|
||||
if (array_key_exists($param, $query))
|
||||
{
|
||||
$this->auth[$param] = $query[$param];
|
||||
unset($query[$param]);
|
||||
}
|
||||
}
|
||||
$request->setQuery($query);
|
||||
}
|
||||
|
||||
if (isset($res['parameters'][Session::PARAM_SESSION]))
|
||||
{
|
||||
Session::set($res['parameters'][Session::PARAM_SESSION]);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function initRequestScope(ServerRequest $request): void
|
||||
{
|
||||
if ($request->getToken() !== null)
|
||||
{
|
||||
[$scope] = explode(CRestUtil::TOKEN_DELIMITER, $request->getToken(), 2);
|
||||
$request->setScope($scope ?: CRestUtil::GLOBAL_SCOPE);
|
||||
}
|
||||
else
|
||||
{
|
||||
$methodDescription = $this->getMethodDescription($request->getMethod());
|
||||
$request->setScope($methodDescription?->getScope());
|
||||
}
|
||||
}
|
||||
|
||||
protected function initServerExecution(ServerRequest $request): void
|
||||
{
|
||||
if (array_key_exists('state', $request->getQuery()))
|
||||
{
|
||||
$this->securityClientState = $request->getQuery()['state'];
|
||||
$query = $request->getQuery();
|
||||
unset($query['state']);
|
||||
$request->setQuery($query);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ServerRequest $request
|
||||
* @return mixed
|
||||
* @throws AccessDeniedException
|
||||
* @throws InternalException
|
||||
* @throws LoaderException
|
||||
* @throws MethodNotFoundException
|
||||
* @throws ObjectException
|
||||
* @throws RateLimitException
|
||||
* @throws SystemException
|
||||
* @throws \Bitrix\Main\ArgumentException
|
||||
* @throws \Bitrix\Main\ArgumentTypeException
|
||||
* @throws \Bitrix\Main\ObjectPropertyException
|
||||
*/
|
||||
protected function processServerRequestCall(ServerRequest $request): mixed
|
||||
{
|
||||
$entityId = $this->getClientId() ?: $this->getPasswordId();
|
||||
|
||||
if (LoadLimiter::is($this->getAuthType(), $entityId, $request->getMethod()))
|
||||
{
|
||||
throw new RateLimitException();
|
||||
}
|
||||
|
||||
$this->timeProcessStart = microtime(true);
|
||||
|
||||
if (ModuleManager::isModuleInstalled('bitrix24') && function_exists('getrusage'))
|
||||
{
|
||||
$this->usage = getrusage();
|
||||
}
|
||||
|
||||
LoadLimiter::registerStarting(
|
||||
$this->getAuthType(),
|
||||
$entityId,
|
||||
$request->getMethod(),
|
||||
);
|
||||
|
||||
$currentUser = CurrentUser::get();
|
||||
|
||||
$response = $this->processRequest($request, $currentUser);
|
||||
|
||||
LoadLimiter::registerEnding(
|
||||
$this->getAuthType(),
|
||||
$entityId,
|
||||
$request->getMethod(),
|
||||
);
|
||||
|
||||
$this->timeProcessFinish = microtime(true);
|
||||
|
||||
return $this->processResponse($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ServerRequest $request
|
||||
* @param CurrentUser $currentUser
|
||||
* @return Response
|
||||
* @throws AccessDeniedException
|
||||
* @throws InternalException
|
||||
* @throws MethodNotFoundException
|
||||
* @throws ObjectException
|
||||
* @throws SystemException
|
||||
*/
|
||||
protected function processRequest(ServerRequest $request, CurrentUser $currentUser): Response
|
||||
{
|
||||
if ($request->getMethod() === 'batch')
|
||||
{
|
||||
return $this->processBatchServerExecution($request, $currentUser);
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->processServerRequestExecution($request, $currentUser);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ServerRequest $request
|
||||
* @param CurrentUser $currentUser
|
||||
* @return Response
|
||||
* @throws AccessDeniedException
|
||||
* @throws InternalException
|
||||
* @throws InvalidSelectException
|
||||
* @throws MethodNotFoundException
|
||||
* @throws ObjectException
|
||||
* @throws SystemException
|
||||
*/
|
||||
protected function processBatchServerExecution(ServerRequest $request, CurrentUser $currentUser): Response
|
||||
{
|
||||
$jsonData = $request->getHttpRequest()->getJsonList()->toArray();
|
||||
$batchRequest = new BatchRequest($jsonData);
|
||||
$batchResponse = new BatchResponse();
|
||||
foreach ($batchRequest->getItems() as $index => $item)
|
||||
{
|
||||
$context = $batchResponse->getContext();
|
||||
$httpJsonData = $this->prepareJsonData($context, $item->getQuery());
|
||||
$itemHttpRequest = new \Bitrix\Main\HttpRequest(\Bitrix\Main\Context::getCurrent()->getServer(), [], [], [], [], $httpJsonData);
|
||||
$itemServerRequest = new ServerRequest($item->getMethod(), $request->getQuery(), $itemHttpRequest);
|
||||
|
||||
$response = $this->processServerRequestExecution($itemServerRequest, $currentUser);
|
||||
if ($response instanceof ErrorResponse)
|
||||
{
|
||||
return $response;
|
||||
}
|
||||
$item->setResponse($response);
|
||||
$batchResponse->addItem($item->getAlias() ?? $index, $response);
|
||||
}
|
||||
return $batchResponse;
|
||||
}
|
||||
|
||||
protected function prepareJsonData(array $context, array $queryParams): array
|
||||
{
|
||||
$getValueByPath = function ($path, $context)
|
||||
{
|
||||
$current = $context;
|
||||
$pathParts = explode('.', $path);
|
||||
|
||||
foreach ($pathParts as $key)
|
||||
{
|
||||
if (!is_array($current) && !($current instanceof ArrayAccess))
|
||||
{
|
||||
throw new InvalidSelectException("Invalid context path '{$path}' - expected array at '{$key}'");
|
||||
}
|
||||
if (!isset($current[$key]))
|
||||
{
|
||||
throw new InvalidSelectException("Path '{$path}' not found in context");
|
||||
}
|
||||
$current = $current[$key];
|
||||
}
|
||||
|
||||
return $current;
|
||||
};
|
||||
|
||||
$replaceRef = function ($value) use ($context, $getValueByPath, &$replaceRef)
|
||||
{
|
||||
if (is_array($value))
|
||||
{
|
||||
if (isset($value['$ref']))
|
||||
{
|
||||
return $getValueByPath($value['$ref'], $context);
|
||||
}
|
||||
|
||||
if (isset($value['$refArray']))
|
||||
{
|
||||
$refValue = $value['$refArray'];
|
||||
|
||||
if (is_string($refValue))
|
||||
{
|
||||
$lastDotPos = strrpos($refValue, '.');
|
||||
if ($lastDotPos === false)
|
||||
{
|
||||
throw new InvalidSelectException("Invalid \$refArray format - expected 'path.to.array.field'");
|
||||
}
|
||||
|
||||
$arrayPath = substr($refValue, 0, $lastDotPos);
|
||||
$field = substr($refValue, $lastDotPos + 1);
|
||||
|
||||
$items = $getValueByPath($arrayPath, $context);
|
||||
if (!is_array($items) && !($items instanceof Traversable))
|
||||
{
|
||||
throw new InvalidSelectException("Path '{$arrayPath}' must point to an array or iterable");
|
||||
}
|
||||
|
||||
$result = [];
|
||||
foreach ($items as $item)
|
||||
{
|
||||
if (!is_array($item) && !($item instanceof ArrayAccess))
|
||||
{
|
||||
throw new InvalidSelectException("Items in '{$arrayPath}' must be arrays or objects");
|
||||
}
|
||||
if (!isset($item[$field]))
|
||||
{
|
||||
throw new InvalidSelectException("Field '{$field}' not found in items");
|
||||
}
|
||||
$result[] = $item[$field];
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
throw new InvalidSelectException("Invalid \$refArray value - expected string");
|
||||
}
|
||||
|
||||
// Рекурсивная обработка вложенных массивов
|
||||
return array_map($replaceRef, $value);
|
||||
}
|
||||
|
||||
return $value;
|
||||
};
|
||||
|
||||
return $replaceRef($queryParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws MethodNotFoundException
|
||||
* @throws AccessDeniedException
|
||||
* @throws ObjectException
|
||||
* @throws InternalException
|
||||
* @throws SystemException
|
||||
*/
|
||||
protected function processServerRequestExecution(ServerRequest $request, CurrentUser $currentUser): Response
|
||||
{
|
||||
$methodDescription = $this->getMethodDescription($request->getMethod());
|
||||
if ($methodDescription === null)
|
||||
{
|
||||
throw new MethodNotFoundException($request->getMethod());
|
||||
}
|
||||
|
||||
if (!$request->getScope())
|
||||
{
|
||||
$request->setScope($methodDescription->getScope() ?? null);
|
||||
}
|
||||
|
||||
if (!$this->isRequestScopeAvailable($request->getScope()))
|
||||
{
|
||||
throw new AccessDeniedException(status: self::STATUS_FORBIDDEN);
|
||||
}
|
||||
|
||||
$controller = ControllerBuilder::build($methodDescription->getController(), ['scope' => \Bitrix\Main\Engine\Controller::SCOPE_REST, 'currentUser' => $currentUser, 'request' => $request->getHttpRequest()]);
|
||||
|
||||
if (!$controller instanceof RestController)
|
||||
{
|
||||
$exception = new SystemException('Use should use only RestController');
|
||||
throw new InternalException($exception);
|
||||
}
|
||||
|
||||
$controller->setLocalErrorLanguage($this->localErrorLanguage);
|
||||
|
||||
$manager = new RestManager();
|
||||
$autoWirings = $manager->getAutoWirings();
|
||||
|
||||
$manager->registerAutoWirings($autoWirings);
|
||||
$response = $controller->run($methodDescription->getMethod(), [$request->getQuery(), ['__restServer' => $this]]);
|
||||
$manager->unRegisterAutoWirings($autoWirings);
|
||||
if ($controller->hasErrors())
|
||||
{
|
||||
return new ErrorResponse($controller->getErrors());
|
||||
}
|
||||
|
||||
if (!$response instanceof Response)
|
||||
{
|
||||
$exception = new SystemException('Use should use only Response');
|
||||
throw new InternalException($exception);
|
||||
}
|
||||
|
||||
if ($response instanceof ResponseWithRelations && !empty($response->getRelations()))
|
||||
{
|
||||
foreach ($response->getRelations() as $relation)
|
||||
{
|
||||
if (!$relation->getRequest()->filter)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$httpRequestBody = [
|
||||
'select' => array_merge($relation->getRequest()->select->getList(), $relation->getRequest()->select->getRelationFields()),
|
||||
'filter' => $relation->getRequest()->filter->getList(),
|
||||
];
|
||||
if ($relation->getRequest()->order)
|
||||
{
|
||||
$httpRequestBody['order'] = $relation->getRequest()->order->getList();
|
||||
}
|
||||
|
||||
$httpRequest = new \Bitrix\Main\HttpRequest(\Bitrix\Main\Context::getCurrent()->getServer(), [], [], [], [], $httpRequestBody);
|
||||
|
||||
$subRequest = new ServerRequest($relation->getMethod(), $request->getQuery(), $httpRequest);
|
||||
$subResponse = $this->processRequest($subRequest, $currentUser);
|
||||
$relation->setResponse($subResponse);
|
||||
}
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
protected function processException(RestExceptionInterface|Exception $e): array
|
||||
{
|
||||
global $APPLICATION;
|
||||
|
||||
$this->error = $e;
|
||||
|
||||
$ex = $APPLICATION->GetException();
|
||||
if ($ex instanceof CApplicationException)
|
||||
{
|
||||
$this->error = new InternalException(new Exception($ex->msg));
|
||||
}
|
||||
|
||||
return $this->outputError();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Response $response
|
||||
*/
|
||||
protected function processResponse(mixed $response): array
|
||||
{
|
||||
$result = $response->toArray();
|
||||
|
||||
if ($this->securityClientState && $this->securityMethodState)
|
||||
{
|
||||
$result['signature'] = $this->getApplicationSignature();
|
||||
}
|
||||
|
||||
if (!$response->isShowRawData())
|
||||
{
|
||||
$result = ['result' => $result];
|
||||
}
|
||||
|
||||
if ($response->isShowDebugInfo())
|
||||
{
|
||||
$result = $this->appendDebugInfo($result);
|
||||
}
|
||||
|
||||
if ($response instanceof ErrorResponse)
|
||||
{
|
||||
$this->error = $response;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
protected function getRequestAccess(array $query): array
|
||||
{
|
||||
if ($this->requestAccess === null)
|
||||
{
|
||||
$res = [];
|
||||
if (!CRestUtil::checkAuth($query, '_global', $res))
|
||||
{
|
||||
throw new AccessDeniedException(status: $res['error'] === 'insufficient_scope' ? self::STATUS_FORBIDDEN : self::STATUS_UNAUTHORIZED);
|
||||
}
|
||||
$this->requestAccess = $res;
|
||||
if ($res['scope'])
|
||||
{
|
||||
$this->availableScopes = array_merge($this->availableScopes, explode(',', $res['scope']));
|
||||
}
|
||||
}
|
||||
|
||||
return $this->requestAccess;
|
||||
}
|
||||
|
||||
private function isRequestScopeAvailable(?string $scope): bool
|
||||
{
|
||||
return in_array($scope, $this->availableScopes, true);
|
||||
}
|
||||
|
||||
protected function outputError(): array
|
||||
{
|
||||
if (!is_subclass_of($this->error, RestException::class))
|
||||
{
|
||||
$this->error = new InternalException($this->error);
|
||||
}
|
||||
return ['error' => $this->error->output($this->localErrorLanguage)];
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -122,7 +122,7 @@ class CRestProvider extends IRestService
|
||||
),
|
||||
'OnSubscriptionRenew' => [
|
||||
'rest',
|
||||
'onAfterSubscriptionRenew',
|
||||
'onSubscriptionRenew',
|
||||
[
|
||||
__CLASS__,
|
||||
'onSubscriptionRenew',
|
||||
|
||||
@@ -9,7 +9,7 @@ IncludeModuleLangFile(__FILE__);
|
||||
|
||||
class CRestUtil
|
||||
{
|
||||
const GLOBAL_SCOPE = '_global';
|
||||
public const GLOBAL_SCOPE = '_global';
|
||||
const EVENTS = '_events';
|
||||
const PLACEMENTS = '_placements';
|
||||
|
||||
@@ -237,7 +237,7 @@ class CRestUtil
|
||||
"NOTIFY_MODULE" => "rest",
|
||||
"NOTIFY_TAG" => "REST|APP_INSTALL_NOTIFY|".$USER->GetID()."|TO|".$id,
|
||||
"NOTIFY_SUB_TAG" => "REST|APP_INSTALL_NOTIFY",
|
||||
"NOTIFY_EVENT" => "admin_notification",
|
||||
"NOTIFY_EVENT" => "app_install",
|
||||
"NOTIFY_MESSAGE" => GetMessage(
|
||||
"REST_APP_INSTALL_NOTIFY_TEXT",
|
||||
array(
|
||||
@@ -529,22 +529,22 @@ class CRestUtil
|
||||
// compatibility fix: other modules use checkAuth instead of /rest/download
|
||||
if(!is_array($query))
|
||||
{
|
||||
$query = array('auth' => $query);
|
||||
$query = ['auth' => $query];
|
||||
}
|
||||
|
||||
foreach(GetModuleEvents('rest', 'OnRestCheckAuth', true) as $eventHandler)
|
||||
{
|
||||
$eventResult = ExecuteModuleEventEx($eventHandler, array($query, $scope, &$res));
|
||||
if($eventResult !== null)
|
||||
$eventResult = ExecuteModuleEventEx($eventHandler, [$query, $scope, &$res]);
|
||||
if ($eventResult !== null)
|
||||
{
|
||||
return $eventResult;
|
||||
}
|
||||
}
|
||||
|
||||
$res = array(
|
||||
"error" => "NO_AUTH_FOUND",
|
||||
"error_description" => "Wrong authorization data",
|
||||
);
|
||||
$res = [
|
||||
'error' => 'NO_AUTH_FOUND',
|
||||
'error_description' => 'Wrong authorization data',
|
||||
];
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
use Bitrix\Iblock\Public\Service\RestValidator as IblockRestValidator;
|
||||
use Bitrix\Main\Application;
|
||||
use Bitrix\Main\DB\SqlQueryException;
|
||||
use Bitrix\Rest\Exceptions\ArgumentException;
|
||||
@@ -652,6 +653,16 @@ class CBitrixRestEntity extends IRestService
|
||||
$arFilter['IBLOCK_ID'] = $iBlockId;
|
||||
$arFilter['CHECK_PERMISSIONS'] = 'Y';
|
||||
|
||||
$validator = IblockRestValidator\Format\ElementFilterFieldValidator::getInstance();
|
||||
$internalResult = $validator->run($arFilter);
|
||||
if (!$internalResult->isSuccess())
|
||||
{
|
||||
throw new RestException(
|
||||
implode(' ', $internalResult->getErrorMessages()),
|
||||
RestException::ERROR_ARGUMENT
|
||||
);
|
||||
}
|
||||
|
||||
$dbRes = \CIBlockElement::GetList(
|
||||
$arSort,
|
||||
$arFilter,
|
||||
@@ -728,6 +739,17 @@ class CBitrixRestEntity extends IRestService
|
||||
{
|
||||
if(\CIBlockRights::UserHasRightTo($arIBlock['ID'], $arIBlock['ID'], 'element_edit'))
|
||||
{
|
||||
$validator = IblockRestValidator\Format\ElementFieldValidator::getInstance();
|
||||
$validator->setFileValidator(new IblockRestValidator\Format\Type\SkipFile());
|
||||
$internalResult = $validator->run($params);
|
||||
if (!$internalResult->isSuccess())
|
||||
{
|
||||
throw new RestException(
|
||||
implode(' ', $internalResult->getErrorMessages()),
|
||||
RestException::ERROR_ARGUMENT
|
||||
);
|
||||
}
|
||||
|
||||
$arItemFields = self::prepareItem($params, $arIBlock, $server);
|
||||
|
||||
$ib = new \CIBlockElement();
|
||||
@@ -796,6 +818,17 @@ class CBitrixRestEntity extends IRestService
|
||||
|
||||
if($arRes)
|
||||
{
|
||||
$validator = IblockRestValidator\Format\ElementFieldValidator::getInstance();
|
||||
$validator->setFileValidator(new IblockRestValidator\Format\Type\SkipFile());
|
||||
$internalResult = $validator->run($params);
|
||||
if (!$internalResult->isSuccess())
|
||||
{
|
||||
throw new RestException(
|
||||
implode(' ', $internalResult->getErrorMessages()),
|
||||
RestException::ERROR_ARGUMENT
|
||||
);
|
||||
}
|
||||
|
||||
$arItemFields = self::prepareItem($params, $arIBlock, $server);
|
||||
|
||||
if(count($arItemFields) > 0)
|
||||
|
||||
@@ -3,4 +3,5 @@ $rest_default_option = array(
|
||||
'enable_mod_zip' => 'N',
|
||||
'import_max_size' => '100',
|
||||
'oauth_module_supported' => 'Y',
|
||||
'can_use_demo_after_subscription' => 'N'
|
||||
);
|
||||
|
||||
@@ -6,6 +6,8 @@ require_once __DIR__.'/autoload.php';
|
||||
|
||||
class CRestEventHandlers
|
||||
{
|
||||
private const ACTIVATE_DEMO_MARKET_PARAM = 'activate_demo_market';
|
||||
|
||||
public static function OnBeforeProlog()
|
||||
{
|
||||
if(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'OPTIONS')
|
||||
@@ -21,6 +23,21 @@ class CRestEventHandlers
|
||||
die();
|
||||
}
|
||||
}
|
||||
|
||||
$context = \Bitrix\Main\Application::getInstance()->getContext();
|
||||
$request = $context->getRequest();
|
||||
|
||||
$needToActivateDemoMarket = $request->getQuery(self::ACTIVATE_DEMO_MARKET_PARAM);
|
||||
|
||||
if (
|
||||
isset($needToActivateDemoMarket)
|
||||
&& $needToActivateDemoMarket === 'Y'
|
||||
&& Loader::includeModule('rest')
|
||||
)
|
||||
{
|
||||
$subscription = new \Bitrix\Rest\Internal\Integration\Market\Subscription();
|
||||
$subscription->activateDemo();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +48,7 @@ CJSCore::registerExt('marketplace', array(
|
||||
'css' => '/bitrix/js/rest/css/marketplace.css',
|
||||
'lang' => BX_ROOT.'/modules/rest/lang/'.LANGUAGE_ID.'/jsmarketplace.php',
|
||||
'lang_additional' => array(
|
||||
'IS_RENAMED_MARKET' => \Bitrix\Rest\Integration\Market\Label::isRenamedMarket() ? 'Y' : 'N',
|
||||
'REST_MARKETPLACE_CATEGORY_URL' => '/marketplace/',
|
||||
'REST_BUY_SUBSCRIPTION_URL' => \Bitrix\Rest\Marketplace\Url::getSubscriptionBuyUrl(),
|
||||
'CAN_BUY_SUBSCRIPTION' => \Bitrix\Rest\Marketplace\Client::canBuySubscription() ? 'Y' : 'N',
|
||||
|
||||
@@ -16,7 +16,7 @@ $arComponentDescription = array(
|
||||
"ID" => "content",
|
||||
"CHILD" => array(
|
||||
"ID" => "b24marketplace",
|
||||
"NAME" => \Bitrix\Rest\Integration\Market\Label::isRenamedMarket() ? Loc::getMessage("RMP_PATH_B24MP_DESCR_2_MSGVER_1") : Loc::getMessage("RMP_PATH_B24MP_DESCR_2"),
|
||||
"NAME" => \Bitrix\Rest\Integration\Market\Label::isRenamedMarket() ? Loc::getMessage("RMP_PATH_B24MP_DESCR_2_MSGVER_1") : Loc::getMessage("RMP_PATH_B24MP_DESCR_2_MSGVER_2"),
|
||||
)
|
||||
),
|
||||
// "CACHE_PATH" => "Y",
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
$MESS["RMP_LAYOUT_COMP_DESCR_2"] = "Application page";
|
||||
$MESS["RMP_LAYOUT_COMP_NAME_2"] = "Application page";
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2"] = "Bitrix24 Market";
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2_MSGVER_1"] = "Bitrix24 Market";
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2_MSGVER_2"] = "Bitrix24 Market";
|
||||
|
||||
+3
-1
@@ -1,3 +1,5 @@
|
||||
<?php
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2"] = "Битрикс24 Маркетплейс";
|
||||
$MESS["RMP_LAYOUT_COMP_DESCR_2"] = "Қосымша парақшасы";
|
||||
$MESS["RMP_LAYOUT_COMP_NAME_2"] = "Қосымша парақшасы";
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2_MSGVER_1"] = "Маркетплейс";
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2_MSGVER_2"] = "Битрикс24 Маркет";
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
$MESS["RMP_DETAIL_URL_2"] = "Қосымша парақшасының мекенжайына сілтеме қалыбы";
|
||||
$MESS["RMP_SEF_APPLICATION"] = "Қосымша парақшасының мекенжайы";
|
||||
$MESS["RMP_VA_ID"] = "Қосымша ID ";
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
$MESS["RMP_LAYOUT_COMP_NAME_2"] = "Страница приложения";
|
||||
$MESS["RMP_LAYOUT_COMP_DESCR_2"] = "Страница приложения";
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2"] = "Битрикс24.Маркет";
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2_MSGVER_2"] = "Битрикс24 Маркет";
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2_MSGVER_1"] = "Маркетплейс";
|
||||
+1
-1
@@ -6,5 +6,5 @@ $MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_BTN_DEMO_SUBSCRIBE"] = "Free 15-days trial
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_APP"] = "Your #APP_NAME# subscription has expired";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_2"] = "Your subscription has expired";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_2_MSGVER_1"] = "Your subscription has expired";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_APP"] = "To use #APP_NAME#, please subscribe to Bitrix24.Market Plus or activate a free Bitrix24.Market Plus 15-days trial.";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_APP_MSGVER_1"] = "To use #APP_NAME#, please subscribe to Bitrix24 Market Plus or activate a free Bitrix24 Market Plus 15-days trial.";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_APP_MSGVER_2"] = "To use #APP_NAME#, please subscribe to Bitrix24 Market Plus or activate a free Bitrix24 Market Plus 15-days trial.";
|
||||
|
||||
+1
-1
@@ -6,5 +6,5 @@ $MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_BTN_DEMO_SUBSCRIBE"] = "15 күнге те
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_APP"] = "\"#APP_NAME#\" төленген пайдалану кезеңі аяқталды";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_2"] = "Маркетке жазылым аяқталды";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_2_MSGVER_1"] = "Маркетплейске жазылу аяқталды";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_APP"] = "\"#APP_NAME#\" қосымшасын пайдалану үшін Битрикс24.Маркет Плюс-ке жазылым сатып алыңыз немесе Битрикс24.Маркет Плюс-ке 15 күнге тегін демо-кезеңін іске қосыңыз. ";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_APP_MSGVER_1"] = "\"#APP_NAME#\" қосымшасын пайдалану үшін Маркетплейс жазылымын сатып алыңыз немесе 15 күндік тегін маркетплейс демо кезеңін қосыңыз.";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_APP_MSGVER_2"] = "\"#APP_NAME#\" қосымшасын пайдалану үшін Битрикс24 Маркет Плюс жазылымын сатып алыңыз немесе Битрикс24.Маркет Плюс демо кезеңін 15 күнге тегін қосыңыз.";
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_2"] = "Подписка на Маркет закончилась";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_2_MSGVER_1"] = "Подписка на Маркетплейс закончилась";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_APP"] = "Для использования приложения \"#APP_NAME#\" купите подписку на Битрикс24.Маркет Плюс или активируйте бесплатный демо-период Битрикс24.Маркет Плюс на 15 дней.";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_APP_MSGVER_2"] = "Для использования приложения \"#APP_NAME#\" купите подписку на Битрикс24 Маркет Плюс или активируйте бесплатный демо-период Битрикс24.Маркет Плюс на 15 дней.";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_APP_MSGVER_1"] = "Для использования приложения \"#APP_NAME#\" купите подписку на Маркетплейс или активируйте бесплатный демо-период Маркетплейс на 15 дней.";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_APP"] = "Оплаченный период использования \"#APP_NAME#\" закончился";
|
||||
$MESS["REST_APP_LAYOUT_PAYMENT_ACCESS_BTN_BUY_SUBSCRIBE"] = "Продлить подписку";
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ if ($arResult['PAYMENT_TYPE'] === AppTable::STATUS_SUBSCRIPTION || $arResult['AP
|
||||
if (!$arResult['SUBSCRIPTION_FINISH'])
|
||||
{
|
||||
$title = Loc::getMessage(
|
||||
'REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_APP',
|
||||
'REST_APP_LAYOUT_PAYMENT_ACCESS_TITLE_SUBSCRIBE_APP_MSGVER_2',
|
||||
[
|
||||
'#APP_NAME#' => htmlspecialcharsbx($arResult['APP_NAME'])
|
||||
]
|
||||
|
||||
+1
-1
@@ -175,7 +175,7 @@ BX.rest.AppLayout.set(
|
||||
<?
|
||||
if($arParams['PLACEMENT'] !== \Bitrix\Rest\PlacementTable::PLACEMENT_DEFAULT):
|
||||
?>
|
||||
BX.rest.AppLayout.get('<?=$arResult['APP_SID']?>').denyInterface(['setTitle', 'setScroll', 'reloadWindow']);
|
||||
BX.rest.AppLayout.get('<?=$arResult['APP_SID']?>').denyInterface(['setTitle']);
|
||||
<?
|
||||
endif;
|
||||
if($arParams['POPUP']):
|
||||
|
||||
+2
-2
@@ -23,8 +23,8 @@ if(!function_exists('restMenuBuildEventHandler'))
|
||||
function restMenuBuildEventHandler($placement, $eventParam, &$menu)
|
||||
{
|
||||
$appList = \Bitrix\Rest\HandlerHelper::getApplicationList($placement);
|
||||
$langInstall = \Bitrix\Main\Localization\Loc::getMessage('REST_AP_MENU_ITEM_TEXT_MORE_2');
|
||||
$langMarket = \Bitrix\Main\Localization\Loc::getMessage('REST_AP_MENU_ITEM_TEXT_2');
|
||||
$langInstall = \Bitrix\Main\Localization\Loc::getMessage('REST_AP_MENU_ITEM_TEXT_MORE_2_MSGVER_2');
|
||||
$langMarket = \Bitrix\Main\Localization\Loc::getMessage('REST_AP_MENU_ITEM_TEXT_2_MSGVER_2');
|
||||
if (\Bitrix\Rest\Integration\Market\Label::isRenamedMarket())
|
||||
{
|
||||
$langMarket = \Bitrix\Main\Localization\Loc::getMessage('REST_AP_MENU_ITEM_TEXT_2_MSGVER_1');
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
$MESS["REST_AP_MENU_ITEM_TEXT_2"] = "Bitrix24.Market";
|
||||
$MESS["REST_AP_MENU_ITEM_TEXT_2_MSGVER_1"] = "Bitrix24 Market";
|
||||
$MESS["REST_AP_MENU_ITEM_TEXT_MORE_2"] = "Install from Bitrix24 Market";
|
||||
$MESS["REST_AP_MENU_ITEM_TEXT_2_MSGVER_2"] = "Bitrix24 Market";
|
||||
$MESS["REST_AP_MENU_ITEM_TEXT_MORE_2_MSGVER_1"] = "Install from Bitrix24 Market";
|
||||
$MESS["REST_AP_MENU_ITEM_TEXT_MORE_2_MSGVER_2"] = "Install from Bitrix24 Market";
|
||||
$MESS["REST_AP_MENU_ITEM_TITLE_2"] = "Bitrix24 Market extra features";
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
$MESS["REST_AP_MENU_ITEM_TEXT_2"] = "Битрикс24 Маркетплейс";
|
||||
$MESS["REST_AP_MENU_ITEM_TEXT_2_MSGVER_1"] = "Маркетплейс";
|
||||
$MESS["REST_AP_MENU_ITEM_TEXT_MORE_2"] = "Битрикс24.Маркет-тен орнату";
|
||||
$MESS["REST_AP_MENU_ITEM_TEXT_2_MSGVER_2"] = "Битрикс24 Маркет";
|
||||
$MESS["REST_AP_MENU_ITEM_TEXT_MORE_2_MSGVER_1"] = "Маркетплейстен орнату";
|
||||
$MESS["REST_AP_MENU_ITEM_TEXT_MORE_2_MSGVER_2"] = "Битрикс24 Маркеттен орнату";
|
||||
$MESS["REST_AP_MENU_ITEM_TITLE_2"] = "Қосымшалар каталогынан қосымша мүмкіндіктер";
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
$MESS['REST_AP_MENU_ITEM_TEXT_2'] = 'Битрикс24.Маркет';
|
||||
$MESS['REST_AP_MENU_ITEM_TEXT_2_MSGVER_2'] = 'Битрикс24 Маркет';
|
||||
$MESS['REST_AP_MENU_ITEM_TEXT_2_MSGVER_1'] = 'Маркетплейс';
|
||||
$MESS['REST_AP_MENU_ITEM_TEXT_MORE_2'] = 'Установить из Битрикс24.Маркет';
|
||||
$MESS['REST_AP_MENU_ITEM_TEXT_MORE_2_MSGVER_2'] = 'Установить из Битрикс24 Маркет';
|
||||
$MESS['REST_AP_MENU_ITEM_TEXT_MORE_2_MSGVER_1'] = 'Установить из Маркетплейс';
|
||||
$MESS['REST_AP_MENU_ITEM_TITLE_2'] = 'Дополнительные возможности из каталога приложений';
|
||||
|
||||
+7
-7
@@ -50,10 +50,10 @@ class CRestConfigurationActionComponent extends CBitrixComponent
|
||||
|
||||
if ($this->getTemplateName() === 'crm')
|
||||
{
|
||||
$item['title'] = Loc::getMessage('REST_CONFIGURATION_ACTION_IMPORT_CRM_TITLE');
|
||||
$item['description'] = Loc::getMessage('REST_CONFIGURATION_ACTION_IMPORT_CRM_DESCRIPTION');
|
||||
$item['title'] = Loc::getMessage('REST_CONFIGURATION_ACTION_IMPORT_CRM_TITLE_MSGVER_1');
|
||||
$item['description'] = Loc::getMessage('REST_CONFIGURATION_ACTION_IMPORT_CRM_DESCRIPTION_MSGVER_1');
|
||||
$item['action'] = Loc::getMessage('REST_CONFIGURATION_ACTION_IMPORT_CRM_ACTION');
|
||||
$item['icon'] = '/bitrix/images/rest/configuration/rest-market-site-import-crm.svg';
|
||||
$item['icon'] = '/bitrix/images/rest/configuration/rest-market-site-import-crm.png';
|
||||
$result['ITEMS']['import'] = $item;
|
||||
}
|
||||
else
|
||||
@@ -73,10 +73,10 @@ class CRestConfigurationActionComponent extends CBitrixComponent
|
||||
|
||||
if ($this->getTemplateName() === 'crm')
|
||||
{
|
||||
$item['title'] = Loc::getMessage('REST_CONFIGURATION_ACTION_EXPORT_CRM_TITLE');
|
||||
$item['description'] = Loc::getMessage('REST_CONFIGURATION_ACTION_EXPORT_CRM_DESCRIPTION');
|
||||
$item['title'] = Loc::getMessage('REST_CONFIGURATION_ACTION_EXPORT_CRM_TITLE_MSGVER_1');
|
||||
$item['description'] = Loc::getMessage('REST_CONFIGURATION_ACTION_EXPORT_CRM_DESCRIPTION_MSGVER_1');
|
||||
$item['action'] = Loc::getMessage('REST_CONFIGURATION_ACTION_EXPORT_CRM_ACTION');
|
||||
$item['icon'] = '/bitrix/images/rest/configuration/rest-market-site-export-crm.svg';
|
||||
$item['icon'] = '/bitrix/images/rest/configuration/rest-market-site-export-crm.png';
|
||||
$result['ITEMS']['export'] = $item;
|
||||
}
|
||||
else
|
||||
@@ -132,4 +132,4 @@ class CRestConfigurationActionComponent extends CBitrixComponent
|
||||
$this->includeComponentTemplate();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_ACTION"] = "Export";
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_DESCRIPTION"] = "Save and share your CRM configuration and preferences.";
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_TITLE"] = "Share your solutions";
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_DESCRIPTION_MSGVER_1"] = "Export your CRM and preferences<br/>to another Bitrix24.";
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_TITLE_MSGVER_1"] = "Share your solutions";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_ACTION"] = "Migrate";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_DESCRIPTION"] = "Migrate your data and preferences </br>from a third-party CRM.";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_TITLE"] = "Bitrix24 Quick Start";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_DESCRIPTION_MSGVER_1"] = "Migrate your data and preferences </br>from a third-party CRM.";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_TITLE_MSGVER_1"] = "Quick start";
|
||||
$MESS["REST_CONFIGURATION_ACTION_TITLE_EXPORT"] = "Export";
|
||||
$MESS["REST_CONFIGURATION_ACTION_TITLE_IMPORT"] = "Import";
|
||||
$MESS["REST_CONFIGURATION_ACTION_TITLE_LOAD_MARKETPLACE_2"] = "Publish your CRM solution preset to Bitrix24 Market";
|
||||
|
||||
+4
-4
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_ACTION"] = "Экспорттау";
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_DESCRIPTION"] = "CRM баптауларын сақтаңыз, </br>оларды әріптестеріңізбен бөлісу үшін";
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_TITLE"] = "Шешімдермен бөлісіңіз";
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_DESCRIPTION_MSGVER_1"] = "CRM-ді барлық баптауларымен <br/> басқа Битрикс24-ке экспорттаңыз";
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_TITLE_MSGVER_1"] = "Дайын шешіммен бөлісіңіз";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_ACTION"] = "Импорттау";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_DESCRIPTION"] = "Баптаулар мен деректерді </br>басқа CRM-ден тасымалдау";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_TITLE"] = "Битрикс24-те жылдам бастау";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_DESCRIPTION_MSGVER_1"] = "CRM-ді барлық баптаулармен <br/> басқа Битрикс24-тен тасымалдаңыз";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_TITLE_MSGVER_1"] = "Жылдам бастау";
|
||||
$MESS["REST_CONFIGURATION_ACTION_TITLE_EXPORT"] = "Экспорттау";
|
||||
$MESS["REST_CONFIGURATION_ACTION_TITLE_IMPORT"] = "Импорттау";
|
||||
$MESS["REST_CONFIGURATION_ACTION_TITLE_LOAD_MARKETPLACE_2"] = "Маркетте жариялау";
|
||||
|
||||
+5
-5
@@ -3,9 +3,9 @@ $MESS["REST_CONFIGURATION_ACTION_TITLE_IMPORT"] = "Импортировать";
|
||||
$MESS["REST_CONFIGURATION_ACTION_TITLE_EXPORT"] = "Экспортировать";
|
||||
$MESS["REST_CONFIGURATION_ACTION_TITLE_LOAD_MARKETPLACE_2"] = "Опубликовать в Маркет";
|
||||
$MESS["REST_CONFIGURATION_ACTION_TITLE_LOAD_MARKETPLACE_2_MSGVER_1"] = "Опубликовать в Маркетплейс";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_TITLE"] = "Быстрый старт <br/>в Битрикс24";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_DESCRIPTION"] = "Перенесите настройки и данные <br/>из другой CRM";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_TITLE_MSGVER_1"] = "Быстрый старт";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_DESCRIPTION_MSGVER_1"] = "Перенесите CRM со всеми настройками <br/> из другого Битрикс24";
|
||||
$MESS["REST_CONFIGURATION_ACTION_IMPORT_CRM_ACTION"] = "Импортировать";
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_TITLE"] = "Делитесь решениями";
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_DESCRIPTION"] = "Сохраняйте настройки вашей <br/>CRM, чтобы поделиться ими <br/>с коллегами";
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_ACTION"] = "Экспортировать";
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_TITLE_MSGVER_1"] = "Делитесь готовым решением";
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_DESCRIPTION_MSGVER_1"] = "Экспортируйте CRM со всеми настройками <br/> в другой Битрикс24";
|
||||
$MESS["REST_CONFIGURATION_ACTION_EXPORT_CRM_ACTION"] = "Экспортировать";
|
||||
+3
-3
@@ -19,11 +19,11 @@
|
||||
}
|
||||
|
||||
.rest-market-section__item-img {
|
||||
width: 190px;
|
||||
height: 190px;
|
||||
width: 185px;
|
||||
height: 175px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: -10px;
|
||||
bottom: -3px;
|
||||
}
|
||||
|
||||
.rest-market-section__item_export {
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
.rest-market-section{display:flex;align-items:center;justify-content:space-between}.rest-market-section__item{width:432px;#min-width:350px;height:170px;border-radius:16px;position:relative;overflow:hidden}.rest-market-section__item_import{margin-right:15px;background-color:var(--pallete-blue-blue-55,#58a4ff)}.rest-market-section__item-img{width:190px;height:190px;position:absolute;right:0;bottom:-10px}.rest-market-section__item_export{background-color:var(--pallete-green-green-55,#15c674)}.rest-market-section__item-container{padding:18px}.rest-market-section__item-title{color:#fff;font-weight:600;font-size:17px;line-height:23px;letter-spacing:.2px;width:300px;margin-bottom:6px}.rest-market-section__item-description{color:#fff;font-weight:400;font-size:14px;line-height:19px;letter-spacing:0;width:300px}.rest-market-section__item-action{margin-top:18px}.rest-market-section__item-action .ui-btn{--ui-btn-background:var(--design-outline-default-design-outline-bg,#fff)!important;--ui-btn-border-color:var(--design-outline-default-design-outline-stroke,#edeef0)!important;--ui-btn-color:var(--design-outline-default-design-outline-content,#525c69)!important;--ui-btn-background-hover:var(--design-outline-default-design-outline-bg,hsla(0,0%,100%,.9))!important;--ui-btn-background-active:var(--design-outline-default-design-outline-bg,hsla(0,0%,100%,.9))!important}
|
||||
.rest-market-section{display:flex;align-items:center;justify-content:space-between}.rest-market-section__item{width:432px;#min-width:350px;height:170px;border-radius:16px;position:relative;overflow:hidden}.rest-market-section__item_import{margin-right:15px;background-color:var(--pallete-blue-blue-55,#58a4ff)}.rest-market-section__item-img{width:185px;height:175px;position:absolute;right:0;bottom:-3px}.rest-market-section__item_export{background-color:var(--pallete-green-green-55,#15c674)}.rest-market-section__item-container{padding:18px}.rest-market-section__item-title{color:#fff;font-weight:600;font-size:17px;line-height:23px;letter-spacing:.2px;width:300px;margin-bottom:6px}.rest-market-section__item-description{color:#fff;font-weight:400;font-size:14px;line-height:19px;letter-spacing:0;width:300px}.rest-market-section__item-action{margin-top:18px}.rest-market-section__item-action .ui-btn{--ui-btn-background:var(--design-outline-default-design-outline-bg,#fff)!important;--ui-btn-border-color:var(--design-outline-default-design-outline-stroke,#edeef0)!important;--ui-btn-color:var(--design-outline-default-design-outline-content,#525c69)!important;--ui-btn-background-hover:var(--design-outline-default-design-outline-bg,hsla(0,0%,100%,.9))!important;--ui-btn-background-active:var(--design-outline-default-design-outline-bg,hsla(0,0%,100%,.9))!important}
|
||||
+13
-7
@@ -65,7 +65,8 @@ class CRestConfigurationExportComponent extends CBitrixComponent implements Cont
|
||||
{
|
||||
return [
|
||||
'MANIFEST_CODE',
|
||||
'ITEM_CODE'
|
||||
'ITEM_CODE',
|
||||
'ADDITIONAL',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -142,6 +143,7 @@ class CRestConfigurationExportComponent extends CBitrixComponent implements Cont
|
||||
$setting = new Setting($context);
|
||||
$setting->deleteFull();
|
||||
$setting->set(Setting::MANIFEST_CODE, $this->arParams['MANIFEST_CODE']);
|
||||
$setting->set(Setting::SETTING_ACTION_ADDITIONAL_OPTION, $this->arParams['ADDITIONAL'] ?? []);
|
||||
|
||||
$structure = new Structure($context);
|
||||
if($structure->getFolder())
|
||||
@@ -373,7 +375,8 @@ class CRestConfigurationExportComponent extends CBitrixComponent implements Cont
|
||||
'CODE' => $manifest['CODE'],
|
||||
'VERSION' => Setting::VERSION,
|
||||
'MANIFEST_VERSION' => $manifest['VERSION'],
|
||||
'USES' => $manifest['USES']
|
||||
'USES' => $manifest['USES'],
|
||||
'COMPATIBILITY_TAGS' => $manifest['COMPATIBILITY_TAGS'] ?? [],
|
||||
];
|
||||
$context = $this->getContext();
|
||||
$structure = new Structure($context);
|
||||
@@ -390,7 +393,9 @@ class CRestConfigurationExportComponent extends CBitrixComponent implements Cont
|
||||
'MANIFEST_CODE' => $manifest['CODE'],
|
||||
'IMPORT_MANIFEST' => [],//TODO: delete this after fix crm
|
||||
'MANIFEST' => $manifest,
|
||||
'ITEM_CODE' => $this->arParams['ITEM_CODE']
|
||||
'ITEM_CODE' => $this->arParams['ITEM_CODE'] ?? '',
|
||||
'SETTING' => $setting->get(Setting::SETTING_MANIFEST),
|
||||
'ADDITIONAL_OPTION' => $setting->get(Setting::SETTING_ACTION_ADDITIONAL_OPTION),
|
||||
]
|
||||
);
|
||||
$result = true;
|
||||
@@ -424,7 +429,7 @@ class CRestConfigurationExportComponent extends CBitrixComponent implements Cont
|
||||
$code = preg_replace('/[^a-zA-Z0-9_]/', '', $request->getPost("code"));
|
||||
$step = intval($request->getPost("step"));
|
||||
$next = htmlspecialcharsbx($request->getPost("next"));
|
||||
if($code)
|
||||
if ($code)
|
||||
{
|
||||
$structure = new Structure($this->getContext());
|
||||
$items = Controller::callEventExport(
|
||||
@@ -432,7 +437,7 @@ class CRestConfigurationExportComponent extends CBitrixComponent implements Cont
|
||||
$code,
|
||||
$step,
|
||||
$next,
|
||||
$this->arParams['ITEM_CODE'],
|
||||
$this->arParams['ITEM_CODE'] ?? '',
|
||||
$this->getContext()
|
||||
);
|
||||
foreach ($items as $item)
|
||||
@@ -514,8 +519,9 @@ class CRestConfigurationExportComponent extends CBitrixComponent implements Cont
|
||||
'TYPE' => 'EXPORT',
|
||||
'STEP' => $step,
|
||||
'NEXT' => $next,
|
||||
'ITEM_CODE' => $this->arParams['ITEM_CODE'],
|
||||
'CONTEXT_USER' => $this->getContext()
|
||||
'ITEM_CODE' => $this->arParams['ITEM_CODE'] ?? '',
|
||||
'CONTEXT_USER' => $this->getContext(),
|
||||
'ADDITIONAL_OPTION' => $this->arParams['ADDITIONAL'] ?? [],
|
||||
]
|
||||
);
|
||||
foreach ($items as $item)
|
||||
|
||||
+25
-2
@@ -172,6 +172,19 @@ class CRestConfigurationImportComponent extends CBitrixComponent
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function areCompatibleManifests(array $manifestData1, $manifestData2): bool
|
||||
{
|
||||
foreach ([$manifestData1, $manifestData2] as $manifestData)
|
||||
{
|
||||
if (!is_array($manifestData['COMPATIBILITY_TAGS']) || empty($manifestData['COMPATIBILITY_TAGS']))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return !empty(array_intersect($manifestData['COMPATIBILITY_TAGS'], $manifestData['COMPATIBILITY_TAGS']));
|
||||
}
|
||||
|
||||
protected function prepareResult()
|
||||
{
|
||||
$result = [
|
||||
@@ -460,9 +473,19 @@ class CRestConfigurationImportComponent extends CBitrixComponent
|
||||
{
|
||||
if(!empty($result['MANIFEST']))
|
||||
{
|
||||
if($result['IMPORT_MANIFEST_FILE']['CODE'] != $result['MANIFEST']['CODE'])
|
||||
if (
|
||||
$result['IMPORT_MANIFEST_FILE']['CODE'] != $result['MANIFEST']['CODE']
|
||||
&&
|
||||
!$this->areCompatibleManifests(
|
||||
$result['MANIFEST'],
|
||||
$result['IMPORT_MANIFEST_FILE']
|
||||
)
|
||||
)
|
||||
{
|
||||
$this->errors->setError(new Error(Loc::getMessage('REST_CONFIGURATION_IMPORT_MANIFEST_NOT_CURRENT')));
|
||||
$this->errors->setError(
|
||||
new Error(Loc::getMessage('REST_CONFIGURATION_IMPORT_MANIFEST_NOT_CURRENT'))
|
||||
);
|
||||
|
||||
return false;
|
||||
}
|
||||
else
|
||||
|
||||
+2
-2
@@ -10,11 +10,11 @@ $MESS["REST_CONFIGURATION_IMPORT_ERRORS_REPORT_BTN"] = "Error report";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_FINISH_DESCRIPTION_MSGVER_1"] = "All done! You can now start editing your site.";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_FINISH_ERROR_DESCRIPTION"] = "Settings have been imported; however, there were issues.";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_INSTALL_APP_TITLE_BLOCK"] = "Application installation";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_ROLLBACK_MODE_DESCRIPTION_2"] = "To remove the application, select one of the available Bitrix24 configurations, or select a new application in Bitrix24 Market.";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_ROLLBACK_MODE_DESCRIPTION_2_MSGVER_1"] = "To remove the application, select one of the available Bitrix24 configurations, or select a new application in Bitrix24 Market.";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_ROLLBACK_MODE_DESCRIPTION_2_MSGVER_2"] = "To remove the application, select one of the available Bitrix24 configurations, or select a new application in Bitrix24 Market.";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_ROLLBACK_SUBMIT_BTN"] = "Apply";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_ROLLBACK_TITLE_BLOCK"] = "Recover solution preset";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_SAVE_FILE_BTN"] = "Upload";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_SAVE_FILE_DESCRIPTION"] = "Upload solution preset file";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_SAVE_FILE_DESCRIPTION_MSGVER_1"] = "Upload a ZIP file you exported from another Bitrix24. #LINK_START#Learn more#LINK_END#";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_SAVE_FILE_PROCESS"] = "Uploading file";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_TITLE_BLOCK"] = "Import solution preset";
|
||||
|
||||
+2
-2
@@ -10,11 +10,11 @@ $MESS["REST_CONFIGURATION_IMPORT_ERRORS_REPORT_BTN"] = "Қателер тура
|
||||
$MESS["REST_CONFIGURATION_IMPORT_FINISH_DESCRIPTION_MSGVER_1"] = "Дайын! Редакциялауға кірісуге болады";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_FINISH_ERROR_DESCRIPTION"] = "Баптаулар импортталды, бірақ кейбір қателер бар.";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_INSTALL_APP_TITLE_BLOCK"] = "Қосымшаны орнату";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_ROLLBACK_MODE_DESCRIPTION_2"] = "Пайдаланылған қосымшаны жою үшін сіздің Битрикс24 баптауларының қолжетімді нұсқаларының бірін таңдау керек немесе Битрикс24 Маркеттен жаңа қосымша таңдау керек.";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_ROLLBACK_MODE_DESCRIPTION_2_MSGVER_1"] = "Пайдаланылған қосымшаны жою үшін Битрикс24 баптауының қолжетімді нұсқаларының бірін таңдау керек немесе Маркетплейсте жаңа қосымшаны таңдау керек";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_ROLLBACK_MODE_DESCRIPTION_2_MSGVER_2"] = "Пайдаланылған қосымшаны жою үшін өзіңіздің Битрикс24-те қолжетімді баптау опцияларыңыздың бірін таңдауыңыз керек немесе Битрикс24 Маркеттен жаңа қосымша таңдаңыз";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_ROLLBACK_SUBMIT_BTN"] = "Қолдану";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_ROLLBACK_TITLE_BLOCK"] = "Салалық баптауларды қалпына келтіру";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_SAVE_FILE_BTN"] = "Жүктеу";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_SAVE_FILE_DESCRIPTION"] = "Салалық баптаулары бар файлды жүктеңіз";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_SAVE_FILE_DESCRIPTION_MSGVER_1"] = "Басқа Битрикс24-тен экспорттаған файлды барлық баптауларымен ZIP форматында жүктеңіз. #LINK_START#Толығырақ#LINK_END#";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_SAVE_FILE_PROCESS"] = "Файлды жүктейміз";
|
||||
$MESS["REST_CONFIGURATION_IMPORT_TITLE_BLOCK"] = "Салалық баптаулар импорты";
|
||||
|
||||
+2
-2
@@ -4,10 +4,10 @@ $MESS['REST_CONFIGURATION_IMPORT_SAVE_FILE_BTN'] = 'Загрузить';
|
||||
$MESS['REST_CONFIGURATION_IMPORT_TITLE_BLOCK'] = 'Импорт отраслевых настроек';
|
||||
$MESS['REST_CONFIGURATION_IMPORT_ROLLBACK_TITLE_BLOCK'] = 'Восстановление отраслевых настроек';
|
||||
$MESS['REST_CONFIGURATION_IMPORT_INSTALL_APP_TITLE_BLOCK'] = 'Установка приложения';
|
||||
$MESS['REST_CONFIGURATION_IMPORT_SAVE_FILE_DESCRIPTION'] = 'Загрузите файл с отраслевыми настройками';
|
||||
$MESS['REST_CONFIGURATION_IMPORT_SAVE_FILE_DESCRIPTION_MSGVER_1'] = 'Загрузите файл в формате ZIP со всеми настройками, которые вы экспортировали из другого Битрикс24. #LINK_START#Подробнее#LINK_END#';
|
||||
$MESS['REST_CONFIGURATION_IMPORT_SAVE_FILE_PROCESS'] = 'Загружаем файл';
|
||||
$MESS['REST_CONFIGURATION_IMPORT_ROLLBACK_SUBMIT_BTN'] = 'Применить';
|
||||
$MESS['REST_CONFIGURATION_IMPORT_ROLLBACK_MODE_DESCRIPTION_2'] = 'Для удаления используемого приложения необходимо выбрать один из доступных вариантов настройки вашего Битрикс24, либо выбрать в Битрикс24.Маркет новое приложение';
|
||||
$MESS['REST_CONFIGURATION_IMPORT_ROLLBACK_MODE_DESCRIPTION_2_MSGVER_2'] = "Для удаления используемого приложения необходимо выбрать один из доступных вариантов настройки вашего Битрикс24, либо выбрать в Битрикс24 Маркет новое приложение";
|
||||
$MESS['REST_CONFIGURATION_IMPORT_ROLLBACK_MODE_DESCRIPTION_2_MSGVER_1'] = 'Для удаления используемого приложения необходимо выбрать один из доступных вариантов настройки вашего Битрикс24, либо выбрать в маркетплейсе новое приложение';
|
||||
$MESS['REST_CONFIGURATION_IMPORT_EASY_DELETE_APP'] = 'У вас нет доступных вариантов для изменения настроек Битрикс24, поэтому мы просто удалили приложение';
|
||||
|
||||
|
||||
+4
@@ -63,6 +63,10 @@
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.rest-configuration-pointer-link {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/*round widget*/
|
||||
.rest-configuration-start-icon-main-container {
|
||||
background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDk4IiBoZWlnaHQ9IjE3OCIgdmlld0JveD0iMCAwIDQ5OCAxNzgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIG9wYWNpdHk9IjAuMTE3MTY0IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQ0My4wMzkgMTMzLjk4N0g0MjAuNjgyQzQyMC40OTEgMTMzLjk4NyA0MjAuMzAxIDEzMy45OCA0MjAuMTEzIDEzMy45NjhDNDE1LjA2MSAxMzMuODYzIDQxMSAxMzAuMTEgNDExIDEyNS40OTdDNDExLjAwMSAxMjMuMjQ4IDQxMS45ODYgMTIxLjA5MiA0MTMuNzM4IDExOS41MDJDNDE0LjYzNiAxMTguNjg4IDQxNS42OTggMTE4LjA1NiA0MTYuODUzIDExNy42MzVDNDE2LjgzNCAxMTcuNDA2IDQxNi44MjQgMTE3LjE3NSA0MTYuODI0IDExNi45NDFDNDE2LjgyNiAxMTQuNTY4IDQxNy44NjUgMTEyLjI5MyA0MTkuNzEzIDExMC42MTdDNDIxLjU2MiAxMDguOTQgNDI0LjA2OCAxMDcuOTk5IDQyNi42ODEgMTA4QzQzMC4wMjcgMTA4LjAwNCA0MzIuOTgyIDEwOS41MjQgNDM0Ljc1NyAxMTEuODQ0QzQzNS42MDEgMTExLjU3MiA0MzYuNTA4IDExMS40MjUgNDM3LjQ1NCAxMTEuNDI1QzQ0MS42MzIgMTExLjQzIDQ0NS4wNjMgMTE0LjMyMiA0NDUuNDYgMTE4LjAyMUM0NDkuNDYzIDExOC44MTMgNDUyLjQ1OSAxMjIuMDUyIDQ1Mi40NTUgMTI1LjkyNEM0NTIuNDUxIDEzMC4zODcgNDQ4LjQ2NiAxMzQuMDAyIDQ0My41NTIgMTM0QzQ0My4zOCAxMzQgNDQzLjIwOSAxMzMuOTk1IDQ0My4wMzkgMTMzLjk4N1YxMzMuOTg3WiIgZmlsbD0iIzJGQzZGNiIvPgo8cGF0aCBvcGFjaXR5PSIwLjExNzE2NCIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMDEuMjM1IDM2Ljk4NDVINzUuMjUyMUM3NS4wMjk4IDM2Ljk4NDUgNzQuODA5NCAzNi45NzcxIDc0LjU5MTIgMzYuOTYyNkM2OC43MTkgMzYuODQyIDY0LjAwMDMgMzIuNTEyIDY0IDI3LjE4ODRDNjQuMDAxNyAyNC41OTM2IDY1LjE0NjQgMjIuMTA1OCA2Ny4xODIzIDIwLjI3MjFDNjguMjI1OSAxOS4zMzIxIDY5LjQ1OTkgMTguNjAzNiA3MC44MDIzIDE4LjExNjhDNzAuNzc5OSAxNy44NTI4IDcwLjc2ODQgMTcuNTg2IDcwLjc2ODQgMTcuMzE2OEM3MC43NzAzIDE0LjU3ODkgNzEuOTc4MiAxMS45NTM5IDc0LjEyNjQgMTAuMDE5MUM3Ni4yNzQ2IDguMDg0MzQgNzkuMTg3MiA2Ljk5ODMzIDgyLjIyMzQgN0M4Ni4xMTI2IDcuMDA0MjggODkuNTQ2NCA4Ljc1ODA2IDkxLjYxMDEgMTEuNDM0OUM5Mi41OSAxMS4xMjE4IDkzLjY0NDkgMTAuOTUxNiA5NC43NDQgMTAuOTUyMUM5OS41OTg5IDEwLjk1NzQgMTAzLjU4NiAxNC4yOTQ2IDEwNC4wNDkgMTguNTYyNEMxMDguNyAxOS40NzY5IDExMi4xODIgMjMuMjEzOSAxMTIuMTc3IDI3LjY4MTlDMTEyLjE3MyAzMi44MzA5IDEwNy41NDEgMzcuMDAyMSAxMDEuODMxIDM3QzEwMS42MzEgMzYuOTk5OSAxMDEuNDMyIDM2Ljk5NDcgMTAxLjIzNSAzNi45ODQ1VjM2Ljk4NDVaIiBmaWxsPSIjMkZDNkY2Ii8+CjxwYXRoIG9wYWNpdHk9IjAuMiIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04Ni43MjYzIDE3Ni45NjRIMjYuOTA2QzI2LjM5NDIgMTc2Ljk2NCAyNS44ODY3IDE3Ni45NDcgMjUuMzg0MyAxNzYuOTE0QzExLjg2NDggMTc2LjYzNyAxLjAwMDY4IDE2Ni42NzggMSAxNTQuNDMzQzEuMDAzOTMgMTQ4LjQ2NSAzLjYzOTQ2IDE0Mi43NDMgOC4zMjY4IDEzOC41MjZDMTAuNzI5NSAxMzYuMzY0IDEzLjU3MDQgMTM0LjY4OCAxNi42NjEyIDEzMy41NjlDMTYuNjA5NSAxMzIuOTYxIDE2LjU4MzEgMTMyLjM0OCAxNi41ODMxIDEzMS43MjlDMTYuNTg3NCAxMjUuNDMyIDE5LjM2ODQgMTE5LjM5NCAyNC4zMTQzIDExNC45NDRDMjkuMjYwMiAxMTAuNDk0IDM1Ljk2NTkgMTA3Ljk5NiA0Mi45NTYyIDEwOEM1MS45MTA1IDEwOC4wMSA1OS44MTYyIDExMi4wNDQgNjQuNTY3NCAxMTguMkM2Ni44MjM2IDExNy40OCA2OS4yNTIzIDExNy4wODkgNzEuNzgyNiAxMTcuMDlDODIuOTYwMiAxMTcuMTAyIDkyLjE0MDcgMTI0Ljc3OCA5My4yMDUgMTM0LjU5M0MxMDMuOTE1IDEzNi42OTcgMTExLjkzIDE0NS4yOTIgMTExLjkyIDE1NS41NjhDMTExLjkwOSAxNjcuNDExIDEwMS4yNDYgMTc3LjAwNSA4OC4wOTk2IDE3N0M4Ny42Mzg3IDE3NyA4Ny4xODA4IDE3Ni45ODggODYuNzI2MyAxNzYuOTY0VjE3Ni45NjRaIiBzdHJva2U9IiMyRkM2RjYiLz4KPHBhdGggb3BhY2l0eT0iMC4zMDI0MzIiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDAyLjk3OCAyMS45ODkySDM4NC44NUMzODQuNjk1IDIxLjk4OTIgMzg0LjU0MSAyMS45ODQgMzg0LjM4OSAyMS45NzM4QzM4MC4yOTIgMjEuODg5NCAzNzcgMTguODU4NCAzNzcgMTUuMTMxOUMzNzcuMDAxIDEzLjMxNTUgMzc3LjggMTEuNTc0IDM3OS4yMiAxMC4yOTA0QzM3OS45NDggOS42MzI1IDM4MC44MDkgOS4xMjI1IDM4MS43NDYgOC43ODE3OUMzODEuNzMgOC41OTY5NyAzODEuNzIyIDguNDEwMiAzODEuNzIyIDguMjIxNzRDMzgxLjcyMyA2LjMwNTI1IDM4Mi41NjYgNC40Njc3MSAzODQuMDY1IDMuMTEzMzdDMzg1LjU2NCAxLjc1OTA0IDM4Ny41OTYgMC45OTg4MzMgMzg5LjcxNCAxQzM5Mi40MjcgMS4wMDI5OSAzOTQuODIzIDIuMjMwNjQgMzk2LjI2MyA0LjEwNDQxQzM5Ni45NDcgMy44ODUyNSAzOTcuNjgzIDMuNzY2MTMgMzk4LjQ0OSAzLjc2NjQ5QzQwMS44MzYgMy43NzAxOCA0MDQuNjE4IDYuMTA2MjQgNDA0Ljk0MSA5LjA5MzY3QzQwOC4xODYgOS43MzM4MSA0MTAuNjE1IDEyLjM0OTcgNDEwLjYxMiAxNS40NzczQzQxMC42MDkgMTkuMDgxNiA0MDcuMzc4IDIyLjAwMTUgNDAzLjM5NCAyMkM0MDMuMjU0IDIxLjk5OTkgNDAzLjExNSAyMS45OTYzIDQwMi45NzggMjEuOTg5MlYyMS45ODkyWiIgc3Ryb2tlPSIjMkZDNkY2Ii8+Cjwvc3ZnPgo=');
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+9
-4
@@ -117,7 +117,7 @@ else
|
||||
<div class="rest-configuration-start-icon"></div>
|
||||
<div class="rest-configuration-start-icon-circle"></div>
|
||||
</div>
|
||||
<p class="rest-configuration-info"><?=\Bitrix\Rest\Integration\Market\Label::isRenamedMarket() ? Loc::getMessage("REST_CONFIGURATION_IMPORT_ROLLBACK_MODE_DESCRIPTION_2_MSGVER_1") : Loc::getMessage("REST_CONFIGURATION_IMPORT_ROLLBACK_MODE_DESCRIPTION_2");?></p>
|
||||
<p class="rest-configuration-info"><?=\Bitrix\Rest\Integration\Market\Label::isRenamedMarket() ? Loc::getMessage("REST_CONFIGURATION_IMPORT_ROLLBACK_MODE_DESCRIPTION_2_MSGVER_1") : Loc::getMessage("REST_CONFIGURATION_IMPORT_ROLLBACK_MODE_DESCRIPTION_2_MSGVER_2");?></p>
|
||||
<form method="post">
|
||||
<?=bitrix_sessid_post()?>
|
||||
<? foreach($arResult['ROLLBACK_ITEMS'] as $item):?>
|
||||
@@ -175,11 +175,16 @@ else
|
||||
<? else:
|
||||
if(!empty($arResult['MANIFEST']['IMPORT_DESCRIPTION_UPLOAD']))
|
||||
{
|
||||
$importFileDescription = $arResult['MANIFEST']['IMPORT_DESCRIPTION_UPLOAD'];
|
||||
$importFileDescription = htmlspecialcharsbx($arResult['MANIFEST']['IMPORT_DESCRIPTION_UPLOAD']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$importFileDescription = Loc::getMessage('REST_CONFIGURATION_IMPORT_SAVE_FILE_DESCRIPTION');
|
||||
$importFileDescription = Loc::getMessage('REST_CONFIGURATION_IMPORT_SAVE_FILE_DESCRIPTION_MSGVER_1',
|
||||
[
|
||||
'#LINK_START#' => '<a class="rest-configuration-pointer-link" onclick="top.BX.Helper.show(`redirect=detail&code=25376980`)">',
|
||||
'#LINK_END#' => '</a>'
|
||||
]
|
||||
);
|
||||
}
|
||||
?>
|
||||
<div class="rest-configuration-start-icon-main rest-configuration-start-icon-main-zip">
|
||||
@@ -196,7 +201,7 @@ else
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
<p class="rest-configuration-info"><?=htmlspecialcharsbx($importFileDescription)?></p>
|
||||
<p class="rest-configuration-info"><?= $importFileDescription?></p>
|
||||
<? endif;?>
|
||||
<? elseif (!empty($arResult['INSTALL_APP'])):?>
|
||||
<?php
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<? if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
|
||||
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
|
||||
{
|
||||
die();
|
||||
}
|
||||
@@ -8,7 +8,8 @@ use Bitrix\Rest\Configuration\Manifest;
|
||||
use Bitrix\Main\Localization\Loc;
|
||||
use Bitrix\Main\LoaderException;
|
||||
use Bitrix\Main\SystemException;
|
||||
use Bitrix\Main\Loader;;
|
||||
use Bitrix\Main\Loader;
|
||||
use \Bitrix\Main;
|
||||
|
||||
Loc::loadMessages(__FILE__);
|
||||
|
||||
@@ -154,12 +155,12 @@ class RestConfigurationComponent extends CBitrixComponent
|
||||
$manifest = end($manifestList);
|
||||
$variableList['MANIFEST_CODE'] = $manifest['CODE'];
|
||||
$appTag[] = $manifest['CODE'];
|
||||
$componentPage = 'section';
|
||||
$componentPage = 'section_crm';
|
||||
}
|
||||
$analyticFrom .= '_' . mb_strtolower($code);
|
||||
}
|
||||
}
|
||||
elseif ($componentPage == 'section')
|
||||
elseif ($componentPage == 'section_crm')
|
||||
{
|
||||
if (!empty($variableList['MANIFEST_CODE']))
|
||||
{
|
||||
@@ -171,20 +172,23 @@ class RestConfigurationComponent extends CBitrixComponent
|
||||
}
|
||||
}
|
||||
$variableList['ADDITIONAL_PARAMS'] = $this->request->get('additional') ?? [];
|
||||
if (!empty($variableList['ADDITIONAL_PARAMS']))
|
||||
{
|
||||
foreach ($urlTemplateList as $url => $value)
|
||||
{
|
||||
$key = mb_strtoupper('PATH_TO_' . $url);
|
||||
$this->arResult[$key] = rtrim($this->arResult[$key], '/') . (new Main\Web\Uri('/'))
|
||||
->addParams(['additional' => $variableList['ADDITIONAL_PARAMS']])
|
||||
->getUri()
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($this->request->get('from')))
|
||||
{
|
||||
$analyticFrom .= '_' . htmlspecialcharsbx($this->request->get('from'));
|
||||
}
|
||||
|
||||
if (
|
||||
$componentPage === 'section'
|
||||
&& in_array(Application::getInstance()->getLicense()->getRegion(), ['ru', 'by', 'kz'])
|
||||
)
|
||||
{
|
||||
$componentPage = 'section_crm';
|
||||
}
|
||||
|
||||
$appTagBanner = $appTag;
|
||||
$appTagBanner[] = 'premium';
|
||||
|
||||
@@ -244,4 +248,4 @@ class RestConfigurationComponent extends CBitrixComponent
|
||||
ShowError($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
$MESS["REST_CONFIGURATION_APP_SECTION_TITLE_2"] = "Bitrix24 Market";
|
||||
$MESS["REST_CONFIGURATION_APP_SECTION_TITLE_2_MSGVER_1"] = "Bitrix24 Market";
|
||||
$MESS["REST_CONFIGURATION_APP_SECTION_TITLE_2_MSGVER_2"] = "Bitrix24 Market";
|
||||
$MESS["REST_CONFIGURATION_BTN_SHOW_ALL"] = "view all";
|
||||
$MESS["REST_CONFIGURATION_ERROR_PLACEMENT"] = "Error: no data to show";
|
||||
$MESS["REST_CONFIGURATION_TITLE_NEW_APP"] = "New applications";
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
$MESS["REST_CONFIGURATION_APP_SECTION_TITLE_2"] = "Битрикс24.Маркет";
|
||||
$MESS["REST_CONFIGURATION_APP_SECTION_TITLE_2_MSGVER_1"] = "Маркетплейс";
|
||||
$MESS["REST_CONFIGURATION_APP_SECTION_TITLE_2_MSGVER_2"] = "Битрикс24 Маркет";
|
||||
$MESS["REST_CONFIGURATION_BTN_SHOW_ALL"] = "барлығын қарау";
|
||||
$MESS["REST_CONFIGURATION_ERROR_PLACEMENT"] = "Қате, көрсету үшін деректер жоқ";
|
||||
$MESS["REST_CONFIGURATION_TITLE_NEW_APP"] = "Жаңа қосымшалар";
|
||||
|
||||
+1
-1
@@ -9,6 +9,6 @@ $MESS['REST_CONFIGURATION_TITLE_PAGE_IMPORT_ROLLBACK'] = 'Восстановле
|
||||
$MESS['REST_CONFIGURATION_TITLE_PAGE_PLACEMENT'] = 'Отраслевые решения';
|
||||
$MESS["REST_CONFIGURATION_TITLE_NEW_APP"] = "Новые приложения";
|
||||
$MESS["REST_CONFIGURATION_BTN_SHOW_ALL"] = "смотреть все";
|
||||
$MESS["REST_CONFIGURATION_APP_SECTION_TITLE_2"] = "Битрикс24.Маркет";
|
||||
$MESS["REST_CONFIGURATION_APP_SECTION_TITLE_2_MSGVER_2"] = "Битрикс24 Маркет";
|
||||
$MESS["REST_CONFIGURATION_APP_SECTION_TITLE_2_MSGVER_1"] = "Маркетплейс";
|
||||
$MESS['REST_CONFIGURATION_ERROR_PLACEMENT'] = 'Ошибка, нет данных для отображения';
|
||||
+3
-2
@@ -14,7 +14,7 @@ if(!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
|
||||
* @global CMain $APPLICATION
|
||||
* @global CUser $USER
|
||||
*/
|
||||
if($arResult['ERROR'])
|
||||
if (!empty($arResult['ERROR']))
|
||||
{
|
||||
ShowError($arResult['ERROR']);
|
||||
return false;
|
||||
@@ -27,6 +27,7 @@ if($arResult['ERROR'])
|
||||
array(
|
||||
'MANIFEST_CODE' => $arResult['MANIFEST_CODE'],
|
||||
'FROM' => $arResult['FROM'],
|
||||
'ADDITIONAL' => $arResult['VARIABLES']['ADDITIONAL_PARAMS'],
|
||||
)
|
||||
);
|
||||
?>
|
||||
?>
|
||||
|
||||
+2
-1
@@ -27,6 +27,7 @@ if($arResult['ERROR'])
|
||||
array(
|
||||
'SET_TITLE' => 'Y',
|
||||
'FROM' => $arResult['FROM'],
|
||||
'ADDITIONAL' => $arResult['VARIABLES']['ADDITIONAL_PARAMS'],
|
||||
)
|
||||
);
|
||||
?>
|
||||
?>
|
||||
|
||||
+1
-1
@@ -76,4 +76,4 @@ $APPLICATION->IncludeComponent(
|
||||
'FROM' => $arResult['FROM'],
|
||||
)
|
||||
)
|
||||
?>
|
||||
?>
|
||||
|
||||
+2
-2
@@ -17,7 +17,7 @@ $APPLICATION->SetTitle($arResult['TITLE']);
|
||||
$bodyClass = $APPLICATION->getPageProperty('BodyClass', false);
|
||||
$bodyClasses = 'no-hidden no-background no-all-paddings';
|
||||
$APPLICATION->setPageProperty('BodyClass', trim(sprintf('%s %s', $bodyClass, $bodyClasses)));
|
||||
if($arResult['ERROR'])
|
||||
if (!empty($arResult['ERROR']))
|
||||
{
|
||||
ShowError($arResult['ERROR']);
|
||||
return false;
|
||||
@@ -46,4 +46,4 @@ $APPLICATION->IncludeComponent(
|
||||
'bitrix:rest.marketplace.solution',
|
||||
'',
|
||||
[]
|
||||
);
|
||||
);
|
||||
|
||||
+5
-5
@@ -287,6 +287,11 @@ this.BX = this.BX || {};
|
||||
BX.UI.Feedback.Form.open({
|
||||
id: 'b5309667',
|
||||
forms: [{
|
||||
zones: ['en'],
|
||||
id: 674,
|
||||
lang: 'en',
|
||||
sec: '5iorws'
|
||||
}, {
|
||||
zones: ['es'],
|
||||
id: 676,
|
||||
lang: 'es',
|
||||
@@ -302,11 +307,6 @@ this.BX = this.BX || {};
|
||||
lang: 'br',
|
||||
sec: 'kuelnm'
|
||||
}],
|
||||
defaultForm: {
|
||||
id: 674,
|
||||
lang: 'en',
|
||||
sec: '5iorws'
|
||||
},
|
||||
presets: {
|
||||
...babelHelpers.classPrivateFieldLooseBase(this, _formConfiguration)[_formConfiguration],
|
||||
sender_page: document.location.href
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+5
-5
File diff suppressed because one or more lines are too long
+1
-1
@@ -110,11 +110,11 @@ export class EInvoiceAppButton extends EventEmitter
|
||||
BX.UI.Feedback.Form.open({
|
||||
id: 'b5309667',
|
||||
forms: [
|
||||
{ zones: ['en'], id: 674, lang: 'en', sec: '5iorws' },
|
||||
{ zones: ['es'], id: 676, lang: 'es', sec: 'uthphh' },
|
||||
{ zones: ['de'], id: 670, lang: 'de', sec: 'gk89kt' },
|
||||
{ zones: ['com.br'], id: 668, lang: 'br', sec: 'kuelnm' },
|
||||
],
|
||||
defaultForm: { id: 674, lang: 'en', sec: '5iorws' },
|
||||
presets: {
|
||||
...this.#formConfiguration,
|
||||
sender_page: document.location.href,
|
||||
|
||||
@@ -104,7 +104,7 @@ class RestIntegrationEditComponent extends CBitrixComponent implements Controlle
|
||||
!$isAdmin
|
||||
&&
|
||||
(
|
||||
$presetData['ADMIN_ONLY'] === 'Y'
|
||||
($presetData['ADMIN_ONLY'] ?? 'N') === 'Y'
|
||||
|| $presetData['OPTIONS']['WIDGET_NEEDED'] !== 'D'
|
||||
|| $presetData['OPTIONS']['APPLICATION_NEEDED'] !== 'D'
|
||||
)
|
||||
@@ -142,12 +142,12 @@ class RestIntegrationEditComponent extends CBitrixComponent implements Controlle
|
||||
{
|
||||
$result['QUERY_NEEDED'] = $presetData['OPTIONS']['QUERY_NEEDED'] ?? null;
|
||||
$result['ERROR_MESSAGE'][] = Loc::getMessage(
|
||||
'REST_INTEGRATION_EDIT_ATTENTION_USES_WEBHOOK',
|
||||
'REST_INTEGRATION_EDIT_ATTENTION_USES_WEBHOOK_MSGVER_1',
|
||||
[
|
||||
'#URL#' =>
|
||||
'<a href="'.\Bitrix\UI\Util::getArticleUrlByCode('12337906').'" >'
|
||||
. Loc::getMessage('REST_INTEGRATION_EDIT_ATTENTION_USES_WEBHOOK_URL_MESSAGE')
|
||||
. '</a>'
|
||||
'[strong]' => '<strong>',
|
||||
'[/strong]' => '</strong>',
|
||||
'[article_link]' => '<a href="'.\Bitrix\UI\Util::getArticleUrlByCode('12337906').'" >',
|
||||
'[/article_link]' => '</a>'
|
||||
]
|
||||
);
|
||||
}
|
||||
@@ -588,4 +588,4 @@ class RestIntegrationEditComponent extends CBitrixComponent implements Controlle
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-2
@@ -1,6 +1,5 @@
|
||||
<?php
|
||||
$MESS["REST_INTEGRATION_EDIT_ATTENTION_USES_WEBHOOK"] = "<strong>Attention!</strong> This link allows a person who is in possession of it to perform actions according to permissions assigned to the link. Please keep this link secret. Learn more #URL#.";
|
||||
$MESS["REST_INTEGRATION_EDIT_ATTENTION_USES_WEBHOOK_URL_MESSAGE"] = "here";
|
||||
$MESS["REST_INTEGRATION_EDIT_ATTENTION_USES_WEBHOOK_MSGVER_1"] = "[strong]Attention![/strong] This link allows anyone to perform actions according to permissions assigned to the link. Please keep this link secret. [article_link]Learn more[/article_link]";
|
||||
$MESS["REST_INTEGRATION_EDIT_ERROR_ACCESS_DENIED"] = "Access denied.";
|
||||
$MESS["REST_INTEGRATION_EDIT_ERROR_CREAT"] = "Error creating an integration: #ERROR_TEXT#";
|
||||
$MESS["REST_INTEGRATION_EDIT_ERROR_NOT_FOUND"] = "Integration was not found";
|
||||
|
||||
+4
-2
@@ -1,6 +1,8 @@
|
||||
<?php
|
||||
$MESS["REST_INTEGRATION_EDIT_ATTENTION_USES_WEBHOOK"] = "<strong>Назар аударыңыз!</strong> Бұл сілтеме порталдағы әрекеттерді бапталған құқықтарға сәйкес орындауға мүмкіндік береді, оны құпия ұстау қажет. Толығырақ біздің #URL#.";
|
||||
$MESS["REST_INTEGRATION_EDIT_ATTENTION_USES_WEBHOOK_URL_MESSAGE"] = "мақалада оқыңыз.";
|
||||
$MESS["REST_INTEGRATION_EDIT_ATTENTION_USES_WEBHOOK_MSGVER_1"] = "
|
||||
|
||||
[strong]Назар аударыңыз![/strong] Бұл сілтеме порталдағы әрекеттерді реттелген құқықтарға сәйкес орындауға мүмкіндік береді, оны құпия ұстау қажет. Толығырақ біздің [article_link]мақалада[/article_link].
|
||||
";
|
||||
$MESS["REST_INTEGRATION_EDIT_ERROR_ACCESS_DENIED"] = "Қолжетімсіз";
|
||||
$MESS["REST_INTEGRATION_EDIT_ERROR_CREAT"] = "Интеграция жасау қатесі: #ERROR_TEXT#";
|
||||
$MESS["REST_INTEGRATION_EDIT_ERROR_NOT_FOUND"] = "Интеграция табылмады";
|
||||
|
||||
+2
-3
@@ -4,6 +4,5 @@ $MESS['REST_INTEGRATION_EDIT_ERROR_REQUIRED_MODULES'] = 'Для данной и
|
||||
$MESS['REST_INTEGRATION_EDIT_ERROR_ACCESS_DENIED'] = 'Нет доступа';
|
||||
$MESS['REST_INTEGRATION_EDIT_ERROR_NOT_FOUND'] = 'Интеграция не найдена';
|
||||
$MESS['REST_INTEGRATION_EDIT_ERROR_NO_HTTPS'] = '<strong>Внимание!</strong> Данная технология категорически не рекомендуется к использованию без https';
|
||||
$MESS['REST_INTEGRATION_EDIT_ATTENTION_USES_WEBHOOK'] = '<strong>Внимание!</strong> Данная ссылка позволяет выполнять действия на портале в соответствии с настроенными правами, необходимо держать её в секрете. Подробности в нашей #URL#.';
|
||||
$MESS['REST_INTEGRATION_EDIT_ATTENTION_USES_WEBHOOK_URL_MESSAGE'] = 'статье';
|
||||
$MESS['REST_INTEGRATION_EDIT_HOLD_DUE_TO_OVERLOAD'] = '<strong>Внимание!</strong> Данная интеграция заблокирована за превышение нагрузки. Пожалуйста, обратитесь в поддержку для решения данной проблемы.';
|
||||
$MESS['REST_INTEGRATION_EDIT_ATTENTION_USES_WEBHOOK_MSGVER_1'] = '[strong]Внимание![/strong] Данная ссылка позволяет выполнять действия на портале в соответствии с настроенными правами, необходимо держать её в секрете. Подробности в нашей [article_link]статье[/article_link].';
|
||||
$MESS['REST_INTEGRATION_EDIT_HOLD_DUE_TO_OVERLOAD'] = '<strong>Внимание!</strong> Данная интеграция заблокирована за превышение нагрузки. Пожалуйста, обратитесь в поддержку для решения данной проблемы.';
|
||||
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
<?php
|
||||
$MESS["UI_SIDEPANEL_WRAPPER_MARKET_EXPIRED_NOTIFICATION_BUTTON_TEXT"] = "Толығырақ";
|
||||
$MESS["UI_SIDEPANEL_WRAPPER_MARKET_EXPIRED_NOTIFICATION_TEXT"] = "Қосымшамен жұмыс істеуді жалғастыру үшін <b>жазылым рәсімдеңіз</b>";
|
||||
@@ -71,7 +71,7 @@ class RestIntegratorsListComponent extends CBitrixComponent
|
||||
$isAdmin = \CRestUtil::isAdmin();
|
||||
if ($this->arParams['TYPE'] === 'LIST')
|
||||
{
|
||||
if (!$isAdmin && isset($items[$code]) && $items[$code]['ADMIN_ONLY'] === 'Y')
|
||||
if (!$isAdmin && isset($items[$code]['ADMIN_ONLY']) && $items[$code]['ADMIN_ONLY'] === 'Y')
|
||||
{
|
||||
$this->errors->setError(new Error(Loc::getMessage('REST_INTEGRATION_LIST_ERROR_ACCESS_DENIED')));
|
||||
|
||||
@@ -89,7 +89,7 @@ class RestIntegratorsListComponent extends CBitrixComponent
|
||||
!$isAdmin
|
||||
&&
|
||||
(
|
||||
$item['ADMIN_ONLY'] === 'Y'
|
||||
($item['ADMIN_ONLY'] ?? 'N') === 'Y'
|
||||
||
|
||||
(
|
||||
!empty($item['OPTIONS'])
|
||||
@@ -215,4 +215,4 @@ class RestIntegratorsListComponent extends CBitrixComponent
|
||||
|
||||
$this->includeComponentTemplate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -107,7 +107,7 @@ class RestMarketplaceBookletComponent extends CBitrixComponent
|
||||
$booklet['OPTION']['TITLE'] = $title;
|
||||
}
|
||||
}
|
||||
$result['TITLE'] = !empty($booklet['OPTION']['TITLE']) ? $booklet['OPTION']['TITLE'] : Loc::getMessage('REST_MARKETPLACE_BOOKLET_DEFAULT_TITLE_2');
|
||||
$result['TITLE'] = !empty($booklet['OPTION']['TITLE']) ? $booklet['OPTION']['TITLE'] : Loc::getMessage('REST_MARKETPLACE_BOOKLET_DEFAULT_TITLE_2_MSGVER_1');
|
||||
}
|
||||
|
||||
if (!empty($booklet['OPTION']['ACTION_TITLE_MESSAGE_CODE']))
|
||||
|
||||
+1
-1
@@ -4,5 +4,5 @@ $MESS["REST_BOOKLET_CRM_FIELD_DESCRIPTION"] = "Avoid tedious customization while
|
||||
$MESS["REST_BOOKLET_CRM_FIELD_DESCRIPTION_TITLE"] = "Get a ready to use CRM for your business!";
|
||||
$MESS["REST_BOOKLET_CRM_FIELD_TITLE"] = "Create custom field";
|
||||
$MESS["REST_MARKETPLACE_BOOKLET_DEFAULT_ACTION_TITLE"] = "Actions";
|
||||
$MESS["REST_MARKETPLACE_BOOKLET_DEFAULT_TITLE_2"] = "Bitrix24.Market";
|
||||
$MESS["REST_MARKETPLACE_BOOKLET_DEFAULT_TITLE_2_MSGVER_1"] = "Bitrix24 Market";
|
||||
$MESS["REST_MARKETPLACE_BOOKLET_ERROR_NOT_FOUND"] = "Page was not found";
|
||||
|
||||
+1
-1
@@ -4,5 +4,5 @@ $MESS["REST_BOOKLET_CRM_FIELD_DESCRIPTION"] = "Компанияңызды ұза
|
||||
$MESS["REST_BOOKLET_CRM_FIELD_DESCRIPTION_TITLE"] = "Сіздің бизнесіңіз үшін дайын CRM алыңыз!";
|
||||
$MESS["REST_BOOKLET_CRM_FIELD_TITLE"] = "Өз өрісіңізді жасау";
|
||||
$MESS["REST_MARKETPLACE_BOOKLET_DEFAULT_ACTION_TITLE"] = "Әрекеттер";
|
||||
$MESS["REST_MARKETPLACE_BOOKLET_DEFAULT_TITLE_2"] = "Битрикс24.Маркет";
|
||||
$MESS["REST_MARKETPLACE_BOOKLET_DEFAULT_TITLE_2_MSGVER_1"] = "Битрикс24 Маркет";
|
||||
$MESS["REST_MARKETPLACE_BOOKLET_ERROR_NOT_FOUND"] = "Парақша табылмады";
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
<?
|
||||
$MESS["REST_MARKETPLACE_BOOKLET_ERROR_NOT_FOUND"] = "Страница не найдена";
|
||||
$MESS["REST_MARKETPLACE_BOOKLET_DEFAULT_TITLE_2"] = "Битрикс24.Маркет";
|
||||
$MESS["REST_MARKETPLACE_BOOKLET_DEFAULT_TITLE_2_MSGVER_1"] = "Битрикс24 Маркет";
|
||||
$MESS["REST_MARKETPLACE_BOOKLET_DEFAULT_ACTION_TITLE"] = "Действия";
|
||||
$MESS["REST_BOOKLET_CRM_FIELD_TITLE"] = "Создать своё поле";
|
||||
$MESS["REST_BOOKLET_CRM_FIELD_DESCRIPTION_TITLE"] = "Получите готовую CRM для вашего бизнеса!";
|
||||
|
||||
+1
-1
@@ -93,7 +93,7 @@ ob_start();
|
||||
<? if($arResult['TERMS_OF_SERVICE_LINK']):?>
|
||||
<div style="margin-bottom: 8px;">
|
||||
<input type="checkbox" id="mp_tos_license" value="N">
|
||||
<label for="mp_tos_license"><?=GetMessage("BX24_APP_INSTALL_TERMS_OF_SERVICE_TEXT_2", ["#LINK#" => $arResult['TERMS_OF_SERVICE_LINK']])?></label>
|
||||
<label for="mp_tos_license"><?=GetMessage("BX24_APP_INSTALL_TERMS_OF_SERVICE_TEXT_2_MSGVER_1", ["#LINK#" => $arResult['TERMS_OF_SERVICE_LINK']])?></label>
|
||||
</div>
|
||||
<? endif;?>
|
||||
<?if (LANGUAGE_ID == "ru" || LANGUAGE_ID == "ua" || $arResult["APP"]["EULA_LINK"]):?>
|
||||
|
||||
+1
-1
@@ -13,4 +13,4 @@ $MESS["BX24_APP_INSTALL_PRIVACY_LINK"] = "https://www.bitrix24.com/privacy/";
|
||||
$MESS["BX24_APP_INSTALL_PRIVACY_TEXT"] = "I have read and agree with the <a href=\"#LINK#\" target=\"_blank\">Privacy Policy</a>";
|
||||
$MESS["BX24_APP_INSTALL_RIGHTS"] = "The application requests permissions for:";
|
||||
$MESS["BX24_APP_INSTALL_SUCCESS"] = "The application has been installed. <a href='#LINK#'>Open</a>";
|
||||
$MESS["BX24_APP_INSTALL_TERMS_OF_SERVICE_TEXT_2"] = "By installing or downloading apps or solutions, you agree to the <a href=\"#LINK#\" target=\"_blank\">Bitrix24.Market Terms of Use</a>";
|
||||
$MESS["BX24_APP_INSTALL_TERMS_OF_SERVICE_TEXT_2_MSGVER_1"] = "By installing or downloading apps or solutions, you agree to the <a href=\"#LINK#\" target=\"_blank\">Bitrix24 Market Terms of Use</a>";
|
||||
|
||||
+2
-2
@@ -32,11 +32,11 @@ $MESS["MARKETPLACE_APP_VERSION_MESS"] = "Version";
|
||||
$MESS["MARKETPLACE_CONFIGURATION_INSTALL_SETTING_BTN"] = "Configure";
|
||||
$MESS["MARKETPLACE_HIDDEN_BUY"] = "Containts in-app purchases";
|
||||
$MESS["MARKETPLACE_LICENSE_ERROR"] = "You have to read and agree with the Privacy Policy to install the application";
|
||||
$MESS["MARKETPLACE_LICENSE_TOS_ERROR_2"] = "You have to agree to the Bitrix24.Market Terms of Use to install the application";
|
||||
$MESS["MARKETPLACE_LICENSE_TOS_ERROR_2_MSGVER_1"] = "You have to agree to the Bitrix24 Market Terms of Use to install the application.";
|
||||
$MESS["MARKETPLACE_MORE_BUTTON"] = "More...";
|
||||
$MESS["REST_MARKETPLACE_EXTERNAL_PAYMENT"] = "requires paid external services";
|
||||
$MESS["REST_MARKETPLACE_HIDDEN_BUY"] = "contains in-app purchases";
|
||||
$MESS["REST_MARKETPLACE_SUBSCRIPTION_EXPANDS"] = "advanced features available when subscribed for Bitrix24.Market";
|
||||
$MESS["REST_MARKETPLACE_SUBSCRIPTION_EXPANDS_MSGVER_1"] = "advanced features available when subscribed to Bitrix24 Market";
|
||||
$MESS["REST_MARKETPLACE_SUBSCRIPTION_REQUIRED"] = "requires subscription";
|
||||
$MESS["REST_MP_APP_INSTALL_REQUEST"] = "Send";
|
||||
$MESS["REST_MP_INSTALL_REQUEST_CONFIRM"] = "Insufficient permissions to install this app.<br/>Do you want to send a request to the administrators to install it?";
|
||||
|
||||
+1
-1
@@ -13,4 +13,4 @@ $MESS["BX24_APP_INSTALL_PRIVACY_LINK"] = "https://www.bitrix24.kz/about/privacy.
|
||||
$MESS["BX24_APP_INSTALL_PRIVACY_TEXT"] = "Мен <a href=\"#LINK#\" target=\"_blank\">құпиялылық саясатымен</a> таныстым және келісемін";
|
||||
$MESS["BX24_APP_INSTALL_RIGHTS"] = "Қосымша келесі әрекеттерге рұқсат сұрайды:";
|
||||
$MESS["BX24_APP_INSTALL_SUCCESS"] = "Қосымша сәтті орнатылды. <a href='#LINK#'>Өту</a>";
|
||||
$MESS["BX24_APP_INSTALL_TERMS_OF_SERVICE_TEXT_2"] = "Қосымшаларды немесе интеграцияларды орнату немесе жүктеу арқылы сіз <a href=\"#LINK#\" target=\"_blank\">Битрикс24.Маркетті пайдалану шарттарымен</a> келісесіз";
|
||||
$MESS["BX24_APP_INSTALL_TERMS_OF_SERVICE_TEXT_2_MSGVER_1"] = "Қосымшаларды немесе интеграцияларды орнату немесе жүктеу арқылы сіз <a href=\"#LINK#\" target=\"_blank\">Битрикс24 Маркет пайдалану шарттарымен</a> келісесіз";
|
||||
|
||||
+2
-2
@@ -32,11 +32,11 @@ $MESS["MARKETPLACE_APP_VERSION_MESS"] = "Нұсқа";
|
||||
$MESS["MARKETPLACE_CONFIGURATION_INSTALL_SETTING_BTN"] = "Баптау";
|
||||
$MESS["MARKETPLACE_HIDDEN_BUY"] = "Кіріктірілген сатып алулар бар";
|
||||
$MESS["MARKETPLACE_LICENSE_ERROR"] = "Қосымшаны орнату үшін лицензиялық келісіммен және құпиялылық саясатымен келісіміңізді растау қажет";
|
||||
$MESS["MARKETPLACE_LICENSE_TOS_ERROR_2"] = "Қосымшаны орнату үшін Битрикс24.Маркетті пайдалану шарттарымен келісіміңізді растауыңыз керек";
|
||||
$MESS["MARKETPLACE_LICENSE_TOS_ERROR_2_MSGVER_1"] = "Қосымшаны орнату үшін Битрикс24 Маркет пайдалану шарттарымен келісетініңізді растауыңыз керек";
|
||||
$MESS["MARKETPLACE_MORE_BUTTON"] = "Тағы";
|
||||
$MESS["REST_MARKETPLACE_EXTERNAL_PAYMENT"] = "сыртқы сервистің төлемі қажет";
|
||||
$MESS["REST_MARKETPLACE_HIDDEN_BUY"] = "кіріктірілген сатып алулар бар";
|
||||
$MESS["REST_MARKETPLACE_SUBSCRIPTION_EXPANDS"] = "Битрикс24.Маркетте жазылым бойынша кеңейтілген мүмкіндіктер";
|
||||
$MESS["REST_MARKETPLACE_SUBSCRIPTION_EXPANDS_MSGVER_1"] = "Битрикс24 Маркет жазылымы бойынша кеңейтілген функционал";
|
||||
$MESS["REST_MARKETPLACE_SUBSCRIPTION_REQUIRED"] = "жазылым қажет";
|
||||
$MESS["REST_MP_APP_INSTALL_REQUEST"] = "Жіберу";
|
||||
$MESS["REST_MP_INSTALL_REQUEST_CONFIRM"] = "Бұл қосымшаны орнатуға құқығы жеткіліксіз.<br/>Орнатуға сұрау әкімшілерге жіберілсін бе?";
|
||||
|
||||
+1
-1
@@ -13,5 +13,5 @@ $MESS["BX24_APP_INSTALL_EULA_LINK"] = "https://www.1c-bitrix.ru/license.php?modu
|
||||
$MESS["BX24_APP_INSTALL_PRIVACY_TEXT"] = "Я ознакомлен и согласен с <a href=\"#LINK#\" target=\"_blank\">политикой конфиденциальности</a>";
|
||||
$MESS["BX24_APP_INSTALL_PRIVACY_LINK"] = "https://www.bitrix24.ru/about/privacy.php";
|
||||
$MESS["BX24_APP_INSTALL_HTTPS_WARNING"] = "<b>Внимание!</b> При работе без https работоспособность устанавливаемых приложений не гарантируется.";
|
||||
$MESS["BX24_APP_INSTALL_TERMS_OF_SERVICE_TEXT_2"] = "Устанавливая или загружая приложения или интеграции, вы соглашаетесь с <a href=\"#LINK#\" target=\"_blank\">Условиями использования Битрикс24.Маркет</a>";
|
||||
$MESS["BX24_APP_INSTALL_TERMS_OF_SERVICE_TEXT_2_MSGVER_1"] = "Устанавливая или загружая приложения или интеграции, вы соглашаетесь с <a href=\"#LINK#\" target=\"_blank\">Условиями использования Битрикс24 Маркет</a>";
|
||||
?>
|
||||
+2
-2
@@ -30,13 +30,13 @@ $MESS["MARKETPLACE_APP_IS_INSTALLED"] = "Установлено";
|
||||
$MESS["MARKETPLACE_APP_PORTAL_ADMIN"] = "Для установки приложения обратитесь к администратору портала";
|
||||
$MESS["MARKETPLACE_APP_INSTALL_REQUEST"] = "Ваш запрос на установку приложения отправлен</br>администраторам вашего Битрикс24, спасибо!";
|
||||
$MESS["MARKETPLACE_LICENSE_ERROR"] = "Для установки приложения необходимо подтвердить свое согласие с лицензионным соглашением и политикой конфиденциальности";
|
||||
$MESS["MARKETPLACE_LICENSE_TOS_ERROR_2"] = "Для установки приложения необходимо подтвердить свое согласие с условиями использования Битрикс24.Маркет";
|
||||
$MESS["MARKETPLACE_LICENSE_TOS_ERROR_2_MSGVER_1"] = "Для установки приложения необходимо подтвердить свое согласие с условиями использования Битрикс24 Маркет";
|
||||
$MESS["REST_MP_INSTALL_REQUEST_CONFIRM"] = "Недостаточно прав на установку этого приложения.<br/>Отправить запрос на установку администраторам?";
|
||||
$MESS["REST_MP_APP_INSTALL_REQUEST"] = "Отправить";
|
||||
$MESS["MARKETPLACE_MORE_BUTTON"] = "Ещё";
|
||||
$MESS["MARKETPLACE_HIDDEN_BUY"] = "Содержит встроенные покупки";
|
||||
$MESS["MARKETPLACE_CONFIGURATION_INSTALL_SETTING_BTN"] = "Настроить";
|
||||
$MESS["REST_MARKETPLACE_HIDDEN_BUY"] = "содержит встроенные покупки";
|
||||
$MESS["REST_MARKETPLACE_SUBSCRIPTION_EXPANDS"] = "расширенный функционал по подписке на Битрикс24.Маркет";
|
||||
$MESS["REST_MARKETPLACE_SUBSCRIPTION_EXPANDS_MSGVER_1"] = "расширенный функционал по подписке на Битрикс24 Маркет";
|
||||
$MESS["REST_MARKETPLACE_EXTERNAL_PAYMENT"] = "требуется оплата внешнего сервиса";
|
||||
$MESS["REST_MARKETPLACE_SUBSCRIPTION_REQUIRED"] = "требуется подписка";
|
||||
|
||||
+2
-2
@@ -406,7 +406,7 @@ if ($arResult['APP']['ACTIVE'] === 'Y' && $arResult['ADMIN'])
|
||||
<div class="mp-detail-main-controls-description"><?=GetMessage('REST_MARKETPLACE_HIDDEN_BUY')?></div>
|
||||
<?php endif;?>
|
||||
<?php if ($arResult['APP']['SUBSCRIPTION_EXPANDS'] === 'Y'):?>
|
||||
<div class="mp-detail-main-controls-description"><?=GetMessage('REST_MARKETPLACE_SUBSCRIPTION_EXPANDS')?></div>
|
||||
<div class="mp-detail-main-controls-description"><?=GetMessage('REST_MARKETPLACE_SUBSCRIPTION_EXPANDS_MSGVER_1')?></div>
|
||||
<?php endif;?>
|
||||
<?php if ($arResult['APP']['SUBSCRIPTION_REQUIRED'] === 'Y'):?>
|
||||
<div class="mp-detail-main-controls-description"><?=GetMessage('REST_MARKETPLACE_SUBSCRIPTION_REQUIRED')?></div>
|
||||
@@ -545,7 +545,7 @@ $arJSParams = array(
|
||||
BX.message({
|
||||
"MARKETPLACE_APP_INSTALL_REQUEST" : "<?=GetMessageJS('MARKETPLACE_APP_INSTALL_REQUEST')?>",
|
||||
"MARKETPLACE_LICENSE_ERROR" : "<?=GetMessageJS('MARKETPLACE_LICENSE_ERROR')?>",
|
||||
"MARKETPLACE_LICENSE_TOS_ERROR_2" : "<?=GetMessageJS('MARKETPLACE_LICENSE_TOS_ERROR_2')?>",
|
||||
"MARKETPLACE_LICENSE_TOS_ERROR_2_MSGVER_1" : "<?=GetMessageJS('MARKETPLACE_LICENSE_TOS_ERROR_2_MSGVER_1')?>",
|
||||
"REST_MP_INSTALL_REQUEST_CONFIRM" : "<?=GetMessageJS('REST_MP_INSTALL_REQUEST_CONFIRM')?>",
|
||||
"REST_MP_APP_INSTALL_REQUEST" : "<?=GetMessageJS('REST_MP_APP_INSTALL_REQUEST')?>"
|
||||
});
|
||||
|
||||
+2
-2
@@ -13,5 +13,5 @@ $MESS["REST_MARKETPLACE_INSTALL_MODULE_UNINSTALL_BITRIX24"] = "Some of the servi
|
||||
$MESS["REST_MARKETPLACE_INSTALL_PRIVACY_LINK"] = "https://www.bitrix24.com/privacy/";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_PRIVACY_TEXT"] = "I have read and agree with the <a href=\"#LINK#\" target=\"_blank\">Privacy Policy</a>";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_REQUIRED_RIGHTS"] = "The application requests permissions for:";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_TERMS_OF_SERVICE_TEXT"] = "By installing or downloading apps or solutions, you agree to the <a href=\"#LINK#\" target=\"_blank\">Bitrix24.Market Terms of Use</a>";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_TOS_ERROR"] = "You have to agree to the Bitrix24.Market Terms of Use to install the application";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_TERMS_OF_SERVICE_TEXT_MSGVER_1"] = "By installing or downloading apps or solutions, you agree to the <a href=\"#LINK#\" target=\"_blank\">Bitrix24 Market Terms of Use</a>.";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_TOS_ERROR_MSGVER_1"] = "You have to agree to the Bitrix24 Market Terms of Use to install the application.";
|
||||
|
||||
+2
-2
@@ -13,5 +13,5 @@ $MESS["REST_MARKETPLACE_INSTALL_MODULE_UNINSTALL_BITRIX24"] = "Қосымшан
|
||||
$MESS["REST_MARKETPLACE_INSTALL_PRIVACY_LINK"] = "https://www.bitrix24.kz/about/privacy.php";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_PRIVACY_TEXT"] = "Мен <a href=\"#LINK#\" target=\"_blank\">құпиялылық саясатымен</a> таныстым және келісемін";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_REQUIRED_RIGHTS"] = "Қосымша келесі әрекеттерге рұқсат сұрайды:";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_TERMS_OF_SERVICE_TEXT"] = "Қосымшаларды немесе интеграцияларды орнату немесе жүктеу арқылы сіз <a href=\"#LINK#\" target=\"_blank\">Битрикс24.Маркетті пайдалану шарттарымен</a> келісесіз";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_TOS_ERROR"] = "Қосымшаны орнату үшін Битрикс24.Маркетті пайдалану шарттарымен келісіміңізді растауыңыз керек";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_TERMS_OF_SERVICE_TEXT_MSGVER_1"] = "Қосымшаларды немесе интеграцияларды орнату немесе жүктеу арқылы сіз <a href=\"#LINK#\" target=\"_blank\">Битрикс24 Маркет пайдалану шарттарымен</a> келісесіз";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_TOS_ERROR_MSGVER_1"] = "Қосымшаны орнату үшін Битрикс24 Маркет пайдалану шарттарымен келісетініңізді растауыңыз керек";
|
||||
|
||||
+2
-2
@@ -10,8 +10,8 @@ $MESS["REST_MARKETPLACE_INSTALL_EULA_LINK"] = "https://www.1c-bitrix.ru/license.
|
||||
$MESS["REST_MARKETPLACE_INSTALL_PRIVACY_TEXT"] = "Я ознакомлен и согласен с <a href=\"#LINK#\" target=\"_blank\">политикой конфиденциальности</a>";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_PRIVACY_LINK"] = "https://www.bitrix24.ru/about/privacy.php";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_HTTPS_WARNING"] = "<b>Внимание!</b> При работе без https работоспособность устанавливаемых приложений не гарантируется.";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_TERMS_OF_SERVICE_TEXT"] = "Устанавливая или загружая приложения или интеграции, вы соглашаетесь с <a href=\"#LINK#\" target=\"_blank\">Условиями использования Битрикс24.Маркет</a>";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_TERMS_OF_SERVICE_TEXT_MSGVER_1"] = "Устанавливая или загружая приложения или интеграции, вы соглашаетесь с <a href=\"#LINK#\" target=\"_blank\">Условиями использования Битрикс24 Маркет</a>";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_LICENSE_ERROR"] = "Для установки приложения необходимо подтвердить свое согласие с лицензионным соглашением и политикой конфиденциальности";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_TOS_ERROR"] = "Для установки приложения необходимо подтвердить свое согласие с условиями использования Битрикс24.Маркет";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_TOS_ERROR_MSGVER_1"] = "Для установки приложения необходимо подтвердить свое согласие с условиями использования Битрикс24 Маркет";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_BTN_INSTALL"] = "Установить";
|
||||
$MESS["REST_MARKETPLACE_INSTALL_BTN_CANCEL"] = "Отмена";
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ BX.Rest.Marketplace.Install =
|
||||
BX("mp_tos_license") && !BX("mp_tos_license").checked
|
||||
)
|
||||
{
|
||||
BX("rest_mp_install_error").innerHTML = BX.message("REST_MARKETPLACE_INSTALL_TOS_ERROR");
|
||||
BX("rest_mp_install_error").innerHTML = BX.message("REST_MARKETPLACE_INSTALL_TOS_ERROR_MSGVER_1");
|
||||
BX.show(BX('rest_mp_install_error'));
|
||||
return;
|
||||
}
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
{"version":3,"file":"script.map.js","names":["BX","namespace","Rest","Marketplace","Install","init","params","this","code","CODE","version","VERSION","checkHash","CHECK_HASH","installHash","INSTALL_HASH","from","FROM","iframe","IFRAME","redirectPriority","REDIRECT_PRIORITY","formNode","buttonInstallNode","findChildByClassName","buttonCloseNode","bind","onSubmitForm","onClickClose","event","preventDefault","SidePanel","Instance","close","checked","innerHTML","message","show","hasClass","classList","add","queryParam","check_hash","install_hash","ajax","runAction","data","then","response","result","error","helperCode","top","UI","InfoHelper","error_description","redirect","location","href","util","remove_url_param","installed","eventResult","onCustomEvent","open","reload","rest","AppLayout","openApplication","id","initHelper","window","isInited","frameUrlTemplate","frameNode","iframeId","proxy","origin","indexOf","action","slider","getTopSlider"],"sources":["script.js"],"mappings":"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"}
|
||||
{"version":3,"file":"script.map.js","names":["BX","namespace","Rest","Marketplace","Install","init","params","this","code","CODE","version","VERSION","checkHash","CHECK_HASH","installHash","INSTALL_HASH","from","FROM","iframe","IFRAME","redirectPriority","REDIRECT_PRIORITY","formNode","buttonInstallNode","findChildByClassName","buttonCloseNode","bind","onSubmitForm","onClickClose","event","preventDefault","SidePanel","Instance","close","checked","innerHTML","message","show","hasClass","classList","add","queryParam","check_hash","install_hash","ajax","runAction","data","then","response","result","error","helperCode","top","UI","InfoHelper","error_description","redirect","location","href","util","remove_url_param","installed","eventResult","onCustomEvent","open","reload","rest","AppLayout","openApplication","id","initHelper","window","isInited","frameUrlTemplate","frameNode","iframeId","proxy","origin","indexOf","action","slider","getTopSlider"],"sources":["script.js"],"mappings":"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","ignoreList":[]}
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
"use strict";BX.namespace("BX.Rest.Marketplace.Install");BX.Rest.Marketplace.Install={init:function(e){e=typeof e==="object"?e:{};this.code=e.CODE||false;this.version=e.VERSION||false;this.checkHash=e.CHECK_HASH||false;this.installHash=e.INSTALL_HASH||false;this.from=e.FROM||false;this.iframe=e.IFRAME||false;this.redirectPriority=e.REDIRECT_PRIORITY||false;this.formNode=BX("restMarketAppInstallForm");this.buttonInstallNode=BX.findChildByClassName(this.formNode,"rest-btn-start-install");this.buttonCloseNode=BX.findChildByClassName(this.formNode,"rest-btn-close-install");BX.bind(this.formNode,"submit",this.onSubmitForm.bind(this));BX.bind(this.buttonCloseNode,"click",this.onClickClose.bind(this))},onClickClose:function(e){e.preventDefault();if(!!this.iframe){BX.SidePanel.Instance.close()}},onSubmitForm:function(e){e.preventDefault();if(BX("mp_tos_license")&&!BX("mp_tos_license").checked){BX("rest_mp_install_error").innerHTML=BX.message("REST_MARKETPLACE_INSTALL_TOS_ERROR");BX.show(BX("rest_mp_install_error"));return}if(BX("mp_detail_license")&&!BX("mp_detail_license").checked||BX("mp_detail_confidentiality")&&!BX("mp_detail_confidentiality").checked){BX("rest_mp_install_error").innerHTML=BX.message("REST_MARKETPLACE_INSTALL_LICENSE_ERROR");BX.show(BX("rest_mp_install_error"));return}if(BX.hasClass(this.buttonInstallNode,"ui-btn-wait")){return}this.buttonInstallNode.classList.add("ui-btn-wait");var t={code:this.code};if(!!this.version){t.version=this.version}if(!!this.checkHash){t.check_hash=this.checkHash;t.install_hash=this.installHash}if(!!this.from){t.from=this.from}BX.ajax.runAction("rest.application.install",{data:t}).then(function(e){var t=!!e.data?e.data:e;if(!!t.error){if(!!t.helperCode&&t.helperCode!==""){top.BX.UI.InfoHelper.show(t.helperCode)}else{BX("rest_mp_install_error").innerHTML='<div class="ui-alert-message">'+t.error+(!!t.error_description?"<br />"+t.error_description:"")+"</div>";BX.show(BX("rest_mp_install_error"))}}else if(!!t.redirect&&this.redirectPriority===true){top.location.href=t.redirect}else if(!this.iframe){if(!!t.redirect){top.location.href=t.redirect}else{top.location.href=BX.util.remove_url_param(top.location.href,["install"])}}else{if(t.installed){var i={};top.BX.onCustomEvent(top,"Rest:AppLayout:ApplicationInstall",[true,i],false)}if(!!t.open){BX.SidePanel.Instance.reload();top.BX.rest.AppLayout.openApplication(t.id,{})}else{BX.SidePanel.Instance.reload()}}}.bind(this))},initHelper:function(e){if(!window.BX.UI.InfoHelper.isInited()){window.BX.UI.InfoHelper.init({frameUrlTemplate:e.frameUrlTemplate});window.BX.UI.InfoHelper.frameNode=BX(e.iframeId)}BX.bind(window,"message",BX.proxy((function(e){if(!!e.origin&&e.origin.indexOf("bitrix")===-1){return}if(!e.data||typeof e.data!=="object"){return}if(e.data.action==="reloadParent"){var t=BX.SidePanel.Instance.getTopSlider();if(!!t){t.reload()}else{window.location.reload()}}})))}};
|
||||
"use strict";BX.namespace("BX.Rest.Marketplace.Install");BX.Rest.Marketplace.Install={init:function(e){e=typeof e==="object"?e:{};this.code=e.CODE||false;this.version=e.VERSION||false;this.checkHash=e.CHECK_HASH||false;this.installHash=e.INSTALL_HASH||false;this.from=e.FROM||false;this.iframe=e.IFRAME||false;this.redirectPriority=e.REDIRECT_PRIORITY||false;this.formNode=BX("restMarketAppInstallForm");this.buttonInstallNode=BX.findChildByClassName(this.formNode,"rest-btn-start-install");this.buttonCloseNode=BX.findChildByClassName(this.formNode,"rest-btn-close-install");BX.bind(this.formNode,"submit",this.onSubmitForm.bind(this));BX.bind(this.buttonCloseNode,"click",this.onClickClose.bind(this))},onClickClose:function(e){e.preventDefault();if(!!this.iframe){BX.SidePanel.Instance.close()}},onSubmitForm:function(e){e.preventDefault();if(BX("mp_tos_license")&&!BX("mp_tos_license").checked){BX("rest_mp_install_error").innerHTML=BX.message("REST_MARKETPLACE_INSTALL_TOS_ERROR_MSGVER_1");BX.show(BX("rest_mp_install_error"));return}if(BX("mp_detail_license")&&!BX("mp_detail_license").checked||BX("mp_detail_confidentiality")&&!BX("mp_detail_confidentiality").checked){BX("rest_mp_install_error").innerHTML=BX.message("REST_MARKETPLACE_INSTALL_LICENSE_ERROR");BX.show(BX("rest_mp_install_error"));return}if(BX.hasClass(this.buttonInstallNode,"ui-btn-wait")){return}this.buttonInstallNode.classList.add("ui-btn-wait");var t={code:this.code};if(!!this.version){t.version=this.version}if(!!this.checkHash){t.check_hash=this.checkHash;t.install_hash=this.installHash}if(!!this.from){t.from=this.from}BX.ajax.runAction("rest.application.install",{data:t}).then(function(e){var t=!!e.data?e.data:e;if(!!t.error){if(!!t.helperCode&&t.helperCode!==""){top.BX.UI.InfoHelper.show(t.helperCode)}else{BX("rest_mp_install_error").innerHTML='<div class="ui-alert-message">'+t.error+(!!t.error_description?"<br />"+t.error_description:"")+"</div>";BX.show(BX("rest_mp_install_error"))}}else if(!!t.redirect&&this.redirectPriority===true){top.location.href=t.redirect}else if(!this.iframe){if(!!t.redirect){top.location.href=t.redirect}else{top.location.href=BX.util.remove_url_param(top.location.href,["install"])}}else{if(t.installed){var i={};top.BX.onCustomEvent(top,"Rest:AppLayout:ApplicationInstall",[true,i],false)}if(!!t.open){BX.SidePanel.Instance.reload();top.BX.rest.AppLayout.openApplication(t.id,{})}else{BX.SidePanel.Instance.reload()}}}.bind(this))},initHelper:function(e){if(!window.BX.UI.InfoHelper.isInited()){window.BX.UI.InfoHelper.init({frameUrlTemplate:e.frameUrlTemplate});window.BX.UI.InfoHelper.frameNode=BX(e.iframeId)}BX.bind(window,"message",BX.proxy((function(e){if(!!e.origin&&e.origin.indexOf("bitrix")===-1){return}if(!e.data||typeof e.data!=="object"){return}if(e.data.action==="reloadParent"){var t=BX.SidePanel.Instance.getTopSlider();if(!!t){t.reload()}else{window.location.reload()}}})))}};
|
||||
//# sourceMappingURL=script.map.js
|
||||
+2
-2
@@ -163,7 +163,7 @@ else:
|
||||
<input type="checkbox" id="mp_tos_license" value="N">
|
||||
<label for="mp_tos_license">
|
||||
<?=Loc::getMessage(
|
||||
'REST_MARKETPLACE_INSTALL_TERMS_OF_SERVICE_TEXT',
|
||||
'REST_MARKETPLACE_INSTALL_TERMS_OF_SERVICE_TEXT_MSGVER_1',
|
||||
[
|
||||
'#LINK#' => $arResult['TERMS_OF_SERVICE_LINK']
|
||||
]
|
||||
@@ -201,7 +201,7 @@ else:
|
||||
<script>
|
||||
BX.message({
|
||||
"REST_MARKETPLACE_INSTALL_LICENSE_ERROR" : "<?=Loc::getMessage("REST_MARKETPLACE_INSTALL_LICENSE_ERROR")?>",
|
||||
"REST_MARKETPLACE_INSTALL_TOS_ERROR" : "<?=Loc::getMessage("REST_MARKETPLACE_INSTALL_TOS_ERROR")?>",
|
||||
"REST_MARKETPLACE_INSTALL_TOS_ERROR_MSGVER_1" : "<?=Loc::getMessage("REST_MARKETPLACE_INSTALL_TOS_ERROR_MSGVER_1")?>",
|
||||
});
|
||||
BX.ready(function () {
|
||||
BX.Rest.Marketplace.Install.init(<?=Json::encode(
|
||||
|
||||
+9
-6
@@ -22,7 +22,7 @@ class RestMarketplaceSolutionComponent extends CBitrixComponent
|
||||
$trade = [
|
||||
'title' => Loc::getMessage('REST_MARKETPLACE_SOLUTION_TRADE_TITLE'),
|
||||
'description' => Loc::getMessage('REST_MARKETPLACE_SOLUTION_TRADE_DESCRIPTION'),
|
||||
'image' => '/bitrix/images/rest/solution/trade.svg',
|
||||
'image' => '/bitrix/images/rest/solution/trade.png',
|
||||
'tag' => 'продажи',
|
||||
];
|
||||
$result['tags'][] = $trade;
|
||||
@@ -30,7 +30,7 @@ class RestMarketplaceSolutionComponent extends CBitrixComponent
|
||||
$furniture = [
|
||||
'title' => Loc::getMessage('REST_MARKETPLACE_SOLUTION_FURNITURE_TITLE'),
|
||||
'description' => Loc::getMessage('REST_MARKETPLACE_SOLUTION_FURNITURE_DESCRIPTION'),
|
||||
'image' => '/bitrix/images/rest/solution/furniture.svg',
|
||||
'image' => '/bitrix/images/rest/solution/furniture.png',
|
||||
'tag' => 'мебель',
|
||||
];
|
||||
$result['tags'][] = $furniture;
|
||||
@@ -38,17 +38,18 @@ class RestMarketplaceSolutionComponent extends CBitrixComponent
|
||||
$production = [
|
||||
'title' => Loc::getMessage('REST_MARKETPLACE_SOLUTION_PRODUCTION_TITLE'),
|
||||
'description' => Loc::getMessage('REST_MARKETPLACE_SOLUTION_PRODUCTION_DESCRIPTION'),
|
||||
'image' => '/bitrix/images/rest/solution/production.svg',
|
||||
'image' => '/bitrix/images/rest/solution/production.png',
|
||||
'tag' => 'производство',
|
||||
];
|
||||
$result['tags'][] = $production;
|
||||
}
|
||||
|
||||
else if (in_array($region, ['ru', 'by']))
|
||||
{
|
||||
$trade = [
|
||||
'title' => Loc::getMessage('REST_MARKETPLACE_SOLUTION_TRADE_TITLE'),
|
||||
'description' => Loc::getMessage('REST_MARKETPLACE_SOLUTION_TRADE_DESCRIPTION'),
|
||||
'image' => '/bitrix/images/rest/solution/trade.svg',
|
||||
'image' => '/bitrix/images/rest/solution/trade.png',
|
||||
'tag' => 'продажи',
|
||||
];
|
||||
$result['tags'][] = $trade;
|
||||
@@ -56,7 +57,7 @@ class RestMarketplaceSolutionComponent extends CBitrixComponent
|
||||
$build = [
|
||||
'title' => Loc::getMessage('REST_MARKETPLACE_SOLUTION_CONSTRUCTION_TITLE'),
|
||||
'description' => Loc::getMessage('REST_MARKETPLACE_SOLUTION_CONSTRUCTION_DESCRIPTION'),
|
||||
'image' => '/bitrix/images/rest/solution/build.svg',
|
||||
'image' => '/bitrix/images/rest/solution/build.png',
|
||||
'tag' => 'строительство',
|
||||
];
|
||||
$result['tags'][] = $build;
|
||||
@@ -64,13 +65,15 @@ class RestMarketplaceSolutionComponent extends CBitrixComponent
|
||||
$tourism = [
|
||||
'title' => Loc::getMessage('REST_MARKETPLACE_SOLUTION_TOURISM_TITLE'),
|
||||
'description' => Loc::getMessage('REST_MARKETPLACE_SOLUTION_TOURISM_DESCRIPTION'),
|
||||
'image' => '/bitrix/images/rest/solution/tourism.svg',
|
||||
'image' => '/bitrix/images/rest/solution/tourism.png',
|
||||
'tag' => 'туризм',
|
||||
];
|
||||
$result['tags'][] = $tourism;
|
||||
}
|
||||
|
||||
$this->arResult = $result;
|
||||
|
||||
$this->arResult['CURRENT_LANG'] = \Bitrix\Main\Localization\Loc::getCurrentLang();
|
||||
}
|
||||
|
||||
public function executeComponent(): void
|
||||
|
||||
+13
-9
@@ -3,20 +3,24 @@
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.rest-market-solution-main {
|
||||
|
||||
}
|
||||
|
||||
.rest-market-solution-main__banner {
|
||||
#width: 882px;
|
||||
height: 280px;
|
||||
background-color: #FFFFFF;
|
||||
background-image: url(images/banner-bg.svg);
|
||||
background-repeat: no-repeat;
|
||||
background-position: right bottom;
|
||||
border-radius: 16px;
|
||||
position: relative;
|
||||
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
|
||||
background-size: auto 262px;
|
||||
}
|
||||
|
||||
.rest-market-solution-main__banner--ru {
|
||||
background-image: url(images/banner-bg-ru.png);
|
||||
}
|
||||
|
||||
.rest-market-solution-main__banner--other {
|
||||
background-image: url(images/banner-bg-other.png);
|
||||
}
|
||||
|
||||
.rest-market-solution-main__banner-wrapper {
|
||||
@@ -94,10 +98,10 @@
|
||||
|
||||
.rest-market-solution__item-img {
|
||||
position: absolute;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
width: 100px;
|
||||
height: 120px;
|
||||
bottom: 5px;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.rest-market-solution-all {
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
.rest-market-solution-section{display:flex;flex-direction:column}.rest-market-solution-main__banner{#width:882px;height:280px;background-color:#fff;background-image:url(images/banner-bg.svg);background-repeat:no-repeat;background-position:100% 100%;border-radius:16px;position:relative;box-shadow:1px 1px 1px rgba(0,0,0,.1)}.rest-market-solution-main__banner-wrapper{position:absolute;left:24px;top:54px;width:360px}.rest-market-solution-main__banner-title{width:250px;font-weight:600;font-size:21px;line-height:29px;color:var(--ui-color-palette-black-base,#333)}.rest-market-solution-main__banner-description{margin-top:8px;font-weight:400;font-size:14px;line-height:19px;width:385px;color:var(--ui-color-palette-gray-90,#525c69)}.rest-market-solution-main__banner-action{margin-top:24px}.rest-market-solution-tag{margin-top:26px;display:flex;align-items:center;justify-content:space-between}.rest-market-solution-tag__item{width:291px;height:120px;background:var(--accent-soft-accent-soft-blue-3,#edf7ff);border-radius:16px;position:relative;box-shadow:1px 1px 1px rgba(0,0,0,.1)}.rest-market-solution-tag__item:not(:last-child){margin-right:10px}.rest-market-solution-tag__item-wrapper{position:absolute;top:30px;left:18px}.rest-market-solution-tag__item-title{font-weight:600;font-size:15px;line-height:20px;color:var(--ui-color-palette-black-base,#333)}.rest-market-solution-tag__item-description{margin-top:8px;width:150px;font-weight:400;font-size:10px;line-height:12px;letter-spacing:0;vertical-align:middle;color:var(--ui-color-palette-gray-90,#525c69)}.rest-market-solution__item-img{position:absolute;width:90px;height:90px;top:10px;right:10px}.rest-market-solution-all{text-align:center;margin-top:16px}
|
||||
.rest-market-solution-section{display:flex;flex-direction:column}.rest-market-solution-main__banner{#width:882px;height:280px;background-color:#fff;background-repeat:no-repeat;background-position:100% 100%;border-radius:16px;position:relative;box-shadow:1px 1px 1px rgba(0,0,0,.1);background-size:auto 262px}.rest-market-solution-main__banner--ru{background-image:url(images/banner-bg-ru.png)}.rest-market-solution-main__banner--other{background-image:url(images/banner-bg-other.png)}.rest-market-solution-main__banner-wrapper{position:absolute;left:24px;top:54px;width:360px}.rest-market-solution-main__banner-title{width:250px;font-weight:600;font-size:21px;line-height:29px;color:var(--ui-color-palette-black-base,#333)}.rest-market-solution-main__banner-description{margin-top:8px;font-weight:400;font-size:14px;line-height:19px;width:385px;color:var(--ui-color-palette-gray-90,#525c69)}.rest-market-solution-main__banner-action{margin-top:24px}.rest-market-solution-tag{margin-top:26px;display:flex;align-items:center;justify-content:space-between}.rest-market-solution-tag__item{width:291px;height:120px;background:var(--accent-soft-accent-soft-blue-3,#edf7ff);border-radius:16px;position:relative;box-shadow:1px 1px 1px rgba(0,0,0,.1)}.rest-market-solution-tag__item:not(:last-child){margin-right:10px}.rest-market-solution-tag__item-wrapper{position:absolute;top:30px;left:18px}.rest-market-solution-tag__item-title{font-weight:600;font-size:15px;line-height:20px;color:var(--ui-color-palette-black-base,#333)}.rest-market-solution-tag__item-description{margin-top:8px;width:150px;font-weight:400;font-size:10px;line-height:12px;letter-spacing:0;vertical-align:middle;color:var(--ui-color-palette-gray-90,#525c69)}.rest-market-solution__item-img{position:absolute;width:100px;height:120px;bottom:5px;right:0}.rest-market-solution-all{text-align:center;margin-top:16px}
|
||||
+20
-20
@@ -10,8 +10,7 @@ use Bitrix\Main\Localization\Loc; ?>
|
||||
|
||||
<div class="rest-market-solution-section">
|
||||
<div class="rest-market-solution-main">
|
||||
|
||||
<div class="rest-market-solution-main__banner">
|
||||
<div class="rest-market-solution-main__banner rest-market-solution-main__banner--<?= $arResult['CURRENT_LANG'] === 'ru' ? 'ru' : 'other' ?>">
|
||||
<div class="rest-market-solution-main__banner-wrapper">
|
||||
<div class="rest-market-solution-main__banner-title">
|
||||
<?= Loc::getMessage("REST_MARKETPLACE_SOLUTION_BANNER_TITLE") ?>
|
||||
@@ -31,28 +30,29 @@ use Bitrix\Main\Localization\Loc; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="rest-market-solution-tag">
|
||||
<?php foreach ($arResult['tags'] as $tag): ?>
|
||||
<a href="/market/category/vertical_crm/?tag=<?= $tag['tag'] ?>" class="rest-market-solution-tag__item">
|
||||
<div class="rest-market-solution-tag__item-wrapper">
|
||||
<div class="rest-market-solution-tag__item-title">
|
||||
<?= $tag['title'] ?>
|
||||
<?php if (!empty($arResult['tags'])): ?>
|
||||
<div class="rest-market-solution-tag">
|
||||
<?php foreach ($arResult['tags'] as $tag): ?>
|
||||
<a href="/market/category/vertical_crm/?tag=<?= $tag['tag'] ?>" class="rest-market-solution-tag__item">
|
||||
<div class="rest-market-solution-tag__item-wrapper">
|
||||
<div class="rest-market-solution-tag__item-title">
|
||||
<?= $tag['title'] ?>
|
||||
</div>
|
||||
<div class="rest-market-solution-tag__item-description">
|
||||
<?= $tag['description'] ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="rest-market-solution-tag__item-description">
|
||||
<?= $tag['description'] ?>
|
||||
<div class="rest-market-solution-tag__item-bg">
|
||||
<img src="<?= $tag['image'] ?>" class="rest-market-solution__item-img" alt=""/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="rest-market-solution-tag__item-bg">
|
||||
<img src="<?= $tag['image'] ?>" class="rest-market-solution__item-img" alt=""/>
|
||||
</div>
|
||||
</a>
|
||||
<?php
|
||||
endforeach;
|
||||
?>
|
||||
</div>
|
||||
</a>
|
||||
<?php
|
||||
endforeach;
|
||||
?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="rest-market-solution-all">
|
||||
<a href="/market/category/vertical_crm/" class="ui-btn --air ui-btn-lg --style-outline ui-btn-no-caps">
|
||||
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
<?php
|
||||
$MESS["RMP_COMP_DESCR_2"] = "Bitrix24 Market composite component";
|
||||
$MESS["RMP_COMP_NAME_2"] = "Bitrix24 application catalog";
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2"] = "Bitrix24 Market";
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2_MSGVER_1"] = "Bitrix24 Market";
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
<?php
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2"] = "Битрикс24 Маркетплейс";
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2_MSGVER_1"] = "Маркетплейс";
|
||||
$MESS["RMP_COMP_DESCR_2"] = "Битрикс24.Маркет кешенді компоненті";
|
||||
$MESS["RMP_COMP_NAME_2"] = "Битрикс24 арналған қосымшалар каталогы";
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
$MESS["RMP_APPLICATION_PAGE"] = "Қосымша парақшасының мекенжайына сілтеме қалыбы";
|
||||
$MESS["RMP_SEF_BUY"] = "Сатып алулар мен орнатылған қосымшалар";
|
||||
$MESS["RMP_SEF_CATEGORY"] = "Қосымшалар санатының индексі";
|
||||
$MESS["RMP_SEF_DETAIL"] = "Қосымша парақшасы";
|
||||
$MESS["RMP_SEF_SEARCH"] = "Іздеу";
|
||||
$MESS["RMP_SEF_TOP"] = "Үздік қосымшалар";
|
||||
$MESS["RMP_SEF_UPDATES"] = "Жаңартулар";
|
||||
$MESS["RMP_VA_CATEGORY"] = "Қосымшалар санаты";
|
||||
$MESS["RMP_VA_CODE"] = "Қосымшаның коды";
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
<?php
|
||||
$MESS["RMP_COMP_NAME_2"] = "Каталог приложений для Битрикс24";
|
||||
$MESS["RMP_COMP_DESCR_2"] = "Комплексный компонент Битрикс24.Маркет";
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2"] = "Битрикс24.Маркет";
|
||||
$MESS["RMP_PATH_B24MP_DESCR_2_MSGVER_1"] = "Маркетплейс";
|
||||
@@ -5,8 +5,5 @@ if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)
|
||||
if(!CModule::IncludeModule('rest'))
|
||||
return;
|
||||
|
||||
$arServiceParams = $arParams;
|
||||
$arServiceParams['CLASS'] = 'CRestProvider';
|
||||
|
||||
$APPLICATION->IncludeComponent('bitrix:rest.server', '', $arServiceParams, null, array('HIDE_ICONS' => false))
|
||||
$APPLICATION->IncludeComponent('bitrix:rest.server', '', $arParams, null, array('HIDE_ICONS' => false))
|
||||
?>
|
||||
@@ -1,7 +1,8 @@
|
||||
<?
|
||||
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)
|
||||
<?php
|
||||
|
||||
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
|
||||
{
|
||||
die();
|
||||
die;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -14,42 +15,59 @@ if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)
|
||||
* @global CUser $USER
|
||||
*/
|
||||
|
||||
if(!CModule::IncludeModule('rest'))
|
||||
use Bitrix\Rest\Internal\Service\MemoryLimitChecker;
|
||||
|
||||
if (!CModule::IncludeModule('rest'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
MemoryLimitChecker::createByDefault()->executeOnMemoryExcess(function ($memoryUsageMB, $maxAllowedSizeMB) {
|
||||
if (IsModuleInstalled('bitrix24'))
|
||||
{
|
||||
AddMessage2Log(
|
||||
"Rest payload Too Large. Estimated memory usage: {$memoryUsageMB} MB, max allowed: {$maxAllowedSizeMB} MB",
|
||||
'rest',
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
$query = \CRestUtil::getRequestData();
|
||||
|
||||
$arDefaultUrlTemplates404 = array(
|
||||
"method" => "#method#",
|
||||
"method1" => "#method#/",
|
||||
"webhook" => "#aplogin#/#ap#/#method#",
|
||||
"webhook1" => "#aplogin#/#ap#/#method#/",
|
||||
);
|
||||
$arDefaultUrlTemplates404 = [
|
||||
'method' => '#method#',
|
||||
'method1' => '#method#/',
|
||||
'webhook' => '#aplogin#/#ap#/#method#',
|
||||
'webhook1' => '#aplogin#/#ap#/#method#/',
|
||||
'apiWebhook' => 'api/#aplogin#/#ap#/#method#',
|
||||
'apiWebhook1' => 'api/#aplogin#/#ap#/#method#/',
|
||||
'apiMethod' => 'api/#method#',
|
||||
'apiMethod1' => 'api/#method#/',
|
||||
];
|
||||
|
||||
$arDefaultVariableAliases404 = array();
|
||||
$arDefaultVariableAliases = array();
|
||||
$arDefaultVariableAliases404 = [];
|
||||
$arDefaultVariableAliases = [];
|
||||
|
||||
$arComponentVariables = array(
|
||||
"method", "aplogin", "ap"
|
||||
);
|
||||
$arComponentVariables = [
|
||||
'method', 'aplogin', 'ap'
|
||||
];
|
||||
|
||||
$arVariables = array();
|
||||
$arVariables = [];
|
||||
|
||||
if($arParams["SEF_MODE"] == "Y")
|
||||
$serverClass = CRestServer::class;
|
||||
|
||||
if ($arParams['SEF_MODE'] == 'Y')
|
||||
{
|
||||
$arUrlTemplates = CComponentEngine::MakeComponentUrlTemplates($arDefaultUrlTemplates404, $arParams["SEF_URL_TEMPLATES"] ?? []);
|
||||
$arVariableAliases = CComponentEngine::MakeComponentVariableAliases($arDefaultVariableAliases404, $arParams["VARIABLE_ALIASES"] ?? []);
|
||||
$arUrlTemplates = CComponentEngine::MakeComponentUrlTemplates($arDefaultUrlTemplates404, $arParams['SEF_URL_TEMPLATES'] ?? []);
|
||||
$arVariableAliases = CComponentEngine::MakeComponentVariableAliases($arDefaultVariableAliases404, $arParams['VARIABLE_ALIASES'] ?? []);
|
||||
|
||||
$componentPage = CComponentEngine::ParseComponentPath(
|
||||
$arParams["SEF_FOLDER"],
|
||||
$arParams['SEF_FOLDER'],
|
||||
$arUrlTemplates,
|
||||
$arVariables
|
||||
$arVariables,
|
||||
);
|
||||
|
||||
CComponentEngine::InitComponentVariables($componentPage, $arComponentVariables, $arVariableAliases, $arVariables);
|
||||
|
||||
$query = array_merge($query, $arVariables);
|
||||
unset($query['method']);
|
||||
}
|
||||
@@ -58,47 +76,63 @@ else
|
||||
ShowError('Non-SEF mode is not supported by bitrix:rest.server component');
|
||||
}
|
||||
|
||||
$transport = 'json';
|
||||
$methods = [mb_strtolower($arVariables['method']), $arVariables['method']];
|
||||
$transport = CRestServer::TRANSPORT_JSON;
|
||||
|
||||
// try lowercase first, then original
|
||||
foreach ($methods as $method)
|
||||
if (!in_array($componentPage, ['apiWebhook', 'apiWebhook1', 'apiMethod', 'apiMethod1'], true))
|
||||
{
|
||||
$point = mb_strrpos($method, '.');
|
||||
$methods = [mb_strtolower($arVariables['method']), $arVariables['method']];
|
||||
|
||||
if($point > 0)
|
||||
// try lowercase first, then original
|
||||
foreach ($methods as $method)
|
||||
{
|
||||
$check = mb_substr($method, $point + 1);
|
||||
if(CRestServer::transportSupported($check))
|
||||
$point = mb_strrpos($method, '.');
|
||||
|
||||
if ($point > 0)
|
||||
{
|
||||
$transport = $check;
|
||||
$method = mb_substr($method, 0, $point);
|
||||
$check = mb_substr($method, $point + 1);
|
||||
if (CRestServer::transportSupported($check))
|
||||
{
|
||||
$transport = $check;
|
||||
$method = mb_substr($method, 0, $point);
|
||||
}
|
||||
}
|
||||
|
||||
$server = new CRestServer([
|
||||
'CLASS' => $arParams['CLASS'] ?? null,
|
||||
'METHOD' => $method,
|
||||
'TRANSPORT' => $transport,
|
||||
'QUERY' => $query,
|
||||
], false);
|
||||
|
||||
$result = $server->process();
|
||||
|
||||
// try original controller name if lower is not found
|
||||
if (is_array($result) && !empty($result['error']) && $result['error'] === 'ERROR_METHOD_NOT_FOUND')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// output result
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$schemaManager = \Bitrix\Main\DI\ServiceLocator::getInstance()->get(\Bitrix\Rest\V3\Schema\SchemaManager::class);
|
||||
$routes = $schemaManager->getRouteAliases();
|
||||
$serverRequest = new \Bitrix\Rest\V3\Interaction\Request\ServerRequest(($routes[$arVariables['method']] ?? $arVariables['method']), $query, \Bitrix\Main\Context::getCurrent()->getRequest());
|
||||
|
||||
$server = new CRestServer(array(
|
||||
"CLASS" => $arParams["CLASS"],
|
||||
"METHOD" => $method,
|
||||
"TRANSPORT" => $transport,
|
||||
"QUERY" => $query,
|
||||
), false);
|
||||
$server = new CRestApiServer([
|
||||
'LOCAL_ERROR_LANGUAGE' => \Bitrix\Main\Context::getCurrent()->getRequest()->getHeader('X-Local-Error-Language'),
|
||||
]);
|
||||
|
||||
$result = $server->process();
|
||||
|
||||
// try original controller name if lower is not found
|
||||
if (is_array($result) && !empty($result['error']) && $result['error'] === 'ERROR_METHOD_NOT_FOUND')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// output result
|
||||
break;
|
||||
$result = $server->processServerRequest($serverRequest);
|
||||
}
|
||||
|
||||
$APPLICATION->RestartBuffer();
|
||||
|
||||
$output = $server->output($result);
|
||||
if (is_object($output) && $output instanceof \Bitrix\Main\HttpResponse)
|
||||
if ($output instanceof \Bitrix\Main\HttpResponse)
|
||||
{
|
||||
$server->sendHeadersAdditional();
|
||||
$output->send();
|
||||
@@ -110,4 +144,4 @@ else
|
||||
}
|
||||
|
||||
CMain::FinalActions();
|
||||
die();
|
||||
die;
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
$MESS["REST_RSP_CLASS"] = "Іске асырушы класс";
|
||||
@@ -130,6 +130,21 @@ class rest extends CModule
|
||||
'\Bitrix\Rest\Marketplace\TagTable',
|
||||
'onAfterUnRegisterModule'
|
||||
);
|
||||
$eventManager->registerEventHandler(
|
||||
'mobile',
|
||||
'onMobileMenuStructureBuilt',
|
||||
'rest',
|
||||
'Bitrix\Rest\MobileMenuManager',
|
||||
'onMobileMenuStructureBuilt',
|
||||
);
|
||||
|
||||
$eventManager->registerEventHandlerCompatible(
|
||||
'im',
|
||||
'OnGetNotifySchema',
|
||||
'rest',
|
||||
\Bitrix\Rest\Integration\Im\NotifySchema::class,
|
||||
'onGetNotifySchema',
|
||||
);
|
||||
|
||||
\CAgent::AddAgent("Bitrix\\Rest\\Marketplace\\Client::getNumUpdates();", "rest", "N", 86400);
|
||||
\CAgent::AddAgent("Bitrix\\Rest\\EventOfflineTable::cleanProcessAgent();", "rest", "N", 86400);
|
||||
@@ -215,6 +230,21 @@ class rest extends CModule
|
||||
'\Bitrix\Rest\Marketplace\TagTable',
|
||||
'onAfterUnRegisterModule'
|
||||
);
|
||||
$eventManager->unRegisterEventHandler(
|
||||
'mobile',
|
||||
'onMobileMenuStructureBuilt',
|
||||
'rest',
|
||||
'Bitrix\Rest\MobileMenuManager',
|
||||
'onMobileMenuStructureBuilt',
|
||||
);
|
||||
|
||||
$eventManager->unRegisterEventHandler(
|
||||
'im',
|
||||
'OnGetNotifySchema',
|
||||
'rest',
|
||||
\Bitrix\Rest\Integration\Im\NotifySchema::class,
|
||||
'onGetNotifySchema',
|
||||
);
|
||||
|
||||
CAgent::RemoveModuleAgents("rest");
|
||||
|
||||
|
||||
@@ -183,7 +183,7 @@ BX.rest.Marketplace = (function(){
|
||||
BX("mp_tos_license") && !BX("mp_tos_license").checked
|
||||
)
|
||||
{
|
||||
BX("mp_detail_error").innerHTML = BX.message("MARKETPLACE_LICENSE_TOS_ERROR_2");
|
||||
BX("mp_detail_error").innerHTML = BX.message("MARKETPLACE_LICENSE_TOS_ERROR_2_MSGVER_1");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -462,6 +462,18 @@ BX.rest.Marketplace = (function(){
|
||||
);
|
||||
}
|
||||
|
||||
var isRenamedMarket = BX.message("IS_RENAMED_MARKET");
|
||||
var marketSubscriptionText3 = '';
|
||||
|
||||
if (isRenamedMarket === 'Y')
|
||||
{
|
||||
marketSubscriptionText3 = BX.message("REST_MP_SUBSCRIPTION_TEXT_3_MSGVER_1");
|
||||
}
|
||||
else
|
||||
{
|
||||
marketSubscriptionText3 = BX.message("REST_MP_SUBSCRIPTION_TEXT_3_MSGVER_2");
|
||||
}
|
||||
|
||||
var oPopup = BX.PopupWindowManager.create('marketplace_buy_subscription', null, {
|
||||
content: BX.create(
|
||||
'div',
|
||||
@@ -508,7 +520,7 @@ BX.rest.Marketplace = (function(){
|
||||
props: {
|
||||
className: 'rest-marketplace-popup-text'
|
||||
},
|
||||
html: BX.message("REST_MP_SUBSCRIPTION_TEXT_3").replace(
|
||||
html: marketSubscriptionText3.replace(
|
||||
'#ONCLICK#',
|
||||
'BX.rest.Marketplace.open(null,\'subscription\')'
|
||||
)
|
||||
@@ -679,6 +691,19 @@ BX.rest.Marketplace = (function(){
|
||||
this
|
||||
)
|
||||
});
|
||||
|
||||
var isRenamedMarket = BX.message("IS_RENAMED_MARKET");
|
||||
var marketDemoSubscriptionText1 = '';
|
||||
|
||||
if (isRenamedMarket === 'Y')
|
||||
{
|
||||
marketDemoSubscriptionText1 = BX.message("REST_MP_SUBSCRIPTION_DEMO_TEXT_1_MSGVER_1");
|
||||
}
|
||||
else
|
||||
{
|
||||
marketDemoSubscriptionText1 = BX.message("REST_MP_SUBSCRIPTION_DEMO_TEXT_1_MSGVER_2");
|
||||
}
|
||||
|
||||
var popupDemo = BX.PopupWindowManager.create('marketplace_demo_subscription', null, {
|
||||
content: BX.create(
|
||||
'div',
|
||||
@@ -710,7 +735,7 @@ BX.rest.Marketplace = (function(){
|
||||
props: {
|
||||
className: 'rest-marketplace-popup-text'
|
||||
},
|
||||
html: BX.message("REST_MP_SUBSCRIPTION_DEMO_TEXT_1").replace(
|
||||
html: marketDemoSubscriptionText1.replace(
|
||||
'#ONCLICK#',
|
||||
'BX.rest.Marketplace.open(null,\'subscription\')'
|
||||
)
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
$arModuleVersion = [
|
||||
'VERSION' => '25.700.100',
|
||||
'VERSION_DATE' => '2025-07-24 15:29:04'
|
||||
];
|
||||
|
||||
$arModuleVersion = array(
|
||||
"VERSION" => "25.800.0",
|
||||
"VERSION_DATE" => "2025-07-21 11:23:00"
|
||||
);
|
||||
|
||||
@@ -12,14 +12,13 @@ $MESS["REST_MP_SUBSCRIPTION_BUTTON_TITLE"] = "Buy subscription";
|
||||
$MESS["REST_MP_SUBSCRIPTION_BUTTON_TITLE2"] = "Free for 15 days";
|
||||
$MESS["REST_MP_SUBSCRIPTION_DEMO_EULA_LINK"] = "https://www.1c-bitrix.ru/download/files/manuals/ru/oferta_fiz.html";
|
||||
$MESS["REST_MP_SUBSCRIPTION_DEMO_EULA_TITLE"] = "I have read and agree with the <a href=\"#LINK#\" target=\"_blank\">License Agreement</a>";
|
||||
$MESS["REST_MP_SUBSCRIPTION_DEMO_TEXT_1"] = "Install and use applications available in <a href=\"javascript:void(0)\" onclick=\"#ONCLICK#\" >Bitrix24.Market</a> for free for 15 days.";
|
||||
$MESS["REST_MP_SUBSCRIPTION_DEMO_TEXT_1_MSGVER_1"] = "Install and use applications available in <a href=\"javascript:void(0)\" onclick=\"#ONCLICK#\" >Bitrix24 Market</a> for free for 15 days.";
|
||||
$MESS["REST_MP_SUBSCRIPTION_DEMO_TEXT_1_MSGVER_2"] = "Install and use applications available in <a href=\"javascript:void(0)\" onclick=\"#ONCLICK#\" >Bitrix24 Market</a> for free for 15 days.";
|
||||
$MESS["REST_MP_SUBSCRIPTION_DEMO_TEXT_2"] = "Try out the hundreds of new features for free. Subscribe when you know it's worth it.";
|
||||
$MESS["REST_MP_SUBSCRIPTION_DEMO_TITLE"] = "Subscribe for 15 days for free!";
|
||||
$MESS["REST_MP_SUBSCRIPTION_ERROR_OPEN_BUY_URL"] = "Unknown error when opening a page.";
|
||||
$MESS["REST_MP_SUBSCRIPTION_TEXT_1"] = "Your Bitrix24 has no limits!";
|
||||
$MESS["REST_MP_SUBSCRIPTION_TEXT_2"] = "Tailor your Bitrix24 to fit your business.";
|
||||
$MESS["REST_MP_SUBSCRIPTION_TEXT_3"] = "<a href=\"javascript:void(0)\" onclick=\"#ONCLICK#\" >Subscribe to Bitrix24.Market</a> and get:";
|
||||
$MESS["REST_MP_SUBSCRIPTION_TEXT_3_LI_1"] = "sales and tasks management solutions;";
|
||||
$MESS["REST_MP_SUBSCRIPTION_TEXT_3_LI_2"] = "sales scripts;";
|
||||
$MESS["REST_MP_SUBSCRIPTION_TEXT_3_LI_3"] = "analytical reports;";
|
||||
@@ -27,6 +26,7 @@ $MESS["REST_MP_SUBSCRIPTION_TEXT_3_LI_4"] = "lead generation and service integra
|
||||
$MESS["REST_MP_SUBSCRIPTION_TEXT_3_LI_5"] = "add-on automation rules and workflows;";
|
||||
$MESS["REST_MP_SUBSCRIPTION_TEXT_3_LI_6"] = "site templates;";
|
||||
$MESS["REST_MP_SUBSCRIPTION_TEXT_3_MSGVER_1"] = "<a href=\"javascript:void(0)\" onclick=\"#ONCLICK#\" >Subscribe to Bitrix24 Market</a> and get:";
|
||||
$MESS["REST_MP_SUBSCRIPTION_TEXT_3_MSGVER_2"] = "<a href=\"javascript:void(0)\" onclick=\"#ONCLICK#\" >Subscribe to Bitrix24 Market</a> and get:";
|
||||
$MESS["REST_MP_SUBSCRIPTION_TEXT_4"] = "Get unlimited apps and widgets for <a href=\"javascript:void(0)\" onclick=\"#ONCLICK#\">fixed price</a>.";
|
||||
$MESS["REST_MP_SUBSCRIPTION_TEXT_5"] = "Add even more features to your Bitrix24 to empower your business.";
|
||||
$MESS["REST_MP_SUBSCRIPTION_TITLE"] = "Bitrix24 Subscription";
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
$MESS["REST_ACCESS_DENIED"] = 'Access denied.';
|
||||
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
$MESS["REST_CLASS_REQUIRE_ATTRIBUTE_EXCEPTION"] = 'Class "#CLASS#" requires attribute "#ATTRIBUTE#".';
|
||||
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
$MESS["REST_ENTITY_NOT_FOUND"] = 'Entity with ID #ID# was not found.';
|
||||
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
$MESS["REST_INTERNAL_EXCEPTION"] = 'Something\'s gone wrong.';
|
||||
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
$MESS["REST_INTERNAL_ORM_SAVE_EXCEPTION"] = 'Internal error when saving a database record.';
|
||||
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
$MESS["REST_INVALID_FILTER_EXCEPTION"] = 'Invalid filter "#FILTER#".';
|
||||
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
$MESS["REST_INVALID_JSON_EXCEPTION"] = "Invalid JSON.";
|
||||
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
$MESS["REST_INVALID_ORDER_EXCEPTION"] = 'Invalid sort order "#ORDER#".';
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user