Jump to content
  • 0

Non affichage d'une rubrique dans une TE


Laulow
 Share

Question

Bonjour,

J'ai un Table de CONTACT (= salariés) (liée à une Table de LOCATION (= des adresses) et de COMPANY où figurent des champs remplis, et une TE de CONTACT_METHOD (= Téléphones et E-mails), et j'ai créé un TE pour lister les Mandats des salariés (par exemple dans un Comité d'Entreprise).

Car un salarié a un emploi (rémunéré) et peut avoir un (voire plusieurs) mandat bénévole pour faire des activités sociales.

Un emploi est valide tant qu'un salarié est dans l'entreprise, et tout s'arrête s'il est licencié ou démissionne. Il existe un bouton "Actif / Inactif" qui marche très bien.

En revanche, pendant sa présence, il peut être élu pour un mandat de 2 ans, puis ne pas être réélu, et être réélu par exemple 4 ans plus tard, etc, etc. Parfois 8 ou 10 Mandats, le temps de sa présence dans la société.

J'ai donc créé une Table MANDAT, liée à CONTACT, où figurent la date de début de Mandat, et la date de fin, ainsi que la Fonction (secrétaire, trésorier, etc).

Parallèlement à ça, j'ai créé une TE des Contacts dans COMPANY et LOCATION qui fonctionne parfaitement.

Par exemple, dans la TE dans LOCATION pour l'Emploi salarié (pas le Mandat), j'utilise :

1) le champ : location__CONTACT__locationID::title (= champ Fonction salariée)

et pour le téléphone j'utilise (car là c'est dans une TE) :

2) location__contact__CONTACT_METHOD__contactID::contact (= champ Salarié)

Et tout marche parfaitement (par exemple, le téléphone apparaît bien dans la TE)

 

MON SOUHAIT :

Je cherche à insérer dans la TE de LOCATION (nommée location__CONTACT__locationID) le Mandat en cours (appelé FonctionMandat). C'est celui où le champ FinMandat est vide, évidemment (mais je devine que la liste étant triée, il prendra par défaut la première valeur).

Et là, j'ai testé en mettant le champ : location__contact__MANDAT__contactID::FonctionMandat), mais hélas, cette donnée n'apparaît pas !!

Je me suis pourtant inspiré de la même méthode que pour des situations je crois similaires (dans mon Système), et j'ai créé :

 

1) une OT :

contact__MANDAT__contactID__cre

en liant _kftContactID (contact__MANDAT__contactID__cre) à la __kptID (de MANDAT)

(mais cette OT, utilisée directement, n'étant apparemment pas rattachée à LOCATIONS, cela n'affiche rien)

 

2) et une autre OT :

location__contact__MANDAT__contactID

en liant _kftContactID (location__contact__MANDAT__contactID) à la __kptID (de LOCATIONS)

Là, j'y croyais un peu plus, mais non, toujours rien d'affiché...

 

Est-ce bien un lien N > 1, ou bien faut-il créer une relation N > N ?

Pour info :

FonctionMandat se trouve initialement dans la Table MANDAT.

La liste des Mandats (successifs) d'un salarié se trouve dans une TE nommée contact__MANDAT__contactID__cre (filtrée en Décroissant sur la date DébutMandat) du Modèle CONTACTS. Et ça marche parfaitement.

 

Merci par avance de votre aimable aide.

 

Link to comment
Share on other sites

Recommended Posts

  • 0

J'ai finalement trouvé la solution, j'avais juste mais je n'avais pas lié à la bonne Table !!

Là, ça marche.

 

Mais j'ai juste un petit souci, c'est pour l'affichage. Il faut une formule, mais je ne sais pas l'écrire.

Le Mandat qui apparaît spontanément (par défaut) dans la TE est "le premier créé" (pour un salarié donné). Or moi, je voudrais que soit affiché :

1) Soit aucun, si le ou les mandats ont tous une date de FinMandat renseignée (et donc plus aucun Mandat en cours) : est-ce dans ce cas qu'il faut mettre une formule de "masquage" (EstVide etc etc) ?

2) Soit le Mandat en cours (il n'y en a toujours au plus qu'un seul) : comme j'ai mis un filtre de date dans la TE incluse dans CONTACT, pour afficher le plus récent au-dessus, je pensais que cela allait conduire la TE dans LOCATION à prendre le premier Mandat de la liste, mais non !! Il faut donc écrire une formule spécifique. Mais où ? Au niveau de la rubrique ou en masquage ?

 

Merci bien de votre réponse.

 

 

Link to comment
Share on other sites

  • 0

Bonsoir à tous,

Personne ne m'ayant répondu, j'ai tenté, sur la rubrique "FonctionMandat" une Mise en forme conditionnelle comme suit :

Not EstVide ( MANDAT::DébutMandat ) And EstVide ( MANDAT::FinMandat )

Mais ça ne marche pas.

En résumé, mon objectif est d'afficher le champ FonctionMandat de l'enregistrement qui a un DébutMandat non vide et une FinMandat vide.

Exemple concret (fiche de Monsieur X) qui est dans la TE sur l'OT contact__MANDAT__contactID__cre) :

                                       Début                       Fin

3ème Mandat             15/10/2022             

2ème Mandat              18/09/2016              19/09/2020

1er Mandat                   06/07/2008             09/07/2012

(il ne peut y avoir qu'un seul Mandat en cours)

Une idée concernant la bonne Formule à écrire ?

Faut-il utiliser une toute autre méthode ?

Merci.

 

Link to comment
Share on other sites

  • 0

Bonjour

Oui C'est un peu plus claire comme ca ;)

 

D'abord si ta table s'appelle "contact__MANDAT__contactID__cre" ta condition peu pas être que "MANDAT..."

Ici a priori si un enregistrement existe, ta date Début existe automatiquement, et donc , tu peu vérifier que si fin est vide.

EstVide ( contact__MANDAT__contactID__cre::FinMandat )

Link to comment
Share on other sites

  • 0

Bonjour Apophis,

Merci, mais ça ne va pas.

Sur le principe, la formule est bien à mettre dans le champ FonctionMandat (en ajoutant une Mise en forme conditionnelle) où on met la Formule ?

 

Voici les données (il y a 3 Modèles à considérer, dont 2 où je veux voir apparaître automatiquement les Mandats) :

Modèle CONTACT :

La TE se nomme : contact__MANDAT__contactID__cre

C'est là que je saisis directement les éventuels Mandats d'une personne (Début, Fin, Fonction)

 

1) Modèle LOCATION :

La TE se nomme : location__CONTACT__locationID

C'est dans cette TE que je veux voir le Mandat en cours (éventuel) d'un salarié dans le champ FonctionMandat. Ce champ est alimenté par l'OT : location__contact__MANDAT__contactID

Par défaut, c'est le tout premier Mandat saisi qui apparaît, alors que je voudrais afficher le plus récent (sans Fin de Mandat car toujours en cours), voire aucun Mandat si le salarié n'est plus élu du tout.

 

2) Modèle COMPANY :

La TE se nomme : company__CONTACT__companyID

C'est dans cette TE que je veux voir le Mandat en cours (éventuel) d'un salarié dans le champ FonctionMandat. Ce champ est alimenté par l'OT : company__contact__MANDAT__contactID

Par défaut, c'est le tout premier Mandat saisi qui apparaît, alors que je voudrais afficher le plus récent (sans Fin de Mandat car toujours en cours), voire aucun Mandat si le salarié n'est plus élu du tout.

 

Merci.

 

 

Link to comment
Share on other sites

  • 0

Dan le modèle contact, a priori, on a besoin de voir tout l'historique des mandat, donc rien à faire.

Pour Location , il faut lier a ca tables une OT contacte ( lier id ) et une OT mandat (elle lier par la clef étrangère de contacte  pour limité la vue des mandat / contacte ). 2 lien Car dans une TE ont peu afficher que les rubriques de la table utilisée. Ici donc on a que la TE mandat . elle filtrer avec  "EstVide ( ...  MANDAT ... ::FinMandat )"

Donc, le lien avec les id contact limite la TE a afficher que les mandats du contact, et le filtre de dans la TE réduit que a celui dont la date fin est vide.

idem pour Company

 

Perso je ferai encore autrement. Dans la table contacte, je récupère dans une rubique concaténé ou 2 séparé, le dernier manda et ca date de début .

De ce fait , le lien avec la clef étrangère de contacte, donne alors accet a toutes les infos du contact, mandat compris, donc plus besoin de TE.

 

Link to comment
Share on other sites

  • 0

Bonjour Apophis,

Merci bien.

Il y a 10 heures, Apophis000 a dit :

Dan le modèle contact, a priori, on a besoin de voir tout l'historique des mandat, donc rien à faire

Oui, je m'en doutais.

 

Il y a 10 heures, Apophis000 a dit :

Pour Location , il faut lier a ca tables une OT contacte ( lier id ) et une OT mandat (elle lier par la clef étrangère de contacte  pour limité la vue des mandat / contacte )

En fait, j'avais déjà procédé comme cela, mais chez moi LOCATION est liée (via sa __kptID) à une OT de CONTACT (via sa _kftLocationID) qui elle-même (via sa __kptID) est liée à une OT de MANDAT (via sa _kftContactID).

Et cela marche très bien dans mon système, en m'affichant dans la TE "CONTACTS" du Modèle LOCATION le nom d'un Mandat de salarié, mais hélas pas celui que je veux (c'est-à-dire le dernier en cours), mais le tout premier créé.

Dans votre explication, j'ai cru comprendre que l'OT de MANDAT est liée à LOCATION directement (sans avoir CONTACT entre les 2). C'est exact ?

Par ailleurs, pour afficher le dernier Mandat en cours, vous préconisez un filtrage de la TE, mais pas une Formule de mise en forme conditionnelle sur un champ (FormatMandat). Ce n'est pas une façon (alternative) de solutionner mon problème ?

 

Je mets en PJ la présentation du panneau à onglets (où je veux ces données visuellement).

Merci.

 

Présentation du Panneau à onglets de LOCATION.jpg

Link to comment
Share on other sites

  • 0
Il y a 8 heures, Laulow a dit :

mais pas une Formule de mise en forme conditionnelle sur un champ (FormatMandat). Ce n'est pas une façon (alternative) de solutionner mon problème ?

Ça n'a rien à voir... un champ ( rubrique) ne peut pas déterminer un enregistrement. Il faut trouver un enregistrement précis pour pouvoir voir l'info de la rubrique que l'on veut .

 

Il y a 8 heures, Laulow a dit :

Dans votre explication, j'ai cru comprendre que l'OT de MANDAT est liée à LOCATION directement (sans avoir CONTACT entre les 2). C'est exact ?

Oui, il faut une ot liée a la table du modèle pour voir les infos de celle-ci dans le modèle. Sinon ça n'affiche rien

Il y a 8 heures, Laulow a dit :

En fait, j'avais déjà procédé comme cela, mais chez moi LOCATION est liée (via sa __kptID) à une OT de CONTACT (via sa _kftLocationID) qui elle-même (via sa __kptID) est liée à une OT de MANDAT (via sa _kftContactID).

Ça c'est les liaison normal pour que votre ensemble location -contacte - mandat fonctionne. Et il ne faut pas le changer.

Ont peu dans le graph des lien créé d'autres relations avec d'autres OT ... c'est comme ça que on a plusieurs ot de chaque table , mais avec des liens différents pour des résultat diférent.

Link to comment
Share on other sites

  • 0

Bonjour Apophis,

Merci pour toutes ces remarques pertinentes.

Mais il me manque une chose (non comprise de ma part) dans votre explication :

 

Le 14/11/2022 à 14:04, Apophis000 a dit :

Pour Location , il faut lier a ca tables une OT contacte ( lier id ) et une OT mandat (elle lier par la clef étrangère de contacte  pour limité la vue des mandat / contacte )

Aussi, j'ai créé un petit fichier Mandat, inspiré de "Permanence" que vous aviez fait, et c'est souvent plus parlant. Il y aura sans doute des bricoles à corriger mais vous aurez la trame générale.

Car dans mon système directement, y a des choses qui font disparaître des données (heureusement que je m'exerce sur des copies !!).

Merci bien.

 

Mandat.fmp12

Link to comment
Share on other sites

  • 0

Mandat2.fmp12

J'avais juste oublié un petit détaille, si ont passe par une autre ot ( méthode 2 ), il faut filtré le lien pour avoir que le dernier enregistrement.

 

PS: votre lien id contacte étaient inversé

Link to comment
Share on other sites

  • 0

Bonjour Apophis,

Merci bien.

Vos 2 méthodes fonctionnent, super. Je préfère la méthode MANDAT2 que j'ai renommé chez moi : contact__location__MANDAT__contactID (selon la logique d'écriture de tout le programme).

Je l'ai reproduite je pense (quasiment ?) à l'identique, mais il persiste un souci pour le tri du Mandat en cours.

En PJ, il y a toutes les copies utiles, notamment la fiche de quelqu'un actuellement Trésorière adjointe mais où figure encore l'ancien Mandat Suppléante dans la TE de CONTACTS présente dans le Modèle LOCATION...

Je ne comprends pas.

NB : sur le graphe de liens, les OT sont en rouge. Il est à noter que je n'en ai créé que 2 nouvelles, car "contact__MANDAT__contactID" existait déjà dans mon système ( avec le même lien de : _kftContactID de MANDAT vers __kptID de CONTACT). Il doit servir à autre chose.

Merci.

clé de tri.jpg

Fiches salariés ds TE CONTACTS du Modèle LOCATION.jpg

Graphe de liens (voir les rouges).jpg

Lien.jpg

Mandats de Sylvie KOL dans TE du Modèle CONTACT.jpg

Link to comment
Share on other sites

  • 0
il y a 23 minutes, Laulow a dit :

pour le tri du Mandat en cours.

Comme ont peu pas utiliser une condition ( si est vide ... ) dans un lien , il faut dans le lien , utiliser le tris des enregistrement pour afficher le bon.

Ici donc je fait un trie par date décroisente de débutmandat, par defaut, la dernier date est le dernier manda en court ...

manda2.png.e31d3141286b69d259b395bcc5c41fdd.png

Link to comment
Share on other sites

  • 0

Merci, mais je suis bien déçu. J'ai corrigé ce détail, mais hélas non... L'erreur demeure. Toujours "le premier Mandat créé" qui s'affiche.

Sinon, tout le reste est bon d'après ce que vous voyez des copies d'écran ?

C'est assez incompréhensible.

Et peut-on imaginer qu'un script puisse être la cause ?

Merci.

Link to comment
Share on other sites

  • 0

Disons que le Modèle LOCATION est basé sur la Table LOCATION. C'est là que je saisis les données brutes des champs de LOCATION.

Par ailleurs, la TE (présente dans le Modèle LOCATION), à côté d'une dizaine d'autres TE disposées en panneau, est : "location__CONTACT__locationID".

Il y figure plusieurs rubriques : Prénom & Nom, Fonction, Nom du Service, et donc moi je souhaite rajouter le Mandat.

Link to comment
Share on other sites

  • 0

Donc , vous n'utilisez pas le bon modèle pour cette config .

Comme déjà dit ..., le lien contacte - location est à l'envers. Et si c'est cette table votre table location du modèle, alors ses a celle-là que vous reliez OT mandat.

ET bien sur , la rubrique mandat doit provenir de cette oT ( contacte_location_mandat_contacteID )

 

00man.png.2b6bb2f53d12cd0678040a0c7a012a5f.png

Link to comment
Share on other sites

  • 0

Je vous ai indiqué comme OT dans la TE de CONTACTS (du Modèle LOCATION) : location__CONTACT__locationID, or le (petit bout de) Graphe donné précédemment était axé sur CONTACT (et pas LOCATION).

Mais j'ai eu l'idée d'aller voir l'OT que j'avais créé pour LOCATION et COMPANY, et en mettant la boîte à cocher TRIER et votre formule sur DebutMandat, tout s'est mis à marcher parfaitement !!! C'est super.

J'ai donc bel et bien le dernier Mandat en cours qui apparaît.

Mais je me suis aperçu qu'il reste un souci : pour les Mandats finis (donc ayant une date de fin remplie), je voudrais ne pas les voir affichés (dans LOCATION).

C'est une formule plus sophistiquée dans le tri, ou bien une autre méthode ?

Merci bien.

 

Pour info, et que vous compreniez comment j'ai trouvé la solution, je vous joins le Graphe pour LOCATION. Vous y verrez à droite en gris une OT MANDAT liée à LOCATION (nommée location__contact__MANDAT__contactID). Et c'est grâce à ça que tout fonctionne.

 

 

Graphe avec liens de LOCATION.jpg

Link to comment
Share on other sites

  • 0

Pour masquer quand la date fin est remplie , tu peux utiliser "masquer objet quand .. " dans l'inspecteur sur les 3 rubriques  , avec  location_contact_Mandat_contactID::FinMandat ≠ ""

Là cétai automatique avec la TE 😛 ( PS:  la TE peu etre rendue transparente pour pas la voir )

Link to comment
Share on other sites

  • 0

Bonjour Apophis,

Super, ça fonctionne parfaitement !!

Merci bien.

 

Il me reste désormais à dispatcher les données "totales" contenues dans la rubrique de CONTACT "Fonction" dans la rubrique (toujours de CONTACT) "FonctionMandat".

Quelle pourrait être la meilleure méthode ?

J'ai pensé à copier toutes les données, en utilisant Enregistrements/Remplacer, et ensuite sélectionner à partir d'un nom bien précis (facilité car il n'y a aucune faute d'orthographe vu que c'est une liste déroulante) l'ensemble des fiches inappropriées et les effacer ?

Exemple (de comment ça se présente) :

Dans la rubrique Fonction (liste totale), il y a :

Trésorier (ça, ça doit être présent dans FonctionMandat)

Directeur

Gérant

Secrétaire élu (ça, ça doit être présent dans FonctionMandat)

Secrétaire

Assistante

NB : il y a environ 30 noms de job !!

Tu vois le principe ?

Merci.

Link to comment
Share on other sites

  • 0
il y a une heure, Laulow a dit :

Tu vois le principe ?

non 😅

je ne suis pas sûr de comprendre ce que tu veux.

Tu veux copier ce qui est dans CONTACT "Fonction" dans la rubrique CONTACT "FonctionMandat" que si le job est Trésorier ou Secrétaire élu ?

Déjà normalement "FonctionMandat" est dans la table Mandat ... Sinon ça fait double emploi et risque de perturber la suite...

 

PS: attention a la fonction remplacer, c'est radical ... backup indispensable !!!

Link to comment
Share on other sites

  • 0
Il y a 1 heure, Apophis000 a dit :

Tu veux copier ce qui est dans CONTACT "Fonction" dans la rubrique CONTACT "FonctionMandat" que si le job est Trésorier ou Secrétaire élu ?

Idéalement oui, mais je ne suis pas sûr que ce soit simple ainsi.

Actuellement, il y a environ 6000 Fonctions et 8 Mandats (que j'ai saisis pour faire les tests qui ont conduit à la résolution du problème précédent). En réalité, il y a 2000 Fonctions et 4000 Mandats (qui actuellement sont stockés dans Fonction, pour aboutir à 6000 au total)

D'où mon idée, peut-être pas maline et fastidieuse, de copier intégralement les 6000 données dans Mandat, puis d'extraire pour commencer les 4000 Mandats qui n'ont rien à faire dans Fonction (par exemple REMPLACER "Secrétaire élu" par ""), puis côté FonctionMandat les 2000 Fonctions qui ne doivent pas être là. Il y aura donc une répartition de 2000 Fonctions dans le champ Fonction et 4000 Mandats dans FonctionMandat.

Evidemment, une alternative du type Déplacement "ciblé" (dès le départ) comme tu l'évoques, peut-être via un script ou autre (?), serait plus simple... mais je ne vois pas comment faire.

Merci.

Link to comment
Share on other sites

  • 0
Il y a 1 heure, Laulow a dit :

Actuellement, il y a environ 6000 Fonctions et 8 Mandats

Bonjour,

On peut donc considérer que la rubrique Mandat n'est pas encore entrée en service et procéder ainsi (manuellement, pas par script) :

  • mode recherche
  • dans Fonction : ==Trésorier
  • nouvelle requête
  • dans Fonction : ==Secrétaire élu
  • et ainsi de suite pour toutes les fausses fonctions
  • exécuter la recherche
  • survoler l'ensemble pour s'assurer que c'est bon
  • Remplacer contenu rubrique [ cible : Mandat ; Calcul : Fonction ]
  • survoler l'ensemble pour s'assurer que c'est bon
  • Remplacer contenu rubrique [ cible : Fonction ; Calcul : "" ]

Je répète le conseil d' @Apophis000 : faire une sauvegarde juste avant !

Ensuite, dans chacune des 2 rubriques, faire Insertion > Index et voir si le résultat est bon…

Link to comment
Share on other sites

  • 0

Bonjour Jérémie,

Et merci bien pour ta réponse bien étayée. Toutefois, j'ai besoin de petites précisions.

Déjà, j'ai fait une copie de secours, en effet.

En préambule, je précise que la rubrique Fonction est en dur dans la Table CONTACT et le Modèle Formulaire de CONTACT, et que la rubrique Mandat est dans une TE (nommée contact__MANDAT__contactID__cre), dans ce même Modèle, et est en dur dans la Table MANDAT. Cela pourrait expliquer un souci que je rencontre.

En suivant tes instructions, j'ai fait :

  • mode recherche
  • OK, Affichage / Mode recherche
  •  
  • dans Fonction : ==Trésorier
  • OK, mais ici dois-je valider par ENTER ?
  •  
  • nouvelle requête
  • là, y a rien à faire (c'est pour signifier que je passe à la deuxième donnée)
  •  
  • dans Fonction : ==Secrétaire élu
  • OK, et quid de la validation ENTER
  • NB : Supposons qu'il y ait 70 fiches de Trésorier, et 40 Secrétaire élu, quand tu dis Exécuter la recherche va me retourner 110 fiches ? Actuellement, ce n'est pas le cas
  •  
  • et ainsi de suite pour toutes les fausses fonctions
  •  
  • exécuter la recherche
  • ça veux dire que c'est seulement là que je fais ENTER ?
  •  
  • survoler l'ensemble pour s'assurer que c'est bon
  • OK
  •  
  • Remplacer contenu rubrique [ cible : Mandat ; Calcul : Fonction ]
  • Là, je me suis placé dans le champ Mandat (de la TE contact__MANDAT__contactID__cre), qui est une lliste déroulante que j'ai autoriser à rajouter des valeurs, je fais ENREGISTREMENTS / REMPLACER, je clique sur Définir, je saisis : CONTACT::title (c'est fonction en anglais) puis OK, ensuite REMPLACER, et là aucune fiche n'est remplie dans le champ Mandat de la TE. Mystère...
  • Ou bien faut-il que je remplisse directement la rubrique "FonctionMandat" présente dans la Table MANDAT ?
  •  
  • survoler l'ensemble pour s'assurer que c'est bon
  •  
  • Remplacer contenu rubrique [ cible : Fonction ; Calcul : "" ]

Là je suppose que c'est pour faire l'opération inverse et virer lesdites fiches de Fonction. Mais on n'en est pas encore là...

Merci de ton aide.

 

 

 

Link to comment
Share on other sites

  • 0

Bonjour Jérémie,

Je viens finalement de comprendre. J'ai découvert le Menu Requêtes que je ne connaissais pas du tout, d'où mes questions naïves...

Du coup, j'ai réussi !!! Car j'ai aussi compris que Fonction était à écrire title et pas CONTACT::title...

C'est une expérience étonnante, car je n'ai jamais été amené à manipuler les données ainsi.

Merci beaucoup.

Bon week-end

 

 

 

Link to comment
Share on other sites

  • 0

Hélas, j'ai parlé un peu trop vite, c'est bien décevant. Je reste bloqué là-dessus.

En réalité le principe est évidemment bon, mais il y a un souci avec le remplacement dans une rubrique de la TE (contact__MANDAT__contactID), où je n'obtiens que la première valeur qui est copiée...

A contrario, pour un remplacement dans une autre rubrique de CONTACT (que je vais aussi être amené à faire), là toutes les valeurs sont très bien recopiées.

Tu n'as pas d'idée du blocage ?

Et toi non plus, Apophis ?

Merci.

Link to comment
Share on other sites

  • 0

Bonjour,

Ayant testé le processus avec l'exemple de Apophis, j'ai vu que ça devait forcément marcher. Et en observant divers comportements, j'ai détecté que le problème était que les rubriques cibles étaient vides. Or "REMPLACER" a l'air de considérer (du moins pour une TE) que le vide n'est pas un vrai remplacement de donnée !!!

Donc je vais devoir remplir en amont d'une donnée Test, pour qu'il accepte de faire ensuite le bon remplacement.

Cela ne vous semble pas un peu étrange ??

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...