PSMList 0.4.0 PSM-040-052
| Ordre affichage : | 49 | Création : | 02/07/2023 19h48 |
| Index BL : | 52 | Modification : | 04/07/2023 01h25 |
| BL : | PSM-040-052 | ||
| Source : | Aucune | Soeurs : | - |
| Fin dev : | D (Done) | Ticket : | - |
| Contrôle dev effectué : | Fiche : | - | |
| C.Qualif. : | #000000 | ||
| Activé : | Icône FA : | Par défaut | |
| Contact : | ARS - Arshellan | Qualification : | Nouveauté |
| Répartition : | - | Module : | Expansion |
| Dev : | ARS - Arshellan | Sous module : | - |
| Provenance : | 0.4.0 New | Constat : | - |
| Début : | S.27 | Charge j. : | - |
| Fin : | S.27 | Délai j. : | - |
| Priorité : | - | Pokercard : | - |
| Estimatif j. : | - | ||
| Description : | Somewhere to list expansions | ||
| Texte Commit : | - | ||
| Description client : | Since custom expansions are now live for everyone, a search page has been added to list all of them (works for the official expansions too). Please tell us if you need more filters. | ||
| Fascicule : | Ne pas communiquer : | ||
| Alerte Mailing : |
| Statut PreP : | OK - Validé | Testeur : | ARS - Arshellan |
first td of the nav<br/><br/><br/> <td><br/> <div class="groupNav"><br/> <a class="title" href="">Search</a><br/> <ul><br/> <li><a href="{{ path('ship_search') }}"><i class="fas fa-circle"></i>Ships</a></li><br/> <li><a href="{{ path('crew_search') }}"><i class="fas fa-circle"></i>Crew</a></li><br/> <li><a href="{{ path('treasure_search') }}"><i class="fas fa-circle"></i>Treasures</a></li><br/> <li><a class="disabled" href=""><i class="fas fa-circle"></i>Equipment</a></li><br/> <li><a class="disabled" href=""><i class="fas fa-circle"></i>Islands</a></li><br/> <li><a class="disabled" href=""><i class="fas fa-circle"></i>Stories</a></li><br/> <li><a href="{{ path('expansion_search') }}"><i class="fas fa-circle"></i>Expansions</a></li><br/> <li><a href="{{ path('keyword_search') }}"><i class="fas fa-circle"></i>Keywords</a></li><br/> <li><a href="{{ path('technicalshape_list') }}"><i class="fas fa-circle"></i>Shapes</a></li><br/> </ul><br/> </div><br/> <div class="groupNav"><br/> <a class="title" href="">Custom game pieces</a><br/> <ul><br/> <li><a href="{{ path('expansion_search') }}"><i class="fas fa-circle"></i>Search</a></li><br/> <li><a href="{{ path('expansion_list_self') }}"><i class="fas fa-circle"></i>My expansions</a></li><br/> <li><a href="{{ path('expansion_add_custom') }}"><i class="fas fa-circle"></i>New expansion</a></li><br/> <li><a href="{{ path('ship_add_custom') }}"><i class="fas fa-circle"></i>New ship</a></li><br/> <li><a href="{{ path('crew_add_custom') }}"><i class="fas fa-circle"></i>New crew</a></li><br/> <li><a href="{{ path('treasure_add_custom') }}"><i class="fas fa-circle"></i>New treasure</a></li><br/> <li><a class="disabled" href=""><i class="fas fa-circle"></i>Submit a new faction</a></li><br/> </ul><br/> </div><br/> </td>
expansionController at the top<br/><br/><br/><br/><br/><br/> /**<br/> * @Route("/expansions")<br/> * @Route("/expansion/search", name="expansion_search")<br/> * @param GenericServiceTools $gst<br/> * @param Request $request<br/> * @return Response<br/> */<br/> public function expansion_search(GenericServiceTools $gst, Request $request): Response<br/> {<br/> /** @var User $loggedUser **/<br/> $loggedUser = $this->getUser();<br/><br/> $expansionRepo = $this->doctrine->getRepository(Extension::class);<br/><br/> /* Creates and manages the form */<br/> $options['official'] = ['Both'=>3,'Official'=>2,'Custom'=>1];<br/> $searchForm = $this->createForm(SearchExpansionType::class, null, $options);<br/> $searchForm->handleRequest($request);<br/><br/> $expansionList = null;<br/> $numberResults = 0;<br/> /* Do stuff after the form is submitted */<br/> if ($searchForm->isSubmitted() && $searchForm->isValid()) {<br/> $nameSearch = $gst->sanitizeString($searchForm->get('name')->getData());<br/> $authorSearch = $gst->sanitizeString($searchForm->get('author')->getData());<br/> $officialSearch = $searchForm->get('official')->getData();<br/> if ($officialSearch == null) {$officialSearch = 2;}<br/><br/> $expansionList = $expansionRepo->getExpansionSearch($nameSearch, $authorSearch, $officialSearch);<br/><br/> $numberResults = count($expansionList);<br/> }<br/><br/><br/> return $this->render('expansion/search.html.twig', [<br/> 'searchForm' => $searchForm->createView(),<br/> 'expansionList' => $expansionList,<br/> 'loggedUser' => $loggedUser,<br/> 'numberResults' => $numberResults,<br/> ]);<br/> }
datatablescalls.js<br/><br/><br/> $('#searchShipTable').DataTable( {<br/> aaSorting: [], /* This prevent datatables sorting when loading the page, it stays unsorted til the user don't click it */<br/> columns : [<br/> null,<br/> null,<br/> null,<br/> null,<br/> null,<br/> null,<br/> null,<br/> null,<br/> null,<br/> null,<br/> null,<br/> ],<br/> } );<br/><br/> $('#searchExpansionTable').DataTable( {<br/> aaSorting: [],<br/> columns : [<br/> null,<br/> null,<br/> null,<br/> null,<br/> null,<br/> null,<br/> null,<br/> ],<br/> } );
searchExpansionType<br/><br/><br/> $official = $options['official'];<br/><br/> $builder<br/> ->add('name', TextType::class, [<br/> 'label' => 'Name : ',<br/> 'attr' => array(<br/> 'placeholder' => 'or part of name'<br/> ),<br/> 'mapped' => false,<br/> 'required' => false,<br/> ])<br/> ->add('author', TextType::class, [<br/> 'label' => 'Author\'s name : ',<br/> 'attr' => array(<br/> 'placeholder' => 'or part of author\'s name'<br/> ),<br/> 'mapped' => false,<br/> 'required' => false,<br/> ])<br/> ->add('official', ChoiceType::class, [<br/> 'label' => 'Official : ',<br/> 'mapped' => false,<br/> 'choices' => $official,<br/> 'data' => 2,<br/> 'expanded' => true,<br/> 'multiple' => false,<br/> 'required' => true,<br/> ])<br/> ;
expansionRepository at the end <br/><br/><br/><br/> public function getExpansionSearch($nameSearch, $authorSearch, $officialSearch) {<br/><br/> $qb = $this->createQueryBuilder('exp');<br/> $qb<br/> ->addSelect('exp.name')<br/> ->addSelect('exp.short')<br/> ->addSelect('exp.shipcount')<br/> ->addSelect('exp.crewcount')<br/> ->addSelect('exp.treasurecount')<br/> ->addSelect('exp.slugname')<br/> ->addSelect('aut.username')<br/> ->join('exp.author','aut')<br/> ;<br/><br/> if ($nameSearch) {<br/> $qb->andWhere('exp.name LIKE :nameSearch');<br/> $qb->setParameter('nameSearch', '%'.addcslashes($nameSearch, '%_').'%');<br/> }<br/><br/> if ($authorSearch) {<br/> $qb->andWhere('aut.username LIKE :authorSearch');<br/> $qb->setParameter('authorSearch', '%'.addcslashes($authorSearch, '%_').'%');<br/> }<br/><br/> switch ($officialSearch) {<br/> case 1:<br/> $qb->andWhere('exp.custom = 1')->andWhere('exp.ispublic = 1');<br/> break;<br/> case 2:<br/> $qb->andWhere('exp.custom = 0');<br/> break;<br/> case 3:<br/> $qb->andWhere('exp.ispublic = 1');<br/> break;<br/> }<br/><br/> $qb<br/> ->andWhere('exp.ispublic = 1')<br/> ->addOrderBy('exp.searchsort', 'ASC')<br/> ->addOrderBy('exp.short', 'ASC')<br/> ;<br/><br/> return $qb->getQuery()->getResult();<br/> }