diff --git a/daux.phar b/daux.phar index 7af873c..6df9c6f 100755 Binary files a/daux.phar and b/daux.phar differ diff --git a/libs/Console/Generate.php b/libs/Console/Generate.php old mode 100644 new mode 100755 index 4e058c0..9ec08e9 --- a/libs/Console/Generate.php +++ b/libs/Console/Generate.php @@ -20,7 +20,8 @@ class Generate extends SymfonyCommand ->addOption('processor', 'p', InputOption::VALUE_REQUIRED, 'Manipulations on the tree') ->addOption('source', 's', InputOption::VALUE_REQUIRED, 'Where to take the documentation from') ->addOption('delete', null, InputOption::VALUE_NONE, 'Delete pages not linked to a documentation page (confluence)') - ->addOption('destination', 'd', InputOption::VALUE_REQUIRED, $description, 'static'); + ->addOption('destination', 'd', InputOption::VALUE_REQUIRED, $description, 'static') + ->addOption('text_search', '-t', InputOption::VALUE_NONE, 'Generate full text search'); } protected function execute(InputInterface $input, OutputInterface $output) diff --git a/libs/Format/HTML/Generator.php b/libs/Format/HTML/Generator.php old mode 100644 new mode 100755 index d67860f..fd675b5 --- a/libs/Format/HTML/Generator.php +++ b/libs/Format/HTML/Generator.php @@ -59,7 +59,59 @@ class Generator implements \Todaymade\Daux\Format\Base\Generator, LiveGenerator ); $output->writeLn("Generating ..."); - $this->generateRecursive($this->daux->tree, $destination, $params, $output, $width); + + $text_search = ($input->getOption('text_search')); + $params['text_search'] = $text_search; + if ($text_search) { + $index_pages = []; + } + $this->generateRecursive($this->daux->tree, $destination, $params, $output, $width, $index_pages); + + if ($text_search) { + $tipuesearch_directory = $this->daux->local_base . DIRECTORY_SEPARATOR . 'tipuesearch' . DIRECTORY_SEPARATOR; + file_put_contents($tipuesearch_directory . 'tipuesearch_content.json', json_encode(['pages' => $index_pages])); + GeneratorHelper::copyRecursive ($tipuesearch_directory, $destination . DIRECTORY_SEPARATOR . 'tipuesearch'); + } + + } + + /** + * Remove HTML tags, including invisible text such as style and + * script code, and embedded objects. Add line breaks around + * block-level tags to prevent word joining after tag removal. + * Also collapse whitespace to single space and trim result. + * modified from: http://nadeausoftware.com/articles/2007/09/php_tip_how_strip_html_tags_web_page + */ + private function strip_html_tags($text) + { + $text = preg_replace( + array( + // Remove invisible content + '@]*?>.*?@siu', + '@]*?>.*?@siu', + '@]*?.*?@siu', + '@]*?.*?@siu', + '@]*?.*?@siu', + '@]*?.*?@siu', + '@]*?.*?@siu', + '@]*?.*?@siu', + '@]*?.*?@siu', + // Add line breaks before and after blocks + '@generateRecursive($node, $new_output_dir, $params, $output, $width, '../' . $base_url); + $this->generateRecursive($node, $new_output_dir, $params, $output, $width, $index_pages, '../' . $base_url); // Rebase configuration again as $params is a shared object DauxHelper::rebaseConfiguration($params, $base_url); @@ -94,7 +146,7 @@ class Generator implements \Todaymade\Daux\Format\Base\Generator, LiveGenerator "- " . $node->getUrl(), $output, $width, - function() use ($node, $output_dir, $key, $params) { + function() use ($node, $output_dir, $key, $params, &$index_pages) { if ($node instanceof Raw) { copy($node->getPath(), $output_dir . DIRECTORY_SEPARATOR . $key); return; @@ -102,6 +154,14 @@ class Generator implements \Todaymade\Daux\Format\Base\Generator, LiveGenerator $generated = $this->generateOne($node, $params); file_put_contents($output_dir . DIRECTORY_SEPARATOR . $key, $generated->getContent()); + if (isset($index_pages)) { + array_push($index_pages, [ + 'title' => $node->getTitle(), + 'text' => utf8_encode($this->strip_html_tags($generated->getContent())), + 'tags' => "", + 'url' => $node->getUrl() + ]); + } } ); } diff --git a/libs/GeneratorHelper.php b/libs/GeneratorHelper.php old mode 100644 new mode 100755 index 9e81e95..a5b99eb --- a/libs/GeneratorHelper.php +++ b/libs/GeneratorHelper.php @@ -50,7 +50,7 @@ class GeneratorHelper * @param string $source * @param string $destination */ - protected static function copyRecursive($source, $destination) + public static function copyRecursive($source, $destination) { if (!is_dir($destination)) { mkdir($destination); diff --git a/libs/Server/Server.php b/libs/Server/Server.php old mode 100644 new mode 100755 index 3440178..a08fe43 --- a/libs/Server/Server.php +++ b/libs/Server/Server.php @@ -144,7 +144,9 @@ class Server ); } - return $this->daux->getGenerator()->generateOne($file, $this->params); + $params = $this->params; + $params['text_search'] = false; + return $this->daux->getGenerator()->generateOne($file, $params); } public function getRequest() diff --git a/templates/home.php b/templates/home.php old mode 100644 new mode 100755 index b9dc80d..6bd4334 --- a/templates/home.php +++ b/templates/home.php @@ -45,7 +45,10 @@
- + +
diff --git a/templates/layout/00_layout.php b/templates/layout/00_layout.php old mode 100644 new mode 100755 index 2f5a4b6..c1a1f1d --- a/templates/layout/00_layout.php +++ b/templates/layout/00_layout.php @@ -23,6 +23,12 @@ echo ""; } ?> + + + + + + @@ -53,5 +59,23 @@ } ?> + + + + + + + + + diff --git a/templates/layout/05_page.php b/templates/layout/05_page.php old mode 100644 new mode 100755 index f7ce18f..ce4c415 --- a/templates/layout/05_page.php +++ b/templates/layout/05_page.php @@ -60,7 +60,10 @@
- section('content'); ?> + +
diff --git a/templates/partials/navbar_content.php b/templates/partials/navbar_content.php old mode 100644 new mode 100755 index 7ff8f7e..290fe52 --- a/templates/partials/navbar_content.php +++ b/templates/partials/navbar_content.php @@ -1 +1,9 @@ + + +
+ +
+

+ diff --git a/tipuesearch/.gitignore b/tipuesearch/.gitignore new file mode 100644 index 0000000..10c864c --- /dev/null +++ b/tipuesearch/.gitignore @@ -0,0 +1 @@ +/tipuesearch_content.json diff --git a/tipuesearch/img/search.png b/tipuesearch/img/search.png new file mode 100755 index 0000000..8c6943d Binary files /dev/null and b/tipuesearch/img/search.png differ diff --git a/tipuesearch/tipuesearch.css b/tipuesearch/tipuesearch.css new file mode 100755 index 0000000..578d8cf --- /dev/null +++ b/tipuesearch/tipuesearch.css @@ -0,0 +1,202 @@ + +/* +Tipue Search 5.0 +Copyright (c) 2015 Tipue +Tipue Search is released under the MIT License +http://www.tipue.com/search +*/ + + +/* bootstrap overrides the search field so let's undo that */ +input[type="search"] { + -webkit-appearance: searchfield; +} + +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: searchfield-cancel-button; +} + +#tipue_search_input +{ + width: 170px; + font-size: medium; +} + +#tipue_search_content +{ + max-width: 650px; + padding-top: 15px; + margin: 0; +} +#tipue_search_warning +{ + font: 300 15px/1.6 'Open Sans', sans-serif; + color: #555; + margin: 7px 0; +} +#tipue_search_warning a +{ + color: #396; + text-decoration: none; +} +#tipue_search_warning a:hover +{ + color: #555; +} +#tipue_search_results_count +{ + font: 300 15px/1.7 'Open Sans', sans-serif; + color: #555; +} +.tipue_search_content_title +{ + font: 300 21px/1.7 'Open Sans', sans-serif; + margin-top: 23px; +} +.tipue_search_content_title a +{ + color: #333; + text-decoration: none; +} +.tipue_search_content_title a:hover +{ + color: #555; +} +.tipue_search_content_url +{ + font: 300 14px/1.9 'Open Sans', sans-serif; + word-wrap: break-word; + hyphens: auto; +} +.tipue_search_content_url a +{ + color: #396; + text-decoration: none; +} +.tipue_search_content_url a:hover +{ + color: #555; +} +.tipue_search_content_text +{ + font: 300 15px/1.6 'Open Sans', sans-serif; + color: #555; + word-wrap: break-word; + hyphens: auto; + margin-top: 3px; +} +.tipue_search_content_debug +{ + font: 300 13px/1.6 'Open Sans', sans-serif; + color: #555; + margin: 5px 0; +} +.h01 +{ + color: #333; + font-weight: 400; +} + +#tipue_search_foot +{ + margin: 51px 0 21px 0; +} +#tipue_search_foot_boxes +{ + padding: 0; + margin: 0; + font: 12px 'Open Sans', sans-serif; +} +#tipue_search_foot_boxes li +{ + list-style: none; + margin: 0; + padding: 0; + display: inline; +} +#tipue_search_foot_boxes li a +{ + padding: 10px 17px 11px 17px; + background-color: #fff; + border: 1px solid #e2e2e2; + border-radius: 1px; + color: #333; + margin-right: 7px; + text-decoration: none; + text-align: center; +} +#tipue_search_foot_boxes li.current +{ + padding: 10px 17px 11px 17px; + background: #f6f6f6; + border: 1px solid #e2e2e2; + border-radius: 1px; + color: #333; + margin-right: 7px; + text-align: center; +} +#tipue_search_foot_boxes li a:hover +{ + background: #f6f6f6; +} + + +/* spinner */ + + +.tipue_search_spinner +{ + padding: 31px 0; + width: 50px; + height: 28px; +} +.tipue_search_spinner > div +{ + background-color: #777; + height: 100%; + width: 3px; + display: inline-block; + margin-right: 2px; + -webkit-animation: stretchdelay 1.2s infinite ease-in-out; + animation: stretchdelay 1.2s infinite ease-in-out; +} +.tipue_search_spinner .tipue_search_rect2 +{ + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; +} +.tipue_search_spinner .tipue_search_rect3 +{ + -webkit-animation-delay: -1.0s; + animation-delay: -1.0s; +} +@-webkit-keyframes stretchdelay +{ + 0%, 40%, 100% + { + -webkit-transform: scaleY(0.4) + } + 20% + { + -webkit-transform: scaleY(1.0) + } +} +@keyframes stretchdelay +{ + 0%, 40%, 100% + { + transform: scaleY(0.4); + -webkit-transform: scaleY(0.4); + } + 20% + { + transform: scaleY(1.0); + -webkit-transform: scaleY(1.0); + } +} + + + + + + diff --git a/tipuesearch/tipuesearch.js b/tipuesearch/tipuesearch.js new file mode 100644 index 0000000..cc0e391 --- /dev/null +++ b/tipuesearch/tipuesearch.js @@ -0,0 +1,565 @@ + +/* +Tipue Search 5.0 +Copyright (c) 2015 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, + 'showTitleCount' : true, + 'minimumLength' : 3, + 'descriptiveWords' : 25, + 'highlightTerms' : true, + 'highlightEveryTerm' : false, + 'mode' : 'static', + 'liveDescription' : '*', + 'liveContent' : '*', + 'contentLocation' : 'tipuesearch/tipuesearch_content.json', + 'debug' : false + + }, options), + getUrlParameters = function () { + var URLParameters = {}, + parameters = window.location.href.split('?')[1], + parameter; + + if (parameters) { + parameters = parameters.split('&'); + for(var i = 0; i < parameters.length; i++){ + parameter = parameters[i].split('='); + URLParameters[decodeURIComponent(parameter[0])] = decodeURIComponent(parameter[1]); + } + } + return URLParameters; + }, + setUrlParameters = function (URLParameters) { + var oldURL = window.location.href, + newURL = oldURL.split('?')[0], + params = []; + + for (var key in URLParameters) { + if (URLParameters.hasOwnProperty (key)) + params.push (encodeURIComponent(key) + '=' + encodeURIComponent(URLParameters[key])); + } + if (params.length) { + params.sort(); + newURL += '?' + params.join('&'); + } + window.location.href = newURL; + }; + + return this.each(function() { + + var tipuesearch_in = { + pages: [] + }; + $.ajaxSetup({ + async: false + }); + var tipuesearch_t_c = 0; + + if (set.mode == 'live') + { + for (var i = 0; i < tipuesearch_pages.length; i++) + { + $.get(tipuesearch_pages[i]) + .done(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 = tipuesearch_string_1; + } + + tipuesearch_in.pages.push( + { + "title": tit, + "text": desc, + "tags": cont, + "url": tipuesearch_pages[i] + }); + }); + } + } + + if (set.mode == 'json') + { + $.getJSON(set.base_url + set.contentLocation) + .done(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"'; + } + + displayResults(); + + if ('onsearch' in document.documentElement) { + // Webkit browsers support a search event that fires everytime a search field + // is cleared or you hit enter. + $('#tipue_search_input')[0].addEventListener ("search", function (args) { + setUrlParameters({'search': $('#tipue_search_input').val(), 'start': 0}); + }); + } else { + // Other browsers + $('#tipue_search_input')[0].addEventListener ("input", function (args) { + var value = $('#tipue_search_input').val(); + + if (value === "") + setUrlParameters({'search': value, 'start': 0}); + }); + + $(this).keyup(function(event) + { + if(event.keyCode == '13') + setUrlParameters({'search': $('#tipue_search_input').val(), 'start': 0}); + }); + } + + function displayResults() { + var URLParams = $.extend({'search': "", 'start': '0'}, getUrlParameters()); + + $('#tipue_search_input').val(URLParams.search); + getTipueSearch (parseInt (URLParams.start, 10), 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 = []; + + var d = $('#tipue_search_input').val().toLowerCase(); + d = $.trim(d); + if (!d) { + $('.doc_content').show(); + return; + } + + $('#tipue_search_content').html('
'); + $('#tipue_search_content').show(); + 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 = 0; + var s_t = tipuesearch_in.pages[i].text; + for (var f = 0; f < d_w.length; f++) + { + var pat = new RegExp(d_w[f], 'gi'); + if (tipuesearch_in.pages[i].title.search(pat) != -1) + { + var m_c = tipuesearch_in.pages[i].title.match(pat).length; + score += (20 * m_c); + } + if (tipuesearch_in.pages[i].text.search(pat) != -1) + { + var m_c = tipuesearch_in.pages[i].text.match(pat).length; + score += (20 * m_c); + } + + 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) + { + var m_c = tipuesearch_in.pages[i].tags.match(pat).length; + score += (10 * m_c); + } + + if (tipuesearch_in.pages[i].url.search(pat) != -1) + { + score += 20; + } + + if (score != 0) + { + for (var e = 0; e < tipuesearch_weight.weight.length; e++) + { + if (tipuesearch_in.pages[i].url == tipuesearch_weight.weight[e].url) + { + score += tipuesearch_weight.weight[e].score; + } + } + } + + 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 = 0; + } + } + } + + if (score != 0) + { + found.push( + { + "score": score, + "title": tipuesearch_in.pages[i].title, + "desc": s_t, + "url": tipuesearch_in.pages[i].url + }); + c++; + } + } + } + else + { + for (var i = 0; i < tipuesearch_in.pages.length; i++) + { + var score = 0; + var s_t = tipuesearch_in.pages[i].text; + var pat = new RegExp(d, 'gi'); + if (tipuesearch_in.pages[i].title.search(pat) != -1) + { + var m_c = tipuesearch_in.pages[i].title.match(pat).length; + score += (20 * m_c); + } + if (tipuesearch_in.pages[i].text.search(pat) != -1) + { + var m_c = tipuesearch_in.pages[i].text.match(pat).length; + score += (20 * m_c); + } + + 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) + { + var m_c = tipuesearch_in.pages[i].tags.match(pat).length; + score += (10 * m_c); + } + + if (tipuesearch_in.pages[i].url.search(pat) != -1) + { + score += 20; + } + + if (score != 0) + { + for (var e = 0; e < tipuesearch_weight.weight.length; e++) + { + if (tipuesearch_in.pages[i].url == tipuesearch_weight.weight[e].url) + { + score += tipuesearch_weight.weight[e].score; + } + } + } + + if (score != 0) + { + found.push( + { + "score": score, + "title": tipuesearch_in.pages[i].title, + "desc": s_t, + "url": tipuesearch_in.pages[i].url + }); + c++; + } + } + } + + if (c != 0) + { + if (set.showTitleCount && tipuesearch_t_c == 0) + { + var title = document.title; + document.title = '(' + c + ') ' + title; + tipuesearch_t_c++; + } + + if (show_replace == 1) + { + out += '
' + tipuesearch_string_2 + ' ' + d + '. ' + tipuesearch_string_3 + ' ' + d_r + '
'; + } + if (c == 1) + { + out += '
' + tipuesearch_string_4 + '
'; + } + else + { + c_c = c.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); + out += '
' + c_c + ' ' + tipuesearch_string_5 + '
'; + } + + found.sort(function(a, b) { return b.score - a.score } ); + + var l_o = 0; + for (var i = 0; i < found.length; i++) + { + if (l_o >= start && l_o < set.show + start) + { + out += ''; + + if (set.debug) + { + out += '
Score: ' + found[i].score + '
'; + } + + if (set.showURL) + { + var s_u = found[i].url.toLowerCase(); + if(s_u.indexOf('http://') == 0) + { + s_u = s_u.slice(7); + } + out += ''; + } + + if (found[i].desc) + { + var t = found[i].desc; + 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 += '
    '; + + if (start > 0) + { + out += '
  • ' + tipuesearch_string_6 + '
  • '; + } + + if (page <= 2) + { + var p_b = pages; + if (pages > 3) + { + p_b = 3; + } + for (var f = 0; f < p_b; f++) + { + if (f == page) + { + out += '
  • ' + (f + 1) + '
  • '; + } + else + { + out += '
  • ' + (f + 1) + '
  • '; + } + } + } + else + { + var p_b = page + 2; + if (p_b > pages) + { + p_b = pages; + } + for (var f = page - 1; f < p_b; f++) + { + if (f == page) + { + out += '
  • ' + (f + 1) + '
  • '; + } + else + { + out += '
  • ' + (f + 1) + '
  • '; + } + } + } + + if (page + 1 != pages) + { + out += '
  • ' + tipuesearch_string_7 + '
  • '; + } + + out += '
'; + } + } + else + { + out += '
' + tipuesearch_string_8 + '
'; + } + } + else + { + if (show_stop) + { + out += '
' + tipuesearch_string_8 + '. ' + tipuesearch_string_9 + '
'; + } + else + { + out += '
' + tipuesearch_string_10 + '
'; + if (set.minimumLength == 1) + { + out += '
' + tipuesearch_string_11 + '
'; + } + else + { + out += '
' + tipuesearch_string_12 + ' ' + set.minimumLength + ' ' + tipuesearch_string_13 + '
'; + } + } + } + + $('.doc_content').hide() + $('#tipue_search_content').hide(); + $('#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('_'); + + setUrlParameters({'search': $('#tipue_search_input').val(), 'start': id_a[0]}); + }); + } + + }); + }; + +})(jQuery); diff --git a/tipuesearch/tipuesearch.min.js b/tipuesearch/tipuesearch.min.js new file mode 100644 index 0000000..2a807f8 --- /dev/null +++ b/tipuesearch/tipuesearch.min.js @@ -0,0 +1 @@ +!function(e){e.fn.tipuesearch=function(t){var i=e.extend({show:7,newWindow:!1,showURL:!0,showTitleCount:!0,minimumLength:3,descriptiveWords:25,highlightTerms:!0,highlightEveryTerm:!1,mode:"static",liveDescription:"*",liveContent:"*",contentLocation:"tipuesearch/tipuesearch_content.json",debug:!1},t),r=function(){var e,t={},i=window.location.href.split("?")[1];if(i){i=i.split("&");for(var r=0;r
'),e("#tipue_search_content").show(),(g.match('^"')&&g.match('"$')||g.match("^'")&&g.match("'$"))&&(l=!1),l){var d=g.split(" ");g="";for(var v=0;v=i.minimumLength){if(l){if(r){for(var m=g,v=0;v$1')}if(-1!=n.pages[v].tags.search(C)){var E=n.pages[v].tags.match(C).length;b+=10*E}if(-1!=n.pages[v].url.search(C)&&(b+=20),0!=b)for(var y=0;y$1')}if(-1!=n.pages[v].tags.search(C)){var E=n.pages[v].tags.match(C).length;b+=10*E}if(-1!=n.pages[v].url.search(C)&&(b+=20),0!=b)for(var y=0;y'+tipuesearch_string_2+" "+g+". "+tipuesearch_string_3+' '+m+""),1==_?h+='
'+tipuesearch_string_4+"
":(c_c=_.toString().replace(/\B(?=(\d{3})+(?!\d))/g,","),h+='
'+c_c+" "+tipuesearch_string_5+"
"),found.sort(function(e,t){return t.score-e.score});for(var U=0,v=0;v=t&&U"+found[v].title+"",i.debug&&(h+='
Score: '+found[v].score+"
"),i.showURL){var j=found[v].url.toLowerCase();0==j.indexOf("http://")&&(j=j.slice(7)),h+='"}if(found[v].desc){var k=found[v].desc,I="",O=k.split(" ");if(O.length"}}U++}if(_>i.show){var W=Math.ceil(_/i.show),S=t/i.show;if(h+='
"}}else h+='
'+tipuesearch_string_8+"
"}else u?h+='
'+tipuesearch_string_8+". "+tipuesearch_string_9+"
":(h+='
'+tipuesearch_string_10+"
",h+=1==i.minimumLength?'
'+tipuesearch_string_11+"
":'
'+tipuesearch_string_12+" "+i.minimumLength+" "+tipuesearch_string_13+"
");e(".doc_content").hide(),e("#tipue_search_content").hide(),e("#tipue_search_content").html(h),e("#tipue_search_content").slideDown(200),e("#tipue_search_replaced").click(function(){a(0,!1)}),e(".tipue_search_foot_box").click(function(){var t=e(this).attr("id"),i=t.split("_");s({search:e("#tipue_search_input").val(),start:i[0]})})}var n={pages:[]};e.ajaxSetup({async:!1});var c=0;if("live"==i.mode)for(var h=0;h"),c=t.toLowerCase().indexOf("",a+7);if(-1!=a&&-1!=c)var o=t.slice(a+7,c);else var o=tipuesearch_string_1;n.pages.push({title:o,text:s,tags:r,url:tipuesearch_pages[h]})});"json"==i.mode&&e.getJSON(i.base_url+i.contentLocation).done(function(t){n=e.extend({},t)}),"static"==i.mode&&(n=e.extend({},tipuesearch));var o="";i.newWindow&&(o=' target="_blank"'),t(),"onsearch"in document.documentElement?e("#tipue_search_input")[0].addEventListener("search",function(t){s({search:e("#tipue_search_input").val(),start:0})}):(e("#tipue_search_input")[0].addEventListener("input",function(t){var i=e("#tipue_search_input").val();""===i&&s({search:i,start:0})}),e(this).keyup(function(t){"13"==t.keyCode&&s({search:e("#tipue_search_input").val(),start:0})}))})}}(jQuery); \ No newline at end of file diff --git a/tipuesearch/tipuesearch_set.js b/tipuesearch/tipuesearch_set.js new file mode 100644 index 0000000..eab3f6e --- /dev/null +++ b/tipuesearch/tipuesearch_set.js @@ -0,0 +1,59 @@ + +/* +Tipue Search 5.0 +Copyright (c) 2015 Tipue +Tipue Search is released under the MIT License +http://www.tipue.com/search +*/ + + +/* +Stop words +Stop words list from http://www.ranks.nl/stopwords +*/ + +var tipuesearch_stop_words = ["a", "about", "above", "after", "again", "against", "all", "am", "an", "and", "any", "are", "aren't", "as", "at", "be", "because", "been", "before", "being", "below", "between", "both", "but", "by", "can't", "cannot", "could", "couldn't", "did", "didn't", "do", "does", "doesn't", "doing", "don't", "down", "during", "each", "few", "for", "from", "further", "had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", "he'd", "he'll", "he's", "her", "here", "here's", "hers", "herself", "him", "himself", "his", "how", "how's", "i", "i'd", "i'll", "i'm", "i've", "if", "in", "into", "is", "isn't", "it", "it's", "its", "itself", "let's", "me", "more", "most", "mustn't", "my", "myself", "no", "nor", "not", "of", "off", "on", "once", "only", "or", "other", "ought", "our", "ours", "ourselves", "out", "over", "own", "same", "shan't", "she", "she'd", "she'll", "she's", "should", "shouldn't", "so", "some", "such", "than", "that", "that's", "the", "their", "theirs", "them", "themselves", "then", "there", "there's", "these", "they", "they'd", "they'll", "they're", "they've", "this", "those", "through", "to", "too", "under", "until", "up", "very", "was", "wasn't", "we", "we'd", "we'll", "we're", "we've", "were", "weren't", "what", "what's", "when", "when's", "where", "where's", "which", "while", "who", "who's", "whom", "why", "why's", "with", "won't", "would", "wouldn't", "you", "you'd", "you'll", "you're", "you've", "your", "yours", "yourself", "yourselves"]; + + +// Word replace + +var tipuesearch_replace = {'words': [ + {'word': 'tipua', 'replace_with': 'tipue'}, + {'word': 'javscript', 'replace_with': 'javascript'}, + {'word': 'jqeury', 'replace_with': 'jquery'} +]}; + + +// Weighting + +var tipuesearch_weight = {'weight': [ + {'url': 'http://www.tipue.com', 'score': 200}, + {'url': 'http://www.tipue.com/search', 'score': 100}, + {'url': 'http://www.tipue.com/about', 'score': 100} +]}; + + +// Stemming + +var tipuesearch_stem = {'words': [ + {'word': 'e-mail', 'stem': 'email'}, + {'word': 'javascript', 'stem': 'jquery'}, + {'word': 'javascript', 'stem': 'js'} +]}; + + +// Internal strings + +var tipuesearch_string_1 = 'No title'; +var tipuesearch_string_2 = 'Showing results for'; +var tipuesearch_string_3 = 'Search instead for'; +var tipuesearch_string_4 = '1 result'; +var tipuesearch_string_5 = 'results'; +var tipuesearch_string_6 = 'Prev'; +var tipuesearch_string_7 = 'Next'; +var tipuesearch_string_8 = 'Nothing found'; +var tipuesearch_string_9 = 'Common words are largely ignored'; +var tipuesearch_string_10 = 'Search too short'; +var tipuesearch_string_11 = 'Should be one character or more'; +var tipuesearch_string_12 = 'Should be'; +var tipuesearch_string_13 = 'characters or more';