From 30621d24840b5051a13d2f5831cd5bdc6743da55 Mon Sep 17 00:00:00 2001 From: Leon Hudak <33522493+leohhhn@users.noreply.github.com> Date: Mon, 20 May 2024 19:43:41 +0200 Subject: [PATCH 1/5] feat(blog): add remove functionality (#2153) ## Description This PR adds the remove functionality to the blog package.
Contributors' checklist... - [x] Added new tests, or not needed, or not feasible - [x] Provided an example (e.g. screenshot) to aid review or the PR is self-explanatory - [x] Updated the official documentation or not needed - [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message was included in the description - [x] Added references to related issues and PRs - [ ] Provided any useful hints for running manual tests - [ ] Added new benchmarks to [generated graphs](https://gnoland.github.io/benchmarks), if any. More info [here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
--- examples/gno.land/p/demo/blog/blog.gno | 11 +++++++++++ examples/gno.land/r/gnoland/blog/admin.gno | 6 ++++++ examples/gno.land/r/gnoland/blog/gnoblog_test.gno | 15 +++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/examples/gno.land/p/demo/blog/blog.gno b/examples/gno.land/p/demo/blog/blog.gno index 2c9c0e89359..11d656db5ee 100644 --- a/examples/gno.land/p/demo/blog/blog.gno +++ b/examples/gno.land/p/demo/blog/blog.gno @@ -195,6 +195,17 @@ func (b *Blog) prepareAndSetPost(post *Post) error { return nil } +func (b *Blog) RemovePost(slug string) { + _, exists := b.Posts.Get(slug) + if !exists { + panic("post with specified slug does not exist") + } + + _, _ = b.Posts.Remove(slug) + _, _ = b.PostsAlphabetical.Remove(slug) + _, _ = b.PostsPublished.Remove(slug) +} + func (b *Blog) GetPost(slug string) *Post { post, found := b.Posts.Get(slug) if !found { diff --git a/examples/gno.land/r/gnoland/blog/admin.gno b/examples/gno.land/r/gnoland/blog/admin.gno index f615e26e491..3becb7022dd 100644 --- a/examples/gno.land/r/gnoland/blog/admin.gno +++ b/examples/gno.land/r/gnoland/blog/admin.gno @@ -68,6 +68,12 @@ func ModEditPost(slug, title, body, publicationDate, authors, tags string) { checkErr(err) } +func ModRemovePost(slug string) { + assertIsModerator() + + b.RemovePost(slug) +} + func ModAddCommenter(addr std.Address) { assertIsModerator() commenterList.Set(addr.String(), true) diff --git a/examples/gno.land/r/gnoland/blog/gnoblog_test.gno b/examples/gno.land/r/gnoland/blog/gnoblog_test.gno index 1be61138b39..03fa398a26d 100644 --- a/examples/gno.land/r/gnoland/blog/gnoblog_test.gno +++ b/examples/gno.land/r/gnoland/blog/gnoblog_test.gno @@ -165,6 +165,21 @@ Published by g1u7y667z64x2h7vc6fmpcprgey4ck233jaww9zq to Gnoland's Blog assertMDEquals(t, got, expected) } + { // Test remove functionality + ModAddPost("testSlug1", "testTitle1", "body1", "2022-05-22T13:17:22Z", "moul", "tag1,tag2") + + got := Render("p/testSlug1") + + if got == "404" { + t.Errorf("did not expect 404") + } + + ModRemovePost("testSlug1") + got = Render("p/testSlug1") + + assertMDEquals(t, got, "404") + } + // TODO: pagination. // TODO: ?format=... From 228e9d0192ce7345dbeb00098ee094e3d9952119 Mon Sep 17 00:00:00 2001 From: Alexis Colin Date: Tue, 21 May 2024 03:20:11 +0900 Subject: [PATCH 2/5] feat: update favicon and og (#2148) This PR updates favicon and og images / info. - More favicon formats and sizes (for quality, compatibility and HD matters) - All images have been optimized to reduce their sizes - Adds a default `og` image to improve UX and SEO when users share the website - Completes basic `og` info such as `title` and `description` Note: _Would be cool to use a themed (light/dark) favicon by using native `prefered-color-scheme` in the next `gnoweb` iteration (require to update the light/dark theme system a bit)_ _We could also add a `webmanifest.json`to give more details to android devices (when users install the website as a webapp and/or pin it to their homescreen). Same for IE with a `msImage` and a browserconfig.xml file_ --- .../gnoweb/static/img/apple-touch-icon.png | Bin 0 -> 3554 bytes .../pkg/gnoweb/static/img/favicon-16x16.png | Bin 0 -> 393 bytes .../pkg/gnoweb/static/img/favicon-32x32.png | Bin 0 -> 792 bytes gno.land/pkg/gnoweb/static/img/favicon.ico | Bin 15406 -> 15086 bytes gno.land/pkg/gnoweb/static/img/og.png | Bin 0 -> 4100 bytes .../gnoweb/static/img/safari-pinned-tab.svg | 1 + gno.land/pkg/gnoweb/views/funcs.html | 10 ++++++++++ 7 files changed, 11 insertions(+) create mode 100644 gno.land/pkg/gnoweb/static/img/apple-touch-icon.png create mode 100644 gno.land/pkg/gnoweb/static/img/favicon-16x16.png create mode 100644 gno.land/pkg/gnoweb/static/img/favicon-32x32.png create mode 100644 gno.land/pkg/gnoweb/static/img/og.png create mode 100644 gno.land/pkg/gnoweb/static/img/safari-pinned-tab.svg diff --git a/gno.land/pkg/gnoweb/static/img/apple-touch-icon.png b/gno.land/pkg/gnoweb/static/img/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1064364d102baedd6e045dea9c08ed26ac35e9aa GIT binary patch literal 3554 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 literal 0 HcmV?d00001 diff --git a/gno.land/pkg/gnoweb/static/img/favicon-32x32.png b/gno.land/pkg/gnoweb/static/img/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..d28ef3c1ac341d6ef1bc4b90e26ed954ea8627ba GIT binary patch literal 792 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 literal 0 HcmV?d00001 diff --git a/gno.land/pkg/gnoweb/static/img/safari-pinned-tab.svg b/gno.land/pkg/gnoweb/static/img/safari-pinned-tab.svg new file mode 100644 index 00000000000..c39852d2be3 --- /dev/null +++ b/gno.land/pkg/gnoweb/static/img/safari-pinned-tab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gno.land/pkg/gnoweb/views/funcs.html b/gno.land/pkg/gnoweb/views/funcs.html index b9dba087d9d..7045f651a5c 100644 --- a/gno.land/pkg/gnoweb/views/funcs.html +++ b/gno.land/pkg/gnoweb/views/funcs.html @@ -82,6 +82,16 @@ + + + + + + + + + +