Commit d62332a1 authored by Frank Bergmann's avatar Frank Bergmann

- Update to OpenACS 5.9.1

parent cf1e05e7
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="search" locale="de_DE" charset="ISO-8859-1">
<msg key="________Search_took">. Suche dauerte</msg>
<msg key="Advanced_Search">Erweiterte Suche</msg>
<msg key="advanced_search">&#34;fortgeschrittene Suche&#34;</msg>
<msg key="anytime">jederzeit</msg>
<msg key="Date_Range">Datumsspanne</msg>
<msg key="details">Details</msg>
<msg key="Enter_keywords_to_search_for">Schlsselwrtern eingeben</msg>
<msg key="Enter_keywords_to_search_for">Geben Sie Suchbegriffe ein</msg>
<msg key="Feeling_Lucky">Auf gut Glck</msg>
<msg key="lt_bstopwordsb_is_a_very">&#39;&lt;b&gt;%stopwords%&lt;/b&gt;&#39; is ein sehr gebruchliches Wort und ist daher in der Suche nicht verwendet worden</msg>
<msg key="lt_FtsEngineDriver_not_a">FtsEngineDriver ist nicht verfgbar</msg>
<msg key="lt_Make_sure_all_words_a">Stellen Sie sicher das alle Worte richtig geschrieben sind.</msg>
<msg key="lt_No_pages_were_found_c">Keine Seiten wurden gefunden mit &#34;</msg>
<msg key="lt_The_following_words_a">Die folgenden hufigen Worte wurden bei der Suche nicht bercksichtigt:</msg>
<msg key="lt_Tip_In_most_browsers_">Tipp: In den meisten Browsern knnen Sie den Entertaste drcken anstelle auf den Suchbutton zu klicken.</msg>
<msg key="lt_Try_different_keyword">Versuchen Sie unterschiedliche Schlsselwrter</msg>
<msg key="lt_Try_more_general_keyw">Versuchen Sie mehr generelle Schlsselwrter</msg>
<msg key="lt_Try_your_query_on_stw">Versuchen Sie Ihre Suche mit &#39;%stw;noquote%&#39;</msg>
<msg key="lt_You_must_specify_some">Sie mssen wenigstens ein Schlsselwort spezifizieren</msg>
<msg key="nbspDisplay">&amp;nbsp;Anzeige</msg>
<msg key="Next">Nchste</msg>
<msg key="of_about">ber</msg>
<msg key="past_3_months">letzten 3 Monate</msg>
<msg key="past_6_months">letzten 6 Monate</msg>
<msg key="past_year">letztes Jahr</msg>
<msg key="Previous">Vorhergehendes</msg>
<msg key="Result_page">Seite mit den Resultaten:</msg>
<msg key="Results">Resultate</msg>
<msg key="results">Resultate</msg>
<msg key="Search">Suche</msg>
<msg key="Searched_for_query">Gesucht wurde nach: &lt;b&gt;%query%&lt;/b&gt;</msg>
<msg key="seconds">Sekunden.</msg>
<msg key="selected">ausgewhlt</msg>
<msg key="Suggestions">Vorschlge:</msg>
<msg key="The">Der Operator &#34;&lt;b&gt;AND&lt;/b&gt;&#34; ist unntig und wird in allen Suchbegriffen als Standard verwendett</msg>
<msg key="Try_fewer_keywords">Versuchen Sie es mit weniger Schlsselworten</msg>
<msg key="Untitled">Unbenannt</msg>
</message_catalog>
......@@ -4,16 +4,16 @@
<msg key="________Search_took">.
Search took</msg>
<msg key="Advanced_Search">Advanced Search</msg>
<msg key="advanced_search">&#34;advanced search&#34;</msg>
<msg key="advanced_search">&quot;advanced search&quot;</msg>
<msg key="anytime">anytime</msg>
<msg key="Date_Range">Date Range</msg>
<msg key="details">details</msg>
<msg key="Enter_keywords_to_search_for">Enter keywords to search for</msg>
<msg key="Feeling_Lucky">Feeling Lucky</msg>
<msg key="lt_bstopwordsb_is_a_very">&#34;&lt;b&gt;%stopwords%&lt;/b&gt;&#34; is a very common word and was not included in your search.</msg>
<msg key="lt_bstopwordsb_is_a_very">&quot;&lt;b&gt;%stopwords%&lt;/b&gt;&quot; is a very common word and was not included in your search.</msg>
<msg key="lt_FtsEngineDriver_not_a">FtsEngineDriver not available!</msg>
<msg key="lt_Make_sure_all_words_a">Make sure all words are spelled correctly.</msg>
<msg key="lt_No_pages_were_found_c">No pages were found containing &#34;</msg>
<msg key="lt_No_pages_were_found_c">No pages were found containing &quot;</msg>
<msg key="lt_The_following_words_a">The following words are very common and were not included in your search:</msg>
<msg key="lt_Tip_In_most_browsers_">Tip: In most browsers you can just hit the return key instead of clicking on the search button.</msg>
<msg key="lt_Try_different_keyword">Try different keywords.</msg>
......@@ -35,7 +35,7 @@
<msg key="seconds">seconds.</msg>
<msg key="selected">selected</msg>
<msg key="Suggestions">Suggestions:</msg>
<msg key="The">&#34;&lt;b&gt;AND&lt;/b&gt;&#34; operator is unnecessary -- we include all search terms by default.</msg>
<msg key="The">&quot;&lt;b&gt;AND&lt;/b&gt;&quot; operator is unnecessary -- we include all search terms by default.</msg>
<msg key="Try_fewer_keywords">Try fewer keywords.</msg>
<msg key="Untitled">Untitled</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="search" locale="it_IT" charset="ISO-8859-1">
<msg key="________Search_took">. La ricerca durata</msg>
<msg key="Advanced_Search">Ricerca avanzata</msg>
<msg key="________Search_took">. La ricerca ha impiegato</msg>
<msg key="Advanced_Search">Ricerca Avanzata</msg>
<msg key="advanced_search">&#34;ricerca avanzata&#34;</msg>
<msg key="anytime">tutto l&#39;archivio</msg>
<msg key="Date_Range">Data</msg>
<msg key="anytime">in qualunque momento</msg>
<msg key="Date_Range">Range di Date</msg>
<msg key="details">dettagli</msg>
<msg key="Feeling_Lucky">Mi sento fortunato</msg>
<msg key="lt_bstopwordsb_is_a_very">&#34;&lt;b&gt;%stopwords%&lt;/b&gt;&#34; un termine molto comune e non stato incluso nella ricerca.</msg>
<msg key="Enter_keywords_to_search_for">Inserisci delle parole chiave per cercare</msg>
<msg key="Feeling_Lucky">Mi Sento Fortunato</msg>
<msg key="lt_bstopwordsb_is_a_very">&#34;&lt;b&gt;%stopwords%&lt;/b&gt;&#34; una parola molto comune e non stata inclusa nella tua ricerca.</msg>
<msg key="lt_FtsEngineDriver_not_a">FtsEngineDriver non disponibile!</msg>
<msg key="lt_Make_sure_all_words_a">Assicurarsi che tutte le parole siano state digitate correttamente.</msg>
<msg key="lt_No_pages_were_found_c">La ricerca non ha prodotto risultati in nessun documento relativa a &#34;</msg>
<msg key="lt_The_following_words_a">I seguenti termini sono molto comuni e non sono stati inclusi nella ricerca:</msg>
<msg key="lt_Tip_In_most_browsers_">Consiglio: su quasi tutti i browser basta premere il tasto di invio, anzich fare clic sul bottone Cerca.</msg>
<msg key="lt_Try_different_keyword">Provare con parole chiave diverse.</msg>
<msg key="lt_Try_more_general_keyw">Provare con parole chiave pi generiche.</msg>
<msg key="lt_Try_your_query_on_stw">Ripetere la ricerca con: %stw;noquote%</msg>
<msg key="lt_You_must_specify_some"> necessario specificare alcune parole chiave</msg>
<msg key="nbspDisplay">&amp;nbsp;Visualizza</msg>
<msg key="Next">Successiva</msg>
<msg key="of_about">su circa</msg>
<msg key="past_3_months">ultimi 3 mesi</msg>
<msg key="past_6_months">ultimi 6 mesi</msg>
<msg key="past_year">ultimo anno</msg>
<msg key="lt_Make_sure_all_words_a">Assicurati che tutte le parole siano digitate correttamente</msg>
<msg key="lt_No_pages_were_found_c">Nessuna pagina stata trovata contenente &#34;</msg>
<msg key="lt_The_following_words_a">Le seguenti parole sono molto comuni e non sono state incluse nella tua ricerca:</msg>
<msg key="lt_Tip_In_most_browsers_">Suggerimento: in molti browser puoi premere il tasto invio invece di cliccare il pulsante di ricerca.</msg>
<msg key="lt_Try_different_keyword">Prova parole chiave differenti.</msg>
<msg key="lt_Try_more_general_keyw">Prova parole chiave pi generiche.</msg>
<msg key="lt_Try_your_query_on_stw">Prova la tua query su: %stw;noquote%</msg>
<msg key="lt_You_must_specify_some">Devi specificare qualche parola chiave</msg>
<msg key="nbspDisplay">&amp;nbsp;Mostra</msg>
<msg key="Next">Prossima</msg>
<msg key="of_about">di circa</msg>
<msg key="past_3_months">scorsi 3 mesi</msg>
<msg key="past_6_months">scorsi 6 mesi</msg>
<msg key="past_year">l&#39;anno scorso</msg>
<msg key="Previous">Precedente</msg>
<msg key="Result_page">Pagina:</msg>
<msg key="Result_page">Pagina di risultato:</msg>
<msg key="Results">Risultati</msg>
<msg key="results">risultati</msg>
<msg key="Search">Cerca</msg>
<msg key="Searched_for_query">La ricerca di: %query%</msg>
<msg key="Searched_for_query">Risultati di ricerca per &lt;strong&gt;%query%&lt;/strong&gt;</msg>
<msg key="seconds">secondi.</msg>
<msg key="selected">selezionato</msg>
<msg key="Suggestions">Suggerimenti:</msg>
<msg key="The">L&#39;operatore &#34;&lt;b&gt;AND&lt;/b&gt;&#34; non necessario. Tutti i termini vengono inseriti nella ricerca.</msg>
<msg key="Try_fewer_keywords">Provare con un numero minore di parole chiave.</msg>
<msg key="Untitled">Senza titolo</msg>
<msg key="The">l&#39;operatore &#34;&lt;b&gt;AND&lt;/b&gt;&#34; non necessario -- includiamo gi tutti i termini di ricerca per default.</msg>
<msg key="Try_fewer_keywords">Prova meno parole chiave.</msg>
<msg key="Untitled">Senza Titolo</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="search" locale="nl_NL" charset="ISO-8859-1">
<msg key="________Search_took">.Zoekopdracht duurde</msg>
<msg key="Advanced_Search">Geavanceerd zoeken</msg>
<msg key="advanced_search">uitgebreid zoeken</msg>
<msg key="anytime">eender wanneer</msg>
<msg key="Date_Range">Datumbereik</msg>
<msg key="details">details</msg>
<msg key="Enter_keywords_to_search_for">Type zoekwoorden</msg>
<msg key="Feeling_Lucky">Doe een gok</msg>
<msg key="lt_bstopwordsb_is_a_very">&#34;&lt;b&gt;%stopwords%&lt;/b&gt;&#34; is een zeer veel voorkomend woord en is niet in de zoekopdracht meegenomen.</msg>
<msg key="lt_bstopwordsb_is_a_very">&quot;&lt;b&gt;%stopwords%&lt;/b&gt;&quot; is een zeer veel voorkomend woord en is niet in de zoekopdracht meegenomen.</msg>
<msg key="lt_FtsEngineDriver_not_a">FtsEngineDriver niet beschikbaar</msg>
<msg key="lt_Make_sure_all_words_a">Let op dat alle woorden correct gespeld zijn.</msg>
<msg key="lt_No_pages_were_found_c">Er zijn geen pagina gevonden met &#34;</msg>
<msg key="lt_The_following_words_a">De volgende woorden komen vaak voor en zijn geen onderdeel gemaakt van je zoekopdracht:</msg>
<msg key="lt_Tip_In_most_browsers_">Tip: in de meeste browser kan je de enter-toets gebruiken i.p.v. de zoek knop</msg>
<msg key="lt_Try_different_keyword">Probeer andere kernwoorden.</msg>
<msg key="lt_Try_more_general_keyw">Probeer meer algemene kernwoorden.</msg>
<msg key="lt_Try_your_query_on_stw">Probeer je zoekvraag op: %stw;noquote%</msg>
<msg key="lt_You_must_specify_some">Je moet een aantal kernwoorden opgeven.</msg>
<msg key="nbspDisplay">&amp;nbsp;Display</msg>
<msg key="Next">Volgende</msg>
<msg key="of_about">van ongeveer</msg>
<msg key="past_3_months">afgelopen 3 maanden</msg>
<msg key="past_6_months">afgelopen 6 maanden</msg>
<msg key="past_year">afgelopen jaar</msg>
<msg key="Previous">Vorige</msg>
<msg key="Result_page">Resultaatpagina:</msg>
<msg key="Results">Resultaten</msg>
<msg key="results">Resultaten</msg>
<msg key="Search">Zoeken</msg>
<msg key="Searched_for_query">Gezocht naar: %query%</msg>
<msg key="seconds">seconden.</msg>
<msg key="selected">geselecteerd</msg>
<msg key="Suggestions">Suggesties:</msg>
<msg key="The">&#34;&lt;b&gt;AND&lt;/b&gt;&#34; operatie is niet nodig -- alle zoektermen worden standaard gezocht.</msg>
<msg key="Try_fewer_keywords">Probeer minder kernwoorden.</msg>
<msg key="Untitled">Naamloos</msg>
</message_catalog>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="search" locale="pl_PL" charset="utf-8">
<msg key="________Search_took">. Wyszukiwanie zajęło</msg>
<msg key="Advanced_Search">Wyszukiwanie zaawansowany</msg>
<msg key="advanced_search">&#34;wyszukiwanie zaawansowane&#34;</msg>
<msg key="anytime">kiedykolwiek</msg>
<msg key="Date_Range">Zakres dat</msg>
<msg key="details">szczegóły</msg>
<msg key="Enter_keywords_to_search_for">Wpisz słowa kluczowe do wyszukania</msg>
<msg key="Feeling_Lucky">Mam farta</msg>
<msg key="lt_bstopwordsb_is_a_very">&#34;&lt;b&gt;%stopwords%&lt;/b&gt;&#34; jest wyrazem powszechnie używanym i nie został uwzględniony w wyszukiwaniu</msg>
<msg key="lt_Make_sure_all_words_a">Upewnij się, że wszystkie słowa są napisane poprawnie.</msg>
<msg key="lt_No_pages_were_found_c">Nie znaleziono stron zawierających &#34;</msg>
<msg key="lt_The_following_words_a">Następujące wyrazy są bardzo często używane i nie zostały włączone do wyszukiwania:</msg>
<msg key="lt_Tip_In_most_browsers_">Wskazówka: W większości przeglądarek możesz nacisnąć &#34;Wstecz&#34; zamiast klikać w przycisk wyszukiwania.</msg>
<msg key="lt_Try_different_keyword">Spróbuj z innymi słowami kluczowymi.</msg>
<msg key="lt_Try_more_general_keyw">Spróbuj bardziej ogólnych słów kluczowych.</msg>
<msg key="lt_Try_your_query_on_stw">Wypróbuj swoje zapytanie na: %stw;noquote%</msg>
<msg key="lt_You_must_specify_some">Musisz podać jakieś słowa kluczowe.</msg>
<msg key="nbspDisplay">&amp;nbsp;Wyświetl</msg>
<msg key="Next">Następne</msg>
<msg key="of_about">około</msg>
<msg key="past_3_months">zeszłe 3 miesiące</msg>
<msg key="past_6_months">zeszłych 6 miesięcy</msg>
<msg key="past_year">zeszły rok</msg>
<msg key="Previous">Poprzednie</msg>
<msg key="Result_page">Strona Wyników:</msg>
<msg key="Results">Wyniki</msg>
<msg key="results">wyniki</msg>
<msg key="Search">Szukaj</msg>
<msg key="Searched_for_query">Szukano frazy: &lt;b&gt;%query%&lt;/b&gt;</msg>
<msg key="seconds">sekund.</msg>
<msg key="selected">wybrane</msg>
<msg key="Suggestions">Sugestie:</msg>
<msg key="The">Operator &#34;&lt;b&gt;AND&lt;/b&gt;&#34; jest niepotrzebny, domyślnie wykorzystujemy wszystkie słowa kluczowe w wyszukiwaniu</msg>
<msg key="Try_fewer_keywords">Spróbuj wpisać mniej słów.</msg>
<msg key="Untitled">Bez tytułu</msg>
<msg key="Untitled">Bez Tytułu</msg>
</message_catalog>
......@@ -6,7 +6,7 @@
<msg key="Date_Range">Intervalo de Data</msg>
<msg key="details">detelhes</msg>
<msg key="Feeling_Lucky">Sinto-me com Sorte</msg>
<msg key="lt_bstopwordsb_is_a_very">&#34;&lt;b&gt;%stopwords%&lt;/b&gt;&#34; uma palavra muito comum e no foi includa na sua pesquisa.</msg>
<msg key="lt_bstopwordsb_is_a_very">&quot;&lt;b&gt;%stopwords%&lt;/b&gt;&quot; uma palavra muito comum e no foi includa na sua pesquisa.</msg>
<msg key="lt_FtsEngineDriver_not_a">FtsEngineDriver no est disponvel!</msg>
<msg key="lt_Make_sure_all_words_a">Tenha certeza de que todas as palavras so soletradas corretamente.</msg>
<msg key="lt_Try_different_keyword">Tente palavras-chave diferentes.</msg>
......
......@@ -3,16 +3,16 @@
<msg key="________Search_took">.Диапазон поиска</msg>
<msg key="Advanced_Search">Расширенный поиск</msg>
<msg key="advanced_search">&#34;расширенный поиск&#34;</msg>
<msg key="advanced_search">&quot;расширенный поиск&quot;</msg>
<msg key="anytime">в любое время</msg>
<msg key="Date_Range">Диапазон дат</msg>
<msg key="details">подробности</msg>
<msg key="Enter_keywords_to_search_for">Ввести ключевые слова для поиска</msg>
<msg key="Feeling_Lucky">Мне повезёт</msg>
<msg key="lt_bstopwordsb_is_a_very">&#34;&lt;b&gt;%stopwords%&lt;/b&gt;&#34; очень общее слово и оно не было включено в ваш поисковый запрос.</msg>
<msg key="lt_bstopwordsb_is_a_very">&quot;&lt;b&gt;%stopwords%&lt;/b&gt;&quot; очень общее слово и оно не было включено в ваш поисковый запрос.</msg>
<msg key="lt_FtsEngineDriver_not_a">FtsEngineDriver отсутствует!</msg>
<msg key="lt_Make_sure_all_words_a">Проверьте правильность написания всех слов.</msg>
<msg key="lt_No_pages_were_found_c">Не найдено страниц, содержащих &#34;</msg>
<msg key="lt_No_pages_were_found_c">Не найдено страниц, содержащих &quot;</msg>
<msg key="lt_The_following_words_a">Следующие слова слишком общие и не были включены в ваш поисковый запрос:</msg>
<msg key="lt_Tip_In_most_browsers_">Подсказка: В большинстве броузеров вы можете нажать клавишу Назад вместо кнопки поиск.</msg>
<msg key="lt_Try_different_keyword">Попробуйте разные ключевые слова.</msg>
......@@ -34,7 +34,7 @@
<msg key="seconds">секунд.</msg>
<msg key="selected">выбрано</msg>
<msg key="Suggestions">Предложения:</msg>
<msg key="The">&#34;&lt;b&gt;AND&lt;/b&gt;&#34; лишняя операция -- все элементы поиска включены по умолчанию.</msg>
<msg key="The">&quot;&lt;b&gt;AND&lt;/b&gt;&quot; лишняя операция -- все элементы поиска включены по умолчанию.</msg>
<msg key="Try_fewer_keywords">Попробуйте сократить количество ключевых слов.</msg>
<msg key="Untitled">Без названия </msg>
</message_catalog>
......@@ -14,7 +14,7 @@
<li><a href="@url_previous@">&lt;</a></li>
</else>
<multiple name="results_paginator">
<if @results_paginator.current_p@>
<if @results_paginator.current_p;literal@ true>
<li class="current">@results_paginator.item@</li>
</if>
<else>
......
......@@ -12,39 +12,41 @@ set last_page_group [expr { int($last_result_page / $pages_per_group) }]
set first_page_in_group [expr { $current_page_group * $pages_per_group }]
set last_page_in_group [expr { ($current_page_group + 1) * $pages_per_group - 1 }]
security::csrf::new
if {[info exists ::__csrf_token]} {set __csrf_token $::__csrf_token}
if { $current_page_group >= 1 } {
set offset [expr {($current_page_group - 1) * $pages_per_group * $limit}]
set url_previous_group [export_vars -base search {{q $urlencoded_query} search_package_id offset num}]
set url_previous_group [export_vars -base search {q search_package_id offset num __csrf_token}]
} else {
set url_previous_group ""
}
if { $current_page_group < $last_page_group } {
set offset [expr {($current_page_group + 1) * $pages_per_group * $limit}]
set url_next_group [export_vars -base search {{q $urlencoded_query} search_package_id offset num}]
set url_next_group [export_vars -base search {q search_package_id offset num __csrf_token}]
} else {
set url_next_group ""
}
if { $current_result_page > 0 } {
set offset [expr {($current_result_page - 1) * $limit}]
set url_previous [export_vars -base search {{q $urlencoded_query} search_package_id offset num}]
set url_previous [export_vars -base search {q search_package_id offset num __csrf_token}]
} else {
set url_previous ""
}
if { $current_result_page < $last_result_page } {
set offset [expr {$current_result_page * $limit + $limit}]
set url_next [export_vars -base search {{q $urlencoded_query} search_package_id offset num}]
set url_next [export_vars -base search {q search_package_id offset num __csrf_token}]
} else {
set url_next ""
}
template::multirow create results_paginator item link current_p
for { set __i $from_result_page } { $__i <= $to_result_page} { incr __i } {
set link "search?q=${urlencoded_query}&search_package_id=$search_package_id"
append link "&offset=[expr {$__i * $limit}]"
append link "&num=$num"
set offset [expr {$__i * $limit}]
set link [export_vars -base search {q search_package_id offset num __csrf_token}]
template::multirow append results_paginator [expr {$__i + 1}] $link [expr {$__i == $current_result_page}]
}
......
<form method=GET action="@search_url@" class="inline-form">
<form method="GET" action="@search_url@" class="inline-form">
<div>
<input type="text" name="q" title="#search.Enter_keywords_to_search_for#" size="16" maxlength="256">
<if @::__csrf_token@ defined><input type="hidden" name="__csrf_token" value="@::__csrf_token;literal@"></if>
<input type="submit" value="#acs-kernel.common_search#" name="t">
<br>
<a href="@advanced_search_url@">#search.Advanced_Search#</a>
......
......@@ -9,18 +9,19 @@
<implements-subsite-p>f</implements-subsite-p>
<inherit-templates-p>t</inherit-templates-p>
<version name="5.9.0" url="http://openacs.org/repository/download/apm/search-5.9.0.apm">
<version name="5.9.1" url="http://openacs.org/repository/download/apm/search-5.9.1.apm">
<owner url="http://openacs.org">OpenACS</owner>
<summary>Site wide search</summary>
<release-date>2015-10-04</release-date>
<release-date>2017-08-06</release-date>
<vendor url="http://openacs.org">OpenACS</vendor>
<description format="text/html">Site wide search implemented with service contracts, currently supports postgres via the tsearch2 driver (OpenFTS still support but deprecated).</description>
<description format="text/html">Site wide search implemented with service contracts, currently supports PostgreSQL via the tsearch2 driver and Oracle via the intermedia-driver.</description>
<license>GPL version 2</license>
<maturity>3</maturity>
<provides url="search" version="5.9.0"/>
<requires url="acs-service-contract" version="5.9.0"/>
<requires url="acs-templating" version="5.9.0"/>
<provides url="search" version="5.9.1"/>
<requires url="acs-service-contract" version="5.9.1"/>
<requires url="acs-tcl" version="5.9.1"/>
<requires url="acs-templating" version="5.9.1"/>
<callbacks>
<callback type="after-instantiate" proc="search::install::after_instantiate"/>
......@@ -34,6 +35,7 @@
<parameter scope="instance" datatype="number" min_n_values="1" max_n_values="1" name="SubsiteSearchP" default="0" description="If mounted in a subsite should the search be restricted to items in the subsite by default. Requires that package_id in acs_objects be properly populated."/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="Symbol2Interval" default="m3 {3 month ago} m6 {6 month ago} y1 {1 year ago}" description="Translate symbol to date interval."/>
<parameter scope="instance" datatype="number" min_n_values="1" max_n_values="1" name="Syndicate" default="0" description="Should syndication data be stored when indexing for search."/>
<parameter scope="instance" datatype="number" min_n_values="1" max_n_values="1" name="ValidateCSRFP" default="1" description="Boolean parameter to activate/deactivate CSRF protection for this package instance"/>
</parameters>
</version>
......
......@@ -22,6 +22,13 @@ ad_proc -public search::convert::binary_to_text {
@creation-date 2005-06-25
} {
if {[file size $filename] == 0} {
#
# Some conversion programs choke on empty content
#
return ""
}
set tmp_filename [ad_tmpnam]
set result ""
......@@ -32,14 +39,14 @@ ad_proc -public search::convert::binary_to_text {
}
application/msexcel -
application/vnd.ms-excel {
set convert_command {xls2csv $filename >$tmp_filename}
set convert_command {xls2csv $filename >$tmp_filename 2> /dev/null}
}
application/mspowerpoint -
application/vnd.ms-powerpoint {
set convert_command {catppt $filename >$tmp_filename}
}
application/pdf {
set convert_command {pdftotext $filename $tmp_filename}
set convert_command {pdftotext -q $filename $tmp_filename}
}
application/vnd.oasis.opendocument.text -
application/vnd.oasis.opendocument.text-template -
......@@ -52,7 +59,7 @@ ad_proc -public search::convert::binary_to_text {
set convert_command {unzip -p $filename content.xml >$tmp_filename}
}
text/html {
file delete $tmp_filename
file delete -- $tmp_filename
#
# Reading the whole content into memory is not necessarily
# the best when dealing with huge files. However, for
......@@ -61,7 +68,7 @@ ad_proc -public search::convert::binary_to_text {
return [ns_striphtml [template::util::read_file $filename]]
}
text/plain {
file delete $tmp_filename
file delete -- $tmp_filename
#
# Reading the whole content into memory is not necessarily
# the best when dealing with huge files. However, for
......@@ -78,16 +85,15 @@ ad_proc -public search::convert::binary_to_text {
}
if {[catch {eval exec $convert_command} err]} {
catch {file delete $tmp_filename}
catch {file delete -- $tmp_filename}
ns_log Error "SEARCH: conversion failed - $convert_command: $err"
file delete $tmp_filename
return
}
set fd [open $tmp_filename "r"]
set result [read $fd]
close $fd
file delete $tmp_filename
file delete -- $tmp_filename
return $result
}
......
......@@ -14,7 +14,7 @@ ad_proc -public search::queue {
Add an object to the search_observer_queue table with
an event.
You should excercise care that the entry is not being
You should exercise care that the entry is not being
created from a trigger (although search is robust for multiple
entries so it will not insert or update the same object
more than once per sweep).
......@@ -302,7 +302,7 @@ ad_proc -private search::content_filter {
#ns_log notice "search::content_filter txt len [string length $txt]"
if {[info exists tmp_filename]} {
file delete $tmp_filename
file delete -- $tmp_filename
}
}
......
......@@ -3,10 +3,11 @@
<property name="context">"advanced search"</property>
<div>
<form method=GET action=search>
<form method="GET" action="search">
<p>
<input type="text" name="q" size="41" maxlength="256" value="@q@">
<input type="submit" value="Search" name="t">
<if @::__csrf_token@ defined><input type="hidden" name="__csrf_token" value="@::__csrf_token;literal@"></if>
</p>
<p>
<label for="dfs">#search.Date_Range#</label>
......
ad_page_contract {
@author Neophytos Demetriou
} {
{q ""}
{num 0}
{q:trim,notnull ""}
{num:range(1|200),notnull 0}
} -validate {
check_q -requires q {
if {[string length $q] < 3} {
set name q
set min_length 3
set actual_length [string length $q]
ad_complain [_ acs-tcl.lt_name_is_too_short__Pl]
}
}
csrf { csrf::validate }
}
set package_id [ad_conn package_id]
......
......@@ -13,19 +13,19 @@ Making an object type searchable involves three steps:
In most of the cases, choosing the object type is straightforward.
However, if your object type uses the content repository then you
should make sure that your object type is a subclass of the
"content_revision" class. You should also make sure all content is
created using that subclass, rather than simply create content with
the "content_revision" type.
"content_revision" class. You should also make sure all
content is created using that subclass, rather than simply create
content with the "content_revision" type.
<ul>
<li>Object types that don't use the CR, can be specified using
<li>Object types that don&#39;t use the CR, can be specified using
<code>acs_object_type__create_type</code>, but those that use the
CR need to use <code>content_type__create_type</code>.
<code>content_type__create_type</code> overloads
<code>acs_object_type__create_type</code> and provides two views
for inserting and viewing content data, and the CR depends on these
views.</li><li>Whenever you call content_item__new, call it with
'content_revision' as the item_subtype and 'your_content_type' as
the content_type.</li>
'content_revision' as the item_subtype and
'your_content_type' as the content_type.</li>
</ul><h3>Implement FtsContentProvider</h3>
FtsContentProvider is comprised of two abstract operations, namely
<code>datasource</code> and <code>url</code>. The specification for
......@@ -70,9 +70,9 @@ You should adapt this association to reflect your implementation.
That is, change <code>impl_name</code> with your object type and
the <code>impl_owner_name</code> to the package key. Next, you have
to create associations between the operations of
<code>FtsContentProvider</code> and your concrete functions. Here's
how an association between an operation and a concrete function
looks like:
<code>FtsContentProvider</code> and your concrete functions.
Here&#39;s how an association between an operation and a concrete
function looks like:
<pre><code>select acs_sc_impl_alias__new(
'FtsContentProvider', -- impl_contract_name
'note', -- impl_name
......@@ -91,7 +91,7 @@ If your object type uses the content repository to store its items,
then you are done. If not, an extra step is required to inform the
search_observer_queue of new content items, updates or deletions.
We do this by adding triggers on the table that stores the content
items of your object type. Here's how that part looks like for
items of your object type. Here&#39;s how that part looks like for
<code>note</code>.
<pre><code>create function notes__itrg ()
returns opaque as $$
......
......@@ -2,11 +2,12 @@
<property name="doc(title)">#search.Search#</property>
<div style="text-align:center">
<form method=GET action=search>
<form method="GET" action="search">
<div><small><a href="advanced-search">#search.Advanced_Search#</a></small></div>
<div>
<input type="text" name="q" size="80" maxlength="256">
<br>
<if @::__csrf_token@ defined><input type="hidden" name="__csrf_token" value="@::__csrf_token;literal@"></if>
<input type="submit" value="#search.Search#" name="t">
<input type="submit" value="#search.Feeling_Lucky#" name="t">
</div>
......
......@@ -2,7 +2,7 @@
<property name="context">@context;literal@</property>
<property name="doc(title)">@page_title;literal@</property>
<if @and_queries_notice_p@ eq 1>
<if @and_queries_notice_p;literal@ true>
<font color="6f6f6f">
#search.The#
[<a href="help/basics#and">#search.details#</a>]<br>
......@@ -16,14 +16,13 @@
</if>
<if @nstopwords@ gt 1>
<font color="6f6f6f">
#search.lt_The_following_words_a# <b>@stopwords@</b>.
#search.lt_The_following_words_a# <strong>@stopwords@</strong>.
[<a href="help/basics#stopwords">#search.details#</a>]<br>
</font>
</if>
<if @count@ eq 0>
Your search - <b>@query@</b> - did not match any content.
<br>#search.lt_No_pages_were_found_c#<b>@query@</b>".
#search.lt_No_pages_were_found_c#<strong>@query@</strong>".
<br><br>#search.Suggestions#
<ul>
<li>#search.lt_Make_sure_all_words_a#
......@@ -47,10 +46,10 @@
<li>
<a href="@searchresult.url_one@" class="result-title">
<if @searchresult.title_summary@ nil>#search.Untitled#</if>
<else>@searchresult.title_summary;noquote@</else>
<else>@searchresult.title_summary;literal@</else>
</a>
<if @searchresult.txt_summary@ not nil>
<div class="result-text">@searchresult.txt_summary;noquote@</div>
<div class="result-text">@searchresult.txt_summary;literal@</div>
</if>
<div class="result-url">@searchresult.url_one@</div>
</li>
......@@ -59,7 +58,7 @@
</div>
</else>
<include src="/packages/search/lib/navbar" &="urlencoded_query"
<include src="/packages/search/lib/navbar" &="q"
paginator_class="list-paginator-bottom" count="@result.count;literal@" &="low" &="high"
&="offset" &="num" &="search_package_id">
......@@ -68,11 +67,12 @@
<form method="get" action="search">
<div>
<input type="text" name="q" size="60" maxlength="256" value="@query@">
<if @::__csrf_token@ defined><input type="hidden" name="__csrf_token" value="@::__csrf_token;literal@"></if>
<input type="submit" value="#search.Search#">
</div>
</form>
<if @t@ eq "Search">
<i>#search.lt_Tip_In_most_browsers_#</i>
<em>#search.lt_Tip_In_most_browsers_#</em>
</if>
</div>
......@@ -81,7 +81,7 @@
</if>
</if>
<if @and_queries_notice_p@ eq 1>
<if @and_queries_notice_p;literal@ true>
<p class="hint">#search.and_not_needed# [<a href="help/basics#and">#search.details#</a>]</p>
</if>
<if @nstopwords@ eq 1>
......@@ -91,7 +91,7 @@
<p class="hint">#search.lt_The_following_words_a# [<a href="help/basics#stopwords">#search.details#</a>]</p>
</if>
<if @debug_p@>
<if @debug_p;literal@ true>
<p>#search.Searched_for_query#</p>
<p>#search.Results_count#</p>
</if>
......
......@@ -5,10 +5,10 @@ ad_page_contract {
} {
q:trim
{t:trim ""}
{offset:naturalnum 0}
{num:naturalnum 0}
{dfs:word,trim ""}
{dts:word,trim ""}
{offset:naturalnum,notnull 0}
{num:range(0|200) 0}
{dfs:word,trim,notnull ""}
{dts:word,trim,notnull ""}
{search_package_id:naturalnum ""}
{scope ""}
{object_type:token ""}
......@@ -18,12 +18,29 @@ ad_page_contract {
ad_complain "#search.lt_You_must_specify_some#"
}
}
valid_dfs -requires dfs {
if {![array exists symbol2interval]} {
array set symbol2interval [parameter::get -package_id [ad_conn package_id] -parameter Symbol2Interval]
}
if {$dfs ni [array names symbol2interval]} {
ad_complain "dfs: invalid interval"
}
}
valid_dts -requires dts {
if {![array exists symbol2interval]} {
array set symbol2interval [parameter::get -package_id [ad_conn package_id] -parameter Symbol2Interval]
}
if {$dts ni [array names symbol2interval]} {
ad_complain "dts: invalid interval"
}
}
csrf { csrf::validate }
}
set page_title "Search Results"
set package_id [ad_conn package_id]
set package_url [ad_conn package_url]
set package_url_with_extras $package_url
......@@ -64,7 +81,6 @@ if { $dfs eq "all" } {
set dfs ""
}
array set symbol2interval [parameter::get -package_id $package_id -parameter Symbol2Interval]
if { $dfs ne "" } {
set df [db_exec_plsql get_df "select now() + '$symbol2interval($dfs)'::interval"]
}
......@@ -146,6 +162,7 @@ if { $info(automatic_and_queries_p) && "and" in $q } {
set url_advanced_search ""
append url_advanced_search "advanced-search?q=$urlencoded_query"
if {[info exists ::__csrf_token]} {append url_advanced_search "&__csrf_token=$::__csrf_token"}
if { $num > 0 } { append url_advanced_search "&num=$num" }
set query $q
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment