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