comable-backend 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +97 -0
  4. data/app/assets/javascripts/comable/admin/application.coffee +76 -0
  5. data/app/assets/javascripts/comable/admin/categories.coffee +59 -0
  6. data/app/assets/javascripts/comable/admin/dashboard.coffee +32 -0
  7. data/app/assets/javascripts/comable/admin/dispatcher.coffee +21 -0
  8. data/app/assets/javascripts/comable/admin/orders.coffee +44 -0
  9. data/app/assets/javascripts/comable/admin/pages.coffee +69 -0
  10. data/app/assets/javascripts/comable/admin/products.coffee +21 -0
  11. data/app/assets/javascripts/comable/admin/search.coffee +35 -0
  12. data/app/assets/javascripts/comable/admin/themes.coffee +64 -0
  13. data/app/assets/stylesheets/comable/admin/_common.scss +153 -0
  14. data/app/assets/stylesheets/comable/admin/_dashboard.scss +81 -0
  15. data/app/assets/stylesheets/comable/admin/_errors.scss +18 -0
  16. data/app/assets/stylesheets/comable/admin/_flow.scss +149 -0
  17. data/app/assets/stylesheets/comable/admin/_mixins.scss +16 -0
  18. data/app/assets/stylesheets/comable/admin/_orders.scss +54 -0
  19. data/app/assets/stylesheets/comable/admin/_overrides.scss +4 -0
  20. data/app/assets/stylesheets/comable/admin/_pages.scss +30 -0
  21. data/app/assets/stylesheets/comable/admin/_products.scss +18 -0
  22. data/app/assets/stylesheets/comable/admin/_themes.scss +71 -0
  23. data/app/assets/stylesheets/comable/admin/_user_sessions.scss +57 -0
  24. data/app/assets/stylesheets/comable/admin/_variables.scss +38 -0
  25. data/app/assets/stylesheets/comable/admin/application.scss +26 -0
  26. data/app/assets/stylesheets/comable/admin/overrides/awesome_admin_layout.scss +25 -0
  27. data/app/assets/stylesheets/comable/admin/overrides/bootstrap.scss +81 -0
  28. data/app/assets/stylesheets/comable/admin/overrides/jstree.scss +71 -0
  29. data/app/assets/stylesheets/comable/admin/overrides/tagit.scss +22 -0
  30. data/app/controllers/comable/admin/application_controller.rb +58 -0
  31. data/app/controllers/comable/admin/categories_controller.rb +17 -0
  32. data/app/controllers/comable/admin/dashboard_controller.rb +19 -0
  33. data/app/controllers/comable/admin/orders_controller.rb +102 -0
  34. data/app/controllers/comable/admin/pages_controller.rb +72 -0
  35. data/app/controllers/comable/admin/payment_methods_controller.rb +59 -0
  36. data/app/controllers/comable/admin/products_controller.rb +82 -0
  37. data/app/controllers/comable/admin/shipment_methods_controller.rb +57 -0
  38. data/app/controllers/comable/admin/stocks_controller.rb +81 -0
  39. data/app/controllers/comable/admin/store_controller.rb +42 -0
  40. data/app/controllers/comable/admin/themes_controller.rb +101 -0
  41. data/app/controllers/comable/admin/trackers_controller.rb +58 -0
  42. data/app/controllers/comable/admin/user_sessions_controller.rb +8 -0
  43. data/app/controllers/comable/admin/users_controller.rb +47 -0
  44. data/app/helpers/comable/admin/application_helper.rb +53 -0
  45. data/app/helpers/comable/admin/orders_helper.rb +30 -0
  46. data/app/helpers/comable/admin/pages_helper.rb +6 -0
  47. data/app/helpers/comable/admin/products_helper.rb +6 -0
  48. data/app/helpers/comable/admin/shipment_methods_helper.rb +6 -0
  49. data/app/helpers/comable/admin/stores_helper.rb +6 -0
  50. data/app/helpers/comable/admin/themes_helper.rb +69 -0
  51. data/app/views/comable/admin/categories/index.slim +40 -0
  52. data/app/views/comable/admin/dashboard/_widget.slim +13 -0
  53. data/app/views/comable/admin/dashboard/show.slim +43 -0
  54. data/app/views/comable/admin/orders/_google_map.slim +39 -0
  55. data/app/views/comable/admin/orders/_payment_state.slim +40 -0
  56. data/app/views/comable/admin/orders/_shipment_state.slim +44 -0
  57. data/app/views/comable/admin/orders/edit.slim +170 -0
  58. data/app/views/comable/admin/orders/index.slim +95 -0
  59. data/app/views/comable/admin/orders/show.slim +177 -0
  60. data/app/views/comable/admin/pages/_form.slim +69 -0
  61. data/app/views/comable/admin/pages/edit.slim +31 -0
  62. data/app/views/comable/admin/pages/index.slim +55 -0
  63. data/app/views/comable/admin/pages/new.slim +16 -0
  64. data/app/views/comable/admin/payment_methods/_form.slim +35 -0
  65. data/app/views/comable/admin/payment_methods/edit.slim +27 -0
  66. data/app/views/comable/admin/payment_methods/index.slim +40 -0
  67. data/app/views/comable/admin/payment_methods/new.slim +16 -0
  68. data/app/views/comable/admin/products/_form.slim +137 -0
  69. data/app/views/comable/admin/products/edit.slim +41 -0
  70. data/app/views/comable/admin/products/index.slim +95 -0
  71. data/app/views/comable/admin/products/new.slim +16 -0
  72. data/app/views/comable/admin/shared/_advanced_search.slim +7 -0
  73. data/app/views/comable/admin/shared/_condition_fields.slim +15 -0
  74. data/app/views/comable/admin/shared/_footer.slim +8 -0
  75. data/app/views/comable/admin/shared/_grouping_fields.slim +8 -0
  76. data/app/views/comable/admin/shared/_image_fields.slim +15 -0
  77. data/app/views/comable/admin/shared/_notifier.slim +5 -0
  78. data/app/views/comable/admin/shared/_value_fields.slim +1 -0
  79. data/app/views/comable/admin/shared/export.xlsx.axlsx +17 -0
  80. data/app/views/comable/admin/shipment_methods/_form.slim +29 -0
  81. data/app/views/comable/admin/shipment_methods/edit.slim +27 -0
  82. data/app/views/comable/admin/shipment_methods/index.slim +37 -0
  83. data/app/views/comable/admin/shipment_methods/new.slim +16 -0
  84. data/app/views/comable/admin/stocks/_form.slim +34 -0
  85. data/app/views/comable/admin/stocks/edit.slim +37 -0
  86. data/app/views/comable/admin/stocks/index.slim +81 -0
  87. data/app/views/comable/admin/stocks/new.slim +18 -0
  88. data/app/views/comable/admin/store/_form.slim +32 -0
  89. data/app/views/comable/admin/store/edit.slim +12 -0
  90. data/app/views/comable/admin/themes/_editor.slim +8 -0
  91. data/app/views/comable/admin/themes/_form.slim +31 -0
  92. data/app/views/comable/admin/themes/edit.slim +35 -0
  93. data/app/views/comable/admin/themes/index.slim +37 -0
  94. data/app/views/comable/admin/themes/new.slim +16 -0
  95. data/app/views/comable/admin/themes/show_file.slim +93 -0
  96. data/app/views/comable/admin/trackers/_form.slim +109 -0
  97. data/app/views/comable/admin/trackers/edit.slim +27 -0
  98. data/app/views/comable/admin/trackers/index.slim +37 -0
  99. data/app/views/comable/admin/trackers/new.slim +16 -0
  100. data/app/views/comable/admin/user_sessions/new.slim +25 -0
  101. data/app/views/comable/admin/users/edit.slim +79 -0
  102. data/app/views/comable/admin/users/index.slim +71 -0
  103. data/app/views/comable/admin/users/show.slim +88 -0
  104. data/app/views/kaminari/comable_backend/_first_page.html.slim +2 -0
  105. data/app/views/kaminari/comable_backend/_gap.html.slim +2 -0
  106. data/app/views/kaminari/comable_backend/_last_page.html.slim +2 -0
  107. data/app/views/kaminari/comable_backend/_next_page.html.slim +2 -0
  108. data/app/views/kaminari/comable_backend/_page.html.slim +3 -0
  109. data/app/views/kaminari/comable_backend/_paginator.html.slim +15 -0
  110. data/app/views/kaminari/comable_backend/_prev_page.html.slim +2 -0
  111. data/app/views/layouts/comable/admin/application.slim +36 -0
  112. data/config/initializers/awesome_admin_layout.rb +110 -0
  113. data/config/routes.rb +63 -0
  114. data/lib/comable/backend.rb +1 -0
  115. data/lib/comable/backend/engine.rb +67 -0
  116. data/lib/tasks/comable_backend_tasks.rake +4 -0
  117. metadata +514 -0
@@ -0,0 +1,95 @@
1
+ .comable-page
2
+ .comable-page-heading
3
+ ul.pull-right.list-inline
4
+ li
5
+ .btn-group role="group"
6
+ = link_to_previous_page @orders, '<', class: 'btn btn-default' do
7
+ .btn.btn-default disabled="disabled"
8
+ | <
9
+ = link_to_next_page @orders, '>', class: 'btn btn-default' do
10
+ .btn.btn-default disabled="disabled"
11
+ | >
12
+ li.dropdown
13
+ = link_to '#', class: 'btn btn-default', 'data-toggle' => 'dropdown' do
14
+ = Comable.t('admin.more')
15
+ i.fa.fa-angle-down<
16
+ ul.dropdown-menu.dropdown-menu-right
17
+ li
18
+ = link_to Comable.t('admin.export_to_csv'), comable.export_admin_orders_path(format: :csv, q: params[:q])
19
+ li
20
+ = link_to Comable.t('admin.export_to_excel'), comable.export_admin_orders_path(format: :xlsx, q: params[:q])
21
+
22
+ h1.page-header
23
+ = Comable.t('admin.nav.order')
24
+ small<
25
+ | #{@orders.total_count} #{Comable.t('admin.results')}
26
+
27
+ .comable-page-body
28
+ .comable-search
29
+ = search_form_for @q, url: comable.admin_orders_path do |f|
30
+ .input-group
31
+ span.input-group-btn
32
+ button.btn.btn-default.dropdown-toggle type="button" data-toggle="dropdown"
33
+ i.fa.fa-search
34
+ span.caret<
35
+ ul.dropdown-menu role="menu"
36
+ li
37
+ = link_to Comable.t('admin.advanced_search'), 'javascript:void(0)', 'data-toggle' => 'collapse', 'data-target' => '#comable-advanced-search'
38
+ li
39
+ = link_to Comable.t('admin.clear_search_conditions'), comable.admin_orders_path
40
+ = f.text_field :code_cont, class: 'form-control'
41
+ span.input-group-btn
42
+ = f.submit Comable.t('admin.search'), class: 'btn btn-default'
43
+ .hidden
44
+ = f.label :user_id
45
+ = f.text_field :user_id_eq
46
+
47
+ = render 'comable/admin/shared/advanced_search', f: f
48
+
49
+ section
50
+ - if @orders.empty?
51
+ = Comable.t('admin.not_found')
52
+ - else
53
+ table.table.table-striped
54
+ thead
55
+ th
56
+ = sort_link [:comable, @q], :code
57
+ th
58
+ = sort_link [:comable, @q], :state
59
+ th
60
+ = @orders.klass.human_attribute_name(:payment_state)
61
+ th
62
+ = @orders.klass.human_attribute_name(:shipment_state)
63
+ th
64
+ = @orders.klass.human_attribute_name(:bill_full_name)
65
+ th
66
+ = @orders.klass.human_attribute_name(:order_items)
67
+ th
68
+ = sort_link [:comable, @q], :total_price
69
+ th
70
+ = sort_link [:comable, @q], :completed_at
71
+ tbody
72
+ - @orders.each do |order|
73
+ tr
74
+ td
75
+ = link_to order.code, comable.admin_order_path(order)
76
+ td
77
+ = order.human_state_name
78
+ td
79
+ = order.payment_human_state_name
80
+ td
81
+ = order.shipment_human_state_name
82
+ td
83
+ = order.bill_full_name
84
+ td
85
+ ul.list-unstyled
86
+ - order.order_items.each do |order_item|
87
+ li
88
+ | #{order_item.name_with_sku} x #{order_item.quantity}
89
+ td
90
+ = number_to_currency order.total_price
91
+ td
92
+ = l order.completed_at
93
+
94
+ .text-center
95
+ = paginate @orders, theme: :comable_backend
@@ -0,0 +1,177 @@
1
+ .comable-page
2
+ .comable-page-heading
3
+ ul.pull-right.list-inline
4
+ li
5
+ - if !@order.shipped?
6
+ = link_to comable.ship_admin_order_path(@order), class: 'btn btn-primary', method: :post, disabled: !@order.can_ship? do
7
+ i.fa.fa-truck>
8
+ = Comable.t('admin.ship')
9
+ - if @order.completed?
10
+ li
11
+ = link_to comable.cancel_admin_order_path(@order), class: 'btn btn-default', method: :post do
12
+ = @order.class.human_state_event_name(:cancel)
13
+ - if @order.canceled?
14
+ li
15
+ = button_to comable.resume_admin_order_path(@order), class: 'btn btn-default', method: :post do
16
+ = @order.class.human_state_event_name(:resume)
17
+
18
+ ul.pull-right.list-inline
19
+ li
20
+ = link_to comable.edit_admin_order_path(@order), class: 'btn btn-default' do
21
+ span.fa.fa-edit>
22
+ = Comable.t('admin.actions.edit')
23
+
24
+ li.btn-group
25
+ / TODO: Comment out after implemented.
26
+ / = link_to Comable.t('admin.nav.orders.cart'), '#', class: 'btn btn-default'
27
+ / = link_to Comable.t('admin.nav.orders.shipment'), '#', class: 'btn btn-default'
28
+ / = link_to Comable.t('admin.nav.orders.payment'), '#', class: 'btn btn-default'
29
+
30
+ h1.page-header
31
+ ol.breadcrumb
32
+ li>
33
+ = link_to Comable.t('admin.nav.order'), comable.admin_orders_path
34
+ li.active
35
+ = @order.code
36
+ small< data-toggle="tooltip" data-placement="right" title="#{l @order.completed_at}"
37
+ = time_ago_in_words @order.completed_at
38
+
39
+ .comable-page-body
40
+ - if @order.payment
41
+ = render 'payment_state', payment: @order.payment
42
+ - if @order.shipment
43
+ = render 'shipment_state', shipment: @order.shipment
44
+
45
+ section.row
46
+ .col-lg-8
47
+ .panel.panel-default
48
+ table.table
49
+ thead
50
+ tr
51
+ th colspan="2"
52
+ = @order.order_items.klass.human_attribute_name(:product)
53
+ th
54
+ = @order.order_items.klass.human_attribute_name(:price)
55
+ th
56
+ = @order.order_items.klass.human_attribute_name(:quantity)
57
+ th
58
+ = @order.order_items.klass.human_attribute_name(:subtotal_price)
59
+ tbody
60
+ - @order.order_items.each do |order_item|
61
+ tr
62
+ td width="180"
63
+ = image_tag order_item.image_url, width: '100%'
64
+ td
65
+ = order_item.name_with_sku
66
+ .text-muted
67
+ small = order_item.code
68
+ td
69
+ = number_to_currency order_item.price
70
+ td
71
+ = number_with_delimiter order_item.quantity
72
+ td
73
+ = number_to_currency order_item.subtotal_price
74
+ tr
75
+ th.text-right colspan="4"
76
+ = @order.class.human_attribute_name(:item_total_price)
77
+ td
78
+ = number_to_currency @order.item_total_price
79
+ tr
80
+ th.text-right colspan="4"
81
+ = @order.class.human_attribute_name(:payment_fee)
82
+ td
83
+ = number_to_currency @order.payment_fee
84
+ tr
85
+ th.text-right colspan="4"
86
+ = @order.class.human_attribute_name(:shipment_fee)
87
+ td
88
+ = number_to_currency @order.shipment_fee
89
+ tr
90
+ th.text-right colspan="4"
91
+ = @order.class.human_attribute_name(:total_price)
92
+ td
93
+ = number_to_currency @order.total_price
94
+
95
+ nav.col-lg-4
96
+ .panel.panel-default.visible-lg-block
97
+ .panel-body
98
+ h3.text-center
99
+ small>
100
+ = @order.class.human_attribute_name(:total_price)
101
+ = number_to_currency @order.total_price
102
+
103
+ .panel.panel-default
104
+ .panel-heading
105
+ .panel-title
106
+ = Comable.t('admin.bill')
107
+ .panel-body
108
+ .pull-right
109
+ .comable-avatar
110
+ = gravatar_tag @order.email, class: 'thumbnail'
111
+
112
+ dl.dl-horizontal.comable-address-with-icon
113
+ dt
114
+ i.fa.fa-map-marker.fa-lg data-toggle="tooltip" data-placement="left" title="#{@order.class.human_attribute_name(:bill_address)}"
115
+ dd
116
+ ul.list-unstyled
117
+ li = @order.bill_address.zip_code
118
+ li = @order.bill_address.state_name
119
+ li = @order.bill_address.city
120
+ li = @order.bill_address.detail
121
+
122
+ - if @order.bill_address.phone_number.present?
123
+ dt
124
+ i.fa.fa-phone.fa-lg data-toggle="tooltip" data-placement="left" title="#{@order.bill_address.class.human_attribute_name(:phone_number)}"
125
+ dd
126
+ = @order.bill_address.phone_number
127
+
128
+ dt
129
+ i.fa.fa-user.fa-lg data-toggle="tooltip" data-placement="left" title="#{@order.class.human_attribute_name(:user)}"
130
+ dd
131
+ = link_to_if @order.user, @order.bill_address.full_name, [comable, :admin, @order.user]
132
+
133
+ dt
134
+ i.fa.fa-envelope.fa-lg data-toggle="tooltip" data-placement="left" title="#{@order.class.human_attribute_name(:email)}"
135
+ dd
136
+ = mail_to @order.email
137
+
138
+ .panel.panel-default
139
+ .panel-heading
140
+ .panel-title
141
+ = Comable.t('admin.ship')
142
+ .panel-body
143
+ dl.dl-horizontal.comable-address-with-icon
144
+ dt
145
+ i.fa.fa-map-marker.fa-lg data-toggle="tooltip" data-placement="left" title="#{@order.class.human_attribute_name(:ship_address)}"
146
+ dd
147
+ ul.list-unstyled
148
+ li = @order.ship_address.zip_code
149
+ li = @order.ship_address.state_name
150
+ li = @order.ship_address.city
151
+ li = @order.ship_address.detail
152
+
153
+ - if @order.ship_address.phone_number.present?
154
+ dt
155
+ i.fa.fa-phone.fa-lg data-toggle="tooltip" data-placement="left" title="#{@order.ship_address.class.human_attribute_name(:phone_number)}"
156
+ dd
157
+ = @order.ship_address.phone_number
158
+
159
+ dt
160
+ i.fa.fa-user.fa-lg data-toggle="tooltip" data-placement="left" title="#{@order.class.human_attribute_name(:user)}"
161
+ dd
162
+ = @order.bill_address.full_name
163
+
164
+ - if @order.shipment
165
+ dt
166
+ i.fa.fa-truck.fa-lg data-toggle="tooltip" data-placement="left" title="#{@order.class.human_attribute_name(:shipment_method)}"
167
+ dd
168
+ = @order.shipment.name
169
+
170
+ - if @order.payment
171
+ dt
172
+ i.fa.fa-money.fa-lg data-toggle="tooltip" data-placement="left" title="#{@order.class.human_attribute_name(:payment_method)}"
173
+ dd
174
+ = @order.payment.name
175
+
176
+ .panel-footer
177
+ = render 'google_map', id: 'comable-google-map-for-ship-address', address: @order.ship_address
@@ -0,0 +1,69 @@
1
+ = error_messages_for @page
2
+
3
+ - url = @page.new_record? ? comable.admin_pages_path : comable.admin_page_path(@page)
4
+
5
+ = form_for @page, url: url do |f|
6
+ .hidden
7
+ = f.submit
8
+
9
+ fieldset
10
+ .col-md-3
11
+ legend
12
+ = Comable.t('admin.nav.pages.general')
13
+
14
+ .col-md-9
15
+ .form-group
16
+ = f.label :title
17
+ = f.text_field :title
18
+
19
+ .form-group
20
+ = f.label :content
21
+ = f.text_area :content, rows: (f.object.content ? f.object.content.lines.count : nil)
22
+
23
+ hr
24
+
25
+ fieldset
26
+ .col-md-3
27
+ legend
28
+ = Comable.t('admin.nav.pages.seo')
29
+
30
+ .col-md-9
31
+ .form-group
32
+ = f.label :page_title
33
+ = f.text_field :page_title
34
+
35
+ .form-group
36
+ = f.label :meta_description
37
+ = f.text_field :meta_description
38
+
39
+ .form-group
40
+ = f.label :meta_keywords
41
+ = f.text_field :meta_keywords
42
+
43
+ .form-group
44
+ = f.label :slug
45
+ .slug
46
+ .slug-url
47
+ span
48
+ = comable.page_url(id: '')
49
+ .slug-body
50
+ = f.text_field :slug
51
+
52
+ hr
53
+
54
+ fieldset
55
+ .col-md-3
56
+ legend
57
+ = Comable.t('admin.nav.pages.visibility')
58
+
59
+ .col-md-9
60
+ .form-group
61
+ .radio-inline
62
+ label
63
+ = f.radio_button :published_at, :published, checked: @page.published_at.present?
64
+ = Comable.t('admin.nav.pages.published')
65
+ .radio-inline
66
+ label
67
+ = f.radio_button :published_at, :unpublished, checked: @page.published_at.blank?
68
+ = Comable.t('admin.nav.pages.unpublished')
69
+ = f.text_field :published_at, value: @page.published_at.try(:strftime, '%Y-%m-%d %H:%M'), class: 'datetimepicker'
@@ -0,0 +1,31 @@
1
+ .comable-page
2
+ .comable-main-fixed-top
3
+ .comable-page-heading
4
+ ul.pull-right.list-inline
5
+ li
6
+ = link_to comable.page_path(@page), class: 'btn btn-default', target: '_blank' do
7
+ i.fa.fa-external-link>
8
+ = Comable.t('admin.preview')
9
+ li
10
+ = link_to_save
11
+
12
+ h1.page-header
13
+ ol.breadcrumb
14
+ li>
15
+ = link_to Comable.t('admin.nav.page'), comable.admin_pages_path
16
+ li.active
17
+ = @page.title
18
+
19
+ .comable-page-body
20
+ = render 'form'
21
+ hr
22
+ .panel.panel-danger
23
+ .panel-heading type="button" data-toggle="collapse" data-target="#comable-danger"
24
+ strong
25
+ span.fa.fa-angle-down>
26
+ = Comable.t('admin.actions.destroy')
27
+ #comable-danger.collapse
28
+ .panel-body
29
+ p
30
+ = Comable.t('admin.confirmation_to_remove_page')
31
+ = link_to Comable.t('admin.actions.destroy'), comable.admin_page_path(@page), method: :delete, class: 'btn btn-danger'
@@ -0,0 +1,55 @@
1
+ .comable-page
2
+ .comable-page-heading
3
+ ul.pull-right.list-inline
4
+ li
5
+ = link_to Comable.t('admin.actions.new'), comable.new_admin_page_path, class: 'btn btn-default'
6
+ h1.page-header
7
+ = Comable.t('admin.nav.page')
8
+ small<
9
+ | #{@pages.size} #{Comable.t('admin.results')}
10
+
11
+ .comable-page-body
12
+ .comable-search
13
+ = search_form_for @q, url: comable.admin_pages_path do |f|
14
+ .input-group
15
+ span.input-group-btn
16
+ button.btn.btn-default.dropdown-toggle type="button" data-toggle="dropdown"
17
+ i.fa.fa-search
18
+ span.caret<
19
+ ul.dropdown-menu role="menu"
20
+ li
21
+ = link_to Comable.t('admin.advanced_search'), 'javascript:void(0)', 'data-toggle' => 'collapse', 'data-target' => '#comable-advanced-search'
22
+ li
23
+ = link_to Comable.t('admin.clear_search_conditions'), comable.admin_pages_path
24
+ = f.text_field :title_cont, class: 'form-control'
25
+ span.input-group-btn
26
+ = f.submit Comable.t('admin.search'), class: 'btn btn-default'
27
+
28
+ = render 'comable/admin/shared/advanced_search', f: f
29
+
30
+ section
31
+ - if @pages.empty?
32
+ = Comable.t('admin.not_found')
33
+ - else
34
+ table.table.table-striped
35
+ thead
36
+ th
37
+ = sort_link [:comable, @q], :title
38
+ th
39
+ = sort_link [:comable, @q], :content
40
+ th
41
+ = sort_link [:comable, @q], :published_at
42
+ tbody
43
+ - @pages.each do |page|
44
+ tr
45
+ td
46
+ = link_to page.title, comable.admin_page_path(page)
47
+ small.text-muted<
48
+ | #{comable.page_path(page)}
49
+ td
50
+ = page.content.truncate(50)
51
+ td
52
+ - if page.published_at
53
+ = l page.published_at
54
+ - else
55
+ = Comable.t('admin.nav.pages.unpublished')
@@ -0,0 +1,16 @@
1
+ .comable-page
2
+ .comable-main-fixed-top
3
+ .comable-page-heading
4
+ ul.pull-right.list-inline
5
+ li
6
+ = link_to_save
7
+
8
+ h1.page-header
9
+ ol.breadcrumb
10
+ li>
11
+ = link_to Comable.t('admin.nav.page'), comable.admin_pages_path
12
+ li.active
13
+ = Comable.t('admin.actions.new')
14
+
15
+ .comable-page-body
16
+ = render 'form'