Bläddra i källkod

keboard navigation support

Serghey Rodin 10 år sedan
förälder
incheckning
0b48a049eb
35 ändrade filer med 503 tillägg och 192 borttagningar
  1. 94 9
      web/css/styles.min.css
  2. BIN
      web/images/sprite.png
  3. BIN
      web/images/vesta_logo.png
  4. 5 0
      web/inc/main.php
  5. 94 54
      web/js/events.js
  6. 1 0
      web/templates/admin/add_dns_rec.html
  7. 1 0
      web/templates/admin/add_mail_acc.html
  8. 5 4
      web/templates/admin/list_backup.html
  9. 12 9
      web/templates/admin/list_backup_detail.html
  10. 10 0
      web/templates/admin/list_backup_exclusions.html
  11. 5 3
      web/templates/admin/list_cron.html
  12. 5 3
      web/templates/admin/list_db.html
  13. 7 5
      web/templates/admin/list_dns.html
  14. 8 4
      web/templates/admin/list_dns_rec.html
  15. 5 3
      web/templates/admin/list_firewall.html
  16. 5 1
      web/templates/admin/list_firewall_banlist.html
  17. 3 2
      web/templates/admin/list_ip.html
  18. 7 5
      web/templates/admin/list_mail.html
  19. 9 4
      web/templates/admin/list_mail_acc.html
  20. 3 2
      web/templates/admin/list_packages.html
  21. 8 6
      web/templates/admin/list_search.html
  22. 3 3
      web/templates/admin/list_services.html
  23. 1 1
      web/templates/admin/list_updates.html
  24. 7 5
      web/templates/admin/list_user.html
  25. 7 5
      web/templates/admin/list_web.html
  26. 152 32
      web/templates/footer.html
  27. 3 3
      web/templates/user/list_cron.html
  28. 3 2
      web/templates/user/list_db.html
  29. 5 4
      web/templates/user/list_dns.html
  30. 7 3
      web/templates/user/list_dns_rec.html
  31. 5 4
      web/templates/user/list_mail.html
  32. 7 3
      web/templates/user/list_mail_acc.html
  33. 6 5
      web/templates/user/list_search.html
  34. 5 4
      web/templates/user/list_user.html
  35. 5 4
      web/templates/user/list_web.html

+ 94 - 9
web/css/styles.min.css

@@ -658,12 +658,14 @@ input[type="checkbox"] {
 .l-logo {
   background-image: url("/images/sprite.png?1446554103");
   background-position: -117px -7px;
+/*  background-position: -125px -478px; */
   background-repeat: no-repeat;
   display: inline-block;
   float: left;
   height: 22px;
   margin-top: 4px;
   width: 73px;
+/*  width: 42px; */
   margin-left: -2px;
 }
 
@@ -716,6 +718,11 @@ input[type="checkbox"] {
   text-decoration: underline;
   color: #5edad0;
 }
+.l-menu.active .l-menu__item.focus a:hover {
+  background-color: #f79b44;
+  color: #fff;
+}
+
 
 .lang-ua .l-menu__item a,
 .lang-nl .l-menu__item a,
@@ -1281,13 +1288,25 @@ div.l-content > div.l-separator:nth-of-type(4) {
 }
 .units .l-unit {
   border-bottom: 1px solid #ddd;
+  border-left: 2px solid #fff;
+}
+.units .l-unit.l-unit--starred {
+  border-left: 2px solid #ff6701;
+}
+.units.active .l-unit.focus {
+  border-left: 2px solid #5edad0;
+}
+.units.active .l-unit.focus .l-unit__name {
+  color: #36b3a9;
 }
+.units.active .l-unit.focus .l-unit-toolbar__col--right {
+  display: block;
+}
+
 .units > div:last-child {
   border-bottom: none;
 }
 
-
-
 .l-unit-ftl {
   color: #929292;
   padding: 0 0 0 15px;
@@ -1296,10 +1315,6 @@ div.l-content > div.l-separator:nth-of-type(4) {
 .l-unit:hover .l-unit-toolbar__col--right {
   display: block;
 }
-.l-unit--starred {
-  border-left: 2px solid #ff6701;
-  padding-left: 13px;
-}
 .l-unit--blue {
   border-left: 2px solid #55c9c0;
 }
@@ -1370,8 +1385,9 @@ div.l-content > div.l-separator:nth-of-type(4) {
   background-color: #d1eddc;
 }
 .l-unit-toolbar{
-  height: 38px;
+  height: 39px;
 }
+
 .l-unit label {
   margin-bottom: 20px;
 }
@@ -1382,6 +1398,7 @@ div.l-content > div.l-separator:nth-of-type(4) {
 .l-unit__col {
   display: table-cell;
   padding-top: 1px;
+  vertical-align: top;
 }
 .l-unit__col--left {
   width: 124px;
@@ -1395,6 +1412,14 @@ div.l-content > div.l-separator:nth-of-type(4) {
   padding-left: 30px;
 }
 
+.l-unit__col--right.total {
+  padding-left: 16px;
+}
+
+.l-unit__col--right.back {
+  padding-left: 78px
+}
+
 .l-sort-toolbar .step-left {
   padding-left: 40px;
 }
@@ -1405,7 +1430,7 @@ div.l-content > div.l-separator:nth-of-type(4) {
 .l-unit__date {
   font-size: 12px;
   letter-spacing: 1px;
-  margin-top: -13px;
+  margin-top: 10px;
   padding-bottom: 30px;
 }
 
@@ -1566,6 +1591,41 @@ div.l-content > div.l-separator:nth-of-type(4) {
   display: none;
 }
 
+.l-unit-toolbar .shortcut {
+  display: none;
+}
+
+.units.active .l-unit.focus .l-unit-toolbar .shortcut {
+  display: block;
+  background-color: #c8c7c6;
+  border-radius: 13px;
+  color: #fff;
+  cursor: pointer;
+  display: block;
+  font-size: 12px;
+  font-weight: 700;
+  line-height: 25px;
+  padding-left: 7px;
+  padding-right: 9px;
+  position: absolute;
+  right: 3px;
+  top: 3px;
+}
+.units.active .l-unit.focus .l-unit-toolbar .shortcut.delete {
+  font-size: 10px;
+  padding-left: 2px;
+  padding-right: 5px;
+  text-transform: capitalize;
+}
+.units.active .l-unit.focus .l-unit-toolbar .shortcut.enter {
+  font-size: 17px;
+  padding-left: 1px;
+  padding-right: 7px;
+}
+.units.active .l-unit.focus .l-unit-toolbar i {
+  background: none;
+}
+
 .l-unit__stat-col.volume {
   font-size: 12px;
   line-height: 17px;
@@ -2609,6 +2669,26 @@ td.hint {
   border: 1px solid #D1D70D;
   background-color: #D1D70D;
 }
+
+.ui-dialog button.cancel {
+  color: #000;
+  border: 1px solid #555;
+  background-color: #555;
+}
+/*
+.ui-dialog button.cancel:hover {
+  color: #fff;
+  border: 1px solid #999;
+  background-color: #999;
+}
+.ui-dialog button.cancel:active {
+  border: 1px solid #D1D70D;
+  background-color: #D1D70D;
+}
+*/
+
+
+
 .ui-button span {
   color: #fff;
 }
@@ -2628,6 +2708,9 @@ td.hint {
   color: #fff;
 }
 
+.ui-dialog button.cancel span {
+  color: #ccc;
+}
 
 
 .unlim-trigger {
@@ -3045,4 +3128,6 @@ form#vstobjects.suspended {
   font-size: 12px;
 }
 
-
+.ui-dialog .ui-dialog-content {
+  padding: 10px 26px 30px !important;
+}

BIN
web/images/sprite.png


BIN
web/images/vesta_logo.png


+ 5 - 0
web/inc/main.php

@@ -286,6 +286,11 @@ function display_error_block() {
                                 Ok: function() {
                                     $( this ).dialog( "close" );
                                 }
+                            },
+                            create:function () {
+                                $(this).closest(".ui-dialog")
+                                .find(".ui-button:first")
+                                .addClass("submit");
                             }
                         });
                     });

+ 94 - 54
web/js/events.js

@@ -108,10 +108,12 @@ VE.callbacks.click.do_delete = function(evt, elm) {
  * @param custom_config Custom configuration parameters passed to dialog initialization (optional)
  */
 VE.helpers.createConfirmationDialog = function(elm, dialog_title, confirmed_location_url, custom_config) {
+
     var custom_config = !custom_config ? {} : custom_config;
     var config = {
         modal: true,
-        autoOpen: true,
+        //autoOpen: true,
+        resizable: false,
         width: 360,
         title: dialog_title,
         close: function() {
@@ -121,15 +123,27 @@ VE.helpers.createConfirmationDialog = function(elm, dialog_title, confirmed_loca
             "OK": function(event, ui) {
                  location.href = confirmed_location_url;
             },
-            "Cancel": function() {
+            Cancel: function() {
                 $(this).dialog("close");
-                $(this).dialog("destroy");
             }
+        },
+        create:function () {
+            $(this).closest(".ui-dialog")
+                .find(".ui-button:first")
+                .addClass("submit");
+            $(this).closest(".ui-dialog")
+                .find(".ui-button")
+                .eq(1) // the first button
+                .addClass("cancel");
         }
     }
+
+
+    var reference_copied = $(elm[0]).clone();
+    console.log(reference_copied);
     config = $.extend(config, custom_config);
-    var reference_copied = $(elm).clone();
     $(reference_copied).dialog(config);
+
 }
 
 /*
@@ -141,7 +155,7 @@ VE.helpers.warn = function(msg) {
 
 VE.helpers.extendPasswordFields = function() {
     var references = ['.password'];
-    
+
     $(document).ready(function() {
         $(references).each(function(i, ref) {
             VE.helpers.initAdditionalPasswordFieldElements(ref);
@@ -234,24 +248,37 @@ VE.helpers.refresh_timer = {
 }
 
 VE.navigation.enter_focused = function() {
-    if($(VE.navigation.state.menu_selector + '.focus a').attr('href')){
-        location.href=($(VE.navigation.state.menu_selector + '.focus a').attr('href'));
+    if($('.units').hasClass('active')){
+        location.href=($('.units.active .l-unit.focus .actions-panel__col.actions-panel__edit a').attr('href'));
+    } else {
+        if($(VE.navigation.state.menu_selector + '.focus a').attr('href')){
+            location.href=($(VE.navigation.state.menu_selector + '.focus a').attr('href'));
+        }
     }
 }
 
-/*
 VE.navigation.move_focus_left = function(){
     var index = parseInt($(VE.navigation.state.menu_selector).index($(VE.navigation.state.menu_selector+'.focus')));
     if(index == -1)
         index = parseInt($(VE.navigation.state.menu_selector).index($(VE.navigation.state.menu_active_selector)));
+
+    if($('.units').hasClass('active')){
+        $('.units').removeClass('active');
+        if(VE.navigation.state.active_menu == 0){
+            $('.l-menu').addClass('active');
+        } else {
+            $('.l-stat').addClass('active');
+        }
+        index++;
+    }
+
+    $(VE.navigation.state.menu_selector).removeClass('focus');
+
     if(index > 0){
-        $(VE.navigation.state.menu_selector).removeClass('focus');
         $($(VE.navigation.state.menu_selector)[index-1]).addClass('focus');
     } else {
-        $($(VE.navigation.state.menu_selector)[0]).addClass('focus');
+        VE.navigation.switch_menu('last');
     }
-
-    
 }
 
 VE.navigation.move_focus_right = function(){
@@ -259,66 +286,69 @@ VE.navigation.move_focus_right = function(){
     var index = parseInt($(VE.navigation.state.menu_selector).index($(VE.navigation.state.menu_selector+'.focus')));
     if(index == -1)
         index = parseInt($(VE.navigation.state.menu_selector).index($(VE.navigation.state.menu_active_selector))) || 0;
+    $(VE.navigation.state.menu_selector).removeClass('focus');
+
+    if($('.units').hasClass('active')){
+        $('.units').removeClass('active');
+        if(VE.navigation.state.active_menu == 0){
+            $('.l-menu').addClass('active');
+        } else {
+            $('.l-stat').addClass('active');
+        }
+        index--;
+    }
 
     if(index < max_index){
-        $(VE.navigation.state.menu_selector).removeClass('focus');
         $($(VE.navigation.state.menu_selector)[index+1]).addClass('focus');
+    } else {
+        VE.navigation.switch_menu('first');
     }
 }
 
-VE.navigation.switch_menu = function(){
-    if(VE.navigation.state.active_menu == 0){
-        VE.navigation.state.active_menu = 1;
-        VE.navigation.state.menu_selector = '.l-stat__col';
-        VE.navigation.state.menu_active_selector = '.l-stat__col--active';
+VE.navigation.move_focus_down = function(){
+    var max_index = $('.units .l-unit:not(.header)').length-1;
+    var index = parseInt($('.units .l-unit').index($('.units .l-unit.focus')));
+
+    if($('.l-menu').hasClass('active') || $('.l-stat').hasClass('active')){
         $('.l-menu').removeClass('active');
-        $('.l-stat').addClass('active');
-    } else {
-        VE.navigation.state.active_menu = 0;
-        VE.navigation.state.menu_selector = '.l-menu__item';
-        VE.navigation.state.menu_active_selector = '.l-menu__item--active';
-        $('.l-menu').addClass('active');
         $('.l-stat').removeClass('active');
+        $('.units').addClass('active');
+        index--;
+
+        if(index == -2)
+            index = -1;
     }
 
+    if(index < max_index){
+        $('.units .l-unit.focus').removeClass('focus');
+        $($('.units .l-unit:not(.header)')[index+1]).addClass('focus');
 
-    var index = parseInt($(VE.navigation.state.menu_selector).index($(VE.navigation.state.menu_selector+'.focus')));
-    if(index == -1){
-        index = parseInt($(VE.navigation.state.menu_selector).index($(VE.navigation.state.menu_active_selector))) || 0;
-        if(index == -1)
-           index = 0;
-        $($(VE.navigation.state.menu_selector)[index]).addClass('focus');
+        $('html, body').animate({
+            scrollTop: $('.units .l-unit.focus').offset().top - 200
+        }, 80);
     }
 }
-*/
 
+VE.navigation.move_focus_up = function(){
+    var index = parseInt($('.units .l-unit:not(.header)').index($('.units .l-unit.focus')));
 
-VE.navigation.move_focus_left = function(){
-    var index = parseInt($(VE.navigation.state.menu_selector).index($(VE.navigation.state.menu_selector+'.focus')));
     if(index == -1)
-        index = parseInt($(VE.navigation.state.menu_selector).index($(VE.navigation.state.menu_active_selector)));
+        index = 0;
 
-    $(VE.navigation.state.menu_selector).removeClass('focus');
-
-    if(index > 0){
-        $($(VE.navigation.state.menu_selector)[index-1]).addClass('focus');
-    } else {
-        VE.navigation.switch_menu('last');
+    if($('.l-menu').hasClass('active') || $('.l-stat').hasClass('active')){
+        $('.l-menu').removeClass('active');
+        $('.l-stat').removeClass('active');
+        $('.units').addClass('active');
+        index++;
     }
-}
 
-VE.navigation.move_focus_right = function(){
-    var max_index = $(VE.navigation.state.menu_selector).length-1;
-    var index = parseInt($(VE.navigation.state.menu_selector).index($(VE.navigation.state.menu_selector+'.focus')));
-    if(index == -1)
-        index = parseInt($(VE.navigation.state.menu_selector).index($(VE.navigation.state.menu_active_selector))) || 0;
-
-    $(VE.navigation.state.menu_selector).removeClass('focus');
+    if(index > 0){
+        $('.units .l-unit.focus').removeClass('focus');
+        $($('.units .l-unit:not(.header)')[index-1]).addClass('focus');
 
-    if(index < max_index){
-        $($(VE.navigation.state.menu_selector)[index+1]).addClass('focus');
-    } else {
-        VE.navigation.switch_menu('first');
+        $('html, body').animate({
+            scrollTop: $('.units .l-unit.focus').offset().top - 200
+        }, 80);
     }
 }
 
@@ -405,8 +435,6 @@ VE.notifications.mark_seen = function(id){
 }
 
 
-
-
 VE.navigation.init = function(){
     if($('.l-menu__item.l-menu__item--active').length){
 //        VE.navigation.switch_menu();
@@ -420,6 +448,18 @@ VE.navigation.init = function(){
     }
 }
 
+VE.navigation.shortcut = function(elm){
+  var action = elm.attr('key-action');
+
+  if(action == 'js'){
+    var e = elm.find('.data-controls');
+    VE.core.dispatch(true, e, 'click');
+  }
+  if(action == 'href') {
+    location.href=elm.find('a').attr('href');
+  }
+}
+
 VE.helpers.extendPasswordFields();
 
 

+ 1 - 0
web/templates/admin/add_dns_rec.html

@@ -31,6 +31,7 @@
         ?>
         <form id="vstobjects" name="v_add_dns_rec" method="post">
             <input type="hidden" name="token" value="<?=$_SESSION['token']?>" />
+            <input type="hidden" name="ok_rec" value="add" />
             <table class="data mode-add">
                 <tr class="data-add">
                     <td class="data-dotted">

+ 1 - 0
web/templates/admin/add_mail_acc.html

@@ -31,6 +31,7 @@
         ?>
         <form id="vstobjects" name="v_add_mail_acc" method="post">
             <input type="hidden" name="token" value="<?=$_SESSION['token']?>" />
+            <input type="hidden" name="ok_acc" value="add" />
             <script type="text/javascript">
                 function elementHideShow(elementToHideOrShow) {
                     var el = document.getElementById(elementToHideOrShow);

+ 5 - 4
web/templates/admin/list_backup.html

@@ -74,12 +74,12 @@
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
               <? if ($data[$key]['UPDATED'] == 'no') {
-                   echo '<div class="actions-panel__col actions-panel__update"><a href="/update/vesta/?pkg='.$key.'&token='.$_SESSION['token'].'">'.__('update').'<i></i></a></div>';
+                   echo '<div class="actions-panel__col actions-panel__update shortcut-u" key-action="href"><a href="/update/vesta/?pkg='.$key.'&token='.$_SESSION['token'].'">'.__('update').'<i></i></a><span class="shortcut">&nbsp;U</span></div>';
                  }
               ?>
-              <div class="actions-panel__col actions-panel__download"><a href="/download/backup/?backup=<?=$key?>&token=<?=$_SESSION['token']?>"><?=__('download')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__configure"><a href="/list/backup/?backup=<?=$key?>"><?=__('configure restore settings')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__download shortcut-d" key-action="href"><a href="/download/backup/?backup=<?=$key?>&token=<?=$_SESSION['token']?>"><?=__('download')?> <i></i></a><span class="shortcut">&nbsp;D</span></div>
+              <div class="actions-panel__col actions-panel__configure shortcut-enter" key-action="href"><a href="/list/backup/?backup=<?=$key?>"><?=__('configure restore settings')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/backup/?backup=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -87,6 +87,7 @@
                     <p class="confirmation"><?=__('DELETE_BACKUP_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
             </div>
             <!-- /.actions-panel -->

+ 12 - 9
web/templates/admin/list_backup_detail.html

@@ -43,7 +43,7 @@
 
 
     <div class="l-center units">
-    <div class="l-unit">
+    <div class="l-unit header">
       <div class="subtitle"><?=__('Listing')?>  <?=htmlentities($_GET['backup'])?></div>
     </div>
 
@@ -62,7 +62,7 @@
           </div>
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right">
-            <div class="actions-panel__col actions-panel__update"><a href="/schedule/restore/?backup=<?=$backup?>&type=web&object=<?=$key?>&token=<?=$_SESSION['token']?>"><?=__('restore')?> <i></i></a></div>
+            <div class="actions-panel__col actions-panel__update shortcut-r" key-action="href"><a href="/schedule/restore/?backup=<?=$backup?>&type=web&object=<?=$key?>&token=<?=$_SESSION['token']?>"><?=__('restore')?> <i></i></a><span class="shortcut">&nbsp;R</span></div>
             <!-- /.actiona-panel -->
           </div>
           <!-- l-unit-toolbar__col -->
@@ -113,7 +113,7 @@
           </div>
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
-            <div class="actions-panel__col actions-panel__update"><a href="/schedule/restore/?backup=<?=$backup?>&type=mail&object=<?=$key?>"><?=__('restore')?> <i></i></a></div>
+            <div class="actions-panel__col actions-panel__update shortcut-r" key-action="href"><a href="/schedule/restore/?backup=<?=$backup?>&type=mail&object=<?=$key?>"><?=__('restore')?> <i></i></a><span class="shortcut">&nbsp;R</span></div>
             <!-- /.actiona-panel -->
           </div>
           <!-- l-unit-toolbar__col -->
@@ -161,7 +161,7 @@
           </div>
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right">
-            <div class="actions-panel__col actions-panel__update"><a href="/schedule/restore/?backup=<?=$backup?>&type=dns&object=<?=$key?>"><?=__('restore')?> <i></i></a></div>
+            <div class="actions-panel__col actions-panel__update shortcut-r" key-action="href"><a href="/schedule/restore/?backup=<?=$backup?>&type=dns&object=<?=$key?>"><?=__('restore')?> <i></i></a><span class="shortcut">&nbsp;R</span></div>
             <!-- /.actiona-panel -->
           </div>
           <!-- l-unit-toolbar__col -->
@@ -208,7 +208,7 @@
           </div>
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right">
-            <div class="actions-panel__col actions-panel__update"><a href="/schedule/restore/?backup=<?=$backup?>&type=db&object=<?=$key?>"><?=__('restore')?> <i></i></a></div>
+            <div class="actions-panel__col actions-panel__update shortcut-r" key-action="href"><a href="/schedule/restore/?backup=<?=$backup?>&type=db&object=<?=$key?>"><?=__('restore')?> <i></i></a><span class="shortcut">&nbsp;R</span></div>
             <!-- /.actiona-panel -->
           </div>
           <!-- l-unit-toolbar__col -->
@@ -256,7 +256,7 @@
           </div>
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right">
-            <div class="actions-panel__col actions-panel__update"><a href="/schedule/restore/?backup=<?=$backup?>&type=cron&object=records"><?=__('restore')?> <i></i></a></div>
+            <div class="actions-panel__col actions-panel__update shortcut-r" key-action="href"><a href="/schedule/restore/?backup=<?=$backup?>&type=cron&object=records"><?=__('restore')?> <i></i></a><span class="shortcut">&nbsp;R</span></div>
             <!-- /.actiona-panel -->
           </div>
           <!-- l-unit-toolbar__col -->
@@ -304,7 +304,7 @@
           </div>
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right">
-            <div class="actions-panel__col actions-panel__update"><a href="/schedule/restore/?backup=<?=$backup?>&type=udir&object=<?=$key?>"><?=__('restore')?> <i></i></a></div>
+            <div class="actions-panel__col actions-panel__update shortcut-r" key-action="href"><a href="/schedule/restore/?backup=<?=$backup?>&type=udir&object=<?=$key?>"><?=__('restore')?> <i></i></a><span class="shortcut">&nbsp;R</span></div>
             <!-- /.actiona-panel -->
           </div>
           <!-- l-unit-toolbar__col -->
@@ -344,7 +344,7 @@
           </div>
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right">
-            <div class="actions-panel__col actions-panel__update"><a href="/schedule/restore/?backup=<?=$backup?>&type=cron"><?=__('restore')?> <i></i></a></div>
+            <div class="actions-panel__col actions-panel__update shortcut-r" key-action="href"><a href="/schedule/restore/?backup=<?=$backup?>&type=cron"><?=__('restore')?> <i></i></a><span class="shortcut">&nbsp;R</span></div>
             <!-- /.actiona-panel -->
           </div>
           <!-- l-unit-toolbar__col -->
@@ -383,7 +383,7 @@
         <div class="l-unit-ft">
           <table class='data'></table>
           <div class="l-unit__col l-unit__col--left clearfix"></div>
-          <div class="data-count l-unit__col l-unit__col--right clearfix">
+          <div class="data-count l-unit__col l-unit__col--right total clearfix">
             <?php
               if ( $i == 1) {
                 echo __('1 item');
@@ -392,6 +392,9 @@
               }
             ?>
           </div>
+          <div class="data-count l-unit__col l-unit__col--right back clearfix">
+            <a class="button cancel" href="/list/backup/">back</a>
+          </div>
         </div>
       </div>
     </div>

+ 10 - 0
web/templates/admin/list_backup_exclusions.html

@@ -111,4 +111,14 @@
 
     <div id="vstobjects">
       <div class="l-separator"></div>
+      <div class="l-center">
+        <div class="l-unit-ft">
+          <table class='data'></table>
+          <!-- /form -->
+          <div class="l-unit__col l-unit__col--left clearfix"></div>
+          <div class="data-count l-unit__col l-unit__col--right total clearfix">
+            <a class="button cancel" href="/list/backup/">back</a>
+          </div>
+      </div>
     </div>
+  </div>

+ 5 - 3
web/templates/admin/list_cron.html

@@ -90,8 +90,8 @@ sort-star="<? if($_SESSION['favourites']['CRON'][$key] == 1) echo '1'; else echo
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/cron/?job=<?=$data[$key]['JOB']?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__suspend">
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/cron/?job=<?=$data[$key]['JOB']?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__suspend shortcut-s" key-action="js">
                 <a id="<?=$spnd_action ?>_link_<?=$i?>" class="data-controls do_<?=$spnd_action?>">
                   <?=__($spnd_action)?> <i class="do_<?=$spnd_action?>"></i>
                   <input type="hidden" name="<?=$spnd_action?>_url" value="/<?=$spnd_action?>/cron/?job=<?=$data[$key]['JOB']?>&token=<?=$_SESSION['token']?>" />
@@ -99,8 +99,9 @@ sort-star="<? if($_SESSION['favourites']['CRON'][$key] == 1) echo '1'; else echo
                     <p class="confirmation"><?=__($spnd_confirmation,$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut">&nbsp;S</span>
               </div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/cron/?job=<?=$data[$key]['JOB']?>&token=<?=$_SESSION['token']?>" />
@@ -108,6 +109,7 @@ sort-star="<? if($_SESSION['favourites']['CRON'][$key] == 1) echo '1'; else echo
                     <p class="confirmation"><?=__('DELETE_CRON_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
 
 

+ 5 - 3
web/templates/admin/list_db.html

@@ -120,8 +120,8 @@ sort-user="<?=$data[$key]['DBUSER']?>" sort-server="<?=$data[$key]['HOST']?>" so
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/db/?database=<?=$key?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__suspend">
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/db/?database=<?=$key?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__suspend shortcut-s" key-action="js">
                 <a id="<?=$spnd_action ?>_link_<?=$i?>" class="data-controls do_<?=$spnd_action?>">
                   <?=__($spnd_action)?> <i class="do_<?=$spnd_action?>"></i>
                   <input type="hidden" name="<?=$spnd_action?>_url" value="/<?=$spnd_action?>/db/?database=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -129,8 +129,9 @@ sort-user="<?=$data[$key]['DBUSER']?>" sort-server="<?=$data[$key]['HOST']?>" so
                     <p class="confirmation"><?=__($spnd_confirmation,$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut">&nbsp;S</span>
               </div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/db/?database=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -138,6 +139,7 @@ sort-user="<?=$data[$key]['DBUSER']?>" sort-server="<?=$data[$key]['HOST']?>" so
                     <p class="confirmation"><?=__('DELETE_DATABASE_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
             </div>
             <!-- /.actiona-panel -->

+ 7 - 5
web/templates/admin/list_dns.html

@@ -80,10 +80,10 @@ sort-expire="<?=strtotime($data[$key]['EXP'])?>" sort-records="<?=(int)$data[$ke
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__logs"><a href="/list/dns/?domain=<?=$key?>"><?=__('list records',$data[$key]['RECORDS'])?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__add"><a href="/add/dns/?domain=<?=$key?>"><?=__('add record')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/dns/?domain=<?=$key?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__suspend">
+              <div class="actions-panel__col actions-panel__logs shortcut-l" key-action="href"><a href="/list/dns/?domain=<?=$key?>"><?=__('list records',$data[$key]['RECORDS'])?> <i></i></a><span class="shortcut">&nbsp;L</span></div>
+              <div class="actions-panel__col actions-panel__add shortcut-n" key-action="href"><a href="/add/dns/?domain=<?=$key?>"><?=__('add record')?> <i></i></a><span class="shortcut">&nbsp;N</span></div>
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/dns/?domain=<?=$key?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__suspend shortcut-s" key-action="js">
                 <a id="<?=$spnd_action ?>_link_<?=$i?>" class="data-controls do_<?=$spnd_action?>">
                   <?=__($spnd_action)?> <i class="do_<?=$spnd_action?>"></i>
                   <input type="hidden" name="<?=$spnd_action?>_url" value="/<?=$spnd_action?>/dns/?domain=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -91,8 +91,9 @@ sort-expire="<?=strtotime($data[$key]['EXP'])?>" sort-records="<?=(int)$data[$ke
                     <p class="confirmation"><?=__($spnd_confirmation,$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut">&nbsp;S</span>
               </div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/dns/?domain=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -100,6 +101,7 @@ sort-expire="<?=strtotime($data[$key]['EXP'])?>" sort-records="<?=(int)$data[$ke
                     <p class="confirmation"><?=__('DELETE_DOMAIN_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
             </div>
             <!-- /.actions-panel -->

+ 8 - 4
web/templates/admin/list_dns_rec.html

@@ -49,7 +49,7 @@
 
     <div class="l-center units">
 
-    <div class="l-unit">
+    <div class="l-unit header">
       <div class="subtitle"><?=__('Listing')?>  <?=htmlentities($_GET['domain'])?></div>
     </div>
 
@@ -78,8 +78,8 @@ v_unit_id="<?=$key?>" v_section="dns_rec">
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/dns/?domain=<?=$_GET['domain']?>&record_id=<?=$data[$key]['ID']?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/dns/?domain=<?=$_GET['domain']?>&record_id=<?=$data[$key]['ID']?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/dns/?domain=<?=$_GET['domain']?>&record_id=<?=$data[$key]['ID']?>&token=<?=$_SESSION['token']?>" />
@@ -87,6 +87,7 @@ v_unit_id="<?=$key?>" v_section="dns_rec">
                     <p class="confirmation"><?=__('DELETE_RECORD_CONFIRMATION',$data[$key]['RECORD'])?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
 
             </div>
@@ -128,7 +129,7 @@ v_unit_id="<?=$key?>" v_section="dns_rec">
           <table class='data'></table>
           <!-- /form -->
           <div class="l-unit__col l-unit__col--left clearfix"></div>
-          <div class="data-count l-unit__col l-unit__col--right clearfix">
+          <div class="data-count l-unit__col l-unit__col--right total clearfix">
             <?php
               if ( $i == 1) {
                 echo __('1 record');
@@ -137,6 +138,9 @@ v_unit_id="<?=$key?>" v_section="dns_rec">
               }
             ?>
           </div>
+          <div class="data-count l-unit__col l-unit__col--right back clearfix">
+            <a class="button cancel" href="/list/dns/">back</a>
+          </div>
       </div>
     </div>
   </div>

+ 5 - 3
web/templates/admin/list_firewall.html

@@ -83,8 +83,8 @@ sort-ip="<?=str_replace('.', '', $data[$key]['IP'])?>" sort-comment="<?=$data[$k
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/firewall/?rule=<?=$key?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__<?=$spnd_action?>">
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/firewall/?rule=<?=$key?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__<?=$spnd_action?> shortcut-s" key-action="js">
                 <a id="<?=$spnd_action ?>_link_<?=$i?>" class="data-controls do_<?=$spnd_action?>">
                   <?=__($spnd_action)?> <i class="do_<?=$spnd_action?>"></i>
                   <input type="hidden" name="<?=$spnd_action?>_url" value="/<?=$spnd_action ?>/firewall/?rule=<?=$data[$key]['RULE']?>&token=<?=$_SESSION['token']?>" />
@@ -92,8 +92,9 @@ sort-ip="<?=str_replace('.', '', $data[$key]['IP'])?>" sort-comment="<?=$data[$k
                     <p class="confirmation"><?=__($spnd_confirmation,$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut">&nbsp;S</span>
               </div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/firewall/?rule=<?=$data[$key]['RULE']?>&token=<?=$_SESSION['token']?>" />
@@ -101,6 +102,7 @@ sort-ip="<?=str_replace('.', '', $data[$key]['IP'])?>" sort-comment="<?=$data[$k
                     <p class="confirmation"><?=__('DELETE_RULE_CONFIRMATION',$data[$key]['RULE'])?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
 
             </div>

+ 5 - 1
web/templates/admin/list_firewall_banlist.html

@@ -58,7 +58,7 @@
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/firewall/banlist/?ip=<?=$ip?>&chain=<?=$chain?>&token=<?=$_SESSION['token']?>" />
@@ -66,6 +66,7 @@
                     <p class="confirmation"><?=__('DELETE_IP_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
 
             </div>
@@ -115,6 +116,9 @@
               }
             ?>
           </div>
+          <div class="data-count l-unit__col l-unit__col--right back clearfix">
+            <a class="button cancel" href="/list/firewall/">back</a>
+          </div>
       </div>
     </div>
   </div>

+ 3 - 2
web/templates/admin/list_ip.html

@@ -72,8 +72,8 @@ sort-owner="<?=__($data[$key]['OWNER'])?>" sort-star="<? if($_SESSION['favourite
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/ip/?ip=<?=$key?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href""><a href="/edit/ip/?ip=<?=$key?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js"">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/ip/?ip=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -81,6 +81,7 @@ sort-owner="<?=__($data[$key]['OWNER'])?>" sort-star="<? if($_SESSION['favourite
                     <p class="confirmation"><?=__('DELETE_IP_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
             </div>
             <!-- /.actiona-panel -->

+ 7 - 5
web/templates/admin/list_mail.html

@@ -97,10 +97,10 @@ sort-accounts="<?=$data[$key]['ACCOUNTS']?>" sort-star="<? if($_SESSION['favouri
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__logs"><a href="?domain=<?=$key?>"><?=__('list accounts',$data[$key]['ACCOUNTS'])?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__add"><a href="/add/mail/?domain=<?=$key?>"><?=__('add account')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/mail/?domain=<?=$key?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__suspend">
+              <div class="actions-panel__col actions-panel__logs shortcut-l" key-action="href"><a href="?domain=<?=$key?>"><?=__('list accounts',$data[$key]['ACCOUNTS'])?> <i></i></a><span class="shortcut">&nbsp;L</span></div>
+              <div class="actions-panel__col actions-panel__add shortcut-n" key-action="href"><a href="/add/mail/?domain=<?=$key?>"><?=__('add account')?> <i></i></a><span class="shortcut">&nbsp;N</span></div>
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/mail/?domain=<?=$key?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__suspend shortcut-s" key-action="js">
                 <a id="<?=$spnd_action ?>_link_<?=$i?>" class="data-controls do_<?=$spnd_action?>">
                   <?=__($spnd_action)?> <i class="do_<?=$spnd_action?>"></i>
                   <input type="hidden" name="<?=$spnd_action?>_url" value="/<?=$spnd_action?>/mail/?domain=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -108,8 +108,9 @@ sort-accounts="<?=$data[$key]['ACCOUNTS']?>" sort-star="<? if($_SESSION['favouri
                     <p class="confirmation"><?=__($spnd_confirmation,$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut">&nbsp;S</span>
               </div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/mail/?domain=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -117,6 +118,7 @@ sort-accounts="<?=$data[$key]['ACCOUNTS']?>" sort-star="<? if($_SESSION['favouri
                     <p class="confirmation"><?=__('DELETE_DOMAIN_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
 
 

+ 9 - 4
web/templates/admin/list_mail_acc.html

@@ -63,7 +63,7 @@
 
 
     <div class="l-center units">
-      <div class="l-unit">
+      <div class="l-unit header">
         <div class="subtitle"><?=__('Listing')?>  <?=htmlentities($_GET['domain'])?></div>
       </div>
 
@@ -94,8 +94,8 @@ sort-star="<? if($_SESSION['favourites']['MAIL_ACC'][$key."@".$_GET['domain']] =
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/mail/?domain=<?=$_GET['domain']?>&account=<?=$key?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__suspend">
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/mail/?domain=<?=$_GET['domain']?>&account=<?=$key?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__suspend shortcut-s" key-action="js">
                 <a id="<?=$spnd_action ?>_link_<?=$i?>" class="data-controls do_<?=$spnd_action?>">
                   <?=__($spnd_action)?> <i class="do_<?=$spnd_action?>"></i>
                   <input type="hidden" name="<?=$spnd_action?>_url" value="/<?=$spnd_action?>/mail/?domain=<?=$_GET['domain']?>&account=<?php echo $key ?>&token=<?=$_SESSION['token']?>" />
@@ -103,8 +103,9 @@ sort-star="<? if($_SESSION['favourites']['MAIL_ACC'][$key."@".$_GET['domain']] =
                     <p class="confirmation"><?=__($spnd_confirmation,$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut">&nbsp;S</span>
               </div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/mail/?domain=<?=$_GET['domain']?>&account=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -112,6 +113,7 @@ sort-star="<? if($_SESSION['favourites']['MAIL_ACC'][$key."@".$_GET['domain']] =
                     <p class="confirmation"><?=__('DELETE_MAIL_ACCOUNT_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
             </div>
             <!-- /.actiona-panel -->
@@ -213,6 +215,9 @@ sort-star="<? if($_SESSION['favourites']['MAIL_ACC'][$key."@".$_GET['domain']] =
               }
             ?>
           </div>
+          <div class="data-count l-unit__col l-unit__col--right back clearfix">
+            <a class="button cancel" href="/list/mail/">back</a>
+          </div>
         </div>
       </div>
     </div>

+ 3 - 2
web/templates/admin/list_packages.html

@@ -67,8 +67,8 @@ sort-star="<?if($_SESSION['favourites']['PACKAGE'][$key] == 1) echo '1'; else ec
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/package/?package=<?=$key?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/package/?package=<?=$key?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/package/?package=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -76,6 +76,7 @@ sort-star="<?if($_SESSION['favourites']['PACKAGE'][$key] == 1) echo '1'; else ec
                     <p class="confirmation"><?=__('DELETE_PACKAGE_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
 
             </div>

+ 8 - 6
web/templates/admin/list_search.html

@@ -74,7 +74,7 @@
               if ($data[$key]['USER'] != $user && $data[$key]['KEY'] == 'ACCOUNT') {
                 if ($key == $user) {
             ?>
-                  <div class="actions-panel__col actions-panel__loginas"><a href="/logout""><?=__('logout')?> <i></i></a></div>
+                  <div class="actions-panel__col actions-panel__loginas shortcut-l" key-action="href"><a href="/logout""><?=__('logout')?> <i></i></a><span class="shortcut">&nbsp;L</span></div>
                 <?
                   if (!empty($_SESSION['look_alert'])) {
                 ?>
@@ -98,7 +98,7 @@
                       unset($_SESSION['look_alert']);
                   }
                 } else { ?>
-                  <div class="actions-panel__col actions-panel__loginas"><a href="/login/?loginas=<?=$data[$key]['USER']?>&token=<?=$_SESSION['token']?>""><?=__('login as')?> <i></i></a></div>
+                  <div class="actions-panel__col actions-panel__loginas shortcut-l" key-action="href"><a href="/login/?loginas=<?=$data[$key]['USER']?>&token=<?=$_SESSION['token']?>""><?=__('login as')?> <i></i></a><span class="shortcut">&nbsp;L</span></div>
             <?  }
               }
             ?>
@@ -121,9 +121,9 @@
                 $edit_lnk = '/edit/'.$data[$key]['TYPE'].'/?'.strtolower($data[$key]['KEY']).'='.$data[$key]['RESULT'].'&user='.$data[$key]['USER'];
               }
             ?>
-              <div class="actions-panel__col actions-panel__edit"><a href="<?=$edit_lnk?>"><?=__('edit')?> <i></i></a></div>
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="<?=$edit_lnk?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
               <? if (!empty($data[$key]['STATS'])) { ?>
-                  <div class="actions-panel__col actions-panel__logs"><a href="http://<?=$data[$key]['RESULT']?>/vstats/"  target="_blank"><?=__('open webstats')?> <i></i></a></div>
+                  <div class="actions-panel__col actions-panel__logs shortcut-w" key-action="href"><a href="http://<?=$data[$key]['RESULT']?>/vstats/"  target="_blank"><?=__('open webstats')?> <i></i></a><span class="shortcut">&nbsp;w</span></div>
               <? } ?>
 
 
@@ -149,7 +149,7 @@
                   $cnfrm = 'SUSPEND_DOMAIN_CONFIRMATION';
                 }
               ?>
-              <div class="actions-panel__col actions-panel__suspend">
+              <div class="actions-panel__col actions-panel__suspend shortcut-s" key-action="js">
                 <a id="<?=$spnd_action ?>_link_<?=$i?>" class="data-controls do_<?=$spnd_action?>">
                   <?=__($spnd_action)?> <i class="do_<?=$spnd_action?>"></i>
                   <input type="hidden" name="<?=$spnd_action?>_url" value="<?=$spnd_lnk?>&token=<?=$_SESSION['token']?>" />
@@ -157,6 +157,7 @@
                     <p class="confirmation"><?=__($cnfrm, $data[$key]['RESULT'])?></p>
                   </div>
                 </a>
+                <span class="shortcut">&nbsp;S</span>
               </div>
 
               <?
@@ -181,7 +182,7 @@
                   $cnfrm = 'DELETE_DOMAIN_CONFIRMATION';
                 }
               ?>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="<?=$delete_lnk?>&token=<?=$_SESSION['token']?>" />
@@ -189,6 +190,7 @@
                     <p class="confirmation"><?=__($cnfrm, $data[$key]['RESULT'])?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
             </div>
             <!-- /.actiona-panel -->

+ 3 - 3
web/templates/admin/list_services.html

@@ -56,7 +56,7 @@
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__restart"><a href="/restart/system/?hostname=<?php echo $sys['sysinfo']['HOSTNAME'] ?>"><?=__('restart')?> <i></i></a></div>
+              <div class="actions-panel__col actions-panel__restart shortcut-r" key-action="href"><a href="/restart/system/?hostname=<?php echo $sys['sysinfo']['HOSTNAME'] ?>"><?=__('restart')?> <i></i></a><span class="shortcut">&nbsp;R</span></div>
             </div>
             <!-- /.actions-panel -->
           </div>
@@ -139,8 +139,8 @@
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__<?=$action?>"><a href="/<?php echo $action ?>/service/?srv=<?=$key?>&token=<?=$_SESSION['token']?>"><?=__($action)?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__restart"><a href="/restart/service/?srv=<?=$key?>&token=<?=$_SESSION['token']?>"><?=__('restart')?> <i></i></a></div>
+              <div class="actions-panel__col actions-panel__<?=$action?> shortcut-s" key-action="href"><a href="/<?php echo $action ?>/service/?srv=<?=$key?>&token=<?=$_SESSION['token']?>"><?=__($action)?> <i></i></a><span class="shortcut">&nbsp;S</span></div>
+              <div class="actions-panel__col actions-panel__restart shortcut-r" key-action="href"><a href="/restart/service/?srv=<?=$key?>&token=<?=$_SESSION['token']?>"><?=__('restart')?> <i></i></a><span class="shortcut">&nbsp;R</span></div>
             </div>
             <!-- /.actions-panel -->
           </div>

+ 1 - 1
web/templates/admin/list_updates.html

@@ -75,7 +75,7 @@
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
               <? if ($data[$key]['UPDATED'] == 'no') {
-                   echo '<div class="actions-panel__col actions-panel__update"><a href="/update/vesta/?pkg='.$key.'&token='.$_SESSION['token'].'">'.__('update').'<i></i></a></div>';
+                   echo '<div class="actions-panel__col actions-panel__update shortcut-u" key-action="href"><a href="/update/vesta/?pkg='.$key.'&token='.$_SESSION['token'].'">'.__('update').'<i></i></a><span class="shortcut">&nbsp;U</span></div>';
                  }
               ?>
             </div>

+ 7 - 5
web/templates/admin/list_user.html

@@ -95,7 +95,7 @@ sort-bandwidth="<?=$data[$key]['U_BANDWIDTH']?>" sort-disk="<?=$data[$key]['U_DI
             <?
               if ($key == $user) {
             ?>
-                <div class="actions-panel__col actions-panel__loginas"><a href="/logout""><?=__('logout')?> <i></i></a></div>
+                <div class="actions-panel__col actions-panel__loginas shortcut-l" key-action="href"><a href="/logout""><?=__('logout')?> <i></i></a><span class="shortcut">&nbsp;L</span></div>
               <?
                 if (!empty($_SESSION['look_alert'])) {
               ?>
@@ -119,10 +119,10 @@ sort-bandwidth="<?=$data[$key]['U_BANDWIDTH']?>" sort-disk="<?=$data[$key]['U_DI
                     unset($_SESSION['look_alert']);
                 }
               } else { ?>
-                <div class="actions-panel__col actions-panel__loginas"><a href="/login/?loginas=<?=$key?>&token=<?=$_SESSION['token']?>""><?=__('login as').' '.$key?> <i></i></a></div>
+                <div class="actions-panel__col actions-panel__loginas shortcut-l" key-action="href"><a href="/login/?loginas=<?=$key?>&token=<?=$_SESSION['token']?>""><?=__('login as').' '.$key?> <i></i></a><span class="shortcut">&nbsp;L</span></div>
               <?}?>
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/user/?user=<?=$key?>&token=<?=$_SESSION['token']?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__suspend">
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/user/?user=<?=$key?>&token=<?=$_SESSION['token']?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__suspend shortcut-s" key-action="js">
                 <a id="<?=$spnd_action ?>_link_<?=$i?>" class="data-controls do_<?=$spnd_action?>">
                   <?=__($spnd_action)?> <i class="do_<?=$spnd_action?>"></i>
                   <input type="hidden" name="<?=$spnd_action?>_url" value="/<?=$spnd_action?>/user/?user=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -130,8 +130,9 @@ sort-bandwidth="<?=$data[$key]['U_BANDWIDTH']?>" sort-disk="<?=$data[$key]['U_DI
                     <p class="confirmation"><?=__($spnd_confirmation,$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut">&nbsp;S</span>
               </div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/user/?user=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -139,6 +140,7 @@ sort-bandwidth="<?=$data[$key]['U_BANDWIDTH']?>" sort-disk="<?=$data[$key]['U_DI
                     <p class="confirmation"><?=__('DELETE_USER_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
             </div>
             <!-- /.actiona-panel -->

+ 7 - 5
web/templates/admin/list_web.html

@@ -132,12 +132,12 @@ sort-name="<?=$key?>"  sort-bandwidth="<?=$data[$key]['U_BANDWIDTH']?>" sort-dis
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/web/?domain=<?=$key?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__logs"><a href="/list/web-log/?domain=<?php echo $key ?>&type=access#" target="_blank"><?=__('view logs')?> <i></i></a></div>
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/web/?domain=<?=$key?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__logs shortcut-l" key-action="href"><a href="/list/web-log/?domain=<?php echo $key ?>&type=access#" target="_blank"><?=__('view logs')?> <i></i></a><span class="shortcut">&nbsp;L</span></div>
               <? if (!empty($data[$key]['STATS'])) { ?>
-                  <div class="actions-panel__col actions-panel__logs"><a href="http://<?=$key?>/vstats/"  target="_blank"><?=__('open webstats')?> <i></i></a></div>
+                  <div class="actions-panel__col actions-panel__logs shortcut-w" key-action="href"><a href="http://<?=$key?>/vstats/"  target="_blank"><?=__('open webstats')?> <i></i></a><span class="shortcut">&nbsp;W</span></div>
               <? } ?>
-              <div class="actions-panel__col actions-panel__suspend">
+              <div class="actions-panel__col actions-panel__suspend shortcut-s" key-action="js">
                 <a id="<?=$spnd_action ?>_link_<?=$i?>" class="data-controls do_<?=$spnd_action?>">
                   <?=__($spnd_action)?> <i class="do_<?=$spnd_action?>"></i>
                   <input type="hidden" name="<?=$spnd_action?>_url" value="/<?=$spnd_action?>/web/?domain=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -145,8 +145,9 @@ sort-name="<?=$key?>"  sort-bandwidth="<?=$data[$key]['U_BANDWIDTH']?>" sort-dis
                     <p class="confirmation"><?=__($spnd_confirmation,$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut">&nbsp;S</span>
               </div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/web/?domain=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -154,6 +155,7 @@ sort-name="<?=$key?>"  sort-bandwidth="<?=$data[$key]['U_BANDWIDTH']?>" sort-dis
                     <p class="confirmation"><?=__('DELETE_DOMAIN_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
 
             </div>

+ 152 - 32
web/templates/footer.html

@@ -142,7 +142,6 @@
               // Shortcuts
 
               shortcut.add("Ctrl+Enter", function(){
-
                 $('form#vstobjects').submit();
               }, {
                   'type':             'keydown',
@@ -152,16 +151,18 @@
                   }
               );
 
-              shortcut.add("Backspace", function(){
+              shortcut.add("Ctrl+Backspace", function(){
                 if(VE.tmp.form_changed && $('form#vstobjects .button.cancel')[0]){
                   VE.helpers.createConfirmationDialog($('.confirmation-text-redirect'), '', $('form#vstobjects input.cancel').attr('onclick').replace("location.href='", "").replace("'",""));
                 } else if($('form#vstobjects .button.cancel')[0]){
                   location.href=$('form#vstobjects input.cancel').attr('onclick').replace("location.href='", "").replace("'","");
+                } else if($('#vstobjects a.button.cancel')[0]){
+                  location.href=$('#vstobjects a.button.cancel').attr('href');
                 }
               }, {
                   'type':             'keydown',
                   'propagate':        false,
-                  'disable_in_input': true,
+                  'disable_in_input': false,
                   'target':           document
                   }
               );
@@ -199,30 +200,6 @@
                 }
               });
 
-              shortcut.add("n", function(evt){
-                  if (!evt.ctrlKey && !evt.shiftKey) {
-                      if ($('.l-sort__create-btn')[0]) {
-                          location.href=$('.l-sort__create-btn').attr('href');
-                      }
-                  }
-              }, {
-                  'type':             'keyup',
-                  'propagate':        false,
-                  'disable_in_input': true,
-                  'target':           document
-                  }
-              );
-
-              shortcut.add("a+1", function(){
-                  location.href='/add/user/';
-              }, {
-                  'type':             'keydown',
-                  'propagate':        false,
-                  'disable_in_input': true,
-                  'target':           document
-                  }
-              );
-
               shortcut.add("1", function(){
                 if(VE.tmp.form_changed){
                   VE.helpers.createConfirmationDialog($('.confirmation-text-redirect'), '', $('.l-stat .l-stat__col:nth-of-type(1) a').attr('href'));
@@ -333,10 +310,11 @@
 
               shortcut.add("Esc", function(){
                 $('.shortcuts').hide();
+                $('input, checkbox, textarea, select').blur();
               }, {
                   'type':             'keydown',
                   'propagate':        false,
-                  'disable_in_input': true,
+                  'disable_in_input': false,
                   'target':           document
                   }
               );
@@ -361,11 +339,151 @@
                   }
               );
 
+
+
+              shortcut.add("down", function(){
+                VE.navigation.move_focus_down();
+              }, {
+                  'type':             'keydown',
+                  'propagate':        false,
+                  'disable_in_input': true,
+                  'target':           document
+                  }
+              );
+
+              shortcut.add("up", function(){
+                VE.navigation.move_focus_up();
+              }, {
+                  'type':             'keydown',
+                  'propagate':        false,
+                  'disable_in_input': true,
+                  'target':           document
+                  }
+              );
+
+              shortcut.add("l", function(){
+                var elm = $('.units.active .l-unit.focus .shortcut-l');
+                if(elm.length){
+                  VE.navigation.shortcut(elm);
+                }
+              }, {
+                  'type':             'keydown',
+                  'propagate':        false,
+                  'disable_in_input': true,
+                  'target':           document
+                  }
+              );
+
+              shortcut.add("s", function(){
+                var elm = $('.units.active .l-unit.focus .shortcut-s');
+                if(elm.length){
+                  VE.navigation.shortcut(elm);
+                }
+              }, {
+                  'type':             'keydown',
+                  'propagate':        false,
+                  'disable_in_input': true,
+                  'target':           document
+                  }
+              );
+
+              shortcut.add("w", function(){
+                var elm = $('.units.active .l-unit.focus .shortcut-w');
+                if(elm.length){
+                  VE.navigation.shortcut(elm);
+                }
+              }, {
+                  'type':             'keydown',
+                  'propagate':        false,
+                  'disable_in_input': true,
+                  'target':           document
+                  }
+              );
+
+              shortcut.add("d", function(){
+                var elm = $('.units.active .l-unit.focus .shortcut-d');
+                if(elm.length){
+                  VE.navigation.shortcut(elm);
+                }
+              }, {
+                  'type':             'keydown',
+                  'propagate':        false,
+                  'disable_in_input': true,
+                  'target':           document
+                  }
+              );
+
+              shortcut.add("r", function(){
+                var elm = $('.units.active .l-unit.focus .shortcut-r');
+                if(elm.length){
+                  VE.navigation.shortcut(elm);
+                }
+              }, {
+                  'type':             'keydown',
+                  'propagate':        false,
+                  'disable_in_input': true,
+                  'target':           document
+                  }
+              );
+
+              shortcut.add("n", function(){
+                var elm = $('.units.active .l-unit.focus .shortcut-n');
+                if(elm.length){
+                  VE.navigation.shortcut(elm);
+                }
+              }, {
+                  'type':             'keydown',
+                  'propagate':        false,
+                  'disable_in_input': true,
+                  'target':           document
+                  }
+              );
+
+              shortcut.add("u", function(){
+                var elm = $('.units.active .l-unit.focus .shortcut-u');
+                if(elm.length){
+                  VE.navigation.shortcut(elm);
+                }
+              }, {
+                  'type':             'keydown',
+                  'propagate':        false,
+                  'disable_in_input': true,
+                  'target':           document
+                  }
+              );
+
+
+              shortcut.add("Delete", function(){
+                var elm = $('.units.active .l-unit.focus .shortcut-delete');
+                if(elm.length){
+                  VE.navigation.shortcut(elm);
+                }
+              }, {
+                  'type':             'keydown',
+                  'propagate':        false,
+                  'disable_in_input': true,
+                  'target':           document
+                  }
+              );
+
               shortcut.add("Enter", function(){
                 if(VE.tmp.form_changed){
-                  VE.helpers.createConfirmationDialog($('.confirmation-text-redirect'), '', $(VE.navigation.state.menu_selector + '.focus a').attr('href'));
+                  if(!$('.ui-dialog').is(':visible')){
+                    VE.helpers.createConfirmationDialog($('.confirmation-text-redirect')[0], '', $(VE.navigation.state.menu_selector + '.focus a').attr('href'));
+                  } else { // if dialog is opened - submitting confirm box by "enter" shortcut
+                    $('.ui-dialog button.submit').click();
+                  }
                 } else {
-                  VE.navigation.enter_focused();
+                    if(!$('.ui-dialog').is(':visible')){
+                      var elm = $('.units.active .l-unit.focus .shortcut-enter');
+                      if(elm.length){
+                        VE.navigation.shortcut(elm);
+                      } else {
+                        VE.navigation.enter_focused();
+                      }
+                    } else { // if dialog is opened - submitting confirm box by "enter" shortcut
+                      $('.ui-dialog button.submit').click();
+                    }
                 }
               }, {
                   'type':             'keydown',
@@ -375,6 +493,8 @@
                   }
               );
 
+
+
               $('.shortcuts .close').click(function(){
                 $('.shortcuts').hide();
               });
@@ -393,7 +513,7 @@
 
 
               // focusing on the first input at form
-              if(location.href.indexOf('lead=') == -1){
+              if( location.href.indexOf('lead=') == -1 && !$('.ui-dialog').is(':visible') ){
                 $('#vstobjects .vst-input:not([disabled]), #vstobjects .vst-list:not([disabled])').first().focus();
               }
 
@@ -469,7 +589,7 @@
       <ul>
         <li><span class="key">n</span><?=__('Add New object')?></li>
         <li><span class="key">Ctrl + Enter</span><?=__('Save Form')?></li>
-        <li><span class="key">Backspace</span><?=__('Cancel saving form')?></li>
+        <li><span class="key">Ctrl + Backspace</span><?=__('Cancel saving form')?></li>
 
         <li class="step-top"><span class="key">1</span><?=__('Go to USER list')?></li>
         <li><span class="key">2</span><?=__('Go to WEB list')?></li>

+ 3 - 3
web/templates/user/list_cron.html

@@ -88,8 +88,8 @@ sort-date="<?=strtotime($data[$key]['DATE'].' '.$data[$key]['TIME'])?>" sort-nam
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/cron/?job=<?=$data[$key]['JOB']?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/cron/?job=<?=$data[$key]['JOB']?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/cron/?job=<?=$data[$key]['JOB']?>&token=<?=$_SESSION['token']?>" />
@@ -97,9 +97,9 @@ sort-date="<?=strtotime($data[$key]['DATE'].' '.$data[$key]['TIME'])?>" sort-nam
                     <p class="confirmation"><?=__('DELETE_CRON_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
 
-
             </div>
             <!-- /.actiona-panel -->
           </div>

+ 3 - 2
web/templates/user/list_db.html

@@ -119,8 +119,8 @@ sort-user="<?=$data[$key]['DBUSER']?>" sort-server="<?=$data[$key]['HOST']?>" so
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/db/?database=<?=$key?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/db/?database=<?=$key?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/db/?database=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -128,6 +128,7 @@ sort-user="<?=$data[$key]['DBUSER']?>" sort-server="<?=$data[$key]['HOST']?>" so
                     <p class="confirmation"><?=__('DELETE_DATABASE_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
             </div>
             <!-- /.actiona-panel -->

+ 5 - 4
web/templates/user/list_dns.html

@@ -79,10 +79,10 @@ sort-expire="<?=strtotime($data[$key]['EXP'])?>" sort-records="<?=(int)$data[$ke
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__logs"><a href="/list/dns/?domain=<?=$key?>"><?=__('list records',$data[$key]['RECORDS'])?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__add"><a href="/add/dns/?domain=<?=$key?>"><?=__('add record')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/dns/?domain=<?=$key?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__logs shortcut-l" key-action="href"><a href="/list/dns/?domain=<?=$key?>"><?=__('list records',$data[$key]['RECORDS'])?> <i></i></a><span class="shortcut">&nbsp;L</span></div>
+              <div class="actions-panel__col actions-panel__add shortcut-n" key-action="href"><a href="/add/dns/?domain=<?=$key?>"><?=__('add record')?> <i></i></a><span class="shortcut">&nbsp;N</span></div>
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/dns/?domain=<?=$key?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/dns/?domain=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -90,6 +90,7 @@ sort-expire="<?=strtotime($data[$key]['EXP'])?>" sort-records="<?=(int)$data[$ke
                     <p class="confirmation"><?=__('DELETE_DOMAIN_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
             </div>
             <!-- /.actions-panel -->

+ 7 - 3
web/templates/user/list_dns_rec.html

@@ -47,7 +47,7 @@
 
     <div class="l-center units">
 
-    <div class="l-unit">
+    <div class="l-unit header">
       <div class="subtitle"><?=__('Listing')?>  <?=htmlentities($_GET['domain'])?></div>
     </div>
 
@@ -76,8 +76,8 @@
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/dns/?domain=<?=$_GET['domain']?>&record_id=<?=$data[$key]['ID']?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/dns/?domain=<?=$_GET['domain']?>&record_id=<?=$data[$key]['ID']?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/dns/?domain=<?=$_GET['domain']?>&record_id=<?=$data[$key]['ID']?>&token=<?=$_SESSION['token']?>" />
@@ -85,6 +85,7 @@
                     <p class="confirmation"><?=__('DELETE_RECORD_CONFIRMATION',$data[$key]['RECORD'])?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
 
             </div>
@@ -134,6 +135,9 @@
               }
             ?>
           </div>
+          <div class="data-count l-unit__col l-unit__col--right back clearfix">
+            <a class="button cancel" href="/list/dns/">back</a>
+          </div>
       </div>
     </div>
   </div>

+ 5 - 4
web/templates/user/list_mail.html

@@ -95,10 +95,10 @@ sort-accounts="<?=$data[$key]['ACCOUNTS']?>" sort-star="<? if($_SESSION['favouri
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__logs"><a href="?domain=<?=$key?>"><?=__('list accounts',$data[$key]['ACCOUNTS'])?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__add"><a href="/add/mail/?domain=<?=$key?>"><?=__('add account')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/mail/?domain=<?=$key?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__logs shortcut-l" key-action="href"><a href="?domain=<?=$key?>"><?=__('list accounts',$data[$key]['ACCOUNTS'])?> <i></i></a><span class="shortcut">&nbsp;L</span></div>
+              <div class="actions-panel__col actions-panel__add shortcut-n" key-action="href"><a href="/add/mail/?domain=<?=$key?>"><?=__('add account')?> <i></i></a><span class="shortcut">&nbsp;N</span></div>
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/mail/?domain=<?=$key?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/mail/?domain=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -106,6 +106,7 @@ sort-accounts="<?=$data[$key]['ACCOUNTS']?>" sort-star="<? if($_SESSION['favouri
                     <p class="confirmation"><?=__('DELETE_DOMAIN_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
 
 

+ 7 - 3
web/templates/user/list_mail_acc.html

@@ -61,7 +61,7 @@
 
 
     <div class="l-center units">
-      <div class="l-unit">
+      <div class="l-unit header">
         <div class="subtitle"><?=__('Listing')?>  <?=htmlentities($_GET['domain'])?></div>
       </div>
 
@@ -92,8 +92,8 @@ sort-star="<? if($_SESSION['favourites']['MAIL_ACC'][$key."@".$_GET['domain']] =
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/mail/?domain=<?=$_GET['domain']?>&account=<?=$key?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/mail/?domain=<?=$_GET['domain']?>&account=<?=$key?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/mail/?domain=<?=$_GET['domain']?>&account=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -101,6 +101,7 @@ sort-star="<? if($_SESSION['favourites']['MAIL_ACC'][$key."@".$_GET['domain']] =
                     <p class="confirmation"><?=__('DELETE_MAIL_ACCOUNT_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
             </div>
             <!-- /.actiona-panel -->
@@ -202,6 +203,9 @@ sort-star="<? if($_SESSION['favourites']['MAIL_ACC'][$key."@".$_GET['domain']] =
               }
             ?>
           </div>
+          <div class="data-count l-unit__col l-unit__col--right back clearfix">
+            <a class="button cancel" href="/list/mail/">back</a>
+          </div>
         </div>
       </div>
     </div>

+ 6 - 5
web/templates/user/list_search.html

@@ -73,7 +73,7 @@
               if ($data[$key]['USER'] != $user && $data[$key]['KEY'] == 'ACCOUNT') {
                 if ($key == $user) {
             ?>
-                  <div class="actions-panel__col actions-panel__loginas"><a href="/logout""><?=__('logout')?> <i></i></a></div>
+                  <div class="actions-panel__col actions-panel__loginas shortcut-l" key-action="href"><a href="/logout""><?=__('logout')?> <i></i></a><span class="shortcut">&nbsp;L</span></div>
                 <?
                   if (!empty($_SESSION['look_alert'])) {
                 ?>
@@ -97,7 +97,7 @@
                       unset($_SESSION['look_alert']);
                   }
                 } else { ?>
-                  <div class="actions-panel__col actions-panel__loginas"><a href="/login/?loginas=<?=$data[$key]['USER']?>&token=<?=$_SESSION['token']?>""><?=__('login as')?> <i></i></a></div>
+                  <div class="actions-panel__col actions-panel__loginas shortcut-l" key-action="href"><a href="/login/?loginas=<?=$data[$key]['USER']?>&token=<?=$_SESSION['token']?>""><?=__('login as')?> <i></i></a><span class="shortcut">&nbsp;L</span></div>
             <?  }
               }
             ?>
@@ -120,9 +120,9 @@
                 $edit_lnk = '/edit/'.$data[$key]['TYPE'].'/?'.strtolower($data[$key]['KEY']).'='.$data[$key]['RESULT'].'&user='.$data[$key]['USER'];
               }
             ?>
-              <div class="actions-panel__col actions-panel__edit"><a href="<?=$edit_lnk?>"><?=__('edit')?> <i></i></a></div>
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="<?=$edit_lnk?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
               <? if (!empty($data[$key]['STATS'])) { ?>
-                  <div class="actions-panel__col actions-panel__logs"><a href="http://<?=$data[$key]['RESULT']?>/vstats/"  target="_blank"><?=__('open webstats')?> <i></i></a></div>
+                  <div class="actions-panel__col actions-panel__logs shortcut-w" key-action="href"><a href="http://<?=$data[$key]['RESULT']?>/vstats/"  target="_blank"><?=__('open webstats')?> <i></i></a><span class="shortcut">&nbsp;W</span></div>
               <? } ?>
 
               <?
@@ -147,7 +147,7 @@
                   $cnfrm = 'DELETE_DOMAIN_CONFIRMATION';
                 }
               ?>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="<?=$delete_lnk?>&token=<?=$_SESSION['token']?>" />
@@ -155,6 +155,7 @@
                     <p class="confirmation"><?=__($cnfrm, $data[$key]['RESULT'])?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
             </div>
             <!-- /.actiona-panel -->

+ 5 - 4
web/templates/user/list_user.html

@@ -93,7 +93,7 @@ sort-disk="<?=$data[$key]['U_DISK']?>" sort-star="<?if($_SESSION['favourites']['
             <?
               if ($key == $user) {
             ?>
-                <div class="actions-panel__col actions-panel__loginas"><a href="/logout""><?=__('logout')?> <i></i></a></div>
+                <div class="actions-panel__col actions-panel__loginas shortcut-l" key-action="href"><a href="/logout""><?=__('logout')?> <i></i></a><span class="shortcut">&nbsp;L</span></div>
               <?
                 if (!empty($_SESSION['look_alert'])) {
               ?>
@@ -117,10 +117,10 @@ sort-disk="<?=$data[$key]['U_DISK']?>" sort-star="<?if($_SESSION['favourites']['
                     unset($_SESSION['look_alert']);
                 }
               } else { ?>
-                <div class="actions-panel__col actions-panel__loginas"><a href="/login/?loginas=<?=$key?>""><?=__('login as')?> <i></i></a></div>
+                <div class="actions-panel__col actions-panel__loginas shortcut-l" key-action="href"><a href="/login/?loginas=<?=$key?>""><?=__('login as')?> <i></i></a><span class="shortcut">&nbsp;L</span></div>
               <?}?>
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/user/?user=<?=$key?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/user/?user=<?=$key?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/user/?user=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -128,6 +128,7 @@ sort-disk="<?=$data[$key]['U_DISK']?>" sort-star="<?if($_SESSION['favourites']['
                     <p class="confirmation"><?=__('DELETE_USER_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>
             </div>
             <!-- /.actiona-panel -->

+ 5 - 4
web/templates/user/list_web.html

@@ -133,12 +133,12 @@ sort-bandwidth="<?=$data[$key]['U_BANDWIDTH']?>" sort-disk="<?=$data[$key]['U_DI
           <!-- l-unit-toolbar__col -->
           <div class="l-unit-toolbar__col l-unit-toolbar__col--right noselect">
             <div class="actions-panel clearfix">
-              <div class="actions-panel__col actions-panel__edit"><a href="/edit/web/?domain=<?=$key?>"><?=__('edit')?> <i></i></a></div>
-              <div class="actions-panel__col actions-panel__logs"><a href="/list/web-log/?domain=<?php echo $key ?>&type=access#" target="_blank"><?=__('view logs')?> <i></i></a></div>
+              <div class="actions-panel__col actions-panel__edit shortcut-enter" key-action="href"><a href="/edit/web/?domain=<?=$key?>"><?=__('edit')?> <i></i></a><span class="shortcut enter">&nbsp;&#8629;</span></div>
+              <div class="actions-panel__col actions-panel__logs shortcut-l" key-action="href"><a href="/list/web-log/?domain=<?php echo $key ?>&type=access#" target="_blank"><?=__('view logs')?> <i></i></a><span class="shortcut">&nbsp;L</span></div>
               <? if (!empty($data[$key]['STATS'])) { ?>
-                  <div class="actions-panel__col actions-panel__logs"><a href="http://<?=$key?>/vstats/"  target="_blank"><?=__('open webstats')?> <i></i></a></div>
+                  <div class="actions-panel__col actions-panel__logs shortcut-w" key-action="href"><a href="http://<?=$key?>/vstats/"  target="_blank"><?=__('open webstats')?> <i></i></a><span class="shortcut">&nbsp;W</span></div>
               <? } ?>
-              <div class="actions-panel__col actions-panel__delete">
+              <div class="actions-panel__col actions-panel__delete shortcut-delete" key-action="js">
                 <a id="delete_link_<?=$i?>" class="data-controls do_delete">
                   <?=__('delete')?> <i class="do_delete"></i>
                   <input type="hidden" name="delete_url" value="/delete/web/?domain=<?=$key?>&token=<?=$_SESSION['token']?>" />
@@ -146,6 +146,7 @@ sort-bandwidth="<?=$data[$key]['U_BANDWIDTH']?>" sort-disk="<?=$data[$key]['U_DI
                     <p class="confirmation"><?=__('DELETE_DOMAIN_CONFIRMATION',$key)?></p>
                   </div>
                 </a>
+                <span class="shortcut delete">&nbsp;Del</span>
               </div>