github.com/bitcubate/cryptojournal@v1.2.5-0.20171102134152-f578b3d788ab/src/lib/templates/fragmenta_resources/actions/index.go.tmpl (about) 1 package [[ .fragmenta_resource ]]actions 2 3 import ( 4 "net/http" 5 6 "github.com/fragmenta/auth/can" 7 "github.com/fragmenta/mux" 8 "github.com/fragmenta/server" 9 "github.com/fragmenta/view" 10 11 "github.com/bitcubate/cryptojournal/src/lib/session" 12 "github.com/bitcubate/cryptojournal/src/[[ .fragmenta_resources ]]" 13 ) 14 15 // HandleIndex displays a list of [[ .fragmenta_resources ]]. 16 func HandleIndex(w http.ResponseWriter, r *http.Request) error { 17 18 // Authorise list [[ .fragmenta_resource ]] 19 err := can.List([[ .fragmenta_resources ]].New(), session.CurrentUser(w, r)) 20 if err != nil { 21 return server.NotAuthorizedError(err) 22 } 23 24 // Get the params 25 params, err := mux.Params(r) 26 if err != nil { 27 return server.InternalError(err) 28 } 29 30 // Build a query 31 q := [[ .fragmenta_resources ]].Query() 32 33 // Order by required order, or default to id asc 34 switch params.Get("order") { 35 36 case "1": 37 q.Order("created desc") 38 39 case "2": 40 q.Order("updated desc") 41 42 default: 43 q.Order("id asc") 44 } 45 46 // Filter if requested 47 filter := params.Get("filter") 48 if len(filter) > 0 { 49 q.Where("name ILIKE ?", filter) 50 } 51 52 // Fetch the [[ .fragmenta_resources ]] 53 results, err := [[ .fragmenta_resources ]].FindAll(q) 54 if err != nil { 55 return server.InternalError(err) 56 } 57 58 // Render the template 59 view := view.NewRenderer(w, r) 60 view.AddKey("filter", filter) 61 view.AddKey("[[ .fragmenta_resources ]]", results) 62 return view.Render() 63 }