Compare commits

...

10 commits

Author SHA1 Message Date
Hesabix c4d6d382ff change git repo in footer
Some checks are pending
PHP Composer / build (push) Waiting to run
2025-07-07 13:23:26 +00:00
Hesabix 75c94087be add bitpay logo 2025-06-03 05:51:31 +00:00
Hesabix c51111a3c6 add enamad and ... logo 2025-05-31 15:08:25 +00:00
Hesabix 40912a150d some redesign 2025-04-06 15:57:14 +00:00
Hesabix 79dd4c9e6d bug fix in she memaps logo 2025-04-06 15:51:02 +00:00
Hesabix 74ad9b3f18 bug fix in menu header 2025-04-06 15:49:09 +00:00
Hesabix b5f0481e4d redesign some parts 2025-04-06 15:47:37 +00:00
Hesabix 0111427a09 progress in site admin dashboard 2025-04-06 14:20:29 +00:00
Hesabix 335166d839 reviews and bug fix in keywords 2025-02-24 13:12:42 +00:00
Hesabix 4ef55d6cb0 bug fix 2025-02-14 08:20:48 +00:00
20 changed files with 1131 additions and 280 deletions

View file

@ -1,4 +1,4 @@
body {
body, .lead {
font-family: "Yekan Bakh FaNum";
font-feature-settings: "kern" on, "liga" on, "dlig" on;
-moz-font-feature-settings: "kern" on, "liga" on, "dlig" on;
@ -7,11 +7,47 @@ body {
-o-font-feature-settings: "kern" on, "liga" on, "dlig" on;
}
a.nav-link:hover {
color: #1743bb;
/* استایل‌های منوی ناوبری */
.navbar {
padding: 0.8rem 0;
}
.rul{
.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;
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 {
text-decoration: none;
}

38
public/css/login.css Normal file
View file

@ -0,0 +1,38 @@
/* 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.

After

Width:  |  Height:  |  Size: 104 KiB

View file

@ -39,39 +39,16 @@ class DashboardController extends AbstractDashboardController
public function configureDashboard(): Dashboard
{
return Dashboard::new()
// you can include HTML contents too (e.g. to link to an image)
->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')
// the domain used by default is 'messages'
->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()
// 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')
// 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()
->setLocales(['en','fa'])
// to further customize the locale option, pass an instance of
// EasyCorp\Bundle\EasyAdminBundle\Config\Locale
;
->setLocales([
'fa' => Locale::new('fa', 'فارسی', 'fa_IR'), // زبان پیش‌فرض
'en' => Locale::new('en', 'English', 'en_US'),
]);
}
public function configureMenuItems(): iterable

View file

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

View file

@ -29,4 +29,12 @@ class GeneralController extends AbstractController
'posts' => $posts
], $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,6 +9,8 @@ use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\HttpFoundation\Request;
class PageController extends AbstractController
{
@ -23,26 +25,48 @@ class PageController extends AbstractController
]);
}
#[Route('/blog/{page}', name: 'app_blog_home')]
public function app_blog_home(EntityManagerInterface $entityManagerInterface, $page = 1): Response
#[Route('/blog/{page}', name: 'app_blog_home', defaults: ['page' => 1])]
public function app_blog_home(EntityManagerInterface $entityManagerInterface, Request $request, $page = 1): Response
{
$perpage = 6;
$posts = $entityManagerInterface->getRepository(Post::class)->findByCat('blog',$perpage,$page);
$cat = $entityManagerInterface->getRepository(Cat::class)->findOneBy(['code'=>'blog']);
$count = $entityManagerInterface->getRepository(Post::class)->count(['cat'=>$cat]);
if(fmod($count,$perpage) == 0){
$maxpages = $count/$perpage;
$perpage = 9;
$search = $request->query->get('search', ''); // پارامتر جستجو از URL
$postRepository = $entityManagerInterface->getRepository(Post::class);
$catRepository = $entityManagerInterface->getRepository(Cat::class);
// پیدا کردن دسته‌بندی "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{
$maxpages = ($count/$perpage) + 1;
}
$maxpages = $count / $perpage;
$count = count($queryBuilder->getQuery()->getResult());
$maxpages = ceil($count / $perpage); // محاسبه حداکثر صفحات
$posts = $queryBuilder->setMaxResults($perpage)
->setFirstResult(($page - 1) * $perpage)
->getQuery()
->getResult();
// گرفتن همه دسته‌بندی‌ها برای سایدبار
$categories = $catRepository->findAll();
return $this->render('post/blog_home.html.twig', [
'posts' => $posts,
'page' => $page,
'perpage'=> $perpage,
'perpage' => $perpage,
'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);
}
#[Route('/st/{params}', name: 'app_redirect_sell', requirements: ['params' => '.+'])]
#[Route('/sl/{params}', name: 'app_redirect_sell', requirements: ['params' => '.+'])]
public function app_redirect_sell($params): Response
{
return $this->redirect("https://api.hesabix.ir/sl/" . $params);

View file

@ -14,55 +14,19 @@ class SecurityController extends AbstractController
$error = $authenticationUtils->getLastAuthenticationError();
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render('@EasyAdmin/page/login.html.twig', [
// parameters usually defined in Symfony login forms
return $this->render('/admin/login.html.twig', [
'error' => $error,
'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',
// 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' => 'ورود',
// 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',
// 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)
'target_path' => $this->generateUrl('admin', ['_locale' => 'fa']),
'username_label' => 'پست الکترونیکی',
// the label displayed for the password form field (the |trans filter is applied to it)
'password_label' => 'کلمه عبور',
// the label displayed for the Sign In form button (the |trans filter is applied to it)
'sign_in_label' => 'ورود',
// whether to enable or not the "forgot password?" link (default: false)
'forgot_password_enabled' => false,
// whether to enable or not the "remember me" checkbox (default: false)
'remember_me_enabled' => true,
// whether to check by default the "remember me" checkbox (default: false)
'remember_me_checked' => true,
// the label displayed for the remember me checkbox (the |trans filter is applied to it)
'remember_me_label' => 'مرا به یاد داشته باش',
]);
}

View file

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

View file

@ -0,0 +1,7 @@
{# 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,17 +5,20 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta lang="fa">
<meta content="width=device-width,initial-scale=1.0" name="viewport"/>
<meta
content="width=device-width,initial-scale=1.0" name="viewport"/>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-K1R1SYQY8E"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-K1R1SYQY8E');
</script>
{% if block('des') is not defined %}
<script async src="https://www.googletagmanager.com/gtag/js?id=G-K1R1SYQY8E"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-K1R1SYQY8E');
</script>
{% if block('des') is not defined %}
<meta content="{{twigFunctions.systemSettings.des}}" name="description"/>
{% else %}
<meta content="{{block('des') | trim}}" name="description"/>
@ -41,46 +44,59 @@
{% endblock %}
</head>
<body>
<nav class="navbar navbar-expand-lg border-bottom bg-body-tertiary">
<div class="container-fluid">
<a class="navbar-brand text-primary" href="{{path('app_home')}}">
<nav class="navbar navbar-expand-lg border-bottom bg-body-tertiary shadow-sm">
<div class="container">
<a class="navbar-brand text-primary d-flex align-items-center gap-2" href="{{path('app_home')}}">
<img src="{{asset('/favicon/favicon.svg')}}" alt="نرم افزار حسابداری آنلاین حسابیکس" width="30" height="30">
حسابیکس
<span class="">حسابیکس</span>
</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">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav">
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="{{path('app_home')}}">صفحه نخست</a>
<a class="nav-link px-3 py-2 rounded-3 transition-all" href="{{path('app_home')}}">صفحه نخست</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{path('app_guide')}}">راهنمای جامع</a>
<a class="nav-link px-3 py-2 rounded-3 transition-all" href="{{path('app_guide')}}">راهنمای جامع</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{path('app_blog_home')}}">وبلاگ</a>
<a class="nav-link px-3 py-2 rounded-3 transition-all" href="{{path('app_blog_home')}}">وبلاگ</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{path('app_page',{'url':'sponsors'})}}">حامیان مالی</a>
<a class="nav-link px-3 py-2 rounded-3 transition-all" href="{{path('app_page',{'url':'sponsors'})}}">حامیان مالی</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{path('app_page',{'url':'about'})}}">داستان حسابیکس</a>
<a class="nav-link px-3 py-2 rounded-3 transition-all" href="{{path('app_page',{'url':'about'})}}">داستان حسابیکس</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{path('app_page',{'url':'contact'})}}">تماس با ما</a>
<a class="nav-link px-3 py-2 rounded-3 transition-all" href="{{path('app_page',{'url':'contact'})}}">تماس با ما</a>
</li>
</ul>
<span class="d-flex flex-fill justify-content-end">
<a target="_blank" class="btn btn-sm btn-primary rounded-4" href="https://app.hesabix.ir">ورود / عضویت</a>
</span>
<div class="d-flex">
<a target="_blank" class="btn btn-primary rounded-4 px-4 py-2 fw-bold transition-all" href="https://app.hesabix.ir">
ورود / عضویت
</a>
</div>
</div>
</div>
</nav>
{% block body %}{% endblock %}
<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">
<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">
<a href="{{path('app_page',{'url':'hsx'})}}" class="nav-link px-2">توکن HSX</a>
</li>
@ -91,7 +107,7 @@
<a href="{{path('app_changes')}}" class="nav-link px-2">تغییرات</a>
</li>
<li class="nav-item">
<a href="https://github.com/morrning" target="_blank" class="nav-link px-2">مخازن کد</a>
<a href="https://source.hesabix.ir/morrning" target="_blank" class="nav-link px-2">مخازن کد</a>
</li>
<li class="nav-item">
<a href="{{path('app_page',{'url':'open-source'})}}" class="nav-link px-2">متن‌باز</a>

View file

@ -10,32 +10,31 @@
<div class="container-fluid pt-md-5 pt-sm-2">
<div class="row align-items-center">
<div class="col-sm-12 col-md-7 mb-3 text-center">
<h1 class="fs-2 fw-bold text-primary">شروعی ساده و آسان
<h1 class="fs-2 fw-bold text-primary mb-4">شروعی ساده و آسان
<br>
برای مدیریت کسب‌و‌کار شما
</h1>
<p class="fs-6 mb-1">حسابیکس پلتفرم حسابداری ابری،متن‌باز و واقعا رایگان</p>
<p class="fs-6 text-body-tertiary mb-3">
<p class="fs-5 mb-3 text-secondary">حسابیکس پلتفرم حسابداری ابری،متن‌باز و واقعا رایگان</p>
<p class="fs-6 text-body-tertiary mb-4">
میزبان بیش از
<span class="text-danger">۳۵ هزار
<span class="text-danger fw-bold">41 هزار
</span>
کاربر و
<span class="text-danger">۲۳ هزار
<span class="text-danger fw-bold">38 هزار
</span>
کسب و کار فعال
</p>
<a class="btn rounded-4 btn-primary" href="https://app.hesabix.ir" target="_blank">هم‌اکنون عضو شوید</a>
<a class="btn rounded-4 btn-primary px-4 py-2 fs-5 shadow-sm" href="https://app.hesabix.ir" target="_blank">هم‌اکنون عضو شوید</a>
</div>
<div class="col-sm-12 col-md-5 mb-3">
<img src="{{asset('img/viewWindows.png')}}" class="img-fluid" alt="نرم افزار حسابداری حسابیکس"/>
<img src="{{asset('img/viewWindows.png')}}" class="img-fluid rounded-4" alt="نرم افزار حسابداری حسابیکس"/>
</div>
</div>
<div class="row">
<div class="row mt-4">
<div class="col-12">
<div class="card text-bg-light mb-3">
<div class="card-body text-center">
<p class="card-text text-body-secondary">
<div class="card text-bg-light mb-3 border-0 shadow-sm">
<div class="card-body text-center p-4">
<p class="card-text text-center text-body-secondary">
حسابیکس یک پلتفرم مدیریت کسب‌و‌کار که پاسخگوی تمام اهداف تجاری شما از یک فروشگاه کوچک تا یک مجتمع بازرگانی بزرگ است
<br>
کافی است گام اول را بردارید،جهت پیشبرد اهدافتان در کنار شما هستیم.
@ -47,28 +46,38 @@
</div>
</div>
</div>
<div class="col-12 mb-4">
<div class="container bg-body-tertiary rounded-3 p-4">
<h4 class="text-center mb-4 text-primary">حامیان حسابیکس</h1>
<div class="row row-cols-2 row-cols-md-4 g-4 justify-content-center">
<div class="col-12 mb-3">
<div class="container bg-body-tertiary rounded-4 p-4">
<h4 class="text-center mb-3 text-primary fw-bold">حامیان مالی حسابیکس</h4>
<p class="text-center text-muted mb-3">حسابیکس با مشارکت حامیان مالی و حمایت کاربران عزیز، به صورت مستمر در حال توسعه و بهبود است. هر یک از شما با استفاده از خدمات حسابیکس، در پیشرفت این پلتفرم نقش دارید.</p>
<div class="row row-cols-2 row-cols-md-4 g-3 justify-content-center">
<div class="col">
<div class="card h-100 border-0 shadow-sm">
<a href="https://parspack.com" target="_blank">
<img src="{{asset('img/sp/parspack-logo.png')}}" class="card-img-top p-3" alt="Sponsor 1 Logo">
<div class="card h-100 border-0 shadow-sm hover-card">
<a href="https://parspack.com" target="_blank" class="text-decoration-none">
<div class="card-body text-center p-3">
<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>
</div>
</div>
<div class="col">
<div class="card h-100 border-0 shadow-sm">
<a href="https://melipayamak.com" target="_blank">
<img src="{{asset('img/sp/melipayamak.png')}}" class="card-img-top p-3" alt="Sponsor 1 Logo">
<div class="card h-100 border-0 shadow-sm hover-card">
<a href="https://melipayamak.com" target="_blank" class="text-decoration-none">
<div class="card-body text-center p-3">
<img src="{{asset('img/sp/melipayamak.png')}}" class="img-fluid p-2" alt="ملی پیامک">
<p class="text-muted mt-2 mb-0">ملی پیامک</p>
</div>
</a>
</div>
</div>
<div class="col">
<div class="card h-100 border-0 shadow-sm">
<a href="https://raddata.ir" target="_blank">
<img src="{{asset('img/sp/raddata.png')}}" class="card-img-top p-3" alt="Sponsor 1 Logo">
<div class="card h-100 border-0 shadow-sm hover-card">
<a href="https://raddata.ir" target="_blank" class="text-decoration-none">
<div class="card-body text-center p-3">
<img src="{{asset('img/sp/raddata.png')}}" class="img-fluid p-2" alt="راد دیتا">
<p class="text-muted mt-2 mb-0">راد دیتا</p>
</div>
</a>
</div>
</div>
@ -80,21 +89,62 @@
<div class="container-fluid">
<div class="row align-items-center">
<div class="col-sm-12 col-md-3 mb-3 text-center">
<img src="{{asset('img/viewMobile.png')}}" class="img-fluid" alt="نرم افزار حسابداری حسابیکس"/>
<img src="{{asset('img/viewMobile.png')}}" class="img-fluid rounded-4" alt="نرم افزار حسابداری حسابیکس"/>
</div>
<div class="col-sm-12 col-md-9 mb-3">
<h2 class="text-primary">شروعی سریع و ساده با حسابیکس</h2>
<ul class="">
<li class="my-3">
ابتدا در حسابیکس عضو شوید و پنل کسب و کار خود را به سادگی بسازید، توجه داشته باشید هر تعداد کسب‌و‌کار که داشته باشید می توانید از طریق یک داشبورد واحد آن‌ها مدیریت کنید
</li>
<li class="my-3">
اطلاعات کسب و کار خود را وارد کنید و تنظیمات اولیه را انجام دهید،حسابیکس آماده و در اختیار شماست . در صورتی که سوالی درباره حسابیکس داشتید می‌توانید تیکت پشتیبانی ارسال کنید
</li>
<li class="my-3">
از حسابیکس بر روی موبایل، تبلت و کامپیوتر لذت ببرید تنها کافی است که یک اتصال اینترنت داشته باشید،حسابیکس در هر نقطه‌ای از جهان در دسترس شما خواهد بود
</li>
</ul>
<h2 class="text-primary mb-4">شروعی سریع و ساده با حسابیکس</h2>
<div class="row g-4">
<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">
<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
<circle cx="8.5" cy="7" r="4"></circle>
<line x1="20" y1="8" x2="20" y2="14"></line>
<line x1="23" y1="11" x2="17" y2="11"></line>
</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">
<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>
@ -103,20 +153,22 @@
<div class="col-12">
<div class="p-1 mb-4">
<div class="container-fluid">
<h3 class="text-primary fs-2 text-center py-3">از وبلاگ حسابیکس</h3>
<h3 class="text-primary fs-2 text-center py-4 fw-bold">از وبلاگ حسابیکس</h3>
<div class="row">
{% for post in posts %}
<div class="col-sm-12 col-md-4 mb-3">
<div class="card d-flex position-relative">
<img src="{{asset('uploaded/' ~ post.mainPic )}}" class="card-img-top" alt="{{ post.title}}">
<div class="card-body">
<h3 class="card-title text-primary fs-4">{{post.title}}</h3>
<p class="card-text">{{ post.intro }}</p>
<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 class="col-sm-12 col-md-4 mb-4">
<div class="card blog-card h-100 border-0 shadow-sm">
<div class="position-relative">
<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">
<h3 class="card-title text-primary fs-5 fw-bold mb-3">{{post.title}}</h3>
<p class="card-text text-muted mb-4">{{ post.intro }}</p>
<a href="{{path('app_blog_post',{'url':post.url})}}" class="btn btn-outline-primary rounded-4 stretched-link">ادامه مطلب</a>
</div>
</div>
</div>
{% endfor %}
@ -124,10 +176,120 @@
</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="card mb-3 bg-body-tertiary">
<div class="card mb-5 bg-body-tertiary">
<div class="row g-0">
<div class="col-md-4 text-center align-items-center">
<div class="col-md-4 text-center align-items-center d-flex justify-content-center">
<img src="{{asset('/img/memaps.svg')}}" style="max-height: 10rem;" class="img-fluid rounded-start" alt="نقشه‌های آنلاین می مپس">
</div>
<div class="col-md-8">
@ -148,4 +310,161 @@
</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 %}

View file

@ -1,5 +1,7 @@
{% extends 'base.html.twig' %}
{% block keywords %}{{item.keywords}}{% endblock %}
{% block keywords %}
{{item.keywords}}
{% endblock %}
{% block title %}
{{ item.title }}
{% endblock %}
@ -11,7 +13,7 @@
{% block body %}
<style></style>
<div class="container mt-3">
<h1 class="text-primary fs-3">مستندات استفاده از API حسابیکس</h1>
<h1 class="text-primary fs-3">مستندات استفاده از API حسابیکس</h1>
<div class="row">
<div class="col-sm-12 col-md-4 mb-2">
<div class="accordion rounded-3" id="accaccordion">
@ -41,7 +43,7 @@
<div class="rounded-3 shadow p-3">
<h1 class="text-primary fs-4">{{item.title}}</h1>
<p>{{item.body | raw}}</p>
<p>{{item.plain | raw}}</p>
<p>{{item.plain | raw}}</p>
</div>
</div>
</div>

View file

@ -8,55 +8,117 @@
{% endblock %}
{% block body %}
<main class="container mt-2 mb-5">
<h1 class="text-primary fs-3">وبلاگ حسابیکس</h1>
<div class="row">
<div class="col-md-12">
<div class="row">
{% for post in posts %}
<div class="col-md-4">
<article class="card mb-4">
<img src="{{asset('uploaded/'~ post.mainPic)}}" alt="{{post.title}}" class="card-img-top">
<div class="card-body">
<h5 class="card-title text-primary">{{ post.title }}</h5>
<p class="card-text">{{ post.intro }}</p>
<a href="{{path('app_blog_post',{'url':post.url})}}" class="btn btn-sm rounded-4 btn-primary stretched-link">ادامه مطلب</a>
</div>
</article>
</div>
{% endfor %}
<main class="container-fluid px-0">
<div class="blog-header position-relative">
<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 class="row">
<nav aria-label="Page navigation example" style="direction: ltr;">
<ul class="pagination justify-content-center">
<li class="page-item {% if page == 1 %}disabled{% endif %}">
<a href="{{ path('app_blog_home',{'page':page -1})}}" class="page-link">صفحه قبل</a>
</li>
<li class="page-item">
<a class="page-link disabled" href="{{ path('app_blog_home',{'page':page })}}">{{page}}</a>
</li>
{% if (page + 1) <= maxpages %}
<li class="page-item">
<a class="page-link" href="{{ path('app_blog_home',{'page':page +1})}}">{{page +1}}</a>
</li>
{% endif %}
{% if (page + 2) <= maxpages %}
<li class="page-item">
<a class="page-link" href="{{ path('app_blog_home',{'page':page +2})}}">{{page + 2}}</a>
</li>
{% endif %}
{% if (page + 3) <= maxpages %}
<li class="page-item">
<a class="page-link" href="{{ path('app_blog_home',{'page':page +3})}}">{{page + 3}}</a>
</li>
{% endif %}
<li class="page-item">
<a href="{{ path('app_blog_home',{'page':page +1})}}" class="page-link {% if (page + 1) > maxpages %}disabled{% endif %}">صفحه بعدی</a>
</li>
</ul>
</nav>
</div>
</div>
<div class="container mt-5 mb-5">
<div class="row">
<div class="col-md-12">
<div class="row g-4">
{% for post in posts %}
<div class="col-md-4">
<article class="card h-100 border-0 shadow-sm hover-shadow transition-all">
<div class="position-relative">
<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="d-flex justify-content-between align-items-center mb-2">
<small class="text-muted">
<i class="fas fa-calendar-alt me-1"></i>
{{ 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>
</article>
</div>
{% endfor %}
</div>
<div class="row mt-5">
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
<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">
<i class="fas fa-chevron-right"></i>
صفحه قبل
</a>
</li>
<li class="page-item">
<a class="page-link rounded-pill mx-1 active" href="{{ path('app_blog_home',{'page':page })}}">{{page}}</a>
</li>
{% if (page + 1) <= maxpages %}
<li class="page-item">
<a class="page-link rounded-pill mx-1" href="{{ path('app_blog_home',{'page':page +1})}}">{{page +1}}</a>
</li>
{% endif %}
{% if (page + 2) <= maxpages %}
<li class="page-item">
<a class="page-link rounded-pill mx-1" href="{{ path('app_blog_home',{'page':page +2})}}">{{page + 2}}</a>
</li>
{% endif %}
{% if (page + 3) <= maxpages %}
<li class="page-item">
<a class="page-link rounded-pill mx-1" href="{{ path('app_blog_home',{'page':page +3})}}">{{page + 3}}</a>
</li>
{% endif %}
<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 %}">
صفحه بعدی
<i class="fas fa-chevron-left"></i>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
</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 %}

View file

@ -1,5 +1,6 @@
{% extends 'base.html.twig' %}
{% block keywords %}item.keywords
{% block keywords %}
{{ item.keywords }}
{% endblock %}
{% block title %}
{{ item.title }}
@ -10,49 +11,117 @@
{% endblock %}
{% 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 %}
{{ item.plain | raw}}
{% endif %}
{% if item.body is not null %}
<div class="container mt-3">
<div class="container mt-4">
<div class="row">
<div class="col-sm-12 col-md-8">
<h1 class="text-primary fs-3 my-3">{{item.title}}</h1>
<img class="img-fluid rounded-4" src="{{asset('uploaded/'~ item.mainPic)}}" alt="{{item.title}}"/>
<div class="card bg-body-tertiary my-4">
<div class="card-body">
<div class="card-text">
{{item.intro}}
</div>
<div class="card-text">
<figure>
<blockquote class="blockquote">
</blockquote>
<figcaption class="blockquote-footer">
توسط
{{item.submitter.name}}
<cite title="Source Title"> در تاریخ
{{Jdate.jdate('Y/n/d',item.dateSubmit)}}
</cite>
</figcaption>
</figure>
<article class="blog-post mb-4">
<img class="img-fluid post-image mb-4" src="{{asset('uploaded/'~ item.mainPic)}}" alt="{{item.title}}"/>
<h1 class="text-primary fs-5">{{item.title}}</h1>
<div class="card post-card bg-body-tertiary mb-4">
<div class="card-body">
<div class="post-intro card-text mb-3">
{{item.intro}}
</div>
<div class="post-meta card-text">
<figure>
<blockquote class="blockquote"></blockquote>
<figcaption class="blockquote-footer">
توسط
<strong>{{item.submitter.name}}</strong>
<cite title="Source Title">
در تاریخ
{{Jdate.jdate('Y/n/d',item.dateSubmit)}}
</cite>
</figcaption>
</figure>
</div>
</div>
</div>
</div>
<p>{{ item.body | raw }}</p>
<div class="post-content mt-4">
{{ item.body | raw }}
</div>
</article>
</div>
<div class="col-sm-12 col-md-4">
<h3 class="text-primary">جدیدترین‌ها</h3>
{% for post in posts %}
<div class="card mb-2">
<img src="{{asset('uploaded/'~ post.mainPic)}}" class="card-img-top" alt="{{post.title}}">
<div class="card-body">
<a href="{{path('app_blog_post',{'url':post.url})}}" class="rul stretched-link">
<h5 class="card-title text-primary">{{post.title}}</h5>
</a>
<div class="recent-posts">
<h3 class="text-primary mb-3">جدیدترین‌ها</h3>
{% for post in posts %}
<div class="card mb-3">
<img src="{{asset('uploaded/'~ post.mainPic)}}" class="card-img-top" alt="{{post.title}}">
<div class="card-body">
<a href="{{path('app_blog_post',{'url':post.url})}}" class="stretched-link text-decoration-none">
<h5 class="card-title text-primary">{{post.title}}</h5>
</a>
</div>
</div>
</div>
{% endfor %}
{% endfor %}
</div>
</div>
</div>
</div>

View file

@ -1,6 +1,10 @@
{% extends 'base.html.twig' %}
{% block keywords %}{{item.keywords}}{% endblock %}
{% block title %}{{ item.title }}{% endblock %}
{% block keywords %}
{{item.keywords}}
{% endblock %}
{% block title %}
{{ item.title }}
{% endblock %}
{% block des %}
{{ item.intro }}
@ -9,7 +13,7 @@
{% block body %}
<style></style>
<div class="container mt-3">
<h1 class="text-primary fs-3">راهنمای استفاده از حسابیکس</h1>
<h1 class="text-primary fs-3">راهنمای استفاده از حسابیکس</h1>
<div class="row">
<div class="col-sm-12 col-md-4 mb-2">
<div class="accordion rounded-3" id="accaccordion">
@ -39,7 +43,7 @@
<div class="rounded-3 shadow p-3">
<h1 class="text-primary fs-4">{{item.title}}</h1>
<p>{{item.body | raw}}</p>
<p>{{item.plain | raw}}</p>
<p>{{item.plain | raw}}</p>
</div>
</div>
</div>

View file

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

View file

@ -1,5 +1,6 @@
{% extends 'base.html.twig' %}
{% block keywords %}item.keywords
{% block keywords %}
{{item.keywords}}
{% endblock %}
{% block title %}
تاریخچه تغییرات حسابیکس
@ -13,7 +14,7 @@
<div class="container p-3">
<div class="row">
<div class="col-12 mb-2">
<img src="{{ asset('/img/versions.webp')}}" class="img-fluid rounded-3 shadow" style="max-height:23rem;" />
<img src="{{ asset('/img/versions.webp')}}" class="img-fluid rounded-3 shadow" style="max-height:23rem;"/>
</div>
{% for item in items %}
<div class="col-12 mb-2">

View file

@ -0,0 +1,335 @@
{% 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 %}