diff options
| author | lambda <pleromagit@rogerbraun.net> | 2019-01-16 09:06:47 +0000 | 
|---|---|---|
| committer | lambda <pleromagit@rogerbraun.net> | 2019-01-16 09:06:47 +0000 | 
| commit | 608cc65d43277016a22500771360598775a3df1e (patch) | |
| tree | 3af610ae2e006880c8905ace22e4185737e09d0a | |
| parent | da4b670451fcc41b960aeb33adb9f0184ba599cf (diff) | |
| parent | 85a5be6220dd87e2884b5921fc1a6c92ee7cc745 (diff) | |
| download | pleroma-608cc65d43277016a22500771360598775a3df1e.tar.gz pleroma-608cc65d43277016a22500771360598775a3df1e.zip  | |
Merge branch 'feature/improve-microformats' into 'develop'
improve microformats support
See merge request pleroma/pleroma!672
| -rw-r--r-- | lib/pleroma/formatter.ex | 6 | ||||
| -rw-r--r-- | lib/pleroma/html.ex | 8 | ||||
| -rw-r--r-- | test/formatter_test.exs | 16 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 18 | ||||
| -rw-r--r-- | test/web/twitter_api/twitter_api_controller_test.exs | 6 | ||||
| -rw-r--r-- | test/web/twitter_api/twitter_api_test.exs | 4 | ||||
| -rw-r--r-- | test/web/twitter_api/views/activity_view_test.exs | 6 | 
7 files changed, 37 insertions, 27 deletions
diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex index d80ae6576..4149265a2 100644 --- a/lib/pleroma/formatter.ex +++ b/lib/pleroma/formatter.ex @@ -145,7 +145,9 @@ defmodule Pleroma.Formatter do            short_match = String.split(match, "@") |> tl() |> hd()            {uuid, -           "<span><a data-user='#{id}' class='mention' href='#{ap_id}'>@<span>#{short_match}</span></a></span>"} +           "<span class='h-card'><a data-user='#{id}' class='u-url mention' href='#{ap_id}'>@<span>#{ +             short_match +           }</span></a></span>"}          end)      {subs, uuid_text} @@ -168,7 +170,7 @@ defmodule Pleroma.Formatter do        subs ++          Enum.map(tags, fn {tag_text, tag, uuid} ->            url = -            "<a data-tag='#{tag}' href='#{Pleroma.Web.base_url()}/tag/#{tag}' rel='tag'>#{ +            "<a class='hashtag' data-tag='#{tag}' href='#{Pleroma.Web.base_url()}/tag/#{tag}' rel='tag'>#{                tag_text              }</a>" diff --git a/lib/pleroma/html.ex b/lib/pleroma/html.ex index 0c5b0f03f..f5c6e5033 100644 --- a/lib/pleroma/html.ex +++ b/lib/pleroma/html.ex @@ -78,14 +78,14 @@ defmodule Pleroma.HTML.Scrubber.TwitterText do    # links    Meta.allow_tag_with_uri_attributes("a", ["href", "data-user", "data-tag"], @valid_schemes) -  Meta.allow_tag_with_these_attributes("a", ["name", "title"]) +  Meta.allow_tag_with_these_attributes("a", ["name", "title", "class"])    # paragraphs and linebreaks    Meta.allow_tag_with_these_attributes("br", [])    Meta.allow_tag_with_these_attributes("p", [])    # microformats -  Meta.allow_tag_with_these_attributes("span", []) +  Meta.allow_tag_with_these_attributes("span", ["class"])    # allow inline images for custom emoji    @allow_inline_images Keyword.get(@markup, :allow_inline_images) @@ -119,7 +119,7 @@ defmodule Pleroma.HTML.Scrubber.Default do    Meta.strip_comments()    Meta.allow_tag_with_uri_attributes("a", ["href", "data-user", "data-tag"], @valid_schemes) -  Meta.allow_tag_with_these_attributes("a", ["name", "title"]) +  Meta.allow_tag_with_these_attributes("a", ["name", "title", "class"])    Meta.allow_tag_with_these_attributes("abbr", ["title"]) @@ -134,7 +134,7 @@ defmodule Pleroma.HTML.Scrubber.Default do    Meta.allow_tag_with_these_attributes("ol", [])    Meta.allow_tag_with_these_attributes("p", [])    Meta.allow_tag_with_these_attributes("pre", []) -  Meta.allow_tag_with_these_attributes("span", []) +  Meta.allow_tag_with_these_attributes("span", ["class"])    Meta.allow_tag_with_these_attributes("strong", [])    Meta.allow_tag_with_these_attributes("u", [])    Meta.allow_tag_with_these_attributes("ul", []) diff --git a/test/formatter_test.exs b/test/formatter_test.exs index c76149e38..bd8844458 100644 --- a/test/formatter_test.exs +++ b/test/formatter_test.exs @@ -19,7 +19,7 @@ defmodule Pleroma.FormatterTest do        text = "I love #cofe and #2hu"        expected_text = -        "I love <a data-tag='cofe' href='http://localhost:4001/tag/cofe' rel='tag'>#cofe</a> and <a data-tag='2hu' href='http://localhost:4001/tag/2hu' rel='tag'>#2hu</a>" +        "I love <a class='hashtag' data-tag='cofe' href='http://localhost:4001/tag/cofe' rel='tag'>#cofe</a> and <a class='hashtag' data-tag='2hu' href='http://localhost:4001/tag/2hu' rel='tag'>#2hu</a>"        tags = Formatter.parse_tags(text) @@ -31,7 +31,7 @@ defmodule Pleroma.FormatterTest do        text = "Fact #3: pleroma does what mastodon't"        expected_text = -        "Fact <a data-tag='3' href='http://localhost:4001/tag/3' rel='tag'>#3</a>: pleroma does what mastodon't" +        "Fact <a class='hashtag' data-tag='3' href='http://localhost:4001/tag/3' rel='tag'>#3</a>: pleroma does what mastodon't"        tags = Formatter.parse_tags(text) @@ -144,11 +144,13 @@ defmodule Pleroma.FormatterTest do        Enum.each(subs, fn {uuid, _} -> assert String.contains?(text, uuid) end)        expected_text = -        "<span><a data-user='#{gsimg.id}' class='mention' href='#{gsimg.ap_id}'>@<span>gsimg</span></a></span> According to <span><a data-user='#{ +        "<span class='h-card'><a data-user='#{gsimg.id}' class='u-url mention' href='#{ +          gsimg.ap_id +        }'>@<span>gsimg</span></a></span> According to <span class='h-card'><a data-user='#{            archaeme.id -        }' class='mention' href='#{"https://archeme/@archa_eme_"}'>@<span>archa_eme_</span></a></span>, that is @daggsy. Also hello <span><a data-user='#{ +        }' class='u-url mention' href='#{"https://archeme/@archa_eme_"}'>@<span>archa_eme_</span></a></span>, that is @daggsy. Also hello <span class='h-card'><a data-user='#{            archaeme_remote.id -        }' class='mention' href='#{archaeme_remote.ap_id}'>@<span>archaeme</span></a></span>" +        }' class='u-url mention' href='#{archaeme_remote.ap_id}'>@<span>archaeme</span></a></span>"        assert expected_text == Formatter.finalize({subs, text})      end @@ -166,7 +168,7 @@ defmodule Pleroma.FormatterTest do        Enum.each(subs, fn {uuid, _} -> assert String.contains?(text, uuid) end)        expected_text = -        "<span><a data-user='#{mike.id}' class='mention' href='#{mike.ap_id}'>@<span>mike</span></a></span> test" +        "<span class='h-card'><a data-user='#{mike.id}' class='u-url mention' href='#{mike.ap_id}'>@<span>mike</span></a></span> test"        assert expected_text == Formatter.finalize({subs, text})      end @@ -183,7 +185,7 @@ defmodule Pleroma.FormatterTest do        Enum.each(subs, fn {uuid, _} -> assert String.contains?(text, uuid) end)        expected_text = -        "<span><a data-user='#{o.id}' class='mention' href='#{o.ap_id}'>@<span>o</span></a></span> hi" +        "<span class='h-card'><a data-user='#{o.id}' class='u-url mention' href='#{o.ap_id}'>@<span>o</span></a></span> hi"        assert expected_text == Formatter.finalize({subs, text})      end diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 62677638d..c83bb5bc8 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -386,7 +386,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do          |> assign(:user, user)          |> get("/api/v1/filters/#{filter.filter_id}") -      assert response = json_response(conn, 200) +      assert _response = json_response(conn, 200)      end      test "update a filter", %{conn: conn} do @@ -600,7 +600,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do          |> get("/api/v1/notifications")        expected_response = -        "hi <span><a data-user=\"#{user.id}\" href=\"#{user.ap_id}\">@<span>#{user.nickname}</span></a></span>" +        "hi <span class=\"h-card\"><a data-user=\"#{user.id}\" class=\"u-url mention\" href=\"#{ +          user.ap_id +        }\">@<span>#{user.nickname}</span></a></span>"        assert [%{"status" => %{"content" => response}} | _rest] = json_response(conn, 200)        assert response == expected_response @@ -621,7 +623,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do          |> get("/api/v1/notifications/#{notification.id}")        expected_response = -        "hi <span><a data-user=\"#{user.id}\" href=\"#{user.ap_id}\">@<span>#{user.nickname}</span></a></span>" +        "hi <span class=\"h-card\"><a data-user=\"#{user.id}\" class=\"u-url mention\" href=\"#{ +          user.ap_id +        }\">@<span>#{user.nickname}</span></a></span>"        assert %{"status" => %{"content" => response}} = json_response(conn, 200)        assert response == expected_response @@ -1357,7 +1361,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      assert [status] = json_response(first_conn, 200)      assert status["id"] == to_string(activity.id) -    assert [{"link", link_header}] = +    assert [{"link", _link_header}] =               Enum.filter(first_conn.resp_headers, fn element -> match?({"link", _}, element) end)      # Honours query params @@ -1402,9 +1406,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        assert user = json_response(conn, 200)        assert user["note"] == -               "I drink <a data-tag=\"cofe\" href=\"http://localhost:4001/tag/cofe\">#cofe</a> with <span><a data-user=\"#{ +               "I drink <a class=\"hashtag\" data-tag=\"cofe\" href=\"http://localhost:4001/tag/cofe\">#cofe</a> with <span class=\"h-card\"><a data-user=\"#{                   user2.id -               }\" href=\"#{user2.ap_id}\">@<span>#{user2.nickname}</span></a></span>" +               }\" class=\"u-url mention\" href=\"#{user2.ap_id}\">@<span>#{user2.nickname}</span></a></span>"      end      test "updates the user's locking status", %{conn: conn} do @@ -1511,7 +1515,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do        |> assign(:user, user)        |> put("/api/web/settings", %{"data" => %{"programming" => "socks"}}) -    assert result = json_response(conn, 200) +    assert _result = json_response(conn, 200)      user = User.get_cached_by_ap_id(user.ap_id)      assert user.info.settings == %{"programming" => "socks"} diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index 5f13e7959..e08edc525 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -1357,9 +1357,9 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do        assert user.name == "new name"        assert user.bio == -               "hi <span><a data-user='#{user2.id}' class='mention' href='#{user2.ap_id}'>@<span>#{ -                 user2.nickname -               }</span></a></span>" +               "hi <span class='h-card'><a data-user='#{user2.id}' class='u-url mention' href='#{ +                 user2.ap_id +               }'>@<span>#{user2.nickname}</span></a></span>"        assert json_response(conn, 200) == UserView.render("user.json", %{user: user, for: user})      end diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index b9feb23d4..547592ff2 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -38,7 +38,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do      {:ok, activity = %Activity{}} = TwitterAPI.create_status(user, input)      expected_text = -      "Hello again, <span><a data-user='#{mentioned_user.id}' class='mention' href='shp'>@<span>shp</span></a></span>.<script></script><br>This is on another :moominmamma: line. <a data-tag='2hu' href='http://localhost:4001/tag/2hu' rel='tag'>#2hu</a> <a data-tag='epic' href='http://localhost:4001/tag/epic' rel='tag'>#epic</a> <a data-tag='phantasmagoric' href='http://localhost:4001/tag/phantasmagoric' rel='tag'>#phantasmagoric</a><br><a href=\"http://example.org/image.jpg\" class='attachment'>image.jpg</a>" +      "Hello again, <span class='h-card'><a data-user='#{mentioned_user.id}' class='u-url mention' href='shp'>@<span>shp</span></a></span>.<script></script><br>This is on another :moominmamma: line. <a class='hashtag' data-tag='2hu' href='http://localhost:4001/tag/2hu' rel='tag'>#2hu</a> <a class='hashtag' data-tag='epic' href='http://localhost:4001/tag/epic' rel='tag'>#epic</a> <a class='hashtag' data-tag='phantasmagoric' href='http://localhost:4001/tag/phantasmagoric' rel='tag'>#phantasmagoric</a><br><a href=\"http://example.org/image.jpg\" class='attachment'>image.jpg</a>"      assert get_in(activity.data, ["object", "content"]) == expected_text      assert get_in(activity.data, ["object", "type"]) == "Note" @@ -328,7 +328,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do      {:ok, user2} = TwitterAPI.register_user(data2)      expected_text = -      "<span><a data-user='#{user1.id}' class='mention' href='#{user1.ap_id}'>@<span>john</span></a></span> test" +      "<span class='h-card'><a data-user='#{user1.id}' class='u-url mention' href='#{user1.ap_id}'>@<span>john</span></a></span> test"      assert user2.bio == expected_text    end diff --git a/test/web/twitter_api/views/activity_view_test.exs b/test/web/twitter_api/views/activity_view_test.exs index 8b5a16add..3d6b264b1 100644 --- a/test/web/twitter_api/views/activity_view_test.exs +++ b/test/web/twitter_api/views/activity_view_test.exs @@ -66,7 +66,7 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do      result = ActivityView.render("activity.json", activity: activity)      assert result["statusnet_html"] == -             "<a data-tag=\"bike\" href=\"http://localhost:4001/tag/bike\">#Bike</a> log - Commute Tuesday<br /><a href=\"https://pla.bike/posts/20181211/\">https://pla.bike/posts/20181211/</a><br /><a data-tag=\"cycling\" href=\"http://localhost:4001/tag/cycling\">#cycling</a> <a data-tag=\"chscycling\" href=\"http://localhost:4001/tag/chscycling\">#CHScycling</a> <a data-tag=\"commute\" href=\"http://localhost:4001/tag/commute\">#commute</a><br />MVIMG_20181211_054020.jpg" +             "<a class=\"hashtag\" data-tag=\"bike\" href=\"http://localhost:4001/tag/bike\">#Bike</a> log - Commute Tuesday<br /><a href=\"https://pla.bike/posts/20181211/\">https://pla.bike/posts/20181211/</a><br /><a class=\"hashtag\" data-tag=\"cycling\" href=\"http://localhost:4001/tag/cycling\">#cycling</a> <a class=\"hashtag\" data-tag=\"chscycling\" href=\"http://localhost:4001/tag/chscycling\">#CHScycling</a> <a class=\"hashtag\" data-tag=\"commute\" href=\"http://localhost:4001/tag/commute\">#commute</a><br />MVIMG_20181211_054020.jpg"      assert result["text"] ==               "#Bike log - Commute Tuesday\nhttps://pla.bike/posts/20181211/\n#cycling #CHScycling #commute\nMVIMG_20181211_054020.jpg" @@ -141,7 +141,9 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do        "summary" => "",        "summary_html" => "",        "statusnet_html" => -        "Hey <span><a data-user=\"#{other_user.id}\" href=\"#{other_user.ap_id}\">@<span>shp</span></a></span>!", +        "Hey <span class=\"h-card\"><a data-user=\"#{other_user.id}\" class=\"u-url mention\" href=\"#{ +          other_user.ap_id +        }\">@<span>shp</span></a></span>!",        "tags" => [],        "text" => "Hey @shp!",        "uri" => activity.data["object"]["id"],  | 
