aboutsummaryrefslogtreecommitdiff
path: root/brep/page
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-10-28 17:56:30 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-11-11 17:46:11 +0200
commit1ce84922e3008cad6cf1b9056b705f2642bd3772 (patch)
tree0dde62654e56c8e94ebf0cef83181ea9ddc99faf /brep/page
parent4993f11bf464c9aee0e3fd5965f4a8258cbe8b30 (diff)
WEB pages re-styling
Diffstat (limited to 'brep/page')
-rw-r--r--brep/page287
1 files changed, 251 insertions, 36 deletions
diff --git a/brep/page b/brep/page
index b923c7f..309caa9 100644
--- a/brep/page
+++ b/brep/page
@@ -17,78 +17,150 @@ namespace brep
// Page common building blocks.
//
- // A element default style.
+ // Generates CSS link elements.
//
- struct A_STYLE
+ class CSS_LINKS
{
+ public:
+ CSS_LINKS (const char* u): url_ (u) {}
+
void
operator() (xml::serializer& s) const;
+
+ private:
+ const char* url_;
};
- // Generates paging element.
+ // Generates page header element.
//
- class DIV_PAGER
+ struct DIV_HEADER
+ {
+ void
+ operator() (xml::serializer& s) const;
+ };
+
+ // Generates package search form element.
+ //
+ class FORM_SEARCH
{
public:
- DIV_PAGER (std::size_t current_page,
- std::size_t item_count,
- std::size_t item_per_page,
- std::size_t page_number_count,
- const std::string& url);
+ FORM_SEARCH (const std::string& q): query_ (q) {}
void
operator() (xml::serializer& s) const;
private:
- std::size_t current_page_;
- std::size_t item_count_;
- std::size_t item_per_page_;
- std::size_t page_number_count_;
- const std::string& url_;
+ const std::string& query_;
};
- // DIV_PAGER element default style.
+ // Generates counter element.
+ //
+ // It could be redunant to distinguish between singular and plural word forms
+ // if it wouldn't be so cheap in English, and phrase '1 Packages' wouldn't
+ // look that ugly.
//
- struct DIV_PAGER_STYLE
+ class DIV_COUNTER
{
+ public:
+ DIV_COUNTER (std::size_t c, const char* s, const char* p)
+ : count_ (c), singular_ (s), plural_ (p) {}
+
void
operator() (xml::serializer& s) const;
+
+ private:
+ std::size_t count_;
+ const char* singular_;
+ const char* plural_;
};
- // Generates url element.
+ // Generates package name element.
//
- class DIV_URL
+ class TR_NAME
{
public:
- DIV_URL (const url& u): url_ (u) {}
+ TR_NAME (const std::string& n, const std::string& q)
+ : name_ (n), query_param_ (q) {}
void
operator() (xml::serializer& s) const;
private:
- const url& url_;
+ const std::string& name_;
+ const std::string& query_param_;
};
- // Generates email element.
+ // Generates package version element.
//
- class DIV_EMAIL
+ class TR_VERSION
{
public:
- DIV_EMAIL (const email& e): email_ (e) {}
+ // Display the version as a link to the package version details page.
+ //
+ TR_VERSION (const std::string& p, const std::string& v)
+ : package_ (&p), version_ (v) {}
+
+ // Display the version as a regular text.
+ //
+ TR_VERSION (const std::string& v): package_ (nullptr), version_ (v) {}
void
operator() (xml::serializer& s) const;
private:
- const email& email_;
+ const std::string* package_;
+ const std::string& version_;
+ };
+
+ // Generates package summary element.
+ //
+ class TR_SUMMARY
+ {
+ public:
+ TR_SUMMARY (const std::string& s): summary_ (s) {}
+
+ void
+ operator() (xml::serializer& s) const;
+
+ private:
+ const std::string& summary_;
+ };
+
+ // Generates package license alternatives element.
+ //
+ class TR_LICENSE
+ {
+ public:
+ TR_LICENSE (const license_alternatives& l): licenses_ (l) {}
+
+ void
+ operator() (xml::serializer& s) const;
+
+ private:
+ const license_alternatives& licenses_;
+ };
+
+ // Generates package license alternatives elements. Differs from TR_LICENSE
+ // by producing multiple rows instead of a single one.
+ //
+ class TR_LICENSES
+ {
+ public:
+ TR_LICENSES (const license_alternatives& l): licenses_ (l) {}
+
+ void
+ operator() (xml::serializer& s) const;
+
+ private:
+ const license_alternatives& licenses_;
};
// Generates package tags element.
//
- class DIV_TAGS
+ class TR_TAGS
{
public:
- DIV_TAGS (const strings& ts): tags_ (ts) {}
+ TR_TAGS (const strings& ts): tags_ (ts) {}
void
operator() (xml::serializer& s) const;
@@ -97,26 +169,71 @@ namespace brep
const strings& tags_;
};
- // Generates package version license alternatives element.
+ // Generates package dependencies element.
//
- class DIV_LICENSES
+ class TR_DEPENDS
{
public:
- DIV_LICENSES (const license_alternatives& l): license_alternatives_ (l) {}
+ TR_DEPENDS (const dependencies& d): dependencies_ (d) {}
void
operator() (xml::serializer& s) const;
private:
- const license_alternatives& license_alternatives_;
+ const dependencies& dependencies_;
+ };
+
+ // Generates package requirements element.
+ //
+ class TR_REQUIRES
+ {
+ public:
+ TR_REQUIRES (const requirements& r): requirements_ (r) {}
+
+ void
+ operator() (xml::serializer& s) const;
+
+ private:
+ const requirements& requirements_;
+ };
+
+ // Generates url element.
+ //
+ class TR_URL
+ {
+ public:
+ TR_URL (const url& u, const char* l = "url"): url_ (u), label_ (l) {}
+
+ void
+ operator() (xml::serializer& s) const;
+
+ private:
+ const url& url_;
+ const char* label_;
+ };
+
+ // Generates email element.
+ //
+ class TR_EMAIL
+ {
+ public:
+ TR_EMAIL (const email& e, const char* l = "email")
+ : email_ (e), label_ (l) {}
+
+ void
+ operator() (xml::serializer& s) const;
+
+ private:
+ const email& email_;
+ const char* label_;
};
// Generates package version priority element.
//
- class DIV_PRIORITY
+ class TR_PRIORITY
{
public:
- DIV_PRIORITY (const priority& p): priority_ (p) {}
+ TR_PRIORITY (const priority& p): priority_ (p) {}
void
operator() (xml::serializer& s) const;
@@ -125,18 +242,116 @@ namespace brep
const priority& priority_;
};
- // Generates package search element.
+ // Generates package location element.
//
- class FORM_SEARCH
+ class TR_LOCATION
{
public:
- FORM_SEARCH (const std::string& q): query_ (q) {}
+ TR_LOCATION (const std::string& l): location_ (l) {}
void
operator() (xml::serializer& s) const;
private:
- const std::string& query_;
+ const std::string& location_;
+ };
+
+ // Generates package download URL element.
+ //
+ class TR_DOWNLOAD
+ {
+ public:
+ TR_DOWNLOAD (const std::string& u): url_ (u) {}
+
+ void
+ operator() (xml::serializer& s) const;
+
+ private:
+ const std::string& url_;
+ };
+
+ // Generates comment element.
+ //
+ class SPAN_COMMENT
+ {
+ public:
+ SPAN_COMMENT (const std::string& c): comment_ (c) {}
+
+ void
+ operator() (xml::serializer& s) const;
+
+ private:
+ const std::string& comment_;
+ };
+
+ // Generates package description element.
+ //
+ class P_DESCRIPTION
+ {
+ public:
+ // Genereate full description.
+ //
+ P_DESCRIPTION (const std::string& d)
+ : description_ (d), length_ (d.size ()), url_ (nullptr) {}
+
+ // Genereate brief description.
+ //
+ P_DESCRIPTION (const std::string& d, size_t l, const std::string& u)
+ : description_ (d), length_ (l), url_ (&u) {}
+
+ void
+ operator() (xml::serializer& s) const;
+
+ private:
+ const std::string& description_;
+ std::size_t length_;
+ const std::string* url_; // Full page url.
+ };
+
+ // Generates package description element.
+ //
+ class PRE_CHANGES
+ {
+ public:
+ // Genereate full changes info.
+ //
+ PRE_CHANGES (const std::string& c)
+ : changes_ (c), length_ (c.size ()), url_ (nullptr) {}
+
+ // Genereate brief changes info.
+ //
+ PRE_CHANGES (const std::string& c, size_t l, const std::string& u)
+ : changes_ (c), length_ (l), url_ (&u) {}
+
+ void
+ operator() (xml::serializer& s) const;
+
+ private:
+ const std::string& changes_;
+ std::size_t length_;
+ const std::string* url_; // Full page url.
+ };
+
+ // Generates paging element.
+ //
+ class DIV_PAGER
+ {
+ public:
+ DIV_PAGER (std::size_t current_page,
+ std::size_t item_count,
+ std::size_t item_per_page,
+ std::size_t page_number_count,
+ const std::string& url);
+
+ void
+ operator() (xml::serializer& s) const;
+
+ private:
+ std::size_t current_page_;
+ std::size_t item_count_;
+ std::size_t item_per_page_;
+ std::size_t page_number_count_;
+ const std::string& url_;
};
}