aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeiko Bernloehr <Heiko.Bernloehr@FreeIT.de>2013-08-13 23:18:50 +0200
committerHeiko Bernloehr <Heiko.Bernloehr@FreeIT.de>2014-05-07 02:58:28 +0200
commitce1773461b71a40afb406f4148b32aad11b52a57 (patch)
tree88f779715658a74c2ac8bb8972e7879c5b10e1b3
parent561be6974dc030309a2165726c5b4ff3f0afba2d (diff)
downloadecs2-ce1773461b71a40afb406f4148b32aad11b52a57.tar.gz
ecs2-ce1773461b71a40afb406f4148b32aad11b52a57.zip
Turn on/off events by participants.
Up to now events could be turned on and off by resources. To turn on events you still have to do it by resource but have additionally the possibility to control it by participant. Only if both switches are on, the participant will get events generated through the resource.
-rw-r--r--app/models/event.rb5
-rw-r--r--app/models/participant.rb3
-rw-r--r--app/models/ressource.rb4
-rw-r--r--app/views/admin/participants/_form.html.erb3
-rw-r--r--app/views/admin/participants/list.html.haml2
-rw-r--r--app/views/admin/participants/show.html.haml6
-rw-r--r--config/ecs_config.yml1
-rw-r--r--config/initializers/ecs_00.rb1
-rw-r--r--db/migrate/20130813144307_add_events_to_participant.rb13
-rw-r--r--db/schema.rb3
10 files changed, 38 insertions, 3 deletions
diff --git a/app/models/event.rb b/app/models/event.rb
index ad352d2..4885f8f 100644
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -40,9 +40,10 @@ private
def self.make(options)
options.assert_valid_keys(:event_type_name, :membership_message, :participant, :message)
message = options[:membership_message] ? options[:membership_message].message : options[:message]
- return unless message.ressource.events
+ participant= options[:membership_message] ? options[:membership_message].membership.participant : options[:participant]
+ return if not (message.ressource.events? and participant.events?)
event = Event.new
- event.participant_id = options[:membership_message] ? options[:membership_message].membership.participant.id : options[:participant].id
+ event.participant_id = participant.id
event.message_id = message.id
case options[:event_type_name]
when "created"
diff --git a/app/models/participant.rb b/app/models/participant.rb
index c9f6746..3e7d924 100644
--- a/app/models/participant.rb
+++ b/app/models/participant.rb
@@ -59,6 +59,9 @@ class Participant < ActiveRecord::Base
not Membership.receiver(id, message.id).empty?
end
+ def events?
+ self.events_.blank? ? false : true
+ end
def self.generate_anonymous_participant
cookie = Digest::SHA1.hexdigest('something secret'+Time.now.to_s+rand.to_s)
diff --git a/app/models/ressource.rb b/app/models/ressource.rb
index 1aba41a..0a741dd 100644
--- a/app/models/ressource.rb
+++ b/app/models/ressource.rb
@@ -36,6 +36,10 @@ class Ressource < ActiveRecord::Base
return r
end
+ def events?
+ self.events.blank? ? false : true
+ end
+
private
def rebuild_routes
diff --git a/app/views/admin/participants/_form.html.erb b/app/views/admin/participants/_form.html.erb
index 81aaa08..13e920d 100644
--- a/app/views/admin/participants/_form.html.erb
+++ b/app/views/admin/participants/_form.html.erb
@@ -52,6 +52,9 @@ License along with ECS. If not, see <http://www.gnu.org/licenses/>.
<p><label for="participant_community_selfrouting" class="box2 table-resource-label">Community Selfrouting:</label>
<%= form.check_box :community_selfrouting %></p>
+<p><label for="participant_events_" class="box2 table-resource-label">Events:</label>
+<%= form.check_box :events_ %></p>
+
<p>
<div class="formular-input-width">
<div class="table-border">
diff --git a/app/views/admin/participants/list.html.haml b/app/views/admin/participants/list.html.haml
index 0366bbb..ea294e1 100644
--- a/app/views/admin/participants/list.html.haml
+++ b/app/views/admin/participants/list.html.haml
@@ -33,6 +33,7 @@
%th.box2 &uarr; Name:
%th.box2 Description (optional):
%th.box2 Self-<br/>routing:
+ %th.box2 Events:
%th.box2(align="center") Operations:
%tr
@@ -48,6 +49,7 @@
%td= participant.name
%td= truncate(participant.description, :length => 80)
%td.center= check_box_tag "participant[community_selfrouting]",1,participant.community_selfrouting, :disabled => true
+ %td.center= check_box_tag "participant[events_]",1,participant.events_, :disabled => true
%td
= link_to 'Show', admin_participant_url(:id => participant)
= link_to 'Edit', edit_admin_participant_url(:id => participant)
diff --git a/app/views/admin/participants/show.html.haml b/app/views/admin/participants/show.html.haml
index c81b93b..d7b4845 100644
--- a/app/views/admin/participants/show.html.haml
+++ b/app/views/admin/participants/show.html.haml
@@ -47,6 +47,12 @@
// = check_box_tag "participant[community_selfrouting]",1,@participant.community_selfrouting, :disabled => true
= @participant.community_selfrouting.to_s
+.small-skip
+ %span.box5
+ %label.box4.table-resource-label Events:
+ // = check_box_tag "participant[community_selfrouting]",1,@participant.community_selfrouting, :disabled => true
+ = @participant.events?.to_s
+
- unless @participant.description.blank?
%p
.formular-input-width.table-border
diff --git a/config/ecs_config.yml b/config/ecs_config.yml
index 2916b66..b3af8fe 100644
--- a/config/ecs_config.yml
+++ b/config/ecs_config.yml
@@ -1,3 +1,4 @@
participants:
allow_anonymous: false
+ allow_events: true # for database migration
diff --git a/config/initializers/ecs_00.rb b/config/initializers/ecs_00.rb
index baca196..6aa5db3 100644
--- a/config/initializers/ecs_00.rb
+++ b/config/initializers/ecs_00.rb
@@ -36,3 +36,4 @@ rescue Exception
end
ECS_CONFIG["participants"]["allow_anonymous"] = false unless defined? ECS_CONFIG["participants"]["allow_anonymous"]
+ECS_CONFIG["participants"]["allow_events"] = true unless defined? ECS_CONFIG["participants"]["allow_events"]
diff --git a/db/migrate/20130813144307_add_events_to_participant.rb b/db/migrate/20130813144307_add_events_to_participant.rb
new file mode 100644
index 0000000..a1dd85f
--- /dev/null
+++ b/db/migrate/20130813144307_add_events_to_participant.rb
@@ -0,0 +1,13 @@
+class AddEventsToParticipant < ActiveRecord::Migration
+ def self.up
+ add_column :participants, :events_, :boolean, :default => true
+ Participant.all.each do |p|
+ p.events_= ECS_CONFIG["participants"]["allow_events"]
+ p.save!
+ end
+ end
+
+ def self.down
+ remove_column :participants, :events_
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index a8d2fe1..74f16be 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 => 20110303145153) do
+ActiveRecord::Schema.define(:version => 20130813144307) do
create_table "auths", :force => true do |t|
t.string "one_touch_hash"
@@ -99,6 +99,7 @@ ActiveRecord::Schema.define(:version => 20110303145153) do
t.datetime "created_at"
t.datetime "updated_at"
t.boolean "community_selfrouting", :default => false
+ t.boolean "events_", :default => true
end
create_table "ressources", :force => true do |t|