udongo 5.3.1 → 5.4.0
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 +4 -4
- data/app/assets/javascripts/backend/sortable.js +1 -1
- data/app/controllers/backend/articles/base_controller.rb +11 -0
- data/app/controllers/backend/articles/images_controller.rb +15 -0
- data/app/controllers/backend/images_controller.rb +56 -0
- data/app/models/article.rb +1 -0
- data/app/models/asset.rb +2 -0
- data/app/models/concerns/visible.rb +2 -2
- data/app/models/content_column.rb +2 -2
- data/app/models/image.rb +1 -1
- data/app/models/note.rb +2 -2
- data/app/models/queued_task.rb +2 -2
- data/app/models/redirect.rb +3 -3
- data/app/models/search_module.rb +2 -2
- data/app/models/search_synonym.rb +0 -1
- data/app/views/backend/articles/_tabs.html.erb +9 -3
- data/app/views/backend/articles/edit.html.erb +1 -1
- data/app/views/backend/articles/edit_translation.html.erb +1 -1
- data/app/views/backend/articles/images/index.html.erb +43 -0
- data/app/views/backend/images/_filter.html.erb +12 -0
- data/app/views/backend/images/index.html.erb +38 -0
- data/app/views/backend/images/new.html.erb +24 -0
- data/changelog.md +7 -0
- data/config/locales/en_backend.yml +1 -0
- data/config/locales/nl_backend.yml +6 -0
- data/config/routes.rb +8 -0
- data/lib/udongo/configs/articles.rb +1 -1
- data/lib/udongo/version.rb +1 -1
- data/readme.md +1 -1
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75a5407f853e677bc244654a801843f1b9663805
|
4
|
+
data.tar.gz: e3a9c0edbb2798d44ad7bd5fe934ee2c2826d5be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bc1535a00eded6212d6c39e0d0293ad7c28f99ac6809ec248f4bdf725d97a0d526711a65e2a4d80f5c065b3fcf026cb832e8c02faa4bc4e1c8f79edbf20b1e6
|
7
|
+
data.tar.gz: 3266aceac326318a4f86fd648f6b51e9c4f1f445b7e889fae6cb4e0d9c660a40b0202f08e61d89f8cc0b2400bba0fa0eca11d0a47b5d8c951038e308321f0d46
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class Backend::Articles::BaseController < Backend::BaseController
|
2
|
+
before_action :find_article
|
3
|
+
before_action do
|
4
|
+
breadcrumb.add t('b.articles'), backend_articles_path
|
5
|
+
breadcrumb.add @article.title
|
6
|
+
end
|
7
|
+
|
8
|
+
def find_article
|
9
|
+
@article = Article.find params[:article_id]
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class Backend::Articles::ImagesController < Backend::Articles::BaseController
|
2
|
+
include Concerns::Backend::PositionableController
|
3
|
+
|
4
|
+
before_action { breadcrumb.add t('b.images') }
|
5
|
+
|
6
|
+
def index
|
7
|
+
@images = @article.images
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def find_model
|
13
|
+
@model = @article.images.find params[:id]
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
class Backend::ImagesController < Backend::BaseController
|
2
|
+
before_action :find_model
|
3
|
+
before_action :init_image, only: [:index, :new, :create]
|
4
|
+
layout 'backend/lightbox'
|
5
|
+
|
6
|
+
def index
|
7
|
+
@search = Asset.ransack params[:q]
|
8
|
+
@assets = @search.result(distinct: true).image.where.not(id: @model.images.pluck(:asset_id)).order('id DESC')
|
9
|
+
end
|
10
|
+
|
11
|
+
def create
|
12
|
+
@image.build_asset
|
13
|
+
@image.asset.filename = params[:image][:asset][:filename]
|
14
|
+
@image.asset.description = params[:image][:asset][:description]
|
15
|
+
|
16
|
+
if @image.asset.filename && @image.asset.filename.content_type.to_s.include?('image') && @image.save
|
17
|
+
redirect_images_overview(:added)
|
18
|
+
else
|
19
|
+
@image.errors.add :filename, 'Ignore me'
|
20
|
+
render :new
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def link
|
25
|
+
@model.images.create(asset: Asset.find(params[:asset_id]))
|
26
|
+
redirect_images_overview(:added)
|
27
|
+
end
|
28
|
+
|
29
|
+
def unlink
|
30
|
+
@model.images.find_by(asset_id: params[:asset_id]).destroy
|
31
|
+
redirect_images_overview(:deleted)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def find_model
|
37
|
+
begin
|
38
|
+
@model ||= params[:klass].constantize.find params[:id]
|
39
|
+
rescue
|
40
|
+
redirect_to backend_path
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def allowed_params
|
45
|
+
params[:image].permit(asset_attributes: [:filename, :description])
|
46
|
+
end
|
47
|
+
|
48
|
+
def redirect_images_overview(action)
|
49
|
+
redirect_to send("backend_#{@model.class.name.underscore}_images_path", @model),
|
50
|
+
notice: translate_notice(action, :image)
|
51
|
+
end
|
52
|
+
|
53
|
+
def init_image
|
54
|
+
@image = @model.images.new
|
55
|
+
end
|
56
|
+
end
|
data/app/models/article.rb
CHANGED
data/app/models/asset.rb
CHANGED
@@ -5,8 +5,8 @@ module Concerns
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
included do
|
8
|
-
scope :visible, ->{ where(visible: true) }
|
9
|
-
scope :hidden, ->{ where('visible = 0 OR visible IS NULL') }
|
8
|
+
scope :visible, -> { where(visible: true) }
|
9
|
+
scope :hidden, -> { where('visible = 0 OR visible IS NULL') }
|
10
10
|
end
|
11
11
|
|
12
12
|
def hidden?
|
@@ -12,13 +12,13 @@ class ContentColumn < ApplicationRecord
|
|
12
12
|
belongs_to :row, class_name: 'ContentRow', touch: true
|
13
13
|
belongs_to :content, polymorphic: true, dependent: :destroy
|
14
14
|
|
15
|
+
default_scope -> { order(:position) }
|
16
|
+
|
15
17
|
validates :row, presence: true
|
16
18
|
validates :width_xs, :width_sm, :width_md, :width_lg, :width_xl,
|
17
19
|
presence: true,
|
18
20
|
numericality: { greater_than: 0, less_than_or_equal_to: 12, only_integer: true }
|
19
21
|
|
20
|
-
default_scope -> { order(:position) }
|
21
|
-
|
22
22
|
def linked_to_searchable_parent?
|
23
23
|
parent.present? && parent.searchable?
|
24
24
|
end
|
data/app/models/image.rb
CHANGED
data/app/models/note.rb
CHANGED
data/app/models/queued_task.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
class QueuedTask < ApplicationRecord
|
2
|
-
validates :klass, presence: true
|
3
|
-
|
4
2
|
serialize :data, Hash
|
5
3
|
|
6
4
|
scope :locked, -> { where(locked: true) }
|
7
5
|
scope :not_locked, -> { where('locked = 0 OR locked IS NULL') }
|
8
6
|
|
7
|
+
validates :klass, presence: true
|
8
|
+
|
9
9
|
def lock!
|
10
10
|
update_attribute :locked, true
|
11
11
|
end
|
data/app/models/redirect.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
class Redirect < ApplicationRecord
|
2
|
-
validates :source_uri, :destination_uri, :status_code, presence: true
|
3
|
-
validates :source_uri, uniqueness: { case_sensitive: false }
|
4
|
-
|
5
2
|
scope :disabled, -> { where(disabled: true) }
|
6
3
|
scope :enabled, -> { where('disabled IS NULL or disabled = 0') }
|
7
4
|
|
5
|
+
validates :source_uri, :destination_uri, :status_code, presence: true
|
6
|
+
validates :source_uri, uniqueness: { case_sensitive: false }
|
7
|
+
|
8
8
|
def enabled?
|
9
9
|
!disabled?
|
10
10
|
end
|
data/app/models/search_module.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
class SearchModule < ApplicationRecord
|
2
|
-
validates :name, presence: true
|
3
|
-
|
4
2
|
scope :weighted, -> { order('weight DESC') }
|
5
3
|
|
4
|
+
validates :name, presence: true
|
5
|
+
|
6
6
|
def indices
|
7
7
|
SearchIndex.joins('INNER JOIN search_modules ON search_indices.searchable_type = search_modules.name')
|
8
8
|
.where('search_modules.name = ?', name)
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<% klass = %w(nav-link) %>
|
6
6
|
<% klass << 'active' if active == :general %>
|
7
7
|
|
8
|
-
<%= link_to t('b.general'), edit_backend_article_path(
|
8
|
+
<%= link_to t('b.general'), edit_backend_article_path(model), class: klass %>
|
9
9
|
</li>
|
10
10
|
|
11
11
|
<% Udongo.config.i18n.app.locales.each do |locale| %>
|
@@ -13,11 +13,17 @@
|
|
13
13
|
<% klass = %w(nav-link) %>
|
14
14
|
<% klass << 'active' if active == locale.to_sym %>
|
15
15
|
|
16
|
-
<%= link_to locale.upcase, edit_translation_backend_article_path(
|
16
|
+
<%= link_to locale.upcase, edit_translation_backend_article_path(model, locale), class: klass %>
|
17
17
|
</li>
|
18
18
|
<% end %>
|
19
19
|
|
20
|
-
|
20
|
+
<% if Udongo.config.articles.images? %>
|
21
|
+
<li class="nav-item">
|
22
|
+
<% klass = %w(nav-link) %>
|
23
|
+
<% klass << 'active' if active == :images %>
|
24
|
+
<%= link_to icon(:image, t('b.images')), backend_article_images_path(model), class: klass %>
|
25
|
+
</li>
|
26
|
+
<% end %>
|
21
27
|
</ul>
|
22
28
|
</div>
|
23
29
|
</div>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<% breadcrumb.add t('b.edit') %>
|
3
3
|
<%= render 'backend/breadcrumbs' %>
|
4
4
|
|
5
|
-
<%= render 'tabs', active: params[:translation_locale].to_sym %>
|
5
|
+
<%= render 'tabs', model: @model, active: params[:translation_locale].to_sym %>
|
6
6
|
<%= render 'backend/general_form_error', object: @translation %>
|
7
7
|
|
8
8
|
<%= simple_form_for([:backend, @translation], url: edit_translation_backend_article_path, html: { class: 'no-focus' }) do |f| %>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<% javascript 'backend/sortable' %>
|
2
|
+
<%= render 'backend/breadcrumbs' %>
|
3
|
+
<%= render 'backend/articles/tabs', model: @article, active: :images %>
|
4
|
+
|
5
|
+
<p class="text-xs-right">
|
6
|
+
<%= link_to icon(:plus, t('b.add')), backend_images_path(klass: @article.class.name, id: @article.id), class: 'btn btn-primary btn-sm' %>
|
7
|
+
</p>
|
8
|
+
|
9
|
+
<% if @images.any? %>
|
10
|
+
<table class="table table-striped table-hover">
|
11
|
+
<thead class="thead-inverse">
|
12
|
+
<tr>
|
13
|
+
<th><%= t 'b.file' %></th>
|
14
|
+
<th><%= t 'g.type' %></th>
|
15
|
+
<th><%= t 'b.size' %></th>
|
16
|
+
<th><%= t 'b.description' %></th>
|
17
|
+
<th><%= t 'b.last_changed_at' %></th>
|
18
|
+
<th> </th>
|
19
|
+
</tr>
|
20
|
+
</thead>
|
21
|
+
|
22
|
+
<tbody>
|
23
|
+
<% @images.each do |img| %>
|
24
|
+
<% a = img.asset %>
|
25
|
+
<tr data-update-position="<%= update_position_backend_article_image_path(@article, img) %>">
|
26
|
+
<td>
|
27
|
+
<%= image_tag a.image.url(150, 150), alt: '', class: 'img-fluid' %>
|
28
|
+
</td>
|
29
|
+
<td><%= a.actual_filename.split('.').last.upcase %></td>
|
30
|
+
<td><%= number_to_human_size a.filesize %></td>
|
31
|
+
<td><%= simple_format a.description %></td>
|
32
|
+
<td><%= l a.updated_at %></td>
|
33
|
+
<td class="text-xs-right">
|
34
|
+
<%= link_to icon(:trash), unlink_backend_images_path(klass: @article.class.name, id: @article.id, asset_id: a.id), data: { confirm: t('b.msg.confirm') }, title: t('b.delete') %>
|
35
|
+
</td>
|
36
|
+
</tr>
|
37
|
+
<% end %>
|
38
|
+
</tbody>
|
39
|
+
</table>
|
40
|
+
|
41
|
+
<% else %>
|
42
|
+
<p><%= t 'b.msg.no_items' %></p>
|
43
|
+
<% end %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%= search_form_for @search, url: backend_images_path do |f| %>
|
2
|
+
<%= hidden_field_tag :klass, @model.class.name %>
|
3
|
+
<%= hidden_field_tag :id, @model.id %>
|
4
|
+
<div class="row m-b-2">
|
5
|
+
<div class="col-md-6">
|
6
|
+
<%= f.search_field :description_cont, placeholder: t('b.description'), class: 'form-control' %>
|
7
|
+
</div>
|
8
|
+
<div class="col-md-6">
|
9
|
+
<%= f.submit class: 'btn btn-sn' %>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<%= simple_form_for @image, url: backend_images_path(klass: @model.class.name, id: @model.id) do |f| %>
|
2
|
+
<div class="card">
|
3
|
+
<div class="card-header">
|
4
|
+
<%= t 'b.upload_a_new_image' %>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<div class="card-block">
|
8
|
+
<%= f.simple_fields_for :asset do |fa| %>
|
9
|
+
<%= fa.input :filename, as: :file, label: false, required: false %>
|
10
|
+
<%= fa.input :description, as: :text, required: false %>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<div class="form-actions">
|
14
|
+
<button type="submit" class="btn btn-primary"><%= t 'b.save' %></button>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
<div class="card">
|
21
|
+
<div class="card-header">
|
22
|
+
<%= t 'b.choose_an_existing_image' %>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<div class="card-block">
|
26
|
+
<%= render 'filter' %>
|
27
|
+
|
28
|
+
<div class="row">
|
29
|
+
<% @assets.each do |a| %>
|
30
|
+
<div class="col-sm-6 col-md-4 col-lg-3 col-xl-2">
|
31
|
+
<%= link_to link_backend_images_path(klass: @model.class, id: @model.id, asset_id: a.id), style: '' do %>
|
32
|
+
<%= image_tag a.image.url(550, 550, action: :resize_and_pad, background: :white), alt: '', class: 'img-fluid' %>
|
33
|
+
<% end %>
|
34
|
+
</div>
|
35
|
+
<% end %>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</div>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<% if @image.errors.any? %>
|
2
|
+
<div class="alert alert-danger" role="alert">
|
3
|
+
<strong><%= t 'b.msg.something_went_wrong' %>!</strong>
|
4
|
+
<%= t 'b.msg.please_select_a_valid_image' %>
|
5
|
+
</div>
|
6
|
+
<% end %>
|
7
|
+
|
8
|
+
<%= simple_form_for @image, url: backend_images_path(klass: @model.class.name, id: @model.id) do |f| %>
|
9
|
+
<div class="card">
|
10
|
+
<div class="card-header">
|
11
|
+
<%= t 'b.image' %>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="card-block">
|
15
|
+
<%= f.simple_fields_for :asset do |fa| %>
|
16
|
+
<%= fa.input :filename, as: :file, label: false %>
|
17
|
+
<%= fa.input :description, as: :text, required: false %>
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
<%= render 'backend/form_actions', cancel_url: backend_images_path(klass: @model.class.name, id: @model.id) %>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<% end %>
|
data/changelog.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
5.4.0 - 2017-03-08
|
2
|
+
--
|
3
|
+
* When enabled, you can add images to articles from the assets module.
|
4
|
+
* Bugfix: the sortable scope for the ```Image``` wasn't properly set.
|
5
|
+
* Images are now enabled by default for articles.
|
6
|
+
|
7
|
+
|
1
8
|
5.3.1 - 2017-03-07
|
2
9
|
--
|
3
10
|
* Bugfix: there was an issue with loading the base module for the image
|
@@ -10,6 +10,7 @@ nl:
|
|
10
10
|
articles: Artikels
|
11
11
|
author: Auteur
|
12
12
|
cancel: Annuleren
|
13
|
+
choose_an_existing_image: Kies bestaande afbeelding
|
13
14
|
content: Inhoud
|
14
15
|
current_image: Huidige afbeelding
|
15
16
|
custom_title: Aangepaste titel
|
@@ -35,6 +36,8 @@ nl:
|
|
35
36
|
general: Algemeen
|
36
37
|
house_number: Huisnummer
|
37
38
|
html_content: HTML inhoud
|
39
|
+
image: Afbeelding
|
40
|
+
images: Afbeeldingen
|
38
41
|
last_changed_at: Laatst gewijzigd op
|
39
42
|
last_name: Achternaam
|
40
43
|
locale: Taal
|
@@ -78,6 +81,7 @@ nl:
|
|
78
81
|
title: Titel
|
79
82
|
to: Naar
|
80
83
|
up: Omhoog
|
84
|
+
upload_a_new_image: Upload nieuwe afbeelding
|
81
85
|
used: Gebruikt
|
82
86
|
user: Gebruiker
|
83
87
|
users: Gebruikers
|
@@ -117,8 +121,10 @@ nl:
|
|
117
121
|
no_title_set: Dit item heeft nog geen titel.
|
118
122
|
pages:
|
119
123
|
invisible: Deze pagina is niet zichtbaar op de website.
|
124
|
+
please_select_a_valid_image: Gelieve een geldige afbeelding te selecteren en opnieuw te proberen.
|
120
125
|
saved: '%{actor} werd bewaard.'
|
121
126
|
seo: SEO
|
127
|
+
something_went_wrong: Er liep iets fout!
|
122
128
|
status_codes:
|
123
129
|
'301': 301 (Moved Permanently)
|
124
130
|
'303': 303 (See Other)
|
data/config/routes.rb
CHANGED
@@ -32,6 +32,10 @@ Rails.application.routes.draw do
|
|
32
32
|
|
33
33
|
resources :articles, except: [:show] do
|
34
34
|
concerns :translatable
|
35
|
+
|
36
|
+
resources :images, only: [:index], controller: 'articles/images' do
|
37
|
+
concerns :positionable
|
38
|
+
end
|
35
39
|
end
|
36
40
|
|
37
41
|
resources :navigations, only: [:index] do
|
@@ -82,6 +86,10 @@ Rails.application.routes.draw do
|
|
82
86
|
end
|
83
87
|
end
|
84
88
|
|
89
|
+
resources :images, only: [:index, :new, :create] do
|
90
|
+
collection { get 'link', 'unlink' }
|
91
|
+
end
|
92
|
+
|
85
93
|
resources :assets
|
86
94
|
end
|
87
95
|
|
@@ -6,7 +6,7 @@ module Udongo
|
|
6
6
|
attribute :allow_html_in_title, Axiom::Types::Boolean, default: false
|
7
7
|
attribute :allow_html_in_summary, Axiom::Types::Boolean, default: false
|
8
8
|
attribute :editor_for_summary, Axiom::Types::Boolean, default: false
|
9
|
-
attribute :images, Axiom::Types::Boolean, default:
|
9
|
+
attribute :images, Axiom::Types::Boolean, default: true
|
10
10
|
|
11
11
|
def allow_html_in_title?
|
12
12
|
allow_html_in_title === true
|
data/lib/udongo/version.rb
CHANGED
data/readme.md
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: udongo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Davy Hellemans
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-03-
|
12
|
+
date: 2017-03-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -451,6 +451,8 @@ files:
|
|
451
451
|
- app/assets/stylesheets/backend/pages/_login.scss
|
452
452
|
- app/assets/stylesheets/backend/udongo.scss
|
453
453
|
- app/controllers/backend/admins_controller.rb
|
454
|
+
- app/controllers/backend/articles/base_controller.rb
|
455
|
+
- app/controllers/backend/articles/images_controller.rb
|
454
456
|
- app/controllers/backend/articles_controller.rb
|
455
457
|
- app/controllers/backend/assets_controller.rb
|
456
458
|
- app/controllers/backend/base_controller.rb
|
@@ -461,6 +463,7 @@ files:
|
|
461
463
|
- app/controllers/backend/dashboard_controller.rb
|
462
464
|
- app/controllers/backend/email_templates_controller.rb
|
463
465
|
- app/controllers/backend/emails_controller.rb
|
466
|
+
- app/controllers/backend/images_controller.rb
|
464
467
|
- app/controllers/backend/navigation/items_controller.rb
|
465
468
|
- app/controllers/backend/navigations_controller.rb
|
466
469
|
- app/controllers/backend/pages_controller.rb
|
@@ -585,6 +588,7 @@ files:
|
|
585
588
|
- app/views/backend/articles/_tabs.html.erb
|
586
589
|
- app/views/backend/articles/edit.html.erb
|
587
590
|
- app/views/backend/articles/edit_translation.html.erb
|
591
|
+
- app/views/backend/articles/images/index.html.erb
|
588
592
|
- app/views/backend/articles/index.html.erb
|
589
593
|
- app/views/backend/articles/new.html.erb
|
590
594
|
- app/views/backend/assets/_filter.html.erb
|
@@ -609,6 +613,9 @@ files:
|
|
609
613
|
- app/views/backend/email_templates/new.html.erb
|
610
614
|
- app/views/backend/emails/index.html.erb
|
611
615
|
- app/views/backend/emails/show.html.erb
|
616
|
+
- app/views/backend/images/_filter.html.erb
|
617
|
+
- app/views/backend/images/index.html.erb
|
618
|
+
- app/views/backend/images/new.html.erb
|
612
619
|
- app/views/backend/navigation/items/_form.html.erb
|
613
620
|
- app/views/backend/navigation/items/_tabs.html.erb
|
614
621
|
- app/views/backend/navigation/items/edit.html.erb
|