From 2d5dc03b9066fac7cb22d968cf503cf41ad839b5 Mon Sep 17 00:00:00 2001 From: Benjamin Meichsner Date: Tue, 13 Jan 2009 19:01:56 +0100 Subject: [PATCH] Groups are now workgroups. First part of moving groups-logic into admin-namespace. --- .../admin/memberships_controller.rb | 35 ++++++++ .../admin/workgroups_controller.rb | 67 +++++++++++++++ app/helpers/admin/memberships_helper.rb | 2 + app/models/article.rb | 25 ++++++ app/models/group.rb | 30 +------ app/models/invoice.rb | 3 +- app/models/user.rb | 6 +- app/models/workgroup.rb | 57 +++++++++++++ .../admin/memberships/_edit_members.rhtml | 21 +++++ app/views/admin/memberships/_members.rhtml | 21 +++++ .../admin/memberships/_non_members.rhtml | 11 +++ app/views/admin/workgroups/_form.html.haml | 84 +++++++++++++++++++ .../admin/workgroups/_workgroups.html.haml | 24 ++++++ app/views/admin/workgroups/edit.html.haml | 4 + app/views/admin/workgroups/index.html.haml | 34 ++++++++ .../admin/workgroups/memberships.html.haml | 3 + app/views/admin/workgroups/new.html.haml | 4 + app/views/admin/workgroups/show.html.haml | 42 ++++++++++ app/views/layouts/_main_tabnav.html.erb | 4 +- app/views/layouts/workgroups.html.erb | 17 ++++ config/routes.rb | 3 + .../20090113111624_create_workgroups.rb | 14 ++++ db/schema.rb | 8 +- public/stylesheets/scaffold.css | 54 ++++++++++++ test/fixtures/articles.yml | 2 +- test/fixtures/suppliers.yml | 2 +- test/fixtures/workgroups.yml | 7 ++ .../admin/groups_controller_test.rb | 8 ++ .../admin/memberships_controller_test.rb | 8 ++ test/functional/workgroups_controller_test.rb | 45 ++++++++++ test/unit/workgroup_test.rb | 8 ++ 31 files changed, 616 insertions(+), 37 deletions(-) create mode 100644 app/controllers/admin/memberships_controller.rb create mode 100644 app/controllers/admin/workgroups_controller.rb create mode 100644 app/helpers/admin/memberships_helper.rb create mode 100644 app/models/workgroup.rb create mode 100644 app/views/admin/memberships/_edit_members.rhtml create mode 100644 app/views/admin/memberships/_members.rhtml create mode 100644 app/views/admin/memberships/_non_members.rhtml create mode 100644 app/views/admin/workgroups/_form.html.haml create mode 100644 app/views/admin/workgroups/_workgroups.html.haml create mode 100644 app/views/admin/workgroups/edit.html.haml create mode 100644 app/views/admin/workgroups/index.html.haml create mode 100644 app/views/admin/workgroups/memberships.html.haml create mode 100644 app/views/admin/workgroups/new.html.haml create mode 100644 app/views/admin/workgroups/show.html.haml create mode 100644 app/views/layouts/workgroups.html.erb create mode 100644 db/migrate/20090113111624_create_workgroups.rb create mode 100644 public/stylesheets/scaffold.css create mode 100644 test/fixtures/workgroups.yml create mode 100644 test/functional/admin/groups_controller_test.rb create mode 100644 test/functional/admin/memberships_controller_test.rb create mode 100644 test/functional/workgroups_controller_test.rb create mode 100644 test/unit/workgroup_test.rb diff --git a/app/controllers/admin/memberships_controller.rb b/app/controllers/admin/memberships_controller.rb new file mode 100644 index 00000000..d362ecf9 --- /dev/null +++ b/app/controllers/admin/memberships_controller.rb @@ -0,0 +1,35 @@ +class Admin::MembershipsController < ApplicationController + + def add_member + @group = Group.find(params[:group_id]) + user = User.find(params[:user_id]) + Membership.create(:group => @group, :user => user) + redirect_to :action => 'reload', :group_id => @group + end + + def drop_member + begin + group = Group.find(params[:group_id]) + Membership.find(params[:membership_id]).destroy + if User.find(@current_user.id).role_admin? + redirect_to :action => 'reload', :group_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 => 'reload', :group_id => group + end + end + + def reload + @group = Group.find(params[:group_id]) + render :update do |page| + page.replace_html 'members', :partial => 'members', :object => @group + page.replace_html 'non_members', :partial => 'non_members', :object => @group + end + end + +end diff --git a/app/controllers/admin/workgroups_controller.rb b/app/controllers/admin/workgroups_controller.rb new file mode 100644 index 00000000..f7df7d1a --- /dev/null +++ b/app/controllers/admin/workgroups_controller.rb @@ -0,0 +1,67 @@ +class Admin::WorkgroupsController < ApplicationController + + 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? + + @workgroups = Workgroup.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 => "workgroups" } + end + end + + + def show + @workgroup = Workgroup.find(params[:id]) + end + + def new + @workgroup = Workgroup.new + end + + def edit + @workgroup = Workgroup.find(params[:id]) + end + + def create + @workgroup = Workgroup.new(params[:workgroup]) + + if @workgroup.save + flash[:notice] = 'Workgroup was successfully created.' + redirect_to([:admin, @workgroup]) + else + render :action => "new" + end + end + + def update + @workgroup = Workgroup.find(params[:id]) + + if @workgroup.update_attributes(params[:workgroup]) + flash[:notice] = 'Workgroup was successfully updated.' + redirect_to([:admin, @workgroup]) + else + render :action => "edit" + end + end + + def destroy + @workgroup = Workgroup.find(params[:id]) + @workgroup.destroy + + redirect_to(admin_workgroups_url) + end + + def memberships + @group = Workgroup.find(params[:id]) + end +end diff --git a/app/helpers/admin/memberships_helper.rb b/app/helpers/admin/memberships_helper.rb new file mode 100644 index 00000000..1dce2220 --- /dev/null +++ b/app/helpers/admin/memberships_helper.rb @@ -0,0 +1,2 @@ +module Admin::MembershipsHelper +end diff --git a/app/models/article.rb b/app/models/article.rb index 07e3a5c7..0c43c16d 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -1,3 +1,28 @@ +# == Schema Information +# Schema version: 20090113111624 +# +# Table name: articles +# +# id :integer(4) not null, primary key +# name :string(255) default(""), not null +# supplier_id :integer(4) default(0), not null +# article_category_id :integer(4) default(0), not null +# unit :string(255) default(""), not null +# note :string(255) +# availability :boolean(1) default(TRUE), not null +# manufacturer :string(255) +# origin :string(255) +# shared_updated_on :datetime +# net_price :decimal(8, 2) +# gross_price :decimal(8, 2) default(0.0), not null +# tax :float +# deposit :decimal(8, 2) default(0.0) +# unit_quantity :integer(4) default(1), not null +# order_number :string(255) +# created_at :datetime +# updated_at :datetime +# + # == Schema Information # Schema version: 20090102171850 # diff --git a/app/models/group.rb b/app/models/group.rb index 3a05ef78..d0b1c7c5 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -28,12 +28,6 @@ class Group < ActiveRecord::Base has_many :memberships, :dependent => :destroy has_many :users, :through => :memberships - has_many :tasks - # returns all non-finished tasks - has_many :open_tasks, :class_name => 'Task', :conditions => ['done = ?', false], :order => 'due_date ASC' - - attr_accessible :name, :description, :role_admin, :role_suppliers, :role_article_meta, :role_finance, :role_orders, - :weekly_task, :weekday, :task_name, :task_description, :task_required_users validates_length_of :name, :in => 1..25 validates_uniqueness_of :name @@ -63,31 +57,9 @@ class Group < ActiveRecord::Base raise ERR_LAST_ADMIN_GROUP_DELETE if self.role_admin == true && Group.find_all_by_role_admin(true).size == 1 end - # Returns an Array with date-objects to represent the next weekly-tasks - def next_weekly_tasks(number = 8) - # our system starts from 0 (sunday) to 6 (saturday) - # get difference between groups weekday and now - diff = self.weekday - Time.now.wday - if diff >= 0 - # weektask is in current week - nextTask = diff.day.from_now - else - # weektask is in the next week - nextTask = (diff + 7).day.from_now - end - # now generate the Array - nextTasks = Array.new - number.times do - nextTasks << nextTask - nextTask = 1.week.from_now(nextTask) - end - return nextTasks - end - # get all groups, which are NOT OrderGroups - #TODO: better implement a new model, which inherits from Group, e.g. WorkGroup def self.workgroups - Group.find :all, :conditions => "type IS NULL" + Workgroup.all end protected diff --git a/app/models/invoice.rb b/app/models/invoice.rb index 9b678c16..3ed883d8 100644 --- a/app/models/invoice.rb +++ b/app/models/invoice.rb @@ -1,5 +1,5 @@ # == Schema Information -# Schema version: 20090102171850 +# Schema version: 20090113111624 # # Table name: invoices # @@ -9,6 +9,7 @@ # number :string(255) # date :date # paid_on :date +# note :text # amount :decimal(8, 2) default(0.0), not null # created_at :datetime # updated_at :datetime diff --git a/app/models/user.rb b/app/models/user.rb index c48d74a3..fb29d106 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -72,8 +72,10 @@ class User < ActiveRecord::Base end def update_settings - for setting in User::setting_keys.keys - self.settings[setting] = setting_attributes[setting] && setting_attributes[setting] == '1' ? '1' : nil + unless setting_attributes.nil? + for setting in User::setting_keys.keys + self.settings[setting] = setting_attributes[setting] && setting_attributes[setting] == '1' ? '1' : nil + end end end diff --git a/app/models/workgroup.rb b/app/models/workgroup.rb new file mode 100644 index 00000000..d0c1e779 --- /dev/null +++ b/app/models/workgroup.rb @@ -0,0 +1,57 @@ +# == Schema Information +# Schema version: 20090113111624 +# +# Table name: groups +# +# id :integer(4) not null, primary key +# type :string(255) default(""), not null +# name :string(255) default(""), not null +# description :string(255) +# actual_size :integer(4) +# account_balance :decimal(8, 2) default(0.0), not null +# account_updated :datetime +# created_on :datetime not null +# role_admin :boolean(1) not null +# role_suppliers :boolean(1) not null +# role_article_meta :boolean(1) not null +# role_finance :boolean(1) not null +# role_orders :boolean(1) not null +# weekly_task :boolean(1) +# weekday :integer(4) +# task_name :string(255) +# task_description :string(255) +# task_required_users :integer(4) default(1) +# + +class Workgroup < Group + + has_many :tasks + # returns all non-finished tasks + has_many :open_tasks, :class_name => 'Task', :conditions => ['done = ?', false], :order => 'due_date ASC' + + def self.weekdays + [["Montag", "1"], ["Dienstag", "2"], ["Mittwoch","3"],["Donnerstag","4"],["Freitag","5"],["Samstag","6"],["Sonntag","0"]] + end + + # Returns an Array with date-objects to represent the next weekly-tasks + def next_weekly_tasks(number = 8) + # our system starts from 0 (sunday) to 6 (saturday) + # get difference between groups weekday and now + diff = self.weekday - Time.now.wday + if diff >= 0 + # weektask is in current week + nextTask = diff.day.from_now + else + # weektask is in the next week + nextTask = (diff + 7).day.from_now + end + # now generate the Array + nextTasks = Array.new + number.times do + nextTasks << nextTask + nextTask = 1.week.from_now(nextTask) + end + return nextTasks + end + +end diff --git a/app/views/admin/memberships/_edit_members.rhtml b/app/views/admin/memberships/_edit_members.rhtml new file mode 100644 index 00000000..03995762 --- /dev/null +++ b/app/views/admin/memberships/_edit_members.rhtml @@ -0,0 +1,21 @@ +

Mitglieder von <%=h @group.name %>

+

+ Hier kannst Du die Mitglieder der Gruppe verwalten. +

+
+
+

Sind schon Mitglieder

+
+
+ <%=render :partial => 'admin/memberships/members' %> +
+
+
+
+

Sind noch keine Mitglieder

+
+
+ <%= render :partial => 'admin/memberships/non_members' %> + <%= link_to('Person einladen', :controller =>'index', :action => 'invite', :id => @group) if (@current_user.is_member_of(@group) || @current_user.role_admin?) %> +
+
diff --git a/app/views/admin/memberships/_members.rhtml b/app/views/admin/memberships/_members.rhtml new file mode 100644 index 00000000..30866fe8 --- /dev/null +++ b/app/views/admin/memberships/_members.rhtml @@ -0,0 +1,21 @@ +<% if flash[:error] %> +

<%= flash[:error] %>

+ <%= javascript_tag("new Effect.Highlight('flashError', {delay:0.8, duration:1});") -%> +<% end %> + +<% memberships = @group.memberships + if memberships.size != 0 %> + + <% else %> +

<%= @group.name %> hat keine Mitglieder.

+ <% end %> \ No newline at end of file diff --git a/app/views/admin/memberships/_non_members.rhtml b/app/views/admin/memberships/_non_members.rhtml new file mode 100644 index 00000000..882bf8b2 --- /dev/null +++ b/app/views/admin/memberships/_non_members.rhtml @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/app/views/admin/workgroups/_form.html.haml b/app/views/admin/workgroups/_form.html.haml new file mode 100644 index 00000000..3d04bf75 --- /dev/null +++ b/app/views/admin/workgroups/_form.html.haml @@ -0,0 +1,84 @@ +- form_for [:admin, @workgroup] do |@form| + = @form.error_messages + + %div{:style => "float:left;width:55%;"} + %p + = @form.label :name + %br/ + = @form.text_field :name, :size => 20 + %p + = @form.label :description + %br/ + = @form.text_field :description, :size => 40 + + %div{:style => "float:right;width:40%"} + %h3 Gruppe hat Zugriff auf + %table + %tr + %td + = @form.label :role_admin, "Administration" + %td= @form.check_box :role_admin + %tr + %td + = @form.label :role_finance, "Finanzen" + %td= @form.check_box :role_finance + %tr + %td + = @form.label :role_suppliers, "Lieferantenverwaltung" + %td= @form.check_box :role_suppliers + %tr + %td + = @form.label :role_article_meta, "Artikelverwaltung" + %td= @form.check_box :role_article_meta + %tr + %td + = @form.label :role_orders, "Bestellungsverwaltung" + %td= @form.check_box :role_orders + + %div{:style => "clear:both"} + %h3 + Wöchentliche Jobs definieren? + = @form.check_box :weekly_task, {:onclick => "toggleWeeklyTask();"} + %table + %tr + %td + = @form.label :weekday, "Wochentag:" + %td + = @form.select :weekday, Workgroup.weekdays + %tr + %td + = @form.label :task_name, "Dienstname:" + %td= @form.text_field :task_name, :size => 20 + %tr + %td + = @form.label :task_required_users, "Benötigte Verantwortliche:" + %td= @form.text_field :task_required_users, :size => 3 + %tr + %td + = @form.label :task_description, "Beschreibung:" + %td= @form.text_area :task_description + + %br{ :style => "clear:both" } + = submit_tag "Speichern" + | + = link_to "Abbrechen", admin_workgroups_path + +%script{ 'type' => "text/javascript"} + :plain + // \ No newline at end of file diff --git a/app/views/admin/workgroups/_workgroups.html.haml b/app/views/admin/workgroups/_workgroups.html.haml new file mode 100644 index 00000000..cf45827f --- /dev/null +++ b/app/views/admin/workgroups/_workgroups.html.haml @@ -0,0 +1,24 @@ +%p + %table{:style => "width:100%"} + %tr + %td + = pagination_links_remote @workgroups + %td{:style => "text-align:right"} + - if @workgroups.size > 20 + = items_per_page +%table.list + %thead + %tr + %th Name + %th Mitglieder + %th + %tbody + - for workgroup in @workgroups + %tr{:class => cycle('even','odd', :name => 'groups')} + %td= link_to workgroup.name, [:admin, workgroup] + %td= workgroup.users.size + %td + = link_to image_tag('b_users.png', :size => '16x16', :border => "0", :alt => 'Mitlglieder bearbeiten'), memberships_admin_workgroup_path(workgroup) + = link_to(image_tag('b_edit.png', :size => "16x16", :border => "0", :alt => 'Gruppe bearbeiten'), edit_admin_workgroup_path(workgroup)) + = link_to(image_tag('b_drop.png', :size => "16x16", :border => "0", :alt => 'Gruppe löschen'), [:admin, workgroup], | + :confirm => 'Willst du ' + workgroup.name + ' wirklich löschen?', :method => :delete) | \ No newline at end of file diff --git a/app/views/admin/workgroups/edit.html.haml b/app/views/admin/workgroups/edit.html.haml new file mode 100644 index 00000000..833c72c1 --- /dev/null +++ b/app/views/admin/workgroups/edit.html.haml @@ -0,0 +1,4 @@ +- title "Arbeitsgruppe bearbeiten" + +.edit_form{:style => "width:50em"} + = render :partial => 'form' \ No newline at end of file diff --git a/app/views/admin/workgroups/index.html.haml b/app/views/admin/workgroups/index.html.haml new file mode 100644 index 00000000..4fe1d34c --- /dev/null +++ b/app/views/admin/workgroups/index.html.haml @@ -0,0 +1,34 @@ +- title "List workgroups" + +%p + %i + Hier kannst du + = link_to 'neue Arbeitsgruppen', new_admin_workgroup_path + anlegen, Gruppen bearbeiten und löschen. + +%p + Beachte dabei den Unterschied zwischen Gruppe und Bestellgruppe: + Eine + %em= link_to 'Bestellgruppe', '/admin/ordergroups' + hat ein Konto und kann Essen bestellen. In einer Arbeitsgruppe (z.b. 'Soritiergruppe') + koordinieren sich die Mitglieder mittels Aufgaben und Nachrichten. + Nutzer_innen können immer nur einer Bestellgruppe, aber beliebig vielen anderen Gruppen angehören. +.left_column{:style => "width:100%"} + .box_title + %h2 Gruppenübersicht + .column_content + #group_filter + %form{:name=>"sform", :action=>"", :style=>"display:inline;"} + %label{:for => 'workgroup_name'} Suche in Name : + = text_field_tag("query", params['query'], :size => 10 ) + + = observe_field 'query', :frequency => 2, | + :before => "Element.show('loader')", | + :success => "Element.hide('loader')", | + :update => "workgroups", | + :url => admin_workgroups_path, | + :with => 'query', | + :method => :get | + #workgroups + = render :partial => "workgroups" + = link_to 'Neue Arbeits', new_admin_workgroup_path \ No newline at end of file diff --git a/app/views/admin/workgroups/memberships.html.haml b/app/views/admin/workgroups/memberships.html.haml new file mode 100644 index 00000000..68613adc --- /dev/null +++ b/app/views/admin/workgroups/memberships.html.haml @@ -0,0 +1,3 @@ += render :partial => 'admin/memberships/edit_members' +%p{ :style => "clear:both" } + = link_to 'Gruppenübersicht', admin_workgroups_path \ No newline at end of file diff --git a/app/views/admin/workgroups/new.html.haml b/app/views/admin/workgroups/new.html.haml new file mode 100644 index 00000000..d9236cd2 --- /dev/null +++ b/app/views/admin/workgroups/new.html.haml @@ -0,0 +1,4 @@ +- title "Erstelle Arbeitsgruppe" + +.edit_form{:style => "width:50em"} + = render :partial => 'form' \ No newline at end of file diff --git a/app/views/admin/workgroups/show.html.haml b/app/views/admin/workgroups/show.html.haml new file mode 100644 index 00000000..847e5c5e --- /dev/null +++ b/app/views/admin/workgroups/show.html.haml @@ -0,0 +1,42 @@ +- title "Arbeitsgruppe #{@workgroup.name}" +.left_column{:style => "width:45em"} + .box_title + %h2 Übersicht + .column_content + %p + %b Beschreibung: + =h @workgroup.description + %p + %b Gruppe hat Zugriff auf: + - roles = Array.new + - roles << 'Administration' if @workgroup.role_admin? + - roles << 'Finanzen' if @workgroup.role_finance? + - roles << 'Lieferanten' if @workgroup.role_suppliers? + - roles << 'Artikel' if @workgroup.role_article_meta? + - roles << 'Bestellungsverwaltung' if @workgroup.role_orders? + =h roles.join(', ') + %p + - if @workgroup.weekly_task + %b wöchentlicher Job: + =h @workgroup.task_name + am + = weekday(@workgroup.weekday) + - else + kein wöchentlicher Job definiert + + = link_to 'Gruppe bearbeiten', edit_admin_workgroup_path(@workgroup) + | + = link_to 'Löschen', [:admin, @workgroup], :confirm => 'Bist Du sicher?', :method => :delete + | + = link_to 'Nachricht senden', :controller => 'messages', :action => 'group', :id => @workgroup + .box_title + %h2 Mitglieder + .column_content + - if @workgroup.memberships.empty? + %i Diese Gruppe hat derzeit keine Mitglieder + - else + %ul{:style => "list-style-type:decimal;"} + - for membership in @workgroup.memberships + %li= link_to membership.user.nick, [:admin, membership.user] + %p= link_to 'Mitglieder bearbeiten', memberships_admin_workgroup_path(@workgroup) +%p{:style => "clear:both"}= link_to "Gruppenübersicht", admin_workgroups_path \ No newline at end of file diff --git a/app/views/layouts/_main_tabnav.html.erb b/app/views/layouts/_main_tabnav.html.erb index c0131e1a..c6a94c05 100644 --- a/app/views/layouts/_main_tabnav.html.erb +++ b/app/views/layouts/_main_tabnav.html.erb @@ -36,11 +36,11 @@ ] }, { :name => "Administration", :url => "/admin", - :active => ["admin", "admin/users"], + :active => ["admin", "admin/users", "admin/workgroups"], :access? => (u.role_admin?), :subnav => [ { :name => "Users", :url => "/admin/users" }, - { :name => "Groups", :url => "/admin/listGroups" } + { :name => "Workgroups", :url => "/admin/workgroups" } ] } ] diff --git a/app/views/layouts/workgroups.html.erb b/app/views/layouts/workgroups.html.erb new file mode 100644 index 00000000..bf392517 --- /dev/null +++ b/app/views/layouts/workgroups.html.erb @@ -0,0 +1,17 @@ + + + + + + Workgroups: <%= controller.action_name %> + <%= stylesheet_link_tag 'scaffold' %> + + + +

<%= flash[:notice] %>

+ +<%= yield %> + + + diff --git a/config/routes.rb b/config/routes.rb index ed65b5d7..f7701145 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -2,6 +2,9 @@ ActionController::Routing::Routes.draw do |map| map.namespace :admin do |admin| admin.resources :users + admin.resources :workgroups, :member => { :memberships => :get } + admin.connect 'memberships/:action/:id', :controller => 'memberships' + admin.add_member 'add_member', :controller => 'memberships', :action => 'add_member' end map.namespace :finance do |finance| diff --git a/db/migrate/20090113111624_create_workgroups.rb b/db/migrate/20090113111624_create_workgroups.rb new file mode 100644 index 00000000..2b8532ab --- /dev/null +++ b/db/migrate/20090113111624_create_workgroups.rb @@ -0,0 +1,14 @@ +class CreateWorkgroups < ActiveRecord::Migration + def self.up + # Migrate all groups to workgroups + Group.find(:all, :conditions => { :type => "" }).each do |workgroup| + workgroup.update_attribute(:type, "Workgroup") + end + end + + def self.down + Group.find(:all, :conditions => { :type => "Workgroup" }).each do |workgroup| + workgroup.update_attribute(:type, "") + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 8ef6ca61..4f0de832 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -9,7 +9,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20090102155714) do +ActiveRecord::Schema.define(:version => 20090113111624) do create_table "article_categories", :force => true do |t| t.string "name", :default => "", :null => false @@ -71,6 +71,12 @@ ActiveRecord::Schema.define(:version => 20090102155714) do add_index "configurable_settings", ["name"], :name => "index_configurable_settings_on_name" + create_table "deliveries", :force => true do |t| + t.integer "supplier_id" + t.date "delivered_on" + t.datetime "created_at" + end + create_table "financial_transactions", :force => true do |t| t.integer "order_group_id", :default => 0, :null => false t.decimal "amount", :precision => 8, :scale => 2, :default => 0.0, :null => false diff --git a/public/stylesheets/scaffold.css b/public/stylesheets/scaffold.css new file mode 100644 index 00000000..093c2099 --- /dev/null +++ b/public/stylesheets/scaffold.css @@ -0,0 +1,54 @@ +body { background-color: #fff; color: #333; } + +body, p, ol, ul, td { + font-family: verdana, arial, helvetica, sans-serif; + font-size: 13px; + line-height: 18px; +} + +pre { + background-color: #eee; + padding: 10px; + font-size: 11px; +} + +a { color: #000; } +a:visited { color: #666; } +a:hover { color: #fff; background-color:#000; } + +.fieldWithErrors { + padding: 2px; + background-color: red; + display: table; +} + +#errorExplanation { + width: 400px; + border: 2px solid red; + padding: 7px; + padding-bottom: 12px; + margin-bottom: 20px; + background-color: #f0f0f0; +} + +#errorExplanation h2 { + text-align: left; + font-weight: bold; + padding: 5px 5px 5px 15px; + font-size: 12px; + margin: -7px; + background-color: #c00; + color: #fff; +} + +#errorExplanation p { + color: #333; + margin-bottom: 0; + padding: 5px; +} + +#errorExplanation ul li { + font-size: 12px; + list-style: square; +} + diff --git a/test/fixtures/articles.yml b/test/fixtures/articles.yml index 018eb3b7..87760e7e 100644 --- a/test/fixtures/articles.yml +++ b/test/fixtures/articles.yml @@ -1,5 +1,5 @@ # == Schema Information -# Schema version: 20090102171850 +# Schema version: 20090113111624 # # Table name: articles # diff --git a/test/fixtures/suppliers.yml b/test/fixtures/suppliers.yml index 40ecc609..02cceca3 100644 --- a/test/fixtures/suppliers.yml +++ b/test/fixtures/suppliers.yml @@ -1,5 +1,5 @@ # == Schema Information -# Schema version: 20090102171850 +# Schema version: 20090113111624 # # Table name: suppliers # diff --git a/test/fixtures/workgroups.yml b/test/fixtures/workgroups.yml new file mode 100644 index 00000000..5bf02933 --- /dev/null +++ b/test/fixtures/workgroups.yml @@ -0,0 +1,7 @@ +# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html + +# one: +# column: value +# +# two: +# column: value diff --git a/test/functional/admin/groups_controller_test.rb b/test/functional/admin/groups_controller_test.rb new file mode 100644 index 00000000..0c1d1339 --- /dev/null +++ b/test/functional/admin/groups_controller_test.rb @@ -0,0 +1,8 @@ +require 'test_helper' + +class Admin::GroupsControllerTest < ActionController::TestCase + # Replace this with your real tests. + test "the truth" do + assert true + end +end diff --git a/test/functional/admin/memberships_controller_test.rb b/test/functional/admin/memberships_controller_test.rb new file mode 100644 index 00000000..255c7a11 --- /dev/null +++ b/test/functional/admin/memberships_controller_test.rb @@ -0,0 +1,8 @@ +require 'test_helper' + +class Admin::MembershipsControllerTest < ActionController::TestCase + # Replace this with your real tests. + test "the truth" do + assert true + end +end diff --git a/test/functional/workgroups_controller_test.rb b/test/functional/workgroups_controller_test.rb new file mode 100644 index 00000000..70ff4e08 --- /dev/null +++ b/test/functional/workgroups_controller_test.rb @@ -0,0 +1,45 @@ +require 'test_helper' + +class WorkgroupsControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + assert_not_nil assigns(:workgroups) + end + + test "should get new" do + get :new + assert_response :success + end + + test "should create workgroup" do + assert_difference('Workgroup.count') do + post :create, :workgroup => { } + end + + assert_redirected_to workgroup_path(assigns(:workgroup)) + end + + test "should show workgroup" do + get :show, :id => workgroups(:one).id + assert_response :success + end + + test "should get edit" do + get :edit, :id => workgroups(:one).id + assert_response :success + end + + test "should update workgroup" do + put :update, :id => workgroups(:one).id, :workgroup => { } + assert_redirected_to workgroup_path(assigns(:workgroup)) + end + + test "should destroy workgroup" do + assert_difference('Workgroup.count', -1) do + delete :destroy, :id => workgroups(:one).id + end + + assert_redirected_to workgroups_path + end +end diff --git a/test/unit/workgroup_test.rb b/test/unit/workgroup_test.rb new file mode 100644 index 00000000..60c4801d --- /dev/null +++ b/test/unit/workgroup_test.rb @@ -0,0 +1,8 @@ +require 'test_helper' + +class WorkgroupTest < ActiveSupport::TestCase + # Replace this with your real tests. + test "the truth" do + assert true + end +end