asset_host_core 2.0.0.beta
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.markdown +138 -0
- data/Rakefile +11 -0
- data/app/assets/images/asset_host_core/alert-overlay.png +0 -0
- data/app/assets/images/asset_host_core/arrow-left.gif +0 -0
- data/app/assets/images/asset_host_core/arrow-right.gif +0 -0
- data/app/assets/images/asset_host_core/fallback-img-rect.png +0 -0
- data/app/assets/images/asset_host_core/videoplayer-play.png +0 -0
- data/app/assets/images/asset_host_core/x.png +0 -0
- data/app/assets/javascripts/asset_host_core/admin/assets.js.coffee +221 -0
- data/app/assets/javascripts/asset_host_core/application.js +20 -0
- data/app/assets/javascripts/asset_host_core/assetadmin.js.coffee +56 -0
- data/app/assets/javascripts/asset_host_core/assethost.js.coffee.erb +17 -0
- data/app/assets/javascripts/asset_host_core/browserui.js.coffee +139 -0
- data/app/assets/javascripts/asset_host_core/chooserui.js.coffee +381 -0
- data/app/assets/javascripts/asset_host_core/client.js.coffee +29 -0
- data/app/assets/javascripts/asset_host_core/clients/BrightcoveVideo.js.coffee +64 -0
- data/app/assets/javascripts/asset_host_core/clients/templates/brightcove_embed.jst.eco +18 -0
- data/app/assets/javascripts/asset_host_core/clients/templates/vimeo_embed.jst.eco +1 -0
- data/app/assets/javascripts/asset_host_core/clients/templates/youtube_embed.jst.eco +1 -0
- data/app/assets/javascripts/asset_host_core/clients/vimeo_video.js.coffee +21 -0
- data/app/assets/javascripts/asset_host_core/clients/youtube_video.js.coffee +21 -0
- data/app/assets/javascripts/asset_host_core/cmsplugin.js.coffee +235 -0
- data/app/assets/javascripts/asset_host_core/models.js.coffee +586 -0
- data/app/assets/javascripts/asset_host_core/railsCMS.js.coffee +141 -0
- data/app/assets/javascripts/asset_host_core/slideshow.js.coffee +428 -0
- data/app/assets/javascripts/asset_host_core/templates/after_upload_button.jst.eco +3 -0
- data/app/assets/javascripts/asset_host_core/templates/asset_drop_asset.jst.eco +4 -0
- data/app/assets/javascripts/asset_host_core/templates/asset_modal.jst.eco +13 -0
- data/app/assets/javascripts/asset_host_core/templates/asset_preview.jst.eco +35 -0
- data/app/assets/javascripts/asset_host_core/templates/asset_search.jst.eco +2 -0
- data/app/assets/javascripts/asset_host_core/templates/browser_asset.jst.eco +1 -0
- data/app/assets/javascripts/asset_host_core/templates/browser_asset_tip.jst.eco +3 -0
- data/app/assets/javascripts/asset_host_core/templates/edit_modal.jst.eco +40 -0
- data/app/assets/javascripts/asset_host_core/templates/import_help.jst.eco +59 -0
- data/app/assets/javascripts/asset_host_core/templates/pagination_link.jst.eco +1 -0
- data/app/assets/javascripts/asset_host_core/templates/pagination_links.jst.eco +13 -0
- data/app/assets/javascripts/asset_host_core/templates/queued_file.jst.eco +11 -0
- data/app/assets/javascripts/asset_host_core/templates/save_and_close_view.jst.eco +4 -0
- data/app/assets/javascripts/asset_host_core/templates/upload_all_button.jst.eco +4 -0
- data/app/assets/javascripts/asset_host_core/templates/url_input.jst.eco +8 -0
- data/app/assets/stylesheets/asset_host_core/application.css.scss +384 -0
- data/app/assets/stylesheets/asset_host_core/jquery-ui.css +105 -0
- data/app/assets/stylesheets/asset_host_core/public.css.scss +204 -0
- data/app/assets/stylesheets/asset_host_core/slidetest.css.scss +93 -0
- data/app/controllers/asset_host_core/admin/api_users_controller.rb +72 -0
- data/app/controllers/asset_host_core/admin/assets_controller.rb +140 -0
- data/app/controllers/asset_host_core/admin/base_controller.rb +36 -0
- data/app/controllers/asset_host_core/admin/home_controller.rb +13 -0
- data/app/controllers/asset_host_core/admin/outputs_controller.rb +55 -0
- data/app/controllers/asset_host_core/api/assets_controller.rb +110 -0
- data/app/controllers/asset_host_core/api/base_controller.rb +43 -0
- data/app/controllers/asset_host_core/api/outputs_controller.rb +33 -0
- data/app/controllers/asset_host_core/application_controller.rb +43 -0
- data/app/controllers/asset_host_core/public_controller.rb +104 -0
- data/app/models/asset_host_core/api_user.rb +44 -0
- data/app/models/asset_host_core/api_user_permission.rb +6 -0
- data/app/models/asset_host_core/asset.rb +265 -0
- data/app/models/asset_host_core/asset_output.rb +69 -0
- data/app/models/asset_host_core/brightcove_video.rb +20 -0
- data/app/models/asset_host_core/output.rb +52 -0
- data/app/models/asset_host_core/permission.rb +19 -0
- data/app/models/asset_host_core/video.rb +8 -0
- data/app/models/asset_host_core/vimeo_video.rb +17 -0
- data/app/models/asset_host_core/youtube_video.rb +17 -0
- data/app/views/asset_host_core/admin/api_users/_form_fields.html.erb +5 -0
- data/app/views/asset_host_core/admin/api_users/edit.html.erb +26 -0
- data/app/views/asset_host_core/admin/api_users/index.html.erb +31 -0
- data/app/views/asset_host_core/admin/api_users/new.html.erb +17 -0
- data/app/views/asset_host_core/admin/api_users/show.html.erb +23 -0
- data/app/views/asset_host_core/admin/assets/index.html.erb +19 -0
- data/app/views/asset_host_core/admin/assets/metadata.html.erb +24 -0
- data/app/views/asset_host_core/admin/assets/show.html.erb +86 -0
- data/app/views/asset_host_core/admin/home/chooser.html.erb +49 -0
- data/app/views/asset_host_core/admin/outputs/_form_fields.html.erb +5 -0
- data/app/views/asset_host_core/admin/outputs/edit.html.erb +26 -0
- data/app/views/asset_host_core/admin/outputs/index.html.erb +27 -0
- data/app/views/asset_host_core/admin/outputs/new.html.erb +13 -0
- data/app/views/asset_host_core/admin/outputs/show.html.erb +17 -0
- data/app/views/asset_host_core/shared/_footerjs.html.erb +3 -0
- data/app/views/asset_host_core/shared/_navbar.html.erb +28 -0
- data/app/views/kaminari/_first_page.html.erb +3 -0
- data/app/views/kaminari/_gap.html.erb +3 -0
- data/app/views/kaminari/_last_page.html.erb +3 -0
- data/app/views/kaminari/_next_page.html.erb +3 -0
- data/app/views/kaminari/_page.html.erb +3 -0
- data/app/views/kaminari/_paginator.html.erb +17 -0
- data/app/views/kaminari/_prev_page.html.erb +3 -0
- data/app/views/layouts/asset_host_core/application.html.erb +54 -0
- data/app/views/layouts/asset_host_core/full_width.html.erb +32 -0
- data/app/views/layouts/asset_host_core/minimal.html.erb +45 -0
- data/config/initializers/simple_form.rb +142 -0
- data/config/initializers/simple_form_bootstrap.rb +45 -0
- data/config/locales/simple_form.en.yml +26 -0
- data/config/routes.rb +49 -0
- data/lib/asset_host_core.rb +38 -0
- data/lib/asset_host_core/config.rb +39 -0
- data/lib/asset_host_core/engine.rb +94 -0
- data/lib/asset_host_core/loaders.rb +34 -0
- data/lib/asset_host_core/loaders/asset_host.rb +30 -0
- data/lib/asset_host_core/loaders/base.rb +22 -0
- data/lib/asset_host_core/loaders/brightcove.rb +67 -0
- data/lib/asset_host_core/loaders/flickr.rb +114 -0
- data/lib/asset_host_core/loaders/url.rb +59 -0
- data/lib/asset_host_core/loaders/vimeo.rb +76 -0
- data/lib/asset_host_core/loaders/youtube.rb +90 -0
- data/lib/asset_host_core/model_methods.rb +61 -0
- data/lib/asset_host_core/paperclip.rb +4 -0
- data/lib/asset_host_core/paperclip/asset_thumbnail.rb +92 -0
- data/lib/asset_host_core/paperclip/attachment.rb +206 -0
- data/lib/asset_host_core/paperclip/trimmer.rb +33 -0
- data/lib/asset_host_core/resque_job.rb +13 -0
- data/lib/asset_host_core/version.rb +3 -0
- data/lib/tasks/asset_host_core_tasks.rake +4 -0
- data/spec/controllers/admin/api_users_controller_spec.rb +21 -0
- data/spec/controllers/admin/assets_controller_spec.rb +59 -0
- data/spec/controllers/admin/home_controller_spec.rb +4 -0
- data/spec/controllers/admin/outputs_controller_spec.rb +4 -0
- data/spec/controllers/api/assets_controller_spec.rb +133 -0
- data/spec/controllers/api/outputs_controller_spec.rb +51 -0
- data/spec/controllers/public_controller_spec.rb +4 -0
- data/spec/factories.rb +39 -0
- data/spec/features/api_users_spec.rb +78 -0
- data/spec/fixtures/api/brightcove/video.json +137 -0
- data/spec/fixtures/api/flickr/photos_getInfo.json +78 -0
- data/spec/fixtures/api/flickr/photos_getSizes.json +82 -0
- data/spec/fixtures/api/flickr/photos_licenses_getInfo.json +52 -0
- data/spec/fixtures/api/vimeo/video.json +28 -0
- data/spec/fixtures/api/youtube/discovery.json +5190 -0
- data/spec/fixtures/api/youtube/video.json +44 -0
- data/spec/fixtures/images/chipmunk.jpg +0 -0
- data/spec/fixtures/images/dude.jpg +0 -0
- data/spec/fixtures/images/ernie.jpg +0 -0
- data/spec/fixtures/images/fry.png +0 -0
- data/spec/fixtures/images/hat.jpg +0 -0
- data/spec/fixtures/images/spongebob.png +0 -0
- data/spec/fixtures/images/stars.jpg +0 -0
- data/spec/internal/app/controllers/application_controller.rb +16 -0
- data/spec/internal/app/controllers/sessions_controller.rb +24 -0
- data/spec/internal/app/models/user.rb +10 -0
- data/spec/internal/app/views/sessions/new.html.erb +14 -0
- data/spec/internal/config/database.yml +3 -0
- data/spec/internal/config/initializers/assethost_config.rb +57 -0
- data/spec/internal/config/routes.rb +7 -0
- data/spec/internal/db/combustion_test.sqlite +0 -0
- data/spec/internal/db/schema.rb +106 -0
- data/spec/internal/log/test.log +14769 -0
- data/spec/internal/public/favicon.ico +0 -0
- data/spec/internal/public/images/1_27f7745237849975ca90591c1fba5934_original. +0 -0
- data/spec/internal/public/images/1_7d33319deca787d5bb3f62ff06563ad2_original. +0 -0
- data/spec/internal/public/images/1_b6d48c8b1286104ce76649731e09645f_original. +0 -0
- data/spec/internal/public/images/1_b6d48c8b1286104ce76649731e09645f_original.jpg +0 -0
- data/spec/internal/public/images/1_b6d48c8b1286104ce76649731e09645f_original.txt +0 -0
- data/spec/internal/public/images/1_e179cbd27e07cb55042d0db36cdac095_original. +0 -0
- data/spec/internal/public/images/1_e669edd3dfd74be66fc38416e82e3a37_original. +0 -0
- data/spec/lib/asset_host_core/loaders/asset_host_spec.rb +33 -0
- data/spec/lib/asset_host_core/loaders/brightcove_spec.rb +51 -0
- data/spec/lib/asset_host_core/loaders/flickr_spec.rb +72 -0
- data/spec/lib/asset_host_core/loaders/url_spec.rb +42 -0
- data/spec/lib/asset_host_core/loaders/vimeo_spec.rb +51 -0
- data/spec/lib/asset_host_core/loaders/youtube_spec.rb +73 -0
- data/spec/lib/asset_host_core/loaders_spec.rb +4 -0
- data/spec/lib/asset_host_core/model_methods_spec.rb +4 -0
- data/spec/lib/asset_host_core/paperclip/asset_thumbnail_spec.rb +4 -0
- data/spec/lib/asset_host_core/paperclip/attachment_spec.rb +4 -0
- data/spec/lib/asset_host_core/resque_job_spec.rb +4 -0
- data/spec/lib/asset_host_core_spec.rb +4 -0
- data/spec/models/api_user_spec.rb +58 -0
- data/spec/models/asset_output_spec.rb +4 -0
- data/spec/models/asset_spec.rb +4 -0
- data/spec/models/output_spec.rb +4 -0
- data/spec/models/permission_spec.rb +4 -0
- data/spec/spec_helper.rb +30 -0
- data/spec/support/fixture_loader.rb +9 -0
- data/spec/support/param_helper.rb +14 -0
- data/spec/support/permission_matcher.rb +17 -0
- data/vendor/assets/images/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_flat_10_000000_40x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_222222_256x240.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_228ef1_256x240.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_ef8c08_256x240.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_ffd27a_256x240.png +0 -0
- data/vendor/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
- data/vendor/assets/javascripts/backbone.js +1158 -0
- data/vendor/assets/javascripts/backbone.modelbinding.js +475 -0
- data/vendor/assets/javascripts/exif.js +695 -0
- data/vendor/assets/javascripts/jquery-ui.js +5614 -0
- data/vendor/assets/javascripts/simplemodal.js +698 -0
- data/vendor/assets/javascripts/spin.jquery.js +81 -0
- data/vendor/assets/javascripts/spin.min.js +1 -0
- data/vendor/assets/javascripts/underscore.min.js +1 -0
- metadata +658 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
module AssetHostCore
|
2
|
+
class BrightcoveVideo < Video
|
3
|
+
attr_accessible :length
|
4
|
+
|
5
|
+
def attrs
|
6
|
+
{
|
7
|
+
"data-assethost" => "BrightcoveVideo", # The native client class
|
8
|
+
"data-ah-videoid" => self.videoid
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
12
|
+
def as_json
|
13
|
+
{
|
14
|
+
:class => "BrightcoveVideo",
|
15
|
+
:videoid => self.videoid,
|
16
|
+
:length => self.length
|
17
|
+
}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module AssetHostCore
|
2
|
+
class Output < ActiveRecord::Base
|
3
|
+
has_many :asset_outputs
|
4
|
+
|
5
|
+
after_save :delete_asset_outputs, if: -> { self.size_changed? || self.extension_changed? }
|
6
|
+
|
7
|
+
#----------
|
8
|
+
|
9
|
+
def self.paperclip_sizes
|
10
|
+
@paperclip_sizes ||= begin
|
11
|
+
sizes = {}
|
12
|
+
|
13
|
+
Output.all.each do |output|
|
14
|
+
sizes.merge! output.paperclip_options
|
15
|
+
end
|
16
|
+
|
17
|
+
sizes
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
#----------
|
23
|
+
|
24
|
+
def code_sym
|
25
|
+
self.code.to_sym
|
26
|
+
end
|
27
|
+
|
28
|
+
#----------
|
29
|
+
|
30
|
+
def paperclip_options
|
31
|
+
{
|
32
|
+
self.code.to_sym => {
|
33
|
+
:geometry => '',
|
34
|
+
:size => self.size,
|
35
|
+
:format => self.extension.to_sym,
|
36
|
+
:prerender => self.prerender,
|
37
|
+
:output => self.id,
|
38
|
+
:rich => self.is_rich
|
39
|
+
}
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
#----------
|
44
|
+
|
45
|
+
protected
|
46
|
+
|
47
|
+
def delete_asset_outputs
|
48
|
+
# destroy each AssetOutput, triggering file and cache deletion
|
49
|
+
self.asset_outputs.each { |ao| ao.destroy }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module AssetHostCore
|
2
|
+
class Permission < ActiveRecord::Base
|
3
|
+
ABILITIES = [
|
4
|
+
:read,
|
5
|
+
:write
|
6
|
+
]
|
7
|
+
|
8
|
+
attr_accessible :resource, :ability
|
9
|
+
|
10
|
+
has_many :api_user_permissions
|
11
|
+
has_many :api_users, through: :api_user_permissions
|
12
|
+
|
13
|
+
validates :resource, :ability, presence: true
|
14
|
+
|
15
|
+
def to_s
|
16
|
+
"[#{self.resource}] #{self.ability}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module AssetHostCore
|
2
|
+
class VimeoVideo < Video
|
3
|
+
def attrs
|
4
|
+
{
|
5
|
+
"data-assethost" => "VimeoVideo",
|
6
|
+
"data-ah-videoid" => self.videoid
|
7
|
+
}
|
8
|
+
end
|
9
|
+
|
10
|
+
def as_json
|
11
|
+
{
|
12
|
+
:class => "VimeoVideo",
|
13
|
+
:videoid => self.videoid
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module AssetHostCore
|
2
|
+
class YoutubeVideo < Video
|
3
|
+
def attrs
|
4
|
+
{
|
5
|
+
"data-assethost" => "YoutubeVideo",
|
6
|
+
"data-ah-videoid" => self.videoid
|
7
|
+
}
|
8
|
+
end
|
9
|
+
|
10
|
+
def as_json
|
11
|
+
{
|
12
|
+
:class => "YoutubeVideo",
|
13
|
+
:videoid => self.videoid
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<h2><%= @PAGE_TITLE = "Edit API User: #{@api_user.name}" %></h2>
|
2
|
+
|
3
|
+
<%= simple_form_for [:a, @api_user], html: { class: 'form-horizontal' } do |f| %>
|
4
|
+
<%= f.error_notification %>
|
5
|
+
|
6
|
+
<fieldset>
|
7
|
+
<%= render 'form_fields', f: f %>
|
8
|
+
|
9
|
+
<% if f.object.persisted? %>
|
10
|
+
<%= f.input :auth_token, disabled: true %>
|
11
|
+
<%= link_to "Reset Token", reset_token_a_api_user_path(f.object), method: :put, data: { confirm: "WARNING: Resetting the token will immediately cause all API calls for this account to stop working.\nClick OK to reset the API token for #{@api_user.name}.\nClick CANCEL to return to editing."} %>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<div class="form-actions">
|
15
|
+
<%= f.submit "Update", class: "btn btn-primary" %>
|
16
|
+
|
17
|
+
<%= link_to("Delete", a_api_user_path(@api_user),
|
18
|
+
class: "btn btn-danger pull-right",
|
19
|
+
method: :delete,
|
20
|
+
data: { confirm: "Click OK to delete this API User.\n" \
|
21
|
+
"Click CANCEL to return to editing."
|
22
|
+
}
|
23
|
+
) %>
|
24
|
+
</div>
|
25
|
+
</fieldset>
|
26
|
+
<% end %>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<h2><%= @PAGE_TITLE = "API Users" %></h2>
|
2
|
+
<p><%= link_to "Add an API User", new_a_api_user_path, class: "btn btn-success" %></p>
|
3
|
+
|
4
|
+
<%= paginate @api_users %>
|
5
|
+
|
6
|
+
<table class="table table-striped">
|
7
|
+
<thead>
|
8
|
+
<tr>
|
9
|
+
<th>Edit</th>
|
10
|
+
<th>Name</th>
|
11
|
+
<th>E-mail</th>
|
12
|
+
<th>Auth Token</th>
|
13
|
+
<th>Active?</th>
|
14
|
+
<th>Last Auth</th>
|
15
|
+
</tr>
|
16
|
+
</thead>
|
17
|
+
<tbody>
|
18
|
+
<% @api_users.each do |api_user| %>
|
19
|
+
<tr>
|
20
|
+
<td><%= link_to "Edit", edit_a_api_user_path(api_user), class: "btn" %></td>
|
21
|
+
<td><%= api_user.name %></td>
|
22
|
+
<td><%= api_user.email %></td>
|
23
|
+
<td><%= api_user.auth_token %></td>
|
24
|
+
<td><%= api_user.is_active? %></td>
|
25
|
+
<td><%= api_user.last_authenticated %></td>
|
26
|
+
</tr>
|
27
|
+
<% end %>
|
28
|
+
</tbody>
|
29
|
+
</table>
|
30
|
+
|
31
|
+
<%= paginate @api_users %>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<h2><%= @PAGE_TITLE = "New API User" %></h2>
|
2
|
+
|
3
|
+
<%= simple_form_for [:a, @api_user], html: { class: 'form-horizontal' } do |f| %>
|
4
|
+
<%= f.error_notification %>
|
5
|
+
|
6
|
+
<fieldset>
|
7
|
+
<%= render 'form_fields', f: f %>
|
8
|
+
|
9
|
+
<div class="alert alert-info">
|
10
|
+
Auth Token will be generated when this API User is saved.
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div class="form-actions">
|
14
|
+
<%= f.submit "Save", class: "btn" %>
|
15
|
+
</div>
|
16
|
+
</fieldset>
|
17
|
+
<% end %>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<h2><%= @PAGE_TITLE = "API User: #{@api_user.name}" %></h2>
|
2
|
+
|
3
|
+
<dl>
|
4
|
+
<dt>Name</dt>
|
5
|
+
<dd><%= @api_user.name %></dd>
|
6
|
+
|
7
|
+
<dt>Active?</dt>
|
8
|
+
<dd><%= @api_user.is_active? %></dd>
|
9
|
+
|
10
|
+
<dt>Auth Token</dt>
|
11
|
+
<dd><%= @api_user.auth_token %></dd>
|
12
|
+
|
13
|
+
<dt>Created At</dt>
|
14
|
+
<dd><%= @api_user.created_at %></dd>
|
15
|
+
|
16
|
+
<dt>Last Authentication</dt>
|
17
|
+
<dd><%= @api_user.last_authenticated %></dd>
|
18
|
+
|
19
|
+
<dt>Last Updated</dt>
|
20
|
+
<dd><%= @api_user.updated_at %></dd>
|
21
|
+
</dl>
|
22
|
+
|
23
|
+
<%= link_to "Edit", edit_a_api_user_path(@api_user), class: "btn btn-primary" %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<% @PAGE_TITLE = "Asset Management" %>
|
2
|
+
|
3
|
+
<div class='assetbox' id='asset_browser'></div>
|
4
|
+
|
5
|
+
<script type="text/javascript">
|
6
|
+
var browser = new AssetHost.BrowserUI({
|
7
|
+
root_path: "<%= assethost.a_assets_path %>",
|
8
|
+
assets:<%= @assets.to_json.html_safe %>,
|
9
|
+
page: <%= @assets.current_page %>,
|
10
|
+
total: <%= @assets.total_count %>,
|
11
|
+
query: <%= @query.to_json.html_safe %>,
|
12
|
+
modalSelect: true,
|
13
|
+
modalAdmin: false
|
14
|
+
});
|
15
|
+
|
16
|
+
browser.assets.bind('selected',function (a) {
|
17
|
+
window.location = "<%= assethost.a_assets_path %>/"+a.get("id")
|
18
|
+
});
|
19
|
+
</script>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<h2><%= @PAGE_TITLE = "Add Metadata" %></h2>
|
2
|
+
|
3
|
+
<%= simple_form_for :assets, url: metadata_a_assets_path, method: :put do |f| %>
|
4
|
+
<% @assets.each do |asset| %>
|
5
|
+
<div class="row">
|
6
|
+
<%= f.simple_fields_for asset.id.to_s, asset do |af| %>
|
7
|
+
<hr/>
|
8
|
+
<div class="span3">
|
9
|
+
<%= asset.image.tag(AssetHostCore.config.modal_size) %>
|
10
|
+
</div>
|
11
|
+
<div class="span5">
|
12
|
+
<h3>Asset #<%=asset.id%></h3>
|
13
|
+
<%= af.input :title %>
|
14
|
+
<%= af.input :caption, as: :text, input_html: { rows: 3 }%>
|
15
|
+
<%= af.input :owner %>
|
16
|
+
<%= af.input :url %>
|
17
|
+
</div>
|
18
|
+
<br class="clear"/>
|
19
|
+
<% end %>
|
20
|
+
</div>
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
<%= f.submit "Update Metadata", class: "btn pull-right" %>
|
24
|
+
<% end %>
|
@@ -0,0 +1,86 @@
|
|
1
|
+
<% @PAGE_TITLE = "Asset: #{@asset.title}" %>
|
2
|
+
|
3
|
+
<!-- assets pager -->
|
4
|
+
<ul class="pager">
|
5
|
+
<% if @prev %>
|
6
|
+
<li class="previous">
|
7
|
+
<%= link_to "← #{@prev.title.blank? ? "Asset #{@prev.id}" : @prev.title[0..30]}".html_safe, a_asset_path(@prev) %>
|
8
|
+
</li>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<% if @next %>
|
12
|
+
<li class="next">
|
13
|
+
<%= link_to "#{@next.title.blank? ? "Asset #{@next.id}" : @next.title[0..30]} →".html_safe, a_asset_path(@next) %>
|
14
|
+
</li>
|
15
|
+
<% end %>
|
16
|
+
</ul>
|
17
|
+
|
18
|
+
<div id="asset"></div>
|
19
|
+
|
20
|
+
<br/>
|
21
|
+
|
22
|
+
<div id="editform">
|
23
|
+
<%= simple_form_for([:a, @asset], html: { class: "form-horizontal" }) do |f| %>
|
24
|
+
<div class="row">
|
25
|
+
<div class="span6">
|
26
|
+
<fieldset>
|
27
|
+
<legend>Basics</legend>
|
28
|
+
<%= f.input :title, hint: @asset.image_title? ? "<small><strong>From Image:</strong> #{@asset.image_title}</small>" : nil %>
|
29
|
+
<%= f.input :caption, as: :text, input_html: { rows: 5 }, hint: @asset.image_description? ? "<small><strong>From Image:</strong> #{@asset.image_description}</small>" : nil %>
|
30
|
+
</fieldset>
|
31
|
+
</div>
|
32
|
+
<div class="span2 replace-asset">
|
33
|
+
<h3>Replace:</h3>
|
34
|
+
<div id="replacedrop" style="height: 180px;margin-top: 16px">
|
35
|
+
<p style="font-size: 18px;line-height: 24px;color: #aaa;text-align: center;margin: 8px">Drop File Here to Replace Asset</p>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
<div class="row">
|
40
|
+
<div class="span8">
|
41
|
+
<fieldset>
|
42
|
+
<legend>Rights</legend>
|
43
|
+
<%= f.input :owner, hint: @asset.image_copyright? ? "<small><strong>From Image:</strong> #{@asset.image_copyright}</small>" : nil, input_html: { class: "span5" } %>
|
44
|
+
<%= f.input :url, input_html: { class: "span5" } %>
|
45
|
+
</fieldset>
|
46
|
+
|
47
|
+
<fieldset>
|
48
|
+
<legend>Metadata</legend>
|
49
|
+
<div class="form-horizontal">
|
50
|
+
<%= f.input :image_taken, as: :date %>
|
51
|
+
</div>
|
52
|
+
<%= f.input :image_gravity, as: :select, collection: AssetHostCore::Asset::GRAVITY_OPTIONS %>
|
53
|
+
</fieldset>
|
54
|
+
|
55
|
+
<fieldset>
|
56
|
+
<legend>Internal</legend>
|
57
|
+
<%= f.input :notes, input_html: { rows: 5 } %>
|
58
|
+
</fieldset>
|
59
|
+
|
60
|
+
|
61
|
+
<div class="form-actions">
|
62
|
+
<%= f.submit "Update Asset", class: "btn btn-primary" %>
|
63
|
+
<%= link_to "Destroy Asset",
|
64
|
+
a_asset_path(@asset),
|
65
|
+
:method => :delete,
|
66
|
+
:class => "btn btn-danger pull-right",
|
67
|
+
:data => { confirm: "Are you sure you want to delete this asset? You are responsible for making sure no content is using it before deletion." } %>
|
68
|
+
|
69
|
+
</div>
|
70
|
+
</div>
|
71
|
+
</div>
|
72
|
+
<% end %>
|
73
|
+
</div>
|
74
|
+
|
75
|
+
<script type="text/javascript">
|
76
|
+
assetAdm = new AssetHost.AssetAdmin(
|
77
|
+
<%= @asset.json.to_json.html_safe %>,
|
78
|
+
{
|
79
|
+
el: "#asset",
|
80
|
+
replace: "#replacedrop",
|
81
|
+
replacePath: "<%= replace_a_asset_path @asset %>"
|
82
|
+
}
|
83
|
+
)
|
84
|
+
|
85
|
+
assetClient = new AssetHost.Client()
|
86
|
+
</script>
|
@@ -0,0 +1,49 @@
|
|
1
|
+
<% @PAGE_TITLE = "Drop Test" %>
|
2
|
+
|
3
|
+
<div class="row-fluid">
|
4
|
+
<div class="span4">
|
5
|
+
<h3>Selected Assets:</h3>
|
6
|
+
|
7
|
+
<div id="my_assets" style="">
|
8
|
+
<p><i>Drop assets here to add them to your story</i></p>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
</div>
|
12
|
+
<div class="span8">
|
13
|
+
<div class="row">
|
14
|
+
<div class="pull-right" id="search_box">
|
15
|
+
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<div id="asset_browser" class="assetbox"></div>
|
20
|
+
|
21
|
+
<br class="clear"/>
|
22
|
+
</div>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<script type="text/javascript">
|
26
|
+
var browser = new AssetHost.BrowserUI({
|
27
|
+
assets: <%= @assets.to_json.html_safe %>,
|
28
|
+
page: <%= @assets.current_page %>,
|
29
|
+
total: <%= @assets.total_count %>,
|
30
|
+
modalSelect: true,
|
31
|
+
modalAdmin: true
|
32
|
+
});
|
33
|
+
|
34
|
+
chooser = new AssetHost.ChooserUI({
|
35
|
+
browser: browser
|
36
|
+
});
|
37
|
+
|
38
|
+
window.opener.postMessage("LOADED","*");
|
39
|
+
|
40
|
+
$(window).bind("message", function (evt) {
|
41
|
+
evt = evt.originalEvent
|
42
|
+
chooser.selectAssets(evt.data)
|
43
|
+
|
44
|
+
chooser.bind('saveAndClose',function(json) {
|
45
|
+
evt.source.postMessage(json,evt.origin);
|
46
|
+
window.close();
|
47
|
+
});
|
48
|
+
});
|
49
|
+
</script>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<h2><%= @PAGE_TITLE = "Edit Output: #{@output.code}" %></h2>
|
2
|
+
|
3
|
+
<div class="alert">
|
4
|
+
<strong>Warning!</strong> Editing a size or extension requires that AssetHost delete all rendered assets for this output. They
|
5
|
+
will be re-rendered on first request.
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<%= simple_form_for [:a, @output], html: { class: "form-horizontal" } do |f| %>
|
9
|
+
<%= f.error_notification %>
|
10
|
+
|
11
|
+
<fieldset>
|
12
|
+
<%= render 'form_fields', f: f %>
|
13
|
+
|
14
|
+
<div class="form-actions">
|
15
|
+
<%= f.submit "Update Output", class: "btn btn-primary" %>
|
16
|
+
|
17
|
+
<%= link_to("Delete", a_output_path(@output),
|
18
|
+
class: "btn btn-danger pull-right",
|
19
|
+
method: :delete,
|
20
|
+
data: { confirm: "Click OK to delete this Output.\n" \
|
21
|
+
"Click CANCEL to return to editing."
|
22
|
+
}
|
23
|
+
) %>
|
24
|
+
</div>
|
25
|
+
</fieldset>
|
26
|
+
<% end %>
|