config project

master
seyedmr 1 year ago
parent a036603c4e
commit 48604158b3
  1. 70
      app/Http/Controllers/Admin/CategoryCrudController.php
  2. 5
      app/Http/Controllers/Admin/DomainsCrudController.php
  3. 22
      app/Http/Controllers/Admin/FoodCrudController.php
  4. 13
      app/Http/Controllers/Admin/UserCrudController.php
  5. 4
      config/app.php
  6. 4
      config/backpack/crud.php
  7. 2
      config/backpack/theme-tabler.php
  8. 12
      config/backpack/ui.php
  9. 36
      database/migrations/2024_08_07_090621_add_columns_to_users_table.php
  10. 28
      database/migrations/2024_08_07_095901_add_restaurant_logo_to_users_table.php
  11. 28
      database/migrations/2024_08_07_100037_add_image_to_foods_table.php
  12. 28
      database/migrations/2024_08_07_102814_add_icon_to_categories_table.php
  13. 28
      database/migrations/2024_08_07_110151_add_unique_username_to_users_table.php
  14. 4
      lang/fa/basic.php
  15. 27
      lang/fa/entities.php
  16. 16
      lang/vendor/backpack/fa/backup.php
  17. 71
      lang/vendor/backpack/fa/base.php
  18. 147
      lang/vendor/backpack/fa/crud.php
  19. 16
      lang/vendor/backpack/fa/langfilemanager.php
  20. 16
      lang/vendor/backpack/fa/logmanager.php
  21. 16
      lang/vendor/backpack/fa/pagemanager.php
  22. 16
      lang/vendor/backpack/fa/permissionmanager.php
  23. 16
      lang/vendor/backpack/fa/settings.php
  24. 152
      public/assets/font-awesome/less/_animated.less
  25. 20
      public/assets/font-awesome/less/_bordered-pulled.less
  26. 36
      public/assets/font-awesome/less/_core.less
  27. 7
      public/assets/font-awesome/less/_fixed-width.less
  28. 9
      public/assets/font-awesome/less/_icons.less
  29. 18
      public/assets/font-awesome/less/_list.less
  30. 78
      public/assets/font-awesome/less/_mixins.less
  31. 31
      public/assets/font-awesome/less/_rotated-flipped.less
  32. 14
      public/assets/font-awesome/less/_screen-reader.less
  33. 2042
      public/assets/font-awesome/less/_shims.less
  34. 19
      public/assets/font-awesome/less/_sizing.less
  35. 31
      public/assets/font-awesome/less/_stacked.less
  36. 5021
      public/assets/font-awesome/less/_variables.less
  37. 29
      public/assets/font-awesome/less/brands.less
  38. 20
      public/assets/font-awesome/less/fontawesome.less
  39. 25
      public/assets/font-awesome/less/regular.less
  40. 25
      public/assets/font-awesome/less/solid.less
  41. 10
      public/assets/font-awesome/less/v4-shims.less
  42. 198
      public/css/admin.css
  43. 64
      public/css/fontiran.css
  44. 11
      public/namaka.svg
  45. 3
      resources/css/app.css
  46. 24
      resources/views/food-menu/menu2/theme.blade.php
  47. 22
      resources/views/vendor/backpack/ui/inc/menu_items.blade.php

@ -32,8 +32,11 @@ class CategoryCrudController extends CrudController
{
CRUD::setModel(\App\Models\Category::class);
CRUD::setRoute(config('backpack.base.route_prefix') . '/category');
CRUD::setEntityNameStrings('category', 'categories');
$this->crud->addClause(function (Builder $builder){
CRUD::setEntityNameStrings(
__('entities.category.singular'),
__('entities.category.plural'),
);
$this->crud->addClause(function (Builder $builder) {
$builder->where('user_id', backpack_user()->id);
});
}
@ -46,8 +49,21 @@ class CategoryCrudController extends CrudController
*/
protected function setupListOperation()
{
$this->crud->addColumn([
'name' => 'icon',
'label' => 'آیکون',
'type' => 'custom_html',
'value' => function($category){
$icon = $category->icon != ''
? asset("icons/{$category->icon}")
: asset('icons/icon-default.png');
return "<img src='{$icon}' class='mx-auto mb-2' style='width: 40px;'>";
}
]);
CRUD::setFromDb(); // set columns from db columns.
$this->crud->removeColumn('user_id');
$this->crud->removeColumn('user_id');
/**
* Columns can be defined using the fluent syntax:
@ -65,6 +81,56 @@ class CategoryCrudController extends CrudController
{
CRUD::setFromDb(); // set fields from db columns.
$this->crud->removeField('user_id');
CRUD::field([ // select_from_array
'name' => 'icon',
'label' => "آیکون",
'type' => 'select_from_array',
'options' => [
"icon-appetizer.png" => 'پیش غذا',
"icon-beverage.png" => 'نوشیدنی',
"icon-bread.png" => 'نان',
"icon-breakfast.png" => 'صبحانه',
"icon-burger.png" => 'برگر',
"icon-calendar.png" => 'تقویم',
"icon-candy.png" => 'شیرینی، کیک و بستنی',
"icon-cereal.png" => 'غلات',
"icon-chicken.png" => 'جوجه',
"icon-chickenstrips.png" => 'چیکن استریپس',
"icon-cup.png" => 'فنجان',
"icon-default.png" => 'پیش فرض',
"icon-dessert.png" => 'دسر',
"icon-dizi.png" => 'دیزی',
"icon-doner.png" => 'دونر',
"icon-doughnut.png" => 'دونات',
"icon-food.png" => 'غذا',
"icon-fruites.png" => 'میوه ها',
"icon-hotdog.png" => 'هات داگ',
"icon-international.png" => 'غذای بینالمللی',
"icon-juice.png" => 'آب میوه',
"icon-kalle.png" => 'کله',
"icon-kebab.png" => 'کباب',
"icon-kebabrice.png" => 'چلوکباب',
"icon-lettuce.png" => 'کاهو',
"icon-marmalade.png" => 'مارمالاد',
"icon-pasta.png" => 'پاستا',
"icon-pistachio.png" => 'پسته',
"icon-pizza.png" => 'پیتزا',
"icon-pot.png" => 'قابلمه',
"icon-rice.png" => 'برنج',
"icon-salad.png" => 'سالاد',
"icon-sandwich.png" => 'ساندویچ',
"icon-seafood.png" => 'غذای دریایی',
"icon-soup.png" => 'سوپ',
"icon-spice.png" => 'ادویه',
"icon-steak.png" => 'استیک',
"icon-sushi.png" => 'سوشی',
"icon-vegetables.png" => 'سبزیجات',
"icon-wrap.png" => 'ساندویچ و لقمه',
],
'allows_null' => false,
'default' => 'one',
// 'allows_multiple' => true, // OPTIONAL; needs you to cast this to array in your model;
]);
/**
* Fields can be defined using the fluent syntax:
* - CRUD::field('price')->type('number');

@ -29,7 +29,10 @@ class DomainsCrudController extends CrudController
{
CRUD::setModel(\App\Models\Domain::class);
CRUD::setRoute(config('backpack.base.route_prefix') . '/domains');
CRUD::setEntityNameStrings('domains', 'domains');
CRUD::setEntityNameStrings(
__('entities.domain.singular'),
__('entities.domain.plural'),
);
if (!backpack_user()->hasRole('admin')){
$this->crud->denyAllAccess();
}

@ -29,7 +29,10 @@ class FoodCrudController extends CrudController
{
CRUD::setModel(\App\Models\Food::class);
CRUD::setRoute(config('backpack.base.route_prefix') . '/food');
CRUD::setEntityNameStrings('food', 'food');
CRUD::setEntityNameStrings(
__('entities.food.singular'),
__('entities.food.plural'),
);
$this->crud->addClause(function (Builder $builder){
$builder->whereHas('category', function ($query) {
$query->where('user_id', backpack_user()->id);
@ -46,19 +49,6 @@ class FoodCrudController extends CrudController
*/
protected function setupListOperation()
{
// CRUD::column([ // Select
// 'label' => "Category",
// 'type' => 'select',
// 'name' => 'category_id', // the db column for the foreign key
// 'entity' => 'category',
// 'model' => "App\Models\Category", // related model
// 'attribute' => 'name', // foreign key attribute that is shown to user
// 'priority' => 2,
// 'options' => (function ($query) {
// return $query->orderBy('id', 'ASC')->get();
// }), // you can use this to filter the results show in the select
// ]);
CRUD::setFromDb(); // set columns from db columns.
$this->crud->removeColumn('category_id');
$this->crud->addColumn([ // Select
@ -101,7 +91,9 @@ class FoodCrudController extends CrudController
return $query->orderBy('id', 'ASC')->get();
}), // you can use this to filter the results show in the select
]);
CRUD::field('image')->type('upload')->withFiles([
'path' => 'food_images',
]);
/**
* Fields can be defined using the fluent syntax:
* - CRUD::field('price')->type('number');

@ -21,19 +21,22 @@ class UserCrudController extends CrudController
/**
* Configure the CrudPanel object. Apply settings to all operations.
*
*
* @return void
*/
public function setup()
{
CRUD::setModel(\App\Models\User::class);
CRUD::setRoute(config('backpack.base.route_prefix') . '/user');
CRUD::setEntityNameStrings('user', 'users');
CRUD::setEntityNameStrings(
__('entities.user.singular'),
__('entities.user.plural'),
);
}
/**
* Define what happens when the List operation is loaded.
*
*
* @see https://backpackforlaravel.com/docs/crud-operation-list-entries
* @return void
*/
@ -49,7 +52,7 @@ class UserCrudController extends CrudController
/**
* Define what happens when the Create operation is loaded.
*
*
* @see https://backpackforlaravel.com/docs/crud-operation-create
* @return void
*/
@ -65,7 +68,7 @@ class UserCrudController extends CrudController
/**
* Define what happens when the Update operation is loaded.
*
*
* @see https://backpackforlaravel.com/docs/crud-operation-update
* @return void
*/

@ -78,11 +78,11 @@ return [
|
*/
'locale' => env('APP_LOCALE', 'en'),
'locale' => env('APP_LOCALE', 'fa'),
'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'),
'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'),
'faker_locale' => env('APP_FAKER_LOCALE', 'fa_IR'),
/*
|--------------------------------------------------------------------------

@ -311,8 +311,8 @@ return [
// "ps_AF" => "Pashto (Afghanistan)",
// "ps" => "Pashto",
// "fa_AF" => "Persian (Afghanistan)",
// "fa_IR" => "Persian (Iran)",
// "fa" => "Persian",
"fa_IR" => "Persian (Iran)",
"fa" => "Persian",
// "pl_PL" => "Polish (Poland)",
// "pl" => "Polish",
// "pt_BR" => "Portuguese (Brazil)",

@ -41,6 +41,8 @@ return [
'styles' => [
base_path('vendor/backpack/theme-tabler/resources/assets/css/color-adjustments.css'),
base_path('vendor/backpack/theme-tabler/resources/assets/css/colors.css'),
base_path('public/css/fontiran.css'),
base_path('public/css/admin.css'),
],
/**

@ -39,14 +39,14 @@ return [
// Direction, according to language
// (left-to-right vs right-to-left)
'html_direction' => 'ltr',
'html_direction' => 'rtl',
// ----
// HEAD
// ----
// Project name - shown in the window title
'project_name' => 'Backpack Admin Panel',
'project_name' => 'نمکا',
// Content of the HTML meta robots tag to prevent indexing and link following
'meta_robots_content' => 'noindex, nofollow',
@ -63,7 +63,7 @@ return [
'home_link' => '',
// Menu logo. You can replace this with an <img> tag if you have a logo.
'project_logo' => '<b>Back</b>pack',
'project_logo' => '<img src="/namaka.svg" width="28"> <span class="me-1">نمکا</span>',
// Show / hide breadcrumbs on admin panel pages.
'breadcrumbs' => true,
@ -73,13 +73,13 @@ return [
// ------
// Developer or company name. Shown in footer.
'developer_name' => 'Cristian Tabacitu',
'developer_name' => 'نمکا',
// Developer website. Link in footer. Type false if you want to hide it.
'developer_link' => 'http://tabacitu.ro',
'developer_link' => 'https://namaka.ir',
// Show powered by Laravel Backpack in the footer? true/false
'show_powered_by' => true,
'show_powered_by' => false,
// ---------
// DASHBOARD

@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->string('username');
$table->string('restaurant_name');
$table->string('instagram_account');
$table->string('template');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn([
'username',
'restaurant_name',
'instagram_account',
'template',
]);
});
}
};

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->text('restaurant_logo');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('restaurant_logo');
});
}
};

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('foods', function (Blueprint $table) {
$table->text('image');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('foods', function (Blueprint $table) {
$table->dropColumn('image');
});
}
};

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('categories', function (Blueprint $table) {
$table->string('icon');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('categories', function (Blueprint $table) {
$table->dropColumn('icon');
});
}
};

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->unique('username');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropUnique('username');
});
}
};

@ -0,0 +1,4 @@
<?php
return [
'authentication' => 'احراز هویت',
];

@ -0,0 +1,27 @@
<?php
return [
'user' => [
'singular' => 'کاربر',
'plural' => 'کاربران',
],
'role' => [
'singular' => 'نقش',
'plural' => 'نقشها',
],
'permission' => [
'singular' => 'دسترسی',
'plural' => 'دسترسیها',
],
'domain' => [
'singular' => 'دامنه',
'plural' => 'دامنهها',
],
'food' => [
'singular' => 'غذا',
'plural' => 'غذاها',
],
'category' => [
'singular' => 'دستهبندی',
'plural' => 'دستهبندیها',
],
];

@ -0,0 +1,16 @@
<?php
// --------------------------------------------------------
// This is only a pointer file, not an actual language file
// --------------------------------------------------------
//
// If you've copied this file to your /resources/lang/vendor/backpack/
// folder, please delete it, it's no use there. You need to copy/publish the
// actual language file, from the package.
// If a langfile with the same name exists in the package, load that one
if (file_exists(__DIR__.'/../../../../../backupmanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__))) {
return include __DIR__.'/../../../../../backupmanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__);
}
return [];

@ -0,0 +1,71 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Backpack\Base Language Lines - Persian
|--------------------------------------------------------------------------
*/
'registration_closed' => 'عضویت بسته شده است.',
'no_email_column' => 'کاربران آدرس ایمیل مرتبط ندارند.',
'first_page_you_see' => 'اولین صفحهای که بعد از ورود شما میبینید.',
'login_status' => 'وضعیت ورود',
'logged_in' => 'شما وارد شده اید!',
'toggle_navigation' => 'تعویض ناوبری',
'administration' => 'مدیریت',
'user' => 'کاربر',
'logout' => 'خروج',
'login' => 'ورود',
'register' => 'عضویت',
'name' => 'نام',
'email_address' => 'آدرس ایمیل',
'password' => 'گذرواژه',
'old_password' => 'گذرواژه قدیمی',
'new_password' => 'گذرواژه جدید',
'confirm_password' => 'تایید رمز',
'remember_me' => 'مرا به خاطر بسپار',
'forgot_your_password' => 'فراموشی گذرواژه؟',
'reset_password' => 'بازنشانی گذرواژه',
'send_reset_link' => 'ارسال لینک بازنشانی گذرواژه',
'click_here_to_reset' => 'اینجا را برای بازنشانی گذرواژه کلیک کنید',
'change_password' => 'تغییر گذرواژه',
'unauthorized' => 'غیرمجاز.',
'dashboard' => 'داشبورد',
'handcrafted_by' => 'تولید شده توسط',
'powered_by' => 'قدرت گرفته با',
'my_account' => 'حساب کاربری من',
'update_account_info' => 'بروزرسانی اطلاعات حساب کاربری',
'save' => 'ذخیره',
'cancel' => 'انصراف',
'error' => 'خطا',
'success' => 'موفق',
'warning' => 'هشدار',
'notice' => 'اطلاع',
'old_password_incorrect' => 'گذرواژه قدیمی صحیح نیست.',
'password_dont_match' => 'گذرواژههای ورود مطابقت ندارند.',
'password_empty' => 'اطمینان حاصل کنید که هر دو قسمت گذرواژه پر شده اند.',
'password_updated' => 'گذرواژه بروز شد.',
'account_updated' => 'حساب کاربری با موفقیت بروز شد.',
'unknown_error' => 'خطای ناشناخته اتفاق افتاد. لطفا مجدد تلاش کنید.',
'error_saving' => 'خطا در حین ذخیره سازی، لطفا مجدد تلاش کنید.',
'session_expired_error' => 'جلسه شما تمام شده است. لطفا دوباره وارد حساب کاربری خود شوید',
'welcome' => 'خوش آمدید!',
'use_sidebar' => 'برای ایجاد ، ویرایش یا حذف محتوا از نوار کناری در سمت چپ استفاده کنید.',
'password_reset' => [
'greeting' => 'سلام!',
'subject' => 'اعلان بازنشانی گذرواژه',
'line_1' => 'شما این ایمیل را دریافت کردید زیرا ما درخواست بازنشانی گذرواژه را برای حساب کاربری شما دریافت کردیم.',
'line_2' => 'دکمه زیر برای بازنشانی گذرواژه:',
'button' => 'بازنشانی گذرواژه',
'notice' => 'اگر درخواست بازنشانی گذرواژه را نکردید، هیچ اقدام دیگری لازم نیست.',
],
'step' => 'مرحله',
'confirm_email' => 'ایمیل تایید',
'choose_new_password' => 'انتخاب گذرواژه جدید',
'confirm_new_password' => 'تایید گذرواژه جدید',
];

@ -0,0 +1,147 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Backpack Crud Language Lines - Persian
|--------------------------------------------------------------------------
|
| The following language lines are used by the CRUD interface.
| You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
// Forms
'save_action_save_and_new' => 'ذخیره و مورد جدید',
'save_action_save_and_edit' => 'ذخیره و ویرایش این مورد',
'save_action_save_and_back' => 'ذخیره و بازگشت',
'save_action_changed_notification' => 'رفتار پیش فرض پس از ذخیره سازی تغییر کرده است.',
// Create form
'add' => 'افزودن',
'back_to_all' => 'بازگشت به همه ',
'cancel' => 'انصراف',
'add_a_new' => 'افزودن یک چیز جدید ',
// Edit form
'edit' => 'ویرایش',
'save' => 'ذخیره',
// Translatable models
'edit_translations' => 'ترجمه',
'language' => 'زبان',
// CRUD table view
'all' => 'همه ',
'in_the_database' => 'در پایگاه داده',
'list' => 'لیست',
'actions' => 'اقدامات',
'preview' => 'پیشنمایش',
'delete' => 'حذف',
'admin' => 'مدیر',
'details_row' => 'این ردیف جزئیات است. مطابق میل خود تغییر دهید.',
'details_row_loading_error' => 'هنگام بارگذاری جزئیات خطایی روی داد. لطفا دوباره سعی کنید.',
// Confirmation messages and bubbles
'delete_confirm' => 'آیا شما از حذف این مورد مطمين هستید؟',
'delete_confirmation_title' => 'مورد حذف شد',
'delete_confirmation_message' => 'مورد مورد نظر با موفقیت حذف شد.',
'delete_confirmation_not_title' => 'حذف نشد',
'delete_confirmation_not_message' => 'خطایی وجود داشت. مورد مورد نظر ممکن است حذف نشده باشد.',
'delete_confirmation_not_deleted_title' => 'حذف نشد',
'delete_confirmation_not_deleted_message' => 'هیچ اتفاقی نیفتاده مورد شما ایمن است.',
// Bulk actions
'bulk_no_entries_selected_title' => 'هیچ ورودی انتخاب نشده است',
'bulk_no_entries_selected_message' => 'لطفاً یک یا چند مورد را انتخاب کنید تا یک عمل انبوه بر روی آنها انجام شود.',
// Bulk confirmation
'bulk_delete_are_you_sure' => 'آیا مطمئن هستید که می خواهید :number مورد را حذف کنید؟',
'bulk_delete_sucess_title' => 'موارد حذف شد',
'bulk_delete_sucess_message' => ' موارد حذف شدند',
'bulk_delete_error_title' => 'حذف نشد',
'bulk_delete_error_message' => 'یک یا چند مورد قابل حذف نیستند',
// Ajax errors
'ajax_error_title' => 'خطا',
'ajax_error_text' => 'خطا در بارگذاری صفحه. صفحه را تازه کنید. ',
// DataTables translation
'emptyTable' => 'دادهای در جدول وجود ندارد',
'info' => 'نمایش _START_ تا _END_ از _TOTAL_ مورد',
'infoEmpty' => 'نمایش ۰ تا ۰ از ۰ مورد',
'infoFiltered' => '(فیلتر شده از _MAX_ مورد)',
'infoPostFix' => '.',
'thousands' => '،',
'lengthMenu' => '_MENU_ رکورد در صفحه',
'loadingRecords' => 'درحال بارگذاری...',
'processing' => 'درحال پردازش...',
'search' => 'جستجو',
'zeroRecords' => 'مورد مطابقت داده شده یافت نشد',
'paginate' => [
'first' => 'اولین',
'last' => 'آخرین',
'next' => 'بعدی',
'previous' => 'قبلی',
],
'aria' => [
'sortAscending' => ': برای مرتب سازی صعود ستون فعال کنید',
'sortDescending' => ': برای مرتب سازی نزولی ستون فعال کنید',
],
'export' => [
'export' => 'خروجی',
'copy' => 'کپی',
'excel' => 'Excel',
'csv' => 'CSV',
'pdf' => 'PDF',
'print' => 'چاپ',
'column_visibility' => 'ستونهای نمایان',
],
// global crud - errors
'unauthorized_access' => 'دسترسی غیرمجاز - شما مجوزهای لازم برای دیدن این صفحه را ندارید.',
'please_fix' => 'لطفا این خطاها را برطرف کنید:',
// global crud - success / error notification bubbles
'insert_success' => 'مورد مورد نظر با موفقیت اضافه شد.',
'update_success' => 'مورد با موفقیت تغییر یافت.',
// CRUD reorder view
'reorder' => 'ترتیب دوباره',
'reorder_text' => 'Use drag&drop to reorder.',
'reorder_success_title' => 'انجام شد',
'reorder_success_message' => 'ترتیب شما ذخیره شد.',
'reorder_error_title' => 'خطا',
'reorder_error_message' => 'ترتیب شما ذخیره نشده است',
// CRUD yes/no
'yes' => 'Yes',
'no' => 'No',
// CRUD filters navbar view
'filters' => 'فیلترها',
'toggle_filters' => 'تغییر فیلترها',
'remove_filters' => 'حذف فیلترها',
// Fields
'browse_uploads' => 'مرور بارگذاریها',
'select_all' => 'انتخاب همه',
'select_files' => 'انتخاب پروندهها',
'select_file' => 'انتخاب پرونده',
'clear' => 'پاک کردن',
'page_link' => 'پیوند به صفحه',
'page_link_placeholder' => 'http://example.com/your-desired-page',
'internal_link' => 'پیوند داخلی',
'internal_link_placeholder' => 'Internal slug. Ex: \'admin/page\' (no quotes) for \':url\'',
'external_link' => 'پیوند خارجی',
'choose_file' => 'انتخاب پرونده',
//Table field
'table_cant_add' => 'نمی توان :entity جدید اضافه کرد',
'table_max_reached' => 'به حداکثر مقدار :max رسیده است',
// File manager
'file_manager' => 'مدیریت پرونده',
];

@ -0,0 +1,16 @@
<?php
// --------------------------------------------------------
// This is only a pointer file, not an actual language file
// --------------------------------------------------------
//
// If you've copied this file to your /resources/lang/vendor/backpack/
// folder, please delete it, it's no use there. You need to copy/publish the
// actual language file, from the package.
// If a langfile with the same name exists in the package, load that one
if (file_exists(__DIR__.'/../../../../../langfilemanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__))) {
return include __DIR__.'/../../../../../langfilemanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__);
}
return [];

@ -0,0 +1,16 @@
<?php
// --------------------------------------------------------
// This is only a pointer file, not an actual language file
// --------------------------------------------------------
//
// If you've copied this file to your /resources/lang/vendor/backpack/
// folder, please delete it, it's no use there. You need to copy/publish the
// actual language file, from the package.
// If a langfile with the same name exists in the package, load that one
if (file_exists(__DIR__.'/../../../../../logmanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__))) {
return include __DIR__.'/../../../../../logmanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__);
}
return [];

@ -0,0 +1,16 @@
<?php
// --------------------------------------------------------
// This is only a pointer file, not an actual language file
// --------------------------------------------------------
//
// If you've copied this file to your /resources/lang/vendor/backpack/
// folder, please delete it, it's no use there. You need to copy/publish the
// actual language file, from the package.
// If a langfile with the same name exists in the package, load that one
if (file_exists(__DIR__.'/../../../../../pagemanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__))) {
return include __DIR__.'/../../../../../pagemanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__);
}
return [];

@ -0,0 +1,16 @@
<?php
// --------------------------------------------------------
// This is only a pointer file, not an actual language file
// --------------------------------------------------------
//
// If you've copied this file to your /resources/lang/vendor/backpack/
// folder, please delete it, it's no use there. You need to copy/publish the
// actual language file, from the package.
// If a langfile with the same name exists in the package, load that one
if (file_exists(__DIR__.'/../../../../../permissionmanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__))) {
return include __DIR__.'/../../../../../permissionmanager/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__);
}
return [];

@ -0,0 +1,16 @@
<?php
// --------------------------------------------------------
// This is only a pointer file, not an actual language file
// --------------------------------------------------------
//
// If you've copied this file to your /resources/lang/vendor/backpack/
// folder, please delete it, it's no use there. You need to copy/publish the
// actual language file, from the package.
// If a langfile with the same name exists in the package, load that one
if (file_exists(__DIR__.'/../../../../../settings/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__))) {
return include __DIR__.'/../../../../../settings/src/resources/lang/'.basename(__DIR__).'/'.basename(__FILE__);
}
return [];

@ -1,152 +0,0 @@
// animating icons
// --------------------------
.@{fa-css-prefix}-beat {
animation-name: ~'@{fa-css-prefix}-beat';
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, ease-in-out)';
}
.@{fa-css-prefix}-bounce {
animation-name: ~'@{fa-css-prefix}-bounce';
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, cubic-bezier(0.280, 0.840, 0.420, 1))';
}
.@{fa-css-prefix}-fade {
animation-name: ~'@{fa-css-prefix}-fade';
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1))';
}
.@{fa-css-prefix}-beat-fade {
animation-name: ~'@{fa-css-prefix}-beat-fade';
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1))';
}
.@{fa-css-prefix}-flip {
animation-name: ~'@{fa-css-prefix}-flip';
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, ease-in-out)';
}
.@{fa-css-prefix}-shake {
animation-name: ~'@{fa-css-prefix}-shake';
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, linear)';
}
.@{fa-css-prefix}-spin {
animation-name: ~'@{fa-css-prefix}-spin';
animation-delay: ~'var(--@{fa-css-prefix}-animation-delay, 0s)';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 2s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, linear)';
}
.@{fa-css-prefix}-spin-reverse {
--@{fa-css-prefix}-animation-direction: reverse;
}
.@{fa-css-prefix}-pulse,
.@{fa-css-prefix}-spin-pulse {
animation-name: ~'@{fa-css-prefix}-spin';
animation-direction: ~'var(--@{fa-css-prefix}-animation-direction, normal)';
animation-duration: ~'var(--@{fa-css-prefix}-animation-duration, 1s)';
animation-iteration-count: ~'var(--@{fa-css-prefix}-animation-iteration-count, infinite)';
animation-timing-function: ~'var(--@{fa-css-prefix}-animation-timing, steps(8));';
}
// if agent or operating system prefers reduced motion, disable animations
// see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/
// see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion
@media (prefers-reduced-motion: reduce) {
.@{fa-css-prefix}-beat,
.@{fa-css-prefix}-bounce,
.@{fa-css-prefix}-fade,
.@{fa-css-prefix}-beat-fade,
.@{fa-css-prefix}-flip,
.@{fa-css-prefix}-pulse,
.@{fa-css-prefix}-shake,
.@{fa-css-prefix}-spin,
.@{fa-css-prefix}-spin-pulse {
animation-delay: -1ms;
animation-duration: 1ms;
animation-iteration-count: 1;
transition-delay: 0s;
transition-duration: 0s;
}
}
@keyframes ~'@{fa-css-prefix}-beat' {
0%, 90% { transform: scale(1); }
45% { transform: ~'scale(var(--@{fa-css-prefix}-beat-scale, 1.25))'; }
}
@keyframes ~'@{fa-css-prefix}-bounce' {
0% { transform: scale(1,1) translateY(0); }
10% { transform: ~'scale(var(--@{fa-css-prefix}-bounce-start-scale-x, 1.1),var(--@{fa-css-prefix}-bounce-start-scale-y, 0.9))' translateY(0); }
30% { transform: ~'scale(var(--@{fa-css-prefix}-bounce-jump-scale-x, 0.9),var(--@{fa-css-prefix}-bounce-jump-scale-y, 1.1))' ~'translateY(var(--@{fa-css-prefix}-bounce-height, -0.5em))'; }
50% { transform: ~'scale(var(--@{fa-css-prefix}-bounce-land-scale-x, 1.05),var(--@{fa-css-prefix}-bounce-land-scale-y, 0.95))' translateY(0); }
57% { transform: ~'scale(1,1) translateY(var(--@{fa-css-prefix}-bounce-rebound, -0.125em))'; }
64% { transform: scale(1,1) translateY(0); }
100% { transform: scale(1,1) translateY(0); }
}
@keyframes ~'@{fa-css-prefix}-fade' {
50% { opacity: ~'var(--@{fa-css-prefix}-fade-opacity, 0.4)'; }
}
@keyframes ~'@{fa-css-prefix}-beat-fade' {
0%, 100% {
opacity: ~'var(--@{fa-css-prefix}-beat-fade-opacity, 0.4)';
transform: scale(1);
}
50% {
opacity: 1;
transform: ~'scale(var(--@{fa-css-prefix}-beat-fade-scale, 1.125))';
}
}
@keyframes ~'@{fa-css-prefix}-flip' {
50% {
transform: ~'rotate3d(var(--@{fa-css-prefix}-flip-x, 0), var(--@{fa-css-prefix}-flip-y, 1), var(--@{fa-css-prefix}-flip-z, 0), var(--@{fa-css-prefix}-flip-angle, -180deg))';
}
}
@keyframes ~'@{fa-css-prefix}-shake' {
0% { transform: rotate(-15deg); }
4% { transform: rotate(15deg); }
8%, 24% { transform: rotate(-18deg); }
12%, 28% { transform: rotate(18deg); }
16% { transform: rotate(-22deg); }
20% { transform: rotate(22deg); }
32% { transform: rotate(-12deg); }
36% { transform: rotate(12deg); }
40%, 100% { transform: rotate(0deg); }
}
@keyframes ~'@{fa-css-prefix}-spin' {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

@ -1,20 +0,0 @@
// bordered + pulled icons
// -------------------------
.@{fa-css-prefix}-border {
border-color: ~'var(--@{fa-css-prefix}-border-color, @{fa-border-color})';
border-radius: ~'var(--@{fa-css-prefix}-border-radius, @{fa-border-radius})';
border-style: ~'var(--@{fa-css-prefix}-border-style, @{fa-border-style})';
border-width: ~'var(--@{fa-css-prefix}-border-width, @{fa-border-width})';
padding: ~'var(--@{fa-css-prefix}-border-padding, @{fa-border-padding})';
}
.@{fa-css-prefix}-pull-left {
float: left;
margin-right: ~'var(--@{fa-css-prefix}-pull-margin, @{fa-pull-margin})';
}
.@{fa-css-prefix}-pull-right {
float: right;
margin-left: ~'var(--@{fa-css-prefix}-pull-margin, @{fa-pull-margin})';
}

@ -1,36 +0,0 @@
// base icon class definition
// -------------------------
.@{fa-css-prefix} {
font-family: ~"var(--@{fa-css-prefix}-style-family, '@{fa-style-family}')";
font-weight: ~'var(--@{fa-css-prefix}-style, @{fa-style})';
}
.@{fa-css-prefix}-solid,
.@{fa-css-prefix}-regular,
.@{fa-css-prefix}-brands,
.fas,
.far,
.fab,
.@{fa-css-prefix} {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: ~'var(--@{fa-css-prefix}-display, @{fa-display})';
font-style: normal;
font-variant: normal;
text-rendering: auto;
}
.fas,
.@{fa-css-prefix}-classic,
.@{fa-css-prefix}-solid,
.far,
.@{fa-css-prefix}-regular {
font-family: 'Font Awesome 6 Free';
}
.fab,
.@{fa-css-prefix}-brands {
font-family: 'Font Awesome 6 Brands';
}

@ -1,7 +0,0 @@
// fixed-width icons
// -------------------------
.@{fa-css-prefix}-fw {
text-align: center;
width: @fa-fw-width;
}

@ -1,9 +0,0 @@
// specific icon class definition
// -------------------------
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
each(.fa-icons(), {
.@{fa-css-prefix}-@{key}::before { content: @value; }
});

@ -1,18 +0,0 @@
// icons in a list
// -------------------------
.@{fa-css-prefix}-ul {
list-style-type: none;
margin-left: ~'var(--@{fa-css-prefix}-li-margin, @{fa-li-margin})';
padding-left: 0;
> li { position: relative; }
}
.@{fa-css-prefix}-li {
left: calc(~'var(--@{fa-css-prefix}-li-width, @{fa-li-width})' * -1);
position: absolute;
text-align: center;
width: ~'var(--@{fa-css-prefix}-li-width, @{fa-li-width})';
line-height: inherit;
}

@ -1,78 +0,0 @@
// mixins
// --------------------------
// base rendering for an icon
.fa-icon() {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
font-weight: normal;
line-height: 1;
}
// sets relative font-sizing and alignment (in _sizing)
.fa-size(@font-size) {
font-size: (@font-size / @fa-size-scale-base) * 1em; // converts step in sizing scale into an em-based value that's relative to the scale's base
line-height: (1 / @font-size) * 1em; // sets the line-height of the icon back to that of it's parent
vertical-align: ((6 / @font-size) - (3 / 8)) * 1em; // vertically centers the icon taking into account the surrounding text's descender
}
// only display content to screen readers
// see: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/
// see: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/
.fa-sr-only() {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
// use in conjunction with .sr-only to only display content when it's focused
.fa-sr-only-focusable() {
&:not(:focus) {
.fa-sr-only();
}
}
// sets a specific icon family to use alongside style + icon mixins
.fa-family-classic() {
font-family: 'Font Awesome 6 Free';
}
// convenience mixins for declaring pseudo-elements by CSS variable,
// including all style-specific font properties, and both the ::before
// and ::after elements in the duotone case.
.fa-icon-solid(@fa-var) {
.fa-icon;
.fa-solid;
&::before {
content: @fa-var;
}
}
.fa-icon-regular(@fa-var) {
.fa-icon;
.fa-regular;
&::before {
content: @fa-var;
}
}
.fa-icon-brands(@fa-var) {
.fa-icon;
.fa-brands;
&::before {
content: @fa-var;
}
}

@ -1,31 +0,0 @@
// rotating + flipping icons
// -------------------------
.@{fa-css-prefix}-rotate-90 {
transform: rotate(90deg);
}
.@{fa-css-prefix}-rotate-180 {
transform: rotate(180deg);
}
.@{fa-css-prefix}-rotate-270 {
transform: rotate(270deg);
}
.@{fa-css-prefix}-flip-horizontal {
transform: scale(-1, 1);
}
.@{fa-css-prefix}-flip-vertical {
transform: scale(1, -1);
}
.@{fa-css-prefix}-flip-both,
.@{fa-css-prefix}-flip-horizontal.@{fa-css-prefix}-flip-vertical {
transform: scale(-1, -1);
}
.@{fa-css-prefix}-rotate-by {
transform: rotate(~'var(--@{fa-css-prefix}-rotate-angle, 0)');
}

@ -1,14 +0,0 @@
// screen-reader utilities
// -------------------------
// only display content to screen readers
.sr-only,
.@{fa-css-prefix}-sr-only {
.fa-sr-only();
}
// use in conjunction with .sr-only to only display content when it's focused
.sr-only-focusable,
.@{fa-css-prefix}-sr-only-focusable {
.fa-sr-only-focusable();
}

File diff suppressed because it is too large Load Diff

@ -1,19 +0,0 @@
// sizing icons
// -------------------------
// literal magnification scale
.sizes-literal(@factor) when (@factor > 0) {
.sizes-literal((@factor - 1));
.@{fa-css-prefix}-@{factor}x {
font-size: (@factor * 1em);
}
}
.sizes-literal(10);
// step-based scale (with alignment)
each(.fa-sizes(), {
.@{fa-css-prefix}-@{key} {
.fa-size(@value);
}
});

@ -1,31 +0,0 @@
// stacking icons
// -------------------------
.@{fa-css-prefix}-stack {
display: inline-block;
height: 2em;
line-height: 2em;
position: relative;
vertical-align: @fa-stack-vertical-align;
width: @fa-stack-width;
}
.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
left: 0;
position: absolute;
text-align: center;
width: 100%;
z-index: ~'var(--@{fa-css-prefix}-stack-z-index, @{fa-stack-z-index})';
}
.@{fa-css-prefix}-stack-1x {
line-height: inherit;
}
.@{fa-css-prefix}-stack-2x {
font-size: 2em;
}
.@{fa-css-prefix}-inverse {
color: ~'var(--@{fa-css-prefix}-inverse, @{fa-inverse})';
}

File diff suppressed because it is too large Load Diff

@ -1,29 +0,0 @@
/*!
* Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2024 Fonticons, Inc.
*/
@import "_variables.less";
:root, :host {
--@{fa-css-prefix}-style-family-brands: 'Font Awesome 6 Brands';
--@{fa-css-prefix}-font-brands: normal 400 1em/1 'Font Awesome 6 Brands';
}
@font-face {
font-family: 'Font Awesome 6 Brands';
font-style: normal;
font-weight: 400;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-brands-400.woff2') format('woff2'),
url('@{fa-font-path}/fa-brands-400.ttf') format('truetype');
}
.fab,
.@{fa-css-prefix}-brands {
font-weight: 400;
}
each(.fa-brand-icons(), {
.@{fa-css-prefix}-@{key}:before { content: @value; }
});

@ -1,20 +0,0 @@
/*!
* Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2024 Fonticons, Inc.
*/
// Font Awesome core compile (Web Fonts-based)
// -------------------------
@import "_variables.less";
@import "_mixins.less";
@import "_core.less";
@import "_sizing.less";
@import "_fixed-width.less";
@import "_list.less";
@import "_bordered-pulled.less";
@import "_animated.less";
@import "_rotated-flipped.less";
@import "_stacked.less";
@import "_icons.less";
@import "_screen-reader.less";

@ -1,25 +0,0 @@
/*!
* Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2024 Fonticons, Inc.
*/
@import "_variables.less";
:root, :host {
--@{fa-css-prefix}-style-family-classic: '@{fa-style-family}';
--@{fa-css-prefix}-font-regular: normal 400 1em/1 '@{fa-style-family}';
}
@font-face {
font-family: 'Font Awesome 6 Free';
font-style: normal;
font-weight: 400;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-regular-400.woff2') format('woff2'),
url('@{fa-font-path}/fa-regular-400.ttf') format('truetype');
}
.far,
.@{fa-css-prefix}-regular {
font-weight: 400;
}

@ -1,25 +0,0 @@
/*!
* Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2024 Fonticons, Inc.
*/
@import "_variables.less";
:root, :host {
--@{fa-css-prefix}-style-family-classic: '@{fa-style-family}';
--@{fa-css-prefix}-font-solid: normal 900 1em/1 '@{fa-style-family}';
}
@font-face {
font-family: 'Font Awesome 6 Free';
font-style: normal;
font-weight: 900;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-solid-900.woff2') format('woff2'),
url('@{fa-font-path}/fa-solid-900.ttf') format('truetype');
}
.fas,
.@{fa-css-prefix}-solid {
font-weight: 900;
}

@ -1,10 +0,0 @@
/*!
* Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2024 Fonticons, Inc.
*/
// V4 shims compile (Web Fonts-based)
// -------------------------
@import '_variables.less';
@import '_shims.less';

@ -0,0 +1,198 @@
/* RTL mode */
.pe-0 {
padding-left: 0 !important
}
.pe-1 {
padding-left: .25rem !important
}
.pe-2 {
padding-left: .5rem !important
}
.pe-3 {
padding-left: 1rem !important
}
.pe-4 {
padding-left: 1.5rem !important
}
.pe-5 {
padding-left: 2rem !important
}
.pe-6 {
padding-left: 3rem !important
}
.pe-7 {
padding-left: 5rem !important
}
.pe-8 {
padding-left: 8rem !important
}
.ps-0 {
padding-right: 0 !important
}
.ps-1 {
padding-right: .25rem !important
}
.ps-2 {
padding-right: .5rem !important
}
.ps-3 {
padding-right: 1rem !important
}
.ps-4 {
padding-right: 1.5rem !important
}
.ps-5 {
padding-right: 2rem !important
}
.ps-6 {
padding-right: 3rem !important
}
.pe-7 {
padding-right: 5rem !important
}
.pe-8 {
padding-right: 8rem !important
}
.me-0 {
margin-left: 0 !important;
margin-right: 0 !important;
}
.me-1 {
margin-left: .25rem !important;
margin-right: 0 !important;
}
.me-2 {
margin-left: .5rem !important;
margin-right: 0 !important;
}
.me-3 {
margin-left: 1rem !important;
margin-right: 0 !important;
}
.me-4 {
margin-left: 1.5rem !important;
margin-right: 0 !important;
}
.me-5 {
margin-left: 2rem !important;
margin-right: 0 !important;
}
.me-6 {
margin-left: 3rem !important;
margin-right: 0 !important;
}
.me-7 {
margin-left: 5rem !important;
margin-right: 0 !important;
}
.me-8 {
margin-left: 8rem !important;
margin-right: 0 !important;
}
.ms-0 {
margin-right: 0 !important;
margin-left: 0 !important;
}
.ms-1 {
margin-right: .25rem !important;
margin-left: 0 !important;
}
.ms-2 {
margin-right: .5rem !important;
margin-left: 0 !important;
}
.ms-3 {
margin-right: 1rem !important;
margin-left: 0 !important;
}
.ms-4 {
margin-right: 1.5rem !important;
margin-left: 0 !important;
}
.ms-5 {
margin-right: 2rem !important;
margin-left: 0 !important;
}
.ms-6 {
margin-right: 3rem !important;
margin-left: 0 !important;
}
.ms-7 {
margin-right: 5rem !important;
margin-left: 0 !important;
}
.ms-8 {
margin-right: 8rem !important;
margin-left: 0 !important;
}
.breadcrumb {
direction: ltr;
}
.btn-group>.btn-group:not(:last-child)>.btn, .btn-group>.btn.dropdown-toggle-split:first-child, .btn-group>.btn:not(:last-child):not(.dropdown-toggle){
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group>.btn-group:not(:first-child)>.btn, .btn-group>.btn:nth-child(n+3), .btn-group>:not(.btn-check)+.btn{
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
body {
font-family: IRANSans, sans-serif;
}
h6.dropdown-header {
text-align: right;
}
aside li.nav-item a.nav-link i, aside div.dropdown-menu a.dropdown-item i, header.top div ul.navbar-nav li.nav-item a.nav-link i, header.top div.dropdown-menu a.dropdown-item i {
margin-right: 0;
margin-left: 7px;
}
.navbar-collapse .dropdown-toggle:after, a.actions-buttons-column:after {
margin-left: 0;
margin-right: 3px;
}

@ -10,69 +10,69 @@
--------------------------------------------------------------------------------------
فونت های ایران سن سریف یک نرم افزار مالکیتی محسوب می شود. جهت آگاهی از قوانین استفاده از این فونت ها لطفا به وب سایت (فونت ایران دات کام) مراجعه نمایید
--------------------------------------------------------------------------------------
IRAN Sans-serif fonts are considered a proprietary software. To gain information about the laws regarding the use of these fonts, please visit www.fontiran.com
IRAN Sans-serif fonts are considered a proprietary software. To gain information about the laws regarding the use of these fonts, please visit www.fontiran.com
--------------------------------------------------------------------------------------
This set of fonts are used in this project under the license: (.....)
--------------------------------------------------------------------------------------
*
*
**/
@font-face {
font-family: IRANSans;
font-style: normal;
font-weight: 900;
src: url('../fonts/eot/IRANSansWeb_Black.eot');
src: url('../fonts/eot/IRANSansWeb_Black.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('../fonts/woff2/IRANSansWeb_Black.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('../fonts/woff/IRANSansWeb_Black.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('../fonts/ttf/IRANSansWeb_Black.ttf') format('truetype');
src: url('/fonts/eot/IRANSansWeb_Black.eot');
src: url('/fonts/eot/IRANSansWeb_Black.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('/fonts/woff2/IRANSansWeb_Black.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('/fonts/woff/IRANSansWeb_Black.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('/fonts/ttf/IRANSansWeb_Black.ttf') format('truetype');
}
@font-face {
font-family: IRANSans;
font-style: normal;
font-weight: bold;
src: url('../fonts/eot/IRANSansWeb_Bold.eot');
src: url('../fonts/eot/IRANSansWeb_Bold.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('../fonts/woff2/IRANSansWeb_Bold.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('../fonts/woff/IRANSansWeb_Bold.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('../fonts/ttf/IRANSansWeb_Bold.ttf') format('truetype');
src: url('/fonts/eot/IRANSansWeb_Bold.eot');
src: url('/fonts/eot/IRANSansWeb_Bold.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('/fonts/woff2/IRANSansWeb_Bold.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('/fonts/woff/IRANSansWeb_Bold.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('/fonts/ttf/IRANSansWeb_Bold.ttf') format('truetype');
}
@font-face {
font-family: IRANSans;
font-style: normal;
font-weight: 500;
src: url('../fonts/eot/IRANSansWeb_Medium.eot');
src: url('../fonts/eot/IRANSansWeb_Medium.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('../fonts/woff2/IRANSansWeb_Medium.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('../fonts/woff/IRANSansWeb_Medium.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('../fonts/ttf/IRANSansWeb_Medium.ttf') format('truetype');
src: url('/fonts/eot/IRANSansWeb_Medium.eot');
src: url('/fonts/eot/IRANSansWeb_Medium.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('/fonts/woff2/IRANSansWeb_Medium.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('/fonts/woff/IRANSansWeb_Medium.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('/fonts/ttf/IRANSansWeb_Medium.ttf') format('truetype');
}
@font-face {
font-family: IRANSans;
font-style: normal;
font-weight: 300;
src: url('../fonts/eot/IRANSansWeb_Light.eot');
src: url('../fonts/eot/IRANSansWeb_Light.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('../fonts/woff2/IRANSansWeb_Light.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('../fonts/woff/IRANSansWeb_Light.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('../fonts/ttf/IRANSansWeb_Light.ttf') format('truetype');
src: url('/fonts/eot/IRANSansWeb_Light.eot');
src: url('/fonts/eot/IRANSansWeb_Light.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('/fonts/woff2/IRANSansWeb_Light.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('/fonts/woff/IRANSansWeb_Light.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('/fonts/ttf/IRANSansWeb_Light.ttf') format('truetype');
}
@font-face {
font-family: IRANSans;
font-style: normal;
font-weight: 200;
src: url('../fonts/eot/IRANSansWeb_UltraLight.eot');
src: url('../fonts/eot/IRANSansWeb_UltraLight.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('../fonts/woff2/IRANSansWeb_UltraLight.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('../fonts/woff/IRANSansWeb_UltraLight.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('../fonts/ttf/IRANSansWeb_UltraLight.ttf') format('truetype');
src: url('/fonts/eot/IRANSansWeb_UltraLight.eot');
src: url('/fonts/eot/IRANSansWeb_UltraLight.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('/fonts/woff2/IRANSansWeb_UltraLight.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('/fonts/woff/IRANSansWeb_UltraLight.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('/fonts/ttf/IRANSansWeb_UltraLight.ttf') format('truetype');
}
@font-face {
font-family: IRANSans;
font-style: normal;
font-weight: normal;
src: url('../fonts/eot/IRANSansWeb.eot');
src: url('../fonts/eot/IRANSansWeb.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('../fonts/woff2/IRANSansWeb.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('../fonts/woff/IRANSansWeb.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('../fonts/ttf/IRANSansWeb.ttf') format('truetype');
src: url('/fonts/eot/IRANSansWeb.eot');
src: url('/fonts/eot/IRANSansWeb.eot?#iefix') format('embedded-opentype'), /* IE6-8 */
url('/fonts/woff2/IRANSansWeb.woff2') format('woff2'), /* FF39+,Chrome36+, Opera24+*/
url('/fonts/woff/IRANSansWeb.woff') format('woff'), /* FF3.6+, IE9, Chrome6+, Saf5.1+*/
url('/fonts/ttf/IRANSansWeb.ttf') format('truetype');
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.2 KiB

@ -0,0 +1,3 @@
body{
width: 100px !important;
}

@ -116,31 +116,33 @@
<body>
<header class="container-fluid bg-dark">
<div class="row text-center py-4">
<img src="https://cdn.snappfood.ir/media/cache/vendor_logo/uploads/images/vendors/logos/62f3972c217ab.png"
class="d-inline-block align-top rounded-3 m-auto img-thumbnail w-25"
alt=""
>
@if($domain->user->restaurant_logo != '')
<img src="{{'/storage/' . basset($domain->user->restaurant_logo)}}"
class="d-inline-block align-top rounded-3 m-auto img-thumbnail w-25"
alt=""
>
@endif
<h1 class="h4 text-center text-light my-4">
رزق حلال
{{$domain->user->restaurant_name}}
</h1>
<div>
<button type="button" class="btn btn-outline-info">
<a type="button" class="btn btn-outline-info" href="#">
<i class="fab fa-instagram me-2"></i>
ما را در اینستاگرام دنبال کنید
</button>
</a>
</div>
</div>
</header>
<div style="background-color: #17191b !important;">
<div style="background-color: #c2c2c2 !important;">
<div class="container category-slider-container pt-3" id='navbar-example'>
<div class="row">
<div class="owl-carousel owl-theme category-slider p-0">
@foreach($domain->user->categories as $category)
<a href="#cat-{{$category->id}}"
class="h-100 px-1 py-2 category-slide d-block text-center text-light text-decoration-none"
class="h-100 px-1 py-2 category-slide d-block text-center text-dark text-decoration-none"
style="min-width: 150px"
>
<img src="{{asset('icons/icon-burger.png')}}" class="mx-auto mb-2" style="width: 40px;">
<img src="{{$category->icon != '' ? asset("icons/{$category->icon}") : asset('icons/icon-default.png')}}" class="mx-auto mb-2" style="width: 40px;">
<h2 class="h6">{{$category->name}}</h2>
</a>
@endforeach
@ -161,7 +163,7 @@
>
@foreach($category->foods as $food)
<div class="col-md-3 position-relative mb-4">
<img src="{{asset('food.png')}}" alt="food"
<img src="{{$food->image != '' ? '/storage/' . $food->image : asset('food.png')}}" alt="food"
style="left: 0; right: 0; top: 0; width: 170px; height: 170px"
class="rounded-circle position-absolute m-auto">
<div style="height: 85px"></div>

@ -1,17 +1,19 @@
{{-- This file is used for menu items by any Backpack v6 theme --}}
<li class="nav-item"><a class="nav-link" href="{{ backpack_url('dashboard') }}"><i class="la la-home nav-icon"></i> {{ trans('backpack::base.dashboard') }}</a></li>
<li class="nav-item"><a class="nav-link" href="{{ backpack_url('dashboard') }}"><i
class="la la-home nav-icon"></i> {{ trans('backpack::base.dashboard') }}</a></li>
<x-backpack::menu-dropdown title="Add-ons" icon="la la-puzzle-piece">
<x-backpack::menu-dropdown-header title="Authentication" />
<x-backpack::menu-dropdown-item title="Users" icon="la la-user" :link="backpack_url('user')" />
<x-backpack::menu-dropdown-item title="Roles" icon="la la-group" :link="backpack_url('role')" />
<x-backpack::menu-dropdown-item title="Permissions" icon="la la-key" :link="backpack_url('permission')" />
@role('admin')
<x-backpack::menu-dropdown title="افزونه ها" icon="la la-puzzle-piece">
<x-backpack::menu-dropdown-header title="{{__('basic.authentication')}}"/>
<x-backpack::menu-dropdown-item title="{{__('entities.user.plural')}}" icon="la la-user" :link="backpack_url('user')"/>
<x-backpack::menu-dropdown-item title="{{__('entities.role.plural')}}" icon="la la-group" :link="backpack_url('role')"/>
<x-backpack::menu-dropdown-item title="{{__('entities.permission.plural')}}" icon="la la-key" :link="backpack_url('permission')"/>
</x-backpack::menu-dropdown>
<x-backpack::menu-item title="Categories" icon="la la-list" :link="backpack_url('category')" />
@endrole
<x-backpack::menu-item title="{{__('entities.category.plural')}}" icon="la la-list" :link="backpack_url('category')"/>
@role('admin')
<x-backpack::menu-item title="Domains" icon="la la-link" :link="backpack_url('domains')" />
<x-backpack::menu-item title="{{__('entities.domain.plural')}}" icon="la la-link" :link="backpack_url('domains')"/>
@endrole
<x-backpack::menu-item title="Food" icon="la la-hamburger" :link="backpack_url('food')" />
<x-backpack::menu-item title="{{__('entities.food.plural')}}" icon="la la-hamburger" :link="backpack_url('food')"/>

Loading…
Cancel
Save