Revision bd2ee623

b/cloudcms/templates/cms/base.html
18 18
  <meta name="description" content="{{ resource.meta.description }}">
19 19
  <meta name="author" content="{{ resource.meta.author }}">
20 20
  <meta name="viewport" content="">
21

  
22
  <link rel="alternate" type="application/atom+xml" href="{% url blogfeed %}">
23

  
21 24
    
22 25
  {% block page.js %}
23 26
  <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
......
42 45
      <script src="{{ MEDIA_URL }}cloudcms/js/jquery.infieldlabel.js"></script>
43 46
      <script src="{{ MEDIA_URL }}cloudcms/js/jquery.cookie.js"></script>
44 47
      <script src="{{ MEDIA_URL }}cloudcms/js/form-errors.js"></script>
45

  
46 48
      <script src="{{ MEDIA_URL }}cloudcms/js/colorbox/jquery.colorbox.js"></script>
47 49
  {% endblock headjs %}
48 50

  
b/cloudcms/urls.py
37 37
from django.contrib import admin
38 38

  
39 39
from feincms.module.page.sitemap import PageSitemap
40
#from cloudcmsblog.sitemap import BlogSitemap
40
from cloudcmsblog.sitemap import BlogSitemap
41
from cloudcmsblog.feeds import BlogFeed
41 42

  
42 43
admin.autodiscover()
43 44

  
44
sitemaps = {'pages': PageSitemap }
45
sitemaps = {'pages': PageSitemap, 'blog_posts': BlogSitemap }
45 46

  
46 47
urlpatterns = patterns('',
48
    url(r'^feed/', BlogFeed(), name="blogfeed"),
47 49
    url(r'^cmsmanage/', include(admin.site.urls)),
48 50
    url(r'', include('feincms.urls')),
49 51
    url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps }),
b/cloudcmsblog/feeds.py
1
# Copyright 2012 GRNET S.A. All rights reserved.
2
#
3
# Redistribution and use in source and binary forms, with or
4
# without modification, are permitted provided that the following
5
# conditions are met:
6
#
7
#   1. Redistributions of source code must retain the above
8
#      copyright notice, this list of conditions and the following
9
#      disclaimer.
10
#
11
#   2. Redistributions in binary form must reproduce the above
12
#      copyright notice, this list of conditions and the following
13
#      disclaimer in the documentation and/or other materials
14
#      provided with the distribution.
15
#
16
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
# POSSIBILITY OF SUCH DAMAGE.
28
#
29
# The views and conclusions contained in the software and
30
# documentation are those of the authors and should not be
31
# interpreted as representing official policies, either expressed
32
# or implied, of GRNET S.A.
33

  
34

  
35
from django.conf import settings
36
from django.contrib.syndication.views import Feed
37

  
38
from cloudcmsblog.models import Entry
39
from cloudcms.models import Application
40

  
41

  
42
BLOG_FEED_ENTRIES_LIMIT = getattr(settings, 'CLOUDCMSBLOG_FEED_ENTRIES_LIMIT',
43
                            10)
44
BLOG_FEED_TITLE = getattr(settings, 'CLOUDCMSBLOG_FEED_TITLE',
45
                            "Latest blog posts")
46
BLOG_FEED_LINK = getattr(settings, 'CLOUDCMSBLOG_FEED_LINK',
47
                            "/feed/")
48
BLOG_FEED_DESCRIPTION = getattr(settings, 'CLOUDCMSBLOG_FEED_DESCRIPTION',
49
                            BLOG_FEED_TITLE)
50

  
51
class BlogFeed(Feed):
52
    title = BLOG_FEED_TITLE
53
    link = BLOG_FEED_LINK
54
    description = BLOG_FEED_DESCRIPTION
55

  
56
    def __init__(self, *args, **kwargs):
57
        pass
58

  
59
    def items(self):
60
        return Entry.objects.order_by('-published_on')[:BLOG_FEED_ENTRIES_LIMIT]
61

  
62
    def item_title(self, item):
63
        return item.title
64

  
65
    def item_description(self, item):
66
        return item.intro_text
67

  
68
    def item_pubdate(self, item):
69
        return item.published_on
70

  
b/cloudcmsblog/sitemap.py
36 36
from django.contrib.sitemaps import Sitemap
37 37
from cloudcmsblog.models import Entry
38 38

  
39
class BlogSitemap(Sitemap):
40

  
41
    def items(self):
42
        return Entry.objects.filter(is_active=True)
39 43

  
b/conf/20-snf-cloudcms-settings.conf
1 1
# how many posts to display in blog list
2
CLOUDCMSBLOG_ENTRIES_PER_PAGE = 5
2
#CLOUDCMSBLOG_ENTRIES_PER_PAGE = 5
3 3

  
4 4
# directory where cms medialibrary files are uploaded to
5 5
#FEINCMS_MEDIALIBRARY_UPLOAD_TO = '/usr/share/synnefo/static/medialibrary/'
6 6

  
7 7
# django admin specific settings
8
# ADMIN_MEDIA_PREFIX = '/static/djangoadminstatic/'
8
#ADMIN_MEDIA_PREFIX = '/static/admin_media/'
9

  
10
# how many of the latest blog posts to display in blog feed
11
#CLOUDCMSBLOG_FEED_ENTRIES_LIMIT = 10
12

  
13
# the title of the blog feed
14
#CLOUDCMSBLOG_FEED_TITLE = 'Latest blog entries'
15

  
16
# the link of the blog feed
17
#CLOUDCMSBLOG_FEED_LINK
18

  
19
# the description of the blog feed
20
#CLOUDCMSBLOG_DESCRIPTION = CLOUDCMSBLOG_FEED_TITLE

Also available in: Unified diff