lib/orange/resources/model_resource.rb in orange-0.0.3 vs lib/orange/resources/model_resource.rb in orange-0.0.4

- old
+ new

@@ -70,11 +70,11 @@ # @return [Hash] hash of options to be used def view_opts(packet, mode, is_list, *args) opts = args.extract_options!.with_defaults({:path => ''}) props = model_class.form_props(packet['route.context']) resource_id = opts[:id] || packet['route.resource_id'] || false - all_opts = {:props => props, :resource => self.class.to_s, :model_name => @my_orange_name}.merge!(opts) + all_opts = {:props => props, :resource => self, :model_name => @my_orange_name}.merge!(opts) all_opts.with_defaults! :model => find_one(packet, mode, resource_id) unless is_list all_opts.with_defaults! :list => find_list(packet, mode) if is_list all_opts.with_defaults! find_extras(packet, mode) all_opts end @@ -117,16 +117,17 @@ model_class.new(packet.request.params[@my_orange_name.to_s]).save end packet.reroute(@my_orange_name, :orange) end - # Deletes an object specified by packet['route.resource_id'], then reroutes to main + # Deletes an object specified by packet['route.resource_id'], then reroutes to main. + # The request must come in as a delete. Rack::MethodOverride can be used to do this. # @param [Orange::Packet] packet the packet being routed def delete(packet, *opts) if packet.request.delete? m = model_class.get(packet['route.resource_id']) - m.destroy! if m + m.destroy if m end packet.reroute(@my_orange_name, :orange) end # Saves updates to an object specified by packet['route.resource_id'], then reroutes to main @@ -134,11 +135,10 @@ def save(packet, *opts) if packet.request.post? m = model_class.get(packet['route.resource_id']) if m m.update(packet.request.params[@my_orange_name.to_s]) - else end end packet.reroute(@my_orange_name, :orange) end @@ -194,17 +194,18 @@ # @param [String] text link text to show # @param [String] link the actual href value of the link # @param [String, false] confirm text of the javascript confirm (false for none [default]) # @param [optional, Array] args array of optional arguments, only opts[:method] defined # @option opts [String] method method name (Should be 'DELETE', 'PUT' or 'POST') - def form_link(text, link, confirm = false, *args) - opts = args.extract_options! + def form_link(text, link, confirm = false, opts = {}) + text = "<img src='#{opts[:img]}' alt='#{text}' />" if opts[:img] + css = opts[:class]? opts[:class] : 'form_button_link' meth = (opts[:method]? "<input type='hidden' name='_method' value='#{opts[:method]}' />" : '') if confirm - "<form action='#{link}' method='post' class='mini' onsubmit='return confirm(\"#{confirm}\")'><button class='link_button'><a href='#'>#{text}</a></button>#{meth}</form>" + "<form action='#{link}' method='post' class='mini' onsubmit='return confirm(\"#{confirm}\")'><button class='link_button'><a href='#' class='#{css}'>#{text}</a></button>#{meth}</form>" else - "<form action='#{link}' method='post' class='mini'><button class='link_button'><a href='#'>#{text}</a></button>#{meth}</form>" + "<form action='#{link}' method='post' class='mini'><button class='link_button'><a href='#' class='#{css}'>#{text}</a></button>#{meth}</form>" end end # Calls view for an orange resource. def view(model_name, *args) @@ -216,21 +217,26 @@ args = args.extract_options! val = args[:value] || '' label = args[:label] || false show = args[:show] || false name = prop[:name] + human_readable_name = name.to_s.split('_').each{|w| w.capitalize!}.join(' ') unless show case prop[:type] when :title ret = "<input class='title' type='text' value='#{val}' name='#{model_name}[#{name}]' />" when :text ret = "<input type='text' value='#{val}' name='#{model_name}[#{name}]' />" when :fulltext ret = "<textarea name='#{model_name}[#{name}]'>#{val}</textarea>" + when :boolean + human_readable_name = human_readable_name + '?' + ret = "<input type='hidden' name='#{model_name}[#{name}]' value='0' /><input type='checkbox' name='#{model_name}[#{name}]' value='1' #{'checked="checked"' if (val && val != '')}/>" else ret = "<input type='text' value='#{val}' name='#{model_name}[#{name}]' />" end - ret = "<label for=''>#{name}</label><br />" + ret if label + display_name = prop[:display_name] || human_readable_name + ret = "<label for=''>#{display_name}</label><br />" + ret if label else case prop[:type] when :title ret = "<h3 class='#{model_name}-#{name}'>#{val}</h3>" when :text \ No newline at end of file