Revision history for Mojolicious application Slovo 2021.06.16 * Fixed failing tests with Mojolicious::Plugin::OpenAPI 4.04. * Upgraded to Mojolicious::Plugin::OpenAPI 4.04. 2021.06.06 * Updated progress in the documentation. * Allow commands from the Mojolicious::Command::Author::generate namespace to be listed and executed by Slovo on the command-line. Added tests. * Added README.pod to the distribution. * Fixed missing hidden field for permissions when creating a page. 2021.05.21 * Fix canonical URL when it can contain a double slash. 2021.05.15 * Added initial OpenGraph support. * Optimised _around_execute in Slovo::Controller::Role::Stranica to do as little as possible when serving cached content. 2021.02.20 * Renamed configuration section `plugins` to `load_plugins` so it does not clash with the same feature in Mojolicious 9.0. Kept the feature as Slovo's one is more flexible. Slovo is compatible with Mojolicious 9.0. * Added `mojo` subfolder to the mod_rewrite rule for public/ in the .htaccess file template so we can put static files like jquery/jquery.js there and they will be served directly by Apache. * Made scrollbar-width wider in Slovo::Themes::Malka. * Upgraded to Mojolicious 9.02. 2021.02.01 * We now require minimum version of Perl 5.26 to remove from our code `no warnings "experimental::lexical_subs";`. Respectively we explicitly require at least ExtUtils::MakeMaker 7.24. * Since Perl 5.26 "the lexical_subs feature has no effect; all Perl code can use lexical (private) subroutines, regardless of what feature declarations are in scope." So we replaced `use feature qw(lexical_subs unicode_strings);` with `use feature ':5.26';`. We just use the whole feature bundle now. * Changed behavior of Slovo::Command::Author::inflate and improved its documentation. The different types of files are now prefixed with `templates/` and `public/` only if they are inflated into the $app->home directory. * Improved lib/Slovo.pm's POD. * Database migration is not automatic any more. From now on one must run `bin/slovo eval 'app->dbx->migrations->migrate'`. * Added new `BEFORE UPDATE` SQL triggers that check if pid!=id and if the parent record is a directory, and throw an SQL statement error. * Added meta tags for 'author', 'description' and 'keywords' in partials/_head.html.ep with default content from the respective row in table celini. 2021.01.11 * Happy new year! * Fixed a bug in Slovo::Controller::Role::Stranica::page_id_options(...) which caused unpleasant recursion in site menu when the root page is edited and saved. Root page was being set with pid=id, but it should always have pid=0. * Moved templates from themes/malka to lib/Slovo/Themes/Malka.pm. * Deleted existing default templates for the "site" part of the templates. Now Slovo::Themes::Malka is the default theme for the site. * Implemented Slovo::Command::Author::inflate. 2020.12.22 * Added new lightweight theme, named "malka". Using https://github.com/necolas/normalize.css and https://github.com/jenil/chota. Work in progress!! * MUI CSS is deprecated and may be removed soon. The new theme will be the default. * Now lib/Slovo/resources/templates comes after $app->home/templates in @{$app->static->paths} and lib/Slovo/resources/public comes after $app->home/public in @{$app->renderer->paths}. * Added new column 'templates' to table 'domove'. This way every domain can switch easily the theme without moving files around - just by pointing to the theme directory where the templates reside. * Implemented Slovo::Cache to support mutiple domains theming by storing compiled templates with different key prefix per domain. * Moved .perlcriticrc to the root directory of the project. * In the control panel the pages now are sorted only by 'sorting'. * Mojo deprecated the default behavior of writing to log/$mode.log and we implemented by default writing to log/$moniker.log if possible. * Refactored and improved Slovo::Controller::Role::Stranica and the corresponding Controller and Model classes, tests and templates. * Many bugs were fixed along the way. 2020.12.12 * Improved messages and documentation of commands a2htaccess and novy_dom. * Now default permissions for folders created by novy_dom are 0755. This allows Apache to read static files. * Page-form now shows site_name for hidden field 'dom_id' - better for sites with unicode names. * We do not use any more environment variable REWRITE_ENGINE_ON from .htaccess to tell slovo.cgi to remove SCRIPT_NAME from URL. This is done via config option for Slovo plugin CGI 'mod_rewrite', which defaults to 1 meaning enabled. * Improved /celini/create functionality - better handling of missing parameters. * Deprecated route /manage/celini in favour of /manage/stranici/:page_id/celini. 2020.12.01 * Fixed bug - 'page_type', 'box' and 'data_type' columns' values in database were not changed while translating identifiers. Now this is done. See migrations.sql * Translated the above mentioned remaining values from Bulgarian(Cyrillic) to English(Latin). * Added parameters descriptions for 'box'and 'page_type' in api-v1.0.json. * Added possible value for data_type - 'chapter' in api-v1.0.json. * Added 'boxes','data_formats' and 'page_types' to $app->defaults and used them accross the application as "single source of truth". * Slightly improved documentation. * We do not allow any more pages to be moved across domains. * We do not allow any more a page with page_type 'root' to be created. Every domain has only one such page and it is created with command 'slovo generate novy-dom'. * We do not list page titles with the rest of celini records. They can be edited as part of a page. * Now using Veleka2 font. 2020.11.22 * Fixed a bug - The adaptor class (Mojo::SQLite/mysql/Pg) reinstantiated each time $app->dbx was invoked. Now this is done only on the first invocation. * Removed deprecation warning about MojoDBx 'helper' setting. Now the helper is always "dbx". * Default configuration from slovo.conf was moved to MojoDBx. If you use slovo.$mode.conf your instance should not be affected as your file will be preferred. * Now more properties(columns) of the $stranici object are fetched from the database. See '/paths/~1stranici/get/parameters/4/default' in lib/Slovo/resources/api-v1.0.json * Implemented new hook "around_action", where we set some common variables, used in templates ($l - current language and $user - current user). * Fixed bugs: - page_id was not properly set in the $celina object, which is used for title of the page. - Stash variables for use in templates were not properly set when there was a validation error. - Moving a $celina to another page is disabled (until we implement proper select field). - Some fields required validation filter "not_empty" - otherwise they were validated as "required". * Setting stash defaults now happens only in lib/Slovo.pm * Now fieldsets are collapsed only if there are no validation errors. * Moved fieldset "Съдържанѥ на страницата" to the top of the page form. 2020.11.11 Get back to Slovo after getting my master degree in programme "Medieval Bulgarian Studies" – Sofia University "St. Kliment Ochridski". * Switched to codename U+2C14 GLAGOLITIC CAPITAL LETTER SLOVO (Ⱄ). With this we mark the renewal of the project. * Changed double quotes to single quotes for values in lib/Slovo/resources/data/migrations.sql as "suddenly" they started to be treated as columns. This happens as of DBD::SQLite 1.63_05 2019-07-12. Fixed #28. * Minor fixes in lib/Slovo/resources/api-v1.0.json. "maxLength" value needs to be an integer. * Changed all identifiers for data types in table celini from Bulgarian(Cyrillic) to English(Latin) to increase understanding by potential nonslavic contributors. Here they are: въпросъ => question; книга => book; писанѥ => writing; белѣжка => note; заглавѥ => title. * Upgraded to Mojolicious 8.65, Mojo::SQLite 3.004, Cpanel::JSON::XS 4.25 Minion::Backend::SQLite 5.0.3, Role::Tiny 2.001004, EV 4.33, Mojolicious::Plugin::OpenAPI 3.40, Mojolicious::Plugin::RoutesConfig 0.06 Test::PerlTidy 20200930, Perl::Critic 1.38. * Changed most css and route identifiers from Bulgarian(Cyrillic) to English(Latin) too. Fixed #16. * Preferring data/slovo.$mode.sqlite if found upon startup over lib/Slovo/resourcesdata/slovo.$mode.sqlite. 2019.09.19 A very late release! * Now using markdown editor Editor.md v1.5.0 (https://github.com/pandao/editor.md) and Marked v0.3.3 (https://marked.js.org/) * Replaced most of cyrillic variable names in templates with latin variable names. 2019.08.18 * Updated Trumbowyg to version 2.18. * Fixed a bug in helper 'language'. It was returning an arbitrary language abbreviation. * Added helper 'languages'. * Added a 'cach all route', displaying 'Page Not Found!'. * Upgraded to Mojolicious 8.23, Mojo::SQLite 3.002, Minion::Backend::SQLite 4.005, Cpanel::JSON::XS 4.12, Role::Tiny 2.000008, Mojolicious::Plugin::OpenAPI 2.16. 2019.07.11 * Added new options --skip and --refresh to command novy_dom to easily update domain specific templates after upgrading Slovo. * Improved command a2htaccess and Slovo::Plugin::CGI by adding environment variable REWRITE_ENGINE_ON so the url_base is changed accordingly to .htaccess file. 2019.07.07 * Fixed wrong url in sidedrawer menu. * Fixed bug in language menu. * Slightly improved .htacces. * More logging for successful and unsuccesful authentication. * Less debug messages. 2019.06.23 * Working .htacces file for Apache/CGI * End to end Author tests - 012_cgi_hosting.t 2019.06.09 - Changes * Changed CODENAME to U+2C13 GLAGOLITIC CAPITAL LETTER RITSI (Ⱃ) This is a major release. * reenabled '-utf8' switch for Perl::Tidy. Works well with newest edition and Test::PerlTidy. * Using also 'local/' folder for locally installed dependencies. * Minor fixes for making Perl::Critic happy. * Not using Test::CheckManifest anymore. - Features * Apache/CGI support with the following prerequisites. This is work in progress. * Slovo::Command::Author::generate::cgi_script. * Slovo::Command::Author::generate::a2htaccess. * Slovo::Command::Author::generate::novy_dom. * $app->home detects the common root folder where SLovo is installed, not just where lib/Slovo.pm is. 2019.02.20 - Features * User can chose parent page and parent celina for new and existing celina. 2019.02.02 - Changes * More tidy code. * Optimised script/slovo. * Upgraded to Mojolicious 8.12 * Fixed failing test on MSwin32 due to unicode filenames. Now produced files have sha1_sum as name. * Fixed bug in sidedrawer. TODO: Investigate why 'url_for' does not recognise some route names. 2019.01.29 - Changes * Added t/perltidy.t to impose the rules in our .perltidyrc to contributors. Ran `make perltidy` and t/perltidy.t. Set ENV{TEST_AUTHOR} to run this test. 2019.01.21 - Changes * Improved form for 'stranici' a lot. * Improved form for 'celini' a lot. 2019.01.01 - Changes * Happy New Year 2019! * Listing pages as expandable tree under route 'under_management' with * breadcrumb above. * Added new tag helper 'checkboxes'. * Only admin users can add a user to a group. * Slightly improved pages and users forms. 2018.12.24 - Changes * Removed development dependencies, added by mistake. * Sligntly improved and updated documentation. * Added option in slovo.conf to enable HTTP response compression - still experimental in Mojolicious. * Changed shebang line in script/slovo to use the Perl at time of installation instead of the Perl at time of execution. * Changed CODENAME to U+2C12 GLAGOLITIC CAPITAL LETTER POKOJI (Ⱂ) It's time for Рождество Христово. 2018.12.22 - Changes * S::C::Auth::signout now redirects to S::C::Auth::authform. * Fixed t/007_domove.t. Only admins can edit domains. * Improved "Sign In" form. * Improved users' form and celini's show.html.ep. - Features * Added functionality to send email with one time login token in case of forgotten password. 2018.12.09 - Changes * Fixed mistake in path generation for config file. 2018.12.08 - Changes * Now Slovo looks for configuration file in the following order: 1. $ENV{MOJO_CONFIG}; 2. $app->home->child("$moniker.$mode.conf") 3. $app->home->child("$moniker.conf") 4. $app->resources->child("etc/$moniker.$mode.conf"). Default: $app->resources->child("etc/$moniker.conf") * Improved Slovo.pm POD. * Improved the generated token for first login. 2018.11.30 - Features * Implemented experimental onboarding workflow. A user can create account for other users and invite them to sign in for the first time. An email with first-time login token is sent to the new user via SMTP. See Slovo::Task::SendOnboardingEmail. * We have Bootstrap CSS 4 for free. Comming together with Minion. * Minion admin UI (Mojolicious::Plugin::Minion::Admin) is available for members of the admin group at /Ꙋправленѥ/minion. Note: Links in UI do not work. TODO: fix. - Changes * Slovo now depends on Minion and Minion::Backend::SQLite which will be used for asynchronous execution of various time consuming tasks. * The configuration parameters for a plugin loaded via slovo.conf can be returned via a closure which is executed just before the plugin is loaded. Very convenient for using already generated routes and other already available functionality by plugins which are loaded later. * Added .travis.yml. Now every push will be built on https://travis-ci.org/kberov/Slovo * Added Several other dependencies both for authors and for production. See Makefile.PL. 2018.11.15 - Features * A user can be member of more than one group. * Only admins can change other's accounts and manage groups. - Changes * Listing of цѣлини and страници in /Ꙋправленѥ/ are now restricted only to the current domain. * Added dependency Mojolicious::Plugin::PODViewer because Mojolicious::Plugin::PODRenderer will be removed from Mojolicious. * Upgraded to Mojolicious 8.06. * Worked around a bug in Perl::Critic by adding extra semicolumn after * the closing brace of a lexical sub. * Better validation when creating/editing users. * Started work on experimental onboarding process for users. * Enhanced adminstration area UI a little bit. 2018.11.11 - Features * Ownership and the group (list of contributors) of a цѣлина and страница can be changed. - Changes * A celini item cannot be deleted anymore by mistake. "Remove" button was removed. * "Permissions", "published" and change of user_id and group_id were moved into separate fieldset "Разрешения и обнародване". 2018.10.31 - Changes * Fixed a bug where only pages(stranici) which are directories can list their articles(celini) on the home page and caused Status 500 for calls to /api/страници. * Cleaned up Slovo::Model::Stranici::all_for_home. * Made article boxes on home page adaptive for small screens between 270 and 450 px width. 2018.10.29 - Changes * Upgraded to Mojolicious 8.04. * Fixed Slovo::Validator. It was failing with the above version. * Removed alias 'can' for check 'is' from Slovo::Validator. 2018.10.16 - Features * Implemented browser caching for both signed and not signed in visitors to reduce the bandwith for content and pages. * Added new configuration keys 'cache_pages'=1/0 to enable and disable caching of content on disk and 'cache_control' to allow setting the 'Cache-Control' header for fine grained browser cache management. - Changes * Fix: 'tstamp' value was not set during 'stranici' and 'celini' update. * Fix: Now only canonical urls are cached to disk. Avoided duplication of cached content on disk. 2018.10.12 - Features * (Hopefully temporarily) added new media types for woff and woff2 font file formats. 2018.10.11 - Changes * Replaced 'Menaion Unicode TT' with 'Bukyvede' as the latter has the full set of old Bulgarian glyphs. * Added FreeSerif as fallback for Veleka as it has the full set of old Bulgarian glyphs. * Added pipe as separator between items in _header.html.ep. * Fixed cached_pages value in slovo.conf 2018.10.10 - Changes * Fix: Handle unlikely error - responding to request to a host which is not found in the database. * Fix: Page was not loading proper заглавѥ for edit. * Fixed documentation for Slovo::Plugin::MojoDBx. Deprecated config option 'helper'. * Loading PODRenderer and not caching pages in development mode only now by default. * Cannonical link in now is not url_escape-d, nor domain name is punycode_encode-d - Experimental. 2018.10.08 - Features * Implemented automatic redirect from old to new URLs for pages and celini. * Implemented new helper 'html_substr' in Slovo::Plugin::TagHelpers. * Added a subset of GNU FreeFont (Sans and Mono), whole 'Menaion Unicode 2.0' and Veleka to ensure proper display of old Bulgarian texts (Azbuka and Glagolitza) characters. See lib/Slovo/resources/public/fonts/README. * Added 'favicon' – The "Slovo" letter from the Glagolitic alphabet. * Added cannonical url for the current page in the . - Changes * Changed CODENAME to U+2C10 GLAGOLITIC CAPITAL LETTER NASHI (Ⱀ) This is a major release. We can upload pictures, We have a WYSIWIG and simple text editor, fine-grained permissions for pages and content, example systemd script and apache 2.4 config, new home page template, automatic redirects to changed URLs (No "Page Not found" due to this), embedded fonts for Азбука and Глаголица… * Upgrades: Cpanel::JSON::XS 4.06, Mojolicious 8.02, Mojolicious::Plugin::OpenAPI 2.0. * Showing langauge dropdown only if the page or article are translated into other languages. * Unified layout of teasers for articles in home page and categories' pages. We strip any html from celini titles before rendering in templates. * Reduced unneeded login tests. * Updated systemctl service description. * Fix: Use page id to denote parent page for children celini. * Selectively ignore some resources in domove/ * Now the tag has a `lang` attribute - the current $ѩꙁыкъ. * KABANOID fixed some typos in documentation. Thanks! 2018.09.28 - Changes * Upgraded Mojolicious to version 8.01. * Slight performance improvement in 'before_dispatch' hook. * Better positioning of the main content on large screens. * Fix: Now in stranici/templates/dom.html we remove HTML before showing articles on home-page. 2018.09.22 - Features * New home page template showing the last several articles in each category page -- the direct children of the home page. - Changes * Added mui-colors.min.css to slovo.min.css. * Added all_for_home() in Slovo::Model::Stranici. It is used in stranici/templates/dom.html. * Added meta name="generator" in _head.html.ep. * Now both '/' and /index.html reslove to the default page and language. * Fixed bug - Cached pages were shown to logged in users too. * Fixed bug - Заглавѥ was not showing only its children, but the other page's celini. 2018.09.15 - Features Added example configuration file for Apache mod_proxy. Added example configuration file for systemd. Added configuration section for hypnotoad to slovo.conf. 2018.09.09 - Features: * Initial handling of permissions for stranici and celini in administration area. * Added new check 'is' and alias for it 'can' to Slovo::Validator. - Changes: * when anew user is inserted a record for primary group in user_group is inserted too. * 'permissions' possible values are now added to the 'parameters' object of api-v1.0.json. From there the enum is used in templates. 2018.08.28 - Features: * Added and setup HTML wysiwyg editor Trumbowyg to the distribution. It was chosen because of its small size and easiness to use and extend. * Added extension 'base64' for embedding images into the page as base64 data in the 'src' attribute of the img tag. * Added post-processing of the 'body' property of a stranica and celina just before save in case the data_format is 'html'. The base64 data in the images is saved as files in the public/img folder of the respective domain. This allows images to be shared among pages and decreases the size of 'body'. * Added switching of editors on change of the 'data_format' field. Simple textarea for 'text' and Trumbowyg for 'html'. In the future other editors will/may be added for 'pod', 'markdown' and asciitext. - Changes * Added documentation to Slovo::Controller::Role::Stranica. * 'data_type' and 'data_format' possible values are now added to the 'parameters' object of api-v1.0.json. From there these enum properties are used for bot filling in the select_box(es) and for 'in' checks during validation. 2018.08.19 - Features * Implemented page caching on disk. Page is cached if published and readable by 'others', and visited by a guest user. On the next visit a guest user sees the cached page. Page load is 15 times faster. * Full multi-domain support. Domains can have their own public and template folders and be served from one running Slovo instance. - Changes * Startup script 'slovo' was improved. Slovo can be installed and ran with all dependencies in it's on local folder. Previously it did not detect properly it's own $Config{archname}. * Added 'log' and 'domove/*/public/cached' to .gitignore * Improved documentation. Mention all current features. * Numerous small code optimisations in classes. * Upgraded to Mojolicious 7.93, Cpanel::JSON::XS 4.05 * Changed CODENAME to U+2C0F GLAGOLITIC CAPITAL LETTER MYSLITE (Ⰿ). This is a major release. We have full multi-domain support and cacheable pages. 2018.08.12 - Features * Added nice multi-language routes (/<страница:str>.<ѩꙁыкъ:lng>.html, /<страница:str>/<цѣлина:cel>.<ѩꙁыкъ:lng>.html). * Added more restrictive route-placeholders types (cel,str,lng). * Added a set of languages to the forms for celini and stranici. * Added a new language switching menu. The language is switched by the page title - заглавѥ. - Changes * The $c->debug method is now a helper and can be used in templates without $c. * Fixed and optimised mapping of data_type to template name for displaying a record from celini. * Changed CODENAME to U+2C0E GLAGOLITIC CAPITAL LETTER LJUDIJE (Ⰾ). This is a major release. We have multilanguage pages. 2018.08.08 - Features * Implemented /<:страница>/<*цѣлина>.html - /page/article.html. This allows pages to act as category pages for collections of articles for example. * Added partial templates for all data types from table celini and a generic one for custom data types. * Slovo::Plugin::DefaultHelpers – additional default helpers for Slovo. * Implemented Slovo::Controller::Role::Stranica with wrapper around execute() to share some common stash settings, preparations and checks before the page is rendered and leave room for executing code after the page is rendered. - Changes * Now the IDN is always shown decoded in the sidedrawer. * Moved helpers 'language' and 'is_user_authenticated' from Slovo to Slovo::Plugin::DefaultHelpers. * DefaultHelpers and TagHelpers are loaded unconditionally after all other mandatory for Slovo plugins. * Improved action execute and its template in Slovo::Contoller::Stranici. Added partial templates for almost all celini data_types. Moved my $breadcrumb fom controler to Slovo::Model::Stranici where it belongs. 2018.08.00 - Features * Domains can have several aliases and pages can be found under different aliases - Multidomain support. * Made OpenAPI API specification allways available via helper 'openapi_spec'. - Changes * Changed CODENAME to U+2C0D GLAGOLITIC CAPITAL LETTER KAKO (Ⰽ). * This is a magor release. We have a Minimal Viable Product. 2018.07.28 - Features * Breadcrumb navigation up to the root page in the appbar. * Added new column 'aliases' to table 'domove'. It will be used to match a request to a specific domain from $c->req->headers->host. - Changes * Creating a page now redirects to the form for editing the newly created page. * Used some well known unicode symbols as icons. * Fixed bugs in side-drawer. * Upgraded to Mojo::SQLite 3.001 and Mojolicious 7.89. * Improved domove/_form.html.ep to use prefilled params. * Added missing license meta to Makefile.PL. Thanks, Mohammad S Anwar. 2018.07.20 - Features * Sidebar shows a list of pages under the current page if the page is a folder. * Implemented 'select_box' in the new Slovo::Plugin::TagHelpers. * Using OpenAPI (fka Swagger) to retreive items in directory pages in the sidebar page menu. - Changes * Greatly improved code in _form.html.ep and other templates in the administration interface for 'celini' and 'stranici'. * Changed orthography for some celini semantic data_types: 'въпросъ', 'ѿговоръ', 'белѣжка'. 2018.07.16 - Changes * Fixed (also future potentially) failing tests caused by missing 'use feature qw(lexical_subs unicode_strings);' on Perl 5.20-5.24. 2018.07.15 - Features * (WIP) Using OpenAPI (fka Swagger) to retreive the sidebar page menu. * (WIP) added helper 'language' which will be later provided by Slovo::Plugin::L10N. - Changes * Improved/finished 'all_for_list' in Slovo::Model::Stranici. Added columns 'title' and 'is_dir' to the resultset. * Unified WHERE clause for executing/listing pages on the site by moving it to '_where_with_permissions' in Slovo::Model::Stranici. * Unified WHERE clause for executing/listing content in a page by moving it to where_with_permissions in Slovo::Model::Celini. * Improved 'login_ok' and added 'login' in Test::Mojo::Role::Slovo. 2018.07.10 - Features * Link to /Ꙋправленѥ when user is signed in in the footer. * (WIP) Using OpenAPI (fka Swagger) to retreive the sidebar page menu. - Changes * Updated Mojolicious::Plugin::OpenAPI to 1.30 and enabled it. * removed api.json and added api-v1.0.json * Fixed failing tests on Perl 5.20. 2018.06.25 - Features * Implemented a site layout, based on a MUI CSS example. We are getting closer to a MVP (Minimum Viable Product). - Changes * Avoided using varaiables and subroutine names written in azbouka due to a missing feature in PPI which causes Perl::Critic to falsely complain. See https://github.com/adamkennedy/PPI/issues/226 2018.06.22 - Changes * User Guest is always loaded to have some default permissions for every not logged in user. * Replaced helper "is_user_authenticated" from Mojolicious::Plugin::Authentication. Now it checks if the current user is not Guest and returns true, false otherwise. * Now the user is really authenticated. * Removed unused methid "check" from Slovo::Controller::Auth. * Improved documentation. - Features * Better and working "Sign in" without transmitting plain text password. 2018.06.06 - Changes * On failed login the guest user is loaded to have always a user. * We `use 5.020` in Slovo.pm to switch ON all Perl features available up to this version. * Loading of Model classes is postponed untill first use of the corresponding helper. - Features * Added attribute `domain` to Slovo::Controller. * Now UTF-8 characters are readable in dumped structures by $c->debug. * Added multidomain support. Many domains can be served by one Slovo applcation. Domains can be matched also by IPs from which they are served. For example 'http://127.0.0.1/alias.стр.html' finds the page 'alias' in domain localhost. * When a page cannot be found a "Not Found" page is displayed. * When a page is displayed the `permissions` and `published` matter. Secondary groups of a user are supported. In preview mode (?прегледъ=1) published, hidden, deleted, start and stop are disregarded. 2018.05.24 - Changes * Честитъ праздникъ на бꙋквите – Ден на Българската Писменостъ. * Many changes in progress towards displaying pages in the site. - Features * Implemented template and layout for rendering a regular page. * Using MUICSS for default styles. 2018.05.19 - Changes * Shared methods "all", "find", "save", "remove", "add" in Slovo::Model. * Improved some templates and the index page. * Improved pages(stranici) validation. - Features * New content (celini) can be added. * Content (celini) can be edited and deleted. 2018.05.03 - Changes * Improved the page form. * Removed custom config method from Slovo::Controller. * "page_type" can be (regular=>'обичайна',root=>'коренъ'). * From the next version upgrading from an older version (like this) * will be possible. - Features * Pages with initial content can be edited * Pages can be "removed" (deleted=1). * Added initial set of pages with initial content in language * bg-bg(Слово=>Home page,Писания=>Blog,Вести=>News,Относно=>About). 2018.04.30 - Changes * Improved startup. * Added some tests for creating and updating a user. - Features * Added Slovo::Validator with new filter - xml_escape. * Creation of new page with initial content. 2018.04.15 Unstable: WIP! - Changes * Improved documentation. * Switched $CODENAME to U+2C0C GLAGOLITIC CAPITAL LETTER DJERVI (Ⰼ) - Features * Implemented Slovo::Plugin::MojoDBx. Not using sqlite.conf anymore. This plugin can be moved to Mojolicious namespace. There is nothing specific to Slovo in it. * WIP - Added tables 'domove', 'stranici' and 'celini'. Beginning of a site. * Generated MVC and OpenAPI from the tables using Mojolicious::Command::generate::resources. - Bugs 2018.04.09 - Христос воскресе - Switched $CODENAME to U+2C0B GLAGOLITIC CAPITAL LETTER I (Ⰻ) - Improved documentation. - Added first migration file. Table definitions and initial data are taken from Ado. - Used Mojolicious::Command::generate::resources to generate code for groups and users resources like this: $ generate resources -D dbx -t "groups,users" -T \ lib/Slovo/resources/templates --api_dir lib/Slovo/resources - Added sqlite.conf which can be switched with pg.conf or mysql.conf. This way the database can be easily switched by adding specific adapter configuration files. - Added helper 'dbx' which will be instance of Mojo::SQLite, Mojo::Pg or Mojo::mysql instead of corresponding 'sqlite', 'pg', or 'mysql'. - Added Slovo::Cotroller. - Improved a bit the generated code for models. Added parent class Slovo::Model. - Added dependency Mojolicious::Plugin::Authentication and implemented Slovo::Controller::Auth. - Added TODO section to the Slovo POD. - Added Test::Mojo::Role::Slovo. - Added tests for sign_in. - Added tests for creating a users. 2018.03.25 - Improved documentation. - Implemented loading of plugins specified in slovo.conf. - Added dependency Mojolicious::Plugin::RoutesConfig. 2018.03.24 - Made the application installable as any perl module. * added EXE_FILES to the installation * Fixed unwanted installation of README.pod * Added new target "readme" for "make" which is also part of the "dist" target. * Added new target perltidy which is also part of the "test" target. - Made the application installable as a perl application. 2018.03.23 - Original version; created by ExtUtils::ModuleMaker 0.56 - Generated application using `mojo generate app Slovo` - Modified Makefile.PL and whatever needed so most basic tests pass. - Used $CODENAME from Ado to indicate that this project is continuation of Ado (in a way).