Author/speakers can link to member page

If author/speaker is a member's name (or short name, or alias),
a link to the members' page will be set.
This commit is contained in:
Stefan Schlott 2019-10-28 18:26:34 +01:00 committed by Stefan Schlott
parent f85edcc5f0
commit 306155b571
10 changed files with 39 additions and 9 deletions

View file

@ -5,7 +5,7 @@ kind: page
<p>Hier finden sich ein paar Infos zu einigen unserer Mitglieder.</p>
<% @items.select { |i| i[:kind] == 'member' }.each do |member| %>
<h2><a id="<%= member[:title] %>"><%= member[:title] %></a></h2>
<h2 id="<%= html_escape(member_short_name(member)) %>"><%= member[:title] %></h2>
<ul>
<% if member[:pgp] %>
<li>PGP-Key: <a href="https://sks-keyservers.net/pks/lookup?op=get&search=<%= member[:pgp] %>"><%= member[:pgp] %></a></li>

View file

@ -1,5 +1,8 @@
-----
title: Leibi (Stefan Leibfarth)
title: Stefan 'Leibi' Leibfarth
shortName: Leibi
aliases:
- Stefan Leibfarth (Leibi)
kind: member
pgp: "0xE5CEBB2AC1354426"
url: https://stefan.leibfarth.org/

View file

@ -1,5 +1,6 @@
-----
title: Princess
title: Andrea 'Princess' Wardzichowski
shortName: Princess
kind: member
pgp: "0x9E5343DB80CE19A7"
url: http://blog.querulantin.de/

View file

@ -1,5 +1,6 @@
-----
title: Rince
title: Hanno 'Rince' Wagner
shortName: Rince
kind: member
pgp: "0xA75723A176CDE3460449956A7C3192F14CF2D85A"
url: http://blog.rince.de/

View file

@ -1,5 +1,8 @@
-----
title: Skyr
title: Stefan 'Skyr' Schlott
shortName: Skyr
aliases:
- Stefan Schlott
kind: member
pgp: "0xFDF44AE875FD7074"
url: http://stefan.ploing.de/

View file

@ -8,7 +8,7 @@ Hier die letzten Postings ihrer privaten Blogs (die Links führen direkt auf die
<h2 itemprop="name"><a itemprop="url" href="<%= post[:url] %>"><%= post[:title] %></a></h2>
<ul class="unstyled inline">
<li><i class="fas fa-calendar"></i> <time itemprop="dateCreated" datetime="<%= post[:date].strftime("%Y-%m-%d") %>"><%= post[:date].strftime("%d.%m.%Y") %></time></li>
<li><i class="fas fa-pencil"></i> <%= post[:user] %></li>
<li><i class="fas fa-pencil"></i> <%= member_link(post[:user]) %></li>
</ul>
</div>
<% end %>

View file

@ -9,7 +9,7 @@
<p>
<ul class="unstyled inline">
<li><i class="fas fa-calendar-alt" title="Datum"></i> <time itemprop="dateCreated" datetime="<%= @item[:created_at].strftime("%Y-%m-%d") %>"><%= @item[:created_at].strftime("%d.%m.%Y") %></time></li>
<% if @item[:author] %><li><i class="fas fa-pencil-alt" title="Autor"></i> <%= @item[:author] %></li><% end %>
<% if @item[:author] %><li><i class="fas fa-pencil-alt" title="Autor"></i> <%= member_link(@item[:author], false) %></li><% end %>
<% if @item[:refers_to] %><li><i class="fas fa-cogs" title="Zugehöriges Projekt"></i> <a href="<%= @items[sanitize_path(@item[:refers_to])].path() %>"><%= @items[sanitize_path(@item[:refers_to])][:title] %></a></li><% end %>
<li><i class="fas fa-bookmark" title="Permalink"></i> <a itemprop="url" href="<%= item.path() %>">Permalink</a></li>
</ul>

View file

@ -21,7 +21,7 @@
<ul>
<% @item[:speakers].each do |speaker| %>
<li itemprop="performer" itemscope itemtype="http://schema.org/Person">
<span itemprop="name"><%= speaker[:name] %></span><% if speaker[:affiliation]%> (<%= speaker[:affiliation] %>)<% end %>
<span itemprop="name"><%= member_link(speaker[:name], false) %></span><% if speaker[:affiliation]%> (<%= speaker[:affiliation] %>)<% end %>
</li>
<% end %>
</ul>

View file

@ -8,7 +8,7 @@
<p>
<ul class="unstyled inline">
<li><i class="fas fa-calendar-alt"></i> <time itemprop="dateCreated" datetime="<%= @item[:created_at].strftime("%Y-%m-%d") %>"><%= @item[:created_at].strftime("%d.%m.%Y") %></time></li>
<% if @item[:author] %><li><i class="fas fa-pencil-alt"></i> <%= @item[:author] %></li><% end %>
<% if @item[:author] %><li><i class="fas fa-pencil-alt"></i> <%= member_link(@item[:author]) %></li><% end %>
<% if @item[:refers_to] %><li><i class="fas fa-cogs"></i> <a href="<%= @items[sanitize_path(@item[:refers_to])].path() %>"><%= @items[sanitize_path(@item[:refers_to])][:title] %></a></li><% end %>
<li><i class="fas fa-bookmark"></i> <a itemprop="url" href="<%= item.path() %>">Permalink</a></li>
</ul>

22
lib/members.rb Normal file
View file

@ -0,0 +1,22 @@
def find_member(name)
name = name.downcase
return items.find { |i| i[:kind] == 'member' and (
i[:title].downcase == name or
(i[:shortName] and i[:shortName].downcase == name) or
(i[:aliases] and i[:aliases].map { |a| a.downcase }.include?(name) )
) }
end
def member_short_name(member)
return member[:shortName] || member[:title]
end
def member_link(name, short=true)
member = find_member(name)
if member
shortName = member_short_name(member)
return "<a href=\"/members/\##{html_escape(shortName)}\">#{short ? shortName : member[:title]}</a>"
else
return name
end
end