2017-05-05 16:39:15 +02:00
package router
2017-05-05 03:53:38 +02:00
import (
2017-05-29 17:07:18 +02:00
"html/template"
2017-05-08 01:46:30 +02:00
"net/http"
2017-05-09 13:31:58 +02:00
"net/url"
2017-05-06 23:16:21 +02:00
2017-05-17 07:58:40 +02:00
"github.com/NyaaPantsu/nyaa/common"
"github.com/NyaaPantsu/nyaa/model"
"github.com/NyaaPantsu/nyaa/service/user"
userForms "github.com/NyaaPantsu/nyaa/service/user/form"
2017-05-24 16:13:56 +02:00
"github.com/NyaaPantsu/nyaa/util/filelist"
2017-05-27 19:08:47 +02:00
"github.com/NyaaPantsu/nyaa/util/publicSettings"
2017-05-29 17:07:18 +02:00
"github.com/gorilla/csrf"
2017-05-06 10:36:37 +02:00
"github.com/gorilla/mux"
2017-05-05 03:53:38 +02:00
)
2017-05-05 06:07:45 +02:00
/ * Each Page should have an object to pass to their own template
2017-05-15 11:08:17 +02:00
* Therefore , we put them in a separate file for better maintenance
*
* MAIN Template Variables
2017-05-05 06:07:45 +02:00
* /
2017-05-05 03:53:38 +02:00
2017-05-25 21:54:58 +02:00
type viewTemplateVariables struct {
commonTemplateVariables
Consistency, formatting, error checking, cleanup, and a couple bug fixes (#245)
* Checkpoint: it builds
The config, db, model, network, os, and public packages have had some
fixes to glaringly obvious flaws, dead code removed, and stylistic
changes.
* Style changes and old code removal in router
Router needs a lot of work done to its (lack of) error handling.
* Dead code removal and style changes
Now up to util/email/email.go. After I'm finished with the initial sweep
I'll go back and fix error handling and security issues. Then I'll fix
the broken API. Then I'll go through to add documentation and fix code
visibility.
* Finish dead code removal and style changes
Vendored libraries not touched. Everything still needs security fixes
and documentation. There's also one case of broken functionality.
* Fix accidental find-and-replace
* Style, error checking, saftey, bug fix changes
* Redo error checking erased during merge
* Re-add merge-erased fix. Make Safe safe.
2017-05-10 04:34:40 +02:00
Torrent model . TorrentJSON
2017-05-24 16:13:56 +02:00
RootFolder * filelist . FileListFolder // used for tree view
2017-05-12 11:58:22 +02:00
CaptchaID string
2017-05-24 09:11:13 +02:00
FormErrors map [ string ] [ ] string
Infos map [ string ] [ ] string
2017-05-05 03:53:38 +02:00
}
2017-05-25 21:54:58 +02:00
type formTemplateVariables struct {
commonTemplateVariables
Form interface { }
FormErrors map [ string ] [ ] string
FormInfos map [ string ] [ ] string
}
type modelListVbs struct {
commonTemplateVariables
Models interface { }
Errors map [ string ] [ ] string
Infos map [ string ] [ ] string
2017-05-07 00:10:40 +02:00
}
2017-05-25 21:54:58 +02:00
type userProfileEditVariables struct {
commonTemplateVariables
Consistency, formatting, error checking, cleanup, and a couple bug fixes (#245)
* Checkpoint: it builds
The config, db, model, network, os, and public packages have had some
fixes to glaringly obvious flaws, dead code removed, and stylistic
changes.
* Style changes and old code removal in router
Router needs a lot of work done to its (lack of) error handling.
* Dead code removal and style changes
Now up to util/email/email.go. After I'm finished with the initial sweep
I'll go back and fix error handling and security issues. Then I'll fix
the broken API. Then I'll go through to add documentation and fix code
visibility.
* Finish dead code removal and style changes
Vendored libraries not touched. Everything still needs security fixes
and documentation. There's also one case of broken functionality.
* Fix accidental find-and-replace
* Style, error checking, saftey, bug fix changes
* Redo error checking erased during merge
* Re-add merge-erased fix. Make Safe safe.
2017-05-10 04:34:40 +02:00
UserProfile * model . User
UserForm userForms . UserForm
FormErrors map [ string ] [ ] string
FormInfos map [ string ] [ ] string
2017-05-10 21:45:39 +02:00
Languages map [ string ] string
2017-05-09 17:47:06 +02:00
}
2017-05-25 21:54:58 +02:00
type userVerifyTemplateVariables struct {
commonTemplateVariables
2017-05-09 13:31:58 +02:00
FormErrors map [ string ] [ ] string
2017-05-07 22:00:45 +02:00
}
2017-05-25 21:54:58 +02:00
type userProfileVariables struct {
commonTemplateVariables
2017-05-09 13:31:58 +02:00
UserProfile * model . User
2017-05-10 11:03:49 +02:00
FormInfos map [ string ] [ ] string
2017-05-07 04:02:57 +02:00
}
2017-05-25 21:54:58 +02:00
type databaseDumpTemplateVariables struct {
commonTemplateVariables
2017-05-24 09:11:13 +02:00
ListDumps [ ] model . DatabaseDumpJSON
GPGLink string
2017-05-11 05:06:12 +02:00
}
2017-05-25 21:54:58 +02:00
type changeLanguageVariables struct {
commonTemplateVariables
2017-05-24 09:11:13 +02:00
Language string
Languages map [ string ] string
2017-05-13 00:17:34 +02:00
}
2017-05-27 19:08:47 +02:00
type publicSettingsVariables struct {
commonTemplateVariables
Language string
Languages map [ string ] string
}
2017-05-10 17:37:49 +02:00
/* MODERATION Variables */
2017-05-25 21:54:58 +02:00
type panelIndexVbs struct {
commonTemplateVariables
2017-05-10 20:42:20 +02:00
Torrents [ ] model . Torrent
2017-05-26 12:12:52 +02:00
TorrentReports [ ] model . TorrentReportJSON
2017-05-10 20:42:20 +02:00
Users [ ] model . User
Comments [ ] model . Comment
2017-05-10 05:24:18 +02:00
}
2017-05-07 01:20:13 +02:00
/ *
2017-05-15 11:08:17 +02:00
* Variables used by the upper ones
2017-05-07 01:20:13 +02:00
* /
2017-05-21 09:10:19 +02:00
2017-05-25 21:54:58 +02:00
type commonTemplateVariables struct {
Navigation navigation
Search searchForm
2017-05-27 19:08:47 +02:00
T publicSettings . TemplateTfunc
Theme string
2017-05-31 04:21:35 +02:00
Mascot string
2017-05-21 09:10:19 +02:00
User * model . User
2017-05-24 09:11:13 +02:00
URL * url . URL // for parsing URL in templates
Route * mux . Route // for getting current route in templates
2017-05-29 17:07:18 +02:00
CsrfField template . HTML
2017-05-21 09:10:19 +02:00
}
2017-05-25 21:54:58 +02:00
type navigation struct {
2017-05-07 01:20:13 +02:00
TotalItem int
2017-05-17 07:58:40 +02:00
MaxItemPerPage int // FIXME: shouldn't this be in SearchForm?
2017-05-07 01:20:13 +02:00
CurrentPage int
Route string
}
2017-05-25 21:54:58 +02:00
type searchForm struct {
2017-05-10 11:03:49 +02:00
common . SearchParam
2017-05-14 13:01:59 +02:00
Category string
ShowItemsPerPage bool
2017-05-07 01:20:13 +02:00
}
// Some Default Values to ease things out
2017-05-25 21:54:58 +02:00
func newNavigation ( ) navigation {
return navigation {
2017-05-15 13:55:16 +02:00
MaxItemPerPage : 50 ,
}
}
2017-05-25 21:54:58 +02:00
func newSearchForm ( ) searchForm {
return searchForm {
2017-05-15 11:08:17 +02:00
Category : "_" ,
2017-05-14 13:01:59 +02:00
ShowItemsPerPage : true ,
2017-05-07 01:20:13 +02:00
}
}
2017-05-08 01:46:30 +02:00
2017-05-25 21:54:58 +02:00
func newModelList ( r * http . Request , models interface { } ) modelListVbs {
return modelListVbs {
commonTemplateVariables : newCommonVariables ( r ) ,
Models : models ,
}
}
func getUser ( r * http . Request ) * model . User {
2017-05-09 13:31:58 +02:00
user , _ , _ := userService . RetrieveCurrentUser ( r )
2017-05-09 03:36:48 +02:00
return & user
2017-05-08 05:34:12 +02:00
}
2017-05-21 00:38:28 +02:00
2017-05-25 21:54:58 +02:00
func newCommonVariables ( r * http . Request ) commonTemplateVariables {
return commonTemplateVariables {
Navigation : newNavigation ( ) ,
Search : newSearchForm ( ) ,
2017-05-27 19:08:47 +02:00
T : publicSettings . GetTfuncFromRequest ( r ) ,
Theme : publicSettings . GetThemeFromRequest ( r ) ,
2017-05-31 04:21:35 +02:00
Mascot : publicSettings . GetMascotFromRequest ( r ) ,
2017-05-25 21:54:58 +02:00
User : getUser ( r ) ,
2017-05-21 09:10:19 +02:00
URL : r . URL ,
Route : mux . CurrentRoute ( r ) ,
2017-05-29 17:07:18 +02:00
CsrfField : csrf . TemplateField ( r ) ,
2017-05-21 09:10:19 +02:00
}
}