diff options
Diffstat (limited to 'js/build/app/directives')
-rw-r--r-- | js/build/app/directives/audio.js | 51 | ||||
-rw-r--r-- | js/build/app/directives/droppable.js | 50 | ||||
-rw-r--r-- | js/build/app/directives/itemshortcuts.js | 126 | ||||
-rw-r--r-- | js/build/app/directives/newsclickscroll.js | 48 | ||||
-rw-r--r-- | js/build/app/directives/newsitemscroll.js | 82 | ||||
-rw-r--r-- | js/build/app/directives/undonotification.js | 63 |
6 files changed, 420 insertions, 0 deletions
diff --git a/js/build/app/directives/audio.js b/js/build/app/directives/audio.js new file mode 100644 index 000000000..2dfc0aa37 --- /dev/null +++ b/js/build/app/directives/audio.js @@ -0,0 +1,51 @@ +// Generated by CoffeeScript 1.6.3 +/* + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt dev@bernhard-posselt.com + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +License as published by the Free Software Foundation; either +version 3 of the License, or any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU AFFERO GENERAL PUBLIC LICENSE for more details. + +You should have received a copy of the GNU Affero General Public +License along with this library. If not, see <http://www.gnu.org/licenses/>. +*/ + + +(function() { + angular.module('News').directive('newsAudio', function() { + var directive; + return directive = { + restrict: 'E', + scope: { + src: '@', + type: '@' + }, + transclude: true, + template: '' + '<audio controls="controls" preload="none" ng-hide="cantPlay()">' + '<source src="{{ src }}">' + '</audio>' + '<a href="{{ src }}" class="button" ng-show="cantPlay()" ' + 'ng-transclude></a>', + link: function(scope, elm, attrs) { + var cantPlay, source; + source = elm.children().children('source')[0]; + cantPlay = false; + source.addEventListener('error', function() { + return scope.$apply(function() { + return cantPlay = true; + }); + }); + return scope.cantPlay = function() { + return cantPlay; + }; + } + }; + }); + +}).call(this); diff --git a/js/build/app/directives/droppable.js b/js/build/app/directives/droppable.js new file mode 100644 index 000000000..30335232b --- /dev/null +++ b/js/build/app/directives/droppable.js @@ -0,0 +1,50 @@ +// Generated by CoffeeScript 1.6.3 +/* + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt dev@bernhard-posselt.com + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +License as published by the Free Software Foundation; either +version 3 of the License, or any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU AFFERO GENERAL PUBLIC LICENSE for more details. + +You should have received a copy of the GNU Affero General Public +License along with this library. If not, see <http://www.gnu.org/licenses/>. +*/ + + +(function() { + angular.module('News').directive('droppable', [ + '$rootScope', function($rootScope) { + return function(scope, elm, attr) { + var $elem, details; + $elem = $(elm); + details = { + accept: '.feed', + hoverClass: 'drag-and-drop', + greedy: true, + drop: function(event, ui) { + var data; + $('.drag-and-drop').removeClass('drag-and-drop'); + data = { + folderId: parseInt($elem.data('id'), 10), + feedId: parseInt($(ui.draggable).data('id'), 10) + }; + $rootScope.$broadcast('moveFeedToFolder', data); + return scope.$apply(attr.droppable); + } + }; + return $elem.droppable(details); + }; + } + ]); + +}).call(this); diff --git a/js/build/app/directives/itemshortcuts.js b/js/build/app/directives/itemshortcuts.js new file mode 100644 index 000000000..b23599c61 --- /dev/null +++ b/js/build/app/directives/itemshortcuts.js @@ -0,0 +1,126 @@ +// Generated by CoffeeScript 1.6.3 +/* + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt dev@bernhard-posselt.com + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +License as published by the Free Software Foundation; either +version 3 of the License, or any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU AFFERO GENERAL PUBLIC LICENSE for more details. + +You should have received a copy of the GNU Affero General Public +License along with this library. If not, see <http://www.gnu.org/licenses/>. +*/ + + +(function() { + angular.module('News').directive('itemShortcuts', [ + '$window', function($window) { + return function(scope, elm, attr) { + var getCurrentItem, jumpTo, jumpToNextItem, jumpToPreviousItem, keepUnreadCurrentItem, openCurrentItem, starCurrentItem; + jumpTo = function($scrollArea, $item) { + var position; + position = $item.offset().top - $scrollArea.offset().top + $scrollArea.scrollTop(); + return $scrollArea.scrollTop(position); + }; + jumpToPreviousItem = function(scrollArea) { + var $item, $items, $previous, $scrollArea, item, notJumped, _i, _len; + $scrollArea = $(scrollArea); + $items = $scrollArea.find('.feed_item'); + notJumped = true; + for (_i = 0, _len = $items.length; _i < _len; _i++) { + item = $items[_i]; + $item = $(item); + if ($item.position().top >= 0) { + $previous = $item.prev(); + if ($previous.length > 0) { + jumpTo($scrollArea, $previous); + } + notJumped = false; + break; + } + } + if ($items.length > 0 && notJumped) { + return jumpTo($scrollArea, $items.last()); + } + }; + jumpToNextItem = function(scrollArea) { + var $item, $items, $scrollArea, item, jumped, _i, _len; + $scrollArea = $(scrollArea); + $items = $scrollArea.find('.feed_item'); + jumped = false; + for (_i = 0, _len = $items.length; _i < _len; _i++) { + item = $items[_i]; + $item = $(item); + if ($item.position().top > 1) { + jumped = true; + jumpTo($scrollArea, $item); + break; + } + } + if (jumped === false) { + return $scrollArea.scrollTop($scrollArea.prop('scrollHeight')); + } + }; + 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'); + }; + openCurrentItem = function(scrollArea) { + var $item; + $item = getCurrentItem(scrollArea).find('.item_title a'); + $item.trigger('click'); + return window.open($item.attr('href'), '_blank'); + }; + return $($window.document).keydown(function(e) { + var focused, scrollArea; + focused = $(':focus'); + if (!(focused.is('input') || focused.is('select') || focused.is('textarea') || focused.is('checkbox') || focused.is('button'))) { + scrollArea = elm; + if (e.keyCode === 74 || e.keyCode === 39 || e.keyCode === 78) { + 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 || e.keyCode === 76) { + return starCurrentItem(scrollArea); + } else if (e.keyCode === 72) { + starCurrentItem(scrollArea); + return jumpToNextItem(scrollArea); + } else if (e.keyCode === 79) { + return openCurrentItem(scrollArea); + } + } + }); + }; + } + ]); + +}).call(this); diff --git a/js/build/app/directives/newsclickscroll.js b/js/build/app/directives/newsclickscroll.js new file mode 100644 index 000000000..f6e9e666c --- /dev/null +++ b/js/build/app/directives/newsclickscroll.js @@ -0,0 +1,48 @@ +// Generated by CoffeeScript 1.6.3 +/* + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt dev@bernhard-posselt.com + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +License as published by the Free Software Foundation; either +version 3 of the License, or any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU AFFERO GENERAL PUBLIC LICENSE for more details. + +You should have received a copy of the GNU Affero General Public +License along with this library. If not, see <http://www.gnu.org/licenses/>. +*/ + + +(function() { + angular.module('News').directive('newsClickScroll', [ + '$timeout', function($timeout) { + return function(scope, elm, attr) { + var options; + options = scope.$eval(attr.newsClickScroll); + return elm.click(function() { + var direction, scrollArea; + scrollArea = $(options.scrollArea); + direction = options.direction; + return $timeout(function() { + var scrollPosition; + if (direction === 'top') { + scrollPosition = 0; + } else { + scrollPosition = scrollArea.prop('scrollHeight'); + } + return scrollArea.scrollTop(scrollPosition); + }, 10); + }); + }; + } + ]); + +}).call(this); diff --git a/js/build/app/directives/newsitemscroll.js b/js/build/app/directives/newsitemscroll.js new file mode 100644 index 000000000..9fc58156a --- /dev/null +++ b/js/build/app/directives/newsitemscroll.js @@ -0,0 +1,82 @@ +// Generated by CoffeeScript 1.6.3 +/* + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt dev@bernhard-posselt.com + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +License as published by the Free Software Foundation; either +version 3 of the License, or any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU AFFERO GENERAL PUBLIC LICENSE for more details. + +You should have received a copy of the GNU Affero General Public +License along with this library. If not, see <http://www.gnu.org/licenses/>. +*/ + + +(function() { + var markingRead, scrolling; + + scrolling = true; + + markingRead = true; + + angular.module('News').directive('newsItemScroll', [ + '$rootScope', 'Config', function($rootScope, Config) { + return function(scope, elm, attr) { + return elm.bind('scroll', function() { + var counter, item, _i, _ref, _results; + if (scrolling) { + scrolling = false; + setTimeout(function() { + return scrolling = true; + }, Config.ScrollTimeout); + if (markingRead && elm.attr('news-item-scroll') === 'true') { + markingRead = false; + setTimeout(function() { + var $elems, feedItem, id, offset, _i, _len, _results; + markingRead = true; + $elems = elm.find('.feed_item:not(.read)'); + _results = []; + for (_i = 0, _len = $elems.length; _i < _len; _i++) { + feedItem = $elems[_i]; + offset = $(feedItem).position().top; + if (offset <= -50) { + id = parseInt($(feedItem).data('id'), 10); + _results.push($rootScope.$broadcast('readItem', id)); + } else { + break; + } + } + return _results; + }, Config.MarkReadTimeout); + } + counter = 0; + _ref = elm.find('.feed_item'); + _results = []; + for (_i = _ref.length - 1; _i >= 0; _i += -1) { + item = _ref[_i]; + if (counter >= Config.autoPageFactor) { + break; + } + if ($(item).position().top < 0) { + $rootScope.$broadcast('autoPage'); + break; + } + _results.push(counter += 1); + } + return _results; + } + }); + }; + } + ]); + +}).call(this); diff --git a/js/build/app/directives/undonotification.js b/js/build/app/directives/undonotification.js new file mode 100644 index 000000000..924cfb1c6 --- /dev/null +++ b/js/build/app/directives/undonotification.js @@ -0,0 +1,63 @@ +// Generated by CoffeeScript 1.6.3 +/* + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt dev@bernhard-posselt.com + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +License as published by the Free Software Foundation; either +version 3 of the License, or any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU AFFERO GENERAL PUBLIC LICENSE for more details. + +You should have received a copy of the GNU Affero General Public +License along with this library. If not, see <http://www.gnu.org/licenses/>. +*/ + + +(function() { + angular.module('News').directive('undoNotification', [ + '$rootScope', '$timeout', 'Config', function($rootScope, $timeout, Config) { + return function(scope, elm, attr) { + var caption, timeout, undo; + undo = function() {}; + caption = ''; + timeout = null; + $(elm).click(function() { + var timout; + timout = null; + return $(this).fadeOut(); + }); + $(elm).find('a').click(function() { + var timout; + undo(); + timout = null; + $rootScope.$apply(); + return elm.fadeOut(); + }); + scope.getCaption = function() { + return caption; + }; + return scope.$on('undoMessage', function(scope, data) { + var _this = this; + if (timeout) { + $timeout.cancel(timeout.promise); + } + timeout = $timeout(function() { + return $(elm).fadeOut(); + }, Config.undoTimeout); + undo = data.undoCallback; + caption = data.caption; + return $(elm).fadeIn().css("display", "inline"); + }); + }; + } + ]); + +}).call(this); |