Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/cmd/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ func routes(r *web.Engine) *web.Engine {
r.Use(middlewares.CheckTenantPrivacy())

r.Get("/", handlers.Index())
r.Get("/roadmap", handlers.RoadmapPage())
r.Get("/posts/:number", handlers.PostDetails())
r.Get("/posts/:number/:slug", handlers.PostDetails())

Expand Down
42 changes: 42 additions & 0 deletions app/handlers/roadmap.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package handlers

import (
"net/http"

"github.com/getfider/fider/app/models/query"
"github.com/getfider/fider/app/pkg/bus"
"github.com/getfider/fider/app/pkg/env"
"github.com/getfider/fider/app/pkg/web"
)

// RoadmapPage renders the roadmap board. Pro tenants and self-hosted
// installations get the full data; other tenants render the page with no data
// so the client shows the upgrade call-to-action.
func RoadmapPage() web.HandlerFunc {
return func(c *web.Context) error {
props := web.Props{
Page: "Roadmap/Roadmap.page",
Title: "Roadmap",
}

if env.IsSingleHostMode() || c.Tenant().IsPro {
plannedPosts := &query.SearchPosts{View: "planned"}
startedPosts := &query.SearchPosts{View: "started"}
completedPosts := &query.SearchPosts{View: "completed"}
getAllTags := &query.GetAllTags{}

if err := bus.Dispatch(c, plannedPosts, startedPosts, completedPosts, getAllTags); err != nil {
return c.Failure(err)
}

props.Data = web.Map{
"plannedPosts": plannedPosts.Result,
"startedPosts": startedPosts.Result,
"completedPosts": completedPosts.Result,
"tags": getAllTags.Result,
}
}

return c.Page(http.StatusOK, props)
}
}
7 changes: 7 additions & 0 deletions locale/ar/client.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
"error.pagenotfound.title": "الصفحة غير موجودة",
"error.unauthorized.text": "لا تملك الصلاحيات لتصفح هذه الصفحة.",
"error.unauthorized.title": "غير مخول",
"header.nav.feedback": "",
"header.nav.roadmap": "",
"home.filter.label": "فلتر",
"home.filter.search.label": "Search in filters",
"home.form.defaultinvitation": "أدخل اقتراحك هنا...",
Expand Down Expand Up @@ -99,6 +101,7 @@
"linkmodal.title": "إدراج الرابط",
"linkmodal.url.label": "عنوان URL",
"linkmodal.url.placeholder": "",
"listposts.label.showmore": "",
"menu.administration": "آلإدارة",
"menu.mysettings": "إعداداتي",
"menu.signout": "تسجيل الخروج",
Expand Down Expand Up @@ -185,6 +188,10 @@
"pagination.prev": "",
"post.pending": "",
"postdetails.backtoall": "",
"postdetails.backtoroadmap": "",
"roadmap.upsell.billing": "",
"roadmap.upsell.description": "",
"roadmap.upsell.title": "",
"showpost.comment.copylink.error": "فشل نسخ رابط التعليق، يرجى نسخ رابط الصفحة",
"showpost.comment.copylink.success": "تم نسخ رابط التعليق إلى الحافظة",
"showpost.comment.unknownhighlighted": "معرف تعليق غير صالح #{id}",
Expand Down
7 changes: 7 additions & 0 deletions locale/de/client.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
"error.pagenotfound.title": "Die Seite wurde nicht gefunden",
"error.unauthorized.text": "Du bist nicht berechtigt, diese Seite anzuschauen.",
"error.unauthorized.title": "Nicht berechtigt",
"header.nav.feedback": "",
"header.nav.roadmap": "",
"home.filter.label": "Filter",
"home.filter.search.label": "Filter durchsuchen...",
"home.form.defaultinvitation": "Gib hier deinen Vorschlag ein...",
Expand Down Expand Up @@ -99,6 +101,7 @@
"linkmodal.title": "Link einfügen",
"linkmodal.url.label": "URL",
"linkmodal.url.placeholder": "https://example.com",
"listposts.label.showmore": "",
"menu.administration": "Verwaltung",
"menu.mysettings": "Meine Einstellungen",
"menu.signout": "Abmelden",
Expand Down Expand Up @@ -185,6 +188,10 @@
"pagination.prev": "Zurück",
"post.pending": "ausstehend",
"postdetails.backtoall": "Zurück zu allen Vorschlägen",
"postdetails.backtoroadmap": "",
"roadmap.upsell.billing": "",
"roadmap.upsell.description": "",
"roadmap.upsell.title": "",
"showpost.comment.copylink.error": "Kommentar-Link konnte nicht kopiert werden, bitte URL der Webseite kopieren",
"showpost.comment.copylink.success": "Kommentar-Link in die Zwischenablage kopiert",
"showpost.comment.unknownhighlighted": "Ungültige Kommentar ID #{id}",
Expand Down
7 changes: 7 additions & 0 deletions locale/el/client.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
"error.pagenotfound.title": "Η σελίδα δεν βρέθηκε",
"error.unauthorized.text": "Δεν έχετε δικαίωμα πρόσβασης σε αυτή τη σελίδα.",
"error.unauthorized.title": "Χωρίς Εξουσιοδότηση",
"header.nav.feedback": "",
"header.nav.roadmap": "",
"home.filter.label": "Φίλτρο",
"home.filter.search.label": "Αναζήτηση σε φίλτρα...",
"home.form.defaultinvitation": "Εισάγετε εδώ την πρότασή σας...",
Expand Down Expand Up @@ -99,6 +101,7 @@
"linkmodal.title": "Εισαγωγή συνδέσμου",
"linkmodal.url.label": "",
"linkmodal.url.placeholder": "",
"listposts.label.showmore": "",
"menu.administration": "Διαχείριση",
"menu.mysettings": "Οι Ρυθμίσεις Μου",
"menu.signout": "Αποσύνδεση",
Expand Down Expand Up @@ -185,6 +188,10 @@
"pagination.prev": "",
"post.pending": "",
"postdetails.backtoall": "",
"postdetails.backtoroadmap": "",
"roadmap.upsell.billing": "",
"roadmap.upsell.description": "",
"roadmap.upsell.title": "",
"showpost.comment.copylink.error": "Η αντιγραφή του συνδέσμου σχολίου απέτυχε. Παρακαλώ αντιγράψτε τη διεύθυνση URL της σελίδας.",
"showpost.comment.copylink.success": "Ο σύνδεσμος σχολίου αντιγράφηκε στο πρόχειρο",
"showpost.comment.unknownhighlighted": "Μη έγκυρο αναγνωριστικό σχολίου #{id}",
Expand Down
7 changes: 7 additions & 0 deletions locale/en/client.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
"error.pagenotfound.title": "Page not found",
"error.unauthorized.text": "You need to sign in before accessing this page.",
"error.unauthorized.title": "Unauthorized",
"header.nav.feedback": "All Feedback",
"header.nav.roadmap": "Roadmap",
"home.filter.label": "Filter",
"home.filter.search.label": "Search in filters...",
"home.form.defaultinvitation": "Enter your suggestion here...",
Expand Down Expand Up @@ -99,6 +101,7 @@
"linkmodal.title": "Insert Link",
"linkmodal.url.label": "URL",
"linkmodal.url.placeholder": "https://example.com",
"listposts.label.showmore": "Show {0} more",
"menu.administration": "Administration",
"menu.mysettings": "My Settings",
"menu.signout": "Sign out",
Expand Down Expand Up @@ -185,6 +188,10 @@
"pagination.prev": "Previous",
"post.pending": "pending",
"postdetails.backtoall": "Back to all suggestions",
"postdetails.backtoroadmap": "Back to roadmap",
"roadmap.upsell.billing": "Upgrade to PRO",
"roadmap.upsell.description": "Upgrade to Pro to unlock your Roadmap",
"roadmap.upsell.title": "See what's happening in the Roadmap view",
"showpost.comment.copylink.error": "Could not copy comment link, please copy page URL",
"showpost.comment.copylink.success": "Successfully copied comment link to clipboard",
"showpost.comment.unknownhighlighted": "Unknown comment ID #{id}",
Expand Down
7 changes: 7 additions & 0 deletions locale/es-ES/client.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
"error.pagenotfound.title": "Página no encontrada",
"error.unauthorized.text": "No estás autorizado para ver esta página.",
"error.unauthorized.title": "No está autorizado",
"header.nav.feedback": "",
"header.nav.roadmap": "",
"home.filter.label": "Filtrar",
"home.filter.search.label": "Buscar en filtros...",
"home.form.defaultinvitation": "Escriba aquí su sugerencia...",
Expand Down Expand Up @@ -99,6 +101,7 @@
"linkmodal.title": "Insertar un enlace",
"linkmodal.url.label": "URL",
"linkmodal.url.placeholder": "https://example.com",
"listposts.label.showmore": "",
"menu.administration": "Administración",
"menu.mysettings": "Mis ajustes",
"menu.signout": "Cerrar sesión",
Expand Down Expand Up @@ -185,6 +188,10 @@
"pagination.prev": "",
"post.pending": "",
"postdetails.backtoall": "",
"postdetails.backtoroadmap": "",
"roadmap.upsell.billing": "",
"roadmap.upsell.description": "",
"roadmap.upsell.title": "",
"showpost.comment.copylink.error": "No se pudo copiar el enlace del comentario, copie la URL de la página",
"showpost.comment.copylink.success": "Enlace de comentario copiado al portapapeles",
"showpost.comment.unknownhighlighted": "ID de comentario no válido #{id}",
Expand Down
7 changes: 7 additions & 0 deletions locale/fa/client.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
"error.pagenotfound.title": "صفحه پیدا نشد",
"error.unauthorized.text": "شما اجازهٔ مشاهدهٔ این صفحه را ندارید.",
"error.unauthorized.title": "مجوز ندارید",
"header.nav.feedback": "",
"header.nav.roadmap": "",
"home.filter.label": "فیلتر",
"home.filter.search.label": "جستجو در فیلترها...",
"home.form.defaultinvitation": "پیشنهاد خود را اینجا وارد کنید...",
Expand Down Expand Up @@ -99,6 +101,7 @@
"linkmodal.title": "درج لینک",
"linkmodal.url.label": "آدرس اینترنتی",
"linkmodal.url.placeholder": "",
"listposts.label.showmore": "",
"menu.administration": "مدیریت",
"menu.mysettings": "تنظیمات من",
"menu.signout": "خروج",
Expand Down Expand Up @@ -185,6 +188,10 @@
"pagination.prev": "",
"post.pending": "",
"postdetails.backtoall": "",
"postdetails.backtoroadmap": "",
"roadmap.upsell.billing": "",
"roadmap.upsell.description": "",
"roadmap.upsell.title": "",
"showpost.comment.copylink.error": "کپی لینک نظر ناموفق بود، URL صفحه را کپی کنید",
"showpost.comment.copylink.success": "لینک نظر کپی شد",
"showpost.comment.unknownhighlighted": "شناسهٔ نظر نامعتبر #{id}",
Expand Down
7 changes: 7 additions & 0 deletions locale/fr/client.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
"error.pagenotfound.title": "Page non trouvée",
"error.unauthorized.text": "Vous n'êtes pas autorisé à accéder à cette page.",
"error.unauthorized.title": "Non autorisé",
"header.nav.feedback": "",
"header.nav.roadmap": "",
"home.filter.label": "Filtrer",
"home.filter.search.label": "Rechercher dans les filtres...",
"home.form.defaultinvitation": "Entrez votre suggestion ici...",
Expand Down Expand Up @@ -99,6 +101,7 @@
"linkmodal.title": "Insérer un lien",
"linkmodal.url.label": "",
"linkmodal.url.placeholder": "https://exemple.com",
"listposts.label.showmore": "",
"menu.administration": "Administration",
"menu.mysettings": "Mes paramètres",
"menu.signout": "Se déconnecter",
Expand Down Expand Up @@ -185,6 +188,10 @@
"pagination.prev": "",
"post.pending": "",
"postdetails.backtoall": "",
"postdetails.backtoroadmap": "",
"roadmap.upsell.billing": "",
"roadmap.upsell.description": "",
"roadmap.upsell.title": "",
"showpost.comment.copylink.error": "Impossible de copier le lien du commentaire, veuillez copier l'URL de la page",
"showpost.comment.copylink.success": "Lien du commentaire copié dans le presse-papiers",
"showpost.comment.unknownhighlighted": "ID de commentaire #{id} invalide",
Expand Down
7 changes: 7 additions & 0 deletions locale/it/client.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
"error.pagenotfound.title": "Pagina non trovata",
"error.unauthorized.text": "Non sei autorizzato a visualizzare questa pagina.",
"error.unauthorized.title": "Non autorizzato",
"header.nav.feedback": "",
"header.nav.roadmap": "",
"home.filter.label": "Filtro",
"home.filter.search.label": "Cerca nei filtri...",
"home.form.defaultinvitation": "Inserisci qui il tuo suggerimento...",
Expand Down Expand Up @@ -99,6 +101,7 @@
"linkmodal.title": "Inserisci collegamento",
"linkmodal.url.label": "",
"linkmodal.url.placeholder": "https://esempio.com",
"listposts.label.showmore": "",
"menu.administration": "Amministrazione",
"menu.mysettings": "Le mie preferenze",
"menu.signout": "Disconnettersi",
Expand Down Expand Up @@ -185,6 +188,10 @@
"pagination.prev": "",
"post.pending": "",
"postdetails.backtoall": "",
"postdetails.backtoroadmap": "",
"roadmap.upsell.billing": "",
"roadmap.upsell.description": "",
"roadmap.upsell.title": "",
"showpost.comment.copylink.error": "Impossibile copiare il collegamento al commento, copiare l'URL della pagina",
"showpost.comment.copylink.success": "Link al commento copiato negli appunti",
"showpost.comment.unknownhighlighted": "ID commento non valido #{id}",
Expand Down
7 changes: 7 additions & 0 deletions locale/ja/client.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
"error.pagenotfound.title": "ページが見つかりません",
"error.unauthorized.text": "このページを閲覧する権限がありません。",
"error.unauthorized.title": "権限がありません",
"header.nav.feedback": "",
"header.nav.roadmap": "",
"home.filter.label": "フィルタ",
"home.filter.search.label": "フィルターで検索...",
"home.form.defaultinvitation": "ここに提案を入力してください...",
Expand Down Expand Up @@ -99,6 +101,7 @@
"linkmodal.title": "リンクを挿入",
"linkmodal.url.label": "",
"linkmodal.url.placeholder": "",
"listposts.label.showmore": "",
"menu.administration": "管理",
"menu.mysettings": "ユーザー設定",
"menu.signout": "ログアウト",
Expand Down Expand Up @@ -185,6 +188,10 @@
"pagination.prev": "",
"post.pending": "",
"postdetails.backtoall": "",
"postdetails.backtoroadmap": "",
"roadmap.upsell.billing": "",
"roadmap.upsell.description": "",
"roadmap.upsell.title": "",
"showpost.comment.copylink.error": "コメントリンクのコピーに失敗しました。ページURLをコピーしてください。",
"showpost.comment.copylink.success": "コメントリンクがクリップボードにコピーされました。",
"showpost.comment.unknownhighlighted": "無効なコメントID #{id}",
Expand Down
7 changes: 7 additions & 0 deletions locale/nl/client.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
"error.pagenotfound.title": "Pagina niet gevonden",
"error.unauthorized.text": "Je bent niet bevoegd om deze pagina te bekijken.",
"error.unauthorized.title": "Geen toegang",
"header.nav.feedback": "",
"header.nav.roadmap": "",
"home.filter.label": "Filter",
"home.filter.search.label": "Zoeken in filters...",
"home.form.defaultinvitation": "Deel jouw suggesties hier...",
Expand Down Expand Up @@ -99,6 +101,7 @@
"linkmodal.title": "Link invoegen",
"linkmodal.url.label": "",
"linkmodal.url.placeholder": "https://voorbeeld.com",
"listposts.label.showmore": "",
"menu.administration": "Beheer",
"menu.mysettings": "Mijn instellingen",
"menu.signout": "Uitloggen",
Expand Down Expand Up @@ -185,6 +188,10 @@
"pagination.prev": "",
"post.pending": "",
"postdetails.backtoall": "",
"postdetails.backtoroadmap": "",
"roadmap.upsell.billing": "",
"roadmap.upsell.description": "",
"roadmap.upsell.title": "",
"showpost.comment.copylink.error": "Het kopiëren van de commentaarlink is mislukt. Kopieer de URL van de pagina.",
"showpost.comment.copylink.success": "Reactielink gekopieerd naar klembord",
"showpost.comment.unknownhighlighted": "Ongeldige opmerking-ID #{id}",
Expand Down
7 changes: 7 additions & 0 deletions locale/pl/client.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
"error.pagenotfound.title": "Nie odnaleziono strony",
"error.unauthorized.text": "Nie masz uprawnień do przeglądania tej strony.",
"error.unauthorized.title": "Brak autoryzacji",
"header.nav.feedback": "",
"header.nav.roadmap": "",
"home.filter.label": "Filtr",
"home.filter.search.label": "Szukaj w filtrach...",
"home.form.defaultinvitation": "Wpisz swoją sugestię tutaj...",
Expand Down Expand Up @@ -99,6 +101,7 @@
"linkmodal.title": "Wstaw link",
"linkmodal.url.label": "Adres URL",
"linkmodal.url.placeholder": "https://przyklad.pl",
"listposts.label.showmore": "",
"menu.administration": "Administracja",
"menu.mysettings": "Moje Ustawienia",
"menu.signout": "Wyloguj się",
Expand Down Expand Up @@ -185,6 +188,10 @@
"pagination.prev": "Poprzednia",
"post.pending": "oczekuje",
"postdetails.backtoall": "Powrót do wszystkich sugestii",
"postdetails.backtoroadmap": "",
"roadmap.upsell.billing": "",
"roadmap.upsell.description": "",
"roadmap.upsell.title": "",
"showpost.comment.copylink.error": "Nie udało się skopiować linku do komentarza, skopiuj adres URL strony",
"showpost.comment.copylink.success": "Link do komentarza skopiowano do schowka",
"showpost.comment.unknownhighlighted": "Nieprawidłowy identyfikator komentarza #{id}",
Expand Down
7 changes: 7 additions & 0 deletions locale/pt-BR/client.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
"error.pagenotfound.title": "Página não encontrada",
"error.unauthorized.text": "Você não está autorizado a visualizar esta página.",
"error.unauthorized.title": "Não autorizado",
"header.nav.feedback": "",
"header.nav.roadmap": "",
"home.filter.label": "Filtrar",
"home.filter.search.label": "Pesquisar em filtros...",
"home.form.defaultinvitation": "Insira sua sugestão aqui...",
Expand Down Expand Up @@ -99,6 +101,7 @@
"linkmodal.title": "Inserir link",
"linkmodal.url.label": "",
"linkmodal.url.placeholder": "",
"listposts.label.showmore": "",
"menu.administration": "Administração",
"menu.mysettings": "Minhas Configurações",
"menu.signout": "Finalizar sessão",
Expand Down Expand Up @@ -185,6 +188,10 @@
"pagination.prev": "",
"post.pending": "",
"postdetails.backtoall": "",
"postdetails.backtoroadmap": "",
"roadmap.upsell.billing": "",
"roadmap.upsell.description": "",
"roadmap.upsell.title": "",
"showpost.comment.copylink.error": "Falha ao copiar o link do comentário, copie a URL da página",
"showpost.comment.copylink.success": "Link do comentário copiado para área de transferência",
"showpost.comment.unknownhighlighted": "ID de comentário #{id} inválido",
Expand Down
Loading
Loading