Albirew/nyaa-pantsu
Archivé
1
0
Bifurcation 0

Added logged badge + new User variable in each template variables

Cette révision appartient à :
akuma06 2017-05-08 01:46:30 +02:00
Parent 9569da77cb
révision 0db01fb824
14 fichiers modifiés avec 67 ajouts et 19 suppressions

Voir le fichier

@ -31,7 +31,7 @@ func GormInit(conf *config.Config) (*gorm.DB, error) {
if config.Environment == "DEVELOPMENT" {
db.LogMode(true)
// db.DropTable(&model.User{}, "UserFollower")
db.AutoMigrate(&model.Torrents{}, &model.User{}, &model.Role{}, &model.Connection{}, &model.Language{})
db.AutoMigrate(&model.Torrents{}, &model.User{}, &model.Role{}, &model.Language{})
// db.AutoMigrate(&model.Article{}, &model.Location{}, &model.Comment{}, &model.File{})
// db.Model(&model.User{}).AddIndex("idx_user_token", "token")

Voir le fichier

@ -44,7 +44,7 @@ type User struct {
Likings []User `gorm:"foreignkey:userId;associationforeignkey:follower_id;many2many:users_followers;"`
Liked []User `gorm:"foreignkey:follower_id;associationforeignkey:userId;many2many:users_followers;"`
Connections []Connection
//Connections []Connection
Languages []Language `gorm:"many2many:user_languages;"` // Many To Many, user_languages is the join table
Roles []Role `gorm:"many2many:users_roles;"` // Many To Many, users_roles
@ -79,13 +79,13 @@ type PublicUser struct {
LastLoginIp omit `json:"lastLoginIp,omitempty",sql:"size:100"`
CurrentLoginIp omit `json:"currentLoginIp,omitempty",sql:"size:100"`
Connections omit `json:"connections,omitempty"`
//Connections omit `json:"connections,omitempty"`
Languages omit `json:"languages,omitempty"`
Roles omit `json:"roles,omitempty"`
Torrents omit `json:"articles,omitempty"` //should user torrents not be displayed?
}
// Connection is a connection model for oauth.
/*// Connection is a connection model for oauth.
type Connection struct {
Id uint `json:"id"`
UserId uint `json:"userId"`
@ -95,3 +95,4 @@ type Connection struct {
ProfileUrl string `gorm:"column:profile_url", json:"profileUrl"`
ImageUrl string `gorm:"column:image_url", json:"imageUrl"`
}
*/

Voir le fichier

@ -20,19 +20,25 @@
}
/* modified copy of NyaaTorrent theme */
#mainmenu {
#mainmenu, #mainmenu .dropdown-menu{
background: #263238;
position: fixed;
color: white;
}
#mainmenu {
position: fixed;
width: 100%;
z-index: 4;
border: 0px solid white;
}
#mainmenu a {
background: none;
color: white;
}
#mainmenu .divider {
background: black;
}
#container {
padding-top: 1.25em;
background: white;
@ -182,3 +188,7 @@ div.container div.blockBody:nth-of-type(2) table tr:first-of-type th:last-of-typ
.navbar {
border-radius: 0px;
}
.navbar-nav>li>a.profile-image {
padding-top: 10px;
padding-bottom: 10px;
}

Voir le fichier

@ -9,7 +9,7 @@ import (
func FaqHandler(w http.ResponseWriter, r *http.Request) {
searchForm := NewSearchForm()
searchForm.HideAdvancedSearch = true
err := faqTemplate.ExecuteTemplate(w, "index.html", FaqTemplateVariables{Navigation{}, searchForm, r.URL, mux.CurrentRoute(r)})
err := faqTemplate.ExecuteTemplate(w, "index.html", FaqTemplateVariables{Navigation{}, searchForm, GetUser(r), r.URL, mux.CurrentRoute(r)})
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}

Voir le fichier

@ -35,7 +35,7 @@ func HomeHandler(w http.ResponseWriter, r *http.Request) {
}
navigationTorrents := Navigation{nbTorrents, maxPerPage, pagenum, "search_page"}
htv := HomeTemplateVariables{b, NewSearchForm(), navigationTorrents, r.URL, mux.CurrentRoute(r)}
htv := HomeTemplateVariables{b, NewSearchForm(), navigationTorrents, GetUser(r), r.URL, mux.CurrentRoute(r)}
err := homeTemplate.ExecuteTemplate(w, "index.html", htv)
if err != nil {

Voir le fichier

@ -19,7 +19,7 @@ func NotFoundHandler(w http.ResponseWriter, r *http.Request) {
searchForm := NewSearchForm()
searchForm.HideAdvancedSearch = true
err := notFoundTemplate.ExecuteTemplate(w, "index.html", NotFoundTemplateVariables{Navigation{}, searchForm, r.URL, mux.CurrentRoute(r)})
err := notFoundTemplate.ExecuteTemplate(w, "index.html", NotFoundTemplateVariables{Navigation{}, searchForm, GetUser(r), r.URL, mux.CurrentRoute(r)})
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}

Voir le fichier

@ -35,6 +35,7 @@ func init() {
Router.HandleFunc("/verify/email/{token}", UserVerifyEmailHandler).Name("user_verify").Methods("GET")
Router.HandleFunc("/user/register", UserRegisterPostHandler).Name("user_register_post").Methods("POST")
Router.HandleFunc("/user/login", UserLoginPostHandler).Name("user_login_post").Methods("POST")
Router.HandleFunc("/user/{id}", UserProfileHandler).Name("user_profile")
Router.PathPrefix("/captcha").Methods("GET").HandlerFunc(captcha.ServeFiles)
Router.NotFoundHandler = http.HandlerFunc(NotFoundHandler)

Voir le fichier

@ -37,7 +37,7 @@ func SearchHandler(w http.ResponseWriter, r *http.Request) {
search_param.Order,
false,
}
htv := HomeTemplateVariables{b, searchForm, navigationTorrents, r.URL, mux.CurrentRoute(r)}
htv := HomeTemplateVariables{b, searchForm, navigationTorrents, GetUser(r), r.URL, mux.CurrentRoute(r)}
err := searchTemplate.ExecuteTemplate(w, "index.html", htv)
if err != nil {

Voir le fichier

@ -2,9 +2,11 @@ package router
import (
"net/url"
"net/http"
"github.com/ewhal/nyaa/model"
userForms "github.com/ewhal/nyaa/service/user/form"
"github.com/ewhal/nyaa/service/user"
"github.com/gorilla/mux"
)
@ -17,6 +19,7 @@ import (
type FaqTemplateVariables struct {
Navigation Navigation
Search SearchForm
User model.User
URL *url.URL // For parsing Url in templates
Route *mux.Route // For getting current route in templates
}
@ -24,6 +27,7 @@ type FaqTemplateVariables struct {
type NotFoundTemplateVariables struct {
Navigation Navigation
Search SearchForm
User model.User
URL *url.URL // For parsing Url in templates
Route *mux.Route // For getting current route in templates
}
@ -32,6 +36,7 @@ type ViewTemplateVariables struct {
Torrent model.TorrentsJson
Search SearchForm
Navigation Navigation
User model.User
URL *url.URL // For parsing Url in templates
Route *mux.Route // For getting current route in templates
}
@ -41,6 +46,7 @@ type UserRegisterTemplateVariables struct {
FormErrors map[string][]string
Search SearchForm
Navigation Navigation
User model.User
URL *url.URL // For parsing Url in templates
Route *mux.Route // For getting current route in templates
}
@ -49,6 +55,7 @@ type UserVerifyTemplateVariables struct {
FormErrors map[string][]string
Search SearchForm
Navigation Navigation
User model.User
URL *url.URL // For parsing Url in templates
Route *mux.Route // For getting current route in templates
}
@ -58,6 +65,7 @@ type UserLoginFormVariables struct {
FormErrors map[string][]string
Search SearchForm
Navigation Navigation
User model.User
URL *url.URL // For parsing Url in templates
Route *mux.Route // For getting current route in templates
}
@ -66,6 +74,7 @@ type HomeTemplateVariables struct {
ListTorrents []model.TorrentsJson
Search SearchForm
Navigation Navigation
User model.User
URL *url.URL // For parsing Url in templates
Route *mux.Route // For getting current route in templates
}
@ -74,6 +83,7 @@ type UploadTemplateVariables struct {
Upload UploadForm
Search SearchForm
Navigation Navigation
User model.User
URL *url.URL
Route *mux.Route
}
@ -123,3 +133,8 @@ func NewSearchForm(params ...string) (searchForm SearchForm) {
}
return
}
func GetUser(r *http.Request) model.User {
user, _ , _ := userService.RetrieveCurrentUser(r)
return user
}

Voir le fichier

@ -55,7 +55,7 @@ func UploadHandler(w http.ResponseWriter, r *http.Request) {
}
} else if r.Method == "GET" {
uploadForm.CaptchaID = captcha.GetID()
htv := UploadTemplateVariables{uploadForm, NewSearchForm(), Navigation{}, r.URL, mux.CurrentRoute(r)}
htv := UploadTemplateVariables{uploadForm, NewSearchForm(), Navigation{}, GetUser(r), r.URL, mux.CurrentRoute(r)}
err = uploadTemplate.ExecuteTemplate(w, "index.html", htv)
} else {
w.WriteHeader(http.StatusMethodNotAllowed)

Voir le fichier

@ -22,7 +22,7 @@ func UserRegisterFormHandler(w http.ResponseWriter, r *http.Request) {
modelHelper.BindValueForm(&b, r)
b.CaptchaID = captcha.GetID()
languages.SetTranslationFromRequest(viewRegisterTemplate, r, "en-us")
htv := UserRegisterTemplateVariables{b, form.NewErrors(), NewSearchForm(), Navigation{}, r.URL, mux.CurrentRoute(r)}
htv := UserRegisterTemplateVariables{b, form.NewErrors(), NewSearchForm(), Navigation{}, GetUser(r), r.URL, mux.CurrentRoute(r)}
err := viewRegisterTemplate.ExecuteTemplate(w, "index.html", htv)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
@ -38,7 +38,7 @@ func UserLoginFormHandler(w http.ResponseWriter, r *http.Request) {
modelHelper.BindValueForm(&b, r)
languages.SetTranslationFromRequest(viewLoginTemplate, r, "en-us")
htv := UserLoginFormVariables{b, form.NewErrors(), NewSearchForm(), Navigation{}, r.URL, mux.CurrentRoute(r)}
htv := UserLoginFormVariables{b, form.NewErrors(), NewSearchForm(), Navigation{}, GetUser(r), r.URL, mux.CurrentRoute(r)}
err := viewLoginTemplate.ExecuteTemplate(w, "index.html", htv)
if err != nil {
@ -78,7 +78,7 @@ func UserRegisterPostHandler(w http.ResponseWriter, r *http.Request) {
if (len(err) == 0) {
b := form.RegistrationForm{}
languages.SetTranslationFromRequest(viewRegisterSuccessTemplate, r, "en-us")
htv := UserRegisterTemplateVariables{b, err, NewSearchForm(), Navigation{}, r.URL, mux.CurrentRoute(r)}
htv := UserRegisterTemplateVariables{b, err, NewSearchForm(), Navigation{}, GetUser(r), r.URL, mux.CurrentRoute(r)}
errorTmpl := viewRegisterSuccessTemplate.ExecuteTemplate(w, "index.html", htv)
if errorTmpl != nil {
http.Error(w, errorTmpl.Error(), http.StatusInternalServerError)
@ -90,7 +90,7 @@ func UserRegisterPostHandler(w http.ResponseWriter, r *http.Request) {
if (len(err) > 0) {
b.CaptchaID = captcha.GetID()
languages.SetTranslationFromRequest(viewRegisterTemplate, r, "en-us")
htv := UserRegisterTemplateVariables{b, err, NewSearchForm(), Navigation{}, r.URL, mux.CurrentRoute(r)}
htv := UserRegisterTemplateVariables{b, err, NewSearchForm(), Navigation{}, GetUser(r), r.URL, mux.CurrentRoute(r)}
errorTmpl := viewRegisterTemplate.ExecuteTemplate(w, "index.html", htv)
if errorTmpl != nil {
http.Error(w, errorTmpl.Error(), http.StatusInternalServerError)
@ -107,7 +107,7 @@ func UserVerifyEmailHandler(w http.ResponseWriter, r *http.Request) {
err["errors"] = append(err["errors"], errEmail.Error())
}
languages.SetTranslationFromRequest(viewVerifySuccessTemplate, r, "en-us")
htv := UserVerifyTemplateVariables{err, NewSearchForm(), Navigation{}, r.URL, mux.CurrentRoute(r)}
htv := UserVerifyTemplateVariables{err, NewSearchForm(), Navigation{}, GetUser(r), r.URL, mux.CurrentRoute(r)}
errorTmpl := viewVerifySuccessTemplate.ExecuteTemplate(w, "index.html", htv)
if errorTmpl != nil {
http.Error(w, errorTmpl.Error(), http.StatusInternalServerError)
@ -125,7 +125,7 @@ func UserLoginPostHandler(w http.ResponseWriter, r *http.Request) {
if (errorUser != nil) {
err["errors"] = append(err["errors"], errorUser.Error())
languages.SetTranslationFromRequest(viewLoginTemplate, r, "en-us")
htv := UserLoginFormVariables{b, err, NewSearchForm(), Navigation{}, r.URL, mux.CurrentRoute(r)}
htv := UserLoginFormVariables{b, err, NewSearchForm(), Navigation{}, GetUser(r), r.URL, mux.CurrentRoute(r)}
errorTmpl := viewLoginTemplate.ExecuteTemplate(w, "index.html", htv)
if errorTmpl != nil {
http.Error(w, errorTmpl.Error(), http.StatusInternalServerError)

Voir le fichier

@ -19,7 +19,7 @@ func ViewHandler(w http.ResponseWriter, r *http.Request) {
}
b := torrent.ToJson()
htv := ViewTemplateVariables{b, NewSearchForm(), Navigation{}, r.URL, mux.CurrentRoute(r)}
htv := ViewTemplateVariables{b, NewSearchForm(), Navigation{}, GetUser(r), r.URL, mux.CurrentRoute(r)}
err = viewTemplate.ExecuteTemplate(w, "index.html", htv)
if err != nil {

20
templates/_badgemenu.html Fichier normal
Voir le fichier

@ -0,0 +1,20 @@
{{define "badge_user"}}
{{with .User}}
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
{{if gt .Id 0}}
<a href="{{ genRoute "user_profile" "id" (print .Id) }}" class="dropdown-toggle" data-toggle="dropdown">
<img src="https://www.gravatar.com/avatar/{{ .Md5 }}?s=50" class="profile-image img-circle"> {{ .Username }} <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="{{ genRoute "user_profile" "id" (print .Id) }}"><i class="fa fa-cog"></i> Profile</a></li>
<li class="divider"></li>
<li><a href="#soon"><i class="fa fa-sign-out"></i> Sign-out</a></li>
</ul>
{{ else }}
<li><a href="{{ genRoute "user_login" }}"><i class="fa fa-sign-out"></i> Sign in</a></li>
<li><a href="{{ genRoute "user_register" }}"><i class="fa fa-cog"></i> Sign Up</a></li>
{{end}}
</li>
</ul>
{{end}}
{{end}}

Voir le fichier

@ -55,6 +55,7 @@
{{block "search_button" .}}{{end}}
</div>
</form>
{{block "badge_user" .}}{{end}}
<div class="nightswitch">
<a href="javascript:toggleNightMode();" ><img id="nighticon" src="/img/moon.png"></a>
</div>