diff --git a/hesabixCore/config/packages/twig.yaml b/hesabixCore/config/packages/twig.yaml index 64979fa..6b06b24 100644 --- a/hesabixCore/config/packages/twig.yaml +++ b/hesabixCore/config/packages/twig.yaml @@ -6,7 +6,6 @@ twig: ] globals: Jdate: "@Jdate" - Blog: "@Blog" twigFunctions: "@twigFunctions" when@test: twig: diff --git a/hesabixCore/config/services.yaml b/hesabixCore/config/services.yaml index 375185b..e9e998f 100644 --- a/hesabixCore/config/services.yaml +++ b/hesabixCore/config/services.yaml @@ -4,7 +4,6 @@ # Put parameters here that don't need to change on each machine where the app is deployed # https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration parameters: - blogMediaDir: '%kernel.project_dir%/../public_html/blog/media' archiveMediaDir: '%kernel.project_dir%/../hesabixArchive' archiveTempMediaDir: '%kernel.project_dir%/../hesabixArchive/temp' avatarDir: '%kernel.project_dir%/../hesabixArchive/avatars' @@ -39,9 +38,6 @@ services: Provider: class: App\Service\Provider arguments: [ "@doctrine.orm.entity_manager" ] - Blog: - class: App\Service\Blog - arguments: [ "@doctrine.orm.entity_manager" ] twigFunctions: class: App\Service\twigFunctions arguments: [ "@doctrine.orm.entity_manager" ] diff --git a/hesabixCore/src/Controller/BlogController.php b/hesabixCore/src/Controller/BlogController.php deleted file mode 100644 index 95aba2a..0000000 --- a/hesabixCore/src/Controller/BlogController.php +++ /dev/null @@ -1,261 +0,0 @@ -getRepository(BlogCat::class)->findAll(); - foreach ($cats as $cat){ - $temp = []; - $temp['id'] = $cat->getId(); - $temp['name'] = $cat->getLabel(); - $temp['code'] = $cat->getCode(); - $result[] = $temp; - } - return $this->json($result); - } - - #[Route('/api/blog/insert', name: 'app_blog_content_insert')] - public function app_blog_content_insert(Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse - { - $params = []; - if ($content = $request->getContent()) { - $params = json_decode($content, true); - } - if(array_key_exists('intro',$params) && array_key_exists('title',$params) && array_key_exists('cat',$params) && array_key_exists('body',$params )){ - $cat = $entityManager->getRepository(BlogCat::class)->find($params['cat']); - $post = new BlogPost(); - $post->setBody($params['body']); - $post->setCat($cat); - $post->setIntero($params['intro']); - $post->setImg($params['img']); - $post->setTitle($params['title']); - $post->setDateSubmit(time()); - $post->setViews(1); - $post->setSubmitter($this->getUser()); - $post->setUrl(str_replace(' ','_',$params['title'])); - $entityManager->persist($post); - $entityManager->flush(); - return $this->json([ - 'error'=> 0, - 'message'=> 'ok', - 'url'=>$post->getUrl() - ]); - } - return $this->json([ - 'error'=> 999, - 'message'=> 'تمام موارد لازم را وارد کنید.' - ]); - } - - /** - * @throws \Doctrine\ORM\NonUniqueResultException - * @throws \Doctrine\ORM\NoResultException - */ - #[Route('/api/blog/contents/search', name: 'app_blog_contents_get')] - public function app_blog_contents_get(Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse - { - $params = []; - if ($content = $request->getContent()) { - $params = json_decode($content, true); - } - $params = $provider->createSearchParams($request); - $items = $entityManager->getRepository(BlogPost::class)->search($params); - $response = []; - foreach ($items as $item){ - $temp = []; - $temp['id'] = $item->getId(); - $temp['title'] = $item->getTitle(); - $temp['intero'] = $item->getIntero(); - $temp['body'] = $item->getBody(); - $temp['submitter'] = $item->getSubmitter()->getFullName(); - $temp['dateSubmit'] = $jdate->pastTime($item->getDateSubmit()); - $temp['cat'] = $item->getCat()->getLabel(); - $temp['views'] = $item->getViews(); - $temp['url'] = $item->getUrl(); - $temp['img'] = $item->getImg(); - $response[] = $temp; - } - // calc has next page - $nextPage = true; - if((int)$provider->maxPages($params,$entityManager->getRepository(BlogPost::class)->getAllContentCount()) == $params['page']) - $nextPage = false; - return $this->json([ - 'data'=>$response, - 'nextPage'=>$nextPage - ]); - } - - /** - * @throws \Doctrine\ORM\NonUniqueResultException - * @throws \Doctrine\ORM\NoResultException - */ - #[Route('/api/blog/get/last', name: 'app_blog_get_last_posts')] - public function app_blog_get_last_posts(Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse - { - - $items = $entityManager->getRepository(BlogPost::class)->findLast(); - $response = []; - foreach ($items as $item){ - $temp = []; - $temp['id'] = $item->getId(); - $temp['title'] = $item->getTitle(); - $temp['intero'] = $item->getIntero(); - $temp['body'] = $item->getBody(); - $temp['submitter'] = $item->getSubmitter()->getFullName(); - $temp['dateSubmit'] = $jdate->pastTime($item->getDateSubmit()); - $temp['cat'] = $item->getCat()->getLabel(); - $temp['views'] = $item->getViews(); - $temp['url'] = $item->getUrl(); - $temp['img'] = $item->getImg(); - $response[] = $temp; - } - return $this->json([ - 'data'=>$response, - ]); - } - - /** - * @throws \Doctrine\ORM\NonUniqueResultException - * @throws \Doctrine\ORM\NoResultException - */ - #[Route('/api/blog/post/get/{url}', name: 'app_blog_post_get')] - public function app_blog_post_get($url,Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse - { - $post = $entityManager->getRepository(BlogPost::class)->findOneBy(['url'=>$url]); - if(!$post) - throw $this->createNotFoundException(); - $temp = []; - $temp['id'] = $post->getId(); - $temp['title'] = $post->getTitle(); - $temp['intero'] = $post->getIntero(); - $temp['body'] = $post->getBody(); - $temp['submitter'] = $post->getSubmitter()->getFullName(); - $temp['dateSubmit'] = $jdate->pastTime($post->getDateSubmit()); - $temp['cat'] = $post->getCat()->getLabel(); - $temp['views'] = $post->getViews(); - $temp['url'] = $post->getUrl(); - $temp['img'] = $post->getImg(); - $post->setViews($post->getViews() + 1); - $entityManager->persist($post); - $entityManager->flush(); - return $this->json($temp); - } - - #[Route('/api/blog/comments/get/{url}', name: 'app_blog_comments_get')] - public function app_blog_comments_get($url,Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse - { - $post = $entityManager->getRepository(BlogPost::class)->findOneBy(['url'=>$url]); - if(!$post) - throw $this->createNotFoundException(); - $comments = $entityManager->getRepository(BlogComment::class)->findBy(['post'=>$post]); - $cmnts = []; - foreach ($comments as $comment){ - $temp = []; - $temp['id'] = $comment->getId(); - $temp['body'] = $comment->getBody(); - $temp['submitter'] = $comment->getSubmitter()->getFullName(); - $temp['dateSubmit'] = $jdate->pastTime($comment->getDateSubmit()); - $temp['hash_email'] = $comment->getSubmitter()->getEmail(); - $cmnts[] = $temp; - } - return $this->json($cmnts); - } - #[Route('/api/blog/comment/insert/{url}', name: 'app_blog_comment_insert')] - public function app_blog_comment_insert($url,Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse - { - $params = []; - if ($content = $request->getContent()) { - $params = json_decode($content, true); - } - if($params['body']){ - - } - $post = $entityManager->getRepository(BlogPost::class)->findOneBy(['url'=>$url]); - if(!$post) - throw $this->createNotFoundException(); - $comment = $entityManager->getRepository(BlogComment::class)->findOneBy(['post'=>$post,'submitter'=>$this->getUser()],['id'=>'DESC']); - if($comment){ - if($comment->getDateSubmit() > time() - 350){ - //to many request - return $this->json([ - 'result'=>2 - ]); - } - } - $comment = new BlogComment(); - $comment->setDateSubmit(time()); - $comment->setSubmitter($this->getUser()); - $comment->setPost($post); - $comment->setBody($params['body']); - $entityManager->persist($comment); - $entityManager->flush(); - $temp = []; - $temp['id'] = $comment->getId(); - $temp['body'] = $comment->getBody(); - $temp['submitter'] = $comment->getSubmitter()->getFullName(); - $temp['dateSubmit'] = $jdate->pastTime($comment->getDateSubmit()); - $temp['hash_email'] = $comment->getSubmitter()->getEmail(); - return $this->json([ - 'result'=>1, - 'data'=> $temp - ]); - } - - /** - * @throws \Doctrine\ORM\NonUniqueResultException - * @throws \Doctrine\ORM\NoResultException - */ - #[Route('/api/admin/blog/posts', name: 'app_admin_posts_get')] - public function app_admin_posts_get(Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse - { - $items = array_reverse($entityManager->getRepository(BlogPost::class)->findAll()); - $response = []; - foreach ($items as $item){ - $temp = []; - $temp['id'] = $item->getId(); - $temp['title'] = $item->getTitle(); - $temp['submitter'] = $item->getSubmitter()->getFullName(); - $temp['views'] = $item->getViews(); - $temp['url'] = $item->getUrl(); - $temp['cat'] = $item->getCat()->getLabel(); - $temp['dateSubmit'] = $jdate->jdate('Y/n/d H:i',$item->getDateSubmit()); - $response[] = $temp; - } - return $this->json($response); - } - - /** - * @throws \Doctrine\ORM\NonUniqueResultException - * @throws \Doctrine\ORM\NoResultException - */ - #[Route('/api/admin/blog/post/delete/{url}', name: 'app_admin_post_delete')] - public function app_admin_post_delete($url,Jdate $jdate, Provider $provider,Request $request,SerializerInterface $serializer, EntityManagerInterface $entityManager): JsonResponse - { - $post = $entityManager->getRepository(BlogPost::class)->findOneBy(['url'=>$url]); - if($post){ - $entityManager->remove($post); - $entityManager->flush(); - } - return $this->json(['result'=>1]); - } - -} diff --git a/hesabixCore/src/Controller/Front/AppController.php b/hesabixCore/src/Controller/Front/AppController.php deleted file mode 100644 index ac84dea..0000000 --- a/hesabixCore/src/Controller/Front/AppController.php +++ /dev/null @@ -1,194 +0,0 @@ -render('/app/dashboard.html.twig'); - } - - /** - * @Route("/app/api/list", name="app_front_api_list") - */ - public function app_front_api_list(EntityManagerInterface $entityManager): Response - { - return $this->render('/app/api/list.html.twig',[ - 'items'=>$entityManager->getRepository(APIDocument::class)->findAll() - ]); - } - /** - * @Route("/app/api/new", name="app_front_api_new") - */ - public function app_front_api_new(Request $request,EntityManagerInterface $entityManager): Response - { - $item = new APIDocument(); - $form = $this->createForm(APIDocumentType::class,$item,[]); - - $form->handleRequest($request); - if ($form->isSubmitted() && $form->isValid()) { - $entityManager->persist($item); - $entityManager->flush(); - return $this->redirectToRoute('app_front_api_list'); - } - return $this->render('/app/api/new.html.twig',[ - 'form'=>$form->createView() - ]); - } - /** - * @Route("/app/api/edit/{id}", name="app_front_api_edit") - */ - public function app_front_api_edit(Request $request,EntityManagerInterface $entityManager,string $id): Response - { - $item = $entityManager->getRepository(APIDocument::class)->find($id); - if(!$item) - throw $this->createNotFoundException(); - - $form = $this->createForm(APIDocumentType::class,$item,[]); - - $form->handleRequest($request); - if ($form->isSubmitted() && $form->isValid()) { - $entityManager->persist($item); - $entityManager->flush(); - return $this->redirectToRoute('app_front_api_list'); - } - return $this->render('/app/api/new.html.twig',[ - 'form'=>$form->createView() - ]); - } - /** - * @Route("/app/api/delete/{id}", name="app_front_api_delete") - */ - public function app_front_api_delete(String $id,EntityManagerInterface $entityManager): Response - { - $item = $entityManager->getRepository(APIDocument::class)->find($id); - if($item){ - if( $item->getId() != 1){ - $entityManager->remove($item); - $entityManager->flush(); - } - - } - return $this->redirectToRoute('app_front_api_list'); - } - - /** - * @Route("/app/guide/list", name="app_front_guide_list") - */ - public function app_front_guide_list(EntityManagerInterface $entityManager): Response - { - return $this->render('/app/guide/list.html.twig',[ - 'items'=>$entityManager->getRepository(GuideContent::class)->findAll() - ]); - } - - /** - * @Route("/app/guide/delete/{id}", name="app_front_guide_delete") - */ - public function app_front_guide_delete(String $id,EntityManagerInterface $entityManager): Response - { - $item = $entityManager->getRepository(GuideContent::class)->find($id); - if($item){ - $entityManager->remove($item); - $entityManager->flush(); - } - return $this->redirectToRoute('app_front_guide_list'); - } - - /** - * @Route("/app/guide/new", name="app_front_guide_new") - */ - public function app_front_guide_new(Request $request,EntityManagerInterface $entityManager): Response - { - $item = new GuideContent(); - $form = $this->createForm(GuideType::class,$item,[]); - - $form->handleRequest($request); - if ($form->isSubmitted() && $form->isValid()) { - $item->setDateSubmit(time()); - $item->setUrl(0); - $item->setSubmiter($this->getUser()); - $entityManager->persist($item); - $entityManager->flush(); - return $this->redirectToRoute('app_front_guide_list'); - } - return $this->render('/app/guide/new.html.twig',[ - 'form'=>$form->createView() - ]); - } - - /** - * @Route("/app/guide/edit/{id}", name="app_front_guide_edit") - */ - public function app_front_guide_edit(string $id, Request $request,EntityManagerInterface $entityManager): Response - { - $item = $entityManager->getRepository(GuideContent::class)->find($id); - if(!$item) - throw $this->createNotFoundException(); - $form = $this->createForm(GuideType::class,$item,[]); - - $form->handleRequest($request); - if ($form->isSubmitted() && $form->isValid()) { - $item->setDateSubmit(time()); - $item->setUrl(0); - $item->setSubmiter($this->getUser()); - $entityManager->persist($item); - $entityManager->flush(); - return $this->redirectToRoute('app_front_guide_list'); - } - return $this->render('/app/guide/new.html.twig',[ - 'form'=>$form->createView() - ]); - } - - /** - * @throws \Exception - */ - #[Route('/app/database/sync', name: 'app_front_sync_database')] - public function app_front_sync_database(KernelInterface $kernel): Response - { - $application = new Application($kernel); - $application->setAutoExit(false); - - $input = new ArrayInput([ - 'command' => 'doctrine:schema:update', - // (optional) define the value of command arguments - '--force' => true, - '--complete' => true - ]); - - // You can use NullOutput() if you don't need the output - $output = new BufferedOutput(); - $application->run($input, $output); - - // return the output, don't use if you used NullOutput() - $content = $output->fetch(); - return $this->render('/app/sync-database.html.twig',[ - 'content'=>$content - ]); - } -} diff --git a/hesabixCore/src/Controller/Front/BlogController.php b/hesabixCore/src/Controller/Front/BlogController.php deleted file mode 100644 index b9b977f..0000000 --- a/hesabixCore/src/Controller/Front/BlogController.php +++ /dev/null @@ -1,252 +0,0 @@ -getRepository(BlogPost::class)->search(['page'=>$page,'count'=>10]); - $nextPage = true; - if((int)($entityManager->getRepository(BlogPost::class)->getAllContentCount()/10) <= $page) - $nextPage = false; - return $this->render('blog/list.html.twig',[ - 'items'=>$items, - 'nextPage'=>$nextPage, - 'page'=>$page - ]); - } - - #[Route('/front/blog/post/{url}', name: 'general_blog_post')] - public function general_blog_post(Request $request,EntityManagerInterface $entityManager, String $url): Response - { - $item = $entityManager->getRepository(BlogPost::class)->findOneBy(['url'=>$url]); - if(!$item) throw $this->createNotFoundException(); - $item->setViews($item->getViews() + 1); - $entityManager->persist($item); - $entityManager->flush(); - $comment = new BlogComment(); - $form = $this->createForm(CommentType::class,$comment); - $form->handleRequest($request); - if($form->isSubmitted() && $form->isValid()){ - echo 11; - $oldComments = $entityManager->getRepository(BlogComment::class)->findBy([ - 'email'=>$comment->getEmail() - ],['id'=>'DESC']); - if(count($oldComments) == 0){ - $comment->setDateSubmit(time()); - $comment->setPost($item); - $entityManager->persist($comment); - $entityManager->flush(); - $comment->setBody(''); - $form->addError(new FormError('دیدگاه شما ثبت شد بعد از تایید مدیر منتشر خواهد شد.')); - } - else{ - if($oldComments[0]->getDateSubmit() > time() + 300){ - $comment->setDateSubmit(time()); - $comment->setPost($item); - $comment->setSubmitter($this->getUser()); - $entityManager->persist($comment); - $entityManager->flush(); - $comment->setBody(''); - $form->addError(new FormError('دیدگاه شما ثبت شد بعد از تایید مدیر منتشر خواهد شد.')); - } - else{ - $form->addError(new FormError('شما اخیرا یک دیدگاه ارسال کرده اید. ۵ دقیقه دیگر مجددا سعی کنید.')); - } - } - } - return $this->render('blog/post.html.twig',[ - 'item'=>$item, - 'comments'=>$entityManager->getRepository(BlogComment::class)->findBy([ - 'post'=>$item, - 'publish'=>true, - ],['id'=>'DESC']), - 'form'=>$form->createView() - ]); - } - - /** - * @Route("/app/blog/posts/list", name="app_front_blog_list") - */ - public function app_front_blog_list(EntityManagerInterface $entityManager): Response - { - return $this->render('/app/blog/posts.html.twig',[ - 'items'=>$entityManager->getRepository(BlogPost::class)->findBy([],[ - 'id'=>'DESC' - ]) - ]); - } - - /** - * @Route("/app/blog/post/new", name="app_front_blog_new") - */ - public function app_front_blog_new(SluggerInterface $slugger,Request $request,EntityManagerInterface $entityManager): Response - { - $item = new BlogPost(); - $form = $this->createForm(BlogPostType::class,$item,[]); - - $form->handleRequest($request); - if ($form->isSubmitted() && $form->isValid()) { - $brochureFile = $form->get('img')->getData(); - - // this condition is needed because the 'brochure' field is not required - // so the PDF file must be processed only when a file is uploaded - if ($brochureFile) { - $originalFilename = pathinfo($brochureFile->getClientOriginalName(), PATHINFO_FILENAME); - // this is needed to safely include the file name as part of the URL - $safeFilename = $slugger->slug($originalFilename); - $newFilename = $safeFilename . '-' . uniqid() . '.' . $brochureFile->guessExtension(); - - // Move the file to the directory where brochures are stored - try { - $brochureFile->move( - $this->getParameter('blogMediaDir'), - $newFilename - ); - } catch (FileException $e) { - // ... handle exception if something happens during file upload - } - - // updates the 'brochureFilename' property to store the PDF file name - // instead of its contents - $item->setImg($newFilename); - } - $item->setDateSubmit(time()); - $url = str_replace(' ','-',$item->getTitle()); - $check = $entityManager->getRepository(BlogPost::class)->findOneBy(['url'=>$url]); - $item->setUrl($url); - if($check){ - $item->setUrl($url . $url); - } - $item->setViews(0); - $item->setSubmitter($this->getUser()); - $entityManager->persist($item); - $entityManager->flush(); - return $this->redirectToRoute('app_front_blog_list'); - } - return $this->render('/app/blog/new.html.twig',[ - 'form'=>$form->createView() - ]); - } - - /** - * @Route("/app/blog/post/delete/{id}", name="app_front_blog_delete") - */ - public function app_front_blog_delete(String $id,EntityManagerInterface $entityManager): Response - { - $item = $entityManager->getRepository(BlogPost::class)->find($id); - if($item){ - $entityManager->remove($item); - $entityManager->flush(); - } - return $this->redirectToRoute('app_front_blog_list'); - } - - /** - * @Route("/app/blog/post/edit/{id}", name="app_front_blog_edit") - */ - public function app_front_blog_edit(String $id,SluggerInterface $slugger,Request $request,EntityManagerInterface $entityManager): Response - { - $item = $entityManager->getRepository(BlogPost::class)->find($id); - if(!$item) $this->createNotFoundException(); - $oldFileName = $item->getImg(); - $form = $this->createForm(BlogPostType::class,$item,[]); - $form->handleRequest($request); - if ($form->isSubmitted() && $form->isValid()) { - $brochureFile = $form->get('img')->getData(); - - // this condition is needed because the 'brochure' field is not required - // so the PDF file must be processed only when a file is uploaded - if ($brochureFile) { - $originalFilename = pathinfo($brochureFile->getClientOriginalName(), PATHINFO_FILENAME); - // this is needed to safely include the file name as part of the URL - $safeFilename = $slugger->slug($originalFilename); - $newFilename = $safeFilename . '-' . uniqid() . '.' . $brochureFile->guessExtension(); - - // Move the file to the directory where brochures are stored - try { - $brochureFile->move( - $this->getParameter('blogMediaDir'), - $newFilename - ); - } catch (FileException $e) { - // ... handle exception if something happens during file upload - } - - // updates the 'brochureFilename' property to store the PDF file name - // instead of its contents - $item->setImg($newFilename); - } - else{ - $item->setImg($oldFileName); - } - $entityManager->persist($item); - $entityManager->flush(); - return $this->redirectToRoute('app_front_blog_list'); - } - return $this->render('/app/blog/new.html.twig',[ - 'form'=>$form->createView() - ]); - } - - /** - * @Route("/app/blog/comments/list", name="app_front_comments_list") - */ - public function app_front_comments_list(EntityManagerInterface $entityManager): Response - { - return $this->render('/app/blog/comments.html.twig',[ - 'items'=>$entityManager->getRepository(BlogComment::class)->findBy([],[ - 'id'=>'DESC' - ]) - ]); - } - - /** - * @Route("/app/blog/comment/delete/{id}", name="app_front_comment_delete") - */ - public function app_front_comment_delete(String $id,EntityManagerInterface $entityManager): Response - { - $item = $entityManager->getRepository(BlogComment::class)->find($id); - if($item){ - $entityManager->remove($item); - $entityManager->flush(); - } - return $this->redirectToRoute('app_front_comments_list'); - } - - /** - * @Route("/app/blog/comment/toggle/{id}", name="app_front_comment_toggle") - */ - public function app_front_comment_toggle(String $id,EntityManagerInterface $entityManager): Response - { - $item = $entityManager->getRepository(BlogComment::class)->find($id); - if($item){ - if($item->isPublish()){ - $item->setPublish(false); - } - else{ - $item->setPublish(true); - } - $entityManager->persist($item); - $entityManager->flush(); - } - return $this->redirectToRoute('app_front_comments_list'); - } -} diff --git a/hesabixCore/src/Controller/Front/GuideController.php b/hesabixCore/src/Controller/Front/GuideController.php deleted file mode 100644 index 7fc7b21..0000000 --- a/hesabixCore/src/Controller/Front/GuideController.php +++ /dev/null @@ -1,23 +0,0 @@ -getRepository(GuideContent::class)->findBy(['cat'=>$id]); - return $this->render('general/guide.html.twig',[ - 'items'=>$items - ]); - } -} diff --git a/hesabixCore/src/Controller/Front/UiGeneralController.php b/hesabixCore/src/Controller/Front/UiGeneralController.php index 03f74f6..a2024d9 100644 --- a/hesabixCore/src/Controller/Front/UiGeneralController.php +++ b/hesabixCore/src/Controller/Front/UiGeneralController.php @@ -2,161 +2,15 @@ namespace App\Controller\Front; -use App\Entity\APIDocument; -use App\Entity\BlogPost; -use App\Entity\Business; -use App\Entity\ChangeReport; -use App\Entity\HesabdariDoc; -use App\Entity\PrinterQueue; -use App\Entity\User; -use App\Entity\Settings; -use App\Service\pdfMGR; -use App\Service\Provider; -use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; -use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\JsonResponse; -use Symfony\Component\Mailer\Exception\TransportExceptionInterface; -use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Routing\Annotation\Route; -use Symfony\Component\Mime\Email; -use App\Service\SMS; -use Dompdf\Dompdf; class UiGeneralController extends AbstractController { #[Route('/', name: 'general_home')] - public function general_home(SMS $sms,EntityManagerInterface $entityManager): Response + public function general_home(): JsonResponse { - $busCount = count($entityManager->getRepository(Business::class)->findAll()); - $users = count($entityManager->getRepository(User::class)->findAll()); - $docs = count($entityManager->getRepository(HesabdariDoc::class)->findAll()); - $lastBusiness = $entityManager->getRepository(Business::class)->findLast(); - if($lastBusiness) - return $this->render('general/home.html.twig',[ - 'business' => $busCount, - 'users' => $users, - 'docs' => $docs, - 'lastBusinessName' => $lastBusiness->getname(), - 'lastBusinessOwner' => $lastBusiness->getOwner()->getFullName(), - 'blogPosts'=> $entityManager->getRepository(BlogPost::class)->findBy([],['dateSubmit'=>'DESC'],3) - ]); - return $this->render('general/home.html.twig',[ - 'business' => $busCount, - 'users' => $users, - 'docs' => $docs, - 'lastBusinessName' => 'ثبت نشده', - 'lastBusinessOwner' => 'ثبت نشده', - 'blogPosts'=> $entityManager->getRepository(BlogPost::class)->findBy([],['dateSubmit'=>'DESC'],3) - ]); + return $this->json(['message'=>'HesabixApi is running ...']); } - - #[Route('/front/faq', name: 'general_faq')] - public function general_faq(EntityManagerInterface $entityManager): Response - { - return $this->render('general/faq.html.twig',); - } - #[Route('/front/about', name: 'general_about')] - public function general_about(EntityManagerInterface $entityManager): Response - { - return $this->render('general/about.html.twig',); - } - #[Route('/front/contact', name: 'general_contact')] - public function general_contact(EntityManagerInterface $entityManager): Response - { - return $this->render('general/contact.html.twig',); - } - #[Route('/front/terms', name: 'general_terms')] - public function general_terms(EntityManagerInterface $entityManager): Response - { - return $this->render('general/terms.html.twig',); - } - #[Route('/front/privacy', name: 'general_privacy')] - public function general_privacy(EntityManagerInterface $entityManager): Response - { - return $this->render('general/privacy.html.twig',); - } - #[Route('/front/open-source', name: 'general_opensource')] - public function general_opensource(EntityManagerInterface $entityManager): Response - { - return $this->render('general/opensource.html.twig',); - } - #[Route('/front/update-list', name: 'general_changes_reports')] - public function general_changes_reports(EntityManagerInterface $entityManager): Response - { - return $this->render('general/update-list.html.twig',[ - 'items'=>$entityManager->getRepository(ChangeReport::class)->findBy([],['id'=>'DESC']) - ]); - } - - #[Route('/front/help/api/{id}', name: 'general_help_api')] - public function general_help_api(EntityManagerInterface $entityManager, String $id = '1'): Response - { - $item = $entityManager->getRepository(APIDocument::class)->find($id); - if(!$item) - throw $this->createNotFoundException(); - - return $this->render('general/api.html.twig',[ - 'cats'=>$entityManager->getRepository(APIDocument::class)->findBy([],['title'=>'ASC']), - 'item'=>$item - ]); - } - - #[Route('/front/sponsors', name: 'general_sponsors')] - public function general_sponsors(EntityManagerInterface $entityManager): Response - { - return $this->render('general/sponsors.html.twig',[ - - ]); - } - - #[Route('/sitemap.xml', name: 'general_sitemap')] - public function general_sitemap(EntityManagerInterface $entityManager): Response - { - $response = new Response('',200,['Content-Type'=>'text/xml']); - return $this->render('general/sitemap.html.twig',[ - 'timeNow'=>$dateTime = date('c', time()), - 'blogs'=>$entityManager->getRepository(BlogPost::class)->findAll(), - 'docs'=>$entityManager->getRepository(APIDocument::class)->findAll() - ],$response); - } - #[Route('/front/features/{id}', name: 'general_features')] - public function general_features(string $id,EntityManagerInterface $entityManager): Response - { - if($id == 'setup') - return $this->render('/general/features/setup.html.twig'); - elseif($id == 'user_management') - return $this->render('/general/features/user_managment.html.twig'); - elseif($id == 'buy_sell') - return $this->render('/general/features/buy_sell.html.twig'); - throw $this->createNotFoundException(); - } - - #[Route('/front/apps/woocommerce', name: 'general_apps_woocommerce')] - public function general_apps_woocommerce(EntityManagerInterface $entityManager): Response - { - return $this->render('general/woocommerce.html.twig',); - } - - #[Route('/front/apps/repservice', name: 'general_apps_repservice')] - public function general_apps_repservice(EntityManagerInterface $entityManager): Response - { - return $this->render('general/repservice.html.twig',); - } - - #[Route('/front/apps/hesabixbox', name: 'general_apps_hesabixbox')] - public function general_apps_hesabixbox(EntityManagerInterface $entityManager): Response - { - return $this->render('general/hesabixbox.html.twig',); - } - - #[Route('/front/system/get/data', name: 'general_apps_get_data')] - public function general_apps_get_data(EntityManagerInterface $entityManager): JsonResponse - { - $settings = $entityManager->getRepository(Settings::class)->findAll()[0]; - return $this->json([ - 'footer' => $settings->getFooter() - ]); - } - } diff --git a/hesabixCore/src/Controller/Front/UserController.php b/hesabixCore/src/Controller/Front/UserController.php index 89350a6..5d4965c 100644 --- a/hesabixCore/src/Controller/Front/UserController.php +++ b/hesabixCore/src/Controller/Front/UserController.php @@ -1,155 +1,23 @@ emailVerifier = $emailVerifier; - } - /** - * function to generate random strings - * @param int $length number of characters in the generated string - * @return string a new string is created with random characters of the desired length - */ - private function RandomString(int $length = 32): string - { - return substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/strlen($x)) )),1,$length); - } - - #[Route('/login/{msg}', name: 'front_user_login')] - public function front_user_login(AuthenticationUtils $authenticationUtils, #[CurrentUser] ?User $user,EntityManagerInterface $entityManager,$msg = null): Response - { - if($user) - return $this->redirectToRoute('general_home'); - $error = $authenticationUtils->getLastAuthenticationError(); - - // last username entered by the user - $lastUsername = $authenticationUtils->getLastUsername(); - return $this->render("/user/login.html.twig",[ - 'last_username' => $lastUsername, - 'error' => $error, - 'msg'=>$msg - ]); - } - - /** - * @throws Exception - */ - #[Route('/logout', name: 'front_user_logout')] - public function front_user_logout(): never - { - // controller can be blank: it will never be called! - throw new \Exception('Don\'t forget to activate logout in security.yaml'); - } - - #[Route('/register', name: 'front_user_register')] - public function front_user_register(twigFunctions $functions,Request $request,TranslatorInterface $translator, UserPasswordHasherInterface $userPasswordHasher, EntityManagerInterface $entityManager): Response - { - //redirect to hesabix app register page - return $this->redirect($functions->systemSettings()->getAppSite() . '/user/register'); - $user = new User(); - $form = $this->createForm(UserRegisterType::class, $user); - $form->handleRequest($request); - if ($form->isSubmitted() && $form->isValid()) { - $exist = $entityManager->getRepository(User::class)->findOneBy(['email'=>$form->get('email')->getData()]); - if($exist){ - $error = new FormError($translator->trans('There is already an account with this email')); - $form->get('email')->addError($error); - - } - else{ - $user->setDateRegister(time()); - // encode the plain password - $user->setPassword( - $userPasswordHasher->hashPassword( - $user, - $form->get('password')->getData() - ) - ); - - $entityManager->persist($user); - $entityManager->flush(); - - // generate a signed url and email it to the user - $this->emailVerifier->sendEmailConfirmation('app_verify_email', $user, - (new TemplatedEmail()) - ->from(new Address('noreplay@hesabix.ir', 'حسابیکس')) - ->to($user->getEmail()) - ->subject('تایید عضویت در حسابیکس') - ->htmlTemplate('user/confirmation_email.html.twig') - ); - // do anything else you need here, like send an email - return $this->redirectToRoute('front_user_login',['msg'=>'success']); - - } - - } - - return $this->render('user/register.html.twig', [ - 'registrationForm' => $form->createView(), - ]); - } - - #[Route('/register/success', name: 'app_register_success')] - public function app_register_success(Request $request): Response - { - return $this->render('registration/register-success.html.twig', [ - ]); - } - #[Route('/verify/email', name: 'app_verify_email')] - public function verifyUserEmail(Request $request): Response - { - $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY'); - - // validate email confirmation link, sets User::isVerified=true and persists - try { - $this->emailVerifier->handleEmailConfirmation($request, $this->getUser()); - } catch (VerifyEmailExceptionInterface $exception) { - $this->addFlash('verify_email_error', $exception->getReason()); - - return $this->redirectToRoute('app_register'); - } - - // @TODO Change the redirect on success and handle or remove the flash message in your templates - $this->addFlash('success', 'ایمیل شما تایید شد.'); - - return $this->redirectToRoute('app_register'); - } #[Route('/login/by/token{route}', name: 'app_login_by_token' , requirements: ['route' => '.+'])] public function app_login_by_token(string $route,AuthenticationUtils $authenticationUtils,twigFunctions $functions,Request $request, UserPasswordHasherInterface $userPasswordHasher, UserAuthenticatorInterface $userAuthenticator, BackAuthAuthenticator $authenticator, EntityManagerInterface $entityManager): Response diff --git a/hesabixCore/src/Entity/APIDocument.php b/hesabixCore/src/Entity/APIDocument.php deleted file mode 100644 index 1d7da49..0000000 --- a/hesabixCore/src/Entity/APIDocument.php +++ /dev/null @@ -1,66 +0,0 @@ -id; - } - - public function getTitle(): ?string - { - return $this->title; - } - - public function setTitle(string $title): self - { - $this->title = $title; - - return $this; - } - - public function getBody(): ?string - { - return $this->body; - } - - public function setBody(string $body): self - { - $this->body = $body; - - return $this; - } - - public function getDateSubmit(): ?string - { - return $this->dateSubmit; - } - - public function setDateSubmit(?string $dateSubmit): static - { - $this->dateSubmit = $dateSubmit; - - return $this; - } -} diff --git a/hesabixCore/src/Entity/BlogCat.php b/hesabixCore/src/Entity/BlogCat.php deleted file mode 100644 index b6551c2..0000000 --- a/hesabixCore/src/Entity/BlogCat.php +++ /dev/null @@ -1,90 +0,0 @@ -blogPosts = new ArrayCollection(); - } - - public function getId(): ?int - { - return $this->id; - } - - public function getLabel(): ?string - { - return $this->label; - } - - public function setLabel(string $label): self - { - $this->label = $label; - - return $this; - } - - public function getCode(): ?string - { - return $this->code; - } - - public function setCode(string $code): self - { - $this->code = $code; - - return $this; - } - - /** - * @return Collection - */ - public function getBlogPosts(): Collection - { - return $this->blogPosts; - } - - public function addBlogPost(BlogPost $blogPost): self - { - if (!$this->blogPosts->contains($blogPost)) { - $this->blogPosts->add($blogPost); - $blogPost->setCat($this); - } - - return $this; - } - - public function removeBlogPost(BlogPost $blogPost): self - { - if ($this->blogPosts->removeElement($blogPost)) { - // set the owning side to null (unless already changed) - if ($blogPost->getCat() === $this) { - $blogPost->setCat(null); - } - } - - return $this; - } -} diff --git a/hesabixCore/src/Entity/BlogComment.php b/hesabixCore/src/Entity/BlogComment.php deleted file mode 100644 index 646e735..0000000 --- a/hesabixCore/src/Entity/BlogComment.php +++ /dev/null @@ -1,127 +0,0 @@ -id; - } - - public function getDateSubmit(): ?string - { - return $this->dateSubmit; - } - - public function setDateSubmit(string $dateSubmit): self - { - $this->dateSubmit = $dateSubmit; - - return $this; - } - - public function getBody(): ?string - { - return $this->body; - } - - public function setBody(string $body): self - { - $this->body = $body; - - return $this; - } - - public function getPost(): ?BlogPost - { - return $this->post; - } - - public function setPost(?BlogPost $post): self - { - $this->post = $post; - - return $this; - } - - public function isPublish(): ?bool - { - return $this->publish; - } - - public function setPublish(bool $publish): self - { - $this->publish = $publish; - - return $this; - } - - public function getName(): ?string - { - return $this->name; - } - - public function setName(string $name): static - { - $this->name = $name; - - return $this; - } - - public function getEmail(): ?string - { - return $this->email; - } - - public function setEmail(string $email): static - { - $this->email = $email; - - return $this; - } - - public function getWebsite(): ?string - { - return $this->website; - } - - public function setWebsite(?string $website): static - { - $this->website = $website; - - return $this; - } -} diff --git a/hesabixCore/src/Entity/BlogPost.php b/hesabixCore/src/Entity/BlogPost.php deleted file mode 100644 index fdb6827..0000000 --- a/hesabixCore/src/Entity/BlogPost.php +++ /dev/null @@ -1,213 +0,0 @@ -blogComments = new ArrayCollection(); - } - - public function getId(): ?int - { - return $this->id; - } - - public function getTitle(): ?string - { - return $this->title; - } - - public function setTitle(string $title): self - { - $this->title = $title; - - return $this; - } - - public function getBody(): ?string - { - return $this->body; - } - - public function setBody(string $body): self - { - $this->body = $body; - - return $this; - } - - public function getSubmitter(): ?User - { - return $this->submitter; - } - - public function setSubmitter(?User $submitter): self - { - $this->submitter = $submitter; - - return $this; - } - - public function getDateSubmit(): ?string - { - return $this->dateSubmit; - } - - public function setDateSubmit(string $dateSubmit): self - { - $this->dateSubmit = $dateSubmit; - - return $this; - } - - public function getViews(): ?string - { - return $this->views; - } - - public function setViews(string $views): self - { - $this->views = $views; - - return $this; - } - - public function getImg(): ?string - { - return $this->img; - } - - public function setImg(?string $img): self - { - $this->img = $img; - - return $this; - } - - public function getCat(): ?BlogCat - { - return $this->cat; - } - - public function setCat(?BlogCat $cat): self - { - $this->cat = $cat; - - return $this; - } - - public function getUrl(): ?string - { - return $this->url; - } - - public function setUrl(string $url): self - { - $this->url = $url; - - return $this; - } - - public function getIntero(): ?string - { - return $this->intero; - } - - public function setIntero(string $intero): self - { - $this->intero = $intero; - - return $this; - } - - /** - * @return Collection - */ - public function getBlogComments(): Collection - { - return $this->blogComments; - } - - public function addBlogComment(BlogComment $blogComment): self - { - if (!$this->blogComments->contains($blogComment)) { - $this->blogComments->add($blogComment); - $blogComment->setPost($this); - } - - return $this; - } - - public function removeBlogComment(BlogComment $blogComment): self - { - if ($this->blogComments->removeElement($blogComment)) { - // set the owning side to null (unless already changed) - if ($blogComment->getPost() === $this) { - $blogComment->setPost(null); - } - } - - return $this; - } - - public function getKeywords(): ?string - { - return $this->keywords; - } - - public function setKeywords(?string $keywords): static - { - $this->keywords = $keywords; - - return $this; - } -} diff --git a/hesabixCore/src/Entity/GuideContent.php b/hesabixCore/src/Entity/GuideContent.php deleted file mode 100644 index 4328899..0000000 --- a/hesabixCore/src/Entity/GuideContent.php +++ /dev/null @@ -1,112 +0,0 @@ -id; - } - - public function getCat(): ?string - { - return $this->cat; - } - - public function setCat(string $cat): self - { - $this->cat = $cat; - - return $this; - } - - public function getTitle(): ?string - { - return $this->title; - } - - public function setTitle(string $title): self - { - $this->title = $title; - - return $this; - } - - public function getBody(): ?string - { - return $this->body; - } - - public function setBody(?string $body): self - { - $this->body = $body; - - return $this; - } - - public function getSubmiter(): ?User - { - return $this->submiter; - } - - public function setSubmiter(?User $submiter): self - { - $this->submiter = $submiter; - - return $this; - } - - public function getDateSubmit(): ?string - { - return $this->dateSubmit; - } - - public function setDateSubmit(string $dateSubmit): self - { - $this->dateSubmit = $dateSubmit; - - return $this; - } - - public function getUrl(): ?string - { - return $this->url; - } - - public function setUrl(string $url): self - { - $this->url = $url; - - return $this; - } -} diff --git a/hesabixCore/src/Entity/Support.php b/hesabixCore/src/Entity/Support.php deleted file mode 100644 index 85ee98b..0000000 --- a/hesabixCore/src/Entity/Support.php +++ /dev/null @@ -1,129 +0,0 @@ -id; - } - - public function getMain(): ?string - { - return $this->main; - } - - public function setMain(?string $main): self - { - $this->main = $main; - - return $this; - } - - public function getSubmitter(): ?User - { - return $this->submitter; - } - - public function setSubmitter(?User $submitter): self - { - $this->submitter = $submitter; - - return $this; - } - - public function getDateSubmit(): ?string - { - return $this->dateSubmit; - } - - public function setDateSubmit(string $dateSubmit): self - { - $this->dateSubmit = $dateSubmit; - - return $this; - } - - public function getTitle(): ?string - { - return $this->title; - } - - public function setTitle(string $title): self - { - $this->title = $title; - - return $this; - } - - public function getBody(): ?string - { - return $this->body; - } - - public function setBody(string $body): self - { - $this->body = $body; - - return $this; - } - - public function getState(): ?string - { - return $this->state; - } - - public function setState(string $state): self - { - $this->state = $state; - - return $this; - } - - public function getCode(): ?string - { - return $this->code; - } - - public function setCode(?string $code): static - { - $this->code = $code; - - return $this; - } -} diff --git a/hesabixCore/src/Entity/User.php b/hesabixCore/src/Entity/User.php index 5fdd9c6..aa2bfe5 100644 --- a/hesabixCore/src/Entity/User.php +++ b/hesabixCore/src/Entity/User.php @@ -41,18 +41,9 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface #[ORM\OneToMany(mappedBy: 'owner', targetEntity: Business::class, orphanRemoval: true)] private Collection $businesses; - #[ORM\OneToMany(mappedBy: 'submiter', targetEntity: GuideContent::class, orphanRemoval: true)] - private Collection $guideContents; - #[ORM\OneToMany(mappedBy: 'submitter', targetEntity: StackContent::class, orphanRemoval: true)] private Collection $stackContents; - #[ORM\OneToMany(mappedBy: 'submitter', targetEntity: BlogPost::class, orphanRemoval: true)] - private Collection $blogPosts; - - #[ORM\OneToMany(mappedBy: 'submitter', targetEntity: BlogComment::class, orphanRemoval: true)] - private Collection $blogComments; - #[ORM\OneToMany(mappedBy: 'user', targetEntity: Log::class)] private Collection $logs; @@ -123,10 +114,7 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface { $this->userTokens = new ArrayCollection(); $this->businesses = new ArrayCollection(); - $this->guideContents = new ArrayCollection(); $this->stackContents = new ArrayCollection(); - $this->blogPosts = new ArrayCollection(); - $this->blogComments = new ArrayCollection(); $this->logs = new ArrayCollection(); $this->permissions = new ArrayCollection(); $this->hesabdariDocs = new ArrayCollection(); @@ -300,36 +288,6 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface return $this; } - /** - * @return Collection - */ - public function getGuideContents(): Collection - { - return $this->guideContents; - } - - public function addGuideContent(GuideContent $guideContent): self - { - if (!$this->guideContents->contains($guideContent)) { - $this->guideContents->add($guideContent); - $guideContent->setSubmiter($this); - } - - return $this; - } - - public function removeGuideContent(GuideContent $guideContent): self - { - if ($this->guideContents->removeElement($guideContent)) { - // set the owning side to null (unless already changed) - if ($guideContent->getSubmiter() === $this) { - $guideContent->setSubmiter(null); - } - } - - return $this; - } - /** * @return Collection */ @@ -360,66 +318,6 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface return $this; } - /** - * @return Collection - */ - public function getBlogPosts(): Collection - { - return $this->blogPosts; - } - - public function addBlogPost(BlogPost $blogPost): self - { - if (!$this->blogPosts->contains($blogPost)) { - $this->blogPosts->add($blogPost); - $blogPost->setSubmitter($this); - } - - return $this; - } - - public function removeBlogPost(BlogPost $blogPost): self - { - if ($this->blogPosts->removeElement($blogPost)) { - // set the owning side to null (unless already changed) - if ($blogPost->getSubmitter() === $this) { - $blogPost->setSubmitter(null); - } - } - - return $this; - } - - /** - * @return Collection - */ - public function getBlogComments(): Collection - { - return $this->blogComments; - } - - public function addBlogComment(BlogComment $blogComment): self - { - if (!$this->blogComments->contains($blogComment)) { - $this->blogComments->add($blogComment); - $blogComment->setSubmitter($this); - } - - return $this; - } - - public function removeBlogComment(BlogComment $blogComment): self - { - if ($this->blogComments->removeElement($blogComment)) { - // set the owning side to null (unless already changed) - if ($blogComment->getSubmitter() === $this) { - $blogComment->setSubmitter(null); - } - } - - return $this; - } - /** * @return Collection */ @@ -518,28 +416,6 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface return $this->supports; } - public function addSupport(Support $support): self - { - if (!$this->supports->contains($support)) { - $this->supports->add($support); - $support->setSubmitter($this); - } - - return $this; - } - - public function removeSupport(Support $support): self - { - if ($this->supports->removeElement($support)) { - // set the owning side to null (unless already changed) - if ($support->getSubmitter() === $this) { - $support->setSubmitter(null); - } - } - - return $this; - } - /** * @return Collection */ diff --git a/hesabixCore/src/Form/APIDocumentType.php b/hesabixCore/src/Form/APIDocumentType.php deleted file mode 100644 index caf3e4b..0000000 --- a/hesabixCore/src/Form/APIDocumentType.php +++ /dev/null @@ -1,30 +0,0 @@ -add('title',TextType::class) - ->add('body',CKEditorType::class) - ->add('submit',SubmitType::class) - ; - } - - public function configureOptions(OptionsResolver $resolver): void - { - $resolver->setDefaults([ - 'data_class' => APIDocument::class, - ]); - } -} diff --git a/hesabixCore/src/Form/BlogPostType.php b/hesabixCore/src/Form/BlogPostType.php deleted file mode 100644 index 8b240bb..0000000 --- a/hesabixCore/src/Form/BlogPostType.php +++ /dev/null @@ -1,86 +0,0 @@ -add('title',TextType::class) - ->add('intero',TextareaType::class) - ->add( - 'body', - CKEditorType::class, - [ - 'filebrowsers' => [ - 'VideoUpload', - 'VideoBrowse', - ], - 'config' => array( - 'filebrowserBrowseRoute' => 'my_route', - 'filebrowserBrowseRouteParameters' => array('slug' => 'my-slug'), - 'filebrowserBrowseRouteType' => UrlGeneratorInterface::ABSOLUTE_URL, - ), - ] - ) - ->add('img', FileType::class, [ - 'label' => 'Img', - - // unmapped means that this field is not associated to any entity property - 'mapped' => false, - - // make it optional so you don't have to re-upload the PDF file - // every time you edit the Product details - 'required' => false, - - // unmapped fields can't define their validation using annotations - // in the associated entity, so you can use the PHP constraint classes - 'constraints' => [ - new File([ - 'maxSize' => '1024k', - 'mimeTypes' => [ - 'image/gif', - 'image/jpeg', - 'image/png' - ], - 'mimeTypesMessage' => 'لطفا یک فایل تصویر انتخاب کنید.', - ]) - ], - ]) - ->add('cat',EntityType::class, [ - // looks for choices from this entity - 'class' => BlogCat::class, - - // uses the User.username property as the visible option string - 'choice_label' => 'label', - - // used to render a select box, check boxes or radios - // 'multiple' => true, - // 'expanded' => true, - ]) - ->add('submit',SubmitType::class) - ; - } - - public function configureOptions(OptionsResolver $resolver): void - { - $resolver->setDefaults([ - 'data_class' => BlogPost::class, - ]); - } -} diff --git a/hesabixCore/src/Form/CommentType.php b/hesabixCore/src/Form/CommentType.php deleted file mode 100644 index 5bc1a71..0000000 --- a/hesabixCore/src/Form/CommentType.php +++ /dev/null @@ -1,34 +0,0 @@ -add('name',TextType::class) - ->add('email',EmailType::class,['label'=>'پست الکترونیکی(منتشر نخواهد شد)']) - ->add('website',UrlType::class) - ->add('body',TextareaType::class,['attr'=>['autocomplete'=>'off','rows'=>5]]) - ->add('submit',SubmitType::class,['label'=>'SubmitComment']) - ; - } - - public function configureOptions(OptionsResolver $resolver): void - { - $resolver->setDefaults([ - 'data_class' => BlogComment::class, - ]); - } -} diff --git a/hesabixCore/src/Form/GuideType.php b/hesabixCore/src/Form/GuideType.php deleted file mode 100644 index 4b8c9b7..0000000 --- a/hesabixCore/src/Form/GuideType.php +++ /dev/null @@ -1,43 +0,0 @@ -add('cat', ChoiceType::class, [ - 'choices' => [ - 'عمومی' => 'general', - 'اشخاص (طرف حساب ها) ' => 'person', - 'کالاها و خدمات ' => 'commodity', - 'مدیریت حساب های بانکی،تنخواه‌گردان،صندوق‌ها و انتقال بین حساب‌ها ' => 'banks', - 'خرید و هزینه ' => 'buy', - 'فروش و درآمد ' => 'sell', - 'گزارشات ' => 'reports', - 'تنظیمات ' => 'settings', - ], - ]) - ->add('title',TextType::class) - ->add('body',CKEditorType::class) - ->add('submit',SubmitType::class) - ; - } - - public function configureOptions(OptionsResolver $resolver): void - { - $resolver->setDefaults([ - 'data_class' => GuideContent::class, - ]); - } -} diff --git a/hesabixCore/src/Form/SupportType.php b/hesabixCore/src/Form/SupportType.php deleted file mode 100644 index 5b18bf8..0000000 --- a/hesabixCore/src/Form/SupportType.php +++ /dev/null @@ -1,28 +0,0 @@ -add('body',TextareaType::class) - ->add('submit',SubmitType::class,['label'=>'ذخیره']) - ; - } - - public function configureOptions(OptionsResolver $resolver): void - { - $resolver->setDefaults([ - 'data_class' => Support::class, - ]); - } -} diff --git a/hesabixCore/src/Form/UpdateListType.php b/hesabixCore/src/Form/UpdateListType.php deleted file mode 100644 index e23385e..0000000 --- a/hesabixCore/src/Form/UpdateListType.php +++ /dev/null @@ -1,30 +0,0 @@ -add('body',CKEditorType::class) - ->add('version',TextType::class) - ->add('submit',SubmitType::class,[]) - ; - } - - public function configureOptions(OptionsResolver $resolver): void - { - $resolver->setDefaults([ - 'data_class' => ChangeReport::class, - ]); - } -} diff --git a/hesabixCore/src/Form/UserRegisterType.php b/hesabixCore/src/Form/UserRegisterType.php deleted file mode 100644 index d2c1834..0000000 --- a/hesabixCore/src/Form/UserRegisterType.php +++ /dev/null @@ -1,86 +0,0 @@ -add('fullName',TextType::class,[ - 'row_attr' => [ - 'class' => 'form-floating mb-2', - ], - ]) - ->add('email',EmailType::class,[ - 'row_attr' => [ - 'class' => 'form-floating mb-2', - ], - 'constraints' => [ - new Email([ - 'message' => 'یک ایمیل صحیح وارد کنید.' - ]) - ] - ]) - ->add('agreeTerms', CheckboxType::class, [ - 'row_attr' => [ - 'class' => 'alert alert-danger py-2 mb-4', - ], - 'mapped' => false, - 'constraints' => [ - new IsTrue([ - 'message' => 'You should agree to our terms.', - ]), - ], - ]) - ->add('password', PasswordType::class, [ - 'row_attr' => [ - 'class' => 'form-floating mb-2', - ], - // instead of being set onto the object directly, - // this is read and encoded in the controller - 'mapped' => false, - 'attr' => ['autocomplete' => 'new-password'], - 'constraints' => [ - new NotBlank([ - 'message' => 'Please enter a password', - ]), - new Length([ - 'min' => 10, - 'minMessage' => 'Your password should be at least {{ limit }} characters', - // max length allowed by Symfony for security reasons - 'max' => 4096, - ]), - ], - ]) - ->add('captcha', CaptchaType::class, array( - 'label'=> '', - 'width' => 200, - 'height' => 50, - 'length' => 6, - )); - ; - } - - public function configureOptions(OptionsResolver $resolver): void - { - $resolver->setDefaults([ - 'data_class' => User::class, - ]); - } -} diff --git a/hesabixCore/src/Repository/APIDocumentRepository.php b/hesabixCore/src/Repository/APIDocumentRepository.php deleted file mode 100644 index f4fa42c..0000000 --- a/hesabixCore/src/Repository/APIDocumentRepository.php +++ /dev/null @@ -1,66 +0,0 @@ - - * - * @method APIDocument|null find($id, $lockMode = null, $lockVersion = null) - * @method APIDocument|null findOneBy(array $criteria, array $orderBy = null) - * @method APIDocument[] findAll() - * @method APIDocument[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) - */ -class APIDocumentRepository extends ServiceEntityRepository -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, APIDocument::class); - } - - public function save(APIDocument $entity, bool $flush = false): void - { - $this->getEntityManager()->persist($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - - public function remove(APIDocument $entity, bool $flush = false): void - { - $this->getEntityManager()->remove($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - -// /** -// * @return APIDocument[] Returns an array of APIDocument objects -// */ -// public function findByExampleField($value): array -// { -// return $this->createQueryBuilder('a') -// ->andWhere('a.exampleField = :val') -// ->setParameter('val', $value) -// ->orderBy('a.id', 'ASC') -// ->setMaxResults(10) -// ->getQuery() -// ->getResult() -// ; -// } - -// public function findOneBySomeField($value): ?APIDocument -// { -// return $this->createQueryBuilder('a') -// ->andWhere('a.exampleField = :val') -// ->setParameter('val', $value) -// ->getQuery() -// ->getOneOrNullResult() -// ; -// } -} diff --git a/hesabixCore/src/Repository/BlogCatRepository.php b/hesabixCore/src/Repository/BlogCatRepository.php deleted file mode 100644 index f6de79d..0000000 --- a/hesabixCore/src/Repository/BlogCatRepository.php +++ /dev/null @@ -1,66 +0,0 @@ - - * - * @method BlogCat|null find($id, $lockMode = null, $lockVersion = null) - * @method BlogCat|null findOneBy(array $criteria, array $orderBy = null) - * @method BlogCat[] findAll() - * @method BlogCat[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) - */ -class BlogCatRepository extends ServiceEntityRepository -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, BlogCat::class); - } - - public function save(BlogCat $entity, bool $flush = false): void - { - $this->getEntityManager()->persist($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - - public function remove(BlogCat $entity, bool $flush = false): void - { - $this->getEntityManager()->remove($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - -// /** -// * @return BlogCat[] Returns an array of BlogCat objects -// */ -// public function findByExampleField($value): array -// { -// return $this->createQueryBuilder('b') -// ->andWhere('b.exampleField = :val') -// ->setParameter('val', $value) -// ->orderBy('b.id', 'ASC') -// ->setMaxResults(10) -// ->getQuery() -// ->getResult() -// ; -// } - -// public function findOneBySomeField($value): ?BlogCat -// { -// return $this->createQueryBuilder('b') -// ->andWhere('b.exampleField = :val') -// ->setParameter('val', $value) -// ->getQuery() -// ->getOneOrNullResult() -// ; -// } -} diff --git a/hesabixCore/src/Repository/BlogCommentRepository.php b/hesabixCore/src/Repository/BlogCommentRepository.php deleted file mode 100644 index 62ddbb7..0000000 --- a/hesabixCore/src/Repository/BlogCommentRepository.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * @method BlogComment|null find($id, $lockMode = null, $lockVersion = null) - * @method BlogComment|null findOneBy(array $criteria, array $orderBy = null) - * @method BlogComment[] findAll() - * @method BlogComment[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) - */ -class BlogCommentRepository extends ServiceEntityRepository -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, BlogComment::class); - } - - public function save(BlogComment $entity, bool $flush = false): void - { - $this->getEntityManager()->persist($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - - public function remove(BlogComment $entity, bool $flush = false): void - { - $this->getEntityManager()->remove($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - - /** - * @return BlogComment[] Returns an array of BlogComment objects - */ - public function findLastComments(): array - { - return $this->createQueryBuilder('b') - ->where('b.publish = true') - ->orderBy('b.id', 'DESC') - ->setMaxResults(10) - ->getQuery() - ->getResult() - ; - } - -// public function findOneBySomeField($value): ?BlogComment -// { -// return $this->createQueryBuilder('b') -// ->andWhere('b.exampleField = :val') -// ->setParameter('val', $value) -// ->getQuery() -// ->getOneOrNullResult() -// ; -// } -} diff --git a/hesabixCore/src/Repository/BlogPostRepository.php b/hesabixCore/src/Repository/BlogPostRepository.php deleted file mode 100644 index 0c7a50b..0000000 --- a/hesabixCore/src/Repository/BlogPostRepository.php +++ /dev/null @@ -1,99 +0,0 @@ - - * - * @method BlogPost|null find($id, $lockMode = null, $lockVersion = null) - * @method BlogPost|null findOneBy(array $criteria, array $orderBy = null) - * @method BlogPost[] findAll() - * @method BlogPost[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) - */ -class BlogPostRepository extends ServiceEntityRepository -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, BlogPost::class); - } - - public function save(BlogPost $entity, bool $flush = false): void - { - $this->getEntityManager()->persist($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - - public function remove(BlogPost $entity, bool $flush = false): void - { - $this->getEntityManager()->remove($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - - /* - * @return StackContent[] - */ - public function search($params): array - { - $result = $this->createQueryBuilder('s') - ->setMaxResults($params['count']) - ->setFirstResult(($params['page'] -1) * $params['count']); - $result->orderBy('s.id', 'DESC'); - return $result->getQuery()->getResult(); - } - /** - * @throws \Doctrine\ORM\NonUniqueResultException - * @throws \Doctrine\ORM\NoResultException - */ - public function getAllContentCount(): int{ - return $this->createQueryBuilder('s') - ->select('count(s.id)') - ->getQuery() - ->getSingleScalarResult() - ; - } - - public function findLast($count = 5) - { - return $this->createQueryBuilder('n') - ->orderBy('n.id', 'DESC') - ->setMaxResults($count) - ->getQuery() - ->getResult() - ; - } - -// /** -// * @return BlogPost[] Returns an array of BlogPost objects -// */ -// public function findByExampleField($value): array -// { -// return $this->createQueryBuilder('b') -// ->andWhere('b.exampleField = :val') -// ->setParameter('val', $value) -// ->orderBy('b.id', 'ASC') -// ->setMaxResults(10) -// ->getQuery() -// ->getResult() -// ; -// } - -// public function findOneBySomeField($value): ?BlogPost -// { -// return $this->createQueryBuilder('b') -// ->andWhere('b.exampleField = :val') -// ->setParameter('val', $value) -// ->getQuery() -// ->getOneOrNullResult() -// ; -// } -} diff --git a/hesabixCore/src/Repository/GuideContentRepository.php b/hesabixCore/src/Repository/GuideContentRepository.php deleted file mode 100644 index f8d849f..0000000 --- a/hesabixCore/src/Repository/GuideContentRepository.php +++ /dev/null @@ -1,66 +0,0 @@ - - * - * @method GuideContent|null find($id, $lockMode = null, $lockVersion = null) - * @method GuideContent|null findOneBy(array $criteria, array $orderBy = null) - * @method GuideContent[] findAll() - * @method GuideContent[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) - */ -class GuideContentRepository extends ServiceEntityRepository -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, GuideContent::class); - } - - public function save(GuideContent $entity, bool $flush = false): void - { - $this->getEntityManager()->persist($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - - public function remove(GuideContent $entity, bool $flush = false): void - { - $this->getEntityManager()->remove($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - -// /** -// * @return GuideContent[] Returns an array of GuideContent objects -// */ -// public function findByExampleField($value): array -// { -// return $this->createQueryBuilder('g') -// ->andWhere('g.exampleField = :val') -// ->setParameter('val', $value) -// ->orderBy('g.id', 'ASC') -// ->setMaxResults(10) -// ->getQuery() -// ->getResult() -// ; -// } - -// public function findOneBySomeField($value): ?GuideContent -// { -// return $this->createQueryBuilder('g') -// ->andWhere('g.exampleField = :val') -// ->setParameter('val', $value) -// ->getQuery() -// ->getOneOrNullResult() -// ; -// } -} diff --git a/hesabixCore/src/Repository/SupportRepository.php b/hesabixCore/src/Repository/SupportRepository.php deleted file mode 100644 index 8c3175f..0000000 --- a/hesabixCore/src/Repository/SupportRepository.php +++ /dev/null @@ -1,66 +0,0 @@ - - * - * @method Support|null find($id, $lockMode = null, $lockVersion = null) - * @method Support|null findOneBy(array $criteria, array $orderBy = null) - * @method Support[] findAll() - * @method Support[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) - */ -class SupportRepository extends ServiceEntityRepository -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, Support::class); - } - - public function save(Support $entity, bool $flush = false): void - { - $this->getEntityManager()->persist($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - - public function remove(Support $entity, bool $flush = false): void - { - $this->getEntityManager()->remove($entity); - - if ($flush) { - $this->getEntityManager()->flush(); - } - } - -// /** -// * @return Support[] Returns an array of Support objects -// */ -// public function findByExampleField($value): array -// { -// return $this->createQueryBuilder('s') -// ->andWhere('s.exampleField = :val') -// ->setParameter('val', $value) -// ->orderBy('s.id', 'ASC') -// ->setMaxResults(10) -// ->getQuery() -// ->getResult() -// ; -// } - -// public function findOneBySomeField($value): ?Support -// { -// return $this->createQueryBuilder('s') -// ->andWhere('s.exampleField = :val') -// ->setParameter('val', $value) -// ->getQuery() -// ->getOneOrNullResult() -// ; -// } -} diff --git a/hesabixCore/src/Service/Blog.php b/hesabixCore/src/Service/Blog.php deleted file mode 100644 index eb3f180..0000000 --- a/hesabixCore/src/Service/Blog.php +++ /dev/null @@ -1,26 +0,0 @@ -em = $entityManager; - } - - public function getCats() : Array{ - return $this->em->getRepository(BlogCat::class)->findAll(); - } - - public function getLastComments(){ - return $this->em->getRepository(BlogComment::class)->findLastComments(); - } -} \ No newline at end of file diff --git a/hesabixCore/templates/app/api/list.html.twig b/hesabixCore/templates/app/api/list.html.twig deleted file mode 100644 index 1e4e2fd..0000000 --- a/hesabixCore/templates/app/api/list.html.twig +++ /dev/null @@ -1,48 +0,0 @@ -{% extends "app/base.html.twig" %} -{% block title %}لیست API{% endblock %} -{% block body %} -
-
-

- - {{ block('title') }} -

-
-
- جدید -
-
-
-
- - - - - - - - - - {% for index,item in items %} - - - - - - {% endfor %} - -
#عنوانعملیات
{{ index + 1}} - {{ item.title }} - - -
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/app/api/new.html.twig b/hesabixCore/templates/app/api/new.html.twig deleted file mode 100644 index eb349c6..0000000 --- a/hesabixCore/templates/app/api/new.html.twig +++ /dev/null @@ -1,27 +0,0 @@ -{% extends "app/base.html.twig" %} -{% block title %}افزودن API{% endblock %} -{% block body %} -
-
-

- - {{ block('title') }} -

-
- -
-
-
- {{ form_start(form) }} - {{ form_row(form.title,{'attr':{'class':'mb-2'}}) }} - {{ form_row(form.body,{'attr':{'class':'mb-2'}}) }} -
- {{ form_widget(form.submit) }} - بازگشت -
- {{ form_end(form) }} -
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/app/base.html.twig b/hesabixCore/templates/app/base.html.twig deleted file mode 100644 index a1bfae2..0000000 --- a/hesabixCore/templates/app/base.html.twig +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - {% block title %}{% endblock %} - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - -
- -
- {% block body %}{% endblock %} -
- -
- -
- - - - \ No newline at end of file diff --git a/hesabixCore/templates/app/blog/comments.html.twig b/hesabixCore/templates/app/blog/comments.html.twig deleted file mode 100644 index 1bd9c27..0000000 --- a/hesabixCore/templates/app/blog/comments.html.twig +++ /dev/null @@ -1,60 +0,0 @@ -{% extends "app/base.html.twig" %} -{% block title %}دیدگاه‌های وبلاگ{% endblock %} -{% block body %} -
-
-

- - {{ block('title') }} -

- -
-
- - - - - - - - - - - - - {% for index,item in items %} - - - - - - - - - {% endfor %} - -
#متننویسندهمحتواوضعیتعملیات
{{ index + 1}} - {{ item.body }} - - {{ item.name }} - - {{ item.post.title }} - - {% if item.publish %}منتشر شده{% else %}در انتظار تایید{% endif %} - - -
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/app/blog/new.html.twig b/hesabixCore/templates/app/blog/new.html.twig deleted file mode 100644 index b765f5f..0000000 --- a/hesabixCore/templates/app/blog/new.html.twig +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "app/base.html.twig" %} -{% block title %}افزودن پست{% endblock %} -{% block body %} -
-
-

- - {{ block('title') }} -

-
- -
-
-
- {{ form_start(form) }} - {{ form_end(form) }} -
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/app/blog/posts.html.twig b/hesabixCore/templates/app/blog/posts.html.twig deleted file mode 100644 index eeedf66..0000000 --- a/hesabixCore/templates/app/blog/posts.html.twig +++ /dev/null @@ -1,51 +0,0 @@ -{% extends "app/base.html.twig" %} -{% block title %}پست‌های وبلاگ{% endblock %} -{% block body %} -
-
-

- - {{ block('title') }} -

- -
-
- - - - - - - - - - {% for index,item in items %} - - - - - - {% endfor %} - -
#عنوانعملیات
{{ index + 1}} - {{ item.title }} - - -
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/app/dashboard.html.twig b/hesabixCore/templates/app/dashboard.html.twig deleted file mode 100644 index 716302f..0000000 --- a/hesabixCore/templates/app/dashboard.html.twig +++ /dev/null @@ -1,5 +0,0 @@ -{% extends "app/base.html.twig" %} -{% block title %}داشبورد{% endblock %} -{% block body %} -zzz -{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/app/guide/list.html.twig b/hesabixCore/templates/app/guide/list.html.twig deleted file mode 100644 index d345179..0000000 --- a/hesabixCore/templates/app/guide/list.html.twig +++ /dev/null @@ -1,52 +0,0 @@ -{% extends "app/base.html.twig" %} -{% block title %}لیست راهنماها{% endblock %} -{% block body %} -
-
-

- - {{ block('title') }} -

-
-
- جدید -
-
-
-
- - - - - - - - - - - {% for index,item in items %} - - - - - - - {% endfor %} - -
#عنواندسته‌بندیعملیات
{{ index + 1}} - {{ item.title }} - - {{ item.cat }} - - -
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/app/guide/new.html.twig b/hesabixCore/templates/app/guide/new.html.twig deleted file mode 100644 index 369e0a8..0000000 --- a/hesabixCore/templates/app/guide/new.html.twig +++ /dev/null @@ -1,28 +0,0 @@ -{% extends "app/base.html.twig" %} -{% block title %}افزودن راهنما{% endblock %} -{% block body %} -
-
-

- - {{ block('title') }} -

-
- -
-
-
- {{ form_start(form) }} - {{ form_row(form.cat,{'cat':{'class':'mb-2'}}) }} - {{ form_row(form.title,{'attr':{'class':'mb-2'}}) }} - {{ form_row(form.body,{'attr':{'class':'mb-2'}}) }} -
- {{ form_widget(form.submit) }} - بازگشت -
- {{ form_end(form) }} -
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/app/sync-database.html.twig b/hesabixCore/templates/app/sync-database.html.twig deleted file mode 100644 index 200f5de..0000000 --- a/hesabixCore/templates/app/sync-database.html.twig +++ /dev/null @@ -1,23 +0,0 @@ -{% extends "app/base.html.twig" %} -{% block title %}به روز رسانی دیتابیس{% endblock %} -{% block body %} -
-
-
-
-
-

به روز رسانی دیتابیس

-
-
-
- {{ content }} -
-
-
-
-
-
-
-
- -{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/base-betheme.html.twig b/hesabixCore/templates/base-betheme.html.twig deleted file mode 100644 index 5236caf..0000000 --- a/hesabixCore/templates/base-betheme.html.twig +++ /dev/null @@ -1,227 +0,0 @@ -{% set settings = twigFunctions.systemSettings() %} - - - - - - - - - - - حسابیکس - - {% block title %}{% endblock %} - - - - - - - - - - - - - - - - - - - {# Run `composer require symfony/webpack-encore-bundle` to start using Symfony UX #} - {% block stylesheets %}{% endblock %} - - {% block javascripts %}{% endblock %} - - -
- -
{% block body %}{% endblock %} -
- -
-
-
-
- - - -
-
-
-
- -
- - - - - - - - - - - - - {{ settings.scripts | raw }} - - - diff --git a/hesabixCore/templates/base.html.twig b/hesabixCore/templates/base.html.twig deleted file mode 100644 index 667dff6..0000000 --- a/hesabixCore/templates/base.html.twig +++ /dev/null @@ -1,322 +0,0 @@ -{% set settings = twigFunctions.systemSettings() %} - - - - - - - - - - - حسابیکس - - {% block title %}{% endblock %} - - - - - - - - - - - - - - - - - - - - {# Run `composer require symfony/webpack-encore-bundle` to start using Symfony UX #} - {% block stylesheets %}{% endblock %} - - {% block javascripts %}{% endblock %} - - - - -
- - - - -
- - - - -
{% block body %}{% endblock %} -
- - - {{settings.footer | raw}} - - -
-
- - {{ settings.scripts | raw }} - - diff --git a/hesabixCore/templates/blog/base.html.twig b/hesabixCore/templates/blog/base.html.twig deleted file mode 100644 index d6e927d..0000000 --- a/hesabixCore/templates/blog/base.html.twig +++ /dev/null @@ -1,43 +0,0 @@ -{% extends "base.html.twig" %} -{% block body %} -
-
-
- {% block content %}{% endblock %} -
-
- -
-
-

نظرات اخیر

-
-
- {% set comments = Blog.getLastComments() %} - {% for comment in comments %} -
- {{ comment.name }} در {{ comment.post.title }} -

{{ comment.body }}

-
- {% endfor %} -
-
- - -
-
-

دسته‌بندی‌ها

-
-
- {% set cats = Blog.getCats() %} - -
-
- -
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/blog/list.html.twig b/hesabixCore/templates/blog/list.html.twig deleted file mode 100644 index 9f0d703..0000000 --- a/hesabixCore/templates/blog/list.html.twig +++ /dev/null @@ -1,56 +0,0 @@ -{% extends "blog/base.html.twig" %} -{% block description %}تازه‌های حسابداری با وبلاگ حسابیکس{% endblock %} -{% block title %}وبلاگ{% endblock %} -{% block content %} - {% for item in items %} -
-
-
-
- - - -
-
-
-

- {{ item.title}} -

-
- {{ item.submitter.fullname }} در {{ Jdate.jdate('Y/n/d',item.dateSubmit)}} -
-

{{ item.intero}} ادامه مطلب -

-
-
-
-
-
- {% endfor %} - - - -{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/blog/post.html.twig b/hesabixCore/templates/blog/post.html.twig deleted file mode 100644 index fc339cf..0000000 --- a/hesabixCore/templates/blog/post.html.twig +++ /dev/null @@ -1,100 +0,0 @@ -{% extends "blog/base.html.twig" %} -{% block title %}{{ item.title }}{% endblock %} -{% block description %}{{ item.title }}{% endblock %} -{% block keywords %}{{ item.keywords }}{% endblock %} -{% block content %} -
- -
-
-
-

{{ item.title }}

-

{{ item.intero }}

-

- - {{ item.submitter.fullname}} - - {{ Jdate.jdate('Y/n/d',item.dateSubmit)}} -

-
-
-
- - - -
-
-
- - - -
-

{{ item.body | raw }}

-
- - - -
-
- - -
-
- -
-
-
ارسال دیدگاه
- {{ form_start(form) }} - {{ form_errors(form) }} -
-
-
- {{ form_row(form.name,{'attr':{'class':'required'}}) }} -
-
- {{ form_row(form.email) }} -
-
- {{ form_row(form.website) }} -
-
- {{ form_row(form.body) }} -
-
-
- {{ form_end(form) }} -
-
-

دیدگاه‌ها

- {% for comment in comments %} -
- - - -
-

- {{ comment.name }} - {{ comment.body }} -

-
-
- {% endfor %} - {% if comments | length == 0 %} -
هنوز دیدگاهی ارسال نشده است.
- {% endif %} -
-
-
-
-
- -
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/general/about.html.twig b/hesabixCore/templates/general/about.html.twig deleted file mode 100644 index 6fe2415..0000000 --- a/hesabixCore/templates/general/about.html.twig +++ /dev/null @@ -1,253 +0,0 @@ -{% extends "base-betheme.html.twig" %} -{% block title %}داستان حسابیکس -{% endblock %} -{% block body %} -
-
-
-
-
-
- - حسابیکس ، گامی به جلو...
-

- حسابیکس - - چطور ایجاد شد؟ - -

- -
-

- مدل کسب و کار ما با سایر شرکت‌ها متفاوت است. در واقع حسابیکس برای نقد سایر شرکت‌های ارائه دهنده خدمات حسابداری و به چالش کشیدن مدل درآمد آنها به وجود آمد. همه‌ی ما می‌دانیم هر کسب‌وکاری زمان‌هایی دارای افول بوده و شاید در مرحله نابودی باشند در این زمان دسترسی به اطلاعات حسابداری کسب‌و‌کار از مهمترین چالشها و تحلیل این اطلاعات است اما متاسفانه با توجه به بازار نرم افزار‌های حسابداری که روز به روز به سمت گران‌تر شدن قیمت خدمات پیش می‌روند در پیچ‌های تاریخی کسب‌وکارها را تنها می‌گذارند -

-

- احتمالا بعد از آنکه اوضاع خوب پیش نمی رود و چند ماهی فروش نداشته‌اید کم کم اکانت حسابداری شما در حال به اتمام رسیدن است و در مهمترین قسمت کار که قصد اتخاذ تصمیمات مهم را دارید متاسفانه به یکباره این اطلاعات از دسترستان خارج می‌شود. -

-

- حسابیکس دقیقا در نقطه مقابل این ماجرا به وجود آمده است. که برای یک کسب و کار بتوان به صورت رایگان از کلیه امکانات آن استفاده کرد. اگر تبلیغات را دوست ندارید می توانید با پرداخت هزینه اندک این تبلیغات را پنهان کنید. اگر با دانش برنامه نویسی آشنایی دارید همه‌چیز برای توسعه حسابیکس توسط شما مهیاست.تست کنید ، توسعه دهید و شاید دوست داشته باشید یکی مثل حسابیکس ایجاد کنید. حسابیکس متن باز است و دسترسی به کد منبع آن از طریق - github در دسترس است. -

-
-
-
- -
-
-
-
-
-
-
-
-

امکانات متمایز حسابیکس

- -
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
- بودجه -
-

- حسابیکس عملا رایگان است و تنها برای یک سری امکانات اضافه در صورت نیاز هزینه‌ای اندک پرداخت می‌کنید -

-
-
-
-
-
-
-
-
- -
-
- گزارشات متنوع -
-

- حسابیکس دارای متنوع ترین فهرست از گزارشات مالی است و تمام بخش‌های نرم افزار دارای خروجی‌های اکسل و PDF است. -

-
-
-
-
-
-
-
-
- -
-
- رایانش ابری -
-

- حسابیکس به لطف استفاده از فناوری رایانش ابری به مراتب عملیات‌ها را از نرم‌افزار‌های سنتی سریع‌تر انجام می‌دهد. -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
- امنیت داده -
-

- از کلیه اطلاعات کاربران در طول شبانه روز به صورت اتوماتیک نسخه پشتیبان تهیه و همچنین اطلاعات به صورت همزمان در دو مرکز داده متفاوت ذخیره می‌شوند. -

-
-
-
-
-
-
-
-
- -
-
- تصمیم گیری مالی -
-

- حسابیکس به شما کمک می‌کند اطلاعاتی شفاف و دقیق از وضعیت کسب‌و‌کار خود در لحظه داشته باشید. -

-
-
-
-
-
-
-
-
- -
-
- چند کاربر - -
-

- در حسابیکس چندین کاربر می‌توانند به صورت همزمان بر روی یک کسب و کار فعالیت داشته باشند و امکان اعمال محدودیت و دسترسی برای کاربران قابل انجام است. -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- مخازن پروژه
-

دسترسی به کد منبع محصولات ما

- -
-

- حسابیکس به صورت متن‌باز ارائه شده و دسترسی به کد منبع محصولات از طریق GitHub در دسترس می‌باشد. -

-
-
-
-
-
-
-
- -
Hesabix UI
-
-
رابط کاربری تحت وب
-

- - ما برای ساخت رابط کاربری حسابیکس از VueJs 3 - به همراه Bootstrap 5 استفاده کردیم.جدیدترین تکنولوژی‌های روز... - -

-
-
-
-
- -
Hesabix Core
-
- -
قلب تپنده ، رابط API
-

- هسته حسابیکس توسط جدیدترین نسخه فریمورک Symfony نسخه ۷ توسعه داده شده و به لطف doctrine از طیف وسیعی از پایگاه های داده پشتیبانی می‌کند. -

-
-
-
-
- -
Hesabix Box
-
-
- رابط لایه سیستم‌عامل ویندوز
-

- دسترسی به پرینتر‌های ابری و سایر تجهیزات از جمله بارکدخوان‌ها و ترازو‌های دیجیتال از طریق این نرم‌افزار صورت می‌گیرد که با زبانVB.NET و دات نت نسخه 4 توسعه داده شده است. -

-
-
-
-
-
-
-
-
-
- -
-
-
-

- حسابیکس با کمک‌های مالی شما به روز می‌شود.حتی با خرید یک چایی .... -

-
-
- -
-
-
-
-{% endblock %} diff --git a/hesabixCore/templates/general/api.html.twig b/hesabixCore/templates/general/api.html.twig deleted file mode 100644 index 84a01d9..0000000 --- a/hesabixCore/templates/general/api.html.twig +++ /dev/null @@ -1,32 +0,0 @@ -{% extends "base.html.twig" %} -{% block title %}{{ item.title }}{% endblock %} -{% block body %} -
-
-
-
-
-

مستندات API

-
-
- -
-
-

{{ block('title') }}

-

{{ item.body | raw }}

-
-
-
-
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/general/contact.html.twig b/hesabixCore/templates/general/contact.html.twig deleted file mode 100644 index f7aeebd..0000000 --- a/hesabixCore/templates/general/contact.html.twig +++ /dev/null @@ -1,112 +0,0 @@ -{% extends "base-betheme.html.twig" %} -{% block title %}تماس با ما{% endblock %} -{% block body %} -
-
-
-
-
- -

- اگر سوالی دارید، -
- ما اینجا هستیم تا به شما کمک کنیم. -
- با ما تماس بگیرید -

- -
-

- بهترین و سریع‌ترین راه برای درخواست‌های پشتیبانی ارسال تیکت است. ارسال تیکت از داخل پنل کاربری در دسترس شما قرار دارد.همچنین با پاسخ کارشناسان به تیکت ، به شما از طریق پیامک اطلاع رسانی خواهد شد. -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
نشانی
-

- ایران،
- کرمانشاه شهرک صنعتی اسلام آباد غرب
- خیابان کارگر - پلاک 2 -

-
-
-
-
-
تلفن
-

083-4532-3211

-
-
پشتیبانی از طریق شبکه‌های اجتماعی
-

- 0098-9183282405 -

-
-
-
-
-
آموزش
-

- training@cdn.hesabix.ir -

-
-
پشتیبانی
-

- support@cdn.hesabix.ir -

-
-
-
-
-
-
-
 
-
-
-
-
- با ما آشنا شوید - تلگرام - اینستاگرام -
-
-
-
-
-
-
-
-
-
- -
-
-
-

همین حالا شروع کنید و امور مالی خود را شفاف و منظم کنید

-
-
- -
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/general/faq.html.twig b/hesabixCore/templates/general/faq.html.twig deleted file mode 100644 index 79cbc14..0000000 --- a/hesabixCore/templates/general/faq.html.twig +++ /dev/null @@ -1,112 +0,0 @@ -{% extends "base.html.twig" %} -{% block title %}سوالات متداول{% endblock %} -{% block body %} -
-
-
-
-
-

سوالات متداول

-
-

- ابر چیست؟ -

-

- ابر زیرساختی مجازی از منابع محاسباتی و ذخیره‌سازی داده است که از طریق اینترنت به کاربران ارائه می‌شود. این منابع می‌توانند شامل سرورها، فضای ذخیره‌سازی داده، شبکه‌ و تجهیزات مجازی‌سازی باشند. -

-
-
-
-

- نرم ‌افزار حسابداری ابری چیست؟ -

-

- نرم افزار حسابداری ابری که به آن نرم افزار حسابداری آنلاین هم می‌گویند، نرم افزاری است که به شما کمک می‌کند دفاتر حسابداری خود را آنلاین ثبت و نگهداری کنید. نرم افزار حسابداری ابری مانند حسابیکس به جای اینکه روی رایانه رومیزی یا سرورهای سازمان (در محل مشتری) نصب شود، در فضای ابری قرار دارد. همین ویژگی باعث می‌شود تا به داده‌های مالی و امکانات سیستم از هر دستگاه آنلاینی در هر زمانی و مکانی دسترسی داشته باشید. -

-
-
-
-

- آیا امکان قطع شدن حسابیکس وجود دارد؟ -

-

- 24 ساعته و با ضریب دسترسی بالای 99 درصد، دسترسی به حسابیکس وجود دارد. -

-
-
-
-

- آیا حسابیکس آنلاین است یا نیاز به دانلود و نصب نرم افزار است؟ -

-

- شما نیاز به دانلود و نصب هیچ نرم افزاری ندارید. حسابیکس کاملاً آنلاین است - و شما پس از ثبت نام می توانید وارد حساب کاربری خود شده و حسابداری خود را شروع کنید. -

-
-
-
-

- آیا برای اپ موبایل هزینه جداگانه ای باید بپردازم؟ -

-

- خیر، اپ موبایل حسابیکس رایگان بوده و شما با همان اکانت خود - که در وب سایت وارد می شوید می توانید وارد اپ موبایل هم شوید - و نیازی به پرداخت هزینه جداگانه نیست. -

-
-
-
-

- چقدر طول می‌کشد تا به حسابیکس مسلط شویم؟ -

-

- فقط کافی است کار با حسابیکس را آغاز کنید. متوجه می‌شوید که تجربه کاربری نرم‌افزار طوری است که با حداقل زمان به نرم‌افزار مسلط شوید.همچنین می‌توانید از بخش دانشنامه به مطالب و ویدئوهای آموزشی دسترسی داشته باشید. -

-
-
-
-

- آیا برای کار با حسابیکس نیاز به دانش حسابداری است؟ -

-

- خیر، حسابیکس بگونه ای طراحی شده که تقریبا همه کارهای لازم بصورت اتوماتیک انجام می شوند. - به عنوان مثال با ثبت فاکتور فروش، سند حسابداری مربوطه بصورت اتوماتیک ثبت می شود، همینطور در مورد - سایر عملیات های حسابداری مثل دریافت، پرداخت، ضایعات و ... -
- اگر چه حسابداران و افرادی که دانش حسابداری دارند نیز می توانند بخوبی با حسابیکس کار کنند - و از مزایای دانش خود بهره ببرند. -

-
-
-
-

- نسخه پشتیبان در این نرم‌افزار چگونه تهیه می‌شود؟ -

-

- حسابیکس، خودکار و روزانه، از اطلاعات شما نسخه پشتیبان تهیه می‌کند؛ بنابراین نگرانی بابت از بین رفتن اطلاعات وجود ندارد.بعلاوه بصورت خودکار هر روز از داده های کاربران نسخه پشتیبان تهیه و تمامی داده ها بصورت رمزنگاری شده روی فضای ابری نگهداری می شوند.همچنین کاربران می توانند نسخه مستقیم پایگاه داده را با تماس با بخش پشتیبانی دریافت کنند. -

-
-
-
-

- آینده نرم‌افزارهای حسابداری ابری چیست؟ -

-

- به نظر می‌رسد با امکانات متمایز این تکنولوژی، در آینده نزدیک نرم‌افزارهای سنتی حذف شوند و با نرم‌افزارهای ابری جایگزین شوند. حدود 70% کسب‌وکارهای کوچک و متوسط در دنیا نرم‌افزار حسابداری ابری را به نرم‌افزار حسابداری سنتی ترجیح می‌دهند. این روند در ایران در حال شکل‌گیری است. -

-
-
-
-

- اگر اینترنت قطع شود امکان کار با حسابیکس وجود دارد؟ -

-

- برای استفاده از نرم افزارهای ابری شما باید به شبکه اینترنت دسترسی داشته باشید. به دلیل استفاده حسابیکس از سرورهای داخل ایران، با قطع شدن اینترنت بین المللی امکان دسترسی به دیتا برای کاربران حسابیکس وجود دارد و با محدودیتی مواجه نخواهند شد. -

-
-
-
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/general/features/buy_sell.html.twig b/hesabixCore/templates/general/features/buy_sell.html.twig deleted file mode 100644 index d7ef56a..0000000 --- a/hesabixCore/templates/general/features/buy_sell.html.twig +++ /dev/null @@ -1,83 +0,0 @@ -{% extends "base.html.twig" %} -{% block title %}ویژگی‌ها: خرید و فروش {% endblock %} -{% block body %} -
-
-
- -
-
-
-
-
-

صدور فاکتور

-

در نرم‌افزار حسابداری حسابیکس، به راحتی و سهولت می توانید کالاها را به فاکتور اضافه کنید، همچنین امکان استفاده از بارکدخوان یا اسکن لیبل بارکد از طریق موبایل برای شما فراهم است. صدور فاکتور به سایر ارزها، محاسبه خودکار تخفیف و مالیات به صورت درصد و مبلغی، هزینه حمل و تعیین بازاریاب به ازای هر فاکتور از دیگر امکانات این بخش است.

-
-
-
-
-
- -
-
-
-
-
-
-
-

محاسبه پورسانت بازاریاب

-

در صورت تعیین فروشنده فاکتور، پورسانت فروشنده محاسبه شده و سند هزینه بازاریابی به طور اتوماتیک در سیستم ثبت خواهد شد. همچنین امکان محاسبه و مشاهده گزارش پورسانت فروشندگان در مقاطع زمانی مختلف وجود دارد.

-
-
-
-
-
- -
-
-
-
-
-
-
-

دریافت و پرداخت ذیل فاکتور

-

بلافاصله پس از ثبت فاکتور می‌توانید مبلغ آن‌را در قالب قبض دریافت و پرداخت ثبت کنید. امکان دریافت و پرداخت در بانک، صندوق، چک یا خرج چک، همچنین به صورت اعتباری فراهم شده است.

-
-
-
-
-
- -
-
-
-
-
-
-
-

رسید و حواله انبار

-

بلافاصله پس از ثبت فاکتور، حواله انبار را به صورت سریع می‌توانید صادر کنید، کافی‌است که انبار مربوطه را به صورت کلی یا به ازای هر ردیف کالا انتخاب کنید. حواله به صورت خودکار صادر خواهد شد.

-
-
-
-
-
- -
-
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/general/features/setup.html.twig b/hesabixCore/templates/general/features/setup.html.twig deleted file mode 100644 index 2ddb513..0000000 --- a/hesabixCore/templates/general/features/setup.html.twig +++ /dev/null @@ -1,77 +0,0 @@ -{% extends "base.html.twig" %} -{% block title %}ویژگی‌ها: نصب نگهدار و پشتیبانی{% endblock %} -{% block body %} -
-
-
-
-

بدون نیاز به نصب و کار بر روی هر دستگاهی

-

برای کار با حسابیکس فقط به یک دستگاه متصل به اینترنت نیاز دارید، فرقی نمی کند که این دستگاه تبلت یا موبایل باشد یا اینکه رایانه و لپ تاپ. نیاز نیست که هیچگونه نرم افزاری را نصب کنید. کافیست در سایت ثبت نام کرده و بلافاصله کسب و کار خود را مدیریت کنید.

-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-
-
-

بدون نیاز به نگهداری

-

حسابیکس ویروسی نمی شود و از روی سیستم شما پاک نخواهد شد. حسابیکس بهم نمی‌ریزد و خراب شدنی نیست. حسابیکس نیاز به آپدیت و بروز رسانی ندارد و هربار که به حسابیکس وارد می‌شوید، آخرین نسخه موجود، تمیز و تازه، در دسترس شما قرار می‌گیرد.

-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-
-
-

بدون نیاز به تهیه نسخه پشتیبان

-

در حسابداری ابری حسابیکس لازم نیست که از اطلاعات خود پشتیبانی تهیه کنید (هرچند امکان پذیر است)، حسابیکس به طور خودکار هر شب از اطلاعات شما پشتیبانی تهیه کرده و آن را به مدت ۳۰ روز نگهداری می‌کند.

-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/general/features/user_managment.html.twig b/hesabixCore/templates/general/features/user_managment.html.twig deleted file mode 100644 index 9e8a924..0000000 --- a/hesabixCore/templates/general/features/user_managment.html.twig +++ /dev/null @@ -1,51 +0,0 @@ -{% extends "base.html.twig" %} -{% block title %}ویژگی‌ها: مدیریت کاربران {% endblock %} -{% block body %} -
-
-
-
-

دعوت کاربران به کسب و کار

-

در حسابداری آنلاین حسابیکس می‌توانید کاربران مختلفی را به کسب و کار خود دعوت کنید. همچنین هر کاربر می‌تواند همزمان در چندین کسب و کار مختلف مشارکت داشته باشد و در هر زمان نیز کسب و کار را ترک کند.

-
-
-
-
-
- -
-
-
-
-
-
-
-

سطوح دسترسی پیشرفته

-

مدیر سیستم می تواند دسترسی کاربر را بر روی کلیه امکانات سیستم تعیین کند. کلیه عملیات نظیر ذخیره، مشاهده، ویرایش یا حذف توسط مدیر سیستم برای کاربران قابل تنظیم است.

-
-
-
-
-
- -
-
-
-
-
-
-
-

تاریخچه فعالیت کاربران

-

تمامی فعالیت های صورت گرفته بر روی کلیه اطلاعات سیستم توسط کاربران در سیستم به صورت لاگ ذخیره می شود. سابقه تغییرات برای کلیه اسناد و اطلاعات ثبت شده در سیستم قابل مشاهده و گزارش گیری است.

-
-
-
-
-
- -
-
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/general/guide.html.twig b/hesabixCore/templates/general/guide.html.twig deleted file mode 100644 index 697bb80..0000000 --- a/hesabixCore/templates/general/guide.html.twig +++ /dev/null @@ -1,84 +0,0 @@ -{% extends "base.html.twig" %} -{% block title %}راهنمای بخش {% if items | length != 0 %}{{ items.0.cat }}{% endif %}{% endblock %} -{% block description %}{{ block('title') }}{% endblock %} -{% block body %} -
-
-
-
-
-

راهنمای استفاده از حسابیکس

-
- -
- {% if items | length == 0 %} -
-

- فعلا راهنمایی وجود ندارد. -

-
- {% else %} -
- {% for item in items %} -
-

- -

-
-
- {{ item.body | raw }} -
-
-
- {% endfor %} -
- {% endif %} -
-
-
-
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/general/hesabixbox.html.twig b/hesabixCore/templates/general/hesabixbox.html.twig deleted file mode 100644 index c597ed0..0000000 --- a/hesabixCore/templates/general/hesabixbox.html.twig +++ /dev/null @@ -1,66 +0,0 @@ -{% extends "base.html.twig" %} -{% block title %} -حسابیکس باکس رابط ویندوزی حسابیکس -{% endblock %} -{% block body %} -
- -
-
-
-

- -

-

حسابیکس باکس رابط ویندوزی حسابیکس

-

- رابط تحت ویندوز حسابیکس با نام حسابیکس باکس جهت ارتباط با حسابیکس بر روی بستر ویندوز توسعه داده شده است و هماکنون در مرحله آزمایشی قرار دارد. -

- - - - دریافت حسابیکس باکس - - -
- -
-
-
- - - -
-
-
- -
-
-
-
-

- برای اتصال پرینتر‌های ابری الزاما باید این نرم افزار بر روی رایانه مورد نظر نصب باشد. -

- - -
-
-

پیش نیاز‌ها:

-
    -
  • - Dotnet framework 6 runtime -
  • -
  • - Adobe Acrobat Reader 2010 یا نسخه بالاتر -
  • -
-
-
- -
-
-
- -
-{% endblock %} diff --git a/hesabixCore/templates/general/home.html copy.twig b/hesabixCore/templates/general/home.html copy.twig deleted file mode 100644 index 866843d..0000000 --- a/hesabixCore/templates/general/home.html copy.twig +++ /dev/null @@ -1,338 +0,0 @@ -{% extends "base-betheme.html.twig" %} -{% block title %} - نرم افزار حسابداری آنلاین ، متن باز و کاملا رایگان -{% endblock %} -{% block body %} -
-
-
-

- حسابیکس لوگو - حسابداری آنلاین حسابیکس -

-

- برای کار با حسابیکس فقط به یک دستگاه متصل به اینترنت نیاز دارید، فرقی نمی‌کند که این دستگاه تبلت یا موبایل باشد یا اینکه رایانه و لپ تاپ. - نیاز نیست که هیچگونه نرم افزاری را نصب کنید. کافیست در سایت ثبت نام کرده و بلافاصله کسب و کار خود را مدیریت کنید. -

-
- - - ورود | عضویت رایگان - - {% if is_granted('ROLE_ADMIN') %} - - - پنل مدیریت - - {% endif %} -
-
-
- پیش نمایش حسابیکس -
-
-
-
-
-
-
-
- -

نتیجه اعتماد کاربران

-
-
-
-
-

- -

-

- {{ business | number_format }} - کسب‌و‌کار -

-
-
-

- -

-

- {{ users | number_format }} - کاربر -

-
-
-

- -

-

- {{ docs | number_format }} - سند -

-
-
-
-
-
-
-
- -
-
-
-
-
-
-
- حسابیکس چیست؟ -
-

- حسابیکس اولین نرم افزار کامل حسابداری تحت وب است. این نرم افزار بر اساس فناوری رایانش ابری ساخته شده است. یعنی کلیه اطلاعات شما بر روی سرورهای حسابیکس قرار می گیرد. ما امنیت اطلاعات و حریم خصوصی کلیه کاربران را به طور کامل تضمین می کنیم. برای کار با حسابیکس فقط به یک دستگاه متصل به اینترنت نیاز دارید، فرقی نمی کند که این دستگاه تبلت یا موبایل باشد یا اینکه رایانه و لپ تاپ. نیاز نیست که هیچگونه نرم افزاری را نصب کنید. کافیست در سایت ثبت نام کرده و بلافاصله کسب و کار خود را مدیریت کنید. -

-
-
-
-
-
-
-
- ساده و قدرتمند -
-

- برای کار با حسابیکس فقط به یک دستگاه متصل به اینترنت نیاز دارید، مهم نیست که این دستگاه تبلت یا موبایل باشد یا اینکه رایانه و لپ تاپ. - نیاز نیست که هیچگونه نرم افزاری را نصب کنید. کافیست در سایت ثبت نام کرده و بلافاصله کسب و کار خود را مدیریت کنید. -

-
-
-
-
-
-
-
-
-
-
- نقاط قوت و تمایز -
-

- در حسابیکس می توانید فاکتورهای مشتریان را به صورت آنلاین برای آنها ارسال کنید، مشتری نیز می تواند فاکتور یا حتی مانده بدهی خود را به صورت آنلاین پرداخت کند. کلیه اسناد مربوطه نیز توسط نرم افزار به صورت اتوماتیک صادر می شوند. از سوی دیگر ذینفعان کسب و کار شما، مانند مشتریان یا تامین کنندگان، می توانند به صورت آنلاین و بروز، کارت حساب خود را مشاهده کنند. -

-
-
-
-
-
-
-
- سریع و به روز -
-

- با وجود اینکه حسابیکس بر روی بستر اینترنت ارائه می شود، این نرم افزار بسیار سریع است. تجربه کاربری ارائه شده در حسابیکس نه تنها از لحاظ سرعت با نرم افزارهای تحت ویندوز رقابت می کند بلکه در بسیاری از موارد عملیات را سریعتر انجام می دهد. به علاوه حسابیکس همیشه بروز است. هر زمان که به سیستم وارد می شوید، آخرین نسخه از نرم افزار در دسترس شما قرار می گیرد. این امکانات به رایگان در اختیار کلیه کاربران قرار می گیرد. -

-
-
-
-
-
-
-
-
-
-
-
-
-
-

- راه اندازی حسابیکس در کسب و کار شما -

-

- حسابیکس بسیار انعطاف پذیر و برای مدیریت اکثر کسب و کارها کارآمد است.برای آموزش راه اندازی اولیه کسب و کار خود در حسابیکس کافی است با ما تماس بگیرید . - راه‌اندازی کسب و کار و مشاوره با کارشناسان ما کاملا رایگان است -

-
- -
-
-
-
-
-
-
-
-
-
-
-

- - جدیدترین عضو حسابیکس... -

-

- به جدیدترین عضو حسابیکس - - {{ lastBusinessOwner }} - - که کسب‌و‌کار خود را با نام - - {{ lastBusinessName }} - - ایجاد کرده‌اند خوش‌آمد می‌گوییم. -

-
-
-
-
-
-
-
-
-
-
-
-

حامیان حسابیکس

-
-
-
- راددیتا -
-
مرکز ارتباطات راد دیتا
-

پیشرو در ارائه خدمات فنی مهندسی و سرویس های مرکز داده در ایران و خارج با بالاترین کیفیت و قیمت مناسب

- وب سایت -
-
-
-
-
- پارس‌پک -
-
پارس‌پک
-

از یک استارت‌آپ کوچک تا سازمانی بزرگ پشتیبان‌تان هستیم. پیشرو در راهکارهای ابری

- وب سایت -
-
-
-
-
- ملی پیامک -
-
سامانه پیام کوتاه ملی‌پیامک
-

ملی پیامک یک سامانه پیامکی معمولی نیست! یک ابزار قدرتمند است برای آنکه مشتری را جذب کنید، از او نگهداری کنید، یک رابطه پایدار بسازید و خدمات بهتری ارائه دهید. وقت آن رسیده که نگاهی بزرگ‌تر به پیام کوتاه داشته باشیم. -

- - - سفارش پنل پیامک - -
-
-
-
-
-
- {% if blogPosts | length > 0 %} -

- وبلاگ حسابیکس -

- - {% endif %} -
-{% endblock %} - diff --git a/hesabixCore/templates/general/home.html.twig b/hesabixCore/templates/general/home.html.twig deleted file mode 100644 index 15a5e5e..0000000 --- a/hesabixCore/templates/general/home.html.twig +++ /dev/null @@ -1,270 +0,0 @@ -{% extends "base-betheme.html.twig" %} -{% block title %} - نرم افزار حسابداری آنلاین ، متن باز و کاملا رایگان -{% endblock %} -{% block body %} -
-
-
-
-

حسابیکس چیست؟

- -
-

- حسابیکس اولین نرم افزار کامل حسابداری تحت وب است. این نرم افزار بر اساس فناوری رایانش ابری ساخته شده است. یعنی کلیه اطلاعات شما بر روی سرورهای حسابیکس قرار می گیرد. ما امنیت اطلاعات و حریم خصوصی کلیه کاربران را به طور کامل تضمین می کنیم. برای کار با حسابیکس فقط به یک دستگاه متصل به اینترنت نیاز دارید، فرقی نمی کند که این دستگاه تبلت یا موبایل باشد یا اینکه رایانه و لپ تاپ. نیاز نیست که هیچگونه نرم افزاری را نصب کنید. کافیست در سایت ثبت نام کرده و بلافاصله کسب و کار خود را مدیریت کنید.

-
-
-
-
- -
-

- سریع و امن -

-

- با وجود اینکه حسابیکس بر روی بستر اینترنت ارائه می شود، این نرم افزار بسیار سریع است. تجربه کاربری ارائه شده در حسابیکس نه تنها از لحاظ سرعت با نرم افزارهای تحت ویندوز رقابت می کند بلکه در بسیاری از موارد عملیات را سریعتر انجام می دهد. به علاوه حسابیکس همیشه بروز است. هر زمان که به سیستم وارد می شوید، آخرین نسخه از نرم افزار در دسترس شما قرار می گیرد. این امکانات به رایگان در اختیار کلیه کاربران قرار می گیرد. -

-
-
-
-
- -
-

- نقاط قوت و تمایز -

-

- در حسابیکس می توانید فاکتورهای مشتریان را به صورت آنلاین برای آنها ارسال کنید، مشتری نیز می تواند فاکتور یا حتی مانده بدهی خود را به صورت آنلاین پرداخت کند. کلیه اسناد مربوطه نیز توسط نرم افزار به صورت اتوماتیک صادر می شوند. از سوی دیگر ذینفعان کسب و کار شما، مانند مشتریان یا تامین کنندگان، می توانند به صورت آنلاین و بروز، کارت حساب خود را مشاهده کنند. -

-
-
-
-
- -
-

- ساده و قدرتمند -

-

- برای کار با حسابیکس فقط به یک دستگاه متصل به اینترنت نیاز دارید، مهم نیست که این دستگاه تبلت یا موبایل باشد یا اینکه رایانه و لپ تاپ. نیاز نیست که هیچگونه نرم افزاری را نصب کنید. کافیست در سایت ثبت نام کرده و بلافاصله کسب و کار خود را مدیریت کنید. -

-
-
-
-
-
-
-
-

- نتیجه اعتماد کاربران -

-
-
-
-
-
-
-
-
- 0 -
- -
-

کاربر

-
-
-
-
-
- 0 -
- -
-

کسب‌و‌کار

-
-
-
-
-
- 0 -
- -
-

سند

-
-
-
-
-
- 0 -
- -
-

کالا و خدمات

-
-
-
-
-
-
-
-
-

- - - حسابیکس بسیار انعطاف پذیر و برای مدیریت اکثر کسب و کارها کارآمد است.برای آموزش راه اندازی اولیه کسب و کار خود در حسابیکس کافی است با ما تماس بگیرید . راه‌اندازی کسب و کار و مشاوره با کارشناسان ما کاملا رایگان است - -

-
-
- -
-
-
-
-
-
-
-{% endblock %} - -{% block top_menu %} -
- -

- - -
-
-
-
-
- -
-
-
-

- - همین حالا شروع کنید و امور مالی خود را سازماندهی کنید - -

-
-
- -
-
-
-{% endblock %} diff --git a/hesabixCore/templates/general/opensource.html.twig b/hesabixCore/templates/general/opensource.html.twig deleted file mode 100644 index bd79200..0000000 --- a/hesabixCore/templates/general/opensource.html.twig +++ /dev/null @@ -1,12 +0,0 @@ -{% extends "base.html.twig" %} -{% block title %}متن باز{% endblock %} -{% block body %} -
-
-
-
-

نرم‌افزار متن باز چیست؟

نرم‌افزار منبع باز نرم‌افزاری است که کد منبع آن بدون دریافت هزینه اضافی در اختیار عموم قرار می‌گیرد و هر کس می‌تواند این کدها را مورد بازرسی، اصلاح و بهبود قرار دهد. به طور کلی می‌توان گفت این نوع از نرم‌افزار به دلیل اعطای آزادی کامل در استفاده از کدهای آن برای توسعه و ایجاد نرم‌افزار جدید بیشتر مورد استقبال کاربران قرار گرفته است.

معنی واژه‌ی متن باز (Open Source)

متن باز یا Open Source اصطلاحی است که به نرم‌افزارهای متن باز ارجاع داده است. Open Source به یک جنبش و راهی برای کار تبدیل شده است که فراتر از تولید نرم‌افزار است. جنبش Open Source با استفاده از الگوی تولید غیر انحصاری نرم‌افزارهای متن باز راه‌های جدیدی را برای حل مشکلات در جوامع و صنایع ارائه می‌دهد.

کد منبع (Source Code) چیست؟

کد منبع یک نرم افزار در حقیقت بخشی از نرم افزار است که اکثر کاربران رایانه هرگز آن را نمی‌بینند و این کد است که برنامه نویسان را قادر به تعیین نحوه کار یک قطعه از نرم افزار یا یک برنامه می‌کند. برنامه نویسان به کد منبع یا کد خام برنامه‌ای که در سیستم کامپیوتری شما اجرا می‌شود دسترسی دارند و می‌توانند با افزودن ویژگی هایی به آن یا رفع بخش‌هایی که برخی از اوقات درست کار نمی‌کند، آن برنامه را بهبود ببخشند.

مشخصات برنامه‌های متن باز

یک برنامه متن باز باید آزادی در بازنشر لایسنس (مجوز) داشته باشد. یعنی نباید از فروش یا قرض دادن نرم‌افزار به عنوان جزیی از یک توزیع نرم افزاری جلوگیری نماید، این برنامه باید شامل کد منبع باشد، یعنی دقیقا همانند کدی که از روی آن کامپایل می‌شود در اختیار کاربران قرار گیرد.

یک برنامه‌ی متن باز می‌بایست اجازه تغییرات و مشتق شدن را به توسعه دهندگان خود بدهد و همچنین اجازه نشر آن را بر اساس لایسنس نرم افزاری اصلی فراهم کند، در یک نرم‌افزار متن باز یکپارچگی کد منبع و نویسنده می‌تواند از انتشار کد به فرم تغییر شکل یافته برنامه جلوگیری کند و تنها زمانی که فایل‌های توسعه یافته و کد منبع تغییر نمایند امکان انتشار دارند.

یک نرم‌افزار اوپن سورس نباید در مقابل فرد، گروه‌ها، قومیت یا ملیت مختلف تبعیض قائل شود، این نرم‌افزار نباید از استفاده از کدهای خود در زمینه‌های مختلف جلوگیری نماید. به عنوان مثال استفاده در یک نرم‌افزار مالی یا مدیریتی و…

مجوزهای زیادی در این زمینه وجود دارد، اما به طور کلی در صورتی یک برنامه متن باز خواهد بود که:

کدهای منبع بدون هزینه اضافی در دسترس همگان قرار گیرد، به این معنی که کاربران می‌توانند کدی را که نرم‌افزار توسط آن نوشته شده است مشاهده کرده و هر نوع تغییری را به صورت دلخواه در آن ایجاد کنند و بتوان کدهای آن را در نرم‌افزار جدید مورد استفاده قرار داد، به این معنی که هر کس بتواند کد منبع را بگیرد و برنامه خود را از طریق آن ایجاد و منتشر کند.

نرم افزار آزاد (Free) چیست؟

نرم‌افزار آزاد روی آزادی کاربران تاکید دارد و به نوعی هدف از آن احترام به جامعه و آزادی کاربران است. این به آن معنا است که کاربران بتوانند به صورت آزادانه اقدام به اجرا، کپی، انتشار، مطالعه، تغییر و بهبود نرم‌افزار کنند. این نکته در مورد نرم‌افزار آزاد حائز اهمیت است که نرم‌افزارهای آزاد لزوما رایگان نیستند. بلکه در واقع این نرم‌افزار به آزادی اهمیت می‌دهد نه به قیمت، و این همان ماهیت کلمه‌ی Free در زبان انگلیسی است. برای درک بهتر مفهوم نرم افزار آزاد بهتر است به یک آزادی مانند آزادی بیان فکر کنید نه یک ابزار رایگان، مشخصات این نرم‌افزار شامل موارد زیر است:

  • آزادی در اجرای برنامه برای هر منظوری
  • آزادی در توزیع کپی‌های ایجاد شده از آن
  • آزادی در تغییر، بهبود برنامه و انتشار تغییرات
  • آزادی در مطالعه و بررسی عملکرد برنامه و تغییر آن

بنابراین این به آن معنا است که یک نرم‌افزار آزاد می‌تواند یک نرم‌افزار متن باز نیز باشد، در صورتی که شرایط بالا را برآورده کند.

تفاوت بین نرم‌افزار آزاد و برنامه‌های متن باز

زمانی که صحبت از مجوز نرم افزار می‌شود، این دو اصطلاح کاملاً قابل تعویض هستند، زیرا (با در نظر گرفتن برخی موارد استثنا) بین مجوزهای نرم افزار آزاد و مجوزهای منبع آزاد همپوشانی زیادی وجود دارد و تفاوت زیادی بین آن‌ها وجود ندارد. تقریبا همه برنامه‌های متن باز در واقع آزاد هستند. این نرم افزارها از طریق نوع خاصی از مجوز منتشر می‌شوند و کدهای اصلی آن به صورت قانونی در دسترس کاربران نهایی قرار می‌گیرد.

بیشتر تفاوت‌ها در این نرم‌افزارها به مجوزها و تاکید روی آن‌ها بستگی دارد. به عنوان مثال اصول نرم‌افزارهای متن باز بر اساس آزادی است و آزادی ارزشی است که از هر مزیت اقتصادی مهمتر است. اما از نظر برنامه‌های متن باز آزادی یک مفهوم مطلق نیست و باید مجاز باشد. همچنین برنامه‌های متن باز تمرکز بیشتری بر روی آزادی در دسترسی به کدها و تغییرات در آن‌ها دارد و نرم‌افزار آزاد تاکید بر آزادی کلی کاربران دارد.

تاریخچه‌ی برنامه‌های متن باز

تاریخچه برنامه‌های متن باز در حقیقت با تاریخچه اینترنت برابر است. در دهه 1950 و 1960 محققان در حال توسعه فناوری‌های اولیه‌ی اینترنت و پروتکل‌های شبکه ارتباطی بودند که به یک محیط تحقیقاتی باز و مشارکتی متکی باشد. شبکه پروژه‌های تحقیقاتی ARPANET که بعدها پایه و اساس اینترنت مدرن شد، بررسی شبکه‌های همتا و ایجاد یک روند دریافت بازخورد را ارائه کرد.

گروه‌های کاربری بر اساس کد متن باز اطلاعات را با یکدیگر به اشتراک گذاشته و ساخته شده‌اند. انجمن‌ها به تسهیل گفتگو و ایجاد استانداردهای لازم برای ارتباطات و همکاری‌های باز کمک کردند، در زمان تولد اینترنت در اوایل دهه 1990، ارزش‌های همکاری، بررسی همکار، ارتباط و باز بودن در پایه‌های آن نوشته شده بود که این روش شروع ایجاد برنامه‌های متن باز بود.

مدل توسعه‌ی برنامه‌های متن باز

یک مدل توسعه برنامه متن باز فرآیندی است که توسط یک پروژه در جامعه‌ی منبع باز برای توسعه نرم‌افزارها استفاده می‌شود. بسیاری از پروژه‌های منبع باز در GitHub میزبانی می‌شوند، جایی که می‌توانید به مخازن دسترسی پیدا کنید یا در پروژه‌های جامع شرکت کنید، Linux و Ansible و Kubernetes نمونه‌ای از پروژه‌های محبوب منبع باز هستند.

هنگامی که مشتریان از نرم‌افزار استفاده می‌کنند بازخورد ارائه می‌دهند، گزارش مشکلات را ارسال می‌کنند و با تغییر نیازهای خود ویژگی‌های اضافی درخواست می‌کنند. این ورودی راهنمای توسعه برنامه‌های متن باز است.

مزایای برنامه‌های متن باز

دلایل زیادی وجود دارد که مردم برنامه‌های متن باز را به نرم‌افزارهای اختصاصی ترجیح می‌دهند، که در ادامه برخی از متداول‌ترین دلایل را با هم بررسی می‌کینم.

بررسی برنامه‌های همتا

از آنجا که کد متن باز آزادانه در دسترس است و جامعه منبع باز بسیار فعال است، کد برنامه‌های متن باز به طور فعال توسط برنامه نویسان همکار بررسی و بهبود می‌یابد. به جای کد‌هایی که بسته شده و انحصاری می‌شود، کد متن باز امکان مقایسه و بهبود را به راحتی فراهم می‌کنند.

شفافیت

برای ایجاد اعتماد در نرم‌افزارها لازم است بدانید دقیقا چه نوع داده‌ها در حال جابجایی هستند، یا چه نوع تغییراتی در کد اتفاق افتاده است. برنامه‌های متن باز به شما امکان می‌دهد بدون نیاز به اعتماد به وعده‌های فروشنده، این مسئله را برای خودتان بررسی و پیگیری کنید.

قابلیت اطمینان

نرم افزار اختصاصی به یک نویسنده یا شرکت کنترل کننده آن کد متکی است تا بتواند آن را به روز کرده و بهبود دهد. اما نرم افزارهای متن باز از نویسندگان اصلی خود پیروی می‌کند زیرا به طور مداوم از طریق مجامع فعال منبع باز به روز می‌شود. استانداردهای باز و بررسی نرم‌افزارهای همتا اطمینان حاصل می‌کند که کد نرم افزارهای متن باز به طور مناسب به روز شده و غالبا مورد آزمایش قرار می‌گیرد.

انعطاف پذیری

به دلیل تاکید کدهای متن باز بر اصلاح، می‌توانید از کد آن برای رفع مشکلات و نیازهای منحصر به فرد در تجارت یا فعالیت استفاده کنید. شما برای استفاده از کد به روش‌های خاص محدود نیستید و می‌توانید هنگام اجرای روش‌های جدید خودتان به کمک انجمن و بررسی برنامه‌های همتا کد را تغییر دهید.

هزینه‌ی کمتر

در کنار برنامه‌های منبع باز که کد آن‌ها به صورت رایگان ارائه می‌شود، هزینه‌هایی همچون پشتیبانی، امنیت و مدیریت بسیار کاهش می‌یابد. البته این به آن معنا نیست که تمامی برنامه‌های متن باز رایگان هستند. اما به دلیل ماهیت وجود این نرم‌افزارها، تاثیر زیادی در کاهش هزینه دارند.

کد همیشه در دسترس

آزادی برای کاربر یک نرم افزار بدین معنی است که شما کد نرم افزار متن باز خود را در هر نقطه و هر زمان که بخواهید مورد استفاده قرار دهید.

همکاری آزاد

وجود اجتماعات منبع باز فعال تاثیر بسیاری در پیشرفت این نرم‌افزارها دارند. از این طریق می‌توانید کمک، منابع و چشم‌اندازهایی پیدا کنید که فراتر از یک گروه علاقه یا یک شرکت باشد.

آیا برنامه‌های متن باز رایگان هستند؟

معمولاً نرم‌افزارهای آزاد یا متن باز به معنای تاکید بر آزادی در حقوق کاربران نهایی است، اما گاهی اوقات این نام‌ها با رایگان بودن اشتباه گرفته می‌شود. همانطور که گفته شد نرم‌افزار متن باز لزوما به صورت رایگان ارائه نمی‌شود. بلکه به این معنی است که کد منبع آن به صورت رایگان در دسترس قرار خواهد گرفت.

در بسیار از موارد برنامه‌های متن باز با برنامه‌های آزاد اشتباه گرفته می شود. اما در حقیقت، نه نرم‌افزار آزاد و نه نرم‌افزار منبع باز، قانونی درباره رایگان بودن هزینه ارائه نمی‌دهند و هر دو نوع نرم‌افزار را می‌توان به صورت قانونی فروخت.

در عوض، تفاوت اصلی بین آن‌ها مربوط به اشتراک است. در نرم‌افزار آزاد، اگر تغییراتی در کد منبع ایجاد کرده و می‌خواهید آن‌ها را به اشتراک بگذارید، باید آن تغییرات را با پروژه اصلی نیز به اشتراک بگذارید. اما در نرم‌افزار منبع باز، معمولاً چنین محدودیتی وجود ندارد. با وجود تفاوت‌های عملی این نرم‌افزارها، برنامه‌های آزاد و متن باز ارزش‌های مشترکی با یکدیگر دارند.

دلیل اهمیت برنامه‌های متن باز

برنامه‌های متن باز نه تنها برای برنامه نویسان بلکه برای همه مهم هستند. زیرا رویکرد این نرم‌افزارها باعث می‌شود بسیاری از افراد در بهبود و رفع مشکلات احتمالی در آن سهیم شوند. به عنوان مثال، جوامع منبع باز در پروژه‌های متن باز سازماندهی می‌شوند و هر کس با مهارت‌هایی که دارد می‌تواند به پیشرفت آن کمک کند.

این گروه‌ها همچنان استانداردهای مربوط به مشارکت در پروژه‌های منبع باز را دقیقا مانند تیم‌های نرم‌افزاری اختصاصی حفظ می‌کنند، اما این فرآیند را برای هر کسی در جهان که می‌خواهد مشارکت کند باز می‌گذارند.

این مدل توسعه در برنامه‌های متن باز امروزه منجر به استفاده برخی از مهمترین برنامه‌ها و سیستم عامل‌های ابری از آن‌ها شده است. محبوب‌ترین آن‌ها شامل LAMP، مدلی از پشته‌های خدمات است که قسمت اعظم وب را تحت پوشش خود قرار می‌دهد، عبارت LAMP مخفف ۴ پروژه‌ی زیر است:

  • لینوکس: سیستم عامل متن باز و بزرگترین پروژه منبع باز در جهان.
  • آپاچی: سرور وب متن باز که در وب اولیه نقش اساسی داشته است.
  • مای‌اس‌کیو‌ال: یک سیستم مدیریت پایگاه داده رابطه‌ای منبع باز است.
  • پی‌اچ‌پی: یک زبان برنامه نویسی است که برای توسعه وب استفاده می‌شود.

البته حرف P گاهی اشاره به زبان‌های پرل و پایتون نیز دارد، نمونه‌های دیگر از برنامه‌های متن‌باز محبوب شامل سیستم عامل موبایل اندروید، مرورگر وب موزیلا فایرفاکس، سیستم کنترل نسخه‌ی Git و همچنین دو مجموعه اداری مرتبط OpenOffice و LibreOffice است، در مقیاس گسترده‌تر، بیشتر نوآوری‌ها در زمینه‌های رایانش ابری، داده‌های بزرگ و هوش مصنوعی از پروژه‌های نرم‌افزار منبع باز حاصل شده است.

نرم‌افزار منبع باز علاوه بر نقش ابزاری که در وب اولیه و برخی از محبوب‌ترین برنامه‌هایی که امروزه مورد استفاده قرار می‌گیرد، مزایای دیگری برای مشاغل و برنامه نویسان دارد. هنگامی که کد منبع در یک نرم‌افزار آزاد است، آموزش مهارت‌های جدید برنامه نویسی را برای هر کسی آسان‌تر می‌کند. صدور مجوز منبع باز همچنین به دانشجویان اجازه می‌دهد تا در کنار تمرین، به وسیله ویرایش کد و به اشتراک گذاری آن با دوستان و جامعه منبع باز به اصلاحات در پروژه‌های منبع باز موجود کمک کنند.

بسیاری از افراد متخصص در این زمینه برنامه‌های متن باز را ترجیح می‌دهند زیرا بسیاری از توسعه دهندگان به دنبال رفع آسیب پذیری‌های امنیتی در آن هستند و جامعه فعال در این زمینه نرم افزار را پشتیبانی می‌کند. شما در پشت بسیاری از وب سایت‌ها و برنامه‌های محبوب می‌توانید پروژه‌های منبع‌باز بسیاری را پیدا کنید!

-
-
-
-
{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/general/privacy.html.twig b/hesabixCore/templates/general/privacy.html.twig deleted file mode 100644 index 054e786..0000000 --- a/hesabixCore/templates/general/privacy.html.twig +++ /dev/null @@ -1,59 +0,0 @@ -{% extends "base.html.twig" %} -{% block title %}حریم خصوصی{% endblock %} -{% block body %} -
-
-
-
-
-

سیاست حفظ اطلاعات و محرمانگی اطلاعات کاربران در حسابیکس

-
-
-

- حسابیکس معتقد است اصول حفظ حریم شخصی و اطلاعات کاربران بسیار مهم و حساس است. در این سند اصول محرمانگی اطلاعات حسابیکس و نیز راهکارهای حسابیکس برای حفظ حریم شخصی و اطلاعات کاربران سایت حسابیکس توضیح داده شده است.

-

محتویات این سند -

-
    -
  • این سند شامل توضیحی درباره اطلاعات خصوصی ای است که حسابیکس از کاربران سایت جمع آوری می کند و نیز نحوه استفاده حسابیکس از این اطلاعات. این اطلاعات شامل مواردی است که مخصوص هر کاربر بوده و به کمک آن ها می توان کاربران حسابیکس را به صورت منحصر به فرد شناسایی نمود. برای نمونه می توان به نام، نشانی، نشانی الکترونیک (ایمیل)، شماره تلفن و سایر اطلاعاتی که به صورت عادی در دسترس عموم مردم نیست اشاره نمود.
  • -
  • این سند به مواردی که در اختیار حسابیکس نیست و حسابیکس هیچ کنترلی بر آن ها ندارد نمی پردازد. شرکت های مشتری خدمات حسابیکس و افراد ثالثی که در استخدام حسابیکس نیستند از جمله این موارد هستند.
  • -
-

اطلاعات جمع آوری شده و نحوه استفاده از آن ها

-
    -
  • شما با ثبت نام و ارسال فرمهای سفارش و پشتیبانی در سایت حسابیکس اطلاعات خصوصی خود از قبیل نام، نشانی، نشانی الکترونیک و … را در اختیار حسابیکس قرار می دهید.
  • -
  • پس از ورود به سایت حسابیکس شما یک کاربر ناشناخته نیستید و اطلاعات مربوط به استفاده شما از خدمات حسابیکس نگهداری می گردد. این اطلاعات شامل اطلاعات پایه نرم افزار ، سفارشات و تراکنشها، سرویسهای مورد استفاده، اطلاعات فردی و مانند آن بوده ولی محدود به این موارد نیست.
  • -
  • حسابیکس کلیه تراکنش های شما از جمله تراکنش های مالی را جمع آوری و نگهداری می کند.
  • -
  • حسابیکس به صورت خودکار پس از ورود شما به سایت حسابیکس اطلاعاتی از قبیل IP شما، اطلاعات کوکی های حسابیکس و صفحاتی که مشاهده می کنید را جمع آوری و نگهداری می کند.
  • -
  • حسابیکس از این اطلاعات در راستای بعضی از مقاصد از قبیل ارتقاء خدمات حسابیکس، تهیه محتوای مناسب، برنامه های تبلیغاتی و مانند آن استفاده می کند.
  • -
  • حسابیکس اطلاعات شما را اجاره نمی دهد، نمی فروشد و به اشتراک نمی گذارد به جز در موارد زیر: -
      -
    • در صورت ادغام حسابیکس در یک شرکت دیگر. در این حالت قبل از به اشتراک گذاری اطلاعات شما، این موضوع به شما اطلاع داده شده و نظر شما را درباره ادامه استفاده از خدمات حسابیکس یا خروج کامل پرسیده می شود.
    • -
    • در صورت تخطی شما از قوانین شرایط و ضوابط سرویسها ، و در صورت وجود شاکی خصوصی نسبت به عملکرد شما، اطلاعات شما در اختیار مراجع قانونی قرار می گیرد.
    • -
    • در صورتی که مراجع قضایی اطلاعات شما را –به هر دلیلی- از حسابیکس بخواهند این اطلاعات در اختیار ایشان قرار می گیرد.
    • -
    -
  • -
  • حسابیکس ممکن است بر روی کامپیوتر شما کوکی ذخیره کرده و در مراجعات بعدی شما به سایت حسابیکس از آن استفاده کند.
  • -
-

ویرایش و تغییر اطلاعات شخصی

-
    -
  • شما می توانید اطلاعات ثبت شده خود را در سایت حسابیکس تغییر دهید. این اطلاعات شامل کلیه اطلاعاتی است که در هنگام عضویت در حسابیکس آن ها را در سایت حسابیکس وارد نموده اید؛ مگر آنها که از لحاظ شناسایی هویت برای کارکرد حسابیکس ملاک امنیت حساب کاربری داشته باشد مثل ایمیل و نام خانوادگی و…
  • -
  • شما می توانید به طور کامل از حسابیکس و کلیه خدمات آن خارج شوید. در این حالت برخی از اطلاعات شما از حسابیکس حذف شده و تعدادی دیگر از آن ها حداقل به مدت یک سال بایگانی می شوند. این اطلاعات شامل نام، نام خانوادگی، نشانی الکترونیک، شماره تلفن همراه، پیام های ارسالی و مانند آن بوده ولی محدود به موارد فوق نیست.
  • -
-

محدودیت دسترسی به اطلاعات

-
    -
  • حسابیکس دسترسی کارمندان خود به اطلاعات شما را محدود نموده و فقط کارمندانی که مستقیماً باید برای ارایه خدمات حسابیکس یا انجام وظایف خود در این راستا با شما در تماس باشند به این اطلاعات دسترسی دارند.
  • -
  • حسابیکس جهت حفظ امنیت اطلاعات محرمانه، ممکن است اطلاعات مهم مثل رمز عبور و … را به صورت رمز شده در پایگاه های داده خود ذخیره کند به نوعی که در صورت دسترسی ناخواسته و غیر مجاز به آن ها، این اطلاعات قابل استفاده توسط دیگران نباشد؛ اگر چه نمیتوانیم هیچ تضمینی در این رابطه به شما بدهیم.
  • -
  • امیدواریم كه بتوانیم به شما این تضمین را بدهیم كه از اطلاعات شخصی تان تحت بالاترین استانداردهای امنیتی استفاده خواهد شد. حسابیکس تلاش خواهد كرد كه تمامی راه های معقول را طی كند تا امنیت هر نوع اطلاعاتی را كه از شما در اختیار دارد،‌ حفظ كند. همچنین اطلاعات شخصی شما در شبكه های امنی ذخیره می شوند اما متاسفانه،‌ با وجود فناوری فوق و ادوات امنیتی، نمی توان ایمنی هیچ مخابره داده ای از طریق اینترنت را به صورت %100 تضمین كرد. بنابراین ما نمی توانیم این اطمینان را به صورت قطعی بدهیم كه اطلاعاتی كه برای ما می فرستید،‌ در حین ارسال (مخابره) در هر شرایطی در امان خواهند بود و علاوه بر آن نمی توانیم مسئولیت اتفاقات ناشی از دسترسی غیر قانونی به اطلاعات شخصی شما را قبول كنیم. (همانند دسترسی ISP ها به اطلاعات ارسالی از رایانه شما) حسابیکس مسئولیت عواقب ناشی از دستیابی غیر قانونی شخص یا گروه ثالثی به اطلاعات شخصی شما را نیز نخواهد پذیرفت.
  • -
-

سایت های لینک شده
- این سایت ممكن است با وب سایت های دیگر (“سایت های لینك”) پیوند داشته باشد. سایت های لینك شده تحت نظارت حسابیکس نیستند و حسابیکس در مورد آنها مسئولیتی ندارد. شما باید توجه داشته باشید كه اطلاعات شخصی كه برای سایت های لینك می فرستید،‌ تحت نظارت خط مشی حریم خصوصی حسابیکس نخواهد بود و ما جداً توصیه می كنیم كه نسبت به سیستم حفظ حریم خصوصی و سیاست های امنیتی آنها اطلاع حاصل كنید.

-

تغییرات در این سیاست ها
- حسابیکس حق دارد در هر زمان بدون اطلاع قبلي در متن این سیاست نامه تغييرات ايجاد کند. اگرچه سعي ميشود از طريق ايميل کليه کاربران از تغييرات مطلع شوند ولي کاربران موظف اند با مراجعه مداوم به اين متن، از تغييرات آن مطلع گشته و در صورت مخالفت با آن ، درخواست قطع سرويس خود را نمايند و یا از سایت حسابیکس خارج شده و به آن مراجعه نکنند. در غير اين صورت تمام پيامد هاي احتمالي آن بر عهده کاربران خواهد بود .

-

پرسش ها و پیشنهادها
- در صورتی که درباره این سیاست ها پرسشی دارید یا پیشنهادهایی برای تغییرات و بهبود آن ها دارید، با استفاده از فرم ارتباط با ما آن را با تیم حسابیکس در میان بگذارید.

- -
-
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/general/repservice.html.twig b/hesabixCore/templates/general/repservice.html.twig deleted file mode 100644 index 5d073e1..0000000 --- a/hesabixCore/templates/general/repservice.html.twig +++ /dev/null @@ -1,105 +0,0 @@ -{% extends "base.html.twig" %} -{% block title %}افزونه مدیریت تعمیرگاه)تعمیرکاران) -{% endblock %} -{% block body %} -
- -
-
-
-

- -

-

افزونه مدیریت تعمیرگاه

-

- افزونه تعمیرکاران یکپارچه طراحی شد تا تمام نیازهای شما را در مدیریت تعمیرگاه و فروشگاه تان را بصورت کامل رفع - کند. -

- - - - خرید در بازار حسابیکس - - -
- -
-
-
- - - -
-
-
- -
-
-
-
-

- افزونه مدیریت تعمیرگاه(تعمیرکاران) -

-

- افزونه تعمیرکاران بهترین انتخاب برای مدیریت انواع مراکز تعمیر و خدمات و همچنین فروشگاه های در حال توسعه است؛ چرا که افزونه تعمیرکاران نیازی به نصب ندارد, همیشه با موبایل و کامپیوتر در دسترس است و رابط کاربری بسیار آسانی دارد و از همه مهمتر تمام نیازهای تعمیرگاه و فروشگاه را در قالب یک نرم افزار پشتیبانی می‌کند. - مناسب تمامی تعمیرگاه های تلفن همراه، کامپیوتر، خودرو، بردهای الکترونیکی، لوازم برقی، وسایل صوتی تصویری، یخچال فریزر، تلویزیون و… -

- - -
-
- -
-
-

امکانات:

-
    -
  • - صدور قبض های پذیرش تعمیرگاه قابل چاپ و پیامکی -
  • -
  • - بدون نیاز به خرید سرشماره پیامک خدماتی -
  • -
  • - گزارشات کامل از دستگاه های ورودی و خروجی تعمیرگاه -
  • -
  • - ثبت قبض های پذیرش بصورت آنلاین با گوشی -
  • -
  • - ارسال پیامک خودکار به تعمیرکار موقع ثبت پذیرش دستگاه تعمیری -
  • -
  • - مشاهده لیست دستگاه های تعمیری -
  • -
  • - درج س{{doc.money.shortName}}/پلاک دستگاه های تعمیری درقبض پذیرش -
  • -
  • - ارسال پیامک خودکار هنگام تغییر وضعیت دستگاه به آماده تحویل -
  • -
  • - مشاهده فاکتور تعمیرگاه بصورت آنلاین بصورت پیامکی -
  • -
  • - قابلیت چاپ قبض تعمیرگاه -
  • -
  • - قابلیت ارایه خروجی اکسل از تمام گزارشات تعمیرگاه -
  • -
  • - یکپارچه با - حسابیکس - و بسته حسابداری پیشرفته -
  • -
-
-
- -
-
-
- -
-{% endblock %} diff --git a/hesabixCore/templates/general/sitemap.html.twig b/hesabixCore/templates/general/sitemap.html.twig deleted file mode 100644 index d64f507..0000000 --- a/hesabixCore/templates/general/sitemap.html.twig +++ /dev/null @@ -1,151 +0,0 @@ - - - - - https://hesabix.ir/ - {{ timeNow }} - 1.00 - - - https://hesabix.ir/front/faq - {{ timeNow }} - 0.80 - - - https://hesabix.ir/front/help/guide - {{ timeNow }} - 0.80 - - - https://hesabix.ir/front/blog/home - {{ timeNow }} - 0.80 - - - https://hesabix.ir/front/about - {{ timeNow }} - 0.80 - - - https://hesabix.ir/front/contact - {{ timeNow }} - 0.80 - - - https://hesabix.ir/front/terms - {{ timeNow }} - 0.80 - - - https://hesabix.ir/front/privacy - {{ timeNow }} - 0.80 - - - https://hesabix.ir/front/open-source - 2023-10-20T11:24:11+00:00 - 0.80 - - - https://hesabix.ir/front/help/guide/general - {{ timeNow }} - 0.80 - - - https://hesabix.ir/front/help/api - {{ timeNow }} - 0.80 - - - https://hesabix.ir/front/update-list - {{ timeNow }} - 0.80 - - - https://hesabix.ir/front/help/guide/person - {{ timeNow }} - 0.64 - - - https://hesabix.ir/front/help/guide/commodity - {{ timeNow }} - 0.64 - - - https://hesabix.ir/front/help/guide/banks - {{ timeNow }} - 0.64 - - - https://hesabix.ir/front/help/guide/buy - {{ timeNow }} - 0.64 - - - https://hesabix.ir/front/help/guide/sell - {{ timeNow }} - 0.64 - - - https://hesabix.ir/front/help/guide/reports - {{ timeNow }} - 0.64 - - - https://hesabix.ir/front/help/guide/settings - {{ timeNow }} - 0.64 - - - https://hesabix.ir/front/features/setup - 2023-11-10T16:17:43+00:00 - 0.80 - - - https://hesabix.ir/front/features/user_management - {{ timeNow }} - 0.80 - - - https://hesabix.ir/front/features/buy_sell - {{ timeNow }} - 0.80 - - - https://hesabix.ir/front/apps/woocommerce - {{ timeNow }} - 0.80 - - - https://hesabix.ir/front/apps/repservice - {{ timeNow }} - 0.80 - - - https://hesabix.ir/login - {{ timeNow }} - 0.64 - - {% for blog in blogs %} - - {{ absolute_url(path('general_blog_post',{'url':blog.url})) }} - {{ blog.dateSubmit | date('c') }} - 0.80 - - {% endfor %} - {% for doc in docs %} - - {{ absolute_url(path('general_help_api',{'id':doc.id})) }} - - {% if doc.dateSubmit is null %} - {{ timeNow }} - {% else %} - {{ doc.dateSubmit | date('c') }} - {% endif %} - - 0.80 - - {% endfor %} - diff --git a/hesabixCore/templates/general/sponsors.html.twig b/hesabixCore/templates/general/sponsors.html.twig deleted file mode 100644 index b21b712..0000000 --- a/hesabixCore/templates/general/sponsors.html.twig +++ /dev/null @@ -1,64 +0,0 @@ -{% extends "base.html.twig" %} -{% block title %}حامیان مالی{% endblock %} -{% block body %} -
-
-
-
-

- حسابیکس با - - و به صورت متن‌باز توسط گروهی از علاقه‌مندان توسعه داده می‌شود. -

-

لطفا با حمایت از حسابیکس در توسعه آن سهیم باشید.

-
حامیان گرامی ، برای نمایش بنر کسب و کار خود در صفحات وب سایت از طریق بخش پشتیبانی تیکت ارسال کنید.
- - - - پرداخت آنلاین کمک مالی - -
-
-
-
-
-
-
-

حامیان حسابیکس

-
-
-
- راددیتا -
-
مرکز ارتباطات راد دیتا
-

پیشرو در ارائه خدمات فنی مهندسی و سرویس های مرکز داده در ایران و خارج با بالاترین کیفیت و قیمت مناسب

- وب سایت -
-
-
-
-
- پارس‌پک -
-
پارس‌پک
-

از یک استارت‌آپ کوچک تا سازمانی بزرگ پشتیبان‌تان هستیم. پیشرو در راهکارهای ابری

- وب سایت -
-
-
-
-
- ملی پیامک -
-
سامانه پیام کوتاه ملی‌پیامک
-

ملی پیامک یک سامانه پیامکی معمولی نیست! یک ابزار قدرتمند است برای آنکه مشتری را جذب کنید، از او نگهداری کنید، یک رابطه پایدار بسازید و خدمات بهتری ارائه دهید. وقت آن رسیده که نگاهی بزرگ‌تر به پیام کوتاه داشته باشیم.

- - - سفارش پنل پیامک - -
-
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/general/terms.html.twig b/hesabixCore/templates/general/terms.html.twig deleted file mode 100644 index e9c2e2c..0000000 --- a/hesabixCore/templates/general/terms.html.twig +++ /dev/null @@ -1,143 +0,0 @@ -{% extends "base.html.twig" %} -{% block title %}قوانین ارائه خدمات{% endblock %} -{% block body %} -
-
-
-
-
-

توافقنامه استفاده از سرویس‌های ابری حسابیکس

-
-
-

- این توافقنامه مابین از یک طرف و مشتری سامانه ابری حسابیکس از طرف دیگر می باشد. -

-
    -
  1. - در زمان تکمیل فرم ثبت نام در سایت، مشتری با علامت زدن گزینه - "من شرایط استفاده و سیاست حفظ حریم خصوصی را خوانده و با آن موافقم" - ، می پذیرد که مفاد این توافقنامه را بصورت کامل مطالعه کرده و تمام موارد آن مورد قبول او می باشد. چنانچه مشتری گزینه مذکور را علامت نزند، به هیچ عنوان اجازه ثبت نام و استفاده از خدمات ابری وب سایت را نخواهد داشت. بنابراین استفاده از خدمات سرویس ابری وب سایت به منزله پذیرش مفاد این توافقنامه می باشد. -
  2. -
  3. - اشخاص حقیقی یا حقوقی که مشتری به نمایندگی از آنها فرم های عضویت در سامانه ابری حسابیکس را تکمیل کرده، نیز شرایط و توافقات استفاده از سیستم و همچنین سیاست های حفظ حریم خصوصی را قبول دارند و پذیرفته اند، و فرض می شود که مشتری از طرف آنها مجاز بوده و یا اختیار داشته که این توافق را انجام دهد. به این معنا که حسابیکس در خصوص مشکلات احتمالی بعدی در این خصوص، هیچگونه مسئولیتی نداشته و صاحب ایمیل ثبت شده در سرورهای حسابیکس و مشخصات سازنده حساب کاربری، تعیین کننده وضعیت آن خواهد بود. -
  4. -
  5. - مشتری، کاربران و نمایندگان مشتری، مسئول حفاظت از امنیت حساب کاربری خود می باشند. این افراد موظفند که کلمه عبوری را انتخاب کنند که امنیت لازم را دارا بوده و قابل حدس زدن توسط سایرین نباشد. همچنین کاربران موظف هستند تا در مقاطع زمانی مناسب نسبت به تغییر کلمه عبور خود اقدام کنند. علاوه بر آن، در صورتی که احساس می کنند کلمه عبور آنها در دسترس سایرین قرار گرفته، بایستی بلافاصله نسبت به تغییر آن اقدام نمایند، در غیر این صورت کلیه عواقب ناشی از این سهل انگاری، بر عهده کاربران خواهد بود و حسابیکس مسئولیتی در این خصوص نخواهد داشت. -
  6. -
  7. - چنانچه به هر دلیلی امکان دسترسی به ایمیل و شماره تلفن ثبت شده نباشد، حسابیکس تحت هیچ شرایطی رمز را تغییر نداده و برای شخص سوم ارسال نمی کند. بنابراین اگر رمز عبور مفقود گردید، فقط از طریق دسترسی به ایمیل یا شماره تلفن ثبت شده امکان بازیابی رمز وجود دارد و درصورت عدم دسترسی به ایمیل و شماره تلفن ثبت شده، حسابیکس تحت هیچ شرایطی رمز را تغییر نداده و ارسال نمی کند. -
  8. -
  9. - حسابیکس هیچ مسئولیتی در قبال لو رفتن اطلاعات مشتری در صورتی که منشا آن کوتاهی مشتری در حفظ امنیت حساب کاربری خود باشد، نخواهد داشت. مسئول تشخیص این امر مدیر سیستم حسابیکس می باشد. مدیر سیستم با مراجعه به لاگها و گزارش های امنیتی موجود در پنل خود، امکان بررسی و تشخیص این امر را خواهد داشت. -
  10. -
  11. - حسابیکس تعهد می کند که بالاترین ضریب اطمینان را برای دسترسی به سرویس های ابری خود فراهم سازد. در مواردی که نیاز به قطع خدمت رسانی می باشد، شرکت متعهد می شود که موضوع را حداقل ۱۲ ساعت قبل به اطلاع مشتری برساند. -
  12. -
  13. - حسابیکس هیچ مسئولیتی در قبال لو رفتن اطلاعات مشتری در صورتی که منشا آن حملات هکری باشد، نخواهد داشت. البته حسابیکس آخرین پروتکل ها و به روز ترین شیوه های امنیتی را برای پیشگیری از وقوع موارد فوق به کار می بندد. -
  14. -
  15. - حسابیکس تعهد می دهد از هر زمان که نتواند به فعالیت خود ادامه دهد، به مدت دو سال سرورهای خود را روشن نگه دارد و مشتریان امکان دسترسی به اطلاعات خود را خواهند داشت. -
  16. -
  17. - کسب و کارهای آزمایشی، چنانچه پس از گذشت ۳۰ روز از تاریخ انقضای آنها شارژ و تمدید نگردند، بصورت خودکار از سیستم حذف می شوند. -
  18. -
  19. - ارائه خدمات پشتیبانی به وسیله ایمیل و تماس تلفنی رایگان بوده و هزینه ای بابت آن دریافت نمی شود. حسابیکس هیچگونه تعهدی نسبت به ارائه خدمات پشتیبانی به صورت حضوری نخواهد داشت. پشتیبانی شامل پاسخگویی به سؤالات و رفع مشکلات احتمالی است که در حین استفاده از سیستم برای کاربران بوجود می آید. اضافه کردن ویژگی های جدید به نرم افزار و آموزش کاربران، مشمول خدمات پشتیبانی قرار نمی گیرند. -
  20. -
  21. - حساب کاربری به منظور انجام فرآیندهای وابسته به موضوع نرم افزار وب سایت، در اختیار مشتری، نمایندگان و کاربران قرار داده شده است. هرگونه تلاش برای هک کردن سیستم و نیز تلاش به هر نحوی در جهت ایجاد خدشه در امنیت و کارکرد خدمت و یا سایر جنبه های خدمات مرتبط با آن، پیگرد قانونی داشته، منجر به حذف حساب کاربری شده و هیچ گونه وجهی به مشتری مسترد نخواهد شد و امکان پیگیری های قضایی برای تامین حقوق تضییع شده برای حسابیکس فراهم می باشد. مسئول تشخیص این موضوع، مدیر سیستم سامانه حسابیکس می باشد. -
  22. -
  23. - حسابیکس از طریق آدرس ایمیل درج شده در حساب کاربری مشتری، نماینده یا کاربر، با این افراد ارتباط برقرار می کند. کلیه اطلاعیه ها و اعلانات از طریق این آدرس ایمیل به افراد اعلام خواهد شد، اشخاص فوق الذکر موظف هستند در هنگام ثبت نام، آدرس ایمیل معتبر را وارد کنند و در صورت نیاز با خارج کردن آدرس ایمیل وب سایت از پوشه هرزنامه (Spam) امکان ایجاد ارتباط را میسر سازند. ایمیل های حسابیکس از دامنه hesabix.ir ارسال می شوند. همچنین تغییرات در این توافقنامه از طریق ایمیل به مشتری اطلاع رسانی می شود. -
  24. -
  25. - مشتری باید تمامی قوانین جمهوری اسلامی ایران خصوصا - "قانون تجارت الکترونیکی"، "قانون جرائم رایانه ای" و "قانون ثبت اختراعات، طرحهای صنعتی و علائم تجاری، "قانون حمایت از حقوق پدیدآورندگان نرم افزار های رایانه ای و لایسنس پروانه همگانی گنو ویرایش سوم" - را رعایت نماید و هرگونه مسئولیت ناشی از عدم رعایت این قوانین توسط صاحب حساب و یا سایر كاربران وی به عهده مشتری است و حسابیکس هیچ مسئولیتی در این مورد نخواهد داشت. -
  26. -
  27. - در صورت فسخ/خاتمه/لغو این توافقنامه حق دسترسی و استفاده از اطلاعات مشتری برای وی فورا متوقف می شود و ضمن نگهداری اطلاعات مشتری تا ۶۰ روز پس از فسخ، بنا به درخواست و بدون دریافت هزینه جدید در اختیار مشتری قرار می گیرد، پس از گذشت ۶۰ روز اطلاعات مشتری حذف شده و به هیچ عنوان قابل بازگشت نمی باشد. -
  28. -
  29. - نام تجاری حسابیکس ، علامت تجاری، سایت حسابیکس ، خدمات، هرگونه متن و تصویر و ویژگی های ظاهری و محتوایی وب سایت و سایر رسانه ها، منحصر به تیم توسعه حسابیکس بوده و کلیه حقوق مادی و معنوی آن متعلق به حسابیکس می باشد.سورس کدهایی که طبق توافق نامه گنو ویرایش سوم منتشر شده اند از این ماده مستثنی می باشند. -
  30. -
  31. - هرگونه سوء استفاده از نام یا علامت تجاری حسابیکس،وبسایت اینترنتی حسابیکس ، مکاتبه از طرف حسابیکس و یا استفاده از نام ها و یا علائم تصویری مشابه که تشخیص و تمییز آن از حسابیکس برای کاربر عادی ممکن نبوده، موجب گمراهی آنان شود ممنوع بوده از طریق طرح دعوای حقوقی در مراجع قانونی ذیصلاح شامل مراجع رسیدگی به جرائم رایانه ای، مراجع رسیدگی به جرائم مالکیت فکری و... در داخل و یا خارج از کشور و نیز اطلاع‌رسانی به سرویس دهندگان و سرویس گیرندگان اینترنتی قابل پیگرد خواهد بود. -
  32. -
  33. - در صورت احراز هرگونه اقدامی از سوی کاربر که منجر به ورود خسارت به شهرت، اعتبار و دارایی‌های حسابیکس شود حسابیکس این حق را برای خود محفوظ می‌داند که قرارداد با کاربر را فسخ نموده، حساب کاربر را مسدود کند و در صورت نیاز، علیه شخص اقدام قانونی لازم را انجام دهد. در این صورت کلیه خسارات و مطالبات قانونی در مراجع دارای صلاحیت پیگیری خواهد شد. -
  34. -
  35. - در راستای حمایت از حقوق و مالكیت های مادی و معنوی، انجام فعالیت های زیر برای مشتری مجاز نیست و حسابیکس اجازه دارد تا به منظور تامین امنیت سایر کاربران، بلافاصله و بدون اطلاع و اخطار قبلی حساب کاربری مشتری را مسدود کرده و کلیه اطلاعات مشتری را بایگانی کند و دسترسی مشتری به سامانه را قطع کند. مسئول تشخیص این امر مدیر سیستم حسابیکس می باشد. همچنین در این صورت هیچ وجهی به مشتری مسترد نخواهد شد: -
      -
    • - انتقال هرنوع كرم نرم افزاری یا ویروس یا هر كد نرم‌افزاری مخرب در زمان استفاده از وب سایت. -
    • -
    • - هر گونه هك كردن نرم افزار و یا وب سایت. -
    • -
    • - هرگونه فعالیت مخالف قوانین جمهوری اسلامی ایران. -
    • -
    -
  36. -
  37. - تمامی اطلاعاتی كه توسط كاربران مشتری در حین استفاده از خدمت در وب سایت ثبت می شود متعلق به همان مشتری بوده و حسابیکس هیچگونه مالکیتی نسبت به این اطلاعات ندارد. مشتری به تنهایی مسئول دقت، کیفیت، یکپارچگی، قانونی بودن، قابل اتکا بودن، مناسب بودن و استفاده مناسب از داده های خود می باشد و حسابیکس هیچگونه مسئولیتی در قبال حذف، تصحیح، صدمه دیدن، خرابی و یا مشکل در ذخیره شدن درست داده های سمت مشتری ندارد. -
  38. -
  39. - داده‌هایی که هنگام ثبت نام مستقیماً از کاربر متقاضی أخذ می‌شود، شامل مشخصات فردی (نام و نام خانوادگی)، پست الکترونیک و شماره تلفن همراه، صرفاً در جهت احراز هویت کاربر و امکان برخورداری از خدمات استفاده قرار می‌گیرد. شرکت متعهد می‌گردد داده‌های مذکور را صرفا در محدوده ارائه خدمات مذکور مورد استفاده قرار دهد. شرکت متعهد می‌گردد، داده‌ها و اطلاعات کاربران متقاضی را به اشخاص ثالث اعم از حقیقی و یا حقوقی با مقاصد تجاری و غیرتجاری خارج از حیطه خدمات فوق‌الذکر، بدون کسب رضایت صاحبان آن افشا ننماید. حسابیکس به حفظ اسرار تجاری، حقوق مالكیت فکری و نیز اطلاعات شخصی و خصوصی مشتریان خود که اطلاعات آن در وبسایت و برنامه حسابیکس بارگذاری و ثبت شده متعهد و ملتزم بوده و به صورت پیشگیرانه کلیه اقدامات مورد نیاز جهت حفاظت از محرمانگی این اطلاعات و جلوگیری از افشای آنها را انجام می دهد. -
    - تبصره- اطلاعات فوق محرمانه می باشد و در اختیار هیچ شخصیت حقیقی و یا حقوقی ثالثی قرار نمیگیرد، مگر به دستور مراجع ذیصلاح قضایی. -
  40. -
  41. - اطلاعات مذکور در بند قبل حتی پس از انحلال این قرارداد و حساب کاربری مربوطه، به طور دائم محرمانه تلقی می گردد. -
  42. -
  43. - در صورت وجود مشكل در صورتحساب، مشتری می تواند تا ۳۰ روز از طریق ایمیل (info@hesabix.ir) یا با نامه رسمی مراتب را برای رسیدگی اعلام كند. -
  44. -
  45. - حسابیکس هیچ مسئولیتی در قبال ضرر و زیان های غیر مستقیم یا مستقیم مشتری درباره سود، شهرت، اطلاعات و دیگر زیان هایی که صرفا در نتیجه مطلق استفاده از خدمات وب سایت می شود را ندارد. -
  46. -
  47. - برای بستن حساب لازم است مشتری درخواست مربوطه را از طریق ایمیل به آدرس info@hesabix.ir اعلام کند. -
  48. -
  49. - پس از بستن یا قطع حساب به درخواست مشتری، تمامی محتوا و اطلاعات مشتری پس از ۶۰ روز حذف می شود. این اطلاعات پس از این مرحله قابل بازگشت نیست. -
  50. -
  51. - در صورت عدم رعایت تمام و یا بخشی از شرایط این توافق نامه از طرف مشتری و یا در صورتی که محرز شود مشتری هویت یا اطلاعات تماس خود را ناصحیح اعلام نموده یا تغییر هرکدام از آنها را به حسابیکس اطلاع نداده است، حسابیکس حق فسخ این قرارداد و مسدود نمودن حساب مشتری بدون اعلام قبلی را داراست. در این حالت هیچ گونه وجهی به مشتری مسترد نخواهد شد. -
  52. -
  53. - حسابیکس نسبت به مشكلاتی كه برای ارائه سرویس به علت وجود مشكل در اینترنت و یا دیگر بسترهای ارتباطی الكترونیك بوجود می آید، مسئولیتی ندارد. -
  54. -
  55. - در صورت بروز هرگونه حوادث غیر مترقبه و سایر عوامل خارج از اختیار حسابیکس ، از قبیل اعتصاب، اغتشاش عمومی، صاعقه، آتش سوزی، سیل و زلزله یا حوادث موثر در محیط و مانند اینها، به نحوی که انجام تعهدات و خدمات این توافقنامه را برای حسابیکس غیرممكن سازد و یا با اشكال مواجه نماید، هیچگونه مسئولیتی در قبال عدم انجام تعهدات متوجه حسابیکس نمی باشد و مشتری حق هرگونه ادعایی نسبت به حسابیکس را از خود سلب می نماید. با این حال در صورت بروز چنین مواردی حسابیکس تلاش خود برای کاهش اثرات این موارد را می نماید. -
  56. -
  57. - برخی از خدمات حسابیکس با مشارکت خدمات شرکتهای دیگری ارائه شود که حسابیکس کنترلی بر روی آنها ندارد. در چنین شرایطی کاربران می‌پذیرند که این خدمات، قوانین استفاده و مقررات مختص خود را دارند و حسابیکس مسئولیتی در خصوص آن ندارد. -
  58. -
  59. - حسابیکس به صورت مستمر خدمات خود را توسعه و بهبود می بخشد. به همین علت در طول زمان امكاناتی به خدمات و نرم افزار اضافه و امكانات متناظر با آنها تغییر یافته، جایگزین و یا حذف می شوند. -
  60. -
  61. - حسابیکس حق اصلاح و تغییر شرایط و مقررات ذكر شده در این سند و قیمت خدمات و سرویس های ارائه شده را در هر زمان برای خود محفوظ می داند. -
  62. -
  63. - همواره آخرین نسخه این توافقنامه در آدرس اینترنتی - https://hesabix.ir/terms - قرار دارد. -
  64. -
  65. - هر گونه خودداری حسابیکس در پیگیری و اجرای حقوق خود در این توافقنامه، به معنی چشم پوشی و اعراض از این حقوق نبوده، همواره فرصت و امکان پیگیری این حقوق و مطالبات برای حسابیکس برقرار است. -
  66. -
  67. - قوانین و مقررات ذكر شده در این توافقنامه بر هر نوع توافق قبلی بین حسابیکس و مشتری اولویت و ترجیح خواهد داشت. -
  68. -
-
-
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/general/update-list.html.twig b/hesabixCore/templates/general/update-list.html.twig deleted file mode 100644 index 005bd5b..0000000 --- a/hesabixCore/templates/general/update-list.html.twig +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "base.html.twig" %} -{% block title %}فهرست تغییرات و به روز رسانی ها{% endblock %} -{% block body %} -
-
-
-
- {% for item in items %} -
-

- تغییرات نسخه {{ item.version }} - تاریخ: - {{ Jdate.jdate('Y/n/d',item.dateSubmit) }} -

-

{{ item.body | raw }}

-
- {% endfor %} -
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/general/woocommerce.html.twig b/hesabixCore/templates/general/woocommerce.html.twig deleted file mode 100644 index c12cc3a..0000000 --- a/hesabixCore/templates/general/woocommerce.html.twig +++ /dev/null @@ -1,38 +0,0 @@ -{% extends "base.html.twig" %} -{% block title %}افزونه ووکامرس حسابیکس{% endblock %} -{% block body %} -
-
-
-
-
- logo-woocommerce -

افزونه ووکامرس حسابیکس (آزمایشی)

-
-

- این افزونه فروشگاه ووکامرس شما را به نرم افزار حسابداری آنلاین حسابیکس متصل می کند. - به وسیله ی این افزونه کالاها، - مشتریان و سفارشات شما به محض ثبت در سیستم فروشگاه، - در حسابیکس نیز بصورت خودکار ثبت و ذخیره می شوند. - همچنین با پرداخت مشتری، سند دریافت وجه از مشتری نیز در حسابیکس ثبت می شود. -

-

- بدیهی است برای استفاده از این افزونه باید ابتدا یک حساب کاربری در حسابیکس داشته باشید. - پس از ثبت نام در حسابیکس و ورود به حساب خود، - و سپس ورود به یک کسب و کار، در قسمت تنظیمات / API می توانید کلید - API مربوط به کسب و کار خود را دریافت و در قسمت تنظیمات - این افزونه وارد نمایید. پس از آن افزونه شما آماده استفاده است. -

-
- -
-
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/preinvoice/index.html.twig b/hesabixCore/templates/preinvoice/index.html.twig deleted file mode 100644 index d87be34..0000000 --- a/hesabixCore/templates/preinvoice/index.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends 'base.html.twig' %} - -{% block title %}Hello PreinvoiceController!{% endblock %} - -{% block body %} - - -
-

Hello {{ controller_name }}! ✅

- - This friendly message is coming from: -
    -
  • Your controller at /var/www/next.hesabix.ir/hesabixCore/src/Controller/PreinvoiceController.php
  • -
  • Your template at /var/www/next.hesabix.ir/hesabixCore/templates/preinvoice/index.html.twig
  • -
-
-{% endblock %} diff --git a/hesabixCore/templates/project/index.html.twig b/hesabixCore/templates/project/index.html.twig deleted file mode 100644 index 04e1001..0000000 --- a/hesabixCore/templates/project/index.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends 'base.html.twig' %} - -{% block title %}Hello ProjectController!{% endblock %} - -{% block body %} - - -
-

Hello {{ controller_name }}! ✅

- - This friendly message is coming from: -
    -
  • Your controller at /var/www/next.hesabix.ir/hesabixCore/src/Controller/ProjectController.php
  • -
  • Your template at /var/www/next.hesabix.ir/hesabixCore/templates/project/index.html.twig
  • -
-
-{% endblock %} diff --git a/hesabixCore/templates/user/confirmation_email.html.twig b/hesabixCore/templates/user/confirmation_email.html.twig deleted file mode 100644 index 98ea20d..0000000 --- a/hesabixCore/templates/user/confirmation_email.html.twig +++ /dev/null @@ -1,11 +0,0 @@ -

سلام به حسابیکس خوش آمدید.

- -

- برای تایید آدرس ایمیل خود لطفا لینک زیر را کلیک کنید:

- تایید آدرس ایمیل. -

- -

- با احترام - تیم پشتیبانی حسابیکس -

\ No newline at end of file diff --git a/hesabixCore/templates/user/email/confrim-forget-password.html.twig b/hesabixCore/templates/user/email/confrim-forget-password.html.twig deleted file mode 100644 index 3c2a73c..0000000 --- a/hesabixCore/templates/user/email/confrim-forget-password.html.twig +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -
- - -
- - - - - - -
- Image -
-
- - -
- - -
- - - - - - -
-
- - حسابیکس - -
-
-
- - -

-
-

-
- کد بازیابی کلمه عبور شما به شرح زیر می باشد. -
- در صورتی که شما درخواست بازیابی گذرواژه خود را نداشته اید این پیام را نادیده بگیرید. -
-
-
-
-
- - -
- - -
- - - - - - -
- - - - - - -
- {{ code }} -
-
-
- - -
- - -
- - \ No newline at end of file diff --git a/hesabixCore/templates/user/email/confrim-register.html.twig b/hesabixCore/templates/user/email/confrim-register.html.twig deleted file mode 100644 index 0bc1e3d..0000000 --- a/hesabixCore/templates/user/email/confrim-register.html.twig +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -
- - -
- - - - - - -
- Image -
-
- - -
- - -
- - - - - - -
-
- - حسابیکس - -
-
-
- - -

-
-

-
- به حسابیکس خوش آمدید. کد فعال سازی شما به شرح ذیل می باشد. -
- در صورت مواجعه با مشکل در فعال سازی حساب کاربری خود با پشتیبانی حسابیکس تماس بگیرید. -
-
-
-
-
- - -
- - -
- - - - - - -
- - - - - - -
- {{ code }} -
-
-
- - -
- - -
- - \ No newline at end of file diff --git a/hesabixCore/templates/user/email/reset-password.html.twig b/hesabixCore/templates/user/email/reset-password.html.twig deleted file mode 100644 index 958136b..0000000 --- a/hesabixCore/templates/user/email/reset-password.html.twig +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -
- - -
- - - - - - -
- Image -
-
- - -
- - -
- - - - - - -
-
- - حسابیکس - -
-
-
- - -

-
-

-
- کلمه عبور ورود به حسابیکس به درخواست شما تغییر یافت . جهت ورود از کلمه عبور زیر استفاده نمایید. -
-
-
-
-
- - -
- - -
- - - - - - -
- - - - - - -
- {{ code }} -
-
-
- - -
- - -
- - \ No newline at end of file diff --git a/hesabixCore/templates/user/login.html.twig b/hesabixCore/templates/user/login.html.twig deleted file mode 100644 index f46d822..0000000 --- a/hesabixCore/templates/user/login.html.twig +++ /dev/null @@ -1,69 +0,0 @@ -{% extends "blank.html.twig" %} -{% block title %}ورود به حسابیکس{% endblock %} -{% block body %} -
- -
- -
-
-
- -
-
- -
- - حسابیکس - -

ورود

-
- - {% if msg %} -
تبریک! حساب کاربری شما ایجاد شد. لطفا با اطلاعات ثبت نام به حساب کاربری خود وارد شوید.
- {% endif %} - {% if error %} -
{{ error.messageKey|trans(error.messageData, 'security') }}
- {% endif %} -
-
- - -
- -
- - -
- - -
-
- - -
- -
-
- -
-
-
- -
-
-
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/hesabixCore/templates/user/register.html.twig b/hesabixCore/templates/user/register.html.twig deleted file mode 100644 index 6f3d6d0..0000000 --- a/hesabixCore/templates/user/register.html.twig +++ /dev/null @@ -1,88 +0,0 @@ -{% extends "blank.html.twig" %} -{% block title %}عضویت در حسابیکس{% endblock %} -{% block body %} -
- - -
- -
-
- -
-
-
-
- -
- - حسابیکس - -

ایجاد حساب جدید

-
- - - - {{ form_start(registrationForm) }} - {% for flashError in app.flashes('verify_email_error') %} - - {% endfor %} - {{ form_start(registrationForm,{'attr':{'class':'ajax-off'}}) }} - {{ form_row(registrationForm.fullName) }} - {{ form_row(registrationForm.email) }} - {{ form_row(registrationForm.password, { - label: 'Password' - }) }} - {{ form_row(registrationForm.captcha, { - label: 'تشخیص ربات' - }) }} - {{ form_row(registrationForm.agreeTerms) }} -
- -
- {{ form_end(registrationForm) }} -
- - -
-
-
-
-
- - - -
-

حسابیکس مجموعه کاملی از ابزارهای حسابداری ابری است که همیشه به صورت رایگان در اختیار شما خواهد بود.ما اطلاعات مالی شما را به سازمان های مالیاتی و ... قرار نخواهیم داد مگر با دستور مقامات قضائی.

-
-
-
-
-
-
- -
- -
- -
- -
- -{% endblock %} \ No newline at end of file