This answer is just to complete @Gatogordo answer :
After you add a custom Unlock button to content editor you need to assign next command to the Unlock button
Create your own class for Unlock Item:
[Serializable]
public class UnlockItemCommand : Command
{
public override void Execute(CommandContext context)
{
Item item = context.Items[0];
if (item.Access.CanWriteLanguage() && item.Locking.IsLocked())
{
Log.Audit(this, "Check in: {0}", new[] {AuditFormatter.FormatItem(item)});
item.Editing.BeginEdit();
item.Locking.Unlock();
item.Editing.EndEdit();
Context.ClientPage.SendMessage(this, "item:checkedin");
}
}
public override CommandState QueryState(CommandContext context)
{
Item item = context.Items[0];
if (item.Access.CanWriteLanguage() && item.Locking.IsLocked() && !item.Locking.HasLock() && !Context.IsAdministrator)
return CommandState.Enabled;
return CommandState.Hidden;
}
}
Add your custom command to a new config file located in Include folder:
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:x="http://www.sitecore.net/xmlconfig/">
<sitecore>
<commands>
<command name="mycommand:unlockitem" type="yourNamespace.UnlockItemCommand,yourAssembly" />
</commands>
</sitecore>
</configuration>