Changeset 25483


Ignore:
Timestamp:
11/14/13 14:41:34 (6 years ago)
Author:
plg
Message:

feature 1668: implement "change password" and "edit username"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/themes/default/template/user_list.tpl

    r25479 r25483  
    112112          var userDetails = '<form>'; 
    113113          userDetails += '<div class="userActions">'; 
    114           userDetails += '<a class="icon-key" href="#">Change password</a>'; 
     114          userDetails += '<span class="changePasswordDone infos" style="display:none">&#x2714; Password updated</span>'; 
     115          userDetails += '<span class="changePassword" style="display:none">{/literal}{'New password'|translate}{literal} <input type="text"> <a href="#" class="buttonLike updatePassword"><img src="themes/default/images/ajax-loader-small.gif" style="margin-bottom:-1px;margin-left:1px;display:none;"><span class="text">{/literal}{'Submit'|translate}{literal}</span></a> <a href="#" class="cancel">Cancel</a></span>'; 
     116          userDetails += '<a class="icon-key changePasswordOpen" href="#">Change password</a>'; 
    115117          userDetails += '<br><a target="_blank" href="admin.php?page=user_perm&amp;user_id='+userId+'" class="icon-lock">Permissions</a>'; 
    116118          userDetails += '<br><span class="userDelete"><img class="loading" src="themes/default/images/ajax-loader-small.gif" style="display:none;"><a href="#" class="icon-trash" data-user_id="'+userId+'">Delete</a></span>'; 
    117119          userDetails += '</div>'; 
    118           userDetails += '<strong class="username">'+user.username+'</strong> <span class="icon-pencil"></span>'; 
    119           userDetails += '<br><br>'; 
     120 
     121          userDetails += '<span class="changeUsernameOpen"><strong class="username">'+user.username+'</strong> <a href="#" class="icon-pencil">Change username</a></span>'; 
     122          userDetails += '<span class="changeUsername" style="display:none">'; 
     123          userDetails += '<input type="text"> <a href="#" class="buttonLike updateUsername"><img src="themes/default/images/ajax-loader-small.gif" style="margin-bottom:-1px;margin-left:1px;display:none;"><span class="text">{/literal}{'Submit'|translate}{literal}</span></a> <a href="#" class="cancel">Cancel</a>'; 
     124          userDetails += '</span>'; 
     125 
     126          userDetails += '<div class="userStats">'; 
    120127          userDetails += sprintf(registeredOn_pattern, user.registration_date_string, user.registration_date_since); 
    121128 
     
    124131          } 
    125132 
     133          userDetails += '</div>'; 
    126134          userDetails += '<div class="userPropertiesContainer">'; 
    127135          userDetails += '<input type="hidden" name="user_id" value="'+user.id+'">'; 
     
    227235          userDetails += '<div style="clear:both"></div></div>'; 
    228236 
    229           userDetails += '<span class="infos" style="display:none">&#x2714; User '+user.username+' updated</span>'; 
     237          userDetails += '<span class="infos propertiesUpdateDone" style="display:none">&#x2714; User '+user.username+' updated</span>'; 
    230238          userDetails += '<input type="submit" value="{/literal}{'Update user'|translate}{literal}" style="display:none;" data-user_id="'+userId+'">'; 
    231239          userDetails += '<img class="submitWait" src="themes/default/images/ajax-loader-small.gif" style="display:none">' 
     
    247255  } 
    248256 
     257  /* change password */ 
     258  jQuery(document).on('click', '.changePasswordOpen',  function() { 
     259    var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); 
     260 
     261    jQuery(this).hide(); 
     262    jQuery('#user'+userId+' .changePasswordDone').hide(); 
     263    jQuery('#user'+userId+' .changePassword').show(); 
     264    jQuery('#user'+userId+' .changePassword input[type=text]').focus(); 
     265 
     266    return false; 
     267  }); 
     268 
     269  jQuery(document).on('click', '.changePassword a.updatePassword',  function() { 
     270    var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); 
     271 
     272    jQuery('#user'+userId+' .changePassword a .text').hide(); 
     273    jQuery('#user'+userId+' .changePassword a img').show(); 
     274 
     275    jQuery.ajax({ 
     276      url: "ws.php?format=json&method=pwg.users.setInfo", 
     277      type:"POST", 
     278      data: { 
     279        user_id:userId, 
     280        password: jQuery('#user'+userId+' .changePassword input[type=text]').val() 
     281      }, 
     282      beforeSend: function() { 
     283        jQuery('#user'+userId+' .changePassword input[type=text]').val(""); 
     284      }, 
     285      success:function(data) { 
     286        jQuery('#user'+userId+' .changePassword a .text').show(); 
     287        jQuery('#user'+userId+' .changePassword a img').hide(); 
     288        jQuery('#user'+userId+' .changePassword').hide(); 
     289        jQuery('#user'+userId+' .changePasswordOpen').show(); 
     290        jQuery('#user'+userId+' .changePasswordDone').show(); 
     291      }, 
     292      error:function(XMLHttpRequest, textStatus, errorThrows) { 
     293      } 
     294    }); 
     295 
     296    return false; 
     297  }); 
     298 
     299  jQuery(document).on('click', '.changePassword a.cancel',  function() { 
     300    var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); 
     301 
     302    jQuery('#user'+userId+' .changePassword').hide(); 
     303    jQuery('#user'+userId+' .changePasswordOpen').show(); 
     304 
     305    return false; 
     306  }); 
     307 
     308  /* change username */ 
     309  jQuery(document).on('click', '.changeUsernameOpen a',  function() { 
     310    var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); 
     311    var username = jQuery('#user'+userId+' .username').html(); 
     312 
     313    jQuery('#user'+userId+' .changeUsernameOpen').hide(); 
     314    jQuery('#user'+userId+' .changeUsername').show(); 
     315    jQuery('#user'+userId+' .changeUsername input[type=text]').val(username).focus(); 
     316 
     317    return false; 
     318  }); 
     319 
     320  jQuery(document).on('click', 'a.updateUsername',  function() { 
     321    var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); 
     322 
     323    jQuery('#user'+userId+' .changeUsername a .text').hide(); 
     324    jQuery('#user'+userId+' .changeUsername a img').show(); 
     325 
     326    jQuery.ajax({ 
     327      url: "ws.php?format=json&method=pwg.users.setInfo", 
     328      type:"POST", 
     329      data: { 
     330        user_id:userId, 
     331        username: jQuery('#user'+userId+' .changeUsername input[type=text]').val() 
     332      }, 
     333      success:function(data) { 
     334        jQuery('#user'+userId+' .changeUsername a .text').show(); 
     335        jQuery('#user'+userId+' .changeUsername a img').hide(); 
     336        jQuery('#user'+userId+' .changeUsername').hide(); 
     337        jQuery('#user'+userId+' .changeUsernameOpen').show(); 
     338 
     339        var data = jQuery.parseJSON(data); 
     340        jQuery('#user'+userId+' .username').html(data.result.users[0].username); 
     341      }, 
     342      error:function(XMLHttpRequest, textStatus, errorThrows) { 
     343      } 
     344    }); 
     345 
     346    return false; 
     347  }); 
     348 
     349  jQuery(document).on('click', '.changeUsername a.cancel',  function() { 
     350    var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); 
     351 
     352    jQuery('#user'+userId+' .changeUsername').hide(); 
     353    jQuery('#user'+userId+' .changeUsernameOpen').show(); 
     354 
     355    return false; 
     356  }); 
     357 
     358  /* display the "save" button when a field changes */ 
    249359  jQuery(document).on('change', '.userProperties input, .userProperties select',  function() { 
    250360    var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); 
    251361 
    252362    jQuery('#user'+userId+' input[type=submit]').show(); 
    253     jQuery('#user'+userId+' .infos').hide(); 
    254   }); 
    255  
     363    jQuery('#user'+userId+' .propertiesUpdateDone').hide(); 
     364  }); 
     365 
     366  /* delete user */ 
    256367  jQuery(document).on('click', '.userDelete a',  function() { 
    257368    if (!confirm("{/literal}{'Are you sure?'|translate|escape:javascript}{literal}")) { 
     
    319430        jQuery('#user'+userId+' .submitWait').hide(); 
    320431        jQuery('#user'+userId+' input[type=submit]').hide(); 
    321         jQuery('#user'+userId+' .infos').show(); 
     432        jQuery('#user'+userId+' .propertiesUpdateDone').show(); 
    322433      }, 
    323434      error:function(XMLHttpRequest, textStatus, errorThrows) { 
     
    624735#applyActionBlock .actionButtons {margin-left:0;} 
    625736span.infos, span.errors {background-image:none; padding:2px 5px; margin:0;border-radius:5px;} 
     737 
     738.userStats {margin-top:10px;} 
    626739</style> 
    627740{/literal} 
Note: See TracChangeset for help on using the changeset viewer.