dhatu 0.1.2 → 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 +4 -4
- data/app/controllers/dhatu/categories_controller.rb +129 -0
- data/app/models/dhatu/blog_post.rb +0 -4
- data/app/models/dhatu/category.rb +264 -0
- data/app/models/image/category_image.rb +3 -0
- data/app/uploaders/category_image_uploader.rb +15 -0
- data/app/views/dhatu/categories/_form.html.erb +36 -0
- data/app/views/dhatu/categories/_index.html.erb +157 -0
- data/app/views/dhatu/categories/_row.html.erb +84 -0
- data/app/views/dhatu/categories/_show.html.erb +100 -0
- data/app/views/dhatu/categories/index.html.erb +20 -0
- data/config/routes.rb +9 -0
- data/lib/dhatu/version.rb +1 -1
- metadata +17 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7fa0a222775b06b12a71c3ee569d4f7143f5d6aa
|
4
|
+
data.tar.gz: 9723db066cfbdec803a21f9afc085b2446672914
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd1d3ab466efa68e245050534e7e945fc038a167d33683944894d41f9ffdb812561050c9acf08a3c0838e1b65aeb30557d8d78351c1b979a876f44095b754dcc
|
7
|
+
data.tar.gz: 69a608697a1e2754d06db47e02e5d703d95a03aa4a6fc8dd97f1cf6d19040712ad443cd3c06de7e2a511ac285cdd66b751f1a946e007a5f065f6530eca38151a
|
@@ -0,0 +1,129 @@
|
|
1
|
+
module Dhatu
|
2
|
+
class CategoriesController < ResourceController
|
3
|
+
|
4
|
+
before_action :require_update_permission, only: [:update_status, :make_parent, :mark_as_featured, :remove_from_featured]
|
5
|
+
|
6
|
+
def update_status
|
7
|
+
@category = @r_object = Dhatu::Category.find(params[:id])
|
8
|
+
case params[:status]
|
9
|
+
when "unpublished"
|
10
|
+
@category.unpublish!
|
11
|
+
when "removed"
|
12
|
+
@category.remove!
|
13
|
+
when "published"
|
14
|
+
@category.publish!
|
15
|
+
end
|
16
|
+
set_notification(true, I18n.t('status.success'), I18n.t('state.changed', item: default_item_name.titleize, new_state: @r_object.status))
|
17
|
+
render_row
|
18
|
+
end
|
19
|
+
|
20
|
+
def make_parent
|
21
|
+
@category = @r_object = Dhatu::Category.find(params[:id])
|
22
|
+
@category.update_attribute(:parent_id, nil)
|
23
|
+
get_collections
|
24
|
+
render_accordingly
|
25
|
+
end
|
26
|
+
|
27
|
+
def mark_as_featured
|
28
|
+
@category = @r_object = Dhatu::Category.find(params[:id])
|
29
|
+
@category.update_attribute(:featured, true) if @category.published?
|
30
|
+
render_row
|
31
|
+
end
|
32
|
+
|
33
|
+
def remove_from_featured
|
34
|
+
@category = @r_object = Dhatu::Category.find(params[:id])
|
35
|
+
@category.update_attribute(:featured, false) if @category.featured?
|
36
|
+
render_row
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def permitted_params
|
42
|
+
params[:category].permit(:name, :permalink, :one_liner, :description, :parent_id, :priority)
|
43
|
+
end
|
44
|
+
|
45
|
+
def resource_url(obj)
|
46
|
+
url_for([:admin, obj])
|
47
|
+
end
|
48
|
+
|
49
|
+
def set_navs
|
50
|
+
set_nav("admin/categories")
|
51
|
+
end
|
52
|
+
|
53
|
+
def get_collections
|
54
|
+
|
55
|
+
@current_category = Dhatu::Category.find_by_id(params[:parent_id])
|
56
|
+
|
57
|
+
filter_param_mapping
|
58
|
+
parse_filters
|
59
|
+
|
60
|
+
if @query
|
61
|
+
@relation = Dhatu::Category.includes(:parent)
|
62
|
+
else
|
63
|
+
if @current_category
|
64
|
+
@relation = @current_category.sub_categories.includes(:parent)
|
65
|
+
else
|
66
|
+
@relation = Dhatu::Category.where("parent_id IS NULL")
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
@relation = @relation.order("priority ASC, name ASC")
|
71
|
+
|
72
|
+
apply_filters
|
73
|
+
|
74
|
+
@categories = @r_objects = @relation.page(@current_page).per(@per_page)
|
75
|
+
|
76
|
+
return true
|
77
|
+
end
|
78
|
+
|
79
|
+
def apply_filters
|
80
|
+
@relation = @relation.search(@query) if @query
|
81
|
+
@relation = @relation.status(@status) if @status
|
82
|
+
@relation = @relation.featured(@featured) unless @featured.nil?
|
83
|
+
end
|
84
|
+
|
85
|
+
def filter_config
|
86
|
+
@filter_config = {
|
87
|
+
boolean_filters: [
|
88
|
+
{ filter_name: :featured }
|
89
|
+
],
|
90
|
+
string_filters: [
|
91
|
+
{ filter_name: :query },
|
92
|
+
{ filter_name: :status }
|
93
|
+
],
|
94
|
+
reference_filters: [],
|
95
|
+
variable_filters: [],
|
96
|
+
}
|
97
|
+
end
|
98
|
+
|
99
|
+
def resource_controller_configuration
|
100
|
+
{
|
101
|
+
page_title: "Categories",
|
102
|
+
js_view_path: "/kuppayam/workflows/peacock",
|
103
|
+
view_path: "/dhatu/categories",
|
104
|
+
collection_name: :categories,
|
105
|
+
item_name: :category,
|
106
|
+
class: Dhatu::Category
|
107
|
+
}
|
108
|
+
end
|
109
|
+
|
110
|
+
def breadcrumbs_configuration
|
111
|
+
{
|
112
|
+
heading: "Manage Categories",
|
113
|
+
icon: "fa-sitemap",
|
114
|
+
description: "Listing all Categories",
|
115
|
+
links: [{name: "Home", link: dashboard_path, icon: 'fa-home'},
|
116
|
+
{name: "Manage Categories", link: dhatu.categories_path, icon: 'fa-sitemap', active: true}]
|
117
|
+
}
|
118
|
+
end
|
119
|
+
|
120
|
+
def permitted_params
|
121
|
+
params.require(:category).permit(:name, :one_liner, :description, :priority, :parent_id)
|
122
|
+
end
|
123
|
+
|
124
|
+
def set_navs
|
125
|
+
set_nav("dhatu/categories")
|
126
|
+
end
|
127
|
+
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,264 @@
|
|
1
|
+
class Dhatu::Category < ApplicationRecord
|
2
|
+
|
3
|
+
# Constants
|
4
|
+
PUBLISHED = "published"
|
5
|
+
UNPUBLISHED = "unpublished"
|
6
|
+
REMOVED = "removed"
|
7
|
+
|
8
|
+
STATUS = {
|
9
|
+
PUBLISHED => "Published",
|
10
|
+
UNPUBLISHED => "Un-Published",
|
11
|
+
REMOVED => "Removed"
|
12
|
+
}
|
13
|
+
|
14
|
+
STATUS_REVERSE = {
|
15
|
+
"Published" => PUBLISHED,
|
16
|
+
"Un-Published" => UNPUBLISHED,
|
17
|
+
"Removed" => REMOVED
|
18
|
+
}
|
19
|
+
|
20
|
+
FEATURED = {"Featured" => true, "Non Featured" => false}
|
21
|
+
FEATURED_REVERSE = {true => "Featured", false => "Non Featured"}
|
22
|
+
|
23
|
+
EXCLUDED_JSON_ATTRIBUTES = [:created_at, :updated_at, :parent_id, :top_parent_id]
|
24
|
+
|
25
|
+
# Callbacks
|
26
|
+
before_validation :generate_permalink, on: :create
|
27
|
+
before_validation :set_top_parent, on: :create
|
28
|
+
after_create :update_permalink, :set_end_node_of_parent
|
29
|
+
after_destroy :set_end_node_of_parent
|
30
|
+
|
31
|
+
# Validations
|
32
|
+
validate_string :name, mandatory: true, min_length: 2, format: /.*/i
|
33
|
+
validate_string :one_liner, mandatory: false, format: /.*/i
|
34
|
+
validate_string :permalink, mandatory: true, format: /.*/i, min_length: 4, max_length: 128
|
35
|
+
validates :status, :presence=> true, :inclusion => {:in => STATUS.keys, :presence_of => :status, :message => "%{value} is not a valid status" }
|
36
|
+
|
37
|
+
# Associations
|
38
|
+
belongs_to :parent, :class_name => 'Dhatu::Category', optional: true
|
39
|
+
belongs_to :top_parent, :class_name => 'Dhatu::Category', optional: true
|
40
|
+
has_many :sub_categories, :foreign_key => "parent_id", :class_name => "Dhatu::Category"
|
41
|
+
has_one :category_image, :as => :imageable, :dependent => :destroy, :class_name => "Image::CategoryImage"
|
42
|
+
has_many :classified_attributes
|
43
|
+
|
44
|
+
has_one :category_image, :as => :imageable, :dependent => :destroy, :class_name => "Image::CoverImage"
|
45
|
+
has_many :gallery_images, :as => :imageable, :dependent => :destroy, :class_name => "Image::GalleryImage"
|
46
|
+
|
47
|
+
# ---------------
|
48
|
+
# Class methods
|
49
|
+
# ---------------
|
50
|
+
|
51
|
+
# return an active record relation object with the search query in its where clause
|
52
|
+
# Return the ActiveRecord::Relation object
|
53
|
+
# == Examples
|
54
|
+
# >>> object.search(query)
|
55
|
+
# => ActiveRecord::Relation object
|
56
|
+
scope :search, lambda {|query| where("LOWER(name) LIKE LOWER('%#{query}%') OR\
|
57
|
+
LOWER(permalink) LIKE LOWER('%#{query}%') OR\
|
58
|
+
LOWER(one_liner) LIKE LOWER('%#{query}%') OR\
|
59
|
+
LOWER(description) LIKE LOWER('%#{query}%')")
|
60
|
+
}
|
61
|
+
|
62
|
+
scope :status, lambda { |status| where("LOWER(status)='#{status}'") }
|
63
|
+
scope :featured, lambda { |val| where(featured: val) }
|
64
|
+
|
65
|
+
scope :published, -> { where(status: PUBLISHED) }
|
66
|
+
scope :unpublished, -> { where(status: UNPUBLISHED) }
|
67
|
+
scope :removed, -> { where(status: REMOVED) }
|
68
|
+
|
69
|
+
# Import Methods
|
70
|
+
|
71
|
+
def self.save_row_data(hsh)
|
72
|
+
|
73
|
+
# Initializing error hash for displaying all errors altogether
|
74
|
+
error_object = Kuppayam::Importer::ErrorHash.new
|
75
|
+
|
76
|
+
return error_object if hsh[:name].blank?
|
77
|
+
|
78
|
+
category = Dhatu::Category.find_by_name(hsh[:name]) || Dhatu::Category.new
|
79
|
+
category.name = hsh[:name]
|
80
|
+
category.one_liner = hsh[:one_liner]
|
81
|
+
category.description = hsh[:description]
|
82
|
+
category.priority = hsh[:priority]
|
83
|
+
|
84
|
+
parent = Dhatu::Category.find_by_name(hsh[:parent])
|
85
|
+
category.parent = parent
|
86
|
+
category.top_parent = parent && parent.top_parent ? parent.top_parent : parent
|
87
|
+
category.status = PUBLISHED
|
88
|
+
|
89
|
+
# Initializing error hash for displaying all errors altogether
|
90
|
+
error_object = Kuppayam::Importer::ErrorHash.new
|
91
|
+
|
92
|
+
if category.valid?
|
93
|
+
begin
|
94
|
+
category.save!
|
95
|
+
rescue Exception => e
|
96
|
+
summary = "uncaught #{e} exception while handling connection: #{e.message}"
|
97
|
+
details = "Stack trace: #{e.backtrace.map {|l| " #{l}\n"}.join}"
|
98
|
+
error_object.errors << { summary: summary, details: details }
|
99
|
+
end
|
100
|
+
else
|
101
|
+
summary = "Error while saving category: #{category.name}"
|
102
|
+
details = "Error! #{category.errors.full_messages.to_sentence}"
|
103
|
+
error_object.errors << { summary: summary, details: details }
|
104
|
+
end
|
105
|
+
|
106
|
+
return error_object
|
107
|
+
end
|
108
|
+
|
109
|
+
# ------------------
|
110
|
+
# Instance methods
|
111
|
+
# ------------------
|
112
|
+
|
113
|
+
# Exclude some attributes info from json output.
|
114
|
+
def as_json(options={})
|
115
|
+
options[:except] ||= EXCLUDED_JSON_ATTRIBUTES
|
116
|
+
options[:include] ||= [:parent, :top_parent, :sub_categories]
|
117
|
+
#options[:methods] = []
|
118
|
+
#options[:methods] << :profile_image
|
119
|
+
json = super(options)
|
120
|
+
# Hash[*json.map{|k, v| [k, v || ""]}.flatten]
|
121
|
+
end
|
122
|
+
|
123
|
+
# Status methods
|
124
|
+
# ------------------
|
125
|
+
|
126
|
+
# * Return true if the category is published, else false.
|
127
|
+
# == Examples
|
128
|
+
# >>> category.published?
|
129
|
+
# => true
|
130
|
+
def published?
|
131
|
+
(status == PUBLISHED)
|
132
|
+
end
|
133
|
+
|
134
|
+
# change the status to :published
|
135
|
+
# Return the status
|
136
|
+
# == Examples
|
137
|
+
# >>> category.publish!
|
138
|
+
# => "published"
|
139
|
+
def publish!
|
140
|
+
self.update_attribute(:status, PUBLISHED)
|
141
|
+
end
|
142
|
+
|
143
|
+
# * Return true if the category is unpublished, else false.
|
144
|
+
# == Examples
|
145
|
+
# >>> category.unpublished?
|
146
|
+
# => true
|
147
|
+
def unpublished?
|
148
|
+
(status == UNPUBLISHED)
|
149
|
+
end
|
150
|
+
|
151
|
+
# change the status to :unpublished
|
152
|
+
# Return the status
|
153
|
+
# == Examples
|
154
|
+
# >>> category.unpublish!
|
155
|
+
# => "unpublished"
|
156
|
+
def unpublish!
|
157
|
+
self.update_attribute(:status, UNPUBLISHED)
|
158
|
+
end
|
159
|
+
|
160
|
+
# * Return true if the category is removed, else false.
|
161
|
+
# == Examples
|
162
|
+
# >>> category.removed?
|
163
|
+
# => true
|
164
|
+
def removed?
|
165
|
+
(status == REMOVED)
|
166
|
+
end
|
167
|
+
|
168
|
+
# change the status to :removed
|
169
|
+
# Return the status
|
170
|
+
# == Examples
|
171
|
+
# >>> category.remove!
|
172
|
+
# => "removed"
|
173
|
+
def remove!
|
174
|
+
self.update_attribute(:status, REMOVED)
|
175
|
+
end
|
176
|
+
|
177
|
+
# Other Methods
|
178
|
+
# ------------------
|
179
|
+
|
180
|
+
def display_name
|
181
|
+
self.name
|
182
|
+
end
|
183
|
+
|
184
|
+
def default_image_url(size="medium")
|
185
|
+
"/assets/defaults/category-#{size}.png"
|
186
|
+
end
|
187
|
+
|
188
|
+
# Permission Methods
|
189
|
+
# ------------------
|
190
|
+
|
191
|
+
def can_be_edited?
|
192
|
+
published? or unpublished?
|
193
|
+
end
|
194
|
+
|
195
|
+
def can_be_deleted?
|
196
|
+
return false unless removed?
|
197
|
+
return false if parent.nil?
|
198
|
+
return false if end_node == false or self.sub_categories.any?
|
199
|
+
true
|
200
|
+
end
|
201
|
+
|
202
|
+
def can_be_published?
|
203
|
+
unpublished? or removed?
|
204
|
+
end
|
205
|
+
|
206
|
+
def can_be_unpublished?
|
207
|
+
return false if end_node == false or self.sub_categories.any?
|
208
|
+
published? or removed?
|
209
|
+
end
|
210
|
+
|
211
|
+
def can_be_removed?
|
212
|
+
return false if parent.nil?
|
213
|
+
return false if end_node == false or self.sub_categories.any?
|
214
|
+
published? or unpublished?
|
215
|
+
end
|
216
|
+
|
217
|
+
# Callback methods
|
218
|
+
# ------------------
|
219
|
+
|
220
|
+
def set_end_node!
|
221
|
+
self.update_attribute(:end_node, !self.sub_categories.any?)
|
222
|
+
end
|
223
|
+
|
224
|
+
def set_end_node_of_parent
|
225
|
+
if self.parent
|
226
|
+
if self.parent.sub_categories.any?
|
227
|
+
self.parent.update_attribute(:end_node, false)
|
228
|
+
else
|
229
|
+
self.parent.update_attribute(:end_node, true)
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
protected
|
235
|
+
|
236
|
+
def generate_permalink
|
237
|
+
return unless self.name
|
238
|
+
if self.parent
|
239
|
+
perm = "#{self.name.parameterize}-#{self.parent.name.parameterize}"
|
240
|
+
else
|
241
|
+
perm = self.name.parameterize
|
242
|
+
end
|
243
|
+
self.permalink = "#{SecureRandom.hex(4)}-#{perm[0..110]}"
|
244
|
+
end
|
245
|
+
|
246
|
+
def update_permalink
|
247
|
+
if self.parent
|
248
|
+
self.permalink = "#{self.id}-#{self.name.parameterize}-#{self.parent.name.parameterize}"
|
249
|
+
else
|
250
|
+
self.permalink = "#{self.id}-#{self.name.parameterize}" if self.name
|
251
|
+
end
|
252
|
+
self.save
|
253
|
+
end
|
254
|
+
|
255
|
+
def set_top_parent
|
256
|
+
return if self.parent.blank?
|
257
|
+
if self.parent.top_parent.blank?
|
258
|
+
self.top_parent = self.parent
|
259
|
+
else
|
260
|
+
self.top_parent = self.parent.top_parent
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CategoryImageUploader < ImageUploader
|
2
|
+
|
3
|
+
def store_dir
|
4
|
+
"uploads/category_images/#{model.id}"
|
5
|
+
end
|
6
|
+
|
7
|
+
version :small do
|
8
|
+
process :resize_to_fill => [100, 100]
|
9
|
+
end
|
10
|
+
|
11
|
+
version :tiny do
|
12
|
+
process :resize_to_fill => [40, 40]
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<%= form_for([:admin, @category], :html => {:id=>"form_category", :class=>"mb-0 form-horizontal", :role => "form", :method => (@category.new_record? ? :post : :put), :remote=>true}) do |f| %>
|
2
|
+
|
3
|
+
<div id="category_form_error">
|
4
|
+
<%= @category.errors[:base].to_sentence %>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<div class="form-inputs mb-30 mt-30">
|
8
|
+
<%= theme_form_field(@category, :name) %>
|
9
|
+
|
10
|
+
<%= theme_form_field(@category, :one_liner, required: false) %>
|
11
|
+
<%= theme_form_field(@category, :description, required: false, html_options: {type: :textarea}) %>
|
12
|
+
<%= theme_form_field(@category, :priority, required: false, html_options: {type: :number, style: "width:70px;"}) %>
|
13
|
+
|
14
|
+
<%
|
15
|
+
@category.parent_id = params[:parent_id] if params[:parent_id]
|
16
|
+
categories = Category.select("id, name").order("name ASC").all
|
17
|
+
%>
|
18
|
+
|
19
|
+
<% options = {assoc_collection: categories, required: false, editable: true, assoc_display_method: :name} %>
|
20
|
+
<%= theme_form_assoc_group(@category, :parent_id, **options) %>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
<div>
|
26
|
+
|
27
|
+
<%= submit_tag("Save", :class=>"btn btn-primary pull-right ml-10") %>
|
28
|
+
|
29
|
+
<%= link_to raw("<i class='fa fa-close mr-5'></i><span>Cancel</span>"), "#", onclick: "closeGenericModal();", class: "pull-right ml-10 btn btn-white" %>
|
30
|
+
|
31
|
+
</div>
|
32
|
+
<%= clear_tag(10) %>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<% end %>
|
36
|
+
|
@@ -0,0 +1,157 @@
|
|
1
|
+
<div id="div_category_action_buttons">
|
2
|
+
<div class="row">
|
3
|
+
<div class="col-md-6">
|
4
|
+
|
5
|
+
<% if @current_category %>
|
6
|
+
<%= theme_button('Back', 'arrow-left', categories_path(parent_id: @current_category.parent_id), classes: "pull-left mr-10", btn_type: "white") %>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<%= theme_button('Refresh', 'refresh', categories_path(parent_id: @current_category.try(:id)), classes: "pull-left mr-10", btn_type: "white") %>
|
10
|
+
|
11
|
+
<% if @current_category.try(:id) && @current_user.has_create_permission?(Category) %>
|
12
|
+
<%= theme_button('Add a Category', 'plus', new_category_path(parent_id: @current_category.try(:id)), classes: "pull-left mr-10", btn_type: "success") %>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
</div>
|
16
|
+
<div class="col-md-6">
|
17
|
+
<%= search_form_kuppayam(Category, categories_path, text: @filters[:query]) %>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
<%= clear_tag(10) %>
|
22
|
+
|
23
|
+
<div id="div_category_breadcrumbs">
|
24
|
+
<% c_list = [] %>
|
25
|
+
<% c = @current_category %>
|
26
|
+
<% while c do %>
|
27
|
+
<% c_list << c %>
|
28
|
+
<% c = c.parent %>
|
29
|
+
<% end %>
|
30
|
+
|
31
|
+
<% if c_list.count >= 1 %>
|
32
|
+
<ol class="breadcrumb auto-hidden1 bc-3">
|
33
|
+
<% c_list.reverse.each do |c| %>
|
34
|
+
<% if c_list[0] == c %>
|
35
|
+
<li class="active"><strong><%= c.display_name %></strong></li>
|
36
|
+
<% else %>
|
37
|
+
<li><%= link_to c.display_name, categories_path(parent_id: c.id), remote: true, class: "collapsed" %></li>
|
38
|
+
<% end %>
|
39
|
+
<% end %>
|
40
|
+
</ol>
|
41
|
+
<% end %>
|
42
|
+
</div>
|
43
|
+
<%= clear_tag %>
|
44
|
+
|
45
|
+
<div class="table-responsive">
|
46
|
+
<table class="table table-hover members-table middle-align">
|
47
|
+
<thead>
|
48
|
+
<tr>
|
49
|
+
<th style="text-align: center;width:60px">#</th>
|
50
|
+
<th>Name</th>
|
51
|
+
<th>Parent</th>
|
52
|
+
<th>Top Parent</th>
|
53
|
+
<th style="text-align: center;width:100px;">Status</th>
|
54
|
+
<th style="text-align: center;width:100px;">Priority</th>
|
55
|
+
<th style="text-align: center;width:120px;">End Node?</th>
|
56
|
+
<% if display_manage_links? %>
|
57
|
+
<th style="text-align: center;" colspan="2">Actions</th>
|
58
|
+
<% end %>
|
59
|
+
</tr>
|
60
|
+
</thead>
|
61
|
+
<tbody>
|
62
|
+
<% @categories.each_with_index do |category, i| %>
|
63
|
+
<tr id="tr_category_<%= category.id %>">
|
64
|
+
|
65
|
+
<th scope="row" style="text-align: center;">
|
66
|
+
<% if i < 0 %>
|
67
|
+
<i class="fa fa-check text-success"></i>
|
68
|
+
<% else %>
|
69
|
+
<%= i + 1 + (@per_page.to_i * (@current_page.to_i - 1)) %>
|
70
|
+
<% end %>
|
71
|
+
</th>
|
72
|
+
|
73
|
+
<% if category.end_node? %>
|
74
|
+
<td class="category-name"><%= category.display_name %></td>
|
75
|
+
<% else %>
|
76
|
+
<td class="category-name">
|
77
|
+
<%= link_to raw("<i class=\"fa fa-caret-right\"></i> #{category.display_name}"), categories_path(parent_id: category.id), remote: true %></td>
|
78
|
+
<% end %>
|
79
|
+
|
80
|
+
<% if category.parent == @current_category %>
|
81
|
+
<td class="category-name"><%= category.parent.display_name if category.parent %></td>
|
82
|
+
<% else %>
|
83
|
+
<td class="category-name"><%= link_to category.parent.display_name, categories_path(parent_id: category.parent.id), remote: true if category.parent %></td>
|
84
|
+
<% end %>
|
85
|
+
|
86
|
+
<% if category.top_parent == @current_category %>
|
87
|
+
<td class="category-name"><%= category.top_parent.display_name if category.top_parent %></td>
|
88
|
+
<% else %>
|
89
|
+
<td class="category-name"><%= link_to category.top_parent.display_name, categories_path(parent_id: category.top_parent.id), remote: true if category.top_parent %></td>
|
90
|
+
<% end %>
|
91
|
+
|
92
|
+
<td style="text-align: center;width:100px;">
|
93
|
+
<% if category.unpublished? %>
|
94
|
+
<span class="ml-5 mt-5 label label-default">Un-Published</span>
|
95
|
+
<% elsif category.published? %>
|
96
|
+
<span class="ml-5 mt-5 label label-success">Published</span>
|
97
|
+
<% elsif category.removed? %>
|
98
|
+
<span class="ml-5 mt-5 label label-danger">Disabled</span>
|
99
|
+
<% end %>
|
100
|
+
</td>
|
101
|
+
|
102
|
+
<td style="text-align: center;width:100px;"><%= category.priority if category.priority %></td>
|
103
|
+
<td style="text-align: center;width:120px;"><%= category.end_node.to_s.titleize %></td>
|
104
|
+
|
105
|
+
<% if display_manage_links? %>
|
106
|
+
<% edit_link = edit_category_path(id: category.id) %>
|
107
|
+
<% delete_link = category_path(id: category.id) %>
|
108
|
+
|
109
|
+
<td class="action-links" style="width:10%">
|
110
|
+
|
111
|
+
<% case category.status %>
|
112
|
+
<% when "published" %>
|
113
|
+
<!-- Un-Publish -->
|
114
|
+
<%= link_to raw("<i class=\"fa fa-circle mr-5\"></i> Un-Publish"), update_status_category_path(:id =>category.id, :status =>'unpublished'), :method =>'PUT', :remote=>true, role: "menuitem", tabindex: "-1", :class=>"category_status" if category.can_be_unpublished? %>
|
115
|
+
|
116
|
+
<!-- Remove -->
|
117
|
+
<%= link_to raw("<i class=\"fa fa-edit mr-5\"></i> Remove"), update_status_category_path(:id =>category.id, :status =>'removed'), :method =>'PUT', :remote=>true, role: "menuitem", tabindex: "-1", :class=>"category_status" if category.can_be_removed? %>
|
118
|
+
<% when "unpublished" %>
|
119
|
+
<!-- Publish -->
|
120
|
+
<%= link_to raw("<i class=\"fa fa-circle-o mr-5\"></i> Publish"), update_status_category_path(:id =>category.id, :status =>'published'), :method =>'PUT', :remote=>true, role: "menuitem", tabindex: "-1", :class=>"category_status" if category.can_be_published? %>
|
121
|
+
<!-- Remove -->
|
122
|
+
<%= link_to raw("<i class=\"fa fa-edit mr-5\"></i> Remove"), update_status_category_path(:id =>category.id, :status =>'removed'), :method =>'PUT', :remote=>true, role: "menuitem", tabindex: "-1", :class=>"category_status" if category.can_be_removed? %>
|
123
|
+
<% when "removed" %>
|
124
|
+
<!-- Un-Publish -->
|
125
|
+
<%= link_to raw("<i class=\"fa fa-circle mr-5\"></i> Un-Publish"), update_status_category_path(:id =>category.id, :status =>'unpublished'), :method =>'PUT', :remote=>true, role: "menuitem", tabindex: "-1", :class=>"category_status" if category.can_be_unpublished? %>
|
126
|
+
<!-- Publish -->
|
127
|
+
<%= link_to raw("<i class=\"fa fa-circle-o mr-5\"></i> Publish"), update_status_category_path(:id =>category.id, :status =>'published'), :method =>'PUT', :remote=>true, role: "menuitem", tabindex: "-1",:class=>"category_status" if category.can_be_published? %>
|
128
|
+
<% end %>
|
129
|
+
|
130
|
+
</td>
|
131
|
+
|
132
|
+
<td class="action-links" style="width:10%">
|
133
|
+
|
134
|
+
<%= link_to raw("<i class=\"linecons-desktop\"></i> View Details"), category_path(category), :remote=>true, style: "color:#40bbea" %>
|
135
|
+
|
136
|
+
<%= link_to raw("<i class=\"fa-plus\"></i> Add Sub Category"), new_category_path(parent_id: category.id), :remote=>true, class: "edit" %>
|
137
|
+
|
138
|
+
<%= link_to raw("<i class=\"linecons-pencil\"></i> Edit Category"), edit_link, :remote=>true, class: "edit1" if category.can_be_edited? %>
|
139
|
+
|
140
|
+
<%= link_to raw("<i class=\"linecons-trash\"></i> Delete"), delete_link, method: :delete, role: "menuitem", tabindex: "-1", data: { confirm: 'Are you sure?' }, :remote=>true, class: "delete" if category.can_be_deleted? && display_delete_links? %>
|
141
|
+
|
142
|
+
</td>
|
143
|
+
|
144
|
+
<% end %>
|
145
|
+
|
146
|
+
</tr>
|
147
|
+
<% end %>
|
148
|
+
</tbody>
|
149
|
+
</table>
|
150
|
+
</div>
|
151
|
+
|
152
|
+
<div class="row">
|
153
|
+
<div class="col-sm-12">
|
154
|
+
<%= paginate_kuppayam(@categories) %>
|
155
|
+
</div>
|
156
|
+
</div>
|
157
|
+
|
@@ -0,0 +1,84 @@
|
|
1
|
+
<tr id="tr_category_<%= category.id %>">
|
2
|
+
|
3
|
+
<th scope="row" style="text-align: center;">
|
4
|
+
<% if i < 0 %>
|
5
|
+
<i class="fa fa-check text-success"></i>
|
6
|
+
<% else %>
|
7
|
+
<%= i + 1 + (@per_page.to_i * (@current_page.to_i - 1)) %>
|
8
|
+
<% end %>
|
9
|
+
</th>
|
10
|
+
|
11
|
+
<% if category.end_node? %>
|
12
|
+
<td class="category-name"><%= category.display_name %></td>
|
13
|
+
<% else %>
|
14
|
+
<td class="category-name">
|
15
|
+
<%= link_to raw("<i class=\"fa fa-caret-right\"></i> #{category.display_name}"), categories_path(parent_id: category.id), remote: true %></td>
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<% if category.parent == @current_category %>
|
19
|
+
<td class="category-name"><%= category.parent.display_name if category.parent %></td>
|
20
|
+
<% else %>
|
21
|
+
<td class="category-name"><%= link_to category.parent.display_name, categories_path(parent_id: category.parent.id), remote: true if category.parent %></td>
|
22
|
+
<% end %>
|
23
|
+
|
24
|
+
<% if category.top_parent == @current_category %>
|
25
|
+
<td class="category-name"><%= category.top_parent.display_name if category.top_parent %></td>
|
26
|
+
<% else %>
|
27
|
+
<td class="category-name"><%= link_to category.top_parent.display_name, categories_path(parent_id: category.top_parent.id), remote: true if category.top_parent %></td>
|
28
|
+
<% end %>
|
29
|
+
|
30
|
+
<td style="text-align: center;width:100px;">
|
31
|
+
<% if category.unpublished? %>
|
32
|
+
<span class="ml-5 mt-5 label label-default">Un-Published</span>
|
33
|
+
<% elsif category.published? %>
|
34
|
+
<span class="ml-5 mt-5 label label-success">Published</span>
|
35
|
+
<% elsif category.removed? %>
|
36
|
+
<span class="ml-5 mt-5 label label-danger">Disabled</span>
|
37
|
+
<% end %>
|
38
|
+
</td>
|
39
|
+
|
40
|
+
<td style="text-align: center;width:100px;"><%= category.priority if category.priority %></td>
|
41
|
+
<td style="text-align: center;width:120px;"><%= category.end_node.to_s.titleize %></td>
|
42
|
+
|
43
|
+
<% if display_manage_links? %>
|
44
|
+
<% edit_link = edit_category_path(id: category.id) %>
|
45
|
+
<% delete_link = category_path(id: category.id) %>
|
46
|
+
|
47
|
+
<td class="action-links" style="width:10%">
|
48
|
+
|
49
|
+
<% case category.status %>
|
50
|
+
<% when "published" %>
|
51
|
+
<!-- Un-Publish -->
|
52
|
+
<%= link_to raw("<i class=\"fa fa-circle mr-5\"></i> Un-Publish"), update_status_category_path(:id =>category.id, :status =>'unpublished'), :method =>'PUT', :remote=>true, role: "menuitem", tabindex: "-1", :class=>"category_status" if category.can_be_unpublished? %>
|
53
|
+
|
54
|
+
<!-- Remove -->
|
55
|
+
<%= link_to raw("<i class=\"fa fa-edit mr-5\"></i> Remove"), update_status_category_path(:id =>category.id, :status =>'removed'), :method =>'PUT', :remote=>true, role: "menuitem", tabindex: "-1", :class=>"category_status" if category.can_be_removed? %>
|
56
|
+
<% when "unpublished" %>
|
57
|
+
<!-- Publish -->
|
58
|
+
<%= link_to raw("<i class=\"fa fa-circle-o mr-5\"></i> Publish"), update_status_category_path(:id =>category.id, :status =>'published'), :method =>'PUT', :remote=>true, role: "menuitem", tabindex: "-1", :class=>"category_status" if category.can_be_published? %>
|
59
|
+
<!-- Remove -->
|
60
|
+
<%= link_to raw("<i class=\"fa fa-edit mr-5\"></i> Remove"), update_status_category_path(:id =>category.id, :status =>'removed'), :method =>'PUT', :remote=>true, role: "menuitem", tabindex: "-1", :class=>"category_status" if category.can_be_removed? %>
|
61
|
+
<% when "removed" %>
|
62
|
+
<!-- Un-Publish -->
|
63
|
+
<%= link_to raw("<i class=\"fa fa-circle mr-5\"></i> Un-Publish"), update_status_category_path(:id =>category.id, :status =>'unpublished'), :method =>'PUT', :remote=>true, role: "menuitem", tabindex: "-1", :class=>"category_status" if category.can_be_unpublished? %>
|
64
|
+
<!-- Publish -->
|
65
|
+
<%= link_to raw("<i class=\"fa fa-circle-o mr-5\"></i> Publish"), update_status_category_path(:id =>category.id, :status =>'published'), :method =>'PUT', :remote=>true, role: "menuitem", tabindex: "-1",:class=>"category_status" if category.can_be_published? %>
|
66
|
+
<% end %>
|
67
|
+
|
68
|
+
</td>
|
69
|
+
|
70
|
+
<td class="action-links" style="width:10%">
|
71
|
+
|
72
|
+
<%= link_to raw("<i class=\"linecons-desktop\"></i> View Details"), category_path(category), :remote=>true, style: "color:#40bbea" %>
|
73
|
+
|
74
|
+
<%= link_to raw("<i class=\"fa-plus\"></i> Add Sub Category"), new_category_path(parent_id: category.id), :remote=>true, class: "edit" %>
|
75
|
+
|
76
|
+
<%= link_to raw("<i class=\"linecons-pencil\"></i> Edit Category"), edit_link, :remote=>true, class: "edit1" if category.can_be_edited? %>
|
77
|
+
|
78
|
+
<%= link_to raw("<i class=\"linecons-trash\"></i> Delete"), delete_link, method: :delete, role: "menuitem", tabindex: "-1", data: { confirm: 'Are you sure?' }, :remote=>true, class: "delete" if category.can_be_deleted? && display_delete_links? %>
|
79
|
+
|
80
|
+
</td>
|
81
|
+
|
82
|
+
<% end %>
|
83
|
+
|
84
|
+
</tr>
|
@@ -0,0 +1,100 @@
|
|
1
|
+
<% status_hash = {published: "success", unpublished: "default", disabled: "danger"} %>
|
2
|
+
|
3
|
+
<div class="media <%= status_hash[@category.status.to_sym] %>">
|
4
|
+
|
5
|
+
<!-- <div class="pull-left pt-10 pr-10 pb-10" style="width:30%;"> -->
|
6
|
+
<%#= edit_image(@category,
|
7
|
+
"category_image.image.small.url",
|
8
|
+
upload_image_link(@category, :category_image, nil ),
|
9
|
+
remove_image_link(@category, :category_image, nil ),
|
10
|
+
image_options: {assoc_name: :category_image }) %>
|
11
|
+
<!-- </div> -->
|
12
|
+
|
13
|
+
<!-- <div class="pull-left ml-10" style="width:65%;"> -->
|
14
|
+
<div class="">
|
15
|
+
|
16
|
+
<h1><%= @category.name %></h1>
|
17
|
+
|
18
|
+
<% if @category.one_liner %>
|
19
|
+
<strong><%= @category.one_liner %></strong>
|
20
|
+
<% end %>
|
21
|
+
|
22
|
+
<% if @category.description %>
|
23
|
+
<p><%= @category.description %></p>
|
24
|
+
<% end %>
|
25
|
+
|
26
|
+
<span class="label label-<%= status_hash[@category.status.to_sym] %>"><%= @category.status.titleize %></span>
|
27
|
+
|
28
|
+
<%= clear_tag %>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<%= clear_tag(30) %>
|
34
|
+
|
35
|
+
<ul class="nav nav-pills">
|
36
|
+
|
37
|
+
<li class="active">
|
38
|
+
<a href="#technical_details" data-toggle="tab" aria-expanded="false">
|
39
|
+
<span class="visible-xs"><i class="fa-database"></i></span>
|
40
|
+
<span class="hidden-xs">Technical Details</span>
|
41
|
+
</a>
|
42
|
+
</li>
|
43
|
+
|
44
|
+
</ul>
|
45
|
+
|
46
|
+
<div class="tab-content">
|
47
|
+
<div class="tab-pane active" id="technical_details" style="border: 1px solid #000;min-height:200px;padding:20px;margin-bottom:20px;max-height: 400px;overflow-y: auto;">
|
48
|
+
|
49
|
+
<%= clear_tag(20) %>
|
50
|
+
|
51
|
+
<div class="table-responsive mb-50">
|
52
|
+
<table class="table table-striped table-condensed table-bordered">
|
53
|
+
<tbody>
|
54
|
+
|
55
|
+
<tr>
|
56
|
+
<th>ID</th><td><%= @category.id %></td>
|
57
|
+
<th>Permalink</th><td><%= @category.permalink %></td>
|
58
|
+
</tr>
|
59
|
+
|
60
|
+
<tr>
|
61
|
+
<th>Parent</th><td><%= @category.parent.try(:display_name) %> (<%= @category.parent.try(:id) %>)</td>
|
62
|
+
<th>Top Parent</th><td><%= @category.top_parent.try(:display_name) %> (<%= @category.top_parent.try(:id) %>)</td>
|
63
|
+
</tr>
|
64
|
+
|
65
|
+
<tr>
|
66
|
+
<th>Status</th><td><%= @category.status %></td>
|
67
|
+
<th>Featured</th><td><%= @category.featured? ? "Yes" : "No" %></td>
|
68
|
+
</tr>
|
69
|
+
|
70
|
+
<tr>
|
71
|
+
<th>Priority</th><td><%= @category.priority %></td>
|
72
|
+
<th>End Node</th><td><%= @category.end_node? ? "Yes" : "No" %></td>
|
73
|
+
</tr>
|
74
|
+
|
75
|
+
<tr>
|
76
|
+
<th>Created At</th><td><%= @category.created_at.strftime("%m/%d/%Y - %H:%M:%S") if @category.created_at %></td>
|
77
|
+
<th>Updated At</th><td><%= @category.updated_at.strftime("%m/%d/%Y - %H:%M:%S") if @category.updated_at %></td>
|
78
|
+
</tr>
|
79
|
+
|
80
|
+
</tbody>
|
81
|
+
</table>
|
82
|
+
</div>
|
83
|
+
|
84
|
+
</div>
|
85
|
+
</div>
|
86
|
+
|
87
|
+
<div>
|
88
|
+
<%
|
89
|
+
edit_link = edit_category_url(id: @category.id)
|
90
|
+
delete_link = category_url(id: @category.id)
|
91
|
+
%>
|
92
|
+
|
93
|
+
<%= link_to raw("<i class=\"fa fa-close mr-5\"></i> <span>Cancel</span>"), "#", onclick: "closeGenericModal();", class: "btn btn-white pull-left" %>
|
94
|
+
|
95
|
+
<%= link_to raw("<i class=\"fa fa-trash mr-5\"></i> <span>Delete</span>"), delete_link, method: :delete, :remote=>true, class: "btn btn-gray pull-right" %>
|
96
|
+
|
97
|
+
<%= link_to raw("<i class=\"fa fa-edit mr-5\"></i> Edit"), edit_link, method: :get, :remote=>true, class: "btn btn-gray pull-right mr-10" %>
|
98
|
+
</div>
|
99
|
+
|
100
|
+
<%= clear_tag %>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<div class="row">
|
2
|
+
|
3
|
+
<div class="col-md-12">
|
4
|
+
|
5
|
+
<ul class="nav nav-tabs">
|
6
|
+
</ul>
|
7
|
+
<div class="tab-content">
|
8
|
+
<div class="tab-pane active">
|
9
|
+
|
10
|
+
<div id="div_category_index">
|
11
|
+
<%= render :partial=>"dhatu/categories/index" %>
|
12
|
+
</div>
|
13
|
+
<%= clear_tag(10) %>
|
14
|
+
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
</div>
|
19
|
+
|
20
|
+
</div>
|
data/config/routes.rb
CHANGED
@@ -60,6 +60,15 @@ Dhatu::Engine.routes.draw do
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
+
resources :categories do
|
64
|
+
member do
|
65
|
+
put :make_parent, as: :make_parent
|
66
|
+
put :update_status, as: :update_status
|
67
|
+
put :mark_as_featured, as: :mark_as_featured
|
68
|
+
put :remove_from_featured, as: :remove_from_featured
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
63
72
|
end
|
64
73
|
|
65
74
|
end
|
data/lib/dhatu/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dhatu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kpvarma
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -107,7 +107,7 @@ dependencies:
|
|
107
107
|
version: '0.1'
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.1.
|
110
|
+
version: 0.1.18
|
111
111
|
type: :runtime
|
112
112
|
prerelease: false
|
113
113
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -117,7 +117,7 @@ dependencies:
|
|
117
117
|
version: '0.1'
|
118
118
|
- - ">="
|
119
119
|
- !ruby/object:Gem::Version
|
120
|
-
version: 0.1.
|
120
|
+
version: 0.1.18
|
121
121
|
- !ruby/object:Gem::Dependency
|
122
122
|
name: pattana
|
123
123
|
requirement: !ruby/object:Gem::Requirement
|
@@ -127,7 +127,7 @@ dependencies:
|
|
127
127
|
version: '0.1'
|
128
128
|
- - ">="
|
129
129
|
- !ruby/object:Gem::Version
|
130
|
-
version: 0.1.
|
130
|
+
version: 0.1.15
|
131
131
|
type: :runtime
|
132
132
|
prerelease: false
|
133
133
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -137,7 +137,7 @@ dependencies:
|
|
137
137
|
version: '0.1'
|
138
138
|
- - ">="
|
139
139
|
- !ruby/object:Gem::Version
|
140
|
-
version: 0.1.
|
140
|
+
version: 0.1.15
|
141
141
|
- !ruby/object:Gem::Dependency
|
142
142
|
name: usman
|
143
143
|
requirement: !ruby/object:Gem::Requirement
|
@@ -147,7 +147,7 @@ dependencies:
|
|
147
147
|
version: '0.3'
|
148
148
|
- - ">="
|
149
149
|
- !ruby/object:Gem::Version
|
150
|
-
version: 0.3.
|
150
|
+
version: 0.3.12
|
151
151
|
type: :runtime
|
152
152
|
prerelease: false
|
153
153
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -157,7 +157,7 @@ dependencies:
|
|
157
157
|
version: '0.3'
|
158
158
|
- - ">="
|
159
159
|
- !ruby/object:Gem::Version
|
160
|
-
version: 0.3.
|
160
|
+
version: 0.3.12
|
161
161
|
- !ruby/object:Gem::Dependency
|
162
162
|
name: bcrypt
|
163
163
|
requirement: !ruby/object:Gem::Requirement
|
@@ -408,6 +408,7 @@ files:
|
|
408
408
|
- app/controllers/dhatu/application_controller.rb
|
409
409
|
- app/controllers/dhatu/blog_posts_controller.rb
|
410
410
|
- app/controllers/dhatu/branches_controller.rb
|
411
|
+
- app/controllers/dhatu/categories_controller.rb
|
411
412
|
- app/controllers/dhatu/dashboard_controller.rb
|
412
413
|
- app/controllers/dhatu/events_controller.rb
|
413
414
|
- app/controllers/dhatu/offers_controller.rb
|
@@ -421,11 +422,14 @@ files:
|
|
421
422
|
- app/models/dhatu/application_record.rb
|
422
423
|
- app/models/dhatu/blog_post.rb
|
423
424
|
- app/models/dhatu/branch.rb
|
425
|
+
- app/models/dhatu/category.rb
|
424
426
|
- app/models/dhatu/event.rb
|
425
427
|
- app/models/dhatu/offer.rb
|
426
428
|
- app/models/dhatu/section.rb
|
427
429
|
- app/models/dhatu/team_member.rb
|
428
430
|
- app/models/dhatu/testimonial.rb
|
431
|
+
- app/models/image/category_image.rb
|
432
|
+
- app/uploaders/category_image_uploader.rb
|
429
433
|
- app/views/dhatu/blog_posts/_form.html.erb
|
430
434
|
- app/views/dhatu/blog_posts/_index.html.erb
|
431
435
|
- app/views/dhatu/blog_posts/_row.html.erb
|
@@ -436,6 +440,11 @@ files:
|
|
436
440
|
- app/views/dhatu/branches/_row.html.erb
|
437
441
|
- app/views/dhatu/branches/_show.html.erb
|
438
442
|
- app/views/dhatu/branches/index.html.erb
|
443
|
+
- app/views/dhatu/categories/_form.html.erb
|
444
|
+
- app/views/dhatu/categories/_index.html.erb
|
445
|
+
- app/views/dhatu/categories/_row.html.erb
|
446
|
+
- app/views/dhatu/categories/_show.html.erb
|
447
|
+
- app/views/dhatu/categories/index.html.erb
|
439
448
|
- app/views/dhatu/dashboard/_index.html.erb
|
440
449
|
- app/views/dhatu/dashboard/index.html.erb
|
441
450
|
- app/views/dhatu/events/_form.html.erb
|