Bug 11175 - Show the parent record's component parts in the detailed views
Summary: Show the parent record's component parts in the detailed views
Status: Failed QA
Alias: None
Product: Koha
Classification: Unclassified
Component: Cataloging (show other bugs)
Version: master
Hardware: All All
: P5 - low enhancement (vote)
Assignee: paxed
QA Contact: Josef Moravec
URL:
Keywords: Manual
Depends on:
Blocks: 12625 21484
  Show dependency treegraph
 
Reported: 2013-10-30 18:30 UTC by Olli-Antti Kivilahti
Modified: 2018-11-02 10:55 UTC (History)
13 users (show)

See Also:
Change sponsored?: Sponsored
Patch complexity: Medium patch
Who signed the patch off:
Text to go in the release notes:
Version(s) released in:


Attachments
Bug 11175 - Show the parent records child records (aka. component parts) in the detailed views. (12.87 KB, patch)
2013-10-30 18:33 UTC, Olli-Antti Kivilahti
Details | Diff | Splinter Review
Bug 11175 - Show the parent records child records (aka. component parts) in the detailed views. (16.00 KB, patch)
2013-10-31 14:49 UTC, Olli-Antti Kivilahti
Details | Diff | Splinter Review
[SIGNED-OFF] Bug 11175 - Show the parent records child records (aka. component parts) in the detailed views. (16.15 KB, patch)
2013-11-20 03:49 UTC, Garming Sam
Details | Diff | Splinter Review
Bug 11175 - Show the parent record's component parts in the detailed views. Business layer. (10.49 KB, patch)
2014-01-28 10:32 UTC, Olli-Antti Kivilahti
Details | Diff | Splinter Review
Bug 11175 - Show the parent record's component parts in the detailed views. Presentation for prog-theme. (9.25 KB, patch)
2014-01-28 10:32 UTC, Olli-Antti Kivilahti
Details | Diff | Splinter Review
Bug 11175 - Show the parent record's component parts in the detailed views. Presentation for bootstrap-theme. (3.85 KB, patch)
2014-01-28 10:33 UTC, Olli-Antti Kivilahti
Details | Diff | Splinter Review
Bug 11175 - Show the parent record's component parts in the detailed views. Presentation for bootstrap-theme. (4.67 KB, patch)
2014-01-28 11:46 UTC, Olli-Antti Kivilahti
Details | Diff | Splinter Review
Bug 11175 - Show the parent record's component parts in the detailed views. Business layer. (10.49 KB, patch)
2014-03-17 11:40 UTC, Olli-Antti Kivilahti
Details | Diff | Splinter Review
Bug 11175 - Show the parent record's component parts in the detailed views. Presentation for prog-theme. (9.20 KB, patch)
2014-03-17 11:40 UTC, Olli-Antti Kivilahti
Details | Diff | Splinter Review
Bug 11175 - Show the parent record's component parts in the detailed views. Presentation for bootstrap-theme. (5.33 KB, patch)
2014-03-17 11:40 UTC, Olli-Antti Kivilahti
Details | Diff | Splinter Review
Bug 11175 - Fixing component part injection for non-default XSL-templates (1.82 KB, patch)
2014-03-17 11:41 UTC, Olli-Antti Kivilahti
Details | Diff | Splinter Review
Bug 11175 - Rebased to parse XML result from SimpleSearch instead of the ISO2709-version which it used to be. (1.90 KB, patch)
2014-04-02 14:49 UTC, Olli-Antti Kivilahti
Details | Diff | Splinter Review
Bug 11175 - Show the parent record's component parts in the detailed views. Presentation for bootstrap-theme. (86.33 KB, patch)
2014-04-02 14:55 UTC, Olli-Antti Kivilahti
Details | Diff | Splinter Review
Bug 11175: Show record component parts in the detail view (15.08 KB, patch)
2018-08-21 06:26 UTC, paxed
Details | Diff | Splinter Review
Example marc data with host record and component parts (204.00 KB, application/xml)
2018-08-21 06:27 UTC, paxed
Details
Screenshot (95.87 KB, image/png)
2018-08-21 06:28 UTC, paxed
Details
Bug 11175: Show record component parts in the detail view (15.09 KB, patch)
2018-10-01 05:28 UTC, paxed
Details | Diff | Splinter Review
Bug 11175: Show record component parts in the detail view (24.32 KB, patch)
2018-10-02 05:20 UTC, paxed
Details | Diff | Splinter Review
Bug 11175: Show record component parts in the detail view (24.19 KB, patch)
2018-10-02 08:43 UTC, paxed
Details | Diff | Splinter Review
Bug 11175: Show record component parts in the detail view (24.25 KB, patch)
2018-10-02 09:17 UTC, Martin Renvoize
Details | Diff | Splinter Review

Note You need to log in before you can comment on or make changes to this bug.
Description Olli-Antti Kivilahti 2013-10-30 18:30:10 UTC
TERMINOLOGY:
"Child record" or "Component part": A Bibliographic record connected to it's host record via $773w -> 001 or via other Record-control-number-index relation.
"Host record": A bibliographic record which contains child records. Host record doesn't have a link to the child record.

USEFUL:
For music cataloguers whose jobs depend on these.
For browsing the contents of a musical record.
Provides the basis for a high quality music library service.

Because Koha has the building blocks to create these child records out of box, it is odd that they can't be displayed out of box.


This patch adds a system preference AddChildRecordsToDetailedViews.
This controls if child records data is appended after the bibliographic data for XSLT parsing.
Also makes sure that child records are not pulled needlessly for non-detailed views as this would cripple performance.

Modifies the default XSLT templates:
 MARC21slim2intranetDetail.xsl and
 MARC21slim2OPACDetail.xsl
to display the child record data as HTML.
Modifies .css files as well.
Comment 1 Olli-Antti Kivilahti 2013-10-30 18:30:44 UTC
Sponsored by the Joensuu Regional Library
Comment 2 Olli-Antti Kivilahti 2013-10-30 18:33:24 UTC Comment hidden (obsolete)
Comment 3 Olli-Antti Kivilahti 2013-10-31 14:49:58 UTC Comment hidden (obsolete)
Comment 4 Garming Sam 2013-11-20 03:49:21 UTC Comment hidden (obsolete)
Comment 5 Liz Rea 2013-11-20 07:34:04 UTC
Quick note on this - the functionality is only available in the Prog theme - it
will need to be added to the new default bootstrap theming.

Cheers,
Liz
Comment 6 mathieu saby 2013-11-20 09:49:49 UTC
Note : when it is pushed, a followup will be needed for unimarc

M. Saby
Comment 7 Katrin Fischer 2013-12-06 15:21:49 UTC
Hi, 

starting with a code review: 

- Small thing: Please break your commit messages into shorter lines so 
  they are easier to read in a terminal window.
  
- Please provide a follow-up for the Bootstrap theme. As prog and
  CCSR are going to be deprecated this is mandatory now.
  
- Database update adding the new system preference is missing.

- The way this is coded it's a MARC21 specific feature. The rcn index
  and 001 > $w linking are not MARC agnostic. Please check for the
  marcflavor in your code and include a note
  about the limitation to MARC21 in the syspref description.
  
- Some of the comments look like TODOs - maybe something you want to 
  take another look at?

- Creating our 'own' XML in a MARCXML record doesn't look right to me. I
  would much prefer if that could be expressed in normal MARC21 fields
  and subfields.
  
- With the heading "Child records" you assume that it will be always
  a component part, but that's not true. 001 > $w linkings are used
  to express a lot of different relationships between records. I think
  putting a bit more thought into the various relationships could be
  good here.

Also the QA script points out some issues:

 FAIL	C4/XSLT.pm
   FAIL	  pod
		*** ERROR: Unknown command 'head'  in file C4/XSLT.pm
		*** ERROR: Spurious text after =cut  in file C4/XSLT.pm
   OK	  forbidden patterns
   OK	  valid
   FAIL	  critic
		# Variables::ProhibitConditionalDeclarations: Got 1 violation(s).
Comment 8 Olli-Antti Kivilahti 2013-12-09 15:02:59 UTC
Thanks for the QA everyone, thanks for the uncovered bugs!
I'll try to get back at this sometime next year :)
Comment 9 Olli-Antti Kivilahti 2014-01-28 10:32:28 UTC Comment hidden (obsolete)
Comment 10 Olli-Antti Kivilahti 2014-01-28 10:32:51 UTC Comment hidden (obsolete)
Comment 11 Olli-Antti Kivilahti 2014-01-28 10:33:08 UTC Comment hidden (obsolete)
Comment 12 Olli-Antti Kivilahti 2014-01-28 10:46:52 UTC Comment hidden (obsolete)
Comment 13 Olli-Antti Kivilahti 2014-01-28 11:46:06 UTC Comment hidden (obsolete)
Comment 14 Olli-Antti Kivilahti 2014-02-05 16:37:53 UTC Comment hidden (obsolete)
Comment 15 Olli-Antti Kivilahti 2014-03-17 11:40:19 UTC Comment hidden (obsolete)
Comment 16 Olli-Antti Kivilahti 2014-03-17 11:40:44 UTC Comment hidden (obsolete)
Comment 17 Olli-Antti Kivilahti 2014-03-17 11:40:56 UTC Comment hidden (obsolete)
Comment 18 Olli-Antti Kivilahti 2014-03-17 11:41:18 UTC Comment hidden (obsolete)
Comment 19 David Cook 2014-03-26 07:15:49 UTC
I'm quite interested in linking records, so I might have to take a look at this one.

I haven't reviewed the code or applied the patch yet, but how might this fare with a high number of child records? In the case of a journal with article component parts, you might have dozens, hundreds, or more child records for each parent.

I wonder if this would be handled better by an AJAX call and using the relational database instead of XML records.

In any case, I'll take a look later, but just a thought...
Comment 20 Olli-Antti Kivilahti 2014-03-26 08:39:24 UTC
Thank you for your comment!
AJAX might be a better option. You are free to submit any changes.
The complexity of such goes way over what we can develop given our timeframe.
For us this feature works relatively well since we only have a couple of hundred records in our database with over 100 component parts.

I can totally see the caching issues, but returning only a subset of a search query from Zebra is beyond my competence.
Comment 21 Olli-Antti Kivilahti 2014-04-02 14:49:35 UTC Comment hidden (obsolete)
Comment 22 Olli-Antti Kivilahti 2014-04-02 14:55:15 UTC Comment hidden (obsolete)
Comment 23 Bernardo Gonzalez Kriegel 2015-06-02 17:24:07 UTC
Nice feature to test, could you rebase it?
Comment 24 Katrin Fischer 2015-06-06 11:07:55 UTC
I'd be interested in this as well :)
Comment 25 paxed 2018-08-21 06:26:22 UTC
Created attachment 78022 [details] [review]
Bug 11175: Show record component parts in the detail view

Shows the component records of a host on the host intranet detail view,
with clickable links to the component records.
Host has no linking entries to the components, but the components link
to the host record via 773$w.

Adds a new search index, Control-number-identifier (aka cni), which
indexes the 003 controlfield.

When looking up the component part records, the code searches for
records with (773$w=Host001 and 003=Host003) or 773$w='Host003 Host001'.

Does not use easyanalytics.

Only for MARC21 biblios - MARC21 holdings and UNIMARC indexdefs
haven't been updated.

Only for the intranet detail page.

Staff-client.css has not been recreated, so you need to sass that
Comment 26 paxed 2018-08-21 06:27:53 UTC
Created attachment 78023 [details]
Example marc data with host record and component parts
Comment 27 paxed 2018-08-21 06:28:25 UTC
Created attachment 78024 [details]
Screenshot
Comment 28 Joonas Kylmälä 2018-09-26 11:40:51 UTC
I cannot test this:

Using index info to reconstruct a base tree...
M	C4/Search.pm
M	koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss
M	koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
Falling back to patching base and 3-way merge...
Auto-merging koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
Auto-merging koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss
CONFLICT (content): Merge conflict in koha-tmpl/intranet-tmpl/prog/css/src/staff-global.scss
Auto-merging C4/Search.pm
error: Failed to merge in the changes.
Patch failed at 0001 Bug 11175: Show record component parts in the detail view
The copy of the patch that failed is found in: .git/rebase-apply/patch

Also would it be better to make adding Control-number-identifier to it's own patch and how is this handled with Elasticsearch now that it is also supported by koha?
Comment 29 Katrin Fischer 2018-09-27 21:19:04 UTC
I really like the idea of this, but it won't work for some of our libraries with hundreds of analytics on serial records. Could we truncate the list at some (configurable) point with a 'see more' link at the end?
Comment 30 paxed 2018-09-28 03:41:51 UTC
(In reply to Katrin Fischer from comment #29)
> I really like the idea of this, but it won't work for some of our libraries
> with hundreds of analytics on serial records. Could we truncate the list at
> some (configurable) point with a 'see more' link at the end?

Your serial parts are component records? So there's a serial "host record", of which each published magazine (or whatever) is a child record?
Comment 31 Katrin Fischer 2018-09-28 05:41:28 UTC
Worse. The serial is the host, the children are the articles. The issue level is missing. This is because of the structure in our union catalog, but also fits Koha's subscription management. So this feature would have to be at least optional, nicer if we could use it of course.
Comment 32 paxed 2018-10-01 05:28:06 UTC
Created attachment 79687 [details] [review]
Bug 11175: Show record component parts in the detail view
Comment 33 paxed 2018-10-01 05:57:21 UTC
After talking with Cait, I'll make the feature depend on a syspref.
Comment 34 paxed 2018-10-02 05:20:52 UTC
Created attachment 79803 [details] [review]
Bug 11175: Show record component parts in the detail view

Shows the component records of a host, on the host detail view in
staff client or OPAC, with clickable links to the component records.
Host has no linking entries to the components, but the components link
to the host record via 773$w.

Adds a new search index, Control-number-identifier (aka cni), which
indexes the 003 controlfield.

Adds a Yet Another System Preference, ShowComponentRecords, which can
be used to turn this feature on or off in staff client and/or OPAC,
and defaults to off.

When looking up the component part records, the code searches for
records with (773$w=Host001 and 003=Host003) or 773$w='Host003 Host001'.
Except if UseControlNumber syspref is on, then it looks only for the
Host field 001.

Does not use easyanalytics.

Only for MARC21 biblios - UNIMARC has not been updated.

staff-global.css and opac.css have not been recreated, so you need
to use sass to recreate those from staff-global.scss and opac.scss

Test plan:

0) Apply patch
1) perl bulkmarcimport -file /tmp/easypiano.mrc -m MARCXML
   (This file is an attachment on the bug)
2) rebuild the zebra biblio index
3) Search for "easy piano" in staff client, and go to
   the biblio detail page. You should not see anything different
   in the record detail page.
4) Do the same on OPAC.
5) Change the ShowComponentRecords syspref appropriately and check
   the record detail page in staff client and OPAC.
   You should see a list of component part records.
Comment 35 paxed 2018-10-02 08:43:22 UTC
Created attachment 79809 [details] [review]
Bug 11175: Show record component parts in the detail view

Shows the component records of a host, on the host detail view in
staff client or OPAC, with clickable links to the component records.
Host has no linking entries to the components, but the components link
to the host record via 773$w.

Adds a new search index, Control-number-identifier (aka cni), which
indexes the 003 controlfield.

Adds a Yet Another System Preference, ShowComponentRecords, which can
be used to turn this feature on or off in staff client and/or OPAC,
and defaults to off.

When looking up the component part records, the code searches for
records with (773$w=Host001 and 003=Host003) or 773$w='Host003 Host001'.

Does not use easyanalytics.

Only for MARC21 biblios - UNIMARC has not been updated.

staff-global.css and opac.css have not been recreated, so you need
to use sass to recreate those from staff-global.scss and opac.scss

Test plan:

0) Apply patch
1) perl bulkmarcimport -file /tmp/easypiano.mrc -m MARCXML
   (This file is an attachment on the bug)
2) rebuild the zebra biblio index
3) Search for "easy piano" in staff client, and go to
   the biblio detail page. You should not see anything different
   in the record detail page.
4) Do the same on OPAC.
5) Change the ShowComponentRecords syspref appropriately and check
   the record detail page in staff client and OPAC.
   You should see a list of component part records.
Comment 36 Martin Renvoize 2018-10-02 09:17:29 UTC
Created attachment 79810 [details] [review]
Bug 11175: Show record component parts in the detail view

Shows the component records of a host, on the hosts detail view in
staff client or OPAC, with clickable links to the component records.

The host does not require linking entries to the components, but
components do require a link to the host record via 773$w.

Adds a new search index, Control-number-identifier (aka cni), which
indexes the 003 controlfield.

Adds 'Yet Another System Preference', ShowComponentRecords, which can
be used to turn this feature on or off in staff client and/or OPAC,
and defaults to off.

When looking up the component part records, the code searches for
records with (773$w=Host001 and 003=Host003) or 773$w='Host003 Host001'
or, if the 003 is not defined in the Host, 773$w=Host001.

Does not use easyanalytics or useControlNumber.

Only for MARC21 biblios - UNIMARC has not been updated.

staff-global.css and opac.css have not been recreated, so you need
to use sass to recreate those from staff-global.scss and opac.scss

Test plan:

0) Apply patch
1) perl bulkmarcimport -file /tmp/easypiano.mrc -m MARCXML
   (This file is an attachment on the bug)
2) rebuild the zebra biblio index
3) Search for "easy piano" in staff client, and go to
   the biblio detail page. You should not see anything different
   in the record detail page.
4) Do the same on OPAC.
5) Change the ShowComponentRecords syspref appropriately and check
   the record detail page in staff client and OPAC.
   You should see a list of component part records.

Signed-off-by: Pasi Kallinen <pasi.kallinen@joensuu.fi>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Comment 37 Martin Renvoize 2018-10-02 09:18:21 UTC
Works as expected for me and it looks like all QA comments to date have been resolved.

Adding my SO as a second signoff.
Comment 38 Josef Moravec 2018-10-03 05:53:51 UTC
Comment on attachment 79810 [details] [review]
Bug 11175: Show record component parts in the detail view

Review of attachment 79810 [details] [review]:
-----------------------------------------------------------------

::: Koha/Biblio.pm
@@ +388,4 @@
>      return $self->{_biblioitem};
>  }
>  
> +=head3 components

Please, provide tests for this method

@@ +399,5 @@
> +
> +sub components {
> +    my ($self) = @_;
> +
> +    return undef if (C4::Context->preference('marcflavour') ne 'MARC21');

Do not return explicit undef
Comment 39 Josef Moravec 2018-10-03 06:07:11 UTC
And please add support for elasticsearch.
Comment 40 paxed 2018-10-03 06:14:01 UTC
Someone else can take this bug now, I have no time to work on it.
Comment 41 Olli-Antti Kivilahti 2018-10-03 06:26:33 UTC
(In reply to Josef Moravec from comment #38)
> Do not return explicit undef

Could you elaborate a bit why returning undef is bad?
Comment 42 Josef Moravec 2018-10-03 07:49:09 UTC
(In reply to Olli-Antti Kivilahti from comment #41)
> (In reply to Josef Moravec from comment #38)
> > Do not return explicit undef
> 
> Could you elaborate a bit why returning undef is bad?

It could lead to unexpected results, see:

https://metacpan.org/pod/Perl::Critic::Policy::Subroutines::ProhibitExplicitReturnUndef

https://perlmaven.com/how-to-return-undef-from-a-function

We even have it in our guidelines (this policy is part of perlcritic severity 5):
https://wiki.koha-community.org/wiki/Coding_Guidelines#PERL4:_Perlcritic
Comment 43 Josef Moravec 2018-10-03 07:51:45 UTC
(In reply to Olli-Antti Kivilahti from comment #41)

Are you going to adopt this? It would be great!
Comment 44 Katrin Fischer 2018-10-03 14:22:43 UTC
(In reply to Josef Moravec from comment #39)
> And please add support for elasticsearch.

I don't think we should make this a requirement at the moment until Elasticsearch has left experimental status and this has been added to the coding guidelines as a requirement. For now, I think, not breaking Elasticsearch functionality with new code would be enough. Other things can be dealt with later.

This is something we have been asked about for an awful long time, it would be sad to see the first steps abandoned.
Comment 45 Olli-Antti Kivilahti 2018-10-03 14:30:39 UTC
I think this feature should be generalized to work with all the 77X linking fields as instructed by the MARC21 manual. That might not be such a big step up.
Adding pagination is more complicated and requires this feature to be ported to the REST API, which would be superb anyway.
Comment 46 Katrin Fischer 2018-10-03 20:35:36 UTC
I think making it work with other 7xx could be a next step on a separate bug report. Also for the other 7xx there is more information in the record already about the linked items. From a set you often don't see much if anything about the children, so this appears to be the most urgent.
Comment 47 Josef Moravec 2018-10-04 06:07:25 UTC
(In reply to Katrin Fischer from comment #44)
> (In reply to Josef Moravec from comment #39)
> > And please add support for elasticsearch.
> 
> I don't think we should make this a requirement at the moment until
> Elasticsearch has left experimental status and this has been added to the
> coding guidelines as a requirement. For now, I think, not breaking
> Elasticsearch functionality with new code would be enough. Other things can
> be dealt with later.

Ok, I could live without elastic for now, but I have filled a follow-up bug report - bug 21484 to address this.

> 
> This is something we have been asked about for an awful long time, it would
> be sad to see the first steps abandoned.
Comment 48 Johanna Räisä 2018-11-02 07:37:35 UTC
As we have used this in Finland for some years now, my opinion is that using the index for linking the records is not very efficient. You are always depended on it and if you want to make REST endpoint for the host and its component parts the callback probably isn't always solid.

Also we have had issues with removing records. If you remove the host record the children are not going to be removed at the same time. And finding which children can be removed afterwards is difficult. On the other hand cleaning the database is getting very annoying and slow.

My proposal is to move this linking to database level. Having a linking table which has host's biblionumber and child's biblionumber would make it solid and easier to handle. This could be a solution that we don't have to implement always to new search index platform.
Comment 49 Olli-Antti Kivilahti 2018-11-02 08:07:22 UTC
DB link table is a good idea.
Zebra searches for the link relations were blazingly fast tho.
Comment 50 Martin Renvoize 2018-11-02 09:07:40 UTC
Add DB link tables moves this bug into entirely different territory in my opinion... lets get the basics working well with zebra first as we're very nearly there here already.
Comment 51 Katrin Fischer 2018-11-02 09:13:09 UTC
So I think the only thing left fixing are these 2 points right now, correct?

BTW I am not sure about a linking table for links between records, but I would love to see a linking table for the EasyAnalytics feature that happens on item level and 'spills over' into the record with non-standard 77x entries. 

In reply to Josef Moravec from comment #38)
> Comment on attachment 79810 [details] [review] [review]
> Bug 11175: Show record component parts in the detail view
> 
> Review of attachment 79810 [details] [review] [review]:
> -----------------------------------------------------------------
> 
> ::: Koha/Biblio.pm
> @@ +388,4 @@
> >      return $self->{_biblioitem};
> >  }
> >  
> > +=head3 components
> 
> Please, provide tests for this method
> 
> @@ +399,5 @@
> > +
> > +sub components {
> > +    my ($self) = @_;
> > +
> > +    return undef if (C4::Context->preference('marcflavour') ne 'MARC21');
> 
> Do not return explicit undef
Comment 52 Olli-Antti Kivilahti 2018-11-02 09:17:44 UTC
We are currently discussing how we solve this problem properly for both the Finnish academic and public library sectors.
This includes more than 773 linking.

I have 0% interest to keep fiddling with this miniscule minimum product which no longer satisfies our extended requirements.

I understand the need for small steps, but thanks to the small steps, we still have to restart the SIP2-server due to memcached.
Comment 53 Katrin Fischer 2018-11-02 09:20:24 UTC
So you are going to let this die here?
Comment 54 Olli-Antti Kivilahti 2018-11-02 09:27:02 UTC
We can always open a new bug ticket :)
Comment 55 Olli-Antti Kivilahti 2018-11-02 09:28:22 UTC
BTW Zebra doesn't always return the correct search results. For ex we have a REST API endpoint which returns all component parts for a biblio. It is awkward that we know some biblios have component parts, and still the Zebra searches don't return those results.
That makes for rather bad API service.

Using a DB link-table adds reliability.
Comment 56 Olli-Antti Kivilahti 2018-11-02 09:34:35 UTC
BTW.
First Finnish academic library HAMK went live last tuesday.

Using ES in production.

What we are trying to decide is, should these links be only in the ES index, only in the DB as a link-table with different link types separated, or should we implement both.
Comment 57 Johanna Räisä 2018-11-02 10:55:08 UTC
Maybe we should open new ticket for it. The linking table could be generic and used more versatile for different types of links.