summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.rst2
-rw-r--r--css/items.css2
-rw-r--r--js/app/directives/itemshortcuts.coffee31
-rw-r--r--js/public/app.js31
4 files changed, 64 insertions, 2 deletions
diff --git a/README.rst b/README.rst
index 285fec579..2e92c0126 100644
--- a/README.rst
+++ b/README.rst
@@ -78,6 +78,8 @@ Keyboard shortcuts
------------------
* **Next item**: n/j/right arrow
* **Previous item**: p/k/left arrow
+* **Star current item**: s/i
+* **Keep current item unread**: u
Performance Notices
-------------------
diff --git a/css/items.css b/css/items.css
index 3d10e2b66..098cdfa4a 100644
--- a/css/items.css
+++ b/css/items.css
@@ -50,7 +50,7 @@
*/
.feed_item {
border-top: 1px solid #ccc;
- min-height: 100px;
+ min-height: 120px;
background-image: linear-gradient(top, rgb(248,248,248) 0, rgb(255,255,255) 84px);
background-image: -o-linear-gradient(top, rgb(248,248,248) 0, rgb(255,255,255) 84px);
background-image: -moz-linear-gradient(top, rgb(248,248,248) 0, rgb(255,255,255) 84px);
diff --git a/js/app/directives/itemshortcuts.coffee b/js/app/directives/itemshortcuts.coffee
index f80045d42..7c27b281a 100644
--- a/js/app/directives/itemshortcuts.coffee
+++ b/js/app/directives/itemshortcuts.coffee
@@ -59,6 +59,27 @@ angular.module('News').directive 'itemShortcuts', ['$window', ($window) ->
break
+ getCurrentItem = (scrollArea) ->
+ $scrollArea = $(scrollArea)
+ $items = $scrollArea.find('.feed_item')
+ for item in $items
+ $item = $(item)
+ # 130px of the item should be visible
+ if ($item.height() + $item.position().top) > 110
+ return $item
+
+
+ keepUnreadCurrentItem = (scrollArea) ->
+ $item = getCurrentItem(scrollArea)
+ $item.find('.keep_unread').trigger('click')
+
+
+ starCurrentItem = (scrollArea) ->
+ $item = getCurrentItem(scrollArea)
+ $item.find('.star').trigger('click')
+
+
+
$($window.document).keydown (e) ->
# only activate if no input elements is focused
focused = $(':focus')
@@ -78,5 +99,15 @@ angular.module('News').directive 'itemShortcuts', ['$window', ($window) ->
else if e.keyCode == 75 or e.keyCode == 37 or e.keyCode == 80
jumpToPreviousItem(scrollArea)
+ # u
+ else if e.keyCode == 85
+ keepUnreadCurrentItem(scrollArea)
+
+ # s or i
+ else if e.keyCode == 73 or e.keyCode == 83
+ starCurrentItem(scrollArea)
+
+
+
] \ No newline at end of file
diff --git a/js/public/app.js b/js/public/app.js
index 2962731f3..18aadc4c7 100644
--- a/js/public/app.js
+++ b/js/public/app.js
@@ -147,7 +147,7 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
angular.module('News').directive('itemShortcuts', [
'$window', function($window) {
return function(scope, elm, attr) {
- var jumpTo, jumpToNextItem, jumpToPreviousItem;
+ var getCurrentItem, jumpTo, jumpToNextItem, jumpToPreviousItem, keepUnreadCurrentItem, starCurrentItem;
jumpTo = function($scrollArea, $item) {
var position;
@@ -195,6 +195,31 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
}
return _results;
};
+ getCurrentItem = function(scrollArea) {
+ var $item, $items, $scrollArea, item, _i, _len;
+
+ $scrollArea = $(scrollArea);
+ $items = $scrollArea.find('.feed_item');
+ for (_i = 0, _len = $items.length; _i < _len; _i++) {
+ item = $items[_i];
+ $item = $(item);
+ if (($item.height() + $item.position().top) > 110) {
+ return $item;
+ }
+ }
+ };
+ keepUnreadCurrentItem = function(scrollArea) {
+ var $item;
+
+ $item = getCurrentItem(scrollArea);
+ return $item.find('.keep_unread').trigger('click');
+ };
+ starCurrentItem = function(scrollArea) {
+ var $item;
+
+ $item = getCurrentItem(scrollArea);
+ return $item.find('.star').trigger('click');
+ };
return $($window.document).keydown(function(e) {
var focused, scrollArea;
@@ -205,6 +230,10 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
return jumpToNextItem(scrollArea);
} else if (e.keyCode === 75 || e.keyCode === 37 || e.keyCode === 80) {
return jumpToPreviousItem(scrollArea);
+ } else if (e.keyCode === 85) {
+ return keepUnreadCurrentItem(scrollArea);
+ } else if (e.keyCode === 73 || e.keyCode === 83) {
+ return starCurrentItem(scrollArea);
}
}
});