Modified: trunk/app/controllers/networks_controller.rb (2940 => 2941)
--- trunk/app/controllers/networks_controller.rb 2012-02-22 04:10:39 UTC (rev 2940)
+++ trunk/app/controllers/networks_controller.rb 2012-02-22 09:15:13 UTC (rev 2941)
@@ -68,11 +68,19 @@
logger.error("EXCEPTION:" + e)
end
- flash[:notice] = 'An invitation has been sent to the User.'
- format.html { redirect_to network_url(@network) }
+ if request.xhr?
+ format.html { render :nothing => :true, :status => 200 }
+ else
+ flash[:notice] = 'An invitation has been sent to the User.'
+ format.html { redirect_to network_url(@network) }
+ end
else
- flash[:error] = 'Failed to send invitation to User. Please try again or report this.'
- format.html { redirect_to invite_network_url(@network) }
+ if request.xhr?
+ format.html { render :nothing => :true, :status => 400 }
+ else
+ flash[:error] = 'Failed to send invitation to User. Please try again or report this.'
+ format.html { redirect_to invite_network_url(@network) }
+ end
end
end
else
@@ -82,7 +90,11 @@
flash[:error] = "User invited is already a member of the group"
end
respond_to do |format|
- format.html { redirect_to invite_network_url(@network) }
+ if request.xhr?
+ format.html { render :nothing => :true, :status => 403 }
+ else
+ format.html { redirect_to invite_network_url(@network) }
+ end
end
end
end
Modified: trunk/app/views/networks/_invite.rhtml (2940 => 2941)
--- trunk/app/views/networks/_invite.rhtml 2012-02-22 04:10:39 UTC (rev 2940)
+++ trunk/app/views/networks/_invite.rhtml 2012-02-22 09:15:13 UTC (rev 2941)
@@ -1,52 +1,53 @@
+<% networks = current.networks_admined(true) %>
+
<script type="text/_javascript_">
+
+ var invites_in_progress = 0;
+
+ function networkInvitationPending(network_id) {
+ $('group_invite_spinner').show();
+ $('my_network_font_' + network_id).setStyle({color:'red'});
+ $('my_network_' + network_id).disabled = true;
+ //Disable button
+ $("my_networks_button").disabled = true;
+ $("my_networks_button").value = "Inviting (" +
+ invites_in_progress + ((invites_in_progress % 10) == 1 ? " request" : " requests") + " in progress)";
+ }
+
+ function networkInvitationDone(network_id, success) {
+ if(success) {
+ $('my_network_font_' + network_id).setStyle({color:'green'});
+ }
+ else {
+ $('my_network_' + network_id + '_status').update("(An error occurred when sending the invitation)");
+ }
+ $('my_network_' + network_id + '_status').show();
+
+ invites_in_progress--;
+ if (invites_in_progress == 0) {
+ $("my_networks_button").value = "Invite";
+ $("my_networks_button").disabled = false;
+ $('group_invite_spinner').hide();
+ }
+ else {
+ $("my_networks_button").value = "Inviting (" +
+ invites_in_progress + ((invites_in_progress % 10) == 1 ? " request" : " requests") + " in progress)";
+ }
+ }
+
function inviteAndDisable() {
- var invites_in_progress = 0;
-
- <% current.networks_owned.each do |n| %>
+ <% networks.each do |n| %>
<% unless n.member?(user.id) || user.membership_pending?(n.id) %>
- if ($("my_network_<%= n.id %>").checked && !$("my_network_<%= n.id %>").disabled) {
+ if ($("my_network_<%= n.id -%>").checked && !$("my_network_<%= n.id -%>").disabled) {
+ <%= remote_function(:url ="" membership_invite_network_path(n),
+ :method => :post,
+ :loading => "networkInvitationPending(#{n.id});",
+ :success => "networkInvitationDone(#{n.id}, true);",
+ :failure => "networkInvitationDone(#{n.id}, false);",
+ :form => false,
+ :with => "'user_id=#{user.id}&membership[message]='") -%>;
+
invites_in_progress++;
- var xmlhttp_<%= n.id %> = new XMLHttpRequest();
- var xmlhttp_<%= n.id %>_params = "&user_id=<%= user.id %>&membership[message]=";
-
- xmlhttp_<%= n.id %>.open('POST', '<%= membership_invite_network_path(n) %>', true);
-
- // Send the proper header information along with the request
- xmlhttp_<%= n.id %>.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
- xmlhttp_<%= n.id %>.setRequestHeader("Content-length", xmlhttp_<%= n.id %>_params.length);
- xmlhttp_<%= n.id %>.setRequestHeader("Connection", "close");
-
- xmlhttp_<%= n.id %>. {
- $("my_network_<%= n.id %>").disabled = true;
-
- // DEBUG
- // alert("ready state : " + xmlhttp_<%= n.id %>.readyState + "\nstatus: " + xmlhttp_<%= n.id %>.status + "\nresponse: " + xmlhttp_<%= n.id %>.responseText);
- // END OF DEBUG
-
- if (xmlhttp_<%= n.id %>.readyState == 4 && xmlhttp_<%= n.id %>.status == 200)
- {
- invites_in_progress--;
- $("my_networks_button").value = "Inviting (" + invites_in_progress + ((invites_in_progress % 10) == 1 ? " request" : " requests") + " in progress)";
-
- $("my_network_font_<%= n.id %>").color = "green";
- $("my_network_<%= n.id %>_status").show();
-
- if (invites_in_progress == 0)
- {
- $("my_networks_button").value = "Invite";
- $("my_networks_button").disabled = false;
- }
- }
- else
- {
- $("my_network_font_<%= n.id %>").color = "red";
- $("my_networks_button").disabled = true;
- // $("my_networks_button").value = "Inviting (<%= h(n.title) %>)";
- $("my_networks_button").value = "Inviting (" + invites_in_progress + ((invites_in_progress % 10) == 1 ? " request" : " requests") + " in progress)";
- }
- }
-
- xmlhttp_<%= n.id %>.send(xmlhttp_<%= n.id %>_params);
}
<% end %>
<% end %>
@@ -62,18 +63,18 @@
</p>
<form>
- <% networks_owned = current.networks_owned -%>
- <% networks_owned.each_index do |index| %>
- <% n = networks_owned[index] -%>
+ <% networks.each_with_index do |n, index| %>
<% if n.member?(user.id) %>
- <input type="checkbox" id="my_network_<%= n.id %>" value="<%= n.id %>" disabled=true CHECKED /> - <font color="green"><%= h(n.title) %></font> (already a member)
+ <input type="checkbox" id="my_network_<%= n.id -%>" value="<%= n.id -%>" disabled=true CHECKED /> - <span style="color: green"><%= h(n.title) -%></span> (already a member)
<% elsif user.membership_pending?(n.id) %>
- <input type="checkbox" id="my_network_<%= n.id %>" value="<%= n.id %>" disabled=true CHECKED /> - <font color="green"><%= h(n.title) %></font> (waiting for the user to confirm)
+ <input type="checkbox" id="my_network_<%= n.id -%>" value="<%= n.id -%>" disabled=true CHECKED /> - <span style="color: green"><%= h(n.title) -%></span> (waiting for the user to confirm)
<% else %>
- <label for="" n.id %>"><input type="checkbox" id="my_network_<%= n.id %>" value="<%= n.id %>"/> - <font id="my_network_font_<%= n.id %>"><%= h(n.title) %></font></label><span style="display: none;" id="my_network_<%= n.id %>_status"> (invitation was sent successfully)</span>
+ <input type="checkbox" id="my_network_<%= n.id -%>" value="<%= n.id -%>"/>
+ <label for="" n.id %>"> - <span id="my_network_font_<%= n.id %>"><%= h(n.title) %></span></label>
+ <span style="display: none;" id="my_network_<%= n.id -%>_status"> (invitation was sent successfully)</span>
<% end %>
- <%= "<br />" unless (index.to_i == (networks_owned.length.to_i - 1)) %>
+ <%= "<br />" unless (index.to_i == (networks.length - 1)) %>
<% end %>
<br/>
@@ -81,6 +82,7 @@
<p>
<input id="my_networks_button" type="button" value="Invite" />
+ <img style="display: none" id="group_invite_spinner" src="" />
</p>
</form>