Исходный код вики Blog Archive

Редактировал(а) Dmitry Fedin 2013/01/07 21:56

Последние авторы
1 {{include document="Blog.BlogCode"/}}
2
3 {{velocity filter="none"}}
4 {{html clean="false" wiki="true"}}
5 ##
6 ##
7 ##
8 #macro(displayBlogFullArchive $blogDoc)
9 #getBlogEntriesBaseQuery($query)
10 #set($query = "${query} and (doc.space = ? or doc.parent = ?)")
11 #set ($queryParams = [$blogDoc.space, $blogDoc.fullName])
12 ## Create a Jodatime date formatter that will be used to format dates
13 #set($monthFormatter = $xwiki.jodatime.getDateTimeFormatterForPattern('MMMM'))
14 #set($tempDate = $xwiki.jodatime.mutableDateTime)
15 #set($currentYear = $xwiki.formatDate($util.date, 'yyyy'))
16 #set($currentMonth = $xwiki.formatDate($util.date, 'M'))
17 #set($firstYear = '')
18 #set($lastYear = '')
19 #foreach($firstEntry in $xwiki.searchDocuments("${query} order by year(publishDate.value)", 1, 0, $queryParams))
20 #set($discard = $xwiki.getDocument($firstEntry))
21 #getEntryObject($discard $entryObj)
22 #getEntryDate($discard $entryObj $firstYear)
23 #set($firstYear = $mathtool.toInteger($xwiki.formatDate($firstYear, 'yyyy')))
24 #end
25 #foreach($lastEntry in $xwiki.searchDocuments("${query} order by year(publishDate.value) desc", 1, 0, $queryParams))
26 #set($discard = $xwiki.getDocument($lastEntry))
27 #getEntryObject($discard $entryObj)
28 #getEntryDate($discard $entryObj $lastYear)
29 #set($lastYear = $mathtool.toInteger($xwiki.formatDate($lastYear, 'yyyy')))
30 #end
31 #if("$!{firstYear}" != '') ## At least one entry exists
32 #foreach($year in [$firstYear..$lastYear])
33 #set($yearArticleCount = $xwiki.countDocuments("${query} and year(publishDate.value) = $year", $queryParams))
34 #if($yearArticleCount > 0)
35 * [[$year ($yearArticleCount)>>Blog.Archive?space=${blogDoc.space}&year=${year}]]
36 #foreach($month in [1..12])
37 #set($monthArticleCount = $xwiki.countDocuments("${query} and year(publishDate.value) = $year and month(publishDate.value) = $month", $queryParams))
38 #if($monthArticleCount > 0)
39 $tempDate.setMonthOfYear($month)
40 ** [[$monthFormatter.print($tempDate) (${monthArticleCount})>>Blog.Archive?space=${blogDoc.space}&year=${year}&month=${month}]]
41 #end
42 #end
43 #end
44 #end
45 #else
46 #info($msg.get('xe.blog.archive.noarticle'))
47 #end
48 #end
49 ##
50 ##
51 ##
52 #macro(displayBlogYearArchive $blogDoc $year)
53 = $msg.get('xe.blog.archive.postsyear', [$year]) =
54 #getBlogEntriesBaseQuery($query)
55 #set($query = "${query} and (doc.space = ? or doc.parent = ?)")
56 #set ($queryParams = [$blogDoc.space, $blogDoc.fullName])
57 #set($query = "${query} and year(publishDate.value) = $year")
58 ## Create a Jodatime date formatter that will be used to format dates
59 #set($monthFormatter = $xwiki.jodatime.getDateTimeFormatterForPattern('MMMM'))
60 #set($tempDate = $xwiki.jodatime.mutableDateTime)
61 #set($yearArticleCount = $xwiki.countDocuments(${query}, $queryParams))
62 #if($yearArticleCount > 0)
63 #foreach($month in [1..12])
64 #set($monthArticleCount = $xwiki.countDocuments("${query} and month(publishDate.value) = $month", $queryParams))
65 #if($monthArticleCount > 0)
66 $tempDate.setMonthOfYear($month)
67 == [[$monthFormatter.print($tempDate) (${monthArticleCount})>>Blog.Archive?space=${blogDoc.space}&year=${year}&month=${month}]] ==
68 #foreach($entryDoc in $xwiki.wrapDocs($xwiki.searchDocuments("${query} and month(publishDate.value) = $month order by publishDate.value", $queryParams)))
69 #getEntryObject($entryDoc $entryObj)
70 #isPublished($entryObj $isPublished)
71 #isHidden($entryObj $isHidden)
72 * [[$entryDoc.display('title', 'view', $entryObj)>>$entryDoc]]#if(!$isPublished) $msg.get('xe.blog.archive.unpublished')#elseif($isHidden) $msg.get('xe.blog.archive.hidden')#end
73
74 #end
75 #end
76 #end
77 #else
78 #info($msg.get('xe.blog.archive.noarticlesyear'))
79 #end
80 #end
81 ##
82 ##
83 ##
84 #macro(displayBlogMonthArchive $blogDoc $year $month)
85 #set($dateFormatter = $xwiki.jodatime.getDateTimeFormatterForPattern('MMMM yyyy'))
86 #set($tempDate = $xwiki.jodatime.mutableDateTime)
87 $tempDate.setYear($mathtool.toInteger($year))##
88 $tempDate.setMonthOfYear($mathtool.toInteger($month))##
89 = $msg.get('xe.blog.archive.postsfor') $dateFormatter.print($tempDate) =
90 #getBlogEntriesBaseQuery($query)
91 #set($query = "${query} and (doc.space = ? or doc.parent = ?)")
92 #set ($queryParams = [$blogDoc.space, $blogDoc.fullName])
93 #set($query = "${query} and year(publishDate.value) = $year and month(publishDate.value) = $month")
94 #set($monthArticleCount = $xwiki.countDocuments(${query}, $queryParams))
95 #if($monthArticleCount > 0)
96 #foreach($entryDoc in $xwiki.wrapDocs($xwiki.searchDocuments("${query} order by publishDate.value", $queryParams)))
97 #getEntryObject($entryDoc $entryObj)
98 #displayEntry($entryDoc $entryObj true true)
99 #end
100 #else
101 #info($msg.get('xe.blog.archive.noarticlesmonth'))
102 #end
103 #end
104 ##
105 ##
106 ##
107 #set($space = "$!{request.space}")
108 #if($space == '')
109 #set($space = 'Blog')
110 #end
111 #getBlogDocument($space $blogDoc)
112 #set ($month = "$!{mathtool.toInteger($request.month)}")
113 #set ($year = "$!{mathtool.toInteger($request.year)}")
114 #if ($year == '')
115 ## Show a brief history of the blog, a tree with first level = years, second level = months, and the number of entries from that year/month in every node.
116 #displayBlogFullArchive($blogDoc)
117 #else
118 #if ($month == '')
119 ## Show an index of all posts in this year (titles only), with month names as subtitles
120 #displayBlogYearArchive($blogDoc $year)
121 #else
122 ## Show all entries in the month (extract)
123 #displayBlogMonthArchive($blogDoc $year $month)
124 #end
125 #end
126 {{/html}}
127 {{/velocity}}