function populateForm(entries){ //$('#user_details').show(); $('.errors').remove(); $('.success').remove(); $('#user_id').val(entries.id); $('#login').val(entries.login); $('#first_name').val(entries.first_name); $('#last_name').val(entries.last_name); $('#type').val(entries.type); $('#email').val(entries.email); $('#cell_phone').val(entries.cell_phone); $('#skype').val(entries.skype_contact); $('#jabber').val(entries.jabber_contact); if (entries.id.length != 0){ $('#login').attr('readonly', 'readonly'); $('#password').val("xxxxxx"); $('#passwordVerify').val("xxxxxx"); } else { $('#login').removeAttr('readonly'); $('#password').val(""); $('#passwordVerify').val(""); } } function rowClickCallback(row_id){ $.ajax({ url: baseUrl+'User/get-user-data/id/'+ row_id +'/format/json', dataType:"json", success:function(data){ populateForm(data.entries); }}); } function removeUserCallback(row_id, nRow){ $.ajax({ url: baseUrl+'User/remove-user/id/'+ row_id +'/format/json', dataType:"text", success:function(data){ var o = $('#users_datatable').dataTable().fnDeleteRow(nRow); }}); } function rowCallback( nRow, aData, iDisplayIndex ){ $(nRow).click(function(){rowClickCallback(aData['id'])}); if( aData['delete'] != "self"){ $('td:eq(4)', nRow).append( '').children('span').click(function(e){e.stopPropagation(); removeUserCallback(aData['id'], nRow)}); }else{ $('td:eq(4)', nRow).empty().append( '').children('span').click(function(e){e.stopPropagation(); alert("Can't delete yourself!")}); } if ( aData['type'] == "A" ) { $('td:eq(3)', nRow).html( $.i18n._('Admin') ); } else if ( aData['type'] == "H" ) { $('td:eq(3)', nRow).html( $.i18n._('DJ') ); } else if ( aData['type'] == "G" ) { $('td:eq(3)', nRow).html( $.i18n._('Guest') ); } else if ( aData['type'] == "P" ) { $('td:eq(3)', nRow).html( $.i18n._('Program Manager') ); } return nRow; } function populateUserTable() { $('#users_datatable').dataTable( { "bProcessing": true, "bServerSide": true, "sAjaxSource": baseUrl+"User/get-user-data-table-info/format/json", "fnServerData": function ( sSource, aoData, fnCallback ) { $.ajax( { "dataType": 'json', "type": "POST", "url": sSource, "data": aoData, "success": fnCallback } ); }, "fnRowCallback": rowCallback, "aoColumns": [ /* Id */ { "sName": "id", "bSearchable": false, "bVisible": false, "mDataProp": "id" }, /* user name */ { "sName": "login", "mDataProp": "login" }, /* first name */ { "sName": "first_name", "mDataProp": "first_name" }, /* last name */ { "sName": "last_name", "mDataProp": "last_name" }, /* user type */ { "sName": "type", "bSearchable": false, "mDataProp": "type" }, /* del button */ { "sName": "null as delete", "bSearchable": false, "bSortable": false, "mDataProp": "delete"} ], "bJQueryUI": true, "bAutoWidth": false, "bLengthChange": false, "oLanguage": datatables_dict, "sDom": '<"H"lf<"dt-process-rel"r>>t<"F"ip>', }); } function sizeFormElements() { $("dt[id$='label']").addClass('user-form-label'); $("dd[id$='element']").addClass('user-form-element'); } function assignUserRightsToUserTypes() { //assign user-rights and id to each user type option so we can //display user rights for each with tipsy tooltip $.each($('#type').children(), function(i, opt) { switch ($(this).val()) { case 'G': $(this).attr('id', 'user-type-G'); $(this).attr('user-rights', $.i18n._('Guests can do the following:')+'

'+ $.i18n._('View schedule')+'
'+ $.i18n._('View show content') ); break; case 'H': $(this).attr('id', 'user-type-H'); $(this).attr('user-rights', $.i18n._('DJs can do the following:')+'

'+ $.i18n._('View schedule')+'
'+ $.i18n._('View show content')+'
'+ $.i18n._('Manage assigned show content')+'
'+ $.i18n._('Import media files')+'
'+ $.i18n._('Create playlists, smart blocks, and webstreams')+'
'+ $.i18n._('Manage their own library content') ); break; case 'P': $(this).attr('id', 'user-type-P'); $(this).attr('user-rights', $.i18n._('Program Managers can do the following:')+'

'+ $.i18n._('View schedule')+'
'+ $.i18n._('View and manage show content')+'
'+ $.i18n._('Schedule shows')+'
'+ $.i18n._('Import media files')+'
'+ $.i18n._('Create playlists, smart blocks, and webstreams')+'
'+ $.i18n._('Manage all library content') ); break; case 'A': $(this).attr('id', 'user-type-A'); $(this).attr('user-rights', $.i18n._('Admins can do the following:')+'

'+ $.i18n._('Manage preferences')+'
'+ $.i18n._('Manage users')+'
'+ $.i18n._('Manage watched folders')+'
'+ $.i18n._('Send support feedback')+'
'+ $.i18n._('View system status')+'
'+ $.i18n._('Access playout history')+'
'+ $.i18n._('View listener stats')+'
'+ $.i18n._('View schedule')+'
'+ $.i18n._('View and manage show content')+'
'+ $.i18n._('Schedule shows')+'
'+ $.i18n._('Import media files')+'
'+ $.i18n._('Create playlists, smart blocks, and webstreams')+'
'+ $.i18n._('Manage all library content') ); break; } }); } $(document).ready(function() { populateUserTable(); assignUserRightsToUserTypes(); $('#type').live("change", function(){ //when the title changes on live tipsy tooltips the changes take //affect the next time tipsy is shown so we need to hide and re-show it $(this).tipsy('hide').tipsy('show'); }); $('#type').tipsy({ gravity: 'w', html: true, opacity: 0.9, trigger: 'manual', live: true, title: function() { return $('#user-type-'+$(this).val()).attr('user-rights'); } }); $('#type').tipsy('show'); var newUser = {login:"", first_name:"", last_name:"", type:"G", id:""}; $('#add_user_button').live('click', function(){populateForm(newUser)}); $('#save_user').live('click', function(){ var data = $('#user_form').serialize(); var url = baseUrl+'User/add-user'; $.post(url, {format: "json", data: data}, function(json){ if (json.valid === "true") { $('#content').empty().append(json.html); populateUserTable(); assignUserRightsToUserTypes(); } else { //if form is invalid we only need to redraw the form $('#user_form').empty().append($(json.html).find('#user_form').children()); $('#password').val(""); $('#passwordVerify').val(""); } setTimeout(removeSuccessMsg, 5000); sizeFormElements(); }); }); sizeFormElements(); });