<% s = @site admin_ids = Caboose::SiteMembership.where(:site_id => s.id, :role => Caboose::SiteMembership::ROLE_ADMIN).pluck(:user_id) user_ids = Caboose::SiteMembership.where(:site_id => s.id, :role => Caboose::SiteMembership::ROLE_USER ).pluck(:user_id) admin_ids = [] if admin_ids.nil? user_ids = [] if user_ids.nil? %> <%= render :partial => 'caboose/sites/admin_header' %> <p><div id='site_<%= @site.id %>_name' ></div></p> <p><div id='site_<%= @site.id %>_description' ></div></p> <p><div id='site_<%= @site.id %>_under_construction_html' ></div></p> <h2>Domains</h2> <p><a href='#' onclick="add_domain(<%= @site.id %>);">New Domain</a></p> <div id='new_domain_container'></div> <% if @site.domains && @site.domains.count > 0 %> <table class='data'> <tr> <th>Domain</th> <th>Primary</th> <th>Under Construction</th> <th>Delete</th> </tr> <% @site.domains.all.each do |d| %> <tr> <td><%= d.domain %></td> <td align='center'><input type='radio' name='primary_domain' <%= d.primary? ? "checked='true'" : '' %> onclick="set_primary_domain(<%= s.id %>, <%= d.id %>);" /></td> <td align='center'><input type='checkbox' name='under_construction_<%= d.id %>' <%= d.under_construction ? "checked='true'" : '' %> onclick="set_under_construction(<%= s.id %>, <%= d.id %>, $(this).prop('checked'));" /></td> <td align='center'><input type='button' value='Delete' onclick="delete_domain(<%= @site.id %>, <%= d.id %>);" /></td> </tr> <% end %> </table> <% else %> <p>This site doesn't have any domains yet.</p> <% end %> <div id='domain_message'></div> <h2>Members</h2> <div id='members'> <table class='data'> <tr><th>User</th><th>None</th><th>User</th><th>Admin</th></tr> <% Caboose::User.reorder('last_name, first_name').all.each do |u| %> <tr> <td><%= u.first_name %> <%= u.last_name %> (<%= u.email %>)</td> <td align='center'><input type='radio' name='user<%= u.id %>' <%= !admin_ids.include?(u.id) && !user_ids.include?(u.id) ? "checked='true'" : '' %> onclick="remove_site_membership(<%= s.id %>, <%= u.id %>);" /></td> <td align='center'><input type='radio' name='user<%= u.id %>' <%= user_ids.include?(u.id) ? "checked='true'" : '' %> onclick="add_site_membership(<%= s.id %>, <%= u.id %>, 'User');" /></td> <td align='center'><input type='radio' name='user<%= u.id %>' <%= admin_ids.include?(u.id) ? "checked='true'" : '' %> onclick="add_site_membership(<%= s.id %>, <%= u.id %>, 'Admin');" /></td> </tr> <% end %> </table> </div> <%= render :partial => 'caboose/sites/admin_footer' %> <% content_for :caboose_js do %> <script type="text/javascript"> $(document).ready(function() { new ModelBinder({ name: 'Site', id: <%= @site.id %>, update_url: '/admin/sites/<%= @site.id %>', authenticity_token: '<%= form_authenticity_token %>', attributes: [ { name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(@site.name) %>, width: 400 }, { name: 'description' , nice_name: 'Description' , type: 'textarea' , value: <%= raw Caboose.json(@site.description) %>, width: 600, height: 75 }, { name: 'under_construction_html' , nice_name: 'Under Construction HTML' , type: 'textarea' , value: <%= raw Caboose.json(@site.under_construction_html) %>, width: 600, height: 75 } ] }); }); function set_under_construction(site_id, domain_id, checked) { $.ajax({ url: '/admin/sites/' + site_id + '/domains/' + domain_id, type: 'put', data: { under_construction: checked ? 1 : 0 } }); } function add_site_membership(site_id, user_id, role) { $.ajax({ url: '/admin/sites/' + site_id +'/members', type: 'post', data: { user_id: user_id, role: role }, succes: function(resp) {} }); } function remove_site_membership(site_id, user_id) { $.ajax({ url: '/admin/sites/' + site_id +'/members/' + user_id, type: 'delete', succes: function(resp) {} }); } function add_domain(site_id, domain) { if (!domain) { var div = $('<div/>') .append($('<p/>') .addClass('note warning') .append("What domain would you like to add?<br />") .append($('<input/>').attr('type','text').attr('id','new_domain').css('width', '200px')).append(' ') .append($('<input/>').attr('type','button').val('Add').click(function() { add_domain(site_id, $('#new_domain').val()); })).append(' ') .append($('<input/>').attr('type','button').val('Cancel').click(function() { $('#new_domain_container').empty(); })) ) .append($('<div/>').attr('id', 'new_domain_message')); $('#new_domain_container').empty().append(div); return; } $('#new_domain_message').empty().html("<p class='loading'>Adding domain...</p>"); $.ajax({ url: '/admin/sites/' + site_id + '/domains', type: 'post', data: { domain: domain }, success: function(resp) { if (resp.error) $('#new_domain_message').html("<p class='note error'>" + resp.error + "<br /></p>"); if (resp.refresh) window.location.reload(true); } }); } function delete_domain(site_id, domain_id, confirm) { if (!confirm) { var p = $('<p/>').addClass('note confirm') .append('Are you sure you want to delete the domain? ') .append($('<input/>').attr('type','button').val('Yes').click(function() { delete_domain(site_id, domain_id, true); })).append(' ') .append($('<input/>').attr('type','button').val('No').click(function() { $('#domain_message').empty(); })); $('#domain_message').empty().append(p); return; } $('#domain_message').html("<p class='loading'>Deleting domain...</p>"); $.ajax({ url: '/admin/sites/' + site_id + '/domains/' + domain_id, type: 'delete', success: function(resp) { if (resp.error) $('#message').html("<p class='note error'>" + resp.error + "</p>"); if (resp.refresh) window.location.reload(true); } }); } function set_primary_domain(site_id, domain_id) { $.ajax({ url: '/admin/sites/' + site_id + '/domains/' + domain_id + '/set-primary', type: 'put', success: function(resp) {} }); } </script> <% end %>