[Réglé] Insertion d'un sujet personnalisé

Aide aux auteurs d'extensions pour phpBB 3.2.x

Modérateur: Equipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com

[Réglé] Insertion d'un sujet personnalisé

Messagepar Shabox » 23 Mar 2018 à 10:02

Bonjour à tous,

Premièrement, je vous invite à checker ce topic, et notamment la fin : extensions-discussions-recherches/sujet211547.html

Je vais quand même résumer l'idée principale. L'idée est que l'utilisateur puisse rentrer des données bien précises via un formulaire, puis en cliquant sur "submit"/"poster", le sujet se poste de manière automatique comme si on l'avait réalisé avec la fenêtre d'édition classique en fait.

Ce que je souhaite réaliser :
- Au lieu d'une fenêtre d'édition classique d'un sujet, j'aimerai que mon bouton "Nouveau" m'amène vers un formulaire personnalisé que je crée moi-même [FAIT].
- Ce formulaire est rempli par l'utilisateur, (ET C'EST ICI QUE DES QUESTIONS ME VIENNENT*) je récupère les données + concaténation/organisation + stockage dans une array
- Grâce à l'array et ses données stockées, je peux insérer tout le contenu dans une fenêtre d'édition classique, et l'utilisateur n'a plus qu'a (vérifier) poster son topic.

Grâce à cette solution, je permets à l'utilisateur de rentrer des champs bien précis (important, sur mon forum, il ne sera question QUE de passer par ce formulaire), d'autre part, je garde toute l'importance de l'automatisation de gestion des posts dans phpBB.

*Revenons aux questions que je me pose désormais : je cherche la manière la plus simple d'agir (bien qu'on m'ait déjà donné des pistes sur le lien mis en début de post).

=> Est-ce qu'il est plus simple :
- d'insérer une array dans le textarea d'un sujet classique ?
- d'utiliser l'API de création de posts? https://wiki.phpbb.com/Function.submit_post
- d'utiliser la solution de papajoke (voir le lien en haut du post).

D'autre part, si j'utilise l'API, il me manque juste l'indice d'utilisation : par exemple, pour l'API, où suis-je censé utiliser le submit_post, configurer la var $data de l'array, etc. ?
Si j'utilise la solution de papajoke, dans quel fichier se trouve le bout de code présenté? (Sachant que papajoke m'a conseillé posting_editor.html, mais celui-ci n'est dispo que pour prosilver, et dans l'idéal, j'aimerai utiliser le style flat-style)

Voila, je pense avoir résumé l'essentiel.

N'hésitez pas à me demander + d'infos et à me soumettre des idées.

Merciiiii

Shabox
Modifié en dernier par Shabox le 29 Mar 2018 à 14:27, modifié 1 fois.
Shabox
Posteur néophyte
Posteur néophyte
 
Messages: 17
Enregistré le: 20 Mar 2018 à 14:48

Re: Insertion d'un sujet personnalisé

Messagepar cocooncrash » 23 Mar 2018 à 11:05

bonjour,
Rien n' a voir avec l'utilisation normal de phpbb, je vous prie de poster votre demande en pretant attention au forum!

Je déplace cette fois ci, mais ce sera la seule fois, la suite sera du verrouillage.

Le bon forum est coding, webmastering, cordialement.
decouvrez l'aide complete : ICI
découvrez les règles : La_bas

Pensez a ajouter le tag [réglé] en modifiant votre premier message s'il est résolu. Merci :wink:
Avatar de l’utilisateur
cocooncrash
Resp. des modérateurs
Resp. des modérateurs
 
Messages: 7734
Enregistré le: 07 Jan 2008 à 08:29
Localisation: dans un bocal en compagnie de nemo!!

Re: Insertion d'un sujet personnalisé

Messagepar papajoke » 23 Mar 2018 à 12:21

bonjour
Shabox a écrit:dans quel fichier se trouve le bout de code présenté? (Sachant que papajoke m'a conseillé posting_editor.html, mais celui-ci n'est dispo que pour prosilver, et dans l'idéal, j'aimerai utiliser le style flat-style)

:?
En fait, il faut dans un premier temps que tu comprennes comment fonctionne phpbb ! vu ta question tu n'as même pas les bases : Tu doit impérativement créer ton propre sous style, même si tu utilises flat-style.
Si un modèle n'existe pas dans ton style ou style parent (flat-style) alors c'est celui de prosilver qui est chargé. Donc il te suffit de recopier le modèle à modifier dans ton propre sous-style.

Tu dis être développeur php ? il faut voir phpbb comme une structure MVC :
- les modèles sont les vues (moteur twig)
- les extensions sont les controleurs
Donc jamais de code php dans les vues !!!
les controleurs (extensions phpbb) peuvent intercepter des événements pour insérer des datas (champs perso) dans les vues

Il faudrait que tu fasses un minimum de tests et lire la doc avant de partir bille en tête. Même ton formulaire devrait être un modèle phpbb
modérateur forum manjaro.fr
Avatar de l’utilisateur
papajoke
Apprenti-posteur
Apprenti-posteur
 
Messages: 194
Enregistré le: 23 Juil 2017 à 12:45

Re: Insertion d'un sujet personnalisé

Messagepar Shabox » 23 Mar 2018 à 14:12

Ok, c'est bien plus clair d'un coup.
Du coup, j'ai créé mon propre style, qui hérite de flat-style, qui lui même hérite de prosilver.
Je me plonge dans la doc et je vais checker également pour créer mon modèle phpBB pour le formulaire.

Petite précision : je reste un (très) jeune développeur, et n'appréciant pas particulièrement le php. Il me reste beaucoup à apprendre, I know...

Merci à toi, en tout cas.

Shabox
Shabox
Posteur néophyte
Posteur néophyte
 
Messages: 17
Enregistré le: 20 Mar 2018 à 14:48

Re: Insertion d'un sujet personnalisé

Messagepar Zoddo » 23 Mar 2018 à 15:15

Shabox a écrit:D'autre part, si j'utilise l'API, il me manque juste l'indice d'utilisation : par exemple, pour l'API, où suis-je censé utiliser le submit_post, configurer la var $data de l'array, etc. ?

submit_post est une fonction déclarée dans includes/functions_posting.php. Tu peux donc l’appeler depuis n'importe où dans ton code à partir du moment où ce fichier a été inclus :
Code: Tout sélectionner
if (!function_exists('submit_post'))
{
    include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
}


Concernant le rôle de chaque clé de l'array, la doc l'explique plutôt bien :)
[Doc] Installer une extension - [Extension] Post Models - [Recrutement] Équipe des Extensions
Si vous considérez votre requête comme résolue, merci d'ajouter l'attribut de sujet [Réglé]
Zoddo
Equipe site
Equipe site
 
Messages: 6930
Enregistré le: 16 Mar 2011 à 17:44
Localisation: Laval / Le Mans

Re: Insertion d'un sujet personnalisé

Messagepar pierredu » 23 Mar 2018 à 21:06

J'ai déplacé le sujet vers l'aide au développement.

Si tu veux qu'on soit efficace, est-ce que tu as créé un dépôt sur github ?
Ou bien une autre source d'accès à la totalité du code ?
C'est juste pour éviter de jouer à colin-maillard.
Avatar de l’utilisateur
pierredu
Resp. Extensions
Resp. Extensions
 
Messages: 1107
Enregistré le: 29 Mai 2011 à 05:49
Localisation: Paris

Re: Insertion d'un sujet personnalisé

Messagepar papajoke » 24 Mar 2018 à 00:38

et avoir le cahier des charges ..

Ce n'est pas un forum mais plus une base de donnée ?
Un formulaire pour tous les forums mais uniquement pour le premier message d'un sujet ou tous les messages ?
détail/types des champs ? ligne mots,select, texte avec/sans bbcode(ton perso n'a pas de barre bbcode je suppose), images ?
Que ce passe t-il lorsque qu'un utilisateur réédite son message ?
Sauvegarde ou les champs ? si uniquement premier message de sujet création de champs dans table sujets (topics) ? ou format type json dans le premier post ou format clair avec bbcodes
Comment ces champs s'affiches lors de la lecture du sujet ?
Functions particulières de recherche ?

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

Pourquoi ne pas ajouter juste 3..4 champs dans le formulaire original (marque,modele,année) et laisser la zone bbcode ? il y a des extensions existantes qui ajoutent un champ (au sujet), il serait sans doute "simple" de modifier pour un codeur


Shabox a écrit:développeur, et n'appréciant pas particulièrement le php

hook sur événements, controleurs/vues sont des techniques utilisées par tout langage objet de programmation et ne sont pas exclusif au web. phpbb utilise en interne les design patterns classiques de la programmation objet (repose sur symfony) pour les extensions.
https://area51.phpbb.com/docs/dev/extensions/index.html
modérateur forum manjaro.fr
Avatar de l’utilisateur
papajoke
Apprenti-posteur
Apprenti-posteur
 
Messages: 194
Enregistré le: 23 Juil 2017 à 12:45

Re: Insertion d'un sujet personnalisé

Messagepar Shabox » 26 Mar 2018 à 08:37

Bonjour,

@Papajoke,
- Formulaire pour tous les forums et uniquement le premier message (après, on répond au message avec la manière classique).
- Détails/types des champs : Champs texte, qqs menus déroulants, et un champ file/img
- Réédition du message : je pensais à une réédition en brut dans la fenêtre d'édition classique
- Je serai également parti sur la création des champs dans la table sujets (et de base, si on retournait l'ensemble des données formulaires dans le champ texte classique d'un post, on aurait eu uniquement à stocker l'ensemble de texte dans le champ de la table correspondant (phpbb_posts (?)).
- Les champs s'affichent comme du texte (au moins, dans un premier temps) :
Nom : xxxxxxx
Prénom : xxxxxx
...
- Pas de fonction particulière pour la recherche (on recherchera un topic via son titre via la barre classique...)

Pourquoi ne pas ajouter juste 3..4 champs dans le formulaire original

Pourquoi pas, après, il est possible que j'ai quand même une vingtaine de champs, si ce n'est plus, et différents des champs texte. Mais je vais quand même explorer la solution.

- Absolument, après, il y a des choses avec lesquelles j'ai encore un peu de mal..

Il va me falloir un peu de temps pour explorer les solutions. J'étais en train de créer mon formulaire comme un modèle, je pense continuer dans cette voie pour le moment.

Après forcément il se peut que les solutions auxquelles je pensais ne soient pas les bonnes

Merci à toi

@pierredu
Si tu veux qu'on soit efficace, est-ce que tu as créé un dépôt sur github ?
Ou bien une autre source d'accès à la totalité du code ?


Non, pas de dépôt, ça viendra mais j'ai également besoin de me familiariser avec git
Après, j'aimerai pouvoir me débrouiller avec vos infos sans pour autant vous regarder bosser.
Pour l'instant, vous m'avez quand même fourni énormément de solutions que j'ai pas encore pu tester.

Shabox
Shabox
Posteur néophyte
Posteur néophyte
 
Messages: 17
Enregistré le: 20 Mar 2018 à 14:48

Re: Insertion d'un sujet personnalisé

Messagepar Shabox » 27 Mar 2018 à 13:20

Hello,

Bon, j'ai un peu avancé. Mon formulaire est désormais un modèle de mon propre sous-style.

Mais un sujet non évoqué jusqu'à présent me tracasse.
Si j'ai bien compris, il n'est pas vraiment question d'utiliser les super globales au sein de phpBB mais plutôt la classe request pour accéder aux input de l'utilisateur (au lieu de $_POST et $_GET notamment).
Du coup, j'ai, au début, essayé de récupérer les données utilisateurs de façon classique avec un $_POST, j'ai eu ma petite erreur qui m'a dirigé vers la classe request.

Voici un bout de code de mon formulaire : form.html
Code: Tout sélectionner
<form method="post" action="new_topic.php" name="_form">
        <p id="field_prenom" class="par">
            Votre message sera posté sous le nom de : <strong>{PSEUDO}</strong>
        </p>
        <p id="field_mail">
            {L_EMAIL_ADDRESS} : <strong>{EMAIL}</strong>
        </p>
        <p id="field_title">
            Titre du sujet que vous souhaitez poster : <input type="text" name="titre_sujet" />
        </p>


Voici un bout de mon php : new_topic.php
Code: Tout sélectionner
//Ici, j'ai inséré l'appel à session et includes/functions_posting afin de me servir + tard de submit_post
//Appel classe request
$request = new \phpbb\request\request();

//Récupération des données du formulaire
$titre_sujet = $request->variable('titre_sujet', '');


Et en fait, ici ça bloque. car $titre_sujet est vide (j'ai l'impression qu'il prend toujours la valeur par défaut). Pourtant j'ai rempli le champ formulaire correspondant. Il y a un truc qui m'échappe mais je n'arrive pas encore à trouver quoi...
Modifié en dernier par Shabox le 27 Mar 2018 à 14:52, modifié 1 fois.
Shabox
Posteur néophyte
Posteur néophyte
 
Messages: 17
Enregistré le: 20 Mar 2018 à 14:48

Re: Insertion d'un sujet personnalisé

Messagepar pierredu » 27 Mar 2018 à 14:48

J'ai l"impression que tu es en train de mélanger la partie PHP et la partie HTML.
L'URL qui est appelée par le bouton est du code PHP. Dans ce module, tu prépares tout ce qui va être affiché à l'utilisateur et tu envoies dans un gabarit. Dans cette page, l'utilisateur renseigne les données et envoie. Toi, tu réceptionnes les données dans un module PHP (qui peut être le même, avec un switch pour séparer les deux situations) et tu envoies dans la base de données. Après, tu affiches ce que tu veux avec un message d'information.
Avatar de l’utilisateur
pierredu
Resp. Extensions
Resp. Extensions
 
Messages: 1107
Enregistré le: 29 Mai 2011 à 05:49
Localisation: Paris

Re: Insertion d'un sujet personnalisé

Messagepar Shabox » 27 Mar 2018 à 14:59

Ok, pierredu.
J'ai l'impression de ne pas me tromper pourtant (enfin, c'est comme ça que j'ai appris, et j'ai l'impression que ta description est quand même ce que j'ai fait...)
Pour moi : j'ai ma page HTML qui affiche un formulaire, qui permet à l'utilisateur de rentrer les données
Et grâce à action="new_topic.php", on traite les données rentrées par l'utilisateur dans ce même fichier php.
(Réception des champs dans une variable, puis envoi vers bdd, etc.)
Je le faisais habituellement via un $_POST. Une récupération de variable de ce type : "$var = $_POST['nom_du_champ'];"

En fait, le seul soucis c'est qu'ici, l'équivalent de mon $_POST (request->variable()) me renvoie la valeur par défaut, et donc est vide, une fois que j'aurai récupérer la valeur rentrée par l'utilisateur, je pourrai avancer mais là, ça coince.

EDIT : sur mon post précédent, j'ai rajouté le nom de mes fichiers, c'était peut-être ça qui amenait la confusion...
Shabox
Posteur néophyte
Posteur néophyte
 
Messages: 17
Enregistré le: 20 Mar 2018 à 14:48

Re: Insertion d'un sujet personnalisé

Messagepar Zoddo » 27 Mar 2018 à 17:08

Hello,

Il ne faut pas instancier la classe toi-même, elle l'est déjà automatiquement par phpBB.

Il te suffit juste d'utiliser la variable globale $request.
[Doc] Installer une extension - [Extension] Post Models - [Recrutement] Équipe des Extensions
Si vous considérez votre requête comme résolue, merci d'ajouter l'attribut de sujet [Réglé]
Zoddo
Equipe site
Equipe site
 
Messages: 6930
Enregistré le: 16 Mar 2011 à 17:44
Localisation: Laval / Le Mans

Re: Insertion d'un sujet personnalisé

Messagepar papajoke » 27 Mar 2018 à 19:39

re

Dans mon précédent message, je t'ai dit que phpbb était un type proche de MVC
je t'ai donné un lien sur le tuto

Une vue(modèle) ne comporte aucun code php ! c'est au controleur (extension php) de gérer le code, c'est l'extension qui va recevoir les datas et les injecter sous forme de variables phpbb dans les modèles ou éventuellement dans la base de donnée.

ici, tu utilises l'ancienne technique, mais tu peux voir ta page php comme un controleur
modérateur forum manjaro.fr
Avatar de l’utilisateur
papajoke
Apprenti-posteur
Apprenti-posteur
 
Messages: 194
Enregistré le: 23 Juil 2017 à 12:45

Re: Insertion d'un sujet personnalisé

Messagepar Shabox » 28 Mar 2018 à 08:57

Hello,

Il ne faut pas instancier la classe toi-même, elle l'est déjà automatiquement par phpBB.

Il te suffit juste d'utiliser la variable globale $request.


Well done ! Merci Zoddo, cette nouvelle instance me bloquait, dorénavant, la création de mon topic via mon formulaire perso est quasi done !

@papajoke,

Effectivement, je vois ma page php comme le contrôleur, et il n'était pas question d'insérer du code php là où il y a le formulaire (du moins, pas après ta remarque). La décomposition est appréciable et évitera bien des problèmes...
Il m'a fallu un peu de temps pour me remettre dans le bain.

Merci à tous.

Je laisse le topic ouvert, car après la création de mon nouveau sujet, il va être question d'insérer le topic au bon endroit, ou peut-être d'autres modifications...
J'ai déjà ma petite idée, je mettrais sûrement le topic en [réglé] ce jeudi.
Shabox
Posteur néophyte
Posteur néophyte
 
Messages: 17
Enregistré le: 20 Mar 2018 à 14:48

Re: Insertion d'un sujet personnalisé

Messagepar Shabox » 29 Mar 2018 à 11:33

Bonjour,

Je reviens vers vous avec une autre question :
Je me demandais s'il était possible d'insérer un nouveau forum (de la même manière que j'insérais un nouveau sujet) ?

Par exemple, via un formulaire on renseigne les différentes variables dont a besoin un forum pour être créé, puis on le soumet à la BDD, en qqs sortes.

Je me suis penché du côté de acp_forums.php, il y a juste un truc qui me perturbe, c'est que le "bout" de code qui me permettrait de créer le forum est dans la fonction main(). Et il y a énormément de choses dedans, dont je ne vois pas l'importance de modifier dans un premier temps
Mais dans cette fonction, il y a ce morceau de code qui semblerait être utile.

Code: Tout sélectionner
case 'add':

					$forum_data += array(
						'parent_id'				=> $request->variable('forum_parent_id', $this->parent_id),
						'forum_type'			=> $request->variable('forum_type', FORUM_POST),
						'type_action'			=> $request->variable('type_action', ''),
                                                      .......


C'est, à priori, par l'acp que l'on gère tout cela. C'est pourquoi je me suis tourné vers ce fichier.

En fait, je me demande deux choses :
- Est-il possible et préférable de garder l'automatisation créée par phpBB, mais de réussir à modifier la structure de l'array passée dans $forum_data par mes propres valeurs ? (Ce que je cherche à faire)
- Le cas échéant, est-ce un travail colossal de rentrer cela dans la BDD ? (Pour des choses que j'ignore, par exemple, les permissions, les restrictions, etc.)

Pour vos avis, je suis tout ouïe.
Merci d'avance,

Shabox
Shabox
Posteur néophyte
Posteur néophyte
 
Messages: 17
Enregistré le: 20 Mar 2018 à 14:48

Suivante

Retourner vers Aide au développement

 


  • Articles en relation
    Réponses
    Vues
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité