From 1ce84922e3008cad6cf1b9056b705f2642bd3772 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 28 Oct 2015 17:56:30 +0200 Subject: WEB pages re-styling --- brep/page | 287 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 251 insertions(+), 36 deletions(-) (limited to 'brep/page') 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_; }; } -- cgit v1.1