bookyt_projects 0.11.1 → 0.11.2
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/activities_controller.rb +2 -0
- data/app/controllers/batch_activities_controller.rb +22 -0
- data/app/models/activity.rb +5 -2
- data/app/models/bookyt_projects/person.rb +6 -0
- data/app/views/activities/_form.html.haml +3 -0
- data/app/views/batch_activities/_form.html.haml +25 -0
- data/app/views/batch_activities/new.html.haml +3 -0
- data/app/views/projects/_list.html.haml +4 -14
- data/app/views/projects/_project.html.haml +7 -0
- data/app/views/timesheets/index.html.haml +5 -5
- data/config/locales/{de.yml → bookyt_projects.de.yml} +8 -0
- data/config/routes.rb +1 -0
- data/lib/bookyt_projects/navigation.rb +2 -2
- data/lib/bookyt_projects/version.rb +1 -1
- metadata +10 -6
@@ -0,0 +1,22 @@
|
|
1
|
+
class BatchActivitiesController < ApplicationController
|
2
|
+
def new
|
3
|
+
# Allow callers specifying defaults
|
4
|
+
@date = params[:date] || Date.today
|
5
|
+
|
6
|
+
# TODO: only employees currently working for tenant
|
7
|
+
people = current_tenant.company.employees
|
8
|
+
|
9
|
+
@activities = people.map{|person|
|
10
|
+
person.activities.build(:project => person.latest_project)
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
def create
|
15
|
+
date = Date.parse(params[:batch_activities][:date])
|
16
|
+
@activites = params[:activities].collect{|activity_params|
|
17
|
+
Activity.create(activity_params.merge(:date => date, :minutes => "0"))
|
18
|
+
}
|
19
|
+
|
20
|
+
redirect_to activities_path(:by_date => date.to_s(:db))
|
21
|
+
end
|
22
|
+
end
|
data/app/models/activity.rb
CHANGED
@@ -5,9 +5,12 @@ class Activity < ActiveRecord::Base
|
|
5
5
|
validates :project, :presence => true, :allow_blank => false
|
6
6
|
validates :person, :presence => true, :allow_blank => false
|
7
7
|
|
8
|
-
|
9
|
-
|
8
|
+
# Scopes
|
9
|
+
scope :by_date, lambda {|value| where(:date => value)}
|
10
|
+
|
10
11
|
# Duration
|
12
|
+
attr_accessor :minutes, :hours
|
13
|
+
|
11
14
|
validates_date :date, :allow_nil => false, :allow_blank => false
|
12
15
|
validates :duration_from, :presence => true, :unless => :hours_minutes
|
13
16
|
validates :duration_to, :presence => true, :unless => :hours_minutes
|
@@ -2,13 +2,16 @@
|
|
2
2
|
= f.inputs do
|
3
3
|
= f.input :project, :as => :combobox
|
4
4
|
= f.input :person, :as => :combobox
|
5
|
+
|
5
6
|
= f.inputs do
|
6
7
|
= f.input :date, :as => :date_field, :required => true
|
7
8
|
= f.input :duration_from, :as => :hour_field
|
8
9
|
= f.input :duration_to, :as => :hour_field
|
9
10
|
= f.input :hours
|
10
11
|
= f.input :minutes
|
12
|
+
|
11
13
|
= f.inputs do
|
12
14
|
= f.input :comment
|
15
|
+
|
13
16
|
= f.buttons do
|
14
17
|
= f.commit_button
|
@@ -0,0 +1,25 @@
|
|
1
|
+
= semantic_form_for :batch_activities, :url => batch_activities_path do |f|
|
2
|
+
= f.inputs do
|
3
|
+
= f.input :date, :as => :date_field, :label => t('attributes.date'), :input_html => {:value => @date}
|
4
|
+
|
5
|
+
= f.inputs do
|
6
|
+
%table{:style => 'width: 100%'}
|
7
|
+
%thead
|
8
|
+
%th= t_attr :person, Activity
|
9
|
+
%th= t_attr :project, Activity
|
10
|
+
%th{:style => 'width: 5em'}= t_attr :duration, Activity
|
11
|
+
%th= t_attr :comment, Activity
|
12
|
+
|
13
|
+
%tbody
|
14
|
+
- for activity in @activities
|
15
|
+
%tr
|
16
|
+
= fields_for 'activities[]', activity do |a|
|
17
|
+
%td
|
18
|
+
= link_to activity.person, activity.person
|
19
|
+
= a.hidden_field :person_id
|
20
|
+
%td= a.select :project_id, Project.all.map{|project| [project.to_s, project.id]}, {:prompt => t_select_prompt(Project)}
|
21
|
+
%td= a.text_field :hours
|
22
|
+
%td= a.text_field :comment
|
23
|
+
|
24
|
+
= f.buttons do
|
25
|
+
= f.commit_button
|
@@ -1,20 +1,10 @@
|
|
1
|
-
- @attributes ||= collection.first.attribute_names - ['id', 'created_at', 'updated_at']
|
2
1
|
%table.list{:class => "#{collection.first.class.to_s.downcase.pluralize} collection"}
|
3
2
|
%thead
|
4
3
|
%tr
|
5
|
-
|
6
|
-
|
4
|
+
%th= t_attr :name
|
5
|
+
%th= t_attr :client
|
6
|
+
%th= t_attr :duration
|
7
7
|
%th.action-links
|
8
8
|
|
9
|
-
- @attributes = @attributes - ['name', 'client_id', 'project_state_id']
|
10
9
|
%tbody
|
11
|
-
|
12
|
-
%tr
|
13
|
-
%td= link_to r.name, r, {'data-href-container' => 'tr'}
|
14
|
-
- @attributes.each do |field|
|
15
|
-
%td= r.send(field) if r.respond_to?(field)
|
16
|
-
%td= r.client
|
17
|
-
%td= r.project_state
|
18
|
-
%td.action-links
|
19
|
-
= list_link_for(:edit, r)
|
20
|
-
= list_link_for(:delete, r)
|
10
|
+
=render collection
|
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
%table.list
|
7
7
|
%tr
|
8
|
-
%th
|
8
|
+
%th= t_attr :date, Activity
|
9
9
|
%th Wochentag
|
10
|
-
%th.number
|
11
|
-
%th.number
|
12
|
-
%th.number
|
13
|
-
%th.number
|
10
|
+
%th.number= t_attr :hours_due, Activity
|
11
|
+
%th.number= t_attr :hours_worked, Activity
|
12
|
+
%th.number= t_attr :overtime, Activity
|
13
|
+
%th.number= t_attr :overall_overtime, Activity
|
14
14
|
|
15
15
|
- overall_overtime = 0
|
16
16
|
- @work_days.each do |day|
|
@@ -5,6 +5,7 @@ de:
|
|
5
5
|
project_state: Projektstatus
|
6
6
|
activity: Aktivität
|
7
7
|
timesheet: Stundenrapport
|
8
|
+
batch_activity: Tagesrapport
|
8
9
|
attributes:
|
9
10
|
project:
|
10
11
|
name: Bezeichnung
|
@@ -30,10 +31,17 @@ de:
|
|
30
31
|
project_id: Projekt
|
31
32
|
comment: Kommentar
|
32
33
|
time: Zeitraum
|
34
|
+
hours_due: Soll-Stunden
|
35
|
+
hours_worked: Arbeitsstunden
|
36
|
+
overtime: Über-/Unterzeit
|
37
|
+
overall_overtime: Saldo
|
33
38
|
|
34
39
|
bookyt:
|
35
40
|
projects:
|
36
41
|
minutes: "%{duration} Minuten"
|
42
|
+
main_navigation:
|
43
|
+
salaries: Löhne
|
44
|
+
projects: Projekte
|
37
45
|
|
38
46
|
# Titles
|
39
47
|
timesheets:
|
data/config/routes.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
module BookytProjects
|
2
2
|
module Navigation
|
3
3
|
def setup_bookyt_projects(navigation)
|
4
|
-
navigation.item :projects,
|
4
|
+
navigation.item :projects, t('bookyt.main_navigation.projects'), projects_path, :if => Proc.new { user_signed_in? } do |projects|
|
5
|
+
projects.item :capture_hours, t('activities.new.title'), new_batch_activity_path
|
5
6
|
projects.item :project_index, t_title(:index, Project), projects_path, :highlights_on => /\/(projects|activities)($|\/[0-9]*($|\/.*))/
|
6
7
|
projects.item :new_project, t_title(:new, Project), new_project_path
|
7
8
|
projects.item :project_states, t_model(ProjectState), project_states_path, :highlights_on => /\/project_states($|\/([0-9]*|new)($|\/.*))/
|
8
9
|
end
|
9
|
-
navigation.item :capture_hours, t('activities.new.title'), new_activity_path, :if => Proc.new { user_signed_in? }
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bookyt_projects
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 55
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 11
|
9
|
-
-
|
10
|
-
version: 0.11.
|
9
|
+
- 2
|
10
|
+
version: 0.11.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Roman Simecek (CyT)
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date:
|
19
|
+
date: 2012-01-13 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: rails
|
@@ -104,6 +104,7 @@ extra_rdoc_files:
|
|
104
104
|
files:
|
105
105
|
- app/assets/stylesheets/bookyt_projects.sass
|
106
106
|
- app/controllers/activities_controller.rb
|
107
|
+
- app/controllers/batch_activities_controller.rb
|
107
108
|
- app/controllers/project_states_controller.rb
|
108
109
|
- app/controllers/projects_controller.rb
|
109
110
|
- app/controllers/timesheets_controller.rb
|
@@ -115,14 +116,17 @@ files:
|
|
115
116
|
- app/views/activities/_activity.html.haml
|
116
117
|
- app/views/activities/_form.html.haml
|
117
118
|
- app/views/activities/_list.html.haml
|
119
|
+
- app/views/batch_activities/_form.html.haml
|
120
|
+
- app/views/batch_activities/new.html.haml
|
118
121
|
- app/views/project_states/_form.html.haml
|
119
122
|
- app/views/projects/_form.html.haml
|
120
123
|
- app/views/projects/_list.html.haml
|
124
|
+
- app/views/projects/_project.html.haml
|
121
125
|
- app/views/projects/_show.html.haml
|
122
126
|
- app/views/timesheets/index.html.haml
|
123
127
|
- config/application.rb
|
124
128
|
- config/boot.rb
|
125
|
-
- config/locales/de.yml
|
129
|
+
- config/locales/bookyt_projects.de.yml
|
126
130
|
- config/routes.rb
|
127
131
|
- db/migrate/20110909075128_create_project_states.rb
|
128
132
|
- db/migrate/20110909075220_create_projects.rb
|
@@ -164,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
168
|
requirements: []
|
165
169
|
|
166
170
|
rubyforge_project:
|
167
|
-
rubygems_version: 1.8.
|
171
|
+
rubygems_version: 1.8.12
|
168
172
|
signing_key:
|
169
173
|
specification_version: 3
|
170
174
|
summary: Project management plugin for bookyt
|