5e263e09a1118f14427dd489e8df3ec1.png PSMList 0.4.0 PSM-040-052

Général

Ordre affichage : 49 Création : 02/07/2023 19h48
Index BL : 52 Modification : 04/07/2023 01h25
BL : PSM-040-052

Source : Aucune Soeurs : -

Dev

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.

Client

Fascicule : Ne pas communiquer :
Alerte Mailing :

PreP

Statut PreP :   OK - Validé Testeur : ARS - Arshellan

Discussion

ARS

Arshellan

lundi 3 juillet 2023 à 15:10

php bin/console make:form<br/><br/>SearchExpansionType

ARS

Arshellan

lundi 3 juillet 2023 à 16:26

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>

ARS

Arshellan

lundi 3 juillet 2023 à 16:32

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/> }

ARS

Arshellan

lundi 3 juillet 2023 à 16:37

expansion/search.html.twig<br/><br/>sent in discord tempo

ARS

Arshellan

lundi 3 juillet 2023 à 16:38

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/> } );

ARS

Arshellan

lundi 3 juillet 2023 à 16:38

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/> ;

ARS

Arshellan

lundi 3 juillet 2023 à 16:39

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/> }