Adding a subscribed note in recommended feeds.

This commit is contained in:
Samuel Clay 2011-03-02 12:05:58 -05:00
parent 152cdcac56
commit 2e437fcee1
6 changed files with 65 additions and 20 deletions

View file

@ -17,7 +17,7 @@ from django.core.mail import mail_admins
from collections import defaultdict
from operator import itemgetter
from mongoengine.queryset import OperationError
from apps.recommendations.models import RecommendedFeed, RecommendedFeedUserFeedback
from apps.recommendations.models import RecommendedFeed
from apps.analyzer.models import MClassifierTitle, MClassifierAuthor, MClassifierFeed, MClassifierTag
from apps.analyzer.models import apply_classifier_titles, apply_classifier_feeds, apply_classifier_authors, apply_classifier_tags
from apps.analyzer.models import get_classifiers_for_user
@ -67,8 +67,9 @@ def index(request):
active_count = UserSubscription.objects.filter(user=request.user, active=True).count()
train_count = UserSubscription.objects.filter(user=request.user, active=True, is_trained=False, feed__stories_last_month__gte=1).count()
recommended_feed = RecommendedFeed.objects.filter(is_public=True)[0]
recommended_feed_feedback = RecommendedFeedUserFeedback.objects.filter(recommendation=recommended_feed)
recommended_feed = RecommendedFeed.objects.filter(is_public=True).select_related('feed')
if recommended_feed: recommended_feed = recommended_feed[0]
# recommended_feed_feedback = RecommendedFeedUserFeedback.objects.filter(recommendation=recommended_feed)
howitworks_page = random.randint(0, 5)
return render_to_response('reader/feeds.xhtml', {
@ -84,7 +85,7 @@ def index(request):
'train_count': active_count - train_count,
'account_images': range(1, 4),
'recommended_feed': recommended_feed,
'recommended_feed_feedback': recommended_feed_feedback,
# 'recommended_feed_feedback': recommended_feed_feedback,
}, context_instance=RequestContext(request))
@never_cache

View file

@ -1,10 +1,18 @@
from django import template
from apps.reader.models import UserSubscription
from utils.user_functions import get_user
register = template.Library()
@register.inclusion_tag('recommendations/render_recommended_feed.xhtml', takes_context=True)
def render_recommended_feed(context, recommended_feed):
return {
'recommended_feed': recommended_feed,
'user': context['user'],
}
user = get_user(context['user'])
usersub = UserSubscription.objects.filter(user=user, feed=recommended_feed.feed)
if recommended_feed.feed:
return {
'recommended_feed': recommended_feed,
'usersub': usersub,
'user': context['user'],
}

View file

@ -3425,7 +3425,7 @@ background: transparent;
/* ============================ */
.NB-module-recommended {
overflow: hidden;
}
.NB-module-recommended .NB-module-recommended-date {
line-height: 14px;
@ -3443,13 +3443,20 @@ background: transparent;
.NB-module-recommended .NB-recommended {
padding: 0 12px;
}
.NB-module-recommended .NB-javascript.NB-module-direction,
.NB-module-recommended .NB-javascript.NB-modal-submit-button,
.NB-module-recommended .NB-javascript.NB-recommended-statistics,
.NB-module-recommended .NB-javascript.NB-recommended-intelligence {
opacity: .2;
}
.NB-module-recommended .NB-recommended-intelligence {
margin: 2px 8px 0 0;
float: right;
width: 16px;
height: 16px;
cursor: pointer;
background: transparent url(http://nb.local.host:8000/media/img/icons/silk/bricks.png) no-repeat 50% 50%;
background: transparent url(../img/icons/silk/bricks.png) no-repeat 50% 50%;
}
.NB-module-recommended .NB-recommended-statistics {
margin: 2px 0 0 0;
@ -3457,7 +3464,7 @@ background: transparent;
width: 16px;
height: 16px;
cursor: pointer;
background: transparent url(http://nb.local.host:8000/media/img/icons/silk/chart_curve.png) no-repeat 50% 50%;
background: transparent url(../img/icons/silk/chart_curve.png) no-repeat 50% 50%;
}
.NB-module-recommended .NB-recommended-favicon {
float: left;
@ -3474,6 +3481,7 @@ background: transparent;
color: #505050;
padding-bottom: 8px;
border-bottom: 1px solid #E0E0E0;
overflow: hidden;
}
.NB-module-recommended .NB-modal-submit {
margin: 8px 0 0 0;
@ -3490,6 +3498,14 @@ background: transparent;
margin-left: 0 !important;
margin-right: 8px !important;
}
.NB-module-recommended .NB-recommended-added {
padding: 6px 0 0 20px;
background: transparent url('../img/icons/silk/accept.png') no-repeat 0 6px;
font-size: 12px;
font-weight: bold;
color: #123B00;
overflow: hidden;
}
/* ========= */
/* = Menus = */

View file

@ -28,7 +28,8 @@
$starred_header: $('.NB-feeds-header-starred'),
$river_header: $('.NB-feeds-header-river'),
$taskbar: $('.taskbar_nav'),
$feed_floater: $('.NB-feed-story-view-floater')
$feed_floater: $('.NB-feed-story-view-floater'),
$recommended_feeds: $('.NB-module-recommended')
};
this.flags = {
'feed_view_images_loaded': {},
@ -72,7 +73,6 @@
// = Initialization =
// ==================
this.unload_feed_iframe();
this.unload_story_iframe();
this.apply_resizable_layout();
@ -92,6 +92,7 @@
this.apply_story_styling();
this.apply_tipsy_titles();
this.add_url_from_querystring();
this.load_recommended_feeds();
};
NEWSBLUR.Reader.prototype = {
@ -4707,6 +4708,18 @@
}
},
// =====================
// = Recommended Feeds =
// =====================
load_recommended_feeds: function() {
var $module = this.$s.$recommended_feeds;
$('.NB-javascript', $module).removeClass('NB-javascript');
// _.delay(function() {
// $('.NB-javascript', $module).animate({'opacity': 1}, {'duration': 1000, 'queue': false});
// }, 1500);
},
// ==========
// = Events =
// ==========

View file

@ -2,7 +2,7 @@
<h5 class="NB-module-header">
Recommended Site
<div class="NB-module-header-right">
<a href="#" class="NB-module-direction NB-module-next-page"></a>
<a href="#" class="NB-module-direction NB-module-next-page NB-javascript"></a>
<a href="#" class="NB-module-direction NB-module-previous-page NB-disabled"></a>
<div class="NB-module-recommended-date">
{{ recommended_feed.approved_date|date:"M j" }}
@ -13,8 +13,8 @@
</h5>
<div class="NB-recommended">
<div class="NB-recommended-statistics"></div>
<div class="NB-recommended-intelligence"></div>
<div class="NB-recommended-statistics NB-javascript"></div>
<div class="NB-recommended-intelligence NB-javascript"></div>
<img class="NB-recommended-favicon" src="data:image/png;base64,{{ recommended_feed.feed.icon.data }}" />
<div class="NB-recommended-title">{{ recommended_feed.feed.feed_title }}</div>
{# <div class="NB-recommended-link">{{ recommended_feed.feed.feed_link }}</div> #}
@ -25,8 +25,12 @@
<br />
<b>{{ recommended_feed.feed.average_stories_per_month }}</b> {{ recommended_feed.feed.average_stories_per_month|pluralize:"story,stories" }} per month
</div>
<div class="NB-recommended-try NB-modal-submit-green NB-modal-submit-button">Try</div>
<div class="NB-recommended-add NB-modal-submit-close NB-modal-submit-button">Add</div>
{% if usersub %}
<div class="NB-recommended-added">Subscribed</div>
{% else %}
<div class="NB-recommended-try NB-modal-submit-green NB-modal-submit-button NB-javascript">Try</div>
<div class="NB-recommended-add NB-modal-submit-close NB-modal-submit-button NB-javascript">Add</div>
{% endif %}
</div>
</div>

View file

@ -28,9 +28,12 @@ def ajax_login_required(function=None):
return _dec(function)
def get_user(request):
if request.user.is_authenticated():
user = request.user
if not hasattr(request, 'user'):
user = request
else:
user = request.user
if user.is_anonymous():
user = cache.get('user:%s' % DEFAULT_USER, None)
if not user:
user = User.objects.get(username=DEFAULT_USER)