Ignore:
Timestamp:
Sep 9, 2014 4:14:10 PM (11 years ago)
Author:
dungnv
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified pro-bachkim-filespace/sourcecode/assets/js/manager.js

    r66 r70  
    1919                        if( o.datasource == undefined ) o.datasource = 'ajax';
    2020                       
     21                        var isDev = false;
     22                        var contextmenu = null;
    2123                        var oContainer = this;
    2224                        var tree = [];
     
    2527                        var maxWidth = 0;
    2628                        var treeCurrentNode = null;
     29                        var self = this;
     30                        var oClipBoard = {items:null, act:null};
     31                       
     32                        /**
     33                         * Toolbar defined
     34                         * */
     35                        var btnNewFolder = $('#' + o.toolsbar + ' > DIV.btn-group.basic > #btnNewFolder');
     36                        var btnDel = $('#' + o.toolsbar + ' > DIV.btn-group.basic > #btnDel');
     37                        var btnCopy = $('#' + o.toolsbar + ' > DIV.btn-group.basic > #btnCopy');
     38                        var btnCut = $('#' + o.toolsbar + ' > DIV.btn-group.basic > #btnCut');
     39                        var btnPaste = $('#' + o.toolsbar + ' > DIV.btn-group.basic > #btnPaste');
     40                        var btnShare = $('#' + o.toolsbar + ' > DIV.btn-group.social > #btnShare');
     41                        var btnPreview = $('#' + o.toolsbar + ' > DIV.btn-group.social > #btnPreview');
     42                        var btnDownload = $('#' + o.toolsbar + ' > DIV.btn-group.creation > #btnDownload');
     43                        var btnUpload = $('#' + o.toolsbar + ' > DIV.btn-group.creation > #btnUpload');
     44                        var btnRefresh = $('#' + o.toolsbar + ' > DIV.btn-group.control > #btnRefresh');
    2745                       
    2846                        var sendCommand = function (p) {
     
    3452                                if( p.callbackAlways == undefined ) p.callbackAlways = null;
    3553
    36                                 if (p.script != null && o.datasource == 'ajax') {
     54                                if (p.script != null && (o.datasource == 'ajax' || isDev)) {
    3755                                        $.post(o.host + o.hostmodule + p.script, p.postdata, function (data){
    3856                                                if (data) {
     
    92110                                }
    93111                        }
     112
     113                        var buildTreeFromParent = function (dirID, node) {                             
     114                                var aryChildFiles = [];
     115                                var aryChildDirs = [];
     116                                var aryChildIDs = [];
     117                                var aryTmp = [];
     118                                var dir = o.data.DIRECTORIES[searchItemByID(dirID, 'directory')];
     119                                aryChildDirs = searchItemsByParent(dirID, 'directory');
     120                                aryChildFiles = searchItemsByParent(dirID, 'file');
     121
     122                                $(aryChildDirs).each(function (index) {
     123                                        aryChildIDs[index] = this.id;
     124                                });
     125
     126                                if (node.id == undefined) node.id = dirID;                             
     127
     128                                if ($(aryChildFiles).length > 0 ) {
     129                                        if (node.files == undefined) node.files = [];
     130                                        $(aryChildFiles).each(function (index) {
     131                                                node.files[index] = this.id;
     132                                        });
     133                                }                               
     134
     135                                if ($(aryChildDirs).length > 0) {
     136                                        if (node.childs == undefined) node.childs = [];
     137                                        $(aryChildIDs).each(function (index) {
     138                                                node.childs[index] = new Object;
     139                                                buildTreeFromParent(aryChildIDs[index], node.childs[index]);
     140                                        });
     141                                }
     142                        }
    94143                       
    95144                        var checkChildExisted = function (id) {
     
    100149                       
    101150                        var doneInit = function () {
     151                                bindEventToToolbars();
     152                                documentEventsBinding();
    102153                        };
    103154                       
     
    108159                        var init = function () {
    109160                                layoutRender ();
    110 
    111161                                $('#' + o.tree).parent().resizable({
    112162                                        maxWidth: maxWidth,
     
    117167                                        }
    118168                                });
    119 
    120169                                $(window).resize (function() {layoutRender ();$('#' + o.tree).parent().resizable({maxWidth: maxWidth});});
    121                                
    122170                                sendCommand ({postdata:null,callbackSuccess:createFileManager,callbackDone:doneInit,callbackFail:failInit});
    123171                        };
     
    167215                        }
    168216                       
     217                        /**************************
     218                         * TOOLBAR EVENTS - START *
     219                         **************************/
     220                        var btnRefreshClick = function (obj) {
     221                                $(o).find('i').addClass('icon-spin');                           
     222                                sendCommand ({  postdata:null,
     223                                                                callbackSuccess:function (parseData) {
     224                                                                        o.data = parseData;
     225                                                                        self.updateData({updateAll:true});
     226                                                                        o.oTree.refeshTree();
     227                                                                        console.log(o);
     228                                                                },
     229                                                                callbackDone:function () {$(o).find('i').removeClass('icon-spin');},
     230                                                                callbackFail:failInit
     231                                        });
     232                        }
     233                       
     234                        var btnNewFolderClick = function () {
     235                                createFolderStart();
     236                        }
     237                       
     238                        var btnDelClick = function () {
     239                                var items = o.oGrid.getHightLightItem();
     240                                if ($(items).length == 0){
     241                                        var dirID = $(o.oTree.getSelectedNode()).attr('id');
     242                                        var item = o.data.DIRECTORIES[searchItemByID(dirID,'directory')];
     243                                        item.type = 'directory';
     244                                        items = [item];
     245                                }
     246                                self.deleteItem(items);
     247                        }
     248                       
     249                        var btnCopyClick = function () {                               
     250                                copy();
     251                        }
     252
     253                        var btnPasteClick = function () {
     254                                paste();
     255                        }
     256                       
     257                       
     258                        var bindEventToToolbars = function () {
     259                                $(btnRefresh).click(function(e){btnRefreshClick(this)});
     260                               
     261                                $(btnNewFolder).click(function(e){btnNewFolderClick()});
     262                                $(btnDel).click(function(e){btnDelClick()});
     263                                $(btnCopy).click(function(e){btnCopyClick()});
     264                                $(btnPaste).click(function(e){btnPasteClick()})
     265                               
     266                                /*btnCut
     267                                btnShare
     268                                btnPreview
     269                                btnDownload
     270                                btnUpload*/
     271                        }
     272                        /************************
     273                         * TOOLBAR EVENTS - END *
     274                         ************************/
     275
     276                        /***********************************
     277                         * DOCUMENT EVENTS BINDING - START *
     278                         ***********************************/
     279                         var documentEventsBinding = function () {
     280                                $(document).bind('keydown', function (e){
     281                                        switch( e.which ) {
     282                                                case 113:                                                       
     283                                                case 27:
     284                                                        var gridSelectedItems = o.oGrid.getHightLightItem();
     285                                                        if ($(gridSelectedItems).length > 0) {
     286                                                                o.oGrid.rename(e.which);
     287                                                        }else {                                                         
     288                                                                o.oTree.rename(e.which);
     289                                                        }
     290                                                        break;
     291                                                case 46:
     292                                                        //delete
     293                                                        btnDelClick();
     294                                                        break;
     295                                                case 65:
     296                                                        if (e.ctrlKey) {
     297                                                                o.oGrid.selectAllNode();
     298                                                        }
     299                                                        break;
     300                                                default:
     301                                                        break;
     302                                        }
     303                                });
     304                         }
     305                        /***********************************
     306                         * DOCUMENT EVENTS BINDING - END *
     307                         ***********************************/                   
     308                       
    169309                        /*******************************
    170310                         * CREATE FOLDER - START *
    171311                         *******************************/
    172                         var createFolder = function (parent) {
    173                                 var postdata = {delobj:delobj};
     312                        var createFolderStart = function () {
     313                                var promptOptions = {
     314                                                  title: "Tạo thư mục mới",
     315                                                  buttons: {
     316                                                    confirm: {
     317                                                      label: "Lưu"
     318                                                    },
     319                                                    cancel: {
     320                                                      label: "Há»§y"   
     321                                                    }
     322                                                  },
     323                                                  callback: function(result) {               
     324                                                      if (result === null) {                                             
     325                                                                                     
     326                                                      } else {
     327                                                          createFolder(treeCurrentNode, result);
     328                                                      }
     329                                                    }
     330                                                };
     331
     332                                return bootbox.prompt(promptOptions);
     333                        }
     334                       
     335                        var createFolder = function (parent, name) {
     336                                var postdata = {fname:name,fparentid:parent};
    174337                                var script = 'createdir';
     338                                /*isDev = true;*/
    175339                                sendCommand ({
    176340                                        postdata:postdata,
    177341                                        script:script,
    178                                         callbackSuccess:function(parseData){console.log(parseData);},
     342                                        callbackSuccess:function(parseData){createFolderFinish(parseData);},
    179343                                        callbackFail: function(){}
    180344                                });
    181345                        }
    182346                       
    183                         var createFolderCallBack = function (parent) {
    184                                
     347                        var createFolderFinish = function (parseData) {
     348                                /*isDev = false;*/
     349                                if (parseData.ERROR.errCode == 0) {
     350                                        var node = {id:parseData.id, name:parseData.name,parentID:parseData.parentID};
     351                                        o.oTree.createNode(node);
     352                                        o.data.DIRECTORIES[$(o.data.DIRECTORIES).length] = node;
     353                                        if (o.oGrid) o.oGrid.reloadGrid(parseData.parentID);
     354                                }
    185355                        }
    186356                        /*******************************
    187                          * CREATE FOLDER - END *
     357                         * CREATE FOLDER - END         *
    188358                         *******************************/
    189                        
    190                         /*******************************
    191                          * CLIPBOARD - START *
    192                          *******************************/
    193                         var oClipBoard = {item:null, act:null};
    194                        
    195                         var addToClipboard = function (item, act) {
    196                                 oClipboard = {item:item,act:act};
    197                         }
    198                        
    199                         var clearClipboard = function () {
    200                                 oClipBoard = {item:null, act:null};
    201                         }
    202                        
    203                         /*******************************
    204                          * CLIPBOARD - START *
    205                          *******************************/
     359                        /********************************
     360                         * COPY & PASTE & MOVE - START  *
     361                         ************=*******************/
     362                        var copy = function (){
     363                                //detect selected items
     364                                //push to clipboard
     365                                var items = o.oGrid.getHightLightItem();
     366                               
     367                                if ($(items).length == 0) {
     368                                        var node = o.oTree.getSelectedNode();
     369                                        var itemID = $(node).attr('id');
     370                                        items[0] = o.data.DIRECTORIES[searchItemByID(itemID, 'directory')];
     371                                        items[0].type = 'directory';
     372                                }
     373
     374                                if ($(items).length > 0) {
     375                                        oClipBoard.items = items;
     376                                        oClipBoard.act = 'copy';
     377                                }
     378                        }
     379                       
     380                        var paste = function () {
     381                                if ((oClipBoard.act != 'copy'
     382                                        && oClipBoard.act != 'move')
     383                                        || oClipBoard.items == null) return;
     384                               
     385                                var items = [];
     386                                var destination = self.getTreeCurrentNode();
     387
     388                                $(oClipBoard.items).each(function (index) {
     389                                        var node = new Object;
     390                                        buildTreeFromParent(this.id, node);
     391                                        items[index] = node;
     392                                });
     393
     394                                var postdata = {destination:destination,data:JSON.stringify(items)};
     395                                var script = 'copy';
     396                                sendCommand ({
     397                                        postdata:postdata,
     398                                        script:script,
     399                                        callbackSuccess:function(parseData){
     400                                                console.log(parseData);
     401                                        }
     402                                });
     403                               
     404                        }
     405
     406                        var move = function () {
     407
     408                        }
     409
     410                        var copyTo = function () {
     411
     412                        }
     413
     414                        var moveTo = function () {
     415
     416                        }
     417                       
     418                        /*****************************
     419                         * COPY & PASTE & MOVE - END *
     420                         *****************************/
     421
    206422                        this.deleteItem = function (item) {
     423                               
    207424                                var confirmText = 'Bạn có muốn xóa ';
    208425                               
    209426                                if ($.isArray(item) && item.length > 1) {
    210                                         confirmText += 'các thư mục (file) và các thư mục (file) con đã chọn ?';
     427                                        confirmText += 'các thư mục (và files) đã chọn?';
    211428                                }
    212429                                else if (item.length == 1) {
     
    215432                                        confirmText += ' <span style="font-weight:bold">' + item[0].name + "</span> khÃŽng?";
    216433                                }
     434                               
     435                                confirmText += '<br /><div style="color:red">(hành động này sẜ xóa tất cả thư mục con và các file trong các thư mục đã chọn)</div>';
    217436                               
    218437                                for (var i = 0; i < item.length; i++) {
     
    262481                                                                                postdata:postdata,
    263482                                                                                script:script,
    264                                                                                 callbackSuccess:function(parseData){console.log(parseData);},
     483                                                                                callbackSuccess:function(parseData){
     484                                                                                        if($(parseData.DIRECTORIES).length > 0) {
     485                                                                                                for(var i = 0; i < $(parseData.DIRECTORIES).length; i++) {
     486                                                                                                        o.oTree.deletion($(parseData.DIRECTORIES).get(i));
     487                                                                                                        o.oGrid.deletion($(parseData.DIRECTORIES).get(i), 'directory');
     488                                                                                                }
     489                                                                                        }
     490
     491                                                                                        if($(parseData.FILES).length > 0) {
     492                                                                                                for(var i = 0; i < $(parseData.FILES).length; i++) {   
     493                                                                                                        var id = $(parseData.FILES).get(i);
     494                                                                                                        var file = o.data.FILES[searchItemByID(id)];                                                                                   
     495                                                                                                        o.oGrid.deletion(file.id, file.minetype);
     496                                                                                                }                                                                                               
     497                                                                                        }
     498
     499                                                                                },
    265500                                                                                callbackFail: function(){}
    266501                                                                        });
     
    270505                               
    271506                                bootbox.confirm(confirmOptions);
    272                                
    273507                        }
    274508                       
     
    284518                        }
    285519                       
    286                         this.gridNodeClick = function (gridNode) {
    287                                 //fire when click a node on Grid
    288                                 //then fire action of Tree
     520                        this.gridNodeDblClick = function (node) {
     521                                if (node.minetype == 'directory') {
     522                                        var treeNode = $('#' + o.tree).find('UL.vstree[rel^="node' + node.parentID + '"] > LI[rel^="folder"] > A#' + node.id);
     523                                        o.oTree.activeNode(treeNode);
     524                                }
     525                                else {
     526                                        //execute or preview file
     527                                }
    289528                        };
    290529                       
    291530                        this.createNewFolder = function () {
    292                                 var promptOptions = {
    293                                                   title: "Tạo thư mục mới",
    294                                                   buttons: {
    295                                                     confirm: {
    296                                                       label: "Lưu"
    297                                                     },
    298                                                     cancel: {
    299                                                       label: "Há»§y"   
    300                                                     }
    301                                                   },
    302                                                   callback: function(result) {               
    303                                                       if (result === null) {                                             
    304                                                         console.log("Prompt dismissed");                             
    305                                                       } else {
    306                                                         console.log("Hi "+result);                         
    307                                                       }
    308                                                     }
    309                                                 };
    310 
    311                                 bootbox.prompt(promptOptions);
     531                               
    312532                        }
    313533                       
    314534                        this.updateData = function (p) {
    315535                                if( p.item == undefined ) p.item = null;
     536                                if( p.updateAll == undefined ) p.updateAll = false;
    316537                                if( p.from == undefined ) p.from = null;
    317538                                if( p.type == undefined ) p.type = null;
    318539                                if( p.callback == undefined ) p.callback = null;
    319                                
     540
    320541                                var obj = p.from == 'tree' ? o.oGrid : o.oTree;
    321                                
    322                                 var index = searchItemByID(p.item.id, p.type);
    323                                 switch (p.type) {
    324                                         case 'directory':
    325                                                 o.data.DIRECTORIES[index].name = p.item.name;
    326                                                 o.data.DIRECTORIES[index].parentID = p.item.parentID;
    327                                                 break;
    328                                         case 'file':
    329                                                 o.data.FILES[index].name = p.item.name;
    330                                                 o.data.FILES[index].parentID = p.item.parentID;
    331                                                 o.data.FILES[index].minetype = p.item.minetype;
    332                                                 break;
    333                                         default:
    334                                                 break;
     542                                if (!p.updateAll) {
     543                                        var index = searchItemByID(p.item.id, p.type);
     544                                        switch (p.type) {
     545                                                case 'directory':
     546                                                        o.data.DIRECTORIES[index].name = p.item.name;
     547                                                        o.data.DIRECTORIES[index].parentID = p.item.parentID;
     548                                                        break;
     549                                                case 'file':
     550                                                        o.data.FILES[index].name = p.item.name;
     551                                                        o.data.FILES[index].parentID = p.item.parentID;
     552                                                        o.data.FILES[index].minetype = p.item.minetype;
     553                                                        break;
     554                                                default:
     555                                                        break;
     556                                        }
    335557                                }
    336558                               
     
    343565                               
    344566                                //call sendCommand
     567                        }
     568                       
     569                        this.searchItemsByParent = function (parentID, type) {
     570                                return searchItemsByParent(parentID, type);
     571                        }
     572                       
     573                        this.searchItemByID = function (parentID, type) {
     574                                return searchItemByID(parentID, type);
    345575                        }
    346576                       
Note: See TracChangeset for help on using the changeset viewer.