Changeset 1124 in main


Ignore:
Timestamp:
05/24/12 10:54:05 (7 years ago)
Author:
zali
Message:

Document file : merge file display and file add pages. Select/Unselect? buttons added. Translations added for text generated via javascript

Location:
trunk/openPLM
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/locale/es/LC_MESSAGES/django.po

    r1077 r1124  
    15251525msgstr "BORRAR" 
    15261526 
     1527#: templates/docuemnts/files.html:77 
     1528msgid "CHECK ALL" 
     1529msgstr "SELECCIONNAR TODO" 
     1530 
     1531msgid "UNCHECK ALL" 
     1532msgstr "INSELECCIONNAR TODO" 
     1533 
    15271534#: templates/documents/files.html:71 
    15281535msgid "Locked" 
     
    15751582 
    15761583#: templates/documents/files_add.html:7 
    1577 msgid "Add new file / Check-in file :" 
    1578 msgstr "Añadir archivo/ Check-in de archivo :" 
     1584msgid "Add new files / Check-in file :" 
     1585msgstr "Añadir archivos / Check-in de archivo :" 
     1586 
     1587 
     1588#: templates/documents/files_add.htlm:37 
     1589msgid "Select at least one file" 
     1590msgstr "Selecciona al menos un archivo" 
     1591 
     1592msgid "A STEP file is already linked to this document." 
     1593msgstr "Un fichiero STEP es ya relacionado con este documento." 
     1594 
     1595msgid "A file named " 
     1596msgstr "Un archivo nombrado " 
     1597 
     1598msgid "is already linked to this document." 
     1599msgstr "ya es relacionado a este documento" 
     1600 
     1601msgid "You have already selected the file" 
     1602msgstr "Ya ha seleccionado el fichiero" 
     1603 
     1604msgid "for upload" 
     1605msgstr "para cargarlo" 
     1606 
     1607msgid "remove the file from the queue" 
     1608msgstr "quite el archivo de la coleta" 
     1609 
     1610msgid "waiting" 
     1611msgstr "en espera" 
     1612 
     1613msgid "Your upload(s) failed" 
     1614msgstr "Su(s) carga(s) fue suspendido" 
     1615 
     1616msgid "Try again" 
     1617msgstr "Repita" 
     1618 
     1619msgid "maybe with less files. " 
     1620msgstr "quizas con menos fichieros. " 
     1621 
     1622msgid "You are checking-in for " 
     1623msgstr "Està haciendo check-in de " 
     1624 
     1625msgid "You must add a file with this name." 
     1626msgstr "Tiene que anadir un fichiero con este nombre." 
     1627 
     1628msgid "Show/Hide the upload form" 
     1629msgstr "Hacer visible/ esconder the cargado form" 
     1630 
     1631msgid "Check-in for file " 
     1632msgstr "Check-in de fichiero " 
     1633 
     1634msgid "You can only upload files, but you wont get progress of this upload" 
     1635msgstr "Puede solo cargar fichieros, pero no tendrà progresiòn de la carga" 
    15791636 
    15801637#: templates/documents/parts.html:18 
  • trunk/openPLM/locale/fr/LC_MESSAGES/django.po

    r1067 r1124  
    14891489msgstr "DETRUIRE" 
    14901490 
     1491#: templates/docuemnts/files.html:77 
     1492msgid "CHECK ALL" 
     1493msgstr "TOUT SÉLECTIONNER" 
     1494 
     1495msgid "UNCHECK ALL" 
     1496msgstr "TOUT DÉ-SELECTIONNER" 
     1497 
    14911498#: templates/documents/files.html:71 
    14921499msgid "Locked" 
     
    15391546 
    15401547#: templates/documents/files_add.html:7 
    1541 msgid "Add new file / Check-in file :" 
    1542 msgstr "Ajouter nouveau fichier / Check-in fichier :" 
     1548msgid "Add new files / Check-in file :" 
     1549msgstr "Ajouter de nouveaux fichiers / Check-in fichier :" 
     1550 
     1551#: templates/documents/files_add.htlm:37 
     1552msgid "Select at least one file" 
     1553msgstr "Sélectionnez au moins un fichier" 
     1554 
     1555msgid "A STEP file is already linked to this document." 
     1556msgstr "Un fichier STEP est déjà attaché à ce document." 
     1557 
     1558msgid "A file named " 
     1559msgstr "Un fichier " 
     1560 
     1561msgid "is already linked to this document." 
     1562msgstr "est déjà lié au document" 
     1563 
     1564msgid "You have already selected the file" 
     1565msgstr "Vous avez déjà sélectionnez le fichier" 
     1566 
     1567msgid "for upload" 
     1568msgstr "pour l'envoyer" 
     1569 
     1570msgid "remove the file from the queue" 
     1571msgstr "supprime le fichier de la liste d'attente" 
     1572 
     1573msgid "waiting" 
     1574msgstr "en attente" 
     1575 
     1576msgid "Your upload(s) failed" 
     1577msgstr "Votre(vos) envoi(s) ont échoué" 
     1578 
     1579msgid "Try again" 
     1580msgstr "Recommencez" 
     1581 
     1582msgid "maybe with less files. " 
     1583msgstr "peut-être avec moins de fichiers. " 
     1584 
     1585msgid "You are checking-in for " 
     1586msgstr "Vous êtes en train de télécharger " 
     1587 
     1588msgid "You must add a file with this name." 
     1589msgstr "Vous devez sélectionnez un fichier avec ce nom." 
     1590 
     1591msgid "Show/Hide the upload form" 
     1592msgstr "Affiche/Masque le formulaire d'envoi de fichier" 
     1593 
     1594msgid "Check-in for file " 
     1595msgstr "Check-in pour " 
     1596 
     1597msgid "You can only upload files, but you wont get progress of this upload" 
     1598msgstr "Vous ne pourrez qu'envoyer des fichiers. La progression de l'envoi ne sera pas affichée" 
    15431599 
    15441600#: templates/documents/parts.html:18 
     
    17221778msgstr "Valider" 
    17231779 
     1780#: templates/snippets/undo_form.html: 18 
     1781msgid "Upload" 
     1782msgstr "Télécharger" 
     1783 
    17241784#: templates/import/done.html:6 
    17251785msgid "Data have been successfully imported." 
  • trunk/openPLM/media/css/files.css

    r1103 r1124  
     1/*text that indicate which upload form is displayed (add files or check-in)*/ 
     2#add_text{ 
     3    cursor:pointer; 
     4} 
     5 
     6/*style for list of files selected*/ 
     7#div_files{ 
     8    margin : 1%; 
     9    display:table; 
     10} 
     11 
    112#div_files div{ 
    2     margin-right:10px; 
    3     padding : 10px;  
    413    border-style:groove; 
    514    border-width: 2px; 
     
    716} 
    817 
     18.file_p{ 
     19    padding : 10px;  
     20} 
     21 
     22/****************/ 
    923.warning{ 
    1024    color: black; 
     
    2135    font-weight: bold; 
    2236    margin: 20px 0; 
    23     padding: 5px;  
     37    padding: 5px; 
    2438    border-radius: 4px; 
    2539    background-color: #ED7F10; 
    2640} 
    2741 
    28 form.form_queue{ 
     42.hidden{ 
    2943    display:none; 
    3044} 
  • trunk/openPLM/media/js/file.js

    r1103 r1124  
    1414    var input = $("<input type='file' name='filename"+num+"' id='id_filename"+num+"'/ >"); 
    1515    input.change(function(){ 
    16         var key=this.files[0].name.replace(".","_"); 
    17         if(files_info[key]==undefined){ 
    18             add_file(this); 
    19         }else{ 
    20              alert("vous avez déjà selectionné ce fichier"); 
    21         } 
     16        var f_name = this.files[0].name; 
     17        if(can_add_file(f_name)){ 
     18            $(".up_fail").remove(); 
     19            $("span.warning").remove(); 
     20            add_file(this); 
     21        } 
    2222    }); 
    2323    var td_input = $("<td></td>"); 
     
    3232function add_in_queue_form(input){ 
    3333    hide(input); 
    34     $('form.form_queue').append(input); 
     34    $('form.hidden').append(input); 
    3535} 
    3636 
     
    4848    var group = 3; 
    4949    if(str_size.length < 9){ 
    50         group = parseInt(str_size.length/3); 
     50        group = parseInt(str_size.length/3); 
    5151    } 
    5252    if (group*3 >= str_size.length){ 
    53         group = group-1; 
     53        group = group-1; 
    5454    } 
    5555    var before_comma = str_size.length - group*3; 
    5656    ret+=str_size.substr(0,before_comma+1); 
    5757    if(group*3 < str_size.length){ 
    58         ret+="."+str_size.substr(before_comma+1,1); 
     58        ret+="."+str_size.substr(before_comma+1,1); 
    5959    } 
    6060    aux_size = Math.round(parseFloat(ret)); 
     
    6262    ret+= "."+aux_size.toString().substr(before_comma,1); 
    6363    switch(group){ 
    64         case 1 : 
    65             ret+=" KB"; 
    66             break; 
    67         case 2 : 
    68             ret+=" MB"; 
    69             break; 
    70         case 3 : 
    71             ret+=" GB"; 
    72             break; 
    73     } 
    74     return ret; 
     64        case 1 : 
     65            ret+=" KB"; 
     66            break; 
     67        case 2 : 
     68            ret+=" MB"; 
     69            break; 
     70        case 3 : 
     71            ret+=" GB"; 
     72            break; 
     73    } 
     74    return ret; 
     75} 
     76 
     77function can_add_native(file_name){ 
     78    var ret; 
     79    var xhr_nat= getXHR(); 
     80    var url=location.href; 
     81    url=url.replace("/files/","/files/add/?file_name="+file_name); 
     82    xhr_nat.open("GET",url,false); 
     83    xhr_nat.onreadystatechange=function(){ 
     84        if(xhr_nat.readyState == 4){ 
     85            ret=xhr_nat.responseText.split(":"); 
     86        } 
     87    } 
     88    xhr_nat.send(null); 
     89    return ret; 
     90} 
     91 
     92function can_add_stp(){ 
     93    if((doc_type.toLowerCase()=="document3d")&&(has_stp_file())){ 
     94        return false; 
     95    } 
     96    return true; 
     97} 
     98 
     99function can_add_file(file_name){ 
     100    var msg_error=""; 
     101    if((file_linked(file_name)==false)&&(file_selected(file_name)==false)){ 
     102        if((is_stp_file(file_name)==false)||(can_add_stp())){ 
     103            return true; 
     104        }else{ 
     105            msg_error=trans["A STEP file is already linked to this document."]; 
     106        } 
     107    }else{ 
     108        if(file_linked(file_name)){ 
     109            msg_error=trans["A file named "]+file_name+" "+trans["is already linked to this document."]; 
     110        }else{ 
     111            msg_error=trans["You have already selected the file"]+" "+file_name+" "+trans["for upload"]+"."; 
     112        } 
     113    } 
     114    if($(".up_fail").length == 0){ 
     115        var div_error=$("<div class='up_fail'></div>"); 
     116        $("#fileupload").after(div_error); 
     117    } 
     118    $(".up_fail").text(msg_error); 
     119    return false; 
    75120} 
    76121 
    77122//add a file in the queue for uploading 
    78123function add_file(input){ 
    79     if (nbr_files==0) 
    80         $("#div_files > div").remove(); 
     124    if (nbr_files==0){ 
     125        $("#div_files > div").remove(); 
     126    } 
    81127 
    82128    //create line where the progress of the upload will be display for this input 
    83129    var f_name = input.value; 
     130    if(f_name.substr(0, 12) == "C:\\fakepath\\"){ 
     131        f_name=f_name.substr(12); 
     132    } 
    84133    var key= f_name.replace(".","_"); 
    85134    var size = input.files[0].size; 
    86     var file_line = $("<div id='"+key+"'>"+input.files[0].name+"("+render_size(size)+")"+": <span class='progress'><span class='text'></span></span></div>"); 
     135    var mod_2 = nbr_files%2; 
     136    var file_line = $("<div id='"+key+"' class='file_p'>"+input.files[0].name+"("+render_size(size)+") "+"</div>"); 
     137    var progress = $("<span class='progress'><span class='text'></span></span>"); 
     138    file_line.append(progress); 
    87139 
    88140    //create link to delete this file from the queue for upload 
     
    91143        del_file(file_line,input); 
    92144    }); 
    93     var del_img = "<img src='/media/img/delete.png' alt='delete' title='remove the file from the queue'>"; 
     145    var del_img = "<img src='/media/img/delete.png' alt='delete' title='"+trans["remove the file from the queue"]+"'>"; 
    94146    link.append(del_img); 
    95     file_line.append(link); 
    96  
     147    var span_link =$("<span></span>"); 
     148    span_link.append(link); 
     149    file_line.append(span_link); 
    97150    //add the file in the list of files to upload 
    98151    $("#div_files").append(file_line); 
    99     add_in_queue_form(input); 
    100     new_input_file(); 
     152    if($("#fileupload").attr("action")=="."){ 
     153        add_in_queue_form(input); 
     154        new_input_file(); 
     155    } 
    101156    nbr_files+=1; 
    102157    var f_id = gen_uuid(); 
     
    121176 
    122177 
    123 /***********************************************************************/ 
    124  
    125 //generate random id to get the upload progress 
    126 function gen_uuid() { 
    127     var uuid = ""; 
    128     for (var i=0; i < 32; i++) { 
    129         uuid += Math.floor(Math.random() * 16).toString(16);  
    130     } 
    131     return uuid; 
    132 } 
    133  
    134 //return percentage of the progress 
    135 function progress_bar(uploaded, total){ 
    136     var progress_w = uploaded * 100/total; 
    137     return progress_w; 
    138 } 
    139  
    140 //return an XMLHttpRequest 
    141 function getXHR(){ 
    142     var xhr=null; 
    143          
    144     if (window.XMLHttpRequest || window.ActiveXObject) { 
    145         if (window.ActiveXObject) { 
    146             try { 
    147                 xhr = new ActiveXObject("Msxml2.XMLHTTP"); 
    148             } catch(e) { 
    149                 xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
    150             } 
    151         } else { 
    152                 xhr = new XMLHttpRequest();  
    153         } 
    154     } else { 
    155         //alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..."); 
    156         return null; 
    157     } 
    158  
    159     return xhr; 
    160 } 
    161  
    162  
    163 //returns ids of the files to upload 
    164 function ids_to_data(){ 
    165     var ret=""; 
    166     var keys = files_info.key(); 
    167     $.each(keys,function(index,val){ 
    168         ret += files_info[val].f_name+"="+files_info[val].p_id+"&"; 
    169     }); 
    170     ret = ret.substr(0,ret.length-1); 
    171     return ret; 
    172 } 
    173  
    174 //contains the value returns for the setTimeOut call on update_progress_info 
    175 var t; 
     178/******************************************************************************************************************** 
     179**********      Handle files informations (linked and selected files : name, size (total and uploaded)     ********** 
     180********************************************************************************************************************/ 
     181 
     182//type of the current document 
     183var doc_type = ""; 
    176184 
    177185//Array that contains path and size of eache files selected for upload 
    178186var files_info=new Array(); 
    179 files_info.features=['features','size','key','remove']; 
     187files_info.features=['features','size','key','remove','removeAll']; 
    180188 
    181189files_info.key=function(){ 
     
    214222} 
    215223 
    216 /***************************************************************** 
    217 **              Track and update progress info                  ** 
    218 *****************************************************************/ 
     224files_info.removeAll=function(){ 
     225   var ret = new Array(); 
     226   $.each(files_info.features, function (ind,fe){ 
     227       ret[fe]=files_info[fe]; 
     228   }); 
     229   return ret; 
     230} 
     231 
     232function getSizeSelected(){ 
     233    var ret=0; 
     234    var keys = files_info.key(); 
     235    $.each(keys, function(id, ke){ 
     236        ret+=files_info[ke].size; 
     237    }); 
     238    return ret; 
     239} 
     240 
     241function getUpSize(){ 
     242    var ret = 0; 
     243    var keys = files_info.key(); 
     244    $.each(keys, function(id, ke){ 
     245        ret+=files_info[ke].uploaded; 
     246    }); 
     247    return ret; 
     248} 
     249 
     250function file_selected(file_name){ 
     251    var key= file_name.replace(".","_"); 
     252    return (files_info[key]!=undefined); 
     253} 
     254var files_linked= new Array(); 
     255 
     256function file_linked(file_name){ 
     257    return ($.inArray(file_name,files_linked)!=-1); 
     258} 
     259 
     260function is_stp_file(file_name){ 
     261    var ext = file_name.substr(-4).toLowerCase(); 
     262    return ($.inArray(ext, [".stp",".step"])!=-1); 
     263} 
     264 
     265function has_stp_file(){ 
     266    var ret = false; 
     267    $.each(files_linked, function(ind,val){ 
     268        if(is_stp_file(val)){ 
     269            ret = true; 
     270        } 
     271    }); 
     272    return ret; 
     273}; 
     274 
     275 
     276/************************************************************************ 
     277**********      Handle and track progress for file upload      ********** 
     278************************************************************************/ 
     279 
     280//contains the value returns for the setTimeOut call on update_progress_info 
     281var t; 
     282 
     283var go_to =""; 
     284 
     285var totalF_Size =0; 
     286 
     287var totalUpSize =  0; 
     288//xmlhttprequest use to launch the upload 
     289var xhr = getXHR(); 
     290 
     291//generate random id to get the upload progress 
     292function gen_uuid() { 
     293    var uuid = ""; 
     294    for (var i=0; i < 32; i++) { 
     295        uuid += Math.floor(Math.random() * 16).toString(16);  
     296    } 
     297    return uuid; 
     298} 
     299 
     300//return percentage of the progress 
     301function progress_bar(uploaded, total){ 
     302    var progress_w = uploaded * 100/total; 
     303    return progress_w; 
     304} 
     305 
     306 
     307//returns ids of the files to upload in the form of sets of filename & ids 
     308function ids_to_data(){ 
     309    var ret=""; 
     310    var keys = files_info.key(); 
     311    $.each(keys,function(index,val){ 
     312        ret += val+"="+files_info[val].p_id+"&"; 
     313    }); 
     314    ret = ret.substr(0,ret.length-1); 
     315    return ret; 
     316} 
     317 
    219318 
    220319//indicate wether or not the upload is complete for a given file name 
     
    228327    var xhr2=getXHR(); 
    229328    var action = location.href; 
    230     action = action.split("?")[0]; 
    231     action=action.replace("/files/add","/files/_up"); 
     329    action = action.split("/files")[0]; 
     330    //action=action.replace("/files*","/files/_up"); 
     331    action+="/files/_up/"; 
    232332    action+="?X-Progress-ID="+files_info[key].p_id; 
    233333    action+="&f_size="+files_info[key].size; 
     
    248348                    aux_per=aux_per.split(".")[0]+"."+aux_per.split(".")[1].substr(0,2); 
    249349                } 
    250                 $("#"+key+" .progress .text").text(aux_per+"% ("+files_info[key].status+")"); 
     350                $("#"+key+" .progress .text").text(aux_per+"%"); 
    251351            } 
    252352            if(f_status=="linking"){ 
     
    265365//launch and track progress of upload file in the form f_form 
    266366function up_file(f_form){ 
     367    totalF_Size=getSizeSelected(); 
     368    totalUpSize=getUpSize(); 
    267369    var new_action = location.href; 
    268     new_action = new_action.replace("/files/add","/files/up"); 
     370    var form_action=""; 
     371    if($(f_form).attr("action")!="."){ 
     372        form_action= $(f_form).attr("action"); 
     373        form_action=form_action.substr(2); 
     374        new_action+="get_"+form_action; 
     375    }else{ 
     376        //new_action = new_action.replace("/files*","/files/up"); 
     377        new_action = new_action.split("/files")[0]+"/files/up/"; 
     378    } 
    269379    var ids_list = ids_to_data(); 
    270380    new_action +="?"+ids_list; 
    271381    function update_progress_info() { 
    272         var keys = files_info.key(); 
    273         $.each(keys, function (index,key_val){ 
    274             if(upload_end(key_val)==false){ 
    275                 update_progress(key_val); 
    276             }else{ 
    277                 $("#"+key_val).find("progress").attr("value",100); 
     382        var keys = files_info.key(); 
     383        $.each(keys, function (index,key_val){ 
     384            if(upload_end(key_val)==false){ 
     385                update_progress(key_val); 
     386            }else{ 
     387                $("#"+key_val).find("progress").attr("value",100); 
     388            } 
     389        }); 
     390        totalUpSize=getUpSize(); 
     391        var totalPercent = progress_bar(totalUpSize, totalF_Size); 
     392        $("#global").find("progress").attr("value",totalPercent); 
     393        var textTot = totalPercent.toString().split(".")[0]; 
     394        if(totalPercent.toString().split(".").length > 1){ 
     395            textTot+= "."+totalPercent.toString().split(".")[1].substr(0,2); 
     396        } 
     397        $("#global .progress .text").text(textTot+"%"); 
     398        t=window.setTimeout(update_progress_info, 1000); 
     399        if(go_to!=""){ 
     400            location.href=go_to; 
     401        } 
     402    } 
     403        t=window.setTimeout(update_progress_info, 1000); 
     404    xhr.onreadystatechange = function() { 
     405        if(xhr.readyState == 4){ 
     406            if(xhr.status==200) { 
     407                go_to = location.href; 
     408                //go_to = go_to.replace("/files*","/files"); 
     409                go_to = go_to.split("/files")[0]+"/files/"; 
     410            }else{ 
     411                var fail_div = $("<div class='up_fail'></div>"); 
     412                var span_text=trans["Your upload(s) failed"]+"!<br>"+trans["Try again"]; 
     413                if(nbr_files>1){ 
     414                    span_text+=" "+trans["maybe with less files. "]; 
     415                }else{ 
     416                    span_text+=". "; 
     417                } 
     418                fail_div.append(span_text); 
     419                $("#fileupload").after(fail_div); 
     420                $(".progress .text").text(" "); 
     421                $("progress").remove(); 
     422                $(".del_link").show(); 
     423                clearTimeout(t); 
     424            } 
     425        } 
     426    } 
     427    xhr.open("POST", new_action,true); 
     428    var data = new FormData(f_form); 
     429    xhr.send(data); 
     430    /*var data = new FormData(f_form); 
     431    $.ajax({ 
     432        type: "POST", 
     433        url: new_action, 
     434        data: data, 
     435        success: function(msg){ 
     436            go_to = location.href; 
     437            //go_to = go_to.replace("/files*","/files"); 
     438            go_to = go_to.split("/files")[0]+"/files/"; 
     439        } 
     440    });*/ 
     441} 
     442 
     443/*reset the upload: 
     444* - delete all files selected and hidden input files 
     445*/ 
     446function reset_upload(){ 
     447    $("a.del_link").click(); 
     448    nbr_files=0; 
     449    num_file=0; 
     450    files_info = files_info.removeAll(); 
     451    var table = $("#fileupload > table.Content"); 
     452    $("#fileupload > table.Content tr:first").remove(); 
     453    var input = $("<input type='file' name='filename' id='id_filename'/ >"); 
     454    input.change(function(){ 
     455        var f_name = this.files[0].name; 
     456        var up_f_name=$("#add_text").attr("checked-file"); 
     457         if(f_name!=up_f_name){ 
     458             if($(".up_fail").length==0){ 
     459                 var div_error=$("<div class='up_fail'></div>"); 
     460                 $("#fileupload").after(div_error); 
     461             } 
     462             $("#div_files > div").remove(); 
     463             nbr_files --; 
     464             $(".up_fail").text(trans["You are checking-in for "]+up_f_name+".\n "+trans["You must add a file with this name."]); 
     465         }else{ 
     466             $(".up_fail").remove(); 
     467             add_file(this); 
     468         } 
     469    }); 
     470    var td_input = $("<td></td>"); 
     471    td_input.append(input); 
     472    var tr_input = $("<tr><th><label for='id_filename'>Filename:</label></th></tr>"); 
     473    tr_input.append(td_input); 
     474    table.prepend(tr_input);  
     475} 
     476 
     477//get the appropriate XmlHttpRequest object 
     478function getXHR(){ 
     479    var xhr=null; 
     480         
     481    if (window.XMLHttpRequest || window.ActiveXObject) { 
     482        if (window.ActiveXObject) { 
     483            try { 
     484                xhr = new ActiveXObject("Msxml2.XMLHTTP"); 
     485            } catch(e) { 
     486                xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
    278487            } 
     488        } else { 
     489                xhr = new XMLHttpRequest();  
     490        } 
     491    } else { 
     492        return null; 
     493    } 
     494 
     495    return xhr; 
     496} 
     497 
     498var trans=[]; 
     499 
     500$(function(){ 
     501    $("#add_file_container").toggleClass("hidden"); 
     502    $("#add_form_file").toggleClass("hidden"); 
     503    var add_text= $("#add_text").text(); 
     504    $("#add_text").text(add_text.split(" / ")[0]); 
     505    $("#add_text").attr("title",trans["Show/Hide the upload form"]); 
     506 
     507    $("#_up").toggleClass("hidden"); 
     508    $("#_delete").toggleClass("hidden"); 
     509 
     510    $.each($(".check-in"),function(ind,val){ 
     511        var ref =$(val).parent().attr("href"); 
     512        $(val).parent().removeAttr("href"); 
     513        $(val).attr("action",ref); 
     514    }); 
     515 
     516    $("#add_text").click(function(){ 
     517        $("#add_form_file").toggleClass("hidden"); 
     518    }); 
     519 
     520    $(".check-in").click(function(){ 
     521        $("#fileupload").attr("action",$(this).attr("action")); 
     522        reset_upload(); 
     523        $("#add_form_file").removeClass("hidden"); 
     524        var line= $(this).parent().parent().parent(); 
     525        var f_name = line.find("td a:first").text(); 
     526        $("#add_text").text(trans["Check-in for file "]+f_name+":"); 
     527        $("#add_text").attr("checked-file",f_name); 
     528    }); 
     529 
     530    $("input[type='file']").change(function (){ 
     531        var f_name = this.files[0].name; 
     532        if(xhr!=null){ 
     533            var can_add = can_add_native(f_name); 
     534            if (can_add[0]=="true"){ 
     535                $(".up_fail").remove(); 
     536                var warning_msg= $("<div class='up_fail'></div>"); 
     537                $(warning_msg).text(can_add[1]); 
     538                $("#fileupload").after(warning_msg); 
     539                return; 
     540            } 
     541        } 
     542        if(can_add_file(f_name)){ 
     543            $(".up_fail").remove(); 
     544            add_file(this); 
     545        } 
     546        $("span.warning").remove(); 
     547    }); 
     548 
     549    $("#_delete").click(function(){ 
     550        //var file_lines = $("#div_files > div"); 
     551        $("a.del_link").click(); 
     552         
     553    }); 
     554 
     555    if(xhr!=null){ 
     556    //if the browser supports xmlhttprequest object 
     557        $("input[name='_undo']").click(function(){ 
     558            if(xhr.readyState!=0){ 
     559                xhr.onreadystatechange = function() {} 
     560                xhr.abort(); 
     561            } 
     562        }); 
     563        $("#_up").click(function(){ 
     564            $(".up_fail").remove(); 
     565            if(nbr_files==0){ 
     566                if($("#fileupload").find("span.warning").length==0){ 
     567                    $("#fileupload").find("input[type='file']").parent().append("<span class='warning'>"+trans["Select at least one file"]+"</span>"); 
     568                } 
     569                return; 
     570            } 
     571            var global_prog = $("<div style='margin-top:1%' id='global'>Total: </div>"); 
     572            global_prog.append("<span class='progress'><span class='text'></span></span>"); 
     573            $("#fileupload").after(global_prog); 
     574            $("#_delete").hide(); 
     575            $(".del_link").hide(); 
     576            $(".progress .text").text("0% (waiting)"); 
     577            $(".progress").prepend("<progress max=100 value=0></progress>"); 
     578            if($("#fileupload").attr("action")=="."){ 
     579                $('form.hidden')[0].action="."; 
     580                up_file($('form.hidden')[0]); 
     581            }else{ 
     582                up_file($("#fileupload")[0]); 
     583            } 
     584        }); 
     585    }else{ 
     586        //the browser does not support xmlhttprequest object 
     587        //if javascript is disabled, noscript tag will handle that 
     588        $("#fileupload").insertAfter("<span class='warning'>"+trans["You can only upload files, but you wont get progress of this upload"]+"</span>"); 
     589        $("#_up").click(function(){ 
     590            if(nbr_files==0){ 
     591                $("#fileupload").find("input[type='file']").parent().append("<span class='warning'>"+trans["Select at least one file"]+"</span>"); 
     592                return; 
     593            } 
     594            $('form.hidden')[0].action=location.href+"add/"; 
     595            $('form.hidden')[0].method="post"; 
     596            $('form.hidden')[0].submit(); 
    279597        }); 
    280         t=window.setTimeout(update_progress_info, 1000); 
    281         if(go_to!=""){ 
    282             location.href=go_to; 
    283         } 
    284     } 
    285     t=window.setTimeout(update_progress_info, 1000); 
    286     xhr.onreadystatechange = function() { 
    287         if(xhr.readyState == 4){ 
    288             if(xhr.status==200) { 
    289                 go_to = location.href; 
    290                 go_to = go_to.replace("/files/add","/files"); 
    291             }else{ 
    292                 var fail_div = $("<div class='up_fail'></div>"); 
    293                 var span_text="Your upload(s) failed!<br>Try again"; 
    294                 if(nbr_files>1){ 
    295                     span_text+=" maybe with less files. "; 
    296                 }else{ 
    297                     span_text+=". "; 
    298                 } 
    299                 fail_div.append(span_text); 
    300                 $("#fileupload").after(fail_div); 
    301                 $(".progress .text").text(" "); 
    302                 $("progress").remove(); 
    303                 $(".del_link").show(); 
    304                 clearTimeout(t); 
    305             } 
    306         }else{ 
    307         } 
    308     } 
    309     xhr.open("POST", new_action,true); 
    310     data = new FormData(f_form); 
    311     xhr.send(data); 
    312 } 
    313  
    314 var go_to =""; 
    315 var xhr = getXHR(); 
    316 $(function(){ 
    317     if(xhr!=null){ 
    318     //if the browser has/supports xmlhttprequest object 
    319         $("input[type='file']").change(function (){ 
    320             $(".up_fail").remove(); 
    321             var key=this.files[0].name.replace(".","_"); 
    322             if(files_info[key]==undefined){ 
    323                 $("span.warning").remove(); 
    324                 add_file(this); 
    325             }else{ 
    326                 alert("vous avez déjà selectionner ce fichier"); 
    327             } 
    328         }); 
    329         $("input[name='_undo']").click(function(){ 
    330             if(xhr.readyState!=0){ 
    331                 xhr.onreadystatechange = function() {} 
    332                 xhr.abort(); 
    333             } 
    334         }); 
    335         $("#_up").click(function(){ 
    336             $(".up_fail").remove(); 
    337             if(nbr_files==0){ 
    338                 if($("#fileupload").find("span.warning").length==0){ 
    339                     $("#fileupload").find("input[type='file']").parent().append("<span class='warning'>Select at least one file</span>"); 
    340                 } 
    341                 return; 
    342             } 
    343             $(".del_link").hide(); 
    344             $(".progress .text").text("0% (waiting)"); 
    345             $(".progress").prepend("<progress max=100 value=0></progress>"); 
    346             up_file($('form.form_queue')[0]); 
    347         }); 
    348     } else{ 
    349         //the browser does not have/support xmlhttprequest object 
    350         //if javascript is disabled, noscript tag will handle that 
    351         $("#fileupload").insertAfter("<span class='warning'>You can only upload one file</span>"); 
    352         $("#_up").click(function(){ 
    353             if(nbr_files==0){ 
    354                 $("#fileupload").find("input[type='file']").parent().append("<span class='warning'>Select at least one file</span>"); 
    355                 return; 
    356             } 
    357             ("#fileupload").submit(); 
    358         }); 
    359598    } 
    360599}); 
  • trunk/openPLM/plmapp/views/main.py

    r1109 r1124  
    992992    else: 
    993993        formset = forms.get_file_formset(obj) 
    994  
     994    add_file_form = forms.AddFileForm() 
    995995    archive_form = forms.ArchiveForm() 
    996996     
     
    999999                'archive_form' : archive_form, 
    10001000                'deprecated_files' : obj.deprecated_files, 
     1001                'add_file_form': add_file_form, 
     1002                'document_type': obj_type, 
    10011003               }) 
    10021004    return r2r('documents/files.html', ctx, request) 
    10031005 
    10041006########################################################################################## 
     1007@csrf_protect 
    10051008@handle_errors(undo="..") 
    10061009def add_file(request, obj_type, obj_ref, obj_revi): 
     
    10151018        add_file_form = forms.AddFileForm(request.POST, request.FILES) 
    10161019        if add_file_form.is_valid(): 
    1017             obj.add_file(request.FILES["filename"]) 
     1020            for fkey, f in request.FILES.iteritems(): 
     1021                obj.add_file(request.FILES[fkey]) 
    10181022            return HttpResponseRedirect(obj.plmobject_url + "files/") 
    10191023    else: 
     1024        if 'file_name' in request.GET: 
     1025            f_name = request.GET['file_name'] 
     1026            f_name = f_name.encode("utf-8") 
     1027            ret = obj.has_standard_related_locked(f_name) 
     1028            print "%s : %s" % (f_name,ret) 
     1029            if ret==True: 
     1030                return HttpResponse("true:Native file has a standard related locked file.") 
     1031            else: 
     1032                return HttpResponse("false:") 
    10201033        add_file_form = forms.AddFileForm() 
     1034        files = forms.get_file_formset(obj) 
     1035        ctx.update({ 'files_list': files, }) 
    10211036    ctx.update({ 'add_file_form': add_file_form, }) 
    1022     return r2r('documents/files_add.html', ctx, request) 
     1037    ctx.update({ 'document_type': obj_type, }) 
     1038    return r2r('documents/files_add_noscript.html', ctx, request) 
    10231039 
    10241040########################################################################################## 
     
    10291045    return _up_file(request, obj_type, obj_ref, obj_revi) 
    10301046 
    1031 @handle_errors 
    10321047@csrf_protect 
     1048@handle_errors 
    10331049def _up_file(request, obj_type, obj_ref, obj_revi): 
    10341050    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi) 
     
    10541070        ret = str(os.path.getsize(f[0])) 
    10551071    if ret=="": 
    1056         ret="0 : waiting" 
     1072        ret="0:waiting" 
    10571073    else: 
    10581074        if ret==request.GET['f_size']: 
     
    10611077            ret += ":writing" 
    10621078    return HttpResponse(ret) 
    1063  
    10641079 
    10651080 
     
    14591474########################################################################################## 
    14601475###             Manage html pages for file check-in / check-out / download             ### 
    1461 ##########################################################################################     
    1462 @handle_errors 
     1476##########################################################################################  
     1477 
     1478@csrf_exempt 
     1479def get_checkin_file(request, obj_type, obj_ref, obj_revi, file_id_value): 
     1480    request.upload_handlers.insert(0, ProgressBarUploadHandler(request)) 
     1481    return checkin_file(request, obj_type, obj_ref, obj_revi,file_id_value) 
     1482    
     1483@handle_errors(undo="../..") 
     1484@csrf_protect 
    14631485def checkin_file(request, obj_type, obj_ref, obj_revi, file_id_value): 
    14641486    """ 
     
    14811503        checkin_file_form = forms.AddFileForm() 
    14821504    ctx['add_file_form'] =  checkin_file_form 
    1483     return r2r('documents/files_add.html', ctx, request) 
     1505    return r2r('documents/files_add_noscript.html', ctx, request) 
    14841506 
    14851507########################################################################################## 
  • trunk/openPLM/templates/documents/files.html

    r1094 r1124  
    44<!-- Manage html display in the Content div which correspond to the "files" menu --> 
    55 
     6{% block css %} 
     7<link type="text/css" href="/media/css/files.css" rel="Stylesheet" /> 
     8<style type="text/css"> 
     9.hidden{ 
     10    display:none; 
     11} 
     12</style>  
     13{% endblock %} 
    614{% block scripts %} 
    715 
    816    <script type="text/javascript"> 
    917        $(document).ready(function () { 
    10                 $("#dialog_check-out").dialog({ 
    11 modal: true, 
    12 autoOpen: false 
    13 }); 
    14                 $("a.check-out").click(function(e) { 
    15                     e.preventDefault(); 
    16                     var url = $(this).attr("href"); 
    17                     $("#dialog_check-out").dialog('option', 'buttons', { 
     18            $("#dialog_check-out").dialog({ 
     19                modal: true, 
     20                autoOpen: false 
     21            }); 
     22            $("a.check-out").click(function(e) { 
     23                e.preventDefault(); 
     24                var url = $(this).attr("href"); 
     25                $("#dialog_check-out").dialog('option', 'buttons', { 
    1826 
    19                         "CANCEL": function() { 
     27                    "CANCEL": function() { 
    2028                        $(this).dialog("close"); 
    21  
    22                         }, 
    23                         "CHECK-OUT": function() { 
     29                    }, 
     30                    "CHECK-OUT": function() { 
    2431                        $(location).attr('href',url);  
    2532                        $(this).dialog("close"); 
    26                         } 
     33                    } 
     34                 }); 
     35                $("#dialog_check-out").dialog(); 
     36                $("#dialog_check-out").dialog("open"); 
     37                return false; 
     38            }); 
    2739 
    28                         }); 
    29                     $("#dialog_check-out").dialog(); 
    30                     $("#dialog_check-out").dialog("open"); 
    31                     return false; 
    32                 }); 
     40            $("#s_all").click(function(){ 
     41                $("td.Content > input:checkbox").attr("checked",true); 
     42                $("#s_all").addClass("hidden"); 
     43                $("#des_all").removeClass("hidden"); 
     44            }); 
     45            $("#des_all").click(function(){ 
     46                $("td.Content > input:checkbox").attr("checked",false); 
     47                $("#s_all").removeClass("hidden"); 
     48                $("#des_all").addClass("hidden"); 
     49            }); 
    3350 
    34  
    35 }); 
    36 </script> 
     51        }); 
     52    </script> 
    3753 
    3854{% endblock scripts %} 
    3955 
    4056{% block content %} 
    41  
     57<div id="add_file_container" style="border-bottom: 2px dotted black; padding-bottom:1%; margin-bottom:1%" class="hidden"> 
     58{% include "documents/files_add.html" %} 
     59</div> 
    4260    {% if file_formset.total_form_count %} 
    4361        <form class="archive_form" method="GET" action="./archive/"> 
     
    4967        {% if is_owner and obj.is_editable %} 
    5068            {{ file_formset.management_form }} 
     69            <noscript> 
    5170            <a class="{{"Button"|button:"button-text-icon-primary"}}" href="./add/"> 
    5271                <span class="ui-button-icon-primary ui-icon ui-icon-document">&nbsp;</span> 
    5372                <span class="ui-button-text">{% trans "ADD" %}</span> 
    5473            </a> 
     74            </noscript> 
    5575            {% if file_formset.total_form_count %} 
    5676                <input type="submit" class="{{"Button"|button}}" value="{% trans "DELETE" %}"/> 
     77                <input type="button" class="{{"Button"|button}}" value="{% trans "CHECK ALL" %}" id="s_all"/> 
     78                <input type="button" class="{{"Button"|button}} hidden" value="{% trans "UNCHECK ALL" %}" id="des_all"/> 
    5779            {% endif %} 
    5880        {% else %} 
  • trunk/openPLM/templates/documents/files_add.html

    r1103 r1124  
    1 {% extends "base.html" %} 
     1 
    22{% load i18n plmapp_tags %} 
    33 
    44<!-- Manage html display in the Content div which correspond to the "doc-cad" menu + "add new"--> 
    55 
    6 {% block css %} 
    7 <link type="text/css" href="/media/css/files.css" rel="Stylesheet" />  
    8 {% endblock %} 
    9  
    10 {% block content %} 
    11     {% trans "Add new file / Check-in file :" %} 
     6<div id="add_text">{% trans "Add new files / Check-in file :" %}</div> 
     7<div id="add_form_file"> 
    128    {% with add_file_form as form %} 
    139        {% include "snippets/undo_form.html" %} 
    1410    {% endwith %} 
    15 <!--</form>--> 
    16 <noscript> 
    17     <div style="width:30%;" class="warning"> 
    18         You can only upload one file at a time.<br> 
    19         Use the "Validate" button to send your file. 
    20     </div> 
    21 </noscript> 
    22 <form class="form_queue">{% csrf_token %}</form> 
    23 <!--<div id="hidden_forms" style="display:none;"></div>--> 
    24 <div id="div_files"></div> 
    25 <script type="text/javascript" src="/media/js/file.js"></script> 
    26 {% endblock %} 
     11    <!--</form>--> 
     12    <noscript> 
     13        <div style="display:table;" class="warning"> 
     14            {% trans "You can only upload one file at a time." %}<br/> 
     15            {%trans "Use the Validate button to send your file." %} 
     16        </div> 
     17    </noscript> 
     18    <form class="hidden" action="" target="hidden_frame">{% csrf_token %}</form> 
     19    <div id="div_files"></div> 
     20</div> 
     21<script type="text/javascript" src="/media/js/file.js"> 
     22</script> 
     23<script type="text/javascript"> 
     24    {% with file_formset.forms as forms %} 
     25        {% for form in forms %} 
     26            files_linked.push("{{form.instance.filename}}"); 
     27        {% endfor %} 
     28    {% endwith %} 
     29    doc_type="{{document_type}}"; 
     30    trans["Select at least one file"]="{% trans 'Select at least one file' %}"; 
     31    trans["A STEP file is already linked to this document."]="{% trans 'A STEP file is already linked to this document.' %}"; 
     32    trans["A file named "]="{% trans 'A file named ' %}"; 
     33    trans["is already linked to this document."]="{% trans 'is already linked to this document.' %}"; 
     34    trans["You have already selected the file"]="{% trans 'You have already selected the file' %}"; 
     35    trans["for upload"]="{% trans 'for upload' %}"; 
     36    trans["remove the file from the queue"]="{% trans 'remove the file from the queue' %}"; 
     37    trans["Your upload(s) failed"]="{% trans 'Your upload(s) failed' %}"; 
     38    trans["Try again"]="{% trans 'Try again' %}"; 
     39    trans["maybe with less files. "]="{% trans 'maybe with less files. ' %}"; 
     40    trans["You are checking-in for "]="{% trans 'You are checking-in for ' %}"; 
     41    trans["You must add a file with this name."]="{% trans 'You must add a file with this name.' %}"; 
     42    trans["Show/Hide the upload form"]="{% trans 'Show/Hide the upload form' %}"; 
     43    trans["Check-in for file "]="{% trans 'Check-in for file ' %}"; 
     44    trans["You can only upload files, but you wont get progress of this upload"]="{% trans 'You can only upload files, but you wont get progress of this upload' %}"; 
     45    /*trans[""]="{% trans '' %}"; 
     46    trans[""]="{% trans '' %}";*/ 
     47</script> 
    2748 
    28  
  • trunk/openPLM/urls.py

    r1107 r1124  
    122122    (r'files/up/$', up_file), 
    123123    (r'files/_up/$', up_progress), 
     124    (r'files/get_checkin/(?P<file_id_value>[^/]+)/$',get_checkin_file), 
    124125    (r'files/checkin/(?P<file_id_value>[^/]+)/$', checkin_file), 
    125126    (r'files/checkout/(?P<docfile_id>[^/]+)/$', checkout_file), 
Note: See TracChangeset for help on using the changeset viewer.