Исправления и начало добавления рассчёта доставки
This commit is contained in:
parent
fe0453f91b
commit
d4bc3e2263
|
@ -26,7 +26,8 @@
|
||||||
"carono/yii2-1c-exchange": "^0.3.1",
|
"carono/yii2-1c-exchange": "^0.3.1",
|
||||||
"yiisoft/yii2-imagine": "*",
|
"yiisoft/yii2-imagine": "*",
|
||||||
"mirzaev/yii2-arangodb": ">=2.1.x-dev",
|
"mirzaev/yii2-arangodb": ">=2.1.x-dev",
|
||||||
"mirzaev/yii2-arangodb-sessions": ">=1.1.x-dev"
|
"mirzaev/yii2-arangodb-sessions": ">=1.1.x-dev",
|
||||||
|
"guzzlehttp/guzzle": "^7.3"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"codeception/codeception": ">=4.1",
|
"codeception/codeception": ">=4.1",
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "ccecbc4681132b24e370af7c3db52dd8",
|
"content-hash": "281d5a604bec47375e20427f528690c7",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "bower-asset/bootstrap",
|
"name": "bower-asset/bootstrap",
|
||||||
|
@ -471,6 +471,239 @@
|
||||||
},
|
},
|
||||||
"time": "2020-06-29T00:56:53+00:00"
|
"time": "2020-06-29T00:56:53+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "guzzlehttp/guzzle",
|
||||||
|
"version": "7.3.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/guzzle/guzzle.git",
|
||||||
|
"reference": "7008573787b430c1c1f650e3722d9bba59967628"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/7008573787b430c1c1f650e3722d9bba59967628",
|
||||||
|
"reference": "7008573787b430c1c1f650e3722d9bba59967628",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-json": "*",
|
||||||
|
"guzzlehttp/promises": "^1.4",
|
||||||
|
"guzzlehttp/psr7": "^1.7 || ^2.0",
|
||||||
|
"php": "^7.2.5 || ^8.0",
|
||||||
|
"psr/http-client": "^1.0"
|
||||||
|
},
|
||||||
|
"provide": {
|
||||||
|
"psr/http-client-implementation": "1.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"bamarni/composer-bin-plugin": "^1.4.1",
|
||||||
|
"ext-curl": "*",
|
||||||
|
"php-http/client-integration-tests": "^3.0",
|
||||||
|
"phpunit/phpunit": "^8.5.5 || ^9.3.5",
|
||||||
|
"psr/log": "^1.1"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-curl": "Required for CURL handler support",
|
||||||
|
"ext-intl": "Required for Internationalized Domain Name (IDN) support",
|
||||||
|
"psr/log": "Required for using the Log middleware"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "7.3-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"GuzzleHttp\\": "src/"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"src/functions_include.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Michael Dowling",
|
||||||
|
"email": "mtdowling@gmail.com",
|
||||||
|
"homepage": "https://github.com/mtdowling"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Márk Sági-Kazár",
|
||||||
|
"email": "mark.sagikazar@gmail.com",
|
||||||
|
"homepage": "https://sagikazarmark.hu"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Guzzle is a PHP HTTP client library",
|
||||||
|
"homepage": "http://guzzlephp.org/",
|
||||||
|
"keywords": [
|
||||||
|
"client",
|
||||||
|
"curl",
|
||||||
|
"framework",
|
||||||
|
"http",
|
||||||
|
"http client",
|
||||||
|
"psr-18",
|
||||||
|
"psr-7",
|
||||||
|
"rest",
|
||||||
|
"web service"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/guzzle/guzzle/issues",
|
||||||
|
"source": "https://github.com/guzzle/guzzle/tree/7.3.0"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/GrahamCampbell",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/Nyholm",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/alexeyshockov",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/gmponos",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2021-03-23T11:33:13+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "guzzlehttp/promises",
|
||||||
|
"version": "1.4.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/guzzle/promises.git",
|
||||||
|
"reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d",
|
||||||
|
"reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.5"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"symfony/phpunit-bridge": "^4.4 || ^5.1"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.4-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"GuzzleHttp\\Promise\\": "src/"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"src/functions_include.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Michael Dowling",
|
||||||
|
"email": "mtdowling@gmail.com",
|
||||||
|
"homepage": "https://github.com/mtdowling"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Guzzle promises library",
|
||||||
|
"keywords": [
|
||||||
|
"promise"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/guzzle/promises/issues",
|
||||||
|
"source": "https://github.com/guzzle/promises/tree/1.4.1"
|
||||||
|
},
|
||||||
|
"time": "2021-03-07T09:25:29+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "guzzlehttp/psr7",
|
||||||
|
"version": "1.8.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/guzzle/psr7.git",
|
||||||
|
"reference": "35ea11d335fd638b5882ff1725228b3d35496ab1"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/guzzle/psr7/zipball/35ea11d335fd638b5882ff1725228b3d35496ab1",
|
||||||
|
"reference": "35ea11d335fd638b5882ff1725228b3d35496ab1",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.4.0",
|
||||||
|
"psr/http-message": "~1.0",
|
||||||
|
"ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
|
||||||
|
},
|
||||||
|
"provide": {
|
||||||
|
"psr/http-message-implementation": "1.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"ext-zlib": "*",
|
||||||
|
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.7-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"GuzzleHttp\\Psr7\\": "src/"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"src/functions_include.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Michael Dowling",
|
||||||
|
"email": "mtdowling@gmail.com",
|
||||||
|
"homepage": "https://github.com/mtdowling"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Tobias Schultze",
|
||||||
|
"homepage": "https://github.com/Tobion"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PSR-7 message implementation that also provides common utility methods",
|
||||||
|
"keywords": [
|
||||||
|
"http",
|
||||||
|
"message",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response",
|
||||||
|
"stream",
|
||||||
|
"uri",
|
||||||
|
"url"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/guzzle/psr7/issues",
|
||||||
|
"source": "https://github.com/guzzle/psr7/tree/1.8.1"
|
||||||
|
},
|
||||||
|
"time": "2021-03-21T16:25:00+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "imagine/imagine",
|
"name": "imagine/imagine",
|
||||||
"version": "1.2.4",
|
"version": "1.2.4",
|
||||||
|
@ -1304,6 +1537,50 @@
|
||||||
},
|
},
|
||||||
"time": "2017-10-23T01:57:42+00:00"
|
"time": "2017-10-23T01:57:42+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "ralouphie/getallheaders",
|
||||||
|
"version": "3.0.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/ralouphie/getallheaders.git",
|
||||||
|
"reference": "120b605dfeb996808c31b6477290a714d356e822"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
|
||||||
|
"reference": "120b605dfeb996808c31b6477290a714d356e822",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.6"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"php-coveralls/php-coveralls": "^2.1",
|
||||||
|
"phpunit/phpunit": "^5 || ^6.5"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/getallheaders.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Ralph Khattar",
|
||||||
|
"email": "ralph.khattar@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A polyfill for getallheaders.",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/ralouphie/getallheaders/issues",
|
||||||
|
"source": "https://github.com/ralouphie/getallheaders/tree/develop"
|
||||||
|
},
|
||||||
|
"time": "2019-03-08T08:55:37+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "swiftmailer/swiftmailer",
|
"name": "swiftmailer/swiftmailer",
|
||||||
"version": "v6.2.7",
|
"version": "v6.2.7",
|
||||||
|
@ -3119,81 +3396,6 @@
|
||||||
},
|
},
|
||||||
"time": "2021-03-30T06:27:33+00:00"
|
"time": "2021-03-30T06:27:33+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "guzzlehttp/psr7",
|
|
||||||
"version": "1.8.1",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/guzzle/psr7.git",
|
|
||||||
"reference": "35ea11d335fd638b5882ff1725228b3d35496ab1"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/guzzle/psr7/zipball/35ea11d335fd638b5882ff1725228b3d35496ab1",
|
|
||||||
"reference": "35ea11d335fd638b5882ff1725228b3d35496ab1",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=5.4.0",
|
|
||||||
"psr/http-message": "~1.0",
|
|
||||||
"ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
|
|
||||||
},
|
|
||||||
"provide": {
|
|
||||||
"psr/http-message-implementation": "1.0"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"ext-zlib": "*",
|
|
||||||
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
|
|
||||||
},
|
|
||||||
"suggest": {
|
|
||||||
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "1.7-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"GuzzleHttp\\Psr7\\": "src/"
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"src/functions_include.php"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Michael Dowling",
|
|
||||||
"email": "mtdowling@gmail.com",
|
|
||||||
"homepage": "https://github.com/mtdowling"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Tobias Schultze",
|
|
||||||
"homepage": "https://github.com/Tobion"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "PSR-7 message implementation that also provides common utility methods",
|
|
||||||
"keywords": [
|
|
||||||
"http",
|
|
||||||
"message",
|
|
||||||
"psr-7",
|
|
||||||
"request",
|
|
||||||
"response",
|
|
||||||
"stream",
|
|
||||||
"uri",
|
|
||||||
"url"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/guzzle/psr7/issues",
|
|
||||||
"source": "https://github.com/guzzle/psr7/tree/1.8.1"
|
|
||||||
},
|
|
||||||
"time": "2021-03-21T16:25:00+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "myclabs/deep-copy",
|
"name": "myclabs/deep-copy",
|
||||||
"version": "1.10.2",
|
"version": "1.10.2",
|
||||||
|
@ -4340,50 +4542,6 @@
|
||||||
},
|
},
|
||||||
"time": "2019-01-08T18:20:26+00:00"
|
"time": "2019-01-08T18:20:26+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "ralouphie/getallheaders",
|
|
||||||
"version": "3.0.3",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/ralouphie/getallheaders.git",
|
|
||||||
"reference": "120b605dfeb996808c31b6477290a714d356e822"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
|
|
||||||
"reference": "120b605dfeb996808c31b6477290a714d356e822",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=5.6"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"php-coveralls/php-coveralls": "^2.1",
|
|
||||||
"phpunit/phpunit": "^5 || ^6.5"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"autoload": {
|
|
||||||
"files": [
|
|
||||||
"src/getallheaders.php"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Ralph Khattar",
|
|
||||||
"email": "ralph.khattar@gmail.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "A polyfill for getallheaders.",
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/ralouphie/getallheaders/issues",
|
|
||||||
"source": "https://github.com/ralouphie/getallheaders/tree/develop"
|
|
||||||
},
|
|
||||||
"time": "2019-03-08T08:55:37+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "sebastian/cli-parser",
|
"name": "sebastian/cli-parser",
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
|
|
|
@ -77,7 +77,7 @@ $config = [
|
||||||
'controller' => 'main'
|
'controller' => 'main'
|
||||||
],
|
],
|
||||||
'product/<catn:[^/]+>' => 'product/index',
|
'product/<catn:[^/]+>' => 'product/index',
|
||||||
'product/<catn:[^/]+>/<action:(write|edit|delete)>/<target:(title|catn|dscr|image)>' => 'product/<action>-<target>',
|
'product/<catn:[^/]+>/<action:(write|edit|delete)>/<target:(title|catn|dscr|dmns|image|cover)>' => 'product/<action>-<target>',
|
||||||
'orders' => 'order/index'
|
'orders' => 'order/index'
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
@ -121,4 +121,4 @@ if (YII_ENV_DEV) {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
return $config;
|
return $config;
|
||||||
|
|
|
@ -106,8 +106,8 @@ class ProductController extends Controller
|
||||||
if ($model = Product::searchByCatn($catn)) {
|
if ($model = Product::searchByCatn($catn)) {
|
||||||
// Товар найден
|
// Товар найден
|
||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$text = yii::$app->request->get('text') ?? yii::$app->request->post('text') ?? 'Без названия';
|
$text = yii::$app->request->post('text') ?? yii::$app->request->get('text') ?? 'Без названия';
|
||||||
|
|
||||||
$model->catn = $text;
|
$model->catn = $text;
|
||||||
|
|
||||||
|
@ -138,7 +138,7 @@ class ProductController extends Controller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function actionEditDesc(string $catn): array|string|null
|
public function actionEditDscr(string $catn): array|string|null
|
||||||
{
|
{
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$return = [
|
$return = [
|
||||||
|
@ -159,7 +159,7 @@ class ProductController extends Controller
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$text = yii::$app->request->get('text') ?? yii::$app->request->post('text') ?? 'Без названия';
|
$text = yii::$app->request->get('text') ?? yii::$app->request->post('text') ?? 'Без названия';
|
||||||
|
|
||||||
$product->desc = $text;
|
$product->dscr = $text;
|
||||||
|
|
||||||
if ($product->save()) {
|
if ($product->save()) {
|
||||||
// Товар обновлён
|
// Товар обновлён
|
||||||
|
@ -188,6 +188,63 @@ class ProductController extends Controller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function actionEditDmns(string $catn): array|string|null
|
||||||
|
{
|
||||||
|
// Инициализация
|
||||||
|
$return = [
|
||||||
|
'_csrf' => yii::$app->request->getCsrfToken()
|
||||||
|
];
|
||||||
|
|
||||||
|
if (is_null($catn)) {
|
||||||
|
// Не получен артикул
|
||||||
|
|
||||||
|
yii::$app->response->statusCode = 500;
|
||||||
|
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($product = Product::searchByCatn($catn)) {
|
||||||
|
// Товар найден
|
||||||
|
|
||||||
|
// Инициализация
|
||||||
|
$text = yii::$app->request->post('text') ?? yii::$app->request->get('text') ?? '0';
|
||||||
|
$text or $text = '0';
|
||||||
|
$dimension = yii::$app->request->post('dimension') ?? yii::$app->request->get('dimension') ?? 'x';
|
||||||
|
|
||||||
|
$product->dmns = array_merge(
|
||||||
|
$product->dmns ?? [],
|
||||||
|
[
|
||||||
|
$dimension => $text
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($product->save()) {
|
||||||
|
// Товар обновлён
|
||||||
|
|
||||||
|
$return['dimension'] = $text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Конец алгоритма
|
||||||
|
*/
|
||||||
|
end:
|
||||||
|
|
||||||
|
if (yii::$app->request->isPost) {
|
||||||
|
// POST-запрос
|
||||||
|
|
||||||
|
yii::$app->response->format = Response::FORMAT_JSON;
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($model = Product::searchByCatn($catn)) {
|
||||||
|
return $this->render('index', compact('model'));
|
||||||
|
} else {
|
||||||
|
return $this->redirect('/');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function actionWriteImage(string $catn): array|string|null
|
public function actionWriteImage(string $catn): array|string|null
|
||||||
{
|
{
|
||||||
// Инициализация
|
// Инициализация
|
||||||
|
@ -203,17 +260,137 @@ class ProductController extends Controller
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($model = Product::searchByCatn($catn)) {
|
if ($product = Product::searchByCatn($catn)) {
|
||||||
// Товар найден
|
// Товар найден
|
||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$model->file_image = UploadedFile::getInstancesByName('images');
|
$product->file_image = UploadedFile::getInstancesByName('images');
|
||||||
$model->scenario = $model::SCENARIO_IMPORT_IMAGE;
|
$product->scenario = $product::SCENARIO_IMPORT_IMAGE;
|
||||||
|
|
||||||
if ($model->importImages() > 0) {
|
if ($product->importImages() > 0) {
|
||||||
// Товар обновлён
|
// Товар обновлён
|
||||||
|
|
||||||
$return['main'] = $this->renderPartial('index', compact('model'));
|
$return['main'] = $this->renderPartial('index', ['model' => $product]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Конец алгоритма
|
||||||
|
*/
|
||||||
|
end:
|
||||||
|
|
||||||
|
if (yii::$app->request->isPost) {
|
||||||
|
// POST-запрос
|
||||||
|
|
||||||
|
yii::$app->response->format = Response::FORMAT_JSON;
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($model = Product::searchByCatn($catn)) {
|
||||||
|
return $this->render('index', compact('model'));
|
||||||
|
} else {
|
||||||
|
return $this->redirect('/');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function actionDeleteImage(string $catn): array|string|null
|
||||||
|
{
|
||||||
|
// Инициализация
|
||||||
|
$return = [
|
||||||
|
'_csrf' => yii::$app->request->getCsrfToken()
|
||||||
|
];
|
||||||
|
$index = yii::$app->request->post('index') ?? yii::$app->request->get('index');
|
||||||
|
|
||||||
|
if (is_null($catn) || is_null($index)) {
|
||||||
|
// Не получены обязательные параметры
|
||||||
|
|
||||||
|
yii::$app->response->statusCode = 500;
|
||||||
|
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($product = Product::searchByCatn($catn)) {
|
||||||
|
// Товар найден
|
||||||
|
|
||||||
|
// Инициализация (буфер нужен из-за кривых сеттеров)
|
||||||
|
$buffer = $product->imgs;
|
||||||
|
|
||||||
|
// Удаление
|
||||||
|
unset($buffer[$index]);
|
||||||
|
|
||||||
|
// Запись
|
||||||
|
$product->imgs = $buffer;
|
||||||
|
|
||||||
|
if ($product->save()) {
|
||||||
|
// Товар обновлён
|
||||||
|
|
||||||
|
$return['main'] = $this->renderPartial('index', ['model' => $product]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Конец алгоритма
|
||||||
|
*/
|
||||||
|
end:
|
||||||
|
|
||||||
|
if (yii::$app->request->isPost) {
|
||||||
|
// POST-запрос
|
||||||
|
|
||||||
|
yii::$app->response->format = Response::FORMAT_JSON;
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($model = Product::searchByCatn($catn)) {
|
||||||
|
return $this->render('index', compact('model'));
|
||||||
|
} else {
|
||||||
|
return $this->redirect('/');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function actionWriteCover(string $catn): array|string|null
|
||||||
|
{
|
||||||
|
// Инициализация
|
||||||
|
$return = [
|
||||||
|
'_csrf' => yii::$app->request->getCsrfToken()
|
||||||
|
];
|
||||||
|
$index = yii::$app->request->post('index') ?? yii::$app->request->get('index');
|
||||||
|
|
||||||
|
if (is_null($catn) || is_null($index)) {
|
||||||
|
// Не получены обязательные параметры
|
||||||
|
|
||||||
|
yii::$app->response->statusCode = 500;
|
||||||
|
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($product = Product::searchByCatn($catn)) {
|
||||||
|
// Товар найден
|
||||||
|
|
||||||
|
// Инициализация (буфер нужен из-за кривых сеттеров)
|
||||||
|
$buffer = $product->imgs;
|
||||||
|
|
||||||
|
foreach($buffer as $image_index => &$image) {
|
||||||
|
// Перебор изображений
|
||||||
|
|
||||||
|
if ($image_index === (int) $index) {
|
||||||
|
// Найдено запрашиваемое изображение
|
||||||
|
|
||||||
|
// Установка обложки
|
||||||
|
$image['covr'] = true;
|
||||||
|
} else {
|
||||||
|
$image['covr'] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Запись
|
||||||
|
$product->imgs = $buffer;
|
||||||
|
|
||||||
|
if ($product->save()) {
|
||||||
|
// Товар обновлён
|
||||||
|
|
||||||
|
$return['main'] = $this->renderPartial('index', ['model' => $product]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ use app\models\Search;
|
||||||
use app\models\Notification;
|
use app\models\Notification;
|
||||||
use app\models\Settings;
|
use app\models\Settings;
|
||||||
use app\models\SettingsEdgeSettings;
|
use app\models\SettingsEdgeSettings;
|
||||||
|
use app\models\connection\Dellin;
|
||||||
|
|
||||||
class ProfileController extends Controller
|
class ProfileController extends Controller
|
||||||
{
|
{
|
||||||
|
@ -90,6 +91,10 @@ class ProfileController extends Controller
|
||||||
*/
|
*/
|
||||||
public function actionIndex(): string|array
|
public function actionIndex(): string|array
|
||||||
{
|
{
|
||||||
|
$browser = new Dellin();
|
||||||
|
|
||||||
|
$browser->syncCities();
|
||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$model = yii::$app->user->identity;
|
$model = yii::$app->user->identity;
|
||||||
$panel = yii::$app->request->post('panel') ?? yii::$app->request->get('panel');
|
$panel = yii::$app->request->post('panel') ?? yii::$app->request->get('panel');
|
||||||
|
@ -117,7 +122,8 @@ class ProfileController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$list = $model->genListOem(Supply::searchByAccount(select: 'supply.onec["ЗначенияСвойств"]', limit: null));
|
$account_sections_city_list = null;
|
||||||
|
$import_sections_oem_list = $model->genListOem(Supply::searchByAccount(select: 'supply.onec["ЗначенияСвойств"]'));
|
||||||
|
|
||||||
if (yii::$app->request->isPost) {
|
if (yii::$app->request->isPost) {
|
||||||
// POST-запрос
|
// POST-запрос
|
||||||
|
@ -128,7 +134,8 @@ class ProfileController extends Controller
|
||||||
'main' => $this->renderPartial('index', compact(
|
'main' => $this->renderPartial('index', compact(
|
||||||
'model',
|
'model',
|
||||||
'sidebar',
|
'sidebar',
|
||||||
'list',
|
'account_sections_city_list',
|
||||||
|
'import_sections_oem_list',
|
||||||
'panel'
|
'panel'
|
||||||
)),
|
)),
|
||||||
'redirect' => '/profile',
|
'redirect' => '/profile',
|
||||||
|
@ -139,7 +146,8 @@ class ProfileController extends Controller
|
||||||
return $this->render('index', compact(
|
return $this->render('index', compact(
|
||||||
'model',
|
'model',
|
||||||
'sidebar',
|
'sidebar',
|
||||||
'list',
|
'account_sections_city_list',
|
||||||
|
'import_sections_oem_list',
|
||||||
'panel'
|
'panel'
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use mirzaev\yii2\arangodb\Migration;
|
||||||
|
|
||||||
|
class m210412_171912_create_city_controller extends Migration
|
||||||
|
{
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string Название коллекции
|
||||||
|
* @param array Тип коллекции (2 - документ, 3 - ребро)
|
||||||
|
*/
|
||||||
|
$this->createCollection('city', ['type' => 2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
$this->dropCollection('city');
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,8 @@ use yii\web\IdentityInterface;
|
||||||
|
|
||||||
use carono\exchange1c\interfaces\PartnerInterface;
|
use carono\exchange1c\interfaces\PartnerInterface;
|
||||||
|
|
||||||
|
use app\models\connection\Dellin;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Аккаунт
|
* Аккаунт
|
||||||
*
|
*
|
||||||
|
@ -245,6 +247,20 @@ class Account extends Document implements IdentityInterface, PartnerInterface
|
||||||
return $this->save();
|
return $this->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Генерация списка городов
|
||||||
|
*
|
||||||
|
* Актуальное (выбранное, активное) значение записывается первым
|
||||||
|
*/
|
||||||
|
public function genListCity(): array
|
||||||
|
{
|
||||||
|
$browser = new Dellin();
|
||||||
|
|
||||||
|
$request = $browser->get('https://api.github.com/user', [
|
||||||
|
'auth' => ['user', 'pass']
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Генерация списка OEM-номеров
|
* Генерация списка OEM-номеров
|
||||||
*
|
*
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace app\models;
|
||||||
|
|
||||||
|
class City extends Document
|
||||||
|
{
|
||||||
|
public static function collectionName(): string
|
||||||
|
{
|
||||||
|
return 'city';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function attributes(): array
|
||||||
|
{
|
||||||
|
return array_merge(
|
||||||
|
parent::attributes(),
|
||||||
|
[
|
||||||
|
'name',
|
||||||
|
'code',
|
||||||
|
'term'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return array_merge(
|
||||||
|
parent::rules(),
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[
|
||||||
|
'name',
|
||||||
|
'code'
|
||||||
|
],
|
||||||
|
'required',
|
||||||
|
'message' => 'Заполните поле: {attribute}'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
'name',
|
||||||
|
'code'
|
||||||
|
],
|
||||||
|
'string'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'term',
|
||||||
|
'boolean'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function attributeLabels(): array
|
||||||
|
{
|
||||||
|
return array_merge(
|
||||||
|
parent::attributeLabels(),
|
||||||
|
[
|
||||||
|
'name' => 'Название',
|
||||||
|
'code' => 'Код КЛАДР',
|
||||||
|
'term' => 'Указатель наличия терминала в городе'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,155 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace app\models\connection;
|
||||||
|
|
||||||
|
use yii;
|
||||||
|
use yii\base\Model;
|
||||||
|
|
||||||
|
use app\models\City;
|
||||||
|
|
||||||
|
use GuzzleHttp\Client as Guzzle;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
|
|
||||||
|
class Dellin extends Model
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Инстанция браузера
|
||||||
|
*/
|
||||||
|
public Guzzle $browser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Сессия аккаунта
|
||||||
|
*/
|
||||||
|
public string $session;
|
||||||
|
|
||||||
|
public function __construct($config = [])
|
||||||
|
{
|
||||||
|
parent::__construct($config);
|
||||||
|
|
||||||
|
$this->browser = new Guzzle([
|
||||||
|
'base_uri' => 'https://api.dellin.ru/'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->authorization();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Поиск городов
|
||||||
|
*
|
||||||
|
* @return array|null Найденные города
|
||||||
|
*/
|
||||||
|
public function searchCities(): ?array
|
||||||
|
{
|
||||||
|
// $this->onReady(function () {
|
||||||
|
// // Запрос городов
|
||||||
|
// $request = $this->browser->post('/v2/public/kladr.json', [
|
||||||
|
// 'json' => [
|
||||||
|
// 'appkey' => yii::$app->params['dellin']['key'],
|
||||||
|
|
||||||
|
// ]
|
||||||
|
// ])
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Синхронизация городов
|
||||||
|
*
|
||||||
|
* @return array|null Найденные города
|
||||||
|
*
|
||||||
|
* @todo Написать проверку по хешу
|
||||||
|
*/
|
||||||
|
public function syncCities(): ?array
|
||||||
|
{
|
||||||
|
return $this->ifReady(function () {
|
||||||
|
// Запрос ссылки на файл с городам
|
||||||
|
// Получаем hash и url ()
|
||||||
|
$request = $this->browser->post('/v1/public/cities.json', [
|
||||||
|
'json' => [
|
||||||
|
'appkey' => yii::$app->params['dellin']['key'],
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($request->getStatusCode() === 200) {
|
||||||
|
// Запрос прошел успешно
|
||||||
|
|
||||||
|
// Инициализация
|
||||||
|
$response = json_decode((string) $request->getBody(), true);
|
||||||
|
|
||||||
|
|
||||||
|
if ($response['metadata']['status'] === 200) {
|
||||||
|
// Аутентификация и авторизация пройдены успешно
|
||||||
|
|
||||||
|
// Запись сессии
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Exception('Не удалось синхронизировать данные городов с ДеловыеЛинии', $response['metadata']['status']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
throw new Exception('Не удалось синхронизировать данные городов с ДеловыеЛинии', $request->getStatusCode);
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Аутентификация и авторизация
|
||||||
|
*/
|
||||||
|
protected function authorization(): ?self
|
||||||
|
{
|
||||||
|
return $this->ifReady(function () {
|
||||||
|
// Аутентификация и авторизация
|
||||||
|
$request = $this->browser->post('/v3/auth/login.json', [
|
||||||
|
'json' => [
|
||||||
|
'appkey' => yii::$app->params['dellin']['key'],
|
||||||
|
'login' => yii::$app->params['dellin']['nickname'],
|
||||||
|
'password' => yii::$app->params['dellin']['password']
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($request->getStatusCode() === 200) {
|
||||||
|
// Запрос прошел успешно
|
||||||
|
|
||||||
|
// Инициализация
|
||||||
|
$response = json_decode((string) $request->getBody(), true);
|
||||||
|
|
||||||
|
if ($response['metadata']['status'] === 200) {
|
||||||
|
// Аутентификация и авторизация пройдены успешно
|
||||||
|
|
||||||
|
// Запись сессии
|
||||||
|
$this->session = $response['data']['sessionID'];
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Exception('Не удалось авторизироваться в ДеловыеЛинии', $response['metadata']['status']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
throw new Exception('Не удалось авторизироваться в ДеловыеЛинии', $request->getStatusCode);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверка на то, что браузер готов к работе
|
||||||
|
*
|
||||||
|
* @param callable $function Код к выполнению
|
||||||
|
* @param [type] ...$vars Параметры к нему
|
||||||
|
*
|
||||||
|
* @return mixed Возврат из функции
|
||||||
|
*/
|
||||||
|
protected function ifReady(callable $function, ...$vars): mixed
|
||||||
|
{
|
||||||
|
if (isset($this->browser)) {
|
||||||
|
// Браузер инициализирован
|
||||||
|
|
||||||
|
return $function(...$vars);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Exception('Браузер не инициализирован', 500);
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,7 +10,7 @@ if (
|
||||||
!yii::$app->user->isGuest
|
!yii::$app->user->isGuest
|
||||||
&& yii::$app->user->identity->agnt
|
&& yii::$app->user->identity->agnt
|
||||||
) {
|
) {
|
||||||
$panel ?? $panel = 'profile_panel_settings_import';
|
$panel ?? $panel = 'profile_panel_settings_account';
|
||||||
} else {
|
} else {
|
||||||
$panel ?? $panel = 'profile_panel_settings_account';
|
$panel ?? $panel = 'profile_panel_settings_account';
|
||||||
}
|
}
|
||||||
|
@ -28,38 +28,19 @@ if (
|
||||||
<h4 class="ml-4 mb-4"><i class="fas fa-sliders-h my-auto mr-2"></i>Настройки</h4>
|
<h4 class="ml-4 mb-4"><i class="fas fa-sliders-h my-auto mr-2"></i>Настройки</h4>
|
||||||
<div id="profile_panel_settings" class="profile_panel">
|
<div id="profile_panel_settings" class="profile_panel">
|
||||||
<div class="profile_panel_menu mb-3">
|
<div class="profile_panel_menu mb-3">
|
||||||
<label class="btn button_white mb-0 mr-2" for="profile_panel_settings_account">Аккаунт</label>
|
<?php if (!yii::$app->user->isGuest) : ?>
|
||||||
<?php
|
<label class="btn button_white mb-0 mr-2" for="profile_panel_settings_account">Аккаунт</label>
|
||||||
if (
|
<?php if (yii::$app->user->identity->agnt) : ?>
|
||||||
!yii::$app->user->isGuest
|
|
||||||
&& yii::$app->user->identity->agnt
|
|
||||||
) {
|
|
||||||
echo <<<HTML
|
|
||||||
<label class="btn button_white mb-0 mr-2" for="profile_panel_settings_company">Компания</label>
|
<label class="btn button_white mb-0 mr-2" for="profile_panel_settings_company">Компания</label>
|
||||||
<label class="btn button_white mb-0" for="profile_panel_settings_import">Импорт</label>
|
<label class="btn button_white mb-0" for="profile_panel_settings_import">Импорт</label>
|
||||||
HTML;
|
<?php endif ?>
|
||||||
}
|
<?php endif ?>
|
||||||
?>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="profile_panel_content d-flex">
|
<div class="profile_panel_content d-flex">
|
||||||
<input type="radio" id="profile_panel_settings_account" name="main_panel" <?= $panel === 'profile_panel_settings_account' ? 'checked' : null ?> />
|
<?php if (!yii::$app->user->isGuest) : ?>
|
||||||
<div class="col">
|
<input type="radio" id="profile_panel_settings_account" name="main_panel" <?= $panel === 'profile_panel_settings_account' ? 'checked' : null ?> />
|
||||||
1
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<?php if (
|
|
||||||
!yii::$app->user->isGuest
|
|
||||||
&& yii::$app->user->identity->agnt
|
|
||||||
) : ?>
|
|
||||||
<input type="radio" id="profile_panel_settings_company" name="main_panel" <?= $panel === 'profile_panel_settings_company' ? 'checked' : null ?> />
|
|
||||||
<div class="col">
|
<div class="col">
|
||||||
2
|
<h5>Основная информация</h5>
|
||||||
</div>
|
|
||||||
|
|
||||||
<input type="radio" id="profile_panel_settings_import" name="main_panel" <?= $panel === 'profile_panel_settings_import' ? 'checked' : null ?> />
|
|
||||||
<div class="col">
|
|
||||||
<h5>Параметры 1C</h5>
|
|
||||||
<div class="dropdown-divider mb-3"></div>
|
|
||||||
<?php $form = ActiveForm::begin([
|
<?php $form = ActiveForm::begin([
|
||||||
'id' => 'form_profile_settings',
|
'id' => 'form_profile_settings',
|
||||||
'action' => false,
|
'action' => false,
|
||||||
|
@ -73,20 +54,57 @@ if (
|
||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$model ?? $model = yii::$app->user->identity;
|
$model ?? $model = yii::$app->user->identity;
|
||||||
$list or $list = ['Нет данных'];
|
$account_sections_city_list or $account_sections_city_list = ['Нет данных'];
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<?= $form->field($model, 'opts[import_sections_oem]', ['options' => ['class' => "mb-1"]])
|
<?= $form->field($model, 'opts[account_sections_city]', ['options' => ['class' => "mb-1"]])
|
||||||
->dropDownList($list, [
|
->dropDownList($account_sections_city_list, [
|
||||||
'onChange' => 'page_profile_settings(this.parentElement.parentElement, \'profile_panel_settings_import\')',
|
'onChange' => 'page_profile_settings(this.parentElement.parentElement, \'profile_panel_settings_account\')'
|
||||||
'disabled' => count($list) <= 1
|
])->label('Город'); ?>
|
||||||
])->label('OEM-номера'); ?>
|
|
||||||
|
|
||||||
<small class="d-block mb-1">Выберите поле в котором хранятся <b>ОЕМ-номера</b> и повторите импорт</small>
|
<small class="d-block mb-1">Выберите город для <b>рассчёта доставки</b></small>
|
||||||
<small class="d-block">Значения взяты из импортированных товаров</small>
|
|
||||||
|
|
||||||
<?php ActiveForm::end(); ?>
|
<?php ActiveForm::end(); ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<?php if (yii::$app->user->identity->agnt) : ?>
|
||||||
|
<input type="radio" id="profile_panel_settings_company" name="main_panel" <?= $panel === 'profile_panel_settings_company' ? 'checked' : null ?> />
|
||||||
|
<div class="col">
|
||||||
|
2
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input type="radio" id="profile_panel_settings_import" name="main_panel" <?= $panel === 'profile_panel_settings_import' ? 'checked' : null ?> />
|
||||||
|
<div class="col">
|
||||||
|
<h5>Параметры 1C</h5>
|
||||||
|
<div class="dropdown-divider mb-3"></div>
|
||||||
|
<?php $form = ActiveForm::begin([
|
||||||
|
'id' => 'form_profile_settings',
|
||||||
|
'action' => false,
|
||||||
|
'fieldConfig' => [
|
||||||
|
'template' => '{label}{input}',
|
||||||
|
],
|
||||||
|
'options' => [
|
||||||
|
'onsubmit' => 'return false;'
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Инициализация
|
||||||
|
$model ?? $model = yii::$app->user->identity;
|
||||||
|
$import_sections_oem_list or $import_sections_oem_list = ['Нет данных'];
|
||||||
|
?>
|
||||||
|
|
||||||
|
<?= $form->field($model, 'opts[import_sections_oem]', ['options' => ['class' => "mb-1"]])
|
||||||
|
->dropDownList($import_sections_oem_list, [
|
||||||
|
'onChange' => 'page_profile_settings(this.parentElement.parentElement, \'profile_panel_settings_import\')',
|
||||||
|
'disabled' => count($import_sections_oem_list) <= 1
|
||||||
|
])->label('OEM-номера'); ?>
|
||||||
|
|
||||||
|
<small class="d-block mb-1">Выберите поле в котором хранятся <b>ОЕМ-номера</b> и повторите импорт</small>
|
||||||
|
<small class="d-block">Значения взяты из импортированных товаров</small>
|
||||||
|
|
||||||
|
<?php ActiveForm::end(); ?>
|
||||||
|
</div>
|
||||||
|
<?php endif ?>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -102,4 +120,4 @@ if (
|
||||||
|| yii::$app->user->identity->type === 'moderator'
|
|| yii::$app->user->identity->type === 'moderator'
|
||||||
) : ?>
|
) : ?>
|
||||||
<script src="/js/profile_panel.js" defer></script>
|
<script src="/js/profile_panel.js" defer></script>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
|
|
@ -48,7 +48,7 @@ location ~* ^.+\.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
# Force index.php routing (if not found)
|
# Force index.php routing (if not found)
|
||||||
try_files $uri $uri/ /index.php$is_args$args;
|
try_files $uri $uri/ /index_dev.php$is_args$args;
|
||||||
|
|
||||||
# Force index.php routing (all requests)
|
# Force index.php routing (all requests)
|
||||||
# rewrite ^/(.*)$ /index.php?/$1 last;
|
# rewrite ^/(.*)$ /index.php?/$1 last;
|
||||||
|
|
|
@ -176,12 +176,21 @@ function page_profile_response(data, status) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Сокрытие первого элемента <option> в списке
|
// Сокрытие первого элемента <option> в списке
|
||||||
function initDropdownOem() {
|
function initDropdownImportSectionsOem() {
|
||||||
let dropdown = document.getElementById('account-opts-import_sections_oem');
|
let dropdown = document.getElementById('account-opts-import_sections_oem');
|
||||||
|
|
||||||
if (dropdown !== null && dropdown.length > 1) {
|
if (dropdown !== null && dropdown.length > 1) {
|
||||||
dropdown.children[0].hidden = true;
|
dropdown.children[0].hidden = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Сокрытие первого элемента <option> в списке
|
||||||
|
function initDropdownAccountSectionsCity() {
|
||||||
|
let dropdown = document.getElementById('account-opts-account_sections_city');
|
||||||
|
|
||||||
initDropdownOem();
|
if (dropdown !== null && dropdown.length > 1) {
|
||||||
|
dropdown.children[0].hidden = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
initDropdownImportSectionsOem();
|
||||||
|
initDropdownAccountSectionsCity();
|
||||||
|
|
Reference in New Issue