<p></p>
<p><b>@1ec5</b> commented on this pull request.</p>
<hr>
<p>In <a href="https://github.com/openstreetmap/openstreetmap-website/pull/5439#discussion_r1994392267">app/models/social_link.rb</a>:</p>
<pre style='color:#555'>> +
+class SocialLink < ApplicationRecord
+ belongs_to :user
+
+ validates :url, :format => { :with => %r{\Ahttps?://.+\z}, :message => :http_parse_error }
+
+ URL_PATTERNS = {
+ :bluesky => %r{\Ahttps?://(?:www\.)?bsky\.app/profile/([a-zA-Z0-9\._-]+)},
+ :discord => %r{\Ahttps?://(?:www\.)?discord\.com/users/(\d+)},
+ :facebook => %r{\Ahttps?://(?:www\.)?facebook\.com/([a-zA-Z0-9.]+)},
+ :github => %r{\Ahttps?://(?:www\.)?github\.com/([a-zA-Z0-9_-]+)},
+ :gitlab => %r{\Ahttps?://(?:www\.)?gitlab\.com/([a-zA-Z0-9_-]+)},
+ :instagram => %r{\Ahttps?://(?:www\.)?instagram\.com/([a-zA-Z0-9._]+)},
+ :linkedin => %r{\Ahttps?://(?:www\.)?linkedin\.com/in/([a-zA-Z0-9_-]+)},
+ :line => %r{\Ahttps?://(?:www\.)?line\.me/ti/p/([a-zA-Z0-9_-]+)},
+ :mastodon => %r{\Ahttps?://(?:(?:www\.)?mastodon\.social|en\.osm\.town)/@([a-zA-Z0-9_]+)},
</pre>
<p dir="auto">This is very restrictive. A lot of OSM contributors have accounts in other places, such as but not limited to <a href="https://mapstodon.space/" rel="nofollow">Mapstodon</a>. Sites that accept Mastodon accounts typically accept them in one of the following formats:</p>
<ul dir="auto">
<li><code class="notranslate">mapper@example.net</code></li>
<li><code class="notranslate">@mapper@example.net</code></li>
<li><code class="notranslate">https://example.net/@mapper</code></li>
</ul>
<p dir="auto">There’s no way to validate a Mastodon profile URL or Mastodon address by domain, as that would defeat the purpose of the Fediverse.</p>
<p dir="auto">If the purpose of this regex is only to assign a Mastodon icon, that’s no big deal. But it looks like the link in the profile only displays the local part of the Mastodon address. This can get confusing when multiple servers have accounts with the same name. The standard display format is <code class="notranslate">@mapper@example.com</code>.</p>
<hr>
<p>In <a href="https://github.com/openstreetmap/openstreetmap-website/pull/5439#discussion_r1994398731">app/models/social_link.rb</a>:</p>
<pre style='color:#555'>> +#
+# Foreign Keys
+#
+# fk_rails_... (user_id => users.id)
+#
+
+class SocialLink < ApplicationRecord
+ belongs_to :user
+
+ validates :url, :format => { :with => %r{\Ahttps?://.+\z}, :message => :http_parse_error }
+
+ URL_PATTERNS = {
+ :bluesky => %r{\Ahttps?://(?:www\.)?bsky\.app/profile/([a-zA-Z0-9\._-]+)},
+ :discord => %r{\Ahttps?://(?:www\.)?discord\.com/users/(\d+)},
+ :facebook => %r{\Ahttps?://(?:www\.)?facebook\.com/([a-zA-Z0-9.]+)},
+ :github => %r{\Ahttps?://(?:www\.)?github\.com/([a-zA-Z0-9_-]+)},
</pre>
<p dir="auto">Flickr might be a nice one to add. I’ve seen lots of examples of people using their Flickr accounts to host photos taken during field surveys, and our forum has special handling for Flickr photos.</p>
<hr>
<p>In <a href="https://github.com/openstreetmap/openstreetmap-website/pull/5439#discussion_r1994404135">app/models/social_link.rb</a>:</p>
<pre style='color:#555'>> +#
+# Indexes
+#
+# index_social_links_on_user_id (user_id)
+#
+# Foreign Keys
+#
+# fk_rails_... (user_id => users.id)
+#
+
+class SocialLink < ApplicationRecord
+ belongs_to :user
+
+ validates :url, :format => { :with => %r{\Ahttps?://.+\z}, :message => :http_parse_error }
+
+ URL_PATTERNS = {
</pre>
<p dir="auto">Some suggestions for additional sites that users might want to display on their profiles in the same manner, in case the list isn’t strictly limited to social media accounts:</p>
<ul dir="auto">
<li>OSM Community Forum (though it should be automatic)</li>
<li>OpenGeofiction and OpenHistoricalMap</li>
<li>Wikipedia, Wikidata, Wikivoyage, and Wikimedia Commons</li>
</ul>
<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />Reply to this email directly, <a href="https://github.com/openstreetmap/openstreetmap-website/pull/5439#pullrequestreview-2683519315">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AAK2OLIFVFLZ5KNMOPD6IZD2UIE4NAVCNFSM6AAAAABUCYTSJCVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDMOBTGUYTSMZRGU">unsubscribe</a>.<br />You are receiving this because you are subscribed to this thread.<img src="https://github.com/notifications/beacon/AAK2OLIRV6HL2BVRQEHBYQL2UIE4NA5CNFSM6AAAAABUCYTSJCWGG33NNVSW45C7OR4XAZNRKB2WY3CSMVYXKZLTORJGK5TJMV32UY3PNVWWK3TUL5UWJTU76NAVG.gif" height="1" width="1" alt="" /><span style="color: transparent; font-size: 0; display: none; visibility: hidden; overflow: hidden; opacity: 0; width: 0; height: 0; max-width: 0; max-height: 0; mso-hide: all">Message ID: <span><openstreetmap/openstreetmap-website/pull/5439/review/2683519315</span><span>@</span><span>github</span><span>.</span><span>com></span></span></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/openstreetmap/openstreetmap-website/pull/5439#pullrequestreview-2683519315",
"url": "https://github.com/openstreetmap/openstreetmap-website/pull/5439#pullrequestreview-2683519315",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>