social_stream 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. data/Rakefile +0 -12
  2. data/app/controllers/activities_controller.rb +17 -1
  3. data/app/controllers/api_controller.rb +2 -2
  4. data/app/controllers/avatars_controller.rb +44 -0
  5. data/app/controllers/contacts_controller.rb +13 -21
  6. data/app/controllers/conversations_controller.rb +107 -0
  7. data/app/controllers/groups_controller.rb +7 -11
  8. data/app/controllers/messages_controller.rb +21 -88
  9. data/app/controllers/profiles_controller.rb +3 -1
  10. data/app/controllers/pshb_controller.rb +37 -1
  11. data/app/controllers/ties_controller.rb +7 -8
  12. data/app/controllers/users_controller.rb +19 -43
  13. data/app/helpers/location_helper.rb +34 -0
  14. data/app/helpers/subjects_helper.rb +18 -1
  15. data/app/models/activity.rb +67 -27
  16. data/app/models/activity_verb.rb +1 -1
  17. data/app/models/actor.rb +85 -37
  18. data/app/models/avatar.rb +90 -0
  19. data/app/models/group.rb +2 -2
  20. data/app/models/profile.rb +8 -0
  21. data/app/models/tie.rb +20 -22
  22. data/app/models/user.rb +2 -8
  23. data/app/views/activities/_index.html.erb +22 -0
  24. data/app/views/activities/_options.html.erb +3 -1
  25. data/app/views/activities/_root.html.erb +4 -2
  26. data/app/views/activities/_walls.html.erb +34 -0
  27. data/app/views/activities/index.js.erb +1 -0
  28. data/app/views/avatars/_form.html.erb +23 -0
  29. data/app/views/{logos → avatars}/_precrop.html.erb +23 -15
  30. data/app/views/avatars/edit.html.erb +6 -0
  31. data/app/views/avatars/index.html.erb +42 -0
  32. data/app/views/{logos → avatars}/new.html.erb +7 -11
  33. data/app/views/avatars/show.html.erb +5 -0
  34. data/app/views/contacts/_index.html.erb +33 -0
  35. data/app/views/contacts/index.html.erb +35 -2
  36. data/app/views/contacts/index.js.erb +1 -0
  37. data/app/views/conversations/_conversation.html.erb +37 -0
  38. data/app/views/conversations/_conversation_full.html.erb +52 -0
  39. data/app/views/{messages → conversations}/_conversations.html.erb +2 -1
  40. data/app/views/conversations/_index.html.erb +23 -0
  41. data/app/views/{messages → conversations}/_menu_options.html.erb +2 -2
  42. data/app/views/conversations/_show.html.erb +21 -0
  43. data/app/views/{messages → conversations}/edit.html.erb +0 -0
  44. data/app/views/{messages → conversations}/index.html.erb +1 -3
  45. data/app/views/conversations/index.js.erb +7 -0
  46. data/app/views/conversations/show.html.erb +47 -0
  47. data/app/views/conversations/show.js.erb +39 -0
  48. data/app/views/frontpage/_header.html.erb +5 -1
  49. data/app/views/groups/_new.html.erb +50 -48
  50. data/app/views/groups/_sidebar_show.html.erb +1 -1
  51. data/app/views/groups/index.html.erb +1 -1
  52. data/app/views/groups/new.html.erb +6 -1
  53. data/app/views/groups/show.html.erb +1 -3
  54. data/app/views/home/_menu.html.erb +46 -0
  55. data/app/views/home/_sidebar.html.erb +12 -0
  56. data/app/views/home/index.html.erb +3 -3
  57. data/app/views/layouts/application.html.erb +1 -1
  58. data/app/views/layouts/test.html +58 -41
  59. data/app/views/location/_location.html.erb +3 -0
  60. data/app/views/messages/_form.html.erb +5 -52
  61. data/app/views/messages/_message.html.erb +31 -0
  62. data/app/views/messages/_new.html.erb +10 -16
  63. data/app/views/messages/new.html.erb +48 -3
  64. data/app/views/messages/new.js.erb +38 -1
  65. data/app/views/profiles/_profile.html.erb +194 -0
  66. data/app/views/profiles/edit.html.erb +168 -0
  67. data/app/views/profiles/show.html.erb +2 -175
  68. data/app/views/{users → profiles}/update.js.erb +12 -15
  69. data/app/views/subjects/_contacts.html.erb +2 -3
  70. data/app/views/subjects/_toolbar_home.html.erb +1 -1
  71. data/app/views/subjects/_toolbar_home_menu.html.erb +4 -1
  72. data/app/views/subjects/_toolbar_home_menu_options.html.erb +4 -7
  73. data/app/views/subjects/_toolbar_home_menu_options_subjects.html.erb +0 -3
  74. data/app/views/subjects/_toolbar_logo.html.erb +1 -1
  75. data/app/views/subjects/_toolbar_message_menu.html.erb +17 -0
  76. data/app/views/subjects/_toolbar_profile.html.erb +4 -12
  77. data/app/views/subjects/_toolbar_profile_menu.html.erb +9 -10
  78. data/app/views/subjects/_toolbar_profile_menu_basic_options.html.erb +6 -5
  79. data/app/views/subjects/_toolbar_profile_menu_tie_options.html.erb +13 -13
  80. data/app/views/ties/_new.html.erb +30 -25
  81. data/app/views/ties/_suggestions.html.erb +1 -0
  82. data/app/views/ties/new.js.erb +2 -0
  83. data/app/views/users/_index.html.erb +1 -1
  84. data/app/views/users/index.html.erb +1 -3
  85. data/app/views/users/show.html.erb +4 -3
  86. data/config/locales/en.yml +79 -24
  87. data/config/routes.rb +8 -2
  88. data/lib/generators/social_stream/install_generator.rb +1 -1
  89. data/lib/generators/social_stream/templates/migration.rb +17 -11
  90. data/lib/generators/social_stream/templates/public/images/btn/message_conversation.png +0 -0
  91. data/lib/generators/social_stream/templates/public/images/btn/message_inbox.png +0 -0
  92. data/lib/generators/social_stream/templates/public/images/btn/message_new.png +0 -0
  93. data/lib/generators/social_stream/templates/public/images/btn/message_sentbox.png +0 -0
  94. data/lib/generators/social_stream/templates/public/images/btn/message_trash.png +0 -0
  95. data/lib/generators/social_stream/templates/public/javascripts/ajax.paginate.js +1 -1
  96. data/lib/generators/social_stream/templates/public/javascripts/menu.js +9 -99
  97. data/lib/generators/social_stream/templates/public/stylesheets/default/base.css +14 -5
  98. data/lib/generators/social_stream/templates/public/stylesheets/default/home.css +1 -0
  99. data/lib/generators/social_stream/templates/public/stylesheets/default/jquery-ui.css +13 -10
  100. data/lib/generators/social_stream/templates/public/stylesheets/default/menu.css +5 -11
  101. data/lib/generators/social_stream/templates/public/stylesheets/default/messages.css +96 -20
  102. data/lib/generators/social_stream/templates/relations.yml +1 -0
  103. data/lib/paperclip/social_stream.rb +1 -1
  104. data/lib/social_stream/ability.rb +1 -0
  105. data/lib/social_stream/controllers/helpers.rb +20 -0
  106. data/lib/social_stream/models/subject.rb +13 -12
  107. data/lib/social_stream/rails.rb +4 -1
  108. data/lib/social_stream/version.rb +1 -1
  109. data/lib/tasks/db/populate.rake +14 -4
  110. data/social_stream.gemspec +31 -5
  111. data/spec/controllers/contacts_controller_spec.rb +6 -0
  112. data/spec/controllers/profiles_controller_spec.rb +3 -4
  113. data/spec/dummy/config/initializers/devise.rb +4 -1
  114. data/spec/dummy/config/relations.yml +1 -0
  115. data/spec/models/activity_spec.rb +24 -0
  116. metadata +91 -89
  117. data/app/controllers/logos_controller.rb +0 -37
  118. data/app/models/logo.rb +0 -88
  119. data/app/views/activities/_activities.html.erb +0 -46
  120. data/app/views/groups/_profile.html.erb +0 -142
  121. data/app/views/groups/edit.html.erb +0 -135
  122. data/app/views/groups/update.js.erb +0 -39
  123. data/app/views/logos/_form.html.erb +0 -33
  124. data/app/views/logos/edit.html.erb +0 -6
  125. data/app/views/logos/index.html.erb +0 -27
  126. data/app/views/logos/show.html.erb +0 -5
  127. data/app/views/menu/_group.html.erb +0 -15
  128. data/app/views/menu/_home_user.html.erb +0 -0
  129. data/app/views/menu/_optionsGroups.html.erb +0 -11
  130. data/app/views/menu/_optionsUser.html.erb +0 -11
  131. data/app/views/menu/_services.html.erb +0 -11
  132. data/app/views/menu/_tiesGroup.html.erb +0 -14
  133. data/app/views/menu/_tiesUser.html.erb +0 -11
  134. data/app/views/menu/_user.html.erb +0 -15
  135. data/app/views/messages/_conversation.html.erb +0 -34
  136. data/app/views/messages/_conversation_full.html.erb +0 -65
  137. data/app/views/messages/_index.html.erb +0 -19
  138. data/app/views/messages/_location.html.erb +0 -3
  139. data/app/views/messages/_show.html.erb +0 -22
  140. data/app/views/messages/index.js.erb +0 -1
  141. data/app/views/messages/show.html.erb +0 -10
  142. data/app/views/messages/show.js.erb +0 -1
  143. data/app/views/users/_profile.html.erb +0 -171
  144. data/app/views/users/_sidebar_show.html.erb +0 -1
  145. data/app/views/users/edit.html.erb +0 -194
@@ -1,37 +0,0 @@
1
- class LogosController < InheritedResources::Base
2
- =begin
3
- def new
4
- # if params[:logo_logo].present?
5
- # render :template => "logos/_precrop", :layout => false
6
- # end
7
- debugger
8
- if params[:logo_logo]
9
-
10
- end
11
- respond_to do |format|
12
- format.html #new.html.erb
13
- end
14
-
15
- end
16
- =end
17
- begin
18
- def create
19
- @logo = Logo.create(params[:logo])
20
- #debugger
21
- #{:original=>#<File:/var/folders/EZ/EZmst6HwE0ipKa3hozX2Zk+++TI/-Tmp-/stream20110322-5217-ft6j6l-0.jpg>}
22
-
23
-
24
- if @logo.new_record?
25
- render :new
26
- else
27
- #redirect_to @logo
28
- redirect_to logos_path
29
- end
30
-
31
-
32
-
33
-
34
- end
35
- end
36
-
37
- end
data/app/models/logo.rb DELETED
@@ -1,88 +0,0 @@
1
- require 'RMagick'
2
-
3
- class Logo < ActiveRecord::Base
4
- has_attached_file :logo,
5
- :styles => { :tie => "30x30>",
6
- :actor => '35x35>',
7
- :profile => '94x94' },
8
- :default_url => "/images/:attachment/:style/:subtype_class.png"
9
-
10
- before_post_process :process_precrop
11
- # before_post_process :copy_temp_file
12
- attr_accessor :crop_x, :crop_y, :crop_w, :crop_h, :name
13
- validates_attachment_presence :logo, :if => :uploading_file?
14
-
15
- after_validation :precrop_done
16
- # after_validation :mylog
17
-
18
-
19
- def uploading_file?
20
- return @name.blank?
21
- end
22
-
23
- def precrop_done
24
- return if @name.blank?
25
-
26
- images_path = File.join(RAILS_ROOT, "public", "images")
27
- tmp_path = FileUtils.mkdir_p(File.join(images_path, "tmp"))
28
- precrop_path = File.join(tmp_path,@name)
29
-
30
- make_precrop(precrop_path,@crop_x.to_i,@crop_y.to_i,@crop_w.to_i,@crop_h.to_i)
31
- @logo = Logo.new :logo => File.open(precrop_path), :name => @name
32
-
33
- self.logo = @logo.logo
34
-
35
- FileUtils.remove_file(precrop_path)
36
- end
37
-
38
- def copy_temp_file
39
- images_path = File.join(RAILS_ROOT, "public", "images")
40
- tmp_path = FileUtils.mkdir_p(File.join(images_path, "tmp"))
41
- end
42
-
43
- def process_precrop
44
-
45
- if @name.blank? && ( logo.content_type.present? && !logo.content_type.start_with?("image/"))
46
- logo.errors['invalidType'] = "The file you uploaded isn't valid"
47
- return false
48
- end
49
-
50
- return if !@name.blank?
51
- logo.errors['precrop'] = "You have to make precrop"
52
-
53
- images_path = File.join(RAILS_ROOT, "public", "images")
54
- tmp_path = FileUtils.mkdir_p(File.join(images_path, "tmp"))
55
-
56
- resize_image(logo.queued_for_write[:original].path,500,500)
57
-
58
- my_file_name = File.basename(logo.queued_for_write[:original].path)
59
- FileUtils.cp(logo.queued_for_write[:original].path,tmp_path)
60
- temp_file = File.open(logo.queued_for_write[:original].path, "w+")
61
- end
62
-
63
- def image_dimensions(name)
64
- images_path = File.join(RAILS_ROOT, "public", "images")
65
- tmp_path = FileUtils.mkdir_p(File.join(images_path, "tmp"))
66
- file_path = File.join(tmp_path,name)
67
-
68
- img_orig = Magick::Image.read(file_path).first
69
- dimensions = {}
70
- dimensions[:width] = img_orig.columns
71
- dimensions[:height] = img_orig.rows
72
- dimensions
73
- end
74
-
75
- def resize_image(path,width,height)
76
- img_orig = Magick::Image.read(path).first
77
- img_orig = img_orig.resize_to_fit(width, height)
78
- img_orig.write(path)
79
- end
80
-
81
- def make_precrop(path,x,y,width,height)
82
- img_orig = Magick::Image.read(path).first
83
- crop_args = [x,y,width,height]
84
- img_orig = img_orig.crop(*crop_args)
85
- img_orig.write(path)
86
- end
87
- end
88
-
@@ -1,46 +0,0 @@
1
- <% content_for :headers do %>
2
- <%= stylesheet_link_tag "activities", :media => "screen, projection" %>
3
- <%= stylesheet_link_tag "jquery-ui", :media => "screen, projection" %>
4
- <% end %>
5
-
6
- <% content_for :javascript do %>
7
- <%= render :partial => 'activities/jquery' %>
8
- $(document).ready(function() {
9
- $("#tabs").tabs();
10
- });
11
- <% end -%>
12
-
13
- <div id="wrapper_activities">
14
- <div id="wrapper_activities_header">
15
- <div id="activities_title" class="content_size">
16
- <%= image_tag("btn/btn_activities.png") %> <%=t('activity.other')%>
17
- </div>
18
- <%= render :partial => 'activities/new', :locals => { :receiver => owner } %>
19
- </div>
20
-
21
- <div id="tabs">
22
- <ul>
23
- <li><a href="#fragment-1"><span>Group</span></a></li>
24
- <li><a href="#fragment-2"><span>Followers</span></a></li>
25
- <li><a href="#fragment-3"><span>Partners</span></a></li>
26
- </ul>
27
- <div id="fragment-1">
28
- <div id="wall">
29
- <% activities = activities.paginate(:page => params[:page]) %>
30
- <%- # should be activities.paginate(:page => params[:page], :count => { :select => 'activity.id', :distinct => true }) but it is not working in Rails 3.0.3 -%>
31
- <%= render activities %>
32
- <%= will_paginate activities %>
33
- </div>
34
- </div>
35
- <div id="fragment-2">
36
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
37
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
38
- </div>
39
- <div id="fragment-3">
40
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
41
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
42
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
43
- </div>
44
- </div>
45
-
46
- </div>
@@ -1,142 +0,0 @@
1
- <% content_for :head do %>
2
- <%= stylesheet_link_tag "edit_user", :media => "screen, projection" %>
3
- <% end %>
4
- <div class="space_center"></div>
5
-
6
- <div class="block" id="personal_info" >
7
- <div class="header">
8
- <div class="header_text">
9
- Group Information
10
- </div>
11
- <div class="header_icon_right">
12
- <%= link_to (image_tag('/images/btn/edit.png')), :controller => :groups, :action => :edit, :section => :about_us %>
13
- </div>
14
- </div>
15
- <div class="content">
16
-
17
- <% if @group.profile.organization? %>
18
- <div class="row">
19
- <div class="label">
20
- Organization:
21
- </div>
22
- <div class="field">
23
- <%=h @group.profile.organization %>
24
- </div>
25
- </div>
26
- <%end%>
27
- <% if @group.profile.city? %>
28
- <div class="row">
29
- <div class="label">
30
- City:
31
- </div>
32
- <div class="field">
33
- <%=h @group.profile.city %>
34
- <% if @group.profile.country? %>
35
- , <%=@group.profile.country%>
36
- <%end%>
37
- </div>
38
- </div>
39
- <%end%>
40
- <% if @group.profile.description? %>
41
- <div class="row">
42
- <div class="label">
43
- Description:
44
- </div>
45
- <div class="field">
46
- <%=h @group.profile.description %>
47
- </div>
48
- </div>
49
- <%end%>
50
- <div class="row">
51
- <div class="label">
52
- Group created at:
53
- </div>
54
- <div class="field">
55
- <%=h h I18n.l @group.created_at, :format => :long %>
56
- </div>
57
- </div>
58
- <div class="row">
59
- <div class="label">
60
- Group updated at:
61
- </div>
62
- <div class="field">
63
- <%=h I18n.l @group.updated_at, :format => :long %>
64
- </div>
65
- </div>
66
- </div>
67
- </div>
68
-
69
- <div class="block" id="contact_info">
70
- <div class="header">
71
- <div class="header_text">
72
- Contact Information
73
- </div>
74
- <div class="header_icon_right">
75
- <%= link_to (image_tag('/images/btn/edit.png')), :controller => :groups, :action => :edit, :section => :contact_info %>
76
- </div>
77
- </div>
78
- <div class="content">
79
- <% if @group.profile.phone? %>
80
- <div class="row">
81
- <div class="label">
82
- Phone
83
- </div>
84
- <div class="field">
85
- <%=h @group.profile.phone %>
86
- </div>
87
- </div>
88
- <%end%>
89
- <% if @group.profile.mobile? %>
90
- <div class="row">
91
- <div class="label">
92
- Mobile
93
- </div>
94
- <div class="field">
95
- <%=h @group.profile.mobile %>
96
- </div>
97
- </div>
98
- <%end%>
99
- <% if @group.profile.fax? %>
100
- <div class="row">
101
- <div class="label">
102
- Fax
103
- </div>
104
- <div class="field">
105
- <%=h @group.profile.fax %>
106
- </div>
107
- </div>
108
- <%end%>
109
- <% if @group.profile.address? %>
110
- <div class="row">
111
- <div class="label">
112
- Address
113
- </div>
114
- <div class="field">
115
- <%=h @group.profile.address %>
116
- </div>
117
- </div>
118
- <%end%>
119
- <% if @group.profile.website? %>
120
- <div class="row">
121
- <div class="label">
122
- Website
123
- </div>
124
- <div class="field">
125
- <a href="<%=h @group.profile.website %>"><%=h @group.profile.website %></a>
126
- </div>
127
- </div>
128
- <%end%>
129
- <% if @group.email.present? %>
130
- <div class="row">
131
- <div class="label">
132
- E-mail:
133
- </div>
134
- <div class="field">
135
- <%=h @group.email %>
136
- </div>
137
- </div>
138
- <%end%>
139
- </div>
140
-
141
- </div>
142
- </div>
@@ -1,135 +0,0 @@
1
- <% toolbar :option => :groups %>
2
-
3
- <% content_for :sidebar do %>
4
- <%= render :partial => 'sidebar_show' %>
5
- <% end %>
6
- <% content_for :headers do %>
7
- <%= stylesheet_link_tag "edit_user", :media => "screen, projection" %>
8
- <%= javascript_include_tag 'jquery.validate' %>
9
- <% end %>
10
- <%= form_for(@group, :remote => true) do |f| %>
11
- <% if @group.errors.any? %>
12
- <div id="error_explanation">
13
- <h2><%= pluralize(@group.errors.count, "error") %>prohibited this group from being saved:</h2>
14
- <ul>
15
- <% @group.errors.full_messages.each do |msg| %>
16
- <li>
17
- <%= msg %>
18
- </li>
19
- <% end %>
20
- </ul>
21
- </div>
22
- <% end %>
23
- <% content_for :javascript do %>
24
- $(function() {
25
- $("#content").css('border-bottom', 'none');
26
- $(".edit_group").validate();
27
- });
28
- <% end %>
29
- <div class="block">
30
- <% if !params[:section].present? or params[:section].eql?("about_us") %>
31
- <div class="form_row">
32
- <h2><%=t('edit.group_info')%></h2>
33
- </div>
34
- <div class="form_row">
35
- <div class="form_label">
36
- <%= f.label :name %>
37
- </div>
38
- <div class="form_field">
39
- <%= f.text_field :name, :class => "required form_tag" %>
40
- </div>
41
- </div>
42
- <%= f.fields_for :profile do |profile_form| %>
43
- <div class="form_row">
44
- <div class="form_label">
45
- <%= profile_form.label :organization %>
46
- </div>
47
- <div class="form_field">
48
- <%= profile_form.text_field :organization , :class => "form_tag" %>
49
- </div>
50
- </div>
51
- <div class="form_row">
52
- <div class="form_label">
53
- <%= profile_form.label :city %>
54
- </div>
55
- <div class="form_field">
56
- <%= profile_form.text_field :city, :class => "form_tag" %>
57
- </div>
58
- </div>
59
- <div class="form_row">
60
- <div class="form_label">
61
- <%= profile_form.label :country %>
62
- </div>
63
- <div class="form_field">
64
- <%= profile_form.text_field :country, :class => "form_tag" %>
65
- </div>
66
- </div>
67
- <div class="form_row form_label">
68
- <%= profile_form.label :description %>
69
- </div>
70
- <div class="form_row">
71
- <%= profile_form.text_area :description, :maxlength => 400, :class => "form_tag" %>
72
- </div>
73
-
74
- <% end %>
75
- <% end %>
76
- <% if !params[:section].present? or params[:section].eql?("contact_info") %>
77
- <% content_for :javascript do %>
78
- $(function() {
79
- $("#contact_info").addClass('section_highlight');
80
- });
81
- <% end %>
82
- <div class="form_row">
83
- <h2><%=t('edit.contact')%></h2>
84
- </div>
85
- <%= f.fields_for :profile do |profile_form| %>
86
- <div class="form_row">
87
- <div class="form_label">
88
- <%= profile_form.label :phone %>
89
- </div>
90
- <div class="form_field">
91
- <%= profile_form.text_field :phone, :class => "phone form_tag" %>
92
- </div>
93
- </div>
94
- <div class="form_row">
95
- <div class="form_label">
96
- <%= profile_form.label :mobile %>
97
- </div>
98
- <div class="form_field">
99
- <%= profile_form.text_field :mobile, :class => "phone form_tag" %>
100
- </div>
101
- </div>
102
- <div class="form_row">
103
- <div class="form_label">
104
- <%= profile_form.label :fax %>
105
- </div>
106
- <div class="form_field">
107
- <%= profile_form.text_field :fax, :class => "phone form_tag" %>
108
- </div>
109
- </div>
110
- <div class="form_row">
111
- <div class="form_label">
112
- <%= profile_form.label :address %>
113
- </div>
114
- <div class="form_field">
115
- <%= profile_form.text_field :address, :class => "form_tag" %>
116
- </div>
117
- </div>
118
- <div class="form_row">
119
- <div class="form_label">
120
- <%= profile_form.label :website %>
121
- </div>
122
- <div class="form_field">
123
- <%= profile_form.text_field :website, :class => "url form_tag" %>
124
- </div>
125
- </div>
126
- <% end %>
127
- <% end %>
128
- </div>
129
- <div class="form_row space_center">
130
- <%= f.submit "Update", :class => "button" %>&nbsp;
131
- <button class="button" onclick="window.location.href='<%= group_url(@group) %>';">
132
- Cancel
133
- </button>
134
- </div>
135
- <% end %>