aboutsummaryrefslogtreecommitdiff
path: root/brep/page.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-09-22 12:31:42 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-09-24 11:49:02 +0200
commitd1fae6b26e0820dee76e396c540bb1de90038917 (patch)
treee6a145e0901b6eeb118a03c6a616a763de79e42e /brep/page.cxx
parent675e973bf8e0e24593552f596eb3d81e57e19c94 (diff)
Implement package version detals page
Diffstat (limited to 'brep/page.cxx')
-rw-r--r--brep/page.cxx54
1 files changed, 31 insertions, 23 deletions
diff --git a/brep/page.cxx b/brep/page.cxx
index ad93e7c..552be3c 100644
--- a/brep/page.cxx
+++ b/brep/page.cxx
@@ -4,6 +4,7 @@
#include <brep/page>
+#include <string>
#include <cassert>
#include <utility> // move()
#include <algorithm> // min()
@@ -30,23 +31,23 @@ namespace brep
<< "a:hover {text-decoration: underline;}";
}
- // PAGER
+ // DIV_PAGER
//
- PAGER::
- PAGER (size_t current_page,
- size_t item_count,
- size_t item_per_page,
- size_t page_number_count,
- get_url_type get_url)
+ DIV_PAGER::
+ DIV_PAGER (size_t current_page,
+ size_t item_count,
+ size_t item_per_page,
+ size_t page_number_count,
+ const string& url)
: current_page_ (current_page),
item_count_ (item_count),
item_per_page_ (item_per_page),
page_number_count_ (page_number_count),
- get_url_ (move (get_url))
+ url_ (url)
{
}
- void PAGER::
+ void DIV_PAGER::
operator() (serializer& s) const
{
if (item_count_ == 0 || item_per_page_ == 0)
@@ -59,13 +60,22 @@ namespace brep
if (pc > 1)
{
+ auto u (
+ [this](size_t page) -> string
+ {
+ return page == 0
+ ? url_
+ : url_ + (url_.find ('?') == string::npos ? "?p=" : "&p=") +
+ to_string (page);
+ });
+
// Can consider customizing class names if use-case appear.
//
s << DIV(CLASS="pager");
if (current_page_ > 0)
s << A(CLASS="pg-prev")
- << HREF << get_url_ (current_page_ - 1) << ~HREF
+ << HREF << u (current_page_ - 1) << ~HREF
<< "<<"
<< ~A
<< " ";
@@ -79,12 +89,10 @@ namespace brep
for (size_t p (fp); p < tp; ++p)
{
if (p == current_page_)
- s << SPAN(CLASS="pg-cpage")
- << p + 1
- << ~SPAN;
+ s << SPAN(CLASS="pg-cpage") << p + 1 << ~SPAN;
else
s << A(CLASS="pg-page")
- << HREF << get_url_ (p) << ~HREF
+ << HREF << u (p) << ~HREF
<< p + 1
<< ~A;
@@ -94,7 +102,7 @@ namespace brep
if (current_page_ < pc - 1)
s << A(CLASS="pg-next")
- << HREF << get_url_ (current_page_ + 1) << ~HREF
+ << HREF << u (current_page_ + 1) << ~HREF
<< ">>"
<< ~A;
@@ -102,9 +110,9 @@ namespace brep
}
}
- // PAGER_STYLE
+ // DIV_PAGER_STYLE
//
- void PAGER_STYLE::
+ void DIV_PAGER_STYLE::
operator() (xml::serializer& s) const
{
const char* ident ("\n ");
@@ -114,9 +122,9 @@ namespace brep
<< ".pg-cpage {padding: 0 0.3em 0 0; font-weight: bold;}";
}
- // LICENSES
+ // DIV_LICENSES
//
- void LICENSES::
+ void DIV_LICENSES::
operator() (serializer& s) const
{
s << DIV(CLASS="licenses")
@@ -139,9 +147,9 @@ namespace brep
s << ~DIV;
}
- // TAGS
+ // DIV_TAGS
//
- void TAGS::
+ void DIV_TAGS::
operator() (serializer& s) const
{
if (!tags_.empty ())
@@ -156,9 +164,9 @@ namespace brep
}
}
- // PRIORITY
+ // DIV_PRIORITY
//
- void PRIORITY::
+ void DIV_PRIORITY::
operator() (serializer& s) const
{
static const strings priority_names (