Portage MOD Introduciator + tutoriel

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

Re: Portage MOD Introduciator + tutoriel

Messagepar Zoddo » 24 Jan 2016 à 16:59

Yep, soit sous l'icone contacte, ou alors un lien dans les infos du mini-profile.

cabot pourrais peut-être avoir un avis, vu que c'est lui qui est le spécialiste pour tout ce qui touche au style 8)
[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: 6912
Enregistré le: 16 Mar 2011 à 18:44
Localisation: Laval / Le Mans

Re: Portage MOD Introduciator + tutoriel

Messagepar Feneck91 » 25 Jan 2016 à 22:02

Il ya un lien dans le profile et un bouton sous l'avatar normalement. C'est quoi le mini profile ?
Feneck91
Posteur expérimenté
Posteur expérimenté
 
Messages: 384
Enregistré le: 31 Déc 2007 à 13:02
Localisation: Essonne (91)

Re: Portage MOD Introduciator + tutoriel

Messagepar Zoddo » 25 Jan 2016 à 22:27

Ce qu'on appel le mini profil, c'est justement la zone à droite des messages avec l'avatar et autres infos.
[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: 6912
Enregistré le: 16 Mar 2011 à 18:44
Localisation: Laval / Le Mans

Re: Portage MOD Introduciator + tutoriel

Messagepar cabot » 26 Jan 2016 à 11:22

Je verrais plutôt ce lien avec les autres sous l'avatar car ce n'est pas un moyen de contact.

Exemple dans le mini-profil

Tu injectes ton élément quelque part sous l'avatar de la même façon que les autres infos :
Code: Tout sélectionner
<dd class="profile-introduciator"><strong>{L_INTRODUCIATOR_MEMBER_INTRODUCTION}{L_COLON}</strong> <a href="lien-vers-la-prez" title="{L_INTRODUCIATOR_TOPIC_VIEW_PRESENTATION}">{L_INTRODUCIATOR_TOPIC_VIEW_PRESENTATION}</a></dd>

Et tu déclares ça dans ta CSS :
Code: Tout sélectionner
.profile-introduciator strong {
	display: none;
}

.profile-introduciator a {
	background: url("./images/icon_introduciator.gif") no-repeat;
	display: inline-block;
	width: 20px;
	height: 20px;
	text-indent: -999px;
}

.profile-introduciator a:hover {
	background-position: 0 -20px;
}
Image
Avatar de l’utilisateur
cabot
Equipe site
Equipe site
 
Messages: 26802
Enregistré le: 13 Fév 2011 à 20:42
Localisation: Rarement sur la plaque

Re: Portage MOD Introduciator + tutoriel

Messagepar Feneck91 » 09 Fév 2016 à 21:35

C'est plus compliqué que ça !
Il faut savoir si l'icone doit être affiché ou pas (si activé) et si l'option 'afficher le lien dans le mini profile' est activé.
Tout ça est fait par une fonction qui me renvoie les informations. Seulement, il me faut un event entre cette page appelée toute seule et le code à appeler qui va initialiser cette page.
Et le css je le mets où ? Appelé par qui ? J'avoue que je suis dans le brouillard !
Code: Tout sélectionner
<!-- IF postrow.S_INTRODUCIATOR_DISPLAY -->
	<li class="{postrow.T_INTRODUCIATOR_CLASS}" title="{postrow.T_INTRODUCIATOR_TEXT}">
	<!-- IF postrow.U_INTRODUCIATOR_URL -->
		<a href="{postrow.U_INTRODUCIATOR_URL}" alt="{L_INTRODUCIATOR_MEMBER_INTRODUCTION}" title="{postrow.T_INTRODUCIATOR_TEXT}">
	<!-- ENDIF -->
	<span>
		{L_INTRODUCIATOR_MEMBER_INTRODUCTION}
	</span>
	<!-- IF postrow.U_INTRODUCIATOR_URL -->
		</a>
	<!-- ENDIF -->
	</li>
<!-- ENDIF -->
Feneck91
Posteur expérimenté
Posteur expérimenté
 
Messages: 384
Enregistré le: 31 Déc 2007 à 13:02
Localisation: Essonne (91)

Re: Portage MOD Introduciator + tutoriel

Messagepar cabot » 11 Fév 2016 à 15:59

Nan mais je te donne un exemple de base avec ce que j'ai sous la main et adapté au balisage des éléments affichés dans le mini-profil, modifie selon tes besoins avec la condition qui va bien, ça va de soit.

Pour le CSS, retour à ce message si tu dois l'injecter sur plusieurs pages.
Exemple pour charger le fichier sur la page des messages :
Code: Tout sélectionner
<!-- IF S_VIEWTOPIC -->
<!-- INCLUDECSS @feneck91_introduciator/introduciator_explain.css -->
<!-- ENDIF -->
Image
Avatar de l’utilisateur
cabot
Equipe site
Equipe site
 
Messages: 26802
Enregistré le: 13 Fév 2011 à 20:42
Localisation: Rarement sur la plaque

Re: Portage MOD Introduciator + tutoriel

Messagepar Feneck91 » 27 Jan 2018 à 10:36

Bon, y'en a marre, il faut que je me bouge les fesses et que je finisse le portage de cette extension...
Aller, je reprend du service, non je ne suis pas mort !
Par contre depuis tout ce temps, je ne sais même plus où j'en étais et j'ai un peu tout oublié !

Bon, déjà, je détrourne (dans getSubscribedEvents()) la callback :
Code: Tout sélectionner
			'core.posting_modify_submit_post_before'	=> 'on_submit_post',							// When user post a message, verify the introduce has been done

Dans cette callback, je fais des vérifications et tente de changer $event['data']['force_approved_state'] et ça ne fonctionne pas.
En gros, si je fais ;
Code: Tout sélectionner
	public function on_submit_post($event)
	{
		$tututu = $event['data']['message'];
		$event['data']['message'] = 'salut';
		$tototo = $event['data']['message']; <---- ici la valeur de $tototo n'est pas 'salut' mais est restée inchangée, pourquoi ?
        }
Feneck91
Posteur expérimenté
Posteur expérimenté
 
Messages: 384
Enregistré le: 31 Déc 2007 à 13:02
Localisation: Essonne (91)

Re: Portage MOD Introduciator + tutoriel

Messagepar Feneck91 » 28 Jan 2018 à 18:30

Vous me conseillez de recommencer à partir de quelle version de phpBB ? la 3.2 ?
C'est peut-être pas la peine que je fasse en sorte qu'il soit compatible avec la 3.1 ?
Feneck91
Posteur expérimenté
Posteur expérimenté
 
Messages: 384
Enregistré le: 31 Déc 2007 à 13:02
Localisation: Essonne (91)

Re: Portage MOD Introduciator + tutoriel

Messagepar pierredu » 28 Jan 2018 à 19:18

Comme la branche 3.1 est en fin de vie, il faut prendre 3.2.x.
Avatar de l’utilisateur
pierredu
Resp. Extensions
Resp. Extensions
 
Messages: 1098
Enregistré le: 29 Mai 2011 à 06:49
Localisation: Paris

Re: Portage MOD Introduciator + tutoriel

Messagepar Feneck91 » 29 Jan 2018 à 05:24

Ok, j'ai remis mon environnement de travail à jour : phpBB 3.2.2 avec la nouvelle version de QuickInstall.
J'ai détourné la l'event core.modify_submit_post_data. Le but est de forcer la création d'un sujet dans le forum dédié aux présentation en mode approbation par un modérateur, je fais :
Code: Tout sélectionner
	public function on_modify_submit_post_data($event)
	{
		if ($this->introduciator_helper->introduciator_verify_posting($this->user, $event['mode'], $event['data']['forum_id'], $event['post_id'], $event['data'], true))
		{
			// Posting is allowed because we are here
			$introduciator_posting_must_be_approved = $this->introduciator_helper->introduciator_is_posting_must_be_approved($this->user, $event['mode'], $event['data']['forum_id']);
			if ($introduciator_posting_must_be_approved)
			{	// If posting should not be approved, let $data['force_approved_state'] unchanged (in case of another MOD has modified it)
				$event['data']['force_visibility'] = ITEM_UNAPPROVED; // Force approval
			}
		}
	}

Mais visiblement, impossible de modifier $event, du coup cette callback est juste spectatrice et ne rien faire... Bizarre j'ai du rater un truc...
Z'avez une idée ?
EDIT : bon j'ai trouvé, oullla, dur de se remettre au php après 2 ans sans y toucher !
Code: Tout sélectionner
$data = $event['data'];
$data['force_visibility'] = ITEM_UNAPPROVED; // Force approval
$event['data'] = $data;

Il faut juste faire l'assignation en 3 étapes...
Feneck91
Posteur expérimenté
Posteur expérimenté
 
Messages: 384
Enregistré le: 31 Déc 2007 à 13:02
Localisation: Essonne (91)

Re: Portage MOD Introduciator + tutoriel

Messagepar pierredu » 29 Jan 2018 à 08:54

Oui, c'est parce que la variable $event n'est pas un vrai tableau.
Avatar de l’utilisateur
pierredu
Resp. Extensions
Resp. Extensions
 
Messages: 1098
Enregistré le: 29 Mai 2011 à 06:49
Localisation: Paris

Re: Portage MOD Introduciator + tutoriel

Messagepar Skouat » 29 Jan 2018 à 21:49

Bonjour,

Feneck91 a écrit:Vous me conseillez de recommencer à partir de quelle version de phpBB ? la 3.2 ?

Voire même la 3.3 :wink:
Skouat
Traducteur
Traducteur
 
Messages: 13791
Enregistré le: 02 Avr 2008 à 20:47

Re: Portage MOD Introduciator + tutoriel

Messagepar Feneck91 » 31 Jan 2018 à 15:23

La 3.2 c'est bien déjà. Content de te revoir après une grosse absence Skouat ! Je vais me pousser au cul et aller au bout cette fois, j'ai bien avancé déjà !

Petite question : il semblerait que si un sujet doit être approuvé, si un utilisateur ayant les droits d'approbation crée un message, celui-ci est automatiquement approuvé, il n'a pas besoin d'approuver le message (qu'il pourrait faire lui-même ce qui est idiot). Vous validez ce comportement ?
Feneck91
Posteur expérimenté
Posteur expérimenté
 
Messages: 384
Enregistré le: 31 Déc 2007 à 13:02
Localisation: Essonne (91)

Re: Portage MOD Introduciator + tutoriel

Messagepar Sylveretour » 31 Jan 2018 à 16:07

Oui, tout à fait, il le valide lui-même de fait en envoyant le message s'il possède la permission m_approve ou f_approve (id)
Ceci doit être copié du posting
Avatar de l’utilisateur
Sylveretour
Maître-posteur
Maître-posteur
 
Messages: 445
Enregistré le: 21 Nov 2017 à 19:24
Localisation: West Coast

Re: Portage MOD Introduciator + tutoriel

Messagepar Feneck91 » 21 Fév 2018 à 07:33

J'ai bien avancé mais je tombe sur un gros problème sur l'extension : il est possible pour celui qui se présente de voir / modifier sa présentation alors qu'elle est en attente d'approbation : cette fonctionnalité fonctionne très bien maintenant.
Par contre, il était possible pour un modérateur ayant les droits d'approbation de répondre sur ce fil de discussion, ça je n'arrive pas à le faire : dans posting.php, il y a le code suivant :
Code: Tout sélectionner
$post_data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

if (!$post_data)
{
	if (!($mode == 'post' || $mode == 'bump' || $mode == 'reply'))
	{
		$user->setup('posting');
	}
	trigger_error(($mode == 'post' || $mode == 'bump' || $mode == 'reply') ? 'NO_TOPIC' : 'NO_POST');
}

// Not able to reply to unapproved posts/topics
// TODO: add more descriptive language key
if ($auth->acl_get('m_approve', $forum_id) && ((($mode == 'reply' || $mode == 'bump') && $post_data['topic_visibility'] != ITEM_APPROVED) || ($mode == 'quote' && $post_data['post_visibility'] != ITEM_APPROVED)))
{
	trigger_error(($mode == 'reply' || $mode == 'bump') ? 'TOPIC_UNAPPROVED' : 'POST_UNAPPROVED');
}

Et on passe dans trigger_error car le post n'est pas encore approuvé et entre l'exécution du SQL et le test, aucune callback n'est appelée...
Seule la callback de début de fichier est appelée : core.modify_posting_parameters mais je ne peux pas faire grand chose avec ça.
Ou alors demander à phpBB d'ajouter une callback à cet endroit, genre un force reply qui permettrait de poster sur un message en attente d'approbation... Ou alors une astuce bien trouvée....
Je suis un peu dans une impasse...
Feneck91
Posteur expérimenté
Posteur expérimenté
 
Messages: 384
Enregistré le: 31 Déc 2007 à 13:02
Localisation: Essonne (91)

PrécédenteSuivante

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é