Archives FluxBB.fr

Les archives de FluxBB.fr

Vous n'êtes pas identifié(e).

#1 10-04-2007 12:59:23

BN
Membre

Interaction pop-up/fenêtre principale

Yayou,

Je "travaille" actuellement sur un nouveau plugile , un truc permettant d'uploader des fichiers. (un genre de Attachment mod en moins poussé mais sans tous les inconvénients d'installation^^)
J'ai presque bouclé le machin, mais je viens d'avoir l'idée de créer un système pour utiliser cette mod directement au niveau des messages du forum. Seulement, j'ai de grosses lacunes en Javascript donc je bloque sévère tongue Voilà pourquoi je me tourne vers vous^^

L'idée est que sur la page post.php, à côté des liens : # BBCode: actif # Balise [img]: actif # Émoticônes: actif, il y ait un lien du style : # Upload : actif ouvrant un pop-up. Dans ce pop-up apparait la liste de tous les fichiers déjà uploadé par le membre (et la possibilité d'en ajouter de nouveaux) et à côté de chaque fichier, un bouton [Ajouter]. Lorsque l'on clique sur le bouton [Ajouter], ça ferme le pop-up, ça va dans le textarea de la fenêtre principale, et ça inscrit à l'endroit du curseur [c][img]urldufichierséléctionné[/img][/c]. (comme pour le pop-up des smilies ou du choix de la couleur dans la PunToolbar)
Seulement voilà, fermer la fenêtre ça va... aller dans le textarea de la fenêtre principale ça devrait le faire. Bon, ouvrir un pop-up, je devrais réussir. Mais le reste, je ne maitrise vraiment pas encore assez le Javascript pour réussir.

Est-ce quelqu'un aurait envi de me guider ? (ou de le faire si vous préférez, ça me dérange pas du tout tongue)
Merci d'avance !


P.S : Pour l'instant, sur le pop-up au niveau de la liste des articles, j'ai ça :

<tr>
        <td class="tc1"><input style="float: right;" type="button" name="ajouter" value="Ajouter" onClick="send_image(<?php echo $image; ?>);"> <a href="<?php echo $image; ?>"><?php echo 'img/members/'.$pun_user['id'].'/'.$nom_image_brut; ?></a> [<?php echo $size_image; ?>Ko]</th>
        <td class="tc3"><input type="checkbox" name="supprimer_<?php echo $boucle_id++; ?>" value="<?php echo $nom_image_brut; ?>" tabindex="<?php echo $tabindex++; ?>" /></td>
</tr>

Avec pour la fonction send_image() une reprise presque pur et dur du code de Vin100 : (j'ai tenté de le comprendre, mais j'ai pas encore réussi...)

<script type="text/javascript">
                            //<![CDATA[
                            var textarea = window.opener.document.getElementById('req_message');
                            function send_image(txt)
                            {
                                encloseSelection(txt, '');
                                window.close();
                            }

                            function encloseSelection(prefix, suffix, fn)
                            {
                                textarea.focus();
                                var start, end, sel, scrollPos, subst;

                                if (typeof(window.opener.document["selection"]) != "undefined") {
                                    sel = window.opener.document.selection.createRange().text;
                                } else if (typeof(textarea["setSelectionRange"]) != "undefined") {
                                    start = textarea.selectionStart;
                                    end = textarea.selectionEnd;
                                    scrollPos = textarea.scrollTop;
                                    sel = textarea.value.substring(start, end);
                                }

                                if (sel.match(/ $/)) { // exclude ending space char, if any
                                    sel = sel.substring(0, sel.length - 1);
                                    suffix = suffix + " ";
                                }

                                if (typeof(fn) == 'function') {
                                    var res = (sel) ? fn(sel) : fn('');
                                } else {
                                    var res = (sel) ? sel : '';
                                }

                                subst = prefix + res + suffix;

                                if (typeof(window.opener.document["selection"]) != "undefined") {
                                    var range = window.opener.document.selection.createRange().text = subst;
                                    textarea.caretPos -= suffix.length;
                                } else if (typeof(textarea["setSelectionRange"]) != "undefined") {
                                    textarea.value = textarea.value.substring(0, start) + subst +
                                    textarea.value.substring(end);
                                    if (sel) {
                                        textarea.setSelectionRange(start + subst.length, start + subst.length);
                                    } else {
                                        textarea.setSelectionRange(start + prefix.length, start + prefix.length);
                                    }
                                    textarea.scrollTop = scrollPos;
                                }
                            }
                            //]]>
                            </script>

Dernière modification par BN (10-04-2007 13:01:47)

Hors ligne

#2 10-04-2007 13:29:42

vin100
Membre

Re : Interaction pop-up/fenêtre principale

en fait si tu pouvait préciser là où tu as besoin d'aide, je t'avouerais qu'avec tous ce temps passé je ne le comprend plus moi-même ce code mdr

Hors ligne

#3 10-04-2007 14:26:37

BN
Membre

Re : Interaction pop-up/fenêtre principale

J'ai installé la mod sur un forum de test pour vous montrer.
Forum de test (je crois que tu y es déjà inscris Vin100)

En allant dans votre profil, vous pouvez voir comment fonctionne le truc.
Après, suivez Ce lien (Nouveau message) Il vous reste plus qu'à cliquer sur le lien Upload (sous le textarea) ça ouvre une nouvelle fenêtre (j'aimerai que ce soit un pop-up, mais j'y arrive pas) et vous avez accès à la liste de vos uploads. Et le but c'est qu'en cliquant sur le bouton [Ajouter] bah ça ajoute le lien vers ce fichier dans le textarea.

En fait, je n'arrive pas à être très clair^^ Mais dites moi si vous comprenez en regardant le forum de test smile

Hors ligne

#4 10-04-2007 15:35:08

vin100
Membre

Re : Interaction pop-up/fenêtre principale

oui je pense avoir compris

bon déjà il faut que tu corrige l'erreur :

onClick="send_image(../img/members/19/chemin.img);"

en

onClick="send_image('../img/members/19/chemin.img');"

c'est une chaine de caractère, il lui faut des guillemets autour

ensuite je ne sais pas de quel fichier tu t'es inspiré pour ce code javascript mais dans le color picker en dessous de la focntion il y a une partie importante qui est :

        encloseSelection('', '', function(str) {return '[color=+new_color+]'+str+'[/color]'});

donc si je comprend bien tu voudrait que ton fichier soit mis entre balise dans la zone de saisie, donc il te reste juste à remplacer :

        encloseSelection('', '', function(str) {return '[img]'+str+'[/img]'});

Hors ligne

#5 27-06-2007 11:25:28

fightsoul
Membre

Re : Interaction pop-up/fenêtre principale

T'as trouvé comment il faut faire ?
Sinon j'peut te proposé ça :

function insimg(src){
    textarea = document.getElementById('req_message')['0'];
    textarea.value = textarea.value+'[img]'+src+'[/img]';
}

Pour insérer l'image dans le textarea il suffis de mettre un lien de type :

<a href="javascript:self.close();" onclick="opener.insimg('../img/members/19/chemin.img')">Ajouter</a>

Voilà wink

Dernière modification par fightsoul (27-06-2007 11:28:19)

Hors ligne

#6 06-11-2007 19:19:37

gargoyle
Membre

Re : Interaction pop-up/fenêtre principale

bonjour BN

Pourquoi ne pas mettre la partie "mes uploads actuelles" du fichier UPP_Mes_uploads.php directement sous la partie Textarea de viewtopic.php et de post.php comme ça cela afficherai les images perso du membre en dessous du message à taper et avec un bouton à côté du fichier à envoyer qui enverrai un bbcode dans le textearea

j'ai deja commencé mais la je bute sur l'aperçu des fichiers du membres car par défaut il va chercher dans img/membres un repetoire 3 quelque soit le membre
mais par contre si on n'est pas identifier il n'affiche pas la partie "mes uploads actuelles"

A+
Gargoyle

Hors ligne

Pied de page des forums