| ... | ... |
@@ -5,4 +5,4 @@ You are allowed to: |
| 5 | 5 |
2. Remove generators |
| 6 | 6 |
3. Add installed generators |
| 7 | 7 |
To add new installed generators automatically delete this file and reload the project. |
| 8 |
+--><GeneratorsGroup><Generator name="active_record:migration" /><Generator name="active_record:model" /><Generator name="active_record:observer" /><Generator name="active_record:session_migration" /><Generator name="assets" /><Generator name="backbone:install" /><Generator name="backbone:model" /><Generator name="backbone:router" /><Generator name="backbone:scaffold" /><Generator name="coffee:assets" /><Generator name="controller" /><Generator name="erb:controller" /><Generator name="erb:mailer" /><Generator name="erb:scaffold" /><Generator name="factory_girl:model" /><Generator name="generator" /><Generator name="helper" /><Generator name="integration_test" /><Generator name="jquery:install" /><Generator name="js:assets" /><Generator name="mailer" /><Generator name="migration" /><Generator name="model" /><Generator name="mongoid:config" /><Generator name="observer" /><Generator name="performance_test" /><Generator name="resource" /><Generator name="rspec:controller" /><Generator name="rspec:helper" /><Generator name="rspec:install" /><Generator name="rspec:integration" /><Generator name="rspec:mailer" /><Generator name="rspec:model" /><Generator name="rspec:observer" /><Generator name="rspec:scaffold" /><Generator name="rspec:view" /><Generator name="scaffold" /><Generator name="scaffold_controller" /><Generator name="session_migration" /><Generator name="task" /><Generator name="websocket_rails:install" /></GeneratorsGroup></Settings> |
| ... | ... |
@@ -17,6 +17,8 @@ group :assets do |
| 17 | 17 |
gem 'coffee-rails', '~> 3.2.1' |
| 18 | 18 |
gem 'normalize-rails' |
| 19 | 19 |
gem 'compass-rails' |
| 20 |
+ gem "rails-backbone" |
|
| 21 |
+ #gem "marionette-rails", "~> 0.10.2" |
|
| 20 | 22 |
|
| 21 | 23 |
# See https://github.com/sstephenson/execjs#readme for more supported runtimes |
| 22 | 24 |
# gem 'therubyracer', :platforms => :ruby |
| ... | ... |
@@ -63,6 +63,7 @@ GEM |
| 63 | 63 |
compass (>= 0.12.2, < 0.14) |
| 64 | 64 |
daemons (1.1.9) |
| 65 | 65 |
diff-lcs (1.1.3) |
| 66 |
+ ejs (1.0.0) |
|
| 66 | 67 |
em-synchrony (1.0.3) |
| 67 | 68 |
eventmachine (>= 1.0.0.beta.1) |
| 68 | 69 |
erubis (2.7.0) |
| ... | ... |
@@ -143,6 +144,10 @@ GEM |
| 143 | 143 |
activesupport (= 3.2.12) |
| 144 | 144 |
bundler (~> 1.0) |
| 145 | 145 |
railties (= 3.2.12) |
| 146 |
+ rails-backbone (0.7.2) |
|
| 147 |
+ coffee-script (~> 2.2.0) |
|
| 148 |
+ ejs (~> 1.0.0) |
|
| 149 |
+ railties (>= 3.1.0) |
|
| 146 | 150 |
railties (3.2.12) |
| 147 | 151 |
actionpack (= 3.2.12) |
| 148 | 152 |
activesupport (= 3.2.12) |
| ... | ... |
@@ -227,6 +232,7 @@ DEPENDENCIES |
| 227 | 227 |
mongoid (~> 3.0.20) |
| 228 | 228 |
normalize-rails |
| 229 | 229 |
rails (~> 3.2.11) |
| 230 |
+ rails-backbone |
|
| 230 | 231 |
rspec-rails |
| 231 | 232 |
sass-rails (~> 3.2.3) |
| 232 | 233 |
test-unit |
| 233 | 234 |
deleted file mode 100755 |
| ... | ... |
@@ -1,6 +0,0 @@ |
| 1 |
-this.App = |
|
| 2 |
- UI: |
|
| 3 |
- setAutoHeight: -> |
|
| 4 |
- height = $(window).height() |
|
| 5 |
- $("#height-setter-1").css({height: height - 50})
|
|
| 6 |
- $("#height-setter-2").css({height: height - $('#tabbar').outerHeight() - $('#msg-writer').outerHeight() - 57})
|
| 7 | 1 |
new file mode 100755 |
| ... | ... |
@@ -0,0 +1,13 @@ |
| 0 |
+this.App = |
|
| 1 |
+ UI: |
|
| 2 |
+ setAutoHeight: -> |
|
| 3 |
+ height = $(window).height() |
|
| 4 |
+ $("#height-setter-1").css({height: height - 50})
|
|
| 5 |
+ $("#height-setter-2").css({height: height - $('#tabbar').outerHeight() - $('#msg-writer').outerHeight() - 57})
|
|
| 6 |
+ |
|
| 7 |
+ Com: |
|
| 8 |
+ connect: -> |
|
| 9 |
+ App._dispatcher = new WebSocketRails('localhost:3000/websocket')
|
|
| 10 |
+ |
|
| 11 |
+ fetch: (options) -> |
|
| 12 |
+ App._dispatcher.trigger(options.event, options.data, options.success, options.error) |
| 0 | 13 |
deleted file mode 100755 |
| ... | ... |
@@ -1,18 +0,0 @@ |
| 1 |
-// This is a manifest file that'll be compiled into application.js, which will include all the files |
|
| 2 |
-// listed below. |
|
| 3 |
-// |
|
| 4 |
-// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, |
|
| 5 |
-// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. |
|
| 6 |
-// |
|
| 7 |
-// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the |
|
| 8 |
-// the compiled file. |
|
| 9 |
-// |
|
| 10 |
-// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD |
|
| 11 |
-// GO AFTER THE REQUIRES BELOW. |
|
| 12 |
-// |
|
| 13 |
-//= require jquery |
|
| 14 |
-//= require jquery_ujs |
|
| 15 |
-//= require _main |
|
| 16 |
-//= require_tree . |
|
| 17 |
-//= require websocket_rails/main |
|
| 18 |
- |
| 1 | 9 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,17 @@ |
| 0 |
+class Xmpp.Models.Contact extends Xmpp.Models.Model |
|
| 1 |
+ namespace: 'app.roster' |
|
| 2 |
+ |
|
| 3 |
+ defaults: |
|
| 4 |
+ name: 'unnamed' |
|
| 5 |
+ age: 0 |
|
| 6 |
+ |
|
| 7 |
+ initialize: -> |
|
| 8 |
+ console.log "Welcome stranger" |
|
| 9 |
+ |
|
| 10 |
+ @on("change:name", (model) ->
|
|
| 11 |
+ name = model.get("name");
|
|
| 12 |
+ console.log "Changed my name to " + name |
|
| 13 |
+ ) |
|
| 14 |
+ |
|
| 15 |
+class Xmpp.Collections.ContactsCollection extends Backbone.Collection |
|
| 16 |
+ model: Xmpp.Models.Contact |
| 0 | 17 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,33 @@ |
| 0 |
+class Xmpp.Models.Model extends Backbone.Model |
|
| 1 |
+ communicator: App.Com |
|
| 2 |
+ |
|
| 3 |
+ sync: (method, model, options) -> |
|
| 4 |
+ params = {}
|
|
| 5 |
+ |
|
| 6 |
+ if (!options.event) |
|
| 7 |
+ params.event = model.namespace + '.' + method |
|
| 8 |
+ |
|
| 9 |
+ if (!options.data? && model && (method == 'create' || method == 'update' || method == 'patch')) |
|
| 10 |
+ params.data = JSON.stringify(options.attrs || model.toJSON(options)) |
|
| 11 |
+ else |
|
| 12 |
+ params.data = JSON.stringify({})
|
|
| 13 |
+ |
|
| 14 |
+ success = options.success; |
|
| 15 |
+ success = (resp) -> |
|
| 16 |
+ if (success) |
|
| 17 |
+ success(model, resp, options) |
|
| 18 |
+ model.trigger('sync', model, resp, options)
|
|
| 19 |
+ |
|
| 20 |
+ error = options.error |
|
| 21 |
+ options.error = (xhr) -> |
|
| 22 |
+ if (error) |
|
| 23 |
+ error(model, xhr, options) |
|
| 24 |
+ model.trigger('error', model, xhr, options);
|
|
| 25 |
+ |
|
| 26 |
+ if (! @communicator?) |
|
| 27 |
+ throw new Error('A communicator object must be specified');
|
|
| 28 |
+ |
|
| 29 |
+ result = options.result = @communicator.fetch(_.extend(params, options)) |
|
| 30 |
+ |
|
| 31 |
+ model.trigger('request', model, result, options)
|
|
| 32 |
+ return result |
|
| 0 | 33 |
\ No newline at end of file |
| 4 | 37 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,12 @@ |
| 0 |
+#= require_self |
|
| 1 |
+#= require_tree ./templates |
|
| 2 |
+#= require ./models/model |
|
| 3 |
+#= require_tree ./models |
|
| 4 |
+#= require_tree ./views |
|
| 5 |
+#= require_tree ./routers |
|
| 6 |
+ |
|
| 7 |
+window.Xmpp = |
|
| 8 |
+ Models: {}
|
|
| 9 |
+ Collections: {}
|
|
| 10 |
+ Routers: {}
|
|
| 11 |
+ Views: {}
|
| ... | ... |
@@ -7,7 +7,7 @@ class ApplicationController < ActionController::Base |
| 7 | 7 |
create_new_authentification() |
| 8 | 8 |
|
| 9 | 9 |
unless controller_name == 'chat' |
| 10 |
- redirect_to chat_path |
|
| 10 |
+ redirect_to chat_template_path |
|
| 11 | 11 |
end |
| 12 | 12 |
else |
| 13 | 13 |
unless controller_name == 'sessions' && (action_name == 'new' || action_name == 'create') |
| 7 | 11 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,21 @@ |
| 0 |
+class RosterController < WebsocketRails::BaseController |
|
| 1 |
+ |
|
| 2 |
+ def initialize_session |
|
| 3 |
+ controller_store[:friends] = {}
|
|
| 4 |
+ end |
|
| 5 |
+ |
|
| 6 |
+ ## |
|
| 7 |
+ # Vrat vsetkych priatelov v rosteri |
|
| 8 |
+ def get |
|
| 9 |
+ #logger.debug request. |
|
| 10 |
+ #controller_store[:friends] |
|
| 11 |
+ |
|
| 12 |
+ trigger_success message: "yes" |
|
| 13 |
+ end |
|
| 14 |
+ |
|
| 15 |
+ ## |
|
| 16 |
+ # Pridaj noveho priatela do zoznamu |
|
| 17 |
+ def add_friend(data) |
|
| 18 |
+ |
|
| 19 |
+ end |
|
| 20 |
+end |
| ... | ... |
@@ -14,7 +14,7 @@ class SessionsController < ApplicationController |
| 14 | 14 |
end |
| 15 | 15 |
|
| 16 | 16 |
create_new_authentification() |
| 17 |
- redirect_to chat_path, flash: {notice: I18n.t('login.success')}
|
|
| 17 |
+ redirect_to chat_template_path, flash: {notice: I18n.t('login.success')}
|
|
| 18 | 18 |
end |
| 19 | 19 |
|
| 20 | 20 |
def destroy |
| ... | ... |
@@ -41,4 +41,12 @@ WebsocketRails::EventMap.describe do |
| 41 | 41 |
# subscribe :new, :to => ProductController, :with_method => :new_product |
| 42 | 42 |
# end |
| 43 | 43 |
# The above will handle an event triggered on the client like `product.new`. |
| 44 |
+ |
|
| 45 |
+ namespace :app do |
|
| 46 |
+ |
|
| 47 |
+ namespace :roster do |
|
| 48 |
+ subscribe :read, :to => RosterController, :with_method => :get |
|
| 49 |
+ end |
|
| 50 |
+ |
|
| 51 |
+ end |
|
| 44 | 52 |
end |