first commit
This commit is contained in:
308
public/fileman/js/utils.js
Executable file
308
public/fileman/js/utils.js
Executable file
@@ -0,0 +1,308 @@
|
||||
/*
|
||||
RoxyFileman - web based file manager. Ready to use with CKEditor, TinyMCE.
|
||||
Can be easily integrated with any other WYSIWYG editor or CMS.
|
||||
|
||||
Copyright (C) 2013, RoxyFileman.com - Lyubomir Arsov. All rights reserved.
|
||||
For licensing, see LICENSE.txt or http://RoxyFileman.com/license
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Contact: Lyubomir Arsov, liubo (at) web-lobby.com
|
||||
*/
|
||||
var FileTypes = new Array();
|
||||
FileTypes['image'] = new Array('jpg', 'jpeg', 'png', 'gif');
|
||||
FileTypes['media'] = new Array('avi', 'flv', 'swf', 'wmv', 'mp3', 'wma', 'mpg','mpeg');
|
||||
FileTypes['document'] = new Array('doc', 'docx', 'txt', 'rtf', 'pdf', 'xls', 'mdb','html','htm','db');
|
||||
function RoxyUtils(){}
|
||||
RoxyUtils.FixPath = function(path){
|
||||
if(!path)
|
||||
return '';
|
||||
var ret = path.replace(/\\/g, '');
|
||||
ret = ret.replace(/\/\//g, '/');
|
||||
ret = ret.replace(':/', '://');
|
||||
|
||||
return ret;
|
||||
};
|
||||
RoxyUtils.FormatDate = function(date){
|
||||
var ret = '';
|
||||
try{
|
||||
ret = $.format.date(date, RoxyFilemanConf.DATEFORMAT);
|
||||
}
|
||||
catch(ex){
|
||||
//alert(ex);
|
||||
ret = date.toString();
|
||||
ret = ret.substr(0, ret.indexOf('UTC'));
|
||||
}
|
||||
return ret;
|
||||
};
|
||||
RoxyUtils.GetPath = function(path){
|
||||
var ret = '';
|
||||
path = RoxyUtils.FixPath(path);
|
||||
if(path.indexOf('/') > -1)
|
||||
ret = path.substring(0, path.lastIndexOf('/'));
|
||||
|
||||
return ret;
|
||||
};
|
||||
RoxyUtils.GetUrlParam = function(varName, url){
|
||||
var ret = '';
|
||||
if(!url)
|
||||
url = self.location.href;
|
||||
if(url.indexOf('?') > -1){
|
||||
url = url.substr(url.indexOf('?') + 1);
|
||||
url = url.split('&');
|
||||
for(i = 0; i < url.length; i++){
|
||||
var tmp = url[i].split('=');
|
||||
if(tmp[0] && tmp[1] && tmp[0] == varName){
|
||||
ret = tmp[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
RoxyUtils.GetFilename = function(path){
|
||||
var ret = path;
|
||||
path = RoxyUtils.FixPath(path);
|
||||
if(path.indexOf('/') > -1){
|
||||
ret = path.substring(path.lastIndexOf('/')+1);
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
RoxyUtils.MakePath = function(){
|
||||
ret = '';
|
||||
if(arguments && arguments.length > 0){
|
||||
for(var i = 0; i < arguments.length; i++){
|
||||
ret += ($.isArray(arguments[i])?arguments[i].join('/'):arguments[i]);
|
||||
if(i < (arguments.length - 1))
|
||||
ret += '/';
|
||||
}
|
||||
ret = RoxyUtils.FixPath(ret);
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
RoxyUtils.GetFileExt = function(path){
|
||||
var ret = '';
|
||||
path = RoxyUtils.GetFilename(path);
|
||||
if(path.indexOf('.') > -1){
|
||||
ret = path.substring(path.lastIndexOf('.') + 1);
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
RoxyUtils.FileExists = function(path) {
|
||||
var ret = false;
|
||||
|
||||
$.ajax({
|
||||
url: path,
|
||||
type: 'HEAD',
|
||||
async: false,
|
||||
dataType:'text',
|
||||
success:function(){ret = true;}
|
||||
});
|
||||
|
||||
return ret;
|
||||
};
|
||||
RoxyUtils.GetFileIcon = function(path){
|
||||
ret = 'images/filetypes/unknown.png';//'images/filetypes/file_extension_' + RoxyUtils.GetFileExt(path).toLowerCase() + '.png';
|
||||
if(fileTypeIcons[RoxyUtils.GetFileExt(path).toLowerCase()]){
|
||||
ret = 'images/filetypes/' + fileTypeIcons[RoxyUtils.GetFileExt(path).toLowerCase()];
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
RoxyUtils.GetFileSize = function(path){
|
||||
var ret = 0;
|
||||
$.ajax({
|
||||
url: path,
|
||||
type: 'HEAD',
|
||||
async: false,
|
||||
success:function(d,s, xhr){
|
||||
ret = xhr.getResponseHeader('Content-Length');
|
||||
}
|
||||
});
|
||||
if(!ret)
|
||||
ret = 0;
|
||||
|
||||
return ret;
|
||||
};
|
||||
RoxyUtils.GetFileType = function(path){
|
||||
var ret = RoxyUtils.GetFileExt(path).toLowerCase();
|
||||
if(ret == 'png' || ret == 'jpg' || ret == 'gif' || ret == 'jpeg')
|
||||
ret = 'image';
|
||||
|
||||
return ret;
|
||||
};
|
||||
RoxyUtils.IsImage = function(path){
|
||||
var ret = false;
|
||||
if(RoxyUtils.GetFileType(path) == 'image')
|
||||
ret = true;
|
||||
|
||||
return ret;
|
||||
};
|
||||
RoxyUtils.FormatFileSize = function(x){
|
||||
var suffix = 'B';
|
||||
if(!x)
|
||||
x = 0;
|
||||
if(x > 1024){
|
||||
x = x / 1024;
|
||||
suffix = 'KB';
|
||||
}
|
||||
if(x > 1024){
|
||||
x = x / 1024;
|
||||
suffix = 'MB';
|
||||
}
|
||||
x = new Number(x);
|
||||
return x.toFixed(2) + ' ' + suffix;
|
||||
};
|
||||
RoxyUtils.AddParam = function(url, n, v){
|
||||
url += (url.indexOf('?') > -1?'&':'?') + n + '='+encodeURIComponent(v);
|
||||
|
||||
return url;
|
||||
};
|
||||
RoxyUtils.SelectText = function(field_id, start, end) {
|
||||
try{
|
||||
var field = document.getElementById(field_id);
|
||||
if( field.createTextRange ) {
|
||||
var selRange = field.createTextRange();
|
||||
selRange.collapse(true);
|
||||
selRange.moveStart('character', start);
|
||||
selRange.moveEnd('character', end-start);
|
||||
selRange.select();
|
||||
} else if( field.setSelectionRange ) {
|
||||
field.setSelectionRange(start, end);
|
||||
} else if( field.selectionStart ) {
|
||||
field.selectionStart = start;
|
||||
field.selectionEnd = end;
|
||||
}
|
||||
field.focus();
|
||||
}
|
||||
catch(ex){}
|
||||
};
|
||||
function RoxyFilemanConf(){}
|
||||
RoxyUtils.LoadConfig = function(){
|
||||
$.ajax({
|
||||
url: 'conf.json',
|
||||
dataType: 'json',
|
||||
async:false,
|
||||
success: function(data){
|
||||
RoxyFilemanConf = data;
|
||||
},
|
||||
error: function(data){
|
||||
alert(t('E_LoadingConf'));
|
||||
}
|
||||
});
|
||||
};
|
||||
function RoxyLang(){}
|
||||
RoxyUtils.LoadLang = function(){
|
||||
var langUrl = '';
|
||||
if(RoxyFilemanConf.LANG && RoxyFilemanConf.LANG.toLowerCase() == 'auto'){
|
||||
if(RoxyUtils.GetUrlParam('langCode')){
|
||||
langUrl = 'lang/' + RoxyUtils.GetUrlParam('langCode').substr(0, 2).toLowerCase() + '.json';
|
||||
}
|
||||
else {
|
||||
var language = window.navigator.userLanguage || window.navigator.language;
|
||||
langUrl = 'lang/' + language.substr(0, 2) + '.json';
|
||||
}
|
||||
if(!RoxyUtils.FileExists(langUrl))
|
||||
langUrl = '';
|
||||
}
|
||||
else{
|
||||
if(RoxyFilemanConf.LANG){
|
||||
langUrl = 'lang/' + RoxyFilemanConf.LANG.substr(0, 2).toLowerCase() + '.json';
|
||||
if(!RoxyUtils.FileExists(langUrl))
|
||||
langUrl = '';
|
||||
}
|
||||
}
|
||||
if(!langUrl)
|
||||
langUrl = 'lang/en.json';
|
||||
|
||||
$.ajax({
|
||||
url: langUrl,
|
||||
dataType: 'json',
|
||||
async:false,
|
||||
success: function(data){
|
||||
RoxyLang = data;
|
||||
},
|
||||
error: function(data){
|
||||
alert('Error loading language file');
|
||||
}
|
||||
});
|
||||
};
|
||||
RoxyUtils.Translate = function(){
|
||||
RoxyUtils.LoadLang();
|
||||
|
||||
$('[data-lang-t]').each(function(){
|
||||
var key = $(this).attr('data-lang-t');
|
||||
$(this).prop('title', t(key));
|
||||
});
|
||||
$('[data-lang-v]').each(function(){
|
||||
var key = $(this).attr('data-lang-v');
|
||||
$(this).prop('value', t(key));
|
||||
});
|
||||
$('[data-lang]').each(function(){
|
||||
var key = $(this).attr('data-lang');
|
||||
$(this).html(t(key));
|
||||
});
|
||||
};
|
||||
RoxyUtils.GetCookies = function() {
|
||||
var ret = new Object();
|
||||
var tmp = document.cookie.replace(' ','');
|
||||
tmp = tmp.split(';');
|
||||
|
||||
for(i in tmp){
|
||||
var s = tmp[i].split('=');
|
||||
if(s.length > 1){
|
||||
ret[$.trim(s[0].toString())] = decodeURIComponent($.trim(s[1].toString())) || '';
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
RoxyUtils.GetCookie = function(key) {
|
||||
var tmp = RoxyUtils.GetCookies();
|
||||
|
||||
return tmp[key] || '';
|
||||
}
|
||||
RoxyUtils.SetCookie = function(key, val, hours, path) {
|
||||
var expires = new Date();
|
||||
if(hours){
|
||||
expires.setTime(expires.getTime() + (hours * 3600 * 1000));
|
||||
}
|
||||
|
||||
if(!path){
|
||||
path = '/';
|
||||
}
|
||||
|
||||
document.cookie = key + '=' + encodeURIComponent(val) + '; path=' + path + (hours?'; expires=' + expires.toGMTString():'');
|
||||
}
|
||||
RoxyUtils.ToBool = function(val){
|
||||
var ret = false;
|
||||
val = val.toString().toLowerCase();
|
||||
if(val == 'true' || val == 'on' || val == 'yes' || val == '1')
|
||||
ret = true;
|
||||
|
||||
return ret;
|
||||
}
|
||||
RoxyUtils.UnsetCookie = function(key) {
|
||||
document.cookie = key + "=; expires=Thu, 01 Jan 1972 00:00:00 UTC";
|
||||
}
|
||||
|
||||
function t(tag){
|
||||
var ret = tag;
|
||||
if(RoxyLang && RoxyLang[tag])
|
||||
ret = RoxyLang[tag];
|
||||
return ret;
|
||||
}
|
||||
Reference in New Issue
Block a user