tinymce-editor/Application/fileman/js/utils.js
2022-06-09 21:11:02 +02:00

309 lines
7.8 KiB
JavaScript
Executable File

/*
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;
}