1845 lines
46 KiB
JavaScript
Executable File
1845 lines
46 KiB
JavaScript
Executable File
/*
|
|
/*
|
|
* author: Logan Cai
|
|
* Email: cailongqun [at] yahoo [dot] com [dot] cn
|
|
* Website: www.phpletter.com
|
|
* Created At: 21/April/2007
|
|
* Modified At: 1/June/2007
|
|
*/
|
|
// Returns true if the passed value is found in the
|
|
// array. Returns false if it is not.
|
|
Array.prototype.inArray = function (value,caseSensitive)
|
|
{
|
|
var i;
|
|
for (i=0; i < this.length; i++)
|
|
{
|
|
// use === to check for Matches. ie., identical (===),
|
|
if(caseSensitive){ //performs match even the string is case sensitive
|
|
if (this[i].toLowerCase() == value.toLowerCase())
|
|
{
|
|
return true;
|
|
}
|
|
}else
|
|
{
|
|
if (this[i] == value)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
};
|
|
var dcTime=250; // doubleclick time
|
|
var dcDelay=100; // no clicks after doubleclick
|
|
var dcAt=0; // time of doubleclick
|
|
var savEvent=null; // save Event for handling doClick().
|
|
var savEvtTime=0; // save time of click event.
|
|
var savTO=null; // handle of click setTimeOut
|
|
var linkElem = null;
|
|
|
|
|
|
function hadDoubleClick()
|
|
{
|
|
var d = new Date();
|
|
var now = d.getTime();
|
|
if ((now - dcAt) < dcDelay)
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
|
|
/**
|
|
* enable left click to preview certain files
|
|
*/
|
|
function enablePreview(elem, num)
|
|
{
|
|
|
|
$(elem).each(
|
|
function()
|
|
{
|
|
|
|
$(this).click(function ()
|
|
{
|
|
|
|
//alert('single click');
|
|
var num = getNum(this.id);
|
|
var path = files[num].path;
|
|
//alert('now: ' + now + '; dcat: ' + dcAt + '; dcDelay: ' + dcDelay);
|
|
if (hadDoubleClick())
|
|
{
|
|
return false;
|
|
}else
|
|
{
|
|
linkElem = $('#a' + num).get(0);
|
|
}
|
|
|
|
d = new Date();
|
|
savEvtTime = d.getTime();
|
|
savTO = setTimeout(function()
|
|
{
|
|
if (savEvtTime - dcAt > 0)
|
|
{
|
|
//check if this file is previewable
|
|
|
|
|
|
var ext = getFileExtension(path);
|
|
var supportedExts = supporedPreviewExts.split(",");
|
|
var isSupportedExt = false;
|
|
for (i in supportedExts)
|
|
{
|
|
var typeOf = typeof(supportedExts[i]);
|
|
//alert(supportedExts[i]);
|
|
if(typeOf.toLowerCase() == 'string' && supportedExts[i].toLowerCase() == ext.toLowerCase())
|
|
{
|
|
isSupportedExt = true;
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
if(isSupportedExt)
|
|
{
|
|
switch(files[num].cssClass)
|
|
{
|
|
case 'fileVideo':
|
|
case 'fileMusic':
|
|
case 'fileFlash':
|
|
|
|
$('#playGround').html('<a id="playGround' + num + '" href="' + files[num].path + '"><div id="player"> this is mine</div></a> ');
|
|
|
|
|
|
$('#playGround' + num).html('');
|
|
$('#playGround' + num).media({ width: 255, height: 210, autoplay: true });
|
|
//alert($('#playGround' + num).html());
|
|
showThickBox($('#a' + num).get(0), appendQueryString('#TB_inline', 'height=250' + '&width=256' + '&inlineId=winPlay&modal=true'));
|
|
|
|
break;
|
|
default:
|
|
showThickBox(linkElem, appendQueryString(path, 'KeepThis=true&TB_iframe=true&height=' + thickbox.height + '&width=' + thickbox.width));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
}, dcTime);
|
|
|
|
return false;
|
|
|
|
});
|
|
$(this).dblclick(function()
|
|
{
|
|
var d = new Date();
|
|
dcAt = d.getTime();
|
|
if (savTO != null) {
|
|
clearTimeout( savTO ); // Clear pending Click
|
|
savTO = null;
|
|
|
|
}
|
|
|
|
if(typeof(selectFile) != 'undefined')
|
|
{
|
|
|
|
selectFile(files[num].url);
|
|
}else
|
|
generateDownloadIframe(appendQueryString(getUrl('download'), 'path=' + files[num].path, ['path'])); {
|
|
|
|
}
|
|
|
|
}
|
|
);
|
|
|
|
}
|
|
);
|
|
};
|
|
/**
|
|
* add over class to the specific table
|
|
*/
|
|
function tableRuler(element)
|
|
{
|
|
|
|
var rows = $(element);
|
|
|
|
$(rows).each(function(){
|
|
$(this).mouseover(function(){
|
|
$(this).addClass('over');
|
|
});
|
|
$(this).mouseout(function(){
|
|
$(this).removeClass('over');
|
|
});
|
|
});
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function previewMedia(rowNum)
|
|
{
|
|
$('#preview' +rowNum).html('');
|
|
$('#preview' +rowNum).media({ width: 255, height: 210, autoplay: true });
|
|
return false;
|
|
};
|
|
|
|
function getFileExtension(filename)
|
|
{
|
|
if( filename.length == 0 ) return "";
|
|
var dot = filename.lastIndexOf(".");
|
|
if( dot == -1 ) return "";
|
|
var extension = filename.substr(dot + 1,filename.length);
|
|
return extension;
|
|
};
|
|
|
|
function closeWindow()
|
|
{
|
|
if(window.confirm(warningCloseWindow))
|
|
{
|
|
window.close();
|
|
}
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* return the url with query string
|
|
*/
|
|
function getUrl(index,limitNeeded , viewNeeded, searchNeeded)
|
|
{
|
|
|
|
var queryStr = '';
|
|
var excluded = new Array();
|
|
|
|
if(typeof(limitNeeded) == 'boolean' && limitNeeded)
|
|
{
|
|
var limit = document.getElementById('limit');
|
|
var typeLimit = typeof(limit);
|
|
|
|
if(typeLimit != 'undefined' && limit )
|
|
{
|
|
excluded[excluded.length] = 'limit';
|
|
queryStr += (queryStr == ''?'':'&') + 'limit=' + limit.options[limit.selectedIndex].value;
|
|
}
|
|
|
|
}
|
|
if(typeof(viewNeeded) == 'boolean' && viewNeeded)
|
|
{
|
|
queryStr += (queryStr == ''?'':'&') + 'view=' + getView();
|
|
excluded[excluded.length] = 'view';
|
|
|
|
}
|
|
|
|
if(typeof(searchNeeded) == 'boolean' && searchNeeded && searchRequired)
|
|
{
|
|
var search_recursively = 0;
|
|
$('input[@name=search_recursively][@checked]').each(
|
|
function()
|
|
{
|
|
search_recursively = this.value;
|
|
}
|
|
);
|
|
var searchFolder = document.getElementById('search_folder');
|
|
queryStr += (queryStr == ''?'':'&') + 'search=1&search_name=' + $('#search_name').val() + '&search_recursively=' + search_recursively + '&search_mtime_from=' + $('#search_mtime_from').val() + '&search_mtime_to=' + $('#search_mtime_to').val() + '&search_folder=' + searchFolder.options[searchFolder.selectedIndex].value;
|
|
excluded[excluded.length] = 'search';
|
|
excluded[excluded.length] = 'search_recursively';
|
|
excluded[excluded.length] = 'search_mtime_from';
|
|
excluded[excluded.length] = 'search_mtime_to';
|
|
excluded[excluded.length] = 'search_folder';
|
|
excluded[excluded.length] = 'search_name';
|
|
excluded[excluded.length] = 'search';
|
|
|
|
}
|
|
|
|
|
|
|
|
return appendQueryString(appendQueryString(urls[index], queryString), queryStr, excluded);
|
|
};
|
|
/**
|
|
* change view
|
|
*/
|
|
function changeView()
|
|
{
|
|
|
|
var url = getUrl('view', true, true);
|
|
$('#rightCol').empty();
|
|
ajaxStart('#rightCol');
|
|
|
|
$('#rightCol').load(url,
|
|
{},
|
|
function(){
|
|
ajaxStop('#rightCol img.ajaxLoadingImg');
|
|
urls.present = getUrl('home', true, true);
|
|
initAfterListingLoaded();
|
|
});
|
|
};
|
|
|
|
function goParentFolder()
|
|
{
|
|
|
|
searchRequired = false;
|
|
var url = appendQueryString(getUrl('view', true, true), 'path=' + parentFolder.path , ['path']);
|
|
$('#rightCol').empty();
|
|
ajaxStart('#rightCol');
|
|
|
|
$('#rightCol').load(url,
|
|
{},
|
|
function(){
|
|
urls.present = appendQueryString(getUrl('home', true, true), 'path=' + parentFolder.path , ['path']);
|
|
ajaxStop('#rightCol img.ajaxLoadingImg');
|
|
initAfterListingLoaded();
|
|
});
|
|
|
|
};
|
|
|
|
/**
|
|
* append Query string to the base url
|
|
* @param string baseUrl the base url
|
|
* @param string the query string
|
|
* @param array remove thost url variable from base url if any matches
|
|
*/
|
|
function appendQueryString(baseUrl, queryStr, excludedQueryStr)
|
|
{
|
|
|
|
if(typeof(excludedQueryStr) == 'object' && excludedQueryStr.length)
|
|
{
|
|
var isMatched = false;
|
|
var urlParts = baseUrl.split("?");
|
|
baseUrl = urlParts[0];
|
|
var count = 1;
|
|
if(typeof(urlParts[1]) != 'undefined' && urlParts[1] != '')
|
|
{//this is the query string parts
|
|
var queryStrParts = urlParts[1].split("&");
|
|
for(var i=0; i < queryStrParts.length; i++)
|
|
{
|
|
//split into query string variable name & value
|
|
var queryStrVariables = queryStrParts[i].split('=');
|
|
for(var j=0; j < excludedQueryStr.length; j++)
|
|
{
|
|
if(queryStrVariables[0] == excludedQueryStr[j])
|
|
{
|
|
isMatched = true;
|
|
}
|
|
}
|
|
if(!isMatched)
|
|
{
|
|
baseUrl += ((count==1?'?':'&') + queryStrVariables[0] + '=' + queryStrVariables[1]);
|
|
count++;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
if(queryStr != '')
|
|
{
|
|
return (baseUrl.indexOf('?')> -1?baseUrl + '&' + queryStr:baseUrl + '?' + queryStr);
|
|
}else
|
|
{
|
|
return baseUrl;
|
|
}
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
/**
|
|
* initiate when the listing page is loaded
|
|
* add main features according to the view
|
|
*/
|
|
function initAfterListingLoaded()
|
|
{
|
|
|
|
|
|
parsePagination();
|
|
|
|
parseCurrentFolder();
|
|
var view = getView();
|
|
|
|
setDocInfo('root');
|
|
|
|
if(view != '')
|
|
{
|
|
|
|
switch(view)
|
|
{
|
|
|
|
|
|
case 'thumbnail':
|
|
//enableContextMenu('dl.thumbnailListing, dl.thumbnailListing dt, dl.thumbnailListing dd, dl.thumbnailListing a');
|
|
enableContextMenu('dl.thumbnailListing');
|
|
for(i in files)
|
|
{
|
|
if(files[i].type== 'folder')
|
|
{//this is foder item
|
|
|
|
enableFolderBrowsable(i);
|
|
}else
|
|
{//this is file item
|
|
|
|
switch(files[i].cssClass)
|
|
{
|
|
case 'filePicture':
|
|
//$('#a' + i).attr('rel', 'ajaxphotos');
|
|
//retrieveThumbnail(i);
|
|
|
|
break;
|
|
case 'fileFlash':
|
|
break;
|
|
case 'fileVideo':
|
|
break;
|
|
case 'fileMusic':
|
|
break;
|
|
default:
|
|
|
|
|
|
}
|
|
enablePreview('#dt' + i, i);
|
|
enablePreview('#thumbUrl' + i, i);
|
|
enablePreview('#a' + i, i);
|
|
|
|
}
|
|
enableShowDocInfo( i);
|
|
|
|
}
|
|
break;
|
|
case 'detail':
|
|
default:
|
|
|
|
enableContextMenu('#fileList tr');
|
|
for(i in files)
|
|
{
|
|
if(files[i].type== 'folder')
|
|
{//this is foder item
|
|
enableFolderBrowsable(i);
|
|
}else
|
|
{//this is file item
|
|
switch(files[i].cssClass)
|
|
{
|
|
case 'filePicture':
|
|
$('#row' + i + ' td a').attr('rel', 'ajaxphotos');
|
|
break;
|
|
case 'fileFlash':
|
|
break;
|
|
case 'fileVideo':
|
|
break;
|
|
case 'fileMusic':
|
|
break;
|
|
default:
|
|
|
|
};
|
|
enablePreview('#row' + i + ' td a', i);
|
|
|
|
}
|
|
enableShowDocInfo(i);
|
|
}
|
|
break;
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
};
|
|
|
|
function enableFolderBrowsable(num, debug)
|
|
{
|
|
|
|
switch(getView())
|
|
{
|
|
case 'thumbnail':
|
|
$('#dt'+ num + ' , #dd' + num + ' a').each(function()
|
|
|
|
{
|
|
/* if(typeof(debug) != 'undefined' && debug)
|
|
{
|
|
alert(this.tagName + ' ' + files[num].path);
|
|
}*/
|
|
doEnableFolderBrowsable(this, num);
|
|
}
|
|
);
|
|
break;
|
|
case 'detail':
|
|
default:
|
|
$('#row' + num + ' td[a]').each(function()
|
|
|
|
{
|
|
doEnableFolderBrowsable(this, num );
|
|
}
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
function doEnableFolderBrowsable(elem, num)
|
|
{
|
|
$(elem).click(function()
|
|
{
|
|
{
|
|
searchRequired = false;
|
|
var typeNum = typeof(num);
|
|
if(typeNum.toUpperCase() == 'STRING')
|
|
{
|
|
var fpath = (num.indexOf(urls.view) >=0?num:files[num].path);
|
|
}else
|
|
{
|
|
var fpath = files[num].path;
|
|
}
|
|
|
|
|
|
var url = appendQueryString(getUrl('view', true, true), 'path=' + fpath, ['path']);
|
|
|
|
|
|
$('#rightCol').empty();
|
|
ajaxStart('#rightCol');
|
|
$('#rightCol').load(url,
|
|
{},
|
|
function(){
|
|
urls.present = appendQueryString(getUrl('home', true, true), 'path=' + fpath, ['path']);
|
|
ajaxStop('#rightCol img.ajaxLoadingImg');
|
|
initAfterListingLoaded();
|
|
});
|
|
};
|
|
return false;
|
|
|
|
}
|
|
);
|
|
};
|
|
|
|
/**
|
|
* @param mixed destinationSelector where the animation image will be append to
|
|
* @param mixed selectorOfAnimation the jquery selector of the animation
|
|
*/
|
|
function ajaxStart(destinationSelector, id, selectorOfAnimation)
|
|
{
|
|
if(typeof(selectorOfAnimation) == 'undefined')
|
|
{//set defaullt animation
|
|
selectorOfAnimation = '#ajaxLoading img';
|
|
}
|
|
if(typeof(id) != 'undefined')
|
|
{
|
|
$(selectorOfAnimation).clone().attr('id', id).appendTo(destinationSelector);
|
|
|
|
}else
|
|
{
|
|
$(selectorOfAnimation).clone(true).appendTo(destinationSelector);
|
|
|
|
}
|
|
|
|
|
|
};
|
|
/**
|
|
* remove the ajax animation
|
|
* @param mixed selectorOfAnimation the jquery selector of the animation
|
|
*/
|
|
function ajaxStop(selectorOfAnimation)
|
|
{
|
|
$(selectorOfAnimation).remove();
|
|
};
|
|
/**
|
|
* change pagination limit
|
|
*/
|
|
function changePaginationLimit(elem)
|
|
{
|
|
var url = getUrl('view', true, true, true);
|
|
$('#rightCol').empty();
|
|
ajaxStart('#rightCol');
|
|
$('#rightCol').load(url,
|
|
{},
|
|
function(){
|
|
urls.present = appendQueryString(getUrl('home', true, true), 'path=' + parentFolder.path , ['path'])
|
|
ajaxStop('#rightCol img.ajaxLoadingImg');
|
|
initAfterListingLoaded();
|
|
});
|
|
};
|
|
/**
|
|
* get a query string variable value from an url
|
|
* @param string index
|
|
* @param string url
|
|
*/
|
|
function getUrlVarValue(url, index)
|
|
{
|
|
|
|
if(url != '' && index != '')
|
|
{
|
|
var urlParts = url.split("?");
|
|
baseUrl = urlParts[0];
|
|
var count = 1;
|
|
if(typeof(urlParts[1]) != 'undefined' && urlParts[1] != '')
|
|
{//this is the query string parts
|
|
var queryStrParts = urlParts[1].split("&");
|
|
for(var i=0; i < queryStrParts.length; i++)
|
|
{
|
|
//split into query string variable name & value
|
|
var queryStrVariables = queryStrParts[i].split('=');
|
|
if(queryStrVariables[0] == index)
|
|
{
|
|
return queryStrVariables[1];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return '';
|
|
|
|
};
|
|
/**
|
|
* parse current folder
|
|
*/
|
|
function parseCurrentFolder()
|
|
{
|
|
var folders = currentFolder.friendly_path.split('/');
|
|
var str = '';
|
|
var url = getUrl('view', true, true);
|
|
|
|
var parentPath = '';
|
|
for(var i = 0; i < folders.length; i++)
|
|
{
|
|
if(i == 0)
|
|
{
|
|
parentPath += paths.root;
|
|
str += '/<a href="' + appendQueryString(url, 'path='+ parentPath, ['path']) + '"><span class="folderRoot">' + paths.root_title + '</span></a>'
|
|
|
|
}else
|
|
{
|
|
if(folders[i] != '')
|
|
{
|
|
|
|
parentPath += folders[i] + '/';
|
|
str += '/<a href="' + appendQueryString(url, 'path='+ parentPath , ['path']) + '"><span class="folderSub">' + folders[i] + '</span></a>';
|
|
}
|
|
}
|
|
}
|
|
$('#currentFolderPath').empty().append(str);
|
|
$('#currentFolderPath a').each(
|
|
function()
|
|
{
|
|
doEnableFolderBrowsable(this, $(this).attr('href'));
|
|
}
|
|
);
|
|
};
|
|
/**
|
|
* enable pagination as ajax function call
|
|
*/
|
|
function parsePagination()
|
|
{
|
|
$('p.pagination a[@id!=pagination_parent_link]').each(function ()
|
|
{
|
|
$(this).click(
|
|
function()
|
|
{
|
|
|
|
|
|
var page = getUrlVarValue($(this).attr('href'), 'page');
|
|
var url = appendQueryString(getUrl('view', true, true, searchRequired),'page=' + page, ['page']);
|
|
$('#rightCol').empty();
|
|
ajaxStart('#rightCol');
|
|
$('#rightCol').load(url,
|
|
{},
|
|
function(){
|
|
urls.present = appendQueryString(getUrl('home', true, true, searchRequired),'page=' + page, ['page']);
|
|
ajaxStop('#rightCol img.ajaxLoadingImg');
|
|
initAfterListingLoaded();
|
|
});
|
|
return false;
|
|
}
|
|
|
|
);
|
|
}
|
|
);
|
|
};
|
|
/**
|
|
* get current view
|
|
*/
|
|
function getView()
|
|
{
|
|
var view = $('input[@name=view][@checked]').get(0);
|
|
if(typeof(view) != 'undefined')
|
|
{
|
|
return view.value;
|
|
}else
|
|
{
|
|
return '';
|
|
}
|
|
};
|
|
|
|
function getNum(elemId)
|
|
{
|
|
|
|
if(typeof(elemId) != 'undefined' && elemId != '')
|
|
{
|
|
var r = elemId.match(/[\d\.]+/g);
|
|
if(typeof(r) != 'undefined' && r && typeof(r[0]) != 'undefined')
|
|
{
|
|
return r[0];
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
};
|
|
|
|
function enableContextMenu(jquerySelectors)
|
|
{
|
|
|
|
$(jquerySelectors).contextMenu('contextMenu',
|
|
{
|
|
bindings:
|
|
{
|
|
'menuSelect':function(t)
|
|
{
|
|
var num = (getNum($(t).attr('id')));
|
|
|
|
selectFile(files[num].url);
|
|
},
|
|
'menuPlay':function(t)
|
|
{
|
|
var num = (getNum($(t).attr('id')));
|
|
$('#playGround').html('<a id="playGround' + num + '" href="' + files[num].path + '"><div id="player"> this is mine</div></a> ');
|
|
|
|
|
|
$('#playGround' + num).html('');
|
|
$('#playGround' + num).media({ width: 255, height: 210, autoplay: true });
|
|
//alert($('#playGround' + num).html());
|
|
showThickBox($('#a' + num).get(0), appendQueryString('#TB_inline', 'height=250' + '&width=258' + '&inlineId=winPlay&modal=true'));
|
|
|
|
|
|
|
|
},
|
|
'menuPreview':function(t)
|
|
{
|
|
var num = (getNum($(t).attr('id')));
|
|
$('#a' + num).click();
|
|
},
|
|
'menuDownload':function(t)
|
|
{
|
|
var num = (getNum($(t).attr('id')));
|
|
generateDownloadIframe(appendQueryString(getUrl('download', false, false), 'path=' + files[num].path, ['path']));
|
|
},
|
|
'menuRename':function(t)
|
|
{
|
|
var num = (getNum($(t).attr('id')));
|
|
|
|
showThickBox($('#a' + num).get(0), appendQueryString('#TB_inline', 'height=100' + '&width=350' + '&inlineId=winRename&modal=true'));
|
|
|
|
$('div#TB_window #renameName').val(files[num].name);
|
|
$('div#TB_window #original_path').val(files[num].path);
|
|
$('div#TB_window #renameNum').val(num);
|
|
},
|
|
'menuEdit':function(t)
|
|
{
|
|
var num = (getNum($(t).attr('id')));
|
|
var url = '';
|
|
switch(files[num].cssClass)
|
|
{
|
|
case 'filePicture':
|
|
url = getUrl('image_editor');
|
|
break;
|
|
default:
|
|
url = getUrl('text_editor');
|
|
|
|
}
|
|
var param = "status=yes,menubar=no,resizable=yes,scrollbars=yes,location=no,toolbar=no";
|
|
param += ",height=" + screen.height + ",width=" + screen.width;
|
|
if(typeof(window.screenX) != 'undefined')
|
|
{
|
|
param += ",screenX = 0,screenY=0";
|
|
}else if(typeof(window.screenTop) != 'undefined' )
|
|
{
|
|
param += ",left = 0,top=0" ;
|
|
}
|
|
var newWindow = window.open(url + ((url.lastIndexOf("?") > - 1)?"&":"?") + "path=" + files[num].path,'', param);
|
|
newWindow.focus( );
|
|
|
|
|
|
},
|
|
|
|
'menuCut':function(t)
|
|
{
|
|
|
|
},
|
|
'menuCopy':function(t)
|
|
{
|
|
|
|
},
|
|
'menuPaste':function(t)
|
|
{
|
|
|
|
},
|
|
'menuDelete':function(t)
|
|
{
|
|
var num = (getNum($(t).attr('id')));
|
|
if(window.confirm(warningDelete))
|
|
{
|
|
$.getJSON(appendQueryString(getUrl('delete', false,false), 'delete=' + files[num].path, ['delete']),
|
|
function(data)
|
|
{
|
|
if(typeof(data.error) == 'undefined')
|
|
{
|
|
alert('Unexpected Error.');
|
|
}
|
|
else if(data.error != '')
|
|
{
|
|
alert(data.error);
|
|
}else
|
|
{//remove deleted files
|
|
switch(getView())
|
|
{
|
|
case 'thumbnail': $('#dl' + num ).remove();
|
|
break;
|
|
case 'detail':
|
|
default:
|
|
$('#row' + num).remove();
|
|
|
|
}
|
|
files[num] = null;
|
|
}
|
|
}
|
|
);
|
|
|
|
|
|
}
|
|
}
|
|
},
|
|
onContextMenu:function(events)
|
|
{
|
|
|
|
return true;
|
|
},
|
|
onShowMenu:function(events, menu)
|
|
{
|
|
|
|
switch(getView())
|
|
{
|
|
case 'thumbnail':
|
|
var num = getNum(events.target.id);
|
|
|
|
break;
|
|
case 'detail':
|
|
default:
|
|
switch(events.target.tagName.toLowerCase())
|
|
{
|
|
case 'span':
|
|
|
|
if($(events.target).parent().get(0).tagName.toLowerCase() == 'a')
|
|
{
|
|
|
|
var num = getNum($(events.target).parent().parent().parent().attr('id'));
|
|
}else
|
|
{
|
|
var num = getNum($(events.target).parent().parent().parent().parent().attr('id'));
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
case 'td':
|
|
var num = getNum($(events.target).parent().attr('id'));
|
|
break;
|
|
case 'a':
|
|
case 'input':
|
|
var num = getNum($(events.target).parent().parent().attr('id'));
|
|
break;
|
|
}
|
|
}
|
|
|
|
var menusToRemove = new Array;
|
|
if(typeof(selectFile) == 'undefined')
|
|
{
|
|
menusToRemove[menusToRemove.length] = '#menuSelect';
|
|
}
|
|
menusToRemove[menusToRemove.length] = '#menuCut';
|
|
menusToRemove[menusToRemove.length] = '#menuCopy';
|
|
menusToRemove[menusToRemove.length] = '#menuPaste';
|
|
switch(files[num].type)
|
|
{
|
|
case 'folder':
|
|
if(numFiles < 1)
|
|
{
|
|
menusToRemove[menusToRemove.length] = '#menuPaste';
|
|
}
|
|
menusToRemove[menusToRemove.length] = '#menuPreview';
|
|
menusToRemove[menusToRemove.length] = '#menuDownload';
|
|
menusToRemove[menusToRemove.length] = '#menuEdit';
|
|
menusToRemove[menusToRemove.length] = '#menuPlay';
|
|
menusToRemove[menusToRemove.length] = '#menuDownload';
|
|
|
|
break;
|
|
default:
|
|
var isSupportedExt = false;
|
|
if(permits.edit)
|
|
{
|
|
var ext = getFileExtension(files[num].path);
|
|
var supportedExts = supporedPreviewExts.split(",");
|
|
|
|
for(var i = 0; i < supportedExts.length; i++)
|
|
{
|
|
if(typeof(supportedExts[i]) != 'undefined' && typeof(supportedExts[i]).toLowerCase() == 'string' && supportedExts[i].toLowerCase() == ext.toLowerCase())
|
|
{
|
|
isSupportedExt = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
if(!isSupportedExt || permits.view_only)
|
|
{
|
|
menusToRemove[menusToRemove.length] = '#menuEdit';
|
|
}
|
|
|
|
|
|
switch(files[num].cssClass)
|
|
{
|
|
case 'filePicture':
|
|
menusToRemove[menusToRemove.length] = '#menuPlay';
|
|
break;
|
|
case 'fileCode':
|
|
menusToRemove[menusToRemove.length] = '#menuPlay';
|
|
break;
|
|
case 'fileVideo':
|
|
case 'fileFlash':
|
|
case 'fileMusic':
|
|
|
|
menusToRemove[menusToRemove.length] = '#menuPreview'; menusToRemove[menusToRemove.length] = '#menuEdit';
|
|
break;
|
|
default:
|
|
menusToRemove[menusToRemove.length] = '#menuPreview';
|
|
menusToRemove[menusToRemove.length] = '#menuPlay';
|
|
|
|
|
|
|
|
}
|
|
menusToRemove[menusToRemove.length] = '#menuPaste';
|
|
}
|
|
if(!permits.edit|| permits.view_only)
|
|
{
|
|
menusToRemove[menusToRemove.length] = '#menuEdit';
|
|
}
|
|
if(!permits.del || permits.view_only)
|
|
{
|
|
menusToRemove[menusToRemove.length] = '#menuDelete';
|
|
}
|
|
if(!permits.cut || permits.view_only)
|
|
{
|
|
menusToRemove[menusToRemove.length] = '#menuCut';
|
|
}
|
|
if(!permits.copy || permits.view_only)
|
|
{
|
|
menusToRemove[menusToRemove.length] = '#menuCopy';
|
|
}
|
|
if((!permits.cut && !permits.copy) || permits.view_only)
|
|
{
|
|
menusToRemove[menusToRemove.length] = '#menuPaste';
|
|
}
|
|
if(!permits.rename || permits.view_only)
|
|
{
|
|
menusToRemove[menusToRemove.length] = '#menuRename';
|
|
}
|
|
|
|
//alert(menusToRemove.join(','));
|
|
var txt = '';
|
|
for(var t in menu)
|
|
{
|
|
//txt += t + ': ' + menu[t] + '\n';
|
|
}
|
|
$(menu).children().children().children().each(
|
|
function()
|
|
{
|
|
if(menusToRemove.inArray('#' + this.id))
|
|
{
|
|
$(this).parent().remove();
|
|
}
|
|
//alert(this.id);
|
|
|
|
|
|
}
|
|
)
|
|
//alert(menusToRemove.join(','));
|
|
//$(menusToRemove.join(','), $(menu).children().children().children()).remove();
|
|
|
|
|
|
return menu;
|
|
}
|
|
}
|
|
);
|
|
};
|
|
|
|
|
|
var fileUploadElemIds = new Array(); //keep track of the file element ids
|
|
/**
|
|
* add more file type of input file for multiple uploads
|
|
*/
|
|
function addMoreFile()
|
|
{
|
|
|
|
var newFileUpload = $($('div#TB_window #fileUploadBody tr').get(0)).clone();
|
|
|
|
do
|
|
{
|
|
var elementId = 'upload' + generateUniqueId(10);
|
|
}while(fileUploadElemIds.inArray(elementId));
|
|
|
|
fileUploadElemIds[fileUploadElemIds.length] = elementId;
|
|
|
|
$(newFileUpload).appendTo('div#TB_window #fileUploadBody');
|
|
$('input[@type=file]', newFileUpload).attr('id', elementId);
|
|
$('span.uploadProcessing', newFileUpload).attr('id', 'ajax' + elementId);
|
|
$('input[@type=button]', newFileUpload).click(
|
|
function()
|
|
{
|
|
uploadFile(elementId);
|
|
}
|
|
);
|
|
$('a', newFileUpload).show().click(
|
|
function()
|
|
{
|
|
cancelFileUpload(elementId);
|
|
}
|
|
);
|
|
|
|
|
|
$(newFileUpload).show();
|
|
|
|
return false;
|
|
};
|
|
/**
|
|
* cancel uploading file
|
|
* remove hidden upload frame
|
|
* remove hidden upload form
|
|
*/
|
|
function cancelFileUpload(elementId)
|
|
{
|
|
$('div#TB_window #' + elementId).parent().parent().remove();
|
|
|
|
//ensure there is at least one visible upload element
|
|
while($('div#TB_window #fileUploadBody tr').length < 2)
|
|
{
|
|
addMoreFile();
|
|
}
|
|
return false;
|
|
};
|
|
/**
|
|
* upload file
|
|
*/
|
|
function uploadFile(elementId)
|
|
{
|
|
|
|
var ext = getFileExtension($('#' + elementId).val());
|
|
if(ext == '')
|
|
{
|
|
alert(noFileSelected );
|
|
return false;
|
|
}
|
|
var supportedExts = supportedUploadExts.split(",");
|
|
var isSupportedExt = false;
|
|
|
|
for (i in supportedExts)
|
|
{
|
|
//alert(typeof(supportedExts[i]));
|
|
if(typeof(supportedExts[i]) == 'string')
|
|
{
|
|
isSupportedExt = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!isSupportedExt)
|
|
{
|
|
alert(msgInvalidExt);
|
|
return false;
|
|
}
|
|
|
|
$('#ajax' + elementId).hide();
|
|
$('#ajax' + elementId).show();
|
|
$.ajaxFileUpload
|
|
(
|
|
{
|
|
url:appendQueryString(getUrl('upload', false, false), 'folder=' + currentFolder.path, ['folder']),
|
|
secureuri:false,
|
|
fileElementId:elementId,
|
|
dataType: 'json',
|
|
success: function (data, status)
|
|
{
|
|
|
|
if(typeof(data.error) != 'undefined')
|
|
{
|
|
if(data.error != '')
|
|
{
|
|
alert(data.error);
|
|
$('#ajax' + elementId).hide();
|
|
}else
|
|
{
|
|
//remove the file type of input
|
|
cancelFileUpload(elementId);
|
|
numRows++;
|
|
files[numRows] = {};
|
|
|
|
for(var i in data)
|
|
{
|
|
if(i != 'error')
|
|
{
|
|
files[numRows][i] = data[i];
|
|
}
|
|
}
|
|
addDocumentHtml(numRows);
|
|
}
|
|
}
|
|
|
|
},
|
|
error: function (data, status, e)
|
|
{
|
|
$('#ajax' + elementId).hide();
|
|
alert(e);
|
|
}
|
|
}
|
|
)
|
|
|
|
return false;
|
|
};
|
|
/**
|
|
* generate unique id
|
|
*/
|
|
function generateUniqueId(leng)
|
|
{
|
|
var idLength = leng || 32;
|
|
var chars = "0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";
|
|
var id = '';
|
|
for(var i = 0; i <= idLength; i++)
|
|
{
|
|
id += chars.substr( Math.floor(Math.random() * 62), 1 );
|
|
}
|
|
|
|
return (id );
|
|
|
|
};
|
|
|
|
/**
|
|
* generate a hidden iframe and force to download the specified file
|
|
*/
|
|
function generateDownloadIframe(url)
|
|
{
|
|
var frameId = 'ajaxDownloadIframe';
|
|
$('#' + frameId).remove();
|
|
if(window.ActiveXObject) {
|
|
var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');
|
|
|
|
|
|
}
|
|
else {
|
|
var io = document.createElement('iframe');
|
|
io.id = frameId;
|
|
io.name = frameId;
|
|
}
|
|
io.style.position = 'absolute';
|
|
io.style.top = '-1000px';
|
|
io.style.left = '-1000px';
|
|
io.src = url;
|
|
document.body.appendChild(io);
|
|
};
|
|
|
|
|
|
/**
|
|
* show the url content in thickbox
|
|
*/
|
|
function showThickBox(linkElem, url)
|
|
{
|
|
$(linkElem).attr('href', url);
|
|
var t = linkElem.title || linkElem.name || null;
|
|
var a = linkElem.href || linkElem.alt;
|
|
var g = linkElem.rel || false;
|
|
tb_show(t,a,g);
|
|
linkElem.blur();
|
|
return false;
|
|
};
|
|
/**
|
|
* bring up a file upload window
|
|
*/
|
|
function uploadFileWin(linkElem)
|
|
{
|
|
showThickBox(linkElem, appendQueryString('#TB_inline', 'height=200' + '&width=500' + '&inlineId=winUpload&modal=true'));
|
|
while($('div#TB_window #fileUploadBody tr').length < 2)
|
|
{
|
|
addMoreFile();
|
|
}
|
|
|
|
};
|
|
/**
|
|
* bring up a new folder window
|
|
*/
|
|
function newFolderWin(linkElem)
|
|
{
|
|
showThickBox(linkElem, appendQueryString('#TB_inline', 'height=100' + '&width=250' + '&inlineId=winNewFolder&modal=true'));
|
|
return false;
|
|
};
|
|
/**
|
|
* ajax call to create a folder
|
|
*/
|
|
function doCreateFolder()
|
|
{
|
|
$('div#TB_window #currentNewfolderPath').val(currentFolder.path);
|
|
var pattern=/^[A-Za-z0-9_ \-]+$/i;
|
|
|
|
var folder = $('div#TB_window #new_folder');
|
|
//alert($('#new_folder').val());
|
|
if(!pattern.test($(folder).val()))
|
|
{
|
|
|
|
|
|
alert(msgInvalidFolderName);
|
|
}else
|
|
{
|
|
var options =
|
|
{
|
|
dataType: 'json',
|
|
url:getUrl('create_folder'),
|
|
error: function (data, status, e)
|
|
{
|
|
|
|
alert(e);
|
|
},
|
|
success: function(data)
|
|
{
|
|
//remove those selected items
|
|
if(data.error != '')
|
|
{
|
|
alert(data.error);
|
|
}else
|
|
{
|
|
|
|
numRows++;
|
|
files[numRows] = {};
|
|
for(var i in data)
|
|
{
|
|
if(i != 'error')
|
|
{
|
|
files[numRows][i] = data[i];
|
|
}
|
|
}
|
|
addDocumentHtml(numRows);
|
|
|
|
tb_remove();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
};
|
|
$('div#TB_window #formNewFolder').ajaxSubmit(options);
|
|
|
|
|
|
}
|
|
return false;
|
|
|
|
};
|
|
/**
|
|
* selecte documents and fire an ajax call to delete them
|
|
*/
|
|
function deleteDocuments(msgNoDocSelected, msgUnableToDelete, msgWarning, elements)
|
|
{
|
|
if(!window.confirm(warningDel))
|
|
{
|
|
return false;
|
|
}
|
|
switch(getView())
|
|
{
|
|
case 'thumbnail':
|
|
var selectedDoc = $('#rightCol dl.thumbnailListing input[@type=checkbox][@checked]');
|
|
break;
|
|
case 'detail':
|
|
|
|
default:
|
|
var selectedDoc = $('#fileList input[@type=checkbox][@checked]');
|
|
}
|
|
|
|
var hiddenSelectedDoc = document.getElementById('selectedDoc');
|
|
var selectedOptions;
|
|
var isSelected = false;
|
|
|
|
//remove all options
|
|
$(hiddenSelectedDoc).removeOption(/./);
|
|
$(selectedDoc).each(function(i){
|
|
|
|
$(hiddenSelectedDoc).addOption($(this).val(), getNum($(this).attr('id')), true);
|
|
isSelected = true;
|
|
});
|
|
if(!isSelected)
|
|
{
|
|
alert(msgNoDocSelected);
|
|
}
|
|
else
|
|
{//remove them via ajax call
|
|
var options =
|
|
{
|
|
dataType: 'json',
|
|
url:getUrl('delete'),
|
|
error: function (data, status, e)
|
|
{
|
|
|
|
alert(e);
|
|
},
|
|
success: function(data)
|
|
{
|
|
if(typeof(data.error) == 'undefined')
|
|
{
|
|
alert('Unexpected error.');
|
|
}else if(data.error != '')
|
|
{
|
|
alert(data.error);
|
|
}else
|
|
{
|
|
|
|
//remove all files
|
|
for(var i =0; i < hiddenSelectedDoc.options.length; i++)
|
|
{
|
|
switch(getView())
|
|
{
|
|
case 'thumbnail':
|
|
$('#dl' + hiddenSelectedDoc.options[i].text).remove();
|
|
break;
|
|
case 'detail':
|
|
default:
|
|
$('#row' + hiddenSelectedDoc.options[i].text).remove();
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
};
|
|
$('#formAction').ajaxSubmit(options);
|
|
|
|
|
|
|
|
}
|
|
|
|
return false;
|
|
};
|
|
/**
|
|
* renmae the specific file/folder
|
|
*/
|
|
function doRename()
|
|
{
|
|
|
|
var num = $('div#TB_window #renameNum').val();
|
|
if(files[num].fileType == 'folder')
|
|
{
|
|
var pattern=/^[A-Za-z0-9_ \-]+$/i;
|
|
}else
|
|
{
|
|
var pattern=/^[A-Za-z0-9_ \-\.]+$/i;
|
|
}
|
|
|
|
if(!pattern.test($('div#TB_window #renameName').val()))
|
|
{
|
|
if(files[num].fileType == 'folder')
|
|
{
|
|
alert(msgInvalidFolderName);
|
|
}else
|
|
{
|
|
alert(msgInvalidFileName);
|
|
}
|
|
|
|
}else
|
|
{
|
|
var options =
|
|
{
|
|
dataType: 'json',
|
|
url:getUrl('rename'),
|
|
error: function (data, status, e)
|
|
{
|
|
|
|
alert(e);
|
|
},
|
|
success: function(data)
|
|
{
|
|
//remove those selected items
|
|
if(data.error != '')
|
|
{
|
|
alert(data.error);
|
|
}else
|
|
{
|
|
|
|
var info = '';
|
|
for(var i in data)
|
|
{
|
|
if(i != 'error')
|
|
{
|
|
files[num][i] = data[i];
|
|
}
|
|
|
|
}
|
|
switch(getView())
|
|
{
|
|
case 'thumbnail':
|
|
$('#thumbUrl' + num).attr('href', files[num].path);
|
|
$('#thumbImg' + num).attr('src', appendQueryString(getUrl('thumbnail'), 'path=' + files[num].path, ['path']));
|
|
$('#cb' + num).val(files[num].path);
|
|
$('#a' + num).attr('href', files[num].path).text(files[num].name);
|
|
break;
|
|
|
|
case 'detail':
|
|
|
|
default:
|
|
$('#check' + num).val(files[num].path);
|
|
$('#a' + num).attr('href', files[num].path);
|
|
$('#tdnd' + num).text(files[num].name);
|
|
$('#tdth' + num).text(files[num].name);
|
|
}
|
|
|
|
tb_remove();
|
|
|
|
}
|
|
}
|
|
};
|
|
$('div#TB_window #formRename').ajaxSubmit(options);
|
|
|
|
|
|
}
|
|
};
|
|
/**
|
|
* reload the whole window
|
|
*/
|
|
function windowRefresh()
|
|
{
|
|
document.location.href = urls.present;
|
|
//document.location.reload();
|
|
};
|
|
/**
|
|
* show the system information
|
|
*/
|
|
function infoWin(linkElem)
|
|
{
|
|
|
|
showThickBox(linkElem, appendQueryString('#TB_inline', 'height=180' + '&width=500'+ '&inlineId=winInfo&modal=true'));
|
|
|
|
};
|
|
/**
|
|
*check all checkboxs and uncheck all checkbox
|
|
*/
|
|
function checkAll(checkbox)
|
|
{
|
|
|
|
if($(checkbox).attr('class') == "check_all")
|
|
{
|
|
$('#tickAll, #actionSelectAll').attr('class', 'uncheck_all');
|
|
$('#tickAll, #actionSelectAll').attr('title', unselectAllText);
|
|
$('#actionSelectAll span').html(unselectAllText);
|
|
switch(getView())
|
|
{
|
|
case 'thumbnail':
|
|
$('#rightCol dl.thumbnailListing input[@type=checkbox]').each(function(i){
|
|
$(this).attr("checked", 'checked');
|
|
}) ;
|
|
break;
|
|
case 'detail':
|
|
default:
|
|
$("#fileList tr[@id^=row] input[@type=checkbox]").each(function(i){
|
|
$(this).attr("checked", 'checked');
|
|
}) ;
|
|
}
|
|
|
|
|
|
}else
|
|
{
|
|
$('#tickAll, #actionSelectAll').attr('class', 'check_all');
|
|
$('#tickAll, #actionSelectAll').attr('title', selectAllText);
|
|
$('#actionSelectAll span').html( selectAllText);
|
|
switch(getView())
|
|
{
|
|
case 'thumbnail':
|
|
$('#rightCol dl.thumbnailListing input[@type=checkbox]').each(function(i){
|
|
$(this).removeAttr("checked");
|
|
}) ;
|
|
break;
|
|
case 'detail':
|
|
default:
|
|
$("#fileList tr[@id^=row] input[@type=checkbox]").each(function(i){
|
|
$(this).removeAttr("checked");
|
|
}) ;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
|
|
};
|
|
|
|
function cutDocuments(msgNoDocSelected)
|
|
{
|
|
repositionDocuments(msgNoDocSelected, getUrl('cut'), 'cut');
|
|
return false;
|
|
};
|
|
|
|
function copyDocuments(msgNoDocSelected)
|
|
{
|
|
repositionDocuments(msgNoDocSelected, getUrl('copy'), 'copy');
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* selecte documents and fire an ajax call to delete them
|
|
*/
|
|
function repositionDocuments(msgNoDocSelected, formActionUrl, actionVal)
|
|
{
|
|
switch(getView())
|
|
{
|
|
case 'thumbnail':
|
|
var selectedDoc = $('#rightCol dl.thumbnailListing input[@type=checkbox][@checked]');
|
|
break;
|
|
case 'detail':
|
|
|
|
default:
|
|
var selectedDoc = $('#fileList input[@type=checkbox][@checked]');
|
|
}
|
|
|
|
var hiddenSelectedDoc = document.getElementById('selectedDoc');
|
|
var selectedOptions;
|
|
var isSelected = false;
|
|
|
|
//remove all options
|
|
$(hiddenSelectedDoc).removeOption(/./);
|
|
$(selectedDoc).each(function(i){
|
|
|
|
$(hiddenSelectedDoc).addOption($(this).val(), getNum($(this).attr('id')), true);
|
|
isSelected = true;
|
|
});
|
|
if(!isSelected)
|
|
{
|
|
alert(msgNoDocSelected);
|
|
}
|
|
else
|
|
{
|
|
|
|
var formAction = document.formAction;
|
|
var actionElem = $('#action_value');
|
|
formAction.action = formActionUrl;
|
|
|
|
$('#currentFolderPathVal').val(currentFolder.path);
|
|
$(actionElem).val(actionVal);
|
|
var options =
|
|
{
|
|
dataType: 'json',
|
|
error: function (data, status, e)
|
|
{
|
|
alert(e);
|
|
},
|
|
success: function(data)
|
|
{
|
|
if(typeof(data.error) == 'undefined')
|
|
{
|
|
alert('Unexpected Error');
|
|
}
|
|
else if(data.error != '')
|
|
{
|
|
alert(data.error);
|
|
}else
|
|
{
|
|
//set change flags
|
|
numFiles = parseInt(data.num);
|
|
var flag = (actionVal == 'copy'?'copyFlag':'cutFlag');
|
|
action = actionVal;
|
|
//clear all flag
|
|
for(var i = 1; i < numRows; i++)
|
|
{
|
|
$('#flag' + i).attr('class', 'noFlag');
|
|
}
|
|
for(var i =0; i < hiddenSelectedDoc.options.length; i++)
|
|
{
|
|
$('#flag' + hiddenSelectedDoc.options[i].text).attr('class', flag);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
};
|
|
$(formAction).ajaxSubmit(options);
|
|
|
|
|
|
}
|
|
|
|
return false;
|
|
};
|
|
|
|
function pasteDocuments(msgNoDocSelected)
|
|
{
|
|
if(numFiles)
|
|
{
|
|
|
|
var warningMsg = (action == 'copy'?warningCopyPaste:warningCutPaste);
|
|
if(window.confirm(warningMsg))
|
|
{
|
|
$.getJSON(appendQueryString(getUrl('paste'), 'current_folder_path='+ currentFolder.path, ['current_folder_path']),
|
|
function(json)
|
|
{
|
|
if(typeof(json.error) == 'undefined')
|
|
{
|
|
alert('Unexpected Error.');
|
|
}
|
|
{
|
|
|
|
if(json.error != '')
|
|
{
|
|
alert(json.error);
|
|
}
|
|
|
|
|
|
for(var j in json.files)
|
|
{
|
|
numRows++;
|
|
files[numRows] = {};
|
|
for(var i in json.files[j])
|
|
{
|
|
files[numRows][i] = json.files[j][i];
|
|
}
|
|
addDocumentHtml(numRows);
|
|
|
|
}
|
|
numFiles = parseInt(json.unmoved_files);
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|
|
);
|
|
|
|
}
|
|
}else
|
|
{
|
|
alert(msgNoDocSelected);
|
|
}
|
|
return false;
|
|
|
|
};
|
|
/**
|
|
* add document item html to the file listing body
|
|
*/
|
|
function addDocumentHtml(num)
|
|
{
|
|
var strDisabled = "";
|
|
if(!files[num].is_writable)
|
|
{
|
|
strDisabled = "disabled";
|
|
}
|
|
switch(getView())
|
|
{
|
|
|
|
case 'thumbnail':
|
|
$(
|
|
'<dl class="thumbnailListing" id="dl' + num + '" ><dt id="dt' + num + '" class="' + files[num].cssClass + '"></dt><dd id="dd' + num + '" class="thumbnailListing_info"><span id="flag' + num + '" class="' + files[num].flag + '"> </span><input id="cb' + num + '" type="checkbox" class="radio" ' + strDisabled +' name="check[]" class="input" value="' + files[num].path + '" /><a href="' + files[num].path + '" title="' + files[num].name + '" id="a' + num + '">' + (typeof(files[num].short_name) != 'undefined'?files[num].short_name:files[num].name) + '</a></dd></dl>').appendTo('#content');
|
|
|
|
|
|
if(files[num].type== 'folder')
|
|
{//this is foder item
|
|
|
|
enableFolderBrowsable(num);
|
|
}else
|
|
{//this is file item
|
|
|
|
switch(files[num].cssClass)
|
|
{
|
|
case 'filePicture':
|
|
$('<a id="thumbUrl' + num + '" rel="thumbPhotos" href="' + files[num].path + '"><img src="' + appendQueryString(getUrl('thumbnail', false, false), 'path=' + files[num].path, ['path']) + '" id="thumbImg' + num + '"></a>').appendTo('#dt' + num);
|
|
break;
|
|
case 'fileFlash':
|
|
break;
|
|
case 'fileVideo':
|
|
break;
|
|
case 'fileMusic':
|
|
break;
|
|
default:
|
|
|
|
|
|
}
|
|
enablePreview('#dl' + num + ' a', [num]);
|
|
|
|
}
|
|
enableContextMenu('#dl' + num);
|
|
enableShowDocInfo( num);
|
|
break;
|
|
case 'detail':
|
|
default:
|
|
var cssRow = (num % 2?"even":"odd");
|
|
$('<tr class="' + cssRow + '" id="row' + num + '"><td id="tdz' + num +'" align="center"><span id="flag' + num +'" class="' + files[num].flag +'"> </span><input type="checkbox" class="radio" name="check[]" id="cb' + num +'" value="' + files[num].path +'" ' + strDisabled + ' /></td><td align="center" class="fileColumns" id="tdst1"> <a id="a' + num +'" href="' + files[num].path +'"><span class="' + files[num].cssClass + '"> </span></a></td><td class="left docName" id="tdnd' + num +'">' + (typeof(files[num].short_name) != 'undefined'?files[num].short_name:files[num].name) + '</td><td class="docInfo" id="tdrd' + num +'">' + files[num].size +'</td><td class="docInfo" id="tdth' + num +'">' + files[num].mtime +'</td></tr>').appendTo('#fileList');
|
|
|
|
if(files[num].type== 'folder')
|
|
{//this is foder item
|
|
enableFolderBrowsable(num);
|
|
}else
|
|
{//this is file item
|
|
|
|
switch(files[num].cssClass)
|
|
{
|
|
case 'filePicture':
|
|
break;
|
|
case 'fileFlash':
|
|
break;
|
|
case 'fileVideo':
|
|
break;
|
|
case 'fileMusic':
|
|
break;
|
|
default:
|
|
|
|
|
|
}
|
|
enablePreview('#row' + num + ' td a', num);
|
|
|
|
}
|
|
enableContextMenu('#row' + num);
|
|
enableShowDocInfo(num);
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
function enableShowDocInfo(num)
|
|
{
|
|
|
|
$('#cb' + num).click(
|
|
function()
|
|
{
|
|
|
|
setDocInfo('doc', num);
|
|
}
|
|
);
|
|
};
|
|
/**
|
|
* show up the selected document information
|
|
* @param type root or doc
|
|
*/
|
|
function setDocInfo(type, num)
|
|
{
|
|
|
|
|
|
var info = {};
|
|
if(type == 'root')
|
|
{
|
|
info = currentFolder;
|
|
}else
|
|
{
|
|
info = files[num];
|
|
}
|
|
|
|
|
|
if(info.type=="folder")
|
|
{
|
|
$('#folderPath').text(info.name);
|
|
$('#folderFile').text(info.file);
|
|
$('#folderSubdir').text(info.subdir);
|
|
$('#folderCtime').text(info.ctime);
|
|
$('#folderMtime').text(info.mtime);
|
|
if(info.is_readable == '1')
|
|
{
|
|
$('#folderReadable').html("<span class=\"flagYes\"> </span>");
|
|
}else
|
|
{
|
|
$('#folderReadable').html("<span class=\"flagNo\"> </span>");
|
|
}
|
|
if(info.is_writable == '1')
|
|
{
|
|
$('#folderWritable').html("<span class=\"flagYes\"> </span>");
|
|
}else
|
|
{
|
|
$('#folderWritable').html("<span class=\"flagNo\"> </span>");
|
|
}
|
|
$('#folderFieldSet').css('display', '');
|
|
$('#fileFieldSet').css('display', 'none');
|
|
}else
|
|
{
|
|
|
|
|
|
$('#fileName').text(info.name);
|
|
$('#fileSize').text(info.size);
|
|
$('#fileType').text(info.fileType);
|
|
$('#fileCtime').text(info.ctime);
|
|
$('#fileMtime').text(info.mtime);
|
|
if(info.is_readable == '1')
|
|
{
|
|
$('#fileReadable').html("<span class=\"flagYes\"> </span>");
|
|
}else
|
|
{
|
|
$('#fileReadable').html("<span class=\"flagNo\"> </span>");
|
|
}
|
|
if(info.is_writable == '1')
|
|
{
|
|
$('#fileWritable').html("<span class=\"flagYes\"> </span>");
|
|
}else
|
|
{
|
|
$('#fileWritable').html("<span class=\"flagNo\"> </span>");
|
|
}
|
|
$('#folderFieldSet').css('display', 'none');
|
|
$('#fileFieldSet').css('display', '');
|
|
if(typeof(selectFile) != 'undefined')
|
|
{
|
|
$('#selectCurrentUrl').unbind('click').click(
|
|
function()
|
|
{
|
|
|
|
selectFile(info.url);
|
|
}
|
|
);
|
|
$('#returnCurrentUrl').show();
|
|
|
|
}else
|
|
{
|
|
$('#returnCurrentUrl').hide();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
function search()
|
|
{
|
|
searchRequired = true;
|
|
var url = getUrl('view', true, true, true);
|
|
|
|
$('#rightCol').empty();
|
|
ajaxStart('#rightCol');
|
|
|
|
$('#rightCol').load(url,
|
|
{},
|
|
function(){
|
|
ajaxStop('#rightCol img.ajaxLoadingImg');
|
|
initAfterListingLoaded();
|
|
});
|
|
return false;
|
|
};
|
|
|
|
function closeWinPlay()
|
|
{
|
|
tb_remove();
|
|
$('#playGround').empty();
|
|
};
|
|
|
|
function closeWindow(msg)
|
|
{
|
|
|
|
if(window.confirm(msg))
|
|
{
|
|
window.close();
|
|
}else
|
|
{
|
|
return false;
|
|
}
|
|
|
|
|
|
}; |