gnu-social/templates/cards/macros/note/factory.html.twig

40 lines
1.6 KiB
Twig

{#
Note factory constructor
There are various Note types:
- Vanilla (common type);
+ Full;
+ Compact;
- Page;
+ Full;
+ Compact;
This constructor accepts an array of args, this array may or not contain some elements, depending on the Note
type in question.
However, there's 1 GUARANTEE:
- First element identifies note type via a string;
This string will be compared, when there's a match the contructor delegates its respective macro.
The array of args passed should have the following structure for the default types:
- Vanilla (common type);
+ Full: { 'type': { 'vanilla_full' }, 'note': note, ?'replies': { note, ?replies }, ?'extra': { 'foo': bar };
+ Compact: { 'type': { 'vanilla_compact' }, 'note': note, ?'extra': { 'foo': bar } };
- Page;
+ Full { 'type': { 'page_full' }, 'note': note, ?'replies': { note, ?replies }, ?'extra': { 'foo': bar };
+ Compact { 'type': { 'page_compact' }, 'note': note, ?'extra': { 'foo': bar } };
#}
{% macro constructor(args) %}
{% import '/cards/macros/note/types.html.twig' as NoteTypes %}
{% if args.type is same as 'vanilla_full' %}
{{ NoteTypes.vanilla_full(args) }}
{% elseif args.type is same as 'vanilla_compact' %}
{{ NoteTypes.vanilla_compact(args) }}
{% elseif args.type is same as 'page_full' %}
{{ NoteTypes.page_full(args) }}
{% elseif args.type is same as 'page_compact' %}
{{ NoteTypes.page_compact(args) }}
{% else %}
{{ NoteTypes.vanilla_full(args) }}
{% endif %}
{% endmacro constructor %}