Merge pull request #380 from MageFroh/feed-link

Feed link support
This commit is contained in:
Athou
2013-07-01 22:11:10 -07:00
33 changed files with 70 additions and 13 deletions

View File

@@ -26,6 +26,9 @@ public class Entries implements Serializable {
@ApiProperty("times the server tried to refresh the feed and failed")
private int errorCount;
@ApiProperty("URL of the website, extracted from the feed")
private String feedLink;
@ApiProperty("list generation timestamp")
private long timestamp;
@@ -67,6 +70,14 @@ public class Entries implements Serializable {
this.errorCount = errorCount;
}
public String getFeedLink() {
return feedLink;
}
public void setFeedLink(String feedLink) {
this.feedLink = feedLink;
}
public long getTimestamp() {
return timestamp;
}

View File

@@ -99,6 +99,7 @@ public class FeedREST extends AbstractResourceREST {
entries.setName(subscription.getTitle());
entries.setMessage(subscription.getFeed().getMessage());
entries.setErrorCount(subscription.getFeed().getErrorCount());
entries.setFeedLink(subscription.getFeed().getLink());
List<FeedEntryStatus> list = null;
if (unreadOnly) {

View File

@@ -67,6 +67,7 @@ settings.custom_css=Custom CSS
details.feed_details=Feed details
details.url=URL
details.website=Website ####### Needs translation
details.name=Name
details.category=Category
details.position=Position

View File

@@ -67,6 +67,7 @@ settings.custom_css=Vlastní téma (CSS)
details.feed_details=Detaily odběru
details.url=URL odkaz
details.website=Website ####### Needs translation
details.name=Název
details.category=Kategorie
details.position=Pozice

View File

@@ -67,6 +67,7 @@ settings.custom_css=CSS wedi'i addasu
details.feed_details=Manylion ffrwd
details.url=URL
details.website=Website ####### Needs translation
details.name=Enw
details.category=Categori
details.position=Safle

View File

@@ -67,6 +67,7 @@ settings.custom_css=Brugerdefineret CSS
details.feed_details=Abonnementsdetaljer
details.url=URL
details.website=Website ####### Needs translation
details.name=Navn
details.category=Kategori
details.position=Position

View File

@@ -67,6 +67,7 @@ settings.custom_css=Eigenes CSS
details.feed_details=Feed details
details.url=URL
details.website=Website ####### Needs translation
details.name=Name
details.category=Kategorie
details.position=Position

View File

@@ -67,6 +67,7 @@ settings.custom_css=Custom CSS
details.feed_details=Feed details
details.url=URL
details.website=Website
details.name=Name
details.category=Category
details.position=Position

View File

@@ -67,6 +67,7 @@ settings.custom_css=CSS Personalizado
details.feed_details=Detalles de Canales
details.url=URL
details.website=Website ####### Needs translation
details.name=Nombre
details.category=Categoría
details.position=Position ####### Needs translation

View File

@@ -67,6 +67,7 @@ settings.custom_css=سی‌اس‌اس شخصی‌سازی‌شده
details.feed_details=جزئیات خوراک
details.url=نشانی
details.website=Website ####### Needs translation
details.name=نام
details.category=دسته
details.position=Position ####### Needs translation

View File

@@ -67,6 +67,7 @@ settings.custom_css=Oma CSS
details.feed_details=Tilauksen tiedot
details.url=Osoite
details.website=Website ####### Needs translation
details.name=Nimi
details.category=Kansio
details.position=Position ####### Needs translation

View File

@@ -67,6 +67,7 @@ settings.custom_css=CSS personnelle
details.feed_details=Détails du flux
details.url=URL
details.website=Site web
details.name=Nom
details.category=Catégorie
details.position=Position

View File

@@ -67,6 +67,7 @@ settings.custom_css=CSS Personalizado
details.feed_details=Detalles de fontes
details.url=URL
details.website=Website ####### Needs translation
details.name=Nome
details.category=Categoría
details.position=Position ####### Needs translation

View File

@@ -67,6 +67,7 @@ settings.custom_css=سی‌اس‌اس شخصی‌سازی‌شده
details.feed_details=جزئیات خوراک
details.url=نشانی
details.website=Website ####### Needs translation
details.name=نام
details.category=جرگه
details.position=Position ####### Needs translation

View File

@@ -67,6 +67,7 @@ settings.custom_css=Saját CSS
details.feed_details=Hírcsatorna részletei
details.url=URL
details.website=Website ####### Needs translation
details.name=Név
details.category=Kategória
details.position=Position ####### Needs translation

View File

@@ -67,6 +67,7 @@ settings.custom_css=Css modificato
details.feed_details=Dettagli feed
details.url=URL
details.website=Website ####### Needs translation
details.name=Nome
details.category=Categoria
details.position=Posizione

View File

@@ -67,6 +67,7 @@ settings.custom_css=커스톰 CSS
details.feed_details=피드 세부
details.url=유알엘
details.website=Website ####### Needs translation
details.name=이름
details.category=카테고리
details.position=Position ####### Needs translation

View File

@@ -67,6 +67,7 @@ settings.custom_css=Custom CSS
details.feed_details=Butir-butir Feed
details.url=URL
details.website=Website ####### Needs translation
details.name=Nama
details.category=Kategori
details.position=Posisi

View File

@@ -67,6 +67,7 @@ settings.custom_css=Egendefinert CSS
details.feed_details=Abonnementsdetaljer
details.url=URL
details.website=Website ####### Needs translation
details.name=Navn
details.category=Kategori
details.position=Posisjon

View File

@@ -67,6 +67,7 @@ settings.custom_css=Op maat gemaakte CSS
details.feed_details=Feed Details
details.url=URL
details.website=Website ####### Needs translation
details.name=Naam
details.category=Categorie
details.position=Position ####### Needs translation

View File

@@ -67,6 +67,7 @@ settings.custom_css=Skreddarsydd CSS
details.feed_details=Abonnementsdetaljar
details.url=URL
details.website=Website ####### Needs translation
details.name=Namn
details.category=Kategori
details.position=Posisjon

View File

@@ -67,6 +67,7 @@ settings.custom_css=Własny styl CSS
details.feed_details=Szczegóły kanału
details.url=URL
details.website=Website ####### Needs translation
details.name=Nazwa
details.category=Kategoria
details.position=Pozycja

View File

@@ -67,6 +67,7 @@ settings.custom_css=CSS personalizado
details.feed_details=Detalhes do feed
details.url=URL
details.website=Website ####### Needs translation
details.name=Nome
details.category=Categoria
details.position=Posição

View File

@@ -67,6 +67,7 @@ settings.custom_css=Собственная CSS
details.feed_details=Информация о ленте
details.url=URL
details.website=Website ####### Needs translation
details.name=Название
details.category=Категория
details.position=Позиция

View File

@@ -67,6 +67,7 @@ settings.custom_css=Vlastný motív (CSS)
details.feed_details=Detaily odoberania
details.url=URL odkaz
details.website=Website ####### Needs translation
details.name=Meno
details.category=Kategória
details.position=Pozícia

View File

@@ -67,6 +67,7 @@ settings.custom_css=Anpassad CSS
details.feed_details=Prenumerationsdetaljer
details.url=URL
details.website=Website ####### Needs translation
details.name=Namn
details.category=Kategori
details.position=Position

View File

@@ -67,6 +67,7 @@ settings.custom_css=Kişiselleştirilmiş CSS
details.feed_details=Yayın detayları
details.url=URL
details.website=Website ####### Needs translation
details.name=İsim
details.category=Kategori
details.position=Pozisyon

View File

@@ -67,6 +67,7 @@ settings.custom_css=自定义 CSS 样式
details.feed_details=订阅详情
details.url=地址
details.website=Website ####### Needs translation
details.name=名称
details.category=目录
details.position=Position ####### Needs translation

View File

@@ -703,6 +703,7 @@ function($scope, $stateParams, $http, $route, $window, EntryService, SettingsSer
$scope.timestamp = data.timestamp;
$scope.busy = false;
$scope.hasMore = data.hasMore;
$scope.feedLink = data.feedLink;
};
if (!$scope.keywords) {
var service = $scope.selectedType == 'feed' ? FeedService

View File

@@ -257,16 +257,24 @@ module.directive('category', [ function() {
return label;
};
$scope.feedClicked = function(id) {
MobileService.toggleLeftMenu();
if ($scope.selectedType == 'feed'
&& id == $scope.selectedId) {
$scope.$emit('emitReload');
} else {
$state.transitionTo('feeds.view', {
_type : 'feed',
_id : id
});
$scope.feedClicked = function(id, event) {
// Could be called by a middle click
if (!event || (!event.ctrlKey && event.which == 1)) {
MobileService.toggleLeftMenu();
if ($scope.selectedType == 'feed'
&& id == $scope.selectedId) {
$scope.$emit('emitReload');
} else {
$state.transitionTo('feeds.view', {
_type : 'feed',
_id : id
});
}
if (event) {
event.preventDefault();
event.stopPropagation();
}
}
};

View File

@@ -34,7 +34,8 @@
<div class="pull-right" ng-click="showFeedDetails(feed)">
<i class="icon-wrench config pointer"></i>
</div>
<a ng-click="feedClicked(feed.id)" class="feed-link"
<a ng-click="feedClicked(feed.id, $event)" class="feed-link"
href="{{feed.feedLink}}" target="_blank"
ng-class="{error: feed.message && feed.errorCount > 10, selected: (feed.id == selectedId && selectedType == 'feed') }">
<favicon url="feed.iconUrl" />
<span ng-class="{unread: feed.unread}">
@@ -47,4 +48,4 @@
</a>
</li>
</ul>
</li>
</li>

View File

@@ -9,6 +9,12 @@
<a href="{{sub.feedUrl}}" target="_blank">{{sub.feedUrl}}</a>
</div>
</div>
<div class="control-group">
<label class="control-label">${details.website}</label>
<div class="controls horizontal-align">
<a href="{{sub.feedLink}}" target="_blank">{{sub.feedLink}}</a>
</div>
</div>
<div class="control-group" ng-class="{error : !form.name.$valid}">
<label class="control-label">${details.name}</label>
<div class="controls">

View File

@@ -4,7 +4,10 @@
<span ng-switch on="selectedId">
<span ng-switch-when="all">${tree.all}</span>
<span ng-switch-when="starred">${tree.starred}</span>
<span ng-switch-default>{{name}}</span>
<span ng-switch-default>
<span ng-hide="feedLink">{{name}}</span>
<a ng-show="feedLink" href="{{feedLink}}" target="_blank">{{name}}</a>
</span>
</span>
&nbsp;
<span ng-show="name && selectedType == 'category'"> &#187;</span>