Загрузчик Dojo с функцией перетаскивания

Я пытаюсь воссоздать этот пример в своем проекте, чтобы добавить функцию перетаскивания в загрузчик додзё:

http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/form/tests/test_Uploader.html

Копируя точно такой же код в jsfiddle или в моем приложении строку

if(uploader.addDropTarget && uploader.uploadType=='html5'){

возвращает undefined для addDropTarget и iframe для uploadType. Пробовал с разными браузерами, даже добавил принудительно: html5 в загрузчике, но ничего не изменилось.

Обратите внимание, что все работает нормально, кроме как с dnd.

Я использую додзё 1.8.1.


person Nicolas I    schedule 13.08.2013    source источник
comment
Можете ли вы вставить свой код? Вы установили ввод файла с multiple=true ? Вам нужен плагин html5? Вы пытались установить для параметра загрузки значение html5? Какой браузер вы используете ?...   -  person Philippe    schedule 13.08.2013
comment
Да, я добавил это, и мне также потребовался плагин html5. Все работает в части выбора файла и загрузки. Я просто пытаюсь включить функцию dnd. Проверено с хромом и фаерфоксом.   -  person Nicolas I    schedule 13.08.2013
comment
Ой, извини. Можете ли вы опубликовать свой код?   -  person Philippe    schedule 13.08.2013
comment
Филипп, я использую тот же код, что и в ссылке.   -  person Nicolas I    schedule 13.08.2013
comment
А какой у вас браузер? Потому что если это работает в ссылке, а не в вашем коде, то где-то должна быть разница...   -  person Philippe    schedule 13.08.2013
comment
Я тестировал как с Chrome, так и с Firefox. Я не знаю, используют ли они другую версию загрузчика по ссылке, так как они тянут dojo.js из ночного билда.   -  person Nicolas I    schedule 13.08.2013
comment
Да. Вот и все. Они используют другую сборку dojo.js. Я добавил путь ночной сборки в jsfiddle, и это сработало. Однако есть ли обходной путь?   -  person Nicolas I    schedule 13.08.2013
comment
Хм... Я знаю, что в версии 1.9 все значительно улучшилось... Я попытаюсь посмотреть, смогу ли я заставить это работать в скрипке 1.8.1...   -  person Philippe    schedule 13.08.2013


Ответы (1)


В додзё 1.8 загрузчик еще не полностью совместим с AMD. Итак, для того, чтобы пример из магистральных тестов работал в 1.8, вам нужно создать загрузчик программно, используя конструктор dojox.form.Uploader, а не требуемый модуль AMD. Следующее :

<form method="post" action="UploadFile.php" id="myForm" enctype="multipart/form-data" >
    <fieldset>
        <legend>DnD Test</legend>
        <input class="browseButton" id="uploader"/>
        <input type="submit" label="Submit" data-dojo-type="dijit/form/Button" />
        <div id="files" data-dojo-type="dojox/form/uploader/FileList" data-dojo-props='uploaderId:"uploader"' ></div>
    </fieldset>
</form>

<div id="dropTarget">Drop files here !</div>

А в джаваскрипте:

require([
    'dojo/parser',
    'dojo/dom',
    'dijit/registry',
    'dojox/form/Uploader',
    'dojox/form/uploader/FileList',
    'dojox/form/uploader/plugins/HTML5',
    'dojo/domReady!'
], function(parser, dom, registry, ready){

    var dropTarget = dom.byId('dropTarget'), uploader;

    parser.parse().then(function(){

        // You need to use dojox.form.Uploader, as in dojo 1.8, 
        // the module is not fully AMD compliant yet.

        uploader = new dojox.form.Uploader({
            name:'uploadedfile', 
            label:'Select Some Files',
            multiple:true, 
            force:'html5'
        }, 'uploader');

        uploader.startup();

        if(require.has('file-multiple')){
            console.debug("Adding a new drop target");
            registry.byId('uploader').addDropTarget(dropTarget); 
        }
    });
});

См. http://jsfiddle.net/psoares/6r2jZ/.

person Philippe    schedule 13.08.2013
comment
Здорово! Однако теперь кнопка загрузки не работает. Любые подсказки? - person Nicolas I; 14.08.2013