Module: Sequel::Plugins::RackBackendApiAdapter::InstanceMethods
- Defined in:
- lib/sequel_rack_backend_api_adapter.rb
Class Method Summary collapse
Instance Method Summary collapse
- #backend_clone_form(url, opts = {}) ⇒ Object
- #backend_delete_form(url, opts = {}) ⇒ Object
-
#backend_fields(cols) ⇒ Object
Silly but usable form prototype Not really meant to be used in a real case It uses a textarea for everything Override it Or even better, use Sequel-Crushyform plugin instead.
- #backend_form(url, cols = nil, opts = {}) ⇒ Object
- #backend_form_title ⇒ Object
- #backend_save? ⇒ Boolean
- #backend_show ⇒ Object
- #backend_to_label ⇒ Object
- #cloning_backend_columns ⇒ Object
-
#default_backend_columns ⇒ Object
Can be overridden.
Class Method Details
.included(model_class) ⇒ Object
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/sequel_rack_backend_api_adapter.rb', line 14 def self.included(model_class) model_class.class_eval do class << self alias backend_post new end alias backend_delete destroy alias backend_put set alias backend_values values end end |
Instance Method Details
#backend_clone_form(url, opts = {}) ⇒ Object
52 53 54 55 56 |
# File 'lib/sequel_rack_backend_api_adapter.rb', line 52 def backend_clone_form(url, opts={}) backend_form(url, [], {:submit_text=>'CLONE', :method=>'POST'}.update(opts)) do |out| out << "<input type='hidden' name='clone_id' value='#{self.id}' />\n" end end |
#backend_delete_form(url, opts = {}) ⇒ Object
51 |
# File 'lib/sequel_rack_backend_api_adapter.rb', line 51 def backend_delete_form(url, opts={}); backend_form(url, [], {:submit_text=>'X', :method=>'DELETE'}.update(opts)){}; end |
#backend_fields(cols) ⇒ Object
Silly but usable form prototype Not really meant to be used in a real case It uses a textarea for everything Override it Or even better, use Sequel-Crushyform plugin instead
70 71 72 73 74 75 76 77 78 |
# File 'lib/sequel_rack_backend_api_adapter.rb', line 70 def backend_fields(cols) o = '' cols.each do |c| identifier = "#{id.to_i}-#{self.class}-#{c}" o << "<label for='#{identifier}'>#{c.to_s.capitalize}</label><br />\n" o << "<textarea id='#{identifier}' name='model[#{c}]'>#{self.send(c)}</textarea><br />\n" end o end |
#backend_form(url, cols = nil, opts = {}) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/sequel_rack_backend_api_adapter.rb', line 27 def backend_form(url, cols=nil, opts={}) cols ||= default_backend_columns if block_given? fields_list = '' yield(fields_list) else fields_list = respond_to?(:crushyform) ? crushyform(cols) : backend_fields(cols) end o = "<form action='#{url}' method='POST' #{"enctype='multipart/form-data'" if fields_list.match(/type='file'/)} class='backend-form'>\n" o << backend_form_title unless block_given? o << fields_list opts[:method] = 'PUT' if (opts[:method].nil? && !self.new?) o << "<input type='hidden' name='_method' value='#{opts[:method]}' />\n" unless opts[:method].nil? o << "<input type='hidden' name='_destination' value='#{opts[:destination]}' />\n" unless opts[:destination].nil? o << "<input type='hidden' name='_submit_text' value='#{opts[:submit_text]}' />\n" unless opts[:submit_text].nil? o << "<input type='hidden' name='_no_wrap' value='#{opts[:no_wrap]}' />\n" unless opts[:no_wrap].nil? cols.each do |c| o << "<input type='hidden' name='fields[]' value='#{c}' />\n" end o << "<input type='submit' name='save' value='#{opts[:submit_text] || 'SAVE'}' />\n" o << "</form>\n" o end |
#backend_form_title ⇒ Object
58 59 60 61 |
# File 'lib/sequel_rack_backend_api_adapter.rb', line 58 def backend_form_title n = self.respond_to?(:to_label) ? self.to_label : self.backend_to_label "<h2>#{'Edit ' unless self.new?}#{n}</h2>" end |
#backend_save? ⇒ Boolean
25 |
# File 'lib/sequel_rack_backend_api_adapter.rb', line 25 def backend_save?; valid? && save; end |
#backend_show ⇒ Object
83 |
# File 'lib/sequel_rack_backend_api_adapter.rb', line 83 def backend_show; 'OK'; end |
#backend_to_label ⇒ Object
63 |
# File 'lib/sequel_rack_backend_api_adapter.rb', line 63 def backend_to_label; [self.new? ? 'New' : nil, model.name, id].compact!.join(' '); end |
#cloning_backend_columns ⇒ Object
82 |
# File 'lib/sequel_rack_backend_api_adapter.rb', line 82 def cloning_backend_columns; default_backend_columns; end |
#default_backend_columns ⇒ Object
Can be overridden
81 |
# File 'lib/sequel_rack_backend_api_adapter.rb', line 81 def default_backend_columns; columns - [:id]; end |