Second part of admin-namespace-reorder. Also renamed OrderGroup into Ordergroup. More view-sharing between groups is neccessary.

This commit is contained in:
Benjamin Meichsner 2009-01-14 12:46:01 +01:00
parent 2d5dc03b90
commit fadc951208
83 changed files with 410 additions and 518 deletions

View file

@ -0,0 +1,69 @@
class Admin::OrdergroupsController < ApplicationController
before_filter :authenticate_admin
def index
if (params[:per_page] && params[:per_page].to_i > 0 && params[:per_page].to_i <= 100)
@per_page = params[:per_page].to_i
else
@per_page = 20
end
# if the search field is used
conditions = "name LIKE '%#{params[:query]}%'" unless params[:query].nil?
@total = Ordergroup.count(:conditions => conditions )
@ordergroups = Ordergroup.paginate(:conditions => conditions, :page => params[:page],
:per_page => @per_page, :order => 'name')
respond_to do |format|
format.html # index.html.erb
format.js { render :partial => "ordergroups" }
end
end
def show
@ordergroup = Ordergroup.find(params[:id])
end
def new
@ordergroup = Ordergroup.new
end
def edit
@ordergroup = Ordergroup.find(params[:id])
end
def create
@ordergroup = Ordergroup.new(params[:Ordergroup])
if @ordergroup.save
flash[:notice] = 'Ordergroup was successfully created.'
redirect_to([:admin, @ordergroup])
else
render :action => "new"
end
end
def update
@ordergroup = Ordergroup.find(params[:id])
if @ordergroup.update_attributes(params[:Ordergroup])
flash[:notice] = 'Ordergroup was successfully updated.'
redirect_to([:admin, @ordergroup])
else
render :action => "edit"
end
end
def destroy
@ordergroup = Ordergroup.find(params[:id])
@ordergroup.destroy
redirect_to(admin_Ordergroups_url)
end
def memberships
@group = Ordergroup.find(params[:id])
end
end

View file

@ -1,6 +1,7 @@
class Admin::UsersController < ApplicationController
before_filter :authenticate_admin
filter_parameter_logging :password, :password_confirmation # do not log passwort parameters
def index
if (params[:per_page] && params[:per_page].to_i > 0 && params[:per_page].to_i <= 100)
@per_page = params[:per_page].to_i

View file

@ -1,4 +1,5 @@
class Admin::WorkgroupsController < ApplicationController
before_filter :authenticate_admin
def index
if (params[:per_page] && params[:per_page].to_i > 0 && params[:per_page].to_i <= 100)
@ -10,6 +11,7 @@ class Admin::WorkgroupsController < ApplicationController
# if the search field is used
conditions = "name LIKE '%#{params[:query]}%'" unless params[:query].nil?
@total = Ordergroup.count(:conditions => conditions )
@workgroups = Workgroup.paginate(:conditions => conditions, :page => params[:page],
:per_page => @per_page, :order => 'name')

View file

@ -1,235 +1,12 @@
class AdminController < ApplicationController
before_filter :authenticate_admin
filter_parameter_logging :password, :password_confirmation # do not log passwort parameters
verify :method => :post, :only => [ :destroyUser, :createUser, :updateUser, :destroyGroup, :createGroup, :updateGroup], :redirect_to => { :action => :index }
# Messages
MESG_NO_ADMIN_ANYMORE = "Du bist nun kein Admin mehr"
def index
@user = self.current_user
@groups = Group.find(:all, :limit => 5, :order => 'created_on DESC')
@users = User.find(:all, :limit => 5, :order => 'created_on DESC')
end
# ************************** group actions **************************
def listGroups
if (params[:per_page] && params[:per_page].to_i > 0 && params[:per_page].to_i <= 100)
@per_page = params[:per_page].to_i
else
@per_page = 20
end
# if the search field is used
conditions = "name LIKE '%#{params[:query]}%'" unless params[:query].nil?
@total = Group.count(:conditions => conditions)
@groups = Group.paginate(:conditions => conditions, :page => params[:page], :per_page => @per_page, :order => 'type DESC, name')
respond_to do |format|
format.html # index.html.erb
format.js do
render :update do |page|
page.replace_html 'table', :partial => "listGroups"
end
end
end
end
def showGroup
@group = Group.find(params[:id])
end
def newGroup
@group = Group.new
render :action => 'newGroup'
end
def newOrderGroup
@group = OrderGroup.new
render :action => 'newGroup'
end
def createGroup
@group = Group.new(params[:group])
if @group.save
flash[:notice] = 'Neue Gruppe wurde angelegt.'
redirect_to :action => 'members', :id => @group.id
else
flash[:error] = 'Gruppe konnte nicht angelegt werden.'
render :action => 'newGroup'
end
end
def createOrderGroup
@group = OrderGroup.new(params[:group])
@group.account_balance = 0
@group.account_updated = Time.now
if @group.save
flash[:notice] = 'Neue Bestellgruppe wurde angelegt.'
redirect_to :action => 'members', :id => @group.id
else
flash[:error] = 'Gruppe konnte nicht angelegt werden.'
render :action => 'newGroup'
end
end
def editGroup
@group = Group.find(params[:id])
render :template => 'groups/edit'
end
def updateGroup
@group = Group.find(params[:id])
if @group.update_attributes(params[:group])
flash[:notice] = 'Group was successfully updated.'
redirect_to :action => 'showGroup', :id => @group
else
render :template => 'groups/edit'
end
end
def destroyGroup
begin
group = Group.find(params[:id])
group.destroy
redirect_to :action => 'listGroups'
rescue => error
flash[:error] = error.to_s
redirect_to :action => "showGroup", :id => group
end
end
# ************************** Membership methods ******************************
# loads the membership-page
def members
@group = Group.find(params[:id])
end
# adds a new member to the group
def addMember
@group = Group.find(params[:id])
user = User.find(params[:user])
Membership.create(:group => @group, :user => user)
redirect_to :action => 'memberships_reload', :id => @group
end
# the membership will find an end....
def dropMember
begin
group = Group.find(params[:group])
Membership.find(params[:membership]).destroy
if User.find(@current_user.id).role_admin?
redirect_to :action => 'memberships_reload', :id => group
else
# If the user drops himself from admin group
flash[:notice] = MESG_NO_ADMIN_ANYMORE
render(:update) {|page| page.redirect_to :controller => "index"}
end
rescue => error
flash[:error] = error.to_s
redirect_to :action => 'memberships_reload', :id => group
end
end
# the two boxes 'members' and 'non members' will be reload through ajax
def memberships_reload
@group = Group.find(params[:id])
render :update do |page|
page.replace_html 'members', :partial => 'groups/members', :object => @group
page.replace_html 'non_members', :partial => 'groups/non_members', :object => @group
end
end
# ****************************** User methdos ******************************
def listUsers
if (params[:per_page] && params[:per_page].to_i > 0 && params[:per_page].to_i <= 100)
@per_page = params[:per_page].to_i
else
@per_page = 20
end
# if the search field is used
conditions = "first_name LIKE '%#{params[:query]}%' OR last_name LIKE '%#{params[:query]}%'" unless params[:query].nil?
@total = User.count(:conditions => conditions)
@users = User.paginate :page => params[:page], :conditions => conditions, :per_page => @per_page, :order => 'nick'
respond_to do |format|
format.html # listUsers.haml
format.js do
render :update do |page|
page.replace_html 'table', :partial => "listUsers"
end
end
end
end
def showUser
@user = User.find(params[:id])
end
def newUser
@user = User.new
if request.xml_http_request?
render :update do |page|
page.replace_html 'userForm', :partial => "newUser"
page['newUser'].show
end
end
end
def createUser
@user = User.new(params[:user])
@user.set_password({:required => true}, params[:user][:password], params[:user][:password_confirmation])
if @user.errors.empty? && @user.save
for setting in User::setting_keys.keys
@user.settings[setting] = (params[:user][:settings] && params[:user][:settings][setting] == '1' ? '1' : nil)
end
flash[:notice] = MSG_USER_CREATED
redirect_to :action => 'listUsers'
else
render :action => 'newUser'
end
end
def editUser
@user = User.find(params[:id])
if request.xml_http_request?
render :update do |page|
page.replace_html 'userForm', :partial => "newUser"
page['newUser'].show
end
end
end
def updateUser
@user = User.find(params[:id])
@user.set_password({:required => false}, params[:user][:password], params[:user][:password_confirmation])
@user.attributes = params[:user]
for setting in User::setting_keys.keys
@user.settings[setting] = (params[:user][:settings] && params[:user][:settings][setting] == '1' ? '1' : nil)
end
if @user.errors.empty? && @user.save
flash[:notice] = MSG_USER_UPDATED
redirect_to :action => 'showUser', :id => @user
else
render :action => 'editUser'
end
end
def destroyUser
user = User.find(params[:id])
if user.nick == @current_user.nick
# deny destroying logged-in-user
flash[:error] = ERR_NO_SELF_DELETE
else
user.destroy
flash[:notice] = MSG_USER_DELETED
end
redirect_to :action => 'listUsers'
@groups = Group.find(:all, :limit => 10, :order => 'created_on DESC')
@users = User.find(:all, :limit => 10, :order => 'created_on DESC')
end
end

View file

@ -98,11 +98,11 @@ class Finance::BalancingController < ApplicationController
end
# Creates a new GroupOrderArticleResult
# If the the chosen OrderGroup hasn't ordered yet, a GroupOrderResult will created
# If the the chosen Ordergroup hasn't ordered yet, a GroupOrderResult will created
def createGroupResult
@result = GroupOrderArticleResult.new(params[:group_order_article_result])
order = @result.order_article_result.order
orderGroup = OrderGroup.find(params[:group_order_article_result][:group_order_result_id])
orderGroup = Ordergroup.find(params[:group_order_article_result][:group_order_result_id])
# creates a new GroupOrderResult if necessary
unless @result.group_order_result = GroupOrderResult.find(:first,
:conditions => ["group_order_results.group_name = ? AND group_order_results.order_id = ?", orderGroup.name, order.id ])
@ -208,12 +208,12 @@ class Finance::BalancingController < ApplicationController
end
end
# before the order will booked, a view lists all OrderGroups and its order_prices
# before the order will booked, a view lists all Ordergroups and its order_prices
def confirm
@order = Order.find(params[:id])
end
# Balances the Order, Update of the OrderGroup.account_balances
# Balances the Order, Update of the Ordergroup.account_balances
def close
@order = Order.find(params[:id])
begin

View file

@ -22,8 +22,8 @@ class Finance::TransactionsController < ApplicationController
conditions = "name LIKE '%#{params[:query]}%'" unless params[:query].nil?
@total = OrderGroup.count(:conditions => conditions)
@groups = OrderGroup.paginate :conditions => conditions, :page => params[:page], :per_page => @per_page, :order => sort
@total = Ordergroup.count(:conditions => conditions)
@groups = Ordergroup.paginate :conditions => conditions, :page => params[:page], :per_page => @per_page, :order => sort
respond_to do |format|
format.html
@ -36,7 +36,7 @@ class Finance::TransactionsController < ApplicationController
end
def list
@group = OrderGroup.find(params[:id])
@group = Ordergroup.find(params[:id])
if params['sort']
sort = case params['sort']
@ -69,12 +69,12 @@ class Finance::TransactionsController < ApplicationController
end
def new
@group = OrderGroup.find(params[:id])
@group = Ordergroup.find(params[:id])
@financial_transaction = @group.financial_transactions.build
end
def create
@group = OrderGroup.find(params[:financial_transaction][:order_group_id])
@group = Ordergroup.find(params[:financial_transaction][:ordergroup_id])
amount = params[:financial_transaction][:amount]
note = params[:financial_transaction][:note]
begin
@ -97,7 +97,7 @@ class Finance::TransactionsController < ApplicationController
params[:financial_transactions].each do |trans|
# ignore empty amount fields ...
unless trans[:amount].blank?
OrderGroup.find(trans[:order_group_id]).addFinancialTransaction trans[:amount], note, @current_user
Ordergroup.find(trans[:ordergroup_id]).addFinancialTransaction trans[:amount], note, @current_user
end
end
flash[:notice] = 'Saved all transactions successfully'

View file

@ -112,11 +112,11 @@ class IndexController < ApplicationController
end
# update the Group
# only access to description for OrderGroups
# only access to description for Ordergroups
def updateGroup
@group = Group.find(params[:id])
authenticate_membership(@group)
if @group.is_a?(OrderGroup)
if @group.is_a?(Ordergroup)
@group.update_attribute(:description, params[:group][:description])
else
@group.update_attributes(params[:group])
@ -149,8 +149,8 @@ class IndexController < ApplicationController
group = Group.find(params[:group])
authenticate_membership(group)
membership = Membership.find(params[:membership])
if group.is_a?(OrderGroup) && group.memberships.size == 1
# Deny dropping member if the group is an OrderGroup and there is only one member left.
if group.is_a?(Ordergroup) && group.memberships.size == 1
# Deny dropping member if the group is an Ordergroup and there is only one member left.
flash[:error] = ERR_LAST_MEMBER
else
membership.destroy
@ -196,7 +196,7 @@ class IndexController < ApplicationController
# sort by ordergroups
if params[:sort_by_ordergroups]
@users = []
OrderGroup.find(:all, :order => "name").each do |group|
Ordergroup.find(:all, :order => "name").each do |group|
group.users.each do |user|
@users << user
end
@ -229,7 +229,7 @@ class IndexController < ApplicationController
# gives an overview for the workgroups and its members
def workgroups
@groups = Group.find :all, :conditions => "type != 'OrderGroup'", :order => "name"
@groups = Group.find :all, :conditions => "type != 'Ordergroup'", :order => "name"
end
# Invites a new user to join foodsoft in this group.

View file

@ -1,8 +1,8 @@
# Controller for all ordering-actions that are performed by a user who is member of an OrderGroup.
# Controller for all ordering-actions that are performed by a user who is member of an Ordergroup.
# Management actions that require the "orders" role are handled by the OrdersController.
class OrderingController < ApplicationController
# Security
before_filter :ensureOrderGroupMember
before_filter :ensureOrdergroupMember
verify :method => :post, :only => [:saveOrder], :redirect_to => { :action => :index }
# Messages
@ -33,7 +33,7 @@ class OrderingController < ApplicationController
if !@order.current?
flash[:notice] = ERROR_ALREADY_FINISHED
redirect_to :action => 'index'
elsif !(@order_group = @current_user.find_ordergroup)
elsif !(@ordergroup = @current_user.find_ordergroup)
flash[:notice] = ERROR_NO_ORDERGROUP
redirect_to :controller => 'index'
else
@ -43,7 +43,7 @@ class OrderingController < ApplicationController
@articles_by_category = @order.get_articles
# save results of earlier orders in array
ordered_articles = Array.new
@group_order = @order.group_orders.find(:first, :conditions => "order_group_id = #{@order_group.id}", :include => :group_order_articles)
@group_order = @order.group_orders.find(:first, :conditions => "ordergroup_id = #{@ordergroup.id}", :include => :group_order_articles)
if @group_order
# Group has already ordered, so get the results...
for article in @group_order.group_order_articles
@ -54,10 +54,10 @@ class OrderingController < ApplicationController
'tolerance_result' => result[:tolerance]}
end
@version = @group_order.lock_version
@availableFunds = @order_group.getAvailableFunds(@group_order)
@availableFunds = @ordergroup.getAvailableFunds(@group_order)
else
@version = 0
@availableFunds = @order_group.getAvailableFunds
@availableFunds = @ordergroup.getAvailableFunds
end
# load prices ....
@ -90,7 +90,7 @@ class OrderingController < ApplicationController
if (!order.current?)
flash[:error] = ERROR_ALREADY_FINISHED
redirect_to :action => 'index'
elsif !(order_group = @current_user.find_ordergroup)
elsif !(ordergroup = @current_user.find_ordergroup)
flash[:error] = ERROR_NO_ORDERGROUP
redirect_to :controller => 'index'
elsif (params[:total_balance].to_i < 0)
@ -100,12 +100,12 @@ class OrderingController < ApplicationController
begin
Order.transaction do
# Create group order if necessary...
if (groupOrder = order.group_orders.find(:first, :conditions => "order_group_id = #{order_group.id}", :include => [:group_order_articles]))
if (groupOrder = order.group_orders.find(:first, :conditions => "ordergroup_id = #{ordergroup.id}", :include => [:group_order_articles]))
if (params[:version].to_i != groupOrder.lock_version) # check for conflicts well ahead
raise ActiveRecord::StaleObjectError
end
else
groupOrder = GroupOrder.new(:order_group => order_group, :order => order, :updated_by => @current_user, :price => 0)
groupOrder = GroupOrder.new(:ordergroup => ordergroup, :order => order, :updated_by => @current_user, :price => 0)
groupOrder.save!
end
# Create/update GroupOrderArticles...
@ -142,7 +142,7 @@ class OrderingController < ApplicationController
end
end
# Shows the Result for the OrderGroup the current user belongs to
# Shows the Result for the Ordergroup the current user belongs to
# this method decides between finished and unfinished orders
def my_order_result
@order= Order.find(params[:id])
@ -153,7 +153,7 @@ class OrderingController < ApplicationController
@order_value= @groupOrderResult.price if @groupOrderResult
@comments= @order.comments
else
@group_order = @order.group_orders.find_by_order_group_id(@current_user.find_ordergroup.id)
@group_order = @order.group_orders.find_by_ordergroup_id(@current_user.find_ordergroup.id)
@order_value= @group_order.price if @group_order
end
end
@ -211,9 +211,9 @@ class OrderingController < ApplicationController
private
# Returns true if @current_user is member of an OrderGroup.
# Returns true if @current_user is member of an Ordergroup.
# Used as a :before_filter by OrderingController.
def ensureOrderGroupMember
def ensureOrdergroupMember
!@current_user.find_ordergroup.nil?
end

View file

@ -3,7 +3,7 @@ class TasksController < ApplicationController
def index
@non_group_tasks = Task.find :all, :conditions => "group_id IS NULL AND done = 0", :order => "due_date ASC"
@groups = Group.find :all, :conditions => "type != 'OrderGroup'"
@groups = Group.find :all, :conditions => "type != 'Ordergroup'"
end
def myTasks
@ -109,7 +109,7 @@ class TasksController < ApplicationController
# shows workgroup (normal group) to edit weekly_tasks_template
def workgroup
@group = Group.find(params[:id])
if @group.is_a? OrderGroup
if @group.is_a? Ordergroup
flash[:error] = "Keine Arbeitsgruppe gefunden"
redirect_to :action => "index"
end