From 949494ccfd89d7ff4af26d8da83475e2ee382f73 Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind1991@gmail.com>
Date: Sat, 8 Oct 2011 21:18:47 +0200
Subject: [PATCH] mimetype icon improvements

---
 .../filetypes/{script.png => code-script.png}    | Bin
 core/img/filetypes/{php.png => text-x-php.png}   | Bin
 files/ajax/mimeicon.php                          |   8 ++++++++
 files/js/filelist.js                             |  12 ++++++++----
 files/js/files.js                                |  15 +++++++++------
 lib/helper.php                                   |   6 ++++++
 6 files changed, 31 insertions(+), 10 deletions(-)
 rename core/img/filetypes/{script.png => code-script.png} (100%)
 rename core/img/filetypes/{php.png => text-x-php.png} (100%)
 create mode 100644 files/ajax/mimeicon.php

diff --git a/core/img/filetypes/script.png b/core/img/filetypes/code-script.png
similarity index 100%
rename from core/img/filetypes/script.png
rename to core/img/filetypes/code-script.png
diff --git a/core/img/filetypes/php.png b/core/img/filetypes/text-x-php.png
similarity index 100%
rename from core/img/filetypes/php.png
rename to core/img/filetypes/text-x-php.png
diff --git a/files/ajax/mimeicon.php b/files/ajax/mimeicon.php
new file mode 100644
index 0000000000..8724016b3a
--- /dev/null
+++ b/files/ajax/mimeicon.php
@@ -0,0 +1,8 @@
+<?php
+
+// Init owncloud
+require_once('../../lib/base.php');
+
+print OC_Helper::mimetypeIcon($_GET['mime']);
+
+?>
diff --git a/files/js/filelist.js b/files/js/filelist.js
index 84762bb561..e6da922700 100644
--- a/files/js/filelist.js
+++ b/files/js/filelist.js
@@ -101,10 +101,14 @@ FileList={
 		$('.file_upload_filename').removeClass('highlight');
 	},
 	loadingDone:function(name){
-		$('tr[data-file="'+name+'"]').data('loading',false);
-		var mime=$('tr[data-file="'+name+'"]').data('mime');
-		$('tr[data-file="'+name+'"] td.filename').attr('style','background-image:url('+getMimeIcon(mime)+')');
-		$('tr[data-file="'+name+'"] td.filename').draggable(dragOptions);
+		var tr=$('tr[data-file="'+name+'"]');
+		tr.data('loading',false);
+		var mime=tr.data('mime');
+		tr.attr('data-mime',mime);
+		getMimeIcon(mime,function(path){
+			tr.find('td.filename').attr('style','background-image:url('+path+')');
+		});
+		tr.find('td.filename').draggable(dragOptions);
 	},
 	isLoading:function(name){
 		return $('tr[data-file="'+name+'"]').data('loading');
diff --git a/files/js/files.js b/files/js/files.js
index 9342642b4f..079646070d 100644
--- a/files/js/files.js
+++ b/files/js/files.js
@@ -473,11 +473,14 @@ function relative_modified_date(timestamp) {
 	else { return diffyears+' '+t('files','years ago'); }
 }
 
-function getMimeIcon(mime){
-	mime=mime.substr(0,mime.indexOf('/'));
-	var knownMimes=['image','audio'];
-	if(knownMimes.indexOf(mime)==-1){
-		mime='file';
+function getMimeIcon(mime, ready){
+	if(getMimeIcon.cache[mime]){
+		ready(getMimeIcon.cache[mime]);
+	}else{
+		$.get( OC.filePath('files','ajax','mimeicon.php')+'?mime='+mime, function(path){
+			getMimeIcon.cache[mime]=path;
+			ready(getMimeIcon.cache[mime]);
+		});
 	}
-	return OC.imagePath('core','filetypes/'+mime);
 }
+getMimeIcon.cache={};
diff --git a/lib/helper.php b/lib/helper.php
index c2a81ba330..5b3e394caf 100644
--- a/lib/helper.php
+++ b/lib/helper.php
@@ -96,6 +96,12 @@ class OC_Helper {
 	 * Returns the path to the image of this file type.
 	 */
 	public static function mimetypeIcon( $mimetype ){
+		$alias=array('application/xml'=>'code/xml');
+// 		echo $mimetype;
+		if(isset($alias[$mimetype])){
+			$mimetype=$alias[$mimetype];
+// 			echo $mimetype;
+		}
 		// Replace slash with a minus
 		$mimetype = str_replace( "/", "-", $mimetype );
 
-- 
GitLab