diff --git a/config.toml b/config.toml
index b83ea11..772550a 100644
--- a/config.toml
+++ b/config.toml
@@ -16,5 +16,8 @@ copyright = ""
category = "categories"
tag = "tags"
+[outputs]
+ home = ["html", "rss", "json"]
+
[params]
logo = "/images/logo.png"
diff --git a/content/search.md b/content/search.md
new file mode 100644
index 0000000..75b4983
--- /dev/null
+++ b/content/search.md
@@ -0,0 +1,4 @@
+---
+title: "Search Results"
+layout: "search"
+---
diff --git a/themes/hugo-recettes/assets/js/search.js b/themes/hugo-recettes/assets/js/search.js
new file mode 100644
index 0000000..c0a1b82
--- /dev/null
+++ b/themes/hugo-recettes/assets/js/search.js
@@ -0,0 +1,71 @@
+var searchFunction = function(event) {
+ var searchQuery = $('#search-query').val();
+
+ if (searchQuery.length <= 3) {
+ $('#search-results').html("
Aucun résultat trouvé
");
+ return;
+ }
+
+ var lunrResults = lunrIdx.search(searchQuery);
+ if (lunrResults.length > 0) {
+ populateLunrResults(searchQuery, lunrResults);
+ }else{
+ $('#search-results').html("Aucun résultat trouvé
");
+ }
+}
+
+var templateDefinition = `
+
+`;
+var template = Handlebars.compile(templateDefinition);
+
+var populateLunrResults = function(searchQuery, results) {
+ var resultDiv = $('#search-results');
+ resultDiv.html('');
+ $.each(results,function(rIdx,result){
+ var resultPage = jsonData.filter(function(page) {
+ return page.permalink === result.ref;
+ })[0];
+ console.info(result);
+ console.info(resultPage);
+
+ var output = template({
+ key: rIdx,
+ title: resultPage.title,
+ content: resultPage.contents,
+ categories: resultPage.categories,
+ link: result.ref
+ });
+ resultDiv.append(output);
+
+ $("#summary-" + rIdx).mark(searchQuery.replace(/[+-]/g, ''));
+ });
+}
+
+var lunrIdx;
+var jsonData;
+$('#search-query').prop('disabled', true);
+$.getJSON( "../index.json", function( pages ) {
+ jsonData = pages;
+
+ lunrIdx = lunr(function() {
+ this.field("title", { boost: 10 });
+ this.field("categories", { boost: 5 });
+ this.field("contents");
+ this.ref("permalink");
+
+ jsonData.forEach(function (page) {
+ this.add(page)
+ }, this)
+ });
+
+ $('#search-query').prop('disabled', false);
+ searchFunction();
+});
+
+var formField = $('#search-query');
+formField.change(searchFunction);
+formField.keyup(searchFunction);
diff --git a/themes/hugo-recettes/layouts/_default/index.json b/themes/hugo-recettes/layouts/_default/index.json
new file mode 100644
index 0000000..9af8bf6
--- /dev/null
+++ b/themes/hugo-recettes/layouts/_default/index.json
@@ -0,0 +1,21 @@
+{{- $allRecettes := newScratch -}}
+{{- $allRecettes.Add "index" slice -}}
+{{- range .Site.RegularPages -}}
+ {{ $recette := (dict "title" .Title "permalink" .Permalink "categories" .CurrentSection.Title) }}
+
+ {{- $ingredients := newScratch -}}
+ {{- $ingredients.Add "ingredients" slice -}}
+ {{- range .Params.steps -}}
+ {{- range .ingredients -}}
+ {{- $ingredients.Add "ingredients" .name -}}
+ {{- end -}}
+ {{- end -}}
+
+
+ {{- $ingredientsArray := $ingredients.Get "ingredients" -}}
+ {{- $ingredientsContent := delimit $ingredientsArray ", " -}}
+ {{- $recette := merge $recette (dict "ingredients" $ingredientsArray) -}}
+ {{- $recette := merge $recette (dict "contents" $ingredientsContent) -}}
+ {{- $allRecettes.Add "index" $recette -}}
+{{- end -}}
+{{- $allRecettes.Get "index" | jsonify -}}
diff --git a/themes/hugo-recettes/layouts/_default/list.html b/themes/hugo-recettes/layouts/_default/list.html
index b4cc95e..aa54406 100644
--- a/themes/hugo-recettes/layouts/_default/list.html
+++ b/themes/hugo-recettes/layouts/_default/list.html
@@ -5,7 +5,7 @@
{{ range .Data.Pages }}
{{ end }}
diff --git a/themes/hugo-recettes/layouts/_default/search.html b/themes/hugo-recettes/layouts/_default/search.html
new file mode 100644
index 0000000..d593fd7
--- /dev/null
+++ b/themes/hugo-recettes/layouts/_default/search.html
@@ -0,0 +1,31 @@
+{{ partial "header.html" . }}
+
+{{ $searchJS := resources.Get "js/search.js" }}
+{{ $searchJSMin := $searchJS | minify | resources.Fingerprint "sha512" }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{{ partial "footer.html" . }}
diff --git a/themes/hugo-recettes/layouts/index.rss.xml b/themes/hugo-recettes/layouts/index.rss.xml
index 951f3d4..0d345fe 100644
--- a/themes/hugo-recettes/layouts/index.rss.xml
+++ b/themes/hugo-recettes/layouts/index.rss.xml
@@ -9,7 +9,7 @@
{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}
- {{ .Permalink }}
+ {{ .Permalink }}index.html
Les dernières recettes
Hugo - {{ .Hugo.Version }} - gohugo.io{{ with .Site.LanguageCode }}
{{.}}{{end}}{{ with .Site.Copyright }}
@@ -22,7 +22,7 @@
{{ range $pages }}
-
{{ .Title }}
- {{ .Permalink }}
+ {{ .Permalink }}index.html
{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}
{{ .Permalink }}
diff --git a/themes/hugo-recettes/layouts/partials/header.html b/themes/hugo-recettes/layouts/partials/header.html
index 1a0099e..7cccb37 100644
--- a/themes/hugo-recettes/layouts/partials/header.html
+++ b/themes/hugo-recettes/layouts/partials/header.html
@@ -9,6 +9,9 @@
{{ $cssBundle := slice $bootstrapCSS $customCSS | resources.Concat "css/bundle.css" }}
{{ $cssBundleMin := $cssBundle | resources.Minify | resources.Fingerprint "sha512" }}
+{{ $indexUrl := "index.html" | absURL }}
+{{ $searchUrl := "search" | absURL }}
+
@@ -23,16 +26,16 @@
-