diff --git a/config/assets.yml b/config/assets.yml index df39fc2a..055991cb 100644 --- a/config/assets.yml +++ b/config/assets.yml @@ -12,6 +12,7 @@ javascripts: - public/javascripts/admin/jquery.ui.js - public/javascripts/admin/rails.js - public/javascripts/admin/utils.js + - public/javascripts/admin/plugins/cmd.js - public/javascripts/admin/plugins/subscribe.js - public/javascripts/admin/plugins/shortcut.js - public/javascripts/admin/plugins/toggle.js diff --git a/public/javascripts/admin/plugins/cmd.js b/public/javascripts/admin/plugins/cmd.js new file mode 100644 index 00000000..7971670e --- /dev/null +++ b/public/javascripts/admin/plugins/cmd.js @@ -0,0 +1,13 @@ +$.cmd = function(key, callback, args) { + var isCtrl = false; + $(document).keydown(function(e) { + if(!args) args=[]; // IE barks when args is null + if(e.metaKey) isCtrl = true; + if(e.keyCode == key.charCodeAt(0) && isCtrl) { + callback.apply(this, args); + return false; + } + }).keyup(function(e) { + if(e.ctrlKey) isCtrl = false; + }); +}; \ No newline at end of file diff --git a/public/javascripts/admin/plugins/shortcut.js b/public/javascripts/admin/plugins/shortcut.js index 6ae11956..4a0544d3 100644 --- a/public/javascripts/admin/plugins/shortcut.js +++ b/public/javascripts/admin/plugins/shortcut.js @@ -43,8 +43,7 @@ jQuery.fn.saveWithShortcut = function() { return this.each(function() { var form = jQuery(this); - jQuery(document).bind('keypress.shortcut', function(event) { - if (!(event.which == 115 && (event.ctrlKey || event.metaKey))) return true; + $.cmd('S', function() { updateFromCodeMirror(); save(form); event.preventDefault();