Bonjour,

Aujourd'hui je viens vers vous pour vous présenter une preview de Cake3 Blog Resource.

Introduction
Cake3 Blog Resource, est une ressource pour aider les personnes qui commence/commencerons avec CakePHP 3.0.

Objectifs
La base de ce site étais avant tout pour que moi même je puisse tester Cake3, puis je me suis dit autant faire mon blog personnel avec vue que je n'ais pas encore de blog perso, et enfin je me suis dit que sa pourrais servir aussi aux personnes qui débutent/ débuterons sur Cake3, et donc j'ai décidé de le distribuer au public via Github.

Vous trouverez plus d'informations sur le repo Github ici : https://github.com/Xety/Xeta

Mais surtout, et c'est ce pourquoi je poste ce sujet justement, j'aimerais savoir si ça intéresse des gens cette ressource ?

Car si pas mal de gens sont intéressés, il y a moyen que je pousse ce projet plus loin avec bien plus de fonctionnalités encore.

120 réponses


Merci!!! très bon travail
moi ça m’intéresse!!
J’attends les tutos sur Cake 3 avec impatience car j'avoues ne pas tout intégrer mais c'est toujours intéressant de regarder les codes d'autres développeurs.
merci pour le partage

Xeta
Auteur

Salut,
Merci du retour !
Je suis actuellement sur le panel administration du blog, où l'on pourras gérer les articles, catégories et les membres + système de statistique avec l'intégration de Google Analytics dans le panel (via l'API de Google)
J'ai aussi d'autre fonctionnalités en tête:

  • Système de cache (Avec des fichiers, sinon avec un moteur de cache comme Redis sa serais trop compliqué à mettre en place pour les débutants)
  • Système d'ACL, mais à voir car le plugin qui gère les ACL sur Cake3 est encore en pré-alpha pour le moment
  • L'internationalisation du site (et voir aussi pour les articles)
  • Flux RSS du blog
  • L'auto-complétion lors de la recherche d'un article (Même si c'est pas trop en rapport avec Cake3, car c'est du JS et c'est même intégré dans Bootstrap)

Et comme tu l'a dit et c'est d'ailleurs le but de cette source, c'est de les aider par le biais d'une source complète et assez propre où tu vient prendre la fonctionnalité que tu as besoin, et l'avantage c'est que si tu veut tester certaines fonctions/partie du code pour voir comment elle fonctionne, tu peut l'installer sur ton localhost très rapidement en une commande dans la console.

Très beau site d'exemple. Cela donne vraiment des idées

Xeta
Auteur

Merci. ^^

Très beau site en effet, et surtout une excellente ressource pour débuter sur cake 3.0
Bravo et Merci !

Super projet ! Je viens de l'installé sur mon Wamp pour le test et franchement rien à dire, en plus d'être beau, ça donne clairement envie d'aller plus loin avec la v3 de Cake quand il y a des exemples de site comme sa ! Si j'ai bien compris tu boss sur le back-office ?

Xeta
Auteur

Hello,
Merci des retours !
@CREAZ Actuellement je suis sur le Panel Admin du site, tu peux d'ailleurs voir l'avancement sur cette PR : https://github.com/Xety/Xeta/pull/1

Bonjour Xeta,

Petite erreurs sur le io :

Cordialement

Xeta
Auteur

Hello,
Oui normal je l'ais mis à jour, et j'ai justement ouvert une issue sur le Github de Cake : https://github.com/cakephp/cakephp/issues/4821 pour cette erreur, j'attend leur réponse avant de fixer le bug. ^^ J'espère qu'il vont pas mettre 3 plombes à répondre... :p

Merci du retour en tout cas !

Et MAJ aussi:
Le Panel d'Administration à été ajouté :

  • Dashboard

  • Management des Articles

  • Management des Catégories

AU TOP ! :)

Le panel d'administration, c'est cool, ça permets de bien comprendre comment développé sous Cake 3, et puis surtout je vois que ton code est propre .

Dis-moi, rien à voir avec Cake mais plutôt le graphisme mais ton SVG sur la home tu le génère avec un outils en particulier ou ta fais sa sur flash et ta intégré ? ^^

  • encore une question, as-tu prévu une messagerie privé ou un chat en ligne (style facebook), car je vois que tu touche bien en JS ;) ?
Xeta
Auteur

Alors les SVG sur la page d'accueil viennent de cette source: https://github.com/noahblon/animated-climacons Démo : http://codepen.io/noahblon/pen/lxukH

Non pas de chat prévu, car le mieux pour faire un chat, c'est le websocket, et particulièrement NodeJS avec socket.io (ou autre librairie qui gère les sockets pour NodeJS) et je maîtrise pas assez bien cette techo pour en faire un exemple.
Par contre, une messsagerie privée, oui sa peut se faire, je note. ^^

Sinon, non je gère pas du tout le JS, c'est d'ailleurs l'un de mes principaux défaut. Je doit m'y mettre, mais faut que je trouve du temps... ^^

Merci de ta réponse :)

Pour le chat, effectivement NodeJS c'est l'idéal, après niveau développement c'est un vrai défis pour le coup, mais sur le net il y a pas assez de tuto encore avec une liaison Cake.
Après tu peux faire sa en AJAX, genre faire un truc comme Cometchat, http://www.cometchat.com/cakephp-chat ^^

Sinon, une petite messagerie interne oui ça peux être sympa :)

Ah ok pour le JS, autant pour moi, parce que je voyais le beau dashboard et deux, trois trucs =D

Sur le dashboard de l'admin, genre la partie "Visitors", tu as lié ton Google Analytic pour sortir le nombre , et le pics par jours ? :p

Autre suggestion : dans la partie Admin, pour Users, savoir si le membre est online .. ou pas ^^

Xeta
Auteur

Ba je voie pas trop l'intérêt d'intégrer un chat sur ce site en particulier, surtout que Cometchat vont problablement faire une migration sur Cake3 quand il sera sortie en stable.
Pour la dashboard, et en particulier les graphs, c'est la librairie FlotCharts

Sinon oui, tout ce qui est sur la page Dashboard vient de Google Analytics, sauf le graph Members, et les infos sur le nombre de Commentaires, Articles, Membres et Categories.

D'ailleurs, je dois faire une page Wiki pour expliquer comment setup son compte Google Analytics pour l'utiliser avec la Dashboard, car c'est un sacré bordel à faire quand on connais pas. ^^

Xeta
Auteur

Le tutoriel pour la configuration de Google Analytics est fait : https://github.com/Xety/Xeta/wiki

Merci pour le tuto ;)
Hâte de voir d'avantage de fonction :)

Salut Xeta, beau boulot vivement la suite ;)

Xeta
Auteur

Merci. ^^ Si vous avez des idées, hésitez pas.

Xeta
Auteur

Le management des commentaires a été ajouté. Ref https://github.com/Xety/Xeta/pull/7

  • Edition/Suppression des commentaires par leur propriétaires respectif et par les administrateurs

Je continue à suivre :) !!!

J'ai regardé ton code, et c'est bien propre, ça fais plaisir !

Savoir si l'utilisateur est en ligne sur son profil ?
Dans le back-office, le nombre d'utilisateurs en ligne (avec leur pseudo ?) ^^

Xeta
Auteur

Merci ^^
Je suis actuellement sur les tests unitaires, donc ça va prendre un peut de temps.
Sinon ouet pourquoi pas pour la fonctionnalité de l'utilisateur en ligne, c'est pas super compliqué a faire.

Xeta
Auteur

Les tests unitaires sont finis.
J'ai migrer les Behaviors Upload et Sluggable en Plugin (Plus facile a maintenir) :
https://github.com/Xety/Cake3-Sluggable
https://github.com/Xety/Cake3-Upload

Un système de connexion automatique avec les cookies a été fait aussi :
https://github.com/Xety/Cake3-CookieAuth

Un système de badge a été fait :
http://i.imgur.com/A2UtyKS.png
http://i.imgur.com/oq2nAYH.png
http://i.imgur.com/yNik1Xa.png

Je continue à suivre ton projet et super les mises à jour,
Dis-moi pourrais-tu juste mettre en place (dans l'admin ou sur le front), la liste des membres connectés, j'avoue que je ne sais pas du tout comment procédé pour sa :/

Merci à toi !

Bonjour,

Ton projet a l'air vraiment très intéressant surtout pour analyser comment tu as fait pour certains modules.
Je me suis mis également à CakePHP3 et je retrouve vite mes repères sur cette nouvelle version mais j'ai encore des zones qui sont pour moi un peu flous.

En vue des screenshots, le back est sympa :)

Je vais suivre l'évolution de ton projet ;)

Bonjour Xeta,

Très bon projet. J'ai eu beaucoup de mal à le mettre en place car je ne connaissais pas du tout composer/brew et j'en passe pour tout installer. Mais une fois en place, ça marche très très bien. Je regarde ton code et c'est une bonne chose que d'avoir cet exemple pour apprendre les nouveautés de cake3.

Quelles sont tes prochaines améliorations ? Fonctionnalitées ?

Xeta
Auteur

Merci des retours !
Je n'est pas pu avancer pendant 2 semaines car j'ai déménagé, et le temps d'avoir internet etc, c’était un peut le bordel. ^^

Je suis actuellement sur la partie Premium du site. Vous pouvez suivre l’évolution ici :
https://github.com/Xety/Xeta/pull/39

La partie Premium est assez poussée dans le sens ou l'on pourras personnaliser les offres, mettre des codes de réductions pour chaque offre avec un maximum d'utilisation pour chaque code. Il me reste a faire toute l'administration de cette zone premium.

Quelques screens :

Et avec cette partie Premium, viendra aussi la possibilité d'upload un fichier pour chaque post dans le blog, et celui-ci pourra être download uniquement par les membres premium :

Ça à l'air vraiment pas mal ton affaire ! Je suis de près ton code, très bien fait et un design en prime magnifique. Chapeau. :)

Xeta
Auteur

La partie Premium est finis ainsi que les attachements pour les articles du blog. Voici la partie administration :

Toujours du tres bon travail Xeta ;)

Continue comme ça xD

J'ai parcouru une bonne partie de ton code, mais il y a des zones d'ombre pour moi. Peux tu m'expliquer stp ce qui va suivre ?

Dans la fonction index() de BlogController.php, je ne comprends pas cette partie :

->contain([
    'BlogCategories',
    'Users' => function ($q) {
        return $q->find('short');
    }
])

Pourquoi ne pas avoir mis simplement :

->contain([
    'BlogCategories',
    'Users'
    }
])

Ou est-ce un appelle à la function findShort dans UsersTable.php :

public function findShort(Query $query) {
    return $query->select([
      'first_name',
      'last_name',
      'username',
      'slug'
    ]);
}

J'ai un peu de mal à cerner l'utilité des Entity. Table reprend leconcept des models sous cakephp 2.*** avec la validations des données, la jointure de table. Entity permet quoi concrètement ? Récupérer des données dans la table et les modifier avant affichage ou utilisation ?

Ce qui m'amène à HTMLPurifier dans BlogArticle.php (Entity). Au lieu d'utiliser htmlspecialchar par exemple directement dans la vue (index.ctp), on pourrait le faire dans une Entity, c'est bien ça ? Le but est de dissocier la manipulation des données de l'affichage ? Toi, au lieu d'utiliser htmlspecialchar, tu as préféré HtmlPurifier. Plus complet ? (je ne connais pas du tout ses avantages/inconvénients, mais je cherche en ce moment).

Voilà pour le moment. Merci d'avance pour ta réponse.

Bonjour.
Ou est-ce un appelle à la function findShort dans UsersTable.php
C'est exactement ça, c'est ce qui est appelé Méthodes Finders Personnalisés dans la doc.
Si tu regardes dans le fichier, il a créé 3 finders, selon les données dont il a besoin sur l'utilisateur.

Merci Lartak, je n'étais pas sur mais c'est bien ça. Une autre question, pour optimiser un peu la requête dans BlogController.php en passant des conditions à contain, on pourrait faire ceci ?

->contain([
  'BlogCategories' => function ($q) {
    return $q->select(['id', 'title']);
  },
  'Users' => function ($q) {
    return $q->find('short');
  }
])

On demande ainsi de récupérer que l'id et le titre au lieu de toutes les données de la table qui ne sont pas forcément utile à l'affichage.

Est-il possible aussi de répondre à mes interrogations par rapport à Entity et HTMLPurifier ? Merci d'avance.

@JeremyB: Presque oui, mais tu ne peux pas juste récupérer l'id et le title, étant donné qu'il faut aussi le slug pour le lien dirigeant à la vue de la catégorie par exemple.

Xeta
Auteur

Hello et happy new year ^^

Alors, pour le ->find('short'), Lartak ta très bien répondus, c'est exactement ça, se qui évite a chaque fois de faire un select() avec les fields que tu as besoin.

Pour le HTMLPurifier, c'est une librairie qui est couplé avec un CKEditor par exemple (se qui est le cas dans le projet) et qui permet de faire afficher du HTML personnalisé et sans risque de failles XSS. Plus d'info sur leur site : http://htmlpurifier.org/

Sinon oui pour optimiser les requêtes on peut effectivement faire un select et prendre uniquement se qu'on a besoin, mais généralement j'ai besoin d'un peu prêt tout, pour ça que je me suis pas cassé la tête à faire des select à chaque fois, mais uniquement sur la table Users vue que celle-ci est assez grosse et est amené à grossir d'avantage encore.

Bonne année également !

Et merci pour vos réponses. Une dernière chose pour bien comprendre, j'avais mis ça dans mon message plus haut :

J'ai un peu de mal à cerner l'utilité des Entity. Table reprend le concept des models sous cakephp 2.*** avec la validations des données, la jointure de table. Entity permet quoi concrètement ? Récupérer des données dans la table et les modifier avant affichage ou utilisation ? (comme tu as fait avec HTMLPurifier lorsque tu récupères le contenu ?)

Merci d'avance.

Bonsoir.
Pour faire simple, Entity permet d'intérargir sur un enregistrement, comme par exemple pour formatter un champ à sa sortie pour la vue, Grafikart l'explique bien dans le tutoriel qu'il a fait .
Dans son exemple, il montre l'utilisation de Markdown sur le champ content.
Concernant l'application de Xeta, tu as par exemple le formattage de la date du champ created (si mes souvenirs sont bons).

tres beau projet, je vais surment contribuer :)

Xeta
Auteur

Merci. ^^

Pour vous tenir un peut au courant, je suis actuellement sur un système d'ACL. J'utilise le plugin officiel de Cake3 https://github.com/cakephp/acl mais j'ai limité les permissions en group-only, pour éviter que je me prenne la tête à coder l'administration des permissions. Si j'ai choisis de basculer sur un système d'ACL plutôt que de rester sur mon système d'autorisation avec les controllers, c'est que je prévois le développement d'un forum après l'implémentation des ACL, donc je pourrais mieux gérer les permissions et surtout plus proprement pour le forum.

Superbe bonne nouvelle, ça permettra de voir comment marche ACL, non vu sur grafikart via la formation. Tout comme pour un forum en cakephp. Bon courage pour le développement. Moi, je continue de regarder et tester tout le code. As tu testé avec le nouveau login.ctp que j'ai posté sur github ?

Xeta
Auteur

Merci. ^^
Oui, c'est plus propre maintenant les erreurs. ^^

Bonjour,

Le travail est très interessant mais une fois l'installation faites via composer, j'ai cette erreur qui surviens :

Unable to load config/app.php. Create it by copying config/app.default.php to config/app.php.

Je ne comprends pas car le fichier y figure bien.

Le post install fait cet erreur et n'install pas la dernière version disponible sur github.

Dans le dossier configs ouvrez le fichier bootstrap.php et trouver les Configure::load() puis remplacer par ceci :

try {
    Configure::config('default', new PhpConfig());
    Configure::load('app', 'default', false);
    Configure::load('Xeta', 'default');
} catch (\Exception $e) {
    die('Unable to load config/app.php. Create it by copying config/app.default.php to config/app.php.');
}

Merci Zkiller,

En effet j'ai trouvé la solution quelques minutes avant de voir votre message en comparant avec une autre installations de Cake3.

Merci

Xeta
Auteur

Oui c'est dù à des changements récent de Cake3, je doit finir mes ACL, et après je publirais une nouvelle release, comme ça il n'y aura plus ce problème.
Sinon, tu peut installer directement depuis la branche master :

composer create-project --dev xety/xeta=dev-master <application-name>

Et la tu auras les derniers commits. (Donc tout les fix récents)

Merci, je vais faire ça, car il y avais d'autres erreurs dans la partie blog, impatient de voir comment vous allez faire évoluer le projet.

Beau boulot

Xeta
Auteur

Ça, sa ne vient pas du projet, mais de Composer qui (visiblement) n'a pas les droits nécessaires pour supprimer un fichier. Essaye en lançant le CMD en Administrateur.

"Could not delete"
En général ça veut soit dire que le fichier/dossier n'existe pas, ou alors un problème de droit !

Xeta
Auteur

Hello,

La version 1.4.0 a été release. Pour les détails, c'est par ici :
https://github.com/Xety/Xeta/releases/tag/1.4.0

Du très bon travail! Justement j'avais besoin d'exemple pour cake3 car il y a pas mal de changement que j'avais du mal à mettre en pratique et grâce à votre projet je comprend bien mieux certains aspects. Le code est très propre. Merci pour ce partage.

Quelles sont les prochaines évolutions prévues?

Xeta
Auteur

Merci. ^^
La prochaine feature sera grosse, très grosse, puisse que ça sera un forum. J'ai commencé hier, pour suivre l'évolution c'est par ici :
https://github.com/Xety/Xeta/pull/65

Celle-ci va prendre beaucoup de temp, car un forum, c'est quand même beaucoup de travail. ^^

Au passage j'ai release la version 1.4.1 qui fix quelques bugs mineur de la version 1.4.0 et l'internationalisation des catégories :
https://github.com/Xety/Xeta/releases/tag/1.4.1

Xeta
Auteur

Voici un aperçu du forum. Il y a encore rien de définitif sur le design etc car je fait pas mal de test, mais j'aime bien celui-ci.

J'avais déjà mis en place un forum sur Cake2 et je suis impatient de voir comment vous avez solutionné certains problèmes que j'avais. En ce qui concerne le design, je le trouve très sobre, donc très bien, il correspond "selon moi" aux normes visuelles d'un forum, de toute façon tout sera modifiable par le dev final si il le souhaite. Le fait que ça soit conventionnel, nous montre qu'il n'y a pas de difference d'un forum classic et rassure selon moi.

Peut être qu'une sidebar contenant les derniers posts, les utilisateurs connectés, ... serais un plus.

Xeta
Auteur

Pour la sidebar, c'est prévus, sur la droite. ^^

Sinon pour les catégories, j'utilise le TreeBehavior, et pour la structure des tables du forum, j'ai repris une grosse partie de XenForo. Donc il y aura pas mal de feature de prévus : (Qui viendrons peut être plus tard, mais qui serons prévus)

  • Marquage de Thread en "Important" (Sticky)
  • Édition des Posts avec affichage de l'user qui l'a édit, la date et aussi le nombre total d'édition.
  • Comptage de vue sur les Posts.
  • Système de Likes/Unlikes sur les Posts.
  • "Probablement" un système de vote.
  • Possibilité de créer des catégories dit "lien" : Au lieu d'afficher une catégorie avec des threads, c'est tout simplement un lien re-directionnel.
  • "Probablement" la possibilité de créer des catégories protégées par mot de passe.
  • "Probablement" la possibilité de créer un Posts en plusieurs langues, et le post s’affichera dans la langue que l'utilisateur à choisi.(Même système que dans les articles dans le Blog actuellement.) (Fort utilise pour les tutoriels.)
  • Et bien sur, toute l'administration/modération qui va avec.

Je vais aussi faire, en page d'accueil du forum, un flux d'actualité avec les derniers messages du forum, blog.

Et je prévois aussi le développement d'une chatbox. Elle sera en AJAX, car les WebSockets c'est assez chiant à mettre en place, surtout que j'utilise CloudFlare (Je sais que CF le gère maintenant, mais j'ai pas encore essayé.), et pour NodeJS, trop complexe aussi, surtout que j'ai jamais déployé une application en production avec NodeJS, donc je préfère faire avec ce que je connais le mieux. ^^

Donc, beaucoup beaucoup de boulot. :p Mais je pense que le résultat en vaudra la chandelle.

Bonne chance xeta je suis ton projet de pret et le trouve génial ;)

Oui justement je prenais en exemple Xenforo également, je mettais arrété sur certaines fonctions que vous tenterez de mettre en place. En ce qui concerne la chatbox, j'avais mis en place un systeme sous nodeJs, mais le problème avec votre projet limitera les utilisateur finaux quand à l'hébergement du projet, je pense qu'il faut rester sur les techno lambda "PHP/JS 'client' " et en plus ça montrera comment faire de l'AJAX sous cake. Par contre je pense qu'une boite de messagerie privée serait un gros plus, avec la possibilité d'ajouter plusieurs utilisateurs.

Xeta
Auteur

Pour la messagerie privée c'est prévus aussi. Exactement la même que sur un XenForo, car je l'ais déjà fait sur un autre projet avec Cake2, donc sa va pas être compliqué à faire. Mais ça viendra par la suite, après le forum.

Xeta
Auteur

Je viens vous apporter quelque screens :

Une belle avancée du projet, je suis impréssionné par la rapidité de developpement. Keep pushing !

Xeta
Auteur

Merci. ^^
Vous avez des idées de widgets pour la sidebar ? Actuellement j'ai ça :

Je pense au "membres connectés / dernières réponses / sujets les plus suivis" par exemple, après ce ne serais que du superflu.

Xeta
Auteur

Les membres connectés c'est déjà fait, regarde les screens plus haut. ^^ Ouep pour les dernières réponses. Par contre pour les sujets les plus suivis, pas pour le moment, car j'ai pas fait de système de suivis de sujet encore.

J'ai commencé à faire des commit, l'évolution se fait comme d'hab, sur le GitHub :
https://github.com/Xety/Xeta/pull/65

Sinon, j'utilise maintenant les ACL en Cache (Avec l’adaptateur CachedDbACL), car sur la page des threads j'avais 207 requêtes SQL :D, et avec le cache sur les ACL, j'en est plus que 27. :-°

J'utilise aussi les Sessions en BDD maintenant, se qui me permet de faire les "membres en ligne" et "X visiteurs sur cette page".

D'autre screens :


Oui j'avais vu pour les membres connectés, je faisais juste la liste de ce qui pourrais aller dans la sidebar.

Moi aussi j'avais pas mal de requête et justement c'est ce qui m'éffrayais et qui me faisais penser que ça ne serais pas maintenable. Finalement c'est que je ne connaissais pas tout :)

Par exemple je ne connais pas du tout le cache pour les ACL mais ça m'as l'air super intéressant vu le nombre de requête qu'elle génère à chaque action ou tu pourrais avoir une liste de threads par exemple.

Je jetterais un oeil la semaine prochaine sur l'avancée, je proposerais bien mon aide, mais je ne pense pas avoir assez de connaissance ou même d'aisance avec cake3. Je ne peut que suivre le projet et t'encourager.

Xeta
Auteur

Ba le cache avec les ACL fonctionne de 2 manières, suivant si tu est en "Group-Only" ou pas. Vue que moi je suis en group only, du coup sa me génère pas trop de fichier :

En gros c'est ça par X Groups. Alors que pour les users, c'est pareil mais par X users, donc si tu as 50k users, je te laisse imaginer le nombre de fichiers... lol

C'est vraie que faut faire extrêmement attention au requêtes quand tu fait un genre de forum, car en localhost sa va toujours fonctionner (vue que tu es seul dessus), mais en production avec 300-1000 membres connectés en même temps, là chaque requêtes est importante et doit être optimisée au maximum.
De toute façon je prévois des tests de charges dessus, quand il sera terminé, car après je dois refaire un autre site avec comme base, Xeta, et ce site à plus de 50k membres. ^

J'ai voulu jeter un oeil aujourd'hui, et j'ai donc installé la branch dev-forum, mais malheureusement il manque le nouveau schema sql :(

Je suis dans la même situation, il manque la bdd du forum pour tester la branche. ;)

Xeta
Auteur

Oui, j'ai pas encore finis. ^^ Il reste encore 2/3 problèmes à régler, et surtout, tout les tests unitaires à faire. :(

J'ai vraiment du mal à comprendre comment ça marche les tests unitaires.. j'ai beau lire des tutoriels, j'ai du mal. :/ Bon courage sinon. ;)

Quels sont les problèmes ?

Des nouvelles sur l'avancé de Xeta ? :)

Xeta
Auteur

@Jean-christophe Pires, Le seul gros problème que j’ai pas arrivé à résoudre encore, c'est d'obtenir le dernier message pour la colonne Last Post sur la page d'index du forum. Car vue que j'utilise le TreeBehavior, du coup je peut avoir un nombre indéfinie de sous-catégorie.

@JemeryB, Ouep, je suis sur le chat :

Je suis également entrain de dev la même base, et je suis sincèrement agréablement surpris par Cake3! En ce qui concerne le LastPost, j'utilise également le TreeBehavior, mais je stock pour chaque section "categorie/forum/topic" l'id du dernier message "avec le forum associé" selon le type pour un topic je stock juste le dernier id du message, ainsi que l'id de l'utilisateur et la date en gros.

J'ai également intégré un système de Ratings que l'utilisateur final peut personaliser " J'aime /J'aime pas / t'es un champion/..." et un système de notification qu'il stocke en cookie mais il me semblerais plus judicieux de les stocker en base, pour la quantité et la multitude de devices qui sont souvent utilisés par les users. Il me reste à faire la partie Quote, chatbox, Users en ligne, dans un premier temps.

Salut Xeta,

Je t'ai envoyé un message sur ta page contact de xeta.io, j'aimerais te montrer où j'en suis par rapport à mon projet de forum et les solutions que j'ai mis en place concernant les trackers pour les lus/non lus par exemple.

Là je viens de mettre en place le système de tracking pour savoir que fais l'utilisateur connecté. Je dois le paufiner car pour le moment il ne fais que tracker les lectures soit de forum ou topic, il faut que je fasse le tracking sur les autres pages potentielles "page de contact, ou controller de championnat sur une communauté gaming par exemple complètement externe au forum 'forum/topic/post/user' " , et le tracking sur le moment où il créé un topic, où il consulte un profil etc...

La base est là il reste plus qu'à ajouter quelques lignes.

Xeta
Auteur

Bonjour,

Voila, la version 2.0.0 avec le forum est (enfin ?) sortie (en version bêta) ! https://github.com/Xety/Xeta/releases/tag/v2.0.0

Cette version est également en prod sur le site de démonstration : https://xeta.io
Vous pouvez bien sur créer des topics/poster des réponses pour faire des tests sans soucis dessus.
Si vous remarquez une faille, bug etc, merci d'ouvrir une issue sur GitHub : https://github.com/Xety/Xeta/issues (Le debug du site est à true pour le moment, ce qui permettras de mieux tracker les issues.)

Une version 2.0.1 sortiras prochainement et fixeras ces problèmes : https://github.com/Xety/Xeta/milestones/2.0.1

Si vous avez des nouvelles features, ouvrez aussi une issue sur GitHub avec un maximum de détail sur votre feature.

Niquel Xeta, merci, je vais jeter un oeil de ce pas!

Edit: Afin de ne pas polluer ce topic de code, je vais en profiter pour poster sur https://xeta.io les propositions/issues

Ancien message déplacé:

https://xeta.io/forum/threads/ajout-du-titre-du-thread-dans-l-index-du-forum-section-last-post.5?page=1#post-6

Bonjour je débute et j'ai beaucoup de mal à l' installer. Quelqu'un peut m'aider ?

j'ai beaucoup de mal à l' installer. Quelqu'un peut m'aider ?

L'installation est expliquée ici-même : Install.
Elle s'effectue de préférence en ligne de commande, via Composer.

il me dit qu'il manque "vendor/*"

Il faut que tu fasses un composer update

il me dit qu'il manque "vendor/*"

Si tu l'installes comme il est dit sur le readme, tu ne devrais pas avoir ce message d'erreur.

oki merci je vais essayer

L'instalation c'est bien débrouiller mais mtn je ne peux pas me connecter en admin avec les identifiant par défault

je ne peux pas me connecter en admin avec les identifiant par défault

Est-ce que tu as bien importé le fichier xeta.sql dans la base de données après avoir fini l'installation de l'application en ligne de commande ?

oui j'ai importé le fichier xeta.sql

oui j'ai importé le fichier xeta.sql

Seulement après que l'installation se soit totalement terminé ?
Si c'est le cas, c'est que tu te trompe en saisissant l'identifiant et le mot de passe.
Sinon, expliques nous exactement ce qui se passe.

  1. Tu as un retour d'erreur concernant l'identifiant/mot de passe ?
  2. Est-ce qu'il te connecte avec le pseudo Admin mais tu n'as pas accès à l'administration ?

Je rentre l'identifiant : Admin avec
le mot de passe : administrator

Et cela me renvoie : Votre nom d'utilisateur ou mot de passe ne correspondent pas.

Regarde en BDD le mot de passe si il correspond à une chaine crypté ou à Motde passe

ADMINPASSWORD

Regardes dans la base de données et vérifies que dans la table users, dans le premier enregistrement, dans le champ password, si tu as bien une chaine de caractères encodé et non la chaîne suivante : _ADMINPASSWORD_.

non j'ai ADMINPASSWORD

ADMINPASSWORD

C'est que tu n'as pas importé le fichier sql après la finalisation de l'installation, alors.
Supprimes toutes les tables et re importes le fichier sql.

Je viens de le faire et ça n'à rien fais

Non il a raison, le mot de passe n'est pas le bon dans le .sql

https://github.com/Xety/Xeta/blob/master/config/Schema/xeta.sql#L923

Je vais te donner la chaine de caractère et la clé

Tiens la security salt dans app.php:
259085bbe17ad98b020ea50e45c19c0d660886a4b3ae4fb3d39c1d0b3dfca2c5

Et le mot de passe pour le compte admin:
$2y$10$eYVEydpG00QlVeKqnoH/yesY1aIhq8tmwwKsoFWkyKHO65aaxI0bK

Je viens de le faire et ça n'à rien fais

Regardes dans le fichier sql de l'application, s'il y a bien une chaîne de caractères encodés pour les passwords.

Je vais te donner la chaine de caractère et la clé

Ce n'est pas une bonne solution de lui donner une clé et un password en dur.

Non il a raison, le mot de passe n'est pas le bon dans le .sql

C'est normal ça, à la base dans le fichier sql les passwords sont sous forme de variable, mais lors de l'installation, la clé de sécurité est générée aléatoirement et les passwords sont modifié en conséquence dans le fichier sql

Non mais le projet n'est pas en prod, on s'en fous de la Salt et de la clé, je lui propose une soltution qui marche à 100% en 30sec, c'est ce qu'il veut.

Merci bcp @JC_Pires sa fonctionne niquel !

Non mais le projet n'est pas en prod, on s'en fous de la Salt et de la clé, je lui propose une soltution qui marche à 100% en 30sec, c'est ce qu'il veut.

Si tu veux, mais, ce n'est pas comme ça qu'il en comprendra le fonctionnement.

Maintenant qu'il a la solution de rapidité, rien ne t'empêche de lui expliquer.

Xeta
Auteur

Hello,
@Milou544 : Je viens de tester une nouvelle installation, les mots de passes sont bien crypté dans le fichier xeta.sql.
As-tu ceci à la fin de l'installation ?

Note : Tu doit obligatoirement l'installer avec Composer, et non le download comme ça, pour que les fonctions dans l'installer s’exécute correctement (Et en l’occurrence, le hashage des mots de passes): https://github.com/Xety/Xeta/blob/master/src/Console/Installer.php#L198-L238

non je n'avais pas cette ligne.

Juste tu utilise quoi pour les animations au niveau des sliders ?

Si tu veut essayer tu as aussi la 2.0 en beta:
http://www.owlcarousel.owlgraphic.com/

J'ai une erreur après importation de la DB :

Erreur
Requête SQL:

-- -- Table data `badges` -- INSERT INTO `badges` (`id`, `name`, `picture`, `type`, `rule`, `created`) VALUES (1, 'Premier Commentaire', 'badges/comments-1.png', 'comments', 1, '2014-11-10 14:00:00'), (2, '10 Commentaires', 'badges/comments-10.png', 'comments', 10, '2014-11-10 14:00:00'), (3, 'Inscrit depuis 1 an', 'badges/registration-1.png', 'registration', 1, '2014-11-10 16:00:00'), (4, 'Inscrit depuis 2 ans', 'badges/registration-2.png', 'registration', 2, '2014-11-10 16:00:00'), (5, 'Inscrit depuis 3 ans', 'badges/registration-3.png', 'registration', 3, '2014-11-10 16:00:00'), (6, 'Premium', 'badges/premium.png', 'premium', 1, '2014-11-17 13:00:00'), (7, 'Premier Post', 'badges/posts_forum-1.png', 'postsForum', 1, '2015-02-05 08:00:00'), (8, '10 Posts', 'badges/posts_forum-10.png', 'postsForum', 10, '2015-02-05 09:00:00'), (9, '50 Posts', 'badges/posts_forum-50.png', 'postsForum', 50, '2015-02-05 08:00:00'), (10, '100 Posts', 'badges/posts_forum-100.png', 'postsForum', 100, '20[...]

MySQL a répondu: Documentation

#1062 - Duplicate entry '1' for key 'PRIMARY' 

Si quelqu'un peut m'aider c'est cool :)

Il te dit qu'il existe déjà un id 1 pour la table badges.

Et comment je peux faire parce que après la partie web ne fonctionne pas (Si tu as skype je pourrais te montrer)

Ta table badges est vide?

Oui elle est vide

Après un X essaie je change d'erreur :

Erreur
Requête SQL :

--
-- Table data `users`
--

INSERT INTO `users` (`id`, `username`, `password`, `email`, `first_name`, `last_name`, `avatar`, `biography`, `signature`, `facebook`, `twitter`, `group_id`, `slug`, `language`, `blog_articles_comment_count`, `blog_article_count`, `forum_thread_count`, `forum_post_count`, `forum_like_received`, `end_subscription`, `register_ip`, `last_login_ip`, `last_login`, `created`, `modified`) VALUES
(1, 'Admin', '$2y$10$pP6XAsm2MqGxHWKQ74k2w.SCvdaKmsoe9vD7qCamfeGXFHAuGVY6C', 'admin@localhost.io', '', '', '../img/avatar.png', '', '', '', '', 5, 'admin', 'fr_FR', 1, 1, 1, 1, 1, '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0,
'::1', '::1', '2014-09-22 10:04:56', '2014-09-22 10:04:56', '2014-09-22 10:04:56'),
(2, 'Test', '$2y$10$HfPIMdhnxN.QH3iZQM.yHOi3MlpMu8asPJEjUk62uxmCvDRRB.01S', 'test@localhost.io', '', '', '../img/avatar.png', '', '', '', '', 2, 'test', 'fr_FR', 1, 0, 0, 0, 0, '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0,
'::1', '::1', '2014-09-22 10:1[...]
MySQL a répondu: Documentation

#1136 - Column count doesn't match value count at row 1 
  • Erreur sur le site :

Si quelqu'un à skype c'est cool moi c'est famille.lepetit

Bonsoir.
Pour ce qui concerne la table users, il manque des noms de champs dans le code de la requête pour l'insertion des données dans le fichier SQL.
Remplaces la 1ère ligne par :

INSERT INTO `users` (`id`, `username`, `password`, `email`, `first_name`, `last_name`, `avatar`, `biography`, `signature`, `facebook`, `twitter`, `group_id`, `slug`, `language`, `blog_articles_comment_count`, `blog_article_count`, `forum_thread_count`, `forum_post_count`, `forum_like_received`, `end_subscription`, `password_code`, `password_code_expire`, `password_reset_count`, `register_ip`, `last_login_ip`, `last_login`, `created`, `modified`) VALUES

Il ne te restera plus qu'à importer à nouveau le fichier SQL, en pensant bien sûr d'abord à supprimer les tables que tu as dans ta base de données.

Merci Lartak,

Peux t-on désativer le fait d'être premium pour télécharger les sources ? Merci d'avance

Il n'y pas de gestion des permissions des groupes dans l'administration (pour gérer les permissions au niveau des catégories du forum) ?

Sinon, beau boulot, bravo ! :)

C'est en cours pour un gestionnaires d'Acl, j'ai déjà fais un package cakePhp3 il reste plus qu'a faire les test, nettoyer le code, et un bout de la doc:

Lien vers github
Lien vers Packagist

Par contre effectivement chaque catégorie ne peut pas être restreinte, il va faloir voir ça. J'ouvrirai une Issue, et je pense savoir comment remédier au problème.

Oh beau boulot ! Et effectivement, je pense que serait intéressant de dire qu'un groupe ne peut pas accéder à certaines catégories et sous catégories du forum :). Si c'est en cours, c'est une bonne évolution :).

Le projet en est où ? Au niveau des ACL des groupes pour le forums, etc ?

Xeta
Auteur

Après 1 an sans com, me revoilà avec une V3, et je vais pas vous le cacher, j'ai fait du tri !!

  • Forum removed
  • Premium removed
  • Design optimised
  • Code refactoring for the latest CakePHP version

Et il resteras comme ça. Le but c'est d'arriver à le maintenir à jour pour les prochaines versions de Cake, et donc pour minimiser le travail, j'ai été obliger d'en delete des bouts. Je veux arriver à en faire une base, pour une réutilisation sur d'autre projets et le Forum et le Premium étant des features assez ciblé pour un site, c'est donc pour cela que j'ai décidé de les delete. Néanmoins, si vous souhaitez toujours accéder au code de la V2, vous pourrez le trouver ici https://github.com/Xety/Xeta/tree/v2.x mais il ne sera plus mis à jour, à vous de l'adapter.

Pas mal de petite choses en changé, notamment le xeta.sql qui été remplacé par un fichier de migration avec des seeds pour les data. La config de la database/email à été split pour facilité le deploiement. Refactoring des Emails pour utliser la nouvelle classe Cake Mailer. Et toutes les news features actuellement dans les issues seront implémenté https://github.com/Xety/Xeta/issues . Les settings étant la prochaine. (La nouvelle procédure d'installation arrivera dans la journée si tout ce passe bien.)