Browse Source

Working on nested template

Andrea Fazzi 5 years ago
parent
commit
3299553952

+ 18 - 0
renderer/funcmap.go

@@ -21,6 +21,8 @@ var (
 		"dict":        dict,
 		"dict":        dict,
 		"yaml":        yaml,
 		"yaml":        yaml,
 		"create":      create,
 		"create":      create,
+		"update":      update,
+		"delete":      delete,
 		"show":        show,
 		"show":        show,
 		"all":         all,
 		"all":         all,
 		"isSlice":     isSlice,
 		"isSlice":     isSlice,
@@ -150,3 +152,19 @@ func show(model string, id uint) string {
 
 
 	return fmt.Sprintf("/%s/%d?%s", plural, id, q)
 	return fmt.Sprintf("/%s/%d?%s", plural, id, q)
 }
 }
+
+func update(model string, id uint) string {
+	action := "update"
+	plural := inflection.Plural(strings.ToLower(model))
+	q := query("tpl_layout", "base", "tpl_content", fmt.Sprintf("%s_add_update", plural), "update", "true")
+
+	return fmt.Sprintf("/%s/%d/%s?%s", plural, id, action, q)
+}
+
+func delete(model string, id uint) string {
+	action := "delete"
+	plural := inflection.Plural(strings.ToLower(model))
+	q := query("tpl_layout", "base", "tpl_content", fmt.Sprintf("%s_%s", plural, action))
+
+	return fmt.Sprintf("/%s/%d/%s?%s", plural, id, action, q)
+}

+ 8 - 0
templates/layout/delete_button.html.tpl

@@ -0,0 +1,8 @@
+{{define "delete_button"}}
+<button href="/teachers/{{.Data.ID}}/delete"
+	data-url="/teachers/{{.Data.ID}}/delete"
+	class="btn btn-danger karmen-ajax-delete">
+  <span class="fa fa-trash" aria-hidden="true"></span>
+  Elimina
+</button>
+{{end}}

+ 18 - 0
templates/layout/relation_list.html.tpl

@@ -0,0 +1,18 @@
+{{define "relation_list"}}
+<h2 class="karmen-relation-header">{{.options.title}}</h2>
+{{if .Data.Subjects}}
+<div class="list-group" id="materie_list_group">
+  {{range $subject := .Data.Subjects}}
+  <a href="{{$subject.ID | show "Subject"}}" class="list-group-item list-group-item-action">
+    <span class="fa fa-book"></span>
+    {{$subject.Name}}
+    {{end}}
+  </a>
+</div>
+{{else}}
+<p>Al docente non è associata alcuna attività
+  didattica. Clicca <a href="{{modelPath "Activity" "create" 0}}">qui</a> per
+  creare una nuova attività didattica da associare al docente.</p>
+{{end}}
+</div>
+{{end}}

+ 15 - 0
templates/layout/show_header.html.tpl

@@ -0,0 +1,15 @@
+{{define "show_header"}}
+<div class="karmen-info-header">
+  <div class="row">
+    <div class="col-md-8">
+      <h1>{{.title}}</h1>
+    </div>
+    <div class="col-md-4">
+      <div class="btn-group float-right" role="group">
+        {{template "update_button" dict "modelPath" .updatePath}}
+        {{template "delete_button" dict "modelPath" .deletePath}}
+      </div>
+    </div>
+  </div>
+</div>
+{{end}}

+ 6 - 0
templates/layout/update_button.html.tpl

@@ -0,0 +1,6 @@
+{{define "update_button"}}
+<a href="{{.modelPath}}" class="btn btn-primary">
+  <span class="fa fa-edit" aria-hidden="true"></span>
+  Modifica
+</a>
+{{end}}

+ 9 - 24
templates/teachers_show.html.tpl

@@ -3,37 +3,22 @@
 <div class="container">
 <div class="container">
 
 
   {{template "breadcrumb" toSlice "Docenti" (all "Teacher") (.Data|string) "current"}}
   {{template "breadcrumb" toSlice "Docenti" (all "Teacher") (.Data|string) "current"}}
-
-  <div class="karmen-info-header">
-    <div class="row">
-      <div class="col-md-8">
-	<h1>{{.Data.Name}} {{.Data.Surname}}</h1>
-      </div>
-      <div class="col-md-4">
-	<div class="btn-group float-right" role="group">
-	  <a href="{{.Data.ID|modelPath "Teacher" "update"}}" class="btn btn-primary">
-	    <span class="fa fa-edit" aria-hidden="true"></span>
-	    Modifica
-	  </a>
-	  <button href="/teachers/{{.Data.ID}}/delete"
-		  data-url="/teachers/{{.Data.ID}}/delete"
-		  class="btn btn-danger karmen-ajax-delete">
-	    <span class="fa fa-trash" aria-hidden="true"></span>
-	    Elimina
-	  </button>
-	</div>
-      </div>
-    </div>
-  </div>
+  {{template "show_header" dict "title" (.Data|string) "updatePath" (.Data.ID|update "Teacher") "deletePath" (.Data.ID|delete "Teacher")}}
 
 
   <div class="row">
   <div class="row">
     <div class="col-md-12">
     <div class="col-md-12">
-      
+
+      {{$options := '
+      title: "Materie"
+      model: "Subject"
+      noElements: "Nessuna materia associata"
+      }}
+      {{template "relation_list" dict "options" ($options|yaml) "data" .Data.Subjects}}
       <h2 class="karmen-relation-header">Materie</h2>
       <h2 class="karmen-relation-header">Materie</h2>
       {{if .Data.Subjects}}
       {{if .Data.Subjects}}
       <div class="list-group" id="materie_list_group">
       <div class="list-group" id="materie_list_group">
     	{{range $subject := .Data.Subjects}}
     	{{range $subject := .Data.Subjects}}
-    	<a href="{{$subject.ID | modelPath "Subject" "show"}}" class="list-group-item list-group-item-action">
+    	<a href="{{$subject.ID | show "Subject"}}" class="list-group-item list-group-item-action">
     	  <span class="fa fa-book"></span>
     	  <span class="fa fa-book"></span>
     	  {{$subject.Name}}
     	  {{$subject.Name}}
     	  {{end}}
     	  {{end}}