Browse Source

get bug submition working

git-svn-id: file:///home/pjones/src/tmp/b2-svn/bugs/trunk@231 637e2b85-2e0a-0410-84ac-bd785500051d
master
pjones 13 years ago
parent
commit
f8205355e6

+ 51
- 0
app/controllers/create_controller.rb View File

@@ -0,0 +1,51 @@
######################################################################
# Copyright (C) 2006 Peter J Jones (pjones@pmade.org)
# All Rights Reserved
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# 3. Neither the name of the Author nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
######################################################################
class CreateController < ApplicationController
######################################################################
def index
product_id = params[:id]
product = Product.find(product_id) if product_id
@bug = Bug.new(:product_id => product_id, :product => product)
end
######################################################################
def create
@bug = Bug.new(params[:bug]).fill_in_defaults
if @bug.save
redirect_to(:action => 'list', :controller => 'products')
else
render(:action => 'index')
end
end
######################################################################
end
######################################################################

+ 11
- 0
app/models/bug.rb View File

@@ -40,5 +40,16 @@ class Bug < ActiveRecord::Base
has_many :histories
has_many :tags
######################################################################
validates_presence_of :comments
validates_presence_of :feedback_type_id
validates_presence_of :product_id
######################################################################
def fill_in_defaults
self.title = self.comments.slice(0..256)
self.state = State.top_item
self.priority = Priority.bottom_item
self
end
######################################################################
end
######################################################################

+ 20
- 0
app/views/create/_form.rhtml View File

@@ -0,0 +1,20 @@
<%= error_messages_for(:bug) -%>

<% if @bug.product -%>
<%= @bug.product.name -%>
<%= hidden_field(:bug, :product_id) -%>
<% else -%>
<%= select(:bug, :product_id,
Product.find_all.collect{|p| [p.name, p.id]},
:prompt => "Select Product:")
-%>
<% end %>
<br/>

<%= select(:bug, :feedback_type_id,
FeedbackType.find_all.collect{|f| [f.title, f.id]},
:prompt => "Select Feedback Type:")
-%>

<p><label for="bug_comments">Comments</label><br/>
<%= text_area(:bug, :comments) -%></p>

+ 6
- 0
app/views/create/index.rhtml View File

@@ -0,0 +1,6 @@
<h1>New Bug</h1>

<%= start_form_tag(:action => 'create') -%>
<%= render(:partial => 'form') -%>
<%= submit_tag("Create") -%>
<%= end_form_tag -%>

+ 17
- 0
lib/position_list.rb View File

@@ -54,6 +54,23 @@ module PositionList
find(:first, :order => 'position desc')
end
######################################################################
def top_position_in_list
item = top_item
item ? item.position : 0
end
######################################################################
def top_item
find(:first, :order => :position)
end
######################################################################
end
######################################################################
def first?
self.position == top_position_in_list
end
######################################################################
def last?
self.position == bottom_position_in_list
end
######################################################################
end

Loading…
Cancel
Save