social_stream 0.11.5 → 0.11.6

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 (58) hide show
  1. data/base/app/assets/javascripts/contacts.js +0 -6
  2. data/base/app/assets/javascripts/relation_customs.js +28 -81
  3. data/base/app/assets/javascripts/settings.js +12 -33
  4. data/base/app/assets/stylesheets/base.css.scss +2 -1
  5. data/base/app/assets/stylesheets/relation_customs.css.scss +8 -2
  6. data/base/app/controllers/contacts_controller.rb +7 -3
  7. data/base/app/controllers/messages_controller.rb +1 -1
  8. data/base/app/controllers/search_controller.rb +22 -6
  9. data/base/app/controllers/settings_controller.rb +1 -1
  10. data/base/app/models/contact.rb +7 -1
  11. data/base/app/models/relation.rb +14 -1
  12. data/base/app/views/activities/_new.html.erb +3 -2
  13. data/base/app/views/contacts/_link.html.erb +1 -1
  14. data/base/app/views/contacts/index.html.erb +1 -1
  15. data/base/app/views/conversations/_conversation.html.erb +3 -3
  16. data/base/app/views/conversations/_conversation_full.html.erb +3 -3
  17. data/base/app/views/devise/registrations/_delete_account.html.erb +20 -0
  18. data/base/app/views/devise/registrations/_edit_user.html.erb +87 -0
  19. data/base/app/views/devise/registrations/edit.html.erb +16 -93
  20. data/base/app/views/layouts/_header_dropdown_menu.html.erb +0 -3
  21. data/base/app/views/messages/_form.html.erb +1 -1
  22. data/base/app/views/permissions/_index.html.erb +2 -2
  23. data/base/app/views/permissions/index.js.erb +7 -2
  24. data/base/app/views/relation/customs/_list.html.erb +12 -5
  25. data/base/app/views/relation/customs/create.js.erb +4 -2
  26. data/base/app/views/relation/customs/index.html.erb +0 -5
  27. data/base/app/views/search/_form.html.erb +1 -1
  28. data/base/app/views/settings/_api_key.html.erb +3 -3
  29. data/base/app/views/settings/_index.html.erb +6 -1
  30. data/base/app/views/settings/_notifications.html.erb +3 -3
  31. data/base/app/views/settings/index.html.erb +4 -1
  32. data/base/config/locales/en.yml +31 -12
  33. data/base/config/locales/es.yml +33 -10
  34. data/base/config/routes.rb +10 -11
  35. data/base/lib/mailboxer/notification_decoder.rb +13 -4
  36. data/base/lib/social_stream/base/version.rb +1 -1
  37. data/documents/app/assets/javascripts/social_stream-documents.js +1 -1
  38. data/documents/app/views/pictures/_picture.html.erb +3 -1
  39. data/documents/lib/social_stream/documents/version.rb +1 -1
  40. data/documents/social_stream-documents.gemspec +1 -1
  41. data/documents/vendor/assets/javascripts/jquery.lightbox-with-resize-plugin.js +533 -0
  42. data/events/vendor/assets/stylesheets/jquery.ad-gallery.css +1 -1
  43. data/lib/social_stream/version.rb +1 -1
  44. data/presence/app/assets/stylesheets/chat.css +9 -1
  45. data/presence/app/controllers/xmpp_controller.rb +19 -10
  46. data/presence/app/helpers/xmpp_helper.rb +10 -23
  47. data/presence/app/views/xmpp/_chat.html.erb +9 -7
  48. data/presence/app/views/xmpp/_chat_off.html.erb +1 -1
  49. data/presence/lib/social_stream-presence.rb +12 -0
  50. data/presence/lib/social_stream/presence/config.rb +0 -4
  51. data/presence/lib/social_stream/presence/engine.rb +27 -14
  52. data/presence/lib/social_stream/presence/models/buddy_manager.rb +20 -12
  53. data/social_stream.gemspec +2 -2
  54. metadata +13 -14
  55. data/base/app/assets/images/title_background.png +0 -0
  56. data/base/vendor/assets/javascripts/ui.checkbox.js +0 -309
  57. data/documents/vendor/assets/javascripts/jquery.lightbox.min.js +0 -42
  58. data/presence/app/assets/images/arrow.png +0 -0
@@ -168,4 +168,4 @@
168
168
  position: absolute;
169
169
  left: -9000px;
170
170
  top: -9000px;
171
- }
171
+ }
@@ -1,3 +1,3 @@
1
1
  module SocialStream
2
- VERSION = "0.11.5".freeze
2
+ VERSION = "0.11.6".freeze
3
3
  end
@@ -108,14 +108,22 @@ input.chat_password{
108
108
  margin-bottom: 5px;
109
109
  }
110
110
 
111
+
111
112
  input.connectChatButton{
112
113
  text-align: center;
114
+ width: 150px;
115
+ background-color: #1F4A75;
116
+ border: 0 none;
117
+ cursor: pointer;
118
+ color: white;
119
+ font-family: Helvetica;
120
+ font-size: 11px;
121
+ padding: 2px 0 2px 0px;
113
122
  }
114
123
 
115
124
 
116
125
 
117
126
 
118
-
119
127
  /* Tooltip */
120
128
 
121
129
  .tooltip {
@@ -134,12 +134,12 @@ class XmppController < ApplicationController
134
134
  end
135
135
 
136
136
  def authorization
137
- return params[:password] == Socialstream::Presence::XMPP_SERVER_PASSWORD
137
+ return params[:password] == SocialStream::Presence.xmpp_server_password
138
138
  end
139
139
 
140
140
 
141
141
  def chatWindow
142
- if (current_user.connected) and (current_user.status != 'disable') and (params[:userConnected]=="true")
142
+ if (current_user) and (current_user.connected) and (current_user.status != 'disable') and (params[:userConnected]=="true")
143
143
  render :partial => 'xmpp/chat_contacts'
144
144
  else
145
145
  #User not connected or chat desactivated
@@ -159,15 +159,24 @@ class XmppController < ApplicationController
159
159
 
160
160
  def test
161
161
  puts "TEST"
162
- client = Jabber::Client.new(Jabber::JID.new('social_stream-presence@trapo'))
163
- client.connect
164
- password = Socialstream::Presence::PASSWORD
165
- client.auth(password)
162
+
163
+ #XMPP DOMAIN
164
+ domain = SocialStream::Presence.domain
165
+ #PASSWORD
166
+ password= SocialStream::Presence.password
167
+ #SS Username
168
+ ss_name = SocialStream::Presence.social_stream_presence_username
169
+
170
+ ss_sid = ss_name + "@" + domain
171
+ client = Jabber::Client.new(Jabber::JID.new(ss_sid))
172
+ client.connect
173
+ client.auth(password)
166
174
 
167
- #Sending a message
168
- msg = Jabber::Message::new('social_stream-presence@trapo', "Message&order")
169
- msg.type=:chat
170
- client.send(msg)
175
+ #Sending a message
176
+ msg = Jabber::Message::new(ss_sid, "Message&order")
177
+ msg.type=:chat
178
+ client.send(msg)
179
+ client.close()
171
180
  end
172
181
 
173
182
 
@@ -1,33 +1,20 @@
1
1
  module XmppHelper
2
+
2
3
  def getChatContacts
3
4
  connected_users = []
4
- contacts = getBidirectionalContacts
5
+
6
+ #Get bidirectional contacts
7
+ contacts = current_user.contact_actors(:type=>:user)
8
+
9
+ #Apply filters
10
+
5
11
  contacts.each do |contact|
6
- if current_user.name != contact.receiver.name && contact.receiver.subject_type == "User" && contact.receiver.user.connected
7
- connected_users << contact.receiver
12
+ if contact.user.connected
13
+ connected_users << contact.user
8
14
  end
9
15
  end
10
-
16
+
11
17
  return connected_users
12
18
  end
13
-
14
- def getBidirectionalContacts
15
- #Code for new SS Version
16
- # return current_user.contact_actors(:direction => :both)
17
-
18
- contacts = []
19
- csenders = current_user.sent_contacts
20
- creceivers = current_user.received_contacts
21
-
22
- csenders.each do |csender|
23
- creceivers.each do |creceiver|
24
- if ((csender.sender.name == creceiver.receiver.name) && (csender.receiver.name == creceiver.sender.name))
25
- contacts << csender
26
- break
27
- end
28
- end
29
- end
30
- return contacts
31
- end
32
19
 
33
20
  end
@@ -1,4 +1,6 @@
1
- <% content_for :headers do %>
1
+ <% if current_subject.subject_type=="User" %>
2
+
3
+ <% content_for :headers do %>
2
4
  <%= stylesheet_link_tag "chat.css", :media => "screen, projection" %>
3
5
  <%= javascript_include_tag 'jquery-ui-1.8.14.custom.min'%>
4
6
  <%= javascript_include_tag 'jquery.ui.chatbox'%>
@@ -12,8 +14,8 @@
12
14
  <script type="text/javascript">
13
15
 
14
16
  //Global variables
15
- var BOSH_SERVICE = '<%=Socialstream::Presence::BOSH_SERVICE%>';
16
- var domain = '<%=Socialstream::Presence::DOMAIN%>';
17
+ var BOSH_SERVICE = '<%=SocialStream::Presence.bosh_service%>';
18
+ var domain = '<%=SocialStream::Presence.domain%>';
17
19
  var user_name = '<%=current_user.name%>';
18
20
  var user_slug = '<%=current_user.slug%>';
19
21
  var user_jid = '<%=current_user.slug%>'+"@"+domain;
@@ -53,7 +55,7 @@
53
55
  </script>
54
56
 
55
57
  <div id="chat_partial">
56
- <%= render :partial => 'xmpp/chat_connecting' %>
57
- <!-- <%= render :partial => 'xmpp/chat_connecting' %> -->
58
- <!-- <%= render :partial => 'xmpp/chat_contacts' %> -->
59
- </div>
58
+ <%= render :partial => 'xmpp/chat_connecting' %>
59
+ </div>
60
+
61
+ <% end %>
@@ -31,5 +31,5 @@
31
31
  <label for="user_password" class="chatPasswordTitle">Password</label>
32
32
  <input id="user_password" class="chat_password" type="password"></input>
33
33
  </div>
34
- <input class="other_blue connectChatButton storePass" value="Connect">
34
+ <input class="connectChatButton storePass" value="Connect">
35
35
  </div>
@@ -7,6 +7,18 @@ module SocialStream
7
7
  autoload :BuddyManager, 'social_stream/presence/models/buddy_manager'
8
8
  end
9
9
 
10
+ mattr_accessor :domain
11
+ mattr_accessor :bosh_service
12
+ mattr_accessor :password
13
+ mattr_accessor :xmpp_server_password
14
+ mattr_accessor :social_stream_presence_username
15
+
16
+ class << self
17
+ def setup
18
+ yield self
19
+ end
20
+ end
21
+
10
22
  end
11
23
  end
12
24
 
@@ -1,9 +1,5 @@
1
1
  module Socialstream
2
2
  module Presence
3
- DOMAIN = "trapo"
4
- BOSH_SERVICE = "http://localhost:8080/http-bind"
5
- PASSWORD = "DnVCB8G|R$VGmZ@2?5=CYS8z)NrL@LuQ&LTCUh^9B(DF4gC&sQpfbCMbaNKEdNrGYkT4L5zxM0wNWs5q3?ww(b&0d5fK87z^BmgJMMF2SKXT9pEk^UEcch!GX!Avf5GT9)j@FpHe)4RH)BK7J98u!sUmJHUN(Je6aBmn!FtZ4Ab5h8$|nsvUt3Jkq?21HOH$r0sDyJZZvGOCgFS2EKw@0wXsJRHYVRPBe&Eb!1X55e55bQ^h2AW&^R70TK0m)Fu8"
6
- XMPP_SERVER_PASSWORD = "G&s6GBnO)anw2Ene%K12Cb=0quj@uDmA"
7
3
  VERSION = "0.0.3"
8
4
  end
9
5
  end
@@ -18,29 +18,42 @@ module SocialStream
18
18
 
19
19
  initializer "social_stream-presence.synchronize" do
20
20
  #Synchronize User Presence
21
- #Implement case XMMP Server Down
21
+ #Reset connected users when XMMP Server Down
22
22
  Thread.start {
23
23
  begin
24
- client = Jabber::Client.new(Jabber::JID.new('social_stream-presence@trapo'))
24
+ #XMPP DOMAIN
25
+ domain = SocialStream::Presence.domain
26
+ #PASSWORD
27
+ password= SocialStream::Presence.password
28
+ #SS Username
29
+ ss_name = SocialStream::Presence.social_stream_presence_username
30
+
31
+ ss_sid = ss_name + "@" + domain
32
+ client = Jabber::Client.new(Jabber::JID.new(ss_sid))
25
33
  client.connect
26
- password = Socialstream::Presence::PASSWORD
27
34
  client.auth(password)
28
35
 
29
- msg = Jabber::Message::new("social_stream-presence@trapo", "Synchronize")
36
+ msg = Jabber::Message::new(ss_sid, "Synchronize")
30
37
  msg.type=:chat
31
38
  client.send(msg)
32
39
  client.close()
33
40
 
34
- rescue Errno::ECONNREFUSED
35
- #XMPP Server Down
36
- #Reset Connected Users
37
- users = User.find_all_by_connected(true)
38
- users.each do |user|
39
- user.connected = false
40
- user.save!
41
- end
42
-
43
- end
41
+ rescue Exception => e
42
+ case e
43
+ when Errno::ECONNREFUSED
44
+ begin
45
+ users = User.find_all_by_connected(true)
46
+ users.each do |user|
47
+ user.connected = false
48
+ user.save!
49
+ end
50
+ puts "Connection to XMPP Server refused: Reset Connected Users"
51
+ rescue
52
+ end
53
+ else
54
+ puts "Unknown exception: #{e.to_s}"
55
+ end
56
+ end
44
57
  }
45
58
  end
46
59
 
@@ -1,4 +1,3 @@
1
- require "social_stream/presence/config"
2
1
  require 'xmpp4r'
3
2
  require 'xmpp4r/muc'
4
3
  require 'xmpp4r/roster'
@@ -18,16 +17,18 @@ module SocialStream
18
17
  module InstanceMethods
19
18
 
20
19
  def save_buddy
21
-
20
+
22
21
  unless self.receiver.subject_type == "User" and self.sender.subject_type == "User"
23
22
  return
24
23
  end
25
24
 
26
25
  #XMPP DOMAIN
27
- domain = Socialstream::Presence::DOMAIN
26
+ domain = SocialStream::Presence.domain
28
27
  #PASSWORD
29
- password= Socialstream::Presence::PASSWORD
30
-
28
+ password= SocialStream::Presence.password
29
+ #SS Username
30
+ ss_name = SocialStream::Presence.social_stream_presence_username
31
+
31
32
  user_sid = self.sender.slug + "@" + domain
32
33
  buddy_sid = self.receiver.slug + "@" + domain
33
34
  buddy_name = self.receiver.name
@@ -40,19 +41,26 @@ module SocialStream
40
41
  end
41
42
 
42
43
  begin
43
- client = Jabber::Client.new(Jabber::JID.new('social_stream-presence@trapo'))
44
+ ss_sid = ss_name + "@" + domain
45
+ client = Jabber::Client.new(Jabber::JID.new(ss_sid))
44
46
  client.connect
45
- password = Socialstream::Presence::PASSWORD
46
47
  client.auth(password)
47
48
 
48
49
  #Sending a message
49
50
  #AddItemToRoster[UserSID,BuddySID,BuddyName,Subscription_type]
50
- msg = Jabber::Message::new('social_stream-presence@trapo', "AddItemToRoster&" + user_sid + "&" + buddy_sid + "&" + buddy_name + "&" + sType)
51
+ msg = Jabber::Message::new(ss_sid, "AddItemToRoster&" + user_sid + "&" + buddy_sid + "&" + buddy_name + "&" + sType)
51
52
  msg.type=:chat
52
- client.send(msg)
53
- rescue Errno::ECONNREFUSED
54
- #Rescue...
55
- end
53
+ client.send(msg)
54
+ client.close()
55
+
56
+ rescue Exception => e
57
+ case e
58
+ when Errno::ECONNREFUSED
59
+ puts "Connection to XMPP Server refused"
60
+ else
61
+ puts "Unknown exception: #{e.to_s}"
62
+ end
63
+ end
56
64
 
57
65
  end
58
66
 
@@ -11,8 +11,8 @@ Gem::Specification.new do |s|
11
11
  s.files = `git ls-files`.split("\n")
12
12
 
13
13
  # Gem dependencies
14
- s.add_runtime_dependency('social_stream-base', '~> 0.9.19')
15
- s.add_runtime_dependency('social_stream-documents', '~> 0.3.1')
14
+ s.add_runtime_dependency('social_stream-base', '~> 0.9.20')
15
+ s.add_runtime_dependency('social_stream-documents', '~> 0.3.2')
16
16
  s.add_runtime_dependency('social_stream-events', '~> 0.0.12')
17
17
 
18
18
  # Development Gem dependencies
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: social_stream
3
3
  version: !ruby/object:Gem::Version
4
- hash: 57
4
+ hash: 63
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 11
9
- - 5
10
- version: 0.11.5
9
+ - 6
10
+ version: 0.11.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - GING - DIT - UPM
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-10-13 00:00:00 +02:00
19
+ date: 2011-10-14 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -27,12 +27,12 @@ dependencies:
27
27
  requirements:
28
28
  - - ~>
29
29
  - !ruby/object:Gem::Version
30
- hash: 29
30
+ hash: 19
31
31
  segments:
32
32
  - 0
33
33
  - 9
34
- - 19
35
- version: 0.9.19
34
+ - 20
35
+ version: 0.9.20
36
36
  type: :runtime
37
37
  version_requirements: *id001
38
38
  - !ruby/object:Gem::Dependency
@@ -43,12 +43,12 @@ dependencies:
43
43
  requirements:
44
44
  - - ~>
45
45
  - !ruby/object:Gem::Version
46
- hash: 17
46
+ hash: 23
47
47
  segments:
48
48
  - 0
49
49
  - 3
50
- - 1
51
- version: 0.3.1
50
+ - 2
51
+ version: 0.3.2
52
52
  type: :runtime
53
53
  version_requirements: *id002
54
54
  - !ruby/object:Gem::Dependency
@@ -347,7 +347,6 @@ files:
347
347
  - base/app/assets/images/mini-loading.gif
348
348
  - base/app/assets/images/right.png
349
349
  - base/app/assets/images/tipsy.gif
350
- - base/app/assets/images/title_background.png
351
350
  - base/app/assets/javascripts/activities.js.erb
352
351
  - base/app/assets/javascripts/contacts.js
353
352
  - base/app/assets/javascripts/conversations.js
@@ -512,6 +511,8 @@ files:
512
511
  - base/app/views/conversations/show.js.erb
513
512
  - base/app/views/devise/passwords/edit.html.erb
514
513
  - base/app/views/devise/passwords/new.html.erb
514
+ - base/app/views/devise/registrations/_delete_account.html.erb
515
+ - base/app/views/devise/registrations/_edit_user.html.erb
515
516
  - base/app/views/devise/registrations/edit.html.erb
516
517
  - base/app/views/devise/registrations/new.html.erb
517
518
  - base/app/views/devise/sessions/new.html.erb
@@ -781,7 +782,6 @@ files:
781
782
  - base/vendor/assets/javascripts/jquery.watermarkinput.js
782
783
  - base/vendor/assets/javascripts/menu.js
783
784
  - base/vendor/assets/javascripts/superfish.js
784
- - base/vendor/assets/javascripts/ui.checkbox.js
785
785
  - base/vendor/assets/stylesheets/carousel.css
786
786
  - base/vendor/assets/stylesheets/chosen-sprite.png
787
787
  - base/vendor/assets/stylesheets/chosen.css
@@ -978,7 +978,7 @@ files:
978
978
  - documents/spec/support/devise.rb
979
979
  - documents/spec/support/mock.rb
980
980
  - documents/vendor/assets/javascripts/jquery.jplayer.js
981
- - documents/vendor/assets/javascripts/jquery.lightbox.min.js
981
+ - documents/vendor/assets/javascripts/jquery.lightbox-with-resize-plugin.js
982
982
  - documents/vendor/assets/stylesheets/jplayer.blue.monday.css
983
983
  - documents/vendor/assets/stylesheets/jplayer.blue.monday.jpg
984
984
  - documents/vendor/assets/stylesheets/jplayer.blue.monday.video.play.hover.png
@@ -1114,7 +1114,6 @@ files:
1114
1114
  - presence/Rakefile
1115
1115
  - presence/app/assets/audio/chat/onMessageAudio.mp3
1116
1116
  - presence/app/assets/audio/chat/onMessageAudio.wav
1117
- - presence/app/assets/images/arrow.png
1118
1117
  - presence/app/assets/images/black_arrow3.png
1119
1118
  - presence/app/assets/images/status/available.png
1120
1119
  - presence/app/assets/images/status/away.png
@@ -1,309 +0,0 @@
1
- /**
2
- * @author alexander.farkas
3
- * @version 1.4.1
4
- */
5
- $(document).ready(function() {
6
-
7
- var baseClasses = /ui-checkbox|ui-radio/;
8
- $.widget('ui.checkBox', {
9
- options: {
10
- hideInput: true,
11
- addVisualElement: true,
12
- addLabel: true,
13
- _delegated: false
14
- },
15
- _create: function(){
16
- var that = this,
17
- opts = this.options
18
- ;
19
-
20
- if(!this.element.is(':radio,:checkbox')){
21
- if($.nodeName(this.element[0], 'input')){return false;}
22
- this._addDelegate();
23
- this.updateContainer();
24
- return false;
25
- }
26
- this.labels = $([]);
27
-
28
- this.checkedStatus = false;
29
- this.disabledStatus = false;
30
- this.hoverStatus = false;
31
-
32
- this.radio = (this.element.is(':radio'));
33
-
34
- this.visualElement = $([]);
35
- if (opts.hideInput) {
36
- this.element
37
- .addClass('ui-helper-hidden-accessible')
38
- ;
39
- if(opts.addVisualElement){
40
- this.visualElement = $('<span />')
41
- .addClass(this.radio ? 'ui-radio' : 'ui-checkbox')
42
- ;
43
- this.element.after(this.visualElement[0]);
44
- }
45
- }
46
-
47
- if(opts.addLabel){
48
- this.labels = $('label[for=' + this.element.attr('id') + ']')
49
- .addClass(this.radio ? 'ui-radio' : 'ui-checkbox')
50
- ;
51
- }
52
- if(!opts._delegated){
53
- this._addEvents();
54
- }
55
- this.initialized = true;
56
- this.reflectUI({type: 'initialReflect'});
57
- return undefined;
58
- },
59
- updateContainer: function(){
60
- if(!this.element.is(':radio,:checkbox') && !$.nodeName(this.element[0], 'input')){
61
- $('input', this.element[0])
62
- .filter(function(){
63
- return !($.data(this, 'checkBox'));
64
- })
65
- .checkBox($.extend({}, this.options, {_delegated: true}))
66
- ;
67
- }
68
- },
69
- _addDelegate: function(){
70
- var opts = this.options,
71
-
72
- toggleHover = function(e, that){
73
- if(!that){return;}
74
- that.hover = !!(e.type == 'focus' || e.type == 'mouseenter' || e.type == 'focusin' || e.type == 'mouseover');
75
- that._changeStateClassChain.call(that);
76
- return undefined;
77
- }
78
- ;
79
-
80
-
81
- this.element
82
- .bind('click', function(e){
83
- if(!$.nodeName(e.target, 'input')){return;}
84
- var inst = ($.data(e.target) || {}).checkBox;
85
- if(!inst){return;}
86
- inst.reflectUI.call(inst, e.target, e);
87
- })
88
- .bind('focusin.checkBox focusout.checkBox', function(e){
89
- if(!$.nodeName(e.target, 'input')){return;}
90
- var inst = ($.data(e.target) || {}).checkBox;
91
- toggleHover(e, inst);
92
- })
93
- ;
94
-
95
- if (opts.hideInput){
96
- this.element
97
- .bind('usermode', function(e){
98
- if(!e.enabled){return;}
99
- $('input', this).each(function(){
100
- var inst = ($.data(this) || {}).checkBox;
101
- (inst && inst.destroy.call(inst, true));
102
- });
103
- })
104
- ;
105
- }
106
-
107
- if(opts.addVisualElement){
108
- this.element
109
- .bind('mouseover.checkBox mouseout.checkBox', function(e){
110
- if(!$.nodeName(e.target, 'span')){return;}
111
- var inst = ( $.data($(e.target).prev()[0]) || {} ).checkBox;
112
- toggleHover(e, inst);
113
- })
114
- .bind('click.checkBox', function(e){
115
- if(!$.nodeName(e.target, 'span') || !baseClasses.test( e.target.className || '' )){return;}
116
- $(e.target).prev()[0].click();
117
- return false;
118
- })
119
- ;
120
- }
121
- if(opts.addLabel){
122
- this.element
123
- .delegate('label.ui-radio, label.ui-checkbox', 'mouseenter.checkBox mouseleave.checkBox', function(e){
124
- var inst = ( $.data(document.getElementById( $(this).attr('for') )) || {} ).checkBox;
125
- toggleHover( e, inst );
126
- });
127
- }
128
-
129
- },
130
- _addEvents: function(){
131
- var that = this,
132
-
133
- opts = this.options,
134
-
135
- toggleHover = function(e){
136
- if(that.disabledStatus){
137
- return false;
138
- }
139
- that.hover = (e.type == 'focus' || e.type == 'mouseenter');
140
- that._changeStateClassChain();
141
- return undefined;
142
- }
143
- ;
144
-
145
- this.element
146
- .bind('click.checkBox', $.proxy(this, 'reflectUI'))
147
- .bind('focus.checkBox blur.checkBox', toggleHover)
148
- ;
149
- if (opts.hideInput){
150
- this.element
151
- .bind('usermode', function(e){
152
- (e.enabled &&
153
- that.destroy.call(that, true));
154
- })
155
- ;
156
- }
157
- if(opts.addVisualElement){
158
- this.visualElement
159
- .bind('mouseenter.checkBox mouseleave.checkBox', toggleHover)
160
- .bind('click.checkBox', function(e){
161
- that.element[0].click();
162
- return false;
163
- })
164
- ;
165
- }
166
- if(opts.addLabel){
167
- this.labels.bind('mouseenter.checkBox mouseleave.checkBox', toggleHover);
168
- }
169
- },
170
- _changeStateClassChain: function(){
171
- var allElements = this.labels.add(this.visualElement),
172
- stateClass = '',
173
- baseClass = 'ui-'+((this.radio) ? 'radio' : 'checkbox')
174
- ;
175
-
176
- if(this.checkedStatus){
177
- stateClass += '-checked';
178
- allElements.addClass(baseClass+'-checked');
179
- } else {
180
- allElements.removeClass(baseClass+'-checked');
181
- }
182
-
183
- if(this.disabledStatus){
184
- stateClass += '-disabled';
185
- allElements.addClass(baseClass+'-disabled');
186
- } else {
187
- allElements.removeClass(baseClass+'-disabled');
188
- }
189
- if(this.hover){
190
- stateClass += '-hover';
191
- allElements.addClass(baseClass+'-hover');
192
- } else {
193
- allElements.removeClass(baseClass+'-hover');
194
- }
195
-
196
- baseClass += '-state';
197
- if(stateClass){
198
- stateClass = baseClass + stateClass;
199
- }
200
-
201
- function switchStateClass(){
202
- var classes = this.className.split(' '),
203
- found = false;
204
- $.each(classes, function(i, classN){
205
- if(classN.indexOf(baseClass) === 0){
206
- found = true;
207
- classes[i] = stateClass;
208
- return false;
209
- }
210
- return undefined;
211
- });
212
- if(!found){
213
- classes.push(stateClass);
214
- }
215
- this.className = classes.join(' ');
216
- }
217
-
218
- this.labels.each(switchStateClass);
219
- this.visualElement.each(switchStateClass);
220
- },
221
- destroy: function(onlyCss){
222
- this.element.removeClass('ui-helper-hidden-accessible');
223
- if(this.visualElement){
224
- this.visualElement.addClass('ui-helper-hidden');
225
- }
226
- if (!onlyCss) {
227
- var o = this.options;
228
- this.element.unbind('.checkBox');
229
- if(this.visualElement){
230
- this.visualElement.remove();
231
- }
232
- if(this.labels){
233
- this.labels.unbind('.checkBox').removeClass('ui-state-hover ui-state-checked ui-state-disabled');
234
- }
235
- }
236
- },
237
-
238
- disable: function(){
239
- this.element[0].disabled = true;
240
- this.reflectUI({type: 'manuallyDisabled'});
241
- },
242
-
243
- enable: function(){
244
- this.element[0].disabled = false;
245
- this.reflectUI({type: 'manuallyenabled'});
246
- },
247
-
248
- toggle: function(e){
249
- this.changeCheckStatus((this.element.is(':checked')) ? false : true, e);
250
- },
251
-
252
- changeCheckStatus: function(status, e){
253
- if(e && e.type == 'click' && this.element[0].disabled){
254
- return false;
255
- }
256
- this.element.attr({'checked': status});
257
- this.reflectUI(e || {
258
- type: 'changeCheckStatus'
259
- });
260
- return undefined;
261
- },
262
-
263
- propagate: function(n, e, _noGroupReflect){
264
- if(!e || e.type != 'initialReflect'){
265
- if (this.radio && !_noGroupReflect) {
266
- //dynamic
267
- $(document.getElementsByName(this.element.attr('name')))
268
- .checkBox('reflectUI', e, true);
269
- }
270
- return this._trigger(n, e, {
271
- options: this.options,
272
- checked: this.checkedStatus,
273
- labels: this.labels,
274
- disabled: this.disabledStatus
275
- });
276
- }
277
- return undefined;
278
- },
279
-
280
- reflectUI: function(e){
281
-
282
- var oldChecked = this.checkedStatus,
283
- oldDisabledStatus = this.disabledStatus;
284
-
285
- this.disabledStatus = this.element.is(':disabled');
286
- this.checkedStatus = this.element.is(':checked');
287
-
288
- if (this.disabledStatus != oldDisabledStatus || this.checkedStatus !== oldChecked) {
289
-
290
- //Change status callback
291
-
292
- if (this.checkedStatus==true){
293
- var id = this.element[0].id;
294
- checkBoxEnable(id);
295
- } else if (this.checkedStatus==false){
296
- var id = this.element[0].id;
297
- checkBoxDisable(id);
298
- }
299
-
300
- this._changeStateClassChain();
301
-
302
- (this.disabledStatus != oldDisabledStatus && this.propagate('disabledChange', e));
303
-
304
- (this.checkedStatus !== oldChecked && this.propagate('change', e));
305
- }
306
-
307
- }
308
- });
309
- });