dhatu 0.1.4 → 0.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 310d2306a14f602500128b494f6ee13378836145
4
- data.tar.gz: ffad0ed3f1b05f4a582c282c359b827fc2dfca13
3
+ metadata.gz: 5aa15ef1778f28fd3c9a4c2e5fa38c70a04691fb
4
+ data.tar.gz: db924144919db1ce6795890dac67ec1e969d4aa8
5
5
  SHA512:
6
- metadata.gz: 4d206c07bb298481e3b79fb2367735f4c9525f90a856e6c0be8414452b63866b411653c63db43bab70472fc639e7c9ed8e1289b4a7dfd089ff1221ec56de73c1
7
- data.tar.gz: 86edc9cd171fdeba5e76515bf0986e1fa9d89da322bb40e85d56abba41a35665255de707db64ea60a4cb8124ab25c9aaaad4d33eeef7f319d5e13c62714957f4
6
+ metadata.gz: 06ee7c08dfed11f1b3c2c753b0f3fce3bf64ae2aa043ad9dde093fc9c8cd7cbd90f927345632161c6907c203e5c4e710c027e2b2ab026a15bd0b985a53e36159
7
+ data.tar.gz: 7d3a7f3177d7df229009a8cc9f9dc313e19bd230061c5ab6a86be036e0e68bc11321d9cce89573d2c28dda3b7c7cc085829e2801d988b48ba2b1a48a72f1313a
@@ -4,7 +4,7 @@ module Dhatu
4
4
  private
5
5
 
6
6
  def permitted_params
7
- params.require("dhatu/blog_post").permit(:title, :slug, :author, :meta_description, :description, :posted_at, :tags)
7
+ params.require("dhatu/blog_post").permit(:title, :slug, :author, :meta_description, :description, :posted_at, :tags, :category_id)
8
8
  end
9
9
 
10
10
  def get_collections
@@ -42,15 +42,13 @@ module Dhatu
42
42
  params[:category].permit(:name, :permalink, :one_liner, :description, :parent_id, :priority)
43
43
  end
44
44
 
45
- def resource_url(obj)
46
- url_for([:admin, obj])
47
- end
48
-
49
45
  def set_navs
50
46
  set_nav("admin/categories")
51
47
  end
52
48
 
53
49
  def get_collections
50
+ @category_types = Dhatu::Category.distinct.pluck(:category_type)
51
+ @category_types.unshift('All')
54
52
 
55
53
  @current_category = Dhatu::Category.find_by_id(params[:parent_id])
56
54
 
@@ -77,6 +75,12 @@ module Dhatu
77
75
  end
78
76
 
79
77
  def apply_filters
78
+
79
+ @category_type = params[:category_type] || "All"
80
+ if @category_type && @category_type != "All"
81
+ @relation = @relation.where("category_type = ?", params[:category_type])
82
+ end
83
+
80
84
  @relation = @relation.search(@query) if @query
81
85
  @relation = @relation.status(@status) if @status
82
86
  @relation = @relation.featured(@featured) unless @featured.nil?
@@ -118,7 +122,7 @@ module Dhatu
118
122
  end
119
123
 
120
124
  def permitted_params
121
- params.require(:category).permit(:name, :one_liner, :description, :priority, :parent_id)
125
+ params.require("dhatu/category").permit(:name, :one_liner, :description, :priority, :parent_id, :category_type)
122
126
  end
123
127
 
124
128
  def set_navs
@@ -0,0 +1,94 @@
1
+ module Dhatu
2
+ class ServicesController < ResourceController
3
+
4
+ private
5
+
6
+ def permitted_params
7
+ params.require("dhatu/service").permit(:name, :one_liner, :permalink, :description, :price, :duration, :category_id, :priority)
8
+ end
9
+
10
+ def get_collections
11
+ category_ids = Dhatu::Service.distinct.pluck(:category_id)
12
+ @categories = Dhatu::Category.where(id: category_ids).to_a
13
+ @categories.unshift(Dhatu::Category.new(id: -1, name: "All"))
14
+
15
+ @relation = Dhatu::Service.includes(:cover_image).where("")
16
+ # params[:st] = "published" if params[:st].nil?
17
+
18
+ parse_filters
19
+ apply_filters
20
+ @services = @r_objects = @relation.page(@current_page).per(@per_page)
21
+ return true
22
+ end
23
+
24
+ def apply_filters
25
+ @category = Dhatu::Category.find_by_id(params[:ct]) || Dhatu::Category.new(id: -1, name: "All")
26
+
27
+ if @category && @category.id != -1
28
+ @relation = @relation.where("category_id = ?", @category.id)
29
+ end
30
+
31
+ @relation = @relation.search(@query) if @query
32
+ @relation = @relation.status(@status) if @status
33
+
34
+ @order_by = "created_at desc" unless @order_by
35
+ @relation = @relation.order(@order_by)
36
+ end
37
+
38
+ def configure_filter_settings
39
+ @filter_settings = {
40
+ string_filters: [
41
+ { filter_name: :query },
42
+ { filter_name: :status }
43
+ ],
44
+
45
+ boolean_filters: [],
46
+
47
+ reference_filters: [],
48
+ variable_filters: [],
49
+ }
50
+ end
51
+
52
+ def configure_filter_ui_settings
53
+ @filter_ui_settings = {
54
+ status: {
55
+ object_filter: false,
56
+ select_label: "Select Status",
57
+ display_hash: Dhatu::Service::STATUS,
58
+ current_value: @status,
59
+ values: Dhatu::Service::STATUS_REVERSE,
60
+ current_filters: @filters,
61
+ filters_to_remove: [],
62
+ filters_to_add: {},
63
+ url_method_name: 'services_url',
64
+ show_all_filter_on_top: true
65
+ }
66
+ }
67
+ end
68
+
69
+ def resource_controller_configuration
70
+ {
71
+ page_title: "Services",
72
+ js_view_path: "/kuppayam/workflows/peacock",
73
+ view_path: "dhatu/services",
74
+ collection_name: :services,
75
+ item_name: :service,
76
+ class: Dhatu::Service
77
+ }
78
+ end
79
+
80
+ def breadcrumbs_configuration
81
+ {
82
+ heading: "Manage services",
83
+ icon: "fa-reorder",
84
+ description: "Listing all services",
85
+ links: [{name: "Dashboard", link: dashboard_path, icon: 'fa-dashboard'},
86
+ {name: "Manage services", link: dhatu.services_path, icon: 'fa-calendar', active: true}]
87
+ }
88
+ end
89
+
90
+ def set_navs
91
+ set_nav("service")
92
+ end
93
+ end
94
+ end
@@ -14,8 +14,11 @@ class Dhatu::BlogPost < Dhatu::ApplicationRecord
14
14
  validates :description, presence: true
15
15
  validates :posted_at, presence: true
16
16
  validates :meta_description, presence: true, length: {minimum: 10, maximum: 500}, allow_blank: false
17
+
18
+ validates :category, presence: true
17
19
 
18
20
  # Associations
21
+ belongs_to :category
19
22
  has_one :cover_image, :as => :imageable, :dependent => :destroy, :class_name => "Image::CoverImage"
20
23
  has_many :gallery_images, :as => :imageable, :dependent => :destroy, :class_name => "Image::GalleryImage"
21
24
 
@@ -18,8 +18,7 @@ class Dhatu::Category < Dhatu::ApplicationRecord
18
18
  validate_string :one_liner, mandatory: false, format: /.*/i
19
19
  validate_string :permalink, mandatory: true, format: /.*/i, min_length: 4, max_length: 128
20
20
  validates :category_type, :presence=> true, length: {maximum: 64}
21
- validates :status, :presence=> true, :inclusion => {:in => STATUS.keys, :presence_of => :status, :message => "%{value} is not a valid status" }
22
-
21
+
23
22
  # Associations
24
23
  belongs_to :parent, :class_name => 'Dhatu::Category', optional: true
25
24
  belongs_to :top_parent, :class_name => 'Dhatu::Category', optional: true
@@ -41,6 +40,8 @@ class Dhatu::Category < Dhatu::ApplicationRecord
41
40
  LOWER(description) LIKE LOWER('%#{query}%')")
42
41
  }
43
42
 
43
+ scope :filter_by_category_type, lambda { |ctype| where("category_type = ?", ctype) }
44
+
44
45
  scope :status, lambda { |status| where("LOWER(status)='#{status}'") }
45
46
  scope :featured, lambda { |val| where(featured: val) }
46
47
 
@@ -127,6 +128,22 @@ class Dhatu::Category < Dhatu::ApplicationRecord
127
128
  true
128
129
  end
129
130
 
131
+ def can_be_published?
132
+ unpublished? or archived?
133
+ end
134
+
135
+ def can_be_unpublished?
136
+ published? or archived?
137
+ end
138
+
139
+ def can_be_archived?
140
+ unpublished?
141
+ end
142
+
143
+ def can_be_removed?
144
+ unpublished? or archived?
145
+ end
146
+
130
147
  # Callback methods
131
148
  # ------------------
132
149
 
@@ -0,0 +1,75 @@
1
+ class Dhatu::Service < Dhatu::ApplicationRecord
2
+
3
+ # Set Table Name
4
+ self.table_name = "services"
5
+
6
+ # Including the State Machine Methods
7
+ include Publishable
8
+
9
+ # Constants
10
+ COVER_IMAGE_INSTRUCTIONS = [
11
+ "the file extension should be .jpg / .jpeg or .png format",
12
+ "the image should be in resolution 750 pixels by 368 pixels, (Portrait Format). (most cameras and camera phones will produce images bigger than this)",
13
+ "the file size should not be less than 20 Kb, or bigger than <strong>1 MB</strong>"
14
+ ]
15
+
16
+ # Constants
17
+ GALLERY_IMAGE_INSTRUCTIONS = [
18
+ "the file extension should be .jpg / .jpeg or .png format",
19
+ "the image should be in resolution 750 pixels by 368 pixels, (Portrait Format). (most cameras and camera phones will produce images bigger than this)",
20
+ "the file size should not be less than 20 Kb, or bigger than <strong>1 MB</strong>"
21
+ ]
22
+
23
+ # Validations
24
+ validate_string :name, mandatory: true, min_length: 2, format: /.*/i
25
+ validate_string :one_liner, mandatory: false, format: /.*/i
26
+ validate_string :permalink, mandatory: true, format: /.*/i, min_length: 4, max_length: 128
27
+
28
+ validates :category, presence: true
29
+
30
+ # Associations
31
+ belongs_to :category
32
+ has_one :cover_image, :as => :imageable, :dependent => :destroy, :class_name => "Image::CoverImage"
33
+ has_many :gallery_images, :as => :imageable, :dependent => :destroy, :class_name => "Image::GalleryImage"
34
+
35
+ # ------------------
36
+ # Class Methods
37
+ # ------------------
38
+
39
+ scope :search, lambda {|query| where("LOWER(name) LIKE LOWER('%#{query}%') OR\
40
+ LOWER(one_liner) LIKE LOWER('%#{query}%') OR\
41
+ LOWER(permalink) LIKE LOWER('%#{query}%') OR\
42
+ LOWER(description) LIKE LOWER('%#{query}%')")
43
+ }
44
+
45
+ scope :filter_by_category, lambda { |c| where("category_id = ?", (c.is_a? Dhatu::Category ? c.id : c)) }
46
+
47
+ scope :upcoming, lambda { where("created_at >= ?", Time.now) }
48
+ scope :past, lambda { where("created_at < ?", Time.now) }
49
+
50
+ # ------------------
51
+ # Instance variables
52
+ # ------------------
53
+
54
+ # Generic Methods
55
+ # ---------------
56
+ def to_param
57
+ "#{id}-#{name.parameterize[0..32]}"
58
+ end
59
+
60
+ def display_name
61
+ "#{name_was}"
62
+ end
63
+
64
+ # Permission Methods
65
+ # ------------------
66
+
67
+ def can_be_edited?
68
+ status?(:published) or status?(:unpublished)
69
+ end
70
+
71
+ def can_be_deleted?
72
+ status?(:removed)
73
+ end
74
+
75
+ end
@@ -12,7 +12,15 @@
12
12
 
13
13
  <%= theme_form_field(@blog_post, :title, form_style: "top-bottom") %>
14
14
 
15
- <%= theme_form_field(@blog_post, :slug, form_style: "top-bottom", html_options: {"data-id": @blog_post.id.to_s}) %>
15
+ <div class="row">
16
+ <div class="col-md-6 pr-20">
17
+ <% options = {assoc_collection: Dhatu::Category.filter_by_category_type("Blog").published.select("id, name").order("name ASC").all, editable: true, assoc_display_method: :name} %>
18
+ <%= theme_form_assoc_group(@blog_post, :category_id, label: "Choose Category", form_style: "top-bottom", **options) %>
19
+ </div>
20
+ <div class="col-md-6 pl-20">
21
+ <%= theme_form_field(@blog_post, :slug, form_style: "top-bottom", html_options: {"data-id": @blog_post.id.to_s}) %>
22
+ </div>
23
+ </div>
16
24
 
17
25
  <%= theme_form_field(@blog_post, :meta_description, required: true, html_options: {type: :textarea, class: "form-control", style: "height: 80px;"}, form_style: "top-bottom") %>
18
26
 
@@ -1,12 +1,16 @@
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| %>
1
+ <%= form_for(@category, :html => {:id=>"form_category", :class=>"mb-0 form-horizontal", :role => "form", :method => (@category.new_record? ? :post : :put), :remote=>true}) do |f| %>
2
2
 
3
3
  <div id="category_form_error">
4
4
  <%= @category.errors[:base].to_sentence %>
5
5
  </div>
6
6
 
7
7
  <div class="form-inputs mb-30 mt-30">
8
+
9
+ <% @category.category_type = params[:category_type] if @category.category_type.blank? && params[:category_type] != "All" %>
10
+
8
11
  <%= theme_form_field(@category, :name) %>
9
12
 
13
+ <%= theme_form_field(@category, :category_type, required: true) %>
10
14
  <%= theme_form_field(@category, :one_liner, required: false) %>
11
15
  <%= theme_form_field(@category, :description, required: false, html_options: {type: :textarea}) %>
12
16
  <%= theme_form_field(@category, :priority, required: false, html_options: {type: :number, style: "width:70px;"}) %>
@@ -20,7 +24,7 @@
20
24
  <%= theme_form_assoc_group(@category, :parent_id, **options) %>
21
25
  </div>
22
26
 
23
-
27
+
24
28
 
25
29
  <div>
26
30
 
@@ -6,10 +6,10 @@
6
6
  <%= theme_button('Back', 'arrow-left', categories_path(parent_id: @current_category.parent_id), classes: "pull-left mr-10", btn_type: "white") %>
7
7
  <% end %>
8
8
 
9
- <%= theme_button('Refresh', 'refresh', categories_path(parent_id: @current_category.try(:id)), classes: "pull-left mr-10", btn_type: "white") %>
9
+ <%= theme_button('Refresh', 'refresh', categories_path(parent_id: @current_category.try(:id), category_type: @category_type), classes: "pull-left mr-10", btn_type: "white") %>
10
10
 
11
- <% if @current_category.try(:id) && @current_user.has_create_permission?(Dhatu::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") %>
11
+ <% if @current_user.has_create_permission?(Dhatu::Category) %>
12
+ <%= theme_button('Add a Category', 'plus', new_category_path(parent_id: @current_category.try(:id), category_type: @category_type), classes: "pull-left mr-10", btn_type: "success") %>
13
13
  <% end %>
14
14
 
15
15
  </div>
@@ -48,11 +48,11 @@
48
48
  <tr>
49
49
  <th style="text-align: center;width:60px">#</th>
50
50
  <th>Name</th>
51
- <th>Parent</th>
52
- <th>Top Parent</th>
51
+ <!-- <th>Parent</th>
52
+ <th>Top Parent</th> -->
53
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>
54
+ <!-- <th style="text-align: center;width:100px;">Priority</th>
55
+ <th style="text-align: center;width:120px;">End Node?</th> -->
56
56
  <% if display_manage_links? %>
57
57
  <th style="text-align: center;" colspan="2">Actions</th>
58
58
  <% end %>
@@ -77,17 +77,19 @@
77
77
  <%= link_to raw("<i class=\"fa fa-caret-right\"></i> #{category.display_name}"), categories_path(parent_id: category.id), remote: true %></td>
78
78
  <% end %>
79
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 %>
80
+ <!--
81
+ <%# if category.parent == @current_category %>
82
+ <td class="category-name"><%#= category.parent.display_name if category.parent %></td>
83
+ <%# else %>
84
+ <td class="category-name"><%#= link_to category.parent.display_name, categories_path(parent_id: category.parent.id), remote: true if category.parent %></td>
85
+ <%# end %>
85
86
 
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 %>
87
+ <%# if category.top_parent == @current_category %>
88
+ <td class="category-name"><%#= category.top_parent.display_name if category.top_parent %></td>
89
+ <%# else %>
90
+ <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>
91
+ <%# end %>
92
+ -->
91
93
 
92
94
  <td style="text-align: center;width:100px;">
93
95
  <% if category.unpublished? %>
@@ -99,8 +101,10 @@
99
101
  <% end %>
100
102
  </td>
101
103
 
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
+ <td style="text-align: center;width:100px;"><%#= category.priority if category.priority %></td>
106
+ <td style="text-align: center;width:120px;"><%#= category.end_node.to_s.titleize %></td>
107
+ -->
104
108
 
105
109
  <% if display_manage_links? %>
106
110
  <% edit_link = edit_category_path(id: category.id) %>
@@ -15,17 +15,19 @@
15
15
  <%= link_to raw("<i class=\"fa fa-caret-right\"></i> #{category.display_name}"), categories_path(parent_id: category.id), remote: true %></td>
16
16
  <% end %>
17
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 %>
18
+ <!--
19
+ <%# if category.parent == @current_category %>
20
+ <td class="category-name"><%#= category.parent.display_name if category.parent %></td>
21
+ <%# else %>
22
+ <td class="category-name"><%#= link_to category.parent.display_name, categories_path(parent_id: category.parent.id), remote: true if category.parent %></td>
23
+ <%# end %>
23
24
 
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 %>
25
+ <%# if category.top_parent == @current_category %>
26
+ <td class="category-name"><%#= category.top_parent.display_name if category.top_parent %></td>
27
+ <%# else %>
28
+ <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>
29
+ <%# end %>
30
+ -->
29
31
 
30
32
  <td style="text-align: center;width:100px;">
31
33
  <% if category.unpublished? %>
@@ -37,8 +39,10 @@
37
39
  <% end %>
38
40
  </td>
39
41
 
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
+ <td style="text-align: center;width:100px;"><%#= category.priority if category.priority %></td>
44
+ <td style="text-align: center;width:120px;"><%#= category.end_node.to_s.titleize %></td>
45
+ -->
42
46
 
43
47
  <% if display_manage_links? %>
44
48
  <% edit_link = edit_category_path(id: category.id) %>
@@ -1,100 +1,99 @@
1
- <% status_hash = {published: "success", unpublished: "default", disabled: "danger"} %>
1
+ <div id="div_category_show">
2
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 %>
3
+ <div class="row">
4
+
5
+ <!-- <div class="col-md-3 col-sm-12 col-xs-12" style="border-right:1px solid #f1f1f1;"> -->
6
+ <%# if display_edit_links? %>
7
+ <%#= edit_image(@category,
8
+ "cover_image.image.large.url",
9
+ upload_image_link(@category, :cover_image, nil ),
10
+ remove_image_link(@category, :cover_image, nil ),
11
+ image_options: {assoc_name: :cover_image }) %>
12
+ <%# else %>
13
+ <%#= display_image(@category, "cover_image.image.large.url", class: "img-inline", alt: @category.display_name) %>
14
+ <%# end %>
15
+ <!-- </div> -->
16
+
17
+ <div class="col-md-9 col-sm-12 col-xs-12" style="border-right:1px solid #f1f1f1;">
18
+
19
+ <%= theme_panel_heading(@category.name) %>
20
+
21
+ <%= theme_panel_sub_heading(@category.category_type, "#") if @category.one_liner %>
22
+
23
+ <%= clear_tag(10) %>
24
+ <%= display_publishable_status(@category) %>
25
+ <%= clear_tag(10) %>
26
+ <%= theme_panel_description(@category.one_liner) %>
27
+ <%= clear_tag(5) %>
28
+ <%= theme_panel_description(@category.description) %>
29
+ <%= clear_tag(20) %>
30
+
31
+ </div>
21
32
 
22
- <% if @category.description %>
23
- <p><%= @category.description %></p>
33
+ <% if display_manage_links? %>
34
+ <div class="col-md-3 col-sm-12 col-xs-12">
35
+ <%= display_manage_buttons(@category) %>
36
+ <%= display_publishable_buttons(@category) %>
37
+ <%= display_featurable_buttons(@category) %>
38
+ </div>
24
39
  <% end %>
25
-
26
- <span class="label label-<%= status_hash[@category.status.to_sym] %>"><%= @category.status.titleize %></span>
27
40
 
28
- <%= clear_tag %>
29
41
  </div>
30
42
 
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>
43
+ <%= clear_tag(20) %>
44
+
45
+ <ul class="nav nav-pills">
46
+ <li class="active">
47
+ <a href="#technical_details" data-toggle="tab" aria-expanded="false">
48
+ <span class="visible-xs"><i class="fa-database"></i></span>
49
+ <span class="hidden-xs">Technical Details</span>
50
+ </a>
51
+ </li>
52
+ </ul>
53
+
54
+ <div class="tab-content">
55
+ <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;">
56
+
57
+ <%= clear_tag(20) %>
58
+
59
+ <div class="table-responsive">
60
+ <table class="table table-striped table-condensed table-bordered mb-60">
61
+ <tbody>
62
+
63
+ <tr>
64
+ <th>ID</th><td><%= @category.id %></td>
65
+ <th>Permalink</th><td><%= @category.permalink %></td>
66
+ </tr>
67
+
68
+ <tr>
69
+ <th>Parent</th><td><%= @category.parent.try(:display_name) %> (<%= @category.parent.try(:id) %>)</td>
70
+ <th>Top Parent</th><td><%= @category.top_parent.try(:display_name) %> (<%= @category.top_parent.try(:id) %>)</td>
71
+ </tr>
72
+
73
+ <tr>
74
+ <th>Status</th><td><%= @category.status %></td>
75
+ <th>Featured</th><td><%= @category.featured? ? "Yes" : "No" %></td>
76
+ </tr>
77
+
78
+ <tr>
79
+ <th>Priority</th><td><%= @category.priority %></td>
80
+ <th>End Node</th><td><%= @category.end_node? ? "Yes" : "No" %></td>
81
+ </tr>
82
+
83
+ <tr>
84
+ <th>Created At</th><td><%= @category.created_at.strftime("%m/%d/%Y - %H:%M:%S") if @category.created_at %></td>
85
+ <th>Updated At</th><td><%= @category.updated_at.strftime("%m/%d/%Y - %H:%M:%S") if @category.updated_at %></td>
86
+ </tr>
87
+
88
+ </tbody>
89
+ </table>
90
+ </div>
91
+
82
92
  </div>
83
-
84
93
  </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
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" %>
95
+ <%= link_to "Close", "#", onclick: "closeLargeModal();", class: "btn btn-primary pull-right" %>
96
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>
97
+ <%= clear_tag %>
99
98
 
100
- <%= clear_tag %>
99
+ </div>
@@ -1,20 +1,26 @@
1
1
  <div class="row">
2
2
 
3
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" %>
4
+ <div class="tabs-vertical-env">
5
+
6
+ <ul id="div_category_types" class="nav tabs-vertical">
7
+ <% @category_types.each do |ctype| %>
8
+ <li class="<%= ctype == @category_type ? 'active' : '' %>">
9
+ <%= link_to ctype, categories_path(category_type: ctype) %>
10
+ </li>
11
+ <% end %>
12
+ </ul>
13
+
14
+ <div class="tab-content">
15
+ <div class="tab-pane active" id="v-home">
16
+ <div id="div_category_index">
17
+ <%= render :partial=>"dhatu/categories/index" %>
18
+ </div>
19
+ <%= clear_tag(10) %>
12
20
  </div>
13
- <%= clear_tag(10) %>
14
-
15
21
  </div>
22
+
16
23
  </div>
17
-
18
24
  </div>
19
25
 
20
26
  </div>
@@ -12,6 +12,12 @@
12
12
  url: dhatu.blog_posts_url,
13
13
  has_permission: @current_user.has_read_permission?(Dhatu::BlogPost)
14
14
  },
15
+ services: {
16
+ text: "Services",
17
+ icon_class: "fa-glass",
18
+ url: dhatu.services_url,
19
+ has_permission: @current_user.has_read_permission?(Dhatu::Service)
20
+ },
15
21
  branches: {
16
22
  text: "Branches",
17
23
  icon_class: "fa-location-arrow",
@@ -41,6 +47,12 @@
41
47
  icon_class: "fa-group",
42
48
  url: dhatu.team_members_url,
43
49
  has_permission: @current_user.has_read_permission?(Dhatu::TeamMember)
50
+ },
51
+ categories: {
52
+ text: "Categories",
53
+ icon_class: "fa-sitemap",
54
+ url: dhatu.categories_url,
55
+ has_permission: @current_user.has_read_permission?(Dhatu::Category)
44
56
  }
45
57
  }
46
58
  %>
@@ -0,0 +1,57 @@
1
+ <%= form_for(@service,
2
+ :url => (@service.new_record? ? dhatu.services_path : dhatu.service_path),
3
+ :method => (@service.new_record? ? :post : :put),
4
+ :remote => true,
5
+ :html => {:id=>"form_service", :class=>"mb-0 form-horizontal"}) do |f| %>
6
+
7
+ <div id="service_form_error">
8
+ <%= @service.errors[:base].to_sentence %>
9
+ </div>
10
+
11
+ <div class="form-inputs m-15">
12
+
13
+ <%= theme_form_field(@service, :name, required: true, form_style: "top-bottom", html_options: { placeholder: "", "data-id": @service.id.to_s}) %>
14
+
15
+ <div class="row">
16
+ <div class="col-md-4 pr-20">
17
+ <% options = {assoc_collection: Dhatu::Category.filter_by_category_type("Service").published.select("id, name").order("name ASC").all, editable: true, assoc_display_method: :name} %>
18
+ <%= theme_form_assoc_group(@service, :category_id, label: "Choose Category", form_style: "top-bottom", **options) %>
19
+ </div>
20
+ <div class="col-md-4 pl-20">
21
+ <%= theme_form_field(@service, :one_liner, required: false, form_style: "top-bottom", html_options: { placeholder: "" }) %>
22
+ </div>
23
+ <div class="col-md-4 pl-20">
24
+ <% if @service.new_record? || @current_user.super_admin? %>
25
+ <%= theme_form_field(@service, :permalink, form_style: "top-bottom", html_options: { placeholder: ""}) %>
26
+ <% else %>
27
+ <%= theme_form_field(@service, :permalink, form_style: "top-bottom", html_options: { placeholder: "", readonly: true}) %>
28
+ <% end %>
29
+ </div>
30
+ </div>
31
+
32
+ <%= theme_form_field(@service, :description, required: true, html_options: {type: :textarea, class: "form-control wysihtml5", "data-stylesheet-url": "assets/wysiwyg-color.css"}, form_style: "top-bottom") %>
33
+
34
+ <div class="row">
35
+ <div class="col-md-4 pr-20">
36
+ <%= theme_form_field(@service, :price, required: false, form_style: "top-bottom", html_options: { placeholder: "" }) %>
37
+ </div>
38
+ <div class="col-md-4 pl-20">
39
+ <%= theme_form_field(@service, :duration, required: false, form_style: "top-bottom", html_options: { placeholder: "" }) %>
40
+ </div>
41
+ <div class="col-md-4 pl-20">
42
+ <%= theme_form_field(@service, :priority, required: false, form_style: "top-bottom", html_options: { placeholder: "" }) %>
43
+ </div>
44
+ </div>
45
+
46
+ </div>
47
+
48
+ <div>
49
+ <%= submit_tag("Save", :class=>"btn btn-primary pull-right ml-10") %>
50
+
51
+ <%= link_to raw("<i class='fa fa-close mr-5'></i><span>Cancel</span>"), "#", onclick: "closeLargeModal();", class: "pull-right btn btn-white" %>
52
+ </div>
53
+
54
+ <%= clear_tag %>
55
+
56
+ <% end %>
57
+
@@ -0,0 +1,54 @@
1
+ <div class="table-responsive">
2
+ <table class="table table-hover members-table middle-align">
3
+ <thead>
4
+ <tr>
5
+ <th style="text-align: center;width:5%">#</th>
6
+ <th style="text-align: center;width:100px"><i class="fa fa-photo"></i></th>
7
+ <th>Service Name</th>
8
+ <th style="width:200px">Category</th>
9
+ <th style="width:100px;" class="hidden-sm hidden-xs">Status</th>
10
+ <% if display_manage_links? %>
11
+ <th style="text-align: center;" colspan="2" class="hidden-sm hidden-xs">Actions</th>
12
+ <% end %>
13
+ </tr>
14
+ </thead>
15
+ <tbody>
16
+ <tr id="tr_service_0"></tr>
17
+ <% @services.each_with_index do |service, i| %>
18
+
19
+ <tr id="tr_service_<%= service.id %>">
20
+
21
+ <th scope="row" style="text-align: center;">
22
+ <%= serial_number(i) %>
23
+ </th>
24
+
25
+ <td class="display-image">
26
+ <%= display_thumbnail_small(service) %>
27
+ </td>
28
+
29
+ <td class="display-link">
30
+ <%= link_to service.name, service_path(service), remote: true %><br>
31
+ <%= link_to service.category.try(:display_name), service_path(service), remote: true %>
32
+ </td>
33
+
34
+ <td class="hidden-sm hidden-xs"><%= display_publishable_status(service) %></td>
35
+
36
+ <% if display_manage_links? %>
37
+ <td class="action-links hidden-sm hidden-xs" style="width:10%"><%= display_publishable_links(service) %></td>
38
+
39
+ <td class="action-links hidden-sm hidden-xs" style="width:10%">
40
+ <%= display_manage_links(service, @current_user) %>
41
+ </td>
42
+ <% end %>
43
+
44
+ </tr>
45
+ <% end %>
46
+ </tbody>
47
+ </table>
48
+ </div>
49
+
50
+ <div class="row">
51
+ <div class="col-sm-12">
52
+ <%= paginate_kuppayam(@services) %>
53
+ </div>
54
+ </div>
@@ -0,0 +1,26 @@
1
+ <tr id="tr_service_<%= service.id %>">
2
+
3
+ <th scope="row" style="text-align: center;">
4
+ <%= serial_number(i) %>
5
+ </th>
6
+
7
+ <td class="display-image">
8
+ <%= display_thumbnail_small(service) %>
9
+ </td>
10
+
11
+ <td class="display-link">
12
+ <%= link_to service.name, service_path(service), remote: true %><br>
13
+ <%= link_to service.category.try(:display_name), service_path(service), remote: true %>
14
+ </td>
15
+
16
+ <td class="hidden-sm hidden-xs"><%= display_publishable_status(service) %></td>
17
+
18
+ <% if display_manage_links? %>
19
+ <td class="action-links hidden-sm hidden-xs" style="width:10%"><%= display_publishable_links(service) %></td>
20
+
21
+ <td class="action-links hidden-sm hidden-xs" style="width:10%">
22
+ <%= display_manage_links(service, @current_user) %>
23
+ </td>
24
+ <% end %>
25
+
26
+ </tr>
@@ -0,0 +1,128 @@
1
+ <div id="div_service_show">
2
+
3
+ <div class="row">
4
+
5
+ <div class="col-md-3 col-sm-12 col-xs-12" style="border-right:1px solid #f1f1f1;">
6
+ <% if display_edit_links? %>
7
+ <%= edit_image(@service,
8
+ "cover_image.image.large.url",
9
+ upload_image_link(@service, :cover_image, nil ),
10
+ remove_image_link(@service, :cover_image, nil ),
11
+ image_options: {assoc_name: :cover_image }) %>
12
+ <% else %>
13
+ <%= display_image(@service, "cover_image.image.large.url", class: "img-inline", alt: @service.display_name) %>
14
+ <% end %>
15
+ </div>
16
+
17
+ <div class="col-md-6 col-sm-12 col-xs-12" style="border-right:1px solid #f1f1f1;">
18
+
19
+ <%= theme_panel_heading(@service.name) %>
20
+
21
+ <%= theme_panel_sub_heading(@service.category.try(:display_name), "#") if @service.category %>
22
+
23
+ <%= clear_tag(10) %>
24
+
25
+ <%= display_publishable_status(@service) %>
26
+
27
+ <%= display_featured(@service) %>
28
+
29
+ <%= clear_tag(20) %>
30
+
31
+ </div>
32
+
33
+ <% if display_manage_links? %>
34
+ <div class="col-md-3 col-sm-12 col-xs-12">
35
+ <%= display_manage_buttons(@service) %>
36
+ <%= display_publishable_buttons(@service) %>
37
+ </div>
38
+ <% end %>
39
+
40
+ </div>
41
+
42
+ <hr>
43
+
44
+ <div class="visible-sm visible-xs mb-50"></div>
45
+
46
+ <%= clear_tag(20) %>
47
+
48
+ <ul class="nav nav-pills">
49
+ <li class="active">
50
+ <a href="#service_details" data-toggle="tab" aria-expanded="false">
51
+ <span class="visible-xs"><i class="fa-database"></i></span>
52
+ <span class="hidden-xs">Service Details</span>
53
+ </a>
54
+ </li>
55
+
56
+ <li class="">
57
+ <a href="#service_images" data-toggle="tab" aria-expanded="false">
58
+ <span class="visible-xs"><i class="fa-database"></i></span>
59
+ <span class="hidden-xs">Images</span>
60
+ </a>
61
+ </li>
62
+
63
+ <li class="">
64
+ <a href="#technical_details" data-toggle="tab" aria-expanded="false">
65
+ <span class="visible-xs"><i class="fa-database"></i></span>
66
+ <span class="hidden-xs">Technical Details</span>
67
+ </a>
68
+ </li>
69
+ </ul>
70
+
71
+ <div class="tab-content">
72
+ <div class="tab-pane active" id="service_details" style="border: 1px solid #000;min-height:200px;padding:20px;margin-bottom:20px;max-height: 400px;overflow-y: auto;">
73
+
74
+ <%= clear_tag(20) %>
75
+ <strong>Description</strong>
76
+ <%= raw(@service.description) %>
77
+ <%= clear_tag(20) %>
78
+
79
+ </div>
80
+
81
+ <div class="tab-pane" id="service_images" style="border: 1px solid #000;min-height:200px;padding:20px;margin-bottom:20px;max-height: 400px;overflow-y: auto;">
82
+
83
+ <%= clear_tag(20) %>
84
+
85
+ <div id="div_service_images_buttons">
86
+ <div class="row">
87
+ <div class="col-md-6">
88
+ <%= theme_button('Upload a New Image', 'refresh', upload_multiple_image_link(@service, :gallery_images, nil ), classes: "pull-left", btn_type: "white") %>
89
+ </div>
90
+ <div class="col-md-6">
91
+ </div>
92
+ </div>
93
+ </div>
94
+ <%= clear_tag(10) %>
95
+
96
+ <%= render :partial=>"kuppayam/images/multiple_images", locals: { images: @service.gallery_images } %>
97
+
98
+ </div>
99
+
100
+ <div class="tab-pane" id="technical_details" style="border: 1px solid #000;min-height:200px;padding:20px;margin-bottom:20px;max-height: 400px;overflow-y: auto;">
101
+
102
+ <%= clear_tag(20) %>
103
+
104
+ <div class="table-responsive">
105
+ <table class="table table-striped table-condensed table-bordered mb-60">
106
+ <tbody>
107
+
108
+ <tr>
109
+ <th>ID</th><td><%= @service.id %></td>
110
+ <th>Status</th><td><%= @service.status %></td>
111
+ </tr>
112
+ <tr>
113
+ <th>Created At</th><td><%= @service.created_at.strftime("%m/%d/%Y - %H:%M:%S") if @service.created_at %></td>
114
+ <th>Updated At</th><td><%= @service.updated_at.strftime("%m/%d/%Y - %H:%M:%S") if @service.updated_at %></td>
115
+ </tr>
116
+
117
+ </tbody>
118
+ </table>
119
+ </div>
120
+
121
+ </div>
122
+ </div>
123
+
124
+ <%= link_to "Close", "#", onclick: "closeLargeModal();", class: "btn btn-primary pull-right" %>
125
+
126
+ <%= clear_tag %>
127
+
128
+ </div>
@@ -0,0 +1,69 @@
1
+ <div class="row">
2
+
3
+ <div class="col-md-12">
4
+
5
+ <div class="tabs-vertical-env">
6
+
7
+ <ul id="div_category_types" class="nav tabs-vertical">
8
+ <% @categories.each do |ct| %>
9
+ <li class="<%= ct == @category ? 'active' : '' %>">
10
+ <%= link_to ct.name, services_path(ct: ct.id) %>
11
+ </li>
12
+ <% end %>
13
+ </ul>
14
+
15
+ <!-- <ul class="nav nav-tabs nav-tabs-justified">
16
+ <%# Dhatu::Service::STATUS.each do |key, value| %>
17
+ <li class="<%#= @status == value ? 'active' : '' %>">
18
+ <%#= link_to dhatu.services_path(st: value), "aria-expanded" => "#{ @status == value ? 'true' : 'false' }" do %>
19
+ <span class="visible-xs"><i class="fa-gift"></i></span>
20
+ <span class="hidden-xs"><%#= key %></span>
21
+ <%# end %>
22
+ </li>
23
+ <%# end %>
24
+ </ul> -->
25
+
26
+ <div class="tab-content">
27
+ <div class="tab-pane active">
28
+
29
+ <div id="div_service_action_buttons">
30
+ <div class="row">
31
+ <div class="col-sm-6">
32
+ <%= theme_button('Add a Service', 'plus', dhatu.new_service_path(), classes: "pull-left mr-10", btn_type: "success") if @current_user.has_create_permission?(Dhatu::Service) %>
33
+
34
+ <%= theme_button('Refresh', 'refresh', dhatu.services_path(st: @status), classes: "pull-left mr-10", btn_type: "white") %>
35
+ </div>
36
+ <div class="col-sm-6">
37
+ <%= search_form_kuppayam(Dhatu::Service, dhatu.services_path(st: @status), text: @filters[:query]) %>
38
+ </div>
39
+ </div>
40
+
41
+ </div>
42
+ <%= clear_tag(10) %>
43
+
44
+ <div id="div_service_index">
45
+ <%= render :partial=>"dhatu/services/index" %>
46
+ </div>
47
+ <%= clear_tag(10) %>
48
+
49
+ </div>
50
+ </div>
51
+
52
+ </div>
53
+
54
+ </div>
55
+
56
+ </div>
57
+
58
+ <script type="text/javascript">
59
+ $('body').on('change', '#inp_name', function() {
60
+ var serviceId = $('#inp_permalink').data("id");
61
+ if(serviceId){
62
+ } else {
63
+ var permalink = convertToSlug($(this).val()).slice(0, 63);
64
+ $('#inp_permalink').val(permalink);
65
+ }
66
+ });
67
+ </script>
68
+
69
+
@@ -12,6 +12,12 @@
12
12
  url: dhatu.blog_posts_url,
13
13
  has_permission: @current_user.has_read_permission?(Dhatu::BlogPost)
14
14
  },
15
+ services: {
16
+ text: "Services",
17
+ icon_class: "fa-glass",
18
+ url: dhatu.services_url,
19
+ has_permission: @current_user.has_read_permission?(Dhatu::Service)
20
+ },
15
21
  branches: {
16
22
  text: "Branches",
17
23
  icon_class: "fa-location-arrow",
@@ -41,6 +47,12 @@
41
47
  icon_class: "fa-group",
42
48
  url: dhatu.team_members_url,
43
49
  has_permission: @current_user.has_read_permission?(Dhatu::TeamMember)
50
+ },
51
+ categories: {
52
+ text: "Categories",
53
+ icon_class: "fa-sitemap",
54
+ url: dhatu.categories_url,
55
+ has_permission: @current_user.has_read_permission?(Dhatu::Category)
44
56
  }
45
57
  }
46
58
  %>
@@ -4,6 +4,14 @@ Dhatu::Engine.routes.draw do
4
4
 
5
5
  scope :admin do
6
6
 
7
+ resources :services do
8
+ member do
9
+ put :update_status, as: :update_status
10
+ put :mark_as_featured
11
+ put :remove_from_featured
12
+ end
13
+ end
14
+
7
15
  resources :branches do
8
16
  member do
9
17
  put :make_main, as: :make_main
@@ -1,3 +1,3 @@
1
1
  module Dhatu
2
- VERSION = '0.1.4'
2
+ VERSION = '0.1.5'
3
3
  end
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
4
+ version: 0.1.5
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-03 00:00:00.000000000 Z
11
+ date: 2017-11-04 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.18
110
+ version: 0.1.19
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.18
120
+ version: 0.1.19
121
121
  - !ruby/object:Gem::Dependency
122
122
  name: pattana
123
123
  requirement: !ruby/object:Gem::Requirement
@@ -414,6 +414,7 @@ files:
414
414
  - app/controllers/dhatu/offers_controller.rb
415
415
  - app/controllers/dhatu/resource_controller.rb
416
416
  - app/controllers/dhatu/sections_controller.rb
417
+ - app/controllers/dhatu/services_controller.rb
417
418
  - app/controllers/dhatu/team_members_controller.rb
418
419
  - app/controllers/dhatu/testimonials_controller.rb
419
420
  - app/helpers/dhatu/application_helper.rb
@@ -426,6 +427,7 @@ files:
426
427
  - app/models/dhatu/event.rb
427
428
  - app/models/dhatu/offer.rb
428
429
  - app/models/dhatu/section.rb
430
+ - app/models/dhatu/service.rb
429
431
  - app/models/dhatu/team_member.rb
430
432
  - app/models/dhatu/testimonial.rb
431
433
  - app/models/image/category_image.rb
@@ -462,6 +464,11 @@ files:
462
464
  - app/views/dhatu/sections/_row.html.erb
463
465
  - app/views/dhatu/sections/_show.html.erb
464
466
  - app/views/dhatu/sections/index.html.erb
467
+ - app/views/dhatu/services/_form.html.erb
468
+ - app/views/dhatu/services/_index.html.erb
469
+ - app/views/dhatu/services/_row.html.erb
470
+ - app/views/dhatu/services/_show.html.erb
471
+ - app/views/dhatu/services/index.html.erb
465
472
  - app/views/dhatu/team_members/_form.html.erb
466
473
  - app/views/dhatu/team_members/_index.html.erb
467
474
  - app/views/dhatu/team_members/_row.html.erb