component SettingsTabs .tabs Tab("Personal", "user", "/settings/personal") component Settings(user *arn.User) h1.page-title Settings .settings .widget.mountable(data-api="/api/user/" + user.ID) h3.widget-title Icon("user") span Personal InputText("Nick", user.Nick, "Username", "Your username on notify.moe") InputText("Tagline", user.Tagline, "Tagline", "Text that appears below your username") InputText("Website", user.Website, "Website", "Your homepage") .widget.mountable(data-api="/api/user/" + user.ID) h3.widget-title Icon("cubes") span Accounts InputText("Accounts.AniList.Nick", user.Accounts.AniList.Nick, "AniList", "Your username on anilist.co") InputText("Accounts.MyAnimeList.Nick", user.Accounts.MyAnimeList.Nick, "MyAnimeList", "Your username on myanimelist.net") InputText("Accounts.Kitsu.Nick", user.Accounts.Kitsu.Nick, "Kitsu", "Your username on kitsu.io") InputText("Accounts.Osu.Nick", user.Accounts.Osu.Nick, "Osu", "Your username on osu.ppy.sh") //- InputText("Accounts.AnimePlanet.Nick", user.Accounts.AnimePlanet.Nick, "AnimePlanet", "Your username on anime-planet.com") .widget.mountable h3.widget-title Icon("bell") span Notifications #enable-notifications.widget-section label Enable: button.action(data-action="enableNotifications", data-trigger="click") Icon("toggle-off") span Enable notifications #disable-notifications.widget-section label Disable: button.action(data-action="disableNotifications", data-trigger="click") Icon("toggle-on") span Disable notifications #test-notification.widget-section label Test: button.action(data-action="testNotification", data-trigger="click") Icon("paper-plane") span Send test notification .widget.mountable h3.widget-title Icon("user-plus") span Connect .widget-section.social-account label(for="google") Google: a#google.button.social-account-button(href="/auth/google") if user.Accounts.Google.ID != "" Icon("check") span Connected else Icon("circle-o") span Not connected .widget-section.social-account label(for="facebook") Facebook: a#facebook.button.social-account-button(href="/auth/facebook") if user.Accounts.Facebook.ID != "" Icon("check") span Connected else Icon("circle-o") span Not connected .widget.mountable h3.widget-title Icon("puzzle-piece") span Apps .widget-section label Chrome Extension: button.action(data-action="installExtension", data-trigger="click") Icon("chrome") span Get the Chrome Extension .widget-section label Desktop App: button.action(data-action="installApp", data-trigger="click") Icon("desktop") span Get the Desktop App .widget-section label Android App: a.button(href="https://www.youtube.com/watch?v=opyt4cw0ep8", target="_blank", rel="noopener") Icon("android") span Get the Android App .widget.mountable h3.widget-title Icon("download") span Import ImportLists(user) .widget.mountable h3.widget-title Icon("upload") span Export .widget-section label JSON: a.button(href="/api/animelist/" + user.ID) Icon("upload") span Export anime list as JSON .widget.mountable(data-api="/api/settings/" + user.ID) h3.widget-title Icon("picture-o") span Avatar .widget-section label(for="Avatar.Source") Source: select.widget-ui-element.action(id="Avatar.Source", data-field="Avatar.Source", value=user.Settings().Avatar.Source, data-action="save", data-trigger="change") option(value="") Automatic option(value="Gravatar") Gravatar option(value="URL") Link //- option(value="FileSystem") Upload if user.Settings().Avatar.Source == "URL" InputText("Avatar.SourceURL", user.Settings().Avatar.SourceURL, "Link", "Post the link to the image here") if user.Settings().Avatar.Source == "Gravatar" || (user.Settings().Avatar.Source == "" && user.Avatar.Source == "Gravatar") .profile-image-container.avatar-preview img.profile-image.mountable(src=user.Gravatar(), alt="Gravatar") if user.Settings().Avatar.Source == "URL" && user.Settings().Avatar.SourceURL != "" .profile-image-container.avatar-preview img.profile-image.mountable(src=strings.Replace(user.Settings().Avatar.SourceURL, "http://", "https://", 1), alt="Avatar preview") .widget.mountable(data-api="/api/settings/" + user.ID) h3.widget-title Icon("font") span Formatting .widget-section label(for="TitleLanguage")= "Title language:" select.widget-ui-element.action(id="TitleLanguage", data-field="TitleLanguage", value=user.Settings().TitleLanguage, title="Language of anime titles", data-action="save", data-trigger="change") option(value="canonical") Canonical option(value="english") English option(value="romaji") Romaji option(value="japanese") 日本語 InputNumber("Format.RatingsPrecision", float64(user.Settings().Format.RatingsPrecision), "Ratings precision", "How many decimals after the comma would you like to display in ratings on anime pages?", "0", "2", "1") .widget.mountable(data-api="/api/settings/" + user.ID) h3.widget-title Icon("star") span PRO if user.IsPro() .widget-section label span Your PRO account expires in span.utc-date(data-date=user.ProExpires) span . a.button.ajax(href="/shop") Icon("star") span Extend PRO account duration else .widget-section label Would you like to support the site development? a.button.ajax(href="/shop") Icon("star") span Go PRO //- .widget.mountable(data-api="/api/settings/" + user.ID) //- h3.widget-title //- Icon("cogs") //- span Settings //- InputText("TitleLanguage", user.Settings().TitleLanguage, "Title language", "Language of anime titles")