[TASK] Render Resources using SVG in IconFactory 58/43258/25
authorFrank Nägler <frank.naegler@typo3.org>
Sun, 13 Sep 2015 08:56:40 +0000 (10:56 +0200)
committerWouter Wolters <typo3@wouterwolters.nl>
Mon, 14 Sep 2015 20:27:33 +0000 (22:27 +0200)
Add SVG icons for MimeTypes to the IconRegistry, add
IconFactory->getIconForResource() as improved version of
IconUtility->getSpriteIconForResource().

Also add IconFactory->getIconForFileExtension() similar to
IconUtility->getSpriteIconForFile() but without the possibility to pass
a path but only a file extension.

Replace all core calls of getSpriteIconForFile() and
getSpriteIconForResource() with calls to IconFactory.

Resolves: #69744
Resolves: #69759
Releases: master
Change-Id: I26b221fbba87c7f3e09ec10b61c13c8e74b8ecb3
Reviewed-on: http://review.typo3.org/43258
Reviewed-by: Benjamin Kott <info@bk2k.info>
Tested-by: Benjamin Kott <info@bk2k.info>
Reviewed-by: Frank Nägler <frank.naegler@typo3.org>
Tested-by: Frank Nägler <frank.naegler@typo3.org>
Reviewed-by: Frans Saris <franssaris@gmail.com>
Tested-by: Frans Saris <franssaris@gmail.com>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
68 files changed:
Build/Gruntfile.js
Build/Resources/Private/Icons/App/apps-filetree-folder-default.svg [new file with mode: 0644]
Build/Resources/Private/Icons/App/apps-filetree-folder-locked.svg [new file with mode: 0644]
Build/Resources/Private/Icons/App/apps-filetree-folder-opened.svg [new file with mode: 0644]
Build/Resources/Private/Icons/App/apps-filetree-folder-recycler.svg [new file with mode: 0644]
Build/Resources/Private/Icons/App/apps-filetree-folder-temp.svg [new file with mode: 0644]
Build/Resources/Private/Icons/App/apps-filetree-mount.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-compressed.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-excel.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-executable-executable.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-media-audio.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-media-flash.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-media-image.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-media-video.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-other-other.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-pdf.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-powerpoint.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-text-css.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-text-csv.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-text-html.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-text-js.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-text-php.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-text-text.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-text-ts.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Mimetype/mimetypes-word.svg [new file with mode: 0644]
Build/Resources/Private/Icons/Overlay/overlay-missing.svg [new file with mode: 0644]
Build/Resources/Public/Less/TYPO3/_element_table.less
typo3/sysext/backend/Classes/ClickMenu/ClickMenu.php
typo3/sysext/backend/Classes/Clipboard/Clipboard.php
typo3/sysext/backend/Classes/Form/Container/AbstractContainer.php
typo3/sysext/backend/Classes/Form/Element/GroupElement.php
typo3/sysext/backend/Classes/Template/DocumentTemplate.php
typo3/sysext/backend/Classes/Tree/View/FolderTreeView.php
typo3/sysext/backend/Classes/Utility/BackendUtility.php
typo3/sysext/backend/Classes/Utility/IconUtility.php
typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-default.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-locked.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-opened.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-recycler.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-temp.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-mount.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-compressed.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-excel.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-executable-executable.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-media-audio.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-media-flash.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-media-image.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-media-video.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-other-other.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-pdf.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-powerpoint.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-css.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-csv.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-html.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-js.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-php.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-text.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-ts.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-word.svg [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/Overlay/overlay-missing.svg [new file with mode: 0644]
typo3/sysext/core/Classes/Imaging/IconFactory.php
typo3/sysext/core/Classes/Imaging/IconRegistry.php
typo3/sysext/core/Tests/Unit/Imaging/IconFactoryTest.php
typo3/sysext/documentation/Classes/ViewHelpers/FormatsViewHelper.php
typo3/sysext/filelist/Classes/FileFacade.php
typo3/sysext/filelist/Classes/FileList.php
typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php
typo3/sysext/t3skin/Resources/Public/Css/backend.css

index 5dc2994..afee4b0 100644 (file)
@@ -156,6 +156,12 @@ module.exports = function(grunt) {
                        // Action Icons
                        icons_apps: {
                                files: {
                        // Action Icons
                        icons_apps: {
                                files: {
+                                       '<%= paths.backend %>Public/Icons/App/apps-filetree-folder-default.svg': '<%= paths.icons %>App/apps-filetree-folder-default.svg',
+                                       '<%= paths.backend %>Public/Icons/App/apps-filetree-folder-locked.svg': '<%= paths.icons %>App/apps-filetree-folder-locked.svg',
+                                       '<%= paths.backend %>Public/Icons/App/apps-filetree-folder-opened.svg': '<%= paths.icons %>App/apps-filetree-folder-opened.svg',
+                                       '<%= paths.backend %>Public/Icons/App/apps-filetree-folder-recycler.svg': '<%= paths.icons %>App/apps-filetree-folder-recycler.svg',
+                                       '<%= paths.backend %>Public/Icons/App/apps-filetree-folder-temp.svg': '<%= paths.icons %>App/apps-filetree-folder-temp.svg',
+                                       '<%= paths.backend %>Public/Icons/App/apps-filetree-mount.svg': '<%= paths.icons %>App/apps-filetree-mount.svg',
                                        '<%= paths.backend %>Public/Icons/App/apps-pagetree-root.svg': '<%= paths.icons %>App/apps-pagetree-root.svg',
                                        '<%= paths.backend %>Public/Icons/App/apps-toolbar-menu-search.svg': '<%= paths.icons %>App/apps-toolbar-menu-search.svg'
                                }
                                        '<%= paths.backend %>Public/Icons/App/apps-pagetree-root.svg': '<%= paths.icons %>App/apps-pagetree-root.svg',
                                        '<%= paths.backend %>Public/Icons/App/apps-toolbar-menu-search.svg': '<%= paths.icons %>App/apps-toolbar-menu-search.svg'
                                }
@@ -172,6 +178,29 @@ module.exports = function(grunt) {
                                        '<%= paths.backend %>Public/Icons/Default/default-not-found.svg': '<%= paths.icons %>Default/default-not-found.svg'
                                }
                        },
                                        '<%= paths.backend %>Public/Icons/Default/default-not-found.svg': '<%= paths.icons %>Default/default-not-found.svg'
                                }
                        },
+                       // Mimetypes
+                       icons_mimetypes: {
+                               files: {
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-compressed.svg': '<%= paths.icons %>Mimetype/mimetypes-compressed.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-excel.svg': '<%= paths.icons %>Mimetype/mimetypes-excel.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-executable-executable.svg': '<%= paths.icons %>Mimetype/mimetypes-executable-executable.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-media-audio.svg': '<%= paths.icons %>Mimetype/mimetypes-media-audio.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-media-flash.svg': '<%= paths.icons %>Mimetype/mimetypes-media-flash.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-media-image.svg': '<%= paths.icons %>Mimetype/mimetypes-media-image.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-media-video.svg': '<%= paths.icons %>Mimetype/mimetypes-media-video.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-other-other.svg': '<%= paths.icons %>Mimetype/mimetypes-other-other.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-pdf.svg': '<%= paths.icons %>Mimetype/mimetypes-pdf.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-powerpoint.svg': '<%= paths.icons %>Mimetype/mimetypes-powerpoint.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-text-css.svg': '<%= paths.icons %>Mimetype/mimetypes-text-css.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-text-csv.svg': '<%= paths.icons %>Mimetype/mimetypes-text-csv.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-text-html.svg': '<%= paths.icons %>Mimetype/mimetypes-text-html.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-text-js.svg': '<%= paths.icons %>Mimetype/mimetypes-text-js.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-text-php.svg': '<%= paths.icons %>Mimetype/mimetypes-text-php.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-text-text.svg': '<%= paths.icons %>Mimetype/mimetypes-text-text.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-text-ts.svg': '<%= paths.icons %>Mimetype/mimetypes-text-ts.svg',
+                                       '<%= paths.backend %>Public/Icons/Mimetype/mimetypes-word.svg': '<%= paths.icons %>Mimetype/mimetypes-word.svg'
+                               }
+                       },
                        // Miscellaneous Icons
                        icons_miscellaneous: {
                                files: {
                        // Miscellaneous Icons
                        icons_miscellaneous: {
                                files: {
@@ -220,6 +249,7 @@ module.exports = function(grunt) {
                                        '<%= paths.backend %>Public/Icons/Overlay/overlay-hidden.svg': '<%= paths.icons %>Overlay/overlay-hidden.svg',
                                        '<%= paths.backend %>Public/Icons/Overlay/overlay-includes-subpages.svg': '<%= paths.icons %>Overlay/overlay-includes-subpages.svg',
                                        '<%= paths.backend %>Public/Icons/Overlay/overlay-locked.svg': '<%= paths.icons %>Overlay/overlay-locked.svg',
                                        '<%= paths.backend %>Public/Icons/Overlay/overlay-hidden.svg': '<%= paths.icons %>Overlay/overlay-hidden.svg',
                                        '<%= paths.backend %>Public/Icons/Overlay/overlay-includes-subpages.svg': '<%= paths.icons %>Overlay/overlay-includes-subpages.svg',
                                        '<%= paths.backend %>Public/Icons/Overlay/overlay-locked.svg': '<%= paths.icons %>Overlay/overlay-locked.svg',
+                                       '<%= paths.backend %>Public/Icons/Overlay/overlay-missing.svg': '<%= paths.icons %>Overlay/overlay-missing.svg',
                                        '<%= paths.backend %>Public/Icons/Overlay/overlay-readonly.svg': '<%= paths.icons %>Overlay/overlay-readonly.svg',
                                        '<%= paths.backend %>Public/Icons/Overlay/overlay-restricted.svg': '<%= paths.icons %>Overlay/overlay-restricted.svg',
                                        '<%= paths.backend %>Public/Icons/Overlay/overlay-scheduled.svg': '<%= paths.icons %>Overlay/overlay-scheduled.svg',
                                        '<%= paths.backend %>Public/Icons/Overlay/overlay-readonly.svg': '<%= paths.icons %>Overlay/overlay-readonly.svg',
                                        '<%= paths.backend %>Public/Icons/Overlay/overlay-restricted.svg': '<%= paths.icons %>Overlay/overlay-restricted.svg',
                                        '<%= paths.backend %>Public/Icons/Overlay/overlay-scheduled.svg': '<%= paths.icons %>Overlay/overlay-scheduled.svg',
diff --git a/Build/Resources/Private/Icons/App/apps-filetree-folder-default.svg b/Build/Resources/Private/Icons/App/apps-filetree-folder-default.svg
new file mode 100644 (file)
index 0000000..05f98f5
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="apps-filetree-folder-default">
+       <path fill="#FFC857" d="M16,4v10H0V5V4V2h7l1.33,2H16z"/>
+       <path fill="#E8A33D" d="M16,5H8.33L7,7H0V5V4h16V5z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/App/apps-filetree-folder-locked.svg b/Build/Resources/Private/Icons/App/apps-filetree-folder-locked.svg
new file mode 100644 (file)
index 0000000..a14e96e
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="apps-filetree-folder-locked">
+       <path fill="#CCCCCC" d="M16,4v10H0V5V4V2h7l1.33,2H16z"/>
+       <path opacity="0.2" d="M16,5H8.33L7,7H0V5V4h16V5z"/>
+       <path fill="#999999" d="M12.02,8.5c-1.37,0-2.5,1.13-2.5,2.5h0v0.5h1V11h0c0-0.83,0.67-1.5,1.5-1.5s1.5,0.67,1.5,1.5h0v0.5h1V11h0
+               C14.52,9.63,13.4,8.5,12.02,8.5z"/>
+       <rect x="9" y="11.5" fill="#FFC857" width="6" height="4"/>
+       <path fill="#CD9232" d="M13,13c0-0.55-0.45-1-1-1s-1,0.45-1,1c0,0.37,0.2,0.69,0.5,0.86V15h1v-1.14C12.8,13.69,13,13.37,13,13z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/App/apps-filetree-folder-opened.svg b/Build/Resources/Private/Icons/App/apps-filetree-folder-opened.svg
new file mode 100644 (file)
index 0000000..7192d33
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="apps-filetree-folder-opened">
+       <path fill="#E8A33D" d="M0,2v1.81V14h12.69V3.81H5.08L3.95,2C3.95,2,0,2,0,2z"/>
+       <path fill="#FFC857" d="M8.26,6.08L6.55,7.4H2.53L0,14h12.96L16,6.08L8.26,6.08L8.26,6.08z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/App/apps-filetree-folder-recycler.svg b/Build/Resources/Private/Icons/App/apps-filetree-folder-recycler.svg
new file mode 100644 (file)
index 0000000..c2bd771
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="apps-filetree-folder-recycler">
+       <path fill="#8C8C8C" d="M5.38,0h5.25v3H5.38V0z"/>
+       <path fill="#B9B9B9" d="M1.88,5h12.25l-0.88,11H2.75L1.88,5z"/>
+       <path fill="#B9B9B9" d="M1,2h14v4H1V2z"/>
+       <path fill="#8C8C8C" d="M1,5h14v1H1V5z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/App/apps-filetree-folder-temp.svg b/Build/Resources/Private/Icons/App/apps-filetree-folder-temp.svg
new file mode 100644 (file)
index 0000000..914aebb
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="apps-filetree-folder-temp">
+       <path fill="#CCCCCC" d="M16,4v10H0V5V4V2h7l1.33,2H16z"/>
+       <path opacity="0.2" d="M16,5H8.33L7,7H0V5V4h16V5z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/App/apps-filetree-mount.svg b/Build/Resources/Private/Icons/App/apps-filetree-mount.svg
new file mode 100644 (file)
index 0000000..66eb1d6
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="apps-filetree-mount">
+       <path fill="#B9B9B9" d="M0,4h16v5H0V4z"/>
+       <path fill="#B9B9B9" d="M16,12v2H0v-2H16z"/>
+       <path fill="#5599FF" d="M12,11v4H4v-4h2V9h4v2H12z"/>
+       <path fill="#8C8C8C" d="M1,7h10v1H1V7z"/>
+       <path fill="#8C8C8C" d="M1,5h10v1H1V5z"/>
+       <path fill="#EFEFEF" d="M2.75,2h10.5L15,4H1L2.75,2z"/>
+       <path fill="#B9B9B9" d="M13.25,2L15,4H1l1.75-2H13.25 M13.25,1H2.75C2.46,1,2.19,1.12,2,1.34l-1.75,2
+               c-0.26,0.3-0.32,0.71-0.16,1.07C0.25,4.77,0.61,5,1,5h14c0.39,0,0.75-0.23,0.91-0.59c0.16-0.36,0.1-0.78-0.16-1.07l-1.75-2
+               C13.81,1.12,13.54,1,13.25,1L13.25,1z"/>
+       <path opacity="0.3" enable-background="new    " d="M6,9h4v1H6V9z"/>
+       <path fill="#CD201F" d="M13,7h2v1h-2V7z"/>
+       <path fill="#5599FF" d="M13,5h2v1h-2V5z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-compressed.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-compressed.svg
new file mode 100644 (file)
index 0000000..6139e21
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-compressed">
+       <path fill="#FFC857" d="M14,16H2V0h8l4,4V16z"/>
+       <rect x="4" fill="#E8A33D" width="1" height="16"/>
+       <rect x="5" fill="#8C8C8C" width="1" height="1"/>
+       <rect x="5" y="2" fill="#8C8C8C" width="1" height="1"/>
+       <rect x="5" y="4" fill="#8C8C8C" width="1" height="1"/>
+       <rect x="5" y="6" fill="#8C8C8C" width="1" height="1"/>
+       <rect x="5" y="8" fill="#8C8C8C" width="1" height="1"/>
+       <rect x="4.5" y="10" fill="#8C8C8C" width="2" height="4"/>
+       <polygon opacity="0.1" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path opacity="0.7" fill="#FFFFFF" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-excel.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-excel.svg
new file mode 100644 (file)
index 0000000..748dea5
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-excel">
+       <path fill="#1E7145" d="M14,16H2V0h8l4,4V16z"/>
+       <polygon opacity="0.1" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path opacity="0.7" fill="#FFFFFF" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <path fill="#FFFFFF" d="M5.32,7h1.02l1.74,2.6L9.83,7h1.02L8.6,10.36L11,14H9.98l-1.97-2.98
+               L6.02,14H5l2.5-3.74L5.32,7z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-executable-executable.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-executable-executable.svg
new file mode 100644 (file)
index 0000000..e5f6eea
--- /dev/null
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-executable-executable">
+       <path fill="#5599FF" d="M14,16H2V0h8l4,4V16z"/>
+       <polygon opacity="0.1" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path opacity="0.7" fill="#FFFFFF" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <path fill="#FFFFFF" d="M9.33,10.06c0,0.05-0.04,0.12-0.1,0.12l-0.65,0.1c-0.03,0.11-0.08,0.21-0.13,0.32
+               c0.12,0.17,0.24,0.32,0.38,0.48c0.02,0.02,0.03,0.05,0.03,0.08c0,0.03-0.01,0.06-0.03,0.08c-0.08,0.11-0.55,0.62-0.67,0.62
+               c-0.03,0-0.06-0.01-0.09-0.03L7.6,11.46c-0.1,0.05-0.21,0.1-0.32,0.13c-0.02,0.21-0.04,0.44-0.1,0.65c-0.02,0.06-0.07,0.1-0.12,0.1
+               H6.28c-0.06,0-0.12-0.05-0.12-0.1l-0.1-0.64c-0.11-0.03-0.21-0.08-0.31-0.13l-0.49,0.37c-0.02,0.02-0.05,0.03-0.08,0.03
+               c-0.03,0-0.06-0.01-0.09-0.03c-0.11-0.1-0.6-0.55-0.6-0.67c0-0.03,0.01-0.05,0.03-0.08c0.12-0.16,0.25-0.31,0.37-0.48
+               c-0.06-0.11-0.11-0.22-0.15-0.34l-0.63-0.1C4.04,10.16,4,10.1,4,10.05V9.27c0-0.05,0.04-0.12,0.1-0.12l0.65-0.1
+               c0.03-0.11,0.08-0.21,0.13-0.32C4.76,8.57,4.63,8.41,4.5,8.25C4.48,8.23,4.47,8.2,4.47,8.17S4.48,8.11,4.5,8.09
+               c0.08-0.11,0.55-0.62,0.67-0.62c0.03,0,0.06,0.01,0.09,0.03l0.48,0.38c0.1-0.05,0.21-0.1,0.32-0.13C6.08,7.53,6.1,7.3,6.15,7.1
+               C6.17,7.04,6.22,7,6.28,7h0.78c0.06,0,0.12,0.05,0.12,0.1l0.1,0.64c0.11,0.03,0.21,0.08,0.31,0.13L8.08,7.5
+               C8.1,7.48,8.13,7.47,8.16,7.47c0.03,0,0.06,0.01,0.09,0.03c0.11,0.1,0.6,0.55,0.6,0.67c0,0.03-0.01,0.05-0.03,0.08
+               C8.7,8.41,8.58,8.56,8.46,8.73c0.05,0.11,0.1,0.22,0.14,0.34l0.63,0.1c0.06,0.01,0.1,0.07,0.1,0.13V10.06z M6.67,8.6
+               C6.08,8.6,5.6,9.08,5.6,9.67c0,0.59,0.48,1.07,1.07,1.07s1.07-0.48,1.07-1.07C7.73,9.08,7.25,8.6,6.67,8.6z M12,7.82
+               c0,0.06-0.54,0.12-0.62,0.13c-0.03,0.08-0.07,0.15-0.12,0.22c0.04,0.08,0.21,0.5,0.21,0.57c0,0.01,0,0.02-0.02,0.03
+               c-0.05,0.03-0.5,0.3-0.52,0.3c-0.05,0-0.37-0.42-0.41-0.48c-0.04,0-0.08,0.01-0.13,0.01c-0.04,0-0.08,0-0.12-0.01
+               c-0.04,0.06-0.35,0.48-0.41,0.48c-0.02,0-0.47-0.27-0.52-0.3C9.34,8.77,9.33,8.75,9.33,8.75c0-0.07,0.18-0.49,0.21-0.57
+               C9.5,8.1,9.45,8.03,9.42,7.95C9.34,7.95,8.8,7.89,8.8,7.82V7.24c0-0.06,0.54-0.12,0.62-0.13C9.45,7.04,9.5,6.96,9.55,6.9
+               c-0.04-0.08-0.21-0.5-0.21-0.57c0-0.01,0-0.02,0.02-0.03C9.4,6.27,9.85,6,9.87,6c0.05,0,0.37,0.41,0.41,0.47
+               c0.04,0,0.08-0.01,0.12-0.01c0.04,0,0.08,0,0.13,0.01c0.12-0.16,0.24-0.32,0.38-0.47L10.93,6c0.02,0,0.47,0.26,0.52,0.29
+               c0.01,0.01,0.02,0.02,0.02,0.03c0,0.08-0.17,0.49-0.21,0.57c0.05,0.07,0.09,0.14,0.12,0.22C11.46,7.12,12,7.18,12,7.24V7.82z
+                M12,12.09c0,0.06-0.54,0.12-0.62,0.13c-0.03,0.08-0.07,0.15-0.12,0.22c0.04,0.08,0.21,0.5,0.21,0.58c0,0.01,0,0.02-0.02,0.03
+               c-0.05,0.03-0.5,0.3-0.52,0.3c-0.05,0-0.37-0.42-0.41-0.48c-0.04,0-0.08,0.01-0.13,0.01c-0.04,0-0.08,0-0.12-0.01
+               c-0.04,0.06-0.35,0.48-0.41,0.48c-0.02,0-0.47-0.27-0.52-0.3c-0.01-0.01-0.02-0.02-0.02-0.03c0-0.07,0.18-0.49,0.21-0.58
+               c-0.05-0.07-0.09-0.14-0.12-0.22c-0.08-0.01-0.62-0.07-0.62-0.13v-0.58c0-0.06,0.54-0.12,0.62-0.13c0.03-0.08,0.07-0.15,0.12-0.22
+               c-0.04-0.08-0.21-0.5-0.21-0.57c0-0.01,0-0.02,0.02-0.03c0.05-0.02,0.5-0.29,0.52-0.29c0.05,0,0.37,0.41,0.41,0.47
+               c0.04,0,0.08-0.01,0.12-0.01c0.04,0,0.08,0,0.13,0.01c0.12-0.16,0.24-0.32,0.38-0.47l0.02-0.01c0.02,0,0.47,0.26,0.52,0.29
+               c0.01,0.01,0.02,0.02,0.02,0.03c0,0.08-0.17,0.49-0.21,0.57c0.05,0.07,0.09,0.14,0.12,0.22c0.08,0.01,0.62,0.07,0.62,0.13V12.09z
+                M10.4,7c-0.29,0-0.53,0.24-0.53,0.53c0,0.3,0.24,0.53,0.53,0.53c0.3,0,0.53-0.24,0.53-0.53C10.93,7.24,10.69,7,10.4,7z
+                M10.4,11.27c-0.29,0-0.53,0.24-0.53,0.53c0,0.3,0.24,0.53,0.53,0.53c0.3,0,0.53-0.24,0.53-0.53
+               C10.93,11.51,10.69,11.27,10.4,11.27z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-media-audio.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-media-audio.svg
new file mode 100644 (file)
index 0000000..9f081dd
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-media-audio">
+       <path fill="#FFFFFF" d="M14,16H2V0h8l4,4V16z"/>
+       <polygon opacity="0.3" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path fill="#E6E6E6" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <path fill="#6DAAE0" d="M11.83,7H5.67H5.5C5.22,7,5,7.22,5,7.5v4.26c-0.22,0.09-0.45,0.23-0.65,0.43
+               c-0.54,0.54-0.68,1.26-0.32,1.62c0.36,0.36,1.08,0.21,1.62-0.32c0.35-0.35,0.53-0.77,0.52-1.13c0-0.01,0-0.01,0-0.02V8.17h3.5v3.59
+               c-0.22,0.09-0.45,0.23-0.65,0.43c-0.54,0.54-0.68,1.26-0.32,1.62c0.36,0.36,1.08,0.21,1.62-0.32c0.35-0.35,0.53-0.77,0.52-1.13
+               c0-0.01,0-0.01,0-0.02V8.03C11.3,8,11.92,7.82,11.83,7z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-media-flash.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-media-flash.svg
new file mode 100644 (file)
index 0000000..54087c6
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-media-flash">
+       <path fill="#FF3322" d="M14,16H2V0h8l4,4V16z"/>
+       <polygon opacity="0.1" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path opacity="0.7" fill="#FFFFFF" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <path fill="#FFFFFF" d="M10.35,7.7c0.19-0.07,0.4-0.11,0.65-0.11V6C9.93,6,9.07,6.43,8.42,7.3
+               C8.19,7.6,7.96,7.99,7.77,8.46L7.29,9.72c-0.17,0.51-0.32,0.88-0.43,1.13c-0.15,0.36-0.3,0.64-0.45,0.85
+               c-0.18,0.24-0.37,0.41-0.59,0.52C5.59,12.33,5.32,12.4,5,12.4V14c1.07,0,1.93-0.44,2.58-1.3c0.18-0.26,0.36-0.56,0.53-0.91l0.41-1
+               h1.72v-1.6H9.11C9.22,8.93,9.33,8.7,9.45,8.5c0.12-0.2,0.26-0.38,0.4-0.49C10,7.87,10.16,7.77,10.35,7.7"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-media-image.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-media-image.svg
new file mode 100644 (file)
index 0000000..053bf6c
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-media-image">
+       <path fill="#FFFFFF" d="M14,16H2V0h8l4,4V16z"/>
+       <polygon opacity="0.5" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path fill="#E6E6E6" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <path fill="#5599FF" d="M10.5,15H6.75H3l1.87-3l1.87-3l1.87,3L10.5,15z"/>
+       <path fill="#5599FF" d="M13,15H9.67H6.33L8,13l1.67-2l1.67,2L13,15z"/>
+       <path fill="#E8A33D" d="M9.5,6C10.33,6,11,6.67,11,7.5S10.33,9,9.5,9S8,8.33,8,7.5S8.67,6,9.5,6z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-media-video.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-media-video.svg
new file mode 100644 (file)
index 0000000..b0779bf
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-media-video">
+       <path fill="#CD201F" d="M14,16H2V0h8l4,4V16z"/>
+       <path opacity="0.7" fill="#FFFFFF" d="M14,4h-4V0L14,4z"/>
+       <rect x="3" y="1" fill="#FFFFFF" width="1" height="1"/>
+       <rect x="3" y="3" fill="#FFFFFF" width="1" height="1"/>
+       <rect x="3" y="5" fill="#FFFFFF" width="1" height="1"/>
+       <rect x="3" y="7" fill="#FFFFFF" width="1" height="1"/>
+       <rect x="3" y="9" fill="#FFFFFF" width="1" height="1"/>
+       <rect x="3" y="11" fill="#FFFFFF" width="1" height="1"/>
+       <rect x="3" y="13" fill="#FFFFFF" width="1" height="1"/>
+       <rect x="3" y="15" fill="#FFFFFF" width="1" height="1"/>
+       <rect x="12" y="14" fill="#FFFFFF" width="1" height="1"/>
+       <rect x="12" y="12" fill="#FFFFFF" width="1" height="1"/>
+       <rect x="12" y="10" fill="#FFFFFF" width="1" height="1"/>
+       <rect x="12" y="8" fill="#FFFFFF" width="1" height="1"/>
+       <rect x="12" y="6" fill="#FFFFFF" width="1" height="1"/>
+       <rect x="12" y="4" fill="#FFFFFF" width="1" height="1"/>
+       <polygon fill="#FFFFFF" points="6,12 6,7 11,9.5         "/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <polygon opacity="0.1" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-other-other.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-other-other.svg
new file mode 100644 (file)
index 0000000..33b96a0
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-other-other">
+       <path fill="#CCCCCC" d="M14,16H2V0h8l4,4V16z"/>
+       <polygon opacity="0.1" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path opacity="0.7" fill="#FFFFFF" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-pdf.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-pdf.svg
new file mode 100644 (file)
index 0000000..2c82fe3
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-pdf">
+       <path fill="#FF0000" d="M14,16H2V0h8l4,4V16z"/>
+       <path opacity="0.7" fill="#FFFFFF" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <polygon opacity="0.1" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path fill="#FFFFFF" d="M6.91,10.55c-0.17,0.3-0.33,0.59-0.48,0.85c0.84-0.34,1.74-0.55,2.6-0.71c-0.12-0.08-0.23-0.16-0.33-0.24
+               C8.22,10.06,7.86,9.58,7.6,9.07C7.43,9.5,7.24,9.96,6.91,10.55 M6.59,10.39c0.24-0.46,0.52-0.98,0.74-1.5l0.09-0.21
+               C7.13,7.63,6.96,6.78,7.11,6.23C7.16,6.09,7.33,6,7.51,6l0.11,0h0.02C7.9,6,8.02,6.31,8.03,6.43c0.02,0.2-0.07,0.54-0.07,0.54
+               c0-0.14,0.01-0.36-0.08-0.55c-0.1-0.22-0.2-0.35-0.29-0.37c-0.05,0.03-0.09,0.09-0.1,0.2C7.44,6.41,7.43,6.62,7.43,6.72
+               c0,0.37,0.08,0.86,0.23,1.37c0.03-0.08,0.05-0.15,0.07-0.22c0.03-0.11,0.23-0.85,0.23-0.85S7.91,8,7.84,8.3
+               C7.83,8.36,7.81,8.42,7.79,8.49c0.25,0.66,0.65,1.26,1.12,1.68c0.19,0.17,0.42,0.3,0.65,0.43c0.49-0.07,0.94-0.1,1.31-0.1
+               c0.5,0.01,0.86,0.08,1.01,0.22c0.07,0.07,0.1,0.15,0.11,0.24c0,0.04-0.02,0.12-0.02,0.14c0.01-0.03,0.01-0.15-0.39-0.27
+               c-0.32-0.1-0.9-0.09-1.61-0.02c0.82,0.39,1.62,0.58,1.87,0.46c0.06-0.03,0.14-0.13,0.14-0.13s-0.04,0.19-0.08,0.24
+               c-0.04,0.05-0.12,0.11-0.2,0.13c-0.4,0.1-1.44-0.13-2.34-0.63c-1.01,0.14-2.12,0.41-3.01,0.69c-0.88,1.48-1.53,2.15-2.07,1.9
+               l-0.2-0.1C4,13.33,3.99,13.23,4.01,13.14c0.06-0.29,0.45-0.74,1.21-1.18c0.08-0.05,0.45-0.24,0.45-0.24s-0.27,0.25-0.34,0.3
+               c-0.61,0.48-1.07,1.09-1.06,1.33l0,0.02C4.8,13.31,5.59,12.28,6.59,10.39"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-powerpoint.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-powerpoint.svg
new file mode 100644 (file)
index 0000000..7668bce
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-powerpoint">
+       <path fill="#D14524" d="M14,16H2V0h8l4,4V16z"/>
+       <polygon opacity="0.1" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path opacity="0.7" fill="#FFFFFF" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <path fill="#FFFFFF" d="M6.84,7.78v2.63h1.05c0.39,0,0.69-0.11,0.9-0.34
+               c0.21-0.23,0.32-0.55,0.32-0.98c0-0.42-0.11-0.74-0.32-0.97c-0.21-0.23-0.51-0.34-0.9-0.34C7.89,7.78,6.84,7.78,6.84,7.78z M6,7
+               h1.89c0.69,0,1.22,0.18,1.57,0.53C9.82,7.89,10,8.41,10,9.09c0,0.69-0.18,1.21-0.54,1.57c-0.35,0.35-0.88,0.53-1.57,0.53H6.84V14H6
+               C6,14,6,7,6,7z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-text-css.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-text-css.svg
new file mode 100644 (file)
index 0000000..df870c6
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-text-css">
+       <path fill="#33ACDF" d="M14,16H2V0h8l4,4V16z"/>
+       <polygon opacity="0.1" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path opacity="0.7" fill="#FFFFFF" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <path fill="#FFFFFF" d="M7.03,13.39V14H6.79c-0.64,0-1.06-0.1-1.28-0.31
+               c-0.21-0.21-0.32-0.63-0.32-1.25v-1.01c0-0.43-0.07-0.72-0.21-0.88C4.85,10.38,4.6,10.3,4.23,10.3H4V9.69h0.23
+               c0.36,0,0.61-0.08,0.75-0.24c0.14-0.16,0.21-0.46,0.21-0.88V7.56c0-0.62,0.11-1.04,0.32-1.24C5.73,6.1,6.15,6,6.79,6h0.24v0.61
+               H6.77c-0.36,0-0.59,0.06-0.7,0.19C5.95,6.92,5.9,7.18,5.9,7.57v1.05c0,0.44-0.06,0.76-0.18,0.97C5.61,9.79,5.41,9.93,5.13,10
+               c0.28,0.08,0.48,0.21,0.6,0.41c0.11,0.2,0.17,0.52,0.17,0.96v1.05c0,0.4,0.05,0.66,0.16,0.78c0.11,0.12,0.34,0.19,0.7,0.19
+               C6.77,13.39,7.03,13.39,7.03,13.39z"/>
+       <path fill="#FFFFFF" d="M8.97,13.39h0.27c0.36,0,0.59-0.06,0.7-0.18
+               c0.11-0.12,0.16-0.38,0.16-0.79v-1.05c0-0.44,0.06-0.76,0.17-0.96s0.31-0.34,0.6-0.41c-0.28-0.07-0.48-0.21-0.6-0.41
+               c-0.11-0.2-0.17-0.52-0.17-0.97V7.57c0-0.4-0.05-0.66-0.16-0.78C9.83,6.67,9.6,6.61,9.24,6.61H8.97V6h0.24
+               c0.64,0,1.06,0.1,1.27,0.31c0.21,0.21,0.32,0.62,0.32,1.24v1.02c0,0.42,0.07,0.71,0.21,0.88c0.14,0.16,0.39,0.24,0.75,0.24H12v0.61
+               h-0.24c-0.36,0-0.61,0.08-0.75,0.25c-0.14,0.16-0.21,0.46-0.21,0.88v1.01c0,0.62-0.11,1.04-0.32,1.25C10.27,13.9,9.85,14,9.21,14
+               H8.97V13.39z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-text-csv.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-text-csv.svg
new file mode 100644 (file)
index 0000000..94aa593
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-text-csv">
+       <path fill="#45B058" d="M14,16H2V0h8l4,4V16z"/>
+       <polygon opacity="0.1" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path opacity="0.7" fill="#FFFFFF" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <path fill="#FFFFFF" d="M4.74,12c-0.25,0-0.49-0.04-0.7-0.13c-0.21-0.08-0.4-0.21-0.55-0.38c-0.15-0.17-0.27-0.38-0.36-0.63
+               C3.04,10.62,3,10.33,3,10C3,9.7,3.04,9.42,3.12,9.17c0.08-0.25,0.2-0.46,0.35-0.64c0.15-0.17,0.33-0.3,0.55-0.4
+               C4.24,8.05,4.48,8,4.74,8c0.14,0,0.27,0.01,0.39,0.03C5.24,8.05,5.35,8.07,5.45,8.1c0.1,0.03,0.19,0.07,0.28,0.11
+               c0.08,0.04,0.16,0.08,0.22,0.11v0.93h-0.1C5.8,9.21,5.75,9.16,5.68,9.11C5.62,9.05,5.54,8.99,5.46,8.94
+               C5.38,8.88,5.29,8.84,5.19,8.8s-0.2-0.06-0.31-0.06c-0.12,0-0.24,0.02-0.35,0.07C4.41,8.85,4.31,8.92,4.21,9.03
+               c-0.09,0.1-0.16,0.23-0.22,0.39c-0.05,0.16-0.08,0.36-0.08,0.59c0,0.24,0.03,0.44,0.09,0.61c0.06,0.16,0.14,0.29,0.23,0.38
+               c0.09,0.09,0.2,0.16,0.31,0.2c0.11,0.04,0.23,0.06,0.34,0.06c0.11,0,0.21-0.02,0.32-0.05c0.11-0.04,0.2-0.09,0.29-0.15
+               c0.07-0.05,0.14-0.1,0.21-0.16c0.06-0.06,0.12-0.11,0.16-0.15h0.09v0.92c-0.09,0.04-0.17,0.08-0.24,0.12
+               c-0.08,0.04-0.16,0.07-0.24,0.1c-0.11,0.04-0.22,0.06-0.31,0.08C5.04,11.99,4.91,12,4.74,12z"/>
+       <path fill="#FFFFFF" d="M9.32,10.71c0,0.38-0.14,0.69-0.43,0.93c-0.28,0.24-0.67,0.35-1.16,0.35c-0.28,0-0.53-0.03-0.74-0.08
+               c-0.21-0.06-0.4-0.13-0.59-0.21v-0.92h0.1c0.18,0.16,0.38,0.29,0.61,0.38c0.23,0.09,0.44,0.13,0.65,0.13
+               c0.05,0,0.12-0.01,0.21-0.02s0.16-0.03,0.21-0.05c0.07-0.03,0.12-0.07,0.16-0.12c0.04-0.05,0.07-0.12,0.07-0.21
+               c0-0.08-0.03-0.16-0.1-0.22c-0.06-0.06-0.15-0.11-0.28-0.14c-0.13-0.03-0.26-0.07-0.41-0.1c-0.14-0.03-0.28-0.07-0.4-0.12
+               c-0.29-0.11-0.49-0.25-0.62-0.43C6.49,9.71,6.43,9.49,6.43,9.22c0-0.36,0.14-0.65,0.43-0.88c0.29-0.23,0.65-0.34,1.1-0.34
+               c0.22,0,0.45,0.02,0.66,0.07c0.22,0.05,0.41,0.11,0.57,0.18v0.89H9.09C8.95,9.03,8.78,8.92,8.58,8.84c-0.2-0.08-0.4-0.13-0.61-0.13
+               c-0.07,0-0.15,0.01-0.22,0.02C7.68,8.74,7.62,8.76,7.55,8.79C7.49,8.82,7.44,8.86,7.4,8.91C7.35,8.96,7.33,9.02,7.33,9.09
+               c0,0.1,0.03,0.18,0.1,0.24c0.07,0.05,0.2,0.1,0.39,0.15C7.95,9.5,8.07,9.53,8.18,9.56C8.3,9.59,8.42,9.62,8.55,9.67
+               c0.26,0.1,0.45,0.23,0.58,0.4C9.26,10.23,9.32,10.45,9.32,10.71z"/>
+       <path fill="#FFFFFF" d="M13,8.07l-1.24,3.85h-0.98L9.53,8.07h0.92l0.82,2.7l0.82-2.7C12.1,8.07,13,8.07,13,8.07z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-text-html.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-text-html.svg
new file mode 100644 (file)
index 0000000..170f378
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-text-html">
+       <path fill="#F16529" d="M14,16H2V0h8l4,4V16z"/>
+       <polygon opacity="0.1" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path opacity="0.7" fill="#FFFFFF" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <path fill="#FFFFFF" d="M7.42,7.33l-2.75,2.68l2.75,2.66V14L4,10.61V9.39L7.42,6V7.33z"/>
+       <path fill="#FFFFFF" d="M8.58,7.33V6L12,9.39v1.21L8.58,14v-1.33l2.75-2.66L8.58,7.33z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-text-js.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-text-js.svg
new file mode 100644 (file)
index 0000000..9768799
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-text-js">
+       <path fill="#F0DB4F" d="M14,16H2V0h8l4,4V16z"/>
+       <polygon opacity="0.1" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path opacity="0.7" fill="#FFFFFF" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <path fill="#333333" d="M6.99,12.2c0,0.25-0.04,0.49-0.11,0.72c-0.08,0.22-0.19,0.41-0.34,0.56
+               c-0.16,0.16-0.35,0.29-0.57,0.38c-0.22,0.09-0.5,0.13-0.82,0.13c-0.22,0-0.43-0.01-0.63-0.03c-0.2-0.02-0.37-0.05-0.52-0.08V12.7
+               h0.12c0.1,0.05,0.21,0.09,0.32,0.13c0.11,0.04,0.26,0.06,0.43,0.06c0.23,0,0.4-0.04,0.52-0.11c0.12-0.07,0.21-0.17,0.26-0.3
+               c0.05-0.13,0.08-0.27,0.08-0.42c0.01-0.15,0.01-0.35,0.01-0.58V9.17h-1.1V8.1h2.34V12.2z"/>
+       <path fill="#333333" d="M12,12.08c0,0.57-0.2,1.03-0.6,1.39C11,13.82,10.45,14,9.76,14
+               c-0.4,0-0.75-0.04-1.04-0.12c-0.3-0.09-0.57-0.19-0.83-0.32v-1.39h0.14c0.26,0.25,0.54,0.44,0.86,0.57c0.32,0.13,0.62,0.2,0.92,0.2
+               c0.08,0,0.17-0.01,0.3-0.02c0.12-0.02,0.22-0.04,0.3-0.08c0.09-0.05,0.17-0.1,0.23-0.17c0.06-0.07,0.09-0.17,0.09-0.31
+               c0-0.13-0.05-0.24-0.14-0.33c-0.09-0.09-0.22-0.16-0.39-0.21c-0.18-0.05-0.37-0.1-0.58-0.14c-0.2-0.05-0.39-0.1-0.57-0.17
+               c-0.4-0.16-0.7-0.37-0.88-0.64C8,10.57,7.92,10.23,7.92,9.83c0-0.54,0.2-0.98,0.6-1.32C8.92,8.17,9.44,8,10.07,8
+               C10.38,8,10.7,8.04,11,8.11c0.31,0.07,0.58,0.16,0.8,0.28v1.33h-0.13c-0.19-0.19-0.43-0.34-0.71-0.47
+               c-0.28-0.13-0.57-0.19-0.86-0.19c-0.1,0-0.21,0.01-0.31,0.03c-0.1,0.02-0.2,0.05-0.29,0.09c-0.08,0.04-0.16,0.1-0.22,0.18
+               C9.22,9.44,9.19,9.53,9.19,9.63c0,0.15,0.05,0.27,0.15,0.35c0.1,0.08,0.28,0.15,0.55,0.22c0.18,0.04,0.35,0.09,0.51,0.13
+               c0.16,0.04,0.34,0.1,0.53,0.17c0.37,0.15,0.64,0.34,0.81,0.59C11.91,11.35,12,11.68,12,12.08z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-text-php.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-text-php.svg
new file mode 100644 (file)
index 0000000..2e24bf6
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-text-php">
+       <path fill="#6B7EB9" d="M14,16H2V0h8l4,4V16z"/>
+       <polygon opacity="0.1" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path opacity="0.7" fill="#FFFFFF" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <path fill="#FFFFFF" d="M3,9.1C3.27,9.04,3.64,9,4.01,9c0.58,0,1.03,0.08,1.36,0.38c0.3,0.26,0.43,0.67,0.43,1.09
+               c0,0.54-0.16,0.92-0.42,1.2C5.07,12,4.56,12.15,4.16,12.15c-0.07,0-0.13,0-0.19,0V14H3V9.1z M3.97,11.36
+               c0.04,0.01,0.1,0.01,0.16,0.01c0.49,0,0.71-0.35,0.71-0.81c0-0.44-0.18-0.78-0.63-0.78c-0.09,0-0.18,0.01-0.24,0.04V11.36z"/>
+       <path fill="#FFFFFF" d="M7.36,9.02v1.99h1.01V9.02h0.97V14H8.37v-2.08H7.36V14H6.39V9.02H7.36z"/>
+       <path fill="#FFFFFF" d="M10.2,9.1C10.48,9.04,10.85,9,11.22,9c0.58,0,1.03,0.08,1.35,0.38c0.3,0.26,0.43,0.67,0.43,1.09
+               c0,0.54-0.16,0.92-0.42,1.2c-0.31,0.33-0.81,0.47-1.21,0.47c-0.07,0-0.13,0-0.19,0V14H10.2V9.1z M11.17,11.36
+               c0.04,0.01,0.1,0.01,0.16,0.01c0.49,0,0.71-0.35,0.71-0.81c0-0.44-0.18-0.78-0.63-0.78c-0.09,0-0.18,0.01-0.24,0.04V11.36z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-text-text.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-text-text.svg
new file mode 100644 (file)
index 0000000..c779bac
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-media-text">
+       <path fill="#FFFFFF" d="M14,16H2V0h8l4,4V16z"/>
+       <polygon opacity="0.5" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path fill="#E6E6E6" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <path fill="#999999" d="M11.75,14h-7.5C4.11,14,4,13.89,4,13.75v-0.5C4,13.11,4.11,13,4.25,13h7.5c0.14,0,0.25,0.11,0.25,0.25v0.5
+               C12,13.89,11.89,14,11.75,14z"/>
+       <path fill="#999999" d="M11.75,12h-7.5C4.11,12,4,11.89,4,11.75v-0.5C4,11.11,4.11,11,4.25,11h7.5c0.14,0,0.25,0.11,0.25,0.25v0.5
+               C12,11.89,11.89,12,11.75,12z"/>
+       <path fill="#999999" d="M11.75,10h-7.5C4.11,10,4,9.89,4,9.75v-0.5C4,9.11,4.11,9,4.25,9h7.5C11.89,9,12,9.11,12,9.25v0.5
+               C12,9.89,11.89,10,11.75,10z"/>
+       <path fill="#999999" d="M11.75,8h-7.5C4.11,8,4,7.89,4,7.75v-0.5C4,7.11,4.11,7,4.25,7h7.5C11.89,7,12,7.11,12,7.25v0.5
+               C12,7.89,11.89,8,11.75,8z"/>
+       <path fill="#999999" d="M7.75,5h-3.5C4.11,5,4,4.89,4,4.75v-0.5C4,4.11,4.11,4,4.25,4h3.5C7.89,4,8,4.11,8,4.25v0.5
+               C8,4.89,7.89,5,7.75,5z"/>
+       <path fill="#999999" d="M7.75,3h-3.5C4.11,3,4,2.89,4,2.75v-0.5C4,2.11,4.11,2,4.25,2h3.5C7.89,2,8,2.11,8,2.25v0.5
+               C8,2.89,7.89,3,7.75,3z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-text-ts.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-text-ts.svg
new file mode 100644 (file)
index 0000000..d0ff624
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="mimetype-text-ts">
+       <path fill="#FF8700" d="M14,16H2V0h8l4,4V16z"/>
+       <polygon opacity="0.1" points="13.75,15.75 2.25,15.75 2.25,0.25 10,0.25 10,0 2,0 2,16 14,16 14,4 13.75,4        "/>
+       <path opacity="0.7" fill="#FFFFFF" d="M14,4h-4V0L14,4z"/>
+       <path opacity="0.3" d="M14,8l-4-4h4V8z"/>
+       <path fill="#FFFFFF" d="M5.95,9.93H5V9.04h2.95v0.88H6.99v4.03H5.95V9.93z"/>
+       <path fill="#FFFFFF" d="M8.35,12.98c0.22,0.11,0.58,0.19,0.88,0.19c0.49,0,0.73-0.23,0.73-0.55c0-0.36-0.24-0.53-0.69-0.8
+               c-0.73-0.41-1.01-0.93-1.01-1.37C8.26,9.66,8.83,9,9.96,9c0.35,0,0.68,0.09,0.84,0.17L10.63,10c-0.15-0.09-0.38-0.17-0.68-0.17
+               c-0.45,0-0.66,0.25-0.66,0.51c0,0.29,0.16,0.44,0.74,0.77C10.74,11.5,11,12,11,12.51c0,0.9-0.73,1.49-1.78,1.49
+               c-0.43,0-0.85-0.1-1.03-0.2L8.35,12.98z"/>
+</g>
+</svg>
diff --git a/Build/Resources/Private/Icons/Mimetype/mimetypes-word.svg b/Build/Resources/Private/Icons/Mimetype/mimetypes-word.svg
new file mode 100644 (file)
index 0000000..6ee66ae
--- /dev/null
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="document-ms-word.svg"
+   inkscape:version="0.91 r13725"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg6217"
+   version="1.1">
+  <sodipodi:namedview
+     inkscape:current-layer="g4237"
+     inkscape:window-maximized="1"
+     inkscape:window-y="23"
+     inkscape:window-x="2048"
+     inkscape:cy="5.3242324"
+     inkscape:cx="7.679982"
+     inkscape:zoom="16"
+     showgrid="false"
+     id="namedview13"
+     inkscape:window-height="1051"
+     inkscape:window-width="2048"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0"
+     guidetolerance="10"
+     gridtolerance="10"
+     objecttolerance="10"
+     borderopacity="1"
+     bordercolor="#666666"
+     pagecolor="#ffffff" />
+  <defs
+     id="defs6219">
+    <clipPath
+       id="clipPath3391"
+       clipPathUnits="userSpaceOnUse">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3393"
+         d="M 0,600 800,600 800,0 0,0 0,600 Z" />
+    </clipPath>
+    <clipPath
+       id="clipPath3407"
+       clipPathUnits="userSpaceOnUse">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3409"
+         d="m 316,477.408 60.363,0 0,-60.408 -60.363,0 0,60.408 z" />
+    </clipPath>
+    <clipPath
+       id="clipPath3427"
+       clipPathUnits="userSpaceOnUse">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3429"
+         d="m 622,477.971 60.121,0 0,-59.971 -60.121,0 0,59.971 z" />
+    </clipPath>
+  </defs>
+  <metadata
+     id="metadata6222">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     style="stroke:#000000;stroke-width:2;stroke-miterlimit:2.5;stroke-dasharray:none;stroke-opacity:1"
+     id="g4198"
+     transform="matrix(0,1,-1,0,0.95913124,48.25)" />
+  <g
+     style="stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.68488746"
+     id="g4198-3"
+     transform="matrix(0,1,-1,0,0.959131,48.25)" />
+  <g
+     style="stroke:#000000;stroke-width:2;stroke-miterlimit:2.5;stroke-dasharray:none;stroke-opacity:1"
+     id="g4198-2"
+     transform="matrix(0,1,-1,0,0.95913124,48.25)" />
+  <g
+     id="g4198-3-6-3"
+     transform="matrix(0,-1,1,0,13.959142,-32.216101)" />
+  <g
+     id="g4141"
+     transform="translate(-1.000001,1)">
+    <g
+       id="g4237">
+      <path
+         style="fill:#2a569f;fill-opacity:0.94117647;stroke:#b9b9b9;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 2 0 L 2 16 L 14 16 L 14 4 L 10 0 L 2 0 z M 10 0 L 14 0.01953125 L 14 0 L 10 0 z "
+         transform="translate(1.000001,-1)"
+         id="rect4171" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0"
+         id="path4178"
+         d="m 11.000001,2.9805283 0,-1.9902643 0,-1.9902642 4,4.0000002 z"
+         inkscape:transform-center-x="-0.62266511"
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:0.65" />
+      <path
+         style="opacity:0.15;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:transform-center-x="0.62266499"
+         d="m 15.000001,3.0243396 0,2.4878302 0,2.4878302 -4,-5 z"
+         id="path4446"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccc" />
+      <g
+         style="font-style:normal;font-weight:normal;font-size:13.75px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="text4508"
+         transform="matrix(0.63045694,0,0,0.63045694,0.1807605,5.8530448)">
+        <path
+           d="m 7.6440439,-0.27380371 1.3696289,0 2.1081542,8.47290041 2.101441,-8.47290041 1.524047,0 2.108155,8.47290041 2.10144,-8.47290041 1.376343,0 L 17.815553,9.75 16.11023,9.75 13.995362,1.0488281 11.860353,9.75 10.15503,9.75 7.6440439,-0.27380371 Z"
+           id="path4513"
+           inkscape:connector-curvature="0"
+           style="fill:#ffffff;fill-opacity:1" />
+      </g>
+    </g>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Layer 1"
+     style="display:inline" />
+</svg>
diff --git a/Build/Resources/Private/Icons/Overlay/overlay-missing.svg b/Build/Resources/Private/Icons/Overlay/overlay-missing.svg
new file mode 100644 (file)
index 0000000..cfe3804
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<g id="overlay-missing">
+       <circle fill="#C83C3C" cx="8" cy="8" r="7"/>
+       <path fill="#FFFFFF" d="M9,11.5v1C9,12.78,8.78,13,8.5,13h-1C7.22,13,7,12.78,7,12.5v-1C7,11.22,7.22,11,7.5,11h1
+               C8.78,11,9,11.22,9,11.5z"/>
+       <path fill="#FFFFFF" d="M9,3.5v6C9,9.78,8.78,10,8.5,10h-1C7.22,10,7,9.78,7,9.5v-6C7,3.22,7.22,3,7.5,3h1C8.78,3,9,3.22,9,3.5z"/>
+</g>
+</svg>
index 6fdc94f..7d5fcae 100644 (file)
@@ -101,12 +101,6 @@ table {
                .t3-icon {
                        margin: 0;
                }
                .t3-icon {
                        margin: 0;
                }
-               img {
-                       margin: 0;
-                       display: block;
-                       height: 16px;
-                       width: 16px;
-               }
        }
        .col-icon,
        .col-checkbox {
        }
        .col-icon,
        .col-checkbox {
index 03f3bbb..ee400e7 100644 (file)
@@ -911,10 +911,9 @@ class ClickMenu {
                        $userMayEditStorage = FALSE;
                        $identifier = $fileObject->getCombinedIdentifier();
                        if ($fileObject instanceof Folder) {
                        $userMayEditStorage = FALSE;
                        $identifier = $fileObject->getCombinedIdentifier();
                        if ($fileObject instanceof Folder) {
-                               $icon = IconUtility::getSpriteIconForResource($fileObject, array(
-                                       'class' => 'absmiddle',
-                                       'title' => htmlspecialchars($fileObject->getName())
-                               ));
+                               $icon = '<span title="' . htmlspecialchars($fileObject->getName()) . '" class="absmiddle">'
+                                       . $this->iconFactory->getIconForResource($fileObject, Icon::SIZE_SMALL)
+                                       . '</span>';
                                $folder = TRUE;
                                if ($fileObject->getIdentifier() === $fileObject->getStorage()->getRootLevelFolder()->getIdentifier()) {
                                        $isStorageRoot = TRUE;
                                $folder = TRUE;
                                if ($fileObject->getIdentifier() === $fileObject->getStorage()->getRootLevelFolder()->getIdentifier()) {
                                        $isStorageRoot = TRUE;
@@ -929,10 +928,10 @@ class ClickMenu {
                                        $isOnline = FALSE;
                                }
                        } else {
                                        $isOnline = FALSE;
                                }
                        } else {
-                               $icon = IconUtility::getSpriteIconForResource($fileObject, array(
-                                       'class' => 'absmiddle',
-                                       'title' => htmlspecialchars($fileObject->getName() . ' (' . GeneralUtility::formatSize($fileObject->getSize()) . ')')
-                               ));
+                               $title = $fileObject->getName() . ' (' . GeneralUtility::formatSize($fileObject->getSize()) . ')';
+                               $icon = '<span class="absmiddle" title="' . htmlspecialchars($title). '">'
+                                       . $this->iconFactory->getIconForResource($fileObject, Icon::SIZE_SMALL)
+                                       .'</span>';
                        }
                        // Hide
                        if (!in_array('hide', $this->disabledItems) && $isStorageRoot && $userMayEditStorage) {
                        }
                        // Hide
                        if (!in_array('hide', $this->disabledItems) && $isStorageRoot && $userMayEditStorage) {
index 51003ab..7e1b7fb 100644 (file)
@@ -383,7 +383,7 @@ class Clipboard {
                                                        $thumb = '';
                                                        $folder = $fileObject instanceof \TYPO3\CMS\Core\Resource\Folder;
                                                        $size = $folder ? '' : '(' . GeneralUtility::formatSize($fileObject->getSize()) . 'bytes)';
                                                        $thumb = '';
                                                        $folder = $fileObject instanceof \TYPO3\CMS\Core\Resource\Folder;
                                                        $size = $folder ? '' : '(' . GeneralUtility::formatSize($fileObject->getSize()) . 'bytes)';
-                                                       $icon = IconUtility::getSpriteIconForResource($fileObject, array('title' => $fileObject->getName() . ' ' . $size));
+                                                       $icon = '<span title="' . htmlspecialchars($fileObject->getName() . ' ' . $size) . '">' . $this->iconFactory->getIconForResource($fileObject, Icon::SIZE_SMALL) . '</span>';
                                                        if (!$folder && GeneralUtility::inList($GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'], $fileObject->getExtension())) {
                                                                $processedFile = $fileObject->process(\TYPO3\CMS\Core\Resource\ProcessedFile::CONTEXT_IMAGEPREVIEW, array());
                                                                if ($processedFile) {
                                                        if (!$folder && GeneralUtility::inList($GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'], $fileObject->getExtension())) {
                                                                $processedFile = $fileObject->process(\TYPO3\CMS\Core\Resource\ProcessedFile::CONTEXT_IMAGEPREVIEW, array());
                                                                if ($processedFile) {
index 87bb6f6..4f4aa49 100644 (file)
@@ -15,10 +15,11 @@ namespace TYPO3\CMS\Backend\Form\Container;
  */
 
 use TYPO3\CMS\Backend\Form\NodeFactory;
  */
 
 use TYPO3\CMS\Backend\Form\NodeFactory;
+use TYPO3\CMS\Core\Imaging\Icon;
+use TYPO3\CMS\Core\Imaging\IconFactory;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Backend\Form\AbstractNode;
 use TYPO3\CMS\Backend\Form\ElementConditionMatcher;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Backend\Form\AbstractNode;
 use TYPO3\CMS\Backend\Form\ElementConditionMatcher;
-use TYPO3\CMS\Backend\Utility\IconUtility;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\Template\DocumentTemplate;
 
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\Template\DocumentTemplate;
 
@@ -131,6 +132,7 @@ abstract class AbstractContainer extends AbstractNode {
                        // Showing thumbnails:
                        $thumbnail = '';
                        $imgs = array();
                        // Showing thumbnails:
                        $thumbnail = '';
                        $imgs = array();
+                       $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
                        foreach ($itemArray as $imgRead) {
                                $imgParts = explode('|', $imgRead);
                                $imgPath = rawurldecode($imgParts[0]);
                        foreach ($itemArray as $imgRead) {
                                $imgParts = explode('|', $imgRead);
                                $imgPath = rawurldecode($imgParts[0]);
@@ -139,12 +141,10 @@ abstract class AbstractContainer extends AbstractNode {
                                // Icon + click menu:
                                $absFilePath = GeneralUtility::getFileAbsFileName($config['config']['uploadfolder'] ? $config['config']['uploadfolder'] . '/' . $imgPath : $imgPath);
                                $fileInformation = pathinfo($imgPath);
                                // Icon + click menu:
                                $absFilePath = GeneralUtility::getFileAbsFileName($config['config']['uploadfolder'] ? $config['config']['uploadfolder'] . '/' . $imgPath : $imgPath);
                                $fileInformation = pathinfo($imgPath);
-                               $fileIcon = IconUtility::getSpriteIconForFile(
-                                       $imgPath,
-                                       array(
-                                               'title' => htmlspecialchars($fileInformation['basename'] . ($absFilePath && @is_file($absFilePath) ? ' (' . GeneralUtility::formatSize(filesize($absFilePath)) . 'bytes)' : ' - FILE NOT FOUND!'))
-                                       )
-                               );
+                               $title = $fileInformation['basename'] . ($absFilePath && @is_file($absFilePath))
+                                       ? ' (' . GeneralUtility::formatSize(filesize($absFilePath)) . ')'
+                                       : ' - FILE NOT FOUND!';
+                               $fileIcon = '<span title="' . htmlspecialchars($title) . '">' . $iconFactory->getIconForFileExtension($fileInformation['extension'], Icon::SIZE_SMALL)->render() . '</span>';
                                $imgs[] =
                                        '<span class="text-nowrap">' .
                                        BackendUtility::thumbCode(
                                $imgs[] =
                                        '<span class="text-nowrap">' .
                                        BackendUtility::thumbCode(
index 7fb415e..a7e04e7 100644 (file)
@@ -16,6 +16,7 @@ namespace TYPO3\CMS\Backend\Form\Element;
 
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\Utility\IconUtility;
 
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\Utility\IconUtility;
+use TYPO3\CMS\Core\Imaging\Icon;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
 use TYPO3\CMS\Core\Messaging\FlashMessageService;
 use TYPO3\CMS\Core\Resource\ProcessedFile;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
 use TYPO3\CMS\Core\Messaging\FlashMessageService;
 use TYPO3\CMS\Core\Resource\ProcessedFile;
@@ -144,10 +145,11 @@ class GroupElement extends AbstractFormElement {
                                                                        'image' => $fileObject->process(ProcessedFile::CONTEXT_IMAGEPREVIEW, array())->getPublicUrl(TRUE)
                                                                );
                                                        } else {
                                                                        'image' => $fileObject->process(ProcessedFile::CONTEXT_IMAGEPREVIEW, array())->getPublicUrl(TRUE)
                                                                );
                                                        } else {
+                                                               $name = htmlspecialchars($fileObject->getName());
                                                                // Icon
                                                                $thumbnails[] = array(
                                                                // Icon
                                                                $thumbnails[] = array(
-                                                                       'name' => htmlspecialchars($fileObject->getName()),
-                                                                       'image' => IconUtility::getSpriteIconForResource($fileObject, array('title' => $fileObject->getName()))
+                                                                       'name' => $name,
+                                                                       'image' => '<span title="' . $name . '">' . $this->iconFactory->getIconForResource($fileObject, Icon::SIZE_SMALL) . '</span>'
                                                                );
                                                        }
                                                } else {
                                                                );
                                                        }
                                                } else {
index abde346..ee263ac 100644 (file)
@@ -622,7 +622,7 @@ function jumpToUrl(URL) {
        public function getResourceHeader(\TYPO3\CMS\Core\Resource\ResourceInterface $resource, $tWrap = array('', ''), $enableClickMenu = TRUE) {
                try {
                        $path = $resource->getStorage()->getName() . $resource->getParentFolder()->getIdentifier();
        public function getResourceHeader(\TYPO3\CMS\Core\Resource\ResourceInterface $resource, $tWrap = array('', ''), $enableClickMenu = TRUE) {
                try {
                        $path = $resource->getStorage()->getName() . $resource->getParentFolder()->getIdentifier();
-                       $iconImgTag = IconUtility::getSpriteIconForResource($resource, array('title' => htmlspecialchars($path)));
+                       $iconImgTag = '<span title="' . htmlspecialchars($path) . '">' . $this->iconFactory->getIconForResource($resource, Icon::SIZE_SMALL) . '</span>';
                } catch (\TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException $e) {
                        $iconImgTag = '';
                }
                } catch (\TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException $e) {
                        $iconImgTag = '';
                }
index f6ba343..9905859 100644 (file)
@@ -15,6 +15,8 @@ namespace TYPO3\CMS\Backend\Tree\View;
  */
 
 use TYPO3\CMS\Backend\Utility\IconUtility;
  */
 
 use TYPO3\CMS\Backend\Utility\IconUtility;
+use TYPO3\CMS\Core\Imaging\Icon;
+use TYPO3\CMS\Core\Imaging\IconFactory;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
 use TYPO3\CMS\Core\Resource\Folder;
 use TYPO3\CMS\Core\Resource\FolderInterface;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
 use TYPO3\CMS\Core\Resource\Folder;
 use TYPO3\CMS\Core\Resource\FolderInterface;
@@ -54,6 +56,11 @@ class FolderTreeView extends AbstractTreeView {
        protected $scope;
 
        /**
        protected $scope;
 
        /**
+        * @var IconFactory
+        */
+       protected $iconFactory;
+
+       /**
         * If file-drag mode is set, temp and recycler folders are filtered out.
         * @var bool
         */
         * If file-drag mode is set, temp and recycler folders are filtered out.
         * @var bool
         */
@@ -84,6 +91,7 @@ class FolderTreeView extends AbstractTreeView {
        public function __construct() {
                parent::init();
                $this->storages = $this->BE_USER->getFileStorages();
        public function __construct() {
                parent::init();
                $this->storages = $this->BE_USER->getFileStorages();
+               $this->iconFactory = GeneralUtility::makeInstance(IconFactory::class);
        }
 
        /**
        }
 
        /**
@@ -302,7 +310,8 @@ class FolderTreeView extends AbstractTreeView {
                                $rootLevelFolderName .= ' (' . $this->getLanguageService()->sL('LLL:EXT:lang/locallang_mod_file.xlf:sys_file_storage.isOffline') . ')';
                        }
                        // Preparing rootRec for the mount
                                $rootLevelFolderName .= ' (' . $this->getLanguageService()->sL('LLL:EXT:lang/locallang_mod_file.xlf:sys_file_storage.isOffline') . ')';
                        }
                        // Preparing rootRec for the mount
-                       $firstHtml .= $this->wrapIcon(IconUtility::getSpriteIconForResource($rootLevelFolder, array('mount-root' => TRUE)), $rootLevelFolder);
+                       $icon = $this->iconFactory->getIconForResource($rootLevelFolder, Icon::SIZE_SMALL, NULL, array('mount-root' => TRUE));
+                       $firstHtml .= $this->wrapIcon($icon, $rootLevelFolder);
                        $row = array(
                                'uid' => $folderHashSpecUID,
                                'title' => $rootLevelFolderName,
                        $row = array(
                                'uid' => $folderHashSpecUID,
                                'title' => $rootLevelFolderName,
@@ -388,7 +397,9 @@ class FolderTreeView extends AbstractTreeView {
                                if ($role !== FolderInterface::ROLE_DEFAULT) {
                                        $row['_title'] = '<strong>' . $subFolderName . '</strong>';
                                }
                                if ($role !== FolderInterface::ROLE_DEFAULT) {
                                        $row['_title'] = '<strong>' . $subFolderName . '</strong>';
                                }
-                               $icon = IconUtility::getSpriteIconForResource($subFolder, array('title' => $subFolderName, 'folder-open' => (bool)$isOpen));
+                               $icon = '<span title="' . htmlspecialchars($subFolderName). '">'
+                                       . $this->iconFactory->getIconForResource($subFolder, Icon::SIZE_SMALL, NULL, array('folder-open' => (bool)$isOpen))
+                                       . '</span>';
                                $HTML .= $this->wrapIcon($icon, $subFolder);
                        }
                        // Finally, add the row/HTML content to the ->tree array in the reserved key.
                                $HTML .= $this->wrapIcon($icon, $subFolder);
                        }
                        // Finally, add the row/HTML content to the ->tree array in the reserved key.
index 459ad57..5141275 100755 (executable)
@@ -1678,6 +1678,7 @@ class BackendUtility {
                $thumbData = '';
                $fileReferences = static::resolveFileReferences($table, $field, $row);
                // FAL references
                $thumbData = '';
                $fileReferences = static::resolveFileReferences($table, $field, $row);
                // FAL references
+               $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
                if ($fileReferences !== NULL) {
                        foreach ($fileReferences as $fileReferenceObject) {
                                $fileObject = $fileReferenceObject->getOriginalFile();
                if ($fileReferences !== NULL) {
                        foreach ($fileReferences as $fileReferenceObject) {
                                $fileObject = $fileReferenceObject->getOriginalFile();
@@ -1702,7 +1703,7 @@ class BackendUtility {
                                                        'alt="' . htmlspecialchars($fileReferenceObject->getName()) . '" />';
                                } else {
                                        // Icon
                                                        'alt="' . htmlspecialchars($fileReferenceObject->getName()) . '" />';
                                } else {
                                        // Icon
-                                       $imgTag = IconUtility::getSpriteIconForResource($fileObject, array('title' => $fileObject->getName()));
+                                       $imgTag = '<span title="' . htmlspecialchars($fileObject->getName()) . '">' . $iconFactory->getIconForResource($fileObject, Icon::SIZE_SMALL) . '</span>';
                                }
                                if ($linkInfoPopup) {
                                        $onClick = 'top.launchView(\'_FILE\',\'' . (int)$fileObject->getUid() . '\',' . GeneralUtility::quoteJSvalue($backPath) . '); return false;';
                                }
                                if ($linkInfoPopup) {
                                        $onClick = 'top.launchView(\'_FILE\',\'' . (int)$fileObject->getUid() . '\',' . GeneralUtility::quoteJSvalue($backPath) . '); return false;';
@@ -1757,7 +1758,7 @@ class BackendUtility {
                                                }
                                        } else {
                                                // Gets the icon
                                                }
                                        } else {
                                                // Gets the icon
-                                               $fileIcon = IconUtility::getSpriteIconForResource($fileObject, array('title' => $fileObject->getName()));
+                                               $fileIcon = '<span title="' . htmlspecialchars($fileObject->getName()) . '">' . $iconFactory->getIconForResource($fileObject, Icon::SIZE_SMALL) . '</span>';
                                                if ($linkInfoPopup) {
                                                        $onClick = 'top.launchView(\'_FILE\', ' . GeneralUtility::quoteJSvalue($fileName) . ',\'\',' . GeneralUtility::quoteJSvalue($backPath) . '); return false;';
                                                        $thumbData .= '<a href="#" onclick="' . htmlspecialchars($onClick) . '">' . $fileIcon . '</a> ';
                                                if ($linkInfoPopup) {
                                                        $onClick = 'top.launchView(\'_FILE\', ' . GeneralUtility::quoteJSvalue($fileName) . ',\'\',' . GeneralUtility::quoteJSvalue($backPath) . '); return false;';
                                                        $thumbData .= '<a href="#" onclick="' . htmlspecialchars($onClick) . '">' . $fileIcon . '</a> ';
index 4accfd0..1969ae3 100644 (file)
@@ -106,7 +106,7 @@ class IconUtility {
                'potx' => 'mimetypes-powerpoint',
                'mount' => 'apps-filetree-mount',
                'folder' => 'apps-filetree-folder-default',
                'potx' => 'mimetypes-powerpoint',
                'mount' => 'apps-filetree-mount',
                'folder' => 'apps-filetree-folder-default',
-               'default' => 'mimetypes-other-other',
+               'default' => 'mimetypes-other-other'
        );
 
        /**
        );
 
        /**
@@ -338,6 +338,7 @@ class IconUtility {
                                break;
                }
                $cachedSkinImages[$imageId] = $output;
                                break;
                }
                $cachedSkinImages[$imageId] = $output;
+
                return $output;
        }
 
                return $output;
        }
 
@@ -451,6 +452,7 @@ class IconUtility {
                                        @self::imagemake($im, $path);
                                        GraphicalFunctions::gifCompress($path, 'IM');
                                        ImageDestroy($im);
                                        @self::imagemake($im, $path);
                                        GraphicalFunctions::gifCompress($path, 'IM');
                                        ImageDestroy($im);
+
                                        return $mainpath;
                                } else {
                                        return $iconfile;
                                        return $mainpath;
                                } else {
                                        return $iconfile;
@@ -468,7 +470,7 @@ class IconUtility {
         * onto a first created true color image.
         * However it has turned out that this method will not work if the indexed png-files contains transparency.
         * So I had to turn my attention to ImageMagick - my 'enemy of death'.
         * onto a first created true color image.
         * However it has turned out that this method will not work if the indexed png-files contains transparency.
         * So I had to turn my attention to ImageMagick - my 'enemy of death'.
-        * And so it happend - ImageMagick is now used to combine my two indexed-color images with transparency. And that works.
+        * And so it happened - ImageMagick is now used to combine my two indexed-color images with transparency. And that works.
         * Of course it works only if ImageMagick is able to create valid png-images - which you cannot be sure of with older versions (still 5+)
         * The only drawback is (apparently) that IM creates true-color png's. The transparency of these will not be shown by MSIE on windows at this time (although it's straight 0%/100% transparency!) and the file size may be larger.
         *
         * Of course it works only if ImageMagick is able to create valid png-images - which you cannot be sure of with older versions (still 5+)
         * The only drawback is (apparently) that IM creates true-color png's. The transparency of these will not be shown by MSIE on windows at this time (although it's straight 0%/100% transparency!) and the file size may be larger.
         *
@@ -527,7 +529,7 @@ class IconUtility {
        }
 
        /**********************************************
        }
 
        /**********************************************
-        *               SPRITE ICON API
+        * SPRITE ICON API
         *
         * The Sprite Icon API helps you to quickly get the HTML for any icon you want
         * this is typically wrapped in a <span> tag with corresponding CSS classes that
         *
         * The Sprite Icon API helps you to quickly get the HTML for any icon you want
         * this is typically wrapped in a <span> tag with corresponding CSS classes that
@@ -536,16 +538,16 @@ class IconUtility {
         * There are four ways to use this API:
         *
         * 1) for any given TCA record
         * There are four ways to use this API:
         *
         * 1) for any given TCA record
-        *      $spriteIconHtml = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForRecord('pages', $row);
+        *  $spriteIconHtml = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForRecord('pages', $row);
         *
         * 2) for any given File of Folder object
         *
         * 2) for any given File of Folder object
-        *      $spriteIconHtml = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForResource($fileOrFolderObject);
+        *  $spriteIconHtml = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForResource($fileOrFolderObject);
         *
         * 3) for any given file
         *
         * 3) for any given file
-        *      $spriteIconHtml = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForFile('myimage.png');
+        *  $spriteIconHtml = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForFile('myimage.png');
         *
         * 4) for any other icon you know the name
         *
         * 4) for any other icon you know the name
-        *      $spriteIconHtml = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon('actions-document-open');
+        *  $spriteIconHtml = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon('actions-document-open');
         *
         **********************************************/
        /**
         *
         **********************************************/
        /**
@@ -563,7 +565,6 @@ class IconUtility {
         * @param string $iconName The name of the icon to fetch
         * @param array $options An associative array with additional options and attributes for the tag. by default, the key is the name of the attribute, and the value is the parameter string that is set. However, there are some additional special reserved keywords that can be used as keys: "html" (which is the HTML that will be inside the icon HTML tag), "tagName" (which is an alternative tagName than "span"), and "class" (additional class names that will be merged with the sprite icon CSS classes)
         * @param array $overlays An associative array with the icon-name as key, and the options for this overlay as an array again (see the parameter $options again)
         * @param string $iconName The name of the icon to fetch
         * @param array $options An associative array with additional options and attributes for the tag. by default, the key is the name of the attribute, and the value is the parameter string that is set. However, there are some additional special reserved keywords that can be used as keys: "html" (which is the HTML that will be inside the icon HTML tag), "tagName" (which is an alternative tagName than "span"), and "class" (additional class names that will be merged with the sprite icon CSS classes)
         * @param array $overlays An associative array with the icon-name as key, and the options for this overlay as an array again (see the parameter $options again)
-        *
         * @return string The full HTML tag (usually a <span>)
         * @access public
         */
         * @return string The full HTML tag (usually a <span>)
         * @access public
         */
@@ -604,6 +605,7 @@ class IconUtility {
                if ($iconIsCacheable) {
                        static::$spriteIconCache[$iconName] = $spriteHtml;
                }
                if ($iconIsCacheable) {
                        static::$spriteIconCache[$iconName] = $spriteHtml;
                }
+
                return $spriteHtml;
        }
 
                return $spriteHtml;
        }
 
@@ -672,6 +674,7 @@ class IconUtility {
                        $fileExtension = 'default';
                }
                $iconName = self::$fileSpriteIconNames[$fileExtension];
                        $fileExtension = 'default';
                }
                $iconName = self::$fileSpriteIconNames[$fileExtension];
+
                return $iconName;
        }
 
                return $iconName;
        }
 
@@ -815,7 +818,7 @@ class IconUtility {
         * see ext:core/Configuration/TCA/pages.php for an example with the TCA table "pages"
         *
         * @param string $table The TCA table
         * see ext:core/Configuration/TCA/pages.php for an example with the TCA table "pages"
         *
         * @param string $table The TCA table
-        * @param array $row The selected record
+        * @param array $row The selected record
         * @return string The CSS class for the sprite icon of that DB record
         * @access private
         */
         * @return string The CSS class for the sprite icon of that DB record
         * @access private
         */
@@ -836,7 +839,7 @@ class IconUtility {
         *
         * see ext:core/Configuration/TCA/pages.php for an example with the TCA table "pages"
         *
         *
         * see ext:core/Configuration/TCA/pages.php for an example with the TCA table "pages"
         *
-        * @param string $tableThe TCA table
+        * @param string $table The TCA table
         * @param array $row The selected record
         * @return string The CSS class for the sprite icon of that DB record
         * @access private
         * @param array $row The selected record
         * @return string The CSS class for the sprite icon of that DB record
         * @access private
@@ -906,6 +909,7 @@ class IconUtility {
                                }
                        }
                }
                                }
                        }
                }
+
                return 'status-status-icon-missing';
        }
 
                return 'status-status-icon-missing';
        }
 
@@ -924,7 +928,7 @@ class IconUtility {
         * $GLOBALS['TYPO3_CONF_VARS']['BE']['spriteIconRecordOverlayNames'] that shows
         * the list of CSS classes that will be used for the sprites, mapped to the statuses here
         *
         * $GLOBALS['TYPO3_CONF_VARS']['BE']['spriteIconRecordOverlayNames'] that shows
         * the list of CSS classes that will be used for the sprites, mapped to the statuses here
         *
-        * @param string $table The TCA table
+        * @param string $table The TCA table
         * @param array $row The selected record
         * @return string The CSS class for the sprite icon of that DB record
         * @access private
         * @param array $row The selected record
         * @return string The CSS class for the sprite icon of that DB record
         * @access private
@@ -1001,6 +1005,7 @@ class IconUtility {
                                }
                        }
                }
                                }
                        }
                }
+
                return $iconName;
        }
 
                return $iconName;
        }
 
@@ -1025,6 +1030,7 @@ class IconUtility {
                        $cssClasses .= ' ' . ($baseCssClass . '-' . substr($iconName, (strlen($parts[0]) + 1)));
                }
                static::emitBuildSpriteIconClassesSignal($iconName, $cssClasses);
                        $cssClasses .= ' ' . ($baseCssClass . '-' . substr($iconName, (strlen($parts[0]) + 1)));
                }
                static::emitBuildSpriteIconClassesSignal($iconName, $cssClasses);
+
                return $cssClasses;
        }
 
                return $cssClasses;
        }
 
diff --git a/typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-default.svg b/typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-default.svg
new file mode 100644 (file)
index 0000000..4253ae9
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#FFC857" d="M16 4v10H0V2h7l1.33 2H16z"/><path fill="#E8A33D" d="M16 5H8.33L7 7H0V4h16v1z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-locked.svg b/typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-locked.svg
new file mode 100644 (file)
index 0000000..9f4cd52
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#CCC" d="M16 4v10H0V2h7l1.33 2H16z"/><path opacity=".2" d="M16 5H8.33L7 7H0V4h16v1z"/><path fill="#999" d="M12.02 8.5c-1.37 0-2.5 1.13-2.5 2.5v.5h1V11c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v.5h1V11c0-1.37-1.12-2.5-2.5-2.5z"/><path fill="#FFC857" d="M9 11.5h6v4H9z"/><path fill="#CD9232" d="M13 13c0-.55-.45-1-1-1s-1 .45-1 1c0 .37.2.69.5.86V15h1v-1.14c.3-.17.5-.49.5-.86z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-opened.svg b/typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-opened.svg
new file mode 100644 (file)
index 0000000..aeb8e93
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#E8A33D" d="M0 2v12h12.69V3.81H5.08L3.95 2H0z"/><path fill="#FFC857" d="M8.26 6.08L6.55 7.4H2.53L0 14h12.96L16 6.08H8.26z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-recycler.svg b/typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-recycler.svg
new file mode 100644 (file)
index 0000000..26b833c
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#8C8C8C" d="M5.38 0h5.25v3H5.38V0z"/><path fill="#B9B9B9" d="M1.88 5h12.25l-.88 11H2.75L1.88 5z"/><path fill="#B9B9B9" d="M1 2h14v4H1V2z"/><path fill="#8C8C8C" d="M1 5h14v1H1V5z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-temp.svg b/typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-folder-temp.svg
new file mode 100644 (file)
index 0000000..e8b518c
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#CCC" d="M16 4v10H0V2h7l1.33 2H16z"/><path opacity=".2" d="M16 5H8.33L7 7H0V4h16v1z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-mount.svg b/typo3/sysext/backend/Resources/Public/Icons/App/apps-filetree-mount.svg
new file mode 100644 (file)
index 0000000..9e25a2a
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#B9B9B9" d="M0 4h16v5H0V4zM16 12v2H0v-2h16z"/><path fill="#59F" d="M12 11v4H4v-4h2V9h4v2h2z"/><path fill="#8C8C8C" d="M1 7h10v1H1V7zM1 5h10v1H1V5z"/><path fill="#EFEFEF" d="M2.75 2h10.5L15 4H1l1.75-2z"/><path fill="#B9B9B9" d="M13.25 2L15 4H1l1.75-2h10.5m0-1H2.75c-.29 0-.56.12-.75.34l-1.75 2c-.26.3-.32.71-.16 1.07.16.36.52.59.91.59h14c.39 0 .75-.23.91-.59.16-.36.1-.78-.16-1.07l-1.75-2c-.19-.22-.46-.34-.75-.34z"/><path opacity=".3" d="M6 9h4v1H6V9z"/><path fill="#CD201F" d="M13 7h2v1h-2V7z"/><path fill="#59F" d="M13 5h2v1h-2V5z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-compressed.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-compressed.svg
new file mode 100644 (file)
index 0000000..bea4360
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#FFC857" d="M14 16H2V0h8l4 4v12z"/><path fill="#E8A33D" d="M4 0h1v16H4z"/><path fill="#8C8C8C" d="M5 0h1v1H5zM5 2h1v1H5zM5 4h1v1H5zM5 6h1v1H5zM5 8h1v1H5zM4.5 10h2v4h-2z"/><path opacity=".1" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path opacity=".7" fill="#FFF" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-excel.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-excel.svg
new file mode 100644 (file)
index 0000000..5c8fb1a
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#1E7145" d="M14 16H2V0h8l4 4v12z"/><path opacity=".1" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path opacity=".7" fill="#FFF" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path fill="#FFF" d="M5.32 7h1.02l1.74 2.6L9.83 7h1.02L8.6 10.36 11 14H9.98l-1.97-2.98L6.02 14H5l2.5-3.74L5.32 7z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-executable-executable.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-executable-executable.svg
new file mode 100644 (file)
index 0000000..ffc2ddb
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#59F" d="M14 16H2V0h8l4 4v12z"/><path opacity=".1" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path opacity=".7" fill="#FFF" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path fill="#FFF" d="M9.33 10.06c0 .05-.04.12-.1.12l-.65.1c-.03.11-.08.21-.13.32.12.17.24.32.38.48.02.02.03.05.03.08s-.01.06-.03.08c-.08.11-.55.62-.67.62-.03 0-.06-.01-.09-.03l-.47-.37c-.1.05-.21.1-.32.13-.02.21-.04.44-.1.65-.02.06-.07.1-.12.1h-.78c-.06 0-.12-.05-.12-.1l-.1-.64c-.11-.03-.21-.08-.31-.13l-.49.37c-.02.02-.05.03-.08.03s-.06-.01-.09-.03c-.11-.1-.6-.55-.6-.67 0-.03.01-.05.03-.08.12-.16.25-.31.37-.48-.06-.11-.11-.22-.15-.34l-.63-.1c-.07-.01-.11-.07-.11-.12v-.78c0-.05.04-.12.1-.12l.65-.1c.03-.11.08-.21.13-.32-.12-.16-.25-.32-.38-.48-.02-.02-.03-.05-.03-.08s.01-.06.03-.08c.08-.11.55-.62.67-.62.03 0 .06.01.09.03l.48.38c.1-.05.21-.1.32-.13.02-.22.04-.45.09-.65.02-.06.07-.1.13-.1h.78c.06 0 .12.05.12.1l.1.64c.11.03.21.08.31.13l.49-.37c.02-.02.05-.03.08-.03s.06.01.09.03c.11.1.6.55.6.67 0 .03-.01.05-.03.08-.12.16-.24.31-.36.48.05.11.1.22.14.34l.63.1c.06.01.1.07.1.13v.76zM6.67 8.6c-.59 0-1.07.48-1.07 1.07 0 .59.48 1.07 1.07 1.07s1.07-.48 1.07-1.07c-.01-.59-.49-1.07-1.07-1.07zM12 7.82c0 .06-.54.12-.62.13-.03.08-.07.15-.12.22.04.08.21.5.21.57 0 .01 0 .02-.02.03-.05.03-.5.3-.52.3-.05 0-.37-.42-.41-.48-.04 0-.08.01-.13.01-.04 0-.08 0-.12-.01-.04.06-.35.48-.41.48-.02 0-.47-.27-.52-.3l-.01-.02c0-.07.18-.49.21-.57-.04-.08-.09-.15-.12-.23-.08 0-.62-.06-.62-.13v-.58c0-.06.54-.12.62-.13.03-.07.08-.15.13-.21-.04-.08-.21-.5-.21-.57 0-.01 0-.02.02-.03.04-.03.49-.3.51-.3.05 0 .37.41.41.47.04 0 .08-.01.12-.01.04 0 .08 0 .13.01.12-.16.24-.32.38-.47h.02c.02 0 .47.26.52.29.01.01.02.02.02.03 0 .08-.17.49-.21.57.05.07.09.14.12.22.08.01.62.07.62.13v.58zm0 4.27c0 .06-.54.12-.62.13-.03.08-.07.15-.12.22.04.08.21.5.21.58 0 .01 0 .02-.02.03-.05.03-.5.3-.52.3-.05 0-.37-.42-.41-.48-.04 0-.08.01-.13.01-.04 0-.08 0-.12-.01-.04.06-.35.48-.41.48-.02 0-.47-.27-.52-.3-.01-.01-.02-.02-.02-.03 0-.07.18-.49.21-.58-.05-.07-.09-.14-.12-.22-.08-.01-.62-.07-.62-.13v-.58c0-.06.54-.12.62-.13.03-.08.07-.15.12-.22-.04-.08-.21-.5-.21-.57 0-.01 0-.02.02-.03.05-.02.5-.29.52-.29.05 0 .37.41.41.47.04 0 .08-.01.12-.01.04 0 .08 0 .13.01.12-.16.24-.32.38-.47l.02-.01c.02 0 .47.26.52.29.01.01.02.02.02.03 0 .08-.17.49-.21.57.05.07.09.14.12.22.08.01.62.07.62.13v.59zM10.4 7c-.29 0-.53.24-.53.53 0 .3.24.53.53.53.3 0 .53-.24.53-.53 0-.29-.24-.53-.53-.53zm0 4.27c-.29 0-.53.24-.53.53 0 .3.24.53.53.53.3 0 .53-.24.53-.53 0-.29-.24-.53-.53-.53z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-media-audio.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-media-audio.svg
new file mode 100644 (file)
index 0000000..2bd06bc
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#FFF" d="M14 16H2V0h8l4 4v12z"/><path opacity=".3" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path fill="#E6E6E6" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path fill="#6DAAE0" d="M11.83 7H5.5c-.28 0-.5.22-.5.5v4.26c-.22.09-.45.23-.65.43-.54.54-.68 1.26-.32 1.62.36.36 1.08.21 1.62-.32.35-.35.53-.77.52-1.13V8.17h3.5v3.59c-.22.09-.45.23-.65.43-.54.54-.68 1.26-.32 1.62.36.36 1.08.21 1.62-.32.35-.35.53-.77.52-1.13V8.03c.46-.03 1.08-.21.99-1.03z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-media-flash.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-media-flash.svg
new file mode 100644 (file)
index 0000000..243c4fd
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#F32" d="M14 16H2V0h8l4 4v12z"/><path opacity=".1" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path opacity=".7" fill="#FFF" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path fill="#FFF" d="M10.35 7.7c.19-.07.4-.11.65-.11V6c-1.07 0-1.93.43-2.58 1.3-.23.3-.46.69-.65 1.16l-.48 1.26c-.17.51-.32.88-.43 1.13-.15.36-.3.64-.45.85-.18.24-.37.41-.59.52-.23.11-.5.18-.82.18V14c1.07 0 1.93-.44 2.58-1.3.18-.26.36-.56.53-.91l.41-1h1.72v-1.6H9.11c.11-.26.22-.49.34-.69.12-.2.26-.38.4-.49.15-.14.31-.24.5-.31"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-media-image.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-media-image.svg
new file mode 100644 (file)
index 0000000..053cad8
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#FFF" d="M14 16H2V0h8l4 4v12z"/><path opacity=".5" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path fill="#E6E6E6" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path fill="#59F" d="M10.5 15H3l1.87-3 1.87-3 1.87 3 1.89 3z"/><path fill="#59F" d="M13 15H6.33L8 13l1.67-2 1.67 2L13 15z"/><path fill="#E8A33D" d="M9.5 6c.83 0 1.5.67 1.5 1.5S10.33 9 9.5 9 8 8.33 8 7.5 8.67 6 9.5 6z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-media-video.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-media-video.svg
new file mode 100644 (file)
index 0000000..8e7445e
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#CD201F" d="M14 16H2V0h8l4 4v12z"/><path opacity=".7" fill="#FFF" d="M14 4h-4V0l4 4z"/><path fill="#FFF" d="M3 1h1v1H3zM3 3h1v1H3zM3 5h1v1H3zM3 7h1v1H3zM3 9h1v1H3zM3 11h1v1H3zM3 13h1v1H3zM3 15h1v1H3zM12 14h1v1h-1zM12 12h1v1h-1zM12 10h1v1h-1zM12 8h1v1h-1zM12 6h1v1h-1zM12 4h1v1h-1zM6 12V7l5 2.5"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path opacity=".1" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-other-other.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-other-other.svg
new file mode 100644 (file)
index 0000000..7b6211c
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#CCC" d="M14 16H2V0h8l4 4v12z"/><path opacity=".1" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path opacity=".7" fill="#FFF" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-pdf.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-pdf.svg
new file mode 100644 (file)
index 0000000..62374a3
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#F00" d="M14 16H2V0h8l4 4v12z"/><path opacity=".7" fill="#FFF" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path opacity=".1" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path fill="#FFF" d="M6.91 10.55c-.17.3-.33.59-.48.85.84-.34 1.74-.55 2.6-.71-.12-.08-.23-.16-.33-.24-.48-.39-.84-.87-1.1-1.38-.17.43-.36.89-.69 1.48m-.32-.16c.24-.46.52-.98.74-1.5l.09-.21c-.29-1.05-.46-1.9-.31-2.45.05-.14.22-.23.4-.23h.13c.26 0 .38.31.39.43.02.2-.07.54-.07.54 0-.14.01-.36-.08-.55-.1-.22-.2-.35-.29-.37-.05.03-.09.09-.1.2-.05.16-.06.37-.06.47 0 .37.08.86.23 1.37.03-.08.05-.15.07-.22l.23-.85S7.91 8 7.84 8.3c-.01.06-.03.12-.05.19.25.66.65 1.26 1.12 1.68.19.17.42.3.65.43.49-.07.94-.1 1.31-.1.5.01.86.08 1.01.22.07.07.1.15.11.24 0 .04-.02.12-.02.14.01-.03.01-.15-.39-.27-.32-.1-.9-.09-1.61-.02.82.39 1.62.58 1.87.46.06-.03.14-.13.14-.13s-.04.19-.08.24c-.04.05-.12.11-.2.13-.4.1-1.44-.13-2.34-.63-1.01.14-2.12.41-3.01.69-.88 1.48-1.53 2.15-2.07 1.9l-.2-.1c-.08-.04-.09-.14-.07-.23.06-.29.45-.74 1.21-1.18.08-.05.45-.24.45-.24s-.27.25-.34.3c-.61.48-1.07 1.09-1.06 1.33v.02c.53-.06 1.32-1.09 2.32-2.98"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-powerpoint.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-powerpoint.svg
new file mode 100644 (file)
index 0000000..ab1bd4d
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#D14524" d="M14 16H2V0h8l4 4v12z"/><path opacity=".1" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path opacity=".7" fill="#FFF" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path fill="#FFF" d="M6.84 7.78v2.63h1.05c.39 0 .69-.11.9-.34.21-.23.32-.55.32-.98 0-.42-.11-.74-.32-.97-.21-.23-.51-.34-.9-.34H6.84zM6 7h1.89c.69 0 1.22.18 1.57.53.36.36.54.88.54 1.56 0 .69-.18 1.21-.54 1.57-.35.35-.88.53-1.57.53H6.84V14H6V7z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-css.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-css.svg
new file mode 100644 (file)
index 0000000..39ea673
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#33ACDF" d="M14 16H2V0h8l4 4v12z"/><path opacity=".1" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path opacity=".7" fill="#FFF" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path fill="#FFF" d="M7.03 13.39V14h-.24c-.64 0-1.06-.1-1.28-.31-.21-.21-.32-.63-.32-1.25v-1.01c0-.43-.07-.72-.21-.88-.13-.17-.38-.25-.75-.25H4v-.61h.23c.36 0 .61-.08.75-.24.14-.16.21-.46.21-.88V7.56c0-.62.11-1.04.32-1.24.22-.22.64-.32 1.28-.32h.24v.61h-.26c-.36 0-.59.06-.7.19-.12.12-.17.38-.17.77v1.05c0 .44-.06.76-.18.97-.11.2-.31.34-.59.41.28.08.48.21.6.41.11.2.17.52.17.96v1.05c0 .4.05.66.16.78s.34.19.7.19h.27zM8.97 13.39h.27c.36 0 .59-.06.7-.18.11-.12.16-.38.16-.79v-1.05c0-.44.06-.76.17-.96s.31-.34.6-.41c-.28-.07-.48-.21-.6-.41-.11-.2-.17-.52-.17-.97V7.57c0-.4-.05-.66-.16-.78s-.34-.18-.7-.18h-.27V6h.24c.64 0 1.06.1 1.27.31.21.21.32.62.32 1.24v1.02c0 .42.07.71.21.88.14.16.39.24.75.24H12v.61h-.24c-.36 0-.61.08-.75.25-.14.16-.21.46-.21.88v1.01c0 .62-.11 1.04-.32 1.25-.21.21-.63.31-1.27.31h-.24v-.61z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-csv.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-csv.svg
new file mode 100644 (file)
index 0000000..7523cc6
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#45B058" d="M14 16H2V0h8l4 4v12z"/><path opacity=".1" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path opacity=".7" fill="#FFF" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path fill="#FFF" d="M4.74 12c-.25 0-.49-.04-.7-.13-.21-.08-.4-.21-.55-.38-.15-.17-.27-.38-.36-.63-.09-.24-.13-.53-.13-.86 0-.3.04-.58.12-.83.08-.25.2-.46.35-.64.15-.17.33-.3.55-.4.22-.08.46-.13.72-.13.14 0 .27.01.39.03.11.02.22.04.32.07.1.03.19.07.28.11l.22.11v.93h-.1c-.05-.04-.1-.09-.17-.14-.06-.06-.14-.12-.22-.17-.08-.06-.17-.1-.27-.14s-.2-.06-.31-.06c-.12 0-.24.02-.35.07-.12.04-.22.11-.32.22-.09.1-.16.23-.22.39-.05.16-.08.36-.08.59 0 .24.03.44.09.61.06.16.14.29.23.38.09.09.2.16.31.2.11.04.23.06.34.06.11 0 .21-.02.32-.05.11-.04.2-.09.29-.15.07-.05.14-.1.21-.16.06-.06.12-.11.16-.15h.09v.92c-.09.04-.17.08-.24.12-.08.04-.16.07-.24.1-.11.04-.22.06-.31.08-.12.02-.25.03-.42.03zM9.32 10.71c0 .38-.14.69-.43.93-.28.24-.67.35-1.16.35-.28 0-.53-.03-.74-.08-.21-.06-.4-.13-.59-.21v-.92h.1c.18.16.38.29.61.38.23.09.44.13.65.13.05 0 .12-.01.21-.02s.16-.03.21-.05c.07-.03.12-.07.16-.12.04-.05.07-.12.07-.21 0-.08-.03-.16-.1-.22-.06-.06-.15-.11-.28-.14-.13-.03-.26-.07-.41-.1-.14-.03-.28-.07-.4-.12-.29-.11-.49-.25-.62-.43-.11-.17-.17-.39-.17-.66 0-.36.14-.65.43-.88.29-.23.65-.34 1.1-.34.22 0 .45.02.66.07.22.05.41.11.57.18v.89h-.1c-.14-.11-.31-.22-.51-.3-.2-.08-.4-.13-.61-.13-.07 0-.15.01-.22.02s-.13.03-.2.06c-.06.03-.11.07-.15.12-.05.05-.07.11-.07.18 0 .1.03.18.1.24.07.05.2.1.39.15.13.02.25.05.36.08.12.03.24.06.37.11.26.1.45.23.58.4.13.16.19.38.19.64zM13 8.07l-1.24 3.85h-.98L9.53 8.07h.92l.82 2.7.82-2.7H13z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-html.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-html.svg
new file mode 100644 (file)
index 0000000..306694e
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#F16529" d="M14 16H2V0h8l4 4v12z"/><path opacity=".1" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path opacity=".7" fill="#FFF" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path fill="#FFF" d="M7.42 7.33l-2.75 2.68 2.75 2.66V14L4 10.61V9.39L7.42 6v1.33zM8.58 7.33V6L12 9.39v1.21L8.58 14v-1.33l2.75-2.66-2.75-2.68z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-js.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-js.svg
new file mode 100644 (file)
index 0000000..682095b
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#F0DB4F" d="M14 16H2V0h8l4 4v12z"/><path opacity=".1" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path opacity=".7" fill="#FFF" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path fill="#333" d="M6.99 12.2c0 .25-.04.49-.11.72-.08.22-.19.41-.34.56-.16.16-.35.29-.57.38-.22.09-.5.13-.82.13-.22 0-.43-.01-.63-.03-.2-.02-.37-.05-.52-.08V12.7h.12c.1.05.21.09.32.13.11.04.26.06.43.06.23 0 .4-.04.52-.11s.21-.17.26-.3c.05-.13.08-.27.08-.42.01-.15.01-.35.01-.58V9.17h-1.1V8.1h2.34v4.1zM12 12.08c0 .57-.2 1.03-.6 1.39-.4.35-.95.53-1.64.53-.4 0-.75-.04-1.04-.12-.3-.09-.57-.19-.83-.32v-1.39h.14c.26.25.54.44.86.57.32.13.62.2.92.2.08 0 .17-.01.3-.02.12-.02.22-.04.3-.08.09-.05.17-.1.23-.17s.09-.17.09-.31c0-.13-.05-.24-.14-.33-.09-.09-.22-.16-.39-.21-.18-.05-.37-.1-.58-.14-.2-.05-.39-.1-.57-.17-.4-.16-.7-.37-.88-.64-.17-.3-.25-.64-.25-1.04 0-.54.2-.98.6-1.32.4-.34.92-.51 1.55-.51.31 0 .63.04.93.11.31.07.58.16.8.28v1.33h-.13c-.19-.19-.43-.34-.71-.47-.28-.13-.57-.19-.86-.19-.1 0-.21.01-.31.03-.1.02-.2.05-.29.09-.08.04-.16.1-.22.18-.06.08-.09.17-.09.27 0 .15.05.27.15.35.1.08.28.15.55.22.18.04.35.09.51.13.16.04.34.1.53.17.37.15.64.34.81.59.17.26.26.59.26.99z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-php.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-php.svg
new file mode 100644 (file)
index 0000000..2eea1ac
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#6B7EB9" d="M14 16H2V0h8l4 4v12z"/><path opacity=".1" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path opacity=".7" fill="#FFF" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path fill="#FFF" d="M3 9.1c.27-.06.64-.1 1.01-.1.58 0 1.03.08 1.36.38.3.26.43.67.43 1.09 0 .54-.16.92-.42 1.2-.31.33-.82.48-1.22.48h-.19V14H3V9.1zm.97 2.26c.04.01.1.01.16.01.49 0 .71-.35.71-.81 0-.44-.18-.78-.63-.78-.09 0-.18.01-.24.04v1.54zM7.36 9.02v1.99h1.01V9.02h.97V14h-.97v-2.08H7.36V14h-.97V9.02h.97zM10.2 9.1c.28-.06.65-.1 1.02-.1.58 0 1.03.08 1.35.38.3.26.43.67.43 1.09 0 .54-.16.92-.42 1.2-.31.33-.81.47-1.21.47h-.19V14h-.98V9.1zm.97 2.26c.04.01.1.01.16.01.49 0 .71-.35.71-.81 0-.44-.18-.78-.63-.78-.09 0-.18.01-.24.04v1.54z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-text.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-text.svg
new file mode 100644 (file)
index 0000000..a7f9c41
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#FFF" d="M14 16H2V0h8l4 4v12z"/><path opacity=".5" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path fill="#E6E6E6" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path fill="#999" d="M11.75 14h-7.5c-.14 0-.25-.11-.25-.25v-.5c0-.14.11-.25.25-.25h7.5c.14 0 .25.11.25.25v.5c0 .14-.11.25-.25.25zM11.75 12h-7.5c-.14 0-.25-.11-.25-.25v-.5c0-.14.11-.25.25-.25h7.5c.14 0 .25.11.25.25v.5c0 .14-.11.25-.25.25zM11.75 10h-7.5C4.11 10 4 9.89 4 9.75v-.5c0-.14.11-.25.25-.25h7.5c.14 0 .25.11.25.25v.5c0 .14-.11.25-.25.25zM11.75 8h-7.5C4.11 8 4 7.89 4 7.75v-.5c0-.14.11-.25.25-.25h7.5c.14 0 .25.11.25.25v.5c0 .14-.11.25-.25.25zM7.75 5h-3.5C4.11 5 4 4.89 4 4.75v-.5c0-.14.11-.25.25-.25h3.5c.14 0 .25.11.25.25v.5c0 .14-.11.25-.25.25zM7.75 3h-3.5C4.11 3 4 2.89 4 2.75v-.5c0-.14.11-.25.25-.25h3.5c.14 0 .25.11.25.25v.5c0 .14-.11.25-.25.25z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-ts.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-text-ts.svg
new file mode 100644 (file)
index 0000000..7afdecd
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#FF8700" d="M14 16H2V0h8l4 4v12z"/><path opacity=".1" d="M13.75 15.75H2.25V.25H10V0H2v16h12V4h-.25"/><path opacity=".7" fill="#FFF" d="M14 4h-4V0l4 4z"/><path opacity=".3" d="M14 8l-4-4h4v4z"/><path fill="#FFF" d="M5.95 9.93H5v-.89h2.95v.88h-.96v4.03H5.95V9.93zM8.35 12.98c.22.11.58.19.88.19.49 0 .73-.23.73-.55 0-.36-.24-.53-.69-.8-.73-.41-1.01-.93-1.01-1.37 0-.79.57-1.45 1.7-1.45.35 0 .68.09.84.17l-.17.83c-.15-.09-.38-.17-.68-.17-.45 0-.66.25-.66.51 0 .29.16.44.74.77.71.39.97.89.97 1.4 0 .9-.73 1.49-1.78 1.49-.43 0-.85-.1-1.03-.2l.16-.82z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-word.svg b/typo3/sysext/backend/Resources/Public/Icons/Mimetype/mimetypes-word.svg
new file mode 100644 (file)
index 0000000..10db827
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M2 0v16h12V4l-4-4H2zm8 0l4 .02V0h-4z" fill="#2a569f" fill-opacity=".941"/><path d="M10 3.98V0l4 4z" fill="#fff" opacity=".65"/><path d="M14 4.024V9l-4-5z" opacity=".15"/><path d="M4 6.68h.863l1.33 5.342L7.517 6.68h.96l1.33 5.342 1.325-5.342H12L10.413 13H9.338L8.004 7.514 6.658 13H5.583L4 6.68z" style="line-height:125%" font-size="13.75" font-family="sans-serif" letter-spacing="0" word-spacing="0" fill="#fff"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/Overlay/overlay-missing.svg b/typo3/sysext/backend/Resources/Public/Icons/Overlay/overlay-missing.svg
new file mode 100644 (file)
index 0000000..fbe8ab1
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><circle fill="#C83C3C" cx="8" cy="8" r="7"/><path fill="#FFF" d="M9 11.5v1c0 .28-.22.5-.5.5h-1c-.28 0-.5-.22-.5-.5v-1c0-.28.22-.5.5-.5h1c.28 0 .5.22.5.5zM9 3.5v6c0 .28-.22.5-.5.5h-1c-.28 0-.5-.22-.5-.5v-6c0-.28.22-.5.5-.5h1c.28 0 .5.22.5.5z"/></svg>
\ No newline at end of file
index 5428612..38a3d93 100644 (file)
@@ -15,7 +15,13 @@ namespace TYPO3\CMS\Core\Imaging;
  */
 
 use TYPO3\CMS\Core\Type\Icon\IconState;
  */
 
 use TYPO3\CMS\Core\Type\Icon\IconState;
+use TYPO3\CMS\Core\Resource\File;
+use TYPO3\CMS\Core\Resource\FolderInterface;
+use TYPO3\CMS\Core\Resource\InaccessibleFolder;
+use TYPO3\CMS\Core\Resource\ResourceInterface;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Core\Versioning\VersionState;
+use TYPO3\CMS\Extbase\SignalSlot\Dispatcher;
 
 /**
  * The main factory class, which acts as the entrypoint for generating an Icon object which
 
 /**
  * The main factory class, which acts as the entrypoint for generating an Icon object which
@@ -29,6 +35,81 @@ class IconFactory {
        protected $iconRegistry;
 
        /**
        protected $iconRegistry;
 
        /**
+        * @var string[]
+        */
+       protected $fileExtensionMapping = array(
+               'htm' => 'mimetypes-text-html',
+               'html' => 'mimetypes-text-html',
+               'css' => 'mimetypes-text-css',
+               'js' => 'mimetypes-text-js',
+               'csv' => 'mimetypes-text-csv',
+               'php' => 'mimetypes-text-php',
+               'php6' => 'mimetypes-text-php',
+               'php5' => 'mimetypes-text-php',
+               'php4' => 'mimetypes-text-php',
+               'php3' => 'mimetypes-text-php',
+               'inc' => 'mimetypes-text-php',
+               'ts' => 'mimetypes-text-ts',
+               'txt' => 'mimetypes-text-text',
+               'class' => 'mimetypes-text-text',
+               'tmpl' => 'mimetypes-text-text',
+               'jpg' => 'mimetypes-media-image',
+               'jpeg' => 'mimetypes-media-image',
+               'gif' => 'mimetypes-media-image',
+               'png' => 'mimetypes-media-image',
+               'bmp' => 'mimetypes-media-image',
+               'tif' => 'mimetypes-media-image',
+               'tiff' => 'mimetypes-media-image',
+               'tga' => 'mimetypes-media-image',
+               'psd' => 'mimetypes-media-image',
+               'eps' => 'mimetypes-media-image',
+               'ai' => 'mimetypes-media-image',
+               'svg' => 'mimetypes-media-image',
+               'pcx' => 'mimetypes-media-image',
+               'avi' => 'mimetypes-media-video',
+               'mpg' => 'mimetypes-media-video',
+               'mpeg' => 'mimetypes-media-video',
+               'mov' => 'mimetypes-media-video',
+               'wav' => 'mimetypes-media-audio',
+               'mp3' => 'mimetypes-media-audio',
+               'mid' => 'mimetypes-media-audio',
+               'swf' => 'mimetypes-media-flash',
+               'swa' => 'mimetypes-media-flash',
+               'exe' => 'mimetypes-executable-executable',
+               'com' => 'mimetypes-executable-executable',
+               't3x' => 'mimetypes-compressed',
+               't3d' => 'mimetypes-compressed',
+               'zip' => 'mimetypes-compressed',
+               'tgz' => 'mimetypes-compressed',
+               'gz' => 'mimetypes-compressed',
+               'pdf' => 'mimetypes-pdf',
+               'doc' => 'mimetypes-word',
+               'dot' => 'mimetypes-word',
+               'docm' => 'mimetypes-word',
+               'docx' => 'mimetypes-word',
+               'dotm' => 'mimetypes-word',
+               'dotx' => 'mimetypes-word',
+               'sxw' => 'mimetypes-word',
+               'rtf' => 'mimetypes-word',
+               'xls' => 'mimetypes-excel',
+               'xlsm' => 'mimetypes-excel',
+               'xlsx' => 'mimetypes-excel',
+               'xltm' => 'mimetypes-excel',
+               'xltx' => 'mimetypes-excel',
+               'sxc' => 'mimetypes-excel',
+               'pps' => 'mimetypes-powerpoint',
+               'ppsx' => 'mimetypes-powerpoint',
+               'ppt' => 'mimetypes-powerpoint',
+               'pptm' => 'mimetypes-powerpoint',
+               'pptx' => 'mimetypes-powerpoint',
+               'potm' => 'mimetypes-powerpoint',
+               'potx' => 'mimetypes-powerpoint',
+               'mount' => 'apps-filetree-mount',
+               'folder' => 'apps-filetree-folder-default',
+               'default' => 'mimetypes-other-other',
+       );
+
+       /**
         * @param IconRegistry $iconRegistry
         */
        public function __construct(IconRegistry $iconRegistry = NULL) {
         * @param IconRegistry $iconRegistry
         */
        public function __construct(IconRegistry $iconRegistry = NULL) {
@@ -40,7 +121,6 @@ class IconFactory {
         * @param string $size "large", "small" or "default", see the constants of the Icon class
         * @param string $overlayIdentifier
         * @param IconState $state
         * @param string $size "large", "small" or "default", see the constants of the Icon class
         * @param string $overlayIdentifier
         * @param IconState $state
-        *
         * @return Icon
         */
        public function getIcon($identifier, $size = Icon::SIZE_DEFAULT, $overlayIdentifier = NULL, IconState $state = NULL) {
         * @return Icon
         */
        public function getIcon($identifier, $size = Icon::SIZE_DEFAULT, $overlayIdentifier = NULL, IconState $state = NULL) {
@@ -61,10 +141,119 @@ class IconFactory {
                /** @var IconProviderInterface $iconProvider */
                $iconProvider = GeneralUtility::makeInstance($iconConfiguration['provider']);
                $iconProvider->prepareIconMarkup($icon, $iconConfiguration['options']);
                /** @var IconProviderInterface $iconProvider */
                $iconProvider = GeneralUtility::makeInstance($iconConfiguration['provider']);
                $iconProvider->prepareIconMarkup($icon, $iconConfiguration['options']);
+
                return $icon;
        }
 
        /**
                return $icon;
        }
 
        /**
+        * Get Icon for a file by its extension
+        *
+        * @param string $fileExtension
+        * @param string $size "large" "small" or "default", see the constants of the Icon class
+        * @param string $overlayIdentifier
+        * @return Icon
+        */
+       public function getIconForFileExtension($fileExtension, $size = Icon::SIZE_DEFAULT, $overlayIdentifier = NULL) {
+               $iconName = $this->getIconIdentifierForFileExtension($fileExtension);
+               return $this->getIcon($iconName, $size, $overlayIdentifier);
+       }
+
+       /**
+        * @param string $fileExtension
+        *
+        * @return string
+        */
+       protected function getIconIdentifierForFileExtension($fileExtension) {
+               // If the file extension is not valid use the default one
+               if (!isset($this->fileExtensionMapping[$fileExtension])) {
+                       $fileExtension = 'default';
+               }
+               return $this->fileExtensionMapping[$fileExtension];
+       }
+
+       /**
+        * This method is used throughout the TYPO3 Backend to show icons for files and folders
+        *
+        * The method takes care of the translation of file extension to proper icon and for folders
+        * it will return the icon depending on the role of the folder.
+        *
+        * If the given resource is a folder there are some additional options that can be used:
+        *  - mount-root => TRUE (to indicate this is the root of a mount)
+        *  - folder-open => TRUE (to indicate that the folder is opened in the file tree)
+        *
+        * There is a hook in place to manipulate the icon name and overlays.
+        *
+        * @param ResourceInterface $resource
+        * @param string $size "large" "small" or "default", see the constants of the Icon class
+        * @param string $overlayIdentifier
+        * @param array $options An associative array with additional options.
+        * @return Icon
+        */
+       public function getIconForResource(ResourceInterface $resource, $size = Icon::SIZE_DEFAULT, $overlayIdentifier = NULL, array $options = array()) {
+               $iconIdentifier = NULL;
+
+               // Folder
+               if ($resource instanceof FolderInterface) {
+                       // non browsable storage
+                       if ($resource->getStorage()->isBrowsable() === FALSE && !empty($options['mount-root'])) {
+                               $iconIdentifier = 'apps-filetree-folder-locked';
+                       } else {
+                               // storage root
+                               if ($resource->getStorage()->getRootLevelFolder()->getIdentifier() === $resource->getIdentifier()) {
+                                       $iconIdentifier = 'apps-filetree-root';
+                               }
+
+                               $role = is_callable([$resource, 'getRole']) ? $resource->getRole() : '';
+
+                               // user/group mount root
+                               if (!empty($options['mount-root'])) {
+                                       $iconIdentifier = 'apps-filetree-mount';
+                                       if ($role === FolderInterface::ROLE_READONLY_MOUNT) {
+                                               $overlayIdentifier = 'overlay-locked';
+                                       } elseif ($role === FolderInterface::ROLE_USER_MOUNT) {
+                                               $overlayIdentifier = 'overlay-restricted';
+                                       }
+                               }
+
+                               if ($iconIdentifier === NULL) {
+                                       // in folder tree view $options['folder-open'] can define an open folder icon
+                                       if (!empty($options['folder-open'])) {
+                                               $iconIdentifier = 'apps-filetree-folder-opened';
+                                       } else {
+                                               $iconIdentifier = 'apps-filetree-folder-default';
+                                       }
+
+                                       if ($role === FolderInterface::ROLE_TEMPORARY) {
+                                               $iconIdentifier = 'apps-filetree-folder-temp';
+                                       } elseif ($role === FolderInterface::ROLE_RECYCLER) {
+                                               $iconIdentifier = 'apps-filetree-folder-recycler';
+                                       }
+                               }
+
+                               // if locked add overlay
+                               if ($resource instanceof InaccessibleFolder ||
+                                       !$resource->getStorage()->isBrowsable() ||
+                                       !$resource->getStorage()->checkFolderActionPermission('add', $resource)
+                               ) {
+                                       $overlayIdentifier = 'overlay-locked';
+                               }
+                       }
+
+                       // File
+               } else {
+                       if ($resource instanceof File && $resource->isMissing()) {
+                               $overlayIdentifier = 'overlay-missing';
+                       }
+                       $iconIdentifier = $this->getIconIdentifierForFileExtension($resource->getExtension());
+               }
+
+               unset($options['mount-root']);
+               unset($options['folder-open']);
+               list($iconIdentifier, $overlayIdentifier) = $this->emitBuildIconForResourceSignal($resource, $size, $options, $iconIdentifier, $overlayIdentifier);
+               return $this->getIcon($iconIdentifier, $size, $overlayIdentifier);
+       }
+
+       /**
         * Creates an icon object
         *
         * @param string $identifier
         * Creates an icon object
         *
         * @param string $identifier
@@ -84,6 +273,37 @@ class IconFactory {
                if (!empty($iconConfiguration['options']['spinning'])) {
                        $icon->setSpinning(TRUE);
                }
                if (!empty($iconConfiguration['options']['spinning'])) {
                        $icon->setSpinning(TRUE);
                }
+
                return $icon;
        }
                return $icon;
        }
+
+       /**
+        * Emits a signal right after the identifiers are built.
+        *
+        * @param ResourceInterface $resource
+        * @param string $size
+        * @param array $options
+        * @param string $iconIdentifier
+        * @param string $overlayIdentifier
+        *
+        * @return mixed
+        * @throws \TYPO3\CMS\Extbase\SignalSlot\Exception\InvalidSlotException
+        * @throws \TYPO3\CMS\Extbase\SignalSlot\Exception\InvalidSlotReturnException
+        */
+       protected function emitBuildIconForResourceSignal(ResourceInterface $resource, $size, array $options, $iconIdentifier, $overlayIdentifier) {
+               $result = $this->getSignalSlotDispatcher()->dispatch(IconFactory::class, 'buildIconForResourceSignal', array($resource, $size, $options, $iconIdentifier, $overlayIdentifier));
+               $iconIdentifier = $result[3];
+               $overlayIdentifier = $result[4];
+               return array($iconIdentifier, $overlayIdentifier);
+       }
+
+       /**
+        * Get the SignalSlot dispatcher
+        *
+        * @return \TYPO3\CMS\Extbase\SignalSlot\Dispatcher
+        */
+       protected function getSignalSlotDispatcher() {
+               return GeneralUtility::makeInstance(Dispatcher::class);
+       }
+
 }
 }
index 3020d00..fa6e1a3 100644 (file)
@@ -40,17 +40,41 @@ class IconRegistry implements \TYPO3\CMS\Core\SingletonInterface {
                        )
                ),
 
                        )
                ),
 
-               // Action icons
+               // App icons
                'apps-filetree-folder-default' => array(
                'apps-filetree-folder-default' => array(
-                       'provider' => BitmapIconProvider::class,
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/App/apps-filetree-folder-default.svg',
+                       )
+               ),
+               'apps-filetree-folder-locked' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/App/apps-filetree-folder-locked.svg',
+                       )
+               ),
+               'apps-filetree-folder-opened' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/App/apps-filetree-folder-opened.svg',
+                       )
+               ),
+               'apps-filetree-folder-recycler' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/App/apps-filetree-folder-recycler.svg',
+                       )
+               ),
+               'apps-filetree-folder-temp' => array(
+                       'provider' => SvgIconProvider::class,
                        'options' => array(
                        'options' => array(
-                               'source' => 'EXT:t3skin/images/icons/apps/filetree-folder-default.png',
+                               'source' => 'EXT:backend/Resources/Public/Icons/App/apps-filetree-folder-temp.svg',
                        )
                ),
                'apps-filetree-mount' => array(
                        )
                ),
                'apps-filetree-mount' => array(
-                       'provider' => BitmapIconProvider::class,
+                       'provider' => SvgIconProvider::class,
                        'options' => array(
                        'options' => array(
-                               'source' => 'EXT:backend/Resources/Public/Icons/App/apps-filetree-mount.png'
+                               'source' => 'EXT:backend/Resources/Public/Icons/App/apps-filetree-mount.svg',
                        )
                ),
                'apps-filetree-root' => array(
                        )
                ),
                'apps-filetree-root' => array(
@@ -113,6 +137,8 @@ class IconRegistry implements \TYPO3\CMS\Core\SingletonInterface {
                                'source' => 'EXT:backend/Resources/Public/Icons/App/apps-toolbar-menu-search.svg',
                        )
                ),
                                'source' => 'EXT:backend/Resources/Public/Icons/App/apps-toolbar-menu-search.svg',
                        )
                ),
+
+               // Action Icons
                'actions-document-close' => array(
                        'provider' => FontawesomeIconProvider::class,
                        'options' => array(
                'actions-document-close' => array(
                        'provider' => FontawesomeIconProvider::class,
                        'options' => array(
@@ -831,22 +857,112 @@ class IconRegistry implements \TYPO3\CMS\Core\SingletonInterface {
                ),
 
                // Mimetypes
                ),
 
                // Mimetypes
-               'mimetypes-text-html' => array(
-                       'provider' => FontawesomeIconProvider::class,
+               'mimetypes-compressed' => array(
+                       'provider' => SvgIconProvider::class,
                        'options' => array(
                        'options' => array(
-                               'name' => 'file-text-o',
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-compressed.svg'
+                       )
+               ),
+               'mimetypes-excel' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-excel.svg'
+                       )
+               ),
+               'mimetypes-executable-executable' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-executable-executable.svg'
+                       )
+               ),
+               'mimetypes-pdf' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-pdf.svg'
+                       )
+               ),
+               'mimetypes-powerpoint' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-powerpoint.svg'
+                       )
+               ),
+               'mimetypes-media-audio' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-media-audio.svg'
+                       )
+               ),
+               'mimetypes-media-flash' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-media-flash.svg'
+                       )
+               ),
+               'mimetypes-media-image' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-media-image.svg'
+                       )
+               ),
+               'mimetypes-media-video' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-media-video.svg'
+                       )
+               ),
+               'mimetypes-other-other' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-other-other.svg'
+                       )
+               ),
+               'mimetypes-text-css' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-text-css.svg'
                        )
                ),
                'mimetypes-text-csv' => array(
                        )
                ),
                'mimetypes-text-csv' => array(
-                       'provider' => BitmapIconProvider::class,
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-text-csv.svg'
+                       )
+               ),
+               'mimetypes-text-html' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-text-html.svg'
+                       )
+               ),
+               'mimetypes-text-js' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-text-js.svg'
+                       )
+               ),
+               'mimetypes-text-php' => array(
+                       'provider' => SvgIconProvider::class,
                        'options' => array(
                        'options' => array(
-                               'source' => 'EXT:t3skin/images/icons/mimetypes/text-csv.png',
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-text-php.svg'
+                       )
+               ),
+               'mimetypes-text-ts' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-text-ts.svg'
+                       )
+               ),
+               'mimetypes-text-text' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-text-text.svg'
                        )
                ),
                'mimetypes-word' => array(
                        )
                ),
                'mimetypes-word' => array(
-                       'provider' => FontawesomeIconProvider::class,
+                       'provider' => SvgIconProvider::class,
                        'options' => array(
                        'options' => array(
-                               'name' => 'file-word-o',
+                               'source' => 'EXT:backend/Resources/Public/Icons/Mimetype/mimetypes-word.svg'
                        )
                ),
                'mimetypes-x-content-page-language-overlay' => array(
                        )
                ),
                'mimetypes-x-content-page-language-overlay' => array(
@@ -903,6 +1019,12 @@ class IconRegistry implements \TYPO3\CMS\Core\SingletonInterface {
                                'source' => 'EXT:backend/Resources/Public/Icons/Overlay/overlay-locked.svg'
                        )
                ),
                                'source' => 'EXT:backend/Resources/Public/Icons/Overlay/overlay-locked.svg'
                        )
                ),
+               'overlay-missing' => array(
+                       'provider' => SvgIconProvider::class,
+                       'options' => array(
+                               'source' => 'EXT:backend/Resources/Public/Icons/Overlay/overlay-missing.svg'
+                       )
+               ),
                'overlay-readonly' => array(
                        'provider' => SvgIconProvider::class,
                        'options' => array(
                'overlay-readonly' => array(
                        'provider' => SvgIconProvider::class,
                        'options' => array(
index 3fccdae..9a9df1d 100644 (file)
@@ -18,9 +18,15 @@ use Prophecy\Argument;
 use TYPO3\CMS\Core\Imaging\Icon;
 use TYPO3\CMS\Core\Imaging\IconFactory;
 use TYPO3\CMS\Core\Imaging\IconProvider\FontawesomeIconProvider;
 use TYPO3\CMS\Core\Imaging\Icon;
 use TYPO3\CMS\Core\Imaging\IconFactory;
 use TYPO3\CMS\Core\Imaging\IconProvider\FontawesomeIconProvider;
+use TYPO3\CMS\Core\Resource\File;
+use TYPO3\CMS\Core\Resource\Folder;
+use TYPO3\CMS\Core\Resource\FolderInterface;
+use TYPO3\CMS\Core\Resource\InaccessibleFolder;
+use TYPO3\CMS\Core\Resource\ResourceStorage;
+use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
 
 /**
 
 /**
- * Testcase for \TYPO3\CMS\Core\Imaging\IconFactory
+ * TestCase for \TYPO3\CMS\Core\Imaging\IconFactory
  */
 class IconFactoryTest extends \TYPO3\CMS\Core\Tests\UnitTestCase {
 
  */
 class IconFactoryTest extends \TYPO3\CMS\Core\Tests\UnitTestCase {
 
@@ -224,4 +230,64 @@ class IconFactoryTest extends \TYPO3\CMS\Core\Tests\UnitTestCase {
                );
        }
 
                );
        }
 
+       //
+       // Tests for getIconForFileExtension
+       //
+
+       /**
+        * Tests the return of an icon for a file without extension
+        *
+        * @test
+        */
+       public function getIconForFileWithNoFileTypeReturnsDefaultFileIcon() {
+               $this->assertContains('<span class="icon icon-size-default icon-state-default icon-mimetypes-other-other">',
+                       $this->subject->getIconForFileExtension('')->render());
+       }
+
+       /**
+        * Tests the return of an icon for an unknown file type
+        *
+        * @test
+        */
+       public function getIconForFileWithUnknownFileTypeReturnsDefaultFileIcon() {
+               $this->assertContains('<span class="icon icon-size-default icon-state-default icon-mimetypes-other-other">',
+                       $this->subject->getIconForFileExtension('foo')->render());
+       }
+
+       /**
+        * Tests the return of an icon for a file with extension pdf
+        *
+        * @test
+        */
+       public function getIconForFileWithFileTypePdfReturnsPdfSprite() {
+               $this->assertContains('<span class="icon icon-size-default icon-state-default icon-mimetypes-pdf">',
+                       $this->subject->getIconForFileExtension('pdf')->render());
+       }
+
+       /**
+        * Tests the return of an icon for a file with extension png
+        *
+        * @test
+        */
+       public function getIconForFileWithFileTypePngReturnsPngSprite() {
+               $this->assertContains('<span class="icon icon-size-default icon-state-default icon-mimetypes-media-image">',
+                       $this->subject->getIconForFileExtension('png')->render());
+       }
+
+       //
+       // Tests for getIconForResource
+       //
+
+       /**
+        * @test
+        */
+       public function getIconForResourceReturnsCorrectMarkupForFileResources() {
+               $resourceProphecy = $this->prophesize(File::class);
+               $resourceProphecy->isMissing()->willReturn(FALSE);
+               $resourceProphecy->getExtension()->willReturn('pdf');
+
+               $this->assertContains('<span class="icon icon-size-default icon-state-default icon-mimetypes-pdf">',
+                       $this->subject->getIconForResource($resourceProphecy->reveal())->render());
+       }
+
 }
 }
index e3efd9c..2bb6d8a 100644 (file)
@@ -54,6 +54,7 @@ class FormatsViewHelper extends AbstractViewHelper implements CompilableInterfac
         * @return string
         */
        static public function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext) {
         * @return string
         */
        static public function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext) {
+               /** @var \TYPO3\CMS\Documentation\Domain\Model\DocumentTranslation $documentTranslation */
                $documentTranslation = $arguments['documentTranslation'];
 
                $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
                $documentTranslation = $arguments['documentTranslation'];
 
                $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
@@ -64,6 +65,7 @@ class FormatsViewHelper extends AbstractViewHelper implements CompilableInterfac
                        'sxw' => '<a class="btn btn-default disabled">' . $emptyIcon . '</a>'
                );
                $formats = $documentTranslation->getFormats();
                        'sxw' => '<a class="btn btn-default disabled">' . $emptyIcon . '</a>'
                );
                $formats = $documentTranslation->getFormats();
+               $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
 
                foreach ($formats as $format) {
                        $output = '';
 
                foreach ($formats as $format) {
                        $output = '';
@@ -89,7 +91,7 @@ class FormatsViewHelper extends AbstractViewHelper implements CompilableInterfac
                                $format->getFormat()
                        );
                        $output .= ' title="' . htmlspecialchars($title) . '">';
                                $format->getFormat()
                        );
                        $output .= ' title="' . htmlspecialchars($title) . '">';
-                       $spriteIconHtml = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForFile($extension);
+                       $spriteIconHtml = $iconFactory->getIconForFileExtension($extension, Icon::SIZE_SMALL)->render();
                        $output .= $spriteIconHtml . '</a>' . LF;
                        $keyFormat = $format->getFormat();
                        if ($keyFormat === 'json') {
                        $output .= $spriteIconHtml . '</a>' . LF;
                        $keyFormat = $format->getFormat();
                        if ($keyFormat === 'json') {
index 0eb7beb..c71fef1 100644 (file)
@@ -15,6 +15,8 @@ namespace TYPO3\CMS\Filelist;
  */
 
 use TYPO3\CMS\Backend\Utility\BackendUtility;
  */
 
 use TYPO3\CMS\Backend\Utility\BackendUtility;
+use TYPO3\CMS\Core\Imaging\Icon;
+use TYPO3\CMS\Core\Imaging\IconFactory;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
@@ -45,16 +47,15 @@ class FileFacade {
         */
        public function __construct(\TYPO3\CMS\Core\Resource\FileInterface $resource) {
                $this->resource = $resource;
         */
        public function __construct(\TYPO3\CMS\Core\Resource\FileInterface $resource) {
                $this->resource = $resource;
+               $this->iconFactory = GeneralUtility::makeInstance(IconFactory::class);
        }
 
        /**
         * @return string
         */
        public function getIcon() {
        }
 
        /**
         * @return string
         */
        public function getIcon() {
-               return \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForResource(
-                       $this->resource,
-                       array('title' => $this->resource->getName() . ' [' . (int)$this->resource->getProperty('uid') . ']')
-               );
+               $title = htmlspecialchars($this->resource->getName(). ' [' . (int)$this->resource->getProperty('uid') . ']');
+               return '<span title="' . $title . '">' . $this->iconFactory->getIconForResource($this->resource, Icon::SIZE_SMALL) . '</span>';
        }
 
        /**
        }
 
        /**
index a1884b6..ecb618a 100644 (file)
@@ -248,19 +248,18 @@ class FileList extends AbstractRecordList {
                );
                // Makes the code for the folder icon in the top
                if ($folderObject) {
                );
                // Makes the code for the folder icon in the top
                if ($folderObject) {
-                       $title = htmlspecialchars($folderObject->getReadablePath());
+                       $title = $folderObject->getReadablePath();
                        // Start compiling the HTML
                        // If this is some subFolder under the mount root....
                        if ($folderObject->getStorage()->isWithinFileMountBoundaries($folderObject)) {
                                // The icon with link
                        // Start compiling the HTML
                        // If this is some subFolder under the mount root....
                        if ($folderObject->getStorage()->isWithinFileMountBoundaries($folderObject)) {
                                // The icon with link
-                               $otherMarkers['PAGE_ICON'] = IconUtility::getSpriteIconForResource($folderObject, array('title' => $title));
-                               // No HTML specialchars here - HTML like <strong> </strong> is allowed
-                               $otherMarkers['TITLE'] .= GeneralUtility::removeXSS(GeneralUtility::fixed_lgd_cs($title, -($this->fixedL + 20)));
+                               $otherMarkers['PAGE_ICON'] = '<span title="' . htmlspecialchars($title) . '">' . $this->iconFactory->getIconForResource($folderObject, Icon::SIZE_SMALL) . '</span>';
                        } else {
                                // This is the root folder
                        } else {
                                // This is the root folder
-                               $otherMarkers['PAGE_ICON'] = IconUtility::getSpriteIconForResource($folderObject, array('title' => $title, 'mount-root' => TRUE));
-                               $otherMarkers['TITLE'] .= htmlspecialchars(GeneralUtility::fixed_lgd_cs($title, -($this->fixedL + 20)));
+                               $otherMarkers['PAGE_ICON'] = '<span title="' . htmlspecialchars($title) . '">' . $this->iconFactory->getIconForResource($folderObject, Icon::SIZE_SMALL, NULL, array('mount-root' => TRUE)) . '</span>';
                        }
                        }
+                       $otherMarkers['TITLE'] .= htmlspecialchars(GeneralUtility::fixed_lgd_cs($title, -($this->fixedL + 20)));
+
                        if ($this->clickMenus) {
                                $otherMarkers['PAGE_ICON'] = $this->fileListController->doc->wrapClickMenuOnIcon($otherMarkers['PAGE_ICON'], $folderObject->getCombinedIdentifier());
                        }
                        if ($this->clickMenus) {
                                $otherMarkers['PAGE_ICON'] = $this->fileListController->doc->wrapClickMenuOnIcon($otherMarkers['PAGE_ICON'], $folderObject->getCombinedIdentifier());
                        }
@@ -521,7 +520,7 @@ class FileList extends AbstractRecordList {
                        $this->counter++;
 
                        // The icon with link
                        $this->counter++;
 
                        // The icon with link
-                       $theIcon = IconUtility::getSpriteIconForResource($folderObject, array('title' => $folderName));
+                       $theIcon = '<span title="' . htmlspecialchars($folderName) . '">' . $this->iconFactory->getIconForResource($folderObject, Icon::SIZE_SMALL) . '</span>';
                        if (!$isLocked && $this->clickMenus) {
                                $theIcon = $this->fileListController->doc->wrapClickMenuOnIcon($theIcon, $folderObject->getCombinedIdentifier());
                        }
                        if (!$isLocked && $this->clickMenus) {
                                $theIcon = $this->fileListController->doc->wrapClickMenuOnIcon($theIcon, $folderObject->getCombinedIdentifier());
                        }
@@ -657,7 +656,8 @@ class FileList extends AbstractRecordList {
                        $ext = $fileObject->getExtension();
                        $fileName = trim($fileObject->getName());
                        // The icon with link
                        $ext = $fileObject->getExtension();
                        $fileName = trim($fileObject->getName());
                        // The icon with link
-                       $theIcon = IconUtility::getSpriteIconForResource($fileObject, array('title' => $fileName . ' [' . (int)$fileObject->getUid() . ']'));
+                       $theIcon = '<span title="' . htmlspecialchars($fileName . ' [' . (int)$fileObject->getUid() . ']') . '">'
+                               . $this->iconFactory->getIconForResource($fileObject, Icon::SIZE_SMALL) . '</span>';
                        if ($this->clickMenus) {
                                $theIcon = $this->fileListController->doc->wrapClickMenuOnIcon($theIcon, $fileObject->getCombinedIdentifier());
                        }
                        if ($this->clickMenus) {
                                $theIcon = $this->fileListController->doc->wrapClickMenuOnIcon($theIcon, $fileObject->getCombinedIdentifier());
                        }
index edec698..437b276 100755 (executable)
@@ -1803,7 +1803,7 @@ class ElementBrowser {
                }
                // Create header element; The folder from which files are listed.
                $titleLen = (int)$this->getBackendUser()->uc['titleLen'];
                }
                // Create header element; The folder from which files are listed.
                $titleLen = (int)$this->getBackendUser()->uc['titleLen'];
-               $folderIcon = IconUtility::getSpriteIconForResource($folder);
+               $folderIcon = $this->iconFactory->getIconForResource($folder, Icon::SIZE_SMALL);
                $folderIcon .= htmlspecialchars(GeneralUtility::fixed_lgd_cs($folder->getIdentifier(), $titleLen));
                $selected = '';
                if ($this->curUrlInfo['act'] == 'folder' && $currentIdentifier == $folder->getCombinedIdentifier()) {
                $folderIcon .= htmlspecialchars(GeneralUtility::fixed_lgd_cs($folder->getIdentifier(), $titleLen));
                $selected = '';
                if ($this->curUrlInfo['act'] == 'folder' && $currentIdentifier == $folder->getCombinedIdentifier()) {
@@ -1841,7 +1841,7 @@ class ElementBrowser {
                                        $fileIdentifier = $fileOrFolderObject->getUid();
                                        // Get size and icon:
                                        $size = ' (' . GeneralUtility::formatSize($fileOrFolderObject->getSize()) . 'bytes)';
                                        $fileIdentifier = $fileOrFolderObject->getUid();
                                        // Get size and icon:
                                        $size = ' (' . GeneralUtility::formatSize($fileOrFolderObject->getSize()) . 'bytes)';
-                                       $icon = IconUtility::getSpriteIconForResource($fileOrFolderObject, array('title' => $fileOrFolderObject->getName() . $size));
+                                       $icon = '<span title="' . htmlspecialchars($fileOrFolderObject->getName() . $size) . '">' . $this->iconFactory->getIconForResource($fileOrFolderObject, Icon::SIZE_SMALL) . '</span>';
                                        $itemUid = 'file:' . $fileIdentifier;
                                }
                                $selected = '';
                                        $itemUid = 'file:' . $fileIdentifier;
                                }
                                $selected = '';
@@ -1902,7 +1902,7 @@ class ElementBrowser {
                $titleLen = (int)$this->getBackendUser()->uc['titleLen'];
                // Create the header of current folder:
                if ($folder) {
                $titleLen = (int)$this->getBackendUser()->uc['titleLen'];
                // Create the header of current folder:
                if ($folder) {
-                       $folderIcon = IconUtility::getSpriteIconForResource($folder);
+                       $folderIcon = $this->iconFactory->getIconForResource($folder, Icon::SIZE_SMALL);
                        $lines[] = '<tr class="t3-row-header">
                                <td colspan="4">' . $folderIcon
                                . htmlspecialchars(GeneralUtility::fixed_lgd_cs($folder->getIdentifier(), $titleLen)) . '</td>
                        $lines[] = '<tr class="t3-row-header">
                                <td colspan="4">' . $folderIcon
                                . htmlspecialchars(GeneralUtility::fixed_lgd_cs($folder->getIdentifier(), $titleLen)) . '</td>
@@ -1941,7 +1941,7 @@ class ElementBrowser {
                        }
                        // Create file icon:
                        $size = ' (' . GeneralUtility::formatSize($fileObject->getSize()) . 'bytes' . ($pDim ? ', ' . $pDim : '') . ')';
                        }
                        // Create file icon:
                        $size = ' (' . GeneralUtility::formatSize($fileObject->getSize()) . 'bytes' . ($pDim ? ', ' . $pDim : '') . ')';
-                       $icon = IconUtility::getSpriteIconForResource($fileObject, array('title' => $fileObject->getName() . $size));
+                       $icon = '<span title="' . htmlspecialchars($fileObject->getName() . $size) . '">' . $this->iconFactory->getIconForResource($fileObject, Icon::SIZE_SMALL) . '</span>';
                        // Create links for adding the file:
                        $filesIndex = count($this->elements);
                        $this->elements['file_' . $filesIndex] = array(
                        // Create links for adding the file:
                        $filesIndex = count($this->elements);
                        $this->elements['file_' . $filesIndex] = array(
@@ -2162,7 +2162,7 @@ class ElementBrowser {
                                );
                                $pDim = $imgInfo[0] . 'x' . $imgInfo[1] . ' pixels';
                                $size = ' (' . GeneralUtility::formatSize($fileObject->getSize()) . 'bytes' . ($pDim ? ', ' . $pDim : '') . ')';
                                );
                                $pDim = $imgInfo[0] . 'x' . $imgInfo[1] . ' pixels';
                                $size = ' (' . GeneralUtility::formatSize($fileObject->getSize()) . 'bytes' . ($pDim ? ', ' . $pDim : '') . ')';
-                               $filenameAndIcon = IconUtility::getSpriteIconForResource($fileObject, array('title' => $fileObject->getName() . $size));
+                               $filenameAndIcon = '<span title="' . htmlspecialchars($fileObject->getName() . $size) . '">' . $this->iconFactory->getIconForResource($fileObject, Icon::SIZE_SMALL) . '</span>';
                                if (GeneralUtility::_GP('noLimit')) {
                                        $maxW = 10000;
                                        $maxH = 10000;
                                if (GeneralUtility::_GP('noLimit')) {
                                        $maxW = 10000;
                                        $maxH = 10000;
index 0e426bf..27cd1f6 100644 (file)
@@ -10631,12 +10631,6 @@ fieldset[disabled] .table .btn-default.active {
 .table .col-icon .t3-icon {
   margin: 0;
 }
 .table .col-icon .t3-icon {
   margin: 0;
 }
-.table .col-icon img {
-  margin: 0;
-  display: block;
-  height: 16px;
-  width: 16px;
-}
 .table .col-icon,
 .table .col-checkbox {
   padding-right: 0;
 .table .col-icon,
 .table .col-checkbox {
   padding-right: 0;