aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md8
-rw-r--r--app/controllers/inboxes/base_controller.rb4
-rw-r--r--app/controllers/inboxes/discussions_controller.rb16
-rw-r--r--app/controllers/inboxes/messages_controller.rb6
-rw-r--r--app/controllers/inboxes/speakers_controller.rb4
-rw-r--r--app/models/discussion.rb4
-rw-r--r--app/models/inboxes/ability.rb6
-rw-r--r--app/models/message.rb12
-rw-r--r--app/models/speaker.rb10
-rw-r--r--app/views/inboxes/discussions/_form.html.haml2
-rw-r--r--app/views/inboxes/discussions/index.html.haml2
-rw-r--r--app/views/inboxes/discussions/show.html.haml6
-rw-r--r--config/routes.rb4
-rw-r--r--lib/generators/inboxes/install_generator.rb4
-rw-r--r--lib/generators/inboxes/templates/install.rb6
-rw-r--r--lib/generators/inboxes/views_generator.rb2
-rw-r--r--lib/inboxes.rb8
-rw-r--r--lib/inboxes/ability.rb6
-rw-r--r--lib/inboxes/active_record_extension.rb2
-rw-r--r--lib/inboxes/engine.rb2
-rw-r--r--lib/inboxes/railtie.rb4
21 files changed, 59 insertions, 59 deletions
diff --git a/README.md b/README.md
index 902c002..a2c1604 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@ Remember that unfortunately, Inboxes reserve 3 resources names: Discussion, Mess
1. Add `gem "inboxes", "~> 0.1.2"` to the `Gemfile` and run `bundle install`
2. Execute `rails generate inboxes:install`. This command will generate migration for messaging system. Don't forget to run migrations: `rake db:migrate`
-3. Add `inboxes` to your User model like [here](https://gist.github.com/1330080)
+3. Add `has_inboxes` to your User model like [here](https://gist.github.com/1330080)
4. Now Inboxes are ready to use. Open `http://yoursite.dev/discussions` to see the list of discussions. You can start new one.
Default Inboxes views are ugly, so you can copy into your app and make anything with them: `rails generate inboxes:views`
@@ -38,9 +38,9 @@ You can watch the demo of integration [on YouTube](http://youtu.be/c12gey9DvyU)
2. Create `messaging.js` in `app/assets/javascripts/` with this line: `//= require inboxes/faye`
3. Copy or replace 2 views from Inboxes example app to your application: [app/views/inboxes/messages/_form](https://github.com/kirs/inboxes-app/blob/master/app/views/inboxes/messages/_form.html.haml) and [app/views/inboxes/messages/create](https://github.com/kirs/inboxes-app/blob/master/app/views/inboxes/messages/create.js.erb)
-
+
4. Add config parameters to your application config (last 2 are not necessary):
-
+
```ruby
config.inboxes.faye_enabled = true
config.inboxes.faye_host = "inboxes-app.dev" # localhost by default
@@ -67,4 +67,4 @@ You can read more about Faye on it's [official page](http://faye.jcoglan.com/).
- [Alexander Brodyanoj](https://github.com/dom1nga)
- [Dmitriy Kiriyenko](https://github.com/dmitriy-kiriyenko)
-##Feel free for pull requests! \ No newline at end of file
+##Feel free for pull requests!
diff --git a/app/controllers/inboxes/base_controller.rb b/app/controllers/inboxes/base_controller.rb
index 680e38c..f1e77b1 100644
--- a/app/controllers/inboxes/base_controller.rb
+++ b/app/controllers/inboxes/base_controller.rb
@@ -1,10 +1,10 @@
class Inboxes::BaseController < ApplicationController
private
-
+
def init_discussion
@discussion = Discussion.find(params[:discussion_id])
end
-
+
# Needs to be overriden so that we use Spree's Ability rather than anyone else's.
def current_ability
# raise "Loading Ability"
diff --git a/app/controllers/inboxes/discussions_controller.rb b/app/controllers/inboxes/discussions_controller.rb
index c03a062..04a8edd 100644
--- a/app/controllers/inboxes/discussions_controller.rb
+++ b/app/controllers/inboxes/discussions_controller.rb
@@ -3,7 +3,7 @@ class Inboxes::DiscussionsController < Inboxes::BaseController
# before_filter :authenticate_user!
# before_filter :init_and_check_permissions, :only => :show
before_filter :load_and_check_discussion_recipient, :only => [:create, :new]
-
+
def index
@discussions = current_user.discussions
end
@@ -21,37 +21,37 @@ class Inboxes::DiscussionsController < Inboxes::BaseController
# @discussion = Discussion.new
@discussion.messages.build
end
-
+
# POST /discussions
# POST /discussions.json
def create
# @discussion = Discussion.new(params[:discussion])
@discussion.add_recipient_token current_user.id
-
+
@discussion.messages.each do |m|
m.discussion = @discussion
m.user = current_user
end
-
+
if @discussion.save
redirect_to @discussion, :notice => t("inboxes.discussions.started")
else
render :action => "new"
end
end
-
+
private
-
+
# def init_and_check_permissions
# @discussion = Discussion.includes(:messages, :speakers).find(params[:id])
# redirect_to discussions_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user)
# end
-
+
def load_and_check_discussion_recipient
# initializing model for new and create actions
@discussion = Discussion.new(params[:discussion].presence || {})
# @discussion.recipient_tokens = params[:recipients] if params[:recipients] # pre-population
-
+
# checking if discussion with this user already exists
if @discussion.recipient_ids && @discussion.recipient_ids.size == 1
user = User.find(@discussion.recipient_ids.first)
diff --git a/app/controllers/inboxes/messages_controller.rb b/app/controllers/inboxes/messages_controller.rb
index 4089b13..697592a 100644
--- a/app/controllers/inboxes/messages_controller.rb
+++ b/app/controllers/inboxes/messages_controller.rb
@@ -3,12 +3,12 @@ class Inboxes::MessagesController < Inboxes::BaseController
# load_and_authorize_resource
load_and_authorize_resource :discussion
load_resource :message, :through => :discussion, :shallow => true
-
+
def create
@message.user = current_user
@message.discussion = @discussion
@message.save
-
+
respond_to do |format|
format.html { redirect_to @message.discussion }
format.js
@@ -16,7 +16,7 @@ class Inboxes::MessagesController < Inboxes::BaseController
end
# private
- #
+ #
# def init_and_check_permissions
# @discussion = Discussion.find(params[:discussion_id])
# redirect_to discussions_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user)
diff --git a/app/controllers/inboxes/speakers_controller.rb b/app/controllers/inboxes/speakers_controller.rb
index 96a3049..30c0b7f 100644
--- a/app/controllers/inboxes/speakers_controller.rb
+++ b/app/controllers/inboxes/speakers_controller.rb
@@ -3,14 +3,14 @@ class Inboxes::SpeakersController < Inboxes::BaseController
load_and_authorize_resource :discussion
load_resource :speaker, :through => :discussion, :shallow => true
# load_and_authorize_resource
-
+
def create
raise ActiveRecord::RecordNotFound unless params[:speaker] && params[:speaker][:user_id]
@user = User.find(params[:speaker][:user_id])
flash[:notice] = t("inboxes.speakers.added") if @discussion.add_speaker(@user)
redirect_to @discussion
end
-
+
def destroy
@speaker = Speaker.find(params[:id])
@speaker.destroy
diff --git a/app/models/discussion.rb b/app/models/discussion.rb
index ca56596..9e9a92c 100644
--- a/app/models/discussion.rb
+++ b/app/models/discussion.rb
@@ -89,11 +89,11 @@ class Discussion < ActiveRecord::Base
# flag.update_attributes(:updat => Time.zone.now)
speaker.touch
end
-
+
def find_speaker_by_user user
Speaker.find_by_discussion_id_and_user_id(self.id, user.id)
end
-
+
private
def check_that_has_at_least_two_users
diff --git a/app/models/inboxes/ability.rb b/app/models/inboxes/ability.rb
index 4d8408f..deb3d81 100644
--- a/app/models/inboxes/ability.rb
+++ b/app/models/inboxes/ability.rb
@@ -15,20 +15,20 @@ module Inboxes
# and therefore should be easy to test in isolation.
def self.register_ability(ability)
self.abilities.add(ability)
-
+
end
def initialize(user)
# raise "Initializing 3rd patry"
# self.clear_aliased_actions
-
+
# can [:index, :create], Discussion
# can :read, Discussion do |discussion|
# discussion.can_participate?(user)
# end
#include any abilities registered by extensions, etc.
-
+
Ability.abilities.each do |clazz|
ability = clazz.send(:new, user)
@rules = rules + ability.send(:rules)
diff --git a/app/models/message.rb b/app/models/message.rb
index 3579e63..436775b 100644
--- a/app/models/message.rb
+++ b/app/models/message.rb
@@ -1,20 +1,20 @@
class Message < ActiveRecord::Base
default_scope order(:created_at)
-
+
belongs_to :discussion, :counter_cache => true, :touch => true
belongs_to :user
-
+
validates :user, :discussion, :body, :presence => true
-
+
after_save :mark_discussion_as_read
-
+
def visible_for? user
self.created_at.to_i >= self.discussion.user_invited_at(user).to_i
end
-
+
private
-
+
def mark_discussion_as_read
self.discussion.mark_as_read_for(self.user)
end
diff --git a/app/models/speaker.rb b/app/models/speaker.rb
index 0ed9cdd..4d8795b 100644
--- a/app/models/speaker.rb
+++ b/app/models/speaker.rb
@@ -1,16 +1,16 @@
class Speaker < ActiveRecord::Base
belongs_to :user
belongs_to :discussion
-
+
validates_uniqueness_of :user_id, :scope => :discussion_id
validates :user, :discussion, :presence => true
-
+
after_destroy :destroy_discussion
-
+
private
-
+
def destroy_discussion
self.discussion.destroy unless self.discussion.speakers.any?
end
-
+
end
diff --git a/app/views/inboxes/discussions/_form.html.haml b/app/views/inboxes/discussions/_form.html.haml
index 303f0bb..800004b 100644
--- a/app/views/inboxes/discussions/_form.html.haml
+++ b/app/views/inboxes/discussions/_form.html.haml
@@ -8,5 +8,5 @@
= j.label :body
%br
= j.text_area :body
-
+
%p= f.submit \ No newline at end of file
diff --git a/app/views/inboxes/discussions/index.html.haml b/app/views/inboxes/discussions/index.html.haml
index 86ae297..7e300d4 100644
--- a/app/views/inboxes/discussions/index.html.haml
+++ b/app/views/inboxes/discussions/index.html.haml
@@ -12,6 +12,6 @@
= link_to discussion.users.collect{|u| u[Inboxes::config.user_name]}.join(', '), discussion
%td
= discussion.unread_for?(current_user) ? "Yes" : "No"
-
+
%p
= link_to "Create new", new_discussion_path \ No newline at end of file
diff --git a/app/views/inboxes/discussions/show.html.haml b/app/views/inboxes/discussions/show.html.haml
index a910b51..50f5d19 100644
--- a/app/views/inboxes/discussions/show.html.haml
+++ b/app/views/inboxes/discussions/show.html.haml
@@ -16,13 +16,13 @@
= f.label :user_id, "Add speaker"
= f.collection_select :user_id, available_users, :id, :name
= f.submit "Add"
-
-
+
+
%h3 Messages
#messages_box
= render @discussion.messages, :as => :message
-
+
%h3 Add message
= render "inboxes/messages/form"
diff --git a/config/routes.rb b/config/routes.rb
index 9da2d4a..3ecb989 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,5 +1,5 @@
Rails.application.routes.draw do
-
+
resources :discussions, :except => :edit, :module => :inboxes do
resources :messages, :only => [:create, :index]
resources :speakers, :only => [:create, :destroy]
@@ -7,5 +7,5 @@ Rails.application.routes.draw do
post 'leave'
end
end
-
+
end \ No newline at end of file
diff --git a/lib/generators/inboxes/install_generator.rb b/lib/generators/inboxes/install_generator.rb
index d5d2a97..a3169a2 100644
--- a/lib/generators/inboxes/install_generator.rb
+++ b/lib/generators/inboxes/install_generator.rb
@@ -5,9 +5,9 @@ module Inboxes
module Generators
class InstallGenerator < Rails::Generators::Base
include Rails::Generators::Migration
-
+
source_root File.expand_path("../templates", __FILE__)
-
+
# desc "Generates migration for Discussion, Message, Speaker and DiscussionView models"
def self.orm
diff --git a/lib/generators/inboxes/templates/install.rb b/lib/generators/inboxes/templates/install.rb
index 91fded7..436ac98 100644
--- a/lib/generators/inboxes/templates/install.rb
+++ b/lib/generators/inboxes/templates/install.rb
@@ -9,14 +9,14 @@ class InstallInboxes < ActiveRecord::Migration
t.references :user
t.references :discussion
t.text :body
-
+
t.timestamps
end
-
+
create_table :speakers do |t|
t.references :user
t.references :discussion
-
+
t.timestamps
end
end
diff --git a/lib/generators/inboxes/views_generator.rb b/lib/generators/inboxes/views_generator.rb
index 117c05d..e9a8818 100644
--- a/lib/generators/inboxes/views_generator.rb
+++ b/lib/generators/inboxes/views_generator.rb
@@ -5,7 +5,7 @@ module Inboxes
class ViewsGenerator < Rails::Generators::Base
source_root File.expand_path('../../../../app/views', __FILE__)
#class_option :template_engine, :type => :string, :aliases => '-e', :desc => 'Template engine for the views. Available options are "erb" and "haml".'
-
+
# TODO support of both haml and erb
def copy_or_fetch
filename_pattern = File.join self.class.source_root, "*" #/*.html.#{template_engine}"
diff --git a/lib/inboxes.rb b/lib/inboxes.rb
index f1b9c7a..57dc9a0 100644
--- a/lib/inboxes.rb
+++ b/lib/inboxes.rb
@@ -6,7 +6,7 @@ require "inboxes/active_record_extension"
module Inboxes
-
+
def self.configure(&block)
yield @config ||= Inboxes::Configuration.new
end
@@ -25,11 +25,11 @@ module Inboxes
config_accessor :faye_enabled
def param_name
- config.param_name.respond_to?(:call) ? config.param_name.call() : config.param_name
+ config.param_name.respond_to?(:call) ? config.param_name.call() : config.param_name
end
end
-
+
# adding method inboxes for models
ActiveRecord::Base.extend(Inboxes::ActiveRecordExtension)
-
+
end
diff --git a/lib/inboxes/ability.rb b/lib/inboxes/ability.rb
index 3ed216b..c9f8d6b 100644
--- a/lib/inboxes/ability.rb
+++ b/lib/inboxes/ability.rb
@@ -13,17 +13,17 @@ module Inboxes
discussion.can_participate?(user)
end
end
-
+
# Message
# can :create, Message do |message|
# message.discussion.can_participate?(user)
# end
- #
+ #
# # Speaker
# can [:create, :destroy], Speaker do |speaker|
# speaker.discussion.can_participate?(user)
# end
end
end
-
+
end \ No newline at end of file
diff --git a/lib/inboxes/active_record_extension.rb b/lib/inboxes/active_record_extension.rb
index 34fd387..2a5bac8 100644
--- a/lib/inboxes/active_record_extension.rb
+++ b/lib/inboxes/active_record_extension.rb
@@ -3,7 +3,7 @@ module Inboxes
def has_inboxes(options = {})
# field = options[:as] || name
# prefix = options[:prefix] || "with"
-
+
has_many :speakers, :dependent => :destroy
has_many :discussions, :through => :speakers
end
diff --git a/lib/inboxes/engine.rb b/lib/inboxes/engine.rb
index 01f63b5..b61eebc 100644
--- a/lib/inboxes/engine.rb
+++ b/lib/inboxes/engine.rb
@@ -5,7 +5,7 @@ module Inboxes
def self.activate
Ability.register_ability(InboxesAbility)
end
-
+
config.to_prepare &method(:activate).to_proc
end
end \ No newline at end of file
diff --git a/lib/inboxes/railtie.rb b/lib/inboxes/railtie.rb
index 673784e..1626b20 100644
--- a/lib/inboxes/railtie.rb
+++ b/lib/inboxes/railtie.rb
@@ -4,7 +4,7 @@ require "inboxes/ability"
module Inboxes
class Railtie < ::Rails::Railtie
config.inboxes = ActiveSupport::OrderedOptions.new
-
+
initializer "inboxes.configure" do |app|
Inboxes.configure do |config|
config.user_name = app.config.inboxes[:user_name] || "email"
@@ -15,7 +15,7 @@ module Inboxes
# app.config.middleware.insert_before "::Rails::Rack::Logger", "Inboxes::Middleware"
end
-
+
# def self.activate
# Ability.register_ability(InboxesAbility)
# end