Revision history for Mojolicious application Slovo 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).