From 0ed57bb692824b1a2a974cc28c62336cd9bf377e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20Gerg=C5=91?= Date: Sat, 27 Jun 2015 11:58:30 +0200 Subject: [PATCH 01/12] Updated Hungarian language --- modules/backend/lang/hu/lang.php | 76 ++++++++++++++++++-------------- modules/cms/lang/hu/lang.php | 38 +++++++++------- modules/system/lang/hu/lang.php | 21 ++++----- 3 files changed, 76 insertions(+), 59 deletions(-) diff --git a/modules/backend/lang/hu/lang.php b/modules/backend/lang/hu/lang.php index c1dbc8324..34d0934f4 100644 --- a/modules/backend/lang/hu/lang.php +++ b/modules/backend/lang/hu/lang.php @@ -5,12 +5,12 @@ return [ 'title' => 'Adminisztrációs oldal' ], 'field' => [ - 'invalid_type' => 'A használt mezőtípus érvénytelen :type.', + 'invalid_type' => 'A(z) :type mezőtípus érvénytelen.', 'options_method_not_exists' => "A(z) :model modellosztálynak egy :method() metódus visszaadandó beállításait kell definiálnia a(z) ':field' űrlapmező számára." ], 'widget' => [ - 'not_registered' => "Egy ':name' widgetosztálynév regisztrálása nem történt meg", - 'not_bound' => "Egy ':name' osztálynevű widget kötése nem történt meg a vezérlővel" + 'not_registered' => "A(z) ':name' widget osztálynév regisztrálása nem történt meg.", + 'not_bound' => "A(z) ':name' osztálynevű widget kötése nem történt meg a vezérlővel." ], 'page' => [ 'untitled' => 'Névtelen', @@ -18,6 +18,9 @@ return [ 'label' => 'Hozzáférés megtagadva', 'help' => 'Ön nem rendelkezik a szükséges engedélyekkel ennek a lapnak a megtekintéséhez.', 'cms_link' => 'Vissza a látogatói oldalra' + ], + 'invalid_token' => [ + 'label' => 'Érvénytelen a biztonsági kód.' ] ], 'partial' => [ @@ -28,7 +31,7 @@ return [ 'login' => 'Belép', 'reset' => 'Alaphelyzet', 'restore' => 'Visszaállítás', - 'login_placeholder' => 'bejelentkezési név', + 'login_placeholder' => 'felhasználónév', 'password_placeholder' => 'jelszó', 'forgot_password' => 'Elfelejtette a jelszavát?', 'enter_email' => 'Adja meg az e-mail címét', @@ -36,8 +39,8 @@ return [ 'email_placeholder' => 'e-mail cím', 'enter_new_password' => 'Adjon meg egy új jelszót', 'password_reset' => 'Új jelszó kiadása', - 'restore_success' => 'A jelszó visszaállítási utasításokat tartalmazó e-mail elküldésre került az e-mail címére.', - 'restore_error' => "Nem található felhasználó a ':login' értékű bejelentkezési névvel", + 'restore_success' => 'A visszaállítással kapcsolatos utasításokat tartalmazó levél elküldésre került az e-mail címére.', + 'restore_error' => "Nem található a(z) ':login' nevű felhasználó.", 'reset_success' => 'A jelszó átállítása sikerült. Most már bejelentkezhet.', 'reset_error' => 'A megadott jelszó átállítási adatok érvénytelenek. Próbálja újra!', 'reset_fail' => 'Nem állítható vissza a jelszava!', @@ -55,8 +58,8 @@ return [ 'widget_inspector_title' => 'Widget konfiguráció', 'widget_inspector_description' => 'A jelentés widget konfigurálása', 'widget_columns_label' => 'Szélesség :columns', - 'widget_columns_description' => 'A widget szélessége, egy 1 és 10 közti szám.', - 'widget_columns_error' => 'Adja meg a widget szélességét egy 1 és 10 közti számként.', + 'widget_columns_description' => 'A widget szélessége, egy 1 és 10 közötti szám.', + 'widget_columns_error' => 'Adja meg a widget szélességét egy 1 és 10 közötti számként.', 'columns' => '{1} oszlop|[2,Inf] oszlop', 'widget_new_row_label' => 'Új sor kényszerítése', 'widget_new_row_description' => 'A widget új sorba helyezése.', @@ -75,7 +78,7 @@ return [ 'menu_description' => 'A felhasználók, a csoportok és az engedélyek kezelése.', 'list_title' => 'Adminisztrátorok kezelése', 'new' => 'Új adminisztrátor', - 'login' => 'Bejelentkezési név', + 'login' => 'Felhasználónév', 'first_name' => 'Keresztnév', 'last_name' => 'Vezetéknév', 'full_name' => 'Teljes név', @@ -86,12 +89,13 @@ return [ 'password' => 'Jelszó', 'password_confirmation' => 'Jelszó megerősítése', 'permissions' => 'Engedélyek', + 'account' => 'Fiók', 'superuser' => 'Szuperadmin', 'superuser_comment' => 'Korlátlan hozzáférés a teljes admin felülethez.', 'send_invite' => 'Meghívó küldése e-mailben', 'send_invite_comment' => 'A fentebb megadott adatokat tartalmazza.', 'delete_confirm' => 'Valóban törölni akarja ezt az adminisztrátort?', - 'return' => 'Vissza az adminisztrátorok listájához', + 'return' => 'Vissza az adminisztrátor listához', 'allow' => 'Engedélyezés', 'inherit' => 'Öröklés', 'deny' => 'Tiltás', @@ -99,14 +103,15 @@ return [ 'name' => 'Csoport', 'name_field' => 'Név', 'description_field' => 'Leírás', - 'is_new_user_default_field' => 'Az új webhelygazdák hozzáadása alapértelmezésként ehhez a csoporthoz', + 'is_new_user_default_field' => 'Az új adminisztrátorok hozzáadása alapértelmezésként ehhez a csoporthoz.', 'code_field' => 'Kód', 'code_comment' => 'Adjon meg egy egyedi kódot, ha az API-val kíván hozzáférni.', 'menu_label' => 'Csoportok', 'list_title' => 'Csoportok kezelése', 'new' => 'Új adminisztrátori csoport', 'delete_confirm' => 'Valóban törölni akarja ezt a adminisztrátori csoportot?', - 'return' => 'Vissza a csoport listához' + 'return' => 'Vissza a csoport listához', + 'users_count' => 'Felhasználók' ], 'preferences' => [ 'not_authenticated' => 'Nincs olyan hitelesített felhasználó, aki számára betölthetők vagy menthetők a beállítások.' @@ -116,11 +121,11 @@ return [ 'default_title' => 'Lista', 'search_prompt' => 'Keresés...', 'no_records' => 'Nincs megjeleníthető tartalom.', - 'missing_model' => 'Nincs modell definiálva a(z) :class osztályban használt listaviselkedéshez.', + 'missing_model' => 'Nincs modell definiálva a(z) :class osztályban használt lista viselkedéshez.', 'missing_column' => 'Nincsenek oszlopdefiníciók a(z) :columns oszlopok számára.', 'missing_columns' => 'A(z) :class osztályban használt listának nincsenek definiált listaoszlopai.', - 'missing_definition' => "A listaviselkedés nem tartalmaz oszlopot a(z) ':field' mező számára.", - 'behavior_not_ready' => 'Nem történt meg a listaviselkedés inicializálása, ellenőrizze, hogy meghívta-e a(z) makeLists() függvényt a vezérlőben.', + 'missing_definition' => "A lista viselkedés nem tartalmaz oszlopot a(z) ':field' mező számára.", + 'behavior_not_ready' => 'Nem történt meg a lista viselkedés inicializálása és ellenőrizze, hogy meghívta-e a(z) makeLists() függvényt a vezérlőben.', 'invalid_column_datetime' => "A(z) ':column' oszlopérték nem DateTime objektum, hiányzik egy \$dates hivatkozás a Modellben?", 'pagination' => 'Megjelenített elemek: :from-:to / :total', 'prev_page' => 'Előző lap', @@ -137,9 +142,15 @@ return [ ], 'fileupload' => [ 'attachment' => 'Csatolmány', - 'help' => 'Adja meg a csatolmány címét és leírását.', + 'help' => 'Adja meg a csatolmány címét és a leírását.', 'title_label' => 'Cím', - 'description_label' => 'Leírás' + 'description_label' => 'Leírás', + 'default_prompt' => 'Hozza ide a fájlt vagy kattintson erre: %s', + 'attachment_url' => 'Csatolmány webcíme', + 'upload_file' => 'Fájl feltöltése', + 'upload_error' => 'Feltöltési hiba', + 'remove_confirm' => 'Biztos benne?', + 'remove_file' => 'Fájl eltávolítása' ], 'form' => [ 'create_title' => 'Új :name', @@ -148,10 +159,10 @@ return [ 'create_success' => 'A(z) :name létrehozása sikerült', 'update_success' => 'A(z) :name módosítása sikerült', 'delete_success' => 'A(z) :name törlése sikerült', - 'missing_id' => 'Nincs megadva az űrlaprekord azonosítója.', - 'missing_model' => 'A(z) :class osztályban használt űrlapviselkedésnek nincs definiált modellje.', - 'missing_definition' => "Az űrlapviselkedés nem tartalmaz mezőt a(z) ':field' mezőhöz.", - 'not_found' => 'A(z) :id azonosítójú űrlaprekord nem található.', + 'missing_id' => 'Nincs megadva az űrlap rekord azonosítója.', + 'missing_model' => 'A(z) :class osztályban használt űrlap viselkedésnek nincs definiált modellje.', + 'missing_definition' => "Az űrlap viselkedés nem tartalmaz mezőt a(z) ':field' mezőhöz.", + 'not_found' => 'A(z) :id azonosítójú űrlap rekord nem található.', 'action_confirm' => 'Biztos benne?', 'create' => 'Létrehozás', 'create_and_close' => 'Létrehozás és bezárás', @@ -179,8 +190,9 @@ return [ 'ok' => 'OK', 'or' => 'vagy', 'confirm_tab_close' => 'Valóban be akarja zárni a fület? El fognak veszni a nem mentett módosítások.', - 'behavior_not_ready' => 'Nem történt meg az űrlapviselkedés inicializálása, ellenőrizze, hogy meghívta-e az initForm() függvényt a vezérlőben.', - 'preview_no_files_message' => 'A fájlok nincsenek feltöltve', + 'behavior_not_ready' => 'Nem történt meg az űrlap viselkedésének inicializálása. Ellenőrizze, hogy meghívta-e az initForm() függvényt a vezérlőben.', + 'preview_no_files_message' => 'Nincsennek feltöltve fájlok.', + 'preview_no_record_message' => 'Egy mező sincs kiválasztva.', 'select' => 'Válasszon', 'select_all' => 'mind', 'select_none' => 'egyik sem', @@ -191,9 +203,9 @@ return [ 'concurrency_file_changed_description' => 'Az Ön által szerkesztett fájlt már egy máik felhasználó módosította. Vagy újratöltheti a fájlt és elveszti a változtatásait, vagy felülírja a fájlt.' ], 'relation' => [ - 'missing_config' => "A relációviselkedésnek nincs semmilyen konfigurációja a következőhöz: ':config'.", - 'missing_definition' => "A relációviselkedés nem tartalmazza a(z) ':field' mező definícióját.", - 'missing_model' => 'A(z) :class osztályban használt relációviselkedésnek nincs definiált modellje.', + 'missing_config' => "A reláció viselkedésnek nincs semmilyen konfigurációja a következőhöz: ':config'.", + 'missing_definition' => "A reláció viselkedés nem tartalmazza a(z) ':field' mező definícióját.", + 'missing_model' => 'A(z) :class osztályban használt reláció viselkedésnek nincs definiált modellje.', 'invalid_action_single' => 'Ez a művelet nem hajtható végre egyetlen kapcsolaton.', 'invalid_action_multi' => 'Ez a művelet nem hajtható végre több kapcsolaton.', 'help' => 'Kattintson egy elemre a hozzáadásához', @@ -225,18 +237,18 @@ return [ ], 'model' => [ 'name' => 'Modell', - 'not_found' => "Nem található :id azonosítójú ':class' modell", + 'not_found' => "Nem található :id azonosítójú ':class' modell.", 'missing_id' => 'Nincs azonosító megadva a modellrekord kereséséhez.', 'missing_relation' => "A(z) ':class' modell nem tartalmaz definíciót a(z) ':relation' reláció számára.", 'missing_method' => "A(z) ':class' modell nem tartalmaz ':method' metódust.", 'invalid_class' => "A(z) :class osztályban használt :model modell nem érvényes, örökölnie kell a \Model osztályt.", - 'mass_assignment_failed' => "A tömeges hozzárendelés a(z) ':attribute' modellattribútumhoz nem sikerült." + 'mass_assignment_failed' => "A tömeges hozzárendelés a(z) ':attribute' modell attribútumhoz nem sikerült." ], 'warnings' => [ 'tips' => 'Rendszer konfigurációs tippek', 'tips_description' => 'Olyan problémák vannak, melyekre figyeljen oda a rendszer megfelelő konfigurálása érdekében.', 'permissions' => 'A(z) :name könyvtár vagy alkönyvtárai a PHP számára nem írhatóak. Adjon megfelelő engedélyeket a webkiszolgálónak erre a könyvtárra.', - 'extension' => 'A(z) :name PHP-kiterjesztés nincs telepítve. Telepítse ezt a függvénytárat, és aktiválja a kiterjesztést.' + 'extension' => 'A(z) :name PHP kiterjesztés nincs telepítve. Telepítse ezt a függvénytárat és aktiválja a kiterjesztést.' ], 'editor' => [ 'menu_label' => 'Kódszerkesztő', @@ -252,7 +264,7 @@ return [ 'theme' => 'Színséma' ], 'tooltips' => [ - 'preview_website' => 'A webhely megtekintése' + 'preview_website' => 'Weboldal megtekintése' ], 'mysettings' => [ 'menu_label' => 'Beállításaim', @@ -289,10 +301,10 @@ return [ ], 'access_log' => [ 'hint' => 'Ez a napló a felhasználók sikeres bejelentkezési kísérleteit listázza ki. A bejegyzéseket :days napig őrzi meg a rendszer.', - 'menu_label' => 'Hozzáférési napló', + 'menu_label' => 'Hozzáférésnapló', 'menu_description' => 'A felhasználók sikeres bejelentkezéseinek megtekintése.', 'created_at' => 'Dátum és idő', - 'login' => 'Bejelentkezési név', + 'login' => 'Felhasználónév', 'ip_address' => 'IP cím', 'first_name' => 'Keresztnév', 'last_name' => 'Vezetéknév', diff --git a/modules/cms/lang/hu/lang.php b/modules/cms/lang/hu/lang.php index d167b1260..e189ae110 100644 --- a/modules/cms/lang/hu/lang.php +++ b/modules/cms/lang/hu/lang.php @@ -33,7 +33,7 @@ return [ 'description_label' => 'Leírás', 'description_placeholder' => 'A téma ismertetője', 'homepage_label' => 'Weboldal', - 'homepage_placeholder' => 'A honlap URL címe', + 'homepage_placeholder' => 'A honlap webcíme', 'code_label' => 'Kód', 'code_placeholder' => 'Egyedi azonosító ehhez a témához', 'dir_name_label' => 'Könyvtár', @@ -101,7 +101,7 @@ return [ 'unsaved_label' => 'Nem mentett lap(ok)', 'no_list_records' => 'Nem találhatóak lapok', 'new' => 'Új lap', - 'invalid_url' => 'Érvénytelen az URL cím formátuma. Az URL címnek perjellel kell kezdődnie, és számokat, latin betűket, valamint a következő karaktereket tartalmazhatja: ._-[]:?|/+*', + 'invalid_url' => 'Érvénytelen a webcím formátuma. A webcímnek perjellel kell kezdődnie, és számokat, latin betűket, valamint a következő karaktereket tartalmazhatja: ._-[]:?|/+*', 'delete_confirm_multiple' => 'Valóban törölni akarja a kijelölt lapokat?', 'delete_confirm_single' => 'Valóban törölni akarja ezt a lapot?', 'no_layout' => '-- nincs elrendezés --' @@ -149,7 +149,7 @@ return [ 'settings' => 'Beállítások', 'title' => 'Cím', 'new_title' => 'Új lap címe', - 'url' => 'URL cím', + 'url' => 'Webcím', 'filename' => 'Fájlnév', 'layout' => 'Elrendezés', 'description' => 'Leírás', @@ -187,24 +187,24 @@ return [ 'error_deleting_dir_not_empty' => 'Hiba a(z) :name könyvtár törlésekor. A könyvtár nem üres.', 'error_deleting_dir' => 'Hiba a(z) :name fájl törlésekor.', 'invalid_name' => 'A név csak számokat, latin betűket, szóközöket és a következő szimbólumokat tartalmazhatja: ._-', - 'original_not_found' => 'Nem található az eredeti fájl vagy könyvtár', - 'already_exists' => 'Már létezik ilyen nevű fájl vagy könyvtár', - 'error_renaming' => 'Hiba a fájl vagy a könyvtár átnevezésekor', - 'name_cant_be_empty' => 'A név nem lehet üres', + 'original_not_found' => 'Nem található az eredeti fájl vagy könyvtár.', + 'already_exists' => 'Már létezik ilyen nevű fájl vagy könyvtár.', + 'error_renaming' => 'Hiba a fájl vagy a könyvtár átnevezésekor.', + 'name_cant_be_empty' => 'A név nem lehet üres.', 'too_large' => 'A feltöltött fájl túl nagy. A maximálisan engedélyezett fájlméret :max_size', 'type_not_allowed' => 'Csak a következő fájltípusok engedélyezettek: :allowed_types', - 'file_not_valid' => 'A fájl nem érvényes', + 'file_not_valid' => 'A fájl nem érvényes.', 'error_uploading_file' => "Hiba a(z) ':name' fájl feltöltésekor: :error", 'move_please_select' => 'válasszon', 'move_destination' => 'Célkönyvtár', 'move_popup_title' => 'Fájl(ok) áthelyezése', 'move_button' => 'Áthelyezés', - 'selected_files_not_found' => 'A kijelölt fájlok nem találhatók', - 'select_destination_dir' => 'Válasszon egy célkönyvtárat', - 'destination_not_found' => 'A célkönyvtár nem található', - 'error_moving_file' => 'Hiba a(z) :file fájl áthelyezésekor', - 'error_moving_directory' => 'Hiba a(z) :dir könyvtár áthelyezésekor', - 'error_deleting_directory' => 'Hiba a(z) :dir eredeti könyvtár áthelyezésekor', + 'selected_files_not_found' => 'A kijelölt fájlok nem találhatók.', + 'select_destination_dir' => 'Válasszon egy célkönyvtárat.', + 'destination_not_found' => 'A célkönyvtár nem található.', + 'error_moving_file' => 'Hiba a(z) :file fájl áthelyezésekor.', + 'error_moving_directory' => 'Hiba a(z) :dir könyvtár áthelyezésekor.', + 'error_deleting_directory' => 'Hiba a(z) :dir eredeti könyvtár áthelyezésekor.', 'path' => 'Elérési út' ], 'component' => [ @@ -214,7 +214,7 @@ return [ 'alias' => 'Alias', 'alias_description' => 'Ennek a komponensnek a lap vagy az elrendezés kódjában való használatkor adott egyedi név.', 'validation_message' => 'A komponens aliasok kötelezőek, és csak latin szimbólumokat, számokat, valamint aláhúzásjeleket tartalmazhatnak. Az aliasoknak latin szimbólummal kell kezdődniük.', - 'invalid_request' => 'A sablon érvénytelen komponensadatok miatt nem menthető.', + 'invalid_request' => 'A sablon érvénytelen komponens adatok miatt nem menthető.', 'no_records' => 'Nem találhatók komponensek', 'not_found' => "A(z) ':name' komponens nem található.", 'method_not_found' => "A(z) ':name' komponens nem tartalmaz egy ':method' metódust." @@ -222,7 +222,7 @@ return [ 'template' => [ 'invalid_type' => 'Ismeretlen sablontípus.', 'not_found' => 'A kért sablon nem található.', - 'saved'=> 'A sablon mentése sikerült.' + 'saved' => 'A módosítások sikeresen mentésre kerültek.' ], 'permissions' => [ 'name' => 'Testreszabás', @@ -231,7 +231,11 @@ return [ 'manage_pages' => 'Lapok kezelése', 'manage_layouts' => 'Elrendezések kezelése', 'manage_partials' => 'Részlapok kezelése', - 'manage_themes' => 'Témák kezelése' + 'manage_themes' => 'Témák kezelése', + 'manage_media' => 'Fájlok kezelése' + ], + 'mediafinder' => [ + 'default_prompt' => 'Kattintson a(z) %s gombra új média fájl kereséséhez.' ], 'media' => [ 'invalid_path' => "Érvénytelen elérési útvonal: ':path'", diff --git a/modules/system/lang/hu/lang.php b/modules/system/lang/hu/lang.php index d71f6bf38..5db6bdf8c 100644 --- a/modules/system/lang/hu/lang.php +++ b/modules/system/lang/hu/lang.php @@ -16,6 +16,7 @@ return [ 'id' => 'Indonéz', 'it' => 'Olasz', 'ja' => 'Japán', + 'lv' => 'Litván', 'nb-no' => 'Norvég', 'nl' => 'Holland', 'pl' => 'Lengyel', @@ -92,7 +93,7 @@ return [ 'disabled_help' => 'A letiltott bővítményeket az alkalmazás figyelmen kívül hagyja.', 'selected_amount' => 'Kijelölt bővítmények: :amount', 'remove_confirm' => 'Valóban törölni akarja a kijelölt bővítményeket?', - 'remove_success' => 'A bővítmények sikeresen eltávolításra kerültek', + 'remove_success' => 'A bővítmények sikeresen eltávolításra kerültek.', 'refresh_confirm' => 'Valóban frissíteni akarja a kijelölt bővítményeket?', 'refresh_success' => 'A bővítmények sikeresen frissítésre kerültek.', 'disable_confirm' => 'Valóban tiltani akarja a kijelölt bővítményeket?', @@ -108,7 +109,7 @@ return [ 'none' => 'Nincs', 'id' => [ 'label' => 'Projektazonosító', - 'help' => 'Hogyan található meg a projektazonosító', + 'help' => 'Hogyan található meg a projektazonosító.', 'missing' => 'Adjon meg egy használandó projektazonosítót.' ], 'detach_confirm' => 'Biztosan le akarja választani ezt a projektet?', @@ -162,9 +163,9 @@ return [ 'layout' => 'Elrendezés', 'layouts' => 'Elrendezések', 'name' => 'Név', - 'name_comment' => 'Erre a sablonra való hivatkozásként használt egyedi név', + 'name_comment' => 'Erre a sablonra való hivatkozásként használt egyedi név.', 'code' => 'Kód', - 'code_comment' => 'Erre a sablonra való hivatkozásként használt egyedi kód', + 'code_comment' => 'Erre a sablonra való hivatkozásként használt egyedi kód.', 'subject' => 'Tárgy', 'subject_comment' => 'Az e-mail üzenet tárgya', 'description' => 'Leírás', @@ -195,9 +196,9 @@ return [ 'plugin_description' => 'Leírás', 'plugin_version' => 'Verzió', 'plugin_author' => 'Fejlesztő', - 'core_build' => 'Jelenlegi verzió', + 'core_build' => 'Verzió', 'core_build_old' => 'Jelenlegi verzió: :build', - 'core_build_new' => 'Verzió: :build', + 'core_build_new' => 'Új verzió: :build', 'core_build_new_help' => 'Elérhető a legújabb hivatalos kiadás.', 'core_downloading' => 'Alkalmazás fájlok letöltése...', 'core_extracting' => 'Alkalmazás fájlok kicsomagolása...', @@ -253,9 +254,9 @@ return [ 'empty_link' => 'Eseménynapló kiürítése', 'empty_loading' => 'Az eseménynapló kiürítése...', 'empty_success' => 'Az eseménynapló kiürítése sikerült.', - 'return_link' => 'Vissza az eseménynaplóhoz', + 'return_link' => 'Vissza az eseménynapló listához', 'id' => 'Azonosító', - 'id_label' => 'Eseményazonosító', + 'id_label' => 'Esemény azonosító', 'created_at' => 'Dátum és idő', 'message' => 'Üzenet', 'level' => 'Szint' @@ -267,12 +268,12 @@ return [ 'empty_link' => 'Kérelemnapló kiürítése', 'empty_loading' => 'A kérelemnapló kiürítése...', 'empty_success' => 'A kérelemnapló kiürítése megtörtént.', - 'return_link' => 'Vissza a kérelemnaplóhoz', + 'return_link' => 'Vissza a kérelemnapló listához', 'id' => 'Azonosító', 'id_label' => 'Napló azonosító', 'count' => 'Számláló', 'referer' => 'Hivatkozók', - 'url' => 'URL cím', + 'url' => 'Webcím', 'status_code' => 'Állapot' ], 'permissions' => [ From 90c47b4e6f44abe95615948279e3b829255fc8de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alvaro=20C=C3=A1nepa?= Date: Sat, 27 Jun 2015 07:34:34 -0300 Subject: [PATCH 02/12] Translate field value in preview mode --- modules/backend/widgets/form/partials/_field_dropdown.htm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/backend/widgets/form/partials/_field_dropdown.htm b/modules/backend/widgets/form/partials/_field_dropdown.htm index 7c45fea79..46fac9464 100644 --- a/modules/backend/widgets/form/partials/_field_dropdown.htm +++ b/modules/backend/widgets/form/partials/_field_dropdown.htm @@ -3,7 +3,7 @@ ?> previewMode): ?> -
value])) ? e($fieldOptions[$field->value]) : '' ?>
+
value])) ? e(trans($fieldOptions[$field->value])) : '' ?>
- \ No newline at end of file + From 8a36ad5403336ab716961759b36be3ca6e9bb7c5 Mon Sep 17 00:00:00 2001 From: raw99 Date: Wed, 1 Jul 2015 23:13:30 +0300 Subject: [PATCH 03/12] Some Latvian language fixes... --- modules/backend/lang/lv/lang.php | 22 +++++++++++++++++----- modules/cms/lang/lv/lang.php | 10 +++++++++- modules/system/lang/lv/validation.php | 1 + 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/modules/backend/lang/lv/lang.php b/modules/backend/lang/lv/lang.php index 091e6e6e8..8dd6da9db 100644 --- a/modules/backend/lang/lv/lang.php +++ b/modules/backend/lang/lv/lang.php @@ -18,6 +18,9 @@ return [ 'label' => 'Piekļuve liegta', 'help' => "Jums nav piekļuves tiesību, lai skatītu šo lapu.", 'cms_link' => 'Atgriezties back-end' + ], + 'invalid_token' => [ + 'label' => 'Nederīgas drošības atslēga' ] ], 'partial' => [ @@ -25,7 +28,7 @@ return [ ], 'account' => [ 'sign_out' => 'Izrakstīties', - 'login' => 'Pierakstīties', + 'login' => 'Login', 'reset' => 'Atiestatīt', 'restore' => 'Atjaunot', 'login_placeholder' => 'vārds', @@ -86,6 +89,7 @@ return [ 'password' => 'Parole', 'password_confirmation' => 'Apstiprināt Paroli', 'permissions' => 'Tiesības', + 'account' => 'Konts', 'superuser' => 'Super Lietotājs', 'superuser_comment' => 'Atķeksējiet šo aili, lai atļautu šai personai neierobežotu piekļuvi.', 'send_invite' => 'Nosūtīt uzaicinājumu pa Epastu', @@ -107,6 +111,7 @@ return [ 'new' => 'Jauna Administrātoru Grupa', 'delete_confirm' => 'Vai tiešām vēlaties dzēst šo administrātoru grupu?', 'return' => 'Atgriezties grupu sarakstā', + 'users_count' => 'Lietotāji' ], 'preferences' => [ 'not_authenticated' => 'Nav autentificēts lietotājs, kuram ielādēt vai saglabāt iestatījumus.' @@ -140,6 +145,12 @@ return [ 'help' => 'Pievienojiet virsrakstu un aprakstu šim pielikumam.', 'title_label' => 'Vrisraksts', 'description_label' => 'Apraksts' + 'default_prompt' => 'Uzklikšķiniet uz %s vai nesiet failu šeit', + 'attachment_url' => 'Pielikuma URL', + 'upload_file' => 'Augšupielādēt failu', + 'upload_error' => 'Augšupielādes kļūda', + 'remove_confirm' => 'Vai esat pārliecināts?', + 'remove_file' => 'Noņemt failu' ], 'form' => [ 'create_title' => 'Jauns :name', @@ -168,8 +179,8 @@ return [ 'resetting' => 'Atiestatam', 'resetting_name' => 'Atiestatam :name', 'undefined_tab' => 'Izvēles', - 'field_off' => 'Atspējots', - 'field_on' => 'Iespējots', + 'field_off' => 'Izsl.', + 'field_on' => 'Iesl.', 'add' => 'Pievienot', 'apply' => 'Apstiprināt', 'cancel' => 'Atcelt', @@ -181,6 +192,7 @@ return [ 'confirm_tab_close' => 'Vai tiešām vēlaties aizvērt šo cilni? Nesaglabātās izmaiņas būs zudušas.', 'behavior_not_ready' => 'Forma nav tikusi inicializēta, pārbaudiet vai izsaucāt initForm() savā kontrolierī.', 'preview_no_files_message' => 'Faili nav augšupielādēti', + 'preview_no_record_message' => 'Nav izvēlētu ierakstu.', 'select' => 'Izvēlēties', 'select_all' => 'visus', 'select_none' => 'nevienu', @@ -299,6 +311,6 @@ return [ 'email' => 'Epasts' ], 'filter' => [ - 'all' => 'visi', - ], + 'all' => 'visi' + ] ]; diff --git a/modules/cms/lang/lv/lang.php b/modules/cms/lang/lv/lang.php index c20cc21cf..be48ae1fc 100644 --- a/modules/cms/lang/lv/lang.php +++ b/modules/cms/lang/lv/lang.php @@ -25,6 +25,7 @@ return [ ], 'settings_menu' => 'Front-end tēma', 'settings_menu_description' => 'Priekšskatiet instalētās tēmas un izvēlieties aktīvo tēmu.', + 'default_tab' => 'Rekvizīti', 'name_label' => 'Nosaukums', 'name_create_placeholder' => 'Jaunas tēmas nosaukums', 'author_label' => 'Autors', @@ -38,8 +39,10 @@ return [ 'dir_name_label' => 'Direktorijas nosaukums', 'dir_name_create_label' => 'Tēmas mērķdirektorija', 'theme_label' => 'Tēma', + 'theme_title' => 'Tēmas', 'activate_button' => 'Aktivizēt', 'active_button' => 'Aktivizēt', + 'customize_theme' => 'Pielāgot tēmu', 'customize_button' => 'Pielāgot', 'duplicate_button' => 'Dublēt', 'duplicate_title' => 'Dublēt tēmu', @@ -75,6 +78,7 @@ return [ 'dir_name_invalid' => 'Nosaukums drīkst saturēt tikai skaitļus, Latīņu burtus un sekojošos simbolus: _-', 'dir_name_taken' => 'Izvēlētā tēmas mape jau pastāv.', 'find_more_themes' => 'Atrodast vairāk tēmas', + 'saving' => 'Saglabājam tēmu...', 'return' => 'Atgriezties tēmu sarakstā', ], 'maintenance' => [ @@ -218,7 +222,7 @@ return [ 'template' => [ 'invalid_type' => 'Nezināms veidnes tips.', 'not_found' => 'Pieprasītā veidne nav atrasta.', - 'saved'=> 'Veidne tika veiksmīgi saglabāta.' + 'saved'=> 'Fails tika veiksmīgi saglabāts.' ], 'permissions' => [ 'name' => 'Cms', @@ -228,6 +232,10 @@ return [ 'manage_layouts' => 'Pārvaldīt izkārtojumus', 'manage_partials' => 'Pārvaldīt daļas', 'manage_themes' => 'Pārvaldīt tēmas' + 'manage_media' => 'Pārvaldīt multividi' + ], + 'mediafinder' => [ + 'default_prompt' => 'Klikšķiniet uz %s pogas, lai atrastu multividi' ], 'media' => [ 'invalid_path' => "Norādīts nederīgs ceļš līdz failam: ':path'.", diff --git a/modules/system/lang/lv/validation.php b/modules/system/lang/lv/validation.php index 081685d9c..a38dff73d 100644 --- a/modules/system/lang/lv/validation.php +++ b/modules/system/lang/lv/validation.php @@ -46,6 +46,7 @@ return array( "array" => ":attribute nedrīkst pārsniegt :max objektus.", ), "mimes" => ":attribute jabūt failam ar tipu: :values.", + "extensions" => ":attribute jābūt ar paplašinājumu: :values.", "min" => array( "numeric" => ":attribute jābūt vismaz :min.", "file" => ":attribute jabūt vismaz :min kilobaitiem.", From 9e59382822cc3e3d007fbbe6e5cae00be61222b5 Mon Sep 17 00:00:00 2001 From: raw99 Date: Wed, 1 Jul 2015 23:24:39 +0300 Subject: [PATCH 04/12] Some small fix again... --- modules/backend/lang/lv/lang.php | 2 +- modules/cms/lang/lv/lang.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/backend/lang/lv/lang.php b/modules/backend/lang/lv/lang.php index 8dd6da9db..0e32b420a 100644 --- a/modules/backend/lang/lv/lang.php +++ b/modules/backend/lang/lv/lang.php @@ -20,7 +20,7 @@ return [ 'cms_link' => 'Atgriezties back-end' ], 'invalid_token' => [ - 'label' => 'Nederīgas drošības atslēga' + 'label' => 'Nederīga drošības atslēga' ] ], 'partial' => [ diff --git a/modules/cms/lang/lv/lang.php b/modules/cms/lang/lv/lang.php index be48ae1fc..86ec09a18 100644 --- a/modules/cms/lang/lv/lang.php +++ b/modules/cms/lang/lv/lang.php @@ -78,7 +78,7 @@ return [ 'dir_name_invalid' => 'Nosaukums drīkst saturēt tikai skaitļus, Latīņu burtus un sekojošos simbolus: _-', 'dir_name_taken' => 'Izvēlētā tēmas mape jau pastāv.', 'find_more_themes' => 'Atrodast vairāk tēmas', - 'saving' => 'Saglabājam tēmu...', + 'saving' => 'Saglabājam tēmu...', 'return' => 'Atgriezties tēmu sarakstā', ], 'maintenance' => [ From 606892143bb5b48f1c36964bd393a64222f20474 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 4 Jul 2015 09:31:28 +1000 Subject: [PATCH 05/12] Added new security config option cms.enableCsrfProtection --- CHANGELOG.md | 1 + config/cms.php | 12 ++++++++++++ modules/backend/classes/Controller.php | 17 +++++++++-------- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f1902667..2ecc16a1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ - List columns now support specifying a `default` option used when the value would otherwise be null. - Implement a custom autoloader for plugins that use composer. Now only one instance of composer is used, all packages are now added to a global pool to prevent double loading and the load order is respected. - The method signature of `Model::save()` has been fixed to match Eloquent. + - Added new security config option `cms.enableCsrfProtection`. * **Build 272** (2015-06-27) - Protected images and their thumbnails are now supported in the back-end. diff --git a/config/cms.php b/config/cms.php index 98bff8227..88ee86081 100644 --- a/config/cms.php +++ b/config/cms.php @@ -250,4 +250,16 @@ return [ 'defaultMask' => ['file' => null, 'folder' => null], + /* + |-------------------------------------------------------------------------- + | Cross Site Request Forgery (CSRF) Protection + |-------------------------------------------------------------------------- + | + | If the CSRF protection is enabled, all "postback" requests are checked + | for a valid security token. + | + */ + + 'enableCsrfProtection' => false, + ]; diff --git a/modules/backend/classes/Controller.php b/modules/backend/classes/Controller.php index ebf0c1825..56d3770b4 100644 --- a/modules/backend/classes/Controller.php +++ b/modules/backend/classes/Controller.php @@ -6,6 +6,7 @@ use Lang; use View; use Flash; use Event; +use Config; use Request; use Backend; use Session; @@ -34,9 +35,9 @@ use Illuminate\Http\RedirectResponse; */ class Controller extends Extendable { + use \System\Traits\ViewMaker; use \System\Traits\AssetMaker; use \System\Traits\ConfigMaker; - use \System\Traits\ViewMaker; use \Backend\Traits\WidgetMaker; use \October\Rain\Support\Traits\Emitter; @@ -118,11 +119,6 @@ class Controller extends Extendable */ protected $statusCode = 200; - /** - * @var bool Determine if submission requests use CSRF protection. - */ - public $useSecurityToken = true; - /** * Constructor. */ @@ -176,7 +172,7 @@ class Controller extends Extendable /* * Check security token. */ - if ($this->useSecurityToken && !$this->verifyCsrfToken()) { + if (!$this->verifyCsrfToken()) { return Response::make(Lang::get('backend::lang.page.invalid_token.label'), 403); } @@ -629,11 +625,16 @@ class Controller extends Extendable /** * Checks the request data / headers for a valid CSRF token. - * Returns false if a valid token is not found. + * Returns false if a valid token is not found. Override this + * method to disable the check. * @return bool */ protected function verifyCsrfToken() { + if (!Config::get('cms.enableCsrfProtection')) { + return true; + } + if (in_array(Request::method(), ['HEAD', 'GET', 'OPTIONS'])) { return true; } From a1e1b52d6e851528a439b84724fa794e44019245 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 4 Jul 2015 09:33:05 +1000 Subject: [PATCH 06/12] Fixes bug where select2 cannot be selected in a popup OL and UL and sane rich editor elements Disable search on list setup form --- .../richeditor/assets/js/plugin.figure.js | 62 +-- .../richeditor/assets/js/richeditor.js | 4 +- .../widgets/lists/partials/_setup_form.htm | 2 +- .../assets/ui/vendor/bootstrap/js/modal.js | 441 +++++++++--------- 4 files changed, 232 insertions(+), 277 deletions(-) diff --git a/modules/backend/formwidgets/richeditor/assets/js/plugin.figure.js b/modules/backend/formwidgets/richeditor/assets/js/plugin.figure.js index 8fffeabd6..b27da0697 100644 --- a/modules/backend/formwidgets/richeditor/assets/js/plugin.figure.js +++ b/modules/backend/formwidgets/richeditor/assets/js/plugin.figure.js @@ -20,61 +20,10 @@ controlGroup: ['up', 'down', 'remove'], init: function () { - this.observeCaptions() this.observeToolbars() this.observeKeyboard() }, - observeCaptions: function () { - - /* - * Adding a line-break to empty captions and citations on click will place the cursor in the expected place - */ - this.redactor.$editor.on('click.figure', 'figcaption:empty, cite:empty', $.proxy(function (event) { - $(event.target).prepend('
') - this.redactor.caret.setEnd(event.target) - event.stopPropagation() - }, this)) - - /* - * Remove generated line-breaks empty figcaptions - */ - $(window).on('click', $.proxy(this.cleanCaptions, this)) - this.redactor.$editor.on('blur.figure', $.proxy(this.cleanCaptions, this)) - this.redactor.$editor.closest('form').one('submit', $.proxy(this.clearCaptions, this)) - - /* - * Prevent user from removing captions or citations with delete/backspace keys - */ - this.redactor.$editor.on('keydown.figure', $.proxy(function (event) { - var current = this.redactor.selection.getCurrent(), - isEmpty = !current.length, - isCaptionNode = !!$(current).closest('figcaption, cite').length, - isDeleteKey = $.inArray(event.keyCode, [this.redactor.keyCode.BACKSPACE, this.redactor.keyCode.DELETE]) >= 0 - - if (isEmpty && isDeleteKey && isCaptionNode) { - event.preventDefault() - } - }, this)) - - }, - - cleanCaptions: function () { - this.redactor.$editor.find('figcaption, cite').filter(function () { - return $(this).text() == '' - }).empty() - }, - - clearCaptions: function () { - this.redactor.$editor.find('figcaption, cite').filter(function () { - return $(this).text() == '' - }).remove() - - if (this.redactor.opts.visual) { - this.redactor.code.sync() - } - }, - showToolbar: function (event) { var $figure = $(event.currentTarget), type = $figure.data('type') || 'default', @@ -285,11 +234,11 @@ * Delete key */ if ( - event.keyCode === 8 - && !redactor.caret.getOffset(currentNode) - && currentNode.previousSibling - && currentNode.previousSibling.nodeName === 'FIGURE' - ) { + event.keyCode === 8 + && !redactor.caret.getOffset(currentNode) + && currentNode.previousSibling + && currentNode.previousSibling.nodeName === 'FIGURE' + ) { event.preventDefault() } }) @@ -297,7 +246,6 @@ destroy: function() { this.redactor.$editor.off('.figure') - $(window).off('click', $.proxy(this.cleanCaptions, this)) for (var type in this.toolbar) { this.toolbar[type].find('span').off('.figure') diff --git a/modules/backend/formwidgets/richeditor/assets/js/richeditor.js b/modules/backend/formwidgets/richeditor/assets/js/richeditor.js index 94e3c2c3b..bc25afd18 100755 --- a/modules/backend/formwidgets/richeditor/assets/js/richeditor.js +++ b/modules/backend/formwidgets/richeditor/assets/js/richeditor.js @@ -168,8 +168,8 @@ } RichEditor.prototype.sanityCheckContent = function() { - // First and last elements should always be paragraphs or pre - var safeElements = 'p, h1, h2, h3, h4, h5, pre, figure'; + // First and last elements should always be paragraphs, lists or pre + var safeElements = 'p, h1, h2, h3, h4, h5, pre, figure, ol, ul'; if (!this.$editor.children(':last-child').is(safeElements)) { this.$editor.append('


') diff --git a/modules/backend/widgets/lists/partials/_setup_form.htm b/modules/backend/widgets/lists/partials/_setup_form.htm index 3d51f8d21..fe287d5b6 100644 --- a/modules/backend/widgets/lists/partials/_setup_form.htm +++ b/modules/backend/widgets/lists/partials/_setup_form.htm @@ -38,7 +38,7 @@

- diff --git a/modules/system/assets/ui/vendor/bootstrap/js/modal.js b/modules/system/assets/ui/vendor/bootstrap/js/modal.js index 20ff27046..9b44a8463 100644 --- a/modules/system/assets/ui/vendor/bootstrap/js/modal.js +++ b/modules/system/assets/ui/vendor/bootstrap/js/modal.js @@ -8,236 +8,243 @@ +function ($) { - 'use strict'; + 'use strict'; - // MODAL CLASS DEFINITION - // ====================== + // MODAL CLASS DEFINITION + // ====================== - var Modal = function (element, options) { - this.options = options - this.$element = $(element) - this.$backdrop = - this.isShown = null + var Modal = function (element, options) { + this.options = options + this.$element = $(element) + this.$backdrop = + this.isShown = null - if (this.options.remote) { - this.$element - .find('.modal-content') - .load(this.options.remote, $.proxy(function () { - this.$element.trigger('loaded.bs.modal') - }, this)) - } - } - - Modal.DEFAULTS = { - backdrop: true, - keyboard: true, - show: true - } - - Modal.prototype.toggle = function (_relatedTarget) { - return this[!this.isShown ? 'show' : 'hide'](_relatedTarget) - } - - Modal.prototype.show = function (_relatedTarget) { - var that = this - var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) - - this.$element.trigger(e) - - if (this.isShown || e.isDefaultPrevented()) return - - this.isShown = true - - this.escape() - - this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) - - this.backdrop(function () { - var transition = $.support.transition && that.$element.hasClass('fade') - - if (!that.$element.parent().length) { - that.$element.appendTo(document.body) // don't move modals dom position - } - - that.$element - .show() - .scrollTop(0) - - if (transition) { - that.$element[0].offsetWidth // force reflow - } - - that.$element - .addClass('in') - .attr('aria-hidden', false) - - that.enforceFocus() - - var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) - - transition ? - that.$element.find('.modal-dialog') // wait for modal to slide in - .one($.support.transition.end, function () { - that.$element.focus().trigger(e) - }) - .emulateTransitionEnd(300) : - that.$element.focus().trigger(e) - }) - } - - Modal.prototype.hide = function (e) { - if (e) e.preventDefault() - - e = $.Event('hide.bs.modal') - - this.$element.trigger(e) - - if (!this.isShown || e.isDefaultPrevented()) return - - this.isShown = false - - this.escape() - - $(document).off('focusin.bs.modal') - - this.$element - .removeClass('in') - .attr('aria-hidden', true) - .off('click.dismiss.bs.modal') - - $.support.transition && this.$element.hasClass('fade') ? - this.$element - .one($.support.transition.end, $.proxy(this.hideModal, this)) - .emulateTransitionEnd(300) : - this.hideModal() - } - - Modal.prototype.enforceFocus = function () { - $(document) - .off('focusin.bs.modal') // guard against infinite focus loop - .on('focusin.bs.modal', $.proxy(function (e) { - if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { - this.$element.focus() + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) } - }, this)) - } - - Modal.prototype.escape = function () { - if (this.isShown && this.options.keyboard) { - this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) { - e.which == 27 && this.hide() - }, this)) - } else if (!this.isShown) { - this.$element.off('keyup.dismiss.bs.modal') } - } - Modal.prototype.hideModal = function () { - var that = this - this.$element.hide() - this.backdrop(function () { - that.removeBackdrop() - that.$element.trigger('hidden.bs.modal') - }) - } - - Modal.prototype.removeBackdrop = function () { - this.$backdrop && this.$backdrop.remove() - this.$backdrop = null - } - - Modal.prototype.backdrop = function (callback) { - var animate = this.$element.hasClass('fade') ? 'fade' : '' - - if (this.isShown && this.options.backdrop) { - var doAnimate = $.support.transition && animate - - this.$backdrop = $('