Giter Site home page Giter Site logo

4sucres's People

Contributors

donnietheraccoon avatar edoudev avatar imgbotapp avatar mgkprod avatar o1oooo1o avatar spartanz51 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

4sucres's Issues

Nouvelles catégories "custom"

Étape 1. "Sécuriser" les catégories avec des filtres d'accès.

  • Filtre "connecté"
  • Filtre "majorité"
  • Filtre "roles"

Étape 2. Et créer les catégories suivantes :

Catégorie #nsfw

  • Interdite aux membres non connectés
  • Interdite au mineurs (User::class()->dob)

Catégorie #supporter

  • Interdite aux membres non connectés (évidemment)
  • Réservée au rôle "supporter" (et modération, évidemment)

Des choses à rajouter @hawezo ?

Types de topics

L'idée est de pouvoir, à la création d'un topic, sélectionner le type de ce dernier. Pour l'instant, le seul type existant est un topic normal, comprenant un message.
La suggestion suivante est d'ajouter deux autres types : un topic dit "live", et un topic sondage.

Topic live

Le principe serait de pouvoir informer le plus facilement possible l'avancée d'un évènement.
Le topic agira comme les topics normaux, à l'acception de la possibilité de mettre en valeur des réponses concernant des actualités.

La mise en valeur pourrait être une copie du message sur le premier post du topic (comme une timeline) et/ou une accentuation de la couleur et/ou de la taille du message concerné (à la suite).
L'idée d'une timeline minimaliste sur le côté du topic est également à prendre en compte.

Live

Topic sondage

Un topic sondage serait, à la manière de Twitter et de JVC, un topic dont l'auteur choisi la question et un nombre (indéfini ?) de réponses possibles.
L'auteur pourrait avoir la possibilité de laisser aux utilisateurs de choisir une seule ou plusieurs réponses.

Sondage

Enrichir le système de suppression et de modération

Actuellement, lorsque l'on édite un message, le corps de ce dernier est totalement remplacé.

https://github.com/4sucres/board/blob/99ace55c6d7df35b3c6cf19be0b743c34769646e/app/Http/Controllers/DiscussionPostController.php#L61-L62

Le but serait de créer une table qui contiendrait un historique de modification, et dont les informations contenues seraient :

  • L'utilisateur qui a effectué le changement,
  • L'heure du changement,
  • Le contenu du message avant le changement,
  • Le contenu du message après le changement.

Ces informations pourraient être utiles dans un cadre de modération.

Affichage des dates

Je trouverais ça sympa que l'affichage des dates soit un peu plus intelligent que d'afficher le classique le d/m/Y a H:i:s, par exemple, on pourrait afficher Aujourd'hui/Hier à la place de la date :

Avant :
image

Après :
image

Il serait aussi possible facilement d'afficher aveec le diffForHumans() de Carbon un texte de ce genre :
image

En gros ce que je propose :

  • Si c'est posté le jour même : aujourd'hui il y a (i minutes|H heures)
  • Si c'est posté la veille : hier à H:m:s
  • Si c'est antérieur : le d/m/Y à H:i:s

Votre avis avant réalisation ?

Gestion de la pagination

Sur téléphone, la pagination sort du conteneur et déforme la mise en page quand il y a trop d'options.
Je vois deux solutions : faire en sorte que les éléments de pagination retournent à la ligne (flexbox ?), ou afficher moins de pages possibles.

Je préfère la deuxième solution dans la mesure où, quand il y a 12 pages, je serais peut-être intéressé d'accéder aux pages 1, 2, 3, 10, 11, 12, mais beaucoup moins intéressé d'accéder aux pages 4, 5, 6, 7 et 8.

Nouvelles catégories

Rien à ajouter, hormis peut-être l'ajout d'une catégorie #hobbies pour parler des passions des uns et des autres (développement, anime).

Originally posted by @hawezo in #32 (comment)

Même avec le système de "flair", certain de vouloir mélanger #hobbies et #développement ?
Il va falloir vraiment bien l'intégrer, j'ai encore du mal à me l'imaginer, mais je me voispas chercher mes petits devs parmi les kj D:

Stockage des discussions lues/non lues

Il va être compliqué à terme pour la db de soutenir la table has_read_discussion_users

J'ai deux solutions en tête :

  • Déplacer la donnée dans le localstorage du navigateur (enregistrer le couple discussion_id et last_reply_at lors de la consultation)
  • Expirer les données au bout de d'une durée définie. Par exemple, on peut considérer qu'une discussion dont la dernière réponse date de plus de deux semaines est considérée comme "lue". On peut donc purger les données de la table has_read_discussion_users quotidiennement.

Dégager les quotes "#p:{id}" et remplacer

Par des parsers automatiques !

  • Ajouter l'intégration des permalinks vers les posts (_show_as_quote).
  • Ajouter l'intégration des liens vers les topics (affichage du titre, de l'auteur, du nombre de réponses et de la date de la dernière réponse)

Ne pas oublier :

  • De modifier le comportement du bouton pour quote

Et soit :

  • 👎 Garder l'ancien parser #p:___ (ça occupe inutilement un hashtag, qui peut être utilisé pour d'autres choses plus tard)
  • 👍 Faire une petite oneshot command pour convertir le contenu des posts (sans toucher aux timestamps)

Un exemple du thumbs up :

https://github.com/4sucres/board/blob/e3f6c80ee1dbc2dbbbbb7c4832a9ad7d43750ce6/routes/console.php#L23-L49

Affichage du rôle

Prévoir l'affichage du rôle de la personne, sur son profil et à coté de son pseudo (pour pouvoir identifier facilement un gradé)

Pour faire les choses bien, je pense qu'il faut bouger dans le modèle un getPresentedNameAttribute qui renvoie directement le bon markup qui peut être utilisé partout.

Ne pas envoyer de double notification

Par exemple, en cas de mention + nouveau message dans une discussion, on reçoit de notifications pour le même contexte, mais qui ne portent pas la même information.

Je suis d'avis de laisser le comportement actuel, parce que c'est chiant à modifier, les deux notifications ne sont pas envoyées du tout au même endroit.

Ancienneté dans le profil

image

L'affichage de l'ancienneté dans le profil n'est pas bon pour les tous membres inscrits dans les dernières 24h. C'est une erreur d'affichage.

En effet, le calcul actuel est : Si le membre est inscrit depuis moins d'une journée, on affiche "aujourd'hui"
Or, il faudrait : Si le membre est inscrit depuis le début de la journée, alors on affiche aujourd'hui
(il faudra faire attention aussi à "Membre depuis 0 jours" qui pourra apparaître)

Pour l'instant la modification s'effectue ici en attendant un refacto pour tout bouger dans le controller :

https://github.com/4sucres/board/blob/6b911edf1f7a1f4f2a296c879b075ac8e2555a6a/resources/views/user/show.blade.php#L33

(l'image c'est uniquement pour le contexte, le "bug" n'est pas présent dessus)

SimpleMDE sur mobile c'est pas fou

L'autocomplétion lors de l'identification de quelqu'un sur un post ne fonctionne pas sous Android.
Version Android : Android 8.0
Appareil : Honor 8
Version application chrome : 74.0.3729.136
Voir la capture d'écran jointe.
Screenshot_20190521-092105

Sélecteur de thèmes

Parent : #12

Créer une interface pour laisser à l'utilisateur la possibilité de sélectionner un thème.
Pour l'instant, un thème, c'est uniquement un fichier css.

Interface d'administration/modération

Choix (les deux) :

  • Interface "web-terminal" pour la visualisation et toutes les actions
  • Interface frontend pour la visualisation des données

L'idée est que le web-terminal soit disponible sur toutes les pages, dans une modal ou un truc un peu plus élégant (genre c'est sur le coté, et ça peut se slide et arriver sur la page, ou popout pour l'avoir toujours sous la main)

Pistes :
https://github.com/recca0120/laravel-terminal
https://github.com/php-school/cli-menu
https://github.com/thephpleague/climate

Banissement utilisateur (temporaire/définitif)

S'appuyer sur le package https://github.com/cybercog/laravel-ban pour rendre le modèle User bannable dans les règles de l'art.

Prévoir une interface pour pouvoir distribuer des bannissements temporaires ou définitifs, révoquer un banissement.

Pour aller plus loin à l'instar de Discord, proposer la suppression des messages postés par l'utilisateurs sur une certaine période.

Implémentation de Risidex/Amélioration Risibank

Est-ce qu'on implémente la Risidex (made in Onche), ou on améliore notre intégration de Risibank avec une gestions des favoris (sur le navigateur par exemple).

On peut imaginer pouvoir, au survol d'un sticker, l'ajouter directement à nos favoris et le réutiliser lors de la rédaction du prochain post.

Implémenter les paramètres de notification

Laisser à l'utilisateur le choix d'alléger ses notifications (ou d'en rajouter). Pour l'instant la liste est courte :

Je souhaite être notifié..

  • De toutes les nouvelles discussions (la notification est à implémenter)
  • Quand je reçois un message privé
  • Quand je suis cité
  • Quand je suis mentionné

Markup presque prêt :

https://github.com/4sucres/board/blob/e3f6c80ee1dbc2dbbbbb7c4832a9ad7d43750ce6/resources/views/user/settings/notifications.blade.php#L23-L51

Nouveaux achievements "automatiques"

image
image

La liste se remplit au fur et à mesure, certains sont encore en cours de réalisation chez le graphiste.

Au passage :

  • Ajouter une notification en cas d'ajout d’attribution d'un succès et la lancer aux utilisateurs lors de l'ajout par un modérateur/administrateur
  • Ajouter une notification en cas de changement de "classification" par un modérateur/administrateur (c'est sensé être un événement exceptionnel pour les utilisateurs)

Direction technique à prendre :

  • Tâche programmée qui va vérifier régulièrement l'état du forum et ajouter les succès aux utilisateurs
    OU
  • Verrues un peu partout dans le code, calculées à chaque ajout de post/création de discussion/..., pour attribuer le succès à l'utilisateur en temps réel ?

@hawezo ton avis ?

Signalement de posts ou comptes utilisateurs

Permettre à un utilisateur de nous remonter un post ou un compte.
Affichage dans l'interface d'administration.

On peut prévoir le mécanisme sans gérer l'affichage dans un premier temps (#50)

Mise en cache et taille des stickers

Avec la mise en cache des posts il est, à première vue, plus possible de définir la taille des stickers selon l'utilisateur qui consulte le post (sachant que le cache est mutualisé).

J'ai temporairement désactivé le fait de rendre les stickers en "inline" : bd2e8aa

Cliquer sur le .row ramène sur le post

Scope: Liste des topics

Corriger le hook de clic sur toute la ligne pour rétablir le bon comportement du Ctrl+clic (nouvel onglet)

  • Ajouter le alt+clic pour aller directement au dernier message
  • Paramètre utilisateur pour inverser le comportement ?

Remplacer Intervention/image par Imagine

Habituellement j'utilise la librairie Imagine, qui a un bundle Symfony. Une petite recherche a donné ce wrapper pour Laravel : https://github.com/orchestral/imagine, ça conviendrait ?

Yep, bonne idée, c'est compatible avec les gifs animés, contrairement à Intervention/image qui est utilisé actuellement. Si on veut faire le truc proprement, il faudrait utiliser Imagine à la place d'Intervention du coup, pour l'existant aussi.

Originally posted by @mgkprod in #35 (comment)

Affichage des notifications

L'idée est de passer l'affichage des notifications dans un dropdown visible sur chaque page, peuplé par VueJS (permet d'ajouter simplement des notifications à la volée lors de la réception dans le socket).
La page actuelle des notifications peut être conservée mais l'affichage doit être revu.

Globalement, coté backend :

  • Envoyer un message dans le pipe en cas de passage d'une notification comme lue
  • Envoyer un message dans le pipe à l'arrivée d'une nouvelle notification, en précisant si elle doit être ajoutée à la liste (ou pas) et notifiée au client (ou pas)

Coté front:

  • Adapter le mécanisme en fonction des données récupérées depuis le backend.

Dark theme/Mode nuit

Parent : #24

Faut bien s'y coller. A moins que quelqu'un ait une meilleure idée, je propose d'utiliser la palette Nord Dark (sachant que la light est globalement respectée pour le Light theme/Mode jour)

https://nordtheme.com/docs

Description du profil et liens sociaux

image

Permettre l'affichage d'une description, remettre en page les succès, et ajouter la possibilité d'ajouter des liens sociaux externes, comme sur Discord :
image

(pourquoi pas mettre les réseaux "classiques", et ajouter aussi les forums alternatifs)

Affichage "En ligne"

Au lieu d'afficher "En ligne" / "Hors ligne", afficher la dernière présence (dans la limite de quelques heures, comme sur Messenger)

imageimageimage

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.