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.
- data/.gitignore +10 -0
- data/Gemfile +5 -0
- data/README.rdoc +3 -0
- data/Rakefile +26 -0
- data/app/assets/javascripts/0_init.js +4 -0
- data/app/assets/javascripts/events.js.coffee +66 -0
- data/app/assets/javascripts/social_stream-events.js +1 -0
- data/app/assets/stylesheets/events.css.scss +66 -0
- data/app/assets/stylesheets/social_stream-events.css +3 -0
- data/app/controllers/events_controller.rb +40 -0
- data/app/controllers/rooms_controller.rb +7 -0
- data/app/helpers/events_helper.rb +16 -0
- data/app/models/event.rb +53 -0
- data/app/models/room.rb +8 -0
- data/app/views/events/_calendar_month.erb +1 -0
- data/app/views/events/_event.html.erb +1 -0
- data/app/views/events/_new.html.erb +40 -0
- data/app/views/events/_sidebar_calendar.html.erb +34 -0
- data/app/views/events/create.js.erb +21 -0
- data/app/views/events/destroy.js.erb +1 -0
- data/app/views/events/index.html.erb +99 -0
- data/app/views/rooms/_form.html.erb +31 -0
- data/app/views/rooms/_index.html.erb +10 -0
- data/app/views/rooms/_settings.html.erb +23 -0
- data/app/views/rooms/create.js.erb +7 -0
- data/app/views/rooms/destroy.js.erb +1 -0
- data/config/locales/en.yml +35 -0
- data/config/locales/es.yml +35 -0
- data/config/routes.rb +3 -0
- data/db/migrate/20111101193523_create_events.rb +13 -0
- data/db/migrate/20111120104349_create_rooms.rb +26 -0
- data/db/migrate/20111204155637_add_scheduler.rb +33 -0
- data/db/migrate/20111218203314_change_scheduler.rb +11 -0
- data/lib/generators/social_stream/events/install_generator.rb +24 -0
- data/lib/social_stream-events.rb +27 -0
- data/lib/social_stream/events/ability.rb +13 -0
- data/lib/social_stream/events/engine.rb +29 -0
- data/lib/social_stream/events/models/actor.rb +13 -0
- data/lib/social_stream/events/version.rb +5 -0
- data/lib/social_stream/migrations/events.rb +8 -0
- data/lib/social_stream/toolbar_config/events.rb +22 -0
- data/lib/social_stream/views/settings/events.rb +18 -0
- data/lib/social_stream/views/sidebar/events.rb +15 -0
- data/social_stream-events.gemspec +24 -0
- data/vendor/assets/images/boxy-ne.png +0 -0
- data/vendor/assets/images/boxy-nw.png +0 -0
- data/vendor/assets/images/boxy-se.png +0 -0
- data/vendor/assets/images/boxy-sw.png +0 -0
- data/vendor/assets/javascripts/fullcalendar.js +5210 -0
- data/vendor/assets/javascripts/gcal.js +112 -0
- data/vendor/assets/javascripts/jquery.boxy.js +570 -0
- data/vendor/assets/javascripts/sprintf.js +183 -0
- data/vendor/assets/stylesheets/boxy.css +49 -0
- data/vendor/assets/stylesheets/fullcalendar.css +618 -0
- data/vendor/assets/stylesheets/fullcalendar.print.css +61 -0
- 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"
|
data/config/routes.rb
ADDED
@@ -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,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,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
|