From 019e3d91e43750cc3ba524449acf22e80d4c579c Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 1 Dec 2020 17:56:31 +0000 Subject: [PATCH] [Directory] Moved /actors stream to directory plugin --- plugins/Directory/Controller/Directory.php | 4 +- plugins/Directory/Directory.php | 21 +++- public/assets/css/directory/actors.css | 50 +++++++++ templates/directory/actor.html.twig | 31 ++++++ templates/directory/actors.html.twig | 115 +++++++++++++++++++++ templates/network/public.html.twig | 5 + 6 files changed, 223 insertions(+), 3 deletions(-) create mode 100644 public/assets/css/directory/actors.css create mode 100644 templates/directory/actor.html.twig create mode 100644 templates/directory/actors.html.twig diff --git a/plugins/Directory/Controller/Directory.php b/plugins/Directory/Controller/Directory.php index 5f75e7b881..cd3a3c8f39 100644 --- a/plugins/Directory/Controller/Directory.php +++ b/plugins/Directory/Controller/Directory.php @@ -26,9 +26,9 @@ use Symfony\Component\HttpFoundation\Request; class Directory { - public function people(Request $request) + public function actors(Request $request) { - return ['_template' => 'directory/people.html.twig', 'people' => DB::dql('select g from App\Entity\GSActor g order by g.nickname ASC')]; + return ['_template' => 'directory/actors.html.twig', 'actors' => DB::dql('select g from App\Entity\GSActor g order by g.nickname ASC')]; } public function groups(Request $request) diff --git a/plugins/Directory/Directory.php b/plugins/Directory/Directory.php index 1feca2ce20..d71f8e8429 100644 --- a/plugins/Directory/Directory.php +++ b/plugins/Directory/Directory.php @@ -28,8 +28,27 @@ class Directory extends Module { public function onAddRoute($r) { - $r->connect('people', '/people', [Controller\Directory::class, 'people']); + $r->connect('actors', '/actors', [Controller\Directory::class, 'actors']); $r->connect('groups', '/groups', [Controller\Directory::class, 'groups']); return Event::next; } + + /** + * Populate twig vars + * + * @param array $vars + * + * @return bool hook value; true means continue processing, false means stop. + */ + public function onStartTwigPopulateVars(array &$vars): bool + { + if (array_key_exists('main_nav_tabs',$vars)) { + $vars['main_nav_tabs'] = []; + } + $vars['main_nav_tabs'][] = ['title' => 'Actors', + 'route' => 'actors', + ]; + + return Event::next; + } } diff --git a/public/assets/css/directory/actors.css b/public/assets/css/directory/actors.css new file mode 100644 index 0000000000..7f62c84b16 --- /dev/null +++ b/public/assets/css/directory/actors.css @@ -0,0 +1,50 @@ +/*actors stream*/ +.actors{ + display: flex; + flex-wrap: wrap; +} + +.notes-wrap .timeline .actors > div { + margin: var(--unit-size) var(--unit-size) 0 var(--unit-size); + border-radius: var(--unit-size); + width: 100%; +} +.notes-wrap .timeline .actors > div:last-child { + margin: var(--unit-size) var(--unit-size) var(--unit-size) var(--unit-size); +} + +.actor{ + display: flex; + flex-wrap: wrap; + border: solid 2px var(--accent-low); + border-radius: var(--unit-size); + box-shadow: var(--shadow); + margin-bottom: var(--unit-size); +} + +.actor-content { + order: 3; + word-break: break-word; + padding: var(--small-size); + border-radius: 0 0 var(--unit-size) var(--unit-size); + width: 100%; + display: flex; + flex-wrap: wrap; + justify-content: space-between; +} + +.actor-info{ + order: 3; + display: flex; + flex-wrap: wrap; +} + +.actor-bio{ + order: 3; + word-break: break-word; + padding: var(--small-size); + border-radius: 0 0 var(--unit-size) var(--unit-size); + display: flex; + flex-wrap: wrap; + justify-content: right; +} \ No newline at end of file diff --git a/templates/directory/actor.html.twig b/templates/directory/actor.html.twig new file mode 100644 index 0000000000..9cf2b332ff --- /dev/null +++ b/templates/directory/actor.html.twig @@ -0,0 +1,31 @@ +
+
+
+ {% set nickname = actor.getNickname() %} +
+ {{ nickname }}'s avatar +
+
+ {{ nickname }} + {% set actor_tags = actor.getSelfTags() %} +
+ {% if actor_tags %} + {% for tag in actor_tags %} + #{{ tag }} + {% endfor %} + {% else %} + {{ '(No tags)' | trans }} + {% endif %} +
+
+
+ {% set actor_bio = actor.getBio() %} +
+ {% if actor_bio %} +

{{ actor_bio }}

+ {% else %} +

{{ '(No bio)' | trans }}

+ {% endif %} +
+
+
diff --git a/templates/directory/actors.html.twig b/templates/directory/actors.html.twig new file mode 100644 index 0000000000..76d81cba4b --- /dev/null +++ b/templates/directory/actors.html.twig @@ -0,0 +1,115 @@ +{% extends 'left/left.html.twig' %} + +{% block meta %} + {{ parent() }} +{% endblock %} + +{% block title %}Actors{% endblock %} + +{% block stylesheets %} + {{ parent() }} + + + + +{% endblock %} + +{% block header %} + {{ parent() }} +{% endblock %} + +{% block left %} + {{ parent() }} +{% endblock %} + +{% block body %} +
+ {% if post_form is defined %} + {{ form_start(post_form) }} +
+
+
+ {{ form_label(post_form.to) }} +
+
+ {{ form_widget(post_form.to) }} +
+
+
+
+
+ {{ form_row(post_form.visibility) }} +
+
+ {% for tab in tabs %} + {{ tab['title'] }} + {% endfor %} +
+
+
+
+ {{ form_row(post_form.content) }} +
+
+
+
+ {{ form_widget(post_form.attachments) }} + +
+
+ {{ form_row(post_form.post) }} +
+
+
+
+ {{ form_end(post_form) }} + {% endif %} +
+ +
+ +
+
+ {% if actors is defined and actors is not empty %} + {% for actor in actors %} + {% include '/directory/actor.html.twig' with {'actor': actor, 'have_user': have_user} only %} + {% endfor %} + {% else %} +

{% trans %}No actors here.{% endtrans %}

+ {% endif %} +
+
+
+
+
+{% endblock body %} + +{% block javascripts %}{% endblock %} \ No newline at end of file diff --git a/templates/network/public.html.twig b/templates/network/public.html.twig index 402c8ecefe..4bc41a004a 100644 --- a/templates/network/public.html.twig +++ b/templates/network/public.html.twig @@ -90,6 +90,11 @@
  • Network
  • + {% for tab in main_nav_tabs %} +
  • + {{ tab['title'] }} +
  • + {% endfor %}