diff options
author | Izzy Galvez <i@igalvez.net> | 2015-10-23 23:17:07 +0300 |
---|---|---|
committer | Izzy Galvez <i@igalvez.net> | 2015-10-23 23:17:07 +0300 |
commit | 594eb9d88c093d877fbbd4991f46c1cda7d70d23 (patch) | |
tree | 1315a0380de6c95591e6c2ddd4b57f7b980e6c39 | |
parent | 086565c5365a1405bb04c56a3f7b8bb1212db368 (diff) |
better filetype management, removes need to hardcode types.
-rw-r--r-- | .autoindex/file-types.js | 106 | ||||
-rw-r--r-- | .autoindex/script.js | 69 |
2 files changed, 103 insertions, 72 deletions
diff --git a/.autoindex/file-types.js b/.autoindex/file-types.js index 04fa5df..9804529 100644 --- a/.autoindex/file-types.js +++ b/.autoindex/file-types.js @@ -1,46 +1,72 @@ -var iconText = 'file-text-o'; -var iconCode = 'file-code-o'; -var iconImage = 'picture-o'; -var iconFont = 'font'; +// file types array of objects +var fileTypes = [ -var filesText = [ - 'txt', - 'pem' -]; + { + type: "text", + icon: "file-text-o", + extensions: [ + 'txt', + 'pem', + 'log' + ] + }, -var filesWeb = [ // web pages -]; + { + type: "code", + icon: "file-code-o", + extensions: [ + 'html', + 'js', + 'css', + 'scss', + 'less', + 'map', + 'json', + 'yml', + 'xml', + 'jade', + 'md', + 'py', + 'sh', + 'svg', + 'cgi' + ] + }, -var filesCode = [ - 'html', - 'js', - 'css', - 'scss', - 'less', - 'map', - 'json', - 'yml', - 'xml', - 'jade', - 'md', - 'py', - 'sh', - 'svg', - 'cgi' -]; + { + type: "image", + icon: "picture-o", + extensions: [ + 'bmp', + 'jpg', + 'jpeg', + 'png', + 'gif', + 'tiff', + 'ico' + ] + }, -var filesImage = [ - 'jpg', - 'jpeg', - 'png', - 'gif', - 'tiff', - 'ico' -]; + { + type: "font", + icon: "font", + extensions: [ + 'otf', + 'eot', + 'ttf', + 'woff', + 'woff2' + ] + }, + + { + type: "configuration", + icon: "cog", + extensions: [ + 'ini', + 'conf', + 'cfg' + ] + } -var filesFont = [ - 'otf', - 'eot', - 'ttf', - 'woff' ]; diff --git a/.autoindex/script.js b/.autoindex/script.js index 5fd5547..e7b84a7 100644 --- a/.autoindex/script.js +++ b/.autoindex/script.js @@ -47,7 +47,7 @@ if(/\/$/.test(document.URL)) { function addIcon(object, icon, className) { var HTML = '<i class="' + className + ' fa fa-fw fa-' + icon + '"></i>'; - + if(className == 'right') { object.append(HTML); } else if(className == 'left') { @@ -57,7 +57,7 @@ function addIcon(object, icon, className) { // CSS and icons to rows and links ----------------------------------------------------------------- $('table tbody tr').each(function(i, obj) { - + var link = $('a', this).first(); link.parent().addClass('td-link'); var file = link.text(); @@ -68,43 +68,48 @@ $('table tbody tr').each(function(i, obj) { $(this).addClass('warning'); link.text('../'); addIcon(link, 'folder', 'left'); - + } else { - - if (file.substring(file.length - 1) == '/') { + + if (file.substring(file.length - 1) == '/') { link.attr('data-type', 'folder'); $(this).addClass('active'); addIcon(link, 'folder', 'left'); } else { - - var fparts = file.split('.'); - - if(fparts.length > 1) { - - var ext = fparts[fparts.length - 1]; - - if($.inArray(ext, filesText) > -1) { // text files - addIcon(link, iconText, 'left'); - showSource = true; - } else if($.inArray(ext, filesCode) > -1) { // code - addIcon(link, iconCode, 'left'); - showSource = true; - } else if($.inArray(ext, filesImage) > -1) { // images - addIcon(link, iconImage, 'left'); - } else if($.inArray(ext, filesFont) > -1) { // fonts - addIcon(link, iconFont, 'left'); - } else { // unknown file extension - addIcon(link, 'file-o', 'left'); - } - - } else { // files with no extension - addIcon(link, 'file-o', 'left'); - } - + + var fparts = file.split('.'); + + if(fparts.length > 1) { + + var ext = fparts[fparts.length - 1]; + + var extensionFound = false; + for(var i = 0; i < fileTypes.length; i++) { + + var icon = fileTypes[i].icon; + var extensions = fileTypes[i].extensions; + + if($.inArray(ext, extensions) > -1) { + + extensionFound = true; + addIcon(link, icon, 'left'); + break; + + } + } + + if(!extensionFound) { // extension not found in fileTypes array of objects + addIcon(link, 'file-o', 'left'); + } + + } else { // files with no extension + addIcon(link, 'file-o', 'left'); + } + link.attr('target', '_blank'); - link.attr('data-type', 'file'); + link.attr('data-type', 'file'); } - + } }); |