rails_admin_image_manager 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +125 -0
- data/Rakefile +36 -0
- data/app/assets/config/rails_admin_image_manager_manifest.js +2 -0
- data/app/assets/fonts/FontAwesome.otf +0 -0
- data/app/assets/fonts/Simple-Line-Icons.eot +0 -0
- data/app/assets/fonts/Simple-Line-Icons.svg +1369 -0
- data/app/assets/fonts/Simple-Line-Icons.ttf +0 -0
- data/app/assets/fonts/Simple-Line-Icons.woff +0 -0
- data/app/assets/fonts/fontawesome-webfont.eot +0 -0
- data/app/assets/fonts/fontawesome-webfont.svg +2671 -0
- data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/app/assets/fonts/fontawesome-webfont.woff +0 -0
- data/app/assets/fonts/fontawesome-webfont.woff2 +0 -0
- data/app/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/app/assets/fonts/glyphicons-halflings-regular.svg +288 -0
- data/app/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/app/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/app/assets/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/app/assets/images/rails_admin_image_manager/image.png +0 -0
- data/app/assets/javascripts/rails_admin_image_manager/app-compiled.js.erb +34896 -0
- data/app/assets/javascripts/rails_admin_image_manager/app-vue.js +51 -0
- data/app/assets/javascripts/rails_admin_image_manager/application.js +17 -0
- data/app/assets/javascripts/rails_admin_image_manager/base.js.erb +62 -0
- data/app/assets/javascripts/rails_admin_image_manager/ckeditor_plugin.js.erb +58 -0
- data/app/assets/javascripts/rails_admin_image_manager/components/confirmationOverlay.vue +69 -0
- data/app/assets/javascripts/rails_admin_image_manager/components/imageInsertButton.vue +41 -0
- data/app/assets/javascripts/rails_admin_image_manager/components/imageInsertOverlay.vue +92 -0
- data/app/assets/javascripts/rails_admin_image_manager/components/imageListing.vue +167 -0
- data/app/assets/javascripts/rails_admin_image_manager/components/imageShow.vue +112 -0
- data/app/assets/javascripts/rails_admin_image_manager/components/imageTagSelector.vue +94 -0
- data/app/assets/javascripts/rails_admin_image_manager/components/imageUpload.vue +94 -0
- data/app/assets/javascripts/rails_admin_image_manager/components/listingFilter.vue +32 -0
- data/app/assets/javascripts/rails_admin_image_manager/components/notificationOverlay.vue +47 -0
- data/app/assets/javascripts/rails_admin_image_manager/components/progressOverlay.vue +37 -0
- data/app/assets/javascripts/rails_admin_image_manager/components/searchAutocomplete.vue +140 -0
- data/app/assets/javascripts/rails_admin_image_manager/editor/image_manager_picker.js.erb +41 -0
- data/app/assets/javascripts/rails_admin_image_manager/filters/index.js +7 -0
- data/app/assets/javascripts/rails_admin_image_manager/libs/helpers.js +13 -0
- data/app/assets/javascripts/rails_admin_image_manager/libs/lazyload.js +63 -0
- data/app/assets/javascripts/rails_admin_image_manager/router/index.js +55 -0
- data/app/assets/javascripts/rails_admin_image_manager/stores/ckeditor.js +25 -0
- data/app/assets/javascripts/rails_admin_image_manager/stores/index.js +16 -0
- data/app/assets/javascripts/rails_admin_image_manager/stores/medias.js +342 -0
- data/app/assets/javascripts/rails_admin_image_manager/stores/overlay.js +57 -0
- data/app/assets/javascripts/rails_admin_image_manager/stores/railsAdmin.js +28 -0
- data/app/assets/javascripts/rails_admin_image_manager/vendors/fuse.min.js +9 -0
- data/app/assets/javascripts/rails_admin_image_manager/vendors/oneui.min.js +8 -0
- data/app/assets/javascripts/rails_admin_image_manager/vendors/underscore.min.js +6 -0
- data/app/assets/stylesheets/rails_admin_image_manager/_font.scss +2845 -0
- data/app/assets/stylesheets/rails_admin_image_manager/application.css +16 -0
- data/app/assets/stylesheets/rails_admin_image_manager/global.css.erb +3723 -0
- data/app/assets/stylesheets/rails_admin_image_manager/global.sass +1 -0
- data/app/assets/stylesheets/rails_admin_image_manager/vendors/bootstrap.min.css +5 -0
- data/app/assets/stylesheets/rails_admin_image_manager/vendors/oneui.css +8865 -0
- data/app/controllers/rails_admin_image_manager/application_controller.rb +41 -0
- data/app/controllers/rails_admin_image_manager/home_controller.rb +8 -0
- data/app/controllers/rails_admin_image_manager/images_controller.rb +117 -0
- data/app/helpers/rails_admin_image_manager/application_helper.rb +4 -0
- data/app/jobs/rails_admin_image_manager/application_job.rb +4 -0
- data/app/models/rails_admin_image_manager/application_record.rb +5 -0
- data/app/models/rails_admin_image_manager/file.rb +78 -0
- data/app/models/rails_admin_image_manager/tag.rb +41 -0
- data/app/views/layouts/rails_admin_image_manager/application.html.erb +26 -0
- data/app/views/rails_admin/main/_form_image_manager_picker.html.erb +45 -0
- data/app/views/rails_admin_image_manager/images/index.html.erb +2 -0
- data/config/initializers/rails_admin/image_manager_file.rb +87 -0
- data/config/initializers/rails_admin/image_manager_tag.rb +22 -0
- data/config/locales/rails_admin_image_manager.en.yml +33 -0
- data/config/locales/rails_admin_image_manager.fr.yml +33 -0
- data/config/routes.rb +12 -0
- data/db/migrate/20170626000000_create_image_manager.rb +37 -0
- data/lib/dynamic_paperclip_patch.rb +92 -0
- data/lib/generators/rails_admin_image_manager/install/install_generator.rb +22 -0
- data/lib/paperclip_patch.rb +22 -0
- data/lib/rails_admin_image_manager.rb +46 -0
- data/lib/rails_admin_image_manager/engine.rb +36 -0
- data/lib/rails_admin_image_manager/has_managed_file.rb +47 -0
- data/lib/rails_admin_image_manager/rails_admin/config/fields/types/image_manager_picker.rb +49 -0
- data/lib/rails_admin_image_manager/version.rb +3 -0
- data/lib/tasks/rails_admin_image_manager_tasks.rake +4 -0
- metadata +253 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
module RailsAdminImageManager
|
2
|
+
class ApplicationController < ActionController::Base
|
3
|
+
|
4
|
+
protect_from_forgery with: :exception
|
5
|
+
|
6
|
+
before_action :_authenticate!
|
7
|
+
before_action :_authorize!
|
8
|
+
before_action :_check_permissions
|
9
|
+
|
10
|
+
def _current_user
|
11
|
+
instance_eval(&RailsAdmin::Config.current_user_method)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def _authenticate!
|
17
|
+
instance_eval(&RailsAdmin::Config.authenticate_with)
|
18
|
+
end
|
19
|
+
|
20
|
+
def _authorize!
|
21
|
+
instance_eval(&RailsAdmin::Config.authorize_with)
|
22
|
+
end
|
23
|
+
|
24
|
+
def _check_permissions(action=:read)
|
25
|
+
@authorization_adapter.try(:authorize, action, file_model)
|
26
|
+
end
|
27
|
+
|
28
|
+
def file_model
|
29
|
+
RailsAdmin::AbstractModel.new(to_model_name("::RailsAdminImageManager::File"))
|
30
|
+
end
|
31
|
+
|
32
|
+
def to_model_name(param)
|
33
|
+
param.split('~').collect(&:camelize).join('::')
|
34
|
+
end
|
35
|
+
|
36
|
+
def filter_by?(param)
|
37
|
+
params[param].present?
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
module RailsAdminImageManager
|
2
|
+
class ImagesController < RailsAdminImageManager::ApplicationController
|
3
|
+
|
4
|
+
def index
|
5
|
+
respond_to do |format|
|
6
|
+
format.html {
|
7
|
+
@tags = RailsAdminImageManager::Tag.with_files
|
8
|
+
}
|
9
|
+
|
10
|
+
format.json {
|
11
|
+
images = RailsAdminImageManager::File.select(:id, :name, :image_file_name, :created_at).order(:name).page(params[:page])
|
12
|
+
images = images.filter_by_text(params[:search]) if filter_by?(:search)
|
13
|
+
images = images.filter_by_tags(params[:tags].map{|i| i.to_i }) if filter_by?(:tags)
|
14
|
+
images = images.order_by_date(params[:date]) if filter_by?(:date)
|
15
|
+
images = images.order_by_title(params[:title]) if filter_by?(:title)
|
16
|
+
|
17
|
+
images.each do |image|
|
18
|
+
image.src = image.image.url(:index)
|
19
|
+
end
|
20
|
+
|
21
|
+
data = { items: images, total_count: images.total_count, limit_value: images.limit_value, readonly: readonly? }
|
22
|
+
|
23
|
+
render json: data, methods: [:src, :tags_list], status: :ok
|
24
|
+
}
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def tags
|
29
|
+
respond_to do |format|
|
30
|
+
format.json {
|
31
|
+
tags = RailsAdminImageManager::Tag.with_files
|
32
|
+
render json: tags, status: :ok
|
33
|
+
}
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def new
|
38
|
+
_check_permissions(:create)
|
39
|
+
render json: {msg: 'ok'}, status: :ok
|
40
|
+
end
|
41
|
+
|
42
|
+
def show
|
43
|
+
_check_permissions(:update)
|
44
|
+
|
45
|
+
image = RailsAdminImageManager::File.select(:id, :name, :description, :copyright, :image_file_name).find_by!(id: params[:id])
|
46
|
+
image.src = image.image.url(:show)
|
47
|
+
image.src_for_wysiwyg = {width: params[:width], height: params[:height]} if filter_by?(:width) && filter_by?(:height)
|
48
|
+
|
49
|
+
data = { image: image, readonly: readonly? }
|
50
|
+
|
51
|
+
render json: data, methods: [:src, :src_for_wysiwyg, :tags_list], status: :ok
|
52
|
+
end
|
53
|
+
|
54
|
+
def update
|
55
|
+
_check_permissions(:update)
|
56
|
+
|
57
|
+
my_params = images_params
|
58
|
+
image = RailsAdminImageManager::File.find(my_params[:id])
|
59
|
+
|
60
|
+
# Handling dynamic tag creating when receiving a string
|
61
|
+
tags = []
|
62
|
+
images_params[:tags].each do |tag_string|
|
63
|
+
tags << RailsAdminImageManager::Tag.retrieve_or_create_tag(tag_string)
|
64
|
+
end
|
65
|
+
my_params[:tags] = tags
|
66
|
+
|
67
|
+
# Updating image object
|
68
|
+
if image.present? && image.update_attributes(my_params)
|
69
|
+
render json: image, status: :ok
|
70
|
+
else
|
71
|
+
render json: image.errors, status: :unprocessable_entity
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def create
|
76
|
+
_check_permissions(:create)
|
77
|
+
|
78
|
+
my_params = images_params
|
79
|
+
|
80
|
+
# Handling dynamic tag creating when receiving a string
|
81
|
+
tags = []
|
82
|
+
images_params[:tags].each do |tag_string|
|
83
|
+
tags << RailsAdminImageManager::Tag.retrieve_or_create_tag(tag_string)
|
84
|
+
end
|
85
|
+
my_params[:tags] = tags
|
86
|
+
|
87
|
+
image = RailsAdminImageManager::File.new(my_params)
|
88
|
+
if image.save()
|
89
|
+
render json: image, status: :ok
|
90
|
+
else
|
91
|
+
render json: image.errors, status: :unprocessable_entity
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def destroy
|
96
|
+
_check_permissions(:destroy)
|
97
|
+
|
98
|
+
image = RailsAdminImageManager::File.find(params[:id])
|
99
|
+
if image.destroy
|
100
|
+
render json: image, status: :ok
|
101
|
+
else
|
102
|
+
render json: image.errors, status: :unprocessable_entity
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
private
|
107
|
+
|
108
|
+
def readonly?
|
109
|
+
return false if @authorization_adapter.nil?
|
110
|
+
!@authorization_adapter.authorized?(:update, file_model)
|
111
|
+
end
|
112
|
+
|
113
|
+
def images_params
|
114
|
+
params.require(:image).permit(:id, :name, :description, :copyright, :src, :image_file_name, tags: [])
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'kaminari'
|
2
|
+
|
3
|
+
module RailsAdminImageManager
|
4
|
+
class File < ApplicationRecord
|
5
|
+
|
6
|
+
# == Extensions ===========================================================
|
7
|
+
|
8
|
+
paginates_per RailsAdminImageManager.options[:paginates_per]
|
9
|
+
|
10
|
+
# == Constants ============================================================
|
11
|
+
|
12
|
+
# == Attributes ===========================================================
|
13
|
+
|
14
|
+
has_dynamic_attached_file :image, styles: { show: '680x480', index: '250x250#', rails_admin: '75x75' }, url: '/rails_admin_image_manager/:id/:style/:filename'
|
15
|
+
|
16
|
+
attr_accessor :src
|
17
|
+
attr_accessor :src_for_wysiwyg
|
18
|
+
|
19
|
+
# == Callbacks ============================================================
|
20
|
+
before_validation :decode_base64_image
|
21
|
+
|
22
|
+
# == Relationships ========================================================
|
23
|
+
|
24
|
+
has_and_belongs_to_many :tags, class_name: 'RailsAdminImageManager::Tag', join_table: 'image_manager_files_tags', foreign_key: :image_manager_file_id, association_foreign_key: :image_manager_tag_id
|
25
|
+
|
26
|
+
accepts_nested_attributes_for :tags
|
27
|
+
# == Validations ==========================================================
|
28
|
+
|
29
|
+
validates_presence_of :name
|
30
|
+
|
31
|
+
validates_attachment :image, presence: true, content_type: { content_type: /\Aimage\/.*\Z/ }
|
32
|
+
|
33
|
+
# == Scopes ===============================================================
|
34
|
+
|
35
|
+
scope :filter_by_text, -> (text) { where("image_manager_files.name LIKE ? OR image_manager_files.description LIKE ?", "%#{text}%", "%#{text}%") }
|
36
|
+
scope :filter_by_tags, -> (tags) { joins(:tags).where('image_manager_files_tags.image_manager_tag_id IN (?)', tags).distinct }
|
37
|
+
scope :order_by_date, -> (term) { order("created_at #{term}") }
|
38
|
+
scope :order_by_title, -> (term) { order("name #{term}") }
|
39
|
+
|
40
|
+
# == Instance Methods =====================================================
|
41
|
+
|
42
|
+
# To avoid the 500 error when the foreign key constraint fails
|
43
|
+
def destroy
|
44
|
+
begin
|
45
|
+
super
|
46
|
+
rescue
|
47
|
+
return false
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def decode_base64_image
|
52
|
+
if src.present? && src.include?('data:image')
|
53
|
+
new_image = Paperclip.io_adapters.for(src)
|
54
|
+
new_image.original_filename = image_file_name
|
55
|
+
self.image = new_image
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def src_for_wysiwyg=(params)
|
60
|
+
width = params[:width].to_i
|
61
|
+
height = params[:height].to_i
|
62
|
+
if width > 0 && height > 0
|
63
|
+
@src_for_wysiwyg = image.dynamic_url("#{width}x#{height}")
|
64
|
+
else
|
65
|
+
@src_for_wysiwyg = image(:rails_admin)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def tags_list
|
70
|
+
tags.collect { |t| t.name }
|
71
|
+
end
|
72
|
+
|
73
|
+
# == Class Methods ========================================================
|
74
|
+
|
75
|
+
self.table_name = 'image_manager_files'
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module RailsAdminImageManager
|
2
|
+
class Tag < ApplicationRecord
|
3
|
+
|
4
|
+
# == Extensions ===========================================================
|
5
|
+
|
6
|
+
# == Constants ============================================================
|
7
|
+
|
8
|
+
# == Attributes ===========================================================
|
9
|
+
|
10
|
+
# == Callbacks ============================================================
|
11
|
+
|
12
|
+
# == Relationships ========================================================
|
13
|
+
|
14
|
+
has_and_belongs_to_many :files, class_name: 'RailsAdminImageManager::File', join_table: 'image_manager_files_tags', foreign_key: :image_manager_tag_id, association_foreign_key: :image_manager_file_id
|
15
|
+
|
16
|
+
# == Validations ==========================================================
|
17
|
+
|
18
|
+
validates_presence_of :name
|
19
|
+
|
20
|
+
validates_uniqueness_of :name
|
21
|
+
|
22
|
+
# == Scopes ===============================================================
|
23
|
+
|
24
|
+
scope :with_files, -> { joins(:files).distinct }
|
25
|
+
|
26
|
+
# == Instance Methods =====================================================
|
27
|
+
|
28
|
+
# == Class Methods ========================================================
|
29
|
+
|
30
|
+
self.table_name = 'image_manager_tags'
|
31
|
+
|
32
|
+
def self.retrieve_or_create_tag(tag_string)
|
33
|
+
tag = RailsAdminImageManager::Tag.find_by({name: tag_string})
|
34
|
+
if tag.present?
|
35
|
+
return tag
|
36
|
+
else
|
37
|
+
return RailsAdminImageManager::Tag.new({name: tag_string})
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Rails admin image manager</title>
|
5
|
+
<%= stylesheet_link_tag "rails_admin_image_manager/application", media: "all" %>
|
6
|
+
<%= javascript_include_tag "rails_admin_image_manager/application" %>
|
7
|
+
<%= csrf_meta_tags %>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<script type="text/javascript">
|
11
|
+
window.AJAX_ENDPOINT = "<%= root_path %>"
|
12
|
+
</script>
|
13
|
+
<div id="vue-image-manager" data-default-path="<%= images_path %>"
|
14
|
+
<%== (params["CKEditor"].present?) ? "ck-id=\"#{params["CKEditor"]}\" ck-fn=\"#{params["CKEditorFuncNum"]}\"" : '' %>
|
15
|
+
<%== (params["selectImage"].present?) ? " ck-selected-image-id=\"#{params["selectImage"]}\"" : '' %>
|
16
|
+
<%== (params["inputId"].present?) ? " input-id=\"#{params["inputId"]}\"" : '' %>
|
17
|
+
>
|
18
|
+
<%= yield %>
|
19
|
+
<progress-overlay></progress-overlay>
|
20
|
+
<image-insert-overlay></image-insert-overlay>
|
21
|
+
<notification-overlay></notification-overlay>
|
22
|
+
<confirmation-overlay></confirmation-overlay>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
</body>
|
26
|
+
</html>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<%= javascript_include_tag 'rails_admin_image_manager/base' %>
|
2
|
+
|
3
|
+
<%= form.send field.view_helper, field.method_name, field.html_attributes.merge({style: (field.editor_options[:hidden_input]==true ? "visibility:hidden;position:absolute" : "")}) %>
|
4
|
+
<%= image_tag field.preview_image_path, style: "padding: 0 0 10px; display: block;", data: {'manager-preview': form.dom_id(field)} %>
|
5
|
+
|
6
|
+
<%= link_to t(field.value.present? ? 'admin.image_manager_picker.edit' : 'admin.image_manager_picker.browse').capitalize, RailsAdminImageManager.editor[:imageManagerBrowserUrl], class: "btn btn-default js-image-manager-picker-browse" %>
|
7
|
+
|
8
|
+
<% # The deselect button for rails %>
|
9
|
+
<% if field.value.present? && !form.object.class.managed_file_is_mandatory?(field.method_name) %>
|
10
|
+
<a class="btn btn-default" data-toggle="button" href="#" onclick="$(this).siblings('[type=checkbox]').click(); $(this).siblings('.toggle').toggle('slow'); jQuery(this).toggleClass('btn-danger btn-info'); return false">
|
11
|
+
<i class="icon-black icon-trash"></i>
|
12
|
+
<%= t('admin.image_manager_picker.deselect') %>
|
13
|
+
</a>
|
14
|
+
<%= form.check_box field.delete_method, style: 'display:none;' %>
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
<% # The deselect button for JS %>
|
18
|
+
<% if !field.value.present? && !form.object.class.managed_file_is_mandatory?(field.method_name) %>
|
19
|
+
<a id="deselect_<%=form.dom_id(field)%>" style="display:none;" class="btn btn-default js-image-manager-deselect" data-toggle="button" href="#">
|
20
|
+
<i class="icon-black icon-trash"></i>
|
21
|
+
<%= t('admin.image_manager_picker.deselect') %>
|
22
|
+
</a>
|
23
|
+
<% end %>
|
24
|
+
|
25
|
+
<script type="text/javascript">
|
26
|
+
$(function(){
|
27
|
+
$('#<%=form.dom_id(field)%>_field a.js-image-manager-picker-browse').click(function(e){
|
28
|
+
e.preventDefault();
|
29
|
+
var input = $('#<%=form.dom_id(field)%>')
|
30
|
+
var params = {}
|
31
|
+
params.inputId = "<%= form.dom_id(field) %>"
|
32
|
+
var url = addQueryString('/admin/image-manager/images', params);
|
33
|
+
popup(url, 1105, 500);
|
34
|
+
})
|
35
|
+
})
|
36
|
+
|
37
|
+
$(function(){
|
38
|
+
$('#<%=form.dom_id(field)%>_field a.js-image-manager-deselect').click(function(e){
|
39
|
+
e.preventDefault();
|
40
|
+
$('#<%=form.dom_id(field)%>').val('');
|
41
|
+
$("[data-manager-preview='<%=form.dom_id(field)%>']").attr('src','data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==');
|
42
|
+
$('#deselect_<%=form.dom_id(field)%>').hide();
|
43
|
+
})
|
44
|
+
})
|
45
|
+
</script>
|
@@ -0,0 +1,87 @@
|
|
1
|
+
RailsAdmin.config do |config|
|
2
|
+
config.model RailsAdminImageManager::File do
|
3
|
+
navigation_label I18n.t('admin.navigation_label.file')
|
4
|
+
|
5
|
+
list do
|
6
|
+
field :name do
|
7
|
+
searchable true
|
8
|
+
filterable false
|
9
|
+
end
|
10
|
+
|
11
|
+
field :description do
|
12
|
+
visible false
|
13
|
+
searchable true
|
14
|
+
filterable false
|
15
|
+
end
|
16
|
+
|
17
|
+
field :image do
|
18
|
+
thumb_method :rails_admin
|
19
|
+
searchable true
|
20
|
+
filterable false
|
21
|
+
end
|
22
|
+
|
23
|
+
field :image_file_name do
|
24
|
+
visible false
|
25
|
+
searchable true
|
26
|
+
filterable false
|
27
|
+
end
|
28
|
+
|
29
|
+
field :tags do
|
30
|
+
label I18n.t('activerecord.models.rails_admin_image_manager/tag.other')
|
31
|
+
searchable [{image_manager_tags: :name}]
|
32
|
+
queryable true
|
33
|
+
#filterable false
|
34
|
+
filterable true
|
35
|
+
end
|
36
|
+
|
37
|
+
# This filter has been commented because there is a bug in Rails Admin when using an enum filterable
|
38
|
+
# and a custom searchable param. The search field is treated has a string instead has an enum,
|
39
|
+
# which cause RailsAdmin to crash with the following error when selecting multiple tags:
|
40
|
+
# undefined method `downcase' for ["27", "24"]:Array
|
41
|
+
# rails_admin (1.1.1) lib/rails_admin/adapters/active_record.rb:229:in `build_statement_for_string_or_text'
|
42
|
+
#
|
43
|
+
# field :image_manager_tag_id, :enum do
|
44
|
+
# label I18n.t('activerecord.models.rails_admin_image_manager/tag.other')
|
45
|
+
# visible false
|
46
|
+
# enum do
|
47
|
+
# RailsAdminImageManager::Tag.all.order(:name).map { |c| [c.name, c.id] }
|
48
|
+
# end
|
49
|
+
# searchable [{image_manager_tags: :id}]
|
50
|
+
# filterable true
|
51
|
+
# end
|
52
|
+
end
|
53
|
+
|
54
|
+
edit do
|
55
|
+
field :url do
|
56
|
+
read_only true
|
57
|
+
help ''
|
58
|
+
visible do
|
59
|
+
bindings[:object].id.present?
|
60
|
+
end
|
61
|
+
pretty_value do
|
62
|
+
"<a href='#{bindings[:object].image.url}' target='_blank'>#{bindings[:object].image.url}</a>".html_safe
|
63
|
+
end
|
64
|
+
end
|
65
|
+
field :name
|
66
|
+
field :image do
|
67
|
+
thumb_method :show
|
68
|
+
end
|
69
|
+
field :description
|
70
|
+
field :copyright
|
71
|
+
field :tags do
|
72
|
+
nested_form false
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
show do
|
77
|
+
field :name
|
78
|
+
field :image do
|
79
|
+
thumb_method :show
|
80
|
+
end
|
81
|
+
field :tags
|
82
|
+
field :created_at
|
83
|
+
field :updated_at
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
end
|