diff --git a/static/csslibs/tipuesearch.css b/static/csslibs/tipuesearch.css
new file mode 100644
index 0000000..16a4efd
--- /dev/null
+++ b/static/csslibs/tipuesearch.css
@@ -0,0 +1,103 @@
+/*!
+ * Tipue Search 4.0
+ * Copyright (c) 2014 Tipue
+ * Tipue Search is released under the MIT License
+ * http://www.tipue.com/search
+ *
+ * This is a modified version of the Tipue Search plugin style sheet,
+ * edited for the pelican mg theme.
+ * If you are looking for the original Tipue Search plugin style sheet
+ * check the project home at http://www.tipue.com/search.
+ */
+#tipue_search_content {
+ max-width: 650px;
+ padding-top: 15px;
+ margin: 0; }
+
+#tipue_search_loading:before {
+ padding-top: 60px;
+ font-family: FontAwesome;
+ content: "\f013";
+ background: #fff no-repeat left;
+ -webkit-animation: fa-spin 2s infinite linear;
+ -moz-animation: fa-spin 2s infinite linear;
+ -o-animation: fa-spin 2s infinite linear;
+ animation: fa-spin 2s infinite linear; }
+
+#tipue_search_warning_head {
+ font: 300 15px/1.6;
+ color: #555; }
+
+#tipue_search_warning {
+ font: 300 13px/1.6;
+ color: #333;
+ margin: 7px 0; }
+
+#tipue_search_warning a {
+ color: #36c;
+ font-weight: 300;
+ text-decoration: none; }
+
+#tipue_search_warning a:hover {
+ color: #333; }
+
+.tipue_search_content_title {
+ font-size: 2em;
+ line-height: 42px;
+ font-weight: 400;
+ text-transform: none;
+ margin-top: 0.5em; }
+
+.tipue_search_content_title a {
+ color: #444;
+ text-decoration: none; }
+ .tipue_search_content_title a:hover {
+ color: #444;
+ text-decoration: underline; }
+
+.tipue_search_content_url {
+ display: none; }
+
+.tipue_search_content_text {
+ margin-top: 3px; }
+
+.h01 {
+ font-weight: bold; }
+
+#tipue_search_foot {
+ margin: 51px 0 21px 0; }
+
+#tipue_search_foot_boxes {
+ font-size: 0.75em;
+ padding: 0;
+ margin: 0; }
+
+#tipue_search_foot_boxes li {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: inline; }
+
+#tipue_search_foot_boxes li a {
+ padding: 9px 15px 10px 15px;
+ background-color: #f1f1f1;
+ border: 1px solid #dcdcdc;
+ border-radius: 1px;
+ color: #333;
+ margin-right: 7px;
+ text-decoration: none;
+ text-align: center; }
+
+#tipue_search_foot_boxes li.current {
+ padding: 9px 15px 10px 15px;
+ background: #fff;
+ border: 1px solid #dcdcdc;
+ border-radius: 1px;
+ color: #333;
+ margin-right: 7px;
+ text-align: center; }
+
+#tipue_search_foot_boxes li a:hover {
+ border: 1px solid #ccc;
+ background-color: #f3f3f3; }
+
diff --git a/static/jslibs/tipuesearch.js b/static/jslibs/tipuesearch.js
new file mode 100644
index 0000000..4ef1dee
--- /dev/null
+++ b/static/jslibs/tipuesearch.js
@@ -0,0 +1,444 @@
+
+/*
+Tipue Search 4.0
+Copyright (c) 2014 Tipue
+Tipue Search is released under the MIT License
+http://www.tipue.com/search
+*/
+
+
+(function($) {
+
+ $.fn.tipuesearch = function(options) {
+
+ var set = $.extend( {
+
+ 'show' : 7,
+ 'newWindow' : false,
+ 'showURL' : true,
+ 'minimumLength' : 3,
+ 'descriptiveWords' : 25,
+ 'highlightTerms' : true,
+ 'highlightEveryTerm' : false,
+ 'mode' : 'static',
+ 'liveDescription' : '*',
+ 'liveContent' : '*',
+ 'contentLocation' : 'tipuesearch/tipuesearch_content.json'
+
+ }, options);
+
+ return this.each(function() {
+
+ var tipuesearch_in = {
+ pages: []
+ };
+ $.ajaxSetup({
+ async: false
+ });
+
+ if (set.mode == 'live')
+ {
+ for (var i = 0; i < tipuesearch_pages.length; i++)
+ {
+ $.get(tipuesearch_pages[i], '',
+ function (html)
+ {
+ var cont = $(set.liveContent, html).text();
+ cont = cont.replace(/\s+/g, ' ');
+ var desc = $(set.liveDescription, html).text();
+ desc = desc.replace(/\s+/g, ' ');
+
+ var t_1 = html.toLowerCase().indexOf('
');
+ var t_2 = html.toLowerCase().indexOf('', t_1 + 7);
+ if (t_1 != -1 && t_2 != -1)
+ {
+ var tit = html.slice(t_1 + 7, t_2);
+ }
+ else
+ {
+ var tit = 'No title';
+ }
+
+ tipuesearch_in.pages.push({
+ "title": tit,
+ "text": desc,
+ "tags": cont,
+ "loc": tipuesearch_pages[i]
+ });
+ }
+ );
+ }
+ }
+
+ if (set.mode == 'json')
+ {
+ $.getJSON(set.contentLocation,
+ function(json)
+ {
+ tipuesearch_in = $.extend({}, json);
+ }
+ );
+ }
+
+ if (set.mode == 'static')
+ {
+ tipuesearch_in = $.extend({}, tipuesearch);
+ }
+
+ var tipue_search_w = '';
+ if (set.newWindow)
+ {
+ tipue_search_w = ' target="_blank"';
+ }
+
+ function getURLP(name)
+ {
+ return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20')) || null;
+ }
+ if (getURLP('q'))
+ {
+ $('#tipue_search_input').val(getURLP('q'));
+ getTipueSearch(0, true);
+ }
+
+ $(this).keyup(function(event)
+ {
+ if(event.keyCode == '13')
+ {
+ getTipueSearch(0, true);
+ }
+ });
+
+ function getTipueSearch(start, replace)
+ {
+ $('#tipue_search_content').hide();
+ var out = '';
+ var results = '';
+ var show_replace = false;
+ var show_stop = false;
+ var standard = true;
+ var c = 0;
+ found = new Array();
+
+ var d = $('#tipue_search_input').val().toLowerCase();
+ d = $.trim(d);
+
+ if ((d.match("^\"") && d.match("\"$")) || (d.match("^'") && d.match("'$")))
+ {
+ standard = false;
+ }
+
+ if (standard)
+ {
+ var d_w = d.split(' ');
+ d = '';
+ for (var i = 0; i < d_w.length; i++)
+ {
+ var a_w = true;
+ for (var f = 0; f < tipuesearch_stop_words.length; f++)
+ {
+ if (d_w[i] == tipuesearch_stop_words[f])
+ {
+ a_w = false;
+ show_stop = true;
+ }
+ }
+ if (a_w)
+ {
+ d = d + ' ' + d_w[i];
+ }
+ }
+ d = $.trim(d);
+ d_w = d.split(' ');
+ }
+ else
+ {
+ d = d.substring(1, d.length - 1);
+ }
+
+ if (d.length >= set.minimumLength)
+ {
+ if (standard)
+ {
+ if (replace)
+ {
+ var d_r = d;
+ for (var i = 0; i < d_w.length; i++)
+ {
+ for (var f = 0; f < tipuesearch_replace.words.length; f++)
+ {
+ if (d_w[i] == tipuesearch_replace.words[f].word)
+ {
+ d = d.replace(d_w[i], tipuesearch_replace.words[f].replace_with);
+ show_replace = true;
+ }
+ }
+ }
+ d_w = d.split(' ');
+ }
+
+ var d_t = d;
+ for (var i = 0; i < d_w.length; i++)
+ {
+ for (var f = 0; f < tipuesearch_stem.words.length; f++)
+ {
+ if (d_w[i] == tipuesearch_stem.words[f].word)
+ {
+ d_t = d_t + ' ' + tipuesearch_stem.words[f].stem;
+ }
+ }
+ }
+ d_w = d_t.split(' ');
+
+ for (var i = 0; i < tipuesearch_in.pages.length; i++)
+ {
+ var score = 1000000000;
+ var s_t = tipuesearch_in.pages[i].text;
+ for (var f = 0; f < d_w.length; f++)
+ {
+ var pat = new RegExp(d_w[f], 'i');
+ if (tipuesearch_in.pages[i].title.search(pat) != -1)
+ {
+ score -= (200000 - i);
+ }
+ if (tipuesearch_in.pages[i].text.search(pat) != -1)
+ {
+ score -= (150000 - i);
+ }
+
+ if (set.highlightTerms)
+ {
+ if (set.highlightEveryTerm)
+ {
+ var patr = new RegExp('(' + d_w[f] + ')', 'gi');
+ }
+ else
+ {
+ var patr = new RegExp('(' + d_w[f] + ')', 'i');
+ }
+ s_t = s_t.replace(patr, "$1");
+ }
+ if (tipuesearch_in.pages[i].tags.search(pat) != -1)
+ {
+ score -= (100000 - i);
+ }
+
+ if (d_w[f].match("^-"))
+ {
+ pat = new RegExp(d_w[f].substring(1), 'i');
+ if (tipuesearch_in.pages[i].title.search(pat) != -1 || tipuesearch_in.pages[i].text.search(pat) != -1 || tipuesearch_in.pages[i].tags.search(pat) != -1)
+ {
+ score = 1000000000;
+ }
+ }
+ }
+
+ if (score < 1000000000)
+ {
+ found[c++] = score + '^' + tipuesearch_in.pages[i].title + '^' + s_t + '^' + tipuesearch_in.pages[i].loc;
+ }
+ }
+ }
+ else
+ {
+ for (var i = 0; i < tipuesearch_in.pages.length; i++)
+ {
+ var score = 1000000000;
+ var s_t = tipuesearch_in.pages[i].text;
+ var pat = new RegExp(d, 'i');
+ if (tipuesearch_in.pages[i].title.search(pat) != -1)
+ {
+ score -= (200000 - i);
+ }
+ if (tipuesearch_in.pages[i].text.search(pat) != -1)
+ {
+ score -= (150000 - i);
+ }
+
+ if (set.highlightTerms)
+ {
+ if (set.highlightEveryTerm)
+ {
+ var patr = new RegExp('(' + d + ')', 'gi');
+ }
+ else
+ {
+ var patr = new RegExp('(' + d + ')', 'i');
+ }
+ s_t = s_t.replace(patr, "$1");
+ }
+ if (tipuesearch_in.pages[i].tags.search(pat) != -1)
+ {
+ score -= (100000 - i);
+ }
+
+ if (score < 1000000000)
+ {
+ found[c++] = score + '^' + tipuesearch_in.pages[i].title + '^' + s_t + '^' + tipuesearch_in.pages[i].loc;
+ }
+ }
+ }
+
+ if (c != 0)
+ {
+ if (show_replace == 1)
+ {
+ out += 'Showing results for ' + d + '
';
+ out += '';
+ }
+ if (c == 1)
+ {
+ out += '1 result
';
+ }
+ else
+ {
+ c_c = c.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
+ out += '' + c_c + ' results
';
+ }
+
+ found.sort();
+ var l_o = 0;
+ for (var i = 0; i < found.length; i++)
+ {
+ var fo = found[i].split('^');
+ if (l_o >= start && l_o < set.show + start)
+ {
+ out += '';
+
+ if (set.showURL)
+ {
+ out += '';
+ }
+
+ var t = fo[2];
+ var t_d = '';
+ var t_w = t.split(' ');
+ if (t_w.length < set.descriptiveWords)
+ {
+ t_d = t;
+ }
+ else
+ {
+ for (var f = 0; f < set.descriptiveWords; f++)
+ {
+ t_d += t_w[f] + ' ';
+ }
+ }
+ t_d = $.trim(t_d);
+ if (t_d.charAt(t_d.length - 1) != '.')
+ {
+ t_d += ' ...';
+ }
+ out += '' + t_d + '
';
+ }
+ l_o++;
+ }
+
+ if (c > set.show)
+ {
+ var pages = Math.ceil(c / set.show);
+ var page = (start / set.show);
+ out += '';
+ }
+ }
+ else
+ {
+ out += 'Nothing found
';
+ }
+ }
+ else
+ {
+ if (show_stop)
+ {
+ out += 'Nothing found
Common words are largely ignored
';
+ }
+ else
+ {
+ out += 'Search too short
';
+ if (set.minimumLength == 1)
+ {
+ out += 'Should be one character or more
';
+ }
+ else
+ {
+ out += 'Should be ' + set.minimumLength + ' characters or more
';
+ }
+ }
+ }
+
+ $('#tipue_search_content').html(out);
+ $('#tipue_search_content').slideDown(200);
+
+ $('#tipue_search_replaced').click(function()
+ {
+ getTipueSearch(0, false);
+ });
+
+ $('.tipue_search_foot_box').click(function()
+ {
+ var id_v = $(this).attr('id');
+ var id_a = id_v.split('_');
+
+ getTipueSearch(parseInt(id_a[0]), id_a[1]);
+ });
+ }
+
+ });
+ };
+
+})(jQuery);
+
+
+
+
diff --git a/static/jslibs/tipuesearch_set.js b/static/jslibs/tipuesearch_set.js
new file mode 100644
index 0000000..8c8f138
--- /dev/null
+++ b/static/jslibs/tipuesearch_set.js
@@ -0,0 +1,22 @@
+
+/*
+Tipue Search 4.0
+Copyright (c) 2014 Tipue
+Tipue Search is released under the MIT License
+http://www.tipue.com/search
+*/
+
+
+var tipuesearch_stop_words = ["and", "be", "by", "do", "for", "he", "how", "if", "is", "it", "my", "not", "of", "or", "the", "to", "up", "what", "when"];
+
+var tipuesearch_replace = {"words": [
+ {"word": "tipua", "replace_with": "tipue"},
+ {"word": "javscript", "replace_with": "javascript"}
+]};
+
+var tipuesearch_stem = {"words": [
+ {"word": "e-mail", "stem": "email"},
+ {"word": "javascript", "stem": "js"},
+ {"word": "nightmare.js", "stem": "nightmarejs"}
+]};
+
diff --git a/templates/base.html b/templates/base.html
index cbcb4ad..bc901c7 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -54,6 +54,11 @@
{% endif %}
{% endblock %}
+ {% if not DISABLE_SEARCH %}
+
+
+ {% endif %}
+
@@ -106,35 +111,14 @@
{% if EXTRA_ATOM_FEED %} {{ EXTRA_ATOM_FEED['name'] }}{% endif %}
- {% if SOCIAL %}
+ {% if not DISABLE_SEARCH %}
-
Ubiquité
- {% for link_destination, link in SOCIAL %}
-
-
-
- {% endfor %}
+
{% endif %}
- {% if AVATARS %}
-
-
Avatars
- {% for img_uri in AVATARS %}
-
- {% endfor %}
-
- {% endif %}
-
- {% if READINGS %}
-
-
-
En ce moment je lis
-
-
-
- {% endif %}
-
{% if CATEGORY_SAVE_AS %}
@@ -160,8 +144,33 @@
- {% if not DISABLE_SEARCH %}
-
+ {% if SOCIAL %}
+
+
Social
+ {% for link_destination, link in SOCIAL %}
+
+
+
+ {% endfor %}
+
+ {% endif %}
+
+ {% if AVATARS %}
+
+
Avatars
+ {% for img_uri in AVATARS %}
+
+ {% endfor %}
+
+ {% endif %}
+
+ {% if READINGS %}
+
+
+
Previous Entries
+
+
+
{% endif %}
{% if LINKS %}
@@ -266,6 +275,12 @@
+{% if not DISABLE_SEARCH %}
+
+
+
+{% endif %}
+
{% include 'disqus_count.html' %}
diff --git a/templates/search.html b/templates/search.html
new file mode 100644
index 0000000..9c485c4
--- /dev/null
+++ b/templates/search.html
@@ -0,0 +1,17 @@
+{% extends "base.html" %}
+{% block title %}Search results{% endblock %}
+{% block description %}{% endblock %}
+
+{% include 'common_seo.html' %}
+
+{% block content %}
+
+{% endblock %}
+
+
+