cas-cms 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +43 -0
- data/Rakefile +37 -0
- data/app/assets/config/cas_manifest.js +2 -0
- data/app/assets/images/cas/black-star.svg +4 -0
- data/app/assets/images/cas/check.svg +4 -0
- data/app/assets/images/cas/dropzone-in.svg +4 -0
- data/app/assets/images/cas/loading.gif +0 -0
- data/app/assets/images/cas/white-star.svg +4 -0
- data/app/assets/javascripts/cas/application.js +51 -0
- data/app/assets/javascripts/cas/fileupload_manifest.js +269 -0
- data/app/assets/javascripts/cas/plugins/cas_image_gallery.js +353 -0
- data/app/assets/javascripts/cas/vendor/file_upload/canvas-to-blob.min.js +2 -0
- data/app/assets/javascripts/cas/vendor/file_upload/jquery.fileupload-image.js +326 -0
- data/app/assets/javascripts/cas/vendor/file_upload/jquery.fileupload-process.js +178 -0
- data/app/assets/javascripts/cas/vendor/file_upload/jquery.fileupload.js +1482 -0
- data/app/assets/javascripts/cas/vendor/file_upload/jquery.iframe-transport.js +224 -0
- data/app/assets/javascripts/cas/vendor/file_upload/jquery.ui.widget.js +572 -0
- data/app/assets/javascripts/cas/vendor/file_upload/load-image.all.min.js +2 -0
- data/app/assets/javascripts/cas/vendor/jquery.ui.touch-punch.min.js +11 -0
- data/app/assets/javascripts/cas/vendor/selectize.min.js +3 -0
- data/app/assets/stylesheets/cas/application.sass +17 -0
- data/app/assets/stylesheets/cas/colors.sass +6 -0
- data/app/assets/stylesheets/cas/form.sass +99 -0
- data/app/assets/stylesheets/cas/layout.sass +68 -0
- data/app/assets/stylesheets/cas/mixins.sass +34 -0
- data/app/assets/stylesheets/cas/plugins/attachments_form.sass +16 -0
- data/app/assets/stylesheets/cas/plugins/image_gallery.sass +128 -0
- data/app/assets/stylesheets/cas/tables.sass +13 -0
- data/app/assets/stylesheets/cas/typography.sass +27 -0
- data/app/assets/stylesheets/cas/vendors/selectize.default.css +394 -0
- data/app/assets/stylesheets/cas/vendors/simplegrid.css +298 -0
- data/app/controllers/cas/api/files_controller.rb +88 -0
- data/app/controllers/cas/application_controller.rb +17 -0
- data/app/controllers/cas/devise/sessions_controller.rb +9 -0
- data/app/controllers/cas/file_uploads_controller.rb +14 -0
- data/app/controllers/cas/sections/application_controller.rb +23 -0
- data/app/controllers/cas/sections/categories_controller.rb +47 -0
- data/app/controllers/cas/sections/contents_controller.rb +144 -0
- data/app/controllers/cas/sections_controller.rb +7 -0
- data/app/controllers/cas/users_controller.rb +61 -0
- data/app/helpers/cas/application_helper.rb +4 -0
- data/app/helpers/cas/form_helper.rb +11 -0
- data/app/jobs/cas/application_job.rb +4 -0
- data/app/jobs/cas/images/delete_job.rb +11 -0
- data/app/jobs/cas/images/promote_job.rb +11 -0
- data/app/jobs/cas/increment_pageviews_job.rb +11 -0
- data/app/models/cas/application_record.rb +5 -0
- data/app/models/cas/category.rb +6 -0
- data/app/models/cas/content.rb +59 -0
- data/app/models/cas/media_file.rb +77 -0
- data/app/models/cas/section.rb +10 -0
- data/app/models/cas/site.rb +5 -0
- data/app/models/cas/user.rb +39 -0
- data/app/uploaders/file_uploader.rb +26 -0
- data/app/views/cas/devise/sessions/new.html.erb +24 -0
- data/app/views/cas/sections/categories/_form.html.erb +19 -0
- data/app/views/cas/sections/categories/edit.html.erb +5 -0
- data/app/views/cas/sections/categories/index.html.erb +28 -0
- data/app/views/cas/sections/categories/new.html.erb +5 -0
- data/app/views/cas/sections/contents/_form_attachments.html.erb +42 -0
- data/app/views/cas/sections/contents/_form_attachments_template.html.erb +11 -0
- data/app/views/cas/sections/contents/_form_for_content.html.erb +85 -0
- data/app/views/cas/sections/contents/_form_for_survey.html.erb +36 -0
- data/app/views/cas/sections/contents/_form_images.html.erb +86 -0
- data/app/views/cas/sections/contents/edit.html.erb +6 -0
- data/app/views/cas/sections/contents/index.html.erb +71 -0
- data/app/views/cas/sections/contents/new.html.erb +5 -0
- data/app/views/cas/sections/index.html.erb +21 -0
- data/app/views/cas/shared/_error_messages.html.erb +12 -0
- data/app/views/cas/users/_form.html.erb +11 -0
- data/app/views/cas/users/edit.html.erb +2 -0
- data/app/views/cas/users/index.html.erb +34 -0
- data/app/views/cas/users/new.html.erb +2 -0
- data/app/views/layouts/cas/application.html.erb +71 -0
- data/config/initializers/acts_as_taggable.rb +1 -0
- data/config/initializers/devise.rb +277 -0
- data/config/initializers/shrine.rb +50 -0
- data/config/initializers/simple_form.rb +169 -0
- data/config/locales/devise.en.yml +64 -0
- data/config/locales/pt-BR.yml +242 -0
- data/config/locales/simple_form.en.yml +31 -0
- data/config/routes.rb +31 -0
- data/db/migrate/20170129212144_create_cas_sites.rb +15 -0
- data/db/migrate/20170219172958_create_cas_sections.rb +12 -0
- data/db/migrate/20170219175007_create_cas_contents.rb +17 -0
- data/db/migrate/20170612204500_create_cas_users.rb +14 -0
- data/db/migrate/20170613174724_create_cas_media_files.rb +20 -0
- data/db/migrate/20170613175912_create_cas_categories.rb +14 -0
- data/db/migrate/20170614171928_add_columns_to_cas_contents.rb +12 -0
- data/db/migrate/20170614172904_add_column_to_cas_sections.rb +6 -0
- data/db/migrate/20170615235532_add_devise_to_cas_users.rb +49 -0
- data/db/migrate/20170616011202_remove_password_from_cas_users.rb +5 -0
- data/db/migrate/20170618014204_v3_migration_fields.rb +30 -0
- data/db/migrate/20170623182702_add_column_category_id_to_cas_content.rb +6 -0
- data/db/migrate/20170624024648_rename_url_to_path_in_files.rb +7 -0
- data/db/migrate/20170625192119_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb +36 -0
- data/db/migrate/20170625192120_add_missing_unique_indices.acts_as_taggable_on_engine.rb +26 -0
- data/db/migrate/20170625192121_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb +20 -0
- data/db/migrate/20170625192122_add_missing_taggable_index.acts_as_taggable_on_engine.rb +15 -0
- data/db/migrate/20170625192123_change_collation_for_tag_names.acts_as_taggable_on_engine.rb +15 -0
- data/db/migrate/20170625192124_add_missing_indexes_on_taggings.acts_as_taggable_on_engine.rb +23 -0
- data/db/migrate/20170713210101_add_location_to_cas_content.rb +5 -0
- data/db/migrate/20170714043036_add_url_to_content.rb +5 -0
- data/db/migrate/20170718201535_add_embedded_to_content.rb +5 -0
- data/db/migrate/20170801171952_categories_with_jsonb_metadata.rb +6 -0
- data/db/migrate/20170801173256_add_published_at_to_cas_contents.rb +6 -0
- data/db/migrate/20170801175407_add_description_to_cas_categories.rb +5 -0
- data/db/migrate/20170830000000_add_data_search_extensions.rb +17 -0
- data/db/migrate/20170830000001_add_search_index_to_cas_contents.rb +20 -0
- data/db/migrate/20170830000002_use_uuid_with_acts_as_taggable_references.rb +17 -0
- data/db/migrate/20170919181809_pageviews_default_to_zero.rb +9 -0
- data/db/migrate/20171201191059_add_domains_to_cas_site.rb +6 -0
- data/lib/cas.rb +22 -0
- data/lib/cas/config.rb +42 -0
- data/lib/cas/engine.rb +33 -0
- data/lib/cas/form_field.rb +54 -0
- data/lib/cas/remote_callbacks.rb +36 -0
- data/lib/cas/section_config.rb +84 -0
- data/lib/cas/setup.rb +43 -0
- data/lib/cas/version.rb +3 -0
- data/lib/devise/custom_failure.rb +16 -0
- data/lib/tasks/cas_tasks.rake +4 -0
- data/lib/templates/erb/scaffold/_form.html.erb +13 -0
- metadata +560 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
module Cas
|
2
|
+
class User < ApplicationRecord
|
3
|
+
ROLES = %w[admin editor writer].freeze
|
4
|
+
|
5
|
+
before_save { self.email = email.to_s.downcase }
|
6
|
+
validates :name, presence: true, length: { maximum: 50 }
|
7
|
+
validates :email, presence: true, length: { maximum: 255 },
|
8
|
+
uniqueness: { case_sensitive: false }
|
9
|
+
validates :password, presence: true, length: { minimum: 6 }, on: :create, allow_blank: true
|
10
|
+
|
11
|
+
devise :database_authenticatable, #:recoverable,
|
12
|
+
:rememberable, :trackable, :validatable
|
13
|
+
|
14
|
+
has_many :contents
|
15
|
+
has_many :files, class_name: Cas::MediaFile, as: :attachable
|
16
|
+
|
17
|
+
def self.find_for_database_authentication(warden_conditions)
|
18
|
+
conditions = warden_conditions.dup
|
19
|
+
sql = where(["lower(login) = :value OR lower(email) = :value", {
|
20
|
+
value: conditions[:email].downcase
|
21
|
+
}])
|
22
|
+
sql.first
|
23
|
+
end
|
24
|
+
|
25
|
+
def admin?
|
26
|
+
roles.include?("admin")
|
27
|
+
end
|
28
|
+
|
29
|
+
def editor?
|
30
|
+
roles.include?("editor")
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def email_required?
|
36
|
+
false
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class ::FileUploader < Shrine
|
2
|
+
plugin :versions
|
3
|
+
plugin :processing
|
4
|
+
|
5
|
+
process(:store) do |io, context|
|
6
|
+
result = {}
|
7
|
+
if context[:record].media_type == 'image'
|
8
|
+
result = Cas::RemoteCallbacks.callbacks[:uploaded_image_versions].call(io, context)
|
9
|
+
end
|
10
|
+
original = (io.respond_to?(:[]) && io[:original]) ? io[:original] : io
|
11
|
+
result = result.merge(original: original) unless result.keys.include?(:original)
|
12
|
+
result
|
13
|
+
end
|
14
|
+
|
15
|
+
def generate_location(io, context)
|
16
|
+
Rails.logger.info "FileUploader#generate_location"
|
17
|
+
year = Time.now.strftime("%Y")
|
18
|
+
month = Time.now.strftime("%m")
|
19
|
+
original_filename = context[:metadata]["filename"]
|
20
|
+
|
21
|
+
# the default unique identifier
|
22
|
+
name = "#{SecureRandom.hex[0..6]}-#{original_filename}"
|
23
|
+
|
24
|
+
[year, month, name].compact.join("/")
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<h2>Log in</h2>
|
2
|
+
|
3
|
+
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
|
4
|
+
<div class="field">
|
5
|
+
<%= f.label :email, "Login ou email" %><br />
|
6
|
+
<%= f.text_field :email, autofocus: true %>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="field">
|
10
|
+
<%= f.label :password %><br />
|
11
|
+
<%= f.password_field :password, autocomplete: "off" %>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<% if devise_mapping.rememberable? -%>
|
15
|
+
<div class="field">
|
16
|
+
<%= f.check_box :remember_me %><br />
|
17
|
+
<%= f.label :remember_me %>
|
18
|
+
</div>
|
19
|
+
<% end -%>
|
20
|
+
|
21
|
+
<div class="actions">
|
22
|
+
<%= f.submit "Entrar", id: 'login' %>
|
23
|
+
</div>
|
24
|
+
<% end %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<%= simple_form_for([@section, category]) do |f| %>
|
2
|
+
<% if category.errors.any? %>
|
3
|
+
<div id="error_explanation">
|
4
|
+
<h2>Ocorreram alguns erros:</h2>
|
5
|
+
|
6
|
+
<ul>
|
7
|
+
<% category.errors.full_messages.each do |message| %>
|
8
|
+
<li><%= message %></li>
|
9
|
+
<% end %>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<%= f.input :name %>
|
15
|
+
|
16
|
+
<div class="actions">
|
17
|
+
<%= f.submit "Salvar", id: 'submit' %>
|
18
|
+
</div>
|
19
|
+
<% end %>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<p id="notice"><%= notice %></p>
|
2
|
+
|
3
|
+
<h1>Categorias: <%= @section.name %></h1>
|
4
|
+
|
5
|
+
<table>
|
6
|
+
<thead>
|
7
|
+
<tr>
|
8
|
+
<th>Categoria</th>
|
9
|
+
</tr>
|
10
|
+
</thead>
|
11
|
+
|
12
|
+
<tbody>
|
13
|
+
<% @categories.each do |category| %>
|
14
|
+
<tr>
|
15
|
+
<td>
|
16
|
+
<%= link_to category.name,
|
17
|
+
cas.edit_section_category_path(@section, category),
|
18
|
+
id: "edit-category-#{category.id}"
|
19
|
+
%>
|
20
|
+
</td>
|
21
|
+
</tr>
|
22
|
+
<% end %>
|
23
|
+
</tbody>
|
24
|
+
</table>
|
25
|
+
|
26
|
+
<br>
|
27
|
+
|
28
|
+
<%= link_to 'Nova categoria', cas.new_section_category_path(@section), id: 'new-category' %>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<% content_for(:upload, true) %>
|
2
|
+
|
3
|
+
<div class="cas-attachments dropzone" data-attachable-type="contents" data-attachable-id="<%= @content.id %>">
|
4
|
+
<div class="dropzone-description">
|
5
|
+
<div class="container">
|
6
|
+
Solte seus arquivos para fazer upload.
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
<div class="container">
|
10
|
+
<div class="upload-input">
|
11
|
+
<%= f.input :file,
|
12
|
+
as: :file,
|
13
|
+
type: :string,
|
14
|
+
label: "Anexos",
|
15
|
+
input_html: {
|
16
|
+
multiple: "multiple",
|
17
|
+
images: "#js-item-images",
|
18
|
+
} %>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<script id="cas-attachments-template" type="text/x-custom-template">
|
22
|
+
<%= render "form_attachments_template",
|
23
|
+
file_id: '',
|
24
|
+
file_name: '' %>
|
25
|
+
</script>
|
26
|
+
|
27
|
+
<div id="attachments-list">
|
28
|
+
<% @content.attachments.order("cas_media_files.order asc").each do |file| %>
|
29
|
+
<%= render "form_attachments_template",
|
30
|
+
file_id: file.id,
|
31
|
+
file_name: file.original_name %>
|
32
|
+
<% end %>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<% if Rails.env.test? %>
|
38
|
+
<%= hidden_field_tag "images[files][0][id]", "", id: "test_file_1" %>
|
39
|
+
<%= hidden_field_tag "images[files][1][id]", "", id: "test_file_2" %>
|
40
|
+
<%= hidden_field_tag "images[files][2][id]", "", id: "test_file_3" %>
|
41
|
+
<%= hidden_field_tag "images[cover_id]", "", id: "test_file_cover_id" %>
|
42
|
+
<% end %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<div class="attachment-item" data-id="<%= file_id %>">
|
2
|
+
<div class="attachment-container">
|
3
|
+
<div class="filename">
|
4
|
+
<%= file_name %>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<div class="attachment-options">
|
8
|
+
<a href="javascript: void(0)" class="js-delete-file btn">Excluir</a>
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
</div>
|
@@ -0,0 +1,85 @@
|
|
1
|
+
<%= simple_form_for ([@section, @content]) do |f| %>
|
2
|
+
<% if display_field?(:category) %>
|
3
|
+
<p>
|
4
|
+
<%= f.input :category_id,
|
5
|
+
label: "Categoria:",
|
6
|
+
collection: @categories.map { |c| [c.name, c.id] },
|
7
|
+
input_html: { class: 'js-select2' }
|
8
|
+
%>
|
9
|
+
</p>
|
10
|
+
<% end %>
|
11
|
+
|
12
|
+
<% if display_field?(:title) %>
|
13
|
+
<p>
|
14
|
+
<%= f.input :title, required: true, as: :string, label: 'Título:' %>
|
15
|
+
</p>
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<% if display_field?(:summary) %>
|
19
|
+
<p>
|
20
|
+
<%= f.input :summary, as: :text, label: 'Resumo' %>
|
21
|
+
</p>
|
22
|
+
<% end %>
|
23
|
+
|
24
|
+
<% if display_field?(:location) %>
|
25
|
+
<p>
|
26
|
+
<%= f.input :location, as: :string, label: 'Local:' %>
|
27
|
+
</p>
|
28
|
+
<% end %>
|
29
|
+
|
30
|
+
<% if display_field?(:date) %>
|
31
|
+
<% field = field_properties(:date) %>
|
32
|
+
<p>
|
33
|
+
<%= f.input :date,
|
34
|
+
as: (field.format.map(&:to_s).include?("hour") ? :datetime : :date),
|
35
|
+
label: 'Data:',
|
36
|
+
order: field.format,
|
37
|
+
default: @default_date
|
38
|
+
%>
|
39
|
+
</p>
|
40
|
+
<% end %>
|
41
|
+
|
42
|
+
<% if display_field?(:tags) %>
|
43
|
+
<% autocomplete = ActsAsTaggableOn::Tag.all.map { |t| {value: t.name, text: t.name} } %>
|
44
|
+
<%= f.input :tag_list,
|
45
|
+
as: :string,
|
46
|
+
required: false,
|
47
|
+
label: "Tags",
|
48
|
+
input_html: {
|
49
|
+
value: f.object.tag_list.join(", "),
|
50
|
+
class: "js-tags",
|
51
|
+
data: { autocomplete: autocomplete.to_json }
|
52
|
+
}
|
53
|
+
%>
|
54
|
+
<% end %>
|
55
|
+
|
56
|
+
<% if display_field?(:url) %>
|
57
|
+
<p>
|
58
|
+
<%= f.input :url, label: 'URL:' %>
|
59
|
+
</p>
|
60
|
+
<% end %>
|
61
|
+
|
62
|
+
<% if display_field?(:text) %>
|
63
|
+
<p>
|
64
|
+
<%= f.input :text, as: :text, label: 'Texto', input_html: { class: 'editor' } %>
|
65
|
+
</p>
|
66
|
+
<% end %>
|
67
|
+
|
68
|
+
<% if display_field?(:embedded) %>
|
69
|
+
<p>
|
70
|
+
<%= f.input :embedded, label: 'URL:' %>
|
71
|
+
</p>
|
72
|
+
<% end %>
|
73
|
+
|
74
|
+
<% if display_field?(:attachments) %>
|
75
|
+
<%= render 'form_attachments', f: f %>
|
76
|
+
<% end %>
|
77
|
+
|
78
|
+
<% if display_field?(:images) %>
|
79
|
+
<%= render 'form_images', f: f %>
|
80
|
+
<% end %>
|
81
|
+
|
82
|
+
<div class="actions">
|
83
|
+
<%= f.submit "Salvar", id: 'submit' %>
|
84
|
+
</div>
|
85
|
+
<% end %>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<%= simple_form_for ([@section, @content]) do |f| %>
|
2
|
+
<p>
|
3
|
+
<%= f.input :title, as: :string, label: 'Título:' %>
|
4
|
+
</p>
|
5
|
+
|
6
|
+
<% questions = @content.metadata.dig("survey", "questions") %>
|
7
|
+
<%= simple_fields_for "content[metadata]" do |o| %>
|
8
|
+
<% 4.times do |t| %>
|
9
|
+
<%= o.input "survey][questions][#{t}][text",
|
10
|
+
label: "Pergunta #{t+1}",
|
11
|
+
required: (t == 0 ? true : false),
|
12
|
+
input_html: {
|
13
|
+
id: "question_#{t+1}_text",
|
14
|
+
value: questions&.dig("#{t}", "text")
|
15
|
+
} %>
|
16
|
+
|
17
|
+
<%= o.input "survey][questions][#{t}][votes",
|
18
|
+
as: :hidden,
|
19
|
+
input_html: {
|
20
|
+
id: "question_#{t+1}_votes",
|
21
|
+
value: questions&.dig("#{t}", "votes") || 0
|
22
|
+
} %>
|
23
|
+
<% end %>
|
24
|
+
<% end %>
|
25
|
+
|
26
|
+
<p>
|
27
|
+
<%= f.input :published,
|
28
|
+
as: :boolean,
|
29
|
+
label: 'Publicado?',
|
30
|
+
input_html: { checked: true } %>
|
31
|
+
</p>
|
32
|
+
|
33
|
+
<div class="actions">
|
34
|
+
<%= f.submit "Salvar", id: 'submit' %>
|
35
|
+
</div>
|
36
|
+
<% end %>
|
@@ -0,0 +1,86 @@
|
|
1
|
+
<% content_for(:upload, true) %>
|
2
|
+
|
3
|
+
<div class="cas-image-gallery dropzone" data-attachable-type="contents" data-attachable-id="<%= @content.id %>">
|
4
|
+
<div class="dropzone-description">
|
5
|
+
<div class="container">
|
6
|
+
Solte seus arquivos para fazer upload.
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
<div class="container">
|
10
|
+
<div class="upload-input">
|
11
|
+
<%= f.input :file,
|
12
|
+
as: :file,
|
13
|
+
type: :string,
|
14
|
+
label: "Imagens",
|
15
|
+
input_html: {
|
16
|
+
accept: "image/png, image/jpg",
|
17
|
+
multiple: "multiple",
|
18
|
+
images: "#js-item-images"
|
19
|
+
} %>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<script id="cas-gallery-image-template" type="text/x-custom-template">
|
23
|
+
<div class="image-container" data-id="" data-is-cover="" data-filename="">
|
24
|
+
<div class="image-margin">
|
25
|
+
<div class="unselected-but-selectable">
|
26
|
+
<div class="check"></div>
|
27
|
+
</div>
|
28
|
+
<div class="selection">
|
29
|
+
<div class="overlay"></div>
|
30
|
+
<div class="check"></div>
|
31
|
+
</div>
|
32
|
+
<div class="cover-indication">
|
33
|
+
<div class="cover-symbol"></div>
|
34
|
+
</div>
|
35
|
+
<div class="image js-image"
|
36
|
+
style="background-image: url('')">
|
37
|
+
|
38
|
+
<div class="image-options">
|
39
|
+
<div class="overlay"></div>
|
40
|
+
<div class="buttons">
|
41
|
+
<a href="javascript: void(0)" class="js-mark-as-cover btn">Definir capa</a>
|
42
|
+
<a href="javascript: void(0)" class="js-delete-image btn">Excluir</a>
|
43
|
+
</div>
|
44
|
+
</div>
|
45
|
+
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
</script>
|
50
|
+
|
51
|
+
<div class="edit-buttons">
|
52
|
+
<div class="when-selection-disabled">
|
53
|
+
<a href="javascript: void(0);" class="js-toggle-selection btn">Selecionar</a>
|
54
|
+
</div>
|
55
|
+
|
56
|
+
<div class="when-selection-enabled">
|
57
|
+
Selecionados:
|
58
|
+
<a href="javascript: void(0);" class="js-delete-image btn">Excluir</a>
|
59
|
+
<a href="javascript: void(0);" class="js-toggle-selection btn">Cancelar</a>
|
60
|
+
</div>
|
61
|
+
</div>
|
62
|
+
|
63
|
+
<% @content.images.order("cas_media_files.order asc").each do |file| %>
|
64
|
+
<img class="cas-gallery-preloaded"
|
65
|
+
data-src="<%= file.url(version: :original) %>"
|
66
|
+
data-id="<%= file.id %>"
|
67
|
+
data-filename="<%= file.original_name %>"
|
68
|
+
data-original-order="<%= file.order %>"
|
69
|
+
data-is-cover="<%= file.cover.to_s %>">
|
70
|
+
<% end %>
|
71
|
+
|
72
|
+
<div class="images">
|
73
|
+
</div>
|
74
|
+
</div>
|
75
|
+
</div>
|
76
|
+
|
77
|
+
<% if Rails.env.test? %>
|
78
|
+
<%= hidden_field_tag "images[files][0][id]", "", id: "test_image_1" %>
|
79
|
+
<%= hidden_field_tag "images[files][1][id]", "", id: "test_image_2" %>
|
80
|
+
<%= hidden_field_tag "images[files][2][id]", "", id: "test_image_3" %>
|
81
|
+
<%= hidden_field_tag "images[cover_id]", "", id: "test_image_cover_id" %>
|
82
|
+
|
83
|
+
<%= hidden_field_tag "attachments[files][0][id]", "", id: "test_attachment_1" %>
|
84
|
+
<%= hidden_field_tag "attachments[files][1][id]", "", id: "test_attachment_2" %>
|
85
|
+
<%= hidden_field_tag "attachments[files][2][id]", "", id: "test_attachment_3" %>
|
86
|
+
<% end %>
|