[BLOG][Update] Local Groups

This commit is contained in:
Diogo Peralta Cordeiro 2022-01-18 13:14:26 +00:00
parent b2bb52879b
commit 7459875db7
Signed by: diogo
GPG Key ID: 18D2D35001FBFAB0
25 changed files with 127 additions and 86 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

View File

@ -2,10 +2,30 @@
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel><title>GNU social V3</title><link>https://gnusocial.rocks/v3/index.html</link>
<description>Development blog where we announce our progress.</description><language>en</language>
<lastBuildDate>Tue, 18 Jan 2022 12:44:15 +0000</lastBuildDate>
<pubDate>Tue, 18 Jan 2022 12:44:15 +0000</pubDate>
<lastBuildDate>Tue, 18 Jan 2022 13:13:44 +0000</lastBuildDate>
<pubDate>Tue, 18 Jan 2022 13:13:44 +0000</pubDate>
<atom:link href="https://gnusocial.rocks/v3/feed.rss" rel="self" type="application/rss+xml" />
<item><title>
Updates: Local Groups
</title><description><![CDATA[
<p><img src="assets/groups/profile.png" alt="" title="" /></p>
<p>We haven't implemented federation of Groups yet, but group tags and <a href="https://socialhub.activitypub.rocks/t/decentralised-group/2200/17?u=diogo">discussion
on how unbounded groups can be federated via ActivityPub</a> has already started.</p>
<p>Concerning federation of traditional groups, we will port our logic from v2 and
translate following the same rules as AndStatus <a href="https://github.com/andstatus/andstatus/issues/248#issuecomment-558703558">because they work</a>, as yvolk beautifully stated :)</p>
<p>Finally, also note that the group actors now have "self-tags", as the other actors, which was a milestone.</p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/updates-local-groups.html</link>
<guid>https://gnusocial.rocks/v3/./updates-local-groups.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Tue, 18 Jan 2022 13:13:38 +0000</pubDate></item>
<item><title>
Milestone: Pinned Notes
</title><description><![CDATA[
You can now pin notes in your profile! Given you have suficient permissions to do so (e.g. you created the note), an additional action is represented, allowing you to highlight your favourite notes.</p>
@ -18,6 +38,7 @@ You can now pin notes in your profile! Given you have suficient permissions to d
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-pinned-notes.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-pinned-notes.html</guid>
@ -40,6 +61,7 @@ Milestone: Notes with LaTeX
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-notes-with-latex.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-notes-with-latex.html</guid>
@ -63,6 +85,7 @@ Milestone: Notes with Markdown
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-notes-with-markdown.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-notes-with-markdown.html</guid>
@ -99,6 +122,7 @@ Monetization in the fediverse.</p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-web-monetization.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-web-monetization.html</guid>
@ -121,6 +145,7 @@ to stop receiving notifications derived from that, it is now possible:
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-mute-notifications-from-a-conversation.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-mute-notifications-from-a-conversation.html</guid>
@ -161,6 +186,7 @@ specialisation of a collection.</p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-albums.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-albums.html</guid>
@ -227,6 +253,7 @@ automatically</a>.</p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-collections.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-collections.html</guid>
@ -260,6 +287,7 @@ plugin? How is it better than v2's?</p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-activitypub.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-activitypub.html</guid>
@ -372,93 +400,10 @@ tag.</p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-tags.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-tags.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Thu, 09 Dec 2021 15:21:18 +0000</pubDate></item>
<item><title>
Milestone: Actor colour theme plugin
</title><description><![CDATA[
<p>Actors are now able to set their own colours, through a brand new plugin: "Oomox".
Those accustomed to customising their own desktop should know where the name comes from ;)</p>
<h2>Here's how it works!</h2>
<p>The Oomox plugin main class catches the "PopulateProfileSettingsTabs" event upon visiting user panel.</p>
<pre><code>public function onPopulateProfileSettingsTabs(Request $request, array &amp;$tabs): bool
{
$tabs[] = [
'title' =&gt; 'Light theme colours',
'desc' =&gt; 'Change the theme colours.',
'controller' =&gt; C\Oomox::oomoxSettingsLight($request),
];
$tabs[] = [
'title' =&gt; 'Dark theme colours',
'desc' =&gt; 'Change the theme colours.',
'controller' =&gt; C\Oomox::oomoxSettingsDark($request),
];
return Event::next;
}
</code></pre>
<p>As made evident by the code, two new tabs are added to profile settings, light and dark theme colours.
Since the page styling follows the system theme, actors may want to style each theme differently, therefore they are treated separately.</p>
<p>The actor's defined colours are then saved in the respective entity and cached.
Finally, the colour preferences are used to render the corresponding CSS file which defines the various colour variables used:</p>
<pre><code>public function oomoxCSS(): Response
{
$user = Common::ensureLoggedIn();
$oomox_table = PluginOomox::getEntity($user);
if (is_null($oomox_table)) {
throw new ClientException(_m('No custom colours defined', 404));
}
$content = Formatting::twigRenderFile('/oomox/root_override.css.twig', ['oomox' =&gt; $oomox_table]);
return new Response($content, status: 200, headers: ['content-type' =&gt; 'text/css']);
}
</code></pre>
<p>Please note, upon rendering for the first time, page render may be blocked until the resulting file is served. Nonetheless, subsequent page renders
won't experience the issue again. That is, if the file is cached by the browser.</p>
<h2>How it looks</h2>
<p>Tabs added using the "PopulateProfileSettingsTabs" event:
<img src="assets/actor_colour_theme_plugin/settings_change_theme_colours.png" alt="User panel Oomox sections" title="" /></p>
<p>Changing the dark theme colours!
<img src="assets/actor_colour_theme_plugin/settings_change_theme_colours3.png" alt="Dark theme colours selection" title="" /></p>
<p>The result of given changes, please note it's no longer a 'dark' theme.
Given a valid colour, it's the actor's responsibility whether or not the colours make sense. So, go wild!
<img src="assets/actor_colour_theme_plugin/settings_change_theme_colours4.png" alt="The resulting colours in action!" title="" /></p>
<!-- text end -->
]]></description><link>https://gnusocial.rocks/v3/milestone-actor-colour-theme-plugin.html</link>
<guid>https://gnusocial.rocks/v3/./milestone-actor-colour-theme-plugin.html</guid>
<dc:creator>GNU social development team</dc:creator>
<pubDate>Thu, 09 Dec 2021 14:58:35 +0000</pubDate></item>
</channel></rss>

View File

@ -45,6 +45,7 @@ Our objective is to further differentiate GNU social from the alternative softwa
<h3>Blog</h3>
<h4 class='allposts_header'>January 2022</h4>
<ul>
<li><a href="./updates-local-groups.html">Updates: Local Groups</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-pinned-notes.html">Milestone: Pinned Notes</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-notes-with-latex.html">Milestone: Notes with LaTeX</a> &mdash; January 18, 2022</li>
<li><a href="./milestone-notes-with-markdown.html">Milestone: Notes with Markdown</a> &mdash; January 18, 2022</li>

View File

@ -66,6 +66,7 @@ plugin? How is it better than v2's?</p>
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -91,6 +91,7 @@ GNU social development team
<!-- text end -->

View File

@ -117,6 +117,7 @@ Given a valid colour, it's the actor's responsibility whether or not the colours
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -73,6 +73,7 @@ specialisation of a collection.</p>
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -99,6 +99,7 @@ automatically</a>.</p>
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -117,6 +117,7 @@ is properly tested, we have the
<!-- text end -->

View File

@ -55,6 +55,7 @@ to stop receiving notifications derived from that, it is now possible:
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -97,6 +97,7 @@ for actual internationalization of the free network.</p>
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -55,6 +55,7 @@ GNU social development team
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -56,6 +56,7 @@ GNU social development team
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -51,6 +51,7 @@ You can now pin notes in your profile! Given you have suficient permissions to d
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -121,6 +121,7 @@ The key ones are:</p>
<!-- text end -->

View File

@ -145,6 +145,7 @@ tag.</p>
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -69,6 +69,7 @@ Monetization in the fediverse.</p>
<!-- text end -->
<!-- entry end -->
</div>

View File

@ -153,6 +153,7 @@ GNU social development team
<!-- text end -->

View File

@ -89,6 +89,7 @@ attempts to generate a page preview from open graph and oembed. I.e., acts when
<!-- text end -->

View File

@ -122,6 +122,7 @@ any remote URL being shared in a note.</li>
<!-- text end -->

View File

@ -154,6 +154,7 @@ markup, we hope to achieve an accessible, fast and polished structure by which a
<!-- text end -->

View File

@ -65,6 +65,7 @@ GNU social development team
<!-- text end -->

View File

@ -0,0 +1,63 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=0.86, maximum-scale=5.0, minimum-scale=0.86">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="stylesheet" href="https://www.gnusocial.rocks//assets/css/reset.css">
<link rel="stylesheet" href="https://www.gnusocial.rocks//assets/css/blog.css">
<link rel='stylesheet' type='text/css' href="https://www.gnusocial.rocks//assets/fonts/opensans/opensans.css"><title>Updates: Local Groups - GNU social V3</title>
</head><body>
<header>
<div class="home-menu menu menu-horizontal menu-fixed">
<a class="menu-heading" href="https://gnusocial.rocks/">
<img src="../assets/img/gnu-social-logo-invert.svg" alt="GNU social">
<b>gnu</b>social
</a>
</div>
<div class="sidebar">
<ul class="menu-list">
<li class="menu-item menu-selected"><a href="index.html" class="menu-link">Blog Index</a></li>
<li class="menu-item"><a href="https://code.gnusocial.rocks/" class="menu-link">Repository</a></li>
<li class="menu-item"><a href="https://coverage.gnusocial.rocks/" class="menu-link">Code Coverage</a></li>
<li class="menu-item"><a href="https://docs.gnusocial.rocks/" class="menu-link">Documentation</a></li>
<li class="menu-item"><a href="https://agile.gnusocial.rocks/" class="menu-link">Wiki</a></li>
<li class="menu-item"><a href="https://kanban.undefinedhackers.net/?controller=BoardViewController&action=readonly&token=d2293e55cabae7cceff9fb496c651328195357d392b9e61a9f229ed6d463" class="menu-link">Roadmap</a></li>
</ul>
</div>
</header>
<div class="content-wrapper">
<div class="content">
</div></div></div>
<div id="template-wrapper"><div class="template-unit">
<!-- entry begin -->
<h3><a class="ablack" href="updates-local-groups.html">
Updates: Local Groups
</a></h3>
<!-- bashblog_timestamp: #202201181313.38# -->
<div class="subtitle">January 18, 2022 &mdash;
GNU social development team
</div>
<!-- text begin -->
<p><img src="assets/groups/profile.png" alt="" title="" /></p>
<p>We haven't implemented federation of Groups yet, but group tags and <a href="https://socialhub.activitypub.rocks/t/decentralised-group/2200/17?u=diogo">discussion
on how unbounded groups can be federated via ActivityPub</a> has already started.</p>
<p>Concerning federation of traditional groups, we will port our logic from v2 and
translate following the same rules as AndStatus <a href="https://github.com/andstatus/andstatus/issues/248#issuecomment-558703558">because they work</a>, as yvolk beautifully stated :)</p>
<p>Finally, also note that the group actors now have "self-tags", as the other actors, which was a milestone.</p>
<!-- text end -->
<!-- entry end -->
</div>
</div></div>
<footer class="footer l-box is-center">
This site's source is
<a href="https://code.undefinedhackers.net/GNUsocial/gnusocial.rocks">hosted here</a>.
</footer></body></html>

View File

@ -0,0 +1,12 @@
Updates: Local Groups
![](assets/groups/profile.png)
We haven't implemented federation of Groups yet, but group tags and [discussion
on how unbounded groups can be federated via ActivityPub](https://socialhub.activitypub.rocks/t/decentralised-group/2200/17?u=diogo) has already started.
Concerning federation of traditional groups, we will port our logic from v2 and
translate following the same rules as AndStatus [because they work](https://github.com/andstatus/andstatus/issues/248#issuecomment-558703558), as yvolk beautifully stated :)
Finally, also note that the group actors now have "self-tags", as the other actors, which was a milestone.

View File

@ -97,6 +97,7 @@ forget to subscribe!</p>
<!-- text end -->