Advertisement
Guest User

Untitled

a guest
Sep 24th, 2011
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Aplicação client Perl File Explorer
  3.  *
  4.  * A aplicacao FILE EXPLORER tem como base principal um obj DHTMLX do tipo LAYOUT
  5.  */
  6.  
  7. /**
  8.  * Obj Perl_File_Explorer
  9.  *
  10.  * Objeto representando toda a aplicação FILE EXPLORER contendo componentes DHTMLX e diversos
  11.  * outros métodos e propriedades auxiliares
  12.  */
  13. function Perl_File_Explorer()
  14. {
  15.    
  16.    
  17.     /**
  18.      * Precisamos declarar diversas variáveis que serão utilizadas dentro dos objetos como GLOBAL, e assim, permitindo
  19.      * o uso de um objeto externo diretamente de dentro do objeto sem necessitar usar a propriedade PROTOTYPE diversas vezes.
  20.      *
  21.      * Javascript não possui variáveis GLOBAIS, porém podemos simular através do escopo.
  22.     */
  23.    
  24.     var layout_explorer; //===> var placeholder do obj layout DHTMLX    
  25.     var arquivoselecionado; //===> var placeholder ID do arquivo selecionado no momento
  26.     var InterfaceX, dhxWins, w1, waux; //===> var placeholder dos objs window DHTMLX
  27.     var documentos_files; //===> var placeholder do obj DHTMLXFolder
  28.     var menu; //===> var placeholder do obj toolbar DHTMLX. Usada como menu bar principal do File Explorer
  29.     var layout_window; //===> var placeholder do obj layout DHTMLX  usado no interior de cada janela
  30.     var tree_dirs; //===> var placeholder do menu to tipo treeview
  31.     var toolbar_files; //===> var placeholder da toolbar que fica sobre os arquivos
  32.     var alterafoto; //===> var placeholder do objeto VAULT
  33.     var taskbar; //===> var placeholder da taskbar da aplicação
  34.     var barra_status; //===> var placeholder do obj statusbar herdado do obj layout DHTMLX. Usada como status bar principal do File Explorer
  35.     var barrastatus; //===> var placeholder do obj statusbar herdado do obj layout DHTMLX. Usada como status bar de windows auxiliares do File Explorer
  36.     var strabertas = "";//===> var placeholder de IDs de janelas abertas
  37.  
  38.     /**
  39.      * Método init
  40.      *
  41.      * Através deste método iremos fazer o parser inicial dos componentes principais do FILE EXPLORER
  42.      */
  43.     this.init = function()
  44.     {
  45.        
  46.         /**
  47.          * Vamos criar uma instancia do obj DHTMLX WINDOW e fazer o append do objeto ao body
  48.          * do arquivo view.html
  49.          */
  50.         InterfaceX = new dhtmlXWindows();
  51.         InterfaceX.enableAutoViewport(false);
  52.         InterfaceX.attachViewportTo("body"); //=========> appendo ao body.id="body"
  53.         InterfaceX.setImagePath("codebase/imgs/"); //====> dir de imgs base para o objeto
  54.        
  55.         /**
  56.          * Vamos o layout principal da aplicação utilizando o componente DHTMLX LAYOUT
  57.          *
  58.          * O layout será do tipo 2U (2 celulas verticais - célula ¨a¨ e ¨b¨)
  59.          */    
  60.         layout_explorer = new dhtmlXLayoutObject(document.body, "2U");
  61.         layout_explorer.cells("a").setWidth(160); //==> seta a largura da célula a
  62.         layout_explorer.cells("a").hideHeader(); //==> esconde o cabeçalho da célula
  63.         layout_explorer.cells("b").hideHeader(); //==> esconde o cabeçalho da célula
  64.                
  65.         /**
  66.          * Vamos criar o menu principal da aplicação utlizando o componente DHTMLX MENU
  67.          */
  68.         menu = layout_explorer.attachMenu();
  69.         menu.setIconsPath("codebase/imgs/"); //====> dir de imgs base para o objeto
  70.         menu.setOpenMode("win"); //==> seta tipo de abertura do menus - win(estilo windows explorer)
  71.         menu.setTopText("Gerenciador de Documentos"); //==> seta texto informativo impresso do lado direito do menu
  72.         menu.addNewSibling(null, "arquivo", "Arquivo", false); //==> cria grupo de menu para submenus
  73.  
  74.                
  75.         /**
  76.          * Vamos criar uma taskbar para a aplicação utilizando o componente DHTMLX TOOLBAR
  77.          *
  78.          * Usaremos a taskbar para controlar as janelas abertas em nossa aplicação
  79.          * A cada janela aberta, será incluído um novo botão correspondente à janela na taskbar
  80.          */
  81.         //===========> TOOLBAR MULTITAREFA - placeholder das janelas abertas
  82.         taskbar = layout_explorer.attachToolbar();
  83.         taskbar.setIconsPath("codebase/imgs/"); //====> dir de imgs base para o objeto
  84.         /**
  85.          * Utilizaremos o evento onClick atribuido aos botões serão incluídos na taskbar
  86.          */
  87.         taskbar.attachEvent("onClick", function(id)
  88.         {  
  89.             /**
  90.              * Trazemos a janela representada pelo botão para frente caso outra
  91.              * janela esteja em foco
  92.              */
  93.             InterfaceX.window(id).bringToTop();
  94.             /**
  95.              * Exibimos a janela representada pelo botão caso ela esteja minimizada
  96.              */
  97.             InterfaceX.window(id).show();
  98.         });
  99.                
  100.         /**
  101.          * Vamos criar uma toolbar que ficará sobre a célula ¨a¨ da aplicação contendo diversas funções
  102.          */
  103.         var toolbar_tree = layout_explorer.cells("a").attachToolbar();
  104.         toolbar_tree.setIconsPath("codebase/imgs/"); //====> dir de imgs base para o objeto
  105.         /**
  106.          * Utilizaremos o evento onClick atribuido aos botões do menu
  107.          */
  108.         toolbar_tree.attachEvent("onClick", function(id)
  109.         {
  110.             //==== se o id do botao for eq
  111.            
  112.             if(id=="novoarquivo")// novo arquivo
  113.             {
  114.                 //==> para futura implementacao de upload de arquivos utilizando o DHTMLX VAULT
  115.             }
  116.            
  117.             /**
  118.              * Rotina que responsável pela criação de um novo diretório
  119.              */
  120.             else if(id=="novo")// novo diretorio
  121.             {
  122.                 toolbar_tree.disableItem("novo"); // bloqueia multiplo clicks
  123.                 /**
  124.                  * Pergunta ao usuário o nome do novo diretório e atribui o valor à
  125.                  * variavel nomedir
  126.                  */
  127.                 var nomedir = prompt("Digite o nome do novo diretório", "");
  128.                 /**
  129.                  * Se for digitado um nome para o diretório, continua
  130.                  */
  131.                 if(nomedir!= '' && nomedir!==null) // null compara-se com === ou !== (comparacao de valor e tipagem)
  132.                 {  
  133.                     /**
  134.                      * inicia o efeito loading sobre a célula ¨a¨ da aplicação até que o diretório seja criado
  135.                      */
  136.                     layout_explorer.cells("a").progressOn();
  137.                     /**
  138.                      * pega o dir selecionado para criar o novo dir como subdir do dir selecionado
  139.                      */
  140.                     var dirtarget=tree_dirs.getSelectedItemText();
  141.                    
  142.                     /**
  143.                      * Declaramos a string URL que será despachada ao servidor via POST contendo o nome do novo dir o nome do
  144.                      * diretório onde ele será salvado
  145.                      */
  146.                     var urlposcriadir="dirtarget="+dirtarget+"&nomenovo="+nomedir+"";
  147.                     /**
  148.                      * Despacha o post para a criação do diretório
  149.                      */
  150.                     dhtmlxAjax.post("../cgi-bin/makedir.pl", encodeURI(urlposcriadir), function(loader)
  151.                     {
  152.                         /**
  153.                          * Transforma a string da resposta recebida pelo server em JSON usando eval
  154.                          */
  155.                         var obj_retorno = eval('(' + loader.xmlDoc.responseText + ')'); // evaluate a string vinda no ajax em um obj JSON
  156.                        
  157.                         if(obj_retorno.status=="sucesso")  
  158.                         {
  159.                             alert(obj_retorno.resposta);
  160.                             toolbar_tree.enableItem("novo");
  161.                        
  162.                             tree_dirs.deleteChildItems(0);
  163.                             tree_dirs.loadXML("../cgi-bin/tree_files.pl");
  164.                        
  165.                             toolbar_files.disableItem("abrir");// desabilita botao ate que um file seja selecionado para evitar callback com erro
  166.                             toolbar_files.disableItem("baixar");// desabilita botao ate que um file seja selecionado para evitar callback com erro
  167.                             toolbar_files.disableItem("excluir");// desabilita botao ate que um file seja selecionado para evitar callback com erro
  168.                        
  169.                             layout_explorer.cells("a").progressOff(); // finaliza efeito de loading
  170.                         }
  171.                         else if(obj_retorno.status=="erro")
  172.                         {
  173.                             alert(obj_retorno.resposta);
  174.                             toolbar_tree.enableItem("novo");
  175.                             layout_explorer.cells("a").progressOff(); // finaliza efeito de loading
  176.                         }
  177.                         else
  178.                         {
  179.                             alert(loader.xmlDoc.responseText);
  180.                             toolbar_tree.enableItem("novo");
  181.                             layout_explorer.cells("a").progressOff(); // finaliza efeito de loading
  182.                         }
  183.                     });
  184.                 }
  185.                 else
  186.                 {
  187.                     alert("Você não digitou um nome para o nomvo diretório. Tente novamente.");
  188.                     toolbar_tree.enableItem("novo");
  189.                 }
  190.             }
  191.            
  192.             /**
  193.              * Rotina responsável pela exclusão do diretório
  194.              */
  195.             else if(id=="excluir") // exclui dir
  196.             {
  197.                 if (window.confirm('Deseja realmente excluir?\nTodos os arquivos dentro deste diretório serão perdidos!'))
  198.                 {
  199.                     layout_explorer.cells("a").progressOn(); // inicia efeito loading na celula A do layout
  200.                     var nomeexclui=tree_dirs.getSelectedItemText(); // pega o nome do dir selecionado
  201.                     if (nomeexclui!='documentos' && nomeexclui!='contratos' && nomeexclui!='files' && nomeexclui!='publico') // dirs proibidos de exclusao
  202.                     {
  203.                         var urlposexcluidir="nomeexclui="+nomeexclui+"";
  204.                         dhtmlxAjax.post("documentos_gerenciador.aspl?sessao=excluidir", encodeURI(urlposexcluidir), function(loader)
  205.                         {
  206.                             var obj_retorno = eval('(' + loader.xmlDoc.responseText + ')'); // evaluate a string vinda no ajax em um obj JSON
  207.                             if(obj_retorno.status=="sucesso")  
  208.                             {
  209.                                 alert(obj_retorno.resposta);
  210.                                 toolbar_tree.enableItem("novo");
  211.                                 tree_dirs.deleteChildItems(0);
  212.                                 tree_dirs.loadXML("documentos_gerenciador.aspl?sessao=geraxml");
  213.                                 toolbar_tree.disableItem("excluir");// desabilita botao ate que um dir seja selecionado para evitar callback com erro
  214.                                 layout_explorer.cells("a").progressOff(); // finaliza efeito de loading
  215.                             }
  216.                             else
  217.                             {
  218.                                 alert(loader.xmlDoc.responseText);
  219.                                 toolbar_tree.enableItem("novo");
  220.                                 layout_explorer.cells("a").progressOff(); // finaliza efeito de loading
  221.                             }
  222.                         });
  223.                     }
  224.                     else
  225.                     {
  226.                         alert("Você não tem permissão para apagar esse diretório");
  227.                         layout_explorer.cells("a").progressOff(); // finaliza efeito de loading
  228.                     }
  229.                 }
  230.             }
  231.         });
  232.         /**
  233.          * Vamos criar os botões da toolbar que ficará sobre a célula ¨a¨ da aplicação
  234.          */
  235.         toolbar_tree.addButton("novo", 0, "", "folder.gif", "folder.gif"); // botao criar diretório
  236.         //toolbar_tree.addButton("novoarquivo", 1, "", "upload.png", "upload.png"); // botao upload de arquivos
  237.         toolbar_tree.addSeparator("sep2", 4); // separador
  238.         toolbar_tree.addButton("excluir", 5, "", "excluir.png", "excluir.png"); // botao excluir diretório
  239.         /**
  240.          * desabilita o botao excluir ate que um dir seja selecionado para evitar callback com erro
  241.          */
  242.         toolbar_tree.disableItem("excluir");
  243.                
  244.         /**
  245.          * Vamos criar o TreeView da aplicação utlizando o compoenente DHTMLX TREE
  246.          * que ficará na celulá ¨a¨ da aplicação
  247.          */
  248.         tree_dirs = layout_explorer.cells("a").attachTree(); // appenda o tree a celula A do layout
  249.         tree_dirs.setImagePath("codebase/imgs/csh_vista/"); //====> dir de imgs base para o objeto
  250.         /**
  251.          * O treeview precisa ser alimentado com as informações dos diretórios para parseá-los na telas
  252.          * assim, utlizaremos XML como é por default na lib
  253.          */
  254.         tree_dirs.loadXML("../cgi-bin/tree_files.pl");
  255.         /**
  256.          * escuta evento click nos dirs presente no treeview
  257.          */
  258.         tree_dirs.setOnClickHandler(function(id)
  259.         {
  260.             layout_explorer.cells("b").progressOn();
  261.             explorer.carregadocumentos(id);
  262.             toolbar_tree.enableItem("excluir");// desabilita botao ate que um file seja selecionado para evitar callback com erro
  263.             toolbar_files.disableItem("abrir");// desabilita botao ate que um file seja selecionado para evitar callback com erro
  264.             toolbar_files.disableItem("baixar");// desabilita botao ate que um file seja selecionado para evitar callback com erro
  265.             toolbar_files.disableItem("excluir");// desabilita botao ate que um file seja selecionado para evitar callback com erro
  266.         });
  267.                
  268.         //======> BARRA DE FERRAMENTAS SUPERIOR A EXIBICAO DOS FILES
  269.         toolbar_files = layout_explorer.cells("b").attachToolbar();// appenda a barra de ferramentas sobre o dataview de files. Celula B do layout
  270.         toolbar_files.setIconsPath("codebase/imgs/"); //====> dir de imgs base para o objeto
  271.         // escuta evento click nos botoes da barra de ferramentas sobre o dataview
  272.         toolbar_files.attachEvent("onClick", function(id)
  273.         {
  274.             var idarquivo=documentos_files.getSelectedId();
  275.             var arquivo = documentos_files.getItemDataObject(idarquivo);
  276.             var nome = arquivo.getAttribute("name");
  277.             var tipo = arquivo.getAttribute("tipo");
  278.             var tamanho = arquivo.getAttribute("filesize");
  279.             var path = arquivo.getAttribute("path");
  280.             var pathm = arquivo.getAttribute("pathm");
  281.            
  282.             //==== se o id do botao for eq
  283.             if(id=="baixar")// baixar file
  284.             {
  285.                 window.open("gerenciadordearquivos_download.asp?file="+nome+"&path="+path+"&name="+nome+"","","");
  286.             }
  287.             //==== se o id do botao for eq
  288.             else if(id=="abrir") // visualizar file
  289.             {      
  290.                 if(tipo=='jpg' || tipo=='png' || tipo=='gif' || tipo=='pdf' || tipo=='swf' || tipo=='txt') // se forem files do tipo "legiveis" pelo browser
  291.                 {
  292.                     var objeto="janelaabrir"+nome;
  293.                     var txtjanela=nome;
  294.                     var idjanela="janela_abrir"+nome;
  295.                     var titulotask="Arquivo: "+nome+" | tipo: "+tipo+" | tamanho: "+tamanho+" KB | local: "+pathm+"";
  296.                     var icone="arquivo_abrir.png";
  297.                     var tipolayout="1C";
  298.                     var wlargura=250;
  299.                     var waltura=300;
  300.                     var tipoconteudo="iframe";
  301.                     var url=pathm+"/"+nome;
  302.                     //=======> ABRE VISUALIZACAO DO FILE
  303.                     explorer.visualizaarquivo(objeto,txtjanela,idjanela,titulotask,icone,tipolayout, wlargura, waltura, tipoconteudo, url);
  304.                 }
  305.                 else // SE NAO FOR LEGIVEL PELO BROWSER
  306.                 {
  307.                     // BAIXA ARQUIVO
  308.                     window.open("gerenciadordearquivos_download.asp?file="+nome+"&path="+path+"&name="+nome+"","","");
  309.                 }
  310.             }
  311.             else if(id=="excluir")// exclui arquivo
  312.             {
  313.                 //confirma exclusao
  314.                 if (window.confirm('Deseja realmente excluir?'))
  315.                 {
  316.                         //======> exclui o file
  317.                         explorer.excluirarquivo();
  318.                 }
  319.             }
  320.         });
  321.         /**
  322.          * Vamos criar os botões da toolbar que ficará sobre a célula ¨a¨ da aplicaçã
  323.          */
  324.         toolbar_files.addButton("abrir", 4, "abrir", "arquivo_abrir.png", "arquivo_abrir.png"); // botao abrir file
  325.         toolbar_files.addButton("baixar", 5, "baixar", "download.png", "download.png"); // botao baixar file
  326.         toolbar_files.addButton("excluir", 6, "excluir", "excluir.png", "excluir.png"); // botao excluir file
  327.         toolbar_files.disableItem("abrir"); // desabilita botao ate que um file seja selecionado para evitar callback com erro
  328.         toolbar_files.disableItem("baixar");// desabilita botao ate que um file seja selecionado para evitar callback com erro
  329.         toolbar_files.disableItem("excluir");// desabilita botao ate que um file seja selecionado para evitar callback com erro
  330.                
  331.         //===========> barra de status do modulo
  332.         barra_status = layout_explorer.attachStatusBar();
  333.         barra_status.setText("usuário:  | aplicativo:  | módulo:  | ");
  334.     };
  335.  
  336.     this.upload = function(txtjanela,idjanela,titulotask,icone,id,diretorio)
  337.     {
  338.         //==> para futura implementacao de upload usando o DHTMLX Vault
  339.     };
  340.    
  341.     /**
  342.      * Este método é responsável por selecionar o diretório arquivo no momento e alimentar o componente
  343.      * DHTMLX FOLDER da célula ¨b¨ da aplicação reponsável por listar os arquivos contido no diretório
  344.      */
  345.     this.carregadocumentos = function(oque)
  346.     {
  347.         /**
  348.          * pega o diretório ativo selecionado
  349.         */
  350.         var diretorio=tree_dirs.getItemText(oque);
  351.         /**
  352.          * Cria, na célula ¨b¨ do layout principal, o objeto responsavel pela exibicao dos arquivos presentes no diretório selecionado
  353.          * utilizando o componente DHTMLX FOLDER e
  354.         */
  355.         documentos_files=layout_explorer.cells("b").attachFolders();
  356.         /**
  357.          * Seta o tipo de listagem dos arquivos
  358.          * tipos = ftiles ,  F-table , ficon
  359.         */
  360.         documentos_files.setItemType("ftiles");
  361.         /**
  362.          * seta o diretorio home onde estao as imagens utilidas para representar o mimetype dos arquivos
  363.         */
  364.         documentos_files.setUserData("icons_src_dir", "codebase/imgs");
  365.         documentos_files.enableSelection(2);
  366.         /**
  367.          * Chama o XML que alimentará o componente de acordo com o diretório selecionado
  368.         */
  369.         if(oque=="documentos")
  370.         {
  371.             documentos_files.loadXML("../cgi-bin/folder_files.pl?diretorio=raiz", "codebase/types/ftiles.xsl");
  372.         }
  373.         else
  374.         {
  375.             documentos_files.loadXML("../cgi-bin/folder_files.pl?diretorio="+diretorio+"", "codebase/types/ftiles.xsl");
  376.         }
  377.         /**
  378.          * habilita o evento indicando o carregamento 100% dos arquivos dentro do componente FOLDER
  379.         */
  380.         documentos_files.attachEvent("onXLE", function(itemId){
  381.             //alert("Arquivos do processo carregados");
  382.             /**
  383.              * finaliza efeito de loading sobre a célula ¨b¨ do layout principal
  384.             */
  385.             layout_explorer.cells("b").progressOff();
  386.         });
  387.         /**
  388.          * Habilita evento onclick nos arquivos listados na FOLDER
  389.         */
  390.         documentos_files.attachEvent("onclick", function(itemId)
  391.         {
  392.             arquivoselecionado=itemId;
  393.             /**
  394.              * habilita botoes de funcoes do arquivo na TOOLBAR que fica sobre a FOLDER listando os arquivos
  395.             */
  396.             toolbar_files.enableItem("abrir");
  397.             toolbar_files.enableItem("baixar");
  398.             toolbar_files.enableItem("excluir");
  399.         });
  400.         /**
  401.          * Habilita o evento ondblclick nos arquivos listados na FOLDER
  402.          * ao duplo clique, abre-se o documento
  403.         */
  404.         documentos_files.attachEvent("ondblclick", function(itemId){
  405.             explorer.abredocumento(itemId);
  406.         });
  407.     };
  408.    
  409.     /**
  410.      * Este método será utlizado para abrir arquivo sempre que clicado duas vezes sobre o arquivo
  411.      */
  412.     this.abredocumento = function(itemId)
  413.     {
  414.         /**
  415.          * Pega o arquivo selecionado na FOLDER
  416.         */
  417.         var arquivo = documentos_files.getItemDataObject(itemId);
  418.         /**
  419.          * Lê atributos do arquivo
  420.          * Os atributos estão sendo informados pelo XML que alimenta a FOLDER
  421.         */
  422.         var nome = arquivo.getAttribute("name");
  423.         var tipo = arquivo.getAttribute("tipo").toLowerCase();
  424.         var tamanho = arquivo.getAttribute("filesize");
  425.         var path = arquivo.getAttribute("path");
  426.         var pathm = arquivo.getAttribute("pathm");
  427.         var url=pathm+"/"+nome;
  428.         /**
  429.          * Se o arquivo for de mimetype interpretável pelo browser, ele será aberto dentro da própria
  430.          * aplicação dentro de uma nova WINDOW utilizando o DHTMLX WINDOW, se não, forçará o donwload do arquivo
  431.          * atraves de window.open(urldoarquivo)
  432.          */
  433.         if(tipo=='jpg' || tipo=='png' || tipo=='gif' || tipo=='pdf' || tipo=='swf' || tipo=='txt' || tipo=='html' || tipo=='htm')
  434.         {
  435.             var objeto="janelaabrir"+nome;
  436.             var txtjanela=nome;
  437.             var idjanela="janela_abrir"+nome;
  438.             var titulotask="Arquivo: "+nome+" | tipo: "+tipo+" | tamanho: "+tamanho+" KB | local: "+pathm+"";
  439.             var icone="arquivo_abrir.png";
  440.             var tipolayout="1C";
  441.             var wlargura=250;
  442.             var waltura=300;
  443.             var tipoconteudo="iframe";
  444.             /**
  445.              * abre DHTMLX WINDOW para visualizacao do arquivo
  446.             */
  447.             explorer.visualizaarquivo(objeto,txtjanela,idjanela,titulotask,icone,tipolayout, wlargura, waltura, tipoconteudo, url);
  448.         }
  449.         else
  450.         {
  451.             /**
  452.              * força o download do arquivo ao tentar acessá-lo pelo browser em outra window do browser
  453.              * poderá sem implementando também da seguinte forma:
  454.              * self.location = url;
  455.             */
  456.             window.open(url,"","");
  457.         }
  458.     };
  459.    
  460.     /**
  461.      * Este método é responsável por criar uma nova WINDOW para exibir os arquivos que tenham um mimetype
  462.      * interpretável pelo browser
  463.      */
  464.     this.visualizaarquivo = function(objeto,txtjanela,idjanela,titulotask,icone,tipolayout, wlargura, waltura, tipoconteudo, url)
  465.     {
  466.         var aberta=strabertas.indexOf(idjanela);
  467.         /**
  468.          * Se a janela ainda nao estiver aberta
  469.          */
  470.         if(aberta==-1)
  471.         {
  472.             /**
  473.              * Adiciona o ID da janela na var placeholder que armazena os IDs das janelas abertas
  474.              */
  475.             strabertas=strabertas+""+idjanela+", ";
  476.             /**
  477.              * Cria nova janela utilizando o DHTMLX WINDOW
  478.              */
  479.             waux = InterfaceX.createWindow(idjanela, 100, 100, wlargura, waltura);         
  480.             InterfaceX.window(idjanela).progressOn();
  481.             /**
  482.              * Seta o título da janela de acordol com o nome do arquivo
  483.              */
  484.             waux.setText(txtjanela);
  485.             /**
  486.              * Adiciona o evento onClose á janela de exibição do aquivo que acabamos de criar
  487.              */
  488.             waux.attachEvent("onClose", function(win)
  489.             {
  490.                 /**
  491.                  * remove o botao referente a janela que foi inserido na taskbar
  492.                  */
  493.                 taskbar.removeItem(idjanela);
  494.                 /**
  495.                  * Esconde a janela
  496.                  */
  497.                 InterfaceX.window(idjanela).hide();
  498.                 var estaaba=""+idjanela+", ";
  499.                 var auxabas=strabertas;
  500.                 /**
  501.                  * Remove o ID da janela da var placeholder que armazena os IDs das janelas abertas
  502.                  */
  503.                 strabertas=auxabas.replace(estaaba, "");
  504.             });
  505.             /**
  506.              * Atribuimos o evento onClick ao botao minimizar da janela
  507.             */
  508.             waux.button("park").attachEvent("onClick", function() {
  509.                  /**
  510.                   * Escondemos a janela ao clicar no botao minimize
  511.                  */
  512.                  InterfaceX.window(idjanela).hide();
  513.             });
  514.             /**
  515.              * Adicionamos um layout DHTMLX LAYOUT à janela
  516.             */
  517.             layout_window = waux.attachLayout(tipolayout);
  518.             /**
  519.              * Escondemos o header da celula do layout
  520.             */
  521.             layout_window.cells("a").hideHeader();
  522.             /**
  523.              * append da URL do arquivo a ser aberto na janela como iframe
  524.             */
  525.             layout_window.cells("a").attachURL(url);
  526.             /**
  527.              * seta o icone da janela
  528.             */
  529.             InterfaceX.window(idjanela).setIcon(icone, icone);
  530.             /**
  531.              * cria status bar para a janela
  532.             */
  533.             var barrastatus_janelaauxiliar = waux.attachStatusBar();
  534.             /**
  535.              * seta o texto da statusbar de acordo com o nome do file
  536.             */
  537.             barrastatus_janelaauxiliar.setText(titulotask);
  538.             /**
  539.              * adiciona um novo botao à taskbar referente a janela
  540.             */
  541.             taskbar.addButton(idjanela, 2, txtjanela, icone, icone);
  542.             /**
  543.              * finaliza efeito de loading da janela
  544.             */
  545.             InterfaceX.window(idjanela).progressOff();
  546.         }
  547.         else
  548.         {
  549.             alert("Esta janela já está aberta!");
  550.         }
  551.     };
  552.    
  553.    
  554.     /**
  555.      * método responsável pela exclusão de arquivos
  556.      * Propositalmente, esse método estára incompleto a fim do leitor utilizá-lo como um ¨home work¨ sobre o assunto
  557.      * terminando, por conta, própria a implementação
  558.      *
  559.      * O arquivo exclui_file.pl não será feito e fica a cargo do leitor fazer ou não
  560.     */
  561.     this.excluirarquivo = function()
  562.     {
  563.         /**
  564.          * desabilita botoes de funcoes para o arquivo ja que o mesmo será excluído
  565.          * evita erros de callbacks referentes a arquivos que nao existem mais
  566.         */
  567.         toolbar_files.disableItem("abrir");
  568.         toolbar_files.disableItem("baixar");
  569.         toolbar_files.disableItem("excluir");
  570.         /**
  571.          * Lê atributos do arquivo
  572.         */
  573.         var idarquivo=documentos_files.getSelectedId();
  574.         var arquivo = documentos_files.getItemDataObject(idarquivo);
  575.         var nome = arquivo.getAttribute("name");
  576.         var path = arquivo.getAttribute("path");
  577.         var diretorio;
  578.         var ddiretorio=tree_dirs.getSelectedItemText();
  579.         /**
  580.          * seta a localização do arquivo
  581.         */
  582.         if(ddiretorio=="documentos")
  583.         {
  584.             diretorio="raiz";
  585.         }
  586.         else
  587.         {
  588.             diretorio=tree_dirs.getSelectedItemText();
  589.         }
  590.         /**
  591.          * seta a string URL que será enviada como POST contendo os dados do arquivo a ser excluido
  592.         */
  593.         var postexclui="arquivo="+nome+"&arquivo_path="+path+"";
  594.         /**
  595.          * realiza requisicao ajax
  596.         */
  597.         dhtmlxAjax.post("../cgi-bin/exclui_file.pl", encodeURI(postexclui), function(loader)
  598.         {
  599.             /**
  600.              * transforma a string de reposta retornada pelo servidor em JSON
  601.             */
  602.             var obj_retorno = eval('(' + loader.xmlDoc.responseText + ')'); // evaluate a string vinda no ajax em um obj JSON
  603.            
  604.             if(obj_retorno.status=="sucesso")
  605.             {
  606.                 alert(obj_retorno.resposta);
  607.                 /**
  608.                  * recarrega o FOLDER na celula ¨b¨ do layout principal
  609.                 */
  610.                 documentos_files.clearAll();
  611.                 documentos_files.loadXML("../cgi-bin/folder_files.pl?diretorio="+diretorio+"");
  612.                 //InterfaceX.window(idjanela).progressOff(); // finaliza efeito de loading
  613.             }
  614.             else if(obj_retorno.status=="erro")
  615.             {
  616.                 window.parent.notificaerro(obj_retorno.resposta);
  617.                 /**
  618.                 * re-habilita botoes de funcoes para o arquivo ja que o mesmo nao foi excluido
  619.                    */  
  620.                 toolbar_files.enableItem("abrir");
  621.                 toolbar_files.enableItem("baixar");
  622.                 toolbar_files.enableItem("excluir");
  623.                 //InterfaceX.window(idjanela).progressOff(); // finaliza efeito de loading
  624.             }
  625.         });
  626.     };
  627. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement