oxen_media 0.0.6 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/components/dropzone.js.jsx.coffee +298 -0
- data/app/assets/javascripts/components/photocard.js.jsx.coffee +77 -0
- data/app/assets/javascripts/components/photos.js.jsx.coffee +68 -0
- data/app/assets/javascripts/oxen_media.js +1 -3
- data/app/assets/stylesheets/oxen_media/drop_zone.css +86 -0
- data/app/assets/stylesheets/oxen_media.css +3 -0
- data/app/controllers/photos_controller.rb +26 -0
- data/app/models/ox_photo.rb +17 -0
- data/app/policies/ox_photo_policy.rb +3 -0
- data/app/uploaders/photo_uploader.rb +53 -0
- data/app/views/photos/_photo.html.haml +11 -0
- data/app/views/photos/create.js.haml +1 -0
- data/app/views/photos/index.json.jbuilder +5 -0
- data/lib/oxen_media/version.rb +1 -1
- data/lib/oxen_media.rb +1 -1
- data/oxen_media.gemspec +4 -4
- metadata +15 -86
- data/app/assets/javascripts/jsrender.min.js +0 -4
- data/app/assets/javascripts/jsrender.min.js.map +0 -463
- data/app/assets/javascripts/oxen_media/carrier_wave_cropper.js.coffee +0 -22
- data/app/assets/javascripts/oxen_media/media.js.coffee +0 -469
- data/app/assets/javascripts/oxen_media/medium_pane.js.coffee +0 -107
- data/app/assets/javascripts/templates/selected_files.html +0 -35
- data/app/assets/stylesheets/media.css +0 -10
- data/app/assets/stylesheets/scaffold.css +0 -56
- data/app/controllers/media_controller.rb +0 -106
- data/app/helpers/media_helper.rb +0 -2
- data/app/models/medium.rb +0 -25
- data/app/policies/oxen_medium_policy.rb +0 -12
- data/app/uploaders/medium_uploader.rb +0 -153
- data/app/views/media/_fields.html.haml +0 -42
- data/app/views/media/_form.html.haml +0 -48
- data/app/views/media/_media.html.haml +0 -18
- data/app/views/media/_medium.html.haml +0 -25
- data/app/views/media/_medium_fields.html.haml +0 -4
- data/app/views/media/create.js.haml +0 -2
- data/app/views/media/crop.html.haml +0 -3
- data/app/views/media/edit.html.haml +0 -2
- data/app/views/media/index.html.haml +0 -29
- data/app/views/media/index.json.jbuilder +0 -4
- data/app/views/media/new.html.erb +0 -5
- data/app/views/media/show.html.haml +0 -21
- data/app/views/media/show.json.jbuilder +0 -1
- data/app/views/media/update_crop.js.haml +0 -1
- /data/app/assets/javascripts/{oxen_media/.keep → components/.gitkeep} +0 -0
@@ -1,106 +0,0 @@
|
|
1
|
-
class MediaController < AbstractResourcesController
|
2
|
-
|
3
|
-
def update_crop
|
4
|
-
authorize resource
|
5
|
-
result = resource.new_record? ? resource.save(resource_params) : resource.update_attributes(resource_params)
|
6
|
-
render layout: false
|
7
|
-
end
|
8
|
-
|
9
|
-
def crop
|
10
|
-
authorize resource
|
11
|
-
render layout: false
|
12
|
-
end
|
13
|
-
#
|
14
|
-
# def index
|
15
|
-
# authorize Medium
|
16
|
-
# render :json => resources.collect { |p| p.to_jq_upload }.to_json
|
17
|
-
# end
|
18
|
-
#
|
19
|
-
# def create
|
20
|
-
# authorize Medium
|
21
|
-
# p_attr = resource_params #params[:media]
|
22
|
-
# p_attr[:media] = p_attr[:media].first if p_attr[:media].class == Array
|
23
|
-
#
|
24
|
-
# @resource = Medium.new(p_attr)
|
25
|
-
# if @resource.save
|
26
|
-
# respond_to do |format|
|
27
|
-
# format.html {
|
28
|
-
# render :json => [@resource.to_jq_upload].to_json,
|
29
|
-
# :content_type => 'text/html',
|
30
|
-
# :layout => false
|
31
|
-
# }
|
32
|
-
# format.json {
|
33
|
-
# render :json => { :files => [@resource.to_jq_upload] }
|
34
|
-
# }
|
35
|
-
# end
|
36
|
-
# else
|
37
|
-
# render :json => [{:error => "custom_failure"}], :status => 304
|
38
|
-
# end
|
39
|
-
# end
|
40
|
-
#
|
41
|
-
# def destroy
|
42
|
-
# authorize Medium
|
43
|
-
# @resource = Medium.find(params[:id])
|
44
|
-
# @resource.destroy
|
45
|
-
# render :json => true
|
46
|
-
# end
|
47
|
-
#
|
48
|
-
#
|
49
|
-
|
50
|
-
# before_action :set_medium, only: [:show, :edit, :update, :destroy]
|
51
|
-
#
|
52
|
-
# # GET /media
|
53
|
-
# def index
|
54
|
-
# @media = Medium.all
|
55
|
-
# end
|
56
|
-
#
|
57
|
-
# # GET /media/1
|
58
|
-
# def show
|
59
|
-
# end
|
60
|
-
#
|
61
|
-
# # GET /media/new
|
62
|
-
# def new
|
63
|
-
# @medium = Medium.new
|
64
|
-
# end
|
65
|
-
#
|
66
|
-
# # GET /media/1/edit
|
67
|
-
# def edit
|
68
|
-
# end
|
69
|
-
#
|
70
|
-
# # POST /media
|
71
|
-
# def create
|
72
|
-
# @medium = Medium.new(medium_params)
|
73
|
-
#
|
74
|
-
# if @medium.save
|
75
|
-
# redirect_to @medium, notice: 'Medium was successfully created.'
|
76
|
-
# else
|
77
|
-
# render :new
|
78
|
-
# end
|
79
|
-
# end
|
80
|
-
#
|
81
|
-
# # PATCH/PUT /media/1
|
82
|
-
# def update
|
83
|
-
# if @medium.update(medium_params)
|
84
|
-
# redirect_to @medium, notice: 'Medium was successfully updated.'
|
85
|
-
# else
|
86
|
-
# render :edit
|
87
|
-
# end
|
88
|
-
# end
|
89
|
-
#
|
90
|
-
# # DELETE /media/1
|
91
|
-
# def destroy
|
92
|
-
# @medium.destroy
|
93
|
-
# redirect_to media_url, notice: 'Medium was successfully destroyed.'
|
94
|
-
# end
|
95
|
-
|
96
|
-
private
|
97
|
-
# Use callbacks to share common setup or constraints between actions.
|
98
|
-
# def set_medium
|
99
|
-
# @medium = Medium.find(params[:id])
|
100
|
-
# end
|
101
|
-
|
102
|
-
# Only allow a trusted parameter "white list" through.
|
103
|
-
def resource_params
|
104
|
-
params.require(:medium).permit(:title, :imageable_id, :imageable_type, :medium, :medium_crop_w, :medium_crop_h, :medium_crop_y, :medium_crop_x, :lng_lat, :description)
|
105
|
-
end
|
106
|
-
end
|
data/app/helpers/media_helper.rb
DELETED
data/app/models/medium.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
class Medium < AbstractResource
|
2
|
-
belongs_to :imageable, polymorphic: true
|
3
|
-
belongs_to :account
|
4
|
-
|
5
|
-
mount_uploader :medium, MediumUploader
|
6
|
-
crop_uploaded :medium
|
7
|
-
#
|
8
|
-
# # attr_accessible :upload
|
9
|
-
# # has_attached_file :upload
|
10
|
-
# #
|
11
|
-
include Rails.application.routes.url_helpers
|
12
|
-
|
13
|
-
def to_jq_upload
|
14
|
-
{
|
15
|
-
"name" => self.medium.filename,
|
16
|
-
"size" => self.medium.size,
|
17
|
-
"url" => self.medium.url,
|
18
|
-
"thumbnailUrl" => self.medium.url,
|
19
|
-
"deleteUrl" => media_url(self, host: 'localhost:3000').gsub( '.','/'),
|
20
|
-
"deleteType" => "DELETE"
|
21
|
-
# "error": "Filetype not allowed"
|
22
|
-
}
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
@@ -1,153 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'carrierwave/processing/mime_types'
|
3
|
-
require 'carrierwave/crop'
|
4
|
-
require 'carrierwave'
|
5
|
-
|
6
|
-
class MediumUploader < CarrierWave::Uploader::Base
|
7
|
-
|
8
|
-
# Include RMagick or MiniMagick support:
|
9
|
-
# include CarrierWave::RMagick
|
10
|
-
# include CarrierWave::MiniMagick
|
11
|
-
include CarrierWave::MiniMagick
|
12
|
-
include CarrierWave::MimeTypes
|
13
|
-
include CarrierWave::Crop::Uploader
|
14
|
-
# include CarrierWave::Processing::MiniMagick
|
15
|
-
|
16
|
-
process :set_content_type
|
17
|
-
process crop: :medium, if: :is_image?
|
18
|
-
|
19
|
-
version :thumb do
|
20
|
-
process resize_to_fill: [200, 150], if: :is_image?
|
21
|
-
|
22
|
-
# if self.is_pdf?
|
23
|
-
# asset_path "2.jpg"
|
24
|
-
# elsif is_doc?
|
25
|
-
# asset_path "2.jpg"
|
26
|
-
# else
|
27
|
-
# asset_path "1.JPG"
|
28
|
-
# end
|
29
|
-
end
|
30
|
-
|
31
|
-
# process resize_to_limit: [400, 400]
|
32
|
-
# process :strip # strip image of all profiles and comments
|
33
|
-
# process :resize_to_fill => [200, 200]
|
34
|
-
# process :quality => 90 # Set JPEG/MIFF/PNG compression level (0-100)
|
35
|
-
# # process :convert => 'png'
|
36
|
-
# process :colorspace => :rgb # Set colorspace to rgb or cmyk
|
37
|
-
# process :blur => [0, 8] #reduce image noise and reduce detail levels [radius,sigma]
|
38
|
-
|
39
|
-
def _url version
|
40
|
-
case content_type
|
41
|
-
when /docx?|document$/; "1.JPG"
|
42
|
-
when /pdf$/; "2.jpg"
|
43
|
-
when /^image/; url
|
44
|
-
else default_url
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
|
49
|
-
# if Rails.env.production?
|
50
|
-
# storage :fog
|
51
|
-
# else
|
52
|
-
storage :file
|
53
|
-
# end
|
54
|
-
|
55
|
-
# Override the directory where uploaded files will be stored.
|
56
|
-
# This is a sensible default for uploaders that are meant to be mounted:
|
57
|
-
def store_dir
|
58
|
-
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
59
|
-
end
|
60
|
-
|
61
|
-
# Provide a default URL as a default if there hasn't been a file uploaded:
|
62
|
-
def default_url
|
63
|
-
# For Rails 3.1+ asset pipeline compatibility:
|
64
|
-
ActionController::Base.helpers.asset_path("" + [version_name, "default.jpg"].compact.join('_'))
|
65
|
-
|
66
|
-
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
|
67
|
-
end
|
68
|
-
|
69
|
-
|
70
|
-
resize_to_limit(1024, 768)
|
71
|
-
|
72
|
-
|
73
|
-
# Process files as they are uploaded:
|
74
|
-
# process :scale => [200, 300]
|
75
|
-
#
|
76
|
-
# def scale(width, height)
|
77
|
-
# # do something
|
78
|
-
# end
|
79
|
-
|
80
|
-
|
81
|
-
# Add a white list of extensions which are allowed to be uploaded.
|
82
|
-
# For images you might use something like this:
|
83
|
-
def extension_white_list
|
84
|
-
%w(jpg jpeg gif png)
|
85
|
-
end
|
86
|
-
|
87
|
-
# Override the filename of the uploaded files:
|
88
|
-
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
89
|
-
# def filename
|
90
|
-
# "something.jpg" if original_filename
|
91
|
-
# end
|
92
|
-
|
93
|
-
|
94
|
-
version :large do
|
95
|
-
process :crop
|
96
|
-
end
|
97
|
-
|
98
|
-
version :preview do
|
99
|
-
process :crop
|
100
|
-
resize_to_limit(690, 518)
|
101
|
-
end
|
102
|
-
|
103
|
-
version :thumb do
|
104
|
-
process :crop
|
105
|
-
resize_to_fill(100, 100)
|
106
|
-
end
|
107
|
-
|
108
|
-
|
109
|
-
def crop
|
110
|
-
if model.crop_x.present?
|
111
|
-
manipulate! do |img|
|
112
|
-
x = model.crop_x.to_i
|
113
|
-
y = model.crop_y.to_i
|
114
|
-
w = model.crop_w.to_i
|
115
|
-
h = model.crop_h.to_i
|
116
|
-
img = img.crop(x, y, w, h)
|
117
|
-
img
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
def convert_to_grayscale
|
123
|
-
manipulate! do |img|
|
124
|
-
img.colorspace = Magick::GRAYColorspace
|
125
|
-
img
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
def brightness
|
130
|
-
manipulate! do |img|
|
131
|
-
img.modulate(1.20, 0.5, 1.2)
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
# Override the filename of the uploaded files:
|
136
|
-
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
137
|
-
# def filename
|
138
|
-
# "something.jpg" if original_filename
|
139
|
-
# end
|
140
|
-
|
141
|
-
def is_image? picture
|
142
|
-
picture.content_type =~ /jpg|png|gif/
|
143
|
-
end
|
144
|
-
|
145
|
-
def is_pdf? picture
|
146
|
-
picture.content_type =~ /pdf/
|
147
|
-
end
|
148
|
-
|
149
|
-
def is_doc? picture
|
150
|
-
picture.content_type =~ /docx?$/
|
151
|
-
end
|
152
|
-
|
153
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
-# = f.error_notification
|
2
|
-
.form-inputs
|
3
|
-
.div.hidden
|
4
|
-
= m.input :imageable_id, as: :hidden, wrapper: :info_hidden
|
5
|
-
= m.input :imageable_type, as: :hidden, wrapper: :info_hidden
|
6
|
-
= m.input :lng_lat, as: :hidden, wrapper: :info_hidden
|
7
|
-
|
8
|
-
.form-group.fileupload-buttonbar
|
9
|
-
.row
|
10
|
-
.col.s12
|
11
|
-
// The fileinput-button span is used to style the file input field as button
|
12
|
-
= m.file_field :medium, multiple: true, name: "medium[medium]", id: "medium_medium"
|
13
|
-
%span.btn.hover_green.fileinput-button{ style: "margin-left: 12px"}
|
14
|
-
%i.material-icons add
|
15
|
-
%span.hide-on-med-and-down= t('.add_files')
|
16
|
-
|
17
|
-
%span.btn.hover_green.start
|
18
|
-
%i.material-icons file_upload
|
19
|
-
%span.hide-on-med-and-down= t('.start_upload')
|
20
|
-
|
21
|
-
-# %span.btn.hover_yellow.cancel
|
22
|
-
-# %i.material-icons cancel
|
23
|
-
-# %span.hide-on-med-and-down= t('.cancel_upload')
|
24
|
-
|
25
|
-
%span.btn.delete
|
26
|
-
%i.material-icons delete
|
27
|
-
%span.hide-on-med-and-down= t('.delete')
|
28
|
-
%span.fileNum
|
29
|
-
%span.fileSize
|
30
|
-
|
31
|
-
%input.toggle{ type: "checkbox" }
|
32
|
-
|
33
|
-
.col.s12
|
34
|
-
// The global progress bar
|
35
|
-
.progress.fileupload-progress.fade{ style: "display:none"}
|
36
|
-
.determinate{ style:"width:0%;"}
|
37
|
-
|
38
|
-
// The loading indicator is shown during image processing
|
39
|
-
// .fileupload-loading
|
40
|
-
%br
|
41
|
-
// The table listing the files available for upload/download
|
42
|
-
.row.files{ data: {toggle: "modal-gallery", target: "#modal-gallery"}}
|
@@ -1,48 +0,0 @@
|
|
1
|
-
:css
|
2
|
-
input[type='file'] { display: none }
|
3
|
-
/*.dropbox { background-color: transparent }*/
|
4
|
-
/*.files img { max-height: 50px }*/
|
5
|
-
.green-background { background-color: #607d8b }
|
6
|
-
.card.small.uploaded { width: 100%; float: left; margin-top: 20px; margin-right: 10px; }
|
7
|
-
.card .card-action { padding: 0px; margin: 0px; bottom: 5px }
|
8
|
-
.card .card-action a { margin-right: 0px; margin-bottom: -5px; margin-left: 10px}
|
9
|
-
.card-action .row { margin-bottom: 0px }
|
10
|
-
/*.card .card-image { height: 150px }*/
|
11
|
-
.card .card-image.uploaded { position: relative; max-height: 75% }
|
12
|
-
.progress { position: absolute }
|
13
|
-
.preview img, .card-image img { max-width: 100%; max-height: 100% }
|
14
|
-
.card .card-content .card-title.activator { font-size: 7px; color: black; background-color: transparent; line-height: 8px }
|
15
|
-
.progress { width: 70% }
|
16
|
-
.card .card-title { font-size: 9px }
|
17
|
-
.activator:hover { cursor: pointer }
|
18
|
-
|
19
|
-
@media only screen and (max-width: 320px) { .card.small.uploaded { height: 75px } }
|
20
|
-
@media only screen and (min-width: 321px) and (max-width: 480px) { .card.small.uploaded { height: 100px } }
|
21
|
-
@media only screen and (min-width: 481px) and (max-width: 768px) { .card.small.uploaded { height: 125px } }
|
22
|
-
@media only screen and (min-width: 769px) and (max-width: 960px) { .card.small.uploaded { height: 175px } }
|
23
|
-
@media only screen and (min-width: 961px) and (max-width: 992px) { .card.small.uploaded { height: 230px } }
|
24
|
-
@media only screen and (min-width: 993px) and (max-width: 1024px) { .card.small.uploaded { height: 150px } }
|
25
|
-
@media only screen and (min-width: 1025px) and (max-width: 1240px) { .card.small.uploaded { height: 190px } }
|
26
|
-
@media only screen and (min-width: 1241px) { .card.small.uploaded { height: 230px } }
|
27
|
-
/*@media only screen and (min-width: 1600px) { .card .card-image.uploaded { max-height: 85% } }*/
|
28
|
-
|
29
|
-
.card .card-image.uploaded { height: 85% }
|
30
|
-
|
31
|
-
- unless f
|
32
|
-
= simple_form_for(resource.media.build, html: { id: "fileupload", role: 'form', multipart: true } ) do |m|
|
33
|
-
= render partial: 'media/fields', locals: { m: m}
|
34
|
-
|
35
|
-
- else
|
36
|
-
-# this is a really bad hack!
|
37
|
-
-# but the (extra) form command totally f***'s up the parent form
|
38
|
-
- simple_form_for(resource.media.build, html: { id: "fileupload", role: 'form', multipart: true } ) do |m|
|
39
|
-
- @m = m
|
40
|
-
= render partial: 'media/fields', locals: {m: @m}
|
41
|
-
|
42
|
-
/ Modal Structure
|
43
|
-
#modal1.modal
|
44
|
-
.modal-content{ style: "height: 90%;overflow: scroll;" }
|
45
|
-
%h4 Fill this
|
46
|
-
|
47
|
-
.modal-footer{ style: "height: 10%; bottom: 0px; "}
|
48
|
-
%a.close-modal.waves-effect.waves-green.btn{ href: "#!"}= t("submit")
|
@@ -1,18 +0,0 @@
|
|
1
|
-
:css
|
2
|
-
.uris ul.collection .collection-item.avatar { min-height: 40px !important; }
|
3
|
-
|
4
|
-
%h5{ style: "padding-left: 10px"}
|
5
|
-
= t( "#{resource_class.to_s.pluralize.underscore}.media")
|
6
|
-
%span{ class: "#{medialist}"}
|
7
|
-
|
8
|
-
- unless @disabled
|
9
|
-
= render partial: 'media/form', locals: {resource: resource, f: f}
|
10
|
-
-# = link_to url, class: 'new_medium right btn hover_green' do
|
11
|
-
-# %i.material-icons add
|
12
|
-
-# %span.hide-on-med-and-down= t('.medium.new')
|
13
|
-
|
14
|
-
|
15
|
-
.row{ id: "#{medialist}"}
|
16
|
-
- resource.media.each do |medium|
|
17
|
-
.col.s4
|
18
|
-
= render 'media/medium', medium: medium unless medium.new_record?
|
@@ -1,25 +0,0 @@
|
|
1
|
-
.card.small.uploaded{ id: "medium-#{medium.id}", data: { id: "#{medium.id}"}}
|
2
|
-
-# , class: "#{'medium' unless @disabled===true}"
|
3
|
-
.card-image.uploaded.waves-effect.waves-block.waves-light
|
4
|
-
= image_tag medium.medium._url(:thumb), class: 'activator'
|
5
|
-
.card-action
|
6
|
-
.row
|
7
|
-
.col.s12
|
8
|
-
/ %strong.error.text-danger
|
9
|
-
/ TODO 18-10-2015 picture properties and edit/crop does not work
|
10
|
-
-# %i.material-icons.activator.right{ style: "margin-top: 6px; margin-left: 5px"} more_vert
|
11
|
-
-# = link_to medium, class: 'edit_link right', data: { url: '/media', name: "#{medium.title}", id: "#{medium.id}", remove: "#medium-#{medium.id}" } do
|
12
|
-
-# %i.material-icons.green-text.small{ title: "#{t('.edit')}", style: "margin-top: 5px"} edit
|
13
|
-
= link_to medium, class: 'delete_link right', data: { url: '/media', name: "#{medium.title}", id: "#{medium.id}", remove: "#medium-#{medium.id}" } do
|
14
|
-
%i.material-icons.red-text.small{ title: "#{t('.delete')}", style: "margin-top: 5px"} delete
|
15
|
-
|
16
|
-
.card-reveal
|
17
|
-
%span.card-title.grey-text.text-darken-4
|
18
|
-
Billed egenskaber
|
19
|
-
%i.material-icons.right close
|
20
|
-
%p
|
21
|
-
%span.card-title.grey-text.text-darken-4= (medium.title.blank? ? medium.medium.filename : medium.title)
|
22
|
-
%p
|
23
|
-
%input.string.optional{ name: "media[medium#{medium.id}][title]", placeholder: "Titel" }
|
24
|
-
%p
|
25
|
-
%textarea.text.optional.materialize-textarea{ name: "media[medium#{medium.id}][description]", placeholder: "Beskrivelse" }
|
@@ -1,29 +0,0 @@
|
|
1
|
-
%h1 Listing media
|
2
|
-
|
3
|
-
%table
|
4
|
-
%thead
|
5
|
-
%tr
|
6
|
-
%th Label
|
7
|
-
%th Imageable
|
8
|
-
%th Media
|
9
|
-
%th Lng lat
|
10
|
-
%th File size
|
11
|
-
%th
|
12
|
-
%th
|
13
|
-
%th
|
14
|
-
|
15
|
-
%tbody
|
16
|
-
- @media.each do |medium|
|
17
|
-
%tr
|
18
|
-
%td= medium.label
|
19
|
-
%td= medium.imageable
|
20
|
-
%td= medium.media
|
21
|
-
%td= medium.lng_lat
|
22
|
-
%td= medium.file_size
|
23
|
-
%td= link_to 'Show', medium
|
24
|
-
%td= link_to 'Edit', edit_medium_path(medium)
|
25
|
-
%td= link_to 'Destroy', medium, :method => :delete, :data => { :confirm => 'Are you sure?' }
|
26
|
-
|
27
|
-
%br
|
28
|
-
|
29
|
-
= link_to 'New Medium', new_medium_path
|
@@ -1,21 +0,0 @@
|
|
1
|
-
%p#notice= notice
|
2
|
-
|
3
|
-
%p
|
4
|
-
%b Title:
|
5
|
-
= resource.title
|
6
|
-
%p
|
7
|
-
%b Imageable:
|
8
|
-
= link_to 'imageable',resource.imageable
|
9
|
-
%p
|
10
|
-
%b Media:
|
11
|
-
= image_tag resource.medium
|
12
|
-
%p
|
13
|
-
%b Lng lat:
|
14
|
-
= resource.lng_lat
|
15
|
-
%p
|
16
|
-
%b File size:
|
17
|
-
/ = resource.file_size
|
18
|
-
|
19
|
-
= link_to 'Edit', edit_medium_path(resource)
|
20
|
-
\|
|
21
|
-
= link_to 'Back', media_path
|
@@ -1 +0,0 @@
|
|
1
|
-
json.extract! @medium, :id, :label, :imageable_id, :imageable_type, :media, :lng_lat, :file_size, :created_at, :updated_at
|
@@ -1 +0,0 @@
|
|
1
|
-
= image_tag resource.medium, class: 'activator'
|
File without changes
|