vitrage 0.0.3 → 0.0.4

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
- SHA1:
3
- metadata.gz: c668c147525e7adc7619a7c059273fdbed9cfd0d
4
- data.tar.gz: c8c65f7cfffd9a0d231eddeb8133670bff403942
2
+ SHA256:
3
+ metadata.gz: 266999f8015d3ceb887463b45bf24b74cbfd55eaa742182f45ed65b2e5442bd9
4
+ data.tar.gz: 6d2cee221763193b3d02afe29e8bb081b2124e97d15851b976fecae95e094f5d
5
5
  SHA512:
6
- metadata.gz: 9ab5a9b4d656a6fd8ff087d732b34f2ed203555dccb14c83421bbaf8c3579b3c24a9c09ce42c224b42de2f9c82ef517aef5a4db5a258cf66d0d328ee1499cca0
7
- data.tar.gz: 96169ea834658d55a05b46cc4173cb3ed3e1d0b6d988495ca1654ab4e30d4cd75350231dd58fab80b03989e607cf10883c25944b5c129db1e72cf5cf51b043ef
6
+ metadata.gz: 9f52fe81e123bcb423d6d71aac3a7844424692cbf3685061c162dd4ef7c5971590ea69a910a87bc425a0a5f57250d79a0795ca3da3e9a2fe1e0de5bc455baf4c
7
+ data.tar.gz: 3864193fc3736f6475ecdcec557cdb25d7490f290077e5ca88c088103827d84cb2d31435b007b511709b553b7ef3a217b2ff654d4c629ad4ce27bd9a697932c6
data/README.md CHANGED
@@ -1,10 +1,15 @@
1
1
  Vitrage
2
2
  =======
3
3
 
4
- Vitrage allows store and manage your Rails application web-pages content as separated pieces of different types: text, image, slider, several-columned text etc. Pieces are objects of different Rails models having their specific views for show and edit. Vitrage allows you inline editing of content pieces.
4
+ > [!WARNING]
5
+ > This project has been archived and is no longer supported.
6
+
7
+ Vitrage allows you to store and manage your Rails application content as separated pieces of different types: text, image, slider, several-columned text etc. Pieces are objects of different Rails models, that have their specific views for show and edit actions. Vitrage allows you to edit the content pieces inline.
5
8
 
6
9
  <img src="http://www.vitroart.ru/upload/information_system_35/4/2/2/item_422/information_items_1242584051.jpg" alt="vitrage of glass" height="600" width="379">
7
10
 
11
+ [![Gem Version](https://badge.fury.io/rb/vitrage.svg)](http://badge.fury.io/rb/vitrage)
12
+ [![vitrage API Documentation](https://www.omniref.com/ruby/gems/vitrage.png)](https://www.omniref.com/ruby/gems/vitrage)
8
13
 
9
14
  Installation
10
15
  ------------
@@ -32,8 +37,14 @@ Now, migrate your database: `bin/rake db:migrate`
32
37
 
33
38
  Require js in your js file (`application.js` by default):
34
39
 
40
+ //= require jquery
41
+ //= require jquery_ujs
42
+ //= require jquery.remotipart
35
43
  //= require vitrage/vitrage
36
44
 
45
+ Vitrage needs jquery, jquery_ujs and jquery.remotipart for correct work.
46
+ If you have this scripts already required, just skip inserting they strings.
47
+
37
48
  Require vitrage css in your css file (`application.css` by default):
38
49
 
39
50
  *= require vitrage/vitrage
@@ -1,23 +1,68 @@
1
1
  $(document).ready ->
2
2
  if $(".vtrg-add-new-wrapper").length
3
3
 
4
+ # # # SORTABLE module # TODO find correct place for this module
5
+ sortableo = null
6
+ sortable_el = document.getElementById('vitrage-edit')
7
+
8
+ initSortable = ->
9
+ if sortableo
10
+ sortableo.destroy()
11
+ sortableo = null
12
+ sortableo = Sortable.create document.getElementById('vitrage-edit'),
13
+ sort: true
14
+ handle: ".vtrg-edit-control-move"
15
+ onUpdate: (evnt) ->
16
+ draggedItem = $(evnt.item)
17
+ nextItem = draggedItem.next()
18
+ # console.log "Next item has id = " + nextItem.data("id")
19
+ $.ajax
20
+ url: "/vitrage/pieces/" + draggedItem.data("id") + "/reorder"
21
+ type: "POST"
22
+ dataType: "json"
23
+ data:
24
+ beforeid: if nextItem.length then nextItem.data("id") else "end"
25
+ # success: (data, textStatus, jqXHR) ->
26
+ # error: null # TODO
27
+
28
+ initSortable()
29
+ # # # END OF SORTABLE module
30
+
31
+ event_provider = $(".vtrg-add-new-wrapper")
32
+
4
33
  toggleEditorBlocker = ($editWrapper, act) ->
5
34
  $editWrapper.toggleClass 'blocked', act
6
35
 
7
- # --- # --- VIEW --- # --- #
8
- restoreViewState = ($editWrapper, viewdata) ->
36
+ showPieceInputsErrors = ($editWrapper, responseText) ->
37
+ $editWrapper.find("li.input.error").removeClass("error")
38
+
39
+ data = null
40
+ try
41
+ data = JSON.parse(responseText)
42
+ catch error
43
+ a = 12 # at least we tried
44
+ return true unless data
45
+
46
+ if data.piece && data.errors
47
+ for key, val of data.errors
48
+ $errorIWrapper = $editWrapper.find "li.input#vitrage_pieces_" + data.piece.toString() + "_" + key.toString() + "_input"
49
+ $errorIWrapper.addClass "error"
50
+
51
+ # --- # --- SHOW --- # --- #
52
+ restoreShowState = ($editWrapper, viewdata) ->
9
53
  if viewdata
10
54
  $editWrapper.removeClass "editmode"
11
55
  $editWrapper.children(".vtrg-edit-body").html viewdata
12
56
  toggleEditorBlocker $editWrapper, false
57
+ event_provider.trigger "vitrageshowed", [ $editWrapper[0] ]
13
58
  else
14
59
  $.ajax
15
60
  url: "/vitrage/pieces/" + $editWrapper.data("id")
16
61
  # type: "GET"
17
62
  dataType: "html"
18
63
  success: (data, textStatus, jqXHR) ->
19
- restoreViewState $editWrapper, data
20
- # error: null
64
+ restoreShowState $editWrapper, data
65
+ # error: null # TODO
21
66
 
22
67
  # --- # --- UPDATE and cancel editing --- # --- #
23
68
  coverEditFormActions = ($editWrapper) ->
@@ -29,9 +74,14 @@ $(document).ready ->
29
74
  return true # do your work buddy
30
75
 
31
76
  $blockForm.on "ajax:success", (evnt, data, textStatus, jqXHR) ->
32
- restoreViewState $(@).closest(".vtrg-edit-wrapper"), data
33
- # $blockForm.on "ajax:error"
34
- # $blockForm.on "ajax:complete"
77
+ event_provider.trigger "vitrageupdated"
78
+ restoreShowState $(@).closest(".vtrg-edit-wrapper")
79
+
80
+ $blockForm.on "ajax:error", (evnt, xhr, status, error) ->
81
+ showPieceInputsErrors $(@).closest(".vtrg-edit-wrapper"), xhr.responseText
82
+
83
+ $blockForm.on "ajax:complete", (evnt, para1, para2) ->
84
+ toggleEditorBlocker $(@).closest(".vtrg-edit-wrapper"), false
35
85
 
36
86
 
37
87
  # cover Cancel action
@@ -41,7 +91,7 @@ $(document).ready ->
41
91
  if clickedAnchorParentID && clickedAnchorParentID.substr(clickedAnchorParentID.length - 13) == "cancel_action"
42
92
  evnt.preventDefault()
43
93
  toggleEditorBlocker $editWrapper, true
44
- restoreViewState $editWrapper
94
+ restoreShowState $editWrapper
45
95
  return false
46
96
 
47
97
  # --- # --- EDIT --- # --- #
@@ -52,14 +102,14 @@ $(document).ready ->
52
102
  toggleEditorBlocker $editWrapper, true
53
103
  $.ajax
54
104
  url: "/vitrage/pieces/" + $editWrapper.data("id") + "/edit"
55
- # type: "GET"
56
105
  dataType: "html"
57
106
  success: (data, textStatus, jqXHR) ->
58
107
  $editWrapper.addClass "editmode"
59
108
  $editWrapper.children(".vtrg-edit-body").html data
60
109
  coverEditFormActions $editWrapper
61
110
  toggleEditorBlocker $editWrapper, false
62
- # error: null
111
+ event_provider.trigger "vitrageedit", [ $editWrapper ]
112
+ # error: null # TODO
63
113
  return
64
114
  return
65
115
  # init edit control for all exists
@@ -78,7 +128,8 @@ $(document).ready ->
78
128
  dataType: "html"
79
129
  success: (data, textStatus, jqXHR) ->
80
130
  $editWrapper.remove()
81
- # error: null
131
+ event_provider.trigger "vitragedestroyed"
132
+ # error: null # TODO
82
133
  return
83
134
  return
84
135
  # init destroy control for all exists
@@ -94,18 +145,18 @@ $(document).ready ->
94
145
  return true # do your work buddy
95
146
 
96
147
  $blockForm.on "ajax:success", (evnt, data, textStatus, jqXHR) ->
97
- clwr = $(@).closest(".vtrg-edit-wrapper")
98
- if $(@).data('remotipartSubmitted')
99
- a = 12
100
- console.log "ololo"
101
- else
102
- clwr.after data
103
- brandNewWrapper = clwr.next()
104
- clwr.remove()
105
- initDestroyControl brandNewWrapper
106
- initEditControl brandNewWrapper
107
- # $blockForm.on "ajax:error"
108
- $blockForm.on "ajax:complete", ->
148
+ $editWrapper = $(@).closest(".vtrg-edit-wrapper")
149
+ $editWrapper.attr 'data-id', data
150
+ initDestroyControl $editWrapper
151
+ initEditControl $editWrapper
152
+ event_provider.trigger "vitragecreated", [ $editWrapper ]
153
+ restoreShowState $editWrapper
154
+ initSortable()
155
+
156
+ $blockForm.on "ajax:error", (evnt, xhr, status, error) ->
157
+ showPieceInputsErrors $(@).closest(".vtrg-edit-wrapper"), xhr.responseText
158
+
159
+ $blockForm.on "ajax:complete", (evnt, para1, para2) ->
109
160
  toggleEditorBlocker $(@).closest(".vtrg-edit-wrapper"), false
110
161
 
111
162
  # cover Cancel action
@@ -120,7 +171,11 @@ $(document).ready ->
120
171
  # --- # --- NEW --- # --- #
121
172
  $createAnchors = $(".vtrg-new-block-kinds a")
122
173
  $createAnchors.on "ajax:success", (evnt, data, textStatus, jqXHR) ->
123
- $(".vtrg-add-new-wrapper").before data
124
- coverNewFormActions $(".vtrg-edit-wrapper:last")
125
- # $createAnchors.on "ajax:error"
126
- # $createAnchors.on "ajax:complete"
174
+ # $(".vtrg-add-new-wrapper").before data
175
+ $("#vitrage-edit").append data
176
+ $editWrapper = $(".vtrg-edit-wrapper:last")
177
+ coverNewFormActions $editWrapper
178
+ event_provider.trigger "vitragenew", [ $editWrapper ]
179
+
180
+ # $createAnchors.on "ajax:error" # TODO
181
+ # $createAnchors.on "ajax:complete" # TODO
@@ -1,3 +1,4 @@
1
- //= require jquery
2
- //= require jquery_ujs
1
+ // must be required jquery
2
+ // must be required jquery_ujs
3
+ //= require Sortable
3
4
  //= require vitrage/editor
@@ -13,6 +13,7 @@ $vtrg-act-color: #c19a6b; // Цвет увядших листьев
13
13
  .vtrg-edit-control {
14
14
  display: none;
15
15
  position: absolute;
16
+ z-index: 99;
16
17
  &.top { top: 0; left: 0; }
17
18
  &.bottom { right: 0; bottom: 0; }
18
19
  padding: 4px;
@@ -38,6 +39,8 @@ $vtrg-act-color: #c19a6b; // Цвет увядших листьев
38
39
  }
39
40
 
40
41
  // ==== add new block button ==== ==== ==== ==== ==== ==== ==== ==== ==== ====
42
+ .vtrg-add-new-wrapper { margin: 32px; }
43
+
41
44
  .vtrg-add-new {
42
45
  display: block;
43
46
  text-align: center;
@@ -7,7 +7,7 @@ module Vitrage
7
7
  format.html { render layout: false }
8
8
  end
9
9
  end
10
-
10
+
11
11
  def new
12
12
  piece_class = params[:kind]
13
13
  unless piece_class &&
@@ -15,75 +15,95 @@ module Vitrage
15
15
  piece_class = VitrageOwnersPiecesSlot::PIECE_CLASSES_STRINGS.first
16
16
  end
17
17
  @piece = VitragePieces.const_get(piece_class).new
18
-
18
+
19
19
  respond_to do |format|
20
20
  format.html { render layout: false }
21
21
  end
22
22
  end
23
-
23
+
24
24
  def edit
25
25
  respond_to do |format|
26
26
  format.html { render layout: false }
27
27
  end
28
28
  end
29
-
29
+
30
30
  def create
31
- wrong_params_here = false
31
+ error_state = nil
32
32
 
33
33
  # check existance of params
34
34
  unless params[:kind] &&
35
35
  VitrageOwnersPiecesSlot::PIECE_CLASSES_STRINGS.include?(params[:kind]) &&
36
36
  params[:owner_type] &&
37
37
  params[:owner_id]
38
- wrong_params_here = true
38
+ error_state = { descr: "Necessary parameters didn't exist error" }
39
39
  end
40
40
 
41
41
  # get the owner of vitrage
42
- unless wrong_params_here
42
+ if error_state.nil?
43
43
  @owner = nil
44
44
  begin
45
45
  @owner = Object.const_get(params[:owner_type]).find params[:owner_id]
46
46
  rescue Exception => e
47
- wrong_params_here = true
47
+ error_state = { descr: "Owner find error" }
48
48
  end
49
49
  end
50
50
 
51
51
  # create piece
52
- unless wrong_params_here
52
+ if error_state.nil?
53
53
  @piece = VitragePieces.const_get(params[:kind]).new
54
54
  @piece.assign_attributes vitrage_piece_params
55
- wrong_params_here = true unless @piece.save
55
+ unless @piece.save
56
+ error_state = {
57
+ descr: "Piece save error",
58
+ piece: @piece.class.name.demodulize.underscore,
59
+ errors: @piece.errors
60
+ }
61
+ end
56
62
  end
57
63
 
58
64
  # create vitrage slot
59
- unless wrong_params_here
65
+ if error_state.nil?
60
66
  @slot = VitrageOwnersPiecesSlot.new owner: @owner, piece: @piece
61
67
  unless @slot.save
62
- wrong_params_here = true
68
+ error_state = { descr: "Slot save error" }
63
69
  @piece.destroy
64
70
  end
65
71
  end
66
72
 
67
- if wrong_params_here
73
+ if error_state
68
74
  respond_to do |format|
69
- format.html { render text: "error", status: :unprocessable_entity }
75
+ format.html { render json: error_state.merge({ status: 'error' }),
76
+ status: :unprocessable_entity }
70
77
  end
71
78
  else
72
- # respond_to do |format|
73
- # format.html { render layout: false }
74
- # end
75
- render layout: false
79
+ respond_to do |format|
80
+ format.html { render layout: false }
81
+ format.js # for remotipart gem correct work (ajax multipart form)
82
+ end
83
+ # render layout: false
76
84
  end
77
85
  end
78
-
79
- def update
80
- @piece.update vitrage_piece_params
81
86
 
82
- respond_to do |format|
83
- format.html { render action: "show", layout: false }
87
+ def update
88
+ if @piece.update(vitrage_piece_params)
89
+ respond_to do |format|
90
+ format.html { render text: "" }
91
+ format.js { render text: "" }
92
+ end
93
+ else
94
+ error_state = {
95
+ status: 'error',
96
+ descr: "Piece save error",
97
+ piece: @piece.class.name.demodulize.underscore,
98
+ errors: @piece.errors
99
+ }
100
+ respond_to do |format|
101
+ format.html { render json: error_state, status: :unprocessable_entity }
102
+ format.js { render json: error_state, status: :unprocessable_entity }
103
+ end
84
104
  end
85
105
  end
86
-
106
+
87
107
  def destroy
88
108
  @slot = VitrageOwnersPiecesSlot.find params[:id]
89
109
  @slot.destroy
@@ -93,6 +113,53 @@ module Vitrage
93
113
  end
94
114
  end
95
115
 
116
+ def reorder
117
+ moved_slot = VitrageOwnersPiecesSlot.find params[:id]
118
+ wrong_params = false
119
+
120
+ if params[:beforeid].present?
121
+ if params[:beforeid] == "end"
122
+ max_ordn = moved_slot.owner.vitrage_slots.maximum(:ordn)
123
+ moved_slot.update_attributes ordn: max_ordn ? max_ordn + 1 : 1
124
+ else
125
+
126
+ slot_after_moved = VitrageOwnersPiecesSlot.find_by_id params[:beforeid]
127
+ if slot_after_moved.present? && slot_after_moved.owner == moved_slot.owner
128
+ ordn_for_moved = slot_after_moved.ordn
129
+ all_slots_after_moved = moved_slot.owner.vitrage_slots.
130
+ where("vitrage_owners_pieces_slots.ordn >= ?", ordn_for_moved).
131
+ where.not(id: moved_slot.id).
132
+ order(ordn: :asc)
133
+ all_slots_after_moved.each do |slot|
134
+ slot.update_attributes ordn: slot.ordn + 1
135
+ end
136
+ moved_slot.update_attributes ordn: ordn_for_moved
137
+
138
+ else
139
+ wrong_params = true
140
+ end
141
+ end
142
+ else
143
+ wrong_params = true
144
+ end
145
+
146
+ if wrong_params
147
+ render text: "wrong params", status: :unprocessable_entity
148
+ else
149
+ render text: "ok"
150
+ end
151
+ end
152
+
153
+ def restore_order
154
+ owners = VitrageOwnersPiecesSlot.all.collect { |vp| vp.owner }.uniq
155
+ owners.each do |owner|
156
+ owner.vitrage_slots.each_with_index do |slot, indx|
157
+ slot.update_attributes ordn: indx + 1
158
+ end
159
+ end
160
+ render text: "ok"
161
+ end
162
+
96
163
  private
97
164
 
98
165
  def find_vitrage_piece
@@ -1,11 +1,13 @@
1
1
  <%= evil_icons_sprite %>
2
- <% owner.vitrage_slots.each do |slot| %>
3
- <%= render partial: "vitrage/edit_wraped_piece", locals: { slot: slot } %>
4
- <% end %>
2
+ <div id="vitrage-edit">
3
+ <% owner.vitrage_slots.each do |slot| %>
4
+ <%= render partial: "vitrage/edit_wraped_piece", locals: { slot: slot } %>
5
+ <% end %>
6
+ </div>
5
7
 
6
8
  <div class="vtrg-add-new-wrapper">
7
9
  <div class="vtrg-new-block-kinds">
8
- <span><%= evil_icon 'ei-plus', size: "l" %></span>
10
+ <span><%= evil_icon 'ei-plus', size: "m" %></span>
9
11
  <% VitrageOwnersPiecesSlot::PIECE_CLASSES_STRINGS.each do |piece_class_string| %>
10
12
  <%= link_to "", Rails.application.routes.url_helpers.new_vitrage_piece_path(kind: piece_class_string, owner_type: owner.class.name, owner_id: owner.id), role: "button", class: piece_class_string.underscore.dasherize, remote: true %>
11
13
  <% end %>
@@ -1,8 +1,12 @@
1
+ <% slot = slot || nil %>
1
2
  <% piece = piece || slot.piece %>
2
3
 
3
- <div class="vtrg-edit-wrapper" data-id="<%= slot.id %>">
4
+ <div class="vtrg-edit-wrapper" data-id="<%= (slot ? slot.id : 'new') %>">
4
5
  <% ['top', 'bottom'].each do |position_class| %>
5
6
  <div class="vtrg-edit-control <%= position_class %>">
7
+ <a href="javascript:void(0)" role="button" rel="move" class="vtrg-edit-control-move" title="<%= t('vitrage.move') %>">
8
+ <%= evil_icon 'ei-retweet', size: "m" %>
9
+ </a>
6
10
  <a href="javascript:void(0)" role="button" rel="edit" title="<%= t('vitrage.edit') %>">
7
11
  <%= evil_icon 'ei-pencil', size: "m" %>
8
12
  </a>
@@ -1 +1 @@
1
- <%= render partial: "vitrage/edit_wraped_piece", locals: { slot: @slot, piece: @piece } %>
1
+ <%= @slot.id %>
@@ -0,0 +1 @@
1
+ <%= @slot.id %>
@@ -1,4 +1,19 @@
1
1
  <div class="vtrg-edit-wrapper editmode">
2
+ <% ['top', 'bottom'].each do |position_class| %>
3
+ <div class="vtrg-edit-control <%= position_class %>">
4
+ <a href="javascript:void(0)" role="button" rel="move" class="vtrg-edit-control-move" title="<%= t('vitrage.move') %>">
5
+ <%= evil_icon 'ei-retweet', size: "m" %>
6
+ </a>
7
+ <a href="javascript:void(0)" role="button" rel="edit" title="<%= t('vitrage.edit') %>">
8
+ <%= evil_icon 'ei-pencil', size: "m" %>
9
+ </a>
10
+ <a href="javascript:void(0)" role="button" rel="destroy" title="<%= t('vitrage.destroy') %>">
11
+ <%= evil_icon 'ei-trash', size: "m" %>
12
+ </a>
13
+ </div>
14
+ <% end %>
2
15
  <div class="vtrg-edit-block-cover"><%= evil_icon 'ei-spinner', size: "m" %></div>
3
- <%= render partial: "vitrage/form_wrap", locals: { piece: @piece } %>
16
+ <div class="vtrg-edit-body">
17
+ <%= render partial: "vitrage/form_wrap", locals: { piece: @piece } %>
18
+ </div>
4
19
  </div>
@@ -1 +1 @@
1
- <%= render partial: "vitrage/#{@item.class.name.demodulize.underscore}", locals: { piece: @piece } %>
1
+ <%= render partial: "vitrage/#{@piece.class.name.demodulize.underscore}", locals: { piece: @piece } %>
@@ -1,4 +1,5 @@
1
1
  en:
2
2
  vitrage:
3
3
  edit: "Edit"
4
- destroy: "Delete"
4
+ destroy: "Delete"
5
+ move: "Move"
@@ -2,3 +2,4 @@ ru:
2
2
  vitrage:
3
3
  edit: "Редактировать"
4
4
  destroy: "Удалить"
5
+ move: "Переместить"
@@ -4,7 +4,20 @@ class VitrageOwnersPiecesSlot < ActiveRecord::Base
4
4
  belongs_to :owner, polymorphic: true
5
5
  belongs_to :piece, polymorphic: true, dependent: :destroy
6
6
 
7
+ before_create :set_correct_order_num
8
+
7
9
  default_scope -> { order(ordn: :asc, id: :asc) }
8
10
 
9
11
  PIECE_CLASSES_STRINGS = [ ] # add pieces class names strings here (demodulized)
12
+
13
+ private
14
+
15
+ # TODO wrap this becausetroubles with updating this code in the future
16
+ def set_correct_order_num
17
+ self.ordn = 1
18
+ if owner
19
+ max_ordn = owner.vitrage_slots.maximum(:ordn)
20
+ self.ordn = max_ordn + 1 if max_ordn
21
+ end
22
+ end
10
23
  end
@@ -2,19 +2,20 @@ module Vitrage
2
2
  module Router
3
3
 
4
4
  def routes(rails_router, options = {})
5
- if options[:controller]
6
- cs = options[:controller].to_s
7
- rails_router.post '/vitrage/pieces' => "#{cs}#create", as: :vitrage_pieces
8
- rails_router.get '/vitrage/pieces/new' => "#{cs}#new", as: :new_vitrage_piece
9
- rails_router.get '/vitrage/pieces/:id/edit' => "#{cs}#edit", as: :edit_vitrage_piece
10
- rails_router.get '/vitrage/pieces/:id' => "#{cs}#show", as: :vitrage_piece
11
- rails_router.match '/vitrage/pieces/:id' => "#{cs}#update", via: [:patch, :put]
12
- rails_router.delete '/vitrage/pieces/:id' => "#{cs}#destroy"
13
- else
14
- rails_router.namespace :vitrage do
15
- rails_router.resources :pieces, except: [:index]
16
- end
17
- end
5
+ cs = options[:controller] ? options[:controller].to_s : "pieces"
6
+
7
+ rails_router.post '/vitrage/pieces' => "#{cs}#create", as: :vitrage_pieces
8
+ rails_router.get '/vitrage/pieces/new' => "#{cs}#new", as: :new_vitrage_piece
9
+ rails_router.get '/vitrage/pieces/restore_order' => "#{cs}#restore_order", as: :restore_order_vitrage_pieces
10
+ rails_router.get '/vitrage/pieces/:id/edit' => "#{cs}#edit", as: :edit_vitrage_piece
11
+ rails_router.get '/vitrage/pieces/:id' => "#{cs}#show", as: :vitrage_piece
12
+ rails_router.match '/vitrage/pieces/:id' => "#{cs}#update", via: [:patch, :put]
13
+ rails_router.delete '/vitrage/pieces/:id' => "#{cs}#destroy"
14
+ rails_router.post '/vitrage/pieces/:id/reorder' => "#{cs}#reorder", as: :vitrage_piece_reoder
15
+
16
+ # rails_router.namespace :vitrage do
17
+ # rails_router.resources :pieces, except: [:index]
18
+ # end
18
19
  end
19
20
 
20
21
  end
@@ -1,3 +1,3 @@
1
1
  module Vitrage
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end