vkhater-social_stream-events 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. data/.gitignore +10 -0
  2. data/Gemfile +5 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +26 -0
  5. data/app/assets/javascripts/0_init.js +4 -0
  6. data/app/assets/javascripts/events.js.coffee +66 -0
  7. data/app/assets/javascripts/social_stream-events.js +1 -0
  8. data/app/assets/stylesheets/events.css.scss +66 -0
  9. data/app/assets/stylesheets/social_stream-events.css +3 -0
  10. data/app/controllers/events_controller.rb +40 -0
  11. data/app/controllers/rooms_controller.rb +7 -0
  12. data/app/helpers/events_helper.rb +16 -0
  13. data/app/models/event.rb +53 -0
  14. data/app/models/room.rb +8 -0
  15. data/app/views/events/_calendar_month.erb +1 -0
  16. data/app/views/events/_event.html.erb +1 -0
  17. data/app/views/events/_new.html.erb +40 -0
  18. data/app/views/events/_sidebar_calendar.html.erb +34 -0
  19. data/app/views/events/create.js.erb +21 -0
  20. data/app/views/events/destroy.js.erb +1 -0
  21. data/app/views/events/index.html.erb +99 -0
  22. data/app/views/rooms/_form.html.erb +31 -0
  23. data/app/views/rooms/_index.html.erb +10 -0
  24. data/app/views/rooms/_settings.html.erb +23 -0
  25. data/app/views/rooms/create.js.erb +7 -0
  26. data/app/views/rooms/destroy.js.erb +1 -0
  27. data/config/locales/en.yml +35 -0
  28. data/config/locales/es.yml +35 -0
  29. data/config/routes.rb +3 -0
  30. data/db/migrate/20111101193523_create_events.rb +13 -0
  31. data/db/migrate/20111120104349_create_rooms.rb +26 -0
  32. data/db/migrate/20111204155637_add_scheduler.rb +33 -0
  33. data/db/migrate/20111218203314_change_scheduler.rb +11 -0
  34. data/lib/generators/social_stream/events/install_generator.rb +24 -0
  35. data/lib/social_stream-events.rb +27 -0
  36. data/lib/social_stream/events/ability.rb +13 -0
  37. data/lib/social_stream/events/engine.rb +29 -0
  38. data/lib/social_stream/events/models/actor.rb +13 -0
  39. data/lib/social_stream/events/version.rb +5 -0
  40. data/lib/social_stream/migrations/events.rb +8 -0
  41. data/lib/social_stream/toolbar_config/events.rb +22 -0
  42. data/lib/social_stream/views/settings/events.rb +18 -0
  43. data/lib/social_stream/views/sidebar/events.rb +15 -0
  44. data/social_stream-events.gemspec +24 -0
  45. data/vendor/assets/images/boxy-ne.png +0 -0
  46. data/vendor/assets/images/boxy-nw.png +0 -0
  47. data/vendor/assets/images/boxy-se.png +0 -0
  48. data/vendor/assets/images/boxy-sw.png +0 -0
  49. data/vendor/assets/javascripts/fullcalendar.js +5210 -0
  50. data/vendor/assets/javascripts/gcal.js +112 -0
  51. data/vendor/assets/javascripts/jquery.boxy.js +570 -0
  52. data/vendor/assets/javascripts/sprintf.js +183 -0
  53. data/vendor/assets/stylesheets/boxy.css +49 -0
  54. data/vendor/assets/stylesheets/fullcalendar.css +618 -0
  55. data/vendor/assets/stylesheets/fullcalendar.print.css +61 -0
  56. metadata +150 -0
@@ -0,0 +1,31 @@
1
+ <%= form_for @room || Room.new(:actor => current_subject.actor), :remote => true do |f| %>
2
+ <%= f.hidden_field :actor_id %>
3
+
4
+ <% if f.object.errors.any? %>
5
+ <div id="error_explanation">
6
+ <h2><%= pluralize(f.object.errors.count, "error") %> evitaron que se guardara este espacio:</h2>
7
+
8
+ <ul>
9
+ <% f.object.errors.full_messages.each do |msg| %>
10
+ <li><%= msg %></li>
11
+ <% end %>
12
+ </ul>
13
+ </div>
14
+ <% end %>
15
+
16
+ <div class="row">
17
+ <div class="label">
18
+ <%= f.text_field :name %>
19
+ </div>
20
+
21
+ <div class="field">
22
+ <%= f.submit %>
23
+ </div>
24
+ </div>
25
+ <% end %>
26
+
27
+ <%= javascript_tag do %>
28
+ $(function(){
29
+ $('#room_name').Watermark("<%= escape_javascript t('room.watermark.name') %>");
30
+ });
31
+ <% end %>
@@ -0,0 +1,10 @@
1
+ <div id="rooms">
2
+ <% current_subject.rooms.each do |room| %>
3
+ <div class="row">
4
+ <div class="label"><%= room.name %></div>
5
+ <div class="field">
6
+ <%= link_to image_tag("btn/delete.png", :class => "menu_icon", :title => t('room.delete')), room, :class => "room_delete_link", :method => :delete, :confirm => t('room.confirm_delete'), :remote => true %>
7
+ </div>
8
+ </div>
9
+ <% end %>
10
+ </div>
@@ -0,0 +1,23 @@
1
+ <div class="block" id="room_settings">
2
+ <div class="header">
3
+ <div class="header_text">
4
+ <%= t 'room.settings.title' %>
5
+ </div>
6
+ <div class="header_icon_right">
7
+ <%= link_to image_tag('btn/edit.png'), "javascript:showSettings(\"room_settings\");" %>
8
+ </div>
9
+ </div>
10
+ <div id="room_settings_briefing" class="settings_briefing content">
11
+ <div class="form_row">
12
+ <%= t 'room.settings.description' %>
13
+ </div>
14
+ </div>
15
+ <div class="content settings_content" id="room_settings_content" style="display:none;">
16
+ <div class="sub-block">
17
+ <%= render :partial => 'rooms/index' %>
18
+ </div>
19
+ <div class="sub-block">
20
+ <%= render :partial => 'rooms/form' %>
21
+ </div>
22
+ </div>
23
+ </div>
@@ -0,0 +1,7 @@
1
+ <% if @room.valid? %>
2
+ $('#rooms').replaceWith("<%= escape_javascript render(:partial => 'index') %>");
3
+ $('#room_name').val("");
4
+ $('#room_name').Watermark("<%= escape_javascript t('room.watermark.name') %>");
5
+ <% else %>
6
+ $('#new_room').replaceWith("<%= escape_javascript render(:partial => 'form') %>");
7
+ <% end %>
@@ -0,0 +1 @@
1
+ $('#rooms').replaceWith("<%= escape_javascript render(:partial => 'index') %>");
@@ -0,0 +1,35 @@
1
+ en:
2
+ activerecord:
3
+ attributes:
4
+ event:
5
+ title: "Title"
6
+ room: "Room"
7
+ frequency: "Frequency"
8
+ room:
9
+ name: "Name"
10
+ errors:
11
+ models:
12
+ room:
13
+ attributes:
14
+ name:
15
+ taken: "is taken"
16
+ models:
17
+ event: "event"
18
+ room: "room"
19
+ boxy:
20
+ close_text: "[close]"
21
+ event:
22
+ confirm_delete: "Delete event?"
23
+ new:
24
+ title: "New event"
25
+ one: "an event"
26
+ title: "Calendar"
27
+ wall_post: "Published an event: %{title}"
28
+ room:
29
+ confirm_delete: "Delete room?"
30
+ delete: "Delete"
31
+ settings:
32
+ title: "Rooms"
33
+ description: "Rooms available for event celebration"
34
+ watermark:
35
+ name: "New room"
@@ -0,0 +1,35 @@
1
+ es:
2
+ activerecord:
3
+ attributes:
4
+ event:
5
+ title: "Título"
6
+ room: "Espacio"
7
+ frequency: "Repetición"
8
+ room:
9
+ name: "Nombre"
10
+ errors:
11
+ models:
12
+ room:
13
+ attributes:
14
+ name:
15
+ taken: "está repetido"
16
+ models:
17
+ event: "evento"
18
+ room: "espacio"
19
+ boxy:
20
+ close_text: "[cerrar]"
21
+ event:
22
+ confirm_delete: "¿Borrar evento?"
23
+ new:
24
+ title: "Nuevo evento"
25
+ one: "un evento"
26
+ title: "Calendario"
27
+ wall_post: "Publicó un evento: %{title}"
28
+ room:
29
+ confirm_delete: "¿Borrar espacio?"
30
+ delete: "Borrar"
31
+ settings:
32
+ title: "Espacios"
33
+ description: "Salas disponibles para la realización de eventos"
34
+ watermark:
35
+ name: "Nuevo espacio"
@@ -0,0 +1,3 @@
1
+ Rails.application.routes.draw do
2
+ resources :rooms
3
+ end
@@ -0,0 +1,13 @@
1
+ class CreateEvents < ActiveRecord::Migration
2
+ def change
3
+ create_table :events do |t|
4
+ t.integer :activity_object_id
5
+ t.string :title
6
+ t.datetime :start_at
7
+ t.datetime :end_at
8
+ t.boolean :all_day
9
+
10
+ t.timestamps
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ class CreateRooms < ActiveRecord::Migration
2
+ def up
3
+ create_table :rooms do |t|
4
+ t.references :actor
5
+ t.string :name
6
+
7
+ t.timestamps
8
+ end
9
+
10
+ change_table :events do |t|
11
+ t.references :room
12
+ end
13
+
14
+ add_index :rooms, :actor_id
15
+ add_index :events, :room_id
16
+ add_foreign_key :rooms, :actors, :name => "index_rooms_on_actor_id"
17
+ add_foreign_key :events, :rooms, :name => "index_events_on_room_id"
18
+ end
19
+
20
+ def down
21
+ remove_foreign_key :rooms, :name => "index_rooms_on_actor_id"
22
+ remove_foreign_key :events, :name => "index_events_on_room_id"
23
+
24
+ drop_table :rooms
25
+ end
26
+ end
@@ -0,0 +1,33 @@
1
+ class AddScheduler < ActiveRecord::Migration
2
+
3
+ class EventSchedulerMigration < ActiveRecord::Base
4
+ self.record_timestamps = false
5
+ set_table_name "events"
6
+ end
7
+
8
+ def up
9
+ change_table :events do |t|
10
+ t.date :start_date
11
+ t.date :end_date
12
+ t.integer :frequency, :default => 0
13
+ t.integer :interval
14
+ t.integer :interval_flag, :default => 0
15
+ end
16
+
17
+ EventSchedulerMigration.all.each do |e|
18
+ e.start_date = e.start_at
19
+ e.end_date = e.end_at
20
+ e.save!
21
+ end
22
+ end
23
+
24
+ def down
25
+ change_table :events do |t|
26
+ t.remove :start_date
27
+ t.remove :end_date
28
+ t.remove :frequency
29
+ t.remove :interval
30
+ t.remove :interval_flag
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,11 @@
1
+ class ChangeScheduler < ActiveRecord::Migration
2
+ def up
3
+ rename_column :events, :interval_flag, :days
4
+ add_column :events, :interval_flag, :integer, :default => 0
5
+ end
6
+
7
+ def down
8
+ rename_column :events, :days, :interval_flag
9
+ remove_column :events, :interval_flag
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ class SocialStream::Events::InstallGenerator < Rails::Generators::Base
2
+ include Rails::Generators::Migration
3
+
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ def create_migration_file
7
+ require 'rake'
8
+ Rails.application.load_tasks
9
+ Rake::Task['railties:install:migrations'].reenable
10
+ Rake::Task['social_stream_events_engine:install:migrations'].invoke
11
+ end
12
+
13
+ def require_javascripts
14
+ inject_into_file 'app/assets/javascripts/application.js',
15
+ "//= require social_stream-events\n",
16
+ :before => '//= require_tree .'
17
+ end
18
+
19
+ def require_stylesheets
20
+ inject_into_file 'app/assets/stylesheets/application.css',
21
+ " *= require social_stream-events\n",
22
+ :before => ' *= require_tree .'
23
+ end
24
+ end
@@ -0,0 +1,27 @@
1
+ require 'social_stream-base'
2
+
3
+ require 'rails-scheduler'
4
+
5
+ module SocialStream
6
+ module Views
7
+ module Settings
8
+ autoload :Events, 'social_stream/views/settings/events'
9
+ end
10
+
11
+ module Sidebar
12
+ autoload :Events, 'social_stream/views/sidebar/events'
13
+ end
14
+ end
15
+
16
+ module Events
17
+ autoload :Ability, 'social_stream/events/ability'
18
+
19
+ module Models
20
+ autoload :Actor, 'social_stream/events/models/actor'
21
+ end
22
+
23
+ SocialStream.objects.push(:event) unless SocialStream.objects.include?(:event)
24
+ end
25
+ end
26
+
27
+ require 'social_stream/events/engine'
@@ -0,0 +1,13 @@
1
+ module SocialStream
2
+ module Events
3
+ module Ability
4
+ def initialize(subject)
5
+ super
6
+
7
+ can [:create, :destroy], Room do |r|
8
+ r.actor_id == Actor.normalize_id(subject)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,29 @@
1
+ module SocialStream
2
+ module Events
3
+ class Engine < Rails::Engine
4
+ initializer "social_stream-events.ability" do
5
+ SocialStream::Ability.class_eval do
6
+ include SocialStream::Events::Ability
7
+ end
8
+ end
9
+
10
+ initializer "social_stream-events.actor" do
11
+ ActiveSupport.on_load(:actor) do
12
+ include SocialStream::Events::Models::Actor
13
+ end
14
+ end
15
+
16
+ initializer "social_stream-events.views.settings" do
17
+ SocialStream::Views::Settings.module_eval do
18
+ include SocialStream::Views::Settings::Events
19
+ end
20
+ end
21
+
22
+ initializer "social_stream-events.views.sidebar" do
23
+ SocialStream::Views::Sidebar.module_eval do
24
+ include SocialStream::Views::Sidebar::Events
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,13 @@
1
+ module SocialStream
2
+ module Events
3
+ module Models
4
+ module Actor
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ has_many :rooms
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ module SocialStream
2
+ module Events
3
+ VERSION = "0.3.2".freeze
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ require 'social_stream/migrations/components'
2
+
3
+ module SocialStream
4
+ module Migrations
5
+ class Events < Components
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,22 @@
1
+ module SocialStream
2
+ module ToolbarConfig
3
+ module Events
4
+ def profile_toolbar_items(subject = current_subject)
5
+ items = super
6
+
7
+ if SocialStream.activity_forms.include?(:event) &&
8
+ subject.is_a?(Event) &&
9
+ subject.agenda.present?
10
+
11
+ items.insert(1, {
12
+ :key => :outline_info,
13
+ :name => image_tag("btn/btn_outline.png")+t('menu.outline'),
14
+ :url => agenda_path(subject)
15
+ })
16
+ end
17
+
18
+ items
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ module SocialStream
2
+ module Views
3
+ module Settings
4
+ module Events
5
+ def settings_items
6
+ super.tap do |items|
7
+ if current_subject.is_a?(Group)
8
+ items.insert_before 'notifications', {
9
+ :key => 'rooms',
10
+ :html => render(:partial => 'rooms/settings')
11
+ }
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ module SocialStream
2
+ module Views
3
+ module Sidebar
4
+ module Events
5
+ def sidebar_items type
6
+ super.tap do |items|
7
+ items.unshift :key => 'calendar',
8
+ :html => render(:partial => 'events/sidebar_calendar')
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+
@@ -0,0 +1,24 @@
1
+ # encoding: UTF-8
2
+ require File.join(File.dirname(__FILE__), 'lib', 'social_stream', 'events', 'version')
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "vkhater-social_stream-events"
6
+ s.version = SocialStream::Events::VERSION.dup
7
+ s.authors = ["Antonio Tapiador", "GING - DIT - UPM"]
8
+ s.summary = "Scheduled events support for Social Stream, the core for building social network websites"
9
+ s.description = "Social Stream is a Ruby on Rails engine providing your application with social networking features and activity streams.\n\nThis gem allow you to add events as a new social stream activity, with a calendar-supported management"
10
+ s.email = "social-stream@dit.upm.es"
11
+ s.homepage = "http://github.com/ging/social_stream-events"
12
+ s.files = `git ls-files`.split("\n")
13
+
14
+ # Gem dependencies
15
+ s.add_runtime_dependency('vkhater-social_stream-base', '~> 0.11.2')
16
+ s.add_runtime_dependency('rails-scheduler', '~> 0.0.4')
17
+ s.add_runtime_dependency('coffee-rails', '> 3.1.0')
18
+
19
+ # Development Gem dependencies
20
+ s.add_development_dependency('sqlite3-ruby')
21
+ if RUBY_VERSION < '1.9'
22
+ s.add_development_dependency('ruby-debug', '~> 0.10.3')
23
+ end
24
+ end