summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authorAlessandro Cosentino <cosenal@gmail.com>2012-08-14 13:52:07 -0400
committerAlessandro Cosentino <cosenal@gmail.com>2012-08-14 13:52:07 -0400
commit51bf7344a712d0ce140020e75099b11a8d007639 (patch)
treebc4a1b3fb5f0a801a5d3b06155390c1e9cdb153f /js
parent0d5bd3a636218a18b0fa81c6897614e37943455c (diff)
parenta4363afdf1892692b0f8dd72fcb804b9959b403b (diff)
Merge commit 'refs/merge-requests/17' of git://gitorious.org/owncloud/apps into merge-requests/17
Diffstat (limited to 'js')
-rw-r--r--js/news.js104
1 files changed, 64 insertions, 40 deletions
diff --git a/js/news.js b/js/news.js
index 59db7cf19..c53f364c4 100644
--- a/js/news.js
+++ b/js/news.js
@@ -22,7 +22,7 @@ News={
},
UI: {
overview:function(dialogtype, dialogfile){
- if($(dialogtype).dialog('isOpen') == true){
+ if($(dialogtype).dialog('isOpen') == true){
$(dialogtype).dialog('moveToTop');
}else{
$('#dialog_holder').load(OC.filePath('news', 'ajax', dialogfile), function(jsondata){
@@ -62,14 +62,15 @@ News={
$.post(url, { name: displayname, parentid: folderid },
function(jsondata){
if(jsondata.status == 'success'){
- $('.collapsable_container[data-id="' + folderid + '"] > ul').append(jsondata.data.listfolder);
+ // if we got a parent folder
+ if(folderid > 0){
+ $('.collapsable_container[data-id="' + folderid + '"] > ul').append(jsondata.data.listfolder);
+ } else {
+ $('#feeds').append(jsondata.data.listfolder);
+ }
setupFeedList();
transformCollapsableTrigger();
- //OC.dialogs.confirm(t('news', 'Do you want to add another folder?'), t('news', 'Folder added!'), function(answer) {
- // if(!answer) {
- $('#addfolder_dialog').dialog('destroy').remove();
- // }
- //});
+ $('#addfolder_dialog').dialog('destroy').remove();
} else {
OC.dialogs.alert(jsondata.data.message, t('news', 'Error'));
}
@@ -124,23 +125,31 @@ News={
data: { 'feedurl': feedurl, 'folderid': folderid },
dataType: "json",
success: function(jsondata){
- if(jsondata.status == 'success'){
- $('.collapsable_container[data-id="' + folderid + '"] > ul').append(jsondata.data.listfeed);
- setupFeedList();
- News.Feed.load(jsondata.data.feedid);
-
- OC.dialogs.confirm(t('news', 'Do you want to add another feed?'), t('news', 'Feed added!'), function(answer) {
- if(!answer) {
- $('#addfeed_dialog').dialog('destroy').remove();
- $('ul.accordion').before(jsondata.data.part_newfeed);
- }
- });
+ if($('#firstrun').length > 0){
+ window.location.reload();
} else {
- OC.dialogs.alert(jsondata.data.message, t('news', 'Error'));
+ if(jsondata.status == 'success'){
+ if(folderid > 0){
+ $('.collapsable_container[data-id="' + folderid + '"] > ul').append(jsondata.data.listfeed);
+ } else {
+ $('#feeds').append(jsondata.data.listfeed);
+ }
+ setupFeedList();
+ News.Feed.load(jsondata.data.feedid);
+
+ OC.dialogs.confirm(t('news', 'Do you want to add another feed?'), t('news', 'Feed added!'), function(answer) {
+ if(!answer) {
+ $('#addfeed_dialog').dialog('destroy').remove();
+ $('ul.accordion').before(jsondata.data.part_newfeed);
+ }
+ });
+ } else {
+ OC.dialogs.alert(jsondata.data.message, t('news', 'Error'));
+ }
+ $("#feed_add_url").val('');
+ $(button).attr("disabled", false);
+ $(button).prop('value', t('news', 'Add feed'));
}
- $("#feed_add_url").val('');
- $(button).attr("disabled", false);
- $(button).prop('value', t('news', 'Add feed'));
},
error: function(xhr) {
OC.dialogs.alert(t('news', 'Error while parsing the feed'), t('news', 'Fatal Error'));
@@ -286,17 +295,14 @@ News={
});
},
filter:function(value){
- // TODO: safe this on the server
var data;
switch(value){
case 'all':
- $("#feed_items .feed_item").show();
data = {
show: 'all'
};
break;
case 'unread':
- $("#feed_items .feed_item.read").hide();
data = {
show: 'unread'
};
@@ -313,7 +319,10 @@ News={
//TODO
}
});
- }
+ },
+ // this array is used to store ids to prevent sending too
+ // many posts when scrolling. the structure is: feed_id: boolean
+ processing:{},
},
/**
@@ -401,19 +410,17 @@ News={
* This handler handles changes in the ui when the itemstatus changes
*/
ItemStatusHandler: function(itemId){
- var _itemId = itemId;
+ var _itemId = parseInt(itemId);
var _$currentItem = $('#feed_items li[data-id="' + itemId + '"]');
- var _$currentItemStar = _$currentItem.children('.utils').children('.primary_item_utils').children('.star');
- var _$currentItemKeepUnread = _$currentItem.children('.utils').children('.secondary_item_utils').children('.keep_unread').children('input[type=checkbox]');
var _feedId = _$currentItem.data('feedid');
var _read = _$currentItem.hasClass('read');
- var _important = _$currentItemStar.hasClass('important');
- var _keepUnread = _$currentItemKeepUnread.prop('checked');
/**
* Switches important items to unimportant and vice versa
*/
var _toggleImportant = function(){
+ var _$currentItemStar = _$currentItem.children('.utils').children('.primary_item_utils').children('.star');
+ var _important = _$currentItemStar.hasClass('important');
if(_important){
status = 'unimportant';
} else {
@@ -421,7 +428,7 @@ News={
}
var data = {
- itemId: itemId,
+ itemId: _itemId,
status: status
};
@@ -439,14 +446,25 @@ News={
};
/**
+ * Checks the state of the keep read checkbox
+ * @return true if its checked, otherwise false
+ */
+ var _isKeptRead = function(){
+ var _$currentItemKeepUnread = _$currentItem.children('.utils').children('.secondary_item_utils').children('.keep_unread').children('input[type=checkbox]');
+ return _$currentItemKeepUnread.prop('checked');
+ }
+
+ /**
* Toggles an item as "keep unread". This prevents all handlers to mark it as unread
* except the current one
*/
var _toggleKeepUnread = function(){
- if(_keepUnread){
+ var _$currentItemKeepUnread = _$currentItem.children('.utils').children('.secondary_item_utils').children('.keep_unread').children('input[type=checkbox]');
+ if(_isKeptRead()){
_$currentItemKeepUnread.prop("checked", false);
} else {
_$currentItemKeepUnread.prop("checked", true);
+ News.Feed.processing[_itemId] = true;
_setRead(false);
}
};
@@ -459,9 +477,15 @@ News={
var status;
// if we already have the status, do nothing
- if(read === _read) return;
+ if(read === _read){
+ News.Feed.processing[_itemId] = false;
+ return;
+ }
// check if the keep unread flag was set
- if(read && _keepUnread) return;
+ if(read && _isKeptRead()){
+ News.Feed.processing[_itemId] = false;
+ return;
+ }
if(read){
status = 'read';
@@ -470,7 +494,7 @@ News={
}
var data = {
- itemId: itemId,
+ itemId: _itemId,
status: status
};
@@ -487,7 +511,7 @@ News={
} else {
OC.dialogs.alert(jsonData.data.message, t('news', 'Error'));
}
- _$currentItem.data('processing', 'false');
+ News.Feed.processing[_itemId] = false;
})
};
@@ -650,10 +674,10 @@ $(document).ready(function(){
$(this).children('ul').children('.feed_item:not(.read)').each(function(){
var itemOffset = $(this).position().top;
if(itemOffset <= 0 || scrolled >= scrollHeight){
- var itemId = $(this).data('id');
- if($(this).data('processing') != true){
+ var itemId = parseInt($(this).data('id'));
+ if(News.Feed.processing[itemId] === undefined || News.Feed.processing[itemId] === false){
// mark item as processing to prevent unecessary post requests
- $(this).data('processing', 'true');
+ News.Feed.processing[itemId] = true;
var handler = new News.ItemStatusHandler(itemId);
handler.setRead(true);
}