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"?> <?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="search" locale="de_DE" charset="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">Erweiterte Suche</msg>
<msg key="advanced_search">&#34;fortgeschrittene Suche&#34;</msg>
<msg key="anytime">jederzeit</msg> <msg key="anytime">jederzeit</msg>
<msg key="Date_Range">Datumsspanne</msg> <msg key="Date_Range">Datumsspanne</msg>
<msg key="details">Details</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="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_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_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_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_different_keyword">Versuchen Sie unterschiedliche Schlsselwrter</msg>
<msg key="lt_Try_more_general_keyw">Versuchen Sie mehr generelle 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_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="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="Next">Nchste</msg>
<msg key="of_about">ber</msg>
<msg key="past_3_months">letzten 3 Monate</msg> <msg key="past_3_months">letzten 3 Monate</msg>
<msg key="past_6_months">letzten 6 Monate</msg> <msg key="past_6_months">letzten 6 Monate</msg>
<msg key="past_year">letztes Jahr</msg> <msg key="past_year">letztes Jahr</msg>
<msg key="Previous">Vorhergehendes</msg> <msg key="Previous">Vorhergehendes</msg>
<msg key="Result_page">Seite mit den Resultaten:</msg> <msg key="Result_page">Seite mit den Resultaten:</msg>
<msg key="Results">Resultate</msg>
<msg key="results">Resultate</msg> <msg key="results">Resultate</msg>
<msg key="Search">Suche</msg> <msg key="Search">Suche</msg>
<msg key="Searched_for_query">Gesucht wurde nach: &lt;b&gt;%query%&lt;/b&gt;</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="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="Try_fewer_keywords">Versuchen Sie es mit weniger Schlsselworten</msg>
<msg key="Untitled">Unbenannt</msg> <msg key="Untitled">Unbenannt</msg>
</message_catalog> </message_catalog>
...@@ -4,16 +4,16 @@ ...@@ -4,16 +4,16 @@
<msg key="________Search_took">. <msg key="________Search_took">.
Search took</msg> Search took</msg>
<msg key="Advanced_Search">Advanced Search</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="anytime">anytime</msg>
<msg key="Date_Range">Date Range</msg> <msg key="Date_Range">Date Range</msg>
<msg key="details">details</msg> <msg key="details">details</msg>
<msg key="Enter_keywords_to_search_for">Enter keywords to search for</msg> <msg key="Enter_keywords_to_search_for">Enter keywords to search for</msg>
<msg key="Feeling_Lucky">Feeling Lucky</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_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_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_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_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> <msg key="lt_Try_different_keyword">Try different keywords.</msg>
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<msg key="seconds">seconds.</msg> <msg key="seconds">seconds.</msg>
<msg key="selected">selected</msg> <msg key="selected">selected</msg>
<msg key="Suggestions">Suggestions:</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="Try_fewer_keywords">Try fewer keywords.</msg>
<msg key="Untitled">Untitled</msg> <msg key="Untitled">Untitled</msg>
</message_catalog> </message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="search" locale="it_IT" charset="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="________Search_took">. La ricerca ha impiegato</msg>
<msg key="Advanced_Search">Ricerca avanzata</msg> <msg key="Advanced_Search">Ricerca Avanzata</msg>
<msg key="advanced_search">&#34;ricerca avanzata&#34;</msg> <msg key="advanced_search">&#34;ricerca avanzata&#34;</msg>
<msg key="anytime">tutto l&#39;archivio</msg> <msg key="anytime">in qualunque momento</msg>
<msg key="Date_Range">Data</msg> <msg key="Date_Range">Range di Date</msg>
<msg key="details">dettagli</msg> <msg key="details">dettagli</msg>
<msg key="Feeling_Lucky">Mi sento fortunato</msg> <msg key="Enter_keywords_to_search_for">Inserisci delle parole chiave per cercare</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="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_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_Make_sure_all_words_a">Assicurati che tutte le parole siano 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_No_pages_were_found_c">Nessuna pagina stata trovata contenente &#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_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_">Consiglio: su quasi tutti i browser basta premere il tasto di invio, anzich fare clic sul bottone Cerca.</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">Provare con parole chiave diverse.</msg> <msg key="lt_Try_different_keyword">Prova parole chiave differenti.</msg>
<msg key="lt_Try_more_general_keyw">Provare con parole chiave pi generiche.</msg> <msg key="lt_Try_more_general_keyw">Prova parole chiave pi generiche.</msg>
<msg key="lt_Try_your_query_on_stw">Ripetere la ricerca con: %stw;noquote%</msg> <msg key="lt_Try_your_query_on_stw">Prova la tua query su: %stw;noquote%</msg>
<msg key="lt_You_must_specify_some"> necessario specificare alcune parole chiave</msg> <msg key="lt_You_must_specify_some">Devi specificare qualche parola chiave</msg>
<msg key="nbspDisplay">&amp;nbsp;Visualizza</msg> <msg key="nbspDisplay">&amp;nbsp;Mostra</msg>
<msg key="Next">Successiva</msg> <msg key="Next">Prossima</msg>
<msg key="of_about">su circa</msg> <msg key="of_about">di circa</msg>
<msg key="past_3_months">ultimi 3 mesi</msg> <msg key="past_3_months">scorsi 3 mesi</msg>
<msg key="past_6_months">ultimi 6 mesi</msg> <msg key="past_6_months">scorsi 6 mesi</msg>
<msg key="past_year">ultimo anno</msg> <msg key="past_year">l&#39;anno scorso</msg>
<msg key="Previous">Precedente</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="results">risultati</msg> <msg key="results">risultati</msg>
<msg key="Search">Cerca</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="seconds">secondi.</msg>
<msg key="selected">selezionato</msg> <msg key="selected">selezionato</msg>
<msg key="Suggestions">Suggerimenti:</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="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">Provare con un numero minore di parole chiave.</msg> <msg key="Try_fewer_keywords">Prova meno parole chiave.</msg>
<msg key="Untitled">Senza titolo</msg> <msg key="Untitled">Senza Titolo</msg>
</message_catalog> </message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="search" locale="nl_NL" charset="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">Geavanceerd zoeken</msg>
<msg key="advanced_search">uitgebreid zoeken</msg>
<msg key="anytime">eender wanneer</msg> <msg key="anytime">eender wanneer</msg>
<msg key="Date_Range">Datumbereik</msg> <msg key="Date_Range">Datumbereik</msg>
<msg key="details">details</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="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_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_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_different_keyword">Probeer andere kernwoorden.</msg>
<msg key="lt_Try_more_general_keyw">Probeer meer algemene 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_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="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="Next">Volgende</msg>
<msg key="of_about">van ongeveer</msg>
<msg key="past_3_months">afgelopen 3 maanden</msg> <msg key="past_3_months">afgelopen 3 maanden</msg>
<msg key="past_6_months">afgelopen 6 maanden</msg> <msg key="past_6_months">afgelopen 6 maanden</msg>
<msg key="past_year">afgelopen jaar</msg> <msg key="past_year">afgelopen jaar</msg>
<msg key="Previous">Vorige</msg> <msg key="Previous">Vorige</msg>
<msg key="Result_page">Resultaatpagina:</msg> <msg key="Result_page">Resultaatpagina:</msg>
<msg key="Results">Resultaten</msg>
<msg key="results">Resultaten</msg> <msg key="results">Resultaten</msg>
<msg key="Search">Zoeken</msg> <msg key="Search">Zoeken</msg>
<msg key="Searched_for_query">Gezocht naar: %query%</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="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="Try_fewer_keywords">Probeer minder kernwoorden.</msg>
<msg key="Untitled">Naamloos</msg> <msg key="Untitled">Naamloos</msg>
</message_catalog> </message_catalog>
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="search" locale="pl_PL" charset="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_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_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="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="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_3_months">zeszłe 3 miesiące</msg>
<msg key="past_6_months">zeszłych 6 miesięcy</msg> <msg key="past_6_months">zeszłych 6 miesięcy</msg>
<msg key="past_year">zeszły rok</msg> <msg key="past_year">zeszły rok</msg>
<msg key="Previous">Poprzednie</msg> <msg key="Previous">Poprzednie</msg>
<msg key="Result_page">Strona Wyników:</msg> <msg key="Result_page">Strona Wyników:</msg>
<msg key="Results">Wyniki</msg>
<msg key="results">wyniki</msg> <msg key="results">wyniki</msg>
<msg key="Search">Szukaj</msg> <msg key="Search">Szukaj</msg>
<msg key="Searched_for_query">Szukano frazy: &lt;b&gt;%query%&lt;/b&gt;</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="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="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> </message_catalog>
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<msg key="Date_Range">Intervalo de Data</msg> <msg key="Date_Range">Intervalo de Data</msg>
<msg key="details">detelhes</msg> <msg key="details">detelhes</msg>
<msg key="Feeling_Lucky">Sinto-me com Sorte</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_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_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> <msg key="lt_Try_different_keyword">Tente palavras-chave diferentes.</msg>
......
...@@ -3,16 +3,16 @@ ...@@ -3,16 +3,16 @@
<msg key="________Search_took">.Диапазон поиска</msg> <msg key="________Search_took">.Диапазон поиска</msg>
<msg key="Advanced_Search">Расширенный поиск</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="anytime">в любое время</msg>
<msg key="Date_Range">Диапазон дат</msg> <msg key="Date_Range">Диапазон дат</msg>
<msg key="details">подробности</msg> <msg key="details">подробности</msg>
<msg key="Enter_keywords_to_search_for">Ввести ключевые слова для поиска</msg> <msg key="Enter_keywords_to_search_for">Ввести ключевые слова для поиска</msg>
<msg key="Feeling_Lucky">Мне повезёт</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_FtsEngineDriver_not_a">FtsEngineDriver отсутствует!</msg>
<msg key="lt_Make_sure_all_words_a">Проверьте правильность написания всех слов.</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_The_following_words_a">Следующие слова слишком общие и не были включены в ваш поисковый запрос:</msg>
<msg key="lt_Tip_In_most_browsers_">Подсказка: В большинстве броузеров вы можете нажать клавишу Назад вместо кнопки поиск.</msg> <msg key="lt_Tip_In_most_browsers_">Подсказка: В большинстве броузеров вы можете нажать клавишу Назад вместо кнопки поиск.</msg>
<msg key="lt_Try_different_keyword">Попробуйте разные ключевые слова.</msg> <msg key="lt_Try_different_keyword">Попробуйте разные ключевые слова.</msg>
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
<msg key="seconds">секунд.</msg> <msg key="seconds">секунд.</msg>
<msg key="selected">выбрано</msg> <msg key="selected">выбрано</msg>
<msg key="Suggestions">Предложения:</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="Try_fewer_keywords">Попробуйте сократить количество ключевых слов.</msg>
<msg key="Untitled">Без названия </msg> <msg key="Untitled">Без названия </msg>
</message_catalog> </message_catalog>
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<li><a href="@url_previous@">&lt;</a></li> <li><a href="@url_previous@">&lt;</a></li>
</else> </else>
<multiple name="results_paginator"> <multiple name="results_paginator">
<if @results_paginator.current_p@> <if @results_paginator.current_p;literal@ true>
<li class="current">@results_paginator.item@</li> <li class="current">@results_paginator.item@</li>
</if> </if>
<else> <else>
......
...@@ -12,39 +12,41 @@ set last_page_group [expr { int($last_result_page / $pages_per_group) }] ...@@ -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 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 }] 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 } { if { $current_page_group >= 1 } {
set offset [expr {($current_page_group - 1) * $pages_per_group * $limit}] 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 { } else {
set url_previous_group "" set url_previous_group ""
} }
if { $current_page_group < $last_page_group } { if { $current_page_group < $last_page_group } {
set offset [expr {($current_page_group + 1) * $pages_per_group * $limit}] 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 { } else {
set url_next_group "" set url_next_group ""
} }
if { $current_result_page > 0 } { if { $current_result_page > 0 } {
set offset [expr {($current_result_page - 1) * $limit}] 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 { } else {
set url_previous "" set url_previous ""
} }
if { $current_result_page < $last_result_page } { if { $current_result_page < $last_result_page } {
set offset [expr {$current_result_page * $limit + $limit}] 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 { } else {
set url_next "" set url_next ""
} }
template::multirow create results_paginator item link current_p template::multirow create results_paginator item link current_p
for { set __i $from_result_page } { $__i <= $to_result_page} { incr __i } { for { set __i $from_result_page } { $__i <= $to_result_page} { incr __i } {
set link "search?q=${urlencoded_query}&search_package_id=$search_package_id" set offset [expr {$__i * $limit}]
append link "&offset=[expr {$__i * $limit}]" set link [export_vars -base search {q search_package_id offset num __csrf_token}]
append link "&num=$num"
template::multirow append results_paginator [expr {$__i + 1}] $link [expr {$__i == $current_result_page}] 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> <div>
<input type="text" name="q" title="#search.Enter_keywords_to_search_for#" size="16" maxlength="256"> <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"> <input type="submit" value="#acs-kernel.common_search#" name="t">
<br> <br>
<a href="@advanced_search_url@">#search.Advanced_Search#</a> <a href="@advanced_search_url@">#search.Advanced_Search#</a>
......
...@@ -9,18 +9,19 @@ ...@@ -9,18 +9,19 @@
<implements-subsite-p>f</implements-subsite-p> <implements-subsite-p>f</implements-subsite-p>
<inherit-templates-p>t</inherit-templates-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> <owner url="http://openacs.org">OpenACS</owner>
<summary>Site wide search</summary> <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> <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> <license>GPL version 2</license>
<maturity>3</maturity> <maturity>3</maturity>
<provides url="search" version="5.9.0"/> <provides url="search" version="5.9.1"/>
<requires url="acs-service-contract" version="5.9.0"/> <requires url="acs-service-contract" version="5.9.1"/>
<requires url="acs-templating" version="5.9.0"/> <requires url="acs-tcl" version="5.9.1"/>
<requires url="acs-templating" version="5.9.1"/>
<callbacks> <callbacks>
<callback type="after-instantiate" proc="search::install::after_instantiate"/> <callback type="after-instantiate" proc="search::install::after_instantiate"/>
...@@ -34,6 +35,7 @@ ...@@ -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="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="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="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> </parameters>
</version> </version>
......
...@@ -22,6 +22,13 @@ ad_proc -public search::convert::binary_to_text { ...@@ -22,6 +22,13 @@ ad_proc -public search::convert::binary_to_text {
@creation-date 2005-06-25 @creation-date 2005-06-25
} { } {
if {[file size $filename] == 0} {
#
# Some conversion programs choke on empty content
#
return ""
}
set tmp_filename [ad_tmpnam] set tmp_filename [ad_tmpnam]
set result "" set result ""
...@@ -32,14 +39,14 @@ ad_proc -public search::convert::binary_to_text { ...@@ -32,14 +39,14 @@ ad_proc -public search::convert::binary_to_text {
} }
application/msexcel - application/msexcel -
application/vnd.ms-excel { application/vnd.ms-excel {
set convert_command {xls2csv $filename >$tmp_filename} set convert_command {xls2csv $filename >$tmp_filename 2> /dev/null}
} }
application/mspowerpoint - application/mspowerpoint -
application/vnd.ms-powerpoint { application/vnd.ms-powerpoint {
set convert_command {catppt $filename >$tmp_filename} set convert_command {catppt $filename >$tmp_filename}
} }
application/pdf { 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 -
application/vnd.oasis.opendocument.text-template - application/vnd.oasis.opendocument.text-template -
...@@ -52,7 +59,7 @@ ad_proc -public search::convert::binary_to_text { ...@@ -52,7 +59,7 @@ ad_proc -public search::convert::binary_to_text {
set convert_command {unzip -p $filename content.xml >$tmp_filename} set convert_command {unzip -p $filename content.xml >$tmp_filename}
} }
text/html { text/html {
file delete $tmp_filename file delete -- $tmp_filename
# #
# Reading the whole content into memory is not necessarily # Reading the whole content into memory is not necessarily
# the best when dealing with huge files. However, for # the best when dealing with huge files. However, for
...@@ -61,7 +68,7 @@ ad_proc -public search::convert::binary_to_text { ...@@ -61,7 +68,7 @@ ad_proc -public search::convert::binary_to_text {
return [ns_striphtml [template::util::read_file $filename]] return [ns_striphtml [template::util::read_file $filename]]
} }
text/plain { text/plain {
file delete $tmp_filename file delete -- $tmp_filename
# #
# Reading the whole content into memory is not necessarily # Reading the whole content into memory is not necessarily
# the best when dealing with huge files. However, for # the best when dealing with huge files. However, for
...@@ -78,16 +85,15 @@ ad_proc -public search::convert::binary_to_text { ...@@ -78,16 +85,15 @@ ad_proc -public search::convert::binary_to_text {
} }
if {[catch {eval exec $convert_command} err]} { 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" ns_log Error "SEARCH: conversion failed - $convert_command: $err"
file delete $tmp_filename
return return
} }
set fd [open $tmp_filename "r"] set fd [open $tmp_filename "r"]
set result [read $fd] set result [read $fd]
close $fd close $fd
file delete $tmp_filename file delete -- $tmp_filename
return $result return $result
} }
......
...@@ -14,7 +14,7 @@ ad_proc -public search::queue { ...@@ -14,7 +14,7 @@ ad_proc -public search::queue {
Add an object to the search_observer_queue table with Add an object to the search_observer_queue table with
an event. 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 created from a trigger (although search is robust for multiple
entries so it will not insert or update the same object entries so it will not insert or update the same object
more than once per sweep). more than once per sweep).
...@@ -302,7 +302,7 @@ ad_proc -private search::content_filter { ...@@ -302,7 +302,7 @@ ad_proc -private search::content_filter {
#ns_log notice "search::content_filter txt len [string length $txt]" #ns_log notice "search::content_filter txt len [string length $txt]"
if {[info exists tmp_filename]} { if {[info exists tmp_filename]} {
file delete $tmp_filename file delete -- $tmp_filename
} }
} }
......
...@@ -3,10 +3,11 @@ ...@@ -3,10 +3,11 @@
<property name="context">"advanced search"</property> <property name="context">"advanced search"</property>
<div> <div>
<form method=GET action=search> <form method="GET" action="search">
<p> <p>
<input type="text" name="q" size="41" maxlength="256" value="@q@"> <input type="text" name="q" size="41" maxlength="256" value="@q@">
<input type="submit" value="Search" name="t"> <input type="submit" value="Search" name="t">
<if @::__csrf_token@ defined><input type="hidden" name="__csrf_token" value="@::__csrf_token;literal@"></if>
</p> </p>
<p> <p>
<label for="dfs">#search.Date_Range#</label> <label for="dfs">#search.Date_Range#</label>
......
ad_page_contract { ad_page_contract {
@author Neophytos Demetriou @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] set package_id [ad_conn package_id]
......
...@@ -13,19 +13,19 @@ Making an object type searchable involves three steps: ...@@ -13,19 +13,19 @@ Making an object type searchable involves three steps:
In most of the cases, choosing the object type is straightforward. In most of the cases, choosing the object type is straightforward.
However, if your object type uses the content repository then you However, if your object type uses the content repository then you
should make sure that your object type is a subclass of the should make sure that your object type is a subclass of the
"content_revision" class. You should also make sure all content is "content_revision" class. You should also make sure all
created using that subclass, rather than simply create content with content is created using that subclass, rather than simply create
the "content_revision" type. content with the "content_revision" type.
<ul> <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 <code>acs_object_type__create_type</code>, but those that use the
CR need to use <code>content_type__create_type</code>. CR need to use <code>content_type__create_type</code>.
<code>content_type__create_type</code> overloads <code>content_type__create_type</code> overloads
<code>acs_object_type__create_type</code> and provides two views <code>acs_object_type__create_type</code> and provides two views
for inserting and viewing content data, and the CR depends on these for inserting and viewing content data, and the CR depends on these
views.</li><li>Whenever you call content_item__new, call it with views.</li><li>Whenever you call content_item__new, call it with
'content_revision' as the item_subtype and 'your_content_type' as 'content_revision' as the item_subtype and
the content_type.</li> 'your_content_type' as the content_type.</li>
</ul><h3>Implement FtsContentProvider</h3> </ul><h3>Implement FtsContentProvider</h3>
FtsContentProvider is comprised of two abstract operations, namely FtsContentProvider is comprised of two abstract operations, namely
<code>datasource</code> and <code>url</code>. The specification for <code>datasource</code> and <code>url</code>. The specification for
...@@ -70,9 +70,9 @@ You should adapt this association to reflect your implementation. ...@@ -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 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 the <code>impl_owner_name</code> to the package key. Next, you have
to create associations between the operations of to create associations between the operations of
<code>FtsContentProvider</code> and your concrete functions. Here's <code>FtsContentProvider</code> and your concrete functions.
how an association between an operation and a concrete function Here&#39;s how an association between an operation and a concrete
looks like: function looks like:
<pre><code>select acs_sc_impl_alias__new( <pre><code>select acs_sc_impl_alias__new(
'FtsContentProvider', -- impl_contract_name 'FtsContentProvider', -- impl_contract_name
'note', -- impl_name 'note', -- impl_name
...@@ -91,7 +91,7 @@ If your object type uses the content repository to store its items, ...@@ -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 then you are done. If not, an extra step is required to inform the
search_observer_queue of new content items, updates or deletions. search_observer_queue of new content items, updates or deletions.
We do this by adding triggers on the table that stores the content 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>. <code>note</code>.
<pre><code>create function notes__itrg () <pre><code>create function notes__itrg ()
returns opaque as $$ returns opaque as $$
......
...@@ -2,11 +2,12 @@ ...@@ -2,11 +2,12 @@
<property name="doc(title)">#search.Search#</property> <property name="doc(title)">#search.Search#</property>
<div style="text-align:center"> <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><small><a href="advanced-search">#search.Advanced_Search#</a></small></div>
<div> <div>
<input type="text" name="q" size="80" maxlength="256"> <input type="text" name="q" size="80" maxlength="256">
<br> <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.Search#" name="t">
<input type="submit" value="#search.Feeling_Lucky#" name="t"> <input type="submit" value="#search.Feeling_Lucky#" name="t">
</div> </div>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<property name="context">@context;literal@</property> <property name="context">@context;literal@</property>
<property name="doc(title)">@page_title;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"> <font color="6f6f6f">
#search.The# #search.The#
[<a href="help/basics#and">#search.details#</a>]<br> [<a href="help/basics#and">#search.details#</a>]<br>
...@@ -16,14 +16,13 @@ ...@@ -16,14 +16,13 @@
</if> </if>
<if @nstopwords@ gt 1> <if @nstopwords@ gt 1>
<font color="6f6f6f"> <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> [<a href="help/basics#stopwords">#search.details#</a>]<br>
</font> </font>
</if> </if>
<if @count@ eq 0> <if @count@ eq 0>
Your search - <b>@query@</b> - did not match any content. #search.lt_No_pages_were_found_c#<strong>@query@</strong>".
<br>#search.lt_No_pages_were_found_c#<b>@query@</b>".
<br><br>#search.Suggestions# <br><br>#search.Suggestions#
<ul> <ul>
<li>#search.lt_Make_sure_all_words_a# <li>#search.lt_Make_sure_all_words_a#
...@@ -47,10 +46,10 @@ ...@@ -47,10 +46,10 @@
<li> <li>
<a href="@searchresult.url_one@" class="result-title"> <a href="@searchresult.url_one@" class="result-title">
<if @searchresult.title_summary@ nil>#search.Untitled#</if> <if @searchresult.title_summary@ nil>#search.Untitled#</if>
<else>@searchresult.title_summary;noquote@</else> <else>@searchresult.title_summary;literal@</else>
</a> </a>
<if @searchresult.txt_summary@ not nil> <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> </if>
<div class="result-url">@searchresult.url_one@</div> <div class="result-url">@searchresult.url_one@</div>
</li> </li>
...@@ -59,7 +58,7 @@ ...@@ -59,7 +58,7 @@
</div> </div>
</else> </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" paginator_class="list-paginator-bottom" count="@result.count;literal@" &="low" &="high"
&="offset" &="num" &="search_package_id"> &="offset" &="num" &="search_package_id">
...@@ -68,11 +67,12 @@ ...@@ -68,11 +67,12 @@
<form method="get" action="search"> <form method="get" action="search">
<div> <div>
<input type="text" name="q" size="60" maxlength="256" value="@query@"> <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#"> <input type="submit" value="#search.Search#">
</div> </div>
</form> </form>
<if @t@ eq "Search"> <if @t@ eq "Search">
<i>#search.lt_Tip_In_most_browsers_#</i> <em>#search.lt_Tip_In_most_browsers_#</em>
</if> </if>
</div> </div>
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
</if> </if>
</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> <p class="hint">#search.and_not_needed# [<a href="help/basics#and">#search.details#</a>]</p>
</if> </if>
<if @nstopwords@ eq 1> <if @nstopwords@ eq 1>
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
<p class="hint">#search.lt_The_following_words_a# [<a href="help/basics#stopwords">#search.details#</a>]</p> <p class="hint">#search.lt_The_following_words_a# [<a href="help/basics#stopwords">#search.details#</a>]</p>
</if> </if>
<if @debug_p@> <if @debug_p;literal@ true>
<p>#search.Searched_for_query#</p> <p>#search.Searched_for_query#</p>
<p>#search.Results_count#</p> <p>#search.Results_count#</p>
</if> </if>
......
...@@ -5,10 +5,10 @@ ad_page_contract { ...@@ -5,10 +5,10 @@ ad_page_contract {
} { } {
q:trim q:trim
{t:trim ""} {t:trim ""}
{offset:naturalnum 0} {offset:naturalnum,notnull 0}
{num:naturalnum 0} {num:range(0|200) 0}
{dfs:word,trim ""} {dfs:word,trim,notnull ""}
{dts:word,trim ""} {dts:word,trim,notnull ""}
{search_package_id:naturalnum ""} {search_package_id:naturalnum ""}
{scope ""} {scope ""}
{object_type:token ""} {object_type:token ""}
...@@ -18,12 +18,29 @@ ad_page_contract { ...@@ -18,12 +18,29 @@ ad_page_contract {
ad_complain "#search.lt_You_must_specify_some#" 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 page_title "Search Results"
set package_id [ad_conn package_id] set package_id [ad_conn package_id]
set package_url [ad_conn package_url] set package_url [ad_conn package_url]
set package_url_with_extras $package_url set package_url_with_extras $package_url
...@@ -64,7 +81,6 @@ if { $dfs eq "all" } { ...@@ -64,7 +81,6 @@ if { $dfs eq "all" } {
set dfs "" set dfs ""
} }
array set symbol2interval [parameter::get -package_id $package_id -parameter Symbol2Interval]
if { $dfs ne "" } { if { $dfs ne "" } {
set df [db_exec_plsql get_df "select now() + '$symbol2interval($dfs)'::interval"] 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 } { ...@@ -146,6 +162,7 @@ if { $info(automatic_and_queries_p) && "and" in $q } {
set url_advanced_search "" set url_advanced_search ""
append url_advanced_search "advanced-search?q=$urlencoded_query" 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" } if { $num > 0 } { append url_advanced_search "&num=$num" }
set query $q 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