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  }