From 447029ae70f4439f7fd9a10184131952faa66772 Mon Sep 17 00:00:00 2001 From: Athou Date: Wed, 19 Aug 2015 11:10:02 +0200 Subject: [PATCH 01/35] skip jsoup parsing for null strings (#754) --- src/main/java/com/commafeed/backend/feed/FeedUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/commafeed/backend/feed/FeedUtils.java b/src/main/java/com/commafeed/backend/feed/FeedUtils.java index f6513ecf..0edf3616 100644 --- a/src/main/java/com/commafeed/backend/feed/FeedUtils.java +++ b/src/main/java/com/commafeed/backend/feed/FeedUtils.java @@ -494,8 +494,8 @@ public class FeedUtils { Entry entry = it.next(); boolean keep = true; for (FeedEntryKeyword keyword : keywords) { - String title = Jsoup.parse(entry.getTitle()).text(); - String content = Jsoup.parse(entry.getContent()).text(); + String title = entry.getTitle() == null ? null : Jsoup.parse(entry.getTitle()).text(); + String content = entry.getContent() == null ? null : Jsoup.parse(entry.getContent()).text(); boolean condition = !StringUtils.containsIgnoreCase(content, keyword.getKeyword()) && !StringUtils.containsIgnoreCase(title, keyword.getKeyword()); if (keyword.getMode() == Mode.EXCLUDE) { From 9ace6b70f0b735ae5366751941f33e3168111cd1 Mon Sep 17 00:00:00 2001 From: Athou Date: Sat, 22 Aug 2015 03:00:33 +0200 Subject: [PATCH 02/35] frontend-maven-plugin upgrade (#747) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a12a52c0..a6b3524c 100644 --- a/pom.xml +++ b/pom.xml @@ -162,7 +162,7 @@ com.github.eirslett frontend-maven-plugin - 0.0.24 + 0.0.25 install node and npm From 5b486a917b24383b2ef98d6d10a0541e076011a7 Mon Sep 17 00:00:00 2001 From: Athou Date: Wed, 26 Aug 2015 17:50:20 +0200 Subject: [PATCH 03/35] dropwizard upgrade --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a6b3524c..808658ad 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ UTF-8 1.8 - 0.9.0-rc2 + 0.9.0-rc4 4.0 4.0.2 1.5.0 From 859cf468aa6e544f0db11f5c292cd3185fb81830 Mon Sep 17 00:00:00 2001 From: Athou Date: Thu, 27 Aug 2015 12:45:37 +0200 Subject: [PATCH 04/35] add openjdk ppa on ubuntu lts (fix #756) --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 099d9ac0..2c6e577e 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,12 @@ You also need the Java 1.8+ JDK in order to build the application. To install the required packages to build CommaFeed on Ubuntu, issue the following commands + # if openjdk-8-jdk is not available on your ubuntu version (14.04 LTS), add the following repo first + sudo add-apt-repository ppa:openjdk-r/ppa + sudo apt-get update + sudo apt-get install g++ build-essential openjdk-8-jdk + # Make sure java8 is the selected java version sudo update-alternatives --config java sudo update-alternatives --config javac From f00a066c22ad356ac6f395ca74b63301531b0dae Mon Sep 17 00:00:00 2001 From: Athou Date: Tue, 1 Sep 2015 16:58:18 +0200 Subject: [PATCH 05/35] languages should start with an uppercase (fix #759) --- src/main/app/js/i18n.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/app/js/i18n.js b/src/main/app/js/i18n.js index b4dde06b..2ee84f77 100644 --- a/src/main/app/js/i18n.js +++ b/src/main/app/js/i18n.js @@ -19,7 +19,7 @@ module.service('LangService', [function() { 'nn': 'Norsk (nynorsk)', 'pt': 'Português', 'pl': 'Polski', - 'ru': 'русский', + 'ru': 'Pусский', 'fi': 'Suomi', 'sv': 'Svenska', 'zh': '简体中文', From 1b8ff7ca61e28e841067f5759f586e74318179ed Mon Sep 17 00:00:00 2001 From: ebraminio Date: Sat, 10 Oct 2015 00:45:50 +0330 Subject: [PATCH 06/35] Use correct characters for ru lang It is similar but works better on some font setups --- src/main/app/js/i18n.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/app/js/i18n.js b/src/main/app/js/i18n.js index 2ee84f77..4de1426b 100644 --- a/src/main/app/js/i18n.js +++ b/src/main/app/js/i18n.js @@ -19,7 +19,7 @@ module.service('LangService', [function() { 'nn': 'Norsk (nynorsk)', 'pt': 'Português', 'pl': 'Polski', - 'ru': 'Pусский', + 'ru': 'Русский', 'fi': 'Suomi', 'sv': 'Svenska', 'zh': '简体中文', @@ -31,4 +31,4 @@ module.service('LangService', [function() { 'cs': 'Čeština', 'ms': 'Bahasa Malaysian' } -}]); \ No newline at end of file +}]); From 30264be311d22f56c91af50cc393d17e9e0f0d5e Mon Sep 17 00:00:00 2001 From: ebraminio Date: Mon, 19 Oct 2015 23:45:53 +0330 Subject: [PATCH 07/35] Add magnet links support --- src/main/java/com/commafeed/backend/feed/FeedUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/commafeed/backend/feed/FeedUtils.java b/src/main/java/com/commafeed/backend/feed/FeedUtils.java index 0edf3616..5c9e3369 100644 --- a/src/main/java/com/commafeed/backend/feed/FeedUtils.java +++ b/src/main/java/com/commafeed/backend/feed/FeedUtils.java @@ -86,7 +86,7 @@ public class FeedUtils { whitelist.addAttributes("th", "border", "bordercolor", "abbr", "axis", "colspan", "rowspan", "scope", "width"); whitelist.addAttributes("ul", "type"); - whitelist.addProtocols("a", "href", "ftp", "http", "https", "mailto"); + whitelist.addProtocols("a", "href", "ftp", "http", "https", "magnet", "mailto"); whitelist.addProtocols("blockquote", "cite", "http", "https"); whitelist.addProtocols("img", "src", "http", "https"); whitelist.addProtocols("q", "cite", "http", "https"); From 02ef8bee71a4d543623613a157be906352af949a Mon Sep 17 00:00:00 2001 From: JmsBnz Date: Sat, 31 Oct 2015 11:38:21 +0100 Subject: [PATCH 08/35] Update it.js Some translation fixes --- src/main/app/i18n/it.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main/app/i18n/it.js b/src/main/app/i18n/it.js index f2760c91..d1da9e87 100644 --- a/src/main/app/i18n/it.js +++ b/src/main/app/i18n/it.js @@ -8,24 +8,24 @@ "link" : "Link", "bookmark" : "Segnalibro", "close" : "Chiudi", - "tags" : "Etichette " + "tags" : "Tag" }, "tree" : { - "subscribe" : "Abbonati", + "subscribe" : "Iscriviti", "import" : "Importa", "new_category" : "Nuova categoria", "all" : "Tutto", "starred" : "Preferiti" }, "subscribe" : { - "feed_url" : "Feed URL", + "feed_url" : "URL del feed", "feed_name" : "Nome feed", "category" : "Categoria" }, "import" : { "google_reader_prefix" : "Permettimi di importare i tuoi feed dal tuo ", "google_reader_suffix" : " account.", - "google_download" : "Oppure, carica il tuo file subscriptions.xml.", + "google_download" : "Oppure carica il tuo file subscriptions.xml.", "google_download_link" : "Scaricalo da qui.", "xml_file" : "OPML File" }, @@ -39,8 +39,8 @@ "previous_entry" : "Precedente", "next_entry" : "Successivo", "refresh" : "Ricarica", - "refresh_all" : "Forza l'aggiornamento di tutte i miei feed", - "sort_by_asc_desc" : "Ordina per data ascendente/decrescente", + "refresh_all" : "Forza l'aggiornamento di tutti i feed", + "sort_by_asc_desc" : "Ordina per data crescente/decrescente", "titles_only" : "Solo i titoli", "expanded_view" : "Espandi", "mark_all_as_read" : "Segna tutto come già letto", @@ -56,11 +56,11 @@ "donate" : "Dona" }, "view" : { - "entry_source" : "da ", - "entry_author" : "di ", - "error_while_loading_feed" : "Si è verificato un errore durante il caricamento di questo feed", - "keep_unread" : "Mantiene come non leggere", - "no_unread_items" : "Non ci sono elementi da leggere.", + "entry_source" : "da", + "entry_author" : "di", + "error_while_loading_feed" : "Si è verificato un errore durante il caricamento del feed", + "keep_unread" : "Mantiene come da leggere", + "no_unread_items" : "Non ci sono elementi da leggere", "mark_up_to_here" : "Segna come letto fino qui", "search_for" : "cercando: ", "no_search_results" : "Nessun risultato trovato per le parole chiave cercate" @@ -102,10 +102,10 @@ "filtering_expression_help" : "Se non è vuoto, una espressione viene misurata in 'true' o 'false'. Se falsa, i nuovi elementi di questo feed verranno segnati automaticamente come letti.\nLe variabili accettate sono 'title', 'content', 'url' 'author' e 'categories' e il loro contenuto è convertito in minuscolo per una facile confronto di stringhe.\Esempio: url.contains('youtube') o (author eq 'athou' and title.contains('github').\nLa sintassi completa è disponibile qui.", "generate_api_key_first" : "Genera prima una chiave API nelle impostazioni del tuo profilo.", "unsubscribe" : "Annulla la sottoscrizione", - "unsubscribe_confirmation" : "Sei sicuro di voler annullare la sottoscrizione da questo feed?", + "unsubscribe_confirmation" : "Sei sicuro di voler annullare la sottoscrizione dal feed?", "delete_category_confirmation" : "Sei sicuro di voler eliminare questa categoria?", "category_details" : "Dettagli categoria", - "tag_details" : "Dettagli etichette ", + "tag_details" : "Dettagli tag", "parent_category" : "Categoria principale" }, "profile" : { @@ -118,10 +118,10 @@ "api_key" : "chiave API", "api_key_not_generated" : "Non ancora generata", "generate_new_api_key" : "Genera una nuova chiave API ", - "generate_new_api_key_info" : "Cambiando la password sarà generata una nuova chiave API ì", + "generate_new_api_key_info" : "Cambiando la password sarà generata una nuova chiave API", "opml_export" : "Esporta OPML", "delete_account" : "Elimina il profilo", - "delete_account_confirmation" : "Eliminare il tuo profilo? Non si può tornare indietro!" + "delete_account_confirmation" : "Vuoi eliminare il tuo profilo? Non si può tornare indietro!" }, "about" : { "rest_api" : { @@ -135,7 +135,7 @@ "line1_suffix" : ".", "line2_prefix" : "Se hai qualche problema, segnalalo sulla pagina del ", "line2_suffix" : " progetto.", - "line3" : "Se ti piace il progetto, considera una donazione per supportare lo sviluppatore ed a aiutare per coprire i costi di mantenenimento di questo sito online.", + "line3" : "Se ti piace il progetto, considera una donazione per supportare lo sviluppatore ed aiutare a coprire i costi di mantenenimento di questo sito online.", "line4" : "Se preferisci i Bitcoin, questo è l'indirizzo", "goodies" : { "value" : "Goodies", From 71efc9f8544b7ed5f1ce5add4f6f63106a3b4922 Mon Sep 17 00:00:00 2001 From: Athou Date: Sat, 7 Nov 2015 23:45:04 +0100 Subject: [PATCH 09/35] fix #766 --- src/main/app/i18n/it.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/app/i18n/it.js b/src/main/app/i18n/it.js index d1da9e87..f7dc0c42 100644 --- a/src/main/app/i18n/it.js +++ b/src/main/app/i18n/it.js @@ -99,7 +99,7 @@ "queued_for_refresh" : "In attesa per l'aggiornamento", "feed_url" : "URL del feed ", "filtering_expression" : "Espressione del filtro", - "filtering_expression_help" : "Se non è vuoto, una espressione viene misurata in 'true' o 'false'. Se falsa, i nuovi elementi di questo feed verranno segnati automaticamente come letti.\nLe variabili accettate sono 'title', 'content', 'url' 'author' e 'categories' e il loro contenuto è convertito in minuscolo per una facile confronto di stringhe.\Esempio: url.contains('youtube') o (author eq 'athou' and title.contains('github').\nLa sintassi completa è disponibile qui.", + "filtering_expression_help" : "Se non è vuoto, una espressione viene misurata in 'true' o 'false'. Se falsa, i nuovi elementi di questo feed verranno segnati automaticamente come letti.\nLe variabili accettate sono 'title', 'content', 'url' 'author' e 'categories' e il loro contenuto è convertito in minuscolo per una facile confronto di stringhe.\nEsempio: url.contains('youtube') o (author eq 'athou' and title.contains('github').\nLa sintassi completa è disponibile qui.", "generate_api_key_first" : "Genera prima una chiave API nelle impostazioni del tuo profilo.", "unsubscribe" : "Annulla la sottoscrizione", "unsubscribe_confirmation" : "Sei sicuro di voler annullare la sottoscrizione dal feed?", From d547e9b6d75e9e07b748fb641713dcfef260113f Mon Sep 17 00:00:00 2001 From: Giuseppe Calabrese Date: Mon, 23 Nov 2015 21:22:49 +0100 Subject: [PATCH 10/35] Fixed some translation. --- src/main/app/i18n/it.js | 132 ++++++++++++++++++++-------------------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/src/main/app/i18n/it.js b/src/main/app/i18n/it.js index f7dc0c42..56ce39c2 100644 --- a/src/main/app/i18n/it.js +++ b/src/main/app/i18n/it.js @@ -1,7 +1,7 @@ { "global" : { "save" : "Salva", - "cancel" : "Cancella", + "cancel" : "Annulla", "delete" : "Elimina", "required" : "Richiesto", "download" : "Download", @@ -14,20 +14,20 @@ "subscribe" : "Iscriviti", "import" : "Importa", "new_category" : "Nuova categoria", - "all" : "Tutto", + "all" : "Tutti", "starred" : "Preferiti" }, "subscribe" : { - "feed_url" : "URL del feed", + "feed_url" : "URL feed", "feed_name" : "Nome feed", "category" : "Categoria" }, "import" : { - "google_reader_prefix" : "Permettimi di importare i tuoi feed dal tuo ", - "google_reader_suffix" : " account.", + "google_reader_prefix" : "Permettimi di importare i feed dal tuo account ", + "google_reader_suffix" : ".", "google_download" : "Oppure carica il tuo file subscriptions.xml.", - "google_download_link" : "Scaricalo da qui.", - "xml_file" : "OPML File" + "google_download_link" : "Puoi scaricalo da qui.", + "xml_file" : "File OPML" }, "new_category" : { "name" : "Nome", @@ -38,12 +38,12 @@ "all" : "Tutti", "previous_entry" : "Precedente", "next_entry" : "Successivo", - "refresh" : "Ricarica", + "refresh" : "Aggiorna", "refresh_all" : "Forza l'aggiornamento di tutti i feed", "sort_by_asc_desc" : "Ordina per data crescente/decrescente", "titles_only" : "Solo i titoli", "expanded_view" : "Espandi", - "mark_all_as_read" : "Segna tutto come già letto", + "mark_all_as_read" : "Segna tutti come già letti", "mark_all_older_12_hours" : "Elementi più vecchi di 12 ore", "mark_all_older_day" : "Elementi più vecchi di un giorno", "mark_all_older_week" : "Elementi più vecchi di una settimana", @@ -59,50 +59,50 @@ "entry_source" : "da", "entry_author" : "di", "error_while_loading_feed" : "Si è verificato un errore durante il caricamento del feed", - "keep_unread" : "Mantiene come da leggere", - "no_unread_items" : "Non ci sono elementi da leggere", - "mark_up_to_here" : "Segna come letto fino qui", - "search_for" : "cercando: ", - "no_search_results" : "Nessun risultato trovato per le parole chiave cercate" + "keep_unread" : "Mantieni come da leggere", + "no_unread_items" : "non contiene elementi da leggere", + "mark_up_to_here" : "Segna come letto fin qui", + "search_for" : "Cerca: ", + "no_search_results" : "Nessun risultato per le parole chiave cercate" }, "feedsearch" : { - "hint" : "Digita in una sottoscrizione... ", - "help" : "Usa il tasto invio per selezionare e le frecce per navigare.", + "hint" : "Digita il nome di una sottoscrizione... ", + "help" : "Usa il tasto Invio per selezionare e le frecce per navigare.", "result_prefix" : "Le tue sottoscrizioni:" }, "settings" : { "general" : { "value" : "Generali", "language" : "Lingua", - "language_contribute" : "Contribuisci nelle traduzioni", - "show_unread" : "Mostra i feed e le categorie con elementi non letti", - "social_buttons" : "Mostra i pulsanti social network di condivisione", - "scroll_marks" : "In modalità estesa, segna come letto le voci quando scorri" + "language_contribute" : "Contribuisci alle traduzioni", + "show_unread" : "Mostra i feed e le categorie con voci non lette", + "social_buttons" : "Mostra i pulsanti di condivisione social", + "scroll_marks" : "In vista estesa, segna come lette le voci che scorri" }, "appearance" : "Aspetto", - "scroll_speed" : "Velocità dello scorrimento durante la navigazione tra i feed (in millisecondi) ", - "scroll_speed_help" : "Imposta 0 per disabilitare", + "scroll_speed" : "Velocità di scorrimento quando navighi tra i feed (in millisecondi)", + "scroll_speed_help" : "Imposta su 0 per disabilitare", "theme" : "Tema", - "submit_your_theme" : "Proponi il tuo tema", + "submit_your_theme" : "Sottoponi il tuo tema", "custom_css" : "CSS personalizzato" }, "details" : { "feed_details" : "Dettagli feed", - "url" : "URL ", - "website" : "Sito Web", + "url" : "URL", + "website" : "Sito web", "name" : "Nome", "category" : "Categoria", "position" : "Posizione", "last_refresh" : "Ultimo aggiornamento", "message" : "Ultimo messaggio di aggiornamento", "next_refresh" : "Prossimo aggiornamento", - "queued_for_refresh" : "In attesa per l'aggiornamento", - "feed_url" : "URL del feed ", - "filtering_expression" : "Espressione del filtro", - "filtering_expression_help" : "Se non è vuoto, una espressione viene misurata in 'true' o 'false'. Se falsa, i nuovi elementi di questo feed verranno segnati automaticamente come letti.\nLe variabili accettate sono 'title', 'content', 'url' 'author' e 'categories' e il loro contenuto è convertito in minuscolo per una facile confronto di stringhe.\nEsempio: url.contains('youtube') o (author eq 'athou' and title.contains('github').\nLa sintassi completa è disponibile qui.", + "queued_for_refresh" : "In coda per l'aggiornamento", + "feed_url" : "URL feed", + "filtering_expression" : "Espressione filtro", + "filtering_expression_help" : "Quando non è vuota, un'espressione viene valutata come 'vera' o 'falsa'. Se falsa, i nuovi elementi di questo feed verranno segnati automaticamente come letti.\nLe variabili accettate sono 'title' (titolo), 'content' (contenuto), 'url', 'author' (autore) e 'categories' (categorie); il loro contenuto è convertito in minuscolo per facilitarne il confronto.\nEsempio: url.contains('youtube') o (author eq 'athou' and title.contains('github')).\nLa sintassi completa è disponibile qui (in inglese).", "generate_api_key_first" : "Genera prima una chiave API nelle impostazioni del tuo profilo.", - "unsubscribe" : "Annulla la sottoscrizione", - "unsubscribe_confirmation" : "Sei sicuro di voler annullare la sottoscrizione dal feed?", + "unsubscribe" : "Disiscriviti", + "unsubscribe_confirmation" : "Sei sicuro di voler annullare la sottoscrizione al feed?", "delete_category_confirmation" : "Sei sicuro di voler eliminare questa categoria?", "category_details" : "Dettagli categoria", "tag_details" : "Dettagli tag", @@ -117,66 +117,66 @@ "passwords_do_not_match" : "Le password non corrispondono", "api_key" : "chiave API", "api_key_not_generated" : "Non ancora generata", - "generate_new_api_key" : "Genera una nuova chiave API ", + "generate_new_api_key" : "Genera una nuova chiave API", "generate_new_api_key_info" : "Cambiando la password sarà generata una nuova chiave API", "opml_export" : "Esporta OPML", - "delete_account" : "Elimina il profilo", - "delete_account_confirmation" : "Vuoi eliminare il tuo profilo? Non si può tornare indietro!" + "delete_account" : "Elimina account", + "delete_account_confirmation" : "Vuoi eliminare il tuo account? Non si può tornare indietro!" }, "about" : { "rest_api" : { "value" : "REST API", - "line1" : "CommaFeed è costruito sopra JAX-RS e AngularJS. Ed ovviamente, una REST API è disponibile.", - "link_to_documentation" : "Collegamento alla documentazione." + "line1" : "CommaFeed è basato su JAX-RS e AngularJS. Pertanto è disponibile una REST API.", + "link_to_documentation" : "Link alla documentazione." }, "keyboard_shortcuts" : "Scorciatoie da tastiera", "version" : "Versione di CommaFeed", - "line1_prefix" : "CommaFeed è un progetto open source. I codici sono ospitati su ", + "line1_prefix" : "CommaFeed è un progetto open source. Trovi i sorgenti su ", "line1_suffix" : ".", - "line2_prefix" : "Se hai qualche problema, segnalalo sulla pagina del ", - "line2_suffix" : " progetto.", - "line3" : "Se ti piace il progetto, considera una donazione per supportare lo sviluppatore ed aiutare a coprire i costi di mantenenimento di questo sito online.", - "line4" : "Se preferisci i Bitcoin, questo è l'indirizzo", + "line2_prefix" : "Se hai qualche problema, segnalalo sulla pagina del progetto ", + "line2_suffix" : ".", + "line3" : "Se ti piace questo progetto, considera una donazione per supportare lo sviluppatore e aiutare a coprire i costi di menutenzione di questo sito.", + "line4" : "Se preferisci Bitcoin, questo è l'indirizzo", "goodies" : { - "value" : "Goodies", + "value" : "Cose che potrebbero interessarti", "android_app" : "Applicazione Android", "subscribe_url" : "Sottoscrivi URL", "chrome_extension" : "Estensione per Chrome", "firefox_extension" : "Estensione per Firefox", "opera_extension" : "Estensione per Opera", "subscribe_bookmarklet" : "Aggiungi la sottoscrizione ai segnalibri (clicca)", - "subscribe_bookmarklet_asc" : "I più vecchi prima", - "subscribe_bookmarklet_desc" : "I più nuovi prima", - "next_unread_bookmarklet" : "Prossimo elemento non letto nei segnalibri (trascinali nella barra dei segnalibri)" + "subscribe_bookmarklet_asc" : "Prima i vecchi", + "subscribe_bookmarklet_desc" : "Prima i recenti", + "next_unread_bookmarklet" : "Bookmarklet al prossimo elemento da leggere (trascinalo nella barra dei segnalibri)" }, "translation" : { "value" : "Traduzioni", "message" : "Abbiamo bisogno del tuo aiuto per tradurre CommaFeed.", - "link" : "Vedi come aiutarci nella traduzioni." + "link" : "Scopri come aiutarci nella traduzioni." }, "announcements" : "Annunci", "shortcuts" : { "mouse_middleclick" : "click centrale del mouse", - "open_next_entry" : "apri l'elemento successivo", - "open_previous_entry" : "apri l'elemento precedente", - "spacebar" : "spazio/shift+spazio", - "move_page_down_up" : "muovi la pagina sopra/sotto", - "focus_next_entry" : "imposta il fuoco sull'elemento successivo senza aprirlo", - "focus_previous_entry" : "imposta il fuoco sull'elemento precedente senza aprirlo", - "open_next_feed" : "apri il feed successivo od una categoria", - "open_previous_feed" : "apri il feed precedente od una categoria", - "open_close_current_entry" : "apri/chiusi la categoria corrente", - "open_current_entry_in_new_window" : "apri il corrente elemento in una nuova finestra", - "open_current_entry_in_new_window_background" : "apri il corrente elemento in una nuova finestra in secondo piano", - "star_unstar" : "segna/togli il segno all'elemento corrente", - "mark_current_entry" : "segna come letto/non letto l'elemento corrente", - "mark_all_as_read" : "segna come letti tutti gli elementi", - "open_in_new_tab_mark_as_read" : "apri l'elemento in una nuova finestra e segnala come letta", - "fullscreen" : "alterna la modalità a schermo intero", - "font_size" : "aumenta/decrementa la grandezza del font dell'elemento corrente", - "go_to_all" : "vai nella visione totale", - "go_to_starred" : "vai nella visione dei preferiti", - "feed_search" : "naviga in una sottoscrizione scrivendo il suo nome" + "open_next_entry" : "apri successivo", + "open_previous_entry" : "apri precedente", + "spacebar" : "SPAZIO/MAIUSC+SPAZIO", + "move_page_down_up" : "muove la pagina in su/giù", + "focus_next_entry" : "metti a fuoco l'elemento successivo senza aprirlo", + "focus_previous_entry" : "metti a fuoco l'elemento precedente senza aprirlo", + "open_next_feed" : "apri il prossimo feed o categoria", + "open_previous_feed" : "apri il feed o la categoria precedente", + "open_close_current_entry" : "apri/chiudi la voce corrente", + "open_current_entry_in_new_window" : "apri la voce corrente in una nuova finestra", + "open_current_entry_in_new_window_background" : "apri la voce corrente in una nuova finestra in secondo piano", + "star_unstar" : "metti/togli la tua preferenza la voce corrente", + "mark_current_entry" : "segna la voce corrente come letta/non letta", + "mark_all_as_read" : "segna tutte le voci come lette", + "open_in_new_tab_mark_as_read" : "apri voce in un nuovo tab e segnala come letta", + "fullscreen" : "commuta la modalità a schermo intero", + "font_size" : "aumenta/decrementa la dimensione del font per la voce corrente", + "go_to_all" : "vai alla vista Tutti", + "go_to_starred" : "vai alla vista Preferiti", + "feed_search" : "raggiungi una sottoscrizione scrivendo il suo nome" } } } From 523b2b8db4ed48ab3005bafb9d204e7458c713c2 Mon Sep 17 00:00:00 2001 From: Giuseppe Calabrese Date: Mon, 23 Nov 2015 22:30:11 +0100 Subject: [PATCH 11/35] Fixed a couple typos. I felt free to change the `filtering_expression_help` and make it less ambiguous. --- src/main/app/i18n/it.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/app/i18n/it.js b/src/main/app/i18n/it.js index 56ce39c2..f2ce64f1 100644 --- a/src/main/app/i18n/it.js +++ b/src/main/app/i18n/it.js @@ -99,7 +99,7 @@ "queued_for_refresh" : "In coda per l'aggiornamento", "feed_url" : "URL feed", "filtering_expression" : "Espressione filtro", - "filtering_expression_help" : "Quando non è vuota, un'espressione viene valutata come 'vera' o 'falsa'. Se falsa, i nuovi elementi di questo feed verranno segnati automaticamente come letti.\nLe variabili accettate sono 'title' (titolo), 'content' (contenuto), 'url', 'author' (autore) e 'categories' (categorie); il loro contenuto è convertito in minuscolo per facilitarne il confronto.\nEsempio: url.contains('youtube') o (author eq 'athou' and title.contains('github')).\nLa sintassi completa è disponibile qui (in inglese).", + "filtering_expression_help" : "Quando non è vuota, l'espressione viene applicata a ogni nuovo elemento e valutata come 'vera' o 'falsa'. Se falsa, l'elemento verrà segnato automaticamente come letto.\nLe variabili accettate sono 'title' (titolo), 'content' (contenuto), 'url', 'author' (autore) e 'categories' (categorie); il loro contenuto è convertito in minuscolo per facilitarne il confronto.\nEsempio: url.contains('youtube') or (author eq 'athou' and title.contains('github')).\nLa sintassi completa è disponibile qui (in inglese).", "generate_api_key_first" : "Genera prima una chiave API nelle impostazioni del tuo profilo.", "unsubscribe" : "Disiscriviti", "unsubscribe_confirmation" : "Sei sicuro di voler annullare la sottoscrizione al feed?", @@ -135,7 +135,7 @@ "line1_suffix" : ".", "line2_prefix" : "Se hai qualche problema, segnalalo sulla pagina del progetto ", "line2_suffix" : ".", - "line3" : "Se ti piace questo progetto, considera una donazione per supportare lo sviluppatore e aiutare a coprire i costi di menutenzione di questo sito.", + "line3" : "Se ti piace questo progetto, considera una donazione per supportare lo sviluppatore e aiutare a coprire i costi di manutenzione di questo sito.", "line4" : "Se preferisci Bitcoin, questo è l'indirizzo", "goodies" : { "value" : "Cose che potrebbero interessarti", @@ -168,10 +168,10 @@ "open_close_current_entry" : "apri/chiudi la voce corrente", "open_current_entry_in_new_window" : "apri la voce corrente in una nuova finestra", "open_current_entry_in_new_window_background" : "apri la voce corrente in una nuova finestra in secondo piano", - "star_unstar" : "metti/togli la tua preferenza la voce corrente", + "star_unstar" : "metti/togli la tua preferenza alla voce corrente", "mark_current_entry" : "segna la voce corrente come letta/non letta", "mark_all_as_read" : "segna tutte le voci come lette", - "open_in_new_tab_mark_as_read" : "apri voce in un nuovo tab e segnala come letta", + "open_in_new_tab_mark_as_read" : "apri voce in un nuovo tab e segna come letta", "fullscreen" : "commuta la modalità a schermo intero", "font_size" : "aumenta/decrementa la dimensione del font per la voce corrente", "go_to_all" : "vai alla vista Tutti", From f912d3b8bdd19abb213cea3ceaf70f497399bd5e Mon Sep 17 00:00:00 2001 From: Athou Date: Wed, 25 Nov 2015 16:44:19 +0100 Subject: [PATCH 12/35] swagger upgrade --- pom.xml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 808658ad..d48e049a 100644 --- a/pom.xml +++ b/pom.xml @@ -132,7 +132,7 @@ com.github.kongchen swagger-maven-plugin - 3.1.0 + 3.1.1 @@ -143,10 +143,9 @@ CommaFeed ${project.version} - - - - + + com.commafeed.backend.model.User + From 68e5ed64c9d91639958affc7d79260899d182e21 Mon Sep 17 00:00:00 2001 From: Athou Date: Wed, 25 Nov 2015 16:49:18 +0100 Subject: [PATCH 13/35] dropwizard upgrade --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d48e049a..f2207705 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ UTF-8 1.8 - 0.9.0-rc4 + 0.9.1 4.0 4.0.2 1.5.0 From fae94d36964367da6bcbfa33275cfc5ae76e1482 Mon Sep 17 00:00:00 2001 From: Athou Date: Wed, 25 Nov 2015 16:50:42 +0100 Subject: [PATCH 14/35] jdbc drivers upgrade --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index f2207705..123957b7 100644 --- a/pom.xml +++ b/pom.xml @@ -414,17 +414,17 @@ com.h2database h2 - 1.4.187 + 1.4.190 mysql mysql-connector-java - 5.1.35 + 5.1.37 org.postgresql postgresql - 9.4-1201-jdbc41 + 9.4-1205-jdbc42 net.sourceforge.jtds From 9eb6e8ec27925fd471bce61012a1920cb0c566c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dobros=C5=82aw=20=C5=BBybort?= Date: Mon, 30 Nov 2015 09:48:20 +0100 Subject: [PATCH 15/35] [add] css ids for toolbar --- src/main/app/templates/_toolbar.html | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/app/templates/_toolbar.html b/src/main/app/templates/_toolbar.html index d59c3d8f..aadf5800 100644 --- a/src/main/app/templates/_toolbar.html +++ b/src/main/app/templates/_toolbar.html @@ -6,14 +6,14 @@ -
+
-
+
@@ -28,7 +28,7 @@
-
+
@@ -57,7 +57,7 @@
-
+
-
+ -
+ -
+
@@ -133,4 +133,4 @@
-
\ No newline at end of file +
From d43820cc8290c109a6924f89a6b171129eca80f1 Mon Sep 17 00:00:00 2001 From: Athou Date: Fri, 8 Jan 2016 16:12:15 +0100 Subject: [PATCH 16/35] change npm install log level to info --- pom.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pom.xml b/pom.xml index 123957b7..b70a6147 100644 --- a/pom.xml +++ b/pom.xml @@ -180,6 +180,9 @@ npm compile + + install --loglevel info + bower install From b444a74a445822896e879f9552504636f31250fd Mon Sep 17 00:00:00 2001 From: Athou Date: Mon, 18 Jan 2016 10:01:05 +0100 Subject: [PATCH 17/35] change user agent so that self hosted instances don't point to commafeed.com --- src/main/java/com/commafeed/backend/HttpGetter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/commafeed/backend/HttpGetter.java b/src/main/java/com/commafeed/backend/HttpGetter.java index a2ac67da..31d52a56 100644 --- a/src/main/java/com/commafeed/backend/HttpGetter.java +++ b/src/main/java/com/commafeed/backend/HttpGetter.java @@ -70,7 +70,7 @@ public class HttpGetter { @Inject public HttpGetter(CommaFeedConfiguration config) { - this.userAgent = String.format("CommaFeed/%s (https://www.commafeed.com)", config.getVersion()); + this.userAgent = String.format("CommaFeed/%s (https://github.com/Athou/commafeed)", config.getVersion()); } public HttpResult getBinary(String url, int timeout) throws ClientProtocolException, IOException, NotModifiedException { From b76ee4a2d018e277ed67402494a53db0102d0f5c Mon Sep 17 00:00:00 2001 From: canoine Date: Wed, 20 Jan 2016 01:55:09 +0100 Subject: [PATCH 18/35] Update fr.js Translation of the sentences that were still in english. Some stylistic, grammatical and orthographic corrections. --- src/main/app/i18n/fr.js | 52 ++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/main/app/i18n/fr.js b/src/main/app/i18n/fr.js index 1cf37ffb..3e9174e7 100644 --- a/src/main/app/i18n/fr.js +++ b/src/main/app/i18n/fr.js @@ -34,24 +34,24 @@ "parent" : "Parent" }, "toolbar" : { - "unread" : "Non-lus", + "unread" : "Non lus", "all" : "Tous", "previous_entry" : "Article précédent", "next_entry" : "Article suivant", "refresh" : "Rafraîchir", - "refresh_all" : "Force refresh all my feeds ", + "refresh_all" : "Rafraîchir tous les flux", "sort_by_asc_desc" : "Trier par date croissante/décroissante", "titles_only" : "Titres uniquement", "expanded_view" : "Vue étendue", "mark_all_as_read" : "Tout marquer comme lu", - "mark_all_older_12_hours" : "Items older than 12 hours ", - "mark_all_older_day" : "Articles de plus d'un jour", + "mark_all_older_12_hours" : "Articles de plus de 12 heures", + "mark_all_older_day" : "Articles de plus d'une journée", "mark_all_older_week" : "Articles de plus d'une semaine", "mark_all_older_two_weeks" : "Articles de plus d'un mois", "settings" : "Préférences", "profile" : "Profil", "admin" : "Administration", - "about" : "A propos", + "about" : "À propos", "logout" : "Déconnexion", "donate" : "Faire un don" }, @@ -59,16 +59,16 @@ "entry_source" : "sur", "entry_author" : "par ", "error_while_loading_feed" : "Erreur durant le chargement de ce flux", - "keep_unread" : "Garder non-lu", - "no_unread_items" : "n'a pas d'articles non-lus.", + "keep_unread" : "Garder non lu", + "no_unread_items" : "n'a pas d'articles non lus.", "mark_up_to_here" : "Marquer comme lu jusqu'ici", - "search_for" : "searching for: ", - "no_search_results" : "No match found for the requested keywords " + "search_for" : "recherche : ", + "no_search_results" : "Pas de résultats avec le terme indiqué." }, "feedsearch" : { "hint" : "Tapez un nom de flux", "help" : "Utilisez la touche entrée pour sélectionner et les flèches pour naviguer", - "result_prefix" : "Vos flux:" + "result_prefix" : "Vos flux :" }, "settings" : { "general" : { @@ -76,12 +76,12 @@ "language" : "Langue", "language_contribute" : "Contribuer aux traductions", "show_unread" : "Afficher les flux et les catégories pour lesquels tout est déjà lu", - "social_buttons" : "Afficher les boutons de partage sur réseaux sociaux", - "scroll_marks" : "En mode de lecture étendu, marquer comme lu les éléments lorsque la fenêtre descend." + "social_buttons" : "Afficher les boutons de partage sur les réseaux sociaux", + "scroll_marks" : "En mode de lecture étendu, marquer les éléments comme lus lorsque la fenêtre descend." }, "appearance" : "Apparence", - "scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ", - "scroll_speed_help" : "set to 0 to disable ", + "scroll_speed" : "Vitesse de défilement entre les entrées (en millisecondes) ", + "scroll_speed_help" : "Mettez 0 pour désactiver", "theme" : "Thème", "submit_your_theme" : "Soumettez votre thème.", "custom_css" : "CSS personnelle" @@ -94,16 +94,16 @@ "category" : "Catégorie", "position" : "Position", "last_refresh" : "Dernière mise à jour", - "message" : "Last refresh message ", + "message" : "Message de la dernière mise à jour ", "next_refresh" : "Prochaine mise à jour", "queued_for_refresh" : "En file d'attente", "feed_url" : "URL du flux", - "generate_api_key_first" : "Générez une clé API dans votre profil d'abord.", + "generate_api_key_first" : "Générez d'abord une clé API dans votre profil.", "unsubscribe" : "Se désabonner", - "unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ", - "delete_category_confirmation" : "Are you sure you want to delete this category? ", + "unsubscribe_confirmation" : "Êtes-vous sûr de vouloir vous désabonner de de flux ? ", + "delete_category_confirmation" : "Êtes-vous sûr de vouloir supprimer cette catégorie ? ", "category_details" : "Détails de la catégorie", - "tag_details" : "Tag details ", + "tag_details" : "Détails du tag", "parent_category" : "Catégorie parente" }, "profile" : { @@ -116,15 +116,15 @@ "api_key" : "Clé API", "api_key_not_generated" : "Pas encore générée", "generate_new_api_key" : "Générer une nouvelle clé API", - "generate_new_api_key_info" : "Changer de mot de passe va générer une nouvelle clé API", + "generate_new_api_key_info" : "Changer de mot de passe générera une nouvelle clé API", "opml_export" : "Export du fichier OPML", "delete_account" : "Effacer le compte", - "delete_account_confirmation" : "Delete your acount? There's no turning back! " + "delete_account_confirmation" : "Êtes-vous sûr de vouloir supprimer définitivement votre compte ?" }, "about" : { "rest_api" : { "value" : "API REST", - "line1" : "CommaFeed utilise JAX-RS et AngularJS, donc une API REST est disponible.", + "line1" : "CommaFeed utilise JAX-RS et AngularJS, une API REST est donc disponible.", "link_to_documentation" : "Lien vers la documentation." }, "keyboard_shortcuts" : "Raccourcis clavier", @@ -145,7 +145,7 @@ "subscribe_bookmarklet" : "Bookmarklet d'ajout d'abonnement", "subscribe_bookmarklet_asc" : "Du plus ancien au plus récent", "subscribe_bookmarklet_desc" : "Du plus récent au plus ancien", - "next_unread_bookmarklet" : "Bookmarklet vers le prochain article non-lu" + "next_unread_bookmarklet" : "Bookmarklet vers le prochain article non lu" }, "translation" : { "value" : "Traduction", @@ -165,9 +165,9 @@ "open_previous_feed" : "Sélectionner le flux ou la catégorie précédente", "open_close_current_entry" : "Ouvrir/fermer l'article courant", "open_current_entry_in_new_window" : "Ouvrir l'article courant dans une nouvelle fenêtre", - "open_current_entry_in_new_window_background" : "Ouvrir l'article courant dans une nouvelle fenêtre en arrière plan", + "open_current_entry_in_new_window_background" : "Ouvrir l'article courant dans une nouvelle fenêtre en arrière-plan", "star_unstar" : "Ajouter/enlever l'article courant des favoris", - "mark_current_entry" : "Marquer comme lue/non-lue l'article courant", + "mark_current_entry" : "Marquer comme lu/non lu l'article courant", "mark_all_as_read" : "Marquer tous les articles comme lus", "open_in_new_tab_mark_as_read" : "Ouvrir l'article courant dans une nouvelle fenêtre et marquer comme lu", "fullscreen" : "Activer/désactiver le mode plein-écran", @@ -177,4 +177,4 @@ "feed_search" : "Naviguer vers un flux en entrant son nom" } } -} \ No newline at end of file +} From 9c1f5efab5dd5cdcbdcde0a19ef7ae64b6ba55fe Mon Sep 17 00:00:00 2001 From: badarg Date: Sun, 14 Feb 2016 20:36:28 +0100 Subject: [PATCH 19/35] Improved spanish translation. Fixed grammar, orthography, sundry mistakes, and added missing strings. --- src/main/app/i18n/es.js | 194 ++++++++++++++++++++-------------------- 1 file changed, 98 insertions(+), 96 deletions(-) diff --git a/src/main/app/i18n/es.js b/src/main/app/i18n/es.js index 2f36fd97..993c9a11 100644 --- a/src/main/app/i18n/es.js +++ b/src/main/app/i18n/es.js @@ -7,24 +7,26 @@ "download" : "Descargar", "link" : "Enlace", "bookmark" : "Marcador", - "close" : "Close ", - "tags" : "Tags " + "close" : "Cerrar", + "tags" : "Etiquetas" }, "tree" : { - "subscribe" : "Subscribir", + "subscribe" : "Suscribirse", "import" : "Importar", "new_category" : "Nueva categoría", "all" : "Todos", - "starred" : "Destacado" + "starred" : "Destacados" }, "subscribe" : { - "feed_url" : "URL del Canal", - "feed_name" : "Nombre del Canal", + "feed_url" : "URL del canal", + "filtering_expression" : "Expresión de filtrado", + "filtering_expression_help" : "Si no está vacía, una expresión se evalúa como 'cierta' o 'falsa'. Si es falsa, las nueva entradas de este canal se marcarán como leídas automáticamente.\nLas variables disponibles son 'title' (título), 'content'(contenido), 'url' (URL), 'author' (autor), y 'categories' (categorías) y sus contenidos son convertidos a minúsculas para facilitar la comparación de strings (cadenas de texto).\nEjemplo: url.contains('youtube') or (author eq 'athou' and title.contains('github').\nLa sintaxis completa está disponible aquí.", + "feed_name" : "Nombre del canal", "category" : "Categoría" }, "import" : { - "google_reader_prefix" : "Déjame importar tus canales de tu", - "google_reader_suffix" : " cuenta.", + "google_reader_prefix" : "Déjame importar tus canales de tu cuenta ", + "google_reader_suffix" : ".", "google_download" : "También puedes subir tu archivo subscriptions.xml.", "google_download_link" : "Descárgalo de aquí.", "xml_file" : "Archivo OPML" @@ -34,147 +36,147 @@ "parent" : "Padre" }, "toolbar" : { - "unread" : "Sin Leer", + "unread" : "No leídos", "all" : "Todos", - "previous_entry" : "Entrada Anterior", - "next_entry" : "Próxima Entrada", + "previous_entry" : "Entrada anterior", + "next_entry" : "Entrada siguiente", "refresh" : "Atualizar", - "refresh_all" : "Force refresh all my feeds ", - "sort_by_asc_desc" : "Ordenar por fecha asc/desc", - "titles_only" : "Sólo Títulos", - "expanded_view" : "Vista Expandida", + "refresh_all" : "Forzar la actualización de todos mis canales.", + "sort_by_asc_desc" : "Ordenar por fecha asc/desc.", + "titles_only" : "Sólo títulos", + "expanded_view" : "Vista expandida", "mark_all_as_read" : "Marcar todos como leído", - "mark_all_older_12_hours" : "Items older than 12 hours ", - "mark_all_older_day" : "Artículos anteriores a un día", - "mark_all_older_week" : "Artículos más de una semana", - "mark_all_older_two_weeks" : "Artículos más de does semanas", + "mark_all_older_12_hours" : "Entradas anteriores a 12 horas.", + "mark_all_older_day" : "Entradas anteriores a un día.", + "mark_all_older_week" : "Entradas anteriores a una semana.", + "mark_all_older_two_weeks" : "Entradas anteriores a 2 semanas.", "settings" : "Ajustes", "profile" : "Perfil", "admin" : "Admin", - "about" : "Acerca de", + "about" : "Acerca de...", "logout" : "Cerrar sesión", "donate" : "Donar" }, "view" : { - "entry_source" : "from ", - "entry_author" : "by ", - "error_while_loading_feed" : "Error mientras se cargaba este canal", - "keep_unread" : "Guardar no leídos", - "no_unread_items" : "no tiene items sin leer.", - "mark_up_to_here" : "Mark as read up to here ", - "search_for" : "searching for: ", - "no_search_results" : "No match found for the requested keywords " + "entry_source" : "de ", + "entry_author" : "por ", + "error_while_loading_feed" : "Error mientras se cargaba este canal.", + "keep_unread" : "Mantener como no leído.", + "no_unread_items" : "no tiene entradas sin leer.", + "mark_up_to_here" : "Marcar como leídos hasta aquí.", + "search_for" : "buscando: ", + "no_search_results" : "No se han encontrado resultados para las palabras clave especificadas." }, "feedsearch" : { - "hint" : "Type in a subscription... ", - "help" : "Use the return key to select and arrow keys to navigate. ", - "result_prefix" : "Your subscriptions: " + "hint" : "Introduce una suscripción...", + "help" : "Usa la tecla Intro para seleccionar y las teclas de flecha para navegar.", + "result_prefix" : "Tus suscripciones:" }, "settings" : { "general" : { "value" : "General", - "language" : "Lenguaje", - "language_contribute" : "Contribuye con traducciones", + "language" : "Idioma", + "language_contribute" : "Contribuye con traducciones.", "show_unread" : "Mostrar canales y categorías sin entradas no leídas.", - "social_buttons" : "Mostrar botones de compartir de redes sociales.", - "scroll_marks" : "En vista expandida, el desplazamiento por las entradas las marca como leídas" + "social_buttons" : "Mostrar botones para compartir de redes sociales.", + "scroll_marks" : "En vista expandida, el desplazamiento por las entradas las marca como leídas." }, - "appearance" : "Appearance ", - "scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ", - "scroll_speed_help" : "set to 0 to disable ", - "theme" : "Theme ", - "submit_your_theme" : "Submit your theme ", - "custom_css" : "CSS Personalizado" + "appearance" : "Apariencia", + "scroll_speed" : "Velocidad de desplazamiento al navegar entre entradas (en milisegundos)", + "scroll_speed_help" : "ponlo a 0 para desactivarlo", + "theme" : "Tema", + "submit_your_theme" : "Envía tu tema ", + "custom_css" : "CSS personalizado" }, "details" : { - "feed_details" : "Detalles de Canales", + "feed_details" : "Detalles del canal", "url" : "URL", - "website" : "Website ", + "website" : "Sitio web", "name" : "Nombre", "category" : "Categoría", - "position" : "Position ", + "position" : "Posicióon", "last_refresh" : "Última actualización", - "message" : "Last refresh message ", - "next_refresh" : "Next refresh ", - "queued_for_refresh" : "Queued for refresh ", - "feed_url" : "URL del Canal", - "generate_api_key_first" : "Genera una llave API en tu perfil primero.", - "unsubscribe" : "Terminar subscripción", - "unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ", - "delete_category_confirmation" : "Are you sure you want to delete this category? ", + "message" : "Último mensaje de actualización", + "next_refresh" : "Próxima actualización", + "queued_for_refresh" : "En cola para actualizar", + "feed_url" : "URL del canal", + "generate_api_key_first" : "Genera una clave API en tu perfil primero.", + "unsubscribe" : "Terminar suscripción", + "unsubscribe_confirmation" : "¿Estás seguro de querer terminar tu suscripción a este canal?", + "delete_category_confirmation" : "¿Estás seguro de querer eliminar esta categoría?", "category_details" : "Detalles de la categoría", - "tag_details" : "Tag details ", + "tag_details" : "Detalles de las etiuqetas ", "parent_category" : "Categoría principal" }, "profile" : { "user_name" : "Nombre de usuario", - "email" : "Correo", + "email" : "Correo electrónico", "change_password" : "Cambiar contraseña", "confirm_password" : "Confirmar contraseña", "minimum_6_chars" : "Mínimo 6 caracteres", "passwords_do_not_match" : "Las contraseñas no coinciden", - "api_key" : "Llave API", + "api_key" : "Clave API", "api_key_not_generated" : "No generado todavía", - "generate_new_api_key" : "Generar nueva llave API", - "generate_new_api_key_info" : "Al cambiar la contraseña se generará una nueva llave API", + "generate_new_api_key" : "Generar nueva clave API", + "generate_new_api_key_info" : "Al cambiar la contraseña se generará una nueva clave API.", "opml_export" : "Exportación de OPML", "delete_account" : "Eliminar cuenta", - "delete_account_confirmation" : "Delete your acount? There's no turning back! " + "delete_account_confirmation" : "¿Eliminar tu cuenta? ¡No habrá vuelta atrás! " }, "about" : { "rest_api" : { "value" : "REST API", - "line1" : "CommaFeed está construido con el uso de JAX-RS y AngularJS. Por eso, un REST API esta disponible.", - "link_to_documentation" : "Vínculo de la documentación." + "line1" : "CommaFeed está construido sobre JAX-RS y AngularJS. Por lo tanto, una REST API está disponible.", + "link_to_documentation" : "Enlace a la documentación." }, "keyboard_shortcuts" : "Atajos de teclado", - "version" : "CommaFeed version ", - "line1_prefix" : "CommaFeed es un proyecto open-source. El código se encuentra en ", + "version" : "Versión de CommaFeed", + "line1_prefix" : "CommaFeed es un proyecto de código abierto. El código se encuentra en ", "line1_suffix" : ".", - "line2_prefix" : "Si encuentras un problema, por favor reportalo en la página de problemas de ", + "line2_prefix" : "Si encuentras un problema, por favor repórtalo en la página de problemas de ", "line2_suffix" : " del proyecto.", - "line3" : "Si te gusta este proyecto, por favor considera realizar una donacion para apoyar al desarrollador y ayudar a cubrir los costos de mantenimiento.", - "line4" : "For those of you who prefer bitcoin, here is the address ", + "line3" : "Si te gusta este proyecto, por favor considera realizar una donación para apoyar al desarrollador y ayudar a cubrir los costes de mantenimiento.", + "line4" : "Para aquellos de vosotros que prefieran bitcoin, aquí está la dirección ", "goodies" : { - "value" : "Goodies", - "android_app" : "Android app ", - "subscribe_url" : "Subscribe URL ", - "chrome_extension" : "Extensión de Chrome", - "firefox_extension" : "Extensión de Firefox", - "opera_extension" : "Opera extension ", - "subscribe_bookmarklet" : "Add subscription bookmarklet (click) ", - "subscribe_bookmarklet_asc" : "Oldest first ", - "subscribe_bookmarklet_desc" : "Newest first ", - "next_unread_bookmarklet" : "Next unread item bookmarklet (drag to bookmark bar) " + "value" : "Extras", + "android_app" : "Apps para Android", + "subscribe_url" : "URL para suscribirse ", + "chrome_extension" : "Extensión para Chrome.", + "firefox_extension" : "Extensión para Firefox.", + "opera_extension" : "Extensón para Opera.", + "subscribe_bookmarklet" : "Añadir marcador de suscripción (clic).", + "subscribe_bookmarklet_asc" : "Más antiguos primero", + "subscribe_bookmarklet_desc" : "Más recientes primero", + "next_unread_bookmarklet" : "Marcador a la siguiente entrada no leída (arástralo a la barra de marcadores) " }, "translation" : { "value" : "Traducción", "message" : "Necesitamos tu ayuda para ayudar a traducir CommaFeed.", - "link" : "Ver como contribuir con traducciones." + "link" : "Ver cómo contribuir con traducciones." }, "announcements" : "Anuncios", "shortcuts" : { - "mouse_middleclick" : "ratón botón medio", - "open_next_entry" : "abrir próxima entrada", - "open_previous_entry" : "abrir entrada previa", - "spacebar" : "space/shift+space ", - "move_page_down_up" : "moves the page down/up ", - "focus_next_entry" : "Establecer el foco en la próxima entrada sin abrirlo", - "focus_previous_entry" : "Establecer el foco en la entrada anterior sin abrirlo", - "open_next_feed" : "open next feed or category ", - "open_previous_feed" : "open previous feed or category ", - "open_close_current_entry" : "abrir/cerrar entrada actual", - "open_current_entry_in_new_window" : "abrir entrada actual en una nueva ventana", - "open_current_entry_in_new_window_background" : "open current entry in a new window in the background ", - "star_unstar" : "marcar/no marcar la entrada actual", - "mark_current_entry" : "marcar como leída/no la leída entrada actual", + "mouse_middleclick" : "click medio", + "open_next_entry" : "abrir la siguiente entrada", + "open_previous_entry" : "abrir la entrada anterior", + "spacebar" : "espacio/mayúsculas+espacio", + "move_page_down_up" : "mueve la página arriba/abajo", + "focus_next_entry" : "establecer el foco en la siguiente entrada sin abrirla", + "focus_previous_entry" : "establecer el foco en la entrada anterior sin abrirla", + "open_next_feed" : "abrir el siguiente canal o categoría", + "open_previous_feed" : "abrir el canal o categoría previo", + "open_close_current_entry" : "abrir/cerrar la entrada actual", + "open_current_entry_in_new_window" : "abrir la entrada actual en una nueva ventana", + "open_current_entry_in_new_window_background" : "abrir la entrada actual en una nueva ventana en segundo plano", + "star_unstar" : "destacar la entrada actual", + "mark_current_entry" : "marcar la entrada actual como leída/no la leída", "mark_all_as_read" : "marcar todas las entradas como leídas", "open_in_new_tab_mark_as_read" : "abrir entrada en una nueva pestaña y marcar como leída", - "fullscreen" : "toggle full screen mode ", - "font_size" : "increase/decrease font size of the current entry ", - "go_to_all" : "go to the All view ", - "go_to_starred" : "go to the Starred view ", - "feed_search" : "navigate to a subscription by entering the subscription name " + "fullscreen" : "activar/desactivar el modo pantalla completa ", + "font_size" : "aumentar/reducir el tamaño de la fuente de la entrada actual", + "go_to_all" : "ver Todos", + "go_to_starred" : "ver Destacados", + "feed_search" : "navega a una suscripción al introducir su nombre" } } -} \ No newline at end of file +} From f27e243cc436603e7431ddb890dea5de0bbec5fc Mon Sep 17 00:00:00 2001 From: Athou Date: Wed, 2 Mar 2016 11:20:57 +0100 Subject: [PATCH 20/35] readme update --- CHANGELOG | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 25deec3c..20fea8ac 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +v 2.3.0 + - dropwizard upgrade 0.9.1 + - feed enclosures are hidden if they already displayed in the content + - fix youtube favicons + - various internationalization fixes v 2.2.0 - fix youtube and instagram favicon fetching - mark as read filter was lost when a feed was rearranged with drag&drop From 535f947f88ea0c8b7f680f38ea158dc9527085e6 Mon Sep 17 00:00:00 2001 From: Athou Date: Wed, 2 Mar 2016 11:21:10 +0100 Subject: [PATCH 21/35] 2.3.0 release --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b70a6147..6ce76a91 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.commafeed commafeed - 2.3.0-SNAPSHOT + 2.3.0 jar CommaFeed From abef73d384c800ce6c438667aa1cd7940a9ac1f0 Mon Sep 17 00:00:00 2001 From: Athou Date: Wed, 2 Mar 2016 11:22:27 +0100 Subject: [PATCH 22/35] version bump --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6ce76a91..95bc40a2 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.commafeed commafeed - 2.3.0 + 2.4.0-SNAPSHOT jar CommaFeed From f1b85b0dde38faed234b5980629cc16dd3cdc2fa Mon Sep 17 00:00:00 2001 From: Athou Date: Wed, 2 Mar 2016 11:22:55 +0100 Subject: [PATCH 23/35] readme update --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2c6e577e..e2698128 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,8 @@ Browser extensions: [Chrome](https://github.com/Athou/commafeed-chrome) - [Firef ### The very short version (download precompiled package) mkdir commafeed && cd commafeed - wget https://github.com/Athou/commafeed/releases/download/2.2.0/commafeed.jar - wget https://raw.githubusercontent.com/Athou/commafeed/2.2.0/config.yml.example -O config.yml + wget https://github.com/Athou/commafeed/releases/download/2.3.0/commafeed.jar + wget https://raw.githubusercontent.com/Athou/commafeed/2.3.0/config.yml.example -O config.yml vi config.yml java -Djava.net.preferIPv4Stack=true -jar commafeed.jar server config.yml @@ -123,7 +123,7 @@ Steps to configuring a development environment for CommaFeed may include, but ma ## Copyright and license -Copyright 2013-2015 CommaFeed. +Copyright 2013-2016 CommaFeed. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with the License. From cf87fd83400aa82e8f46638068bbddc0a3c6da85 Mon Sep 17 00:00:00 2001 From: Athou Date: Sat, 12 Mar 2016 21:38:43 +0100 Subject: [PATCH 24/35] fix facebook sharing --- src/main/app/templates/feeds.view.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/app/templates/feeds.view.html b/src/main/app/templates/feeds.view.html index 1f306f8e..132da0ba 100644 --- a/src/main/app/templates/feeds.view.html +++ b/src/main/app/templates/feeds.view.html @@ -93,7 +93,7 @@ title="Gmail" popup ng-if="settingsService.settings.gmail"> - + Date: Tue, 22 Mar 2016 20:09:12 +0430 Subject: [PATCH 25/35] Add rel="noreferrer" to resolve window.opener issue https://mathiasbynens.github.io/rel-noopener --- src/main/app/templates/feeds.view.html | 4 ++-- src/main/java/com/commafeed/backend/feed/FeedUtils.java | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/app/templates/feeds.view.html b/src/main/app/templates/feeds.view.html index 132da0ba..b8e5b3f5 100644 --- a/src/main/app/templates/feeds.view.html +++ b/src/main/app/templates/feeds.view.html @@ -6,7 +6,7 @@ {{ 'tree.starred' | translate }} {{name}} - {{name}} + {{name}} » @@ -20,7 +20,7 @@
- + diff --git a/src/main/java/com/commafeed/backend/feed/FeedUtils.java b/src/main/java/com/commafeed/backend/feed/FeedUtils.java index 5c9e3369..e0e90c52 100644 --- a/src/main/java/com/commafeed/backend/feed/FeedUtils.java +++ b/src/main/java/com/commafeed/backend/feed/FeedUtils.java @@ -92,6 +92,7 @@ public class FeedUtils { whitelist.addProtocols("q", "cite", "http", "https"); whitelist.addEnforcedAttribute("a", "target", "_blank"); + whitelist.addEnforcedAttribute("a", "rel", "noreferrer"); return whitelist; } From ee610ec800cead948b0d82686fc0a6c1e87fb268 Mon Sep 17 00:00:00 2001 From: Athou Date: Thu, 7 Apr 2016 12:53:48 +0200 Subject: [PATCH 26/35] build time decreased a lot with npm upgrade --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 95bc40a2..a47da492 100644 --- a/pom.xml +++ b/pom.xml @@ -171,7 +171,7 @@ compile v0.10.39 - 2.12.1 + 3.8.6 From c02d2745c35912afd42ea7c8a8f2519234acdb23 Mon Sep 17 00:00:00 2001 From: Athou Date: Thu, 7 Apr 2016 12:58:20 +0200 Subject: [PATCH 27/35] fix dev environment --- config.dev.yml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config.dev.yml b/config.dev.yml index a7771204..eadcda9c 100644 --- a/config.dev.yml +++ b/config.dev.yml @@ -75,7 +75,7 @@ app: database: driverClass: org.h2.Driver - url: jdbc:h2:./target/example;mv_store=false + url: jdbc:h2:./target/example user: sa password: sa properties: diff --git a/pom.xml b/pom.xml index a47da492..f288fd47 100644 --- a/pom.xml +++ b/pom.xml @@ -417,7 +417,7 @@ com.h2database h2 - 1.4.190 + 1.3.176 mysql From 7817431bce6acf0be449144e828a3ee61462ced2 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 10 Apr 2016 20:56:38 -0700 Subject: [PATCH 28/35] Upgrade Apache Commons Collections to v4.1 Version 4.0 has a CVSS 10.0 vulnerability. That's the worst kind of vulnerability that exists. By merely existing on the classpath, this library causes the Java serialization parser for the entire JVM process to go from being a state machine to a turing machine. A turing machine with an exec() function! https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-8103 https://commons.apache.org/proper/commons-collections/security-reports.html http://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/ --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f288fd47..d47bb1a3 100644 --- a/pom.xml +++ b/pom.xml @@ -328,7 +328,7 @@ org.apache.commons commons-collections4 - 4.0 + 4.1 commons-codec From b5726fc0f3d5cc4c877d8ebba5149d0fa5ca8268 Mon Sep 17 00:00:00 2001 From: AnTo 'SamalonA Date: Fri, 17 Jun 2016 01:35:39 +0800 Subject: [PATCH 29/35] add a new file for translating language to Indonesian --- src/main/app/i18n/id.js | 182 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 src/main/app/i18n/id.js diff --git a/src/main/app/i18n/id.js b/src/main/app/i18n/id.js new file mode 100644 index 00000000..0c407ad7 --- /dev/null +++ b/src/main/app/i18n/id.js @@ -0,0 +1,182 @@ +{ + "global" : { + "save" : "Simpan", + "cancel" : "Batal", + "delete" : "Hapus", + "required" : "Diminta", + "download" : "Unduh", + "link" : "Tautan", + "bookmark" : "Penanda halaman buku", + "close" : "Tutup", + "tags" : "Penanda" + }, + "tree" : { + "subscribe" : "Berlangganan", + "import" : "Impor", + "new_category" : "Kategori Baru", + "all" : "Semua", + "starred" : "Diutamakan" + }, + "subscribe" : { + "feed_url" : "Umpan URL", + "feed_name" : "Nama Umpan", + "category" : "Kategori" + }, + "import" : { + "google_reader_prefix" : "Izinkan saya mengimpor umpan Anda dari kepunyaan Anda ", + "google_reader_suffix" : " akun.", + "google_download" : "Atau, unggah berkas subscriptions.xml Anda.", + "google_download_link" : "Unggah dari sini.", + "xml_file" : "Berkas OPML" + }, + "new_category" : { + "name" : "Nama", + "parent" : "Induk" + }, + "toolbar" : { + "unread" : "Belum dibaca", + "all" : "Semua", + "previous_entry" : "Catatan sebelumnya", + "next_entry" : "Catatan selanjutnya", + "refresh" : "Segarkan", + "refresh_all" : "Memaksa menyegarkan semua umpan saya", + "sort_by_asc_desc" : "Urutkan menurut tanggal asc/desc", + "titles_only" : "Hanya Judul", + "expanded_view" : "Penglihatan diperluas", + "mark_all_as_read" : "Tandai semua sebagai telah dibaca", + "mark_all_older_12_hours" : "Butir lebih lama 12 jam", + "mark_all_older_day" : "Butir lebih lama sehari", + "mark_all_older_week" : "Butir lebih lama seminggu", + "mark_all_older_two_weeks" : "Butir lebih lama dua minggu", + "settings" : "Pengaturan", + "profile" : "Profil", + "admin" : "Admin", + "about" : "Tentang", + "logout" : "Keluar", + "donate" : "Donasi" + }, + "view" : { + "entry_source" : "dari ", + "entry_author" : "oleh ", + "error_while_loading_feed" : "Galat saat memuat umpan ini", + "keep_unread" : "Tetapkan belum dibaca", + "no_unread_items" : "Tidak ada yang butir yang belum dibaca.", + "mark_up_to_here" : "Tandai sebagai dibaca di sini", + "search_for" : "mencari: ", + "no_search_results" : "Tidak ditemukan kata kunci yang sesuai dengan permintaan" + }, + "feedsearch" : { + "hint" : "Ketik sebuah langganan...", + "help" : "Gunakan tombol enter untuk memilih dan tombol panah untuk navigasi.", + "result_prefix" : "Langganan Anda:" + }, + "settings" : { + "general" : { + "value" : "Umum", + "language" : "Bahasa", + "language_contribute" : "Kontribusi dengan terjemahan", + "show_unread" : "Menampilkan umpan dan kategori tanpa catatan belum dibaca", + "social_buttons" : "Menampilkan tombol sosial berbagi", + "scroll_marks" : "Di penglihatan luas, menggulir melalui catatan menandakan sebagai telah dibaca" + }, + "appearance" : "Penampilan", + "scroll_speed" : "Kecepatan menggulir ketika menavigasi antar catatan (dalam milidetik)", + "scroll_speed_help" : "setel ke 0 untuk menonaktifkan", + "theme" : "Tema", + "submit_your_theme" : "Mengajukan tema Anda", + "custom_css" : "Ubah CSS" + }, + "details" : { + "feed_details" : "Rincian Umpan", + "url" : "URL", + "website" : "Situs", + "name" : "Nama", + "category" : "Kategori", + "position" : "Posisi", + "last_refresh" : "Penyegaran terakhir", + "message" : "Menyegarkan pesan terakhir", + "next_refresh" : "Penyegaran selanjutnya", + "queued_for_refresh" : "Antri untuk penyegaran", + "feed_url" : "Umpan URL", + "filtering_expression" : "Penyaring ekspresi", + "filtering_expression_help" : "Jika tidak kosong, sebuah ekspresi mengevaluasi ke 'benar' atau 'salah'. Jika salah, catatan baru untuk umpan ini akan ditandai sebagai telah dibaca secara otomatis. \nVariabel yang tersedia adalah 'judul', 'konten', 'url' 'penulis' dan 'kategori' dan konten mereka dikonversi dari huruf kecil ke perbandingan string yang mudah. \nContoh: url.mengandung('youtube') atau (penulis ekivalen 'authou' dan judul.mengandung('github'). \nSintaksis lengkap tersedia di here.", + "generate_api_key_first" : "Menghasilkan sebuah kunci API di profil Anda terlebih dahulu.", + "unsubscribe" : "Berhenti berlangganan", + "unsubscribe_confirmation" : "Apakah Anda yakin ingin berhenti berlangganan dari umpan ini?", + "delete_category_confirmation" : "Apakah Anda yakin ingin menghapus dari kategori ini?", + "category_details" : "rincian Kategori", + "tag_details" : "rincian Penanda", + "parent_category" : "kategori Induk" + }, + "profile" : { + "user_name" : "nama Pengguna", + "email" : "Surel", + "change_password" : "Ganti kata sandi", + "confirm_password" : "Konfirmasi kata sandi", + "minimum_6_chars" : "Minimal 6 karakter", + "passwords_do_not_match" : "Kata sandi tidak sesuai", + "api_key" : "kunci API", + "api_key_not_generated" : "Belum menghasilkan", + "generate_new_api_key" : "Hasilkan kunci API baru", + "generate_new_api_key_info" : "Mengganti kata sandi akan menghasilkan sebuah kunci API baru", + "opml_export" : "ekspor OPML", + "delete_account" : "Hapus akun", + "delete_account_confirmation" : "Hapus akun Anda? Hal ini tidak dapat dikembalikan!" + }, + "about" : { + "rest_api" : { + "value" : "REST API", + "line1" : "CommaFeed dibangun di atas JAX-RS dan AngularJS. Dengan demikian, tersedia sebuah REST API.", + "link_to_documentation" : "Tautan menuju dokumentasi." + }, + "keyboard_shortcuts" : "pintasan Papanketik", + "version" : "versi CommaFeed", + "line1_prefix" : "CommaFeed adalah suatu proyek open-source. Sumber di ", + "line1_suffix" : ".", + "line2_prefix" : "Jika Anda mengalami sebuah isu, silahkan laporkan pada halaman isu ", + "line2_suffix" : " proyek.", + "line3" : "Jika Anda menyukai proyek ini, silahkan mempertimbangkan suatu donasi untuk mendukung pengembang dan membantu menutupi biaya online situs ini.", + "line4" : "Untuk Anda yang lebih suka bitcoin, alamatnya di sini", + "goodies" : { + "value" : "Bingkisan", + "android_app" : "Android app", + "subscribe_url" : "URL Langganan", + "chrome_extension" : "ekstensi Chrome", + "firefox_extension" : "ekstensi Firefox", + "opera_extension" : "ekstensi Opera", + "subscribe_bookmarklet" : "Tambahkan bookmarklet langganan(klik)", + "subscribe_bookmarklet_asc" : "Terlama dahulu", + "subscribe_bookmarklet_desc" : "Terbaru dahulu", + "next_unread_bookmarklet" : "Butir bookmarklet selanjutnya yang belum dibaca (seret ke batang penanda halaman buku)" + }, + "translation" : { + "value" : "Terjemahan", + "message" : "Kami membutuhkan bantuan Anda untuk menterjemahkan CommaFeed.", + "link" : "Lihat bagaimana berkontribusi dengan terjemahan." + }, + "announcements" : "Pengumuman", + "shortcuts" : { + "mouse_middleclick" : "klik tengah tetikus", + "open_next_entry" : "buka catatan selanjutnya", + "open_previous_entry" : "buka catatan sebelumnya", + "spacebar" : "spasi/shift+spasi", + "move_page_down_up" : "pindah halaman bawah/atas", + "focus_next_entry" : "setel fokus pada catatan selanjutnya tanpa membukanya", + "focus_previous_entry" : "setel fokus pada catatan sebelumnya tanpa membukanya", + "open_next_feed" : "buka umpan atau kategori selanjutnya", + "open_previous_feed" : "buka umpan atau kategori sebelumnya", + "open_close_current_entry" : "buka/tutup catatan saat ini", + "open_current_entry_in_new_window" : "buka catatan saat ini di sebuah jendela baru", + "open_current_entry_in_new_window_background" : "buka catatan saat ini di sebuah jendela baru pada latar", + "star_unstar" : "tanda bintang/tidak catatan saat ini", + "mark_current_entry" : "tandai sebagai telah dibaca/belum catatan saat ini", + "mark_all_as_read" : "tandai semua catatan sebagai telah dibaca", + "open_in_new_tab_mark_as_read" : "buka catatan di tab baru dan tandai sebagai telah dibaca", + "fullscreen" : "beralih modus layar penuh", + "font_size" : "tingkatkan/turunkan ukuran huruf dari catatan saat ini", + "go_to_all" : "menuju ke lihat Semua", + "go_to_starred" : "menuju ke lihat Tanda Bintang", + "feed_search" : "navigasi ke langganan dengan memasukkan nama langganan" + } + } +} From ae066d3cd9a39a3ac50ec9f7af21c836ca7f6dcc Mon Sep 17 00:00:00 2001 From: AnTo 'SamalonA Date: Fri, 17 Jun 2016 01:51:39 +0800 Subject: [PATCH 30/35] update it --- src/main/app/i18n/id.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/app/i18n/id.js b/src/main/app/i18n/id.js index 0c407ad7..6c48f96b 100644 --- a/src/main/app/i18n/id.js +++ b/src/main/app/i18n/id.js @@ -99,7 +99,7 @@ "queued_for_refresh" : "Antri untuk penyegaran", "feed_url" : "Umpan URL", "filtering_expression" : "Penyaring ekspresi", - "filtering_expression_help" : "Jika tidak kosong, sebuah ekspresi mengevaluasi ke 'benar' atau 'salah'. Jika salah, catatan baru untuk umpan ini akan ditandai sebagai telah dibaca secara otomatis. \nVariabel yang tersedia adalah 'judul', 'konten', 'url' 'penulis' dan 'kategori' dan konten mereka dikonversi dari huruf kecil ke perbandingan string yang mudah. \nContoh: url.mengandung('youtube') atau (penulis ekivalen 'authou' dan judul.mengandung('github'). \nSintaksis lengkap tersedia di here.", + "filtering_expression_help" : "Jika tidak kosong, sebuah ekspresi mengevaluasi ke 'benar' atau 'salah'. Jika salah, catatan baru untuk umpan ini akan ditandai sebagai telah dibaca secara otomatis. \nVariabel yang tersedia adalah 'judul', 'konten', 'url' 'penulis' dan 'kategori' dan konten mereka dikonversi dari huruf kecil ke perbandingan string yang mudah. \nContoh: url.contains('youtube') or (author eq 'athou' and title.contains('github'). \nSintaksis lengkap tersedia di here.", "generate_api_key_first" : "Menghasilkan sebuah kunci API di profil Anda terlebih dahulu.", "unsubscribe" : "Berhenti berlangganan", "unsubscribe_confirmation" : "Apakah Anda yakin ingin berhenti berlangganan dari umpan ini?", From e52125460006e81e1ba9e106463cbc45bb82f028 Mon Sep 17 00:00:00 2001 From: Athou Date: Fri, 17 Jun 2016 14:03:57 +0200 Subject: [PATCH 31/35] add indonesian --- src/main/app/js/i18n.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/app/js/i18n.js b/src/main/app/js/i18n.js index 4de1426b..82c489cb 100644 --- a/src/main/app/js/i18n.js +++ b/src/main/app/js/i18n.js @@ -12,6 +12,7 @@ module.service('LangService', [function() { 'gl': 'Galician', 'glk': 'گیلکی', 'hu': 'Magyar', + 'id': 'Indonesian', 'ja': '日本語', 'ko': '한국어', 'nl': 'Nederlands', From e9c85b0e772c03fac4c51693c9ac505fcbbb850f Mon Sep 17 00:00:00 2001 From: clapd10 Date: Sat, 9 Jul 2016 00:42:29 +0900 Subject: [PATCH 32/35] Update ko.js improved translation --- src/main/app/i18n/ko.js | 190 ++++++++++++++++++++-------------------- 1 file changed, 95 insertions(+), 95 deletions(-) diff --git a/src/main/app/i18n/ko.js b/src/main/app/i18n/ko.js index a09ee65b..1de13ade 100644 --- a/src/main/app/i18n/ko.js +++ b/src/main/app/i18n/ko.js @@ -4,23 +4,23 @@ "cancel" : "취소", "delete" : "삭제", "required" : "필수", - "download" : "Download ", - "link" : "Link ", - "bookmark" : "Bookmark ", - "close" : "Close ", - "tags" : "Tags " + "download" : "다운로드", + "link" : "링크", + "bookmark" : "북마크", + "close" : "닫기 ", + "tags" : "태그 " }, "tree" : { "subscribe" : "구독", - "import" : "임포트", + "import" : "가져오기", "new_category" : "새로운 카테고리", "all" : "전체", - "starred" : "스타" + "starred" : "중요 표시됨" }, "subscribe" : { "feed_url" : "피드 URL", "feed_name" : "피드 이름", - "category" : "카테로기" + "category" : "카테고리" }, "import" : { "google_reader_prefix" : "당신의 Google Reader", @@ -31,23 +31,23 @@ }, "new_category" : { "name" : "이름", - "parent" : "카테고리 주소로 가기" + "parent" : "부모 카테고리" }, "toolbar" : { - "unread" : "안읽음", + "unread" : "읽지 않음", "all" : "전체", - "previous_entry" : "Previous entry ", - "next_entry" : "Next entry ", - "refresh" : "리프래쉬", - "refresh_all" : "Force refresh all my feeds ", - "sort_by_asc_desc" : "Sort by date asc/desc ", - "titles_only" : "Titles only ", - "expanded_view" : "Expanded view ", - "mark_all_as_read" : "읽음표시", - "mark_all_older_12_hours" : "Items older than 12 hours ", - "mark_all_older_day" : "Items older than a day ", - "mark_all_older_week" : "Items older than a week ", - "mark_all_older_two_weeks" : "Items older than two weeks ", + "previous_entry" : "이전 항목", + "next_entry" : "다음 항목", + "refresh" : "새로고침", + "refresh_all" : "모든 피드를 강제로 새로고침", + "sort_by_asc_desc" : "날짜별 오름차/내림차순 정렬", + "titles_only" : "제목만 표시하기", + "expanded_view" : "Expanded View", + "mark_all_as_read" : "읽음으로 표시", + "mark_all_older_12_hours" : "12시간보다 오래된 항목", + "mark_all_older_day" : "1일보다 오래된 항목", + "mark_all_older_week" : "1주일보다 오래된 항목", + "mark_all_older_two_weeks" : "2주일보다 오래된 항목", "settings" : "설정", "profile" : "프로필", "admin" : "괸리자", @@ -57,124 +57,124 @@ }, "view" : { "entry_source" : "from ", - "entry_author" : "by ", - "error_while_loading_feed" : "피드로딩중 에러", - "keep_unread" : "안읽은것 저장", - "no_unread_items" : " 읽지않은 항목이 없읍니다.", - "mark_up_to_here" : "Mark as read up to here ", - "search_for" : "searching for: ", - "no_search_results" : "No match found for the requested keywords " + "entry_author" : "by ", + "error_while_loading_feed" : "피드 로딩중 에러", + "keep_unread" : "항상 읽지 않음으로 표시", + "no_unread_items" : " 읽지 않은 항목이 없습니다.", + "mark_up_to_here" : "이 위로 읽음으로 표시", + "search_for" : "검색: ", + "no_search_results" : "검색 결과 없음" }, "feedsearch" : { - "hint" : "Type in a subscription... ", - "help" : "Use the return key to select and arrow keys to navigate. ", - "result_prefix" : "Your subscriptions: " + "hint" : "구독 이름을 입력하세요", + "help" : "화살표 키로 이동하고 엔터 키로 선택하세요.", + "result_prefix" : "검색 결과:" }, "settings" : { "general" : { "value" : "일반", - "language" : "일반 언어", - "language_contribute" : "번역 도움하기", - "show_unread" : "안읽은 항목들이 있는 피드와 카테고리 보여주기", - "social_buttons" : "소셜미디아 버튼들 보여주기", - "scroll_marks" : "Expanded View에서 스크롤하면 항목들을 읽음으로 저장하기" + "language" : "언어", + "language_contribute" : "번역에 기여하기", + "show_unread" : "안 읽은 항목들이 있는 피드와 카테고리 보여주기", + "social_buttons" : "공유 버튼 표시하기", + "scroll_marks" : "Expanded View에서 스크롤하면 항목들을 읽음으로 표시하기" }, - "appearance" : "Appearance ", - "scroll_speed" : "Scrolling speed when navigating between entries (in milliseconds) ", - "scroll_speed_help" : "set to 0 to disable ", - "theme" : "Theme ", - "submit_your_theme" : "Submit your theme ", - "custom_css" : "커스톰 CSS" + "appearance" : "외관", + "scroll_speed" : "항목 사이를 이동할 때 스크롤 속도 (밀리초로 설정)", + "scroll_speed_help" : "비활성화하려면 0으로 설정하세요", + "theme" : "테마", + "submit_your_theme" : "새 테마 업로드", + "custom_css" : "커스텀 CSS" }, "details" : { - "feed_details" : "피드 세부", - "url" : "유알엘", - "website" : "Website ", + "feed_details" : "피드 상세", + "url" : "URL", + "website" : "웹사이트", "name" : "이름", "category" : "카테고리", - "position" : "Position ", - "last_refresh" : "마지막 리프래쉬", - "message" : "Last refresh message ", - "next_refresh" : "Next refresh ", - "queued_for_refresh" : "Queued for refresh ", - "feed_url" : "피드 유알엘", + "position" : "위치", + "last_refresh" : "마지막 새로고침", + "message" : "마지막 새로고침 메시지", + "next_refresh" : "다음 새로고침", + "queued_for_refresh" : "새로고침 대기중", + "feed_url" : "피드 URL", "generate_api_key_first" : "당신의 프로필을 위해 API Key를 먼저 생성하세요.", - "unsubscribe" : "주소 삭제", - "unsubscribe_confirmation" : "Are you sure you want to unsubscribe from this feed? ", - "delete_category_confirmation" : "Are you sure you want to delete this category? ", - "category_details" : "카테고리 세부", - "tag_details" : "Tag details ", + "unsubscribe" : "구독 해제", + "unsubscribe_confirmation" : "정말 이 피드를 구독 해제하시겠습니까?", + "delete_category_confirmation" : "정말 이 카테고리를 삭제하시겠습니까?", + "category_details" : "카테고리 상세", + "tag_details" : "태그 상세", "parent_category" : "부모 카테고리" }, "profile" : { "user_name" : "사용자 이름", "email" : "이메일", - "change_password" : "비밀번호변경", - "confirm_password" : "비밀번호확인", - "minimum_6_chars" : "최소로 6자문자가 필요합니다.", + "change_password" : "비밀번호 변경", + "confirm_password" : "비밀번호 확인", + "minimum_6_chars" : "최소 6개의 문자가 필요합니다.", "passwords_do_not_match" : "비밀번호가 일치하지 않습니다.", "api_key" : "API key", "api_key_not_generated" : "아직 API Key가 생성되지 않았습니다.", "generate_new_api_key" : "API Key 생성하기", "generate_new_api_key_info" : "비밀번호를 변경하면 새로운 API Key가 생성됩니다.", - "opml_export" : "OPML export ", - "delete_account" : "프로필삭제", - "delete_account_confirmation" : "Delete your acount? There's no turning back! " + "opml_export" : "OPML 내보내기", + "delete_account" : "계정 삭제하기", + "delete_account_confirmation" : "계정을 삭제하시겠습니까? 되돌릴 수 없어요!" }, "about" : { "rest_api" : { "value" : "REST API", - "line1" : "CommaFeed는 JAX-RS하고 AngularJS를 이용해서 만들었습니다. 그렇기 때문에 REST API를 사용할수있습니다.", + "line1" : "CommaFeed는 JAX-RS와 AngularJS를 이용해 만들었습니다. 그렇기 때문에 REST API를 사용할수있습니다.", "link_to_documentation" : "문서 링크." }, - "keyboard_shortcuts" : "단축기", - "version" : "CommaFeed version ", - "line1_prefix" : "CommaFeed는 오픈 소스프로젝트입니다. 소스는", + "keyboard_shortcuts" : "단축키", + "version" : "CommaFeed 버전", + "line1_prefix" : "CommaFeed는 오픈 소스 프로젝트입니다. 소스는", "line1_suffix" : "에 있습니다.", "line2_prefix" : "문제가 발생하는 경우", - "line2_suffix" : " 프로젝트 문제페이지에 보고하십시요.", - "line3" : "이 프로젝트를 좋아하시면 개발자를 지원하고 웹사이트 유지용비를 충당하는 데 도움이되는 기부금을 고려하시기 바랍니다.", - "line4" : "For those of you who prefer bitcoin, here is the address ", + "line2_suffix" : " 프로젝트 문제 페이지에 보고하십시오.", + "line3" : "이 프로젝트를 좋아하시면 개발자를 지원하고 웹사이트 유지비용을 충당하는 데 도움이 되는 기부금을 고려하시기 바랍니다.", + "line4" : "비트코인으로 기부하기", "goodies" : { "value" : "Goodies", - "android_app" : "Android app ", - "subscribe_url" : "Subscribe URL ", - "chrome_extension" : "Chrome extension ", - "firefox_extension" : "Firefox extension ", - "opera_extension" : "Opera extension ", - "subscribe_bookmarklet" : "Add subscription bookmarklet (click) ", - "subscribe_bookmarklet_asc" : "Oldest first ", - "subscribe_bookmarklet_desc" : "Newest first ", - "next_unread_bookmarklet" : "Next unread item bookmarklet (drag to bookmark bar) " + "android_app" : "안드로이드 앱", + "subscribe_url" : "구독 URL", + "chrome_extension" : "Chrome 확장 프로그램", + "firefox_extension" : "Firefox 확장 기능", + "opera_extension" : "Opera 확장 기능", + "subscribe_bookmarklet" : "구독 북마크 추가 (클릭)", + "subscribe_bookmarklet_asc" : "오래된 것 먼저", + "subscribe_bookmarklet_desc" : "새로운 것 먼저", + "next_unread_bookmarklet" : "안 읽은 항목 북마크 (북마크바에 끌기) " }, "translation" : { "value" : "번역", - "message" : "CommaFeed를 번역할려면 당신의 도움이 필요합니다.", + "message" : "CommaFeed를 번역하는데 당신의 도움이 필요합니다.", "link" : "번역에 기여하기" }, "announcements" : "공지", "shortcuts" : { - "mouse_middleclick" : "마우시 미들클릭", + "mouse_middleclick" : "마우스 미들클릭", "open_next_entry" : "다음 항목 열기", "open_previous_entry" : "이전 항목 열기", "spacebar" : "space/shift+space ", - "move_page_down_up" : "moves the page down/up ", - "focus_next_entry" : "set focus on next entry without opening it ", - "focus_previous_entry" : "set focus on previous entry without opening it ", - "open_next_feed" : "open next feed or category ", - "open_previous_feed" : "open previous feed or category ", + "move_page_down_up" : "페이지 아래/위로 이동 ", + "focus_next_entry" : "열지 않고 다음 항목 보기", + "focus_previous_entry" : "열지 않고 이전 항목 보기", + "open_next_feed" : "다음 피드나 카테고리 열기", + "open_previous_feed" : "이전 피드나 카테고리 열기", "open_close_current_entry" : "현재 항목 열기/닫기", - "open_current_entry_in_new_window" : "새 창에서 현재 항목열기", - "open_current_entry_in_new_window_background" : "open current entry in a new window in the background ", - "star_unstar" : "현재 항목 스타/스타제거", + "open_current_entry_in_new_window" : "새 창으로 현재 항목 열기", + "open_current_entry_in_new_window_background" : "백그라운드에 새 창으로 현재 항목 열기", + "star_unstar" : "현재 항목 중요 표시/중요 표시 제거", "mark_current_entry" : "현재 항목 읽음/안읽음 표시", "mark_all_as_read" : "모든 항목 읽음으로 표시", "open_in_new_tab_mark_as_read" : "읽음으로 표시하고 새로운 탭에서 열기", - "fullscreen" : "toggle full screen mode ", - "font_size" : "increase/decrease font size of the current entry ", - "go_to_all" : "go to the All view ", - "go_to_starred" : "go to the Starred view ", - "feed_search" : "navigate to a subscription by entering the subscription name " + "fullscreen" : "전체화면 켜기/끄기", + "font_size" : "현재 항목의 글꼴 크기를 크게/작게", + "go_to_all" : "모든 항목 보기", + "go_to_starred" : "중요 표시한 항목 보기", + "feed_search" : "구독 이름으로 구독 찾기" } } -} \ No newline at end of file +} From 6f10d35a4c9ba1ca814f8e2ab3a13b99c40d7972 Mon Sep 17 00:00:00 2001 From: Athou Date: Thu, 28 Jul 2016 11:28:45 +0200 Subject: [PATCH 33/35] no casting of sessionfactory necessary this way --- .../backend/service/StartupService.java | 43 ++++--------------- 1 file changed, 9 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/commafeed/backend/service/StartupService.java b/src/main/java/com/commafeed/backend/service/StartupService.java index 426d37d5..91f87cd1 100644 --- a/src/main/java/com/commafeed/backend/service/StartupService.java +++ b/src/main/java/com/commafeed/backend/service/StartupService.java @@ -1,16 +1,12 @@ package com.commafeed.backend.service; -import java.sql.Connection; import java.util.Arrays; import javax.inject.Inject; import javax.inject.Singleton; -import javax.sql.DataSource; +import org.hibernate.Session; import org.hibernate.SessionFactory; -import org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl; -import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; -import org.hibernate.internal.SessionFactoryImpl; import com.commafeed.CommaFeedApplication; import com.commafeed.CommaFeedConfiguration; @@ -31,7 +27,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @Slf4j -@RequiredArgsConstructor(onConstructor = @__({ @Inject }) ) +@RequiredArgsConstructor(onConstructor = @__({ @Inject })) @Singleton public class StartupService implements Managed { @@ -50,17 +46,10 @@ public class StartupService implements Managed { } private void updateSchema() { - try { - Connection connection = null; + Session session = sessionFactory.openSession(); + session.doWork(connection -> { try { - Thread currentThread = Thread.currentThread(); - ClassLoader classLoader = currentThread.getContextClassLoader(); - ResourceAccessor accessor = new ClassLoaderResourceAccessor(classLoader); - - DataSource dataSource = getDataSource(sessionFactory); - connection = dataSource.getConnection(); JdbcConnection jdbcConnection = new JdbcConnection(connection); - Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(jdbcConnection); if (database instanceof PostgresDatabase) { @@ -73,17 +62,14 @@ public class StartupService implements Managed { database.setConnection(jdbcConnection); } + ResourceAccessor accessor = new ClassLoaderResourceAccessor(Thread.currentThread().getContextClassLoader()); Liquibase liq = new Liquibase("migrations.xml", accessor, database); liq.update("prod"); - } finally { - if (connection != null) { - connection.close(); - } + } catch (Exception e) { + throw new RuntimeException(e); } - - } catch (Exception e) { - throw new RuntimeException(e); - } + }); + session.close(); } private void initialData() { @@ -103,15 +89,4 @@ public class StartupService implements Managed { public void stop() throws Exception { } - - private static DataSource getDataSource(SessionFactory sessionFactory) { - if (sessionFactory instanceof SessionFactoryImpl) { - ConnectionProvider cp = ((SessionFactoryImpl) sessionFactory).getConnectionProvider(); - if (cp instanceof DatasourceConnectionProviderImpl) { - return ((DatasourceConnectionProviderImpl) cp).getDataSource(); - } - } - return null; - } - } From 4b556bd3a9602543771c3303162f4e4dff619fcc Mon Sep 17 00:00:00 2001 From: Athou Date: Mon, 22 Aug 2016 15:05:15 +0200 Subject: [PATCH 34/35] fix password change (#805) --- src/main/java/com/commafeed/frontend/resource/UserREST.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/commafeed/frontend/resource/UserREST.java b/src/main/java/com/commafeed/frontend/resource/UserREST.java index 85a62d97..6143bfca 100644 --- a/src/main/java/com/commafeed/frontend/resource/UserREST.java +++ b/src/main/java/com/commafeed/frontend/resource/UserREST.java @@ -208,6 +208,7 @@ public class UserREST { return Response.status(Status.FORBIDDEN).build(); } + user = userDAO.findById(user.getId()); user.setEmail(StringUtils.trimToNull(request.getEmail())); if (StringUtils.isNotBlank(request.getPassword())) { byte[] password = encryptionService.getEncryptedPassword(request.getPassword(), user.getSalt()); From 268869345c4f7866dd169aef0b235d2c1e02742f Mon Sep 17 00:00:00 2001 From: Athou Date: Tue, 23 Aug 2016 12:11:26 +0200 Subject: [PATCH 35/35] reduce npm verbosity (fixes #811) --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index d47bb1a3..33507b8b 100644 --- a/pom.xml +++ b/pom.xml @@ -171,7 +171,7 @@ compile v0.10.39 - 3.8.6 + 3.10.6 @@ -181,7 +181,7 @@ compile - install --loglevel info + install