@@ -46,11 +46,37 @@ FM.EDITABLE_FILETYPES = [
4646 'txt' , 'php' , 'js' , 'html'
4747] ;
4848
49+ FM . EDITABLE_MIMETYPES = [
50+ 'application/emma+xml' ,
51+ 'application/epp+xml' ,
52+ 'application/javascript' ,
53+ 'application/json' ,
54+ 'application/jsonml+json ' ,
55+ 'application/lost+xml' ,
56+ 'application/marc' ,
57+ 'application/msword' ,
58+ 'application/sru+xml' ,
59+ 'application/vnd.android.package-archive' ,
60+ 'text/csv' ,
61+ 'text/css' ,
62+ 'text/javascript' ,
63+ 'text/html' ,
64+ 'text/x-java-source'
65+ ] ;
66+
67+ FM . EDITABLE_MIMETYPES_MASKS = [
68+ / ( .) * t e x t ( .) * / ,
69+ / ( .) * i n o d e ( .) * /
70+ ] ;
71+
4972FM . preselectedItems = { 'A' : [ ] , 'B' : [ ] } ;
5073
5174
5275FM . directoryNotAvailable = function ( reply ) {
53- alert ( 'Directory not available' ) ; // todo: translate
76+ var tpl = Tpl . get ( 'popup_alert' , 'FM' ) ;
77+ tpl . set ( ':TEXT' , App . Constants . FM_DIRECTORY_NOT_AVAILABLE ) ;
78+
79+ FM . popupOpen ( tpl . finalize ( ) ) ;
5480}
5581
5682FM . showError = function ( type , message ) {
@@ -382,7 +408,8 @@ FM.sortItems = function(items, box) {
382408 return sorted ;
383409}
384410
385- FM . isFileEditable = function ( src ) {
411+ FM . isFileEditable = function ( src , mime ) {
412+
386413 if ( 'undefined' == typeof src . filetype ) {
387414 return false ;
388415 }
@@ -391,7 +418,21 @@ FM.isFileEditable = function(src) {
391418 return true ;
392419 }
393420
394- return false ;
421+ var mime_type = mime . split ( ';' ) ;
422+ mime_type = mime_type [ 0 ] ;
423+
424+ if ( $ . inArray ( mime_type , FM . EDITABLE_MIMETYPES ) != - 1 ) {
425+ return true ;
426+ }
427+
428+ var editable = false ;
429+ $ . each ( FM . EDITABLE_MIMETYPES_MASKS , function ( i , mask ) {
430+ if ( mime_type . search ( mask ) != - 1 ) {
431+ editable = true ;
432+ }
433+ } ) ;
434+
435+ return editable ;
395436}
396437
397438FM . editFileFromSubcontext = function ( elm ) {
@@ -414,26 +455,36 @@ FM.openFile = function(dir, box, elm) {
414455 var tab = FM . getTabLetter ( box ) ;
415456
416457 FM [ 'TAB_' + tab + '_CURRENT_PATH' ] = dir ;
417-
418-
419-
458+
420459 var elm = $ ( elm ) . hasClass ( 'dir' ) ? $ ( elm ) : $ ( elm ) . closest ( '.dir' ) ;
421460 var src = $ . parseJSON ( $ ( elm ) . find ( '.source' ) . val ( ) ) ;
422-
423- if ( FM . isItemPseudo ( src ) ) {
424- FM . open ( FM [ 'TAB_' + tab + '_CURRENT_PATH' ] , FM [ 'TAB_' + tab ] ) ;
425- }
426461
427- if ( FM . isFileEditable ( src ) ) {
428- var myWindow = window . open ( '/edit/file/?path=' + src . full_path , '_blank' ) ; //, src.full_path, "width=900, height=700");
429- }
430- else {
431- var path = src . full_path ;
432- var win = window . open ( '/download/file/?path=' + path , '_blank' ) ;
433- win . focus ( ) ;
462+ if ( FM . isItemPseudo ( src ) ) {
463+ return FM . open ( FM [ 'TAB_' + tab + '_CURRENT_PATH' ] , FM [ 'TAB_' + tab ] ) ;
434464 }
435465
466+ var params = {
467+ dir : src . full_path
468+ } ;
436469
470+ App . Ajax . request ( 'check_file_type' , params , function ( reply ) {
471+ if ( reply . result ) {
472+ if ( FM . isFileEditable ( src , reply . data ) ) {
473+ var myWindow = window . open ( '/edit/file/?path=' + src . full_path , '_blank' ) ; //, src.full_path, "width=900, height=700");
474+ }
475+ else {
476+ var path = src . full_path ;
477+ var win = window . open ( '/download/file/?path=' + path , '_blank' ) ;
478+ //win.focus();
479+ }
480+ }
481+ else {
482+ // force download file
483+ var path = src . full_path ;
484+ var win = window . open ( '/download/file/?path=' + path , '_blank' ) ;
485+ //win.focus();
486+ }
487+ } ) ;
437488}
438489
439490FM . getTabLetter = function ( box ) {
@@ -551,7 +602,6 @@ FM.generate_listing = function(reply, box) {
551602FM . toggleCheck = function ( uid ) {
552603 var ref = $ ( '#check' + uid ) ;
553604 if ( ref . length > 0 ) {
554- //ref.attr('checked', true);
555605 $ ( ref ) . hasClass ( 'checkbox-selected' ) ? $ ( ref ) . addClass ( 'checkbox-selected' ) : $ ( ref ) . removeClass ( 'checkbox-selected' ) ;
556606 }
557607}
@@ -605,7 +655,7 @@ FM.checkBulkStatus = function(bulkStatuses, acc) {
605655 }
606656
607657 if ( status == true ) {
608- $ ( '#popup .results' ) . html ( 'Done' ) ;
658+ $ ( '#popup .results' ) . html ( App . Constants . FM_DONE ) ;
609659 $ ( '.controls p' ) . replaceWith ( '<p class="ok" onClick="FM.bulkPopupClose();">close</p>' ) ;
610660 }
611661 else {
@@ -665,7 +715,7 @@ FM.bulkCopy = function() {
665715 } ) ;
666716
667717 var tpl = Tpl . get ( 'popup_bulk' , 'FM' ) ;
668- tpl . set ( ':ACTION' , 'YOU ARE COPYING' ) ;
718+ tpl . set ( ':ACTION' , App . Constants . FM_YOU_ARE_COPYING ) ;
669719 tpl . set ( ':TEXT' , cfr_html ) ;
670720
671721 FM . popupOpen ( tpl . finalize ( ) ) ;
@@ -740,7 +790,7 @@ FM.bulkRemove = function() {
740790 } ) ;
741791
742792 var tpl = Tpl . get ( 'popup_bulk' , 'FM' ) ;
743- tpl . set ( ':ACTION' , 'YOU ARE REMOVING' ) ;
793+ tpl . set ( ':ACTION' , App . Constants . FM_YOU_ARE_REMOVING ) ;
744794 tpl . set ( ':TEXT' , cfr_html ) ;
745795
746796 FM . popupOpen ( tpl . finalize ( ) ) ;
@@ -750,10 +800,7 @@ FM.bulkRemove = function() {
750800 var ref = $ ( o ) ;
751801 var src = $ ( ref ) . find ( '.source' ) . val ( ) ;
752802 src = $ . parseJSON ( src ) ;
753-
754- /*if (!FM.isItemPseudo(o)) {
755- cfr_html += '<div>'+src.name+'</div>';
756- }*/
803+
757804 var tab = FM . getTabLetter ( FM . CURRENT_TAB ) ;
758805
759806 var opposite_tab = 'A' ;
@@ -1610,22 +1657,6 @@ FM.init();
16101657$ ( document ) . ready ( function ( ) {
16111658 $ ( '.progress-container' ) . hide ( ) ;
16121659
1613- //return alert('statechange: Back');
1614- /*$(document).bind('keydown.up', function() {
1615- console.log(1);
1616- //try{FM.goUp();}catch(e){console.log(e);}
1617- //console.log(FM);
1618- FM.goUp();
1619- });
1620-
1621- $(document).bind('keydown.down', function() {
1622- console.log(1);
1623- //try{FM.goUp();}catch(e){console.log(e);}
1624- //console.log(FM);
1625- FM.goDown();
1626- });*/
1627-
1628-
16291660 var ph = $ ( '.window .pwd' ) . outerHeight ( ) ;
16301661 var mh = $ ( '.window .menu' ) . outerHeight ( ) ;
16311662 var wh = $ ( window ) . outerHeight ( ) ;
@@ -1825,5 +1856,5 @@ $(document).ready(function() {
18251856$ ( window ) . bind ( 'statechange' , function ( evt ) {
18261857 $ ( evt ) . stopPropagation ( ) ;
18271858 // History.getState()
1828- alert ( 'No way back yet' ) ;
1859+ // alert('No way back yet');
18291860} )
0 commit comments