diff --git a/main.go b/main.go index cacc69c1..b0a4555c 100644 --- a/main.go +++ b/main.go @@ -39,6 +39,7 @@ import ( "github.com/animenotifier/notify.moe/pages/profile" "github.com/animenotifier/notify.moe/pages/search" "github.com/animenotifier/notify.moe/pages/settings" + "github.com/animenotifier/notify.moe/pages/shop" "github.com/animenotifier/notify.moe/pages/soundtrack" "github.com/animenotifier/notify.moe/pages/soundtracks" "github.com/animenotifier/notify.moe/pages/statistics" @@ -94,6 +95,7 @@ func configure(app *aero.Application) *aero.Application { app.Ajax("/users/anime/watching", users.AnimeWatching) app.Ajax("/statistics", statistics.Get) app.Ajax("/statistics/anime", statistics.Anime) + app.Ajax("/shop", shop.Get) app.Ajax("/login", login.Get) // User profiles diff --git a/mixins/Sidebar.pixy b/mixins/Sidebar.pixy index 390e300c..a9124078 100644 --- a/mixins/Sidebar.pixy +++ b/mixins/Sidebar.pixy @@ -20,12 +20,10 @@ component Sidebar(user *arn.User) //- SidebarButton("Search", "/search", "search") if user != nil + SidebarButton("Shop", "/shop", "shopping-cart") SidebarButton("Statistics", "/statistics", "pie-chart") SidebarButton("Settings", "/settings", "cog") - if user.Role == "admin" || user.Role == "editor" - SidebarButton("Admin", "/admin", "wrench") - .spacer .sidebar-link(aria-label="Search") @@ -33,6 +31,9 @@ component Sidebar(user *arn.User) Icon("search") FuzzySearch + if user != nil && (user.Role == "admin" || user.Role == "editor") + SidebarButton("Admin", "/admin", "wrench") + SidebarButton("Help", "/thread/I3MMiOtzR", "question-circle") if user != nil diff --git a/pages/admin/admin.pixy b/pages/admin/admin.pixy index 247c6719..d7a94611 100644 --- a/pages/admin/admin.pixy +++ b/pages/admin/admin.pixy @@ -1,9 +1,9 @@ component AdminTabs .tabs Tab("Server", "server", "/admin") + Tab("WebDev", "html5", "/admin/webdev") Tab("Shoboi", "calendar", "/admin/shoboi") Tab("AniList", "list", "/admin/anilist") - Tab("WebDev", "html5", "/admin/webdev") component Admin(user *arn.User, cpuUsage, memUsage, diskUsage float64, platform, family, platformVersion, kernelVersion string) h1.page-title Admin Panel diff --git a/pages/shop/pro-account.md b/pages/shop/pro-account.md new file mode 100644 index 00000000..ba937048 --- /dev/null +++ b/pages/shop/pro-account.md @@ -0,0 +1,9 @@ +PRO account for 1 anime season (3 months). + +Includes: + +* Avatar highlight on the forums +* Customizable cover image for your profile +* Custom title for profile and forums +* Your suggestions will have a high priority +* Access to the VIP channel on Discord \ No newline at end of file diff --git a/pages/shop/shop.go b/pages/shop/shop.go new file mode 100644 index 00000000..a2d6ba3a --- /dev/null +++ b/pages/shop/shop.go @@ -0,0 +1,28 @@ +package shop + +import ( + "io/ioutil" + "net/http" + + "github.com/aerogo/aero" + "github.com/animenotifier/notify.moe/components" + "github.com/animenotifier/notify.moe/utils" +) + +var proAccount = "" + +func init() { + data, _ := ioutil.ReadFile("pages/shop/pro-account.md") + proAccount = string(data) +} + +// Get shop page. +func Get(ctx *aero.Context) string { + user := utils.GetUser(ctx) + + if user == nil { + return ctx.Error(http.StatusUnauthorized, "Not logged in", nil) + } + + return ctx.HTML(components.Shop(user, proAccount)) +} diff --git a/pages/shop/shop.pixy b/pages/shop/shop.pixy new file mode 100644 index 00000000..bac44191 --- /dev/null +++ b/pages/shop/shop.pixy @@ -0,0 +1,29 @@ +component Shop(user *arn.User, proAccountMarkdown string) + h1.page-title Shop + + .user-balance-bar + Icon("diamond") + span.user-balance 0 + + .tabs + .tab Goods + .tab Top-Up + + .widgets.shop-items + ShopItem("PRO Account", "3 months", "900", "star", proAccountMarkdown) + ShopItem("PRO Account", "6 months", "1700", "star", strings.Replace(strings.Replace(proAccountMarkdown, "3 months", "6 months", 1), "1 anime season", "2 anime seasons", 1)) + ShopItem("PRO Account", "1 year", "3000", "star", strings.Replace(strings.Replace(proAccountMarkdown, "3 months", "12 months", 1), "1 anime season", "4 anime seasons", 1)) + ShopItem("PRO Account", "2 years", "5900", "star", strings.Replace(strings.Replace(proAccountMarkdown, "3 months", "24 months", 1), "1 anime season", "8 anime seasons", 1)) + ShopItem("Anime Support Ticket", "", "100", "ticket", "Support the makers of your favourite anime by using an anime support ticket. Anime Notifier uses 8% of the money to handle the transaction fees while the remaining 92% go directly to the studios involved in the creation of your favourite anime.") + +component ShopItem(name string, duration string, price string, icon string, description string) + .widget.shop-item + h3.widget-title.shop-item-name + Icon(icon) + span= name + span.shop-item-duration= " " + duration + .shop-item-description!= aero.Markdown(description) + .buttons.shop-buttons + button.shop-button-buy + span.shop-item-price= price + Icon("diamond") \ No newline at end of file diff --git a/pages/shop/shop.scarlet b/pages/shop/shop.scarlet new file mode 100644 index 00000000..9bb1bccf --- /dev/null +++ b/pages/shop/shop.scarlet @@ -0,0 +1,33 @@ +.shop-items + // ... + +.shop-item + // ... + +.shop-item-name + // ... + +.shop-item-price + // ... + +.shop-item-price-currency + margin-left 0.3rem + margin-right 0 + +.shop-item-duration + opacity 0.5 + text-align right + float right + +.shop-buttons + margin-top 1rem + +.shop-button-buy + .icon-diamond + margin-left 0.3rem + margin-right 0 + +.user-balance-bar + text-align center + font-size 2.5rem + margin-bottom 2rem \ No newline at end of file