Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/helpers/icons_helper.rb')
-rw-r--r--app/helpers/icons_helper.rb74
1 files changed, 44 insertions, 30 deletions
diff --git a/app/helpers/icons_helper.rb b/app/helpers/icons_helper.rb
index bba3fac7468..ebebdfa56e6 100644
--- a/app/helpers/icons_helper.rb
+++ b/app/helpers/icons_helper.rb
@@ -29,9 +29,10 @@ module IconsHelper
ActionController::Base.helpers.image_path('file_icons/file_icons.svg', host: sprite_base_url)
end
- def sprite_icon(icon_name, size: DEFAULT_ICON_SIZE, css_class: nil)
+ def sprite_icon(icon_name, size: DEFAULT_ICON_SIZE, css_class: nil, file_icon: false)
memoized_icon("#{icon_name}_#{size}_#{css_class}") do
- if known_sprites&.exclude?(icon_name)
+ unknown_icon = file_icon ? unknown_file_icon_sprite(icon_name) : unknown_icon_sprite(icon_name)
+ if unknown_icon
exception = ArgumentError.new("#{icon_name} is not a known icon in @gitlab-org/gitlab-svg")
Gitlab::ErrorTracking.track_and_raise_for_dev_exception(exception)
end
@@ -39,10 +40,11 @@ module IconsHelper
css_classes = []
css_classes << "s#{size}" if size
css_classes << css_class.to_s unless css_class.blank?
+ sprite_path = file_icon ? sprite_file_icons_path : sprite_icon_path
content_tag(
:svg,
- content_tag(:use, '', { 'href' => "#{sprite_icon_path}##{icon_name}" }),
+ content_tag(:use, '', { 'href' => "#{sprite_path}##{icon_name}" }),
class: css_classes.empty? ? nil : css_classes.join(' '),
data: { testid: "#{icon_name}-icon" }
)
@@ -123,61 +125,73 @@ module IconsHelper
def file_type_icon_class(type, mode, name)
if type == 'folder'
- icon_class = 'folder-o'
+ 'folder-o'
elsif type == 'archive'
- icon_class = 'archive'
+ 'archive'
elsif mode == '120000'
- icon_class = 'share'
+ 'share'
else
# Guess which icon to choose based on file extension.
# If you think a file extension is missing, feel free to add it on PR
case File.extname(name).downcase
when '.pdf'
- icon_class = 'document'
+ 'document'
when '.jpg', '.jpeg', '.jif', '.jfif',
- '.jp2', '.jpx', '.j2k', '.j2c',
- '.apng', '.png', '.gif', '.tif', '.tiff',
- '.svg', '.ico', '.bmp', '.webp'
- icon_class = 'doc-image'
+ '.jp2', '.jpx', '.j2k', '.j2c',
+ '.apng', '.png', '.gif', '.tif', '.tiff',
+ '.svg', '.ico', '.bmp', '.webp'
+ 'doc-image'
when '.zip', '.zipx', '.tar', '.gz', '.gzip', '.tgz', '.bz', '.bzip',
- '.bz2', '.bzip2', '.car', '.tbz', '.xz', 'txz', '.rar', '.7z',
- '.lz', '.lzma', '.tlz'
- icon_class = 'doc-compressed'
+ '.bz2', '.bzip2', '.car', '.tbz', '.xz', 'txz', '.rar', '.7z',
+ '.lz', '.lzma', '.tlz'
+ 'doc-compressed'
when '.mp3', '.wma', '.ogg', '.oga', '.wav', '.flac', '.aac', '.3ga',
- '.ac3', '.midi', '.m4a', '.ape', '.mpa'
- icon_class = 'volume-up'
+ '.ac3', '.midi', '.m4a', '.ape', '.mpa'
+ 'volume-up'
when '.mp4', '.m4p', '.m4v',
- '.mpg', '.mp2', '.mpeg', '.mpe', '.mpv',
- '.mpg', '.mpeg', '.m2v', '.m2ts',
- '.avi', '.mkv', '.flv', '.ogv', '.mov',
- '.3gp', '.3g2'
- icon_class = 'live-preview'
+ '.mpg', '.mp2', '.mpeg', '.mpe', '.mpv',
+ '.mpg', '.mpeg', '.m2v', '.m2ts',
+ '.avi', '.mkv', '.flv', '.ogv', '.mov',
+ '.3gp', '.3g2'
+ 'live-preview'
when '.doc', '.dot', '.docx', '.docm', '.dotx', '.dotm', '.docb',
- '.odt', '.ott', '.uot', '.rtf'
- icon_class = 'doc-text'
+ '.odt', '.ott', '.uot', '.rtf'
+ 'doc-text'
when '.xls', '.xlt', '.xlm', '.xlsx', '.xlsm', '.xltx', '.xltm',
- '.xlsb', '.xla', '.xlam', '.xll', '.xlw', '.ots', '.ods', '.uos'
- icon_class = 'document'
+ '.xlsb', '.xla', '.xlam', '.xll', '.xlw', '.ots', '.ods', '.uos'
+ 'document'
when '.ppt', '.pot', '.pps', '.pptx', '.pptm', '.potx', '.potm',
- '.ppam', '.ppsx', '.ppsm', '.sldx', '.sldm', '.odp', '.otp', '.uop'
- icon_class = 'doc-chart'
+ '.ppam', '.ppsx', '.ppsm', '.sldx', '.sldm', '.odp', '.otp', '.uop'
+ 'doc-chart'
else
- icon_class = 'doc-text'
+ 'doc-text'
end
end
-
- icon_class
end
private
+ def unknown_icon_sprite(icon_name)
+ known_sprites&.exclude?(icon_name)
+ end
+
+ def unknown_file_icon_sprite(icon_name)
+ known_file_icon_sprites&.exclude?(icon_name)
+ end
+
def known_sprites
return if Rails.env.production?
@known_sprites ||= Gitlab::Json.parse(File.read(Rails.root.join('node_modules/@gitlab/svgs/dist/icons.json')))['icons']
end
+ def known_file_icon_sprites
+ return if Rails.env.production?
+
+ @known_file_icon_sprites ||= Gitlab::Json.parse(File.read(Rails.root.join('node_modules/@gitlab/svgs/dist/file_icons/file_icons.json')))['icons']
+ end
+
def memoized_icon(key)
@rendered_icons ||= {}