Bonjour, Pour la gestion des images de mes articles, j'utilise plupload au niveau de l'ajout/édition d'un article. Chose qui fonctionne très bien :) Ensuite j'ai mis la zone gérer par Plupload dans une boite modal, mais là, misère, la boite modal apparait comme prévu lors de la pression sur le bouton, mais impossible de lancer l'upload. Je précise que je ne suis vraiment pas un expert un js et jquery, j'ai juste les bases. Le code de la modal est du code maison, donc le soucis peut venir de là. dragndrop.js : [code]var uploader = new plupload.Uploader({ runtimes : 'html5, flash', container: 'plupload', browse_button: 'browse', drop_element: 'droparea', url: 'http://localhost/Elhebert-pltform/Version-4.0/images/upload', flash_swf_url: 'http://localhost/Elhebert-pltform/Version-4.0/js/Moxie.swf', multipart: true, urlstream_upload: true, multipart_params: { directory: 'img/posts' } }); uploader.bind('UploadProgress', function(up, file){ $('#' + file.id).find('.progress').css('width', file.percent + '%'); }) uploader.init(); uploader.bind('FilesAdded', function(up, files){ var filelist = $('#filelist'); for(var i in files){ var file = files*; filelist.prepend('

' + file.name + '

'); } $('#droparea').removeClass('hover') uploader.start(); uploader.refresh(); }); uploader.bind('Error', function(up, error){ alert(error.message); $('#droparea').removeClass('hover'); uploader.refresh(); }); uploader.bind('FileUploaded', function(up, file, response){ data = $.parseJSON(response.response); if(data.error == true) { alert(data.message); $('#' + file.id).remove(); } else { $('#' + file.id).replaceWith(data.html); } });[/code] modal.js : [code]var modal = (function(){ var method = {}, $overlay, $modal, $content, $close, $copy; $overlay = $('

'); $modal = $('

'); $content = "
" + $('#modalContent').html() + ""; $close = $('x'); $copy = $('a.copy-button'); $modal.hide(); $overlay.hide(); $modal.append($content, $close); $(document).ready(function(){ $('body').append($overlay, $modal); }); method.center = function () { var top, left; top = Math.max($(window).height() - $modal.outerHeight(), 0) / 2; left = Math.max($(window).width() - $modal.outerWidth(), 0) / 2; $modal.css({ top:top + $(window).scrollTop(), left:left + $(window).scrollLeft() }); }; method.open = function (settings) { $modal.css({ width: settings.width || 'auto', height: settings.height || 'auto' }) method.center(); $(window).bind('resize.modal', method.center); $modal.show(); $overlay.show(); }; method.close = function () { $modal.hide(); $overlay.hide(); $content.empty(); $(window).unbind('resize.modal'); }; $close.click(function(e){ e.preventDefault(); method.close(); }); $overlay.click(function(e){ e.preventDefault(); method.close(); }); return method; }());[/code] et app.js : [code] // -- Drag-and-Drop effect $('#droparea').bind({ dragover : function(e){ $(this).addClass('hover'); }, dragleave : function(e){ $(this).removeClass('hover'); } }); // -- Modal Drag-n-drop $('button#droplink').click(function(e){ modal.open({'width' : 700}); e.preventDefault(); });[/code] et ma page html d'édition/ajout : [code]<button class="adminBtn" id="droplink">Gestion des images</button>

Drag & drop your files here

orUpload

<?php foreach(glob('img/posts/.') as $v): ?>
![](<?= $this->Html->url('/') . $v; ?>) = basename($v); ?>
Copier url [Supprimer](<?= basename($v); ?>)

<?php endforeach; ?>

[/code] Je précise encore une fois que lorsque je met le module de drag'n'drop directement sur la page (hors de la div#modalContent) plupload fonctionne et me permet d'upload mes images. Le soucis se situe dans au niveau de la modal qui empêche (je ne sais comment) plupload de s'activer. Merci de votre aide :)

2 réponses


Si c'est dans un modal, il faut un peu tricher avec plupload et ajouter un style :

$("div.plupload").css({"z-index":99999});

Ou directement dans le CSS :

.plupload{ z-index : 99999; }

elhebert
Auteur

Bonjour,

Tour d'abord merci de ta réponse :)

Alors j'ai testé ta solution, mais ça ne fonctionne toujours pas. J'ai quand même vérifié si le problème venait de mon css ou non.
Et après avoir ajouté en dur les div de la modal dans mon html. Et même ça donne un résultat tout moche (^^) cela fonctionne.

ça me donne ça quoi :

<div id="overlay" class="overlay">
    <div id="modal" class="modal">
        <div id="content">
            <div id="plupload">
                <div class="drop-area" id="droparea">
                    <p>Drag & drop your files here</p>
                    <span>or</span>
                    <a href="#" id="browse">Upload</a>
                </div>
                <div id="filelist">
                    <?php foreach(glob('img/posts/*.*') as $v): ?>
                        <div class="file">
                            <img src="<?= $this->Html->url('/') . $v; ?>"/>
                            <?= basename($v); ?>
                            <div class="actions">
                                <a class="copy-button" data-clip="<?= $this->Html->url('/') . $v; ?>" title="Click to copy me.">Copier url</a>
                                <a href="<?php echo basename($v); ?>" class="del">Supprimer</a>
                            </div>
                        </div>
                    <?php endforeach; ?>
                </div>
            </div>
        </div>
    </div>
</div>

Donc c'est bien au niveau js qu'il y a un soucis :(