github.com/saadullahsaeed/fragmenta-cms@v1.5.4/src/pages/actions/home.go (about)

     1  package pageactions
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"github.com/fragmenta/server"
     7  	"github.com/fragmenta/server/config"
     8  	"github.com/fragmenta/server/log"
     9  	"github.com/fragmenta/view"
    10  
    11  	"github.com/fragmenta/fragmenta-cms/src/lib/session"
    12  	"github.com/fragmenta/fragmenta-cms/src/pages"
    13  	"github.com/fragmenta/fragmenta-cms/src/users"
    14  )
    15  
    16  // HandleShowHome serves our home page with a simple template.
    17  func HandleShowHome(w http.ResponseWriter, r *http.Request) error {
    18  
    19  	// Demonstrate tracing in log messages
    20  	log.Info(log.Values{"msg": "Home handler", "trace": log.Trace(r)})
    21  
    22  	// If we have no users (first run), redirect to setup
    23  	if users.Count() == 0 {
    24  		return server.Redirect(w, r, "/fragmenta/setup")
    25  	}
    26  
    27  	// Home fetches the first page with the url '/' and uses it for the home page of the site
    28  	page, err := pages.FindFirst("url=?", "/")
    29  	if err != nil {
    30  		return server.NotFoundError(nil)
    31  	}
    32  
    33  	currentUser := session.CurrentUser(w, r)
    34  
    35  	view := view.NewWithPath(r.URL.Path, w)
    36  	view.AddKey("title", "Fragmenta app")
    37  	view.AddKey("page", page)
    38  	view.AddKey("currentUser", currentUser)
    39  	view.AddKey("meta_title", config.Get("meta_title"))
    40  	view.AddKey("meta_desc", config.Get("meta_desc"))
    41  	view.AddKey("meta_keywords", config.Get("meta_keywords"))
    42  	view.Template("pages/views/templates/default.html.got")
    43  	return view.Render()
    44  }