Koha/C4
Jonathan Druart f5ac2916f2
Bug 31383: Create a parent-child DB relation for additional content
In the design of additional contents the idea of a parent-child relation is implicitly present. You have a default page and translations.
But we do this in one table coming from the old news items.

Several reports show that we would be better off creating a parent table listing the main news items, CMS pages or HTML content. And a child table containing the title, content and lang.

Note that this first step is a prelimenary step to clean this area and make it more robust and extensible. More enhancements to come.

What is this patchset doing?
* DB changes
- Rename additional_contents.idnew with id
- Create a new table additional_contents_localizations(id, additional_content_id, title, content, lang) that will contain the translated contents
- Move the content to this new table
- Remove title, content and lang columns from additional_contents
- Replace the notice templates that are using ''<news>" (should only be ISSUESLIP) and remove support for this syntax. Also add a warning in case other occurrences of uses of the old syntax exist.

* CRUD
- We add a new Koha::AdditionalContentsLocalization[s] couple, and move some logic from Koha::AdditionalContent[s] to there. Note that, to prevent too much drastic changes in notice templates, and to make them easy to use, the different attributes of the content object is accessible from the translated content object (ie. Koha::AdditionalContentsLocatlization->library is available and return $self->additional_content->library). I think it's an elegant way to keep things simple.
- No changes expected for "NewsLog" logging
- Little behaviour changes for pages, see tools/page.pl changes. We are now passing the id of the content, and the desired language, instead of the mix of "page_id" or code and lang. Note that here we certainly need to rename "language" query param to not change the full interface language.

Test plan:
0. Preparation steps, use master
  a. Create notice templates that are using "<< additional_contents.code >>". This won't be replaced, but we want the update process to alert us.
  b. Create several news, additional contents, pages. Some with translated contents, some without.
  c. Make sure ISSUESLIP has the "<news>" section. If you are using the sample data there is nothing to do here
  d. Turn on NewsLogs
1. Apply the patches, restart_all, updatedatabase
=> Confirm that the new table is created and filled with the contents you had prior to the update
=> Confirm that additional_contents_localizations.updated_on has been kept to the previous values
=> Confirm that ISSUESLIP has been replaced properly
=> Confirm that you get a warning about the additional_contents
2. Create, update, delete news, html customs, pages
=> Confirm that the additional_contents_localizations.updated_on is only adjusted when required
=> Confirm that the logs are correctly created when NewsLogs is on
3. Check some items out, generate a slip
=> Confirm that the news are displayed at the bottom of the slip, and that the publication date is correctly formatted
4. Have several HTML customizations (like OpacNav, opacheader), in translated in different languages
=> Confirm that the default values is displayed when you are using the interface in a language without translation
=> Confirm that the translated version is picked when it exists

Notes for QA:
* I am not sure we really need the alert during the update DB process about the additional_contents leftover. We should not have them outside of ISSUESLIP.
Shouldn't it hurt?
* There is something ugly in sample_news.yml, the id is hardcoded. But how do we prevent that and keep translatability?

Sponsored-by: Rijksmuseum, Netherlands
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2023-10-20 14:43:56 -03:00
..
AuthoritiesMarc
Barcodes
ClassSortRoutine
ClassSplitRoutine
Creators
External
Form
Heading Bug 21828: build $bib_heading_fields only once per invocation 2023-09-22 12:57:46 -03:00
ILSDI Bug 33444: Update AddRenewal to take a hashref of params 2023-07-19 12:06:52 -03:00
Installer
Labels
Linker
Members Bug 33239: Add the ability to run borrowers-force-messaging-defaults.pl only on a specified message name 2023-10-11 10:31:46 -03:00
OAI
Output
Patroncards Bug 34532: Silence warns in Patroncard.pm 2023-09-15 11:57:08 -03:00
Reports Bug 33046: Use process_tt in C4::Reports::Guided::EmailReport 2023-07-18 14:07:41 -03:00
Search
Serials
SIP Bug 25816: (QA follow-up) Add system preference 2023-10-20 11:03:02 -03:00
Utils
Accounts.pm
Acquisition.pm Bug 11844: Use additional fields for order lines 2023-05-16 12:58:38 +02:00
Auth.pm Bug 32721: (QA follow-up) Drop fields from API response 2023-10-19 16:00:56 -03:00
Auth_cas_servers.yaml.sample
Auth_with_cas.pm
Auth_with_ldap.pm Bug 34731: Don't call SendQueuedMessages if message_id is bad 2023-09-12 09:44:59 -03:00
Auth_with_shibboleth.pm Bug 34731: Don't call SendQueuedMessages if message_id is bad 2023-09-12 09:44:59 -03:00
AuthoritiesMarc.pm Bug 30358: Strip leading/trailing whitespace characters from input fields when cataloguing 2023-05-16 15:17:26 -03:00
Barcodes.pm
Biblio.pm Bug 34014: (follow-up) Tidy 2023-10-20 11:03:00 -03:00
Breeding.pm Bug 33404: Fix serverhost and init $page 2023-07-05 12:17:21 -03:00
Budgets.pm Bug 31631: Optionally use tax-exclusive values for calculating fund values 2023-10-18 15:41:35 -03:00
Calendar.pm Bug 32048: Added clear cache routine to delete_holiday_range_repeatable 2023-09-18 15:31:50 -03:00
Charset.pm
Circulation.pm Bug 25560: Define item-type specific rules in UpdateNotForLoanStatusOnCheckin 2023-10-10 10:53:57 -03:00
ClassSortRoutine.pm
ClassSource.pm
ClassSplitRoutine.pm
Context.pm Bug 29033: Add C4::Context->multivalue_preference 2023-10-10 10:53:59 -03:00
Contract.pm
CourseReserves.pm
Creators.pm
Heading.pm Bug 33557: Add LinkerConsiderThesaurus system preference 2023-05-10 15:26:26 -03:00
HoldsQueue.pm Bug 28966: (QA follow-up) Remove superfluous joins 2023-07-25 16:25:39 -03:00
HTML5Media.pm
ImportBatch.pm Bug 34822: Process real time holds along with indexing 2023-10-04 09:15:38 -04:00
ImportExportFramework.pm
InstallAuth.pm
Installer.pm Bug 34174: (bug 33341 follow-up) Fix Ris export 2023-07-06 12:24:12 -03:00
ItemCirculationAlertPreference.pm
Items.pm Bug 34656: Do not update real Time Holds Queue when moving from cart to shelf 2023-09-15 11:57:13 -03:00
Koha.pm Bug 34828: Fix test 2023-10-10 09:22:37 -03:00
Labels.pm
Languages.pm Bug 32775: (QA follow-up) Fix tab and indenting issues 2023-05-15 18:23:54 -03:00
Letters.pm Bug 31383: Create a parent-child DB relation for additional content 2023-10-20 14:43:56 -03:00
Linker.pm
Log.pm
MarcModificationTemplates.pm
Matcher.pm Bug 26611: Make authority record matching use required match checks 2023-05-24 11:21:31 -03:00
Members.pm Bug 31383: Create a parent-child DB relation for additional content 2023-10-20 14:43:56 -03:00
Message.pm
Output.pm Bug 30524: Core CSRF checking code 2023-08-07 20:59:58 -03:00
Overdues.pm Bug 34279: Don't enforce overduefinescap unless it is greater than 0 2023-07-19 13:00:41 -03:00
Patroncards.pm
Record.pm Bug 33045: Use process_tt in C4::Record::marcrecord2csv 2023-09-15 11:57:16 -03:00
Reports.pm
Reserves.pm Bug 30825: Move holds_control_library to Koha::Policy::Holds 2023-09-22 12:35:46 -03:00
Ris.pm Bug 34174: (bug 33341 follow-up) Fix Ris export 2023-07-06 12:24:12 -03:00
RotatingCollections.pm Bug 31735: Avoid re-fetcing objects from database by passing them directly instead of ids to various subroutines 2023-05-12 12:40:21 -03:00
Scheduler.pm
Scrubber.pm
Search.pm Bug 33725: (follow-up) Add ccode to grouping logic 2023-06-07 16:42:05 -03:00
Serials.pm Bug 34230: Add part_name and part_number to subscription search results 2023-09-22 11:35:45 -03:00
Service.pm
ShelfBrowser.pm
SMS.pm
SocialData.pm Bug 33833: Add two FIXMEs to SocialData::get_report 2023-09-05 14:35:35 -03:00
Stats.pm Bug 30928: Add interface to statistics 2023-05-10 14:19:22 -03:00
Suggestions.pm Bug 33236: (follow-up) Remove export of NewSuggestion 2023-06-06 10:08:36 -03:00
Tags.pm
Templates.pm
TmplToken.pm
TmplTokenType.pm
TTParser.pm
UsageStats.pm Bug 33961: Remove built-in offline circ tool 2023-06-12 16:53:25 -03:00
XISBN.pm
XSLT.pm Bug 26314: Update for changes to bug 11175 methodology 2023-10-17 14:45:13 -03:00