Compare commits

..

No commits in common. "c4d6d382ff923c2c8c5041f45681f9722c22b050" and "746ad08402db80635ec591aebcadbb755655d7a4" have entirely different histories.

20 changed files with 279 additions and 1130 deletions

View file

@ -1,4 +1,4 @@
body, .lead { body {
font-family: "Yekan Bakh FaNum"; font-family: "Yekan Bakh FaNum";
font-feature-settings: "kern" on, "liga" on, "dlig" on; font-feature-settings: "kern" on, "liga" on, "dlig" on;
-moz-font-feature-settings: "kern" on, "liga" on, "dlig" on; -moz-font-feature-settings: "kern" on, "liga" on, "dlig" on;
@ -7,44 +7,8 @@ body, .lead {
-o-font-feature-settings: "kern" on, "liga" on, "dlig" on; -o-font-feature-settings: "kern" on, "liga" on, "dlig" on;
} }
/* استایل‌های منوی ناوبری */ a.nav-link:hover {
.navbar {
padding: 0.8rem 0;
}
.navbar-brand {
font-size: 1.4rem;
}
.nav-link {
position: relative;
color: #495057;
font-weight: 500;
transition: all 0.3s ease;
}
.nav-link:hover {
color: #1743bb; color: #1743bb;
background-color: rgba(23, 67, 187, 0.05);
}
.nav-link.active {
color: #1743bb;
background-color: rgba(23, 67, 187, 0.1);
}
.btn-primary {
transition: all 0.3s ease;
box-shadow: 0 2px 5px rgba(23, 67, 187, 0.2);
}
.btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(23, 67, 187, 0.3);
}
.transition-all {
transition: all 0.3s ease;
} }
.rul{ .rul{

View file

@ -1,38 +0,0 @@
/* public/css/login.css */
body {
direction: rtl;
text-align: right;
font-family: 'Vazir', 'Tahoma', sans-serif; /* فونت فارسی دلخواه */
}
.login-wrapper {
direction: rtl;
}
.form-group label {
text-align: right;
}
.form-control {
direction: rtl;
text-align: right;
}
.btn {
direction: rtl;
}
.checkbox label {
padding-right: 25px; /* فاصله برای چک‌باکس */
padding-left: 0;
}
.login-box {
margin-right: auto;
margin-left: auto;
}
/* تنظیمات اضافی برای المان‌های خاص */
.login-box-header h1 {
text-align: right;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

View file

@ -39,16 +39,39 @@ class DashboardController extends AbstractDashboardController
public function configureDashboard(): Dashboard public function configureDashboard(): Dashboard
{ {
return Dashboard::new() return Dashboard::new()
// you can include HTML contents too (e.g. to link to an image)
->setTitle('پیشخوان') ->setTitle('پیشخوان')
// by default EasyAdmin displays a black square as its default favicon;
// use this method to display a custom favicon: the given path is passed
// "as is" to the Twig asset() function:
// <link rel="shortcut icon" href="{{ asset('...') }}">
->setFaviconPath('favicon/favicon.ico') ->setFaviconPath('favicon/favicon.ico')
// the domain used by default is 'messages'
->setTranslationDomain('admin') ->setTranslationDomain('admin')
// set this option if you prefer the page content to span the entire
// browser width, instead of the default design which sets a max width
->renderContentMaximized() ->renderContentMaximized()
// by default, the UI color scheme is 'auto', which means that the backend
// will use the same mode (light/dark) as the operating system and will
// change in sync when the OS mode changes.
// Use this option to set which mode ('light', 'dark' or 'auto') will users see
// by default in the backend (users can change it via the color scheme selector)
->setDefaultColorScheme('dark') ->setDefaultColorScheme('dark')
// instead of magic strings, you can use constants as the value of
// this option: EasyCorp\Bundle\EasyAdminBundle\Config\Option\ColorScheme::DARK
// by default, all backend URLs are generated as absolute URLs. If you
// need to generate relative URLs instead, call this method
->generateRelativeUrls() ->generateRelativeUrls()
->setLocales([
'fa' => Locale::new('fa', 'فارسی', 'fa_IR'), // زبان پیش‌فرض ->setLocales(['en','fa'])
'en' => Locale::new('en', 'English', 'en_US'), // to further customize the locale option, pass an instance of
]); // EasyCorp\Bundle\EasyAdminBundle\Config\Locale
;
} }
public function configureMenuItems(): iterable public function configureMenuItems(): iterable

View file

@ -5,14 +5,15 @@ namespace App\Controller\Admin;
use App\Entity\Cat; use App\Entity\Cat;
use App\Entity\Post; use App\Entity\Post;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud; use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Config\Filters;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController; use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField; use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
use EasyCorp\Bundle\EasyAdminBundle\Field\BooleanField;
use EasyCorp\Bundle\EasyAdminBundle\Field\CodeEditorField;
use EasyCorp\Bundle\EasyAdminBundle\Field\IdField;
use EasyCorp\Bundle\EasyAdminBundle\Field\ImageField; use EasyCorp\Bundle\EasyAdminBundle\Field\ImageField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextareaField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextareaField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use EasyCorp\Bundle\EasyAdminBundle\Filter\EntityFilter;
class PostCrudController extends AbstractCrudController class PostCrudController extends AbstractCrudController
{ {
@ -31,25 +32,21 @@ class PostCrudController extends AbstractCrudController
TextField::new('title', 'عنوان'), TextField::new('title', 'عنوان'),
TextareaField::new('intro', 'خلاصه مطلب')->hideOnIndex(), TextareaField::new('intro', 'خلاصه مطلب')->hideOnIndex(),
TextEditorField::new('body', 'متن')->hideOnIndex(), TextEditorField::new('body', 'متن')->hideOnIndex(),
CodeEditorField::new('plain', 'ساختار')->hideOnIndex(),
TextField::new('keywords', 'کلیدواژه‌ها'), TextField::new('keywords', 'کلیدواژه‌ها'),
ImageField::new('mainPic','تصویر شاخص') ImageField::new('mainPic','تصویر شاخص')
->setUploadDir('/public/uploaded/') ->setUploadDir('/public/uploaded/')
->setBasePath('/uploaded/'), ->setBasePath('/uploaded/')
]; ];
} }
public function configureCrud(Crud $crud): Crud public function configureCrud(Crud $crud): Crud
{ {
return $crud return $crud
// the labels used to refer to this entity in titles, buttons, etc.
->setEntityLabelInSingular('محتوا') ->setEntityLabelInSingular('محتوا')
->setEntityLabelInPlural('محتواها') ->setEntityLabelInPlural('محتواها')
->setDefaultSort(['dateSubmit' => 'DESC']); // مرتب‌سازی پیش‌فرض بر اساس تاریخ ارسال (جدیدترین) ;
}
public function configureFilters(Filters $filters): Filters
{
return $filters
->add(EntityFilter::new('cat', 'نوع محتوا')); // فیلتر برای نوع محتوا
} }
public function createEntity(string $entityFqcn) public function createEntity(string $entityFqcn)
@ -60,4 +57,5 @@ class PostCrudController extends AbstractCrudController
$item->setViews(0); $item->setViews(0);
return $item; return $item;
} }
} }

View file

@ -29,12 +29,4 @@ class GeneralController extends AbstractController
'posts' => $posts 'posts' => $posts
], $response); ], $response);
} }
#[Route('/reviews', name: 'app_reviews')]
public function app_reviews(EntityManagerInterface $em): Response
{
return $this->render('reviews/reviews.html.twig', [
'posts' => $em->getRepository(Post::class)->findBycat('blog', 3)
]);
}
} }

View file

@ -9,8 +9,6 @@ use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\HttpFoundation\Request;
class PageController extends AbstractController class PageController extends AbstractController
{ {
@ -25,48 +23,26 @@ class PageController extends AbstractController
]); ]);
} }
#[Route('/blog/{page}', name: 'app_blog_home', defaults: ['page' => 1])] #[Route('/blog/{page}', name: 'app_blog_home')]
public function app_blog_home(EntityManagerInterface $entityManagerInterface, Request $request, $page = 1): Response public function app_blog_home(EntityManagerInterface $entityManagerInterface, $page = 1): Response
{ {
$perpage = 9; $perpage = 6;
$search = $request->query->get('search', ''); // پارامتر جستجو از URL $posts = $entityManagerInterface->getRepository(Post::class)->findByCat('blog',$perpage,$page);
$cat = $entityManagerInterface->getRepository(Cat::class)->findOneBy(['code'=>'blog']);
$postRepository = $entityManagerInterface->getRepository(Post::class); $count = $entityManagerInterface->getRepository(Post::class)->count(['cat'=>$cat]);
$catRepository = $entityManagerInterface->getRepository(Cat::class); if(fmod($count,$perpage) == 0){
$maxpages = $count/$perpage;
// پیدا کردن دسته‌بندی "blog"
$cat = $catRepository->findOneBy(['code' => 'blog']);
// گرفتن پست‌ها با فیلتر جستجو
$queryBuilder = $postRepository->createQueryBuilder('p')
->where('p.cat = :cat')
->setParameter('cat', $cat)
->orderBy('p.dateSubmit', 'DESC'); // مرتب‌سازی بر اساس جدیدترین
if ($search) {
$queryBuilder->andWhere('p.title LIKE :search OR p.intro LIKE :search')
->setParameter('search', "%$search%");
} }
else{
$count = count($queryBuilder->getQuery()->getResult()); $maxpages = ($count/$perpage) + 1;
$maxpages = ceil($count / $perpage); // محاسبه حداکثر صفحات }
$maxpages = $count / $perpage;
$posts = $queryBuilder->setMaxResults($perpage)
->setFirstResult(($page - 1) * $perpage)
->getQuery()
->getResult();
// گرفتن همه دسته‌بندی‌ها برای سایدبار
$categories = $catRepository->findAll();
return $this->render('post/blog_home.html.twig', [ return $this->render('post/blog_home.html.twig', [
'posts' => $posts, 'posts' => $posts,
'page' => $page, 'page' => $page,
'perpage'=> $perpage, 'perpage'=> $perpage,
'count' => $count, 'count' => $count,
'maxpages' => $maxpages, 'maxpages' => $maxpages
'categories' => $categories,
'search' => $search,
]); ]);
} }

View file

@ -26,7 +26,7 @@ class RedirectController extends AbstractController
return $this->redirect("https://api.hesabix.ir/st/" . $params); return $this->redirect("https://api.hesabix.ir/st/" . $params);
} }
#[Route('/sl/{params}', name: 'app_redirect_sell', requirements: ['params' => '.+'])] #[Route('/st/{params}', name: 'app_redirect_sell', requirements: ['params' => '.+'])]
public function app_redirect_sell($params): Response public function app_redirect_sell($params): Response
{ {
return $this->redirect("https://api.hesabix.ir/sl/" . $params); return $this->redirect("https://api.hesabix.ir/sl/" . $params);

View file

@ -14,19 +14,55 @@ class SecurityController extends AbstractController
$error = $authenticationUtils->getLastAuthenticationError(); $error = $authenticationUtils->getLastAuthenticationError();
$lastUsername = $authenticationUtils->getLastUsername(); $lastUsername = $authenticationUtils->getLastUsername();
return $this->render('/admin/login.html.twig', [ return $this->render('@EasyAdmin/page/login.html.twig', [
// parameters usually defined in Symfony login forms
'error' => $error, 'error' => $error,
'last_username' => $lastUsername, 'last_username' => $lastUsername,
// OPTIONAL parameters to customize the login form:
// the translation_domain to use (define this option only if you are
// rendering the login template in a regular Symfony controller; when
// rendering it from an EasyAdmin Dashboard this is automatically set to
// the same domain as the rest of the Dashboard)
'translation_domain' => 'admin', 'translation_domain' => 'admin',
// by default EasyAdmin displays a black square as its default favicon;
// use this method to display a custom favicon: the given path is passed
// "as is" to the Twig asset() function:
//
// the title visible above the login form (define this option only if you are
// rendering the login template in a regular Symfony controller; when rendering
// it from an EasyAdmin Dashboard this is automatically set as the Dashboard title)
'page_title' => 'ورود', 'page_title' => 'ورود',
// the string used to generate the CSRF token. If you don't define
// this parameter, the login form won't include a CSRF token
'csrf_token_intention' => 'authenticate', 'csrf_token_intention' => 'authenticate',
'target_path' => $this->generateUrl('admin', ['_locale' => 'fa']),
// the URL users are redirected to after the login (default: '/admin')
'target_path' => $this->generateUrl('admin'),
// the label displayed for the username form field (the |trans filter is applied to it)
'username_label' => 'پست الکترونیکی', 'username_label' => 'پست الکترونیکی',
// the label displayed for the password form field (the |trans filter is applied to it)
'password_label' => 'کلمه عبور', 'password_label' => 'کلمه عبور',
// the label displayed for the Sign In form button (the |trans filter is applied to it)
'sign_in_label' => 'ورود', 'sign_in_label' => 'ورود',
// whether to enable or not the "forgot password?" link (default: false)
'forgot_password_enabled' => false, 'forgot_password_enabled' => false,
// whether to enable or not the "remember me" checkbox (default: false)
'remember_me_enabled' => true, 'remember_me_enabled' => true,
// whether to check by default the "remember me" checkbox (default: false)
'remember_me_checked' => true, 'remember_me_checked' => true,
// the label displayed for the remember me checkbox (the |trans filter is applied to it)
'remember_me_label' => 'مرا به یاد داشته باش', 'remember_me_label' => 'مرا به یاد داشته باش',
]); ]);
} }

View file

@ -8,12 +8,9 @@ use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types; use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\UX\Turbo\Attribute\Broadcast; use Symfony\UX\Turbo\Attribute\Broadcast;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
#[ORM\Entity(repositoryClass: PostRepository::class)] #[ORM\Entity(repositoryClass: PostRepository::class)]
#[Broadcast] #[Broadcast]
#[UniqueEntity(fields: ['url'], message: 'این URL قبلاً استفاده شده است.')]
class Post class Post
{ {
#[ORM\Id] #[ORM\Id]
@ -37,8 +34,7 @@ class Post
#[ORM\Column(nullable: true)] #[ORM\Column(nullable: true)]
private ?bool $publish = null; private ?bool $publish = null;
#[ORM\Column(length: 255, nullable: true, unique: true)] #[ORM\Column(length: 255, nullable: true)]
#[Assert\NotBlank(message: 'URL نمی‌تواند خالی باشد', allowNull: false)]
private ?string $url = null; private ?string $url = null;
#[ORM\Column(length: 255, nullable: true)] #[ORM\Column(length: 255, nullable: true)]
@ -97,6 +93,7 @@ class Post
public function setTitle(?string $title): static public function setTitle(?string $title): static
{ {
$this->title = $title; $this->title = $title;
return $this; return $this;
} }
@ -108,6 +105,7 @@ class Post
public function setSubmitter(?User $submitter): static public function setSubmitter(?User $submitter): static
{ {
$this->submitter = $submitter; $this->submitter = $submitter;
return $this; return $this;
} }
@ -119,6 +117,7 @@ class Post
public function setBody(?string $body): static public function setBody(?string $body): static
{ {
$this->body = $body; $this->body = $body;
return $this; return $this;
} }
@ -130,6 +129,7 @@ class Post
public function setDateSubmit(string $dateSubmit): static public function setDateSubmit(string $dateSubmit): static
{ {
$this->dateSubmit = $dateSubmit; $this->dateSubmit = $dateSubmit;
return $this; return $this;
} }
@ -141,6 +141,7 @@ class Post
public function setPublish(?bool $publish): static public function setPublish(?bool $publish): static
{ {
$this->publish = $publish; $this->publish = $publish;
return $this; return $this;
} }
@ -152,6 +153,7 @@ class Post
public function setUrl(?string $url): static public function setUrl(?string $url): static
{ {
$this->url = $url; $this->url = $url;
return $this; return $this;
} }
@ -163,6 +165,7 @@ class Post
public function setMainPic(?string $mainPic): static public function setMainPic(?string $mainPic): static
{ {
$this->mainPic = $mainPic; $this->mainPic = $mainPic;
return $this; return $this;
} }
@ -174,6 +177,7 @@ class Post
public function setPlain(?string $plain): static public function setPlain(?string $plain): static
{ {
$this->plain = $plain; $this->plain = $plain;
return $this; return $this;
} }
@ -185,6 +189,7 @@ class Post
public function setVersion(?string $version): static public function setVersion(?string $version): static
{ {
$this->version = $version; $this->version = $version;
return $this; return $this;
} }
@ -196,6 +201,7 @@ class Post
public function setKeywords(?string $keywords): static public function setKeywords(?string $keywords): static
{ {
$this->keywords = $keywords; $this->keywords = $keywords;
return $this; return $this;
} }
@ -207,6 +213,7 @@ class Post
public function setSort(?string $sort): static public function setSort(?string $sort): static
{ {
$this->sort = $sort; $this->sort = $sort;
return $this; return $this;
} }
@ -218,6 +225,7 @@ class Post
public function setCat(?Cat $cat): static public function setCat(?Cat $cat): static
{ {
$this->cat = $cat; $this->cat = $cat;
return $this; return $this;
} }
@ -234,12 +242,14 @@ class Post
if (!$this->tree->contains($tree)) { if (!$this->tree->contains($tree)) {
$this->tree->add($tree); $this->tree->add($tree);
} }
return $this; return $this;
} }
public function removeTree(Tree $tree): static public function removeTree(Tree $tree): static
{ {
$this->tree->removeElement($tree); $this->tree->removeElement($tree);
return $this; return $this;
} }
@ -257,16 +267,19 @@ class Post
$this->comments->add($comment); $this->comments->add($comment);
$comment->setPost($this); $comment->setPost($this);
} }
return $this; return $this;
} }
public function removeComment(Comment $comment): static public function removeComment(Comment $comment): static
{ {
if ($this->comments->removeElement($comment)) { if ($this->comments->removeElement($comment)) {
// set the owning side to null (unless already changed)
if ($comment->getPost() === $this) { if ($comment->getPost() === $this) {
$comment->setPost(null); $comment->setPost(null);
} }
} }
return $this; return $this;
} }
@ -278,6 +291,7 @@ class Post
public function setIntro(?string $intro): static public function setIntro(?string $intro): static
{ {
$this->intro = $intro; $this->intro = $intro;
return $this; return $this;
} }
@ -289,6 +303,7 @@ class Post
public function setViews(?string $views): static public function setViews(?string $views): static
{ {
$this->views = $views; $this->views = $views;
return $this; return $this;
} }
} }

View file

@ -1,7 +0,0 @@
{# templates/easy_admin/page/login.html.twig #}
{% extends '@!EasyAdmin/page/login.html.twig' %}
{% block head %}
{{ parent() }}
<link rel="stylesheet" href="/css/login.css">
{% endblock %}

View file

@ -5,15 +5,12 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta lang="fa"> <meta lang="fa">
<meta <meta content="width=device-width,initial-scale=1.0" name="viewport"/>
content="width=device-width,initial-scale=1.0" name="viewport"/>
<!-- Google tag (gtag.js) --> <!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-K1R1SYQY8E"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-K1R1SYQY8E"></script>
<script> <script>
window.dataLayer = window.dataLayer || []; window.dataLayer = window.dataLayer || [];
function gtag() { function gtag(){dataLayer.push(arguments);}
dataLayer.push(arguments);
}
gtag('js', new Date()); gtag('js', new Date());
gtag('config', 'G-K1R1SYQY8E'); gtag('config', 'G-K1R1SYQY8E');
@ -44,59 +41,46 @@ gtag('config', 'G-K1R1SYQY8E');
{% endblock %} {% endblock %}
</head> </head>
<body> <body>
<nav class="navbar navbar-expand-lg border-bottom bg-body-tertiary shadow-sm"> <nav class="navbar navbar-expand-lg border-bottom bg-body-tertiary">
<div class="container"> <div class="container-fluid">
<a class="navbar-brand text-primary d-flex align-items-center gap-2" href="{{path('app_home')}}"> <a class="navbar-brand text-primary" href="{{path('app_home')}}">
<img src="{{asset('/favicon/favicon.svg')}}" alt="نرم افزار حسابداری آنلاین حسابیکس" width="30" height="30"> <img src="{{asset('/favicon/favicon.svg')}}" alt="نرم افزار حسابداری آنلاین حسابیکس" width="30" height="30">
<span class="">حسابیکس</span> حسابیکس
</a> </a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<div class="collapse navbar-collapse" id="navbarSupportedContent"> <div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ms-auto mb-2 mb-lg-0"> <ul class="navbar-nav">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link px-3 py-2 rounded-3 transition-all" href="{{path('app_home')}}">صفحه نخست</a> <a class="nav-link" href="{{path('app_home')}}">صفحه نخست</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link px-3 py-2 rounded-3 transition-all" href="{{path('app_guide')}}">راهنمای جامع</a> <a class="nav-link" href="{{path('app_guide')}}">راهنمای جامع</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link px-3 py-2 rounded-3 transition-all" href="{{path('app_blog_home')}}">وبلاگ</a> <a class="nav-link" href="{{path('app_blog_home')}}">وبلاگ</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link px-3 py-2 rounded-3 transition-all" href="{{path('app_page',{'url':'sponsors'})}}">حامیان مالی</a> <a class="nav-link" href="{{path('app_page',{'url':'sponsors'})}}">حامیان مالی</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link px-3 py-2 rounded-3 transition-all" href="{{path('app_page',{'url':'about'})}}">داستان حسابیکس</a> <a class="nav-link" href="{{path('app_page',{'url':'about'})}}">داستان حسابیکس</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link px-3 py-2 rounded-3 transition-all" href="{{path('app_page',{'url':'contact'})}}">تماس با ما</a> <a class="nav-link" href="{{path('app_page',{'url':'contact'})}}">تماس با ما</a>
</li> </li>
</ul> </ul>
<div class="d-flex"> <span class="d-flex flex-fill justify-content-end">
<a target="_blank" class="btn btn-primary rounded-4 px-4 py-2 fw-bold transition-all" href="https://app.hesabix.ir"> <a target="_blank" class="btn btn-sm btn-primary rounded-4" href="https://app.hesabix.ir">ورود / عضویت</a>
ورود / عضویت </span>
</a>
</div>
</div> </div>
</div> </div>
</nav> </nav>
{% block body %}{% endblock %} {% block body %}{% endblock %}
<footer class="py-3 my-4"> <footer class="py-3 my-4">
<div class="d-flex justify-content-center align-items-center gap-3 mb-3">
<a referrerpolicy='origin' target='_blank' href='https://trustseal.enamad.ir/?id=614357&Code=4ATiNTREoPRD5Lz3zwc9zyz0zWGJiZL3'><img referrerpolicy='origin' src='https://trustseal.enamad.ir/logo.aspx?id=614357&Code=4ATiNTREoPRD5Lz3zwc9zyz0zWGJiZL3' alt='' style='cursor:pointer' code='4ATiNTREoPRD5Lz3zwc9zyz0zWGJiZL3'></a>
<script src="https://www.zarinpal.com/webservice/TrustCode" type="text/javascript"></script>
<a href="https://bitpay.ir/certificate-230498-hesabix.ir" target="_blank"><img src="https://bitpay.ir/theme/public/images/trusted-logo.svg"/></a>
<img referrerpolicy='origin' id='rgvjoeukesgtapfufukzrgvj' style='cursor:pointer' onclick='window.open("https://logo.samandehi.ir/Verify.aspx?id=380563&p=xlaomcsiobpddshwgvkaxlao", "Popup","toolbar=no, scrollbars=no, location=no, statusbar=no, menubar=no, resizable=0, width=450, height=630, top=30")' alt='logo-samandehi' src='https://logo.samandehi.ir/logo.aspx?id=380563&p=qftiaqgwlymaujynwlbqqfti'/>
</div>
<ul class="nav justify-content-center border-bottom pb-3 mb-3"> <ul class="nav justify-content-center border-bottom pb-3 mb-3">
<li class="nav-item">
<a target="_blank" href="https://azadbeh.ir/projects/%D8%AD%D8%B3%D8%A7%D8%A8%DB%8C%DA%A9%D8%B3" class="nav-link px-2">فرصت‌های شغلی</a>
</li>
<li class="nav-item"> <li class="nav-item">
<a href="{{path('app_page',{'url':'hsx'})}}" class="nav-link px-2">توکن HSX</a> <a href="{{path('app_page',{'url':'hsx'})}}" class="nav-link px-2">توکن HSX</a>
</li> </li>
@ -107,7 +91,7 @@ gtag('config', 'G-K1R1SYQY8E');
<a href="{{path('app_changes')}}" class="nav-link px-2">تغییرات</a> <a href="{{path('app_changes')}}" class="nav-link px-2">تغییرات</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a href="https://source.hesabix.ir/morrning" target="_blank" class="nav-link px-2">مخازن کد</a> <a href="https://github.com/morrning" target="_blank" class="nav-link px-2">مخازن کد</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a href="{{path('app_page',{'url':'open-source'})}}" class="nav-link px-2">متن‌باز</a> <a href="{{path('app_page',{'url':'open-source'})}}" class="nav-link px-2">متن‌باز</a>

View file

@ -10,31 +10,32 @@
<div class="container-fluid pt-md-5 pt-sm-2"> <div class="container-fluid pt-md-5 pt-sm-2">
<div class="row align-items-center"> <div class="row align-items-center">
<div class="col-sm-12 col-md-7 mb-3 text-center"> <div class="col-sm-12 col-md-7 mb-3 text-center">
<h1 class="fs-2 fw-bold text-primary mb-4">شروعی ساده و آسان <h1 class="fs-2 fw-bold text-primary">شروعی ساده و آسان
<br> <br>
برای مدیریت کسب‌و‌کار شما برای مدیریت کسب‌و‌کار شما
</h1> </h1>
<p class="fs-5 mb-3 text-secondary">حسابیکس پلتفرم حسابداری ابری،متن‌باز و واقعا رایگان</p> <p class="fs-6 mb-1">حسابیکس پلتفرم حسابداری ابری،متن‌باز و واقعا رایگان</p>
<p class="fs-6 text-body-tertiary mb-4"> <p class="fs-6 text-body-tertiary mb-3">
میزبان بیش از میزبان بیش از
<span class="text-danger fw-bold">41 هزار <span class="text-danger">۳۵ هزار
</span> </span>
کاربر و کاربر و
<span class="text-danger fw-bold">38 هزار <span class="text-danger">۲۳ هزار
</span> </span>
کسب و کار فعال کسب و کار فعال
</p> </p>
<a class="btn rounded-4 btn-primary px-4 py-2 fs-5 shadow-sm" href="https://app.hesabix.ir" target="_blank">هم‌اکنون عضو شوید</a> <a class="btn rounded-4 btn-primary" href="https://app.hesabix.ir" target="_blank">هم‌اکنون عضو شوید</a>
</div> </div>
<div class="col-sm-12 col-md-5 mb-3"> <div class="col-sm-12 col-md-5 mb-3">
<img src="{{asset('img/viewWindows.png')}}" class="img-fluid rounded-4" alt="نرم افزار حسابداری حسابیکس"/> <img src="{{asset('img/viewWindows.png')}}" class="img-fluid" alt="نرم افزار حسابداری حسابیکس"/>
</div> </div>
</div> </div>
<div class="row mt-4"> <div class="row">
<div class="col-12"> <div class="col-12">
<div class="card text-bg-light mb-3 border-0 shadow-sm"> <div class="card text-bg-light mb-3">
<div class="card-body text-center p-4"> <div class="card-body text-center">
<p class="card-text text-center text-body-secondary"> <p class="card-text text-body-secondary">
حسابیکس یک پلتفرم مدیریت کسب‌و‌کار که پاسخگوی تمام اهداف تجاری شما از یک فروشگاه کوچک تا یک مجتمع بازرگانی بزرگ است حسابیکس یک پلتفرم مدیریت کسب‌و‌کار که پاسخگوی تمام اهداف تجاری شما از یک فروشگاه کوچک تا یک مجتمع بازرگانی بزرگ است
<br> <br>
کافی است گام اول را بردارید،جهت پیشبرد اهدافتان در کنار شما هستیم. کافی است گام اول را بردارید،جهت پیشبرد اهدافتان در کنار شما هستیم.
@ -46,38 +47,28 @@
</div> </div>
</div> </div>
</div> </div>
<div class="col-12 mb-3"> <div class="col-12 mb-4">
<div class="container bg-body-tertiary rounded-4 p-4"> <div class="container bg-body-tertiary rounded-3 p-4">
<h4 class="text-center mb-3 text-primary fw-bold">حامیان مالی حسابیکس</h4> <h4 class="text-center mb-4 text-primary">حامیان حسابیکس</h1>
<p class="text-center text-muted mb-3">حسابیکس با مشارکت حامیان مالی و حمایت کاربران عزیز، به صورت مستمر در حال توسعه و بهبود است. هر یک از شما با استفاده از خدمات حسابیکس، در پیشرفت این پلتفرم نقش دارید.</p> <div class="row row-cols-2 row-cols-md-4 g-4 justify-content-center">
<div class="row row-cols-2 row-cols-md-4 g-3 justify-content-center">
<div class="col"> <div class="col">
<div class="card h-100 border-0 shadow-sm hover-card"> <div class="card h-100 border-0 shadow-sm">
<a href="https://parspack.com" target="_blank" class="text-decoration-none"> <a href="https://parspack.com" target="_blank">
<div class="card-body text-center p-3"> <img src="{{asset('img/sp/parspack-logo.png')}}" class="card-img-top p-3" alt="Sponsor 1 Logo">
<img src="{{asset('img/sp/parspack-logo.png')}}" class="img-fluid p-2" alt="پارس پک">
<p class="text-muted mt-2 mb-0">پارس پک</p>
</div>
</a> </a>
</div> </div>
</div> </div>
<div class="col"> <div class="col">
<div class="card h-100 border-0 shadow-sm hover-card"> <div class="card h-100 border-0 shadow-sm">
<a href="https://melipayamak.com" target="_blank" class="text-decoration-none"> <a href="https://melipayamak.com" target="_blank">
<div class="card-body text-center p-3"> <img src="{{asset('img/sp/melipayamak.png')}}" class="card-img-top p-3" alt="Sponsor 1 Logo">
<img src="{{asset('img/sp/melipayamak.png')}}" class="img-fluid p-2" alt="ملی پیامک">
<p class="text-muted mt-2 mb-0">ملی پیامک</p>
</div>
</a> </a>
</div> </div>
</div> </div>
<div class="col"> <div class="col">
<div class="card h-100 border-0 shadow-sm hover-card"> <div class="card h-100 border-0 shadow-sm">
<a href="https://raddata.ir" target="_blank" class="text-decoration-none"> <a href="https://raddata.ir" target="_blank">
<div class="card-body text-center p-3"> <img src="{{asset('img/sp/raddata.png')}}" class="card-img-top p-3" alt="Sponsor 1 Logo">
<img src="{{asset('img/sp/raddata.png')}}" class="img-fluid p-2" alt="راد دیتا">
<p class="text-muted mt-2 mb-0">راد دیتا</p>
</div>
</a> </a>
</div> </div>
</div> </div>
@ -89,62 +80,21 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row align-items-center"> <div class="row align-items-center">
<div class="col-sm-12 col-md-3 mb-3 text-center"> <div class="col-sm-12 col-md-3 mb-3 text-center">
<img src="{{asset('img/viewMobile.png')}}" class="img-fluid rounded-4" alt="نرم افزار حسابداری حسابیکس"/> <img src="{{asset('img/viewMobile.png')}}" class="img-fluid" alt="نرم افزار حسابداری حسابیکس"/>
</div> </div>
<div class="col-sm-12 col-md-9 mb-3"> <div class="col-sm-12 col-md-9 mb-3">
<h2 class="text-primary mb-4">شروعی سریع و ساده با حسابیکس</h2> <h2 class="text-primary">شروعی سریع و ساده با حسابیکس</h2>
<div class="row g-4"> <ul class="">
<div class="col-md-4"> <li class="my-3">
<div class="card h-100 border-0 shadow-sm hover-card"> ابتدا در حسابیکس عضو شوید و پنل کسب و کار خود را به سادگی بسازید، توجه داشته باشید هر تعداد کسب‌و‌کار که داشته باشید می توانید از طریق یک داشبورد واحد آن‌ها مدیریت کنید
<div class="card-body text-center p-4"> </li>
<div class="icon-box mb-3"> <li class="my-3">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> اطلاعات کسب و کار خود را وارد کنید و تنظیمات اولیه را انجام دهید،حسابیکس آماده و در اختیار شماست . در صورتی که سوالی درباره حسابیکس داشتید می‌توانید تیکت پشتیبانی ارسال کنید
<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path> </li>
<circle cx="8.5" cy="7" r="4"></circle> <li class="my-3">
<line x1="20" y1="8" x2="20" y2="14"></line> از حسابیکس بر روی موبایل، تبلت و کامپیوتر لذت ببرید تنها کافی است که یک اتصال اینترنت داشته باشید،حسابیکس در هر نقطه‌ای از جهان در دسترس شما خواهد بود
<line x1="23" y1="11" x2="17" y2="11"></line> </li>
</svg> </ul>
</div>
<h5 class="card-title text-primary mb-3">ثبت‌نام و ساخت پنل</h5>
<p class="card-text text-muted">
در حسابیکس عضو شوید و پنل کسب و کار خود را به سادگی بسازید. هر تعداد کسب‌و‌کار که داشته باشید می‌توانید از طریق یک داشبورد واحد آن‌ها را مدیریت کنید.
</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card h-100 border-0 shadow-sm hover-card">
<div class="card-body text-center p-4">
<div class="icon-box mb-3">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="3"></circle>
<path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path>
</svg>
</div>
<h5 class="card-title text-primary mb-3">تنظیمات و راه‌اندازی</h5>
<p class="card-text text-muted">
اطلاعات کسب و کار خود را وارد کنید و تنظیمات اولیه را انجام دهید. حسابیکس آماده و در اختیار شماست. در صورت نیاز به راهنمایی، تیم پشتیبانی پاسخگوی شماست.
</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card h-100 border-0 shadow-sm hover-card">
<div class="card-body text-center p-4">
<div class="icon-box mb-3">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="5" y="2" width="14" height="20" rx="2" ry="2"></rect>
<line x1="12" y1="18" x2="12.01" y2="18"></line>
</svg>
</div>
<h5 class="card-title text-primary mb-3">دسترسی همه‌جا</h5>
<p class="card-text text-muted">
از حسابیکس بر روی موبایل، تبلت و کامپیوتر لذت ببرید. تنها کافی است که یک اتصال اینترنت داشته باشید. حسابیکس در هر نقطه‌ای از جهان در دسترس شما خواهد بود.
</p>
</div>
</div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -153,21 +103,19 @@
<div class="col-12"> <div class="col-12">
<div class="p-1 mb-4"> <div class="p-1 mb-4">
<div class="container-fluid"> <div class="container-fluid">
<h3 class="text-primary fs-2 text-center py-4 fw-bold">از وبلاگ حسابیکس</h3> <h3 class="text-primary fs-2 text-center py-3">از وبلاگ حسابیکس</h3>
<div class="row"> <div class="row">
{% for post in posts %} {% for post in posts %}
<div class="col-sm-12 col-md-4 mb-4"> <div class="col-sm-12 col-md-4 mb-3">
<div class="card blog-card h-100 border-0 shadow-sm"> <div class="card d-flex position-relative">
<div class="position-relative"> <img src="{{asset('uploaded/' ~ post.mainPic )}}" class="card-img-top" alt="{{ post.title}}">
<img src="{{asset('uploaded/' ~ post.mainPic )}}" class="card-img-top blog-image" alt="{{ post.title}}">
<div class="blog-date position-absolute bottom-0 start-0 bg-primary text-white px-3 py-2 rounded-end">
{{ Jdate.jdate('Y/n/d',post.dateSubmit) }}
</div>
</div>
<div class="card-body"> <div class="card-body">
<h3 class="card-title text-primary fs-5 fw-bold mb-3">{{post.title}}</h3> <h3 class="card-title text-primary fs-4">{{post.title}}</h3>
<p class="card-text text-muted mb-4">{{ post.intro }}</p> <p class="card-text">{{ post.intro }}</p>
<a href="{{path('app_blog_post',{'url':post.url})}}" class="btn btn-outline-primary rounded-4 stretched-link">ادامه مطلب</a> <div class="card-text text-start align-items-center">
<small class="text-body-secondary float-end">{{ Jdate.jdate('Y/n/d',post.dateSubmit) }}</small>
<a href="{{path('app_blog_post',{'url':post.url})}}" class="float-start btn btn-primary btn-sm rounded-4 stretched-link">ادامه مطلب</a>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -176,120 +124,10 @@
</div> </div>
</div> </div>
</div> </div>
<div class="col-12 mb-5 d-none d-md-block">
<div class="container-fluid">
<h3 class="text-primary fs-2 text-center py-3">نظرات مشتریان</h3>
<div id="testimonialCarousel" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="row justify-content-center">
<div class="col-md-4">
<div class="card testimonial-card">
<div class="card-body text-center">
<h5 class="card-title">حمیدرضا تینای تهرانی</h5>
<p class="card-text testimonial-text">"مرداد امسال بود که میخواستم برای چاپخونه برادرم یک فاکتور بزنم. هرکاری کردم نرم افزار حسابداری که باهاش کار میکردم (حسابیت)خروجی نمی داد و از اون بدتر نه کسی تیکت جواب میداد نه تلفن پشتیبانی کار میکرد. در کمال ناباوری شروع به جستجوی اینترنتی کردم برای یک نرم افزار حسابداری آنلاین که بشه از هرجایی کارو درآورد که به #حسابیکس برخورد کردم. واقعا باورش سخته که یک نرم افزار حسابداری آنلاین رایگان باشه که همه کارهات رو راه بندازه و از همه مهمتر یک تیم پشتیبانی پیگیر و خفن داشته باشه که تک تک نظرات رو بخونه و جواب بده و مشکلات رو حل کنه و حتی بر اساس نظرات کاربران بخش های مختلف رو توسعه بده. واقعا ممنون که هستید. خداقوت"</p>
<button class="btn btn-link read-more-btn">نمایش بیشتر</button>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card testimonial-card">
<div class="card-body text-center">
<h5 class="card-title">محمد رضایی</h5>
<p class="card-text testimonial-text">"من یک شرکت خدمات کامپیوتری دارم و همیشه با مشکل مدیریت مالی و حسابداری مواجه بودم. نرم‌افزارهای مختلفی رو امتحان کردم اما یا خیلی پیچیده بودن یا امکاناتشون کم بود. تا اینکه با حسابیکس آشنا شدم. از همون روز اول که ثبت‌نام کردم، تیم پشتیبانی با من تماس گرفتن و راهنمایی‌های لازم رو ارائه دادن. حالا بعد از ۶ ماه استفاده، می‌تونم بگم که حسابیکس تحول بزرگی در مدیریت کسب و کارم ایجاد کرده. نه تنها امور مالی شرکت رو به راحتی مدیریت می‌کنم، بلکه می‌تونم از هرجایی و با هر دستگاهی به اطلاعات دسترسی داشته باشم. پشتیبانی 24 ساعته و پاسخگویی سریع تیم حسابیکس باعث شده که با خیال راحت کسب و کارم رو مدیریت کنم. از همه مهمتر، رایگان بودن این نرم‌افزار با این همه امکانات واقعا قابل تقدیره."</p>
<button class="btn btn-link read-more-btn">نمایش بیشتر</button>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card testimonial-card">
<div class="card-body text-center">
<h5 class="card-title">فاطمه محمدی</h5>
<p class="card-text testimonial-text">"من یک فروشگاه پوشاک دارم و همیشه با مشکل مدیریت موجودی و حساب‌وکتاب مواجه بودم. تا اینکه یکی از دوستانم حسابیکس رو به من معرفی کرد. از همون روز اول که ثبت‌نام کردم، متوجه شدم که این نرم‌افزار چقدر می‌تونه به من کمک کنه. حالا بعد از ۴ ماه استفاده، می‌تونم بگم که حسابیکس تحول چشمگیری در مدیریت فروشگاهم ایجاد کرده. نه تنها موجودی انبارم رو به راحتی مدیریت می‌کنم، بلکه می‌تونم از هرجایی و با هر دستگاهی به اطلاعات دسترسی داشته باشم. حتی در سفر هم می‌تونم کارهام رو انجام بدم. پشتیبانی عالی و پاسخگویی سریع تیم حسابیکس باعث شده که با خیال راحت کسب و کارم رو مدیریت کنم. پیشنهاد می‌کنم حتما امتحان کنید."</p>
<button class="btn btn-link read-more-btn">نمایش بیشتر</button>
</div>
</div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="row justify-content-center">
<div class="col-md-4">
<div class="card testimonial-card">
<div class="card-body text-center">
<h5 class="card-title">علی احمدی</h5>
<p class="card-text testimonial-text">"حسابیکس بهترین نرم افزار حسابداری آنلاینی هست که تا حالا استفاده کردم. امکاناتش کامل و پشتیبانی عالی و به‌روزرسانی‌های مداوم باعث شده که همیشه از جدیدترین امکانات بهره‌مند بشم. به همه دوستانم هم معرفی کردم و همه راضی هستن."</p>
<button class="btn btn-link read-more-btn">نمایش بیشتر</button>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card testimonial-card">
<div class="card-body text-center">
<h5 class="card-title">سارا کریمی</h5>
<p class="card-text testimonial-text">"من یک فروشگاه اینترنتی دارم و حسابیکس به من کمک کرده تا تمام امور مالی و انبارداری رو به راحتی مدیریت کنم. رابط کاربری ساده و امکانات کاملش باعث شده که حتی بدون دانش حسابداری هم بتونم کارهام رو انجام بدم. پشتیبانی عالی و پاسخگویی سریع تیم حسابیکس واقعا قابل تقدیره."</p>
<button class="btn btn-link read-more-btn">نمایش بیشتر</button>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card testimonial-card">
<div class="card-body text-center">
<h5 class="card-title">رضا حسینی</h5>
<p class="card-text testimonial-text">"حسابیکس یک نرم افزار حسابداری کامل و حرفه‌ایه که به صورت رایگان در اختیار کاربران قرار گرفته. امکاناتی که داره با بهترین نرم افزارهای حسابداری برابری می‌کنه. پشتیبانی عالی و به‌روزرسانی‌های مداوم باعث شده که همیشه از جدیدترین امکانات بهره‌مند بشم. به همه پیشنهاد می‌کنم."</p>
<button class="btn btn-link read-more-btn">نمایش بیشتر</button>
</div>
</div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="row justify-content-center">
<div class="col-md-4">
<div class="card testimonial-card">
<div class="card-body text-center">
<h5 class="card-title">مهندس محمدی - مدیر فنی شرکت نرم‌افزاری آریا</h5>
<p class="card-text testimonial-text">"ما در شرکت نرم‌افزاری آریا، حسابیکس رو به عنوان هسته حسابداری نرم‌افزار مدیریت فروشگاه‌های زنجیره‌ای خودمون استفاده کردیم. API قدرتمند و مستندات کامل حسابیکس به ما کمک کرد تا در کمترین زمان، سیستم حسابداری خودمون رو راه‌اندازی کنیم. پشتیبانی فنی تیم حسابیکس همیشه در دسترس هستن و مشکلات رو سریع حل می‌کنن."</p>
<button class="btn btn-link read-more-btn">نمایش بیشتر</button>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card testimonial-card">
<div class="card-body text-center">
<h5 class="card-title">مهندس رضایی - مدیر پروژه شرکت توسعه‌گران</h5>
<p class="card-text testimonial-text">"برای یکی از مشتریانمون که یک شرکت پخش مواد غذایی داره، با استفاده از حسابیکس یک سیستم سفارشی ساختیم. API حسابیکس به ما این امکان رو داد که سیستم انبارداری و فروش رو به راحتی به هسته حسابداری متصل کنیم. مشتری از نتیجه کار راضی هست و ما هم توانستیم در زمان و هزینه صرفه‌جویی کنیم."</p>
<button class="btn btn-link read-more-btn">نمایش بیشتر</button>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card testimonial-card">
<div class="card-body text-center">
<h5 class="card-title">مهندس کریمی - برنامه‌نویس مستقل</h5>
<p class="card-text testimonial-text">"من به عنوان یک برنامه‌نویس مستقل، چندین پروژه شخصی‌سازی نرم‌افزار حسابداری رو با استفاده از حسابیکس انجام دادم. API قدرتمند و مستندات کامل حسابیکس به من کمک کرد تا سیستم‌های سفارشی برای مشتریان مختلف بسازم. پشتیبانی فنی تیم حسابیکس همیشه در دسترس هستن و مشکلات رو سریع حل می‌کنن."</p>
<button class="btn btn-link read-more-btn">نمایش بیشتر</button>
</div>
</div>
</div>
</div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#testimonialCarousel" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">قبلی</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#testimonialCarousel" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">بعدی</span>
</button>
</div>
</div>
</div>
<div class="col-12"> <div class="col-12">
<div class="card mb-5 bg-body-tertiary"> <div class="card mb-3 bg-body-tertiary">
<div class="row g-0"> <div class="row g-0">
<div class="col-md-4 text-center align-items-center d-flex justify-content-center"> <div class="col-md-4 text-center align-items-center">
<img src="{{asset('/img/memaps.svg')}}" style="max-height: 10rem;" class="img-fluid rounded-start" alt="نقشه‌های آنلاین می مپس"> <img src="{{asset('/img/memaps.svg')}}" style="max-height: 10rem;" class="img-fluid rounded-start" alt="نقشه‌های آنلاین می مپس">
</div> </div>
<div class="col-md-8"> <div class="col-md-8">
@ -310,161 +148,4 @@
</div> </div>
</div> </div>
</div> </div>
<style>
.testimonial-card {
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
margin: 15px;
border-radius: 15px;
border: none;
background: linear-gradient(145deg, #ffffff, #f8f9fa);
}
.testimonial-card:hover {
transform: translateY(-8px);
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
}
.carousel-control-prev,
.carousel-control-next {
width: 5%;
opacity: 0.8;
}
.carousel-control-prev-icon,
.carousel-control-next-icon {
background-color: rgba(13, 110, 253, 0.8);
border-radius: 50%;
padding: 20px;
}
.card-body {
padding: 2rem;
}
.card-title {
color: #0d6efd;
margin-bottom: 1.5rem;
font-weight: normal;
font-size: 1.2rem;
}
.card-text {
line-height: 1.8;
text-align: justify;
color: #495057;
font-size: 1rem;
}
.testimonial-text {
max-height: 150px;
overflow: hidden;
transition: max-height 0.5s ease;
position: relative;
}
.testimonial-text:after {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 30px;
background: linear-gradient(to bottom, transparent, #ffffff);
}
.testimonial-text.expanded {
max-height: none;
}
.testimonial-text.expanded:after {
display: none;
}
.read-more-btn {
display: none;
margin-top: 15px;
font-size: 0.9rem;
color: #0d6efd;
text-decoration: none;
font-weight: 500;
transition: all 0.3s ease;
}
.read-more-btn:hover {
color: #0b5ed7;
text-decoration: underline;
}
.testimonial-text:not(.expanded) + .read-more-btn {
display: inline-block;
}
#testimonialCarousel {
padding: 20px 0;
}
.carousel-inner {
padding: 20px 0;
}
.hover-card {
transition: all 0.3s ease;
border-radius: 15px;
background: #fff;
}
.hover-card:hover {
transform: translateY(-5px);
box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}
.hover-card img {
transition: all 0.3s ease;
}
.hover-card:hover img {
transform: scale(1.05);
}
.blog-card {
transition: all 0.3s ease;
border-radius: 15px;
overflow: hidden;
}
.blog-card:hover {
transform: translateY(-5px);
box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}
.blog-image {
height: 200px;
object-fit: cover;
transition: all 0.3s ease;
}
.blog-card:hover .blog-image {
transform: scale(1.05);
}
.blog-date {
font-size: 0.9rem;
z-index: 1;
}
.icon-box {
width: 60px;
height: 60px;
background: rgba(13, 110, 253, 0.1);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto;
transition: all 0.3s ease;
}
.icon-box svg {
width: 24px;
height: 24px;
color: #0d6efd;
}
.hover-card:hover .icon-box {
background: rgba(13, 110, 253, 0.2);
transform: scale(1.1);
}
.card-text {
font-size: 0.95rem;
line-height: 1.6;
}
</style>
<script>
document.addEventListener('DOMContentLoaded', function() {
const readMoreButtons = document.querySelectorAll('.read-more-btn');
readMoreButtons.forEach(button => {
button.addEventListener('click', function() {
const testimonialText = this.previousElementSibling;
testimonialText.classList.toggle('expanded');
this.textContent = testimonialText.classList.contains('expanded') ? 'بستن' : 'نمایش بیشتر';
});
});
});
</script>
{% endblock %} {% endblock %}

View file

@ -1,7 +1,5 @@
{% extends 'base.html.twig' %} {% extends 'base.html.twig' %}
{% block keywords %} {% block keywords %}{{item.keywords}}{% endblock %}
{{item.keywords}}
{% endblock %}
{% block title %} {% block title %}
{{ item.title }} {{ item.title }}
{% endblock %} {% endblock %}

View file

@ -8,117 +8,55 @@
{% endblock %} {% endblock %}
{% block body %} {% block body %}
<main class="container-fluid px-0"> <main class="container mt-2 mb-5">
<div class="blog-header position-relative"> <h1 class="text-primary fs-3">وبلاگ حسابیکس</h1>
<div class="overlay"></div>
<div class="container position-relative">
<div class="row min-vh-50 align-items-center">
<div class="col-12 text-center text-white">
<h1 class="display-4 fw-bold mb-4">وبلاگ حسابیکس</h1>
<p class="" style="font-family: 'Yekan Bakh FaNum', sans-serif;">جدیدترین اطلاعات و خبرها از دنیای حسابداری</p>
</div>
</div>
</div>
</div>
<div class="container mt-5 mb-5">
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<div class="row g-4"> <div class="row">
{% for post in posts %} {% for post in posts %}
<div class="col-md-4"> <div class="col-md-4">
<article class="card h-100 border-0 shadow-sm hover-shadow transition-all"> <article class="card mb-4">
<div class="position-relative"> <img src="{{asset('uploaded/'~ post.mainPic)}}" alt="{{post.title}}" class="card-img-top">
<img src="{{asset('uploaded/'~ post.mainPic)}}" alt="{{post.title}}" class="card-img-top object-fit-cover" style="height: 200px;">
<div class="position-absolute top-0 end-0 m-3">
{% for tree in post.tree %}
<span class="badge bg-primary me-1">{{ tree.label }}</span>
{% endfor %}
</div>
</div>
<div class="card-body"> <div class="card-body">
<div class="d-flex justify-content-between align-items-center mb-2"> <h5 class="card-title text-primary">{{ post.title }}</h5>
<small class="text-muted"> <p class="card-text">{{ post.intro }}</p>
<i class="fas fa-calendar-alt me-1"></i> <a href="{{path('app_blog_post',{'url':post.url})}}" class="btn btn-sm rounded-4 btn-primary stretched-link">ادامه مطلب</a>
{{ Jdate.jdate('Y/n/d',post.dateSubmit) }}
</small>
<small class="text-muted">
<i class="fas fa-eye me-1"></i>
{{ post.views }}
</small>
</div>
<h5 class="card-title text-primary fw-bold">{{ post.title }}</h5>
<p class="card-text text-muted">{{ post.intro }}</p>
<a href="{{path('app_blog_post',{'url':post.url})}}" class="btn btn-primary rounded-pill stretched-link">
ادامه مطلب
<i class="fas fa-arrow-left me-2"></i>
</a>
</div> </div>
</article> </article>
</div> </div>
{% endfor %} {% endfor %}
</div> </div>
<div class="row">
<div class="row mt-5"> <nav aria-label="Page navigation example" style="direction: ltr;">
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center"> <ul class="pagination justify-content-center">
<li class="page-item {% if page == 1 %}disabled{% endif %}"> <li class="page-item {% if page == 1 %}disabled{% endif %}">
<a href="{{ path('app_blog_home',{'page':page -1})}}" class="page-link rounded-pill mx-1"> <a href="{{ path('app_blog_home',{'page':page -1})}}" class="page-link">صفحه قبل</a>
<i class="fas fa-chevron-right"></i>
صفحه قبل
</a>
</li> </li>
<li class="page-item"> <li class="page-item">
<a class="page-link rounded-pill mx-1 active" href="{{ path('app_blog_home',{'page':page })}}">{{page}}</a> <a class="page-link disabled" href="{{ path('app_blog_home',{'page':page })}}">{{page}}</a>
</li> </li>
{% if (page + 1) <= maxpages %} {% if (page + 1) <= maxpages %}
<li class="page-item"> <li class="page-item">
<a class="page-link rounded-pill mx-1" href="{{ path('app_blog_home',{'page':page +1})}}">{{page +1}}</a> <a class="page-link" href="{{ path('app_blog_home',{'page':page +1})}}">{{page +1}}</a>
</li> </li>
{% endif %} {% endif %}
{% if (page + 2) <= maxpages %} {% if (page + 2) <= maxpages %}
<li class="page-item"> <li class="page-item">
<a class="page-link rounded-pill mx-1" href="{{ path('app_blog_home',{'page':page +2})}}">{{page + 2}}</a> <a class="page-link" href="{{ path('app_blog_home',{'page':page +2})}}">{{page + 2}}</a>
</li> </li>
{% endif %} {% endif %}
{% if (page + 3) <= maxpages %} {% if (page + 3) <= maxpages %}
<li class="page-item"> <li class="page-item">
<a class="page-link rounded-pill mx-1" href="{{ path('app_blog_home',{'page':page +3})}}">{{page + 3}}</a> <a class="page-link" href="{{ path('app_blog_home',{'page':page +3})}}">{{page + 3}}</a>
</li> </li>
{% endif %} {% endif %}
<li class="page-item"> <li class="page-item">
<a href="{{ path('app_blog_home',{'page':page +1})}}" class="page-link rounded-pill mx-1 {% if (page + 1) > maxpages %}disabled{% endif %}"> <a href="{{ path('app_blog_home',{'page':page +1})}}" class="page-link {% if (page + 1) > maxpages %}disabled{% endif %}">صفحه بعدی</a>
صفحه بعدی
<i class="fas fa-chevron-left"></i>
</a>
</li> </li>
</ul> </ul>
</nav> </nav>
</div> </div>
</div> </div>
</div> </div>
</div>
</main> </main>
<style>
.blog-header {
background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('{{ asset('img/blog/blog-header.jpg') }}');
background-size: cover;
background-position: center;
min-height: 250px;
}
.hover-shadow {
transition: all 0.3s ease;
}
.hover-shadow:hover {
transform: translateY(-5px);
box-shadow: 0 10px 20px rgba(0,0,0,0.1) !important;
}
.min-vh-50 {
min-height: 250px;
}
.object-fit-cover {
object-fit: cover;
}
</style>
{% endblock %} {% endblock %}

View file

@ -1,6 +1,5 @@
{% extends 'base.html.twig' %} {% extends 'base.html.twig' %}
{% block keywords %} {% block keywords %}item.keywords
{{ item.keywords }}
{% endblock %} {% endblock %}
{% block title %} {% block title %}
{{ item.title }} {{ item.title }}
@ -11,91 +10,28 @@
{% endblock %} {% endblock %}
{% block body %} {% block body %}
<style>
.blog-post {
transition: all 0.3s ease;
}
.blog-post:hover {
transform: translateY(-5px);
}
.post-image {
border-radius: 15px;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease;
}
.post-image:hover {
transform: scale(1.02);
}
.post-card {
border: none;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
transition: all 0.3s ease;
border-radius: 15px;
}
.post-card:hover {
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
}
.recent-posts .card {
border: none;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
transition: all 0.3s ease;
border-radius: 15px;
overflow: hidden;
}
.recent-posts .card:hover {
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
}
.recent-posts .card img {
transition: transform 0.3s ease;
}
.recent-posts .card:hover img {
transform: scale(1.1);
}
.post-title {
font-size: 1.5rem;
font-weight: 600;
line-height: 1.4;
margin-bottom: 1.5rem;
font-family: inherit;
}
.post-intro {
font-size: 1.1rem;
line-height: 1.8;
color: #555;
}
.post-meta {
font-size: 0.9rem;
color: #666;
}
.post-content {
font-size: 1.1rem;
line-height: 1.8;
}
</style>
{% if item.plain is not null %} {% if item.plain is not null %}
{{ item.plain | raw}} {{ item.plain | raw}}
{% endif %} {% endif %}
{% if item.body is not null %} {% if item.body is not null %}
<div class="container mt-4"> <div class="container mt-3">
<div class="row"> <div class="row">
<div class="col-sm-12 col-md-8"> <div class="col-sm-12 col-md-8">
<article class="blog-post mb-4"> <h1 class="text-primary fs-3 my-3">{{item.title}}</h1>
<img class="img-fluid post-image mb-4" src="{{asset('uploaded/'~ item.mainPic)}}" alt="{{item.title}}"/> <img class="img-fluid rounded-4" src="{{asset('uploaded/'~ item.mainPic)}}" alt="{{item.title}}"/>
<h1 class="text-primary fs-5">{{item.title}}</h1> <div class="card bg-body-tertiary my-4">
<div class="card post-card bg-body-tertiary mb-4">
<div class="card-body"> <div class="card-body">
<div class="post-intro card-text mb-3"> <div class="card-text">
{{item.intro}} {{item.intro}}
</div> </div>
<div class="post-meta card-text"> <div class="card-text">
<figure> <figure>
<blockquote class="blockquote"></blockquote> <blockquote class="blockquote">
</blockquote>
<figcaption class="blockquote-footer"> <figcaption class="blockquote-footer">
توسط توسط
<strong>{{item.submitter.name}}</strong> {{item.submitter.name}}
<cite title="Source Title"> <cite title="Source Title"> در تاریخ
در تاریخ
{{Jdate.jdate('Y/n/d',item.dateSubmit)}} {{Jdate.jdate('Y/n/d',item.dateSubmit)}}
</cite> </cite>
</figcaption> </figcaption>
@ -103,19 +39,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="post-content mt-4"> <p>{{ item.body | raw }}</p>
{{ item.body | raw }}
</div>
</article>
</div> </div>
<div class="col-sm-12 col-md-4"> <div class="col-sm-12 col-md-4">
<div class="recent-posts"> <h3 class="text-primary">جدیدترین‌ها</h3>
<h3 class="text-primary mb-3">جدیدترین‌ها</h3>
{% for post in posts %} {% for post in posts %}
<div class="card mb-3"> <div class="card mb-2">
<img src="{{asset('uploaded/'~ post.mainPic)}}" class="card-img-top" alt="{{post.title}}"> <img src="{{asset('uploaded/'~ post.mainPic)}}" class="card-img-top" alt="{{post.title}}">
<div class="card-body"> <div class="card-body">
<a href="{{path('app_blog_post',{'url':post.url})}}" class="stretched-link text-decoration-none"> <a href="{{path('app_blog_post',{'url':post.url})}}" class="rul stretched-link">
<h5 class="card-title text-primary">{{post.title}}</h5> <h5 class="card-title text-primary">{{post.title}}</h5>
</a> </a>
</div> </div>
@ -124,6 +56,5 @@
</div> </div>
</div> </div>
</div> </div>
</div>
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View file

@ -1,10 +1,6 @@
{% extends 'base.html.twig' %} {% extends 'base.html.twig' %}
{% block keywords %} {% block keywords %}{{item.keywords}}{% endblock %}
{{item.keywords}} {% block title %}{{ item.title }}{% endblock %}
{% endblock %}
{% block title %}
{{ item.title }}
{% endblock %}
{% block des %} {% block des %}
{{ item.intro }} {{ item.intro }}

View file

@ -1,7 +1,5 @@
{% extends 'base.html.twig' %} {% extends 'base.html.twig' %}
{% block keywords %} {% block keywords %}item.keywords{% endblock %}
{{item.keywords}}
{% endblock %}
{% block title %} {% block title %}
{{ item.title }} {{ item.title }}
{% endblock %} {% endblock %}

View file

@ -1,6 +1,5 @@
{% extends 'base.html.twig' %} {% extends 'base.html.twig' %}
{% block keywords %} {% block keywords %}item.keywords
{{item.keywords}}
{% endblock %} {% endblock %}
{% block title %} {% block title %}
تاریخچه تغییرات حسابیکس تاریخچه تغییرات حسابیکس

View file

@ -1,335 +0,0 @@
{% extends 'base.html.twig' %}
{% block title %}
دیدگاه‌های کاربران
{% endblock %}
{% block des %}
دیدگاه سایر کاربران استفاده کننده از حسابیکس دید بهترین برای انتخاب محصولی عالی را برای شما مهیا می کند.
{% endblock %}
{% block body %}
<div class="container mt-3">
<div class="mb-3">
<h3 class="mb-4">نظرات کاربران درباره حسابیکس</h3>
<div class="row align-items-center">
<div class="col-auto text-center">
<h3 class="display-2 fw-bold">4.5</h3>
<span class="fs-6">
<i class="bi bi-star-fill text-warning"></i>
<i class="bi bi-star-fill text-warning"></i>
<i class="bi bi-star-fill text-warning"></i>
<i class="bi bi-star-fill text-warning"></i>
<i class="bi bi-star-half text-warning"></i>
</span>
<p class="mb-0 fs-6">(بر اساس 27 نظر)</p>
</div>
<!-- Progress Bar -->
<div class="col order-3 order-md-2">
<div class="progress mb-3" style="height: 6px;">
<div class="progress-bar bg-warning" role="progressbar" style="width: 90%;" aria-valuenow="90" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<div class="progress mb-3" style="height: 6px;">
<div class="progress-bar bg-warning" role="progressbar" style="width: 80%;" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<div class="progress mb-3" style="height: 6px;">
<div class="progress-bar bg-warning" role="progressbar" style="width: 70%;" aria-valuenow="70" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<div class="progress mb-3" style="height: 6px;">
<div class="progress-bar bg-warning" role="progressbar" style="width: 60%;" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<div class="progress mb-0" style="height: 6px;">
<div class="progress-bar bg-warning" role="progressbar" style="width: 50%;" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div>
</div>
</div>
<div
class="col-md-auto col-6 order-2 order-md-3">
<!-- Rating -->
<div>
<span class="fs-6">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
</span>
<span class="ms-1">53%</span>
</div>
<div>
<span class="fs-6">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-light" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
</span>
<span class="ms-1">36%</span>
</div>
<div>
<span class="fs-6">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-light" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-light" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
</span>
<span class="ms-1">9%</span>
</div>
<div>
<span class="fs-6">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-light" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-light" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-light" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
</span>
<span class="ms-1">3%</span>
</div>
<div>
<span class="fs-6">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-light" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-light" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-light" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-light" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
</span>
<span class="ms-1">2%</span>
</div>
</div>
</div>
</div>
<hr class="my-5">
<div class="mb-3">
<div
class="d-lg-flex align-items-center justify-content-between mb-5">
<!-- Reviews -->
<div class="mb-3 mb-lg-0">
<h3 class="mb-0">نظرات کاربران</h3>
</div>
<div>
<form class="form-inline">
<div class="d-flex align-items-center me-2">
<span class="position-absolute ps-3">
<i class="fe fe-search"></i>
</span>
<input type="search" class="form-control ps-6" placeholder="جستجوی نظرات">
</div>
</form>
</div>
</div>
<!-- Rating -->
<div class="d-flex align-items-start border-bottom pb-4 mb-4">
<img src="{{asset('assets/images/avatar/avatar-2.jpg')}}" alt="" class="rounded-circle avatar-lg">
<div class="ms-3">
<h4 class="mb-1">
حمیدرضا تینای تهرانی
<span class="ms-1 fs-6">2 روز پیش</span>
</h4>
<div class="mb-2">
<span class="fs-6">
<i class="bi bi-star-fill text-warning"></i>
<i class="bi bi-star-fill text-warning"></i>
<i class="bi bi-star-fill text-warning"></i>
<i class="bi bi-star-fill text-warning"></i>
<i class="bi bi-star-fill text-warning"></i>
</span>
</div>
<p>حسابیکس بهترین نرم افزار حسابداری آنلاینی هست که تا حالا استفاده کردم. امکاناتش کامل و پشتیبانی عالی و به‌روزرسانی‌های مداوم باعث شده که همیشه از جدیدترین امکانات بهره‌مند بشم.</p>
<div class="d-lg-flex">
<p class="mb-0">آیا این نظر برای شما مفید بود؟</p>
<a href="#" class="btn btn-xs btn-primary ms-lg-3">بله</a>
<a href="#" class="btn btn-xs btn-outline-secondary ms-1">خیر</a>
</div>
</div>
</div>
<!-- Rating -->
<div class="d-flex align-items-start border-bottom pb-4 mb-4">
<img src="../assets/images/avatar/avatar-3.jpg" alt="" class="rounded-circle avatar-lg">
<div class="ms-3">
<h4 class="mb-1">Arthur Williamson
<span class="ms-1 fs-6 ">3 Days
ago</span>
</h4>
<div class="mb-2">
<span class="fs-6">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
</span>
</div>
<p>Its pretty good.Just a reminder that there are also
students with Windows, meaning Figma its a bit different
of yours. Thank you!</p>
<div class="d-lg-flex">
<p class="mb-0">Was this review helpful?</p>
<a href="#" class="btn btn-xs btn-primary ms-lg-3">Yes</a>
<a href="#" class="btn btn-xs btn-outline-secondary ms-1">No</a>
</div>
</div>
</div>
<!-- Rating -->
<div class="d-flex align-items-start border-bottom pb-4 mb-4">
<img src="../assets/images/avatar/avatar-4.jpg" alt="" class="rounded-circle avatar-lg">
<div class="ms-3">
<h4 class="mb-1">Claire Jones
<span class="ms-1 fs-6 ">4 Days
ago</span>
</h4>
<div class="mb-2">
<span class="fs-6">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
</span>
</div>
<p>
Great course for learning Figma, the only bad detail
would be that some icons are not included in the assets.
But 90% of the icons needed are included, and the voice
of the instructor was very clear and easy to understood.
</p>
<div class="d-lg-flex">
<p class="mb-0">Was this review helpful?</p>
<a href="#" class="btn btn-xs btn-primary ms-lg-3">Yes</a>
<a href="#" class="btn btn-xs btn-outline-secondary ms-1">No</a>
</div>
</div>
</div>
<!-- Rating -->
<div class="d-flex align-items-start">
<img src="../assets/images/avatar/avatar-5.jpg" alt="" class="rounded-circle avatar-lg">
<div class="ms-3">
<h4 class="mb-1">
Bessie Pena
<span class="ms-1 fs-6 ">5 Days
ago</span>
</h4>
<div class="mb-2">
<span class="fs-6">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star-fill text-warning" viewbox="0 0 16 16">
<path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/>
</svg>
</span>
</div>
<p>
I have really enjoyed this class and learned a lot,
found it very inspiring and helpful, thank you!
</p>
<div class="d-lg-flex">
<p class="mb-0">Was this review helpful?</p>
<a href="#" class="btn btn-xs btn-primary ms-lg-3">Yes</a>
<a href="#" class="btn btn-xs btn-outline-secondary ms-1">No</a>
</div>
</div>
</div>
</div>
</div>
<style>
.avatar-lg {
width: 60px;
height: 60px;
object-fit: cover;
}
.progress {
background-color: #e9ecef;
}
.progress-bar {
background-color: #ffc107;
}
.btn-xs {
padding: 0.25rem 0.5rem;
font-size: 0.75rem;
}
.border-bottom {
border-bottom: 1px solid #dee2e6 !important;
}
.text-warning {
color: #ffc107 !important;
}
</style>
{% endblock %}