Compare commits

..

8 Commits

@ -46,7 +46,7 @@ SMS_USER=""
SMS_PASS="" SMS_PASS=""
SMS_NUMBER="" SMS_NUMBER=""
AWS_ACCESS_KEY_ID= AWS_ACCESS_KEY_ID=O
AWS_SECRET_ACCESS_KEY= AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1 AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET= AWS_BUCKET=
@ -65,3 +65,4 @@ PAY_GATWAY=zarinpal
THUMBNAIL_SIZE=600x600 THUMBNAIL_SIZE=600x600
XLANG=false XLANG=false
XLANG_MAIN=en

@ -19,7 +19,7 @@ jobs:
- name: Copy .env - name: Copy .env
run: php -r "file_exists('.env') || copy('.env.example', '.env');" run: php -r "file_exists('.env') || copy('.env.example', '.env');"
- name: Install Dependencies - name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist run: composer update -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
- name: Generate key - name: Generate key
run: php artisan key:generate run: php artisan key:generate
- name: Directory Permissions - name: Directory Permissions

@ -0,0 +1,33 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class XlangSaveRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return auth()->check() && auth()->user()->hasRole('super-admin');
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, mixed>
*/
public function rules()
{
return [
//
'name' => ['required','string','min:3','max:128'],
'tag' => ['required','alpha_dash:','min:2','max:7'],
'img' => ['nullable','file','mimes:svg,png,jpg,gif'],
];
}
}

@ -35,9 +35,10 @@ use Illuminate\Database\Eloquent\SoftDeletes;
*/ */
class Xlang extends Model class Xlang extends Model
{ {
use HasFactory,SoftDeletes; use HasFactory, SoftDeletes;
public function imgUrl(){ public function imgUrl()
{
if ($this->img == null || $this->img == '') { if ($this->img == null || $this->img == '') {
return asset('/images/logo.png'); return asset('/images/logo.png');
} else { } else {

@ -28,10 +28,12 @@
"laravel/sanctum": "^2.14.1", "laravel/sanctum": "^2.14.1",
"laravel/tinker": "^2.7", "laravel/tinker": "^2.7",
"laravel/ui": "^3.4", "laravel/ui": "^3.4",
"nyholm/psr7": "^1.8",
"pishran/zarinpal": "^4.3", "pishran/zarinpal": "^4.3",
"plank/laravel-metable": "^5.2", "plank/laravel-metable": "^5.2",
"psr/log": "v2.*", "psr/log": "v2.*",
"symfony/dom-crawler": "^6.2", "symfony/dom-crawler": "^6.2",
"symfony/psr-http-message-bridge": "^7.0",
"xmen/starter-kit": "^v3.1.0" "xmen/starter-kit": "^v3.1.0"
}, },
"require-dev": { "require-dev": {

163
composer.lock generated

@ -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": "e34256b2073a1fa70ed816043240b6de", "content-hash": "476fc03eaacbf9c04610c95da580105c",
"packages": [ "packages": [
{ {
"name": "artesaos/seotools", "name": "artesaos/seotools",
@ -3566,6 +3566,84 @@
], ],
"time": "2023-02-08T01:06:31+00:00" "time": "2023-02-08T01:06:31+00:00"
}, },
{
"name": "nyholm/psr7",
"version": "1.8.1",
"source": {
"type": "git",
"url": "https://github.com/Nyholm/psr7.git",
"reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Nyholm/psr7/zipball/aa5fc277a4f5508013d571341ade0c3886d4d00e",
"reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e",
"shasum": ""
},
"require": {
"php": ">=7.2",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.1 || ^2.0"
},
"provide": {
"php-http/message-factory-implementation": "1.0",
"psr/http-factory-implementation": "1.0",
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"http-interop/http-factory-tests": "^0.9",
"php-http/message-factory": "^1.0",
"php-http/psr7-integration-tests": "^1.0",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.4",
"symfony/error-handler": "^4.4"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.8-dev"
}
},
"autoload": {
"psr-4": {
"Nyholm\\Psr7\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Tobias Nyholm",
"email": "tobias.nyholm@gmail.com"
},
{
"name": "Martijn van der Ven",
"email": "martijn@vanderven.se"
}
],
"description": "A fast PHP7 implementation of PSR-7",
"homepage": "https://tnyholm.se",
"keywords": [
"psr-17",
"psr-7"
],
"support": {
"issues": "https://github.com/Nyholm/psr7/issues",
"source": "https://github.com/Nyholm/psr7/tree/1.8.1"
},
"funding": [
{
"url": "https://github.com/Zegnat",
"type": "github"
},
{
"url": "https://github.com/nyholm",
"type": "github"
}
],
"time": "2023-11-13T09:31:12+00:00"
},
{ {
"name": "paragonie/random_compat", "name": "paragonie/random_compat",
"version": "v9.99.100", "version": "v9.99.100",
@ -6928,6 +7006,89 @@
], ],
"time": "2023-11-17T21:06:49+00:00" "time": "2023-11-17T21:06:49+00:00"
}, },
{
"name": "symfony/psr-http-message-bridge",
"version": "v7.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/psr-http-message-bridge.git",
"reference": "d9fadaf9541d7c01c307e48905d7ce1dbee6bf38"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/d9fadaf9541d7c01c307e48905d7ce1dbee6bf38",
"reference": "d9fadaf9541d7c01c307e48905d7ce1dbee6bf38",
"shasum": ""
},
"require": {
"php": ">=8.2",
"psr/http-message": "^1.0|^2.0",
"symfony/http-foundation": "^6.4|^7.0"
},
"conflict": {
"php-http/discovery": "<1.15",
"symfony/http-kernel": "<6.4"
},
"require-dev": {
"nyholm/psr7": "^1.1",
"php-http/discovery": "^1.15",
"psr/log": "^1.1.4|^2|^3",
"symfony/browser-kit": "^6.4|^7.0",
"symfony/config": "^6.4|^7.0",
"symfony/event-dispatcher": "^6.4|^7.0",
"symfony/framework-bundle": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0"
},
"type": "symfony-bridge",
"autoload": {
"psr-4": {
"Symfony\\Bridge\\PsrHttpMessage\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "PSR HTTP message bridge",
"homepage": "https://symfony.com",
"keywords": [
"http",
"http-message",
"psr-17",
"psr-7"
],
"support": {
"source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.0.3"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-01-23T15:02:46+00:00"
},
{ {
"name": "symfony/routing", "name": "symfony/routing",
"version": "v6.4.0", "version": "v6.4.0",

@ -94,6 +94,7 @@ return [
'locale' => 'fa', 'locale' => 'fa',
'xlang' => env('XLANG',false), 'xlang' => env('XLANG',false),
'xlang_main' => env('XLANG_MAIN','en'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

@ -34,15 +34,23 @@ class DatabaseSeeder extends Seeder
XlangSeeder::class, XlangSeeder::class,
CategorySeeder::class, CategorySeeder::class,
CatSeeder::class, CatSeeder::class,
CustomerSeeder::class, ]);
// PostSeeder::class, if (env('NO_SEED_PRODUCT', 'false') != 'true') {
// MenuSeeder::class,
// PropSeeder::class, $this->call([
// ProductSeeder::class, PostSeeder::class,
MenuSeeder::class,
PropSeeder::class,
ProductSeeder::class,
// InvoiceSeeder::class, // InvoiceSeeder::class,
// SliderSeeder::class, // SliderSeeder::class,
]);
$this->call([
CustomerSeeder::class,
SettingSeeder::class, SettingSeeder::class,
MenuSeeder::class, MenuSeeder::class,
]); ]);
} }
}
} }

@ -37,6 +37,8 @@ REPLACE INTO `settings` (`id`, `section`, `type`, `title`, `active`, `key`, `val
(NULL, '6footer', 'text', 'شبکه اجتماعی توییتر', 1, 'soc_tw', 'https://twitter.com/a1gard', '2022-08-02 05:11:20', '2022-08-02 05:24:06'), (NULL, '6footer', 'text', 'شبکه اجتماعی توییتر', 1, 'soc_tw', 'https://twitter.com/a1gard', '2022-08-02 05:11:20', '2022-08-02 05:24:06'),
(NULL, '6footer', 'text', 'شبکه اجتماعی واستاپ (شماره با کد کشور)', 1, 'soc_wp', '+989121234567', '2022-08-02 05:11:20', '2022-08-02 05:27:02'), (NULL, '6footer', 'text', 'شبکه اجتماعی واستاپ (شماره با کد کشور)', 1, 'soc_wp', '+989121234567', '2022-08-02 05:11:20', '2022-08-02 05:27:02'),
(NULL, '6footer', 'text', 'شبکه اجتماعی یوتویب', 1, 'soc_yt', NULL, '2022-08-02 05:11:20', '2022-08-02 05:11:20'), (NULL, '6footer', 'text', 'شبکه اجتماعی یوتویب', 1, 'soc_yt', NULL, '2022-08-02 05:11:20', '2022-08-02 05:11:20'),
(NULL, '6footer', 'text', 'عنوان فوتر', 1, 'footer_title', 'اطلاعات تماس', '2022-08-02 05:11:20', '2022-08-02 05:11:20'),
(NULL, '6footer', 'editor', 'نوشته فوتر', 1, 'footer_text', 'افراد گروه سوم از اهمیت به پایان رساندن آگاه هستند. آنها با تفکر منطقی، طرحی روشن ارائه می‌کنند. آنها نه تنها برای پایان دادن به پروژه‌ی خود در آینده برنامه ریزی می‌کنند، بلکه به تمام نتایج و عواقب اجرای آن برنامه هم می‌اندیشند. این افراد کسانی هستند که هنر به پایان رساندن را می‌دانند. ', '2022-08-02 05:11:20', '2022-08-02 05:11:20'),
(NULL, '7seo', 'text', 'کد رنگ سایت', 1, 'color', '#3593D2', '2022-08-02 05:18:38', '2022-08-02 05:24:06'), (NULL, '7seo', 'text', 'کد رنگ سایت', 1, 'color', '#3593D2', '2022-08-02 05:18:38', '2022-08-02 05:24:06'),
(NULL, '7seo', 'text', 'سئو کلمات کلیدی', 1, 'keywords', 'فروشگاه، فروش آنلاین', '2022-08-02 05:19:10', '2022-08-02 05:24:06'), (NULL, '7seo', 'text', 'سئو کلمات کلیدی', 1, 'keywords', 'فروشگاه، فروش آنلاین', '2022-08-02 05:19:10', '2022-08-02 05:24:06'),
(NULL, '7seo', 'text', 'سئو جزئیات', 1, 'desc', 'توضیحات فروشگاه شما', '2022-08-02 05:20:08', '2022-08-02 05:24:06'), (NULL, '7seo', 'text', 'سئو جزئیات', 1, 'desc', 'توضیحات فروشگاه شما', '2022-08-02 05:20:08', '2022-08-02 05:24:06'),

@ -188,287 +188,287 @@
"Invoices list": "Список счетов", "Invoices list": "Список счетов",
"Invoices status changed successfully": "Статус счетов успешно изменен", "Invoices status changed successfully": "Статус счетов успешно изменен",
"Is breaking news?": "Разбить на новости?", "Is breaking news?": "Разбить на новости?",
"Is default": "", "Is default": "«По умолчанию»",
"Is effective price?": "", "Is effective price?": "«Эффективная цена?»",
"Key": "", "Key": "Ключ",
"LTR": "", "LTR": "ЛТР",
"Label": "", "Label": "Этикетка",
"Lang": "", "Lang": "Ланг",
"Language list": "", "Language list": "«Список языков»",
"Languages": "", "Languages": "«Языки»",
"Languages translate": "", "Languages translate": "«Языки переводят»",
"Last update": "", "Last update": "Последнее обновление",
"Link": "", "Link": "Связь",
"Login": "", "Login": "Авторизоваться",
"Login \/ Register": "", "Login / Register": "«Войти/Зарегистрироваться»",
"Logout": "", "Logout": "Выйти",
"Logs": "", "Logs": "«Журналы»",
"Long text": "", "Long text": "«Длинный текст»",
"Magazine": "", "Magazine": "«Журнал»",
"Main address": "", "Main address": "«Основной адрес»",
"Main category": "", "Main category": "Главная категория",
"Main product category": "", "Main product category": "«Основная категория товаров»",
"Manage": "", "Manage": "Управлять",
"Max click": "", "Max click": "«Макс клик»",
"Menus": "", "Menus": "«Меню»",
"Menus list": "", "Menus list": "«Список меню»",
"Menus preview": "", "Menus preview": "«Предварительный просмотр меню»",
"Metas and publish": "", "Metas and publish": "«Метаинформация и публикация»",
"Mobile": "", "Mobile": "«Мобильный»",
"Monday": "", "Monday": "Понедельник",
"Multi select type": "", "Multi select type": "«Множественный выбор типа»",
"Name": "", "Name": "Имя",
"Name and lastname": "", "Name and lastname": "«Имя и фамилия»",
"New Advertise": "", "New Advertise": "«Новая реклама»",
"New Clip": "", "New Clip": "«Новый клип»",
"New Customer": "", "New Customer": "Новый клиент",
"New Discount": "", "New Discount": "«Новая скидка»",
"New Gallery": "", "New Gallery": "«Новая Галерея»",
"New Invoice": "", "New Invoice": "«Новый счет»",
"New Poll": "", "New Poll": "«Новый опрос»",
"New Post": "", "New Post": "Новый пост",
"New Product": "", "New Product": "Новый продукт",
"New Product category": "", "New Product category": "«Новая категория товаров»",
"New Property": "", "New Property": "«Новая недвижимость»",
"New Slider": "", "New Slider": "«Новый слайдер»",
"New Video": "", "New Video": "«Новое видео»",
"New category": "", "New category": "Новая категория",
"New customer": "", "New customer": "Новый клиент",
"New discount": "", "New discount": "«Новая скидка»",
"New gallery": "", "New gallery": "«Новая галерея»",
"New invoice": "", "New invoice": "«Новый счет»",
"New language": "", "New language": "Новый язык",
"New menu": "", "New menu": "«Новое меню»",
"New product": "", "New product": "Новый продукт",
"New product category": "", "New product category": "«Новая категория товаров»",
"New ticket": "", "New ticket": "«Новый билет»",
"New transport": "", "New transport": "«Новый транспорт»",
"New user": "", "New user": "Новый пользователь",
"Next": "", "Next": "Следующий",
"No": "", "No": "Нет",
"No parent": "", "No parent": "«Нет родителя»",
"No product": "", "No product": "«Нет товара»",
"Normal": "", "Normal": "Нормальный",
"Not required": "", "Not required": "Не требуется",
"Number type": "", "Number type": "«Тип номера»",
"Online": "", "Online": "В сети",
"Option": "", "Option": "Вариант",
"Options": "", "Options": "Параметры",
"Order": "", "Order": "Заказ",
"Order type": "", "Order type": "«Тип заказа»",
"Out stock": "", "Out stock": "Нет в наличии",
"Page name": "", "Page name": "«Название страницы»",
"Parent": "", "Parent": "«Родитель»",
"Password": "", "Password": "Пароль",
"Pay by credit": "", "Pay by credit": "«Оплата в кредит»",
"Payment Type": "", "Payment Type": "Способ оплаты",
"Payment error": "", "Payment error": "Ошибка оплаты",
"Payment price:": "", "Payment price:": "«Стоимость оплаты:»",
"Pediatric dental clips": "", "Pediatric dental clips": "«Детские стоматологические зажимы»",
"Pending": "", "Pending": "В ожидании",
"Phone": "", "Phone": "Телефон",
"Pictures": "", "Pictures": "Картинки",
"Pin": "", "Pin": "Приколоть",
"Please change payment gate.": "", "Please change payment gate.": "«Пожалуйста, измените платежный шлюз».",
"Please confirm your password before continuing.": "", "Please confirm your password before continuing.": "«Пожалуйста, подтвердите свой пароль, прежде чем продолжить».",
"Poll": "", "Poll": "Голосование",
"Poll list": "", "Poll list": "«Список опросов»",
"Polls": "", "Polls": "Опросы",
"Polls list": "", "Polls list": "«Список опросов»",
"Post": "", "Post": "Почта",
"Post Text": "", "Post Text": "«Опубликовать текст»",
"Post list": "", "Post list": "«Список сообщений»",
"Post reply": "", "Post reply": "Ответить",
"Postal code": "", "Postal code": "Почтовый индекс",
"Posts": "", "Posts": "Сообщения",
"Posts search": "", "Posts search": "«Поиск постов»",
"Preview": "", "Preview": "«Предварительный просмотр»",
"Previous": "", "Previous": "Предыдущий",
"Price": "", "Price": "Цена",
"Price range": "", "Price range": "Ценовой диапазон",
"Print": "", "Print": "Распечатать",
"Processing": "", "Processing": "Обработка",
"Product": "", "Product": "Продукт",
"Product added to favorite": "", "Product added to favorite": "«Товар добавлен в избранное»",
"Product categories": "", "Product categories": "Категории продукта",
"Product categories list": "", "Product categories list": "«Список категорий товаров»",
"Product categories node": "", "Product categories node": "«Узел категорий товаров»",
"Product category": "", "Product category": "Категория продукта",
"Product category Parent": "", "Product category Parent": "«Категория продукта для родителей»",
"Product category created successfully": "", "Product category created successfully": "«Категория товаров успешно создана»",
"Product category deleted successfully": "", "Product category deleted successfully": "«Категория товара успешно удалена»",
"Product category name": "", "Product category name": "«Название категории товаров»",
"Product category updated successfully": "", "Product category updated successfully": "«Категория продукта успешно обновлена»",
"Product deleted successfully": "", "Product deleted successfully": "«Продукт успешно удален»",
"Product invoice deleted successfully": "", "Product invoice deleted successfully": "«Счет за продукт успешно удален»",
"Product invoice updated successfully": "", "Product invoice updated successfully": "«Счет за продукт успешно обновлен»",
"Product removed form card": "", "Product removed form card": "«Карточка формы удаления товара»",
"Product removed from favorite": "", "Product removed from favorite": "«Товар удален из избранного»",
"Product restore successfully": "", "Product restore successfully": "«Продукт восстановлен успешно»",
"Product stock changed successfully": "", "Product stock changed successfully": "«Запас продукции успешно изменен»",
"Products": "", "Products": "Продукты",
"Products list": "", "Products list": "«Список товаров»",
"Profile": "", "Profile": "Профиль",
"Profile updated": "", "Profile updated": "Профиль обновлен",
"Properties list": "", "Properties list": "«Список свойств»",
"Properties meta": "", "Properties meta": "«Мета свойства»",
"Properties sort": "", "Properties sort": "«Сортировка свойств»",
"Publish now": "", "Publish now": "«Опубликовать сейчас»",
"Published": "", "Published": "Опубликовано",
"Quantity": "", "Quantity": "Количество",
"Question": "", "Question": "Вопрос",
"Question \/ Answer": "", "Question / Answer": "Вопрос ответ",
"Questions": "", "Questions": "Вопросы",
"Question|Message": "", "Question|Message": "«Вопрос|Сообщение»",
"RTL": "", "RTL": "РТЛ",
"Ref ID": "", "Ref ID": "«Реферальный идентификатор»",
"Register": "", "Register": "Регистр",
"Register or login to complete purchase": "", "Register or login to complete purchase": "«Зарегистрируйтесь или войдите, чтобы завершить покупку»",
"Reject": "", "Reject": "Отклонять",
"Remember Me": "", "Remember Me": "Запомнить меня",
"Remove": "", "Remove": "Удалять",
"Reply": "", "Reply": "Отвечать",
"Required": "", "Required": "Необходимый",
"Reserve order for :H hours": "", "Reserve order for :H hours": "«Резервный заказ на :H часов»",
"Reset": "", "Reset": "Перезагрузить",
"Reset Password": "", "Reset Password": "Сброс пароля",
"Restore": "", "Restore": "Восстановить",
"Role": "", "Role": "Роль",
"SKU": "", "SKU": "СКУ",
"SMS Code": "", "SMS Code": "«СМС-код»",
"SMS send, Please login with you Auth code": "", "SMS send, Please login with you Auth code": "«Отправить SMS. Пожалуйста, войдите, используя свой код авторизации»",
"Saturday": "", "Saturday": "Суббота",
"Save": "", "Save": "Сохранять",
"Save sort": "", "Save sort": "«Сохранить сортировку»",
"Search": "", "Search": "Поиск",
"Search for": "", "Search for": "Искать",
"Search in all panel": "", "Search in all panel": "«Поиск по всей панели»",
"Searchable": "", "Searchable": "Доступно для поиска",
"Section": "", "Section": "Раздел",
"Select type": "", "Select type": "«Выбрать тип»",
"Send": "", "Send": "Отправлять",
"Send Answer": "", "Send Answer": "«Отправить ответ»",
"Send Answer and close": "", "Send Answer and close": "«Отправить ответ и закрыть»",
"Send Password Reset Link": "", "Send Password Reset Link": "«Отправить ссылку для сброса пароля»",
"Send new ticket": "", "Send new ticket": "«Отправить новый билет»",
"Setting": "", "Setting": "Параметр",
"Setting added to website": "", "Setting added to website": "«Настройка добавлена на сайт»",
"Setting of website updated": "", "Setting of website updated": "«Настройки сайта обновлены»",
"Shopping card": "", "Shopping card": "«Покупательная карточка»",
"Short text": "", "Short text": "«Короткий текст»",
"Show": "", "Show": "Показывать",
"Signup or Login": "", "Signup or Login": "Зарегистрируйтесь или войдите под своим ником",
"Single Select & multi search": "", "Single Select \u0026 multi search": "«Единый выбор и множественный поиск»",
"Slider": "", "Slider": "«Слайдер»",
"Slider list": "", "Slider list": "«Список слайдеров»",
"Sliders": "", "Sliders": "«Слайдеры»",
"Sort": "", "Sort": "Сортировать",
"Sort category": "", "Sort category": "«Сортировать категорию»",
"Sort product category": "", "Sort product category": "«Сортировать по категориям товаров»",
"Special quantity": "", "Special quantity": "«Специальное количество»",
"State": "", "State": "Состояние",
"Status": "", "Status": "Положение дел",
"Stock quantity": "", "Stock quantity": "«Количество запасов»",
"Store": "", "Store": "Магазин",
"Sub invoices items": "", "Sub invoices items": "«Позиции дополнительных счетов»",
"Subject": "", "Subject": "Предмет",
"Subtitle": "", "Subtitle": "«Субтитры»",
"Sum": "", "Sum": "«Сумма»",
"Sunday": "", "Sunday": "Воскресенье",
"Tag": "", "Tag": "Ярлык",
"Tag search": "", "Tag search": "«Поиск по тегам»",
"Tag with sub posts": "", "Tag with sub posts": "«Отметка с подзаписями»",
"Tagged by": "", "Tagged by": "Отмечено",
"Tags": "", "Tags": "«Теги»",
"Tax": "", "Tax": "«Налог»",
"Text": "", "Text": "Текст",
"Text type": "", "Text type": "«Тип текста»",
"The first and\/or second image will be index image": "", "The first and/or second image will be index image": "«Первое и/или второе изображение будет индексным»",
"The order is duplicate please check invoices list": "", "The order is duplicate please check invoices list": "«Заказ дубликат, пожалуйста, проверьте список счетов»",
"Thumbnail": "", "Thumbnail": "«Миниатюра»",
"Thursday": "", "Thursday": "Четверг",
"Ticket answered successfully": "", "Ticket answered successfully": "«Заявка успешно отвечена»",
"Ticket has been sent": "", "Ticket has been sent": "«Билет отправлен»",
"Tickets": "", "Tickets": "Билеты",
"Tickets deleted successfully": "", "Tickets deleted successfully": "«Билеты успешно удалены»",
"Tickets status changed successfully": "", "Tickets status changed successfully": "«Статус заявки успешно изменен»",
"Title": "", "Title": "Заголовок",
"To": "", "To": "К",
"Toggle navigation": "", "Toggle navigation": "«Переключить навигацию»",
"Total Price": "", "Total Price": "Итоговая цена",
"Total amount": "", "Total amount": "Общая сумма",
"Tracking code": "", "Tracking code": "Код отслеживания",
"Translates": "", "Translates": "«Переводит»",
"Transport": "", "Transport": "Транспорт",
"Transport method": "", "Transport method": "«Транспортный метод»",
"Transport price": "", "Transport price": "«Цена перевозки»",
"Transports": "", "Transports": "«Транспорт»",
"Transports list": "", "Transports list": "«Список транспорта»",
"Trashed": "", "Trashed": "Разрушенный",
"True": "", "True": "Истинный",
"Try login": "", "Try login": "«Попробуйте войти»",
"Tuesday": "", "Tuesday": "Вторник",
"Type": "", "Type": "Тип",
"Under construction": "", "Under construction": "В разработке",
"Unit": "", "Unit": "Единица",
"Unknown bulk action :": "", "Unknown bulk action :": "«Неизвестное массовое действие:»",
"Upload images": "", "Upload images": "Загрузить изображения",
"Upload new images": "", "Upload new images": "«Загрузить новые изображения»",
"User": "", "User": "Пользователь",
"User list": "", "User list": "«Список пользователей»",
"Username": "", "Username": "Имя пользователя",
"Users": "", "Users": "«Пользователи»",
"Users list": "", "Users list": "«Список пользователей»",
"Verify Your Email Address": "", "Verify Your Email Address": "Проверьте свой адрес электронной почты",
"Video clip": "", "Video clip": "Видеоклип",
"Video clips": "", "Video clips": "Видеоклипы",
"Video list": "", "Video list": "«Список видео»",
"We call you about price soon.": "", "We call you about price soon.": "«Скоро мы позвоним вам и уточним цену».",
"Website contents": "", "Website contents": "«Содержимое сайта»",
"Wednesday": "", "Wednesday": "Среда",
"Welcome": "", "Welcome": "Добро пожаловать",
"Width": "", "Width": "Ширина",
"Yes": "", "Yes": "Да",
"You are logged in!": "", "You are logged in!": "Вы вошли в систему!",
"You can choose one or more image together": "", "You can choose one or more image together": "«Вы можете выбрать одно или несколько изображений вместе»",
"You disliked ": "", "You disliked ": "«Тебе не понравилось»",
"You don't have any credit": "", "You don't have any credit": "«У тебя нет кредита»",
"You dont't have acccess this acction": "", "You dont't have acccess this acction": "«У вас нет доступа к этому действию»",
"You have got :count products in your basket, Could you complete your purchase?": "", "You have got :count products in your basket, Could you complete your purchase?": "«У вас в корзине :count товаров. Не могли бы вы завершить покупку?»",
"You liked ": "", "You liked ": "Тебе понравилось ",
"You liked ago ": "", "You liked ago ": "«Тебе понравилось назад»",
"You order reserved for a few hours, please pay to complete process": "", "You order reserved for a few hours, please pay to complete process": "«Вы заказываете зарезервировано на несколько часов, пожалуйста, заплатите, чтобы завершить процесс»",
"You voted ago ": "", "You voted ago ": "«Вы проголосовали назад»",
"You voted right now ": "", "You voted right now ": "«Вы проголосовали прямо сейчас»",
"Your Email sent": "", "Your Email sent": "«Ваше письмо отправлено»",
"Your authentication code": "", "Your authentication code": "«Ваш код аутентификации»",
"Your comment submited successfully, After approve will be visbile.": "", "Your comment submited successfully, After approve will be visbile.": "«Ваш комментарий успешно отправлен. После одобрения он будет виден».",
"Your credit": "", "Your credit": "«Ваша заслуга»",
"Your invoices": "", "Your invoices": "«Ваши счета»",
"Your message has been successfully sent.": "", "Your message has been successfully sent.": "Ваше сообщение было успешно отправлено.",
"Your message...": "", "Your message...": "Ваше сообщение...",
"Your question has been sent, We answer it soon.": "", "Your question has been sent, We answer it soon.": "«Ваш вопрос отправлен, мы скоро на него ответим».",
"Your question or request...": "", "Your question or request...": "«Ваш вопрос или просьба...»",
"action": "", "action": "действие",
"body": "", "body": "тело",
"by percent": "", "by percent": "по процентам",
"by price": "", "by price": "по цене",
"choose addrress": "", "choose addrress": "выбрать адрес",
"click here to request another": "", "click here to request another": "«нажмите здесь, чтобы запросить еще»",
"clip or cover not uploaded...": "", "clip or cover not uploaded...": "клип или обложка не загружены...",
"created successfully": "", "created successfully": "«создано успешно»",
"deleted successfully": "", "deleted successfully": "успешно удалено",
"id": "", "id": "идентификатор",
"invoice created successfully": "", "invoice created successfully": "счет успешно создан",
"name \/ email": "", "name / email": "«имя / адрес электронной почты»",
"not searchable": "", "not searchable": "недоступно для поиска",
"password repeat": "", "password repeat": "повторить пароль",
"phone": "", "phone": "телефон",
"postal_code": "", "postal_code": "Почтовый индекс",
"preview": "", "preview": "предварительный просмотр",
"reply": "", "reply": "отвечать",
"slider or cover not uploaded...": "", "slider or cover not uploaded...": "слайдер или обложка не загружены...",
"transports deleted successfully": "", "transports deleted successfully": "транспорт успешно удален",
"updated successfully": "", "updated successfully": "Успешно Обновлено",
"weight": "" "weight": "масса"
} }

@ -27,6 +27,9 @@
@if($lang !== null && $lang->rtl) @if($lang !== null && $lang->rtl)
isRtl = true; isRtl = true;
@endif @endif
@if(config('app.xlang_main') == 'fa' || config('app.xlang_main') == 'ar')
isRtl = true;
@endif
</script> </script>
</head> </head>
<body> <body>

@ -15,6 +15,9 @@
@if($lang !== null && $lang->rtl) @if($lang !== null && $lang->rtl)
isRtl = true; isRtl = true;
@endif @endif
@if(config('app.xlang_main') == 'fa' || config('app.xlang_main') == 'ar')
isRtl = true;
@endif
</script> </script>
@yield('header-content') @yield('header-content')
<!-- CSRF Token --> <!-- CSRF Token -->

@ -33,10 +33,10 @@
<div class="col-md-3"> <div class="col-md-3">
<h3> <h3>
اطلاعات تماس {!! \App\Helpers\getSetting('footer_title') !!}
</h3> </h3>
<p class="text-secondary"> <p class="text-secondary">
افراد گروه سوم از اهمیت به پایان رساندن آگاه هستند. آنها با تفکر منطقی، طرحی روشن ارائه می‌کنند. آنها نه تنها برای پایان دادن به پروژه‌ی خود در آینده برنامه ریزی می‌کنند، بلکه به تمام نتایج و عواقب اجرای آن برنامه هم می‌اندیشند. این افراد کسانی هستند که هنر به پایان رساندن را می‌دانند. {!! \App\Helpers\getSetting('footer_text') !!}
</p> </p>
</div> </div>
<div class="col-md-3"> <div class="col-md-3">

@ -22,45 +22,62 @@ class websitePagesTest extends TestCase
$response->assertStatus(200); $response->assertStatus(200);
} }
public function test_products() public function test_products()
{ {
$response = $this->get(route('products')); $response = $this->get(route('products'));
$response->assertStatus(200); $response->assertStatus(200);
} }
public function test_posts() public function test_posts()
{ {
$response = $this->get(route('posts')); $response = $this->get(route('posts'));
$response->assertStatus(200); $response->assertStatus(200);
} }
public function test_single_post() public function test_single_post()
{ {
$response = $this->get(route('post',Post::inRandomOrder()->first()->slug)); if (Post::count() > 0) {
$response = $this->get(route('post', Post::inRandomOrder()->first()->slug));
$response->assertStatus(200); $response->assertStatus(200);
} else {
$this->assertTrue(true);
}
} }
public function test_single_product() public function test_single_product()
{ {
$response = $this->get(route('product',Product::inRandomOrder()->first()->slug)); if (Product::count() > 0) {
$response = $this->get(route('product', Product::inRandomOrder()->first()->slug));
$response->assertStatus(200); $response->assertStatus(200);
} else {
$this->assertTrue(true);
}
} }
public function test_single_product_category() public function test_single_product_category()
{ {
$response = $this->get(route('cat',Cat::inRandomOrder()->first()->slug)); $response = $this->get(route('cat', Cat::inRandomOrder()->first()->slug));
$response->assertStatus(200); $response->assertStatus(200);
} }
public function test_card_empty(){ public function test_card_empty()
{
$this->get(route('reset')); $this->get(route('reset'));
$response = $this->get(route('card.show')); $response = $this->get(route('card.show'));
$response->assertStatus(200); $response->assertStatus(200);
} }
public function test_card_with_products(){
$this->get(route('card.add',Product::inRandomOrder()->first()->slug)); public function test_card_with_products()
$this->get(route('card.add',Product::inRandomOrder()->first()->slug)); {
if (Product::count() > 0) {
$this->get(route('card.add', Product::inRandomOrder()->first()->slug));
$this->get(route('card.add', Product::inRandomOrder()->first()->slug));
}
$response = $this->get(route('card.show')); $response = $this->get(route('card.show'));
$response->assertStatus(200); $response->assertStatus(200);
} }

Loading…
Cancel
Save