Changeset 858 for pro-violet-viettel


Ignore:
Timestamp:
Mar 31, 2015 9:56:50 AM (10 years ago)
Author:
quyenla
Message:

download

Location:
pro-violet-viettel/www/deploy/20150304
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • pro-violet-viettel/www/deploy/20150304/application/modules/ajax/controllers/download.php

    r841 r858  
    1414       
    1515        public function getFile () {
    16                 $file=  $this->input->post('file');
    17                 $folder=  $this->input->post('folder');
    18                 $files = $this->vservices->actionExecute('getFiles',array("file"=>$file,"folder"=>$folder));
    19                 echo "<pre>";
    20                 print_r($files);
    21                 echo "</pre>";
     16                $data=  $this->input->post('data');
     17                $treeArray=  json_decode($data,TRUE);
     18           
     19                if ((count($treeArray)==1) && ($treeArray[0]['type']=='file'))
     20                {
     21                    $file=$treeArray[0];
     22                    echo $file['name'];
     23                    $file = file_get_contents($treeArray[0]['fileurl']); 
     24                    $local_file="".$treeArray[0]['name'];
     25                    file_put_contents($local_file, $file);
     26                    $download_rate = 512;
     27                    $download_file = $treeArray[0]['name'];
     28                }
    2229                die();
    23                 $file = file_get_contents($fileurl); 
    24                 file_put_contents("1.jpg", $file);
    25                 $local_file="1.jpg";
    26                 $download_rate = 512;
    27                 $download_file = $this->input->post('filename');
    28  
    29                     // send headers
     30               
     31               
     32               
     33               
     34               
     35               
     36               
     37               
     38               
     39               
     40
     41
     42   // send headers
     43
    3044    header('Cache-control: private');
    3145    header('Content-Type: application/octet-stream');
     
    3347    header('Content-Disposition: filename='.$download_file);
    3448 
     49   
    3550    // flush content
    3651    flush();
  • pro-violet-viettel/www/deploy/20150304/assets/js/manager.js

    r857 r858  
    11if (jQuery)
    2         (function($) {
    3                 $
    4                                 .extend(
    5                                                 $.fn,
    6                                                 {
    7                                                         violetFileManager : function(o) {
    8                                                                 if (!o)
    9                                                                         var o = {};
    10                                                                 if (o.tree == undefined)
    11                                                                         o.tree = null;
    12                                                                 if (o.grid == undefined)
    13                                                                         o.grid = null;
    14 
    15                                                                 if (o.maincontainer == undefined)
    16                                                                         o.maincontainer = null;
    17                                                                 if (o.titlebar == undefined)
    18                                                                         o.titlebar = null;
    19                                                                 if (o.toolsbar == undefined)
    20                                                                         o.toolsbar = null;
    21                                                                 if (o.statusbar == undefined)
    22                                                                         o.statusbar = null;
    23                                                                 if (o.navigationbar == undefined)
    24                                                                         o.navigationbar = null;
    25 
    26                                                                 if (o.oTree == undefined)
    27                                                                         o.oTree = null;
    28                                                                 if (o.oGrid == undefined)
    29                                                                         o.oGrid = null;
    30                                                                 if (o.host == undefined)
    31                                                                         o.host = 'http://localhost/';
    32                                                                 if (o.hostmodule == undefined)
    33                                                                         o.hostmodule = 'privatecontent/';
    34                                                                 if (o.script == undefined)
    35                                                                         o.script = 'getcontent';
    36                                                                 if (o.data == undefined)
    37                                                                         o.data = null;
    38                                                                 if (o.datasource == undefined)
    39                                                                         o.datasource = 'ajax';
    40 
    41                                                                 if (o.filehosting == undefined)
    42                                                                         o.filehosting = 'http://sbgapi.violet.vn/';
    43 
    44                                                                 if (o.invisibledButtons == undefined)
    45                                                                         o.invisibledButtons = null;
    46 
    47                                                                 o.host = o.host + 'ajax/';
    48 
    49                                                                 var isDev = false;
    50                                                                 var contextmenu = null;
    51                                                                 var oContainer = this;
    52                                                                 var tree = [];
    53                                                                 var totalItem = 0;
    54                                                                 var countItem = 0;
    55                                                                 var maxWidth = 0;
    56                                                                 var treeCurrentNode = null;
    57                                                                 var self = this;
    58                                                                 var oClipBoard = {
    59                                                                         items : null,
    60                                                                         act : null
    61                                                                 };
    62 
    63                                                                 /**
    64                                                                  * Toolbar defined
    65                                                                  */
    66                                                                 var btnNewFolder = $('#'
    67                                                                                 + o.toolsbar
    68                                                                                 + ' > DIV.btn-group.basic > #btnNewFolder');
    69                                                                 var btnDel = $('#' + o.toolsbar
    70                                                                                 + ' > DIV.btn-group.basic > #btnDel');
    71                                                                 var btnCopy = $('#' + o.toolsbar
    72                                                                                 + ' > DIV.btn-group.basic > #btnCopy');
    73                                                                 var btnCut = $('#' + o.toolsbar
    74                                                                                 + ' > DIV.btn-group.basic > #btnCut');
    75                                                                 var btnPaste = $('#' + o.toolsbar
    76                                                                                 + ' > DIV.btn-group.basic > #btnPaste');
    77                                                                 var btnShare = $('#' + o.toolsbar
    78                                                                                 + ' > DIV.btn-group.social > #btnShare');
    79                                                                 var btnPreview = $('#'
    80                                                                                 + o.toolsbar
    81                                                                                 + ' > DIV.btn-group.social > #btnPreview');
    82                                                                 var btnDownload = $('#'
    83                                                                                 + o.toolsbar
    84                                                                                 + ' > DIV.btn-group.creation > #btnDownload');
    85                                                                 var btnUpload = $('#'
    86                                                                                 + o.toolsbar
    87                                                                                 + ' > DIV.btn-group.creation > #btnUpload');
    88                                                                 var btnRefresh = $('#'
    89                                                                                 + o.toolsbar
    90                                                                                 + ' > DIV.btn-group.control > #btnRefresh');
    91 
    92                                                                 var toolbarButtons = [ btnNewFolder, btnDel,
    93                                                                                 btnCopy, btnCut, btnPaste, btnShare,
    94                                                                                 btnPreview, btnDownload, btnUpload,
    95                                                                                 btnRefresh ];
    96                                                                 var statusbar = $('DIV#' + o.statusbar);
    97 
    98                                                                 var sendCommand = function(p) {
    99                                                                         if (p.postdata == undefined)
    100                                                                                 p.postdata = null;
    101                                                                         if (p.script == undefined)
    102                                                                                 p.script = o.script;
    103                                                                         if (p.callbackSuccess == undefined)
    104                                                                                 p.callbackSuccess = null;
    105                                                                         if (p.callbackDone == undefined)
    106                                                                                 p.callbackDone = null;
    107                                                                         if (p.callbackFail == undefined)
    108                                                                                 p.callbackFail = null;
    109                                                                         if (p.callbackAlways == undefined)
    110                                                                                 p.callbackAlways = null;
    111                                                                         if (p.parseData == undefined)
    112                                                                                 p.parseData = null;
    113                                                                         if (p.self == undefined)
    114                                                                                 p.self = this;
    115 
    116                                                                         if (p.script != null
    117                                                                                         && (o.datasource == 'ajax' || isDev)) {
    118                                                                                 $
    119                                                                                                 .post(
    120                                                                                                                 o.host + o.hostmodule
    121                                                                                                                                 + p.script,
    122                                                                                                                 p.postdata,
    123                                                                                                                 function(data) {
    124                                                                                                                         if (data) {
    125                                                                                                                                 parseData = $
    126                                                                                                                                                 .parseJSON(data);
    127                                                                                                                                 p.parseData = parseData;
    128                                                                                                                         }
    129 
    130                                                                                                                         if (p.callbackSuccess != null) {
    131                                                                                                                                 if (parseInt(parseData.ERROR.errCode) === 0)
    132                                                                                                                                         p
    133                                                                                                                                                         .callbackSuccess(parseData);
    134                                                                                                                                 else {
    135                                                                                                                                         p
    136                                                                                                                                                         .callbackFail(parseData.ERROR);
    137                                                                                                                                 }
    138                                                                                                                         }
    139 
    140                                                                                                                 })
    141                                                                                                 .done(
    142                                                                                                                 function() {
    143                                                                                                                         if (p.callbackDone != null)
    144                                                                                                                                 p
    145                                                                                                                                                 .callbackDone(p.parseData);
    146                                                                                                                 })
    147                                                                                                 .fail(function() {
    148                                                                                                         if (p.callbackFail != null)
    149                                                                                                                 p.callbackFail(this);
    150                                                                                                 })
    151                                                                                                 .always(
    152                                                                                                                 function() {
    153                                                                                                                         if (p.callbackAlways != null)
    154                                                                                                                                 p
    155                                                                                                                                                 .callbackAlways(this);
    156                                                                                                                 });
    157                                                                         } else if (o.datasource == 'json') {
    158                                                                                 if (p.callbackSuccess != null)
    159                                                                                         p.callbackSuccess(o.data);
    160                                                                                 if (p.callbackDone != null)
    161                                                                                         p.callbackDone(this);
    162                                                                         }
    163 
    164                                                                 };
    165 
    166                                                                 var getDirTreeMaxWidth = function() {
    167                                                                         var scrWidth = $(o.maincontainer).width();
    168                                                                         return parseInt(scrWidth / 2);
    169                                                                 }
    170 
    171                                                                 var layoutRender = function() {
    172                                                                         var scrWidth = $('#' + o.maincontainer)
    173                                                                                         .width();
    174                                                                         var scrHeght = $(window).innerHeight();
    175                                                                         var dirTreeHeight = scrHeght
    176                                                                                         - $('#' + o.titlebar).height()
    177                                                                                         - $('#' + o.toolsbar).height()
    178                                                                                         - $('#' + o.statusbar).height() - 5;
    179                                                                         $('#' + o.tree).parent().height(
    180                                                                                         dirTreeHeight);
    181                                                                         $('#' + o.grid).parent().height(
    182                                                                                         dirTreeHeight);
    183                                                                         $('#' + o.grid).parent().width(
    184                                                                                         'calc(100% - '
    185                                                                                                         + ($('#' + o.tree).parent()
    186                                                                                                                         .width() + 8)
    187                                                                                                         + 'px)');
    188                                                                         var scollWidth = $('#' + o.grid).parent()
    189                                                                                         .width();
    190                                                                         maxWidth = getDirTreeMaxWidth();
    191                                                                         $(o.tree).height(dirTreeHeight - 5);
    192 
    193                                                                         if (o.invisibledButtons != null) {
    194                                                                                 for ( var i = 0; i < o.invisibledButtons.length; i++) {
    195                                                                                         $('#' + o.invisibledButtons[i])
    196                                                                                                         .hide();
    197                                                                                 }
    198                                                                         }
    199                                                                 }
    200 
    201                                                                 var createFileManager = function(parseData) {
    202                                                                         o.data = parseData;
    203                                                                         totalItem = o.data.DIRECTORIES.length;
    204                                                                         o.oTree = $('#' + o.tree).violetTree({
    205                                                                                 data : o.data.DIRECTORIES,
    206                                                                                 manager : oContainer
    207                                                                         });
    208                                                                         o.oGrid = $('#' + o.grid).violetGrid({
    209                                                                                 data : o.data,
    210                                                                                 manager : oContainer
    211                                                                         });
    212                                                                         self.refreshStatusBar();
    213                                                                 };
    214 
    215                                                                 var getAllDirChild = function(parentID,
    216                                                                                 aryChild) {
    217                                                                         parentID = parentID == null ? 0 : parentID;
    218                                                                         var dirList = searchItemsByParent(parentID,
    219                                                                                         'directory');
    220                                                                         var index = aryChild.length;
    221                                                                         aryChild[index] = parentID;
    222                                                                         if (dirList.length > 0) {
    223                                                                                 for ( var i = 0; i < dirList.length; i++) {
    224                                                                                         getAllDirChild(dirList[i].id,
    225                                                                                                         aryChild);
    226                                                                                 }
    227                                                                         }
    228                                                                 }
    229 
    230                                                                 var buildTreeFromParent = function(dirID, node) {
    231                                                                         var aryChildFiles = [];
    232                                                                         var aryChildDirs = [];
    233                                                                         var aryChildIDs = [];
    234                                                                         var aryTmp = [];
    235                                                                         var dir = o.data.DIRECTORIES[searchItemByID(
    236                                                                                         dirID, 'directory')];
    237                                                                         aryChildDirs = searchItemsByParent(dirID,
    238                                                                                         'directory');
    239                                                                         aryChildFiles = searchItemsByParent(dirID,
    240                                                                                         'file');
    241 
    242                                                                         node.id = dir.id;
    243                                                                         node.name = dir.name;
    244                                                                         node.type = 'directory';
    245 
    246                                                                         $(aryChildDirs).each(function(index) {
    247                                                                                 var id = this.id;
    248                                                                                 var name = this.name;
    249                                                                                 var type = 'directory';
    250                                                                                 var cDir = {
    251                                                                                         id : id,
    252                                                                                         name : name,
    253                                                                                         type : type,
    254                                                                                         childs : null
    255                                                                                 };
    256                                                                                 aryChildIDs[index] = cDir;
    257                                                                         });
    258 
    259                                                                         if ($(aryChildFiles).length > 0) {
    260                                                                                 if (node.files == undefined)
    261                                                                                         node.files = [];
    262                                                                                 $(aryChildFiles).each(function(index) {
    263                                                                                         var id = this.id;
    264                                                                                         var name = this.name;
    265                                                                                         var type = 'file';
    266                                                                                         var cFile = {
    267                                                                                                 id : id,
    268                                                                                                 name : name,
    269                                                                                                 type : type
    270                                                                                         };
    271                                                                                         node.files[index] = cFile;
    272                                                                                 });
    273                                                                         }
    274 
    275                                                                         if ($(aryChildDirs).length > 0) {
    276                                                                                 if (node.childs == undefined)
    277                                                                                         node.childs = [];
    278                                                                                 $(aryChildIDs)
    279                                                                                                 .each(
    280                                                                                                                 function(index) {
    281                                                                                                                         node.childs[index] = new Object;
    282                                                                                                                         buildTreeFromParent(
    283                                                                                                                                         aryChildIDs[index].id,
    284                                                                                                                                         node.childs[index]);
    285                                                                                                                 });
    286                                                                         }
    287                                                                 }
    288 
    289                                                                 var checkChildExisted = function(id) {
    290                                                                         var dirList = searchItemsByParent(id,
    291                                                                                         'directory');
    292                                                                         var fileList = searchItemsByParent(id,
    293                                                                                         'file');
    294                                                                         return (dirList.length > 0)
    295                                                                                         || (fileList.length > 0);
    296                                                                 }
    297 
    298                                                                 var doneInit = function() {
    299                                                                         bindEventToToolbars();
    300                                                                         documentEventsBinding();
    301                                                                 };
    302 
    303                                                                 var failInit = function(er) {
    304                                                                         bootbox.alert(er.err);
    305                                                                 }
    306 
    307                                                                 var init = function() {
    308                                                                         layoutRender();
    309                                                                         $('#' + o.tree).parent().resizable({
    310                                                                                 maxWidth : maxWidth,
    311                                                                                 minWidth : 220,
    312                                                                                 handles : "e",
    313                                                                                 resize : function(event, ui) {
    314                                                                                         layoutRender();
    315                                                                                 }
    316                                                                         });
    317                                                                         $(window).resize(function() {
    318                                                                                 layoutRender();
    319                                                                                 $('#' + o.tree).parent().resizable({
    320                                                                                         maxWidth : maxWidth
    321                                                                                 });
    322                                                                         });
    323                                                                         sendCommand({
    324                                                                                 postdata : null,
    325                                                                                 callbackSuccess : createFileManager,
    326                                                                                 callbackDone : doneInit,
    327                                                                                 callbackFail : failInit
    328                                                                         });
    329                                                                 };
    330 
    331                                                                 var searchItemByID = function(id, type) {
    332                                                                         var data = {};
    333                                                                         switch (type) {
    334                                                                         case 'directory':
    335                                                                                 data = o.data.DIRECTORIES;
    336                                                                                 break;
    337                                                                         case 'file':
    338                                                                                 data = o.data.FILES;
    339                                                                                 break;
    340                                                                         default:
    341                                                                                 break;
    342                                                                         }
    343 
    344                                                                         // for (var i = 0; i < data.length; i++) {
    345                                                                         for ( var i in data) {
    346                                                                                 if (data[i].id == id) {
    347                                                                                         return i;
    348                                                                                 }
    349                                                                         }
    350                                                                 }
    351 
    352                                                                 var searchItemsByParent = function(parentID,
    353                                                                                 type) {
    354                                                                         var data = {};
    355                                                                         var aryItem = [];
    356                                                                         var index = aryItem.length;
    357 
    358                                                                         switch (type) {
    359                                                                         case 'directory':
    360                                                                                 data = o.data.DIRECTORIES;
    361                                                                                 break;
    362                                                                         case 'file':
    363                                                                                 data = o.data.FILES;
    364                                                                                 break;
    365                                                                         default:
    366                                                                                 break;
    367                                                                         }
    368 
    369                                                                         for (i in data) {
    370                                                                                 if (data[i].parentID == parentID) {
    371                                                                                         aryItem[index] = data[i];
    372                                                                                         index++;
    373                                                                                 }
    374                                                                         }
    375 
    376                                                                         return aryItem;
    377                                                                 }
    378 
    379                                                                 /***********************************************
    380                                                                  * TOOLBAR EVENTS - START *
    381                                                                  **********************************************/
    382                                                                 var btnRefreshClick = function(obj) {
    383                                                                         $(o).find('i').addClass('icon-spin');
    384                                                                         sendCommand({
    385                                                                                 postdata : null,
    386                                                                                 callbackSuccess : function(parseData) {
    387                                                                                         o.data = parseData;
    388                                                                                         self.updateData({
    389                                                                                                 updateAll : true
    390                                                                                         });
    391                                                                                         o.oTree.refeshTree();
    392                                                                                 },
    393                                                                                 callbackDone : function() {
    394                                                                                         $(o).find('i').removeClass(
    395                                                                                                         'icon-spin');
    396                                                                                 },
    397                                                                                 callbackFail : failInit
    398                                                                         });
    399                                                                 }
    400 
    401                                                                 var btnNewFolderClick = function() {
    402                                                                         createFolderStart();
    403                                                                 }
    404 
    405                                                                 var btnUploadClick = function() {
    406                                                                         uploadStart();
    407                                                                         uploadInit();
    408 
    409                                                                 }
    410                                                                 var btnDownloadClick = function() {
    411                                                                         var items = o.oGrid.getHighLightItem();
    412                                                                         var fileid = new Array();
    413                                                                         var folder = new Array();
    414                                                                         for ( var i = 0; i < $(items).length; i++) {
    415                                                                                 if (items[i].type == "file") {
    416                                                                                         var file = items[i].id;
    417                                                                                         fileid.push(file);
    418                                                                                 }
    419                                                                                 if (items[i].type == "directory") {
    420                                                                                         var file = items[i].id;
    421                                                                                         folder.push(file);
    422                                                                                 }
    423                                                                         }
    424                                                                         var link = o.host + "download/getFile/";
    425                                                                         self.redirectPost(link, {
    426                                                                                 file : fileid.toString(),
    427                                                                                 folder : folder.toString()
    428                                                                         });
    429                                                                 }
    430 
    431                                                                 var btnDelClick = function() {
    432                                                                         var items = o.oGrid.getHighLightItem();
    433                                                                         if ($(items).length == 0) {
    434                                                                                 var dirID = $(o.oTree.getSelectedNode())
    435                                                                                                 .attr('id');
    436                                                                                 var item = o.data.DIRECTORIES[searchItemByID(
    437                                                                                                 dirID, 'directory')];
    438                                                                                 item.type = 'directory';
    439                                                                                 items = [ item ];
    440                                                                         }
    441                                                                         self.deleteItem(items);
    442                                                                 }
    443 
    444                                                                 var btnCopyClick = function() {
    445                                                                         copy('copy');
    446                                                                 }
    447 
    448                                                                 var btnPasteClick = function() {
    449                                                                         paste();
    450                                                                 }
    451 
    452                                                                 var btnCutClick = function() {
    453                                                                         copy('move');
    454                                                                 }
    455 
    456                                                                 var bindEventToToolbars = function() {
    457                                                                         $(btnRefresh).click(function(e) {
    458                                                                                 btnRefreshClick(this)
    459                                                                         });
    460 
    461                                                                         $(btnNewFolder).click(function(e) {
    462                                                                                 btnNewFolderClick()
    463                                                                         });
    464                                                                         $(btnUpload).click(function(e) {
    465                                                                                 btnUploadClick()
    466                                                                         });
    467 
    468                                                                         $(btnDel).click(function(e) {
    469                                                                                 btnDelClick()
    470                                                                         });
    471                                                                         $(btnCopy).click(function(e) {
    472                                                                                 btnCopyClick()
    473                                                                         });
    474                                                                         $(btnCut).click(function(e) {
    475                                                                                 btnCutClick()
    476                                                                         });
    477                                                                         $(btnPaste).click(function(e) {
    478                                                                                 btnPasteClick()
    479                                                                         })
    480                                                                         $(btnPreview).click(function(e) {
    481                                                                                 btnPreviewClick()
    482                                                                         })
    483                                                                         $(btnDownload).click(function(e) {
    484                                                                                 btnDownloadClick()
    485                                                                         })
    486 
    487                                                                         /*
    488                                                                          * btnShare btnPreview btnDownload btnUpload
    489                                                                          */
    490                                                                 }
    491                                                                 /***********************************************
    492                                                                  * TOOLBAR EVENTS - END *
    493                                                                  **********************************************/
    494 
    495                                                                 /***********************************************
    496                                                                  * DOCUMENT EVENTS BINDING - START *
    497                                                                  **********************************************/
    498                                                                 var documentEventsBinding = function() {
    499                                                                         $(document)
    500                                                                                         .bind(
    501                                                                                                         'keydown',
    502                                                                                                         function(e) {
    503                                                                                                                 switch (e.which) {
    504                                                                                                                 case 113:
    505                                                                                                                 case 27:
    506                                                                                                                         var gridSelectedItems = o.oGrid
    507                                                                                                                                         .getHighLightItem();
    508                                                                                                                         if ($(gridSelectedItems).length > 0) {
    509                                                                                                                                 o.oGrid
    510                                                                                                                                                 .rename(e.which);
    511                                                                                                                         } else {
    512                                                                                                                                 o.oTree
    513                                                                                                                                                 .rename(e.which);
    514                                                                                                                         }
    515                                                                                                                         break;
    516                                                                                                                 case 46:
    517                                                                                                                         // delete
    518                                                                                                                         btnDelClick();
    519                                                                                                                         break;
    520                                                                                                                 case 65:
    521                                                                                                                         if (e.ctrlKey) {
    522                                                                                                                                 o.oGrid
    523                                                                                                                                                 .selectAllNode();
    524                                                                                                                         }
    525                                                                                                                         break;
    526                                                                                                                 default:
    527                                                                                                                         break;
    528                                                                                                                 }
    529                                                                                                         });
    530                                                                 }
    531                                                                 /***********************************************
    532                                                                  * DOCUMENT EVENTS BINDING - END *
    533                                                                  **********************************************/
    534 
    535                                                                 /***********************************************
    536                                                                  * CREATE FOLDER - START *
    537                                                                  **********************************************/
    538                                                                 var createFolderStart = function() {
    539                                                                         var promptOptions = {
    540                                                                                 title : "Tạo thư mục mới",
    541                                                                                 buttons : {
    542                                                                                         confirm : {
    543                                                                                                 label : "Lưu"
    544                                                                                         },
    545                                                                                         cancel : {
    546                                                                                                 label : "Há»§y"
    547                                                                                         }
    548                                                                                 },
    549                                                                                 callback : function(result) {
    550                                                                                         if (result === null) {
    551                                                                                         } else {
    552                                                                                                 createFolder(treeCurrentNode,
    553                                                                                                                 result);
    554                                                                                         }
    555                                                                                 }
    556                                                                         };
    557 
    558                                                                         return bootbox.prompt(promptOptions);
    559                                                                 }
    560 
    561                                                                 var uploadStart = function() {
    562                                                                         var userid = o.data.userinfo.us_id;
    563                                                                         var promptOptions = {
    564                                                                                 title : "Tải lên",
    565                                                                                 message : "<form id='upload' method='post'  action='"
    566                                                                                                 + api_url
    567                                                                                                 + "space/upload' enctype='multipart/form-data'><div id='drop'>Kéo thả tệp vào đây <a> Chọn tệp </a><input type='hidden' name='response' value='1'/><input type='hidden' name='dir' value='"
    568                                                                                                 + self.getTreeCurrentNode()
    569                                                                                                 + "'/><input type='hidden' name='userid' value='"
    570                                                                                                 + userid
    571                                                                                                 + "'/><input type='file' name='upload_file' multiple /></div><ul></ul></form>",
    572                                                                                 buttons : {
    573                                                                                         success : {
    574                                                                                                 label : "Xong",
    575                                                                                                 className : "btn btn-primary",
    576                                                                                                 callback : function(result) {
    577 
    578                                                                                                 }
    579                                                                                         },
    580                                                                                 },
    581                                                                                 onEscape : function() {
    582                                                                                         uploadDone(self
    583                                                                                                         .getTreeCurrentNode());
    584                                                                                 }
    585                                                                         };
    586 
    587                                                                         return bootbox.dialog(promptOptions);
    588                                                                 }
    589                                                                 var uploadDone = function(result) {
    590 
    591                                                                 }
    592                                                                 var btnPreviewClick = function() {
    593                                                                         var items = o.oGrid.getHighLightItem();
    594                                                                         if ($(items).length == 0) {
    595                                                                                 var dirID = $(o.oTree.getSelectedNode())
    596                                                                                                 .attr('id');
    597                                                                                 var item = o.data.DIRECTORIES[searchItemByID(
    598                                                                                                 dirID, 'directory')];
    599                                                                                 item.type = 'directory';
    600                                                                                 items = [ item ];
    601                                                                         }
    602                                                                         previewFile(items[0]);
    603                                                                 }
    604 
    605                                                                 var previewFile = function(node) {
    606                                                                         var content = "";
    607                                                                         $ext = node.fileurl.split('.').pop();
    608                                                                         $ext = $ext.toLowerCase();
    609                                                                         if ($.inArray($ext, [ "jpg", "jpeg", "png",
    610                                                                                         "gif" ]) >= 0) {
    611                                                                                 content = "<img style='width:100%' src='"
    612                                                                                                 + node.fileurl
    613                                                                                                 + "' /><br />"
    614                                                                                                 + node.name;
    615                                                                                 bootbox.alert(content);
    616                                                                         }
    617 
    618                                                                         if ($.inArray($ext, [ "flv", "mp4", "avi",
    619                                                                                         "m4v" ]) >= 0) {
    620                                                                                 $
    621                                                                                                 .ajax({
    622                                                                                                         url : o.host
    623                                                                                                                         + "preview/getVideoPreview/",
    624                                                                                                         type : "POST",
    625                                                                                                         data : {
    626                                                                                                                 fileurl : node.fileurl,
    627                                                                                                                 name : node.name
    628                                                                                                         },
    629                                                                                                         success : function(data,
    630                                                                                                                         textStatus, jqXHR) {
    631                                                                                                                 bootbox.alert(data);
    632                                                                                                         },
    633                                                                                                         error : function(jqXHR,
    634                                                                                                                         textStatus,
    635                                                                                                                         errorThrown) {
    636 
    637                                                                                                         }
    638                                                                                                 });
    639                                                                         }
    640 
    641                                                                         if ($.inArray($ext, [ "ogg" ]) >= 0) {
    642                                                                                 content = '<audio controls>\
     2    (function ($) {
     3        $
     4                .extend(
     5                        $.fn,
     6                        {
     7                            violetFileManager: function (o) {
     8                                if (!o)
     9                                    var o = {};
     10                                if (o.tree == undefined)
     11                                    o.tree = null;
     12                                if (o.grid == undefined)
     13                                    o.grid = null;
     14
     15                                if (o.maincontainer == undefined)
     16                                    o.maincontainer = null;
     17                                if (o.titlebar == undefined)
     18                                    o.titlebar = null;
     19                                if (o.toolsbar == undefined)
     20                                    o.toolsbar = null;
     21                                if (o.statusbar == undefined)
     22                                    o.statusbar = null;
     23                                if (o.navigationbar == undefined)
     24                                    o.navigationbar = null;
     25
     26                                if (o.oTree == undefined)
     27                                    o.oTree = null;
     28                                if (o.oGrid == undefined)
     29                                    o.oGrid = null;
     30                                if (o.host == undefined)
     31                                    o.host = 'http://localhost/';
     32                                if (o.hostmodule == undefined)
     33                                    o.hostmodule = 'privatecontent/';
     34                                if (o.script == undefined)
     35                                    o.script = 'getcontent';
     36                                if (o.data == undefined)
     37                                    o.data = null;
     38                                if (o.datasource == undefined)
     39                                    o.datasource = 'ajax';
     40
     41                                if (o.filehosting == undefined)
     42                                    o.filehosting = 'http://sbgapi.violet.vn/';
     43
     44                                if (o.invisibledButtons == undefined)
     45                                    o.invisibledButtons = null;
     46
     47                                o.host = o.host + 'ajax/';
     48
     49                                var isDev = false;
     50                                var contextmenu = null;
     51                                var oContainer = this;
     52                                var tree = [];
     53                                var totalItem = 0;
     54                                var countItem = 0;
     55                                var maxWidth = 0;
     56                                var treeCurrentNode = null;
     57                                var self = this;
     58                                var oClipBoard = {
     59                                    items: null,
     60                                    act: null
     61                                };
     62
     63                                /**
     64                                 * Toolbar defined
     65                                 */
     66                                var btnNewFolder = $('#'
     67                                        + o.toolsbar
     68                                        + ' > DIV.btn-group.basic > #btnNewFolder');
     69                                var btnDel = $('#' + o.toolsbar
     70                                        + ' > DIV.btn-group.basic > #btnDel');
     71                                var btnCopy = $('#' + o.toolsbar
     72                                        + ' > DIV.btn-group.basic > #btnCopy');
     73                                var btnCut = $('#' + o.toolsbar
     74                                        + ' > DIV.btn-group.basic > #btnCut');
     75                                var btnPaste = $('#' + o.toolsbar
     76                                        + ' > DIV.btn-group.basic > #btnPaste');
     77                                var btnShare = $('#' + o.toolsbar
     78                                        + ' > DIV.btn-group.social > #btnShare');
     79                                var btnPreview = $('#'
     80                                        + o.toolsbar
     81                                        + ' > DIV.btn-group.social > #btnPreview');
     82                                var btnDownload = $('#'
     83                                        + o.toolsbar
     84                                        + ' > DIV.btn-group.creation > #btnDownload');
     85                                var btnUpload = $('#'
     86                                        + o.toolsbar
     87                                        + ' > DIV.btn-group.creation > #btnUpload');
     88                                var btnRefresh = $('#'
     89                                        + o.toolsbar
     90                                        + ' > DIV.btn-group.control > #btnRefresh');
     91
     92                                var toolbarButtons = [btnNewFolder, btnDel,
     93                                    btnCopy, btnCut, btnPaste, btnShare,
     94                                    btnPreview, btnDownload, btnUpload,
     95                                    btnRefresh];
     96                                var statusbar = $('DIV#' + o.statusbar);
     97
     98                                var sendCommand = function (p) {
     99                                    if (p.postdata == undefined)
     100                                        p.postdata = null;
     101                                    if (p.script == undefined)
     102                                        p.script = o.script;
     103                                    if (p.callbackSuccess == undefined)
     104                                        p.callbackSuccess = null;
     105                                    if (p.callbackDone == undefined)
     106                                        p.callbackDone = null;
     107                                    if (p.callbackFail == undefined)
     108                                        p.callbackFail = null;
     109                                    if (p.callbackAlways == undefined)
     110                                        p.callbackAlways = null;
     111                                    if (p.parseData == undefined)
     112                                        p.parseData = null;
     113                                    if (p.self == undefined)
     114                                        p.self = this;
     115
     116                                    if (p.script != null
     117                                            && (o.datasource == 'ajax' || isDev)) {
     118                                        $
     119                                                .post(
     120                                                        o.host + o.hostmodule
     121                                                        + p.script,
     122                                                        p.postdata,
     123                                                        function (data) {
     124                                                            if (data) {
     125                                                                parseData = $
     126                                                                        .parseJSON(data);
     127                                                                p.parseData = parseData;
     128                                                            }
     129
     130                                                            if (p.callbackSuccess != null) {
     131                                                                if (parseInt(parseData.ERROR.errCode) === 0)
     132                                                                    p
     133                                                                            .callbackSuccess(parseData);
     134                                                                else {
     135                                                                    p
     136                                                                            .callbackFail(parseData.ERROR);
     137                                                                }
     138                                                            }
     139
     140                                                        })
     141                                                .done(
     142                                                        function () {
     143                                                            if (p.callbackDone != null)
     144                                                                p
     145                                                                        .callbackDone(p.parseData);
     146                                                        })
     147                                                .fail(function () {
     148                                                    if (p.callbackFail != null)
     149                                                        p.callbackFail(this);
     150                                                })
     151                                                .always(
     152                                                        function () {
     153                                                            if (p.callbackAlways != null)
     154                                                                p
     155                                                                        .callbackAlways(this);
     156                                                        });
     157                                    } else if (o.datasource == 'json') {
     158                                        if (p.callbackSuccess != null)
     159                                            p.callbackSuccess(o.data);
     160                                        if (p.callbackDone != null)
     161                                            p.callbackDone(this);
     162                                    }
     163
     164                                };
     165
     166                                var getDirTreeMaxWidth = function () {
     167                                    var scrWidth = $(o.maincontainer).width();
     168                                    return parseInt(scrWidth / 2);
     169                                }
     170
     171                                var layoutRender = function () {
     172                                    var scrWidth = $('#' + o.maincontainer)
     173                                            .width();
     174                                    var scrHeght = $(window).innerHeight();
     175                                    var dirTreeHeight = scrHeght
     176                                            - $('#' + o.titlebar).height()
     177                                            - $('#' + o.toolsbar).height()
     178                                            - $('#' + o.statusbar).height() - 5;
     179                                    $('#' + o.tree).parent().height(
     180                                            dirTreeHeight);
     181                                    $('#' + o.grid).parent().height(
     182                                            dirTreeHeight);
     183                                    $('#' + o.grid).parent().width(
     184                                            'calc(100% - '
     185                                            + ($('#' + o.tree).parent()
     186                                                    .width() + 8)
     187                                            + 'px)');
     188                                    var scollWidth = $('#' + o.grid).parent()
     189                                            .width();
     190                                    maxWidth = getDirTreeMaxWidth();
     191                                    $(o.tree).height(dirTreeHeight - 5);
     192
     193                                    if (o.invisibledButtons != null) {
     194                                        for (var i = 0; i < o.invisibledButtons.length; i++) {
     195                                            $('#' + o.invisibledButtons[i])
     196                                                    .hide();
     197                                        }
     198                                    }
     199                                }
     200
     201                                var createFileManager = function (parseData) {
     202                                    o.data = parseData;
     203                                    totalItem = o.data.DIRECTORIES.length;
     204                                    o.oTree = $('#' + o.tree).violetTree({
     205                                        data: o.data.DIRECTORIES,
     206                                        manager: oContainer
     207                                    });
     208                                    o.oGrid = $('#' + o.grid).violetGrid({
     209                                        data: o.data,
     210                                        manager: oContainer
     211                                    });
     212                                    self.refreshStatusBar();
     213                                };
     214
     215                                var getAllDirChild = function (parentID,
     216                                        aryChild) {
     217                                    parentID = parentID == null ? 0 : parentID;
     218                                    var dirList = searchItemsByParent(parentID,
     219                                            'directory');
     220                                    var index = aryChild.length;
     221                                    aryChild[index] = parentID;
     222                                    if (dirList.length > 0) {
     223                                        for (var i = 0; i < dirList.length; i++) {
     224                                            getAllDirChild(dirList[i].id,
     225                                                    aryChild);
     226                                        }
     227                                    }
     228                                }
     229
     230                                var buildTreeFromParent = function (dirID, node) {
     231                                    var aryChildFiles = [];
     232                                    var aryChildDirs = [];
     233                                    var aryChildIDs = [];
     234                                    var aryTmp = [];
     235                                    var dir = o.data.DIRECTORIES[searchItemByID(
     236                                            dirID, 'directory')];
     237                                    aryChildDirs = searchItemsByParent(dirID,
     238                                            'directory');
     239                                    aryChildFiles = searchItemsByParent(dirID,
     240                                            'file');
     241
     242                                    node.id = dir.id;
     243                                    node.name = dir.name;
     244                                    node.type = 'directory';
     245
     246                                    $(aryChildDirs).each(function (index) {
     247                                        var id = this.id;
     248                                        var name = this.name;
     249                                        var type = 'directory';
     250                                        var cDir = {
     251                                            id: id,
     252                                            name: name,
     253                                            type: type,
     254                                            childs: null
     255                                        };
     256                                        aryChildIDs[index] = cDir;
     257                                    });
     258
     259                                    if ($(aryChildFiles).length > 0) {
     260                                        if (node.files == undefined)
     261                                            node.files = [];
     262                                        $(aryChildFiles).each(function (index) {
     263                                            var id = this.id;
     264                                            var name = this.name;
     265                                            var type = 'file';
     266                                            var cFile = {
     267                                                id: id,
     268                                                name: name,
     269                                                type: type
     270                                            };
     271                                            node.files[index] = cFile;
     272                                        });
     273                                    }
     274
     275                                    if ($(aryChildDirs).length > 0) {
     276                                        if (node.childs == undefined)
     277                                            node.childs = [];
     278                                        $(aryChildIDs)
     279                                                .each(
     280                                                        function (index) {
     281                                                            node.childs[index] = new Object;
     282                                                            buildTreeFromParent(
     283                                                                    aryChildIDs[index].id,
     284                                                                    node.childs[index]);
     285                                                        });
     286                                    }
     287                                }
     288
     289                                var checkChildExisted = function (id) {
     290                                    var dirList = searchItemsByParent(id,
     291                                            'directory');
     292                                    var fileList = searchItemsByParent(id,
     293                                            'file');
     294                                    return (dirList.length > 0)
     295                                            || (fileList.length > 0);
     296                                }
     297
     298                                var doneInit = function () {
     299                                    bindEventToToolbars();
     300                                    documentEventsBinding();
     301                                };
     302
     303                                var failInit = function (er) {
     304                                    bootbox.alert(er.err);
     305                                }
     306
     307                                var init = function () {
     308                                    layoutRender();
     309                                    $('#' + o.tree).parent().resizable({
     310                                        maxWidth: maxWidth,
     311                                        minWidth: 220,
     312                                        handles: "e",
     313                                        resize: function (event, ui) {
     314                                            layoutRender();
     315                                        }
     316                                    });
     317                                    $(window).resize(function () {
     318                                        layoutRender();
     319                                        $('#' + o.tree).parent().resizable({
     320                                            maxWidth: maxWidth
     321                                        });
     322                                    });
     323                                    sendCommand({
     324                                        postdata: null,
     325                                        callbackSuccess: createFileManager,
     326                                        callbackDone: doneInit,
     327                                        callbackFail: failInit
     328                                    });
     329                                };
     330
     331                                var searchItemByID = function (id, type) {
     332                                    var data = {};
     333                                    switch (type) {
     334                                        case 'directory':
     335                                            data = o.data.DIRECTORIES;
     336                                            break;
     337                                        case 'file':
     338                                            data = o.data.FILES;
     339                                            break;
     340                                        default:
     341                                            break;
     342                                    }
     343
     344                                    // for (var i = 0; i < data.length; i++) {
     345                                    for (var i in data) {
     346                                        if (data[i].id == id) {
     347                                            return i;
     348                                        }
     349                                    }
     350                                }
     351
     352                                var searchItemsByParent = function (parentID,
     353                                        type) {
     354                                    var data = {};
     355                                    var aryItem = [];
     356                                    var index = aryItem.length;
     357
     358                                    switch (type) {
     359                                        case 'directory':
     360                                            data = o.data.DIRECTORIES;
     361                                            break;
     362                                        case 'file':
     363                                            data = o.data.FILES;
     364                                            break;
     365                                        default:
     366                                            break;
     367                                    }
     368
     369                                    for (i in data) {
     370                                        if (data[i].parentID == parentID) {
     371                                            aryItem[index] = data[i];
     372                                            index++;
     373                                        }
     374                                    }
     375
     376                                    return aryItem;
     377                                }
     378
     379                                /***********************************************
     380                                 * TOOLBAR EVENTS - START *
     381                                 **********************************************/
     382                                var btnRefreshClick = function (obj) {
     383                                    $(o).find('i').addClass('icon-spin');
     384                                    sendCommand({
     385                                        postdata: null,
     386                                        callbackSuccess: function (parseData) {
     387                                            o.data = parseData;
     388                                            self.updateData({
     389                                                updateAll: true
     390                                            });
     391                                            o.oTree.refeshTree();
     392                                        },
     393                                        callbackDone: function () {
     394                                            $(o).find('i').removeClass(
     395                                                    'icon-spin');
     396                                        },
     397                                        callbackFail: failInit
     398                                    });
     399                                }
     400
     401                                var btnNewFolderClick = function () {
     402                                    createFolderStart();
     403                                }
     404
     405                                var btnUploadClick = function () {
     406                                    uploadStart();
     407                                    uploadInit();
     408
     409                                }
     410                                var btnDownloadClick = function () {
     411                                    var items = o.oGrid.getHighLightItem();
     412
     413                                    if ($(items).length == 0) {
     414                                        var node = o.oTree.getSelectedNode();
     415                                        var itemID = $(node).attr('id');
     416
     417                                        if (itemID == 0)
     418                                            return false;
     419
     420                                        items[0] = o.data.DIRECTORIES[searchItemByID(
     421                                                itemID, 'directory')];
     422                                        items[0].type = 'directory';
     423                                    }
     424
     425                                    var postdata = {
     426                                        data: JSON.stringify(items)
     427                                    };
     428                                    var url = o.host + "download/getFile/";
     429                                    self.redirectPost(url, {
     430                                              data: JSON.stringify(items)
     431                                          });
     432       
     433
     434                                   
     435                                }
     436
     437                                var btnDelClick = function () {
     438                                    var items = o.oGrid.getHighLightItem();
     439                                    if ($(items).length == 0) {
     440                                        var dirID = $(o.oTree.getSelectedNode())
     441                                                .attr('id');
     442                                        var item = o.data.DIRECTORIES[searchItemByID(
     443                                                dirID, 'directory')];
     444                                        item.type = 'directory';
     445                                        items = [item];
     446                                    }
     447                                    self.deleteItem(items);
     448                                }
     449
     450                                var btnCopyClick = function () {
     451                                    copy('copy');
     452                                }
     453
     454                                var btnPasteClick = function () {
     455                                    paste();
     456                                }
     457
     458                                var btnCutClick = function () {
     459                                    copy('move');
     460                                }
     461
     462                                var bindEventToToolbars = function () {
     463                                    $(btnRefresh).click(function (e) {
     464                                        btnRefreshClick(this)
     465                                    });
     466
     467                                    $(btnNewFolder).click(function (e) {
     468                                        btnNewFolderClick()
     469                                    });
     470                                    $(btnUpload).click(function (e) {
     471                                        btnUploadClick()
     472                                    });
     473
     474                                    $(btnDel).click(function (e) {
     475                                        btnDelClick()
     476                                    });
     477                                    $(btnCopy).click(function (e) {
     478                                        btnCopyClick()
     479                                    });
     480                                    $(btnCut).click(function (e) {
     481                                        btnCutClick()
     482                                    });
     483                                    $(btnPaste).click(function (e) {
     484                                        btnPasteClick()
     485                                    })
     486                                    $(btnPreview).click(function (e) {
     487                                        btnPreviewClick()
     488                                    })
     489                                    $(btnDownload).click(function (e) {
     490                                        btnDownloadClick()
     491                                    })
     492
     493                                    /*
     494                                     * btnShare btnPreview btnDownload btnUpload
     495                                     */
     496                                }
     497                                /***********************************************
     498                                 * TOOLBAR EVENTS - END *
     499                                 **********************************************/
     500
     501                                /***********************************************
     502                                 * DOCUMENT EVENTS BINDING - START *
     503                                 **********************************************/
     504                                var documentEventsBinding = function () {
     505                                    $(document)
     506                                            .bind(
     507                                                    'keydown',
     508                                                    function (e) {
     509                                                        switch (e.which) {
     510                                                            case 113:
     511                                                            case 27:
     512                                                                var gridSelectedItems = o.oGrid
     513                                                                        .getHighLightItem();
     514                                                                if ($(gridSelectedItems).length > 0) {
     515                                                                    o.oGrid
     516                                                                            .rename(e.which);
     517                                                                } else {
     518                                                                    o.oTree
     519                                                                            .rename(e.which);
     520                                                                }
     521                                                                break;
     522                                                            case 46:
     523                                                                // delete
     524                                                                btnDelClick();
     525                                                                break;
     526                                                            case 65:
     527                                                                if (e.ctrlKey) {
     528                                                                    o.oGrid
     529                                                                            .selectAllNode();
     530                                                                }
     531                                                                break;
     532                                                            default:
     533                                                                break;
     534                                                        }
     535                                                    });
     536                                }
     537                                /***********************************************
     538                                 * DOCUMENT EVENTS BINDING - END *
     539                                 **********************************************/
     540
     541                                /***********************************************
     542                                 * CREATE FOLDER - START *
     543                                 **********************************************/
     544                                var createFolderStart = function () {
     545                                    var promptOptions = {
     546                                        title: "Tạo thư mục mới",
     547                                        buttons: {
     548                                            confirm: {
     549                                                label: "Lưu"
     550                                            },
     551                                            cancel: {
     552                                                label: "Há»§y"
     553                                            }
     554                                        },
     555                                        callback: function (result) {
     556                                            if (result === null) {
     557                                            } else {
     558                                                createFolder(treeCurrentNode,
     559                                                        result);
     560                                            }
     561                                        }
     562                                    };
     563
     564                                    return bootbox.prompt(promptOptions);
     565                                }
     566
     567                                var uploadStart = function () {
     568                                    var userid = o.data.userinfo.us_id;
     569                                    var promptOptions = {
     570                                        title: "Tải lên",
     571                                        message: "<form id='upload' method='post'  action='"
     572                                                + api_url
     573                                                + "space/upload' enctype='multipart/form-data'><div id='drop'>Kéo thả tệp vào đây <a> Chọn tệp </a><input type='hidden' name='response' value='1'/><input type='hidden' name='dir' value='"
     574                                                + self.getTreeCurrentNode()
     575                                                + "'/><input type='hidden' name='userid' value='"
     576                                                + userid
     577                                                + "'/><input type='file' name='upload_file' multiple /></div><ul></ul></form>",
     578                                        buttons: {
     579                                            success: {
     580                                                label: "Xong",
     581                                                className: "btn btn-primary",
     582                                                callback: function (result) {
     583
     584                                                }
     585                                            },
     586                                        },
     587                                        onEscape: function () {
     588                                            uploadDone(self
     589                                                    .getTreeCurrentNode());
     590                                        }
     591                                    };
     592
     593                                    return bootbox.dialog(promptOptions);
     594                                }
     595                                var uploadDone = function (result) {
     596
     597                                }
     598                                var btnPreviewClick = function () {
     599                                    var items = o.oGrid.getHighLightItem();
     600                                    if ($(items).length == 0) {
     601                                        var dirID = $(o.oTree.getSelectedNode())
     602                                                .attr('id');
     603                                        var item = o.data.DIRECTORIES[searchItemByID(
     604                                                dirID, 'directory')];
     605                                        item.type = 'directory';
     606                                        items = [item];
     607                                    }
     608                                    previewFile(items[0]);
     609                                }
     610
     611                                var previewFile = function (node) {
     612                                    var content = "";
     613                                    $ext = node.fileurl.split('.').pop();
     614                                    $ext = $ext.toLowerCase();
     615                                    if ($.inArray($ext, ["jpg", "jpeg", "png",
     616                                        "gif"]) >= 0) {
     617                                        content = "<img style='width:100%' src='"
     618                                                + node.fileurl
     619                                                + "' /><br />"
     620                                                + node.name;
     621                                        bootbox.alert(content);
     622                                    }
     623
     624                                    if ($.inArray($ext, ["flv", "mp4", "avi",
     625                                        "m4v"]) >= 0) {
     626                                        $.ajax({
     627                                                    url: o.host
     628                                                            + "preview/getVideoPreview/",
     629                                                    type: "POST",
     630                                                    data: {
     631                                                        fileurl: node.fileurl,
     632                                                        name: node.name
     633                                                    },
     634                                                    success: function (data,
     635                                                            textStatus, jqXHR) {
     636                                                        bootbox.alert(data);
     637                                                    },
     638                                                    error: function (jqXHR,
     639                                                            textStatus,
     640                                                            errorThrown) {
     641
     642                                                    }
     643                                                });
     644                                    }
     645
     646                                    if ($.inArray($ext, ["ogg"]) >= 0) {
     647                                        content = '<audio controls>\
    643648                        <source src="'
    644                                                                                                 + node.fileurl
    645                                                                                                 + '" type="audio/ogg">\
     649                                                + node.fileurl
     650                                                + '" type="audio/ogg">\
    646651                      Your browser does not support the audio element.\
    647652                      </audio> <br />'
    648                                                                                                 + node.name;
    649                                                                                 bootbox.alert(content);
    650                                                                         }
    651                                                                         if ($.inArray($ext, [ "mp3" ]) >= 0) {
    652                                                                                 content = '<audio controls>\
     653                                                + node.name;
     654                                        bootbox.alert(content);
     655                                    }
     656                                    if ($.inArray($ext, ["mp3"]) >= 0) {
     657                                        content = '<audio controls>\
    653658                        <source src="'
    654                                                                                                 + node.fileurl
    655                                                                                                 + '" type="audio/mpeg">\
     659                                                + node.fileurl
     660                                                + '" type="audio/mpeg">\
    656661                      Your browser does not support the audio element.\
    657662                      </audio> <br />'
    658                                                                                                 + node.name;
    659                                                                                 bootbox.alert(content);
    660                                                                         }
    661 
    662                                                                         if ($.inArray($ext, [ "ppt", "xls", "doc",
    663                                                                                         "pdf", "docx", "pptx", "xlsx" ]) >= 0) {
    664 
    665                                                                                 $.ajax({
    666                                                                                         url : o.host
    667                                                                                                         + "preview/getFilePreview/"
    668                                                                                                         + node.id,
    669                                                                                         type : "POST",
    670                                                                                         data : {},
    671                                                                                         success : function(data,
    672                                                                                                         textStatus, jqXHR) {
    673                                                                                                 bootbox.alert(data);
    674                                                                                         },
    675                                                                                         error : function(jqXHR, textStatus,
    676                                                                                                         errorThrown) {
    677 
    678                                                                                         }
    679                                                                                 });
    680                                                                         }
    681                                                                         if ($.inArray($ext, [ "xvl" ]) >= 0) {
    682                                                                                 var url = o.host.replace("ajax/", "");
    683                                                                                 var redirect = url
    684                                                                                                 + 'frontend/lecture/';
    685                                                                                 self.redirectPost(redirect, {
    686                                                                                         fileid : node.id
    687                                                                                 });
    688                                                                         }
    689                                                                         $(".bootbox").addClass("preview");
    690                                                                 }
    691 
    692                                                                 var uploadInit = function() {
    693                                                                         var ul = $('#upload ul');
    694 
    695                                                                         $('#drop a').click(function() {
    696                                                                                 $(this).parent().find('input').click();
    697                                                                         });
    698 
    699                                                                         $('#upload')
    700                                                                                         .fileupload(
    701                                                                                                         {
    702                                                                                                                 dropZone : $('#drop'),
    703                                                                                                                 add : function(e, data) {
    704 
    705                                                                                                                         var tpl = $('<li class="working"><input type="text" value="0" data-width="48" data-height="48"'
    706                                                                                                                                         + ' data-fgColor="#0788a5" data-readOnly="1" data-bgColor="#3e4043" /><p></p><span></span></li>');
    707                                                                                                                         tpl
    708                                                                                                                                         .find('p')
    709                                                                                                                                         .text(
    710                                                                                                                                                         data.files[0].name)
    711                                                                                                                                         .append(
    712                                                                                                                                                         '<i>'
    713                                                                                                                                                                         + formatFileSize(data.files[0].size)
    714                                                                                                                                                                         + '</i>');
    715                                                                                                                         data.context = tpl
    716                                                                                                                                         .appendTo(ul);
    717                                                                                                                         tpl.find('input')
    718                                                                                                                                         .knob();
    719                                                                                                                         tpl
    720                                                                                                                                         .find(
    721                                                                                                                                                         'span')
    722                                                                                                                                         .click(
    723                                                                                                                                                         function() {
    724 
    725                                                                                                                                                                 if (tpl
    726                                                                                                                                                                                 .hasClass('working')) {
    727                                                                                                                                                                         jqXHR
    728                                                                                                                                                                                         .abort();
    729                                                                                                                                                                 }
    730 
    731                                                                                                                                                                 tpl
    732                                                                                                                                                                                 .fadeOut(function() {
    733                                                                                                                                                                                         tpl
    734                                                                                                                                                                                                         .remove();
    735                                                                                                                                                                                 });
    736 
    737                                                                                                                                                         });
    738 
    739                                                                                                                         var jqXHR = data
    740                                                                                                                                         .submit();
    741                                                                                                                 },
    742                                                                                                                 progress : function(e,
    743                                                                                                                                 data) {
    744 
    745                                                                                                                         // Calculate the
    746                                                                                                                         // completion
    747                                                                                                                         // percentage of the
    748                                                                                                                         // upload
    749                                                                                                                         var progress = parseInt(
    750                                                                                                                                         data.loaded
    751                                                                                                                                                         / data.total
    752                                                                                                                                                         * 100,
    753                                                                                                                                         10);
    754 
    755                                                                                                                         // Update the hidden
    756                                                                                                                         // input field and
    757                                                                                                                         // trigger a change
    758                                                                                                                         // so that the
    759                                                                                                                         // jQuery knob
    760                                                                                                                         // plugin knows to
    761                                                                                                                         // update the dial
    762                                                                                                                         data.context
    763                                                                                                                                         .find(
    764                                                                                                                                                         'input')
    765                                                                                                                                         .val(
    766                                                                                                                                                         progress)
    767                                                                                                                                         .change();
    768 
    769                                                                                                                         if (progress == 100) {
    770                                                                                                                                 data.context
    771                                                                                                                                                 .removeClass('working');
    772 
    773                                                                                                                         }
    774                                                                                                                 },
    775                                                                                                                 fail : function(e, data) {
    776                                                                                                                         // Something has
    777                                                                                                                         // gone wrong!
    778                                                                                                                         data.context
    779                                                                                                                                         .addClass('error');
    780                                                                                                                 },
    781                                                                                                                 done : function(e, data) {
    782                                                                                                                        
    783                                                                                                                         var newFileData = data.result;
    784                                                                                                                         newFileData = $.parseJSON(data.result);
    785                                                                                                                         if (newFileData.ERROR.errCode == 0) {
    786                                                                                                                                 for ( var i = 0; i < $(newFileData.FILES).length; i++) {
    787                                                                                                                                         var file = newFileData.FILES[i];
    788                                                                                                                                         var node = {
    789                                                                                                                                                 thumbnail : file.thumbnail,
    790                                                                                                                                                 id : file.id,
    791                                                                                                                                                 name : file.name,
    792                                                                                                                                                 fileurl : file.fileurl,
    793                                                                                                                                                 parentID : file.parentID,
    794                                                                                                                                                 minetype : file.minetype,
    795                                                                                                                                                 size: file.size
    796                                                                                                                                         };
    797                                                                                                                                         o.oGrid.createNode(node);
    798                                                                                                                                         o.data.FILES.push(node);
    799                                                                                                                                 }
    800 
    801                                                                                                                                 for ( var i = 0; i < $(newFileData.DIRECTORIES).length; i++) {
    802                                                                                                                                         var file = newFileData.DIRECTORIES[i];
    803                                                                                                                                         var node = {
    804                                                                                                                                                 id : file.id,
    805                                                                                                                                                 name : file.name,
    806                                                                                                                                                 parentID : file.parentID,
    807                                                                                                                                                 minetype : file.minetype
    808                                                                                                                                         };
    809                                                                                                                                         o.oTree.createNode(node);
    810                                                                                                                                         o.oGrid.createNode(node);
    811                                                                                                                                         o.data.DIRECTORIES.push(node);
    812                                                                                                                                 }
    813                                                                                                                                
    814                                                                                                                                 self.refreshStatusBar();                                                                                                                        }
    815                                                                                                                 }
    816 
    817                                                                                                         });
    818 
    819                                                                         $(document).on('drop dragover',
    820                                                                                         function(e) {
    821                                                                                                 e.preventDefault();
    822                                                                                         });
    823 
    824                                                                         function formatFileSize(bytes) {
    825                                                                                 if (typeof bytes !== 'number') {
    826                                                                                         return '';
    827                                                                                 }
    828 
    829                                                                                 if (bytes >= 1000000000) {
    830                                                                                         return (bytes / 1000000000)
    831                                                                                                         .toFixed(2)
    832                                                                                                         + ' GB';
    833                                                                                 }
    834 
    835                                                                                 if (bytes >= 1000000) {
    836                                                                                         return (bytes / 1000000).toFixed(2)
    837                                                                                                         + ' MB';
    838                                                                                 }
    839 
    840                                                                                 return (bytes / 1000).toFixed(2)
    841                                                                                                 + ' KB';
    842                                                                         }
    843 
    844                                                                 };
    845 
    846                                                                 var createFolder = function(parent, name) {
    847                                                                         var postdata = {
    848                                                                                 fname : name,
    849                                                                                 fparentid : parent
    850                                                                         };
    851                                                                         var script = 'createdir';
    852                                                                         /* isDev = true; */
    853                                                                         sendCommand({
    854                                                                                 postdata : postdata,
    855                                                                                 script : script,
    856                                                                                 callbackSuccess : function(parseData) {
    857                                                                                         createFolderFinish(parseData);
    858                                                                                 },
    859                                                                                 callbackFail : function() {
    860                                                                                 }
    861                                                                         });
    862                                                                 }
    863 
    864                                                                 var createFolderFinish = function(parseData) {
    865                                                                         /* isDev = false; */
    866                                                                         if (parseData.ERROR.errCode == 0) {
    867                                                                                 var node = {
    868                                                                                         id : parseData.id,
    869                                                                                         name : parseData.name,
    870                                                                                         parentID : parseData.parentID
    871                                                                                 };
    872                                                                                 o.oTree.createNode(node);                                                                               
    873                                                                                 o.data.DIRECTORIES.push(node);
    874                                                                                 if (o.oGrid)
    875                                                                                         o.oGrid.reloadGrid();
    876                                                                         }
    877                                                                 }
    878                                                                 /***********************************************
    879                                                                  * CREATE FOLDER - END *
    880                                                                  **********************************************/
    881                                                                 /***********************************************
    882                                                                  * COPY & PASTE & MOVE - START * =***********
    883                                                                  **********************************************/
    884                                                                 var copy = function(act) {
    885                                                                         // detect selected items
    886                                                                         // push to clipboard
    887                                                                         var items = o.oGrid.getHighLightItem();
    888 
    889                                                                         if ($(items).length == 0) {
    890                                                                                 var node = o.oTree.getSelectedNode();
    891                                                                                 var itemID = $(node).attr('id');
    892 
    893                                                                                 if (itemID == 0)
    894                                                                                         return false;
    895 
    896                                                                                 items[0] = o.data.DIRECTORIES[searchItemByID(
    897                                                                                                 itemID, 'directory')];
    898                                                                                 items[0].type = 'directory';
    899                                                                         }
    900 
    901                                                                         if ($(items).length > 0) {
    902                                                                                 oClipBoard.items = items;
    903                                                                                 oClipBoard.act = act;
    904                                                                         }
    905                                                                         return true;
    906                                                                 }
    907 
    908                                                                 var paste = function() {
    909                                                                         if ((oClipBoard.act != 'copy' && oClipBoard.act != 'move')
    910                                                                                         || oClipBoard.items == null)
    911                                                                                 return;
    912 
    913                                                                         var items = [];
    914                                                                        
    915                                                                         var destination = self.getTreeCurrentNode();
    916                                                                         if (oClipBoard.act != 'copy') {
    917                                                                                 $(oClipBoard.items).each(
    918                                                                                         function(index) {
    919                                                                                                 var node = new Object;
    920                                                                                                 if (this.type == 'directory')
    921                                                                                                         buildTreeFromParent(this.id, node);
    922                                                                                                 else {
    923                                                                                                         node.id = this.id;
    924                                                                                                         node.type = 'file';
    925                                                                                                 }
    926 
    927                                                                                                 items[index] = node;
    928                                                                                         });
    929                                                                         } else {
    930                                                                                 items = oClipBoard.items;
    931                                                                         }
    932                                                                        
    933                                                                         for ( var i = 0; i < items.length; i++) {
    934                                                                                 if (items[i].type == 'directory') {
    935                                                                                         items[i] = self.getAllDirChilds(items[i]);
    936                                                                                 }
    937                                                                         }
    938                                                                        
    939                                                                         var postdata = {
    940                                                                                 act : oClipBoard.act,
    941                                                                                 destination : destination,
    942                                                                                 data : JSON.stringify(items)
    943                                                                         };
    944                                                                         var script = oClipBoard.act;
    945 
    946                                                                         sendCommand({
    947                                                                                 postdata : postdata,
    948                                                                                 script : script,
    949                                                                                 callbackSuccess : function(parseData) {
    950                                                                                         if (oClipBoard.act == 'copy') {
    951                                                                                                 $(parseData.DIRECTORIES).each(
    952                                                                                                                                 function(index) {
    953                                                                                                                                         o.data.DIRECTORIES[$(o.data.DIRECTORIES).length] = this;
    954                                                                                                                                 });
    955 
    956                                                                                                 $(parseData.FILES).each(
    957                                                                                                                                 function(index) {
    958                                                                                                                                         o.data.FILES[$(o.data.FILES).length] = this;
    959                                                                                                                                 });
    960 
    961                                                                                                 o.data.DIRECTORIES.sort(function(a, b) {
    962                                                                                                                         return a.parentID - b.parentID;
    963                                                                                                                 });
    964 
    965                                                                                                 o.oTree.setData(o.data.DIRECTORIES);
    966                                                                                                 o.oGrid.setData(o.data);
    967                                                                                                 o.oTree.createCopyNode(parseData.DIRECTORIES);
    968                                                                                                 o.oGrid.reloadGrid();
    969                                                                                         } else if (oClipBoard.act == 'move') {
    970 
    971                                                                                         }
    972                                                                                        
    973                                                                                         oClipBoard.act == '';
    974                                                                                         oClipBoard.items = null;
    975                                                                                 }
    976                                                                         });
    977                                                                 }
    978 
    979                                                                 var move = function() {
    980 
    981                                                                 }
    982 
    983                                                                 var copyTo = function() {
    984 
    985                                                                 }
    986 
    987                                                                 var moveTo = function() {
    988 
    989                                                                 }
    990 
    991                                                                 /***********************************************
    992                                                                  * COPY & PASTE & MOVE - END *
    993                                                                  **********************************************/
    994 
    995                                                                 this.deleteItem = function(item) {
    996 
    997                                                                         var confirmText = 'Bạn có muốn xóa ';
    998 
    999                                                                         if ($.isArray(item) && item.length > 1) {
    1000                                                                                 confirmText += 'các thư mục (và files) đã chọn?';
    1001                                                                         } else if (item.length == 1) {
    1002                                                                                 if (item[0].id == 0)
    1003                                                                                         return false;
    1004                                                                                 confirmText += (item[0].type == 'directory') ? 'thư mục'
    1005                                                                                                 : 'file';
    1006                                                                                 confirmText += ' <span style="font-weight:bold">'
    1007                                                                                                 + item[0].name
    1008                                                                                                 + "</span> khÃŽng?";
    1009                                                                         }
    1010 
    1011                                                                         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>';
    1012 
    1013                                                                         var parentID = item[0].parentID;
    1014 
    1015                                                                         for ( var i = 0; i < item.length; i++) {
    1016                                                                                 if (item[i].type == 'directory') {
    1017                                                                                         item[i] = self.getAllDirChilds(item[i]);
    1018                                                                                 }
    1019                                                                         }
    1020 
    1021                                                                         var confirmOptions = {
    1022                                                                                 message : confirmText,
    1023                                                                                 buttons : {
    1024                                                                                         confirm : {
    1025                                                                                                 label : "Xóa"
    1026                                                                                         },
    1027                                                                                         cancel : {
    1028                                                                                                 label : "KhÃŽng xóa"
    1029                                                                                         }
    1030                                                                                 },
    1031                                                                                 callback : function(result) {
    1032                                                                                         if (result) {
    1033                                                                                                 var delobj = JSON
    1034                                                                                                                 .stringify(item);
    1035                                                                                                 var postdata = {
    1036                                                                                                         delobj : delobj
    1037                                                                                                 };
    1038                                                                                                 var script = 'delete';
    1039                                                                                                 sendCommand({
    1040                                                                                                         postdata : postdata,
    1041                                                                                                         script : script,
    1042                                                                                                         callbackSuccess : function(
    1043                                                                                                                         parseData) {
    1044                                                                                                                 if ($(parseData.DIRECTORIES).length > 0) {
    1045                                                                                                                         $(parseData.DIRECTORIES).each(
    1046                                                                                                                                                         function(index) {
    1047                                                                                                                                                                 o.oTree.deletion(this);
    1048                                                                                                                                                                 o.oGrid.deletion(this,'directory');
    1049                                                                                                                                                         });
    1050                                                                                                                 }
    1051 
    1052                                                                                                                 if ($(parseData.FILES).length > 0) {
    1053                                                                                                                         $(parseData.FILES).each(
    1054                                                                                                                                                         function(index) {
    1055                                                                                                                                                                 var file = o.data.FILES[searchItemByID(this,'file')];
    1056                                                                                                                                                                 o.oGrid.deletion(this,file.minetype);
    1057                                                                                                                                                         });
    1058                                                                                                                 }
    1059                                                                                                         },
    1060                                                                                                         callbackDone : function(obj) {
    1061                                                                                                                 if ($(parseData.DIRECTORIES).length > 0) {
    1062                                                                                                                         $(parseData.DIRECTORIES).each(
    1063                                                                                                                                                         function(index) {
    1064                                                                                                                                                                 o.data.DIRECTORIES.splice(searchItemByID(this,'directory'), 1);
    1065                                                                                                                                                         });
    1066                                                                                                                 }
    1067 
    1068                                                                                                                 if ($(parseData.FILES).length > 0) {
    1069                                                                                                                         $(parseData.FILES).each(
    1070                                                                                                                                                         function(index) {
    1071                                                                                                                                                                 o.data.FILES.splice(searchItemByID(this,'file'), 1);
    1072                                                                                                                                                         });
    1073                                                                                                                 }
    1074 
    1075                                                                                                                 o.oTree.setData(o.data.DIRECTORIES);
    1076                                                                                                                 o.oGrid.setData(o.data);
    1077                                                                                                                 self.setTreeCurrentNode(parentID);
    1078                                                                                                                 o.oGrid.reloadGrid();
    1079                                                                                                                 self.refreshStatusBar();
    1080                                                                                                         },
    1081                                                                                                         callbackFail : function() {
    1082                                                                                                         }
    1083                                                                                                 });
    1084                                                                                         }
    1085                                                                                 }
    1086                                                                         };
    1087 
    1088                                                                         bootbox.confirm(confirmOptions);
    1089                                                                 }
    1090 
    1091                                                                 this.getAllDirChilds = function(oDirItem) {
    1092                                                                         var aryChildDirTmp = [];
    1093                                                                         var aryChildDirID = [];
    1094                                                                         var aryChildFiles = searchItemsByParent(
    1095                                                                                         oDirItem.id, 'file');
    1096                                                                         var aryChildDirs = [];
    1097 
    1098                                                                         getAllDirChild(oDirItem.id, aryChildDirTmp);
    1099                                                                         for ( var d = 1; d < aryChildDirTmp.length; d++) {
    1100                                                                                 aryChildDirID[d - 1] = aryChildDirTmp[d];
    1101                                                                         }
    1102 
    1103                                                                         for ( var j = 0; j < aryChildDirID.length; j++) {
    1104                                                                                 if (o.data.DIRECTORIES[searchItemByID(
    1105                                                                                                 aryChildDirID[j], 'directory')] != undefined)
    1106                                                                                         aryChildDirs[aryChildDirs.length] = o.data.DIRECTORIES[searchItemByID(
    1107                                                                                                         aryChildDirID[j],
    1108                                                                                                         'directory')];
    1109 
    1110                                                                                 var aryTmp = searchItemsByParent(
    1111                                                                                                 aryChildDirID[j], 'file');
    1112                                                                                 if (aryTmp.length > 0)
    1113                                                                                         for ( var f in aryTmp) {
    1114                                                                                                 aryChildFiles[aryChildFiles.length] = aryTmp[f];
    1115                                                                                         }
    1116                                                                         }
    1117 
    1118                                                                         oDirItem.childDirs = aryChildDirs;
    1119                                                                         oDirItem.childFiles = aryChildFiles;
    1120                                                                         return oDirItem;
    1121                                                                 }
    1122 
    1123                                                                 this.setTreeCurrentNode = function(treeNode) {
    1124                                                                         // fire when click a node on Tree
    1125                                                                         // then fire action of Grid
    1126                                                                         treeCurrentNode = treeNode;
    1127                                                                         if (o.oGrid)
    1128                                                                                 o.oGrid.reloadGrid();
    1129                                                                 };
    1130 
    1131                                                                 this.getTreeCurrentNode = function() {
    1132                                                                         return treeCurrentNode;
    1133                                                                 }
    1134 
    1135                                                                 this.gridNodeDblClick = function(node) {
    1136                                                                         if (node.minetype == 'directory') {
    1137                                                                                 var treeNode = $('#' + o.tree)
    1138                                                                                                 .find(
    1139                                                                                                                 'UL.vstree[rel^="node'
    1140                                                                                                                                 + node.parentID
    1141                                                                                                                                 + '"] > LI[rel^="folder"] > A#'
    1142                                                                                                                                 + node.id);
    1143                                                                                 o.oTree.activeNode(treeNode);
    1144                                                                         } else {
    1145                                                                                 // execute or preview file
    1146                                                                                 previewFile(node);
    1147                                                                         }
    1148                                                                 };
    1149 
    1150                                                                 this.createNewFolder = function() {
    1151 
    1152                                                                 }
    1153 
    1154                                                                 this.updateData = function(p) {
    1155                                                                         if (p.item == undefined)
    1156                                                                                 p.item = null;
    1157                                                                         if (p.updateAll == undefined)
    1158                                                                                 p.updateAll = false;
    1159                                                                         if (p.from == undefined)
    1160                                                                                 p.from = null;
    1161                                                                         if (p.type == undefined)
    1162                                                                                 p.type = null;
    1163                                                                         if (p.callback == undefined)
    1164                                                                                 p.callback = null;
    1165 
    1166                                                                         var obj = p.from == 'tree' ? o.oGrid
    1167                                                                                         : o.oTree;
    1168                                                                         if (!p.updateAll) {
    1169                                                                                 var index = searchItemByID(p.item.id,
    1170                                                                                                 p.type);
    1171                                                                                 switch (p.type) {
    1172                                                                                 case 'directory':
    1173                                                                                         o.data.DIRECTORIES[index].name = p.item.name;
    1174                                                                                         o.data.DIRECTORIES[index].parentID = p.item.parentID;
    1175                                                                                         break;
    1176                                                                                 case 'file':
    1177                                                                                         o.data.FILES[index].name = p.item.name;
    1178                                                                                         o.data.FILES[index].parentID = p.item.parentID;
    1179                                                                                         o.data.FILES[index].minetype = p.item.minetype;
    1180                                                                                         o.data.FILES[index].fileurl = p.item.fileurl;
    1181                                                                                         break;
    1182                                                                                 default:
    1183                                                                                         break;
    1184                                                                                 }
    1185                                                                         }
    1186 
    1187                                                                         o.oTree.setData(o.data.DIRECTORIES);
    1188                                                                         o.oGrid.setData(o.data);
    1189 
    1190                                                                         if (p.callback != null) {
    1191                                                                                 eval('obj.' + p.callback + '(p.item);')
    1192                                                                         }
    1193 
    1194                                                                         // call sendCommand
    1195                                                                 }
    1196 
    1197                                                                 this.searchItemsByParent = function(parentID,
    1198                                                                                 type) {
    1199                                                                         return searchItemsByParent(parentID, type);
    1200                                                                 }
    1201 
    1202                                                                 this.searchItemByID = function(id, type) {
    1203                                                                         return searchItemByID(id, type);
    1204                                                                 }
    1205 
    1206                                                                 this.refreshStatusBar = function() {
    1207                                                                         var totalSize = 0;
    1208                                                                         var message = '';
    1209                                                                         if (o.data.FILES.length > 0) {
    1210                                                                                 for ( var i = 0; i < o.data.FILES.length; i++) {
    1211                                                                                         totalSize += parseInt(o.data.FILES[i].size);
    1212                                                                                 }
    1213                                                                         }
    1214 
    1215                                                                         message = '<span>Tổng dung lượng đã sá»­ dụng: <strong>'
    1216                                                                                         + self.formatFileSize(totalSize)
    1217                                                                                         + '</strong></span>';
    1218 
    1219                                                                         var items = o.oGrid.getHighLightItem();
    1220                                                                         if (items.length == 0) {
    1221                                                                                 var id = $(o.oTree.getSelectedNode()).attr('id');
    1222                                                                                 var item = o.data.DIRECTORIES[self.searchItemByID(id, 'directory')];
    1223                                                                         }
    1224                                                                         if (items.length == 1) {
    1225                                                                                 if ((typeof items[0].minetype !== 'undefined')) {
    1226                                                                                         message += '<span>Tệp: <strong>'
    1227                                                                                                         + items[0].name
    1228                                                                                                         + '</strong></span>';
    1229                                                                                         message += '<span> - Dung lượng: <strong>'
    1230                                                                                                         + self
    1231                                                                                                                         .formatFileSize(items[0].size)
    1232                                                                                                         + '</strong></span>';
    1233                                                                                 } else {
    1234                                                                                         message += '<span>Thư mục: <strong>'
    1235                                                                                                         + items[0].name
    1236                                                                                                         + '</strong></span>';
    1237                                                                                 }
    1238                                                                         } else if (items.length > 1) {
    1239                                                                                 var selectedSize = 0;
    1240                                                                                 for ( var i = 0; i < items.length; i++) {
    1241                                                                                         selectedSize += (typeof items[i].minetype !== 'undefined') ? parseInt(items[i].size)
    1242                                                                                                         : 0;
    1243                                                                                 }
    1244                                                                                 message += '<span><strong>'
    1245                                                                                                 + items.length
    1246                                                                                                 + ' tệp (thư mục)</strong> được chọn</span>';
    1247                                                                                 message += '<span> - Dung lượng: <strong>'
    1248                                                                                                 + self
    1249                                                                                                                 .formatFileSize(selectedSize)
    1250                                                                                                 + '</strong></span>';
    1251                                                                         }
    1252 
    1253                                                                         $(statusbar).html(message);
    1254                                                                 }
    1255 
    1256                                                                 this.redirectPost = function(location, args) {
    1257                                                                         var form = '';
    1258                                                                         $.each(args, function(key, value) {
    1259                                                                                 form += '<input type="hidden" name="'
    1260                                                                                                 + key + '" value="' + value
    1261                                                                                                 + '">';
    1262                                                                         });
    1263                                                                         $(
    1264                                                                                         '<form action="' + location
    1265                                                                                                         + '" method="POST">' + form
    1266                                                                                                         + '</form>').appendTo(
    1267                                                                                         'body').submit();
    1268                                                                 }
    1269 
    1270                                                                 this.formatFileSize = function(size) {
    1271                                                                         var i;
    1272                                                                         i = Math.floor(Math.log(size)
    1273                                                                                         / Math.log(1024));
    1274                                                                         if ((size === 0) || (parseInt(size) === 0)) {
    1275                                                                                 return "0 kB";
    1276                                                                         } else if (isNaN(i)
    1277                                                                                         || (!isFinite(size))
    1278                                                                                         || (size === Number.POSITIVE_INFINITY)
    1279                                                                                         || (size === Number.NEGATIVE_INFINITY)
    1280                                                                                         || (size == null) || (size < 0)) {
    1281                                                                                 console.info("Throwing error");
    1282                                                                                 throw Error(""
    1283                                                                                                 + size
    1284                                                                                                 + " did not compute to a valid number to be humanized.");
    1285                                                                         } else {
    1286                                                                                 return (size / Math.pow(1024, i))
    1287                                                                                                 .toFixed(2)
    1288                                                                                                 * 1
    1289                                                                                                 + " "
    1290                                                                                                 + [ "B", "KB", "MB", "GB",
    1291                                                                                                                 "TB", "PB", "EB", "ZB",
    1292                                                                                                                 "YB" ][i];
    1293                                                                         }
    1294                                                                 }
    1295 
    1296                                                                 this.initialize = function() {
    1297                                                                         init();
    1298                                                                         return this;
    1299                                                                 };
    1300 
    1301                                                                 return this.initialize();
    1302                                                         }
    1303 
    1304                                                 });
    1305         })(jQuery);
     663                                                + node.name;
     664                                        bootbox.alert(content);
     665                                    }
     666
     667                                    if ($.inArray($ext, ["ppt", "xls", "doc",
     668                                        "pdf", "docx", "pptx", "xlsx"]) >= 0) {
     669
     670                                        $.ajax({
     671                                            url: o.host
     672                                                    + "preview/getFilePreview/"
     673                                                    + node.id,
     674                                            type: "POST",
     675                                            data: {},
     676                                            success: function (data,
     677                                                    textStatus, jqXHR) {
     678                                                bootbox.alert(data);
     679                                            },
     680                                            error: function (jqXHR, textStatus,
     681                                                    errorThrown) {
     682
     683                                            }
     684                                        });
     685                                    }
     686                                    if ($.inArray($ext, ["xvl"]) >= 0) {
     687                                        var url = o.host.replace("ajax/", "");
     688                                        var redirect = url
     689                                                + 'frontend/lecture/';
     690                                        self.redirectPost(redirect, {
     691                                            fileid: node.id
     692                                        });
     693                                    }
     694                                    $(".bootbox").addClass("preview");
     695                                }
     696
     697                                var uploadInit = function () {
     698                                    var ul = $('#upload ul');
     699
     700                                    $('#drop a').click(function () {
     701                                        $(this).parent().find('input').click();
     702                                    });
     703
     704                                    $('#upload').fileupload(
     705                                                    {
     706                                                        dropZone: $('#drop'),
     707                                                        add: function (e, data) {
     708
     709                                                            var tpl = $('<li class="working"><input type="text" value="0" data-width="48" data-height="48"'
     710                                                                    + ' data-fgColor="#0788a5" data-readOnly="1" data-bgColor="#3e4043" /><p></p><span></span></li>');
     711                                                            tpl
     712                                                                    .find('p')
     713                                                                    .text(
     714                                                                            data.files[0].name)
     715                                                                    .append(
     716                                                                            '<i>'
     717                                                                            + formatFileSize(data.files[0].size)
     718                                                                            + '</i>');
     719                                                            data.context = tpl
     720                                                                    .appendTo(ul);
     721                                                            tpl.find('input')
     722                                                                    .knob();
     723                                                            tpl
     724                                                                    .find(
     725                                                                            'span')
     726                                                                    .click(
     727                                                                            function () {
     728
     729                                                                                if (tpl
     730                                                                                        .hasClass('working')) {
     731                                                                                    jqXHR
     732                                                                                            .abort();
     733                                                                                }
     734
     735                                                                                tpl
     736                                                                                        .fadeOut(function () {
     737                                                                                            tpl
     738                                                                                                    .remove();
     739                                                                                        });
     740
     741                                                                            });
     742
     743                                                            var jqXHR = data
     744                                                                    .submit();
     745                                                        },
     746                                                        progress: function (e,
     747                                                                data) {
     748
     749                                                            // Calculate the
     750                                                            // completion
     751                                                            // percentage of the
     752                                                            // upload
     753                                                            var progress = parseInt(
     754                                                                    data.loaded
     755                                                                    / data.total
     756                                                                    * 100,
     757                                                                    10);
     758
     759                                                            // Update the hidden
     760                                                            // input field and
     761                                                            // trigger a change
     762                                                            // so that the
     763                                                            // jQuery knob
     764                                                            // plugin knows to
     765                                                            // update the dial
     766                                                            data.context
     767                                                                    .find(
     768                                                                            'input')
     769                                                                    .val(
     770                                                                            progress)
     771                                                                    .change();
     772
     773                                                            if (progress == 100) {
     774                                                                data.context
     775                                                                        .removeClass('working');
     776
     777                                                            }
     778                                                        },
     779                                                        fail: function (e, data) {
     780                                                            // Something has
     781                                                            // gone wrong!
     782                                                            data.context
     783                                                                    .addClass('error');
     784                                                        },
     785                                                        done: function (e, data) {
     786
     787                                                            var newFileData = data.result;
     788                                                            newFileData = $.parseJSON(data.result);
     789                                                            if (newFileData.ERROR.errCode == 0) {
     790                                                                for (var i = 0; i < $(newFileData.FILES).length; i++) {
     791                                                                    var file = newFileData.FILES[i];
     792                                                                    var node = {
     793                                                                        thumbnail: file.thumbnail,
     794                                                                        id: file.id,
     795                                                                        name: file.name,
     796                                                                        fileurl: file.fileurl,
     797                                                                        parentID: file.parentID,
     798                                                                        minetype: file.minetype,
     799                                                                        size: file.size
     800                                                                    };
     801                                                                    o.oGrid.createNode(node);
     802                                                                    o.data.FILES.push(node);
     803                                                                }
     804
     805                                                                for (var i = 0; i < $(newFileData.DIRECTORIES).length; i++) {
     806                                                                    var file = newFileData.DIRECTORIES[i];
     807                                                                    var node = {
     808                                                                        id: file.id,
     809                                                                        name: file.name,
     810                                                                        parentID: file.parentID,
     811                                                                        minetype: file.minetype
     812                                                                    };
     813                                                                    o.oTree.createNode(node);
     814                                                                    o.oGrid.createNode(node);
     815                                                                    o.data.DIRECTORIES.push(node);
     816                                                                }
     817
     818                                                                self.refreshStatusBar();
     819                                                            }
     820                                                        }
     821
     822                                                    });
     823
     824                                    $(document).on('drop dragover',
     825                                            function (e) {
     826                                                e.preventDefault();
     827                                            });
     828
     829                                    function formatFileSize(bytes) {
     830                                        if (typeof bytes !== 'number') {
     831                                            return '';
     832                                        }
     833
     834                                        if (bytes >= 1000000000) {
     835                                            return (bytes / 1000000000)
     836                                                    .toFixed(2)
     837                                                    + ' GB';
     838                                        }
     839
     840                                        if (bytes >= 1000000) {
     841                                            return (bytes / 1000000).toFixed(2)
     842                                                    + ' MB';
     843                                        }
     844
     845                                        return (bytes / 1000).toFixed(2)
     846                                                + ' KB';
     847                                    }
     848
     849                                };
     850
     851                                var createFolder = function (parent, name) {
     852                                    var postdata = {
     853                                        fname: name,
     854                                        fparentid: parent
     855                                    };
     856                                    var script = 'createdir';
     857                                    /* isDev = true; */
     858                                    sendCommand({
     859                                        postdata: postdata,
     860                                        script: script,
     861                                        callbackSuccess: function (parseData) {
     862                                            createFolderFinish(parseData);
     863                                        },
     864                                        callbackFail: function () {
     865                                        }
     866                                    });
     867                                }
     868
     869                                var createFolderFinish = function (parseData) {
     870                                    /* isDev = false; */
     871                                    if (parseData.ERROR.errCode == 0) {
     872                                        var node = {
     873                                            id: parseData.id,
     874                                            name: parseData.name,
     875                                            parentID: parseData.parentID
     876                                        };
     877                                        o.oTree.createNode(node);
     878                                        o.data.DIRECTORIES.push(node);
     879                                        if (o.oGrid)
     880                                            o.oGrid.reloadGrid();
     881                                    }
     882                                }
     883                                /***********************************************
     884                                 * CREATE FOLDER - END *
     885                                 **********************************************/
     886                                /***********************************************
     887                                 * COPY & PASTE & MOVE - START * =***********
     888                                 **********************************************/
     889                                var copy = function (act) {
     890                                    // detect selected items
     891                                    // push to clipboard
     892                                    var items = o.oGrid.getHighLightItem();
     893
     894                                    if ($(items).length == 0) {
     895                                        var node = o.oTree.getSelectedNode();
     896                                        var itemID = $(node).attr('id');
     897
     898                                        if (itemID == 0)
     899                                            return false;
     900
     901                                        items[0] = o.data.DIRECTORIES[searchItemByID(
     902                                                itemID, 'directory')];
     903                                        items[0].type = 'directory';
     904                                    }
     905
     906                                    if ($(items).length > 0) {
     907                                        oClipBoard.items = items;
     908                                        oClipBoard.act = act;
     909                                    }
     910                                    return true;
     911                                }
     912
     913                                var paste = function () {
     914                                    if ((oClipBoard.act != 'copy' && oClipBoard.act != 'move')
     915                                            || oClipBoard.items == null)
     916                                        return;
     917
     918                                    var items = [];
     919
     920                                    var destination = self.getTreeCurrentNode();
     921                                    if (oClipBoard.act != 'copy') {
     922                                        $(oClipBoard.items).each(
     923                                                function (index) {
     924                                                    var node = new Object;
     925                                                    if (this.type == 'directory')
     926                                                        buildTreeFromParent(this.id, node);
     927                                                    else {
     928                                                        node.id = this.id;
     929                                                        node.type = 'file';
     930                                                    }
     931
     932                                                    items[index] = node;
     933                                                });
     934                                    } else {
     935                                        items = oClipBoard.items;
     936                                    }
     937
     938                                    for (var i = 0; i < items.length; i++) {
     939                                        if (items[i].type == 'directory') {
     940                                            items[i] = self.getAllDirChilds(items[i]);
     941                                        }
     942                                    }
     943
     944                                    var postdata = {
     945                                        act: oClipBoard.act,
     946                                        destination: destination,
     947                                        data: JSON.stringify(items)
     948                                    };
     949                                    var script = oClipBoard.act;
     950
     951                                    sendCommand({
     952                                        postdata: postdata,
     953                                        script: script,
     954                                        callbackSuccess: function (parseData) {
     955                                            if (oClipBoard.act == 'copy') {
     956                                                $(parseData.DIRECTORIES).each(
     957                                                        function (index) {
     958                                                            o.data.DIRECTORIES[$(o.data.DIRECTORIES).length] = this;
     959                                                        });
     960
     961                                                $(parseData.FILES).each(
     962                                                        function (index) {
     963                                                            o.data.FILES[$(o.data.FILES).length] = this;
     964                                                        });
     965
     966                                                o.data.DIRECTORIES.sort(function (a, b) {
     967                                                    return a.parentID - b.parentID;
     968                                                });
     969
     970                                                o.oTree.setData(o.data.DIRECTORIES);
     971                                                o.oGrid.setData(o.data);
     972                                                o.oTree.createCopyNode(parseData.DIRECTORIES);
     973                                                o.oGrid.reloadGrid();
     974                                            } else if (oClipBoard.act == 'move') {
     975
     976                                            }
     977
     978                                            oClipBoard.act == '';
     979                                            oClipBoard.items = null;
     980                                        }
     981                                    });
     982                                }
     983
     984                                var move = function () {
     985
     986                                }
     987
     988                                var copyTo = function () {
     989
     990                                }
     991
     992                                var moveTo = function () {
     993
     994                                }
     995
     996                                /***********************************************
     997                                 * COPY & PASTE & MOVE - END *
     998                                 **********************************************/
     999
     1000                                this.deleteItem = function (item) {
     1001
     1002                                    var confirmText = 'Bạn có muốn xóa ';
     1003
     1004                                    if ($.isArray(item) && item.length > 1) {
     1005                                        confirmText += 'các thư mục (và files) đã chọn?';
     1006                                    } else if (item.length == 1) {
     1007                                        if (item[0].id == 0)
     1008                                            return false;
     1009                                        confirmText += (item[0].type == 'directory') ? 'thư mục'
     1010                                                : 'file';
     1011                                        confirmText += ' <span style="font-weight:bold">'
     1012                                                + item[0].name
     1013                                                + "</span> khÃŽng?";
     1014                                    }
     1015
     1016                                    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>';
     1017
     1018                                    var parentID = item[0].parentID;
     1019
     1020                                    for (var i = 0; i < item.length; i++) {
     1021                                        if (item[i].type == 'directory') {
     1022                                            item[i] = self.getAllDirChilds(item[i]);
     1023                                        }
     1024                                    }
     1025
     1026                                    var confirmOptions = {
     1027                                        message: confirmText,
     1028                                        buttons: {
     1029                                            confirm: {
     1030                                                label: "Xóa"
     1031                                            },
     1032                                            cancel: {
     1033                                                label: "KhÃŽng xóa"
     1034                                            }
     1035                                        },
     1036                                        callback: function (result) {
     1037                                            if (result) {
     1038                                                var delobj = JSON
     1039                                                        .stringify(item);
     1040                                                var postdata = {
     1041                                                    delobj: delobj
     1042                                                };
     1043                                                var script = 'delete';
     1044                                                sendCommand({
     1045                                                    postdata: postdata,
     1046                                                    script: script,
     1047                                                    callbackSuccess: function (
     1048                                                            parseData) {
     1049                                                        if ($(parseData.DIRECTORIES).length > 0) {
     1050                                                            $(parseData.DIRECTORIES).each(
     1051                                                                    function (index) {
     1052                                                                        o.oTree.deletion(this);
     1053                                                                        o.oGrid.deletion(this, 'directory');
     1054                                                                    });
     1055                                                        }
     1056
     1057                                                        if ($(parseData.FILES).length > 0) {
     1058                                                            $(parseData.FILES).each(
     1059                                                                    function (index) {
     1060                                                                        var file = o.data.FILES[searchItemByID(this, 'file')];
     1061                                                                        o.oGrid.deletion(this, file.minetype);
     1062                                                                    });
     1063                                                        }
     1064                                                    },
     1065                                                    callbackDone: function (obj) {
     1066                                                        if ($(parseData.DIRECTORIES).length > 0) {
     1067                                                            $(parseData.DIRECTORIES).each(
     1068                                                                    function (index) {
     1069                                                                        o.data.DIRECTORIES.splice(searchItemByID(this, 'directory'), 1);
     1070                                                                    });
     1071                                                        }
     1072
     1073                                                        if ($(parseData.FILES).length > 0) {
     1074                                                            $(parseData.FILES).each(
     1075                                                                    function (index) {
     1076                                                                        o.data.FILES.splice(searchItemByID(this, 'file'), 1);
     1077                                                                    });
     1078                                                        }
     1079
     1080                                                        o.oTree.setData(o.data.DIRECTORIES);
     1081                                                        o.oGrid.setData(o.data);
     1082                                                        self.setTreeCurrentNode(parentID);
     1083                                                        o.oGrid.reloadGrid();
     1084                                                        self.refreshStatusBar();
     1085                                                    },
     1086                                                    callbackFail: function () {
     1087                                                    }
     1088                                                });
     1089                                            }
     1090                                        }
     1091                                    };
     1092
     1093                                    bootbox.confirm(confirmOptions);
     1094                                }
     1095
     1096                                this.getAllDirChilds = function (oDirItem) {
     1097                                    var aryChildDirTmp = [];
     1098                                    var aryChildDirID = [];
     1099                                    var aryChildFiles = searchItemsByParent(
     1100                                            oDirItem.id, 'file');
     1101                                    var aryChildDirs = [];
     1102
     1103                                    getAllDirChild(oDirItem.id, aryChildDirTmp);
     1104                                    for (var d = 1; d < aryChildDirTmp.length; d++) {
     1105                                        aryChildDirID[d - 1] = aryChildDirTmp[d];
     1106                                    }
     1107
     1108                                    for (var j = 0; j < aryChildDirID.length; j++) {
     1109                                        if (o.data.DIRECTORIES[searchItemByID(
     1110                                                aryChildDirID[j], 'directory')] != undefined)
     1111                                            aryChildDirs[aryChildDirs.length] = o.data.DIRECTORIES[searchItemByID(
     1112                                                    aryChildDirID[j],
     1113                                                    'directory')];
     1114
     1115                                        var aryTmp = searchItemsByParent(
     1116                                                aryChildDirID[j], 'file');
     1117                                        if (aryTmp.length > 0)
     1118                                            for (var f in aryTmp) {
     1119                                                aryChildFiles[aryChildFiles.length] = aryTmp[f];
     1120                                            }
     1121                                    }
     1122
     1123                                    oDirItem.childDirs = aryChildDirs;
     1124                                    oDirItem.childFiles = aryChildFiles;
     1125                                    return oDirItem;
     1126                                }
     1127
     1128                                this.setTreeCurrentNode = function (treeNode) {
     1129                                    // fire when click a node on Tree
     1130                                    // then fire action of Grid
     1131                                    treeCurrentNode = treeNode;
     1132                                    if (o.oGrid)
     1133                                        o.oGrid.reloadGrid();
     1134                                };
     1135
     1136                                this.getTreeCurrentNode = function () {
     1137                                    return treeCurrentNode;
     1138                                }
     1139
     1140                                this.gridNodeDblClick = function (node) {
     1141                                    if (node.minetype == 'directory') {
     1142                                        var treeNode = $('#' + o.tree)
     1143                                                .find(
     1144                                                        'UL.vstree[rel^="node'
     1145                                                        + node.parentID
     1146                                                        + '"] > LI[rel^="folder"] > A#'
     1147                                                        + node.id);
     1148                                        o.oTree.activeNode(treeNode);
     1149                                    } else {
     1150                                        // execute or preview file
     1151                                        previewFile(node);
     1152                                    }
     1153                                };
     1154
     1155                                this.createNewFolder = function () {
     1156
     1157                                }
     1158
     1159                                this.updateData = function (p) {
     1160                                    if (p.item == undefined)
     1161                                        p.item = null;
     1162                                    if (p.updateAll == undefined)
     1163                                        p.updateAll = false;
     1164                                    if (p.from == undefined)
     1165                                        p.from = null;
     1166                                    if (p.type == undefined)
     1167                                        p.type = null;
     1168                                    if (p.callback == undefined)
     1169                                        p.callback = null;
     1170
     1171                                    var obj = p.from == 'tree' ? o.oGrid
     1172                                            : o.oTree;
     1173                                    if (!p.updateAll) {
     1174                                        var index = searchItemByID(p.item.id,
     1175                                                p.type);
     1176                                        switch (p.type) {
     1177                                            case 'directory':
     1178                                                o.data.DIRECTORIES[index].name = p.item.name;
     1179                                                o.data.DIRECTORIES[index].parentID = p.item.parentID;
     1180                                                break;
     1181                                            case 'file':
     1182                                                o.data.FILES[index].name = p.item.name;
     1183                                                o.data.FILES[index].parentID = p.item.parentID;
     1184                                                o.data.FILES[index].minetype = p.item.minetype;
     1185                                                o.data.FILES[index].fileurl = p.item.fileurl;
     1186                                                break;
     1187                                            default:
     1188                                                break;
     1189                                        }
     1190                                    }
     1191
     1192                                    o.oTree.setData(o.data.DIRECTORIES);
     1193                                    o.oGrid.setData(o.data);
     1194
     1195                                    if (p.callback != null) {
     1196                                        eval('obj.' + p.callback + '(p.item);')
     1197                                    }
     1198
     1199                                    // call sendCommand
     1200                                }
     1201
     1202                                this.searchItemsByParent = function (parentID,
     1203                                        type) {
     1204                                    return searchItemsByParent(parentID, type);
     1205                                }
     1206
     1207                                this.searchItemByID = function (id, type) {
     1208                                    return searchItemByID(id, type);
     1209                                }
     1210
     1211                                this.refreshStatusBar = function () {
     1212                                    var totalSize = 0;
     1213                                    var message = '';
     1214                                    if (o.data.FILES.length > 0) {
     1215                                        for (var i = 0; i < o.data.FILES.length; i++) {
     1216                                            totalSize += parseInt(o.data.FILES[i].size);
     1217                                        }
     1218                                    }
     1219
     1220                                    message = '<span>Tổng dung lượng đã sá»­ dụng: <strong>'
     1221                                            + self.formatFileSize(totalSize)
     1222                                            + '</strong></span>';
     1223
     1224                                    var items = o.oGrid.getHighLightItem();
     1225                                    if (items.length == 0) {
     1226                                        var id = $(o.oTree.getSelectedNode()).attr('id');
     1227                                        var item = o.data.DIRECTORIES[self.searchItemByID(id, 'directory')];
     1228                                    }
     1229                                    if (items.length == 1) {
     1230                                        if ((typeof items[0].minetype !== 'undefined')) {
     1231                                            message += '<span>Tệp: <strong>'
     1232                                                    + items[0].name
     1233                                                    + '</strong></span>';
     1234                                            message += '<span> - Dung lượng: <strong>'
     1235                                                    + self
     1236                                                    .formatFileSize(items[0].size)
     1237                                                    + '</strong></span>';
     1238                                        } else {
     1239                                            message += '<span>Thư mục: <strong>'
     1240                                                    + items[0].name
     1241                                                    + '</strong></span>';
     1242                                        }
     1243                                    } else if (items.length > 1) {
     1244                                        var selectedSize = 0;
     1245                                        for (var i = 0; i < items.length; i++) {
     1246                                            selectedSize += (typeof items[i].minetype !== 'undefined') ? parseInt(items[i].size)
     1247                                                    : 0;
     1248                                        }
     1249                                        message += '<span><strong>'
     1250                                                + items.length
     1251                                                + ' tệp (thư mục)</strong> được chọn</span>';
     1252                                        message += '<span> - Dung lượng: <strong>'
     1253                                                + self
     1254                                                .formatFileSize(selectedSize)
     1255                                                + '</strong></span>';
     1256                                    }
     1257
     1258                                    $(statusbar).html(message);
     1259                                }
     1260
     1261                                this.redirectPost = function (location, args) {
     1262                                    var form = '';
     1263                                    $.each(args, function (key, value) {
     1264                                        alert (value);
     1265                                        form += "<input type='hidden' name='"
     1266                                                + key + "' value='" + value
     1267                                                + "'>";
     1268                                    });
     1269                                    $(
     1270                                            '<form action="' + location
     1271                                            + '" method="POST">' + form
     1272                                            + '</form>').appendTo(
     1273                                            'body').submit();
     1274                                }
     1275
     1276                                this.formatFileSize = function (size) {
     1277                                    var i;
     1278                                    i = Math.floor(Math.log(size)
     1279                                            / Math.log(1024));
     1280                                    if ((size === 0) || (parseInt(size) === 0)) {
     1281                                        return "0 kB";
     1282                                    } else if (isNaN(i)
     1283                                            || (!isFinite(size))
     1284                                            || (size === Number.POSITIVE_INFINITY)
     1285                                            || (size === Number.NEGATIVE_INFINITY)
     1286                                            || (size == null) || (size < 0)) {
     1287                                        console.info("Throwing error");
     1288                                        throw Error(""
     1289                                                + size
     1290                                                + " did not compute to a valid number to be humanized.");
     1291                                    } else {
     1292                                        return (size / Math.pow(1024, i))
     1293                                                .toFixed(2)
     1294                                                * 1
     1295                                                + " "
     1296                                                + ["B", "KB", "MB", "GB",
     1297                                                    "TB", "PB", "EB", "ZB",
     1298                                                    "YB"][i];
     1299                                    }
     1300                                }
     1301
     1302                                this.initialize = function () {
     1303                                    init();
     1304                                    return this;
     1305                                };
     1306
     1307                                return this.initialize();
     1308                            }
     1309
     1310                        });
     1311                    })(jQuery);
Note: See TracChangeset for help on using the changeset viewer.