kuppayam 0.1.15 → 0.1.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/kuppayam/utilities.js +9 -0
  3. data/app/controllers/kuppayam/base_controller.rb +1 -0
  4. data/app/helpers/filter_helper.rb +4 -3
  5. data/app/helpers/image_helper.rb +7 -10
  6. data/app/helpers/navigation_helper.rb +11 -2
  7. data/app/helpers/resource_helper.rb +32 -0
  8. data/app/helpers/resource_view_helper.rb +227 -0
  9. data/app/models/concerns/approvable.rb +47 -0
  10. data/app/models/concerns/featureable.rb +23 -0
  11. data/app/models/concerns/publishable.rb +46 -0
  12. data/app/models/image/cover_image.rb +3 -0
  13. data/app/models/image/gallery_image.rb +11 -0
  14. data/app/models/image/logo_image.rb +3 -0
  15. data/app/models/image/profile_image.rb +3 -0
  16. data/app/uploaders/cover_image_uploader.rb +22 -0
  17. data/app/uploaders/gallery_image_uploader.rb +22 -0
  18. data/app/uploaders/logo_image_uploader.rb +22 -0
  19. data/app/uploaders/profile_image_uploader.rb +22 -0
  20. data/app/views/kuppayam/api/docs/_navbar.html.erb +12 -0
  21. data/app/views/kuppayam/api/docs/_navigation.html.erb +12 -19
  22. data/app/views/kuppayam/api/docs/show.html.erb +70 -80
  23. data/app/views/kuppayam/images/_form.html.erb +7 -1
  24. data/app/views/kuppayam/images/_multiple_images.html.erb +29 -0
  25. data/app/views/kuppayam/images/create.html.erb +20 -7
  26. data/app/views/kuppayam/images/destroy.js.erb +10 -2
  27. data/app/views/kuppayam/images/update.html.erb +2 -2
  28. data/app/views/layouts/dashboard/_items.html.erb +20 -0
  29. data/app/views/layouts/kuppayam/docs.html.erb +31 -55
  30. data/config/initializers/validators.rb +5 -1
  31. data/lib/generators/kuppayam/resource_generator.rb +254 -0
  32. data/lib/generators/kuppayam/templates/controllers/resource_controller.rb +84 -0
  33. data/lib/generators/kuppayam/templates/db/migrate/create_resources.rb +14 -0
  34. data/lib/generators/kuppayam/templates/models/resource.rb +72 -0
  35. data/lib/generators/kuppayam/templates/spec/controllers/resource_controller_spec.rb +154 -0
  36. data/lib/generators/kuppayam/templates/spec/factories/resource.rb +42 -0
  37. data/lib/generators/kuppayam/templates/spec/models/resource_spec.rb +36 -0
  38. data/lib/generators/kuppayam/templates/views/_form.html.erb +63 -0
  39. data/lib/generators/kuppayam/templates/views/_index.html.erb +53 -0
  40. data/lib/generators/kuppayam/templates/views/_row.html.erb +26 -0
  41. data/lib/generators/kuppayam/templates/views/_show.html.erb +112 -0
  42. data/lib/generators/kuppayam/templates/views/index.html.erb +46 -0
  43. data/lib/generators/resource/resource_generator.rb +337 -0
  44. data/lib/kuppayam/action_view/form_helper.rb +10 -2
  45. data/lib/kuppayam/action_view/theme_helper.rb +4 -2
  46. data/lib/kuppayam/version.rb +1 -1
  47. metadata +58 -2
@@ -0,0 +1,14 @@
1
+ class Create<%= model_class.pluralize %> < ActiveRecord::Migration[5.0]
2
+ def self.up
3
+ create_table :<%= table_name %> do |t|
4
+ <%- fields.each do |name, type| -%>
5
+ t.<%= type %> :<%= name %>
6
+ <%- end -%>
7
+ t.timestamps null: false
8
+ end
9
+ end
10
+
11
+ def self.down
12
+ drop_table :<%= table_name %>
13
+ end
14
+ end
@@ -0,0 +1,72 @@
1
+ class <%= model_class %> < ApplicationRecord
2
+
3
+ # Set Table Name
4
+ # self.table_name = "<%= table_name %>"
5
+
6
+ # Including the State Machine Methods
7
+ include Publishable
8
+ include Featureable
9
+
10
+ # Validations
11
+ <%- fields.each do |name, type| -%>
12
+ <%- if type == "string" -%>
13
+ validates :<%= name %>, presence: true
14
+ <%- elsif type == "text" -%>
15
+ validates :<%= name %>, presence: true
16
+ <%- elsif type == "integer" -%>
17
+ validates :<%= name %>, presence: true, numericality: true, if: proc{|x| x.condition? }
18
+ <%- elsif type == "decimal" || type == "float" -%>
19
+ validates :<%= name %>, format: { with: /^\d+??(?:\.\d{0,2})?$/ },
20
+ :numericality =>{:greater_than => 0}
21
+ <%- elsif type != "boolean" -%>
22
+ validates :<%= name %>, presence: true
23
+ <%- end -%>
24
+ <%- end -%>
25
+
26
+ # Associations
27
+ # has_one :cover_image, :as => :imageable, :dependent => :destroy, :class_name => "Image::CoverImage"
28
+ # has_many :gallery_images, :as => :imageable, :dependent => :destroy, :class_name => "Image::GalleryImage"
29
+
30
+ # ------------------
31
+ # Class Methods
32
+ # ------------------
33
+
34
+ scope :search, lambda {|query| where("
35
+ <% string_fields_including_main_field.each_with_index do |sfield, i| -%>
36
+ <% if string_fields_including_main_field.size - 1 != i -%>
37
+ LOWER(<%= sfield %>) LIKE LOWER('%#{query}%') OR\
38
+ <% else -%>
39
+ LOWER(<%= sfield %>) LIKE LOWER('%#{query}%')")
40
+ <% end -%>
41
+ <% end -%>
42
+ }
43
+
44
+ scope :upcoming, lambda { where("created_at >= ?", Time.now) }
45
+ scope :past, lambda { where("created_at < ?", Time.now) }
46
+
47
+ # ------------------
48
+ # Instance variables
49
+ # ------------------
50
+
51
+ # Generic Methods
52
+ # ---------------
53
+ def to_param
54
+ "#{id}-#{title.parameterize[0..32]}"
55
+ end
56
+
57
+ def display_name
58
+ "#{title_was}"
59
+ end
60
+
61
+ # Permission Methods
62
+ # ------------------
63
+
64
+ def can_be_edited?
65
+ status?(:published) or status?(:unpublished)
66
+ end
67
+
68
+ def can_be_deleted?
69
+ status?(:removed)
70
+ end
71
+
72
+ end
@@ -0,0 +1,154 @@
1
+ require 'spec_helper'
2
+ # require 'pattana/factories.rb'
3
+ # require 'usman/factories.rb'
4
+
5
+ describe <%= controller_class -%>, :type => :controller do
6
+
7
+ let(:user) {FactoryGirl.create(:user)}
8
+ let(:suspended_user) {FactoryGirl.create(:suspended_user)}
9
+
10
+ let(:site_role) {FactoryGirl.create(:role, name: "Site Admin")}
11
+
12
+ let(:super_admin_user) {FactoryGirl.create(:super_admin_user)}
13
+ let(:site_admin_user) {
14
+ site_role
15
+ user = FactoryGirl.create(:approved_user)
16
+ user.add_role("Site Admin")
17
+ user
18
+ }
19
+ let(:approved_user) {FactoryGirl.create(:approved_user)}
20
+
21
+ let(:published_<%= instance_name %>) {FactoryGirl.create(:published_<%= instance_name %>)}
22
+ let(:unpublished_<%= instance_name %>) {FactoryGirl.create(:unpublished_<%= instance_name %>)}
23
+ let(:suspended_<%= instance_name %>) {FactoryGirl.create(:suspended_<%= instance_name %>)}
24
+ let(:blocked_<%= instance_name %>) {FactoryGirl.create(:blocked_<%= instance_name %>)}
25
+ let(:removed_<%= instance_name %>) {FactoryGirl.create(:removed_<%= instance_name %>)}
26
+
27
+ describe "index" do
28
+ 2.times { FactoryGirl.create(:published_<%= instance_name %>) }
29
+ context "Positive Case" do
30
+ it "should be able to view the list of countries" do
31
+ session[:id] = site_admin_user.id
32
+ get :index, params: { use_route: 'dhatu' }
33
+ expect(response.status).to eq(200)
34
+ end
35
+
36
+ it "should be able to search an <%= instance_name %>" do
37
+ session[:id] = site_admin_user.id
38
+ get :index, params: { use_route: 'dhatu', query: "India" }, xhr: true
39
+ expect(response.status).to eq(200)
40
+ end
41
+ end
42
+ end
43
+
44
+ describe "show" do
45
+ context "Positive Case" do
46
+ it "should be able to view single <%= instance_name %> details" do
47
+ session[:id] = site_admin_user.id
48
+ get :show, params: { use_route: 'dhatu', id: published_<%= instance_name %>.id }, xhr: true
49
+ expect(response.status).to eq(200)
50
+ end
51
+ end
52
+ end
53
+
54
+ describe "update_status" do
55
+ context "Positive Case" do
56
+ it "should be update status - publish" do
57
+ session[:id] = site_admin_user.id
58
+ unpublished_<%= instance_name %> = FactoryGirl.create(:unpublished_<%= instance_name %>)
59
+ put :update_status, params: { use_route: 'dhatu', id: unpublished_<%= instance_name %>.id, status: :published }, xhr: true
60
+ unpublished_<%= instance_name %>.reload
61
+ expect(unpublished_<%= instance_name %>.published?).to be_truthy
62
+ expect(response.status).to eq(200)
63
+ end
64
+
65
+ it "should be update status - unpublish" do
66
+ session[:id] = site_admin_user.id
67
+ published_<%= instance_name %> = FactoryGirl.create(:published_<%= instance_name %>)
68
+ put :update_status, params: { use_route: 'dhatu', id: published_<%= instance_name %>.id, status: :unpublished }, xhr: true
69
+ published_<%= instance_name %>.reload
70
+ expect(published_<%= instance_name %>.unpublished?).to be_truthy
71
+ expect(response.status).to eq(200)
72
+ end
73
+
74
+ it "should be update status - remove" do
75
+ session[:id] = site_admin_user.id
76
+ unpublished_<%= instance_name %> = FactoryGirl.create(:unpublished_<%= instance_name %>)
77
+ put :update_status, params: { use_route: 'dhatu', id: unpublished_<%= instance_name %>.id, status: :removed }, xhr: true
78
+ unpublished_<%= instance_name %>.reload
79
+ expect(unpublished_<%= instance_name %>.removed?).to be_truthy
80
+ expect(response.status).to eq(200)
81
+ end
82
+
83
+ it "should be update status - archive" do
84
+ session[:id] = site_admin_user.id
85
+ unpublished_<%= instance_name %> = FactoryGirl.create(:unpublished_<%= instance_name %>)
86
+ put :update_status, params: { use_route: 'dhatu', id: unpublished_<%= instance_name %>.id, status: :archived }, xhr: true
87
+ unpublished_<%= instance_name %>.reload
88
+ expect(unpublished_<%= instance_name %>.archived?).to be_truthy
89
+ expect(response.status).to eq(200)
90
+ end
91
+ end
92
+ end
93
+
94
+ describe "new" do
95
+ context "Positive Case" do
96
+ it "should display the new form for site admin" do
97
+ session[:id] = site_admin_user.id
98
+ get :new, params: { use_route: 'dhatu' }, xhr: true
99
+ expect(response.status).to eq(200)
100
+ end
101
+ end
102
+ end
103
+
104
+ describe "edit" do
105
+ context "Positive Case" do
106
+ it "should display the edit form for site admin" do
107
+ session[:id] = site_admin_user.id
108
+ get :edit, params: { use_route: 'dhatu' }, xhr: true
109
+ expect(response.status).to eq(200)
110
+ end
111
+ end
112
+ end
113
+
114
+ describe "create" do
115
+ context "Positive Case" do
116
+ it "site admin should be able to create a region" do
117
+ session[:id] = site_admin_user.id
118
+ <%= instance_name %>_params = FactoryGirl.build(:unpublished_<%= instance_name %>, name: "Some Name").attributes
119
+ expect do
120
+ post :create, params: { use_route: 'dhatu', "<%= instance_name %>": <%= instance_name %>_params }, xhr: true
121
+ end.to change(<%= model_class -%>, :count).by(1)
122
+ expect(<%= model_class -%>.last.name).to match("Some Name")
123
+ end
124
+ end
125
+ end
126
+
127
+ describe "update" do
128
+ context "Positive Case" do
129
+ it "site admin should be able to update a <%= instance_name %>" do
130
+ session[:id] = site_admin_user.id
131
+ published_<%= instance_name %> = FactoryGirl.create(:published_<%= instance_name %>, title: "Some Title")
132
+ <%= instance_name %>_params = published_<%= instance_name %>.attributes.clone
133
+ <%= instance_name %>_params["title"] = "Changed Title"
134
+ expect do
135
+ put :update, params: { use_route: 'dhatu', id: published_<%= instance_name %>.id, "<%= instance_name %>": <%= instance_name %>_params }, xhr: true
136
+ end.to change(<%= model_class -%>, :count).by(0)
137
+ expect(published_<%= instance_name %>.reload.title).to match("Changed Title")
138
+ end
139
+ end
140
+ end
141
+
142
+ describe "destroy" do
143
+ context "Positive Case" do
144
+ it "site admin should be able to remove a <%= instance_name %>" do
145
+ session[:id] = site_admin_user.id
146
+ removed_<%= instance_name %>
147
+ expect do
148
+ delete :destroy, params: { use_route: 'dhatu', id: removed_<%= instance_name %>.id }, xhr: true
149
+ end.to change(<%= model_class -%>, :count).by(-1)
150
+ end
151
+ end
152
+ end
153
+
154
+ end
@@ -0,0 +1,42 @@
1
+ FactoryGirl.define do
2
+
3
+ factory :unpublished_<%= instance_name %>, class: <%= model_class %> do
4
+
5
+ <%- fields.each do |name, type| -%>
6
+ <%= name -%> "Some Text"
7
+ <%- end -%>
8
+
9
+ end
10
+
11
+ factory :published_<%= instance_name %>, parent: :unpublished_<%= instance_name %> do
12
+ after :build do |e|
13
+ e.publish
14
+ end
15
+ end
16
+
17
+ factory :removed_<%= instance_name %>, parent: :unpublished_<%= instance_name %> do
18
+ after :build do |e|
19
+ e.remove
20
+ end
21
+ end
22
+
23
+ factory :archived_<%= instance_name %>, parent: :unpublished_<%= instance_name %> do
24
+ after :build do |e|
25
+ e.archive
26
+ end
27
+ end
28
+
29
+ factory :featured_<%= instance_name %>, parent: :published_<%= instance_name %> do
30
+ after :build do |e|
31
+ e.mark_as_featured
32
+ end
33
+ end
34
+
35
+ factory :non_featured_<%= instance_name %>, parent: :published_<%= instance_name %> do
36
+ after :build do |e|
37
+ e.remove_from_featured
38
+ end
39
+ end
40
+
41
+
42
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe <%= model_class %>, type: :model do
4
+
5
+ let(:<%= instance_name %>) {FactoryGirl.build(:<%= instance_name %>)}
6
+
7
+ context "Factory" do
8
+ it "should validate all the factories" do
9
+ expect(FactoryGirl.build(:published_<%= instance_name %>).valid?).to be true
10
+ expect(FactoryGirl.build(:unpublished_<%= instance_name %>).valid?).to be true
11
+ expect(FactoryGirl.build(:removed_<%= instance_name %>).valid?).to be true
12
+ expect(FactoryGirl.build(:archived_<%= instance_name %>).valid?).to be true
13
+ end
14
+ end
15
+
16
+ context "Validations" do
17
+ it { should validate_presence_of :title }
18
+ it { should allow_value('<%= model_name %> Title').for(:title )}
19
+ it { should_not allow_value('OFTL').for(:title )}
20
+ it { should_not allow_value("x"*257).for(:title )}
21
+
22
+ it { should validate_presence_of :<%= instance_name %>_text }
23
+ it { should allow_value('<%= model_name %> Text').for(:<%= instance_name %>_text )}
24
+ it { should_not allow_value('OF').for(:<%= instance_name %>_text )}
25
+ it { should_not allow_value("x"*65).for(:<%= instance_name %>_text )}
26
+
27
+ it { should validate_presence_of :description }
28
+
29
+ it { should validate_inclusion_of(:status).in_array(<%= model_class %>::STATUS.values) }
30
+ end
31
+
32
+ context "Associations" do
33
+ it { should have_one(:cover_image) }
34
+ end
35
+
36
+ end
@@ -0,0 +1,63 @@
1
+ <%%= form_for(@<%= instance_name %>,
2
+ :url => (@<%= instance_name %>.new_record? ? dhatu.<%= instance_name %>s_path : <%= instance_name %>_path),
3
+ :method => (@<%= instance_name %>.new_record? ? :post : :put),
4
+ :remote => true,
5
+ :html => {:id=>"form_<%= instance_name %>", :class=>"mb-0 form-horizontal"}) do |f| %>
6
+
7
+ <div id="<%= instance_name %>_form_error">
8
+ <%%= @<%= instance_name %>.errors[:base].to_sentence %>
9
+ </div>
10
+
11
+ <div class="form-inputs m-15">
12
+
13
+ <%- fields.each do |name, type| -%>
14
+
15
+ <!-- <%= name.titleize -%> (<%= type -%>) -->
16
+ <% case type when "string" -%>
17
+ <% if name.include?("url") -%>
18
+ <%%= theme_form_field(@<%= instance_name -%>, :<%= name %>, form_style: "top-bottom", html_options: { type: :url, placeholder: ""}) -%>
19
+ <% elsif name.include?("email") -%>
20
+ <%%= theme_form_field(@<%= instance_name -%>, :<%= name %>, form_style: "top-bottom", html_options: { type: :email, placeholder: "name@domain.com"}) -%>
21
+ <% elsif name.include?("phone") || name.include?("mobile") || name.include?("landline") -%>
22
+ <%%= theme_form_field(@<%= instance_name -%>, :<%= name %>, form_style: "top-bottom", html_options: { type: :tel, placeholder: ""}) -%>
23
+ <% elsif name.include?("time") -%>
24
+ <%%= theme_form_field(@<%= instance_name -%>, :<%= name %>, form_style: "top-bottom", html_options: { type: :time, placeholder: ""}) -%>
25
+ <% elsif name.include?("date") -%>
26
+ <%%= theme_form_field(@<%= instance_name -%>, :<%= name %>, form_style: "top-bottom", html_options: { type: :date, placeholder: ""}) -%>
27
+ <% elsif name.include?("password") -%>
28
+ <%%= theme_form_field(@<%= instance_name -%>, :<%= name %>, form_style: "top-bottom", html_options: { type: :password, placeholder: ""}) -%>
29
+ <% else -%>
30
+ <%%= theme_form_field(@<%= instance_name -%>, :<%= name %>, form_style: "top-bottom", html_options: { placeholder: ""}) -%>
31
+ <% end -%>
32
+ <% when "text" -%>
33
+ <%%= theme_form_field(@<%= instance_name -%>, :<%= name %>, required: true, html_options: {type: :textarea, class: "form-control wysihtml5", "data-stylesheet-url": "assets/wysiwyg-color.css"}, form_style: "top-bottom") -%>
34
+ <% when "integer" -%>
35
+ <%%= theme_form_field(@<%= instance_name -%>, :<%= name %>, form_style: "top-bottom", html_options: { type: :number, placeholder: ""}) -%>
36
+ <% when "references" -%>
37
+ <%%# options = {assoc_collection: <%= name.titleize -%>.select("id, name").order("name ASC").all, required: true, editable: true, assoc_display_method: :name} -%>
38
+ <%%#= theme_form_assoc_group(@<%= instance_name -%>, :<%= name.parameterize -%>_id, **options) -%>
39
+ <% when "date" -%>
40
+ <%%= theme_form_field(@<%= instance_name -%>, :<%= name %>, form_style: "top-bottom", html_options: { type: :date, placeholder: ""}) -%>
41
+ <% when "datetime" -%>
42
+ <%%= theme_form_field(@<%= instance_name -%>, :<%= name %>, form_style: "top-bottom", html_options: { type: :datetime-local, placeholder: ""}) -%>
43
+ <% when "timestamp", "time" -%>
44
+ <%%= theme_form_field(@<%= instance_name -%>, :<%= name %>, form_style: "top-bottom", html_options: { type: :time, placeholder: ""}) -%>
45
+ <% when "boolean" -%>
46
+ <%%= theme_form_field(@<%= instance_name -%>, :<%= name %>, form_style: "top-bottom", html_options: { type: :checkbox, placeholder: ""}) -%>
47
+ <% else -%>
48
+ <%%= theme_form_field(@<%= instance_name -%>, :<%= name %>, form_style: "top-bottom", html_options: { placeholder: ""}) -%>
49
+ <% end -%>
50
+ <% end -%>
51
+
52
+ </div>
53
+
54
+ <div>
55
+ <%%= submit_tag("Save", :class=>"btn btn-primary pull-right ml-10") %>
56
+
57
+ <%%= link_to raw("<i class='fa fa-close mr-5'></i><span>Cancel</span>"), "#", onclick: "closeLargeModal();", class: "pull-right btn btn-white" %>
58
+ </div>
59
+
60
+ <%%= clear_tag %>
61
+
62
+ <%% end %>
63
+
@@ -0,0 +1,53 @@
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>Display Name</th>
8
+ <th>Something Else</th>
9
+ <th style="width:100px;" class="hidden-sm hidden-xs">Featured</th>
10
+ <th style="width:100px;" class="hidden-sm hidden-xs">Status</th>
11
+ <th style="text-align: center;" colspan="2" class="hidden-sm hidden-xs">Actions</th>
12
+ </tr>
13
+ </thead>
14
+ <tbody>
15
+ <tr id="tr_<%= instance_name %>_0"></tr>
16
+ <%% @<%= instance_name %>s.each_with_index do |<%= instance_name %>, i| %>
17
+
18
+ <tr id="tr_<%= instance_name %>_<%%= <%= instance_name %>.id %>">
19
+
20
+ <th scope="row" style="text-align: center;">
21
+ <%%= serial_number(i) %>
22
+ </th>
23
+
24
+ <td class="display-image">
25
+ <%%= display_thumbnail_small(<%= instance_name %>) %>
26
+ </td>
27
+
28
+ <td class="display-link"><%%= link_to <%= instance_name %>.display_name, <%= instance_name %>_path(<%= instance_name %>), remote: true %></td>
29
+
30
+ <td class="display-link"><%%#= link_to <%= instance_name %>.<%= instance_name %>_text, <%= instance_name %>_path(<%= instance_name %>), remote: true %></td>
31
+
32
+ <td class="hidden-sm hidden-xs"><%%= display_featured(<%= instance_name %>) %></td>
33
+
34
+ <td class="hidden-sm hidden-xs"><%%= display_publishable_status(<%= instance_name %>) %></td>
35
+
36
+ <td class="action-links hidden-sm hidden-xs" style="width:10%"><%%= display_publishable_links(<%= instance_name %>) %></td>
37
+
38
+ <td class="action-links hidden-sm hidden-xs" style="width:10%">
39
+ <%%= display_featurable_links(<%= instance_name %>) %>
40
+ <%%= display_manage_links(<%= instance_name %>) %>
41
+ </td>
42
+
43
+ </tr>
44
+ <%% end %>
45
+ </tbody>
46
+ </table>
47
+ </div>
48
+
49
+ <div class="row">
50
+ <div class="col-sm-12">
51
+ <%%= paginate_kuppayam(@<%= instances_name %>) %>
52
+ </div>
53
+ </div>
@@ -0,0 +1,26 @@
1
+ <tr id="tr_<%= instance_name %>_<%%= <%= instance_name %>.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(<%= instance_name %>) %>
9
+ </td>
10
+
11
+ <td class="display-link"><%%= link_to <%= instance_name %>.title, <%= instance_name %>_path(<%= instance_name %>), remote: true %></td>
12
+
13
+ <td class="display-link"><%%= link_to <%= instance_name %>.<%= instance_name %>_text, <%= instance_name %>_path(<%= instance_name %>), remote: true %></td>
14
+
15
+ <td class="hidden-sm hidden-xs"><%%= display_featured(<%= instance_name %>) %></td>
16
+
17
+ <td class="hidden-sm hidden-xs"><%%= display_publishable_status(<%= instance_name %>) %></td>
18
+
19
+ <td class="action-links hidden-sm hidden-xs" style="width:10%"><%%= display_publishable_links(<%= instance_name %>) %></td>
20
+
21
+ <td class="action-links hidden-sm hidden-xs" style="width:10%">
22
+ <%%= display_featurable_links(<%= instance_name %>) %>
23
+ <%%= display_manage_links(<%= instance_name %>) %>
24
+ </td>
25
+
26
+ </tr>