Widget de envio de Documentos para Pasta selecionada

Queria saber como faço para fazer Upload de Documentos na pasta selecionada dentro de uma Widget ?

Tenho um script aqui que peguei no Git do Fluig, porem ele só faz o upload dentro da pasta que eu coloquei manualmente no script.


data: JSON.stringify({
        "description": file.name,
        "parentId": "320",
        "attachments": [{
        "fileName": file.name
        }],
    }),

O que preciso é que eu possa escolher pela widget em qual pasta subir o arquivo.

Script


var MyWidget = SuperWidget.extend({
    //variáveis da widget
    variavelNumerica: null,
    variavelCaracter: null,

    //método iniciado quando a widget é carregada
    init: function() {
        $(function () {
            $('#fileupload').fileupload({
                dataType: 'json',
                done: function (e, data) {

                    var myLoading1 = FLUIGC.loading('#upload-file');
                    myLoading1.show();

                    $.each(data.result.files, function (index, file) {
                        $.ajax({
                            async : true,
                            type : "POST",
                            contentType: "application/json",
                            url : '/api/public/ecm/document/createDocument',

                            data: JSON.stringify({
                                "description": file.name,
                                "parentId": "320",
                                "attachments": [{
                                    "fileName": file.name
                                }],
                            }),

                            error: function() {
                                FLUIGC.toast({
                                     title: '',
                                     message: "Falha ao enviar",
                                     type: 'danger'
                                 });
                                myLoading1.hide();
                            },

                            success: function(data) {
                                FLUIGC.toast({
                                     title: '',
                                     message: "Documento publicado - " + file.name,
                                     type: 'info'
                                 });
                                myLoading1.hide();
                            },
                        });
                    });
                }
            });
        });
    },

    //BIND de eventos
    bindings: {
        local: {
            'execute': ['click_executeAction']
        },
        global: {}
    },

    executeAction: function(htmlElement, event) {
    }

});

View.ftl


<div id="MyWidget_${instanceId}" class="super-widget wcm-widget-class fluig-style-guide" data-params="MyWidget.instance()">
    <div class="fluig-style-guide">
        <form name="form" role="form">        
            <div class="panel panel-default" id="upload-file">
                <div class="panel-heading">
                    <h3 class="panel-title">Upload</h3>
                </div>
                <div class="panel-body">                    
                    <a class="file-input-wrapper btn btn-default ">
                    <span>Buscar Arquivo(s)</span>
                    <input 
                        id="fileupload" 
                        type="file" 
                        name="files" 
                        data-url="/ecm/upload"
                        class="btn btn-primary btn-sm btn-block"
                        title="Buscar Arquivo(s)"
                        multiple/>
                    </a>
                </div>
            </div>        
        </form>
    </div>

</div>

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Karina,

O que você poderia fazer é consultar o Dataset 'documents' filtrando somente as pastas e solicitar ao usuário que selecione para qual pasta deseja enviar o documento.


    <script>
        var c1 = DatasetFactory.createConstraint("documentType", 1, 1, ConstraintType.MUST);
        var constraints   = new Array(c1);

        var sortingFields = new Array("documentPK.documentId");

        var cchtml = "<h3><strong>Selecione a pasta</strong></h3>";
        var folders = DatasetFactory.getDataset("document", null, constraints, sortingFields);

        for(var s = 0; s < folders.values.length; s++) {    

            cchtml += "<span class=\"fluigicon fluigicon-folder-open fluigicon-lg\"></span> &nbsp; <label>";
            cchtml += "<input type=\"radio\" name=\"txtFolder\" onclick=\"$('#txtFolder').val("+ folders.values[s]["documentPK.documentId"] + ")\" value=\""+ folders.values[s]["documentPK.documentId"] + "\">"+
            folders.values[s].documentDescription + "</label></br>";

        }                
        //cchtml = cchtml + "</ul>";
        $("#lstFolders").html( cchtml );

    </script>
    <input type="hidden" name="folder" id="folder" />
    <div class="col-md-12" id="lstFolders">
        Carregando...
    </div>

E no seu script da widget, altere o parentId para buscar da pasta selecionada:


    data: JSON.stringify({
        "description": file.name,
        "parentId": $("#folder").val(),
        "attachments": [{
            "fileName": file.name
        }],
    }),

Não cheguei a testar o script inteiro, se der algum erro, comenta aqui que eu tento analisar.

Desculpa minha ignorancia, mas não entendi onde eu ficaria o Primeiro Código que postou.

Karina, você pode colocar direto no view.ftl

Não acontece nada. Não Mostra nem o botão de Escolha da Pasta.

Karina, me manda por e-mail (luiz.postal@totvs.com.br) o teu projeto da widget que assim que eu conseguir faço uns testes.

Enviado. Obrigada!!

@Karina, não recebi seu e-mail. Consegue me enviar novamente?

Já tentaram usar esse plugin com o Oauth? eu tentei não funcionou, diz que o documento é muito grande para autenticação.

Olá, consegui fazer funcionar com o oauth?