#1 2016-02-08 10:45:34

Sblawx
Membre
2016-02-08
6

Panier + Formulaire d'approbation

Bonjour,

Je m'appelle Cédric et je travaille comme alternant graphiste / webdesigner à l'ESRF (European Synchrotron Radiation Facility) et dans le cadre de la refonte du site web j'ai mis en place une Photothèque basée sur Piwigo pour permettre à la presse et aux revues scientifiques de pouvoir télécharger nos photos sous certaines conditions.


Apres plusieurs mois d'analyse et de bidouillage, je me heurte à un problème majeur :

Piwigo ne possède pas de fonctionnalité proposant un panier pour les utilisateurs enregistrés.
J'ai besoin que les visiteurs de la photothèque puissent sélectionner des photos dans un panier qui les enverrait sur un formulaire de demande avant de pouvoir télécharger les photos.

J'ai essayé le plugin User Collections + Batch Downloader qui permet de faire des selections téléchargeables. J'ai essayé de faire en sorte qu'une Collection "Panier" soit crée automatiquement apres l'enregistrement d'un nouvel utilisateur en modifiant les templates, mais trop complexe je n'ai pas assez de connaissances.

J'ai aussi essayé de créer ma propre page panier.php, mais je me suis vite rendu compte que sortir de la gallerie n'etait pas la solution la plus propre et sécurisée...


J'en appelle donc aux connaissances de ce forum pour m'aider dans la mesure du possible.

Je précise ma demande :

- Les utilisateurs de ma gallerie doivent pouvoir ajouter des photos dans un panier.
- Ce panier propose un téléchargement libre sur un album "A la une" pour tous les utilisateurs.
- Ce panier renvoie les utilisateurs enregistrés souhaitant télécharger les photos des autres albums vers un formulaire de demande.
- Une fois la demande approuvée, ils pourront télécharger le contenu de leur panier.

Voila ca représente quelquechose d'assez lourd. Je bute sur ce problème depuis déja pas mal de temps, j'espère vraiment que quelqu'un ici pourra m'aider.

Merci d'avance.
Cédric

Version de Piwigo: 2.7.4
Version de PHP: 5.5.12
Version de MySQL: 5.6.17
URL Piwigo: Sur un seveur wamp pour l'instant (les versions de PHP et MySQL sont celles citées au dessus)

Hors ligne

#2 2016-02-08 21:31:04

BrandonCougar
Membre
Lille
2013-05-04
176

Re: Panier + Formulaire d'approbation

Bonsoir,

j'ai rencontré un peu le même problème que j'ai essayé de résoudre tout comme toi avec Batch Downloader + User Collections + Download permissions :
1 - Création d'une collection par le client : Une petite doc très simple est suffisante, rien de bien compliqué
2 - Validation de la collection : Un admin du site valide le contenu et donne les permissions qui vont bien au client pour qu'il télécharge sa collection

Dans mon cas c'est plutôt satisfaisant car les clients sont peu nombreux et connus (réellement) donc ça peut tourner comme ça.

Par contre les photos des collections doivent impérativement être contrôlées car au niveau des permissions tout ne fonctionne pas comme souhaité :( J'ai ouvert un ticket concernant ce problème :
http://fr.piwigo.org/forum/viewtopic.php?id=26252

Bonne chance et si tu trouves une solution je suis très intéressé ! Et si tu arrives à faire fonctionner tout ça avec Paypal c'est encore mieux ;)

Dernière modification par BrandonCougar (2016-02-08 21:31:59)

Hors ligne

#3 2016-02-09 10:33:31

Sblawx
Membre
2016-02-08
6

Re: Panier + Formulaire d'approbation

Bonjour,

Merci de ta réponse.

L'une des solutions que j'ai imaginé consisterait à modifier le fichier template "register.tpl" pour faire en sorte que lorsqu'un nouvel utilisateur s'enregistre, une nouvelle collection nommée "Panier" soit créée et accessible depuis le plugin "Advanced Menu Manager".

Après examen du plugin "User collections", j'ai trouvé la fonction et la ligne qui crée une collection.
Par contre je ne sais pas comment intégrer ca dans le fichier template "register.tpl".

J'ai aussi remarqué que lorqu'on crée une nouvelle collection sans lui donner de nom, un message s'affiche précisant qu'aucun nom n'a été entré. A ce moment précis, si on regarde la barre d'adresse on y trouve "collections/&action=new&col_id=0&name=". Si on écrit un nom (par exemple "Panier") juste apres "name=" et qu'on copie colle ce lien, une collection du nom de "Panier" se crée.

C'est une des pistes que j'ai trouvé mais je ne sais pas comment intégrer cette fonction de façon à ce qu'elle s'exécute automatiquement à la création d'un nouvel utilisateur.

Si quelqu'un a une idée, je suis prenneur :)

Hors ligne

#4 2016-02-09 10:45:07

mistic100
Ex Equipe Piwigo
Lyon
2008-09-27
3556

Re: Panier + Formulaire d'approbation

Hola hola, tout ça c'est très sale, faire ça depuis le template n'est pas la solution.

Ce qu'ils vous faut c'est créer un nouveau plugin qui va se brancher sur l'évènement de création d'utilisateur, et appeler User Collections pour créer la nouvelle collection. C'est tout simple avec :

Code:

new UserCollection('new', 'Panier');

Regardez par exemple comment Community fait pour pour créer un album pour chaque utilisateur.

Doc de création de plugins : http://piwigo.org/doc/doku.php?id=dev:e … ns:plugins
Plugin de référence : https://github.com/mistic100/Piwigo-Skeleton

Par contre la partie approbation n'étant similaire à rien d'existant je n'ai rien à proposer. Le plus simple est de le gérer via le formulaire de contact + un groupe autorisé à utiliser Batch Downloader.

Hors ligne

#5 2016-02-09 10:45:51

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
14682

Re: Panier + Formulaire d'approbation

Bonjour,

Tu cherches à faire un plugin ou un prestataire pour te dévelloper ton plugin ?

Sblawx a écrit:

Si quelqu'un a une idée, je suis prenneur :)

Tu peux regarder dans addInfosUsers comment exécuter une fonction à la fin de l'enregistrement d'un utilisateur


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#6 2016-02-09 11:09:48

Sblawx
Membre
2016-02-08
6

Re: Panier + Formulaire d'approbation

Non je ne cherche pas de prestataire, je suis juste coincé et j'avais besoin d'idées pour contourner mon problème.

Je débutes, et je ne connais pas trop les possibilités de développement pour Piwigo. J'ai effectué beaucoup de recherches en ne sachant pas trop ou partir. Dans mon centre de formation on fait du "survol" dans les matières les plus importantes comme le php par exemple. Du coup créer un plugin n'était pas forcément la premiere chose qui m'est venue. Quand on y pense, ca fait peur on se dit waw faut développer un truc qui existe pas ca va etre compliqué...


Mais apres avoir lu vos réponse je suis un peu rassuré et je vous remercie grandement :) . Je vais lire la doc et partir sur cette piste.

Est ce que je peux revenir vers vous si je n'y arrive pas ?

Merci

Hors ligne

#7 2016-02-09 15:38:41

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
14682

Re: Panier + Formulaire d'approbation

Sblawx a écrit:

Est ce que je peux revenir vers vous si je n'y arrive pas ?

Oui bien sur
surtout si tu fais un plugin et que après tu le mets à dispo de la communauté ;-)


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#8 2016-02-10 10:15:30

Sblawx
Membre
2016-02-08
6

Re: Panier + Formulaire d'approbation

Bonjour,

Je m'excuse d'abord pour la longueur de mon message et les tonnes de questions que je vais poser, mais je suis vraiment livré à moi même.


Je ne suis pas sur de bien comprendre comment "AddUserInfo" fonctionne.

Dans cette partie la :

Code:

  
//plugin on register
if (script_basename() == 'register')
{  
 include_once(dirname(__FILE__).'/initregister.php');
}

En gros, si l'utilisateur s'enregistre, le plugin va agir avec le fichier 'initregister.php' ?

Il y a plusieurs choses que je suis pas sur de comprendre en analysant ce fichier: (oui je suis nul :p )
Je vais essayer de traduire ce que je lis, j'imagine que je vais dire un tas de bêtises

Code:

 
//add prefiter
add_event_handler('loc_end_page_header', 'adddinfousersI', 55 );

function adddinfousersI()
 {
  load_language('plugin.lang', ADDINFOUSERS_PATH);
  load_language('lang', PHPWG_ROOT_PATH.'local/', array('no_fallback'=>true, 'local'=>true) );

  global $template;
  $template->set_prefilter('register', 'adddinfousersT');
  $template->set_filename('profile_add', realpath(ADDINFOUSERS_PATH.'profile_add.tpl'));
  $template->assign_var_from_handle('PROFILE_ADD', 'profile_add');
 }

Ici la fonction addinfouserI sert au chargement des languages dans le premier paragraphe. Le deuxieme paragraphe, je ne le comprends pas. J'imagine qu'il va chercher le template du plugin ?
Mais peut etre pas puisque cette ligne m'intrigue :

Code:

 $template->set_prefilter('register', 'adddinfousersT');

Ici la fonction template appelle ? (je ne comprends pas "=>set_prefilter") la fonction addinfousersT lors de l'enregistrement ?

Ensuite on définit la fonction addinfousersT avec ce code ?

Code:

 function adddinfousersT($content, &$smarty)
 {
  $search = '<p class="bottomButtons">';
  return str_replace($search, '{$PROFILE_ADD}'."\n".$search, $content);
 }

Et la, on relie la fonction à l'évenement 'register_user_check' ?

Code:

 add_event_handler('register_user_check', 'addInfousersT');

C'est ca le plus important je suppose, on greffe la fonction a un endroit.


Apres m'etre documenté, j'ai trouvé deux truc qui pourra m'être utile :

C'est avec ça que je vais appeler ma fonction :

Code:

 register_event_handler('delete_user', 'my_action_on_delete_user');

(quelle est la différence entre "register_event_handler" et "add_event handler" utilisé dans addUserInfo ?)


Est ce que du coup ca marche si je fais de cette manière ?

Code:

register_event_handler('register', 'newusercollection');

function newusercollection($content)
{
        $content = new UserCollection('new', 'Panier');
        return $content
}

Hors ligne

#9 2016-02-11 15:55:15

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12345

Re: Panier + Formulaire d'approbation

register_event_handler, cela n'existe pas. Tout du moins, ça n'existe plus. (tu as trouvé ça où ?)

Grosso modo, dans le core Piwigo (le noyau Piwigo), tu as des trigger_change ou trigger_notify et dans les plugins tu as des add_event_handler qui se "plug" sur les triggers proposés par le core.

Concernant les prefiltres, étudie le plugin Skeleton. C'est ton meilleur ami pour commencer à développer des plugins :-) [extension by mistic100] Skeleton


Dernier billet du blog Piwigo.com (20 juin 2019) Modus, nouveau thème par défaut sur Piwigo.com

Hors ligne

#10 2016-02-11 16:07:54

Sblawx
Membre
2016-02-08
6

Re: Panier + Formulaire d'approbation

J'ai réussi !!!!

Plugin pour créer automatiquement une collection appelée Panier à l'enregistrement d'un utilisateur :

Voici mon code :
premier fichier : main.inc.php

Code:

<?php
/*
Plugin Name: Panier
Version: 1.0
Description: Call userCollections to make a collection named 'Caddie' at user register
Plugin URI: 
Author: Sblawx
Author URI: http://www.ESRF.fr
*/

if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');

global $prefixeTable;

if (script_basename() == 'register') {
  include_once(dirname(__FILE__).'/initpanier.php');
}

?>

Deuxieme fichier : initpanier.php

Code:

<?php
defined('USER_COLLEC_PATH') or die('Hacking attempt!');

global $page, $template, $conf, $user;

add_event_handler('register_user', 'autopanier');

function autopanier($user) {
  $collection = new UserCollection('new', 'Panier', '', $user['id']);
}

?>

Vous devriez inclure ça à la doc :

http://image.noelshack.com/minis/2016/06/1455203128-capture.png

Hors ligne

#11 2016-02-11 16:39:21

Sblawx
Membre
2016-02-08
6

Re: Panier + Formulaire d'approbation

@plg

Merci pour ta réponse, désolé j'étais en train d'écrire mon post au moment ou tu as répondu, je n'ai pas vu ta réponse.

Le "register_event_handler" je l'ai trouvé dans la documentation en anglais qui est différente de celle en francais.

Mon problème c'etait de connaitre les variables et les fonctions à appeler pour faire marcher mon plugin correctement.
Je suis aller fouiller sur le GitHub de piwigo pour trouver toutes mes réponses.
Les variables, triggers et fonctions importantes sont toutes écrites dedans et c'est tout de suite plus facile quand on à ca :)

Hors ligne

#12 2016-02-12 23:50:02

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
14682

Re: Panier + Formulaire d'approbation

Bonjour,

Tu peux aussi regarder [extension by Piwigo Team] Event tracer pour cela


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

Pied de page des forums

Propulsé par FluxBB

github twitter facebook newsletter Faire un don Piwigo.org © 2002-2019 · Contact