From 98b56234c946698390410190148f62a187035c3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20GAULIN?= Date: Mon, 27 Jul 2015 12:36:51 +0200 Subject: [PATCH 01/66] Updating a tab was changing the HTML `data-*` attributes but did not update the jQuery `.data()` cache - fixes #1310 --- modules/system/assets/ui/js/tab.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/system/assets/ui/js/tab.js b/modules/system/assets/ui/js/tab.js index ca3dc609f..cf3ef60d3 100644 --- a/modules/system/assets/ui/js/tab.js +++ b/modules/system/assets/ui/js/tab.js @@ -158,6 +158,9 @@ this.initTab($tab) + $link.data('title', $link.attr('data-title')) + $link.data('target', $link.attr('data-target')) + this.updateClasses() } From d0a55eed0c54917da8ed5fed18d1d5666d63d5a5 Mon Sep 17 00:00:00 2001 From: Filip Iulian Pacurar Date: Mon, 3 Aug 2015 09:08:25 +0300 Subject: [PATCH 02/66] Auto closing option translation in Romanian Translation for pull request #1336 --- modules/backend/lang/ro/lang.php | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/backend/lang/ro/lang.php b/modules/backend/lang/ro/lang.php index dede7394d..8728f30cb 100644 --- a/modules/backend/lang/ro/lang.php +++ b/modules/backend/lang/ro/lang.php @@ -191,6 +191,7 @@ return [ 'code_folding' => 'Code folding', 'word_wrap' => 'Word wrap', 'highlight_active_line' => 'Evidentiere linie activa', + 'auto_closing' => 'Inchide automat tag-uri si caractere speciale', 'show_invisibles' => 'Arata caractere invizibile', 'show_gutter' => 'Afiseaza panou', 'theme' => 'Schema culori', From f22a16d48201691060f02dac7842075d71d36ab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20GAULIN?= Date: Mon, 3 Aug 2015 18:07:56 +0200 Subject: [PATCH 03/66] Fix NavigationManager error when extending a side menu by adding a new item. The code and owner were not set in the value array. --- modules/backend/classes/NavigationManager.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/backend/classes/NavigationManager.php b/modules/backend/classes/NavigationManager.php index 23b55dae3..c64d9325a 100644 --- a/modules/backend/classes/NavigationManager.php +++ b/modules/backend/classes/NavigationManager.php @@ -273,6 +273,11 @@ class NavigationManager return false; } + $definition = array_merge($definition, [ + 'code' => $sideCode, + 'owner' => $owner + ]); + $mainItem = $this->items[$itemKey]; if (isset($mainItem->sideMenu[$sideCode])) { $definition = array_merge((array) $mainItem->sideMenu[$sideCode], $definition); From a63375cd5b8432d20e6fb613d44983afb0d39a53 Mon Sep 17 00:00:00 2001 From: Krzysztof Powelski Date: Tue, 4 Aug 2015 23:40:51 +0200 Subject: [PATCH 04/66] Make backend auto closing option label translatable --- modules/backend/lang/en/lang.php | 1 + modules/backend/models/editorpreferences/fields.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/backend/lang/en/lang.php b/modules/backend/lang/en/lang.php index b470b2c41..e7bfdcb75 100644 --- a/modules/backend/lang/en/lang.php +++ b/modules/backend/lang/en/lang.php @@ -260,6 +260,7 @@ return [ 'code_folding' => 'Code folding', 'word_wrap' => 'Word wrap', 'highlight_active_line' => 'Highlight active line', + 'auto_closing' => 'Auto close tags and special characters', 'show_invisibles' => 'Show invisible characters', 'show_gutter' => 'Show gutter', 'theme' => 'Color scheme' diff --git a/modules/backend/models/editorpreferences/fields.yaml b/modules/backend/models/editorpreferences/fields.yaml index 09108286e..b762a5b69 100644 --- a/modules/backend/models/editorpreferences/fields.yaml +++ b/modules/backend/models/editorpreferences/fields.yaml @@ -53,7 +53,7 @@ fields: type: dropdown auto_closing: - label: Auto close tags and special characters + label: backend::lang.editor.auto_closing type: checkbox show_invisibles: From 22be6e4a377d218504adb93f79ded526cb082b66 Mon Sep 17 00:00:00 2001 From: Krzysztof Powelski Date: Tue, 4 Aug 2015 23:49:48 +0200 Subject: [PATCH 05/66] Translate auto closing option to Polish --- modules/backend/lang/pl/lang.php | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/backend/lang/pl/lang.php b/modules/backend/lang/pl/lang.php index 3851b4e50..2aeb610c8 100644 --- a/modules/backend/lang/pl/lang.php +++ b/modules/backend/lang/pl/lang.php @@ -259,6 +259,7 @@ return [ 'code_folding' => 'Zawijanie kodu', 'word_wrap' => 'Zawijanie wierszy', 'highlight_active_line' => 'Podświetl aktywne linie', + 'auto_closing' => 'Automatycznie zamykaj tagi i specjalne znaki', 'show_invisibles' => 'Pokaż niewidzialne znaki', 'show_gutter' => 'Pokaż gutter', 'theme' => 'Schemat kolorów' From 9c3f83c54f6bd55261079eea51fa468dc4ab8627 Mon Sep 17 00:00:00 2001 From: Krzysztof Powelski Date: Wed, 5 Aug 2015 00:00:43 +0200 Subject: [PATCH 06/66] Escape HTML for .txt contents --- modules/cms/classes/Content.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/cms/classes/Content.php b/modules/cms/classes/Content.php index 429b24d96..7a5f75983 100644 --- a/modules/cms/classes/Content.php +++ b/modules/cms/classes/Content.php @@ -69,10 +69,17 @@ class Content extends CmsCompoundObject protected function parseMarkup() { - $result = $this->markup; + $extension = strtolower(File::extension($this->fileName)); - if (strtolower(File::extension($this->fileName)) == 'md') { - $result = Markdown::parse($this->markup); + switch ($extension) { + case 'txt': + $result = htmlspecialchars($this->markup); + break; + case 'md': + $result = Markdown::parse($this->markup); + break; + default: + $result = $this->markup; } return $result; From 03235129acce30ee19180f6711942549cb780310 Mon Sep 17 00:00:00 2001 From: Antony Tsioukas Date: Fri, 7 Aug 2015 10:32:52 +0300 Subject: [PATCH 07/66] System Client.php Greek Language --- modules/system/lang/el/client.php | 46 +++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 modules/system/lang/el/client.php diff --git a/modules/system/lang/el/client.php b/modules/system/lang/el/client.php new file mode 100644 index 000000000..d4caf3924 --- /dev/null +++ b/modules/system/lang/el/client.php @@ -0,0 +1,46 @@ + [ + 'formatting' => 'Μορφοποίηση', + 'quote' => 'Παράθεση', + 'code' => 'Κώδικας', + 'header1' => 'Κεφαλίδα 1', + 'header2' => 'Κεφαλίδα 2', + 'header3' => 'Κεφαλίδα 3', + 'header4' => 'Κεφαλίδα 4', + 'header5' => 'Κεφαλίδα 5', + 'header6' => 'Κεφαλίδα 6', + 'bold' => 'Έντονα', + 'italic' => 'Ιταλικά', + 'unorderedlist' => 'Μη ταξινομημένη λίστα', + 'orderedlist' => 'Ταξινομημένη λίστα', + 'video' => 'Βίντεο', + 'image' => 'Εικόνα', + 'link' => 'Σύνδεσμος', + 'horizontalrule' => 'Εισαγωγή Οριζόντιας Γραμμής', + 'fullscreen' => 'Πλήρης οθόνη', + 'preview' => 'Προεπισκόπηση', + ], + + 'mediamanager' => [ + 'insert_link' => "Εισαγωγή Συνδέσμου από τα Μέσα", + 'insert_image' => "Εισαγωγή Εικόνας από τα Μέσα", + 'insert_video' => "Εισαγωγή Βίντεο από τα Μέσα", + 'insert_audio' => "Εισαγωγή Ήχου από τα Μέσα", + 'invalid_file_empty_insert' => "Παρακαλούμε επιλέξτε αρχείο για να εισάγετε συνδέσμους σε αυτό.", + 'invalid_file_single_insert' => "Παρακαλούμε επιλέξτε ένα μοναδικό αρχείο.", + ], + +]; From 7971633993936c2d91851c408531c7316778f294 Mon Sep 17 00:00:00 2001 From: Antony Tsioukas Date: Fri, 7 Aug 2015 10:36:04 +0300 Subject: [PATCH 08/66] Update Greek Language --- modules/backend/lang/el/lang.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/backend/lang/el/lang.php b/modules/backend/lang/el/lang.php index 097a8890b..b98c8deff 100644 --- a/modules/backend/lang/el/lang.php +++ b/modules/backend/lang/el/lang.php @@ -1,5 +1,5 @@ [ 'title' => 'Περιοχή Διαχείρισης', @@ -21,7 +21,7 @@ return [ ], 'invalid_token' => [ 'label' => 'Μη έγκυρο διακριτικό ασφαλείας', - ] + ] ], 'partial' => [ 'not_found_name' => "Το μερικό ':name' δεν βρέθηκε.", @@ -108,7 +108,7 @@ return [ 'code_comment' => 'Συμπληρώστε ένα μοναδικό κωδικό αν θέλετε να έχετε πρόσβαση σε αυτόν μέσω του API.', 'menu_label' => 'Ομάδες', 'list_title' => 'Διαχείριση Ομάδων', - 'new' => 'Νέα Ομάδα Διαχειριστών', + 'new' => 'Νέα Ομάδα', 'delete_confirm' => 'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν την ομάδα;', 'return' => 'Επιστροφή στην λίστα των ομάδων', 'users_count' => 'Χρήστες', @@ -145,12 +145,12 @@ return [ 'help' => 'Προσθέστε τίτλο και περιγραφή για αυτήν την επισύναψη.', 'title_label' => 'Τίτλος', 'description_label' => 'Περιγραφή', - 'default_prompt' => 'Κάντε κλικ στο %s ή σύρετε ένα αρχείο εδώ για να το ανεβάσετε',//Click the %s or drag a file here to upload', + 'default_prompt' => 'Κάντε κλικ στο %s ή σύρετε ένα αρχείο εδώ για να το ανεβάσετε', 'attachment_url' => 'URL Συνημμένου', 'upload_file' => 'Ανέβασμα αρχείου', 'upload_error' => 'Σφάλμα ανεβάσματος', 'remove_confirm' => 'Είστε σίγουροι;', - 'remove_file' => 'Διαγραφή αρχείου', + 'remove_file' => 'Διαγραφή αρχείου', ], 'form' => [ 'create_title' => 'Νέο :name', @@ -187,11 +187,12 @@ return [ 'close' => 'Κλείσιμο', 'confirm' => 'Επιβεβαίωση', 'reload' => 'Επαναφόρτιση', + 'complete' => 'Ολοκλήρωση', 'ok' => 'Εντάξει', 'or' => 'ή', 'confirm_tab_close' => 'Είστε σίγουροι ότι θέλετε να κλείσετε αυτήν την καρτέλα; Οι μη αποθηκευμένες αλλαγές θα χαθούν.', 'behavior_not_ready' => 'Η συμπεριφορά δεν έχει αρχικοποιήσεις, ελέγξτε εάν έχετε καλέσει το initForm() στον χειριστή.', - 'preview_no_files_message' => 'Τα αρχεία δεν ανέβηκαν', + 'preview_no_files_message' => 'Δεν υπάρχουν αρχεία που ανέβηκαν.', 'preview_no_record_message' => 'Δεν είναι επιλεγμένη καμία εγγραφή.', 'select' => 'Επιλογή', 'select_all' => 'όλα', From 0cd0dc5b62e8e68abf24c5fc046f8ac27432a4f5 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Fri, 7 Aug 2015 19:28:21 +1000 Subject: [PATCH 09/66] Add keywords to log pages --- modules/system/ServiceProvider.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/system/ServiceProvider.php b/modules/system/ServiceProvider.php index d4b3466d5..601db58f1 100644 --- a/modules/system/ServiceProvider.php +++ b/modules/system/ServiceProvider.php @@ -422,7 +422,8 @@ class ServiceProvider extends ModuleServiceProvider 'icon' => 'icon-exclamation-triangle', 'url' => Backend::url('system/eventlogs'), 'permissions' => ['system.access_logs'], - 'order' => 900 + 'order' => 900, + 'keywords' => 'error exception' ], 'request_logs' => [ 'label' => 'system::lang.request_log.menu_label', @@ -431,7 +432,8 @@ class ServiceProvider extends ModuleServiceProvider 'icon' => 'icon-file-o', 'url' => Backend::url('system/requestlogs'), 'permissions' => ['system.access_logs'], - 'order' => 910 + 'order' => 910, + 'keywords' => '404 error' ] ]); }); From aa2722b0a07c78c5ea84f00703a9a28265decd0d Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Fri, 7 Aug 2015 19:28:59 +1000 Subject: [PATCH 10/66] These errors shouldn't be logged =) --- plugins/october/demo/components/Todo.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/october/demo/components/Todo.php b/plugins/october/demo/components/Todo.php index 7c3b56b1e..f3cac716e 100644 --- a/plugins/october/demo/components/Todo.php +++ b/plugins/october/demo/components/Todo.php @@ -1,6 +1,7 @@ = $this->property('max')) { - throw new \Exception(sprintf('Sorry only %s items are allowed.', $this->property('max'))); + throw new ApplicationException(sprintf('Sorry only %s items are allowed.', $this->property('max'))); } if (($newItem = post('newItem')) != '') { From 42f438b673da74f1acf97ba12db21f62e1899266 Mon Sep 17 00:00:00 2001 From: Finjon Kiang Date: Mon, 27 Jul 2015 23:16:38 +0800 Subject: [PATCH 11/66] set ignore for netbeans project folder --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index a547c0bff..90c0df18f 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,6 @@ nginx-ssl.error.log php-errors.log sftp-config.json selenium.php + +# for netbeans +nbproject From cebf7466a95c7243b6b50908bdeb7ba6694446af Mon Sep 17 00:00:00 2001 From: Finjon Kiang Date: Mon, 27 Jul 2015 23:51:44 +0800 Subject: [PATCH 12/66] add new language zh-tw / Chinese (Taiwan) --- modules/backend/lang/zh-tw/lang.php | 305 ++++++++++++++++++ modules/backend/models/BackendPreferences.php | 1 + modules/cms/lang/zh-tw/lang.php | 297 +++++++++++++++++ modules/system/lang/el/lang.php | 1 + modules/system/lang/en/lang.php | 1 + modules/system/lang/fa/lang.php | 3 +- modules/system/lang/fr/lang.php | 3 +- modules/system/lang/hu/lang.php | 3 +- modules/system/lang/lv/lang.php | 3 +- modules/system/lang/nb-no/lang.php | 3 +- modules/system/lang/ru/lang.php | 3 +- modules/system/lang/zh-cn/lang.php | 3 +- modules/system/lang/zh-tw/lang.php | 287 ++++++++++++++++ modules/system/lang/zh-tw/validation.php | 98 ++++++ 14 files changed, 1004 insertions(+), 7 deletions(-) create mode 100644 modules/backend/lang/zh-tw/lang.php create mode 100644 modules/cms/lang/zh-tw/lang.php create mode 100644 modules/system/lang/zh-tw/lang.php create mode 100644 modules/system/lang/zh-tw/validation.php diff --git a/modules/backend/lang/zh-tw/lang.php b/modules/backend/lang/zh-tw/lang.php new file mode 100644 index 000000000..c066d9eb2 --- /dev/null +++ b/modules/backend/lang/zh-tw/lang.php @@ -0,0 +1,305 @@ + [ + 'title' => '管理介面' + ], + 'field' => [ + 'invalid_type' => '錯誤的字串類型 :type', + 'options_method_not_exists' => "模型 :model 必須定義一個返回 ':field' 表單字串選項的方法 :method()。" + ], + 'widget' => [ + 'not_registered' => "元件 ':name' 還沒註冊", + 'not_bound' => "元件 ':name' 沒綁到控制器" + ], + 'page' => [ + 'untitled' => '未命名', + 'access_denied' => [ + 'label' => '拒絕訪問', + 'help' => "您沒有訪問這個頁面需要的權限.", + 'cms_link' => '返回管理介面' + ] + ], + 'partial' => [ + 'not_found_name' => "元件 ':name' 找不到." + ], + 'account' => [ + 'sign_out' => '登出', + 'login' => '登入', + 'reset' => '重置', + 'restore' => '還原', + 'login_placeholder' => '登入', + 'password_placeholder' => '密碼', + 'forgot_password' => '忘記您的密碼?', + 'enter_email' => '輸入您的email', + 'enter_login' => '輸入帳號', + 'email_placeholder' => 'email', + 'enter_new_password' => '輸入新密碼', + 'password_reset' => '密碼重置', + 'restore_success' => '密碼重置的郵件已發送到您的電子信箱', + 'restore_error' => "找不到使用者 ':login'", + 'reset_success' => '您的密碼已經重置成功. 您現在可以登入了', + 'reset_error' => '密碼重置失敗. 請重試!', + 'reset_fail' => '不能重置您的密碼!', + 'apply' => '套用', + 'cancel' => '取消', + 'delete' => '刪除', + 'ok' => 'OK' + ], + 'dashboard' => [ + 'menu_label' => '儀表板', + 'widget_label' => '元件', + 'widget_width' => '寬度', + 'full_width' => '全部寬度', + 'add_widget' => '新增元件', + 'widget_inspector_title' => '元件設定', + 'widget_inspector_description' => '設定報表元件', + 'widget_columns_label' => '寬度 :columns', + 'widget_columns_description' => '元件寬度, 1 到 10', + 'widget_columns_error' => '請輸入元件寬度, 1 到 10', + 'columns' => '{1} 欄|[2,Inf] 欄', + 'widget_new_row_label' => '強制新列', + 'widget_new_row_description' => '把元件放到新列', + 'widget_title_label' => '元件標題', + 'widget_title_error' => '需要元件標題', + 'status' => [ + 'widget_title_default' => '系統狀態', + 'online' => '在線', + 'maintenance' => '維護中', + 'update_available' => '{0} 更新可用!|{1} 更新可用!|[2,Inf] 更新可用!' + ] + ], + 'user' => [ + 'name' => '管理員', + 'menu_label' => '管理員', + 'menu_description' => '管理管理介面管理員使用者, 群組和權限', + 'list_title' => '管理', + 'new' => '新管理員', + 'login' => '登入', + 'first_name' => '名', + 'last_name' => '姓', + 'full_name' => '全名', + 'email' => '郵件', + 'groups' => '團隊', + 'groups_comment' => '指定這個人屬於哪個群組', + 'avatar' => '頭像', + 'password' => '密碼', + 'password_confirmation' => '確認密碼', + 'permissions' => '權限', + 'account' => '帳號', + 'superuser' => '超級使用者', + 'superuser_comment' => '選取並允許這個人訪問全部區域', + 'send_invite' => '發送邀請郵件', + 'send_invite_comment' => '發送一封包含使用者名和密碼的歡迎郵件', + 'delete_confirm' => '您真的想要刪除這個管理員?', + 'return' => '返回管理員列表', + 'allow' => '允許', + 'inherit' => '繼承', + 'deny' => '拒絕', + 'group' => [ + 'name' => '群組', + 'name_field' => '名字', + 'description_field' => '描述', + 'is_new_user_default_field' => '預設增加新管理員到這個群組', + 'code_field' => '代碼', + 'code_comment' => '如果您想訪問 API, 請輸入唯一碼', + 'menu_label' => '群組', + 'list_title' => '管理群組', + 'new' => '新管理群組', + 'delete_confirm' => '您真的想要刪除這個管理群組?', + 'return' => '返回群組列表', + ], + 'preferences' => [ + 'not_authenticated' => '沒有認證使用者載入或儲存設定' + ] + ], + 'list' => [ + 'default_title' => '列表', + 'search_prompt' => '搜尋...', + 'no_records' => '目前頁面中沒有記錄', + 'missing_model' => ':class 中的列表沒有定義好的模型。', + 'missing_column' => '沒有 :columns 的欄定義', + 'missing_columns' => ':class 中使用的列表沒有定義好的欄', + 'missing_definition' => "列表不包含 ':field' 欄.", + 'behavior_not_ready' => '列表沒有初始化, 確認您的控制器中調用了makeLists()', + 'invalid_column_datetime' => "欄值 ':column' 不是時間對象, 缺少了 \$dates 在模型中的引用嗎?", + 'pagination' => '顯示記錄: :from-:to :total', + 'prev_page' => '之前頁', + 'next_page' => '下一頁', + 'loading' => '載入中...', + 'setup_title' => '建立列表', + 'setup_help' => '使用多選框選擇您想在列表中看到的欄. 您可以通過拖拽調整欄的位置', + 'records_per_page' => '每頁的記錄', + 'records_per_page_help' => '選擇每頁想顯示的記錄數量. 請注意一頁中太多記錄可能會降低性能', + 'delete_selected' => '刪除選擇的', + 'delete_selected_empty' => '沒有需要刪除的記錄', + 'delete_selected_confirm' => '刪除選取的記錄?', + 'delete_selected_success' => '成功刪除選擇的記錄', + ], + 'fileupload' => [ + 'attachment' => '附件', + 'help' => '給附件新增標題和描述', + 'title_label' => '標題', + 'description_label' => '描述' + ], + 'form' => [ + 'create_title' => '新 :name', + 'update_title' => '編輯 :name', + 'preview_title' => '預覽 :name', + 'create_success' => ':name 建立成功', + 'update_success' => ':name 更新成功', + 'delete_success' => ':name 刪除成功', + 'missing_id' => '表單記錄ID沒有指定', + 'missing_model' => ':class 中使用的表單沒有定義的model', + 'missing_definition' => "表單不包含字串 ':field'.", + 'not_found' => '表單 ID :id 找不到', + 'action_confirm' => '您確定?', + 'create' => '建立', + 'create_and_close' => '建立和關閉', + 'creating' => '建立中...', + 'creating_name' => '建立 :name...', + 'save' => '儲存', + 'save_and_close' => '儲存和關閉', + 'saving' => '儲存...', + 'saving_name' => '儲存 :name...', + 'delete' => '刪除', + 'deleting' => '刪除中...', + 'deleting_name' => '刪除 :name...', + 'reset_default' => '重置到預設', + 'resetting' => '重置', + 'resetting_name' => '重置 :name', + 'undefined_tab' => '雜項', + 'field_off' => '關', + 'field_on' => '開', + 'add' => '增加', + 'apply' => '應用', + 'cancel' => '取消', + 'close' => '關閉', + 'confirm' => '確認', + 'reload' => '重新載入', + 'ok' => 'OK', + 'or' => '或', + 'confirm_tab_close' => '您真的想要關閉這個標籤嗎? 未儲存的改變會丟失', + 'behavior_not_ready' => '表單還沒初始化, 確保您調用了控制器中的 initForm()', + 'preview_no_files_message' => '檔案沒有上傳', + 'select' => '選擇', + 'select_all' => 'all', + 'select_none' => 'none', + 'select_placeholder' => '請選擇', + 'insert_row' => '插入行', + 'delete_row' => '刪除行', + 'concurrency_file_changed_title' => '檔案異動', + 'concurrency_file_changed_description' => "您正在編輯的檔案正在被其他使用者修改. 您可以重新載入或覆蓋硬碟上的檔案." + ], + 'relation' => [ + 'missing_config' => "關聯沒有':config'的設定檔案.", + 'missing_definition' => "關聯不包含 ':field' 的定義.", + 'missing_model' => "用於 :class 的關聯沒有定義好的model.", + 'invalid_action_single' => "這個操作不能在單一關聯上執行.", + 'invalid_action_multi' => "這個操作不能在多重關聯上執行.", + 'help' => "點選增加", + 'related_data' => "相關的 :name", + 'add' => "增加", + 'add_selected' => "增加選取的", + 'add_a_new' => "增加一個新的 :name", + 'link_selected' => "關聯選取", + 'link_a_new' => "關聯一個新的 :name", + 'cancel' => "取消", + 'close' => "關閉", + 'add_name' => "增加 :name", + 'create' => "建立", + 'create_name' => "建立 :name", + 'update' => "更新", + 'update_name' => "更新 :name", + 'preview' => "預覽", + 'preview_name' => "預覽 :name", + 'remove' => "移除", + 'remove_name' => "移除 :name", + 'delete' => "刪除", + 'delete_name' => "刪除 :name", + 'delete_confirm' => "您確定?", + 'link' => "關聯", + 'link_name' => "關聯 :name", + 'unlink' => "取消關聯", + 'unlink_name' => "取消關聯 :name", + 'unlink_confirm' => "您確定?", + ], + 'model' => [ + 'name' => 'Model', + 'not_found' => "Model ':class' ID :id 找不到", + 'missing_id' => '沒有指定的ID搜尋model記錄', + 'missing_relation' => "Model ':class' 不包含 ':relation'.", + 'missing_method' => "Model ':class' 不包含 ':method'.", + 'invalid_class' => "Model :model 在 :class 中是錯誤的, 必須繼承 \\Model class.", + 'mass_assignment_failed' => "針對Model屬性':attribute'的大量賦值失敗." + ], + 'warnings' => [ + 'tips' => '系統設定技巧', + 'tips_description' => '您需要注意那些issue, 以使系統設定正確', + 'permissions' => '目錄 :name 或子目錄對PHP不可寫. 請對這個目錄上的webserver設定正確的權限', + 'extension' => 'PHP外掛 :name 沒安裝. 請安裝這個庫並且啟用外掛' + ], + 'editor' => [ + 'menu_label' => '代碼編輯器選項', + 'menu_description' => '自訂代碼編輯器選項, 例如字體大小和顏色主題', + 'font_size' => '字體大小', + 'tab_size' => '標籤大小', + 'use_hard_tabs' => '使用tabs縮進', + 'code_folding' => '代碼摺疊', + 'word_wrap' => '自動換行', + 'highlight_active_line' => '醒目顯示操作中的行', + 'show_invisibles' => '顯示隱藏字元', + 'show_gutter' => '顯示gutter', + 'theme' => '色彩主題' + ], + 'tooltips' => [ + 'preview_website' => '預覽網站' + ], + 'mysettings' => [ + 'menu_label' => '我的設定', + 'menu_description' => '設定涉及到您的管理帳號' + ], + 'myaccount' => [ + 'menu_label' => '我的帳號', + 'menu_description' => '更新您的帳號細節, 例如名字, 郵件地址和密碼', + 'menu_keywords' => '安全登入' + ], + 'branding' => [ + 'menu_label' => '自訂管理介面', + 'menu_description' => '自訂管理區域, 例如名字, 顏色和logo', + 'brand' => '品牌', + 'logo' => 'Logo', + 'logo_description' => '上傳自訂logo到管理介面', + 'app_name' => '網站名稱', + 'app_name_description' => '這個名稱顯示在管理介面的標題區域', + 'app_tagline' => '網站標語', + 'app_tagline_description' => '標語顯示在管理介面的登入介面', + 'colors' => '顏色', + 'primary_light' => '主要 (Light)', + 'primary_dark' => '主要 (Dark)', + 'secondary_light' => '次要 (Light)', + 'secondary_dark' => '次要 (Dark)', + 'styles' => '樣式', + 'custom_stylesheet' => '自訂樣式' + ], + 'backend_preferences' => [ + 'menu_label' => '管理介面設定', + 'menu_description' => '管理您的管理介面設定, 例如希望使用的語言。', + 'locale' => '語言', + 'locale_comment' => '選擇您希望使用的本地語言。' + ], + 'access_log' => [ + 'hint' => '這個log顯示了管理員成功登入的訊息. 記錄保持:days天。', + 'menu_label' => '訪問日誌', + 'menu_description' => '查看成功登入管理介面使用者日誌。', + 'created_at' => '日期 & 時間', + 'login' => '登入', + 'ip_address' => 'IP地址', + 'first_name' => '名', + 'last_name' => '姓', + 'email' => 'Email' + ], + 'filter' => [ + 'all' => '全部' + ] +]; \ No newline at end of file diff --git a/modules/backend/models/BackendPreferences.php b/modules/backend/models/BackendPreferences.php index bb429b3e9..be0d078ad 100644 --- a/modules/backend/models/BackendPreferences.php +++ b/modules/backend/models/BackendPreferences.php @@ -56,6 +56,7 @@ class BackendPreferences extends Model 'pl' => [Lang::get('system::lang.locale.pl'), 'flag-pl'], 'sk' => [Lang::get('system::lang.locale.sk'), 'flag-sk'], 'zh-cn' => [Lang::get('system::lang.locale.zh-cn'), 'flag-cn'], + 'zh-tw' => [Lang::get('system::lang.locale.zh-tw'), 'flag-tw'], 'nb-no' => [Lang::get('system::lang.locale.nb-no'), 'flag-no'], 'el' => [Lang::get('system::lang.locale.el'), 'flag-gr'], ]); diff --git a/modules/cms/lang/zh-tw/lang.php b/modules/cms/lang/zh-tw/lang.php new file mode 100644 index 000000000..affc1b8e1 --- /dev/null +++ b/modules/cms/lang/zh-tw/lang.php @@ -0,0 +1,297 @@ + [ + 'invalid_file' => '不合法的檔案名: :name. 檔案名只能包括字母或數字, _, - 和 .. 一些正確的檔案名: page.htm, page, subdirectory/page', + 'invalid_property' => "屬性 ':name' 不能設定", + 'file_already_exists' => "檔案 ':name' 已經存在.", + 'error_saving' => "保存檔案 ':name' 錯誤. 請檢查寫權限.", + 'error_creating_directory' => '建立檔案夾 :name 錯誤. 請檢查寫權限.', + 'invalid_file_extension'=>'不合法的檔案擴展: :invalid. 允許的擴展: :allowed.', + 'error_deleting' => "刪除模板檔案 ':name' 錯誤. 請檢查寫權限.", + 'delete_success' => '模板成功刪除: :count.', + 'file_name_required' => '需要檔案名字串.' + ], + 'theme' => [ + 'not_found_name' => "主題 ':name' 沒找到.", + 'active' => [ + 'not_set' => '活動主題沒設定.', + 'not_found' => '活動主題找不到.' + ], + 'edit' => [ + 'not_set' => '編輯主題沒設定.', + 'not_found' => '編輯主題沒找到.', + 'not_match' => "您嘗試訪問的對象不屬於正在編輯的主題. 請重載頁面." + ], + 'settings_menu' => '前端主題', + 'settings_menu_description' => '預覽安裝的主題, 選擇一個活動主題.', + 'default_tab' => '屬性', + 'name_label' => '名稱', + 'name_create_placeholder' => '新主題名稱', + 'author_label' => '作者', + 'author_placeholder' => '人或公司名', + 'description_label' => '描述', + 'description_placeholder' => '主題描述', + 'homepage_label' => '主頁', + 'homepage_placeholder' => '網站地址', + 'code_label' => '代碼', + 'code_placeholder' => '發行主題的唯一碼', + 'dir_name_label' => '目錄名', + 'dir_name_create_label' => '目標主題目錄', + 'theme_label' => '主題', + 'theme_title' => '主題', + 'activate_button' => '激活', + 'active_button' => '激活', + 'customize_theme' => '自訂主題', + 'customize_button' => '自訂', + 'duplicate_button' => '複製', + 'duplicate_title' => '複製主題', + 'duplicate_theme_success' => '複製主題成功!', + 'manage_button' => '管理', + 'manage_title' => '管理主題', + 'edit_properties_title' => '主題', + 'edit_properties_button' => '編輯屬性', + 'save_properties' => '保存屬性', + 'import_button' => '導入', + 'import_title' => '導入主題', + 'import_theme_success' => '成功導入主題!', + 'import_uploaded_file' => '主題存檔檔案', + 'import_overwrite_label' => '覆蓋已經存在的檔案', + 'import_overwrite_comment' => '取消勾選, 只導入新檔案', + 'import_folders_label' => '檔案夾', + 'import_folders_comment' => '請選擇您想要導入的主題檔案夾', + 'export_button' => '導出', + 'export_title' => '導出主題', + 'export_folders_label' => '檔案夾', + 'export_folders_comment' => '請選擇您想要導入的主題檔案夾', + 'delete_button' => '刪除', + 'delete_confirm' => '您確定刪除這個主題嗎? 這個操作不能撤銷!', + 'delete_active_theme_failed' => '不能刪除活動主題, 請先嘗試另外一個主題.', + 'delete_theme_success' => '刪除主題成功!', + 'create_title' => '建立主題', + 'create_button' => '建立', + 'create_new_blank_theme' => '建立新的空白主題', + 'create_theme_success' => '建立主題成功!', + 'create_theme_required_name' => '請指點主題名.', + 'new_directory_name_label' => '主題目錄', + 'new_directory_name_comment' => '提供複製主題的新聞目錄名.', + 'dir_name_invalid' => '名稱只能包含數字, 拉丁字母和以下字元: _-', + 'dir_name_taken' => '主題目錄已存在.', + 'find_more_themes' => '在 OctoberCMS 主題商店中搜尋更多主題', + 'saving' => '保存主題...', + 'return' => '返回主題列表', + ], + 'maintenance' => [ + 'settings_menu' => '維護模式', + 'settings_menu_description' => '設定維護模式頁面和開關設定.', + 'is_enabled' => '啟用維護模式', + 'is_enabled_comment' => '當啟用時, 網站訪問者會看到下述頁面.' + ], + 'page' => [ + 'not_found_name' => "頁面 ':name' 找不到", + 'not_found' => [ + 'label' => '頁面找不到', + 'help' => '請求的頁面找不到.' + ], + 'custom_error' => [ + 'label' => '頁面錯誤', + 'help' => "很抱歉, 有一些地方發生了錯誤導致頁面不能顯示." + ], + 'menu_label' => '頁面', + 'unsaved_label' => '未保存頁面', + 'no_list_records' => '找不到頁面', + 'new' => '新頁面', + 'invalid_url' => '不合法的URL格式. URL可以正斜槓開頭, 包含數字, 拉丁字母和下面的字元: ._-[]:?|/+*^$', + 'delete_confirm_multiple' => '真的想要刪除選擇的頁面嗎?', + 'delete_confirm_single' => '真的想要刪除這個頁面嗎?', + 'no_layout' => '-- 沒有佈局 --' + ], + 'layout' => [ + 'not_found_name' => "佈局 ':name' 找不到", + 'menu_label' => '佈局', + 'unsaved_label' => '未保存佈局', + 'no_list_records' => '找不到佈局', + 'new' => '新佈局', + 'delete_confirm_multiple' => '您真的想要刪除選取的佈局?', + 'delete_confirm_single' => '您真的想要刪除這個佈局?' + ], + 'partial' => [ + 'not_found_name' => "部件 ':name' 找不到.", + 'invalid_name' => '不合法的部件名: :name.', + 'menu_label' => '部件', + 'unsaved_label' => '未保存的部件', + 'no_list_records' => '找不到部件', + 'delete_confirm_multiple' => '您真的想要刪除選擇的部件?', + 'delete_confirm_single' => '您真的想要刪除這個部件?', + 'new' => '新部件' + ], + 'content' => [ + 'not_found_name' => "內容檔案 ':name' 找不到.", + 'menu_label' => '內容', + 'unsaved_label' => '未保存內容', + 'no_list_records' => '找不到內容檔案', + 'delete_confirm_multiple' => '您真的想要刪除選取的檔案或目錄嗎?', + 'delete_confirm_single' => '您真的想要刪除這個內容檔案?', + 'new' => '新內容檔案' + ], + 'ajax_handler' => [ + 'invalid_name' => '不合法的 AJAX 處理器: :name.', + 'not_found' => " AJAX 處理器 ':name' 找不到." + ], + 'cms' => [ + 'menu_label' => 'CMS' + ], + 'sidebar' => [ + 'add' => '增加', + 'search' => '搜尋...' + ], + 'editor' => [ + 'settings' => '設定', + 'title' => '標題', + 'new_title' => '新檔案標題', + 'url' => 'URL', + 'filename' => '檔案名', + 'layout' => '佈局', + 'description' => '描述', + 'preview' => '預覽', + 'meta' => 'Meta', + 'meta_title' => 'Meta 標題', + 'meta_description' => 'Meta 描述', + 'markup' => 'Markup', + 'code' => '代碼', + 'content' => '內容', + 'hidden' => '隱藏', + 'hidden_comment' => '隱藏頁面只能被登錄的後台使用者訪問.', + 'enter_fullscreen' => '進入全屏模式', + 'exit_fullscreen' => '退出全屏模式' + ], + 'asset' => [ + 'menu_label' => '資源', + 'unsaved_label' => '未保存的資源', + 'drop_down_add_title' => '增加...', + 'drop_down_operation_title' => '動作...', + 'upload_files' => '上傳檔案', + 'create_file' => '新建檔案', + 'create_directory' => '新建目錄', + 'directory_popup_title' => '新目錄', + 'directory_name' => '目錄名', + 'rename' => '重命名', + 'delete' => '刪除', + 'move' => '移動', + 'select' => '選擇', + 'new' => '新檔案', + 'rename_popup_title' => '重命名', + 'rename_new_name' => '新名稱', + 'invalid_path' => '路徑名稱只能包含數字, 拉丁字母和以下字元: _-/', + 'error_deleting_file' => '刪除檔案 :name 錯誤.', + 'error_deleting_dir_not_empty' => '刪除目錄 :name 錯誤. 目錄不為空.', + 'error_deleting_dir' => '刪除檔案 :name 錯誤.', + 'invalid_name' => '名稱只能包含數字, 拉丁字母, 空格和以下字元: _-', + 'original_not_found' => '原始檔案或目錄找不到', + 'already_exists' => '檔案或目錄已存在', + 'error_renaming' => '重命名檔案或目錄錯誤', + 'name_cant_be_empty' => '名稱不能為空', + 'too_large' => '上傳的檔案太大. 最大檔案大小是 :max_size', + 'type_not_allowed' => '只有下面的檔案類型是允許的: :allowed_types', + 'file_not_valid' => '檔案不合法', + 'error_uploading_file' => "上傳檔案錯誤 ':name': :error", + 'move_please_select' => '請選擇', + 'move_destination' => '目標目錄', + 'move_popup_title' => '移動資源', + 'move_button' => '移動', + 'selected_files_not_found' => '選擇的檔案找不到', + 'select_destination_dir' => '請選擇目標目錄', + 'destination_not_found' => '目標目錄找不到', + 'error_moving_file' => '移動檔案 :file 錯誤', + 'error_moving_directory' => '移動目錄 :dir 錯誤', + 'error_deleting_directory' => '刪除原始目錄 :dir 錯誤', + 'path' => '路徑' + ], + 'component' => [ + 'menu_label' => '組件', + 'unnamed' => '未命名的', + 'no_description' => '沒有描述', + 'alias' => '別名', + 'alias_description' => '這個組件的唯一名稱, 在頁面或者佈局代碼中.', + 'validation_message' => '需要組件別名, 且只能包含拉丁字元, 數字和下劃線. 別名必須以拉丁字元開頭.', + 'invalid_request' => '模板不能保存, 因為非法組件數據.', + 'no_records' => '找不到組件', + 'not_found' => "組件 ':name' 找不到.", + 'method_not_found' => "組件 ':name' 不包含方法 ':method'." + ], + 'template' => [ + 'invalid_type' => '未知模板類型.', + 'not_found' => '請求模板找不到.', + 'saved'=> '模板保存成功.' + ], + 'permissions' => [ + 'name' => 'Cms', + 'manage_content' => '管理內容', + 'manage_assets' => '管理資源', + 'manage_pages' => '管理頁面', + 'manage_layouts' => '管理佈局', + 'manage_partials' => '管理部件', + 'manage_themes' => '管理主題' + ], + 'media' => [ + 'invalid_path' => "不合法的路徑: ':path'.", + 'menu_label' => '媒體', + 'upload' => '上傳', + 'move' => '移動', + 'delete' => '刪除', + 'add_folder' => '增加檔案夾', + 'search' => '搜尋', + 'display' => '顯示', + 'filter_everything' => '所有', + 'filter_images' => '圖片', + 'filter_video' => '視頻', + 'filter_audio' => '音頻', + 'filter_documents' => '文檔', + 'library' => '庫', + 'folder_size_items' => '個數', + 'size' => '大小', + 'title' => '標題', + 'last_modified' => '最近修改', + 'public_url' => '公開URL', + 'click_here' => '點選這裡', + 'thumbnail_error' => '生產縮略圖錯誤.', + 'return_to_parent' => '返回上層檔案夾', + 'return_to_parent_label' => '返回 ..', + 'nothing_selected' => '沒有選中.', + 'multiple_selected' => '多選.', + 'uploading_file_num' => '上傳 :number 檔案...', + 'uploading_complete' => '上傳完畢', + 'order_by' => '排序', + 'search' => '搜尋', + 'folder' => '檔案夾', + 'no_files_found' => '沒找到您請求的檔案.', + 'delete_empty' => '請選擇刪除項.', + 'delete_confirm' => '您是否想要刪除選中項?', + 'error_renaming_file' => '重命名錯誤.', + 'new_folder_title' => '新檔案', + 'folder_name' => '檔案夾名', + 'error_creating_folder' => '新建檔案夾錯誤', + 'folder_or_file_exist' => '檔案夾或檔案已經存在.', + 'move_empty' => '請選擇移動項.', + 'move_popup_title' => '移動檔案或檔案夾', + 'move_destination' => '目標檔案夾', + 'please_select_move_dest' => '請選擇目標檔案夾.', + 'move_dest_src_match' => '請選擇另一個目標檔案夾.', + 'empty_library' => '媒體庫是空的. 從上傳檔案或建立檔案夾開始.', + 'insert' => '插入', + 'crop_and_insert' => '裁剪並插入', + 'select_single_image' => '請選擇一張圖片.', + 'selection_not_image' => '選擇的不是一張圖片.', + 'restore' => '取消所有更改', + 'resize' => '調整大小...', + 'selection_mode_normal' => '正常', + 'selection_mode_fixed_ratio' => '固定比例', + 'selection_mode_fixed_size' => '固定大小', + 'height' => '高度', + 'width' => '寬度', + 'selection_mode' => '選擇模式', + 'resize_image' => '調整圖片', + 'image_size' => '圖片大小:', + 'selected_size' => '選中:' + ] +]; \ No newline at end of file diff --git a/modules/system/lang/el/lang.php b/modules/system/lang/el/lang.php index ef13cac54..3fb01307b 100644 --- a/modules/system/lang/el/lang.php +++ b/modules/system/lang/el/lang.php @@ -27,6 +27,7 @@ return [ 'sk' => 'Σλοβάκικα (Σλοβακία)', 'tr' => 'Τουρκικά', 'zh-cn' => 'Κινέζικα (Κίνα)', + 'zh-tw' => 'Chinese (Taiwan)', 'el' => 'Ελληνικά', ], 'directory' => [ diff --git a/modules/system/lang/en/lang.php b/modules/system/lang/en/lang.php index fbddc74b8..6f57ba9c5 100644 --- a/modules/system/lang/en/lang.php +++ b/modules/system/lang/en/lang.php @@ -27,6 +27,7 @@ return [ 'sk' => 'Slovak (Slovakia)', 'tr' => 'Turkish', 'zh-cn' => 'Chinese (China)', + 'zh-tw' => 'Chinese (Taiwan)', 'el' => 'Greek' ], 'directory' => [ diff --git a/modules/system/lang/fa/lang.php b/modules/system/lang/fa/lang.php index 1596e877f..5072aeafe 100644 --- a/modules/system/lang/fa/lang.php +++ b/modules/system/lang/fa/lang.php @@ -26,7 +26,8 @@ return [ 'se' => 'سوئدی', 'sk' => 'اسلواکی', 'tr' => 'ترکی', - 'zh-cn' => 'چینی' + 'zh-cn' => 'چینی', + 'zh-tw' => 'Chinese (Taiwan)', ], 'directory' => [ 'create_fail' => 'مشکلی در ایجاد پوشه ی :name به وجود آمده است', diff --git a/modules/system/lang/fr/lang.php b/modules/system/lang/fr/lang.php index 4a3b116c2..f2f03a347 100644 --- a/modules/system/lang/fr/lang.php +++ b/modules/system/lang/fr/lang.php @@ -26,7 +26,8 @@ return [ 'se' => 'Suédois', 'sk' => 'Slovaque (Slovaquie)', 'tr' => 'Turque', - 'zh-cn' => 'Chinois (Chine)' + 'zh-cn' => 'Chinois (Chine)', + 'zh-tw' => 'Chinese (Taiwan)', ], 'directory' => [ 'create_fail' => "Impossible de créer le répertoire : :name", diff --git a/modules/system/lang/hu/lang.php b/modules/system/lang/hu/lang.php index 3b3af5c69..3816d637b 100644 --- a/modules/system/lang/hu/lang.php +++ b/modules/system/lang/hu/lang.php @@ -26,7 +26,8 @@ return [ 'se' => 'Svéd', 'sk' => 'Szlovák', 'tr' => 'Török', - 'zh-cn' => 'Kínai' + 'zh-cn' => 'Kínai', + 'zh-tw' => 'Chinese (Taiwan)', ], 'directory' => [ 'create_fail' => 'Nem hozható létre a könyvtár: :name' diff --git a/modules/system/lang/lv/lang.php b/modules/system/lang/lv/lang.php index 74b6306af..51b371eb5 100644 --- a/modules/system/lang/lv/lang.php +++ b/modules/system/lang/lv/lang.php @@ -26,7 +26,8 @@ return [ 'se' => 'Swedish', 'sk' => 'Slovak (Slovakia)', 'tr' => 'Turkish', - 'zh-cn' => 'Chinese (China)' + 'zh-cn' => 'Chinese (China)', + 'zh-tw' => 'Chinese (Taiwan)', ], 'directory' => [ 'create_fail' => 'Nevar izveidot mapi: :name' diff --git a/modules/system/lang/nb-no/lang.php b/modules/system/lang/nb-no/lang.php index c4fb13aae..c5e5f9149 100644 --- a/modules/system/lang/nb-no/lang.php +++ b/modules/system/lang/nb-no/lang.php @@ -25,7 +25,8 @@ return [ 'sk' => 'Slovak (Slovakia)', 'tr' => 'Tyrkisk', 'nb-no' => 'Norsk (Bokmål)', - 'zh-cn' => 'Kinesisk (Kina)' + 'zh-cn' => 'Kinesisk (Kina)', + 'zh-tw' => 'Chinese (Taiwan)', ], 'directory' => [ 'create_fail' => 'Kan ikke opprette mappen: :name' diff --git a/modules/system/lang/ru/lang.php b/modules/system/lang/ru/lang.php index 5f9c11c60..b7eb24aa1 100644 --- a/modules/system/lang/ru/lang.php +++ b/modules/system/lang/ru/lang.php @@ -26,7 +26,8 @@ return [ 'se' => 'Swedish', 'sk' => 'Slovak (Slovakia)', 'tr' => 'Turkish', - 'zh-cn' => 'Chinese (China)' + 'zh-cn' => 'Chinese (China)', + 'zh-tw' => 'Chinese (Taiwan)', ], 'directory' => [ 'create_fail' => 'Невозможно создать директорию: :name' diff --git a/modules/system/lang/zh-cn/lang.php b/modules/system/lang/zh-cn/lang.php index 959d7c797..4ba2aea7b 100644 --- a/modules/system/lang/zh-cn/lang.php +++ b/modules/system/lang/zh-cn/lang.php @@ -26,7 +26,8 @@ return [ 'se' => 'Swedish', 'sk' => 'Slovak (Slovakia)', 'tr' => 'Turkish', - 'zh-cn' => '简体中文' + 'zh-cn' => 'Chinese (China)', + 'zh-tw' => 'Chinese (Taiwan)', ], 'directory' => [ 'create_fail' => '不能创建目录: :name' diff --git a/modules/system/lang/zh-tw/lang.php b/modules/system/lang/zh-tw/lang.php new file mode 100644 index 000000000..fd902ebb6 --- /dev/null +++ b/modules/system/lang/zh-tw/lang.php @@ -0,0 +1,287 @@ + [ + 'name' => 'October CMS', + 'tagline' => '登入' + ], + 'locale' => [ + 'en' => 'English', + 'de' => 'German', + 'es' => 'Spanish', + 'es-ar' => 'Spanish (Argentina)', + 'fa' => 'Persian', + 'fr' => 'French', + 'hu' => 'Hungarian', + 'id' => 'Bahasa Indonesia', + 'it' => 'Italian', + 'ja' => 'Japanese', + 'lv' => 'Latvian', + 'nb-no' => 'Norwegian (Bokmål)', + 'nl' => 'Dutch', + 'pl' => 'Polish', + 'pt-br' => 'Portuguese (Brazil)', + 'ro' => 'Romanian', + 'ru' => 'Russian', + 'se' => 'Swedish', + 'sk' => 'Slovak (Slovakia)', + 'tr' => 'Turkish', + 'zh-cn' => 'Chinese (China)', + 'zh-tw' => 'Chinese (Taiwan)' + ], + 'directory' => [ + 'create_fail' => '不能建立目錄: :name' + ], + 'file' => [ + 'create_fail' => '不能建立檔案: :name' + ], + 'combiner' => [ + 'not_found' => "混合檔案 ':name' 沒找到." + ], + 'system' => [ + 'name' => '系統', + 'menu_label' => '系統', + 'categories' => [ + 'cms' => '內容管理', + 'misc' => '雜項', + 'logs' => '日誌', + 'mail' => '郵件', + 'shop' => '商舖', + 'team' => '團隊', + 'users' => '使用者', + 'system' => '系統', + 'social' => '社交', + 'events' => '事件', + 'customers' => '自訂', + 'my_settings' => '我的設定' + ] + ], + 'theme' => [ + 'unnamed' => '未命名主題', + 'name' => [ + 'label' => '主題名稱', + 'help' => '主題的唯一名稱,例如:RainLab.Vanilla' + ], + ], + 'themes' => [ + 'install' => '安裝主題', + 'search' => '搜尋主題...', + 'installed' => '已安裝主題', + 'no_themes' => '市集上沒有已安裝的主題。', + 'recommended' => '推薦', + 'remove_confirm' => '您確定要刪除這些主題嗎?' + ], + 'plugin' => [ + 'unnamed' => '未命名的外掛', + 'name' => [ + 'label' => '外掛名稱', + 'help' => '外掛的唯一名稱,例如:RainLab.Blog' + ] + ], + 'plugins' => [ + 'manage' => '管理外掛', + 'enable_or_disable' => '啟用或停用', + 'enable_or_disable_title' => '啟用或停用外掛', + 'install' => '安裝外掛', + 'install_products' => '安裝產品', + 'search' => '搜尋外掛...', + 'installed' => '已安裝外掛', + 'no_plugins' => '市集中沒有已安裝的外掛。', + 'recommended' => '推薦', + 'remove' => '移除', + 'refresh' => '更新', + 'disabled_label' => '停用', + 'disabled_help' => '被停用的外掛被應用程式忽略了.', + 'selected_amount' => '選取的外掛: :數目', + 'remove_confirm' => '您確定嗎?', + 'remove_success' => '成功從系統移除這些外掛.', + 'refresh_confirm' => '您確定嗎?', + 'refresh_success' => '成功更新了系統中的外掛.', + 'disable_confirm' => '您確定嗎?', + 'disable_success' => '成功停用了這些外掛.', + 'enable_success' => '成功啟用了這些外掛', + 'unknown_plugin' => '外掛從檔案系統中移除了.' + ], + 'project' => [ + 'name' => '產品', + 'owner_label' => '擁有者', + 'attach' => '增加產品', + 'detach' => '刪除產品', + 'none' => '沒有', + 'id' => [ + 'label' => '產品ID', + 'help' => '如何找到您的產品ID', + 'missing' => '請確認您想使用的產品ID.' + ], + 'detach_confirm' => '您確定要刪除這個產品嗎?', + 'unbind_success' => '產品刪除成功.' + ], + 'settings' => [ + 'menu_label' => '設定', + 'not_found' => '不能找到特定的設定.', + 'missing_model' => '設定頁缺少Model定義.', + 'update_success' => ':name 的設定更新成功了.', + 'return' => '返回系統設定', + 'search' => '搜尋' + ], + 'mail' => [ + 'log_file' => '日誌檔案', + 'menu_label' => '郵件設定', + 'menu_description' => '管理郵件設定.', + 'general' => '常規', + 'method' => '郵件方法', + 'sender_name' => '發送者名稱', + 'sender_email' => '發送者郵件', + 'php_mail' => 'PHP mail', + 'smtp' => 'SMTP', + 'smtp_address' => 'SMTP 地址', + 'smtp_authorization' => '需要 SMTP 認證', + 'smtp_authorization_comment' => '勾選這個多選框如果您的SMTP伺服器需要認證.', + 'smtp_username' => '使用者名', + 'smtp_password' => '密碼', + 'smtp_port' => 'SMTP 端口', + 'smtp_ssl' => '需要SSL連接', + 'sendmail' => 'Sendmail', + 'sendmail_path' => 'Sendmail 路徑', + 'sendmail_path_comment' => '請確認 Sendmail 路徑.', + 'mailgun' => 'Mailgun', + 'mailgun_domain' => 'Mailgun 域名', + 'mailgun_domain_comment' => '請確認 Mailgun 域名.', + 'mailgun_secret' => 'Mailgun Secret', + 'mailgun_secret_comment' => '輸入您的 Mailgun API key.', + 'mandrill' => 'Mandrill', + 'mandrill_secret' => 'Mandrill Secret', + 'mandrill_secret_comment' => '輸入您的 Mandrill API key.' + ], + 'mail_templates' => [ + 'menu_label' => '郵件模板', + 'menu_description' => '編輯發送到使用者和管理員的郵件模板, 管理郵件佈局.', + 'new_template' => '新模板', + 'new_layout' => '新佈局', + 'template' => '模板', + 'templates' => '模板', + 'menu_layouts_label' => '郵件佈局', + 'layout' => '佈局', + 'layouts' => '佈局', + 'name' => '名稱', + 'name_comment' => '指向這個模板的唯一名稱', + 'code' => '代碼', + 'code_comment' => '指向這個模板的唯一代碼', + 'subject' => '標題', + 'subject_comment' => '郵箱訊息標題', + 'description' => '描述', + 'content_html' => 'HTML', + 'content_css' => 'CSS', + 'content_text' => '純文字', + 'test_send' => '發送測試訊息', + 'test_success' => '測試訊息已經成功發送.', + 'return' => '返回模板列表' + ], + 'install' => [ + 'project_label' => '加入產品', + 'plugin_label' => '安裝外掛', + 'theme_label' => '安裝主題', + 'missing_plugin_name' => '請輸入要安裝的外掛名稱。', + 'missing_theme_name' => '請輸入要安裝的主題名稱。', + 'install_completing' => '完成安裝過程', + 'install_success' => '外掛安裝成功。' + ], + 'updates' => [ + 'title' => '管理更新', + 'name' => '軟件更新', + 'menu_label' => '更新', + 'menu_description' => '更新系統, 管理並安裝外掛和主題.', + 'check_label' => '檢查更新', + 'retry_label' => '重試', + 'plugin_name' => '名字', + 'plugin_description' => '描述', + 'plugin_version' => '版本', + 'plugin_author' => '作者', + 'core_current_build' => '目前版本', + 'core_build' => '版本 :build', + 'core_build_help' => '新的版本可用.', + 'core_downloading' => '下載應用程式', + 'core_extracting' => '解壓縮應用程式', + 'plugins' => '外掛', + 'themes' => '主題', + 'disabled' => '停用', + 'plugin_downloading' => '下載外掛: :name', + 'plugin_extracting' => '解壓縮外掛: :name', + 'plugin_version_none' => '新外掛', + 'theme_new_install' => '新主題安裝.', + 'theme_downloading' => '下載主題: :name', + 'theme_extracting' => '解壓縮主題: :name', + 'update_label' => '更新軟件', + 'update_completing' => '完成更新過程', + 'update_loading' => '加載可用更新...', + 'update_success' => '更新完成.', + 'update_failed_label' => '更新失敗', + 'force_label' => '強制更新', + 'found' => [ + 'label' => '發現新的更新!', + 'help' => '點選更新.' + ], + 'none' => [ + 'label' => '沒有更新', + 'help' => '沒有發現新的更新.' + ] + ], + 'server' => [ + 'connect_error' => '連接伺服器失敗.', + 'response_not_found' => '找不到更新伺服器.', + 'response_invalid' => '伺服器返回異常.', + 'response_empty' => '伺服器返回為空.', + 'file_error' => '伺服器下載檔案失敗.', + 'file_corrupt' => '伺服器下載檔案校驗失敗.' + ], + 'behavior' => [ + 'missing_property' => 'Class :class 必須定義屬性 $:property 被 :behavior behavior 使用.' + ], + 'config' => [ + 'not_found' => '不能搜尋設定檔案 :file 為 :location 定義.', + 'required' => "設定 :location 必須有 ':property'." + ], + 'zip' => [ + 'extract_failed' => "不能解壓縮檔案 ':file'." + ], + 'event_log' => [ + 'hint' => '日誌顯示了程序中的潛在錯誤, 比如異常和測試訊息.', + 'menu_label' => '事件日誌', + 'menu_description' => '查看系統日誌訊息, 包括時間和詳細訊息.', + 'empty_link' => '清空事件日誌', + 'empty_loading' => '清空事件日誌...', + 'empty_success' => '成功清空時間日誌.', + 'return_link' => '返回時間日誌', + 'id' => 'ID', + 'id_label' => '事件 ID', + 'created_at' => '時間和日期', + 'message' => '訊息', + 'level' => '等級' + ], + 'request_log' => [ + 'hint' => '這個日誌顯示了需要注意的瀏覽器請求. 比如如果一個訪問者打開一個沒有的CMS頁面, 一條返回狀態404的記錄被建立.', + 'menu_label' => '請求日誌', + 'menu_description' => '查看壞的或者重定向的請求, 比如頁面找不到(404).', + 'empty_link' => '清空請求日誌', + 'empty_loading' => '清空請求日誌...', + 'empty_success' => '成功清空請求日誌.', + 'return_link' => '返回請求日誌', + 'id' => 'ID', + 'id_label' => '登錄ID', + 'count' => '次數', + 'referer' => '來源', + 'url' => 'URL', + 'status_code' => '狀態' + ], + 'permissions' => [ + 'name' => '系統', + 'manage_system_settings' => '管理系統設定', + 'manage_software_updates' => '管理軟件更新', + 'access_logs' => '查看訪問日誌', + 'manage_mail_templates' => '管理郵件模板', + 'manage_mail_settings' => '管理郵件設定', + 'manage_other_administrators' => '管理其他管理員', + 'view_the_dashboard' => '查看儀表板', + 'manage_branding' => '自訂後台' + ] +]; \ No newline at end of file diff --git a/modules/system/lang/zh-tw/validation.php b/modules/system/lang/zh-tw/validation.php new file mode 100644 index 000000000..7c6c6d046 --- /dev/null +++ b/modules/system/lang/zh-tw/validation.php @@ -0,0 +1,98 @@ + ":attribute 必須被接受.", + "active_url" => ":attribute 不是一個有效的URL.", + "after" => ":attribute 必須是 :date 之後的一個日期.", + "alpha" => ":attribute 只能包含字母.", + "alpha_dash" => ":attribute 只能包含字母, 數字和-.", + "alpha_num" => ":attribute 只能包含字母和數字.", + "array" => ":attribute 只能是一個陣列.", + "before" => ":attribute 必須是 :date 之前的一個日期.", + "between" => array( + "numeric" => ":attribute 在 :min - :max 之間.", + "file" => ":attribute 在 :min - :max kilobytes之間.", + "string" => ":attribute 在 :min - :max 字元之間.", + "array" => ":attribute 在 :min - :max 個之間.", + ), + "confirmed" => ":attribute 的確認不滿足.", + "date" => ":attribute 不是一個合法的日期.", + "date_format" => ":attribute 不符合 :format 格式.", + "different" => ":attribute 和 :other 必須不同.", + "digits" => ":attribute 必須是 :digits.", + "digits_between" => ":attribute 必須在 :min :max 之間.", + "email" => ":attribute 格式無效.", + "exists" => "選取的 :attribute 無效.", + "image" => ":attribute 必須是圖片.", + "in" => "選取的 :attribute 無效.", + "integer" => ":attribute 必須是數字.", + "ip" => ":attribute 必須是一個有效的IP地址.", + "max" => array( + "numeric" => ":attribute 不能大於 :max.", + "file" => ":attribute 不能大於 :max kilobytes.", + "string" => ":attribute 不能超過 :max 字元.", + "array" => ":attribute 不能超過 :max 個.", + ), + "mimes" => ":attribute 必須是一個: :values 類型的檔案.", + "min" => array( + "numeric" => ":attribute 必須至少 :min.", + "file" => ":attribute 必須至少 :min kilobytes.", + "string" => ":attribute 必須至少 :min 字元.", + "array" => ":attribute 必須至少 :min 個.", + ), + "not_in" => "選取的 :attribute 無效.", + "numeric" => ":attribute 必須是一個數字.", + "regex" => ":attribute 格式無效.", + "required" => "需要 :attribute 字串.", + "required_if" => "需要 :attribute 字串, 當 :other 是 :value.", + "required_with" => "需要 :attribute 字串, 當 :values 是目前值.", + "required_without" => "需要 :attribute 字串, 當 :values 不是目前值.", + "same" => ":attribute 和 :other 必須相符.", + "size" => array( + "numeric" => ":attribute 必須是 :size.", + "file" => ":attribute 必須是 :size kilobytes.", + "string" => ":attribute 必須是 :size 字元.", + "array" => ":attribute 必須是 :size 個.", + ), + "unique" => ":attribute 已使用.", + "url" => ":attribute 格式無效.", + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => array(), + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => array(), + +); From 85eeaa0257f09e2e470ce04ec1337c5bc1333b3a Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 8 Aug 2015 10:13:22 +1000 Subject: [PATCH 13/66] Retranslate --- modules/system/lang/zh-cn/lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/lang/zh-cn/lang.php b/modules/system/lang/zh-cn/lang.php index 4ba2aea7b..9697c57ac 100644 --- a/modules/system/lang/zh-cn/lang.php +++ b/modules/system/lang/zh-cn/lang.php @@ -26,7 +26,7 @@ return [ 'se' => 'Swedish', 'sk' => 'Slovak (Slovakia)', 'tr' => 'Turkish', - 'zh-cn' => 'Chinese (China)', + 'zh-cn' => '简体中文', 'zh-tw' => 'Chinese (Taiwan)', ], 'directory' => [ From 909b1ec374f6871e2769ea40fa2142711f5afea5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20Gerg=C5=91?= Date: Wed, 29 Jul 2015 16:25:22 +0200 Subject: [PATCH 14/66] Improve multilanguage support --- modules/system/lang/en/lang.php | 5 +++-- modules/system/models/mailtemplate/fields.yaml | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/system/lang/en/lang.php b/modules/system/lang/en/lang.php index 6f57ba9c5..71c5118d2 100644 --- a/modules/system/lang/en/lang.php +++ b/modules/system/lang/en/lang.php @@ -8,6 +8,7 @@ return [ 'locale' => [ 'en' => 'English', 'de' => 'German', + 'el' => 'Greek', 'es' => 'Spanish', 'es-ar' => 'Spanish (Argentina)', 'fa' => 'Persian', @@ -27,8 +28,7 @@ return [ 'sk' => 'Slovak (Slovakia)', 'tr' => 'Turkish', 'zh-cn' => 'Chinese (China)', - 'zh-tw' => 'Chinese (Taiwan)', - 'el' => 'Greek' + 'zh-tw' => 'Chinese (Taiwan)' ], 'directory' => [ 'create_fail' => 'Cannot create directory: :name' @@ -170,6 +170,7 @@ return [ 'menu_layouts_label' => 'Mail Layouts', 'layout' => 'Layout', 'layouts' => 'Layouts', + 'no_layout' => '-- No layout --', 'name' => 'Name', 'name_comment' => 'Unique name used to refer to this template', 'code' => 'Code', diff --git a/modules/system/models/mailtemplate/fields.yaml b/modules/system/models/mailtemplate/fields.yaml index 3f7d8d75d..b484dc772 100644 --- a/modules/system/models/mailtemplate/fields.yaml +++ b/modules/system/models/mailtemplate/fields.yaml @@ -7,7 +7,7 @@ fields: layout: label: system::lang.mail_templates.layout type: relation - emptyOption: -- No layout -- + emptyOption: system::lang.mail_templates.no_layout code: label: system::lang.mail_templates.code @@ -39,4 +39,4 @@ secondaryTabs: content_text: type: textarea size: huge - tab: system::lang.mail_templates.content_text \ No newline at end of file + tab: system::lang.mail_templates.content_text From 70a335e1fd7b671e6a433384762433bc7da90f9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20GAULIN?= Date: Mon, 3 Aug 2015 17:59:56 +0200 Subject: [PATCH 15/66] Remove a double space Fix sentences More grammatically accurate messages. Prevents wrong messages like "Le auteur" (should be "L'auteur") by using "Le champ auteur". --- modules/system/lang/fr/validation.php | 94 +++++++++++++-------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/modules/system/lang/fr/validation.php b/modules/system/lang/fr/validation.php index 48a68e53a..95cac4856 100644 --- a/modules/system/lang/fr/validation.php +++ b/modules/system/lang/fr/validation.php @@ -13,61 +13,61 @@ return array( | */ - "accepted" => 'Le :attribute doit être accepté.', - "active_url" => 'Le :attribute n’est pas une URL valide.', - "after" => 'Le :attribute doit être une date après le :date.', - "alpha" => 'Le :attribute ne peut contenir que des lettres.', - "alpha_dash" => 'Le :attribute ne peut contenir que des lettres, des chiffres et des tirets.', - "alpha_num" => 'Le :attribute ne peut contenir que des lettres et des chiffres.', - "array" => 'Le :attribute doit être un groupe.', - "before" => 'Le :attribute doit être une date avant le :date.', + "accepted" => 'Le champ :attribute doit être accepté.', + "active_url" => 'Le champ :attribute n’est pas une URL valide.', + "after" => 'Le champ :attribute doit être une date après le :date.', + "alpha" => 'Le champ :attribute ne peut contenir que des lettres.', + "alpha_dash" => 'Le champ :attribute ne peut contenir que des lettres, des chiffres et des tirets.', + "alpha_num" => 'Le champ :attribute ne peut contenir que des lettres et des chiffres.', + "array" => 'Le champ :attribute doit être un groupe.', + "before" => 'Le champ :attribute doit être une date avant le :date.', "between" => array( - "numeric" => 'Le :attribute doit être compris entre :min - :max.', - "file" => 'Le :attribute doit être compris entre :min - :max kilooctets.', - "string" => 'Le :attribute doit être compris entre :min - :max caractères.', - "array" => 'Le :attribute doit être compris entre :min - :max objets.', + "numeric" => 'Le champ :attribute doit être compris entre :min - :max.', + "file" => 'Le champ :attribute doit être compris entre :min - :max kilooctets.', + "string" => 'Le champ :attribute doit être compris entre :min - :max caractères.', + "array" => 'Le champ :attribute doit être compris entre :min - :max objets.', ), - "confirmed" => 'Le :attribute de confirmation ne correspond pas.', - "date" => 'Le :attribute n’est pas une date valide.', - "date_format" => 'Le :attribute ne correspond pas au format :format.', - "different" => 'Le :attribute et :other doivent être différents.', - "digits" => 'Le :attribute doit être de :digits chiffres.', - "digits_between" => 'Le :attribute doit être compris entre :min et :max chiffres.', - "email" => 'Le format de l’:attribute n’est pas valide.', - "exists" => 'Le :attribute sélectionné n’est pas valide.', - "image" => 'Le :attribute doit être une image.', - "in" => 'Le :attribute sélectionné n’est pas valide.', - "integer" => 'Le :attribute doit être un entier.', - "ip" => 'Le :attribute doit être une adresse IP valide.', + "confirmed" => 'Le champ de confirmation :attribute ne correspond pas.', + "date" => 'Le champ :attribute n’est pas une date valide.', + "date_format" => 'Le champ :attribute ne correspond pas au format :format.', + "different" => 'Le champ :attribute et :other doivent être différents.', + "digits" => 'Le champ :attribute doit être de :digits chiffres.', + "digits_between" => 'Le champ :attribute doit être compris entre :min et :max chiffres.', + "email" => 'Le format du champ :attribute n’est pas valide.', + "exists" => 'Le champ :attribute sélectionné n’est pas valide.', + "image" => 'Le champ :attribute doit être une image.', + "in" => 'Le champ :attribute sélectionné n’est pas valide.', + "integer" => 'Le champ :attribute doit être un entier.', + "ip" => 'Le champ :attribute doit être une adresse IP valide.', "max" => array( - "numeric" => 'Le :attribute ne peut pas être supérieure à :max.', - "file" => 'Le :attribute ne peut pas être supérieure à :max kilooctets.', - "string" => 'Le :attribute ne peut pas être supérieure à :max caractères.', - "array" => 'Le :attribute ne peut pas être supérieure à :max objets.', + "numeric" => 'Le champ :attribute ne peut pas être supérieure à :max.', + "file" => 'Le champ :attribute ne peut pas être supérieure à :max kilooctets.', + "string" => 'Le champ :attribute ne peut pas être supérieure à :max caractères.', + "array" => 'Le champ :attribute ne peut pas être supérieure à :max objets.', ), - "mimes" => 'Le :attribute doit être un fichier de type: :values.', + "mimes" => 'Le champ :attribute doit être un fichier de type: :values.', "min" => array( - "numeric" => 'Le :attribute doit être au minimum de :min.', - "file" => 'Le :attribute doit être au minimum de :min kilooctets.', - "string" => 'Le :attribute doit être au minimum de :min caractères.', - "array" => 'Le :attribute doit être au minimum de :min objets.', + "numeric" => 'Le champ :attribute doit être au minimum de :min.', + "file" => 'Le champ :attribute doit être au minimum de :min kilooctets.', + "string" => 'Le champ :attribute doit être au minimum de :min caractères.', + "array" => 'Le champ :attribute doit être au minimum de :min objets.', ), - "not_in" => 'Le :attribute sélectionné n’est pas valide.', - "numeric" => 'Le :attribute doit être un nombre.', - "regex" => 'Le format de l’:attribute n’est pas valide.', - "required" => 'Le champ: :attribute est obligatoire.', - "required_if" => 'Le champ: :attribute est obligatoire quand :other est :value.', - "required_with" => 'Le champ: :attribute est obligatoire quand :values est présent.', - "required_without" => 'Le champ: :attribute est obligatoire quand :values est absent.', - "same" => 'Le :attribute et :other doivent correspondre.', + "not_in" => 'Le champ :attribute sélectionné n’est pas valide.', + "numeric" => 'Le champ :attribute doit être un nombre.', + "regex" => 'Le format du champ :attribute n’est pas valide.', + "required" => 'Le champ :attribute est obligatoire.', + "required_if" => 'Le champ :attribute est obligatoire quand :other est :value.', + "required_with" => 'Le champ :attribute est obligatoire quand :values est présent.', + "required_without" => 'Le champ :attribute est obligatoire quand :values est absent.', + "same" => 'Le champ :attribute et :other doivent correspondre.', "size" => array( - "numeric" => 'Le :attribute doit être de :size.', - "file" => 'Le :attribute doit être de :size kilooctets.', - "string" => 'Le :attribute doit être de :size caractères.', - "array" => 'Le :attribute doit contenir :size objets.', + "numeric" => 'Le champ :attribute doit être de :size.', + "file" => 'Le champ :attribute doit être de :size kilooctets.', + "string" => 'Le champ :attribute doit être de :size caractères.', + "array" => 'Le champ :attribute doit contenir :size objets.', ), - "unique" => 'Le :attribute a déjà été pris.', - "url" => 'Le format de l’:attribute n’est pas valide.', + "unique" => 'Le champ :attribute doit être unique. La valeur renseignée est déjà utilisée.', + "url" => 'Le champ :attribute n’est pas une URL valide.', /* |-------------------------------------------------------------------------- From d6f1a4a12529c12f71c4389965494184f84ffdc6 Mon Sep 17 00:00:00 2001 From: Tom Date: Tue, 4 Aug 2015 02:39:07 +0200 Subject: [PATCH 16/66] update simplified chinese --- modules/system/lang/zh-cn/lang.php | 36 +++++++++++++++++++----- modules/system/lang/zh-cn/validation.php | 1 + 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/modules/system/lang/zh-cn/lang.php b/modules/system/lang/zh-cn/lang.php index 9697c57ac..7ccc45fe0 100644 --- a/modules/system/lang/zh-cn/lang.php +++ b/modules/system/lang/zh-cn/lang.php @@ -28,6 +28,7 @@ return [ 'tr' => 'Turkish', 'zh-cn' => '简体中文', 'zh-tw' => 'Chinese (Taiwan)', + 'el' => 'Greek' ], 'directory' => [ 'create_fail' => '不能创建目录: :name' @@ -57,6 +58,7 @@ return [ ] ], 'theme' => [ + 'label' => '主题', 'unnamed' => '未命名主题', 'name' => [ 'label' => '主题名称', @@ -72,6 +74,7 @@ return [ 'remove_confirm' => '你确定要删除这些主题吗?' ], 'plugin' => [ + 'label' => '插件', 'unnamed' => '未命名的插件', 'name' => [ 'label' => '插件名称', @@ -92,6 +95,8 @@ return [ 'refresh' => '刷新', 'disabled_label' => '禁用', 'disabled_help' => '被禁用的插件被应用程序忽略了.', + 'frozen_label' => '不使用在线更新', + 'frozen_help' => '在线更新时将不再更新这个插件。', 'selected_amount' => '选中的插件: :数目', 'remove_confirm' => '你确定吗?', 'remove_success' => '成功从系统移除这些插件.', @@ -151,7 +156,9 @@ return [ 'mailgun_secret_comment' => '输入你的 Mailgun API key.', 'mandrill' => 'Mandrill', 'mandrill_secret' => 'Mandrill Secret', - 'mandrill_secret_comment' => '输入你的 Mandrill API key.' + 'mandrill_secret_comment' => '输入你的 Mandrill API key.', + 'drivers_hint_header' => '驱动未安装', + 'drivers_hint_content' => '这个邮件发送方法需要安装插件":plugin"。' ], 'mail_templates' => [ 'menu_label' => '邮件模板', @@ -191,6 +198,7 @@ return [ 'name' => '软件更新', 'menu_label' => '更新', 'menu_description' => '更新系统, 管理并安装插件和主题.', + 'return_link' => '返回系统更新', 'check_label' => '检查更新', 'retry_label' => '重试', 'plugin_name' => '名字', @@ -209,15 +217,13 @@ return [ 'plugin_downloading' => '下载插件: :name', 'plugin_extracting' => '解压插件: :name', 'plugin_version_none' => '新插件', - 'plugin_version_old' => '当前 v:version', - 'plugin_version_new' => 'v:version', - 'theme_label' => '主题', + 'plugin_current_version' => '当前版本', 'theme_new_install' => '新主题安装.', 'theme_downloading' => '下载主题: :name', 'theme_extracting' => '解压主题: :name', 'update_label' => '更新软件', 'update_completing' => '完成更新过程', - 'update_loading' => '加载可用更新...', + 'update_loading' => '正在检查可用更新...', 'update_success' => '更新完成.', 'update_failed_label' => '更新失败', 'force_label' => '强制更新', @@ -228,7 +234,24 @@ return [ 'none' => [ 'label' => '没有更新', 'help' => '没有发现新的更新.' - ] + ], + 'important_action' => [ + 'empty' => '选择操作', + 'confirm' => '确认更新', + 'skip' => '跳过这个插件(仅本次)', + 'ignore' => '跳过这个插件(总是)', + ], + 'important_action_required' => '需要选择操作', + 'important_view_guide' => '查看升级指引', + 'important_alert_text' => '一些更新注意事项', + 'details_title' => '插件详情', + 'details_view_homepage' => '查看主页', + 'details_readme' => '文档', + 'details_readme_missing' => '没有提供文档', + 'details_upgrades' => '升级指引', + 'details_upgrades_missing' => '没有提供升级指引。', + 'details_current_version' => '当前版本', + 'details_author' => '作者', ], 'server' => [ 'connect_error' => '连接服务器失败.', @@ -289,4 +312,3 @@ return [ 'manage_branding' => '自定义后台' ] ]; - diff --git a/modules/system/lang/zh-cn/validation.php b/modules/system/lang/zh-cn/validation.php index f0954ddf5..bc8144e8b 100644 --- a/modules/system/lang/zh-cn/validation.php +++ b/modules/system/lang/zh-cn/validation.php @@ -46,6 +46,7 @@ return array( "array" => ":attribute 不能超过 :max 个.", ), "mimes" => ":attribute 必须是一个: :values 类型的文件.", + "extensions" => ":attribute 必须有一个扩展: :values.", "min" => array( "numeric" => ":attribute 必须至少 :min.", "file" => ":attribute 必须至少 :min kilobytes.", From b579891164863886be32245272bbfd4b4294fa8d Mon Sep 17 00:00:00 2001 From: Nicola Marini Date: Wed, 5 Aug 2015 17:29:31 +0200 Subject: [PATCH 17/66] Update lang.php Update lang.php Update lang.php Update validation.php Update lang.php Update lang.php --- modules/backend/lang/it/lang.php | 218 ++++++++++++++++++-------- modules/cms/lang/it/lang.php | 212 ++++++++++++++++++++----- modules/system/lang/it/lang.php | 137 ++++++++++++---- modules/system/lang/it/validation.php | 25 +-- 4 files changed, 449 insertions(+), 143 deletions(-) diff --git a/modules/backend/lang/it/lang.php b/modules/backend/lang/it/lang.php index caa35a56f..62eb0733a 100644 --- a/modules/backend/lang/it/lang.php +++ b/modules/backend/lang/it/lang.php @@ -1,24 +1,30 @@ [ + 'title' => 'Area di Amministrazione' + ], 'field' => [ 'invalid_type' => 'Il tipo di campo :type non è valido.', - 'options_method_not_exists' => 'La classe :model deve definire un metodo :method() che ritorni le opzioni per il campo ":field".', + 'options_method_not_exists' => 'La classe :model deve definire un metodo :method() che ritorni le opzioni per il campo ":field".' ], 'widget' => [ 'not_registered' => "Nessun widget ':name' è stato registrato", 'not_bound' => "Nessun widget ':name' è stato legato al controller", ], 'page' => [ - 'untitled' => "Senza titolo", + 'untitled' => 'Senza titolo', 'access_denied' => [ - 'label' => "Accesso negato", + 'label' => 'Accesso negato', 'help' => "Non hai le autorizzazioni necessarie per accedere a questa pagina.", - 'cms_link' => "Ritorna al pannello di controllo", + 'cms_link' => 'Ritorna al pannello di controllo' ], + 'invalid_token' => [ + 'label' => 'Token di protezione non valido' + ] ], 'partial' => [ - 'not_found_name' => "La vista parziale ':name' non è stata trovata.", + 'not_found_name' => "La vista parziale ':name' non è stata trovata." ], 'account' => [ 'sign_out' => 'Esci', @@ -27,26 +33,27 @@ return [ 'restore' => 'Ripristina', 'login_placeholder' => 'login', 'password_placeholder' => 'password', - 'forgot_password' => "Dimenticato la password?", - 'enter_email' => "Inserisci in tuo indirizzo e-mail", - 'enter_login' => "Inserisci il login.", - 'email_placeholder' => "email", - 'enter_new_password' => "Inserisci una nuova password", - 'password_reset' => "Reimposta password", - 'restore_success' => "Le istruzioni per reimpostare la password sono state inviate al tuo indirizzo e-mail.", - 'restore_error' => "Nessun utente con login ':login' è stato trovato.", - 'reset_success' => "La tua password è stata reimpostata con successo. Ora puoi effettuare l'accesso.", - 'reset_error' => "I dati forniti per la reimpostazione della password non sono validi. Riprova!", - 'reset_fail' => "Impossibile ripristinare la password!", + 'forgot_password' => 'Password dimenticata?', + 'enter_email' => 'Inserisci in tuo indirizzo e-mail', + 'enter_login' => 'Inserisci il tuo username.', + 'email_placeholder' => 'email', + 'enter_new_password' => 'Inserisci una nuova password', + 'password_reset' => 'Reimposta password', + 'restore_success' => 'Le istruzioni per reimpostare la password sono state inviate al tuo indirizzo e-mail.', + 'restore_error' => "Nessun utente con username ':login' è stato trovato.", + 'reset_success' => 'La tua password è stata reimpostata con successo. Ora puoi effettuare l\'accesso.', + 'reset_error' => 'I dati forniti per la reimpostazione della password non sono validi. Riprova!', + 'reset_fail' => 'Impossibile ripristinare la password!', 'apply' => 'Applica', 'cancel' => 'Annulla', 'delete' => 'Elimina', - 'ok' => 'OK', + 'ok' => 'OK' ], 'dashboard' => [ 'menu_label' => 'Dashboard', 'widget_label' => 'Widget', 'widget_width' => 'Larghezza', + 'full_width' => 'intera larghezza', 'add_widget' => 'Aggiungi widget', 'widget_inspector_title' => 'Configurazione widget', 'widget_inspector_description' => 'Configura il widget', @@ -61,39 +68,50 @@ return [ 'status' => [ 'widget_title_default' => 'Stato del sistema', 'online' => 'online', - 'update_available' => '{0} aggiornamenti disponibili!|{1} aggiornamento disponibile!|[2,Inf] aggiornamenti disponibili!', + 'maintenance' => 'in manutenzione', + 'update_available' => '{0} aggiornamenti disponibili!|{1} aggiornamento disponibile!|[2,Inf] aggiornamenti disponibili!' ] ], 'user' => [ - 'name' => 'Amministratori', + 'name' => 'Amministratore', 'menu_label' => 'Amministratori', 'menu_description' => 'Gestisci gli utenti amministratori, i gruppi e le autorizzazioni.', 'list_title' => 'Gestisci amministratori', - 'new' => 'Nuovo amministratorre', - 'login' => "Login", - 'first_name' => "Nome", - 'last_name' => "Cognome", - 'full_name' => "Nome completo", - 'email' => "Indirizzo e-mail", - 'groups' => "Gruppi", - 'groups_comment' => "Seleziona i gruppi a cui appartiene l'utente.", - 'avatar' => "Avatar", - 'password' => "Password", - 'password_confirmation' => "Conferma password", - 'superuser' => "Super User", - 'superuser_comment' => "Seleziona per consentire all'utente di accedere a tutte le aree.", + 'new' => 'Nuovo amministratore', + 'login' => 'Login', + 'first_name' => 'Nome', + 'last_name' => 'Cognome', + 'full_name' => 'Nome completo', + 'email' => 'Indirizzo e-mail', + 'groups' => 'Gruppi', + 'groups_comment' => 'Seleziona i gruppi a cui appartiene l\'utente.', + 'avatar' => 'Avatar', + 'password' => 'Password', + 'password_confirmation' => 'Conferma password', + 'permissions' => 'Autorizzazioni', + 'account' => 'Account', + 'superuser' => 'Super User', + 'superuser_comment' => 'Seleziona per consentire all\'utente di accedere a tutte le aree.', 'send_invite' => 'Invia invito tramite e-mail', - 'send_invite_comment' => 'Seleziona per inviare un invito all\'utente tramite e-mail', + 'send_invite_comment' => 'Invia un messaggio di benvenuto contenente le credenziali per l\'accesso.', 'delete_confirm' => 'Vuoi davvero eliminare questo amministratore?', 'return' => 'Ritorna alla lista degli amministratori', + 'allow' => 'Consenti', + 'inherit' => 'Eredita', + 'deny' => 'Nega', 'group' => [ 'name' => 'Gruppo', 'name_field' => 'Nome', + 'description_field' => 'Descrizione', + 'is_new_user_default_field' => 'Aggiungi i nuovi amministratori a questo gruppo per impostazione predefinita.', + 'code_field' => 'Codice', + 'code_comment' => 'Inserisci un codice univoco se vuoi accedere a questo elementro tramite API.', 'menu_label' => 'Gruppi', 'list_title' => 'Gestisci gruppi', - 'new' => 'Nuovo gruppo amministratore', + 'new' => 'Nuovo gruppo', 'delete_confirm' => 'Vuoi davvero eliminare questo gruppo amministratore?', 'return' => 'Ritorna alla lista dei gruppi', + 'users_count' => 'Utenti' ], 'preferences' => [ 'not_authenticated' => 'Non c\'è nessun utente autenticato per cui caricare o salvare le preferenze.' @@ -110,30 +128,56 @@ return [ 'behavior_not_ready' => 'L\'elenco non è stato inizializzato, controlla di aver chiamato il metodo makeLists() nel controller.', 'invalid_column_datetime' => "Il valore della colonna ':column' non è un oggetto di tipo DateTime, hai dimenticato un riferimento a \$dates nel modello?", 'pagination' => 'Record visualizzati: :from-:to di :total', + 'prev_page' => 'Pagina precedente', + 'next_page' => 'Pagina successiva', + 'loading' => 'Caricamento...', 'setup_title' => 'Configura elenco', 'setup_help' => 'Utilizza le checkbox per selezionare le colonne che vuoi visualizzare nell\'elenco. Puoi cambiare la posizione delle colonne trascinandole verso l\'alto o il basso.', 'records_per_page' => 'Record per pagina', - 'records_per_page_help' => 'Seleziona il numero di record da visualizzare su ogni pagina. Ricorda che un numero elevato di record in una singola pagina può ridurre le prestazioni.' + 'records_per_page_help' => 'Seleziona il numero di record da visualizzare su ogni pagina. Ricorda che un numero elevato di record in una singola pagina può ridurre le prestazioni.', + 'delete_selected' => 'Elimina selezionati', + 'delete_selected_empty' => 'Non hai selezionato nessun record da eliminare.', + 'delete_selected_confirm' => 'Elimina i record selezionati?', + 'delete_selected_success' => 'I record selezionati sono stati eliminati con successo.' + ], + 'fileupload' => [ + 'attachment' => 'Allegato', + 'help' => 'Aggiungi un titolo e una descrizione per questo allegato.', + 'title_label' => 'Titolo', + 'description_label' => 'Descrizione', + 'default_prompt' => 'Fai clic su %s o trascina un file qui per eseguire il caricamento', + 'attachment_url' => 'URL Allegato', + 'upload_file' => 'Carica file', + 'upload_error' => 'Errore nel caricamento', + 'remove_confirm' => 'Sei sicuro?', + 'remove_file' => 'Rimuovi file' ], 'form' => [ - 'create_title' => "Nuovo :name", - 'update_title' => "Modifica :name", - 'preview_title' => "Anteprima :name", + 'create_title' => 'Crea :name', + 'update_title' => 'Modifica :name', + 'preview_title' => 'Anteprima :name', 'create_success' => ':name creato con successo', 'update_success' => ':name modificato con successo', 'delete_success' => ':name eliminato con successo', - 'missing_id' => "L'ID del record non è stato specificato.", + 'missing_id' => 'L\'ID del record non è stato specificato.', 'missing_model' => 'Il form utilizzato nella classe :class non ha un modello definito.', 'missing_definition' => "Il form non contiene il campo ':field'.", - 'not_found' => 'Nessun record per l\'ID :id è stato trovato.', + 'not_found' => 'Nessun record con ID :id è stato trovato.', + 'action_confirm' => 'Sei sicuro?', 'create' => 'Crea', 'create_and_close' => 'Crea e chiudi', 'creating' => 'Creazione in corso...', + 'creating_name' => 'Creazione :name in corso...', 'save' => 'Salva', 'save_and_close' => 'Salva e chiudi', 'saving' => 'Salvataggio in corso...', + 'saving_name' => 'Salvataggio :name in corso...', 'delete' => 'Elimina', 'deleting' => 'Eliminazione in corso...', + 'deleting_name' => 'Eliminazione :name in corso...', + 'reset_default' => 'Ripristina predefiniti', + 'resetting' => 'Ripristino in corso', + 'resetting_name' => 'Ripristino :name in corso', 'undefined_tab' => 'Varie', 'field_off' => 'Off', 'field_on' => 'On', @@ -141,44 +185,71 @@ return [ 'apply' => 'Applica', 'cancel' => 'Annulla', 'close' => 'Chiudi', + 'confirm' => 'Conferma', + 'reload' => 'Ricarica', + 'complete' => 'Completo', 'ok' => 'OK', 'or' => 'o', 'confirm_tab_close' => 'Vuoi davvero chiudere il tab? Le modifiche non salvate andranno perse.', 'behavior_not_ready' => 'Il form non è stato inizializzato, verifica di aver chiamato il metodo initForm() nel controller.', - 'preview_no_files_message' => 'I file non sono stati caricati', + 'preview_no_files_message' => 'Non ci sono file caricati.', + 'preview_no_record_message' => 'Nessun record selezionato.', 'select' => 'Seleziona', 'select_all' => 'tutti', 'select_none' => 'nessuno', + 'select_placeholder' => 'seleziona', + 'insert_row' => 'Inserisci riga', + 'delete_row' => 'Elimina riga', + 'concurrency_file_changed_title' => 'Il file è stato cambiato', + 'concurrency_file_changed_description' => "Il file che stavi modificando è stato cambiato da un altro utente. Puoi ricaricare il file e perdere le tue modifiche oppure sovrascrivere il file sul disco." ], 'relation' => [ + 'missing_config' => "La relazione non ha nessuna configurazione per ':config'.", 'missing_definition' => "La relazione non contiene una definizione per il campo ':field'.", - 'missing_model' => "La relazione utilizzata nella classe :class non ha un modello definito.", - 'invalid_action_single' => "L'azione non può essere eseguita su una relazione singola.", - 'invalid_action_multi' => "L'azione non può essere eseguita su una relazione multipla.", - 'add' => "Aggiungi", - 'add_name' => "Aggiungi :name", - 'create' => "Crea", - 'create_name' => "Crea :name", - 'update' => "Aggiorna", - 'update_name' => "Aggiorna :name", - 'remove' => "Rimuovi", - 'remove_name' => "Rimuovi :name", - 'delete' => "Elimina", - 'delete_name' => "Elimina :name", + 'missing_model' => 'La relazione utilizzata nella classe :class non ha un modello definito.', + 'invalid_action_single' => 'L\'azione non può essere eseguita su una relazione singola.', + 'invalid_action_multi' => 'L\'azione non può essere eseguita su una relazione multipla.', + 'help' => 'Fai clic su un elemento per aggiungere', + 'related_data' => 'Dati :name correlati', + 'add' => 'Aggiungi', + 'add_selected' => 'Aggiungi selezionati', + 'add_a_new' => 'Aggiungi nuovo :name', + 'link_selected' => 'Collega selezionati', + 'link_a_new' => 'Collega nuovo :name', + 'cancel' => 'Annulla', + 'close' => 'Chiudi', + 'add_name' => 'Aggiungi :name', + 'create' => 'Crea', + 'create_name' => 'Crea :name', + 'update' => 'Aggiorna', + 'update_name' => 'Aggiorna :name', + 'preview' => 'Visualizza', + 'preview_name' => 'Visualizza :name', + 'remove' => 'Rimuovi', + 'remove_name' => 'Rimuovi :name', + 'delete' => 'Elimina', + 'delete_name' => 'Elimina :name', + 'delete_confirm' => 'Sei sicuro?', + 'link' => 'Collega', + 'link_name' => 'Collega :name', + 'unlink' => 'Scollega', + 'unlink_name' => 'Scollega :name', + 'unlink_confirm' => 'Sei sicuro?' ], 'model' => [ - 'name' => "Modello", - 'not_found' => "Nessun modello di ':class' con l'ID :id trovato.", - 'missing_id' => "Nessun ID specificato.", + 'name' => 'Modello', + 'not_found' => "Nessun modello ':class' con ID :id trovato.", + 'missing_id' => 'Nessun ID specificato per la ricerca.', 'missing_relation' => "Il modello ':class' non contiene una definizione per la relazione ':relation'.", - 'invalid_class' => "Il modello :model utilizzato nella classe :class non è valido, deve ereditare la classe Model.", + 'missing_method' => "Il modello ':class' non contiene un metodo ':method'.", + 'invalid_class' => "Il modello :model utilizzato nella classe :class non è valido, deve ereditare la classe \Model.", 'mass_assignment_failed' => "Assegnazione massiva fallita per l'attributo ':attribute' del modello.", ], 'warnings' => [ - 'tips' => 'Suggerimenti di configurazione del sistema', + 'tips' => 'Suggerimenti per la configurazione del sistema', 'tips_description' => 'Ci sono elementi a cui è necessario prestare attenzione al fine di configurare il sistema in maniera corretta.', 'permissions' => 'La cartella :name o le sue sottocartelle non sono scrivibili da PHP. Imposta le corrette autorizzazioni per il server web su questa cartella.', - 'extension' => 'L\'estenzione di PHP :name non è installata. Installa questa libreria ed attiva l\'estensione.' + 'extension' => 'L\'estensione di PHP :name non è installata. Installa questa libreria ed attiva l\'estensione.' ], 'editor' => [ 'menu_label' => 'Preferenze editor di codice', @@ -191,23 +262,41 @@ return [ 'highlight_active_line' => 'Evidenzia la linea attiva', 'show_invisibles' => 'Mostra caratteri invisibili', 'show_gutter' => 'Visualizza numeri di linea', - 'theme' => 'Schema di colori', + 'theme' => 'Schema di colori' ], 'tooltips' => [ 'preview_website' => 'Anteprima del sito web' ], 'mysettings' => [ 'menu_label' => 'Impostazioni personali', - 'menu_description' => 'Impostazioni legate al tuo account amministratore', + 'menu_description' => 'Impostazioni legate al tuo account amministratore' ], 'myaccount' => [ 'menu_label' => 'Il mio account', 'menu_description' => 'Aggiorna i dettagli del tuo account, come il nome, l\'indirizzo e-mail e la password.', 'menu_keywords' => 'sicurezza login' ], + 'branding' => [ + 'menu_label' => 'Personalizza pannello di controllo', + 'menu_description' => 'Personalizza l\'area di amministrazione, come il nome, i colori ed il logo.', + 'brand' => 'Marchio', + 'logo' => 'Logo', + 'logo_description' => 'Carica un logo personalizzato da utilizzare nel pannello di controllo.', + 'app_name' => 'Nome dell\'applicazione', + 'app_name_description' => 'Questo campo verrà visualizzato nella barra del titolo del pannello di controllo.', + 'app_tagline' => 'Slogan dell\'applicazione', + 'app_tagline_description' => 'Questo campo verrà visualizzato nella schermata di login del pannello di controllo.', + 'colors' => 'Colori', + 'primary_light' => 'Principale (Chiaro)', + 'primary_dark' => 'Principale (Scuro)', + 'secondary_light' => 'Secondario (Chiaro)', + 'secondary_dark' => 'Secondario (Scuro)', + 'styles' => 'Stili', + 'custom_stylesheet' => 'Foglio di stile personalizzato' + ], 'backend_preferences' => [ 'menu_label' => 'Preferenze pannello di controllo', - 'menu_description' => 'Gestisci le preferenze della lingua e l\'aspetto del pannello di controllo.', + 'menu_description' => 'Gestisci le preferenze del tuo account, come la lingua.', 'locale' => 'Lingua', 'locale_comment' => 'Seleziona la lingua da utilizzare.', ], @@ -222,4 +311,7 @@ return [ 'last_name' => 'Cognome', 'email' => 'Indirizzo e-mail', ], + 'filter' => [ + 'all' => 'tutto' + ] ]; diff --git a/modules/cms/lang/it/lang.php b/modules/cms/lang/it/lang.php index 8d489ffdd..741888081 100644 --- a/modules/cms/lang/it/lang.php +++ b/modules/cms/lang/it/lang.php @@ -3,51 +3,113 @@ return [ 'cms_object' => [ 'invalid_file' => 'Nome file non valido: :name. I nomi dei file possono contenere solo caratteri alfanumerici, underscores, trattini e punti. Alcuni esempi di nome di file corretti: page.htm, page, subdirectory/page', - 'invalid_property' => 'La proprietà ":name" non può essere impostata', - 'file_already_exists' => 'File ":name" già esistente.', - 'error_saving' => 'Errore nel salvataggio del file ":name". Verifica le autorizzazioni di scrittura.', + 'invalid_property' => "La proprietà ':name' non può essere impostata", + 'file_already_exists' => "File ':name' già esistente.", + 'error_saving' => "Errore nel salvataggio del file ':name'. Verifica le autorizzazioni di scrittura.", 'error_creating_directory' => 'Errore nella creazione della cartella :name. Verifica le autorizzazioni di scrittura.', 'invalid_file_extension'=>'Estensione del file non valida: :invalid. Le estensioni consentite sono: :allowed.', - 'error_deleting' => 'Errore nella cancellazione del file ":name". Verifica le autorizzazioni di scrittura.', - 'delete_success' => 'File eliminati correttamente: :count.', + 'error_deleting' => "Errore nella cancellazione del file ':name'. Verifica le autorizzazioni di scrittura.", + 'delete_success' => 'Template eliminati correttamente: :count.', 'file_name_required' => 'Il campo Nome file è obbligatorio.' ], 'theme' => [ + 'not_found_name' => "Tema ':name' non trovato.", 'active' => [ - 'not_set' => "Il tema attivo non è impostato.", - 'not_found' => "Il tema attivo non è stato trovato.", + 'not_set' => 'Il tema attivo non è impostato.', + 'not_found' => 'Il tema attivo non è stato trovato.', ], 'edit' => [ - 'not_set' => "Il tema di modifica non è impostato.", - 'not_found' => "Il tema di modifica non è stato trovato.", + 'not_set' => 'Il tema modificato non è impostato.', + 'not_found' => 'Il tema modificato non è stato trovato.', 'not_match' => "L'oggetto a cui stai cercando di accedere non appartiene al tema che stai modificando. Si prega di ricaricare la pagina." ], 'settings_menu' => 'Tema del sito', 'settings_menu_description' => 'Visualizza l\'anteprima dei temi installati e seleziona un tema attivo.', - 'find_more_themes' => 'Trova altri temi su OctoberCMS Theme Marketplace.', + 'default_tab' => 'Proprietà', + 'name_label' => 'Nome', + 'name_create_placeholder' => 'Nome del nuovo tema', + 'author_label' => 'Autore', + 'author_placeholder' => 'Nome della persona o della società', + 'description_label' => 'Descrizione', + 'description_placeholder' => 'Descrizione del tema', + 'homepage_label' => 'Homepage', + 'homepage_placeholder' => 'URL Sito web', + 'code_label' => 'Codice', + 'code_placeholder' => 'Un codice univoco per questo tema, utilizzato per la distribuzione', + 'dir_name_label' => 'Nome della cartella', + 'dir_name_create_label' => 'La cartella di destinazione del tema', + 'theme_label' => 'Tema', + 'theme_title' => 'Temi', 'activate_button' => 'Attiva', 'active_button' => 'Attivo', + 'customize_theme' => 'Personalizza tema', + 'customize_button' => 'Personalizza', + 'duplicate_button' => 'Duplica', + 'duplicate_title' => 'Duplica tema', + 'duplicate_theme_success' => 'Tema duplicato con successo!', + 'manage_button' => 'Gestisci', + 'manage_title' => 'Gestisci tema', + 'edit_properties_title' => 'Tema', + 'edit_properties_button' => 'Modifica proprietà', + 'save_properties' => 'Salva proprietà', + 'import_button' => 'Importa', + 'import_title' => 'Importa tema', + 'import_theme_success' => 'Tema importato con successo!', + 'import_uploaded_file' => 'File di archivio del tema', + 'import_overwrite_label' => 'Sovrascrivi file esistenti', + 'import_overwrite_comment' => 'Deseleziona per importare solamente i nuovi file', + 'import_folders_label' => 'Cartelle', + 'import_folders_comment' => 'Seleziona le cartelle del tema che vuoi importare', + 'export_button' => 'Esporta', + 'export_title' => 'Esporta tema', + 'export_folders_label' => 'Cartelle', + 'export_folders_comment' => 'Seleziona le cartelle del tema che vuoi esportare', + 'delete_button' => 'Elimina', + 'delete_confirm' => 'Sei sicuro di voler cancellare questo tema? L\'operazione non può essere annullata!', + 'delete_active_theme_failed' => 'Impossibile eliminare il tema attivo, prova prima ad attivare un altro tema.', + 'delete_theme_success' => 'Tema eliminato con successo!', + 'create_title' => 'Crea tema', + 'create_button' => 'Crea', + 'create_new_blank_theme' => 'Crea un nuovo tema vuoto', + 'create_theme_success' => 'Tema creato con successo!', + 'create_theme_required_name' => 'Specifica un nome per il tema.', + 'new_directory_name_label' => 'Cartella di destinazione del tema', + 'new_directory_name_comment' => 'Inserisci una nuova cartella per il tema duplicato.', + 'dir_name_invalid' => 'Il nome della cartella può contenere solo numeri, lettere latine e i seguenti simboli: _-', + 'dir_name_taken' => 'Cartelle di destinazione del tema già esistente.', + 'find_more_themes' => 'Trova nuovi temi', + 'saving' => 'Salvataggio tema in corso...', + 'return' => 'Ritorna all\'elenco del temi', + ], + 'maintenance' => [ + 'settings_menu' => 'Modalità di manutenzione', + 'settings_menu_description' => 'Configura la pagina da visualizzare in modalità di manutenzione e cambia l\'impostazione.', + 'is_enabled' => 'Abilita modalità di manutenzione', + 'is_enabled_comment' => 'Se attivo i visitatori del sito vedranno la pagina selezionata sotto.' ], 'page' => [ + 'not_found_name' => "Pagina ':name' non trovata", 'not_found' => [ - 'label' => "Pagina non trovata", - 'help' => "La pagina richiesta non è stata trovata.", + 'label' => 'Pagina non trovata', + 'help' => 'La pagina richiesta non è stata trovata.', ], 'custom_error' => [ - 'label' => "Errore nella pagina", + 'label' => 'Errore nella pagina', 'help' => "Siamo spiacenti, ma qualcosa è andato storto e la pagina non può essere visualizzata.", ], 'menu_label' => 'Pagine', + 'unsaved_label' => 'Pagina/e non salvate', 'no_list_records' => 'Pagine non trovate', 'new' => 'Nuova pagina', - 'invalid_url' => 'Formato URL non valido. L\'URL deve iniziare con una barra e può contenere numeri, lettere e i seguenti simboli: ._-[]:?|/+*^$', + 'invalid_url' => 'Formato URL non valido. L\'URL deve iniziare con una barra e può contenere numeri, lettere latine e i seguenti simboli: ._-[]:?|/+*^$', 'delete_confirm_multiple' => 'Sei sicuro di voler eliminare le pagine selezionate?', 'delete_confirm_single' => 'Sei sicuro di voler eliminare questa pagina?', 'no_layout' => '-- nessun layout --' ], 'layout' => [ 'not_found_name' => "Il layout ':name' non è stato trovato", - 'menu_label' => 'Layouts', + 'menu_label' => 'Layout', + 'unsaved_label' => 'Layout non salvati', 'no_list_records' => 'Nessun layout trovato', 'new' => 'Nuovo layout', 'delete_confirm_multiple' => 'Sei sicuro di voler eliminare i layouts selezionati?', @@ -55,27 +117,29 @@ return [ ], 'partial' => [ 'not_found_name' => "La vista parziale ':name' non è stata trovata.", - 'invalid_name' => "Nome della vista parziale non valido: :name.", + 'invalid_name' => 'Nome della vista parziale non valido: :name.', 'menu_label' => 'Viste parziali', + 'unsaved_label' => 'Viste parziali non salvate', 'no_list_records' => 'Nessuna vista parziale trovata', 'delete_confirm_multiple' => 'Sei sicuro di voler eliminare le viste parziali selezionate?', 'delete_confirm_single' => 'Sei sicuro di voler eliminare questa vista parziale?', 'new' => 'Nuova vista parziale' ], 'content' => [ - 'not_found_name' => "Il file di contenuto ':name' non è stato trovato.", + 'not_found_name' => "Il file di contenuti ':name' non è stato trovato.", 'menu_label' => 'Contenuti', + 'unsaved_label' => 'Contenuti non salvati', 'no_list_records' => 'Nessun file di contenuto trovato', 'delete_confirm_multiple' => 'Sei sicuro di voler eliminare i file o le cartelle di contenuti selezionate?', 'delete_confirm_single' => 'Sei sicuro di voler eliminare questo file di contenuti?', 'new' => 'Nuovo file di contenuti' ], 'ajax_handler' => [ - 'invalid_name' => "Nome del gestore AJAX non valido: :name.", + 'invalid_name' => 'Nome del gestore AJAX non valido: :name.', 'not_found' => "Il gestore AJAX ':name' non è stato trovato.", ], 'cms' => [ - 'menu_label' => "CMS" + 'menu_label' => 'CMS' ], 'sidebar' => [ 'add' => 'Aggiungi', @@ -93,32 +157,36 @@ return [ 'meta' => 'Metadati', 'meta_title' => 'Meta Titolo', 'meta_description' => 'Meta Descrizione', - 'markup' => 'Marcatore', + 'markup' => 'Markup', 'code' => 'Codice', 'content' => 'Contenuto', 'hidden' => 'Nascosto', - 'hidden_comment' => 'Le pagine nascoste sono accessibili sono dagli utenti registrati.', + 'hidden_comment' => 'Le pagine nascoste sono accessibili solo dagli utenti collegati al pannello di controllo.', 'enter_fullscreen' => 'Visualizza a schermo intero', 'exit_fullscreen' => 'Esci dalla visualizzazione a schermo intero' ], 'asset' => [ - 'menu_label' => "Assets", - 'drop_down_add_title' => 'Agiungi...', + 'menu_label' => 'Assets', + 'unsaved_label' => 'Asset(s) non salvati', + 'drop_down_add_title' => 'Aggiungi...', 'drop_down_operation_title' => 'Azioni...', 'upload_files' => 'Carica file(s)', 'create_file' => 'Crea file', 'create_directory' => 'Crea cartella', + 'directory_popup_title' => 'Nuova cartella', + 'directory_name' => 'Nome della cartella', 'rename' => 'Rinomina', 'delete' => 'Elimina', 'move' => 'Sposta', + 'select' => 'Seleziona', 'new' => 'Nuovo file', 'rename_popup_title' => 'Rinomina', 'rename_new_name' => 'Nuovo nome', - 'invalid_path' => 'Il percorso può contenere solo numeri, lettere, spazi e i simboli seguenti: ._-/', + 'invalid_path' => 'Il percorso può contenere solo numeri, lettere latine, spazi e i simboli seguenti: ._-/', 'error_deleting_file' => 'Errore durante l\'eliminazione del file :name.', 'error_deleting_dir_not_empty' => 'Errore durante l\'eliminazione della cartella :name. La cartella non è vuota.', 'error_deleting_dir' => 'Errore durante l\'eliminazinoe della cartella :name.', - 'invalid_name' => 'Il nome può contenere solo numeri, lettere, spazi e i simboli seguenti: ._-', + 'invalid_name' => 'Il nome può contenere solo numeri, lettere latine, spazi e i simboli seguenti: ._-', 'original_not_found' => 'Il file o la cartella originali non sono stati trovati', 'already_exists' => 'Un file o cartella con questo nome è già esistente', 'error_renaming' => 'Errore nella rinominazione del file o della cartella', @@ -126,8 +194,8 @@ return [ 'too_large' => 'Il file caricato è troppo grande. La dimensione massima consentita è :max_size', 'type_not_allowed' => 'Solo i seguenti tipi di file sono consentiti: :allowed_types', 'file_not_valid' => 'File non valido', - 'error_uploading_file' => 'Errore durante il caricamento del file ":name": :error', - 'move_please_select' => 'Seleziona', + 'error_uploading_file' => "Errore durante il caricamento del file ':name': :error", + 'move_please_select' => 'seleziona', 'move_destination' => 'Cartella di destinazione', 'move_popup_title' => 'Sposta assets', 'move_button' => 'Sposta', @@ -140,28 +208,94 @@ return [ 'path' => 'Percorso' ], 'component' => [ - 'menu_label' => "Componenti", - 'unnamed' => "Senza nome", - 'no_description' => "Nessuna descrizione fornita", - 'alias' => "Alias", - 'alias_description' => "Un nome univoco fornito a questo componente quando utilizzato nella pagina o nel layout.", - 'validation_message' => "L'alias del componente è obbligatorio e può contenere solo lettere, numeri e underscores. L'alias deve iniziare con una lettera.", - 'invalid_request' => "Il modello non può essere salvato a causa di dati dei componenti non validi.", + 'menu_label' => 'Componenti', + 'unnamed' => 'Senza nome', + 'no_description' => 'Nessuna descrizione fornita', + 'alias' => 'Alias', + 'alias_description' => 'Un nome univoco fornito a questo componente quando utilizzato nella pagina o nel layout.', + 'validation_message' => 'L\'alias del componente è obbligatorio e può contenere solo lettere latine, numeri e underscores. L\'alias deve iniziare con una lettera.', + 'invalid_request' => 'Il template non può essere salvato a causa di dati dei componenti non validi.', 'no_records' => 'Nessun componente trovato', 'not_found' => "Il componente ':name' non è stato trovato.", - 'method_not_found' => "Il componente ':name' non contiene il metodo ':method'.", + 'method_not_found' => "Il componente ':name' non contiene il metodo ':method'." ], 'template' => [ - 'invalid_type' => "Tipo di modello non valido.", - 'not_found' => "Il modello richiesto non è stato trovato.", - 'saved'=> "Il modello è stato salvato con successo." + 'invalid_type' => 'Tipo di template sconosciuto.', + 'not_found' => 'Il template richiesto non è stato trovato.', + 'saved'=> 'Il template è stato salvato con successo' ], 'permissions' => [ + 'name' => 'Cms', 'manage_content' => 'Gestisci contenuti', 'manage_assets' => 'Gestisci assets', 'manage_pages' => 'Gestisci pagine', 'manage_layouts' => 'Gesstisci layouts', 'manage_partials' => 'Gestisci viste parziali', - 'manage_themes' => 'Gestisci temi' + 'manage_themes' => 'Gestisci temi', + 'manage_media' => 'Gestisci elementi multimediali' + ], + 'mediafinder' => [ + 'default_prompt' => 'Fai clic sul pulsante %s per trovare un elemento multimediale' + ], + 'media' => [ + 'invalid_path' => "Percorso del file non valido: ':path'.", + 'menu_label' => 'Elementi multimediali', + 'upload' => 'Carica', + 'move' => 'Sposta', + 'delete' => 'Elimina', + 'add_folder' => 'Aggiungi cartella', + 'search' => 'Cerca', + 'display' => 'Visualizza', + 'filter_everything' => 'Tutto', + 'filter_images' => 'Immagini', + 'filter_video' => 'Video', + 'filter_audio' => 'Audio', + 'filter_documents' => 'Documenti', + 'library' => 'Libreria', + 'folder_size_items' => 'elementi', + 'size' => 'Dimensione', + 'title' => 'Titolo', + 'last_modified' => 'Ultima modifica', + 'public_url' => 'URL pubblico', + 'click_here' => 'Fai clic qui', + 'thumbnail_error' => 'Errore durante la generazione dell\'anteprima.', + 'return_to_parent' => 'Ritorna alla cartella superiore', + 'return_to_parent_label' => 'Torna su ..', + 'nothing_selected' => 'Nessun elemento selezionato.', + 'multiple_selected' => 'Elementi multipli selezionati.', + 'uploading_file_num' => 'Caricamento in corso di :number file(s)...', + 'uploading_complete' => 'Caricamento completato', + 'order_by' => 'Ordina per', + 'search' => 'Cerca', + 'folder' => 'Cartella', + 'no_files_found' => 'Nessun file corrisponde alla tua richiesta.', + 'delete_empty' => 'Seleziona elementi da eliminare.', + 'delete_confirm' => 'Vuoi davvero eliminare gli elementi selezionati?', + 'error_renaming_file' => 'Errore durante la rinominazione dell\'elemento', + 'new_folder_title' => 'Nuova cartella', + 'folder_name' => 'Nome della cartella', + 'error_creating_folder' => 'Errore durante la creazione della cartella', + 'folder_or_file_exist' => 'Una cartella o un file con il nome specificato è già esistente.', + 'move_empty' => 'Selezione elementi da spostare.', + 'move_popup_title' => 'Sposta file o cartelle', + 'move_destination' => 'Cartella di destinazione', + 'please_select_move_dest' => 'Seleziona una cartella di destinazione.', + 'move_dest_src_match' => 'Seleziona un\'altra cartella di destinazione.', + 'empty_library' => 'La libreria è vuota. Carica dei files o crea delle cartelle per iniziare.', + 'insert' => 'Inserisci', + 'crop_and_insert' => 'Ritaglia e inserisci', + 'select_single_image' => 'Seleziona una singola immagine.', + 'selection_not_image' => 'L\'elemento selezionato non è un\'immagine.', + 'restore' => 'Annulla tutte le modifiche', + 'resize' => 'Ridimensiona...', + 'selection_mode_normal' => 'Normale', + 'selection_mode_fixed_ratio' => 'Rapporto fisso', + 'selection_mode_fixed_size' => 'Dimensione fissa', + 'height' => 'Altezza', + 'width' => 'Larghezza', + 'selection_mode' => 'Metodo di selezione', + 'resize_image' => 'Ridimensiona immagine', + 'image_size' => 'Dimensione immagine:', + 'selected_size' => 'Selezionati:' ] ]; diff --git a/modules/system/lang/it/lang.php b/modules/system/lang/it/lang.php index fa8c3a8c7..659cd12b5 100644 --- a/modules/system/lang/it/lang.php +++ b/modules/system/lang/it/lang.php @@ -3,27 +3,37 @@ return [ 'app' => [ 'name' => 'October CMS', - 'tagline' => 'Getting back to basics', + 'tagline' => 'Tornare alle origini', ], 'locale' => [ 'en' => 'Inglese', - 'nl' => 'Olandese', - 'ja' => 'Giapponese', - 'se' => 'Svedese', - 'tr' => 'Turco', 'de' => 'Tedesco', - 'ru' => 'Russo', + 'es' => 'Spagnolo', + 'es-ar' => 'Spagnolo (Argentina)', + 'fa' => 'Persiano', 'fr' => 'Francese', + 'hu' => 'Ungherese', + 'id' => 'Indonesiano', 'it' => 'Italiano', + 'ja' => 'Giapponese', + 'lv' => 'Lettone', + 'nb-no' => 'Norvegese (Bokmål)', + 'nl' => 'Olandese', + 'pl' => 'Polacco', 'pt-br' => 'Portoghese (Brasile)', - 'fa' => 'Persian', - 'nb-no' => 'Norvegese (Bokmål)' + 'ro' => 'Romeno', + 'ru' => 'Russo', + 'se' => 'Svedese', + 'sk' => 'Slovacco (Slovacchia)', + 'tr' => 'Turco', + 'zh-cn' => 'Cinese (Cina)', + 'el' => 'Greco' ], 'directory' => [ - 'create_fail' => "Impossibile creare la cartella: :name", + 'create_fail' => 'Impossibile creare la cartella: :name', ], 'file' => [ - 'create_fail' => "Impossibile creare il file: :name", + 'create_fail' => 'Impossibile creare il file: :name', ], 'combiner' => [ 'not_found' => "Il file combinatore ':name' non è stato trovato.", @@ -44,34 +54,62 @@ return [ 'events' => 'Eventi', 'customers' => 'Clienti', 'my_settings' => 'Impostazioni personali', + ] + ], + 'theme' => [ + 'label' => 'Tema', + 'unnamed' => 'Tema senza nome', + 'name' => [ + 'label' => 'Nome tema', + 'help' => 'Cerca il tema tramite il suo codice univoco. Ad esempio, RainLab.Vanilla' ], ], + 'themes' => [ + 'install' => 'Installa temi', + 'search' => 'cerca temi da installare...', + 'installed' => 'Temi installati', + 'no_themes' => 'Non ci sono temi installati dal marketplace.', + 'recommended' => 'Raccomandati', + 'remove_confirm' => 'Sei sicuro di voler rimuovere questo tema?' + ], 'plugin' => [ + 'label' => 'Plugin', 'unnamed' => 'Plugin senza nome', 'name' => [ 'label' => 'Nome del plugin', - 'help' => 'Nominare il plugin con il suo codice. Ad esempio, RainLab.Blog', - ], + 'help' => 'Cerca il plugin tramite il suo codice univoco. Ad esempio, RainLab.Blog' + ] ], 'plugins' => [ 'manage' => 'Gestisci plugin', 'enable_or_disable' => 'Abilita o disabilita', 'enable_or_disable_title' => 'Abilita o disabilita plugin', + 'install' => 'Installa plugin', + 'install_products' => 'Installa prodotti', + 'search' => 'cerca plugin da installare...', + 'installed' => 'Plugin installati', + 'no_plugins' => 'Non ci sono temi installati dal marketplace.', + 'recommended' => 'Raccomandati', 'remove' => 'Rimuovi', - 'refresh' => 'Aggiorna', + 'refresh' => 'Reinstalla', 'disabled_label' => 'Disabilitato', 'disabled_help' => 'I plugin disabilitati sono ignorati dall\'applicazione.', + 'frozen_label' => 'Congela aggiornamenti', + 'frozen_help' => 'I plugin congelati verranno ignorati nel processo di aggiornamento.', 'selected_amount' => 'Plugin selezionati: :amount', - 'remove_success' => "Rimozione dei plugin dal sistema eseguita con successo.", - 'refresh_success' => "Aggiornamento dei plugin nel sistema eseguito con successo.", - 'disable_success' => "Disabilitazione dei plugin eseguita con successo.", - 'enable_success' => "Abilitazione dei plugin eseguita con successo.", - 'unknown_plugin' => "Il plugin è stato rimosso con successo dal file system.", + 'remove_confirm' => 'Sei sicuro di voler rimuovere questo plugin?', + 'remove_success' => 'Rimozione dei plugin dal sistema eseguita con successo.', + 'refresh_confirm' => 'Sei sicuro?', + 'refresh_success' => 'Reinstallazione dei plugin nel sistema eseguita con successo.', + 'disable_confirm' => 'Sei sicuro?', + 'disable_success' => 'Disabilitazione dei plugin eseguita con successo.', + 'enable_success' => 'Abilitazione dei plugin eseguita con successo.', + 'unknown_plugin' => 'Il plugin è stato rimosso dal file system.', ], 'project' => [ 'name' => 'Progetto', 'owner_label' => 'Proprietario', - 'attach' => 'Colleca progetto', + 'attach' => 'Collega progetto', 'detach' => 'Scollega progetto', 'none' => 'Nessuno', 'id' => [ @@ -84,18 +122,21 @@ return [ ], 'settings' => [ 'menu_label' => 'Impostazioni', + 'not_found' => 'Impossibile trovare le impostazioni specificate.', 'missing_model' => 'La pagine delle impostazioni non ha nessun modello associato.', 'update_success' => 'Le impostazioni per :name sono state aggiornate con successo.', 'return' => 'Ritorna alle impostazioni di sistema', 'search' => 'Cerca' ], 'mail' => [ + 'log_file' => 'File di log', 'menu_label' => 'Configurazione e-mail', 'menu_description' => 'Gestisci la configurazione delle e-mail.', 'general' => 'Generale', 'method' => 'Metodo di invio', 'sender_name' => 'Nome del mittente', 'sender_email' => 'Indirizzo e-mail del mittente', + 'php_mail' => 'PHP mail', 'smtp' => 'SMTP', 'smtp_address' => 'Indirizzo SMTP', 'smtp_authorization' => 'Il server SMTP richiede l\'autenticazione', @@ -107,6 +148,16 @@ return [ 'sendmail' => 'Sendmail', 'sendmail_path' => 'Percorso Sendmail', 'sendmail_path_comment' => 'Inserisci il percorso al servizio sendmail.', + 'mailgun' => 'Mailgun', + 'mailgun_domain' => 'Dominio Mailgun', + 'mailgun_domain_comment' => 'Inserisci il nome dominio Mailgun.', + 'mailgun_secret' => 'Chiave Mailgun', + 'mailgun_secret_comment' => 'Inserisci la tua chiave per l\'utilizzo delle API Mailgun.', + 'mandrill' => 'Mandrill', + 'mandrill_secret' => 'Chiave Mandrill', + 'mandrill_secret_comment' => 'Inserisci la tua chiave per l\'utilizzo delle API Mandrill.', + 'drivers_hint_header' => 'Driver non installati', + 'drivers_hint_content' => 'Questa modalità di invio richiede che il plugin ":plugin" sia installato prima che tu possa inviare messaggi.' ], 'mail_templates' => [ 'menu_label' => 'Modelli di e-mail', @@ -127,7 +178,7 @@ return [ 'description' => 'Descrizione', 'content_html' => 'HTML', 'content_css' => 'CSS', - 'content_text' => 'Testo', + 'content_text' => 'Testo piano', 'test_send' => 'Invia un messaggio di prova', 'test_success' => 'Il messaggio di prova è stato inviato con successo.', 'return' => 'Ritorna all\'elenco dei modelli', @@ -135,7 +186,9 @@ return [ 'install' => [ 'project_label' => 'Collega al progetto', 'plugin_label' => 'Installa plugin', + 'theme_label' => 'Installa tema', 'missing_plugin_name' => 'Specifica il nome del plugin da installare.', + 'missing_theme_name' => 'Specifica il nome del tema da installare.', 'install_completing' => 'Sto terminando il processo di installazione', 'install_success' => 'Il plugin è stato installato con successo.', ], @@ -144,20 +197,26 @@ return [ 'name' => 'Aggiornamento del software', 'menu_label' => 'Aggiornamenti', 'menu_description' => 'Aggiorna il sistema, gestisci ed installa plugin e temi.', + 'return_link' => 'Ritorna agli aggiornamenti di sistema', 'check_label' => 'Verifica gli aggiornamenti', 'retry_label' => 'Riprova', 'plugin_name' => 'Nome', + 'plugin_code' => 'Codice', 'plugin_description' => 'Descrizione', 'plugin_version' => 'Versione', 'plugin_author' => 'Autore', - 'core_current_build' => 'Build corrent', + 'core_current_build' => 'Build corrente', 'core_build' => 'Build :build', - 'core_build_help' => 'Una nuova build è disponibile.', + 'core_build_help' => 'Disponibile l\'ultima build.', 'core_downloading' => 'Scaricamento dei file in corso', 'core_extracting' => 'Estrazione dei file in corso', + 'plugins' => 'Plugin', + 'themes' => 'Themi', + 'disabled' => 'Disabilitati', 'plugin_downloading' => 'Scaricamento plugin: :name', 'plugin_extracting' => 'Estrazione plugin: :name', 'plugin_version_none' => 'Nuovo plugin', + 'plugin_current_version' => 'Versione attuale', 'theme_new_install' => 'Installa nuovo tema.', 'theme_downloading' => 'Scaricamento tema: :name', 'theme_extracting' => 'Estrazione tema: :name', @@ -175,9 +234,26 @@ return [ 'label' => 'Nessun aggiornamento', 'help' => 'Nessun aggiornamento trovato.', ], + 'important_action' => [ + 'empty' => 'Seleziona azione', + 'confirm' => 'Conferma aggiornamento', + 'skip' => 'Salta questo plugin (solo questa volta)', + 'ignore' => 'Salta questo plugin (sempre)', + ], + 'important_action_required' => 'Azione richiesta', + 'important_view_guide' => 'Visualizza la guida per l\'aggiornamento', + 'important_alert_text' => 'Alcuni aggiornamenti necessitano della tua attenzione.', + 'details_title' => 'Dettagli plugin', + 'details_view_homepage' => 'Visualizza homepage', + 'details_readme' => 'Documentazione', + 'details_readme_missing' => 'Nessuna documentazione fornita.', + 'details_upgrades' => 'Guida all\'aggiornamento', + 'details_upgrades_missing' => 'Nessuna guida all\'aggiornamento fornita.', + 'details_current_version' => 'Versione attuale', + 'details_author' => 'Autore', ], 'server' => [ - 'connect_error' => 'Errore nella connessione al server.', + 'connect_error' => 'Errore durante la connessione al server.', 'response_not_found' => 'Il server degli aggiornamento non è stato trovato.', 'response_invalid' => 'Il server ha fornito una risposta non valida.', 'response_empty' => 'Il server ha fornito una risposta vuota.', @@ -199,7 +275,7 @@ return [ 'menu_label' => 'Registro eventi', 'menu_description' => 'VIsualizza i messaggi del registro di sistema con i relativi orari di registrazione e dettagli.', 'empty_link' => 'Svuota il registro eventi', - 'empty_loading' => 'Svuotamento del registro eventi...', + 'empty_loading' => 'Svuotamento del registro eventi in corso...', 'empty_success' => 'Il registro eventi è stato svuotato con successo.', 'return_link' => 'Ritorna al registro eventi', 'id' => 'ID', @@ -213,7 +289,7 @@ return [ 'menu_label' => 'Registro richieste', 'menu_description' => 'Visualizza richieste errate o reindirizzate, come Pagina non trovata (404).', 'empty_link' => 'Svuota il registro richieste', - 'empty_loading' => 'Svuotamento del registro richieste...', + 'empty_loading' => 'Svuotamento del registro richieste in corso...', 'empty_success' => 'Il registro richieste è stato svuotato con successo.', 'return_link' => 'Ritorna al registro richieste', 'id' => 'ID', @@ -221,14 +297,17 @@ return [ 'count' => 'Contatore', 'referer' => 'Provenienza', 'url' => 'URL', - 'status_code' => 'Stato', + 'status_code' => 'Codice di stato', ], 'permissions' => [ + 'name' => 'Sistema', 'manage_system_settings' => 'Gestisci impostazioni di sistema', - 'manage_software_updates' => 'Gestisci gli aggiornamenti', + 'manage_software_updates' => 'Gestisci aggiornamenti del software', + 'access_logs' => 'Visualizza registri di sistema', 'manage_mail_templates' => 'Gestisci i modelli e-mail', + 'manage_mail_settings' => 'Gestisci impostazioni e-mail', 'manage_other_administrators' => 'Gestisci altri amministratori', - 'view_the_dashboard' => 'Visualizza la dashboard - ' + 'view_the_dashboard' => 'Visualizza la dashboard', + 'manage_branding' => 'Personalizza il pannello di controllo' ] ]; diff --git a/modules/system/lang/it/validation.php b/modules/system/lang/it/validation.php index 0290d063d..69af90970 100644 --- a/modules/system/lang/it/validation.php +++ b/modules/system/lang/it/validation.php @@ -1,6 +1,6 @@ ":attribute può contenere solo lettere e numeri.", "array" => ":attribute deve essere un array.", "before" => ":attribute deve essere una data minore di :date.", - "between" => array( + "between" => [ "numeric" => ":attribute deve essere compreso tra :min e :max.", "file" => ":attribute deve essere compreso tra :min e :max kilobytes.", "string" => ":attribute deve essere compreso tra :min e :max caratteri.", "array" => ":attribute deve avere tra :min e :max elementi.", - ), + ], "confirmed" => "La conferma :attribute non corrisponde.", "date" => ":attribute non è una data valida.", "date_format" => ":attribute non corrisponde al formato :format.", @@ -39,19 +39,20 @@ return array( "in" => "Il valore di :attribute non è valido.", "integer" => ":attribute deve essere un numero interno.", "ip" => ":attribute deve essere un indirizzo IP valido.", - "max" => array( + "max" => [ "numeric" => ":attribute non può essere maggiore di :max.", "file" => ":attribute non può essere maggiore di :max kilobytes.", "string" => ":attribute non può essere maggiore di :max caratteri.", "array" => ":attribute non può avere più di :max elementi.", - ), + ], "mimes" => ":attribute deve essere un file di tipo: :values.", - "min" => array( + "extensions" => ":attribute deve avere un estensione: :values.", + "min" => [ "numeric" => ":attribute deve essere almeno :min.", "file" => ":attribute deve essere almeno :min kilobytes.", "string" => ":attribute deve essere almeno :min caratteri.", "array" => ":attribute deve avere almeno :min elementi.", - ), + ], "not_in" => "Il valore di :attribute non è valido.", "numeric" => ":attribute deve essere un numero.", "regex" => "Il formato di :attribute non è valido.", @@ -60,12 +61,12 @@ return array( "required_with" => "Il campo :attribute è obbligatorio quando :values è presente.", "required_without" => "Il campo :attribute è obbligatorio quando :values non è presente.", "same" => ":attribute e :other devono corrispondere.", - "size" => array( + "size" => [ "numeric" => ":attribute deve essere :size.", "file" => ":attribute deve essere :size kilobytes.", "string" => ":attribute deve essere :size caratteri.", "array" => ":attribute deve contenere :size elementi.", - ), + ], "unique" => ":attribute è già presente.", "url" => "Il formato di :attribute non è valido.", @@ -80,7 +81,7 @@ return array( | */ - 'custom' => array(), + 'custom' => [], /* |-------------------------------------------------------------------------- @@ -93,6 +94,6 @@ return array( | */ - 'attributes' => array(), + 'attributes' => [], -); +]; From 8547b8c1844763038652bb716acfbaf23031e86e Mon Sep 17 00:00:00 2001 From: Krzysztof Powelski Date: Wed, 5 Aug 2015 00:09:09 +0200 Subject: [PATCH 18/66] Improve Polish translations Fix indentation --- modules/backend/lang/pl/lang.php | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/modules/backend/lang/pl/lang.php b/modules/backend/lang/pl/lang.php index 2aeb610c8..b692adc9c 100644 --- a/modules/backend/lang/pl/lang.php +++ b/modules/backend/lang/pl/lang.php @@ -19,7 +19,7 @@ return [ 'help' => "Nie posiadasz odpowiednich uprawnień, aby zobaczyć tą stronę.", 'cms_link' => 'Powrót do panelu back-end' ], - 'invalid_token' => [ + 'invalid_token' => [ 'label' => 'Nieprawidłowy żeton bezpieczeństwa' ] ], @@ -82,14 +82,14 @@ return [ 'first_name' => 'Imię', 'last_name' => 'Nazwisko', 'full_name' => 'Pełna nazwa', - 'email' => 'Email', + 'email' => 'E-mail', 'groups' => 'Grupa', 'groups_comment' => 'Określ, do której grupy należy ten użytkownik', - 'avatar' => 'Avatar', + 'avatar' => 'Awatar', 'password' => 'Hasło', 'password_confirmation' => 'Potwierdź hasło', 'permissions' => 'Uprawnienia', - 'account' => 'Konto', + 'account' => 'Konto', 'superuser' => 'Super Użytkownik', 'superuser_comment' => 'Zaznacz to pole jeżeli chcesz zezwolić temu użytkownikowi na pełny dostęp do panelu.', 'send_invite' => 'Wyślij zaproszenie wiadomością email', @@ -111,7 +111,7 @@ return [ 'new' => 'Nowa grupa Administratorów', 'delete_confirm' => 'Jesteś pewny, że chcesz usunąć tą grupę administratorów?', 'return' => 'Wróć do listy grup', - 'users_count' => 'Użytkowników' + 'users_count' => 'Użytkowników' ], 'preferences' => [ 'not_authenticated' => 'Nie znaleziono uwierzytelnionego użytkownika, aby załadować lub zapisać ustawienia.' @@ -135,7 +135,7 @@ return [ 'setup_help' => 'Użyj pól wyboru, aby wybrać kolumny, które chcesz zobaczyć w liście. Możesz zmienić pozycję kolumny przeciągająć ją w dół lub w górę.', 'records_per_page' => 'Rekordy na stronę', 'records_per_page_help' => 'Wybierz liczbnę rekordów do wyświetlenia na stronę. Wyższa liczba rekordów na jedną stronę może zmniejszyć wydajność.', - 'delete_selected' => 'Usuń zaznaczone', + 'delete_selected' => 'Usuń zaznaczone', 'delete_selected_empty' => 'Nie wybrano elementów do usunięcia.', 'delete_selected_confirm' => 'Usunąć zaznaczone elementy?', 'delete_selected_success' => 'Pomyślnie usunięto zaznaczone elementy.' @@ -145,7 +145,7 @@ return [ 'help' => 'Dodaj tytuł oraz opis załącznika.', 'title_label' => 'Tytuł', 'description_label' => 'Opis', - 'default_prompt' => 'Kliknij %s lub upuść plik aby przesłać', + 'default_prompt' => 'Kliknij %s lub upuść plik aby przesłać', 'attachment_url' => 'URL załącznika', 'upload_file' => 'Prześlij plik', 'upload_error' => 'Błąd przesyłania', @@ -192,7 +192,7 @@ return [ 'confirm_tab_close' => 'Czy naprawdę chcesz zamknąć tą kartę? Wszystkie niezapisane zmiany zostaną utracone.', 'behavior_not_ready' => 'Zachowanie formularza nie zostało zainicjowane, sprawdź czy wywołałeś initForm() w swoim kontrolerze.', 'preview_no_files_message' => 'Brak wgranych plików.', - 'preview_no_record_message' => 'Break zaznaczonych elementów.', + 'preview_no_record_message' => 'Break zaznaczonych elementów.', 'select' => 'Zaznacz', 'select_all' => 'wszystkie', 'select_none' => 'żadne', @@ -203,7 +203,7 @@ return [ 'concurrency_file_changed_description' => "Plik, który edytujesz został zmieniony na dysku przez innego użytkownika. Możesz przeładować plik i stracić swoje zmiany lub nadpisać plik na dysku." ], 'relation' => [ - 'missing_config' => "Zachowanie relacji nie zawiera konfiguracji dla pola ':config'.", + 'missing_config' => "Zachowanie relacji nie zawiera konfiguracji dla pola ':config'.", 'missing_definition' => "Zachowanie relacji nie zawiera definicji dla pola ':field'.", 'missing_model' => "Zachowanie relacji użyte w klasie :class nie zawiera definicji modelu.", 'invalid_action_single' => "Ta akcja nie może zostać wykonana na pojedynczej zależności.", @@ -213,7 +213,7 @@ return [ 'add' => "Dodaj", 'add_selected' => "Dodaj zaznaczony", 'add_a_new' => "Dodaj nowy :name", - 'link_selected' => 'Dołącz zaznaczone', + 'link_selected' => 'Dołącz zaznaczone', 'link_a_new' => 'Dołącz nowy :name', 'cancel' => "Anuluj", 'close' => "Zamknij", @@ -229,7 +229,7 @@ return [ 'delete' => "Skasuj", 'delete_name' => "Skasuj :name", 'delete_confirm' => "Na pewno?", - 'link' => 'Dołącz', + 'link' => 'Dołącz', 'link_name' => 'Dołącz :name', 'unlink' => 'Odłącz', 'unlink_name' => 'Odłącz :name', @@ -252,8 +252,8 @@ return [ ], 'editor' => [ 'menu_label' => 'Ustawienia edytora kodu', - 'menu_description' => 'Personalizuj ustawienia edytora kodu, takie jak wielkość fontu oraz kolorostyka.', - 'font_size' => 'Wielkość fontu', + 'menu_description' => 'Personalizuj ustawienia edytora kodu, takie jak wielkość czcionki oraz kolorostyka.', + 'font_size' => 'Wielkość czcionki', 'tab_size' => 'Wielkość karty', 'use_hard_tabs' => 'Wcięcie tabulaturą', 'code_folding' => 'Zawijanie kodu', @@ -312,6 +312,6 @@ return [ 'email' => 'Email' ], 'filter' => [ - 'all' => 'wszystkie' + 'all' => 'wszystkie' ] ]; From fbb6a5f3f1cc2aece704f6ddb3b8e2597b20c0ed Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 8 Aug 2015 11:14:34 +1000 Subject: [PATCH 19/66] Recompile lang assets --- modules/system/assets/js/lang/lang.el.js | 2 +- modules/system/assets/js/lang/lang.zh-tw.js | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 modules/system/assets/js/lang/lang.zh-tw.js diff --git a/modules/system/assets/js/lang/lang.el.js b/modules/system/assets/js/lang/lang.el.js index 9865428c4..8928896e0 100644 --- a/modules/system/assets/js/lang/lang.el.js +++ b/modules/system/assets/js/lang/lang.el.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['el'] = $.extend( $.oc.langMessages['el'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7","quote":"\u03a0\u03b1\u03c1\u03ac\u03b8\u03b5\u03c3\u03b7","code":"\u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2","header1":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1","header2":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2","header3":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3","header4":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4","header5":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5","header6":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6","bold":"\u0388\u03bd\u03c4\u03bf\u03bd\u03b1","italic":"\u0399\u03c4\u03b1\u03bb\u03b9\u03ba\u03ac","unorderedlist":"\u039c\u03b7 \u03c4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","orderedlist":"\u03a4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","video":"\u0392\u03af\u03bd\u03c4\u03b5\u03bf","image":"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1","link":"\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2","horizontalrule":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1\u03c2 \u0393\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","fullscreen":"\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7","preview":"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7"},"mediamanager":{"insert_link":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03a3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_image":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_video":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0392\u03af\u03bd\u03c4\u03b5\u03bf \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_audio":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0389\u03c7\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","invalid_file_empty_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc.","invalid_file_single_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03bc\u03bf\u03bd\u03b1\u03b4\u03b9\u03ba\u03cc \u03b1\u03c1\u03c7\u03b5\u03af\u03bf."}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.zh-tw.js b/modules/system/assets/js/lang/lang.zh-tw.js new file mode 100644 index 000000000..9a89dcacc --- /dev/null +++ b/modules/system/assets/js/lang/lang.zh-tw.js @@ -0,0 +1,9 @@ +/* + * This file has been compiled from: /modules/system/lang/zh-tw/client.php + */ +if ($.oc === undefined) $.oc = {} +if ($.oc.langMessages === undefined) $.oc.langMessages = {} +$.oc.langMessages['zh-tw'] = $.extend( + $.oc.langMessages['zh-tw'] || {}, + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} +); \ No newline at end of file From 2cf1d707adb79d308f515dd3fe5dbccdb3337a47 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 8 Aug 2015 11:17:56 +1000 Subject: [PATCH 20/66] The API response for insert / insert+crop should be identical This is because the 'onInsert' callback is used for both actions, yet yielded different results causing breakages Fixes #1281 Also improved code readability in some places --- modules/cms/classes/MediaLibrary.php | 25 +++++--- modules/cms/classes/MediaLibraryItem.php | 4 +- modules/cms/widgets/MediaManager.php | 63 ++++++++++++++----- .../assets/js/mediamanager-browser-min.js | 9 ++- .../assets/js/mediamanager.imagecroppopup.js | 29 +++++---- .../mediamanager/assets/js/mediamanager.js | 9 +-- 6 files changed, 88 insertions(+), 51 deletions(-) diff --git a/modules/cms/classes/MediaLibrary.php b/modules/cms/classes/MediaLibrary.php index a7f87acba..576bc5cee 100644 --- a/modules/cms/classes/MediaLibrary.php +++ b/modules/cms/classes/MediaLibrary.php @@ -467,8 +467,9 @@ class MediaLibrary * S3 doesn't allow getting the last modified timestamp for folders, * so this feature is disabled - folders timestamp is always NULL. */ - $lastModified = $itemType == MediaLibraryItem::TYPE_FILE ? - $this->getStorageDisk()->lastModified($path) : null; + $lastModified = $itemType == MediaLibraryItem::TYPE_FILE + ? $this->getStorageDisk()->lastModified($path) + : null; /* * The folder size (number of items) doesn't respect filters. That @@ -476,8 +477,9 @@ class MediaLibrary * zero items for a folder that contains files not visible with a * currently applied filter. -ab */ - $size = $itemType == MediaLibraryItem::TYPE_FILE ? - $this->getStorageDisk()->size($path) : $this->getFolderItemCount($path); + $size = $itemType == MediaLibraryItem::TYPE_FILE + ? $this->getStorageDisk()->size($path) + : $this->getFolderItemCount($path); $publicUrl = $this->storagePath.$relativePath; return new MediaLibraryItem($relativePath, $size, $lastModified, $itemType, $publicUrl); @@ -492,12 +494,14 @@ class MediaLibrary { $folderItems = array_merge( $this->getStorageDisk()->files($path), - $this->getStorageDisk()->directories($path)); + $this->getStorageDisk()->directories($path) + ); $size = 0; foreach ($folderItems as $folderItem) { - if ($this->isVisible($folderItem)) + if ($this->isVisible($folderItem)) { $size++; + } } return $size; @@ -543,14 +547,14 @@ class MediaLibrary usort($itemList, function($a, $b) use ($sortBy) { switch ($sortBy) { - case self::SORT_BY_TITLE : return strcasecmp($a->path, $b->path); - case self::SORT_BY_SIZE : + case self::SORT_BY_TITLE: return strcasecmp($a->path, $b->path); + case self::SORT_BY_SIZE: if ($a->size > $b->size) return -1; return $a->size < $b->size ? 1 : 0; break; - case self::SORT_BY_MODIFIED : + case self::SORT_BY_MODIFIED: if ($a->lastModified > $b->lastModified) return -1; @@ -593,7 +597,8 @@ class MediaLibrary return $this->storageDisk; return $this->storageDisk = Storage::disk( - Config::get('cms.storage.media.disk', 'local')); + Config::get('cms.storage.media.disk', 'local') + ); } /** diff --git a/modules/cms/classes/MediaLibraryItem.php b/modules/cms/classes/MediaLibraryItem.php index fccab364e..3289bca2b 100644 --- a/modules/cms/classes/MediaLibraryItem.php +++ b/modules/cms/classes/MediaLibraryItem.php @@ -1,7 +1,7 @@ getCropSessionDirPath($cropSessionKey); $fullSessionDirectoryPath = temp_path($sessionDirectoryPath); - if (!File::isDirectory($fullSessionDirectoryPath)) + if (!File::isDirectory($fullSessionDirectoryPath)) { throw new SystemException('The image editing session is not found.'); + } - // Find the image on the disk and resize it + /* + * Find the image on the disk and resize it + */ $imagePath = $fullSessionDirectoryPath.'/'.$fileName; - if (!File::isFile($imagePath)) + if (!File::isFile($imagePath)) { throw new SystemException('The image is not found on the disk.'); + } $extension = pathinfo($originalFileName, PATHINFO_EXTENSION); - $targetImageName = basename($originalFileName, '.'.$extension).'-'.$selectionData['x'] - .'-'.$selectionData['y'].'-'.$selectionData['w'].'-'.$selectionData['h'].'-'; + $targetImageName = basename($originalFileName, '.'.$extension).'-' + .$selectionData['x'].'-' + .$selectionData['y'].'-' + .$selectionData['w'].'-' + .$selectionData['h'].'-'; + $targetImageName .= time(); $targetImageName .= '.'.$extension; $targetTmpPath = $fullSessionDirectoryPath.'/'.$targetImageName; + /* + * Crop the image, otherwise copy original to target destination. + */ if ($selectionData['w'] == 0 || $selectionData['h'] == 0) { - // If cropping is not required, copy the oiginal image to the target destination. File::copy($imagePath, $targetTmpPath); } else { $resizer = Resizer::open($imagePath); - - $resizer->resample($selectionData['x'], $selectionData['y'], $selectionData['w'], $selectionData['h'], $selectionData['w'], $selectionData['h']); + $resizer->resample( + $selectionData['x'], + $selectionData['y'], + $selectionData['w'], + $selectionData['h'], + $selectionData['w'], + $selectionData['h'] + ); $resizer->save($targetTmpPath, 95); } - // Upload the cropped file to the Library - $targetPath = $path.'cropped-images/'.$targetImageName; + /* + * Upload the cropped file to the Library + */ + $targetFolder = $path.'cropped-images'; + $targetPath = $targetFolder.'/'.$targetImageName; $library = MediaLibrary::instance(); - $library->put($targetPath, file_get_contents($targetTmpPath)); - return $library->getPathUrl($targetPath); + + return [ + 'publicUrl' => $library->getPathUrl($targetPath), + 'documentType' => MediaLibraryItem::FILE_TYPE_IMAGE, + 'itemType' => MediaLibraryItem::TYPE_FILE, + 'path' => $targetPath, + 'title' => $targetImageName, + 'folder' => $targetFolder + ]; } } \ No newline at end of file diff --git a/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js b/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js index b560c485b..1384cdb90 100644 --- a/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js +++ b/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js @@ -321,8 +321,7 @@ if(selectedItems[0].getAttribute('data-document-type')!=='image'){alert(this.opt return} var path=selectedItems[0].getAttribute('data-path') new $.oc.mediaManager.imageCropPopup(path,{alias:this.options.alias,onDone:callback})} -MediaManager.prototype.onImageCropped=function(imageUrl){var item={documentType:'image',publicUrl:imageUrl} -this.$el.trigger('popupcommand',['insert-cropped',item])} +MediaManager.prototype.onImageCropped=function(result){this.$el.trigger('popupcommand',['insert-cropped',result])} MediaManager.prototype.clearSearchTrackInputTimer=function(){if(this.searchTrackInputTimer===null) return clearTimeout(this.searchTrackInputTimer) @@ -573,8 +572,7 @@ MediaManagerImageCropPopup.prototype.cropAndInsert=function(){var data={img:$(th $.oc.stripeLoadIndicator.show() this.$popupElement.find('form').request(this.options.alias+'::onCropImage',{data:data}).always(function(){$.oc.stripeLoadIndicator.hide()}).done(this.proxy(this.onImageCropped))} MediaManagerImageCropPopup.prototype.onImageCropped=function(response){this.hide() -if(this.options.onDone!==undefined) -this.options.onDone(response.result)} +if(this.options.onDone!==undefined){this.options.onDone(response)}} MediaManagerImageCropPopup.prototype.showResizePopup=function(){this.$popupElement.find('button[data-command=resize]').popup({content:this.$popupElement.find('[data-control="resize-template"]').html(),zIndex:1220})} MediaManagerImageCropPopup.prototype.onResizePopupShown=function(ev,button,popup){var $popup=$(popup),$widthControl=$popup.find('input[name=width]'),$heightControl=$popup.find('input[name=height]'),imageWidth=this.fixDimensionValue(this.$popupElement.find('input[data-control=dimension-width]').val()),imageHeight=this.fixDimensionValue(this.$popupElement.find('input[data-control=dimension-height]').val()) $widthControl.val(imageWidth) @@ -635,7 +633,8 @@ this.initRulers() this.initJCrop()} MediaManagerImageCropPopup.prototype.onSelectionModeChanged=function(){var mode=this.getSelectionMode(),$widthInput=this.getWidthInput(),$heightInput=this.getHeightInput() if(mode==='normal'){$widthInput.attr('disabled','disabled') -$heightInput.attr('disabled','disabled')}else{$widthInput.removeAttr('disabled') +$heightInput.attr('disabled','disabled')} +else{$widthInput.removeAttr('disabled') $heightInput.removeAttr('disabled') $widthInput.val(this.fixDimensionValue($widthInput.val())) $heightInput.val(this.fixDimensionValue($heightInput.val()))} diff --git a/modules/cms/widgets/mediamanager/assets/js/mediamanager.imagecroppopup.js b/modules/cms/widgets/mediamanager/assets/js/mediamanager.imagecroppopup.js index 5f54ecf12..8cb94e21e 100644 --- a/modules/cms/widgets/mediamanager/assets/js/mediamanager.imagecroppopup.js +++ b/modules/cms/widgets/mediamanager/assets/js/mediamanager.imagecroppopup.js @@ -236,20 +236,24 @@ } $.oc.stripeLoadIndicator.show() - this.$popupElement.find('form').request( - this.options.alias+'::onCropImage', { + + this.$popupElement + .find('form') + .request(this.options.alias+'::onCropImage', { data: data - } - ).always(function() { - $.oc.stripeLoadIndicator.hide() - }).done(this.proxy(this.onImageCropped)) + }) + .always(function() { + $.oc.stripeLoadIndicator.hide() + }) + .done(this.proxy(this.onImageCropped)) } MediaManagerImageCropPopup.prototype.onImageCropped = function(response) { this.hide() - if (this.options.onDone !== undefined) - this.options.onDone(response.result) + if (this.options.onDone !== undefined) { + this.options.onDone(response) + } } MediaManagerImageCropPopup.prototype.showResizePopup = function() { @@ -409,7 +413,8 @@ if (mode === 'normal') { $widthInput.attr('disabled', 'disabled') $heightInput.attr('disabled', 'disabled') - } else { + } + else { $widthInput.removeAttr('disabled') $heightInput.removeAttr('disabled') @@ -449,13 +454,13 @@ var command = $(ev.currentTarget).data('command') switch (command) { - case 'insert' : + case 'insert': this.cropAndInsert() break - case 'resize' : + case 'resize': this.showResizePopup() break - case 'undo-resizing' : + case 'undo-resizing': this.undoResizing() break } diff --git a/modules/cms/widgets/mediamanager/assets/js/mediamanager.js b/modules/cms/widgets/mediamanager/assets/js/mediamanager.js index 994a2a927..bb37dab30 100644 --- a/modules/cms/widgets/mediamanager/assets/js/mediamanager.js +++ b/modules/cms/widgets/mediamanager/assets/js/mediamanager.js @@ -810,13 +810,8 @@ }) } - MediaManager.prototype.onImageCropped = function(imageUrl) { - var item = { - documentType: 'image', - publicUrl: imageUrl - } - - this.$el.trigger('popupcommand', ['insert-cropped', item]) + MediaManager.prototype.onImageCropped = function(result) { + this.$el.trigger('popupcommand', ['insert-cropped', result]) } // From c139a324d181213bde724c4f00cd4eac1cc1e3a2 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 8 Aug 2015 11:39:48 +1000 Subject: [PATCH 21/66] Tidy up code - refs #1318 --- modules/system/assets/ui/js/tab.js | 24 ++++++++++++++---------- modules/system/assets/ui/storm-min.js | 14 +++++++------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/modules/system/assets/ui/js/tab.js b/modules/system/assets/ui/js/tab.js index cf3ef60d3..1c8fb85b0 100644 --- a/modules/system/assets/ui/js/tab.js +++ b/modules/system/assets/ui/js/tab.js @@ -86,18 +86,25 @@ tabIndex = $tabs.index(li), time = new Date().getTime(), targetId = this.tabId + '-tab-' + tabIndex + time, - $a = $('a', li) + $anchor = $('a', li) - $a.attr('data-target', '#'+targetId).attr('data-toggle', 'tab') - if (!$a.attr('title')) - $a.attr('title', $a.text()) + $anchor + .data('target', '#'+targetId) + .attr('data-target', '#'+targetId) + .attr('data-toggle', 'tab') - var html = $a.html() + if (!$anchor.attr('title')) + $anchor.attr('title', $anchor.text()) - $a.html('') - $a.append($('').append($('').html(html))) + var html = $anchor.html() + + $anchor.html('') + $anchor + .append($('') + .append($('').html(html))) var pane = $('> .tab-pane', this.$pagesContainer).eq(tabIndex).attr('id', targetId) + $(li).append($('×').click(function(){ $(this).trigger('close.oc.tab') return false @@ -158,9 +165,6 @@ this.initTab($tab) - $link.data('title', $link.attr('data-title')) - $link.data('target', $link.attr('data-target')) - this.updateClasses() } diff --git a/modules/system/assets/ui/storm-min.js b/modules/system/assets/ui/storm-min.js index 2a347942d..dec0d1b98 100644 --- a/modules/system/assets/ui/storm-min.js +++ b/modules/system/assets/ui/storm-min.js @@ -3811,13 +3811,13 @@ if(this.options.slidable){this.$pagesContainer.touchwipe({wipeRight:function(){s this.$tabsContainer.toolbar({scrollClassContainer:this.$el}) this.updateClasses()} Tab.prototype.initTab=function(li){var -$tabs=$('>li',this.$tabsContainer),tabIndex=$tabs.index(li),time=new Date().getTime(),targetId=this.tabId+'-tab-'+tabIndex+time,$a=$('a',li) -$a.attr('data-target','#'+targetId).attr('data-toggle','tab') -if(!$a.attr('title')) -$a.attr('title',$a.text()) -var html=$a.html() -$a.html('') -$a.append($('').append($('').html(html))) +$tabs=$('>li',this.$tabsContainer),tabIndex=$tabs.index(li),time=new Date().getTime(),targetId=this.tabId+'-tab-'+tabIndex+time,$anchor=$('a',li) +$anchor.data('target','#'+targetId).attr('data-target','#'+targetId).attr('data-toggle','tab') +if(!$anchor.attr('title')) +$anchor.attr('title',$anchor.text()) +var html=$anchor.html() +$anchor.html('') +$anchor.append($('').append($('').html(html))) var pane=$('> .tab-pane',this.$pagesContainer).eq(tabIndex).attr('id',targetId) $(li).append($('×').click(function(){$(this).trigger('close.oc.tab') return false})) From 904db06f5ed09db910aaec643023faa90e28e5d5 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 8 Aug 2015 12:03:20 +1000 Subject: [PATCH 22/66] Write tests that verify truth of #1272 Content files with .txt extensions should not be interpreted as HTML --- .../themes/test/content/html-content.htm | 1 + .../themes/test/content/markdown-content.md | 1 + .../themes/test/content/text-content.txt | 1 + tests/unit/cms/classes/ContentTest.php | 36 +++++++++++++++++++ 4 files changed, 39 insertions(+) create mode 100644 tests/fixtures/themes/test/content/html-content.htm create mode 100644 tests/fixtures/themes/test/content/markdown-content.md create mode 100644 tests/fixtures/themes/test/content/text-content.txt create mode 100644 tests/unit/cms/classes/ContentTest.php diff --git a/tests/fixtures/themes/test/content/html-content.htm b/tests/fixtures/themes/test/content/html-content.htm new file mode 100644 index 000000000..9fca008a9 --- /dev/null +++ b/tests/fixtures/themes/test/content/html-content.htm @@ -0,0 +1 @@ +Stephen Saucier changed his profile picture — 7 hrs ago \ No newline at end of file diff --git a/tests/fixtures/themes/test/content/markdown-content.md b/tests/fixtures/themes/test/content/markdown-content.md new file mode 100644 index 000000000..58429128e --- /dev/null +++ b/tests/fixtures/themes/test/content/markdown-content.md @@ -0,0 +1 @@ +Be brave, be **bold**, live *italic* \ No newline at end of file diff --git a/tests/fixtures/themes/test/content/text-content.txt b/tests/fixtures/themes/test/content/text-content.txt new file mode 100644 index 000000000..c055462e5 --- /dev/null +++ b/tests/fixtures/themes/test/content/text-content.txt @@ -0,0 +1 @@ +Pen is than the sword, HTML is than the text \ No newline at end of file diff --git a/tests/unit/cms/classes/ContentTest.php b/tests/unit/cms/classes/ContentTest.php new file mode 100644 index 000000000..05eac5e82 --- /dev/null +++ b/tests/unit/cms/classes/ContentTest.php @@ -0,0 +1,36 @@ +assertEquals('Be brave, be **bold**, live *italic*', $content->markup); + $this->assertEquals('

Be brave, be bold, live italic

', $content->parsedMarkup); + } + + public function testTextContent() + { + $theme = Theme::load('test'); + $content = Content::load($theme, 'text-content.txt'); + + $this->assertEquals('Pen is than the sword, HTML is than the text', $content->markup); + $this->assertEquals('Pen is <mightier> than the sword, HTML is <richer> than the text', $content->parsedMarkup); + } + + public function testHtmlContent() + { + $theme = Theme::load('test'); + $content = Content::load($theme, 'html-content.htm'); + + $this->assertEquals('Stephen Saucier changed his profile picture — 7 hrs ago', $content->markup); + $this->assertEquals('Stephen Saucier changed his profile picture — 7 hrs ago', $content->parsedMarkup); + } + +} \ No newline at end of file From 5c3dd4f145a6a670a3d6ac0646acb37d41c93993 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 8 Aug 2015 12:28:15 +1000 Subject: [PATCH 23/66] Add tests that verify the truth of #1343 Plugins should be able to call NavigationManager::addSideMenuItems() without error --- .../backend/classes/NavigationManagerTest.php | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/tests/unit/backend/classes/NavigationManagerTest.php b/tests/unit/backend/classes/NavigationManagerTest.php index 2b5be5769..416972f3d 100644 --- a/tests/unit/backend/classes/NavigationManagerTest.php +++ b/tests/unit/backend/classes/NavigationManagerTest.php @@ -59,7 +59,61 @@ class NavigationManagerTest extends TestCase $manager->setContext('October.Tester', 'blog'); $items = $manager->listSideMenuItems(); + $this->assertInternalType('array', $items); $this->assertArrayHasKey('posts', $items); $this->assertArrayHasKey('categories', $items); + + $this->assertInternalType('object', $items['posts']); + $this->assertObjectHasAttribute('code', $items['posts']); + $this->assertObjectHasAttribute('owner', $items['posts']); + $this->assertEquals('posts', $items['posts']->code); + $this->assertEquals('October.Tester', $items['posts']->owner); + + $this->assertObjectHasAttribute('permissions', $items['posts']); + $this->assertInternalType('array', $items['posts']->permissions); + $this->assertCount(1, $items['posts']->permissions); + + $this->assertObjectHasAttribute('order', $items['posts']); + $this->assertObjectHasAttribute('order', $items['categories']); + $this->assertEquals(100, $items['posts']->order); + $this->assertEquals(200, $items['categories']->order); + } + + public function testAddSideMenuItems() + { + $manager = NavigationManager::instance(); + + $manager->addSideMenuItems('October.Tester', 'blog', [ + 'foo' => [ + 'label' => 'Bar', + 'icon' => 'icon-derp', + 'url' => 'http://google.com', + 'permissions' => [ + 'october.tester.access_foo', + 'october.tester.access_bar' + ] + ] + ]); + + $manager->setContext('October.Tester', 'blog'); + $items = $manager->listSideMenuItems(); + + $this->assertInternalType('array', $items); + $this->assertArrayHasKey('foo', $items); + + $this->assertInternalType('object', $items['foo']); + $this->assertObjectHasAttribute('code', $items['foo']); + $this->assertObjectHasAttribute('owner', $items['foo']); + $this->assertObjectHasAttribute('order', $items['foo']); + + $this->assertEquals(-1, $items['foo']->order); + $this->assertEquals('foo', $items['foo']->code); + $this->assertEquals('October.Tester', $items['foo']->owner); + + $this->assertObjectHasAttribute('permissions', $items['foo']); + $this->assertInternalType('array', $items['foo']->permissions); + $this->assertCount(2, $items['foo']->permissions); + $this->assertContains('october.tester.access_foo', $items['foo']->permissions); + $this->assertContains('october.tester.access_bar', $items['foo']->permissions); } } \ No newline at end of file From 0c8e813029ccf0c86f40e2dce444c1b2234adcbd Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 8 Aug 2015 15:35:22 +1000 Subject: [PATCH 24/66] Create plugin unit test case ^- inspired by keios/oc-plugin-testsuite package --- composer.json | 3 +- tests/PluginTestCase.php | 193 +++++++++++++++++++++++++++++++++++++++ tests/README.md | 51 +++++++++++ 3 files changed, 246 insertions(+), 1 deletion(-) create mode 100644 tests/PluginTestCase.php diff --git a/composer.json b/composer.json index 689a1a371..1f4983e48 100644 --- a/composer.json +++ b/composer.json @@ -39,7 +39,8 @@ "autoload-dev": { "classmap": [ "tests/TestCase.php", - "tests/UiTestCase.php" + "tests/UiTestCase.php", + "tests/PluginTestCase.php" ] }, "scripts": { diff --git a/tests/PluginTestCase.php b/tests/PluginTestCase.php new file mode 100644 index 000000000..baaa85dd9 --- /dev/null +++ b/tests/PluginTestCase.php @@ -0,0 +1,193 @@ +make('Illuminate\Contracts\Console\Kernel')->bootstrap(); + + $app['cache']->setDefaultDriver('array'); + $app->setLocale('en'); + + /* + * Store database in memory + */ + $app['config']->set('database.default', 'sqlite'); + $app['config']->set('database.connections.sqlite', [ + 'driver' => 'sqlite', + 'database' => ':memory:', + 'prefix' => '' + ]); + + /* + * Modify the plugin path away from the test context + */ + $app->setPluginsPath(realpath(base_path().Config::get('cms.pluginsPath'))); + + return $app; + } + + /** + * Perform test case set up. + * @return void + */ + public function setUp() + { + /* + * Create application instance + */ + parent::setUp(); + + /* + * Rebind Laravel container in October Singletons + */ + UpdateManager::instance()->bindContainerObjects(); + PluginManager::instance()->bindContainerObjects(); + + /* + * Ensure system is up to date + */ + $this->runOctoberUpCommand(); + + /* + * Detect plugin from test and autoload it + */ + $this->pluginTestCaseLoadedPlugins = []; + $pluginCode = $this->guessPluginCodeFromTest(); + + if ($pluginCode !== false) { + $this->runPluginRefreshCommand($pluginCode, false); + } + + /* + * Disable mailer + */ + Mail::pretend(); + } + + /** + * Flush event listeners and collect garbage. + * @return void + */ + public function tearDown() + { + $this->flushModelEventListeners(); + parent::tearDown(); + unset($this->app); + } + + /** + * Migrate database using october:up command. + * @return void + */ + protected function runOctoberUpCommand() + { + Artisan::call('october:up'); + } + + /** + * Since the test environment has loaded all the test plugins + * natively, this method will ensure the desired plugin is + * loaded in the system before proceeding to migrate it. + * @return void + */ + protected function runPluginRefreshCommand($code, $throwException = true) + { + if (!preg_match('/^[\w+]*\.[\w+]*$/', $code)) { + if (!$throwException) return; + throw new Exception(sprintf('Invalid plugin code: "%s"', $code)); + } + + $manager = PluginManager::instance(); + $plugin = $manager->findByIdentifier($code); + + /* + * First time seeing this plugin, load it up + */ + if (!$plugin) { + $namespace = '\\'.str_replace('.', '\\', strtolower($code)); + $path = array_get($manager->getPluginNamespaces(), $namespace); + + if (!$path) { + if (!$throwException) return; + throw new Exception(sprintf('Unable to find plugin with code: "%s"', $code)); + } + + $plugin = $manager->loadPlugin($namespace, $path); + } + + /* + * Execute the command + */ + Artisan::call('plugin:refresh', ['name' => $code]); + + /* + * Spin over dependencies and refresh them too + */ + $this->pluginTestCaseLoadedPlugins[$code] = $plugin; + + if (!empty($plugin->require)) { + foreach ((array) $plugin->require as $dependency) { + + if (isset($this->pluginTestCaseLoadedPlugins[$code])) continue; + + $this->runPluginRefreshCommand($dependency); + } + } + } + + /** + * The models in October use a static property to store their events, these + * will need to be targeted and reset ready for a new test cycle. + * Pivot models are an exception since they are internally managed. + * @return void + */ + protected function flushModelEventListeners() + { + foreach (get_declared_classes() as $class) { + + if (!is_subclass_of($class, 'October\Rain\Database\Model')) continue; + if (is_subclass_of($class, 'October\Rain\Database\Pivot')) continue; + if ($class == 'October\Rain\Database\Pivot') continue; + + $class::flushEventListeners(); + } + + ActiveRecord::flushEventListeners(); + } + + /** + * Locates the plugin code based on the test file location. + * @return string|bool + */ + protected function guessPluginCodeFromTest() + { + $reflect = new ReflectionClass($this); + $path = $reflect->getFilename(); + $basePath = plugins_path(); + + $result = false; + + if (strpos($path, $basePath) === 0) { + $result = ltrim(str_replace('\\', '/', substr($path, strlen($basePath))), '/'); + $result = implode('.', array_slice(explode('/', $result), 0, 2)); + } + + return $result; + } +} \ No newline at end of file diff --git a/tests/README.md b/tests/README.md index fc5299f07..cde7a2c5e 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,3 +1,54 @@ +# Plugin testing + +Plugins can be tested by creating a creating a file called `phpunit.xml` in the base directory with the following content, for example, in a file **/plugins/acme/blog/phpunit.xml**: + + + + + + ./tests + + + + + + + + + +Then a **tests/** directory can be created to contain the test classes. The file structure should mimic the base directory with classes having a `Test` suffix. Using a namespace for the class is also recommended. + + 'Hi!']); + $this->assertEquals(1, $post->id); + } + } + +The test class should extend the base class `PluginTestCase` and this is a special class that will set up the October database stored in memory, as part of the `setup()` method. It will also refresh the plugin being testing, along with any of the defined dependencies in the plugin registration file. This is the equivalent of running the following before each test: + + php artisan october:up + php artisan plugin:refresh Acme.Blog + +# System testing + ### Unit tests Unit tests can be performed by running `phpunit` in the root directory or inside `/tests/unit`. From e97e6804f2ff51e3567806499a0026dd7c4d8395 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 8 Aug 2015 15:37:08 +1000 Subject: [PATCH 25/66] Minor --- tests/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/README.md b/tests/README.md index cde7a2c5e..d5e24ef1e 100644 --- a/tests/README.md +++ b/tests/README.md @@ -33,7 +33,7 @@ Then a **tests/** directory can be created to contain the test classes. The file use Acme\Blog\Models\Post; use PluginTestCase; - class MessageTest extends PluginTestCase + class PostTest extends PluginTestCase { public function testCreateFirstPost() { From 364809a38ee7c8358172692726bc2e09f3779f2e Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 8 Aug 2015 15:45:32 +1000 Subject: [PATCH 26/66] Add instructions for running phpunit --- tests/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/README.md b/tests/README.md index d5e24ef1e..f04d5fb2b 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,5 +1,9 @@ # Plugin testing +Plugin unit tests can be performed by running `phpunit` in the base plugin directory. + +### Creating plugin tests + Plugins can be tested by creating a creating a file called `phpunit.xml` in the base directory with the following content, for example, in a file **/plugins/acme/blog/phpunit.xml**: @@ -42,10 +46,11 @@ Then a **tests/** directory can be created to contain the test classes. The file } } -The test class should extend the base class `PluginTestCase` and this is a special class that will set up the October database stored in memory, as part of the `setup()` method. It will also refresh the plugin being testing, along with any of the defined dependencies in the plugin registration file. This is the equivalent of running the following before each test: +The test class should extend the base class `PluginTestCase` and this is a special class that will set up the October database stored in memory, as part of the `setUp()` method. It will also refresh the plugin being testing, along with any of the defined dependencies in the plugin registration file. This is the equivalent of running the following before each test: php artisan october:up php artisan plugin:refresh Acme.Blog + [php artisan plugin:refresh , ...] # System testing From 871f82458212dc40514d90bffd50d5dae89ab694 Mon Sep 17 00:00:00 2001 From: jofrysutanto Date: Sat, 8 Aug 2015 22:52:21 +1000 Subject: [PATCH 27/66] Show mediamanager sidebar preview when "Go up" is selected. Show more informative sidebar information when "Go up' is selected, instead of blank file information with 'null' public url. --- .../widgets/mediamanager/assets/css/mediamanager.css | 2 +- .../assets/js/mediamanager-browser-min.js | 6 ++++-- .../widgets/mediamanager/assets/js/mediamanager.js | 11 ++++++++--- .../mediamanager/assets/less/mediamanager.less | 2 +- .../mediamanager/partials/_item-sidebar-preview.htm | 9 +++++++++ 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/modules/cms/widgets/mediamanager/assets/css/mediamanager.css b/modules/cms/widgets/mediamanager/assets/css/mediamanager.css index 1786fc0d5..b5192d8ae 100644 --- a/modules/cms/widgets/mediamanager/assets/css/mediamanager.css +++ b/modules/cms/widgets/mediamanager/assets/css/mediamanager.css @@ -54,7 +54,7 @@ div[data-control="media-manager"] .sidebar-image-placeholder-container{display:t div[data-control="media-manager"] .sidebar-image-placeholder{display:table-cell;height:225px;position:relative;vertical-align:middle;text-align:center;border-bottom:1px solid #ecf0f1} div[data-control="media-manager"] .sidebar-image-placeholder[data-loading]{background:#ecf0f1} div[data-control="media-manager"] .sidebar-image-placeholder[data-loading]:after{background-image:url('../../../../../../modules/system/assets/ui/images/loader-transparent.svg');background-position:50% 50%;content:' ';-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;background-size:62px 62px;position:absolute;width:62px;height:62px;top:50%;left:50%;margin-top:-31px;margin-left:-31px} -div[data-control="media-manager"] .sidebar-image-placeholder i.icon-chain-broken,div[data-control="media-manager"] .sidebar-image-placeholder i.icon-crop,div[data-control="media-manager"] .sidebar-image-placeholder i.icon-asterisk{color:#bdc3c7;font-size:55px} +div[data-control="media-manager"] .sidebar-image-placeholder i.icon-chain-broken,div[data-control="media-manager"] .sidebar-image-placeholder i.icon-crop,div[data-control="media-manager"] .sidebar-image-placeholder i.icon-asterisk,div[data-control="media-manager"] .sidebar-image-placeholder i.icon-level-up{color:#bdc3c7;font-size:55px} div[data-control="media-manager"] .sidebar-image-placeholder.no-border{border-bottom:none} div[data-control="media-manager"] .sidebar-image-placeholder p{font-size:12px;margin:10px;line-height:160%;color:#bdc3c7;margin-top:25px} div[data-control="media-manager"] .list-container{position:relative;z-index:100} diff --git a/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js b/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js index b560c485b..49be8ccc6 100644 --- a/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js +++ b/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js @@ -185,7 +185,7 @@ this.$form.request(this.options.alias+'::onSetSidebarVisible',{data:{visible:(is MediaManager.prototype.updateSidebarMediaPreview=function(items){var previewPanel=this.sidebarPreviewElement,previewContainer=previewPanel.querySelector('[data-control="media-preview-container"]'),template='' for(var i=0,len=previewContainer.children.length;i + + \ No newline at end of file From b5577eed25a149a00b26c7785f8ad3d35b41e961 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20GAULIN?= Date: Sat, 8 Aug 2015 21:59:19 +0200 Subject: [PATCH 28/66] Disable SweetAlert forced focus when a Bootstrap modal is already open (which was causing infinite loop). Bootstrap is enforcing focus on it's modal box, sweet alert too. Focus on sweet alert buttons is not really important, keyboard actions are still available. --- modules/backend/assets/vendor/sweet-alert/sweet-alert.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/backend/assets/vendor/sweet-alert/sweet-alert.js b/modules/backend/assets/vendor/sweet-alert/sweet-alert.js index 9ca8e0f97..7174ac61d 100644 --- a/modules/backend/assets/vendor/sweet-alert/sweet-alert.js +++ b/modules/backend/assets/vendor/sweet-alert/sweet-alert.js @@ -386,7 +386,13 @@ function handleOnBlur(e) { var $targetElement = e.target || e.srcElement, $focusElement = e.relatedTarget, - modalIsVisible = hasClass(modal, 'visible'); + modalIsVisible = hasClass(modal, 'visible'), + bootstrapModalIsVisible = document.querySelector('.control-popup.modal') || false; + + if(bootstrapModalIsVisible) { + // Bootstrap will enforce focus on the existing model, so don't do anything here to prevent infinite loop + return; + } if (modalIsVisible) { var btnIndex = -1; // Find the button - note, this is a nodelist, not an array. From e65f5c3c0432f28334af0117a91c494e42867282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20GAULIN?= Date: Sun, 9 Aug 2015 20:21:41 +0200 Subject: [PATCH 29/66] Ensure versions history are retrieved by id - Refs issue #1356 --- modules/system/classes/VersionManager.php | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/modules/system/classes/VersionManager.php b/modules/system/classes/VersionManager.php index 13b34e973..d00382f9a 100644 --- a/modules/system/classes/VersionManager.php +++ b/modules/system/classes/VersionManager.php @@ -390,13 +390,8 @@ class VersionManager return $this->databaseHistory[$code]; } - $historyInfo = Db::table('system_plugin_history')->where('code', $code)->get(); + $historyInfo = Db::table('system_plugin_history')->where('code', $code)->orderBy('id','ASC')->get(); - if (is_array($historyInfo)) { - usort($historyInfo, function ($a, $b) { - return version_compare($a->version, $b->version); - }); - } return $this->databaseHistory[$code] = $historyInfo; } From fe4e9b005ff9490df4285ecc28a2299e40310016 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Thu, 13 Aug 2015 21:07:10 +1000 Subject: [PATCH 30/66] Fix toolbar examples --- modules/system/assets/ui/docs/toolbar.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/modules/system/assets/ui/docs/toolbar.md b/modules/system/assets/ui/docs/toolbar.md index 18bb78b7f..2fbd0635e 100644 --- a/modules/system/assets/ui/docs/toolbar.md +++ b/modules/system/assets/ui/docs/toolbar.md @@ -1,10 +1,8 @@ # Toolbar -Toolbar +A scrollable set of buttons aligned to the left with a fixed right section. -# Example - -

Basic toolbar

+### Basic toolbar
@@ -33,7 +31,7 @@ Toolbar
-

Editor toolbar

+### Editor toolbar
From b8bc6c6d99a7022a2cfde6dce1a60a0000177a3f Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 15 Aug 2015 09:17:30 +1000 Subject: [PATCH 31/66] Allow the "go up" link to be selected with the mouse - Refs #1360 This will disable the move and delete buttons --- .../assets/js/mediamanager-browser-min.js | 27 ++++---- .../mediamanager/assets/js/mediamanager.js | 67 +++++++++++++------ 2 files changed, 58 insertions(+), 36 deletions(-) diff --git a/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js b/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js index 5b9417a99..592e90f2a 100644 --- a/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js +++ b/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js @@ -113,19 +113,20 @@ return clearTimeout(this.selectTimer) this.selectTimer=null} MediaManager.prototype.selectItem=function(node,expandSelection){if(!expandSelection){var items=this.$el.get(0).querySelectorAll('[data-type="media-item"].selected') -for(var i=0,len=items.length;i Date: Sat, 15 Aug 2015 09:34:29 +1000 Subject: [PATCH 32/66] Recompile assets for #1362 --- modules/backend/assets/js/october-min.js | 3 ++- modules/backend/assets/vendor/sweet-alert/sweet-alert.js | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/backend/assets/js/october-min.js b/modules/backend/assets/js/october-min.js index 28ca8f9eb..b80fe4910 100644 --- a/modules/backend/assets/js/october-min.js +++ b/modules/backend/assets/js/october-min.js @@ -432,7 +432,8 @@ var $targetElement=e.target||e.srcElement;var btnIndex=-1;for(var i=0;i<$modalBu if(keyCode===9){if(btnIndex===-1){$targetElement=$okButton;}else{if(btnIndex===$modalButtons.length-1){$targetElement=$modalButtons[0];}else{$targetElement=$modalButtons[btnIndex+1];}} stopEventPropagation(e);$targetElement.focus();}else{if(keyCode===13||keyCode===32){if(btnIndex===-1){$targetElement=$okButton;}else{$targetElement=undefined;}}else if(keyCode===27&&!($cancelButton.hidden||$cancelButton.style.display==='none')){$targetElement=$cancelButton;}else{$targetElement=undefined;} if($targetElement!==undefined){fireClick($targetElement,e);}}} -previousWindowKeyDown=window.onkeydown;window.onkeydown=handleKeyDown;function handleOnBlur(e){var $targetElement=e.target||e.srcElement,$focusElement=e.relatedTarget,modalIsVisible=hasClass(modal,'visible');if(modalIsVisible){var btnIndex=-1;if($focusElement!==null){for(var i=0;i<$modalButtons.length;i++){if($focusElement===$modalButtons[i]){btnIndex=i;break;}} +previousWindowKeyDown=window.onkeydown;window.onkeydown=handleKeyDown;function handleOnBlur(e){var $targetElement=e.target||e.srcElement,$focusElement=e.relatedTarget,modalIsVisible=hasClass(modal,'visible'),bootstrapModalIsVisible=document.querySelector('.control-popup.modal')||false;if(bootstrapModalIsVisible){return;} +if(modalIsVisible){var btnIndex=-1;if($focusElement!==null){for(var i=0;i<$modalButtons.length;i++){if($focusElement===$modalButtons[i]){btnIndex=i;break;}} if(btnIndex===-1){$targetElement.focus();}}else{lastFocusedButton=$targetElement;}}} $okButton.onblur=handleOnBlur;$cancelButton.onblur=handleOnBlur;window.onfocus=function(){window.setTimeout(function(){if(lastFocusedButton!==undefined){lastFocusedButton.focus();lastFocusedButton=undefined;}},0);};};window.swal.setDefaults=function(userParams){if(!userParams){throw new Error('userParams is required');} if(typeof userParams!=='object'){throw new Error('userParams has to be a object');} diff --git a/modules/backend/assets/vendor/sweet-alert/sweet-alert.js b/modules/backend/assets/vendor/sweet-alert/sweet-alert.js index 7174ac61d..7fff82223 100644 --- a/modules/backend/assets/vendor/sweet-alert/sweet-alert.js +++ b/modules/backend/assets/vendor/sweet-alert/sweet-alert.js @@ -389,8 +389,9 @@ modalIsVisible = hasClass(modal, 'visible'), bootstrapModalIsVisible = document.querySelector('.control-popup.modal') || false; - if(bootstrapModalIsVisible) { - // Bootstrap will enforce focus on the existing model, so don't do anything here to prevent infinite loop + if (bootstrapModalIsVisible) { + // Bootstrap will enforce focus on the existing model, so don't + // do anything here to prevent infinite loop. return; } From 1c5ba4438b82298da626f90c8cf7a7ef27dd7237 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20M?= Date: Sat, 8 Aug 2015 17:49:40 +0200 Subject: [PATCH 33/66] Update of FRENCH translation for OctoberCMS Update of FRENCH translation for OctoberCMS Update of FRENCH translation for OctoberCMS Update of FRENCH translation for OctoberCMS --- modules/backend/lang/fr/lang.php | 19 +++++++++-- modules/system/lang/fr/client.php | 49 +++++++++++++++++++++++++++ modules/system/lang/fr/lang.php | 2 ++ modules/system/lang/fr/validation.php | 3 +- 4 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 modules/system/lang/fr/client.php diff --git a/modules/backend/lang/fr/lang.php b/modules/backend/lang/fr/lang.php index c1e1302c3..47a6d764a 100644 --- a/modules/backend/lang/fr/lang.php +++ b/modules/backend/lang/fr/lang.php @@ -19,6 +19,9 @@ return [ 'help' => 'Vous n’avez pas l’autorisation de consulter cette page.', 'cms_link' => 'Retour à l’administration' ], + 'invalid_token' => [ + 'label' => 'La clé de sécurité est invalide' + ] ], 'partial' => [ 'not_found_name' => 'Le nom partiel ":name" est introuvable.' @@ -95,6 +98,7 @@ return [ 'allow' => 'Autoriser', 'inherit' => 'Hériter', 'deny' => 'Interdire', + 'account' => 'Compte', 'group' => [ 'name' => 'Groupe', 'name_field' => 'Nom', @@ -140,7 +144,13 @@ return [ 'attachment' => 'Pièce jointe', 'help' => 'Ajouter un titre et une description pour cette pièce jointe.', 'title_label' => 'Titre', - 'description_label' => 'Description' + 'description_label' => 'Description', + 'default_prompt' => 'Cliquer sur %s ou déposer un fichier ici pour le télécharger', + 'attachment_url' => 'Adresse URL du fichier joint', + 'upload_file' => 'Télécharger le fichier', + 'upload_error' => 'Erreur durant le téléchargement', + 'remove_confirm' => 'Confirmer l’action ?', + 'remove_file' => 'Supprimer le fichier', ], 'form' => [ 'create_title' => 'Nouveau :name', @@ -177,11 +187,13 @@ return [ 'close' => 'Fermer', 'confirm' => 'Confirmer', 'reload' => 'Recharger', + 'complete' => 'Complet', 'ok' => 'OK', 'or' => 'ou', 'confirm_tab_close' => 'Confirmer la fermeture de cet onglet ? Les modifications réalisées seront perdues.', 'behavior_not_ready' => 'Le formulaire n’a pas encore été initialisé, vérifier que la méthode d’appel de initForm() a été soumise au contrôleur.', 'preview_no_files_message' => 'Les fichiers ne sont pas envoyés.', + 'preview_no_record_message' => 'Il n’y a aucun enregistrement sélectionné.', 'select' => 'Sélectionner', 'select_all' => 'tout', 'select_none' => 'aucun', @@ -242,12 +254,13 @@ return [ 'editor' => [ 'menu_label' => 'Préférences de l’éditeur de code', 'menu_description' => 'Personnaliser la configuration de l’éditeur de code, telle que la taille de la police ou la coloration syntaxique.', - 'font_size' => 'Taille de police', - 'tab_size' => 'Taille de tabulation', + 'font_size' => 'Taille de la police', + 'tab_size' => 'Taille de la tabulation', 'use_hard_tabs' => 'Indentation par tabulation', 'code_folding' => 'Masquage du code', 'word_wrap' => 'Retour à la ligne', 'highlight_active_line' => 'Sélectionner la ligne active', + 'auto_closing' => 'Fermer Automatiquement les tags et les caractères spéciaux', 'show_invisibles' => 'Afficher les caractères invisibles', 'show_gutter' => 'Afficher les numéros de ligne', 'theme' => 'Coloration syntaxique' diff --git a/modules/system/lang/fr/client.php b/modules/system/lang/fr/client.php new file mode 100644 index 000000000..a8565904e --- /dev/null +++ b/modules/system/lang/fr/client.php @@ -0,0 +1,49 @@ + [ + 'formatting' => 'Formatage', + 'quote' => 'Citation', + 'code' => 'Code', + 'header1' => 'Entête 1', + 'header2' => 'Entête 2', + 'header3' => 'Entête 3', + 'header4' => 'Entête 4', + 'header5' => 'Entête 5', + 'header6' => 'Entête 6', + 'bold' => 'Gras', + 'italic' => 'Italique', + 'unorderedlist' => 'Liste non ordonnée', + 'orderedlist' => 'Liste ordonnée', + 'video' => 'Vidéo', + 'image' => 'Image', + 'link' => 'Lien', + 'horizontalrule' => 'Insérer la règle horizontalement', + 'fullscreen' => 'Plein écran', + 'preview' => 'Aperçu', + ], + + 'mediamanager' => [ + 'insert_link' => "Insert Media Link", + 'insert_image' => "Insert Media Image", + 'insert_video' => "Insert Media Video", + 'insert_audio' => "Insert Media Audio", + 'invalid_file_empty_insert' => "Please select file to insert a links to.", + 'invalid_file_single_insert' => "Please select a single file.", + ], + +]; + + + diff --git a/modules/system/lang/fr/lang.php b/modules/system/lang/fr/lang.php index f2f03a347..e2c7967a3 100644 --- a/modules/system/lang/fr/lang.php +++ b/modules/system/lang/fr/lang.php @@ -8,6 +8,7 @@ return [ 'locale' => [ 'en' => 'Anglais', 'de' => 'Allemand', + 'el' => 'Greek', 'es' => 'Espangol', 'es-ar' => 'Espagnol (Argentine)', 'fa' => 'Persan', @@ -169,6 +170,7 @@ return [ 'menu_layouts_label' => 'Maquettes des adresses e-mails', 'layout' => 'Maquette', 'layouts' => 'Maquettes', + 'no_layout' => '-- Aucune maquette --', 'name' => 'Nom', 'name_comment' => 'Nom unique utilisé pour identifier ce modèle', 'code' => 'Code', diff --git a/modules/system/lang/fr/validation.php b/modules/system/lang/fr/validation.php index 95cac4856..5c3318e8c 100644 --- a/modules/system/lang/fr/validation.php +++ b/modules/system/lang/fr/validation.php @@ -45,7 +45,8 @@ return array( "string" => 'Le champ :attribute ne peut pas être supérieure à :max caractères.', "array" => 'Le champ :attribute ne peut pas être supérieure à :max objets.', ), - "mimes" => 'Le champ :attribute doit être un fichier de type: :values.', + "mimes" => 'Le champ :attribute doit être un fichier de type : :values.', + "extensions" => 'Le champ :attribute doit être une extension de : :values.', "min" => array( "numeric" => 'Le champ :attribute doit être au minimum de :min.', "file" => 'Le champ :attribute doit être au minimum de :min kilooctets.', From 3f8d17995af81e2c04538c40c437b5d182d32223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20GAULIN?= Date: Sat, 8 Aug 2015 21:52:19 +0200 Subject: [PATCH 34/66] Translate alert messages. Switched to `sweetAlert.alert()` instead of raw `window.alert()`. Override `swal` and `sweetAlert` functions to set translation on default buttons. Changed `sweetAlert()` to `swal()` to be consistent with `mediamanager.js` --- modules/backend/assets/js/backend.js | 26 ++++++++ .../assets/js/mediamanager.redactor.js | 60 +++++++++++++++---- modules/system/lang/en/client.php | 5 ++ modules/system/lang/fr/client.php | 22 +++++-- 4 files changed, 97 insertions(+), 16 deletions(-) diff --git a/modules/backend/assets/js/backend.js b/modules/backend/assets/js/backend.js index ce18301f8..7c13650f1 100644 --- a/modules/backend/assets/js/backend.js +++ b/modules/backend/assets/js/backend.js @@ -52,6 +52,32 @@ $(window).on('ajaxConfirmMessage', function(event, message){ return true }) + +/* + * Override "Sweet Alert" functions to translate default buttons + */ + +$(document).on('ready', function(){ + if (!window.swal) return + + var swal = window.swal; + + window.sweetAlert = window.swal = function(message, callback) { + if(typeof message === 'object') { + // Do not override if texts are provided + message.confirmButtonText = message.confirmButtonText || $.oc.lang.get('sweetalert.confirm_button_text'); + message.cancelButtonText = message.cancelButtonText || $.oc.lang.get('sweetalert.cancel_button_text'); + } else { + message = { + title: message, + confirmButtonText: $.oc.lang.get('sweetalert.confirm_button_text'), + cancelButtonText: $.oc.lang.get('sweetalert.cancel_button_text') + } + } + swal(message, callback); + } +}) + /* * Path helpers */ diff --git a/modules/cms/widgets/mediamanager/assets/js/mediamanager.redactor.js b/modules/cms/widgets/mediamanager/assets/js/mediamanager.redactor.js index 6eb9e98f6..bd695cc58 100644 --- a/modules/cms/widgets/mediamanager/assets/js/mediamanager.redactor.js +++ b/modules/cms/widgets/mediamanager/assets/js/mediamanager.redactor.js @@ -52,12 +52,20 @@ RedactorPlugins.mediamanager = function() cropAndInsertButton: false, onInsert: function(items) { if (!items.length) { - alert($.oc.lang.get('mediamanager.invalid_file_empty_insert')) + swal({ + title: $.oc.lang.get('mediamanager.invalid_file_empty_insert'), + // type: 'error', + confirmButtonClass: 'btn-default' + }) return } if (items.length > 1) { - alert($.oc.lang.get('mediamanager.invalid_file_single_insert')) + swal({ + title: $.oc.lang.get('mediamanager.invalid_file_single_insert'), + // type: 'error', + confirmButtonClass: 'btn-default' + }) return } @@ -91,7 +99,11 @@ RedactorPlugins.mediamanager = function() cropAndInsertButton: true, onInsert: function(items) { if (!items.length) { - alert('Please select image(s) to insert.') + swal({ + title: $.oc.lang.get('mediamanager.invalid_image_empty_insert'), + // type: 'error', + confirmButtonClass: 'btn-default' + }) return } that.selection.restore() @@ -104,7 +116,11 @@ RedactorPlugins.mediamanager = function() for (var i=0, len=items.length; i 1) { - alert('Please select a single file.') + swal({ + title: $.oc.lang.get('mediamanager.invalid_file_single_insert'), + // type: 'error', + confirmButtonClass: 'btn-default' + }) return } var item = items[0] if (item.documentType !== 'video') { - alert('The file "'+item.title+'" is not a video.') + swal({ + title: $.oc.lang.get('mediamanager.invalid_video_invalid_insert', 'The file "'+item.title+'" is not a video.'), + // type: 'error', + confirmButtonClass: 'btn-default' + }) return } @@ -201,19 +229,31 @@ RedactorPlugins.mediamanager = function() cropAndInsertButton: false, onInsert: function(items) { if (!items.length) { - alert('Please select an audio file to insert.') + swal({ + title: $.oc.lang.get('mediamanager.invalid_audio_empty_insert'), + // type: 'error', + confirmButtonClass: 'btn-default' + }) return } if (items.length > 1) { - alert('Please select a single file.') + swal({ + title: $.oc.lang.get('mediamanager.invalid_file_single_insert'), + // type: 'error', + confirmButtonClass: 'btn-default' + }) return } var item = items[0] if (item.documentType !== 'audio') { - alert('The file "'+item.title+'" is not an audio file.') + swal({ + title: $.oc.lang.get('mediamanager.invalid_audio_invalid_insert', 'The file "'+item.title+'" is not an audio file.'), + // type: 'error', + confirmButtonClass: 'btn-default' + }) return } diff --git a/modules/system/lang/en/client.php b/modules/system/lang/en/client.php index 69784ca54..391c7b2bb 100644 --- a/modules/system/lang/en/client.php +++ b/modules/system/lang/en/client.php @@ -43,6 +43,11 @@ return [ 'invalid_file_single_insert' => "Please select a single file.", ], + 'sweetalert' => [ + 'confirm_button_text' => 'OK', + 'cancel_button_text' => 'Cancel', + ], + ]; diff --git a/modules/system/lang/fr/client.php b/modules/system/lang/fr/client.php index a8565904e..ad815b786 100644 --- a/modules/system/lang/fr/client.php +++ b/modules/system/lang/fr/client.php @@ -35,14 +35,24 @@ return [ ], 'mediamanager' => [ - 'insert_link' => "Insert Media Link", - 'insert_image' => "Insert Media Image", - 'insert_video' => "Insert Media Video", - 'insert_audio' => "Insert Media Audio", - 'invalid_file_empty_insert' => "Please select file to insert a links to.", - 'invalid_file_single_insert' => "Please select a single file.", + 'insert_link' => "Insérer un lien vers un fichier de la médiathèque", + 'insert_image' => "Insérer une image de la médiathèque", + 'insert_video' => "Insérer une vidéo de la médiathèque", + 'insert_audio' => "Insérer un document audio de la médiathèque", + 'invalid_file_empty_insert' => "Veuillez sélectionner un fichier à lier.", + 'invalid_file_single_insert' => "Veuillez sélectionner un seul fichier.", + 'invalid_image_empty_insert' => "Veuillez sélectionner au moins une image à insérer.", + 'invalid_video_empty_insert' => "Veuillez sélectionner une vidéo à insérer.", + 'invalid_audio_empty_insert' => "Veuillez sélectionner un document audio à insérer.", + 'invalid_image_invalid_insert' => "Le fichier n‘est pas une image.", + 'invalid_video_invalid_insert' => "Le fichier n‘est pas une vidéo.", + 'invalid_audio_invalid_insert' => "Le fichier n‘est pas un document audio.", ], + 'sweetalert' => [ + 'confirm_button_text' => 'OK', + 'cancel_button_text' => 'Annuler', + ], ]; From d60242bbe2f775511eccbdea289461965e2982a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20GAULIN?= Date: Sun, 9 Aug 2015 15:26:03 +0200 Subject: [PATCH 35/66] Translate mail templates backend-end messages Use email test success translated entry (which existed) Restore default english translation for new externalized strings Fix typo --- modules/system/controllers/MailTemplates.php | 2 +- .../controllers/mailtemplates/update.htm | 8 ++--- modules/system/lang/en/client.php | 3 ++ modules/system/lang/en/lang.php | 5 ++- modules/system/lang/fr/lang.php | 35 ++++++++++--------- 5 files changed, 31 insertions(+), 22 deletions(-) diff --git a/modules/system/controllers/MailTemplates.php b/modules/system/controllers/MailTemplates.php index 735a66112..1a2ac28a8 100644 --- a/modules/system/controllers/MailTemplates.php +++ b/modules/system/controllers/MailTemplates.php @@ -60,7 +60,7 @@ class MailTemplates extends Controller Mail::sendTo([$user->email => $user->full_name], $model->code); - Flash::success('The test message has been successfully sent.'); + Flash::success(trans('system::lang.mail_templates.test_success')); } catch (Exception $ex) { Flash::error($ex->getMessage()); diff --git a/modules/system/controllers/mailtemplates/update.htm b/modules/system/controllers/mailtemplates/update.htm index efff84ef7..fe870855f 100644 --- a/modules/system/controllers/mailtemplates/update.htm +++ b/modules/system/controllers/mailtemplates/update.htm @@ -31,7 +31,7 @@ data-request="onSave" data-request-data="redirect:0" data-hotkey="ctrl+s, cmd+s" - data-load-indicator="Saving Template..." + data-load-indicator="" class="btn btn-primary"> @@ -40,15 +40,15 @@ data-request="onSave" data-request-data="close:1" data-hotkey="ctrl+enter, cmd+enter" - data-load-indicator="Saving Template..." + data-load-indicator="" class="btn btn-default"> diff --git a/modules/system/lang/en/client.php b/modules/system/lang/en/client.php index 391c7b2bb..fccac4b63 100644 --- a/modules/system/lang/en/client.php +++ b/modules/system/lang/en/client.php @@ -41,6 +41,9 @@ return [ 'insert_audio' => "Insert Media Audio", 'invalid_file_empty_insert' => "Please select file to insert a links to.", 'invalid_file_single_insert' => "Please select a single file.", + 'invalid_image_empty_insert' => "Please select image(s) to insert.", + 'invalid_video_empty_insert' => "Please select a video file to insert.", + 'invalid_audio_empty_insert' => "Please select an audio file to insert.", ], 'sweetalert' => [ diff --git a/modules/system/lang/en/lang.php b/modules/system/lang/en/lang.php index 71c5118d2..67db14089 100644 --- a/modules/system/lang/en/lang.php +++ b/modules/system/lang/en/lang.php @@ -183,7 +183,10 @@ return [ 'content_text' => 'Plaintext', 'test_send' => 'Send test message', 'test_success' => 'The test message has been successfully sent.', - 'return' => 'Return to template list' + 'return' => 'Return to template list', + 'test_confirm' => 'A test message will be sent to :email. Continue?', + 'saving' => 'Saving Template...', + 'sending' => 'Sending test message...', ], 'install' => [ 'project_label' => 'Attach to Project', diff --git a/modules/system/lang/fr/lang.php b/modules/system/lang/fr/lang.php index e2c7967a3..3763d0a34 100644 --- a/modules/system/lang/fr/lang.php +++ b/modules/system/lang/fr/lang.php @@ -8,8 +8,8 @@ return [ 'locale' => [ 'en' => 'Anglais', 'de' => 'Allemand', - 'el' => 'Greek', - 'es' => 'Espangol', + 'el' => 'Grec', + 'es' => 'Espagnol', 'es-ar' => 'Espagnol (Argentine)', 'fa' => 'Persan', 'fr' => 'Français', @@ -62,14 +62,14 @@ return [ 'unnamed' => 'Thème sans nom', 'name' => [ 'label' => 'Nom du thème', - 'help' => 'Nommer le thème en usant d’un code unique. Pour exemple, RainLab.Vanilla' + 'help' => 'Nommer le thème avec un nom de code unique. Par exemple, RainLab.Vanilla' ], ], 'themes' => [ 'install' => 'Installer des thèmes', 'search' => 'Recherche des thème à installer…', 'installed' => 'Thèmes installés', - 'no_themes' => 'Il n’y a aucun thème installé depuis le site du CMS October.', + 'no_themes' => 'Il n’y a aucun thème installé depuis le site d‘October CMS.', 'recommended' => 'Recommandé', 'remove_confirm' => 'Confirmer la suppression de ce thème ?' ], @@ -78,7 +78,7 @@ return [ 'unnamed' => 'Plugin sans nom', 'name' => [ 'label' => 'Nom du plugin', - 'help' => 'Nommer le plugin avec son nom de code unique. Par exemple, RainLab.Blog', + 'help' => 'Nommer le plugin avec un nom de code unique. Par exemple, RainLab.Blog', ], ], 'plugins' => [ @@ -89,7 +89,7 @@ return [ 'install_products' => 'Installer des produits', 'search' => 'Recherche des plugins à installer…', 'installed' => 'Plugins installés', - 'no_plugins' => 'Il n’y a aucun plugin installé depuis le site du CMS October.', + 'no_plugins' => 'Il n’y a aucun plugin installé depuis le site d‘October CMS.', 'recommended' => 'Recommandé', 'remove' => 'Supprimer', 'refresh' => 'Actualiser', @@ -114,7 +114,7 @@ return [ 'detach' => 'Détacher le Projet', 'none' => 'Aucun', 'id' => [ - 'label' => 'Projet ID', + 'label' => 'ID du projet', 'help' => 'Comment trouver l’ID de son projet', 'missing' => 'Spécifier un ID de projet.', ], @@ -133,7 +133,7 @@ return [ 'log_file' => 'Journal du fichier', 'menu_label' => 'Configuration des adresses e-mails', 'menu_description' => 'Gérer la configuration des adresses e-mails.', - 'general' => 'Générale', + 'general' => 'Général', 'method' => 'Méthode d’envoi', 'sender_name' => 'Nom de l’expéditeur', 'sender_email' => 'Adresse e-mail de l’expéditeur', @@ -162,7 +162,7 @@ return [ ], 'mail_templates' => [ 'menu_label' => 'Modèles des adresses e-mails', - 'menu_description' => 'Gérer les modèles et maquettes des adresses e-mails envoyées par l’administration.', + 'menu_description' => 'Gérer les modèles et maquettes des e-mails envoyés aux utilisateurs et aux administrateurs.', 'new_template' => 'Nouveau modèle', 'new_layout' => 'Nouvelle maquette', 'template' => 'Modèle', @@ -183,7 +183,10 @@ return [ 'content_text' => 'Texte brut', 'test_send' => 'Envoyer un message de test', 'test_success' => 'Le message de test a été envoyé avec succès.', - 'return' => 'Retour à la liste des modèles.' + 'return' => 'Retour à la liste des modèles.', + 'test_confirm' => 'Un message de test sera envoyé à :email. Continuer ?', + 'saving' => 'Sauvegarde du modèle en cours...', + 'sending' => 'Envoi du message de test en cours...', ], 'install' => [ 'project_label' => 'Attacher un projet', @@ -256,14 +259,14 @@ return [ ], 'server' => [ 'connect_error' => 'Erreur lors de la connexion au serveur.', - 'response_not_found' => 'La mise à jour du serveur n’a pas été trouvée.', + 'response_not_found' => 'Le serveur de mise à jour n’a pas été trouvé.', 'response_invalid' => 'Réponse invalide du serveur.', 'response_empty' => 'Réponse vide du serveur', 'file_error' => 'Erreur du serveur lors de la transmission du paquet.', 'file_corrupt' => 'Le fichier provenant du serveur est corrompu.', ], 'behavior' => [ - 'missing_property' => 'La classe :class doit définir la propriété $:property utilisée par le fonctionnement :behavior.', + 'missing_property' => 'La classe :class doit définir la propriété $:property utilisée par le comportement (behavior) :behavior.', ], 'config' => [ 'not_found' => 'Impossible de trouver le fichier de configuration :file défini dans :location.', @@ -273,16 +276,16 @@ return [ 'extract_failed' => "Impossible de décompresser le fichier ':file'.", ], 'event_log' => [ - 'hint' => 'Ce journal affiche une liste des erreurs potentielles dans l’application, telles que les exceptions et les informations de débogage.', + 'hint' => 'Ce journal affiche une liste des erreurs potentielles de l’application, telles que les exceptions et les informations de débogage.', 'menu_label' => 'Journal des évènements', - 'menu_description' => 'Affiche les évènements du système comprenant la date et les détails.', + 'menu_description' => 'Affiche les évènements des journaux systèmes avec leur date et les détails.', 'empty_link' => 'Purger le journal des évènements', 'empty_loading' => 'Purge du journal des évènements…', 'empty_success' => 'Le journal des évènements a été purgé avec succès.', 'return_link' => 'Retour au journal des évènements', 'id' => 'ID', 'id_label' => 'ID de l’évènement', - 'created_at' => 'Date & heure', + 'created_at' => 'Date et heure', 'message' => 'Message', 'level' => 'Niveau', ], @@ -308,7 +311,7 @@ return [ 'access_logs' => 'Voir les journaux système', 'manage_mail_templates' => 'Gérer les modèles des e-mails', 'manage_mail_settings' => 'Gérer les paramètres e-mail', - 'manage_other_administrators' => 'Gérer les autres paramètres administrateur', + 'manage_other_administrators' => 'Gérer les autres administrateurs', 'view_the_dashboard' => 'Voir le tableau de bord', 'manage_branding' => 'Personnaliser l’interface d’administration' ] From 29a8ec114393d4bb6732fe0821314478a072804e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20GAULIN?= Date: Wed, 12 Aug 2015 02:37:55 +0200 Subject: [PATCH 36/66] Ensure the client side language file is properly loaded Switch widget needs short text. There is not really a 3 letters word or abreviation in french that is as understable as raw "On/Off". Tidy up patch Fix quote https://github.com/octobercms/october/pull/1363/files#r36929168 --- modules/backend/assets/js/october.lang.js | 2 +- modules/backend/lang/fr/lang.php | 4 ++-- modules/system/lang/fr/client.php | 6 +++--- modules/system/lang/fr/lang.php | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/backend/assets/js/october.lang.js b/modules/backend/assets/js/october.lang.js index 7777c6731..92ed770e9 100644 --- a/modules/backend/assets/js/october.lang.js +++ b/modules/backend/assets/js/october.lang.js @@ -38,7 +38,7 @@ $.oc.lang = (function(lang, messages) { } if (lang.locale === undefined) { - lang.locale = 'en' + lang.locale = $('html').attr('lang') || 'en' } if (lang.loadedMessages === undefined) { diff --git a/modules/backend/lang/fr/lang.php b/modules/backend/lang/fr/lang.php index 47a6d764a..3511404d4 100644 --- a/modules/backend/lang/fr/lang.php +++ b/modules/backend/lang/fr/lang.php @@ -179,8 +179,8 @@ return [ 'resetting' => 'Restauration', 'resetting_name' => 'Restauration de :name', 'undefined_tab' => 'Divers', - 'field_off' => 'Désactivé', - 'field_on' => 'Activé', + 'field_off' => 'Off', + 'field_on' => 'On', 'add' => 'Ajouter', 'apply' => 'Appliquer', 'cancel' => 'Annuler', diff --git a/modules/system/lang/fr/client.php b/modules/system/lang/fr/client.php index ad815b786..4e9a7b84b 100644 --- a/modules/system/lang/fr/client.php +++ b/modules/system/lang/fr/client.php @@ -44,9 +44,9 @@ return [ 'invalid_image_empty_insert' => "Veuillez sélectionner au moins une image à insérer.", 'invalid_video_empty_insert' => "Veuillez sélectionner une vidéo à insérer.", 'invalid_audio_empty_insert' => "Veuillez sélectionner un document audio à insérer.", - 'invalid_image_invalid_insert' => "Le fichier n‘est pas une image.", - 'invalid_video_invalid_insert' => "Le fichier n‘est pas une vidéo.", - 'invalid_audio_invalid_insert' => "Le fichier n‘est pas un document audio.", + 'invalid_image_invalid_insert' => "Le fichier n’est pas une image.", + 'invalid_video_invalid_insert' => "Le fichier n’est pas une vidéo.", + 'invalid_audio_invalid_insert' => "Le fichier n’est pas un document audio.", ], 'sweetalert' => [ diff --git a/modules/system/lang/fr/lang.php b/modules/system/lang/fr/lang.php index 3763d0a34..a8970ebfe 100644 --- a/modules/system/lang/fr/lang.php +++ b/modules/system/lang/fr/lang.php @@ -69,7 +69,7 @@ return [ 'install' => 'Installer des thèmes', 'search' => 'Recherche des thème à installer…', 'installed' => 'Thèmes installés', - 'no_themes' => 'Il n’y a aucun thème installé depuis le site d‘October CMS.', + 'no_themes' => 'Il n’y a aucun thème installé depuis le site d’October CMS.', 'recommended' => 'Recommandé', 'remove_confirm' => 'Confirmer la suppression de ce thème ?' ], @@ -89,7 +89,7 @@ return [ 'install_products' => 'Installer des produits', 'search' => 'Recherche des plugins à installer…', 'installed' => 'Plugins installés', - 'no_plugins' => 'Il n’y a aucun plugin installé depuis le site d‘October CMS.', + 'no_plugins' => 'Il n’y a aucun plugin installé depuis le site d’October CMS.', 'recommended' => 'Recommandé', 'remove' => 'Supprimer', 'refresh' => 'Actualiser', @@ -185,8 +185,8 @@ return [ 'test_success' => 'Le message de test a été envoyé avec succès.', 'return' => 'Retour à la liste des modèles.', 'test_confirm' => 'Un message de test sera envoyé à :email. Continuer ?', - 'saving' => 'Sauvegarde du modèle en cours...', - 'sending' => 'Envoi du message de test en cours...', + 'saving' => 'Sauvegarde du modèle en cours…', + 'sending' => 'Envoi du message de test en cours…', ], 'install' => [ 'project_label' => 'Attacher un projet', From 0e3403f1aa5ab040667ec9ec8a0c227ccfe2db1e Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 15 Aug 2015 09:49:51 +1000 Subject: [PATCH 37/66] Use a nicer syntax for Recompile assets --- modules/backend/assets/js/october-min.js | 5 ++++- modules/backend/layouts/auth.htm | 2 +- modules/backend/layouts/default.htm | 2 +- .../assets/js/mediamanager-global-min.js | 20 +++++++++---------- modules/system/assets/js/lang/lang.de.js | 2 +- modules/system/assets/js/lang/lang.el.js | 2 +- modules/system/assets/js/lang/lang.en.js | 2 +- modules/system/assets/js/lang/lang.es-ar.js | 2 +- modules/system/assets/js/lang/lang.es.js | 2 +- modules/system/assets/js/lang/lang.fa.js | 2 +- modules/system/assets/js/lang/lang.fr.js | 2 +- modules/system/assets/js/lang/lang.hu.js | 2 +- modules/system/assets/js/lang/lang.id.js | 2 +- modules/system/assets/js/lang/lang.it.js | 2 +- modules/system/assets/js/lang/lang.ja.js | 2 +- modules/system/assets/js/lang/lang.lv.js | 2 +- modules/system/assets/js/lang/lang.nb-no.js | 2 +- modules/system/assets/js/lang/lang.nl.js | 2 +- modules/system/assets/js/lang/lang.pl.js | 2 +- modules/system/assets/js/lang/lang.pt-br.js | 2 +- modules/system/assets/js/lang/lang.ro.js | 2 +- modules/system/assets/js/lang/lang.ru.js | 2 +- modules/system/assets/js/lang/lang.se.js | 2 +- modules/system/assets/js/lang/lang.sk.js | 2 +- modules/system/assets/js/lang/lang.tr.js | 2 +- modules/system/assets/js/lang/lang.zh-cn.js | 2 +- modules/system/assets/js/lang/lang.zh-tw.js | 2 +- 27 files changed, 39 insertions(+), 36 deletions(-) diff --git a/modules/backend/assets/js/october-min.js b/modules/backend/assets/js/october-min.js index b80fe4910..224cb7cab 100644 --- a/modules/backend/assets/js/october-min.js +++ b/modules/backend/assets/js/october-min.js @@ -714,7 +714,7 @@ $.each(name.split('.'),function(index,value){if(result[value]===undefined){resul return false} result=result[value]}) return result} -if(lang.locale===undefined){lang.locale='en'} +if(lang.locale===undefined){lang.locale=$('html').attr('lang')||'en'} if(lang.loadedMessages===undefined){lang.load(lang.locale)} return lang})($.oc.lang||{},$.oc.langMessages);+function($){"use strict";var Base=$.oc.foundation.base,BaseProto=Base.prototype var Scrollpad=function(element,options){this.$el=$(element) @@ -1407,6 +1407,9 @@ $(window).on('ajaxConfirmMessage',function(event,message){if(!message)return swal({title:message,showCancelButton:true,confirmButtonClass:'btn-primary'},function(isConfirm){isConfirm?event.promise.resolve():event.promise.reject()}) event.preventDefault() return true}) +$(document).on('ready',function(){if(!window.swal)return +var swal=window.swal;window.sweetAlert=window.swal=function(message,callback){if(typeof message==='object'){message.confirmButtonText=message.confirmButtonText||$.oc.lang.get('sweetalert.confirm_button_text');message.cancelButtonText=message.cancelButtonText||$.oc.lang.get('sweetalert.cancel_button_text');}else{message={title:message,confirmButtonText:$.oc.lang.get('sweetalert.confirm_button_text'),cancelButtonText:$.oc.lang.get('sweetalert.cancel_button_text')}} +swal(message,callback);}}) if($.oc===undefined) $.oc={} $.oc.backendUrl=function(url){var backendBasePath=$('meta[name="backend-base-path"]').attr('content') diff --git a/modules/backend/layouts/auth.htm b/modules/backend/layouts/auth.htm index c778c78dc..397257d9c 100644 --- a/modules/backend/layouts/auth.htm +++ b/modules/backend/layouts/auth.htm @@ -1,5 +1,5 @@ - + diff --git a/modules/backend/layouts/default.htm b/modules/backend/layouts/default.htm index c800347fd..8c58d9eea 100644 --- a/modules/backend/layouts/default.htm +++ b/modules/backend/layouts/default.htm @@ -1,5 +1,5 @@ - + makeLayoutPartial('head') ?> diff --git a/modules/cms/widgets/mediamanager/assets/js/mediamanager-global-min.js b/modules/cms/widgets/mediamanager/assets/js/mediamanager-global-min.js index b7884d3cf..59150b5f6 100644 --- a/modules/cms/widgets/mediamanager/assets/js/mediamanager-global-min.js +++ b/modules/cms/widgets/mediamanager/assets/js/mediamanager-global-min.js @@ -13,9 +13,9 @@ this.button.addCallback(buttonInsertAudio,this.mediamanager.onInsertAudio);},onI hideLinkTooltips() this.selection.save() this.link.getData() -new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){alert($.oc.lang.get('mediamanager.invalid_file_empty_insert')) +new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){swal({title:$.oc.lang.get('mediamanager.invalid_file_empty_insert'),confirmButtonClass:'btn-default'}) return} -if(items.length>1){alert($.oc.lang.get('mediamanager.invalid_file_single_insert')) +if(items.length>1){swal({title:$.oc.lang.get('mediamanager.invalid_file_single_insert'),confirmButtonClass:'btn-default'}) return} var text=that.link.text,textIsEmpty=$.trim(text)==='' for(var i=0,len=items.length;i').attr('src',items[i].publicUrl).attr('data-redactor-inserted-image','true') html+=that.utils.getOuterHtml($img) @@ -50,12 +50,12 @@ var that=this hideLinkTooltips() this.selection.save() this.link.getData() -new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){alert('Please select a video file to insert.') +new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){swal({title:$.oc.lang.get('mediamanager.invalid_video_empty_insert'),confirmButtonClass:'btn-default'}) return} -if(items.length>1){alert('Please select a single file.') +if(items.length>1){swal({title:$.oc.lang.get('mediamanager.invalid_file_single_insert'),confirmButtonClass:'btn-default'}) return} var item=items[0] -if(item.documentType!=='video'){alert('The file "'+item.title+'" is not a video.') +if(item.documentType!=='video'){swal({title:$.oc.lang.get('mediamanager.invalid_video_invalid_insert','The file "'+item.title+'" is not a video.'),confirmButtonClass:'btn-default'}) return} var $richEditorNode=that.core.getTextarea().closest('[data-control="richeditor"]'),$videoNode=$('
') $videoNode.get(0).contentEditable=false @@ -68,12 +68,12 @@ var that=this hideLinkTooltips() this.selection.save() this.link.getData() -new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){alert('Please select an audio file to insert.') +new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){swal({title:$.oc.lang.get('mediamanager.invalid_audio_empty_insert'),confirmButtonClass:'btn-default'}) return} -if(items.length>1){alert('Please select a single file.') +if(items.length>1){swal({title:$.oc.lang.get('mediamanager.invalid_file_single_insert'),confirmButtonClass:'btn-default'}) return} var item=items[0] -if(item.documentType!=='audio'){alert('The file "'+item.title+'" is not an audio file.') +if(item.documentType!=='audio'){swal({title:$.oc.lang.get('mediamanager.invalid_audio_invalid_insert','The file "'+item.title+'" is not an audio file.'),confirmButtonClass:'btn-default'}) return} var $richEditorNode=that.core.getTextarea().closest('[data-control="richeditor"]'),$videoNode=$('
') $videoNode.get(0).contentEditable=false diff --git a/modules/system/assets/js/lang/lang.de.js b/modules/system/assets/js/lang/lang.de.js index 543a27523..b0dc27b76 100644 --- a/modules/system/assets/js/lang/lang.de.js +++ b/modules/system/assets/js/lang/lang.de.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['de'] = $.extend( $.oc.langMessages['de'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.el.js b/modules/system/assets/js/lang/lang.el.js index 8928896e0..46b913527 100644 --- a/modules/system/assets/js/lang/lang.el.js +++ b/modules/system/assets/js/lang/lang.el.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['el'] = $.extend( $.oc.langMessages['el'] || {}, - {"markdowneditor":{"formatting":"\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7","quote":"\u03a0\u03b1\u03c1\u03ac\u03b8\u03b5\u03c3\u03b7","code":"\u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2","header1":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1","header2":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2","header3":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3","header4":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4","header5":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5","header6":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6","bold":"\u0388\u03bd\u03c4\u03bf\u03bd\u03b1","italic":"\u0399\u03c4\u03b1\u03bb\u03b9\u03ba\u03ac","unorderedlist":"\u039c\u03b7 \u03c4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","orderedlist":"\u03a4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","video":"\u0392\u03af\u03bd\u03c4\u03b5\u03bf","image":"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1","link":"\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2","horizontalrule":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1\u03c2 \u0393\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","fullscreen":"\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7","preview":"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7"},"mediamanager":{"insert_link":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03a3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_image":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_video":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0392\u03af\u03bd\u03c4\u03b5\u03bf \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_audio":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0389\u03c7\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","invalid_file_empty_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc.","invalid_file_single_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03bc\u03bf\u03bd\u03b1\u03b4\u03b9\u03ba\u03cc \u03b1\u03c1\u03c7\u03b5\u03af\u03bf."}} + {"markdowneditor":{"formatting":"\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7","quote":"\u03a0\u03b1\u03c1\u03ac\u03b8\u03b5\u03c3\u03b7","code":"\u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2","header1":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1","header2":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2","header3":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3","header4":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4","header5":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5","header6":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6","bold":"\u0388\u03bd\u03c4\u03bf\u03bd\u03b1","italic":"\u0399\u03c4\u03b1\u03bb\u03b9\u03ba\u03ac","unorderedlist":"\u039c\u03b7 \u03c4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","orderedlist":"\u03a4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","video":"\u0392\u03af\u03bd\u03c4\u03b5\u03bf","image":"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1","link":"\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2","horizontalrule":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1\u03c2 \u0393\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","fullscreen":"\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7","preview":"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7"},"mediamanager":{"insert_link":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03a3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_image":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_video":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0392\u03af\u03bd\u03c4\u03b5\u03bf \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_audio":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0389\u03c7\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","invalid_file_empty_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc.","invalid_file_single_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03bc\u03bf\u03bd\u03b1\u03b4\u03b9\u03ba\u03cc \u03b1\u03c1\u03c7\u03b5\u03af\u03bf.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.en.js b/modules/system/assets/js/lang/lang.en.js index ffb20fbb5..203bc0913 100644 --- a/modules/system/assets/js/lang/lang.en.js +++ b/modules/system/assets/js/lang/lang.en.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['en'] = $.extend( $.oc.langMessages['en'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.es-ar.js b/modules/system/assets/js/lang/lang.es-ar.js index 295d45eb6..becfe67b7 100644 --- a/modules/system/assets/js/lang/lang.es-ar.js +++ b/modules/system/assets/js/lang/lang.es-ar.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['es-ar'] = $.extend( $.oc.langMessages['es-ar'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.es.js b/modules/system/assets/js/lang/lang.es.js index f34106425..38094d910 100644 --- a/modules/system/assets/js/lang/lang.es.js +++ b/modules/system/assets/js/lang/lang.es.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['es'] = $.extend( $.oc.langMessages['es'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.fa.js b/modules/system/assets/js/lang/lang.fa.js index 22dd7e13b..d778c1037 100644 --- a/modules/system/assets/js/lang/lang.fa.js +++ b/modules/system/assets/js/lang/lang.fa.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['fa'] = $.extend( $.oc.langMessages['fa'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.fr.js b/modules/system/assets/js/lang/lang.fr.js index e919803cd..286d91c07 100644 --- a/modules/system/assets/js/lang/lang.fr.js +++ b/modules/system/assets/js/lang/lang.fr.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['fr'] = $.extend( $.oc.langMessages['fr'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatage","quote":"Citation","code":"Code","header1":"Ent\u00eate 1","header2":"Ent\u00eate 2","header3":"Ent\u00eate 3","header4":"Ent\u00eate 4","header5":"Ent\u00eate 5","header6":"Ent\u00eate 6","bold":"Gras","italic":"Italique","unorderedlist":"Liste non ordonn\u00e9e","orderedlist":"Liste ordonn\u00e9e","video":"Vid\u00e9o","image":"Image","link":"Lien","horizontalrule":"Ins\u00e9rer la r\u00e8gle horizontalement","fullscreen":"Plein \u00e9cran","preview":"Aper\u00e7u"},"mediamanager":{"insert_link":"Ins\u00e9rer un lien vers un fichier de la m\u00e9diath\u00e8que","insert_image":"Ins\u00e9rer une image de la m\u00e9diath\u00e8que","insert_video":"Ins\u00e9rer une vid\u00e9o de la m\u00e9diath\u00e8que","insert_audio":"Ins\u00e9rer un document audio de la m\u00e9diath\u00e8que","invalid_file_empty_insert":"Veuillez s\u00e9lectionner un fichier \u00e0 lier.","invalid_file_single_insert":"Veuillez s\u00e9lectionner un seul fichier.","invalid_image_empty_insert":"Veuillez s\u00e9lectionner au moins une image \u00e0 ins\u00e9rer.","invalid_video_empty_insert":"Veuillez s\u00e9lectionner une vid\u00e9o \u00e0 ins\u00e9rer.","invalid_audio_empty_insert":"Veuillez s\u00e9lectionner un document audio \u00e0 ins\u00e9rer.","invalid_image_invalid_insert":"Le fichier n\u2019est pas une image.","invalid_video_invalid_insert":"Le fichier n\u2019est pas une vid\u00e9o.","invalid_audio_invalid_insert":"Le fichier n\u2019est pas un document audio."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Annuler"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.hu.js b/modules/system/assets/js/lang/lang.hu.js index d25e4067e..82aac7200 100644 --- a/modules/system/assets/js/lang/lang.hu.js +++ b/modules/system/assets/js/lang/lang.hu.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['hu'] = $.extend( $.oc.langMessages['hu'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.id.js b/modules/system/assets/js/lang/lang.id.js index e602c8bfb..43dd66b67 100644 --- a/modules/system/assets/js/lang/lang.id.js +++ b/modules/system/assets/js/lang/lang.id.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['id'] = $.extend( $.oc.langMessages['id'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.it.js b/modules/system/assets/js/lang/lang.it.js index 756dd97f2..8960e6563 100644 --- a/modules/system/assets/js/lang/lang.it.js +++ b/modules/system/assets/js/lang/lang.it.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['it'] = $.extend( $.oc.langMessages['it'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.ja.js b/modules/system/assets/js/lang/lang.ja.js index 3bf50cdb7..c71b6e44a 100644 --- a/modules/system/assets/js/lang/lang.ja.js +++ b/modules/system/assets/js/lang/lang.ja.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['ja'] = $.extend( $.oc.langMessages['ja'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.lv.js b/modules/system/assets/js/lang/lang.lv.js index 1ba8e11a3..886ba6251 100644 --- a/modules/system/assets/js/lang/lang.lv.js +++ b/modules/system/assets/js/lang/lang.lv.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['lv'] = $.extend( $.oc.langMessages['lv'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.nb-no.js b/modules/system/assets/js/lang/lang.nb-no.js index 6b8e79831..b391c0746 100644 --- a/modules/system/assets/js/lang/lang.nb-no.js +++ b/modules/system/assets/js/lang/lang.nb-no.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['nb-no'] = $.extend( $.oc.langMessages['nb-no'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.nl.js b/modules/system/assets/js/lang/lang.nl.js index dcc0eda6f..3376bd940 100644 --- a/modules/system/assets/js/lang/lang.nl.js +++ b/modules/system/assets/js/lang/lang.nl.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['nl'] = $.extend( $.oc.langMessages['nl'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.pl.js b/modules/system/assets/js/lang/lang.pl.js index 463a6711c..24c5096bb 100644 --- a/modules/system/assets/js/lang/lang.pl.js +++ b/modules/system/assets/js/lang/lang.pl.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['pl'] = $.extend( $.oc.langMessages['pl'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.pt-br.js b/modules/system/assets/js/lang/lang.pt-br.js index eb52115f1..c4bb01884 100644 --- a/modules/system/assets/js/lang/lang.pt-br.js +++ b/modules/system/assets/js/lang/lang.pt-br.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['pt-br'] = $.extend( $.oc.langMessages['pt-br'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.ro.js b/modules/system/assets/js/lang/lang.ro.js index 85d7221eb..5b98dc765 100644 --- a/modules/system/assets/js/lang/lang.ro.js +++ b/modules/system/assets/js/lang/lang.ro.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['ro'] = $.extend( $.oc.langMessages['ro'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.ru.js b/modules/system/assets/js/lang/lang.ru.js index 0980ad7b8..8bee5077c 100644 --- a/modules/system/assets/js/lang/lang.ru.js +++ b/modules/system/assets/js/lang/lang.ru.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['ru'] = $.extend( $.oc.langMessages['ru'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.se.js b/modules/system/assets/js/lang/lang.se.js index 2c668ad8c..0e54f0a57 100644 --- a/modules/system/assets/js/lang/lang.se.js +++ b/modules/system/assets/js/lang/lang.se.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['se'] = $.extend( $.oc.langMessages['se'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.sk.js b/modules/system/assets/js/lang/lang.sk.js index b165b4b72..79efbc324 100644 --- a/modules/system/assets/js/lang/lang.sk.js +++ b/modules/system/assets/js/lang/lang.sk.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['sk'] = $.extend( $.oc.langMessages['sk'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.tr.js b/modules/system/assets/js/lang/lang.tr.js index 32386bd4a..88e2834f8 100644 --- a/modules/system/assets/js/lang/lang.tr.js +++ b/modules/system/assets/js/lang/lang.tr.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['tr'] = $.extend( $.oc.langMessages['tr'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.zh-cn.js b/modules/system/assets/js/lang/lang.zh-cn.js index 3e6bccc35..970e7aba1 100644 --- a/modules/system/assets/js/lang/lang.zh-cn.js +++ b/modules/system/assets/js/lang/lang.zh-cn.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['zh-cn'] = $.extend( $.oc.langMessages['zh-cn'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.zh-tw.js b/modules/system/assets/js/lang/lang.zh-tw.js index 9a89dcacc..ce81631ed 100644 --- a/modules/system/assets/js/lang/lang.zh-tw.js +++ b/modules/system/assets/js/lang/lang.zh-tw.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['zh-tw'] = $.extend( $.oc.langMessages['zh-tw'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file From 4d04c5dda7defb4c6f72626fd1bf910bf39f03f4 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 15 Aug 2015 09:53:55 +1000 Subject: [PATCH 38/66] Sweet alert logic has grown large enough to warrant its own file --- modules/backend/assets/js/backend.js | 63 ------------------ modules/backend/assets/js/october-min.js | 25 ++++---- modules/backend/assets/js/october.alerts.js | 64 +++++++++++++++++++ modules/backend/assets/js/october.js | 1 + .../backend/assets/js/october.simplelist.js | 2 +- 5 files changed, 80 insertions(+), 75 deletions(-) create mode 100644 modules/backend/assets/js/october.alerts.js diff --git a/modules/backend/assets/js/backend.js b/modules/backend/assets/js/backend.js index 7c13650f1..d8e8839d4 100644 --- a/modules/backend/assets/js/backend.js +++ b/modules/backend/assets/js/backend.js @@ -15,69 +15,6 @@ $.ajaxPrefilter(function(options) { } }) -/* - * Implement "Sweet Alert" with AJAX framework - */ - -$(window).on('ajaxErrorMessage', function(event, message){ - if (!message) return - - swal({ - title: message, - // type: 'error', - confirmButtonClass: 'btn-default' - }) - - // Prevent the default alert() message - event.preventDefault() -}) - -$(window).on('ajaxConfirmMessage', function(event, message){ - if (!message) return - - swal({ - title: message, - // type: 'warning', - showCancelButton: true, - confirmButtonClass: 'btn-primary' - }, - function(isConfirm){ - isConfirm - ? event.promise.resolve() - : event.promise.reject() - }) - - // Prevent the default confirm() message - event.preventDefault() - return true -}) - - -/* - * Override "Sweet Alert" functions to translate default buttons - */ - -$(document).on('ready', function(){ - if (!window.swal) return - - var swal = window.swal; - - window.sweetAlert = window.swal = function(message, callback) { - if(typeof message === 'object') { - // Do not override if texts are provided - message.confirmButtonText = message.confirmButtonText || $.oc.lang.get('sweetalert.confirm_button_text'); - message.cancelButtonText = message.cancelButtonText || $.oc.lang.get('sweetalert.cancel_button_text'); - } else { - message = { - title: message, - confirmButtonText: $.oc.lang.get('sweetalert.confirm_button_text'), - cancelButtonText: $.oc.lang.get('sweetalert.cancel_button_text') - } - } - swal(message, callback); - } -}) - /* * Path helpers */ diff --git a/modules/backend/assets/js/october-min.js b/modules/backend/assets/js/october-min.js index 224cb7cab..271c2f668 100644 --- a/modules/backend/assets/js/october-min.js +++ b/modules/backend/assets/js/october-min.js @@ -716,7 +716,20 @@ result=result[value]}) return result} if(lang.locale===undefined){lang.locale=$('html').attr('lang')||'en'} if(lang.loadedMessages===undefined){lang.load(lang.locale)} -return lang})($.oc.lang||{},$.oc.langMessages);+function($){"use strict";var Base=$.oc.foundation.base,BaseProto=Base.prototype +return lang})($.oc.lang||{},$.oc.langMessages);$(window).on('ajaxErrorMessage',function(event,message){if(!message)return +swal({title:message,confirmButtonClass:'btn-default'}) +event.preventDefault()}) +$(window).on('ajaxConfirmMessage',function(event,message){if(!message)return +swal({title:message,showCancelButton:true,confirmButtonClass:'btn-primary'},function(isConfirm){isConfirm?event.promise.resolve():event.promise.reject()}) +event.preventDefault() +return true}) +$(document).on('ready',function(){if(!window.swal)return +var swal=window.swal +window.sweetAlert=window.swal=function(message,callback){if(typeof message==='object'){message.confirmButtonText=message.confirmButtonText||$.oc.lang.get('sweetalert.confirm_button_text') +message.cancelButtonText=message.cancelButtonText||$.oc.lang.get('sweetalert.cancel_button_text')} +else{message={title:message,confirmButtonText:$.oc.lang.get('sweetalert.confirm_button_text'),cancelButtonText:$.oc.lang.get('sweetalert.cancel_button_text')}} +swal(message,callback)}}) ++function($){"use strict";var Base=$.oc.foundation.base,BaseProto=Base.prototype var Scrollpad=function(element,options){this.$el=$(element) this.scrollbarElement=null this.dragHandleElement=null @@ -1400,16 +1413,6 @@ return this} $(document).ready(function(){$('[data-control=sidenav-tree]').sidenavTree()})}(window.jQuery);$.ajaxPrefilter(function(options){var token=$('meta[name="csrf-token"]').attr('content') if(token){if(!options.headers)options.headers={} options.headers['X-CSRF-TOKEN']=token}}) -$(window).on('ajaxErrorMessage',function(event,message){if(!message)return -swal({title:message,confirmButtonClass:'btn-default'}) -event.preventDefault()}) -$(window).on('ajaxConfirmMessage',function(event,message){if(!message)return -swal({title:message,showCancelButton:true,confirmButtonClass:'btn-primary'},function(isConfirm){isConfirm?event.promise.resolve():event.promise.reject()}) -event.preventDefault() -return true}) -$(document).on('ready',function(){if(!window.swal)return -var swal=window.swal;window.sweetAlert=window.swal=function(message,callback){if(typeof message==='object'){message.confirmButtonText=message.confirmButtonText||$.oc.lang.get('sweetalert.confirm_button_text');message.cancelButtonText=message.cancelButtonText||$.oc.lang.get('sweetalert.cancel_button_text');}else{message={title:message,confirmButtonText:$.oc.lang.get('sweetalert.confirm_button_text'),cancelButtonText:$.oc.lang.get('sweetalert.cancel_button_text')}} -swal(message,callback);}}) if($.oc===undefined) $.oc={} $.oc.backendUrl=function(url){var backendBasePath=$('meta[name="backend-base-path"]').attr('content') diff --git a/modules/backend/assets/js/october.alerts.js b/modules/backend/assets/js/october.alerts.js new file mode 100644 index 000000000..d46340731 --- /dev/null +++ b/modules/backend/assets/js/october.alerts.js @@ -0,0 +1,64 @@ + +/* + * Implement "Sweet Alert" with AJAX framework + */ + +$(window).on('ajaxErrorMessage', function(event, message){ + if (!message) return + + swal({ + title: message, + // type: 'error', + confirmButtonClass: 'btn-default' + }) + + // Prevent the default alert() message + event.preventDefault() +}) + +$(window).on('ajaxConfirmMessage', function(event, message){ + if (!message) return + + swal({ + title: message, + // type: 'warning', + showCancelButton: true, + confirmButtonClass: 'btn-primary' + }, + function(isConfirm){ + isConfirm + ? event.promise.resolve() + : event.promise.reject() + }) + + // Prevent the default confirm() message + event.preventDefault() + return true +}) + +/* + * Override "Sweet Alert" functions to translate default buttons + */ + +$(document).on('ready', function(){ + if (!window.swal) return + + var swal = window.swal + + window.sweetAlert = window.swal = function(message, callback) { + if (typeof message === 'object') { + // Do not override if texts are provided + message.confirmButtonText = message.confirmButtonText || $.oc.lang.get('sweetalert.confirm_button_text') + message.cancelButtonText = message.cancelButtonText || $.oc.lang.get('sweetalert.cancel_button_text') + } + else { + message = { + title: message, + confirmButtonText: $.oc.lang.get('sweetalert.confirm_button_text'), + cancelButtonText: $.oc.lang.get('sweetalert.cancel_button_text') + } + } + + swal(message, callback) + } +}) diff --git a/modules/backend/assets/js/october.js b/modules/backend/assets/js/october.js index 61cf0d177..851f1332c 100644 --- a/modules/backend/assets/js/october.js +++ b/modules/backend/assets/js/october.js @@ -18,6 +18,7 @@ =require ../../../system/assets/vendor/prettify/prettify.js =require october.lang.js +=require october.alerts.js =require october.scrollpad.js =require october.verticalmenu.js =require october.navbar.js diff --git a/modules/backend/assets/js/october.simplelist.js b/modules/backend/assets/js/october.simplelist.js index 0add060c2..b26b2a377 100644 --- a/modules/backend/assets/js/october.simplelist.js +++ b/modules/backend/assets/js/october.simplelist.js @@ -1,5 +1,5 @@ /* - * SimpleList control. + * SimpleList control. * * Data attributes: * - data-control="simplelist" - enables the simplelist plugin From 6f414fe6114064547c6ffd89ff58143a862f4cca Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 15 Aug 2015 10:00:11 +1000 Subject: [PATCH 39/66] Default direction is ascending --- modules/system/classes/VersionManager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/classes/VersionManager.php b/modules/system/classes/VersionManager.php index d00382f9a..ea124598a 100644 --- a/modules/system/classes/VersionManager.php +++ b/modules/system/classes/VersionManager.php @@ -390,7 +390,7 @@ class VersionManager return $this->databaseHistory[$code]; } - $historyInfo = Db::table('system_plugin_history')->where('code', $code)->orderBy('id','ASC')->get(); + $historyInfo = Db::table('system_plugin_history')->where('code', $code)->orderBy('id')->get(); return $this->databaseHistory[$code] = $historyInfo; } From 85933facbc41d6a78ec52076222854ac71dfc04a Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 15 Aug 2015 11:05:30 +1000 Subject: [PATCH 40/66] Stack partials, store components, unstack partials - Fixes #1373 Fixes instances where nested repeating partials are destroying the partial component stack and causing breaking errors. Nesting example: Partial (with components) ^-> Calls component default markup ^-> Refers to partial override (with repeating partial calls) ^-> Calls another partial (with components) ^-> Components not found (destroyed by repeating calls above) --- modules/cms/classes/Controller.php | 23 ++++--- modules/cms/classes/PartialStack.php | 89 ++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 13 deletions(-) create mode 100644 modules/cms/classes/PartialStack.php diff --git a/modules/cms/classes/Controller.php b/modules/cms/classes/Controller.php index c9bd323bb..37b781b00 100644 --- a/modules/cms/classes/Controller.php +++ b/modules/cms/classes/Controller.php @@ -111,7 +111,7 @@ class Controller /** * @var array Component partial stack, used internally. */ - protected $partialComponentStack = []; + protected $partialStack = []; /** * Creates the controller. @@ -127,6 +127,7 @@ class Controller $this->assetPath = Config::get('cms.themesPath', '/themes').'/'.$this->theme->getDirName(); $this->router = new Router($this->theme); + $this->partialStack = new PartialStack; $this->initTwigEnvironment(); self::$instance = $this; @@ -847,6 +848,8 @@ class Controller */ if ($partial instanceof Partial) { + $this->partialStack->stackPartial(); + $manager = ComponentManager::instance(); foreach ($partial->settings['components'] as $component => $properties) { @@ -868,10 +871,7 @@ class Controller $componentObj->alias = $alias; $parameters[$alias] = $partial->components[$alias] = $componentObj; - array_push($this->partialComponentStack, [ - 'name' => $alias, - 'obj' => $componentObj - ]); + $this->partialStack->addComponent($alias, $componentObj); $this->setComponentPropertiesFromParams($componentObj, $parameters); $componentObj->init(); @@ -890,7 +890,7 @@ class Controller } /* - * Render the parital + * Render the partial */ CmsException::mask($partial, 400); $this->loader->setObject($partial); @@ -899,9 +899,7 @@ class Controller CmsException::unmask(); if ($partial instanceof Partial) { - if ($this->partialComponentStack) { - array_pop($this->partialComponentStack); - } + $this->partialStack->unstackPartial(); } $this->vars = $vars; @@ -1224,10 +1222,9 @@ class Controller return $this->layout->components[$name]; } - foreach ($this->partialComponentStack as $componentInfo) { - if ($componentInfo['name'] == $name) { - return $componentInfo['obj']; - } + $partialComponent = $this->partialStack->getComponent($name); + if ($partialComponent !== null) { + return $partialComponent; } return null; diff --git a/modules/cms/classes/PartialStack.php b/modules/cms/classes/PartialStack.php new file mode 100644 index 000000000..7779d1833 --- /dev/null +++ b/modules/cms/classes/PartialStack.php @@ -0,0 +1,89 @@ +activePartial !== null) { + array_unshift($this->partialStack, $this->activePartial); + } + + $this->activePartial = [ + 'components' => [] + ]; + } + + /** + * Partial exit point, removes the active partial from the stack. + */ + public function unstackPartial() + { + $this->activePartial = array_shift($this->partialStack); + } + + /** + * Adds a component to the active partial stack. + */ + public function addComponent($alias, $componentObj) + { + array_push($this->activePartial['components'], [ + 'name' => $alias, + 'obj' => $componentObj + ]); + } + + /** + * Returns a component by its alias from the partial stack. + */ + public function getComponent($name) + { + $component = $this->findComponentFromStack($name, $this->activePartial); + if ($component !== null) { + return $component; + } + + foreach ($this->partialStack as $stack) { + $component = $this->findComponentFromStack($name, $stack); + if ($component !== null) { + return $component; + } + } + + return null; + } + + /** + * Locates a component by its alias from the supplied stack. + */ + protected function findComponentFromStack($name, $stack) + { + foreach ($stack['components'] as $componentInfo) { + if ($componentInfo['name'] == $name) { + return $componentInfo['obj']; + } + } + + return null; + } +} From 2c5f9eba6be0aca6e032feb0ed0fecde4615b402 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 15 Aug 2015 13:39:44 +1000 Subject: [PATCH 41/66] Write tests that verify the truth of #1373 --- modules/cms/classes/ComponentManager.php | 2 +- modules/cms/classes/PartialStack.php | 4 + .../plugins/october/tester/Plugin.php | 4 +- .../tester/components/ContentBlock.php | 25 ++++ .../october/tester/components/MainMenu.php | 21 +++ .../tester/components/mainmenu/default.htm | 4 + .../tester/components/mainmenu/items.htm | 3 + .../tester/components/post/default.htm | 1 + .../test/pages/component-custom-render.htm | 10 ++ .../test/pages/component-partial-nesting.htm | 3 + .../test/pages/component-partial-override.htm | 5 + .../themes/test/pages/component-partial.htm | 5 + .../themes/test/pages/no-component-class.htm | 5 + .../themes/test/pages/no-component.htm | 3 + .../fixtures/themes/test/pages/no-partial.htm | 1 - .../themes/test/partials/nesting/level1.htm | 6 + .../themes/test/partials/nesting/level2.htm | 6 + .../themes/test/partials/nesting/level3.htm | 4 + .../test/partials/override1/default.htm | 1 + .../test/partials/override2/default.htm | 7 + .../themes/test/partials/override2/items.htm | 3 + .../test/partials/override3/default.htm | 1 + .../test/partials/override4/default.htm | 3 + .../unit/cms/classes/ComponentManagerTest.php | 2 + tests/unit/cms/classes/ControllerTest.php | 126 +++++++++++++++--- tests/unit/cms/classes/PartialStackTest.php | 59 ++++++++ 26 files changed, 296 insertions(+), 18 deletions(-) create mode 100644 tests/fixtures/plugins/october/tester/components/ContentBlock.php create mode 100644 tests/fixtures/plugins/october/tester/components/MainMenu.php create mode 100644 tests/fixtures/plugins/october/tester/components/mainmenu/default.htm create mode 100644 tests/fixtures/plugins/october/tester/components/mainmenu/items.htm create mode 100644 tests/fixtures/plugins/october/tester/components/post/default.htm create mode 100644 tests/fixtures/themes/test/pages/component-custom-render.htm create mode 100644 tests/fixtures/themes/test/pages/component-partial-nesting.htm create mode 100644 tests/fixtures/themes/test/pages/component-partial-override.htm create mode 100644 tests/fixtures/themes/test/pages/component-partial.htm create mode 100644 tests/fixtures/themes/test/pages/no-component-class.htm create mode 100644 tests/fixtures/themes/test/pages/no-component.htm create mode 100644 tests/fixtures/themes/test/partials/nesting/level1.htm create mode 100644 tests/fixtures/themes/test/partials/nesting/level2.htm create mode 100644 tests/fixtures/themes/test/partials/nesting/level3.htm create mode 100644 tests/fixtures/themes/test/partials/override1/default.htm create mode 100644 tests/fixtures/themes/test/partials/override2/default.htm create mode 100644 tests/fixtures/themes/test/partials/override2/items.htm create mode 100644 tests/fixtures/themes/test/partials/override3/default.htm create mode 100644 tests/fixtures/themes/test/partials/override4/default.htm create mode 100644 tests/unit/cms/classes/PartialStackTest.php diff --git a/modules/cms/classes/ComponentManager.php b/modules/cms/classes/ComponentManager.php index 252cfe526..5402b07b5 100644 --- a/modules/cms/classes/ComponentManager.php +++ b/modules/cms/classes/ComponentManager.php @@ -205,7 +205,7 @@ class ComponentManager if (!class_exists($className)) { throw new SystemException(sprintf( - 'Component class not found %s.Check the component plugin.', + 'Component class not found %s. Check the component plugin.', $className )); } diff --git a/modules/cms/classes/PartialStack.php b/modules/cms/classes/PartialStack.php index 7779d1833..d49db3465 100644 --- a/modules/cms/classes/PartialStack.php +++ b/modules/cms/classes/PartialStack.php @@ -58,6 +58,10 @@ class PartialStack */ public function getComponent($name) { + if (!$this->activePartial) { + return null; + } + $component = $this->findComponentFromStack($name, $this->activePartial); if ($component !== null) { return $component; diff --git a/tests/fixtures/plugins/october/tester/Plugin.php b/tests/fixtures/plugins/october/tester/Plugin.php index 110cd7ea8..a0c80bac0 100644 --- a/tests/fixtures/plugins/october/tester/Plugin.php +++ b/tests/fixtures/plugins/october/tester/Plugin.php @@ -18,7 +18,9 @@ class Plugin extends PluginBase { return [ 'October\Tester\Components\Archive' => 'testArchive', - 'October\Tester\Components\Post' => 'testPost' + 'October\Tester\Components\Post' => 'testPost', + 'October\Tester\Components\MainMenu' => 'testMainMenu', + 'October\Tester\Components\ContentBlock' => 'testContentBlock' ]; } diff --git a/tests/fixtures/plugins/october/tester/components/ContentBlock.php b/tests/fixtures/plugins/october/tester/components/ContentBlock.php new file mode 100644 index 000000000..0728999b8 --- /dev/null +++ b/tests/fixtures/plugins/october/tester/components/ContentBlock.php @@ -0,0 +1,25 @@ + 'Content Block Dummy Component', + 'description' => 'Displays a editable content block.' + ]; + } + + public function onRender() + { + if ($output = $this->property('output')) { + return 'Custom output: '.$output; + } + + return 'Pass'; + } + +} \ No newline at end of file diff --git a/tests/fixtures/plugins/october/tester/components/MainMenu.php b/tests/fixtures/plugins/october/tester/components/MainMenu.php new file mode 100644 index 000000000..9e70d8910 --- /dev/null +++ b/tests/fixtures/plugins/october/tester/components/MainMenu.php @@ -0,0 +1,21 @@ + 'Menu Dummy Component', + 'description' => 'Displays a really cool menu.' + ]; + } + + public function menuItems() + { + return ['Home', 'Blog', 'About', 'Contact']; + } + +} \ No newline at end of file diff --git a/tests/fixtures/plugins/october/tester/components/mainmenu/default.htm b/tests/fixtures/plugins/october/tester/components/mainmenu/default.htm new file mode 100644 index 000000000..53681ebf0 --- /dev/null +++ b/tests/fixtures/plugins/october/tester/components/mainmenu/default.htm @@ -0,0 +1,4 @@ +

DEFAULT MARKUP: Menu

+
    +{% partial __SELF__ ~ "::items" items=__SELF__.menuItems %} +
diff --git a/tests/fixtures/plugins/october/tester/components/mainmenu/items.htm b/tests/fixtures/plugins/october/tester/components/mainmenu/items.htm new file mode 100644 index 000000000..7789e4d81 --- /dev/null +++ b/tests/fixtures/plugins/october/tester/components/mainmenu/items.htm @@ -0,0 +1,3 @@ +{% for item in items %} +
  • DEFAULT: {{ item }}
  • +{% endfor %} \ No newline at end of file diff --git a/tests/fixtures/plugins/october/tester/components/post/default.htm b/tests/fixtures/plugins/october/tester/components/post/default.htm new file mode 100644 index 000000000..5c072b27c --- /dev/null +++ b/tests/fixtures/plugins/october/tester/components/post/default.htm @@ -0,0 +1 @@ +

    DEFAULT MARKUP: I am a post yay

    \ No newline at end of file diff --git a/tests/fixtures/themes/test/pages/component-custom-render.htm b/tests/fixtures/themes/test/pages/component-custom-render.htm new file mode 100644 index 000000000..057c36365 --- /dev/null +++ b/tests/fixtures/themes/test/pages/component-custom-render.htm @@ -0,0 +1,10 @@ +url = "/component-custom-render" + +[October\Tester\Components\ContentBlock theblock] +== + +{% component 'theblock' %} + +{% component 'theblock' output="Would you look over Picasso's shoulder" %} + +{% component 'theblock' output='And tell him about his brush strokes?' %} diff --git a/tests/fixtures/themes/test/pages/component-partial-nesting.htm b/tests/fixtures/themes/test/pages/component-partial-nesting.htm new file mode 100644 index 000000000..41d18f7bb --- /dev/null +++ b/tests/fixtures/themes/test/pages/component-partial-nesting.htm @@ -0,0 +1,3 @@ +url = "/component-partial-nesting" +== +{% partial 'nesting/level1' %} \ No newline at end of file diff --git a/tests/fixtures/themes/test/pages/component-partial-override.htm b/tests/fixtures/themes/test/pages/component-partial-override.htm new file mode 100644 index 000000000..4ab21d6b6 --- /dev/null +++ b/tests/fixtures/themes/test/pages/component-partial-override.htm @@ -0,0 +1,5 @@ +url = "/component-partial-override" + +[October\Tester\Components\Post override1] +== +{% component 'override1' %} \ No newline at end of file diff --git a/tests/fixtures/themes/test/pages/component-partial.htm b/tests/fixtures/themes/test/pages/component-partial.htm new file mode 100644 index 000000000..3c796d6ce --- /dev/null +++ b/tests/fixtures/themes/test/pages/component-partial.htm @@ -0,0 +1,5 @@ +url = "/component-partial" + +[October\Tester\Components\Post post] +== +{% component 'post' %} \ No newline at end of file diff --git a/tests/fixtures/themes/test/pages/no-component-class.htm b/tests/fixtures/themes/test/pages/no-component-class.htm new file mode 100644 index 000000000..d9e406a4e --- /dev/null +++ b/tests/fixtures/themes/test/pages/no-component-class.htm @@ -0,0 +1,5 @@ +url = "/no-component-class" + +[PeterPan\Nevernever\Land noComponentExist] +== +

    Hey

    diff --git a/tests/fixtures/themes/test/pages/no-component.htm b/tests/fixtures/themes/test/pages/no-component.htm new file mode 100644 index 000000000..0a7761b47 --- /dev/null +++ b/tests/fixtures/themes/test/pages/no-component.htm @@ -0,0 +1,3 @@ +url = "/no-component" +== +

    Hey

    {% component 'noComponentExist' %} \ No newline at end of file diff --git a/tests/fixtures/themes/test/pages/no-partial.htm b/tests/fixtures/themes/test/pages/no-partial.htm index 846bef1f6..7ec76ee77 100644 --- a/tests/fixtures/themes/test/pages/no-partial.htm +++ b/tests/fixtures/themes/test/pages/no-partial.htm @@ -1,5 +1,4 @@ url = "/no-partial" -layout = "caramba" ==

    Hey

    {{ partial('caramba') }} \ No newline at end of file diff --git a/tests/fixtures/themes/test/partials/nesting/level1.htm b/tests/fixtures/themes/test/partials/nesting/level1.htm new file mode 100644 index 000000000..f0ae8571e --- /dev/null +++ b/tests/fixtures/themes/test/partials/nesting/level1.htm @@ -0,0 +1,6 @@ +[October\Tester\Components\MainMenu override2] +[October\Tester\Components\Post override3] +== +

    Level 1

    +{% component 'override2' %} +{% component 'override3' %} diff --git a/tests/fixtures/themes/test/partials/nesting/level2.htm b/tests/fixtures/themes/test/partials/nesting/level2.htm new file mode 100644 index 000000000..d9df47b61 --- /dev/null +++ b/tests/fixtures/themes/test/partials/nesting/level2.htm @@ -0,0 +1,6 @@ +[October\Tester\Components\Post post] +[October\Tester\Components\Post override4] +== +

    Level 2

    +{% component 'post' %} +{% component 'override4' %} \ No newline at end of file diff --git a/tests/fixtures/themes/test/partials/nesting/level3.htm b/tests/fixtures/themes/test/partials/nesting/level3.htm new file mode 100644 index 000000000..0b1366696 --- /dev/null +++ b/tests/fixtures/themes/test/partials/nesting/level3.htm @@ -0,0 +1,4 @@ +[October\Tester\Components\MainMenu mainMenu] +== +

    Level 3

    +{% component 'mainMenu' %} diff --git a/tests/fixtures/themes/test/partials/override1/default.htm b/tests/fixtures/themes/test/partials/override1/default.htm new file mode 100644 index 000000000..ebc57e24d --- /dev/null +++ b/tests/fixtures/themes/test/partials/override1/default.htm @@ -0,0 +1 @@ +

    I am an override partial! Yay

    \ No newline at end of file diff --git a/tests/fixtures/themes/test/partials/override2/default.htm b/tests/fixtures/themes/test/partials/override2/default.htm new file mode 100644 index 000000000..7fb329768 --- /dev/null +++ b/tests/fixtures/themes/test/partials/override2/default.htm @@ -0,0 +1,7 @@ +
      +{% partial __SELF__ ~ "::items" items=__SELF__.menuItems %} +{% partial __SELF__ ~ "::items" items=__SELF__.menuItems %} +{% partial __SELF__ ~ "::items" items=__SELF__.menuItems %} +
    + +{% partial 'nesting/level2' %} \ No newline at end of file diff --git a/tests/fixtures/themes/test/partials/override2/items.htm b/tests/fixtures/themes/test/partials/override2/items.htm new file mode 100644 index 000000000..0c77fb3c7 --- /dev/null +++ b/tests/fixtures/themes/test/partials/override2/items.htm @@ -0,0 +1,3 @@ +{% for item in items %} + {{ item }} +{% endfor %} \ No newline at end of file diff --git a/tests/fixtures/themes/test/partials/override3/default.htm b/tests/fixtures/themes/test/partials/override3/default.htm new file mode 100644 index 000000000..c49f68778 --- /dev/null +++ b/tests/fixtures/themes/test/partials/override3/default.htm @@ -0,0 +1 @@ +

    Insert post here

    \ No newline at end of file diff --git a/tests/fixtures/themes/test/partials/override4/default.htm b/tests/fixtures/themes/test/partials/override4/default.htm new file mode 100644 index 000000000..0b884776e --- /dev/null +++ b/tests/fixtures/themes/test/partials/override4/default.htm @@ -0,0 +1,3 @@ +

    I am another post, deep down

    + +{% partial 'nesting/level3' %} \ No newline at end of file diff --git a/tests/unit/cms/classes/ComponentManagerTest.php b/tests/unit/cms/classes/ComponentManagerTest.php index 5211a5778..99d3601d6 100644 --- a/tests/unit/cms/classes/ComponentManagerTest.php +++ b/tests/unit/cms/classes/ComponentManagerTest.php @@ -22,6 +22,8 @@ class ComponentManagerTest extends TestCase { include_once base_path() . '/tests/fixtures/plugins/october/tester/components/Archive.php'; include_once base_path() . '/tests/fixtures/plugins/october/tester/components/Post.php'; + include_once base_path() . '/tests/fixtures/plugins/october/tester/components/MainMenu.php'; + include_once base_path() . '/tests/fixtures/plugins/october/tester/components/ContentBlock.php'; $manager = ComponentManager::instance(); $components = $manager->listComponentDetails(); diff --git a/tests/unit/cms/classes/ControllerTest.php b/tests/unit/cms/classes/ControllerTest.php index 2de040214..e15220c1d 100644 --- a/tests/unit/cms/classes/ControllerTest.php +++ b/tests/unit/cms/classes/ControllerTest.php @@ -5,6 +5,31 @@ use Cms\Classes\Controller; class ControllerTest extends TestCase { + + public function testThemeUrl() + { + $theme = Theme::load('test'); + $controller = new Controller($theme); + + $url = $controller->themeUrl(); + $this->assertEquals('http://localhost/themes/test', $url); + + $url = $controller->themeUrl('foo/bar.css'); + $this->assertEquals('http://localhost/themes/test/foo/bar.css', $url); + + // + // These tests seem to bear different results + // + + // $url = $controller->themeUrl(['assets/css/style1.css', 'assets/css/style2.css']); + // $url = substr($url, 0, strpos($url, '-')); + // $this->assertEquals('/combine/88634b8fa6f4f6442ce830d38296640a', $url); + + // $url = $controller->themeUrl(['assets/js/script1.js', 'assets/js/script2.js']); + // $url = substr($url, 0, strpos($url, '-')); + // $this->assertEquals('/combine/860afc990164a60a8e90682d04da27ee', $url); + } + public function test404() { /* @@ -107,7 +132,7 @@ class ControllerTest extends TestCase } /** - * @expectedException Cms\Classes\CmsException + * @expectedException Twig_Error_Runtime * @expectedExceptionMessage is not found */ public function testPartialNotFound() @@ -341,28 +366,99 @@ ESC; $this->assertEquals('page', $content['ajax-result']); } - public function testThemeUrl() + /** + * @expectedException October\Rain\Exception\SystemException + * @expectedExceptionMessage is not registered for the component + */ + public function testComponentClassNotFound() { $theme = Theme::load('test'); $controller = new Controller($theme); + $response = $controller->run('/no-component-class')->getContent(); + } - $url = $controller->themeUrl(); - $this->assertEquals('http://localhost/themes/test', $url); - - $url = $controller->themeUrl('foo/bar.css'); - $this->assertEquals('http://localhost/themes/test/foo/bar.css', $url); - + public function testComponentNotFound() + { // - // These tests seem to bear different results + // This test should probably be throwing an exception... -sg // + $theme = Theme::load('test'); + $controller = new Controller($theme); + $response = $controller->run('/no-component')->getContent(); - // $url = $controller->themeUrl(['assets/css/style1.css', 'assets/css/style2.css']); - // $url = substr($url, 0, strpos($url, '-')); - // $this->assertEquals('/combine/88634b8fa6f4f6442ce830d38296640a', $url); + $this->assertEquals('

    Hey

    ', $response); + } - // $url = $controller->themeUrl(['assets/js/script1.js', 'assets/js/script2.js']); - // $url = substr($url, 0, strpos($url, '-')); - // $this->assertEquals('/combine/860afc990164a60a8e90682d04da27ee', $url); + public function testComponentPartial() + { + $theme = Theme::load('test'); + $controller = new Controller($theme); + $response = $controller->run('/component-partial')->getContent(); + + $this->assertEquals('

    DEFAULT MARKUP: I am a post yay

    ', $response); + } + + public function testComponentPartialOverride() + { + $theme = Theme::load('test'); + $controller = new Controller($theme); + $response = $controller->run('/component-partial-override')->getContent(); + + $this->assertEquals('

    I am an override partial! Yay

    ', $response); + } + + public function testComponentPartialNesting() + { + $theme = Theme::load('test'); + $controller = new Controller($theme); + $response = $controller->run('/component-partial-nesting')->getContent(); + + $content = <<Level 1 +
      + Home + Blog + About + Contact + Home + Blog + About + Contact + Home + Blog + About + Contact +
    + +

    Level 2

    +

    DEFAULT MARKUP: I am a post yay

    I am another post, deep down

    + +

    Level 3

    +

    DEFAULT MARKUP: Menu

    +
      +
    • DEFAULT: Home
    • +
    • DEFAULT: Blog
    • +
    • DEFAULT: About
    • +
    • DEFAULT: Contact
    • +
    +

    Insert post here

    +ESC; + + $this->assertEquals($content, $response); + } + + public function testComponentWithOnRender() + { + $theme = Theme::load('test'); + $controller = new Controller($theme); + $response = $controller->run('/component-custom-render')->getContent(); + + $content = <<assertEquals($content, $response); } } diff --git a/tests/unit/cms/classes/PartialStackTest.php b/tests/unit/cms/classes/PartialStackTest.php new file mode 100644 index 000000000..58bd05d66 --- /dev/null +++ b/tests/unit/cms/classes/PartialStackTest.php @@ -0,0 +1,59 @@ +stackPartial(); + $stack->addComponent('override1', 'October\Tester\Components\MainMenu'); + $stack->addComponent('override2', 'October\Tester\Components\ContentBlock'); + + $stack->stackPartial(); + $stack->addComponent('override3', 'October\Tester\Components\Post'); + $stack->addComponent('post', 'October\Tester\Components\Post'); + + $stack->stackPartial(); + $stack->addComponent('mainMenu', 'October\Tester\Components\MainMenu'); + + /* + * Knock em down + */ + $this->assertEquals('October\Tester\Components\MainMenu', $stack->getComponent('mainMenu')); + $this->assertEquals('October\Tester\Components\MainMenu', $stack->getComponent('override1')); + + $stack->unstackPartial(); + + $this->assertNull($stack->getComponent('mainMenu')); + $this->assertEquals('October\Tester\Components\ContentBlock', $stack->getComponent('override2')); + $this->assertEquals('October\Tester\Components\Post', $stack->getComponent('override3')); + + $stack->unstackPartial(); + + $this->assertNull($stack->getComponent('mainMenu')); + $this->assertNull($stack->getComponent('post')); + $this->assertEquals('October\Tester\Components\MainMenu', $stack->getComponent('override1')); + + $stack->unstackPartial(); + + $this->assertNull($stack->getComponent('post')); + $this->assertNull($stack->getComponent('mainMenu')); + $this->assertNull($stack->getComponent('override1')); + $this->assertNull($stack->getComponent('override2')); + $this->assertNull($stack->getComponent('override3')); + } + + public function testEmptyStack() + { + $stack = new PartialStack; + $this->assertNull($stack->getComponent('xxx')); + } + +} From 1bfcaaf026de7ea67be1b2079487038a97ccb4e6 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 15 Aug 2015 14:16:16 +1000 Subject: [PATCH 42/66] Use prettify on plugin details page --- modules/system/assets/css/updates/details.css | 1 + modules/system/assets/js/updates/details.js | 25 +++++++++++++++++++ modules/system/assets/js/updates/install.js | 2 +- .../system/assets/less/updates/details.less | 1 + modules/system/controllers/Updates.php | 1 + 5 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 modules/system/assets/js/updates/details.js diff --git a/modules/system/assets/css/updates/details.css b/modules/system/assets/css/updates/details.css index 4df6b3f9f..3acfcc4fe 100644 --- a/modules/system/assets/css/updates/details.css +++ b/modules/system/assets/css/updates/details.css @@ -27,6 +27,7 @@ } .plugin-details-content pre { display: block; + border: none; padding: 10px 10px 10px 20px; font-size: 13px; word-break: break-all; diff --git a/modules/system/assets/js/updates/details.js b/modules/system/assets/js/updates/details.js new file mode 100644 index 000000000..66dd86cbe --- /dev/null +++ b/modules/system/assets/js/updates/details.js @@ -0,0 +1,25 @@ +/* + * Details page + */ + ++function ($) { "use strict"; + + var UpdateDetails = function () { + this.init() + } + + UpdateDetails.prototype.init = function() { + + $(document).ready(function() { + $('.plugin-details-content pre').addClass('prettyprint') + prettyPrint() + }) + + } + + if ($.oc === undefined) + $.oc = {} + + $.oc.updateDetails = new UpdateDetails; + +}(window.jQuery); diff --git a/modules/system/assets/js/updates/install.js b/modules/system/assets/js/updates/install.js index 52af5e52f..a68ef29ca 100644 --- a/modules/system/assets/js/updates/install.js +++ b/modules/system/assets/js/updates/install.js @@ -19,7 +19,7 @@ this.dataSet = {} - $(document).ready(function(){ + $(document).ready(function() { self.bindSearch('#pluginSearchInput') self.bindSearch('#themeSearchInput') diff --git a/modules/system/assets/less/updates/details.less b/modules/system/assets/less/updates/details.less index e3a6d3ece..73e49c475 100644 --- a/modules/system/assets/less/updates/details.less +++ b/modules/system/assets/less/updates/details.less @@ -23,6 +23,7 @@ pre { display: block; + border: none; padding: 10px 10px 10px (@padding-standard + @padding-container); font-size: 13px; word-break: break-all; diff --git a/modules/system/controllers/Updates.php b/modules/system/controllers/Updates.php index 1662747a4..b8133dbe7 100644 --- a/modules/system/controllers/Updates.php +++ b/modules/system/controllers/Updates.php @@ -104,6 +104,7 @@ class Updates extends Controller { try { $this->pageTitle = 'system::lang.updates.details_title'; + $this->addJs('/modules/system/assets/js/updates/details.js', 'core'); $this->addCss('/modules/system/assets/css/updates/details.css', 'core'); $readmeFiles = ['README.md', 'readme.md']; From 89e3a34a2bf4733ea3b8d6b1b3c25dd55ab7fcce Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 15 Aug 2015 14:16:24 +1000 Subject: [PATCH 43/66] * Build 290 --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 666233583..6f98dd764 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +* **Build 290** (2015-08-15) + - Added test base class for developers who want to test their plugins with phpunit. See the readme file in the **tests/** directory for more details. + * **Build 289** (2015-08-07) - Added new `makeFormWidget()` method to `WidgetMaker` trait for rendering form widgets individually. This method is now available to backend controllers, controller behaviors and widgets themselves. Check to make sure your classes do not define a conflicting method of this name. From 7c39a1ae7421c675eb92b45efcbe00fbb515ca5d Mon Sep 17 00:00:00 2001 From: Vladimir Kattsov Date: Mon, 17 Aug 2015 18:35:43 +0300 Subject: [PATCH 44/66] Update MediaManager.php If name of our upload file not latin --- modules/cms/widgets/MediaManager.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/cms/widgets/MediaManager.php b/modules/cms/widgets/MediaManager.php index c85c76532..47fba62cd 100644 --- a/modules/cms/widgets/MediaManager.php +++ b/modules/cms/widgets/MediaManager.php @@ -963,6 +963,13 @@ class MediaManager extends WidgetBase $fileName = $uploadedFile->getClientOriginalName(); + // If name of our uploadfile not latin + if (!$this->validateFileName($fileName)) { + $extension = $uploadedFile->getClientOriginalExtension(); + $fileNameWithoutExt = str_replace($extension, "", $fileName); + $fileName = str_slug($fileNameWithoutExt, "-").'.'.$extension; + } + // See mime type handling in the asset manager if (!$uploadedFile->isValid()) { @@ -1177,4 +1184,4 @@ class MediaManager extends WidgetBase 'folder' => $targetFolder ]; } -} \ No newline at end of file +} From 604a7ff4650194275d51f60a586fbe1fa68176d0 Mon Sep 17 00:00:00 2001 From: Ariel Ponce Date: Tue, 18 Aug 2015 15:42:26 +0200 Subject: [PATCH 45/66] Update getStorageDirectory method to allow custom folder names See https://github.com/octobercms/library/pull/120 --- modules/system/models/File.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/modules/system/models/File.php b/modules/system/models/File.php index 9c1a95683..cef3a8cee 100644 --- a/modules/system/models/File.php +++ b/modules/system/models/File.php @@ -43,4 +43,19 @@ class File extends FileBase return $uploadsPath . '/protected/'; } } + + /** + * Define the internal storage path. + */ + public function getStorageDirectory() + { + $uploadsFolder = Config::get('cms.storage.uploads.folder'); + + if ($this->isPublic()) { + return $uploadsFolder . '/public/'; + } + else { + return $uploadsFolder . '/protected/'; + } + } } From 727eada7d06f10d408623c4bc4f1e6d779e3121f Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Wed, 19 Aug 2015 22:09:15 +1000 Subject: [PATCH 46/66] These will need the installer package to work properly --- plugins/october/demo/composer.json | 3 ++- themes/demo/composer.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/october/demo/composer.json b/plugins/october/demo/composer.json index d46dd6acd..04a07653d 100644 --- a/plugins/october/demo/composer.json +++ b/plugins/october/demo/composer.json @@ -18,7 +18,8 @@ } ], "require": { - "php": ">=5.4" + "php": ">=5.4", + "composer/installers": "~1.0" }, "autoload": { "psr-4": { diff --git a/themes/demo/composer.json b/themes/demo/composer.json index fae4c1d4c..467ed4a6e 100644 --- a/themes/demo/composer.json +++ b/themes/demo/composer.json @@ -17,7 +17,8 @@ } ], "require": { - "php": ">=5.4" + "php": ">=5.4", + "composer/installers": "~1.0" }, "extra": { "branch-alias": { From 8e5a086067dad8c0ecb025e18448bf36be2594a8 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Fri, 21 Aug 2015 17:23:03 +1000 Subject: [PATCH 47/66] Add more examples --- modules/system/assets/ui/docs/toolbar.md | 112 ++++++++++++++++++----- 1 file changed, 87 insertions(+), 25 deletions(-) diff --git a/modules/system/assets/ui/docs/toolbar.md b/modules/system/assets/ui/docs/toolbar.md index 2fbd0635e..0564b4e17 100644 --- a/modules/system/assets/ui/docs/toolbar.md +++ b/modules/system/assets/ui/docs/toolbar.md @@ -2,27 +2,41 @@ A scrollable set of buttons aligned to the left with a fixed right section. -### Basic toolbar +## Basic toolbar + +
    +
    +
    + + + + + + + + + + + + + + + +
    +
    +
    + +
    +
    + +### Button groups
    - - - -
    - -
    - - -
    - - - -
    - - + +
    @@ -31,7 +45,55 @@ A scrollable set of buttons aligned to the left with a fixed right section.
    -### Editor toolbar +### Button with Tooltips + +
    +
    +
    + +
    +
    +
    + +
    +
    + +### Dropdown buttons + +
    +
    +
    + + + +
    +
    +
    + +
    +
    + +## Editor toolbar
    @@ -48,14 +110,14 @@ A scrollable set of buttons aligned to the left with a fixed right section. data-placement="bottom" data-container="body">
    From 742ae07391c584b6906feeb87e2a4f10849df765 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 22 Aug 2015 08:47:35 +1000 Subject: [PATCH 48/66] Tidy up from #1377 --- modules/cms/widgets/MediaManager.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/cms/widgets/MediaManager.php b/modules/cms/widgets/MediaManager.php index 47fba62cd..ec51c76c1 100644 --- a/modules/cms/widgets/MediaManager.php +++ b/modules/cms/widgets/MediaManager.php @@ -963,13 +963,15 @@ class MediaManager extends WidgetBase $fileName = $uploadedFile->getClientOriginalName(); - // If name of our uploadfile not latin + /* + * File name contains non-latin characters, attempt to slug the value + */ if (!$this->validateFileName($fileName)) { $extension = $uploadedFile->getClientOriginalExtension(); - $fileNameWithoutExt = str_replace($extension, "", $fileName); - $fileName = str_slug($fileNameWithoutExt, "-").'.'.$extension; + $fileNameSlug = Str::slug(File::name($fileName), '-'); + $fileName = $fileNameSlug.'.'.$extension; } - + // See mime type handling in the asset manager if (!$uploadedFile->isValid()) { From d24f7252b3d8c67a9862f792ca763f335dadc807 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 22 Aug 2015 10:18:41 +1000 Subject: [PATCH 49/66] Stops nested repeaters populating from previous sibling - Fixes #1381 --- modules/backend/formwidgets/Repeater.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/backend/formwidgets/Repeater.php b/modules/backend/formwidgets/Repeater.php index 7520dbd55..0287756de 100644 --- a/modules/backend/formwidgets/Repeater.php +++ b/modules/backend/formwidgets/Repeater.php @@ -38,10 +38,21 @@ class Repeater extends FormWidgetBase */ protected $defaultAlias = 'repeater'; + /** + * @var int Count of repeated items. + */ protected $indexCount = 0; + /** + * @var array Collection of form widgets. + */ protected $formWidgets = []; + /** + * @var bool Stops nested repeaters populating from previous sibling. + */ + protected static $onAddItemCalled = false; + /** * {@inheritDoc} */ @@ -53,7 +64,9 @@ class Repeater extends FormWidgetBase 'sortable', ]); - $this->processExistingItems(); + if (!self::$onAddItemCalled) { + $this->processExistingItems(); + } } /** @@ -128,6 +141,8 @@ class Repeater extends FormWidgetBase public function onAddItem() { + self::$onAddItemCalled = true; + $this->indexCount++; $this->prepareVars(); From 4c1db1d8db848a2fdc6765880f6c3c4d9fc5430e Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 22 Aug 2015 13:41:57 +1000 Subject: [PATCH 50/66] Tidy up backend alerts, make long text in alerts readable --- modules/backend/assets/css/october.css | 7 ++- modules/backend/assets/js/october-min.js | 15 +++-- .../{october.alerts.js => october.alert.js} | 59 +++++++++++++------ modules/backend/assets/js/october.js | 2 +- .../backend/assets/less/controls/alert.less | 30 ++++++++++ .../backend/assets/less/controls/common.less | 20 ------- modules/backend/assets/less/october.less | 1 + modules/system/assets/js/lang/lang.de.js | 2 +- modules/system/assets/js/lang/lang.el.js | 2 +- modules/system/assets/js/lang/lang.en.js | 2 +- modules/system/assets/js/lang/lang.es-ar.js | 2 +- modules/system/assets/js/lang/lang.es.js | 2 +- modules/system/assets/js/lang/lang.fa.js | 2 +- modules/system/assets/js/lang/lang.fr.js | 2 +- modules/system/assets/js/lang/lang.hu.js | 2 +- modules/system/assets/js/lang/lang.id.js | 2 +- modules/system/assets/js/lang/lang.it.js | 2 +- modules/system/assets/js/lang/lang.ja.js | 2 +- modules/system/assets/js/lang/lang.lv.js | 2 +- modules/system/assets/js/lang/lang.nb-no.js | 2 +- modules/system/assets/js/lang/lang.nl.js | 2 +- modules/system/assets/js/lang/lang.pl.js | 2 +- modules/system/assets/js/lang/lang.pt-br.js | 2 +- modules/system/assets/js/lang/lang.ro.js | 2 +- modules/system/assets/js/lang/lang.ru.js | 2 +- modules/system/assets/js/lang/lang.se.js | 2 +- modules/system/assets/js/lang/lang.sk.js | 2 +- modules/system/assets/js/lang/lang.tr.js | 2 +- modules/system/assets/js/lang/lang.zh-cn.js | 2 +- modules/system/assets/js/lang/lang.zh-tw.js | 2 +- modules/system/lang/en/client.php | 2 +- modules/system/lang/fr/client.php | 2 +- 32 files changed, 112 insertions(+), 72 deletions(-) rename modules/backend/assets/js/{october.alerts.js => october.alert.js} (52%) create mode 100644 modules/backend/assets/less/controls/alert.less diff --git a/modules/backend/assets/css/october.css b/modules/backend/assets/css/october.css index e71823563..8b40975f6 100644 --- a/modules/backend/assets/css/october.css +++ b/modules/backend/assets/css/october.css @@ -116,6 +116,10 @@ .sweet-alert .btn-danger:focus{border-color:#d43f3a;outline:0} .sweet-alert .btn-warning:focus{border-color:#eea236;outline:0} .sweet-alert button::-moz-focus-inner{border:0} +.sweet-alert{text-align:right} +.sweet-alert h4{word-break:word-break;word-wrap:break-word;max-height:350px;overflow-y:auto;margin:10px 0 17px 0;color:#2b3e50;text-align:left;font-size:15px;line-height:23px} +.sweet-alert p{margin:0} +.sweet-alert p.text-muted{margin-bottom:20px;color:#555555} .control-simplelist{font-size:13px} .control-simplelist ul{padding-left:15px} .control-simplelist.form-control ul{margin-bottom:0} @@ -228,9 +232,6 @@ .tooltip.in{opacity:1;filter:alpha(opacity=100)} .oc-logo-white{background-image:url(../images/october-logo-white.svg);background-position:50% 50%;background-repeat:no-repeat;background-size:contain} .oc-bg-logo{background-image:url(../images/october-logo-transparent.svg);background-position:50% 50%;background-repeat:no-repeat;background-size:50% auto} -.sweet-alert{text-align:left} -.sweet-alert h4{margin:10px 0 20px 0;color:#2b3e50;font-size:18px} -.sweet-alert p.text-muted{margin-bottom:20px;color:#555555} .report-widget{padding:15px;background:white;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px} .report-widget h3{font-size:14px;color:#7e8c8d;text-transform:uppercase;font-weight:600;margin-top:0;margin-bottom:30px} .report-widget .height-100{height:100px} diff --git a/modules/backend/assets/js/october-min.js b/modules/backend/assets/js/october-min.js index 271c2f668..a7eb638a5 100644 --- a/modules/backend/assets/js/october-min.js +++ b/modules/backend/assets/js/october-min.js @@ -716,18 +716,21 @@ result=result[value]}) return result} if(lang.locale===undefined){lang.locale=$('html').attr('lang')||'en'} if(lang.loadedMessages===undefined){lang.load(lang.locale)} -return lang})($.oc.lang||{},$.oc.langMessages);$(window).on('ajaxErrorMessage',function(event,message){if(!message)return -swal({title:message,confirmButtonClass:'btn-default'}) +return lang})($.oc.lang||{},$.oc.langMessages);(function($){if($.oc===undefined) +$.oc={} +$.oc.alert=function alert(message){swal({title:message,confirmButtonClass:'btn-primary'})} +$.oc.confirm=function confirm(message,callback){swal({title:message,showCancelButton:true,confirmButtonClass:'btn-primary'},callback)}})(jQuery);$(window).on('ajaxErrorMessage',function(event,message){if(!message)return +$.oc.alert(message) event.preventDefault()}) $(window).on('ajaxConfirmMessage',function(event,message){if(!message)return -swal({title:message,showCancelButton:true,confirmButtonClass:'btn-primary'},function(isConfirm){isConfirm?event.promise.resolve():event.promise.reject()}) +$.oc.confirm(message,function(isConfirm){isConfirm?event.promise.resolve():event.promise.reject()}) event.preventDefault() return true}) $(document).on('ready',function(){if(!window.swal)return var swal=window.swal -window.sweetAlert=window.swal=function(message,callback){if(typeof message==='object'){message.confirmButtonText=message.confirmButtonText||$.oc.lang.get('sweetalert.confirm_button_text') -message.cancelButtonText=message.cancelButtonText||$.oc.lang.get('sweetalert.cancel_button_text')} -else{message={title:message,confirmButtonText:$.oc.lang.get('sweetalert.confirm_button_text'),cancelButtonText:$.oc.lang.get('sweetalert.cancel_button_text')}} +window.sweetAlert=window.swal=function(message,callback){if(typeof message==='object'){message.confirmButtonText=message.confirmButtonText||$.oc.lang.get('alert.confirm_button_text') +message.cancelButtonText=message.cancelButtonText||$.oc.lang.get('alert.cancel_button_text')} +else{message={title:message,confirmButtonText:$.oc.lang.get('alert.confirm_button_text'),cancelButtonText:$.oc.lang.get('alert.cancel_button_text')}} swal(message,callback)}}) +function($){"use strict";var Base=$.oc.foundation.base,BaseProto=Base.prototype var Scrollpad=function(element,options){this.$el=$(element) diff --git a/modules/backend/assets/js/october.alerts.js b/modules/backend/assets/js/october.alert.js similarity index 52% rename from modules/backend/assets/js/october.alerts.js rename to modules/backend/assets/js/october.alert.js index d46340731..08118dc86 100644 --- a/modules/backend/assets/js/october.alerts.js +++ b/modules/backend/assets/js/october.alert.js @@ -1,16 +1,47 @@ +/* + * Alerts + * + * Displays alert and confirmation dialogs + * + * JavaScript API: + * $.oc.alert() + * $.oc.confirm() + * + * Dependences: + * - Sweet Alert + */ +(function($){ + + if ($.oc === undefined) + $.oc = {} + + $.oc.alert = function alert(message) { + swal({ + title: message, + confirmButtonClass: 'btn-primary' + }) + } + + $.oc.confirm = function confirm(message, callback) { + + swal({ + title: message, + showCancelButton: true, + confirmButtonClass: 'btn-primary' + }, callback) + + } + +})(jQuery); /* - * Implement "Sweet Alert" with AJAX framework + * Implement alerts with AJAX framework */ $(window).on('ajaxErrorMessage', function(event, message){ if (!message) return - swal({ - title: message, - // type: 'error', - confirmButtonClass: 'btn-default' - }) + $.oc.alert(message) // Prevent the default alert() message event.preventDefault() @@ -19,13 +50,7 @@ $(window).on('ajaxErrorMessage', function(event, message){ $(window).on('ajaxConfirmMessage', function(event, message){ if (!message) return - swal({ - title: message, - // type: 'warning', - showCancelButton: true, - confirmButtonClass: 'btn-primary' - }, - function(isConfirm){ + $.oc.confirm(message, function(isConfirm){ isConfirm ? event.promise.resolve() : event.promise.reject() @@ -48,14 +73,14 @@ $(document).on('ready', function(){ window.sweetAlert = window.swal = function(message, callback) { if (typeof message === 'object') { // Do not override if texts are provided - message.confirmButtonText = message.confirmButtonText || $.oc.lang.get('sweetalert.confirm_button_text') - message.cancelButtonText = message.cancelButtonText || $.oc.lang.get('sweetalert.cancel_button_text') + message.confirmButtonText = message.confirmButtonText || $.oc.lang.get('alert.confirm_button_text') + message.cancelButtonText = message.cancelButtonText || $.oc.lang.get('alert.cancel_button_text') } else { message = { title: message, - confirmButtonText: $.oc.lang.get('sweetalert.confirm_button_text'), - cancelButtonText: $.oc.lang.get('sweetalert.cancel_button_text') + confirmButtonText: $.oc.lang.get('alert.confirm_button_text'), + cancelButtonText: $.oc.lang.get('alert.cancel_button_text') } } diff --git a/modules/backend/assets/js/october.js b/modules/backend/assets/js/october.js index 851f1332c..46c563174 100644 --- a/modules/backend/assets/js/october.js +++ b/modules/backend/assets/js/october.js @@ -18,7 +18,7 @@ =require ../../../system/assets/vendor/prettify/prettify.js =require october.lang.js -=require october.alerts.js +=require october.alert.js =require october.scrollpad.js =require october.verticalmenu.js =require october.navbar.js diff --git a/modules/backend/assets/less/controls/alert.less b/modules/backend/assets/less/controls/alert.less new file mode 100644 index 000000000..66ff9c66d --- /dev/null +++ b/modules/backend/assets/less/controls/alert.less @@ -0,0 +1,30 @@ +// +// Custom alerts (Based on Sweet Alert) +// -------------------------------------------------- + + +.sweet-alert { + text-align: right; + + h4 { + word-break: word-break; + word-wrap: break-word; + max-height: 350px; + overflow-y: auto; + + margin: 10px 0 17px 0; + color: #2b3e50; + text-align: left; + font-size: 15px; + line-height: 23px; + } + + p { + margin: 0; + } + + p.text-muted { + margin-bottom: 20px; + color: #555555; + } +} diff --git a/modules/backend/assets/less/controls/common.less b/modules/backend/assets/less/controls/common.less index c750a0b98..24cc76537 100644 --- a/modules/backend/assets/less/controls/common.less +++ b/modules/backend/assets/less/controls/common.less @@ -43,23 +43,3 @@ background-repeat: no-repeat; background-size: 50% auto; } - - -// -// Alerts -// - -.sweet-alert { - text-align: left; - - h4 { - margin: 10px 0 20px 0; - color: #2b3e50; - font-size: 18px; - } - - p.text-muted { - margin-bottom: 20px; - color: #555555; - } -} \ No newline at end of file diff --git a/modules/backend/assets/less/october.less b/modules/backend/assets/less/october.less index babc2b26d..cb5339d3e 100644 --- a/modules/backend/assets/less/october.less +++ b/modules/backend/assets/less/october.less @@ -21,6 +21,7 @@ // @import "core/boot.less"; +@import "controls/alert.less"; @import "controls/simplelist.less"; @import "controls/scrollbar.less"; @import "controls/filelist.less"; diff --git a/modules/system/assets/js/lang/lang.de.js b/modules/system/assets/js/lang/lang.de.js index b0dc27b76..a5a46a272 100644 --- a/modules/system/assets/js/lang/lang.de.js +++ b/modules/system/assets/js/lang/lang.de.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['de'] = $.extend( $.oc.langMessages['de'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.el.js b/modules/system/assets/js/lang/lang.el.js index 46b913527..0d0f2d30a 100644 --- a/modules/system/assets/js/lang/lang.el.js +++ b/modules/system/assets/js/lang/lang.el.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['el'] = $.extend( $.oc.langMessages['el'] || {}, - {"markdowneditor":{"formatting":"\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7","quote":"\u03a0\u03b1\u03c1\u03ac\u03b8\u03b5\u03c3\u03b7","code":"\u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2","header1":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1","header2":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2","header3":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3","header4":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4","header5":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5","header6":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6","bold":"\u0388\u03bd\u03c4\u03bf\u03bd\u03b1","italic":"\u0399\u03c4\u03b1\u03bb\u03b9\u03ba\u03ac","unorderedlist":"\u039c\u03b7 \u03c4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","orderedlist":"\u03a4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","video":"\u0392\u03af\u03bd\u03c4\u03b5\u03bf","image":"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1","link":"\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2","horizontalrule":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1\u03c2 \u0393\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","fullscreen":"\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7","preview":"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7"},"mediamanager":{"insert_link":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03a3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_image":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_video":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0392\u03af\u03bd\u03c4\u03b5\u03bf \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_audio":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0389\u03c7\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","invalid_file_empty_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc.","invalid_file_single_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03bc\u03bf\u03bd\u03b1\u03b4\u03b9\u03ba\u03cc \u03b1\u03c1\u03c7\u03b5\u03af\u03bf.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7","quote":"\u03a0\u03b1\u03c1\u03ac\u03b8\u03b5\u03c3\u03b7","code":"\u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2","header1":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1","header2":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2","header3":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3","header4":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4","header5":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5","header6":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6","bold":"\u0388\u03bd\u03c4\u03bf\u03bd\u03b1","italic":"\u0399\u03c4\u03b1\u03bb\u03b9\u03ba\u03ac","unorderedlist":"\u039c\u03b7 \u03c4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","orderedlist":"\u03a4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","video":"\u0392\u03af\u03bd\u03c4\u03b5\u03bf","image":"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1","link":"\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2","horizontalrule":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1\u03c2 \u0393\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","fullscreen":"\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7","preview":"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7"},"mediamanager":{"insert_link":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03a3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_image":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_video":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0392\u03af\u03bd\u03c4\u03b5\u03bf \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_audio":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0389\u03c7\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","invalid_file_empty_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc.","invalid_file_single_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03bc\u03bf\u03bd\u03b1\u03b4\u03b9\u03ba\u03cc \u03b1\u03c1\u03c7\u03b5\u03af\u03bf.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.en.js b/modules/system/assets/js/lang/lang.en.js index 203bc0913..6ac3baf21 100644 --- a/modules/system/assets/js/lang/lang.en.js +++ b/modules/system/assets/js/lang/lang.en.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['en'] = $.extend( $.oc.langMessages['en'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.es-ar.js b/modules/system/assets/js/lang/lang.es-ar.js index becfe67b7..265dd7d76 100644 --- a/modules/system/assets/js/lang/lang.es-ar.js +++ b/modules/system/assets/js/lang/lang.es-ar.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['es-ar'] = $.extend( $.oc.langMessages['es-ar'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.es.js b/modules/system/assets/js/lang/lang.es.js index 38094d910..f75ba0115 100644 --- a/modules/system/assets/js/lang/lang.es.js +++ b/modules/system/assets/js/lang/lang.es.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['es'] = $.extend( $.oc.langMessages['es'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.fa.js b/modules/system/assets/js/lang/lang.fa.js index d778c1037..4799b4fa0 100644 --- a/modules/system/assets/js/lang/lang.fa.js +++ b/modules/system/assets/js/lang/lang.fa.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['fa'] = $.extend( $.oc.langMessages['fa'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.fr.js b/modules/system/assets/js/lang/lang.fr.js index 286d91c07..3947665be 100644 --- a/modules/system/assets/js/lang/lang.fr.js +++ b/modules/system/assets/js/lang/lang.fr.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['fr'] = $.extend( $.oc.langMessages['fr'] || {}, - {"markdowneditor":{"formatting":"Formatage","quote":"Citation","code":"Code","header1":"Ent\u00eate 1","header2":"Ent\u00eate 2","header3":"Ent\u00eate 3","header4":"Ent\u00eate 4","header5":"Ent\u00eate 5","header6":"Ent\u00eate 6","bold":"Gras","italic":"Italique","unorderedlist":"Liste non ordonn\u00e9e","orderedlist":"Liste ordonn\u00e9e","video":"Vid\u00e9o","image":"Image","link":"Lien","horizontalrule":"Ins\u00e9rer la r\u00e8gle horizontalement","fullscreen":"Plein \u00e9cran","preview":"Aper\u00e7u"},"mediamanager":{"insert_link":"Ins\u00e9rer un lien vers un fichier de la m\u00e9diath\u00e8que","insert_image":"Ins\u00e9rer une image de la m\u00e9diath\u00e8que","insert_video":"Ins\u00e9rer une vid\u00e9o de la m\u00e9diath\u00e8que","insert_audio":"Ins\u00e9rer un document audio de la m\u00e9diath\u00e8que","invalid_file_empty_insert":"Veuillez s\u00e9lectionner un fichier \u00e0 lier.","invalid_file_single_insert":"Veuillez s\u00e9lectionner un seul fichier.","invalid_image_empty_insert":"Veuillez s\u00e9lectionner au moins une image \u00e0 ins\u00e9rer.","invalid_video_empty_insert":"Veuillez s\u00e9lectionner une vid\u00e9o \u00e0 ins\u00e9rer.","invalid_audio_empty_insert":"Veuillez s\u00e9lectionner un document audio \u00e0 ins\u00e9rer.","invalid_image_invalid_insert":"Le fichier n\u2019est pas une image.","invalid_video_invalid_insert":"Le fichier n\u2019est pas une vid\u00e9o.","invalid_audio_invalid_insert":"Le fichier n\u2019est pas un document audio."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Annuler"}} + {"markdowneditor":{"formatting":"Formatage","quote":"Citation","code":"Code","header1":"Ent\u00eate 1","header2":"Ent\u00eate 2","header3":"Ent\u00eate 3","header4":"Ent\u00eate 4","header5":"Ent\u00eate 5","header6":"Ent\u00eate 6","bold":"Gras","italic":"Italique","unorderedlist":"Liste non ordonn\u00e9e","orderedlist":"Liste ordonn\u00e9e","video":"Vid\u00e9o","image":"Image","link":"Lien","horizontalrule":"Ins\u00e9rer la r\u00e8gle horizontalement","fullscreen":"Plein \u00e9cran","preview":"Aper\u00e7u"},"mediamanager":{"insert_link":"Ins\u00e9rer un lien vers un fichier de la m\u00e9diath\u00e8que","insert_image":"Ins\u00e9rer une image de la m\u00e9diath\u00e8que","insert_video":"Ins\u00e9rer une vid\u00e9o de la m\u00e9diath\u00e8que","insert_audio":"Ins\u00e9rer un document audio de la m\u00e9diath\u00e8que","invalid_file_empty_insert":"Veuillez s\u00e9lectionner un fichier \u00e0 lier.","invalid_file_single_insert":"Veuillez s\u00e9lectionner un seul fichier.","invalid_image_empty_insert":"Veuillez s\u00e9lectionner au moins une image \u00e0 ins\u00e9rer.","invalid_video_empty_insert":"Veuillez s\u00e9lectionner une vid\u00e9o \u00e0 ins\u00e9rer.","invalid_audio_empty_insert":"Veuillez s\u00e9lectionner un document audio \u00e0 ins\u00e9rer.","invalid_image_invalid_insert":"Le fichier n\u2019est pas une image.","invalid_video_invalid_insert":"Le fichier n\u2019est pas une vid\u00e9o.","invalid_audio_invalid_insert":"Le fichier n\u2019est pas un document audio."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Annuler"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.hu.js b/modules/system/assets/js/lang/lang.hu.js index 82aac7200..aafe3d0bd 100644 --- a/modules/system/assets/js/lang/lang.hu.js +++ b/modules/system/assets/js/lang/lang.hu.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['hu'] = $.extend( $.oc.langMessages['hu'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.id.js b/modules/system/assets/js/lang/lang.id.js index 43dd66b67..72c0901cf 100644 --- a/modules/system/assets/js/lang/lang.id.js +++ b/modules/system/assets/js/lang/lang.id.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['id'] = $.extend( $.oc.langMessages['id'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.it.js b/modules/system/assets/js/lang/lang.it.js index 8960e6563..7a7740cd8 100644 --- a/modules/system/assets/js/lang/lang.it.js +++ b/modules/system/assets/js/lang/lang.it.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['it'] = $.extend( $.oc.langMessages['it'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.ja.js b/modules/system/assets/js/lang/lang.ja.js index c71b6e44a..54a6f56a0 100644 --- a/modules/system/assets/js/lang/lang.ja.js +++ b/modules/system/assets/js/lang/lang.ja.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['ja'] = $.extend( $.oc.langMessages['ja'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.lv.js b/modules/system/assets/js/lang/lang.lv.js index 886ba6251..e5d7898e8 100644 --- a/modules/system/assets/js/lang/lang.lv.js +++ b/modules/system/assets/js/lang/lang.lv.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['lv'] = $.extend( $.oc.langMessages['lv'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.nb-no.js b/modules/system/assets/js/lang/lang.nb-no.js index b391c0746..a62195a8a 100644 --- a/modules/system/assets/js/lang/lang.nb-no.js +++ b/modules/system/assets/js/lang/lang.nb-no.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['nb-no'] = $.extend( $.oc.langMessages['nb-no'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.nl.js b/modules/system/assets/js/lang/lang.nl.js index 3376bd940..a00287fc4 100644 --- a/modules/system/assets/js/lang/lang.nl.js +++ b/modules/system/assets/js/lang/lang.nl.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['nl'] = $.extend( $.oc.langMessages['nl'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.pl.js b/modules/system/assets/js/lang/lang.pl.js index 24c5096bb..fc9ba94cd 100644 --- a/modules/system/assets/js/lang/lang.pl.js +++ b/modules/system/assets/js/lang/lang.pl.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['pl'] = $.extend( $.oc.langMessages['pl'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.pt-br.js b/modules/system/assets/js/lang/lang.pt-br.js index c4bb01884..93943b4b3 100644 --- a/modules/system/assets/js/lang/lang.pt-br.js +++ b/modules/system/assets/js/lang/lang.pt-br.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['pt-br'] = $.extend( $.oc.langMessages['pt-br'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.ro.js b/modules/system/assets/js/lang/lang.ro.js index 5b98dc765..6726980f9 100644 --- a/modules/system/assets/js/lang/lang.ro.js +++ b/modules/system/assets/js/lang/lang.ro.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['ro'] = $.extend( $.oc.langMessages['ro'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.ru.js b/modules/system/assets/js/lang/lang.ru.js index 8bee5077c..dd8992d19 100644 --- a/modules/system/assets/js/lang/lang.ru.js +++ b/modules/system/assets/js/lang/lang.ru.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['ru'] = $.extend( $.oc.langMessages['ru'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.se.js b/modules/system/assets/js/lang/lang.se.js index 0e54f0a57..fee3911fd 100644 --- a/modules/system/assets/js/lang/lang.se.js +++ b/modules/system/assets/js/lang/lang.se.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['se'] = $.extend( $.oc.langMessages['se'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.sk.js b/modules/system/assets/js/lang/lang.sk.js index 79efbc324..00170c6fe 100644 --- a/modules/system/assets/js/lang/lang.sk.js +++ b/modules/system/assets/js/lang/lang.sk.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['sk'] = $.extend( $.oc.langMessages['sk'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.tr.js b/modules/system/assets/js/lang/lang.tr.js index 88e2834f8..43398b792 100644 --- a/modules/system/assets/js/lang/lang.tr.js +++ b/modules/system/assets/js/lang/lang.tr.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['tr'] = $.extend( $.oc.langMessages['tr'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.zh-cn.js b/modules/system/assets/js/lang/lang.zh-cn.js index 970e7aba1..b967612b1 100644 --- a/modules/system/assets/js/lang/lang.zh-cn.js +++ b/modules/system/assets/js/lang/lang.zh-cn.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['zh-cn'] = $.extend( $.oc.langMessages['zh-cn'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/assets/js/lang/lang.zh-tw.js b/modules/system/assets/js/lang/lang.zh-tw.js index ce81631ed..6fc6314e7 100644 --- a/modules/system/assets/js/lang/lang.zh-tw.js +++ b/modules/system/assets/js/lang/lang.zh-tw.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['zh-tw'] = $.extend( $.oc.langMessages['zh-tw'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"sweetalert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} ); \ No newline at end of file diff --git a/modules/system/lang/en/client.php b/modules/system/lang/en/client.php index fccac4b63..ded1cb915 100644 --- a/modules/system/lang/en/client.php +++ b/modules/system/lang/en/client.php @@ -46,7 +46,7 @@ return [ 'invalid_audio_empty_insert' => "Please select an audio file to insert.", ], - 'sweetalert' => [ + 'alert' => [ 'confirm_button_text' => 'OK', 'cancel_button_text' => 'Cancel', ], diff --git a/modules/system/lang/fr/client.php b/modules/system/lang/fr/client.php index 4e9a7b84b..d631f740b 100644 --- a/modules/system/lang/fr/client.php +++ b/modules/system/lang/fr/client.php @@ -49,7 +49,7 @@ return [ 'invalid_audio_invalid_insert' => "Le fichier n’est pas un document audio.", ], - 'sweetalert' => [ + 'alert' => [ 'confirm_button_text' => 'OK', 'cancel_button_text' => 'Annuler', ], From 60c18d39dfe1663b6e8b958c12d7fd7700674aa4 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 22 Aug 2015 13:48:53 +1000 Subject: [PATCH 51/66] Remove dependency on sweet alert --- .../assets/js/mediamanager-browser-min.js | 8 +-- .../assets/js/mediamanager-global-min.js | 20 +++---- .../mediamanager/assets/js/mediamanager.js | 25 ++------ .../assets/js/mediamanager.redactor.js | 60 ++++--------------- 4 files changed, 28 insertions(+), 85 deletions(-) diff --git a/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js b/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js index 592e90f2a..b307569e6 100644 --- a/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js +++ b/modules/cms/widgets/mediamanager/assets/js/mediamanager-browser-min.js @@ -314,7 +314,7 @@ MediaManager.prototype.uploadSending=function(file,xhr,formData){formData.append formData.append('X_OCTOBER_FILEUPLOAD',this.options.uniqueId)} MediaManager.prototype.uploadCancelAll=function(){this.dropzone.removeAllFiles(true) this.hideUploadUi()} -MediaManager.prototype.uploadError=function(file,message){swal({title:'Error uploading file',text:message,confirmButtonClass:'btn-default'})} +MediaManager.prototype.uploadError=function(file,message){$.oc.alert('Error uploading file')} MediaManager.prototype.cropSelectedImage=function(callback){var selectedItems=this.getSelectedItems(true) if(selectedItems.length!=1){alert(this.options.selectSingleImage) return} @@ -337,9 +337,9 @@ this.lastSearchValue=value this.clearSearchTrackInputTimer() this.searchTrackInputTimer=window.setTimeout(this.proxy(this.updateSearchResults),300)} MediaManager.prototype.deleteItems=function(){var items=this.$el.get(0).querySelectorAll('[data-type="media-item"].selected') -if(!items.length){swal({title:this.options.deleteEmpty,confirmButtonClass:'btn-default'}) +if(!items.length){$.oc.alert(this.options.deleteEmpty) return} -swal({title:this.options.deleteConfirm,confirmButtonClass:'btn-default',showCancelButton:true},this.proxy(this.deleteConfirmation))} +$.oc.confirm(this.options.deleteConfirm,this.proxy(this.deleteConfirmation))} MediaManager.prototype.deleteConfirmation=function(confirmed){if(!confirmed) return var items=this.$el.get(0).querySelectorAll('[data-type="media-item"].selected'),paths=[] @@ -359,7 +359,7 @@ return false} MediaManager.prototype.folderCreated=function(){this.$el.find('button[data-command="create-folder"]').popup('hide') this.afterNavigate()} MediaManager.prototype.moveItems=function(ev){var items=this.$el.get(0).querySelectorAll('[data-type="media-item"].selected') -if(!items.length){swal({title:this.options.moveEmpty,confirmButtonClass:'btn-default'}) +if(!items.length){$.oc.alert(this.options.moveEmpty) return} var data={exclude:[],path:this.$el.find('[data-type="current-folder"]').val()} for(var i=0,len=items.length;i1){swal({title:$.oc.lang.get('mediamanager.invalid_file_single_insert'),confirmButtonClass:'btn-default'}) +if(items.length>1){$.oc.alert($.oc.lang.get('mediamanager.invalid_file_single_insert')) return} var text=that.link.text,textIsEmpty=$.trim(text)==='' for(var i=0,len=items.length;i').attr('src',items[i].publicUrl).attr('data-redactor-inserted-image','true') html+=that.utils.getOuterHtml($img) @@ -50,12 +50,12 @@ var that=this hideLinkTooltips() this.selection.save() this.link.getData() -new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){swal({title:$.oc.lang.get('mediamanager.invalid_video_empty_insert'),confirmButtonClass:'btn-default'}) +new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){$.oc.alert($.oc.lang.get('mediamanager.invalid_video_empty_insert')) return} -if(items.length>1){swal({title:$.oc.lang.get('mediamanager.invalid_file_single_insert'),confirmButtonClass:'btn-default'}) +if(items.length>1){$.oc.alert($.oc.lang.get('mediamanager.invalid_file_single_insert')) return} var item=items[0] -if(item.documentType!=='video'){swal({title:$.oc.lang.get('mediamanager.invalid_video_invalid_insert','The file "'+item.title+'" is not a video.'),confirmButtonClass:'btn-default'}) +if(item.documentType!=='video'){$.oc.alert($.oc.lang.get('mediamanager.invalid_video_invalid_insert','The file "'+item.title+'" is not a video.')) return} var $richEditorNode=that.core.getTextarea().closest('[data-control="richeditor"]'),$videoNode=$('
    ') $videoNode.get(0).contentEditable=false @@ -68,12 +68,12 @@ var that=this hideLinkTooltips() this.selection.save() this.link.getData() -new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){swal({title:$.oc.lang.get('mediamanager.invalid_audio_empty_insert'),confirmButtonClass:'btn-default'}) +new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){$.oc.alert($.oc.lang.get('mediamanager.invalid_audio_empty_insert')) return} -if(items.length>1){swal({title:$.oc.lang.get('mediamanager.invalid_file_single_insert'),confirmButtonClass:'btn-default'}) +if(items.length>1){$.oc.alert($.oc.lang.get('mediamanager.invalid_file_single_insert')) return} var item=items[0] -if(item.documentType!=='audio'){swal({title:$.oc.lang.get('mediamanager.invalid_audio_invalid_insert','The file "'+item.title+'" is not an audio file.'),confirmButtonClass:'btn-default'}) +if(item.documentType!=='audio'){$.oc.alert($.oc.lang.get('mediamanager.invalid_audio_invalid_insert','The file "'+item.title+'" is not an audio file.')) return} var $richEditorNode=that.core.getTextarea().closest('[data-control="richeditor"]'),$videoNode=$('
    ') $videoNode.get(0).contentEditable=false diff --git a/modules/cms/widgets/mediamanager/assets/js/mediamanager.js b/modules/cms/widgets/mediamanager/assets/js/mediamanager.js index ec4e0c25f..c6456864e 100644 --- a/modules/cms/widgets/mediamanager/assets/js/mediamanager.js +++ b/modules/cms/widgets/mediamanager/assets/js/mediamanager.js @@ -805,12 +805,7 @@ } MediaManager.prototype.uploadError = function(file, message) { - swal({ - title: 'Error uploading file', - text: message, - // type: 'error', - confirmButtonClass: 'btn-default' - }) + $.oc.alert('Error uploading file') } // @@ -888,19 +883,11 @@ var items = this.$el.get(0).querySelectorAll('[data-type="media-item"].selected') if (!items.length) { - swal({ - title: this.options.deleteEmpty, - confirmButtonClass: 'btn-default' - }) - + $.oc.alert(this.options.deleteEmpty) return } - swal({ - title: this.options.deleteConfirm, - confirmButtonClass: 'btn-default', - showCancelButton: true - }, this.proxy(this.deleteConfirmation)) + $.oc.confirm(this.options.deleteConfirm, this.proxy(this.deleteConfirmation)) } MediaManager.prototype.deleteConfirmation = function(confirmed) { @@ -972,11 +959,7 @@ var items = this.$el.get(0).querySelectorAll('[data-type="media-item"].selected') if (!items.length) { - swal({ - title: this.options.moveEmpty, - confirmButtonClass: 'btn-default' - }) - + $.oc.alert(this.options.moveEmpty) return } diff --git a/modules/cms/widgets/mediamanager/assets/js/mediamanager.redactor.js b/modules/cms/widgets/mediamanager/assets/js/mediamanager.redactor.js index bd695cc58..cf84ca369 100644 --- a/modules/cms/widgets/mediamanager/assets/js/mediamanager.redactor.js +++ b/modules/cms/widgets/mediamanager/assets/js/mediamanager.redactor.js @@ -52,20 +52,12 @@ RedactorPlugins.mediamanager = function() cropAndInsertButton: false, onInsert: function(items) { if (!items.length) { - swal({ - title: $.oc.lang.get('mediamanager.invalid_file_empty_insert'), - // type: 'error', - confirmButtonClass: 'btn-default' - }) + $.oc.alert($.oc.lang.get('mediamanager.invalid_file_empty_insert')) return } if (items.length > 1) { - swal({ - title: $.oc.lang.get('mediamanager.invalid_file_single_insert'), - // type: 'error', - confirmButtonClass: 'btn-default' - }) + $.oc.alert($.oc.lang.get('mediamanager.invalid_file_single_insert')) return } @@ -99,11 +91,7 @@ RedactorPlugins.mediamanager = function() cropAndInsertButton: true, onInsert: function(items) { if (!items.length) { - swal({ - title: $.oc.lang.get('mediamanager.invalid_image_empty_insert'), - // type: 'error', - confirmButtonClass: 'btn-default' - }) + $.oc.alert($.oc.lang.get('mediamanager.invalid_image_empty_insert')) return } that.selection.restore() @@ -116,11 +104,7 @@ RedactorPlugins.mediamanager = function() for (var i=0, len=items.length; i 1) { - swal({ - title: $.oc.lang.get('mediamanager.invalid_file_single_insert'), - // type: 'error', - confirmButtonClass: 'btn-default' - }) + $.oc.alert($.oc.lang.get('mediamanager.invalid_file_single_insert')) return } var item = items[0] if (item.documentType !== 'video') { - swal({ - title: $.oc.lang.get('mediamanager.invalid_video_invalid_insert', 'The file "'+item.title+'" is not a video.'), - // type: 'error', - confirmButtonClass: 'btn-default' - }) + $.oc.alert($.oc.lang.get('mediamanager.invalid_video_invalid_insert', 'The file "'+item.title+'" is not a video.')) return } @@ -229,31 +201,19 @@ RedactorPlugins.mediamanager = function() cropAndInsertButton: false, onInsert: function(items) { if (!items.length) { - swal({ - title: $.oc.lang.get('mediamanager.invalid_audio_empty_insert'), - // type: 'error', - confirmButtonClass: 'btn-default' - }) + $.oc.alert($.oc.lang.get('mediamanager.invalid_audio_empty_insert')) return } if (items.length > 1) { - swal({ - title: $.oc.lang.get('mediamanager.invalid_file_single_insert'), - // type: 'error', - confirmButtonClass: 'btn-default' - }) + $.oc.alert($.oc.lang.get('mediamanager.invalid_file_single_insert')) return } var item = items[0] if (item.documentType !== 'audio') { - swal({ - title: $.oc.lang.get('mediamanager.invalid_audio_invalid_insert', 'The file "'+item.title+'" is not an audio file.'), - // type: 'error', - confirmButtonClass: 'btn-default' - }) + $.oc.alert($.oc.lang.get('mediamanager.invalid_audio_invalid_insert', 'The file "'+item.title+'" is not an audio file.')) return } From 6d1673c4b3fec0735678a21cb9329628ed9b358f Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 22 Aug 2015 16:33:00 +1000 Subject: [PATCH 52/66] Introduce ReorderController for reordering of model records - Fixes #943 --- .../backend/behaviors/ReorderController.php | 247 ++++++++++++++++++ .../assets/js/october.reorder.js | 82 ++++++ .../reordercontroller/partials/_container.htm | 29 ++ .../reordercontroller/partials/_records.htm | 19 ++ modules/backend/lang/en/lang.php | 4 + 5 files changed, 381 insertions(+) create mode 100644 modules/backend/behaviors/ReorderController.php create mode 100644 modules/backend/behaviors/reordercontroller/assets/js/october.reorder.js create mode 100644 modules/backend/behaviors/reordercontroller/partials/_container.htm create mode 100644 modules/backend/behaviors/reordercontroller/partials/_records.htm diff --git a/modules/backend/behaviors/ReorderController.php b/modules/backend/behaviors/ReorderController.php new file mode 100644 index 000000000..5b7356d24 --- /dev/null +++ b/modules/backend/behaviors/ReorderController.php @@ -0,0 +1,247 @@ +config = $this->makeConfig($controller->reorderConfig, $this->requiredConfig); + + /* + * Form widgets + */ + if ($this->toolbarWidget = $this->makeToolbarWidget()) { + $this->toolbarWidget->bindToController(); + } + } + + // + // Controller actions + // + + public function reorder() + { + $this->addJs('js/october.reorder.js', 'core'); + + $this->controller->pageTitle = $this->controller->pageTitle + ?: Lang::get($this->getConfig('title', 'backend::lang.reorder.default_title')); + + $this->validateModel(); + $this->prepareVars(); + } + + // + // AJAX + // + + public function onReorder() + { + $model = $this->validateModel(); + + /* + * Simple + */ + if ($this->sortMode == 'simple') { + if (!$ids = post('record_ids')) return; + if (!$orders = post('sort_orders')) return; + + $model->setSortableOrder($ids, $orders); + } + /* + * Nested set + */ + elseif ($this->sortMode == 'nested') { + $sourceNode = $model->find(post('sourceNode')); + $targetNode = post('targetNode') ? $model->find(post('targetNode')) : null; + + if ($sourceNode == $targetNode) return; + + switch (post('position')) { + case 'before': + $sourceNode->moveBefore($targetNode); + break; + + case 'after': + $sourceNode->moveAfter($targetNode); + break; + + case 'child': + $sourceNode->makeChildOf($targetNode); + break; + + default: + $sourceNode->makeRoot(); + break; + } + } + } + + // + // Reordering + // + + /** + * Prepares common form data + */ + protected function prepareVars() + { + $this->vars['reorderRecords'] = $this->getRecords(); + $this->vars['reorderModel'] = $this->model; + $this->vars['reorderSortMode'] = $this->sortMode; + $this->vars['reorderShowTree'] = $this->showTree; + $this->vars['reorderToolbarWidget'] = $this->toolbarWidget; + } + + public function reorderRender() + { + return $this->reorderMakePartial('container'); + } + + public function reorderGetModel() + { + if ($this->model !== null) { + return $this->model; + } + + $modelClass = $this->getConfig('modelClass'); + if (!$modelClass) { + throw new ApplicationException('Please specify the modelClass property for reordering'); + } + + return $this->model = new $modelClass; + } + + /** + * Validate the supplied form model. + * @return void + */ + protected function validateModel() + { + $model = $this->controller->reorderGetModel(); + $modelTraits = class_uses($model); + + if (isset($modelTraits['October\Rain\Database\Traits\Sortable'])) { + $this->sortMode = 'simple'; + } + elseif (isset($modelTraits['October\Rain\Database\Traits\NestedTree'])) { + $this->sortMode = 'nested'; + $this->showTree = true; + } + else { + throw new ApplicationException('The model must implement the NestedTree or Sortable traits.'); + } + + return $model; + } + + /** + * Returns all the records from the supplied model. + * @return Collection + */ + protected function getRecords() + { + $model = $this->controller->reorderGetModel(); + $records = null; + + if ($this->sortMode == 'simple') { + $records = $model + ->orderBy($model->getSortOrderColumn()) + ->get() + ; + } + elseif ($this->sortMode == 'nested') { + $records = $model->getEagerRoot(); + } + + return $records; + } + + // + // Widgets + // + + protected function makeToolbarWidget() + { + if ($toolbarConfig = $this->getConfig('toolbar')) { + $toolbarConfig = $this->makeConfig($toolbarConfig); + $toolbarWidget = $this->makeWidget('Backend\Widgets\Toolbar', $toolbarConfig); + } + else { + $toolbarWidget = null; + } + + return $toolbarWidget; + } + + // + // Helpers + // + + /** + * Controller accessor for making partials within this behavior. + * @param string $partial + * @param array $params + * @return string Partial contents + */ + public function reorderMakePartial($partial, $params = []) + { + $contents = $this->controller->makePartial('reorder_'.$partial, $params + $this->vars, false); + if (!$contents) { + $contents = $this->makePartial($partial, $params); + } + + return $contents; + } + +} \ No newline at end of file diff --git a/modules/backend/behaviors/reordercontroller/assets/js/october.reorder.js b/modules/backend/behaviors/reordercontroller/assets/js/october.reorder.js new file mode 100644 index 000000000..5ce495748 --- /dev/null +++ b/modules/backend/behaviors/reordercontroller/assets/js/october.reorder.js @@ -0,0 +1,82 @@ +/* + * Scripts for the Reorder controller behavior. + * + * The following functions are observed: + * - Simple sorting: Post back the original sort orders and the new ordered identifiers. + * - Nested sorting: Post back source and target nodes IDs and the move positioning. + */ ++function ($) { "use strict"; + + var ReorderBehavior = function() { + + this.sortMode = null + + this.simpleSortOrders = [] + + this.initSorting = function (mode) { + this.sortMode = mode + + if (mode == 'simple') { + this.initSortingSimple() + } + + $('#reorderTreeList').on('move.oc.treelist', $.proxy(this.processReorder, this)) + } + + + this.processReorder = function(ev, sortData){ + var postData + + if (this.sortMode == 'simple') { + postData = { sort_orders: this.simpleSortOrders } + } + else if (this.sortMode == 'nested') { + postData = this.getNestedMoveData(sortData) + } + + $('#reorderTreeList').request('onReorder', { + data: postData + }) + } + + this.getNestedMoveData = function (sortData) { + var + $el, + $item = sortData.item, + moveData = { + targetNode: 0, + sourceNode: $item.data('recordId'), + position: 'root' + } + + if (($el = $item.next()) && $el.length) { + moveData.position = 'before' + } + else if (($el = $item.prev()) && $el.length) { + moveData.position = 'after' + } + else if (($el = $item.parents('li:first')) && $el.length) { + moveData.position = 'child' + } + + if ($el.length) { + moveData.targetNode = $el.data('recordId') + } + + return moveData + } + + this.initSortingSimple = function () { + var sortOrders = [] + + $('#reorderTreeList li').each(function(){ + sortOrders.push($(this).data('recordSortOrder')) + }) + + this.simpleSortOrders = sortOrders + } + + } + + $.oc.reorderBehavior = new ReorderBehavior; +}(window.jQuery); \ No newline at end of file diff --git a/modules/backend/behaviors/reordercontroller/partials/_container.htm b/modules/backend/behaviors/reordercontroller/partials/_container.htm new file mode 100644 index 000000000..6d329f38a --- /dev/null +++ b/modules/backend/behaviors/reordercontroller/partials/_container.htm @@ -0,0 +1,29 @@ + + +
    + render() ?> +
    + + + + +
    + data-handle=" li > .record > a.move' ?>" + data-stripe-load-indicator> + +
      + reorderMakePartial('records', ['records' => $reorderRecords]) ?> +
    + +

    + +
    + + + diff --git a/modules/backend/behaviors/reordercontroller/partials/_records.htm b/modules/backend/behaviors/reordercontroller/partials/_records.htm new file mode 100644 index 000000000..fe29ef9c1 --- /dev/null +++ b/modules/backend/behaviors/reordercontroller/partials/_records.htm @@ -0,0 +1,19 @@ + + +
  • +
    + + title ?> + +
    + + +
      + children): ?> + reorderMakePartial('records', ['records' => $record->children]) ?> + +
    + +
  • + + \ No newline at end of file diff --git a/modules/backend/lang/en/lang.php b/modules/backend/lang/en/lang.php index e7bfdcb75..89beb9a7f 100644 --- a/modules/backend/lang/en/lang.php +++ b/modules/backend/lang/en/lang.php @@ -236,6 +236,10 @@ return [ 'unlink_name' => 'Unlink :name', 'unlink_confirm' => 'Are you sure?' ], + 'reorder' => [ + 'default_title' => 'Reorder records', + 'no_records' => 'There are no records available to sort.', + ], 'model' => [ 'name' => 'Model', 'not_found' => "Model ':class' with an ID of :id could not be found", From e3e8fb35c7b15e214833d8f5f4994f9ea88d70e0 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 22 Aug 2015 16:39:09 +1000 Subject: [PATCH 53/66] Allow the model attribute name to be specified from config --- .../backend/behaviors/ReorderController.php | 21 ++++++++++++++++++- .../reordercontroller/partials/_records.htm | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/modules/backend/behaviors/ReorderController.php b/modules/backend/behaviors/ReorderController.php index 5b7356d24..6102b5500 100644 --- a/modules/backend/behaviors/ReorderController.php +++ b/modules/backend/behaviors/ReorderController.php @@ -28,6 +28,11 @@ class ReorderController extends ControllerBehavior */ public $model; + /** + * @var string Model attribute to use for the display name + */ + public $nameFrom = 'name'; + /** * @var bool Display parent/child relationships in the list. */ @@ -59,11 +64,16 @@ class ReorderController extends ControllerBehavior $this->config = $this->makeConfig($controller->reorderConfig, $this->requiredConfig); /* - * Form widgets + * Widgets */ if ($this->toolbarWidget = $this->makeToolbarWidget()) { $this->toolbarWidget->bindToController(); } + + /* + * Populate from config + */ + $this->nameFrom = $this->getConfig('nameFrom', $this->nameFrom); } // @@ -162,6 +172,15 @@ class ReorderController extends ControllerBehavior return $this->model = new $modelClass; } + /** + * Returns the display name for a record. + * @return string + */ + public function reorderGetRecordName($record) + { + return $record->{$this->nameFrom}; + } + /** * Validate the supplied form model. * @return void diff --git a/modules/backend/behaviors/reordercontroller/partials/_records.htm b/modules/backend/behaviors/reordercontroller/partials/_records.htm index fe29ef9c1..c85ac1814 100644 --- a/modules/backend/behaviors/reordercontroller/partials/_records.htm +++ b/modules/backend/behaviors/reordercontroller/partials/_records.htm @@ -3,7 +3,7 @@
  • - title ?> + reorderGetRecordName($record) ?>
    From 07c8b23c7d38099bfa3508015e5ef00c9bfb0be8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20Gerg=C5=91?= Date: Sat, 22 Aug 2015 12:09:56 +0200 Subject: [PATCH 54/66] Big updated for Hungarian language --- modules/backend/lang/hu/lang.php | 28 +++++++++------- modules/cms/lang/hu/lang.php | 14 ++++---- modules/system/lang/hu/client.php | 54 +++++++++++++++++++++++++++++++ modules/system/lang/hu/lang.php | 45 ++++++++++++++------------ 4 files changed, 103 insertions(+), 38 deletions(-) create mode 100644 modules/system/lang/hu/client.php diff --git a/modules/backend/lang/hu/lang.php b/modules/backend/lang/hu/lang.php index 10012e96e..eca44fb3d 100644 --- a/modules/backend/lang/hu/lang.php +++ b/modules/backend/lang/hu/lang.php @@ -28,7 +28,7 @@ return [ ], 'account' => [ 'sign_out' => 'Kijelentkezés', - 'login' => 'Belép', + 'login' => 'Belépés', 'reset' => 'Alaphelyzet', 'restore' => 'Visszaállítás', 'login_placeholder' => 'felhasználónév', @@ -45,7 +45,7 @@ return [ 'reset_error' => 'A megadott jelszó átállítási adatok érvénytelenek. Próbálja újra!', 'reset_fail' => 'Nem állítható vissza a jelszava!', 'apply' => 'Alkalmaz', - 'cancel' => 'Mégse', + 'cancel' => 'Mégsem', 'delete' => 'Törlés', 'ok' => 'OK' ], @@ -79,19 +79,19 @@ return [ 'list_title' => 'Adminisztrátorok kezelése', 'new' => 'Új adminisztrátor', 'login' => 'Felhasználónév', - 'first_name' => 'Keresztnév', - 'last_name' => 'Vezetéknév', + 'first_name' => 'Vezetéknév', + 'last_name' => 'Keresztnév', 'full_name' => 'Teljes név', 'email' => 'E-mail cím', 'groups' => 'Csoportok', - 'groups_comment' => 'Adja meg, hogy ez a felhasználó melyik csoportokba tartozik.', + 'groups_comment' => 'Adja meg, hogy a felhasználó melyik csoportokba tartozik.', 'avatar' => 'Profilkép', '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.', + 'superuser_comment' => 'Korlátlan hozzáférést biztosít 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?', @@ -183,10 +183,11 @@ return [ 'field_on' => 'Be', 'add' => 'Hozzáadás', 'apply' => 'Alkalmaz', - 'cancel' => 'Mégse', + 'cancel' => 'Mégsem', 'close' => 'Bezárás', 'confirm' => 'Megerősítés', 'reload' => 'Újratöltés', + 'complete' => 'Teljes', '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.', @@ -215,7 +216,7 @@ return [ 'add_a_new' => 'Új :name hozzáadása', 'link_selected' => 'Kijelöltek csatolása', 'link_a_new' => 'Új :name csatolása', - 'cancel' => 'Mégse', + 'cancel' => 'Mégsem', 'close' => 'Bezárás', 'add_name' => ':name hozzáadása', 'create' => 'Létrehozás', @@ -235,6 +236,10 @@ return [ 'unlink_name' => ':name csatolásának megszüntetése', 'unlink_confirm' => 'Biztos benne?' ], + 'reorder' => [ + 'default_title' => 'Elemek újrarendezése', + 'no_records' => 'Nincs elérhető tartalom a rendezéshez.' + ], 'model' => [ 'name' => 'Modell', 'not_found' => "Nem található :id azonosítójú ':class' modell.", @@ -259,6 +264,7 @@ return [ 'code_folding' => 'Kód összecsukása', 'word_wrap' => 'Tördelés', 'highlight_active_line' => 'Aktív sor kiemelése', + 'auto_closing' => 'Automatikus kódlezárás', 'show_invisibles' => 'Láthatatlan karakterek megjelenítése', 'show_gutter' => 'Margó megjelenítése', 'theme' => 'Színséma' @@ -279,8 +285,8 @@ return [ 'menu_label' => 'Admin felület', 'menu_description' => 'A kinézetének módosítása és egyedivé tétele.', 'brand' => 'Márka', - 'logo' => 'Embléma', - 'logo_description' => 'Töltsön fel egy emblémát az admin oldalon való használathoz.', + 'logo' => 'Logó', + 'logo_description' => 'A kép a bejelentkezési felületen, illetve egyes oldalak háttereként fog megjelenni.', 'app_name' => 'Weboldal neve', 'app_name_description' => 'Ez a név látható a bejelentkező képernyőn.', 'app_tagline' => 'Weboldal szlogenje', @@ -303,7 +309,7 @@ return [ '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ésnapló', 'menu_description' => 'A felhasználók sikeres bejelentkezéseinek megtekintése.', - 'created_at' => 'Dátum és idő', + 'created_at' => 'Időpont', 'login' => 'Felhasználónév', 'ip_address' => 'IP cím', 'first_name' => 'Keresztnév', diff --git a/modules/cms/lang/hu/lang.php b/modules/cms/lang/hu/lang.php index e189ae110..5736c6e8c 100644 --- a/modules/cms/lang/hu/lang.php +++ b/modules/cms/lang/hu/lang.php @@ -24,7 +24,7 @@ return [ 'not_match' => 'Az objektum melyhez hozzáférni próbál, nem a szerkesztés alatt lévő témához tartozik. Töltse be újra a lapot.' ], 'settings_menu' => 'Dizájn', - 'settings_menu_description' => 'Telepített témák és további választható sablonok listája.', + 'settings_menu_description' => 'A telepített témák és a választható sablonok listája.', 'default_tab' => 'Tulajdonságok', 'name_label' => 'Név', 'name_create_placeholder' => 'Az új téma neve', @@ -104,7 +104,7 @@ return [ '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 --' + 'no_layout' => '-- nincs --' ], 'layout' => [ 'not_found_name' => "A(z) ':name' elrendezés nem található", @@ -147,8 +147,8 @@ return [ ], 'editor' => [ 'settings' => 'Beállítások', - 'title' => 'Cím', - 'new_title' => 'Új lap címe', + 'title' => 'Elnevezés', + 'new_title' => 'Az új lap címe', 'url' => 'Webcím', 'filename' => 'Fájlnév', 'layout' => 'Elrendezés', @@ -157,8 +157,8 @@ return [ 'meta' => 'Meta', 'meta_title' => 'Meta cím', 'meta_description' => 'Meta leírás', - 'markup' => 'Jelölés', - 'code' => 'Kód', + 'markup' => 'HTML', + 'code' => 'PHP', 'content' => 'Tartalom', 'hidden' => 'Rejtett', 'hidden_comment' => 'A rejtett lapok csak a bejelentkezett felhasználók által hozzáférhetők.', @@ -220,7 +220,7 @@ return [ 'method_not_found' => "A(z) ':name' komponens nem tartalmaz egy ':method' metódust." ], 'template' => [ - 'invalid_type' => 'Ismeretlen sablontípus.', + 'invalid_type' => 'Ismeretlen sablon típus.', 'not_found' => 'A kért sablon nem található.', 'saved' => 'A módosítások sikeresen mentésre kerültek.' ], diff --git a/modules/system/lang/hu/client.php b/modules/system/lang/hu/client.php new file mode 100644 index 000000000..bfed44196 --- /dev/null +++ b/modules/system/lang/hu/client.php @@ -0,0 +1,54 @@ + [ + 'formatting' => 'Forráskód', + 'quote' => 'Idézet', + 'code' => 'Kód', + 'header1' => 'Főcím 1', + 'header2' => 'Főcím 2', + 'header3' => 'Főcím 3', + 'header4' => 'Főcím 4', + 'header5' => 'Főcím 5', + 'header6' => 'Főcím 6', + 'bold' => 'Félkövér', + 'italic' => 'Dölt', + 'unorderedlist' => 'Rendezett lista', + 'orderedlist' => 'Számozott lista', + 'video' => 'Videó', + 'image' => 'Kép', + 'link' => 'Hivatkozás', + 'horizontalrule' => 'Vonal beszúrása', + 'fullscreen' => 'Teljes képernyő', + 'preview' => 'Előnézet' + ], + + 'mediamanager' => [ + 'insert_link' => 'Hivatkozás beszúrása', + 'insert_image' => 'Kép beszúrása', + 'insert_video' => 'Videó beszúrása', + 'insert_audio' => 'Audió beszúrása', + 'invalid_file_empty_insert' => 'Hivatkozás készítéséhez jelöljön ki egy szövegrészt.', + 'invalid_file_single_insert' => 'Kérjük jelöljön ki egy fájlt.', + 'invalid_image_empty_insert' => 'Válasszon ki legalább egy képet a beszúráshoz.', + 'invalid_video_empty_insert' => 'Válasszon ki legalább egy videót a beszúráshoz.', + 'invalid_audio_empty_insert' => 'Válasszon ki legalább egy audiót a beszúráshoz.' + ], + + 'alert' => [ + 'confirm_button_text' => 'OK', + 'cancel_button_text' => 'Mégsem' + ] + +]; diff --git a/modules/system/lang/hu/lang.php b/modules/system/lang/hu/lang.php index 3816d637b..850c6f630 100644 --- a/modules/system/lang/hu/lang.php +++ b/modules/system/lang/hu/lang.php @@ -8,6 +8,7 @@ return [ 'locale' => [ 'en' => 'Angol', 'de' => 'Német', + 'el' => 'Görög', 'es' => 'Spanyol', 'es-ar' => 'Spanyol (argentín)', 'fa' => 'Perzsa', @@ -27,7 +28,7 @@ return [ 'sk' => 'Szlovák', 'tr' => 'Török', 'zh-cn' => 'Kínai', - 'zh-tw' => 'Chinese (Taiwan)', + 'zh-tw' => 'Kínai (tajvani)' ], 'directory' => [ 'create_fail' => 'Nem hozható létre a könyvtár: :name' @@ -108,24 +109,24 @@ return [ ], 'project' => [ 'name' => 'Projekt', - 'owner_label' => 'Tulajdonos', - 'attach' => 'Projekt csatolása', - 'detach' => 'Projekt leválasztása', + 'owner_label' => 'Fejlesztő', + 'attach' => 'Csatolás', + 'detach' => 'leválasztás', 'none' => 'Nincs', 'id' => [ - 'label' => 'Projektazonosító', - 'help' => 'Hogyan található meg a projektazonosító.', - 'missing' => 'Adjon meg egy használandó projektazonosítót.' + 'label' => 'Projekt azonosító', + 'help' => 'Segítség (angol nyelvű)', + 'missing' => 'Adjon meg egy projekt azonosítót.' ], - 'detach_confirm' => 'Biztosan le akarja választani ezt a projektet?', + 'detach_confirm' => 'Biztosan le akarja választani a projektet?', 'unbind_success' => 'A projekt leválasztása sikerült.' ], 'settings' => [ 'menu_label' => 'Beállítások', 'not_found' => 'Nem találhatók a megadott beállítások.', - 'missing_model' => 'A beállítások lap egy modelldefiníciót hiányol.', + 'missing_model' => 'A beállítások lap egy modell definíciót hiányol.', 'update_success' => 'A(z) :name beállításainak frissítése sikerült.', - 'return' => 'Vissza a rendszer beállításokhoz', + 'return' => 'Vissza a beállításokhoz', 'search' => 'Keresés' ], 'mail' => [ @@ -161,7 +162,7 @@ return [ ], 'mail_templates' => [ 'menu_label' => 'Levél sablonok', - 'menu_description' => 'A küldendő levél sablonok kezelése.', + 'menu_description' => 'A kimenő levelek megjelenésének testreszabása.', 'new_template' => 'Új sablon', 'new_layout' => 'Új elrendezés', 'template' => 'Sablon', @@ -169,6 +170,7 @@ return [ 'menu_layouts_label' => 'Levél elrendezések', 'layout' => 'Elrendezés', 'layouts' => 'Elrendezések', + 'no_layout' => '-- nincs --', 'name' => 'Név', 'name_comment' => 'Erre a sablonra való hivatkozásként használt egyedi név.', 'code' => 'Kód', @@ -181,7 +183,10 @@ return [ 'content_text' => 'Egyszerű szöveg', 'test_send' => 'Tesztüzenet küldése', 'test_success' => 'A tesztüzenet elküldése sikerült.', - 'return' => 'Vissza a sablon listához' + 'return' => 'Vissza a sablonokhoz', + 'test_confirm' => 'Teszt üzenet küldése a(z) ":email" címre. Folytatja?', + 'saving' => 'Sablon mentése...', + 'sending' => 'Üzenet küldése folyamatban...', ], 'install' => [ 'project_label' => 'Csatolás projekthez', @@ -197,7 +202,7 @@ return [ 'name' => 'Szoftver frissítése', 'menu_label' => 'Frissítések', 'menu_description' => 'A rendszer és a bővítmények frissítése, valamint új kiegészítők telepítése.', - 'return_link' => 'Vissza a rendszer frissítésekhez', + 'return_link' => 'Vissza a frissítésekhez', 'check_label' => 'Frissítések keresése', 'retry_label' => 'Új próba', 'plugin_name' => 'Név', @@ -208,9 +213,9 @@ return [ 'core_current_build' => 'Verzió', 'core_build' => 'Új verzió: :build', 'core_build_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...', - 'plugins' => 'Bővítmények', + 'core_downloading' => 'Weboldal frissítés letöltése...', + 'core_extracting' => 'Weboldal frissítés kicsomagolása...', + 'plugins' => 'Bővítmény', 'themes' => 'Témák', 'disabled' => 'Letiltva', 'plugin_downloading' => 'Bővítmény letöltése: :name', @@ -223,8 +228,8 @@ return [ 'update_label' => 'Honlap frissítése', 'update_completing' => 'Frissítési folyamat befejezése', 'update_loading' => 'Elérhető frissítések betöltése...', - 'update_success' => 'A frissítési folyamat sikeresen végrehajtásra került.', - 'update_failed_label' => 'A frissítés nem sikerült', + 'update_success' => 'A frissítési sikeresen végrehajtásra került.', + 'update_failed_label' => 'A frissítés nem sikerült.', 'force_label' => 'Frissítés kényszerítése', 'found' => [ 'label' => 'Új verzió elérhető!', @@ -244,7 +249,7 @@ return [ 'important_view_guide' => 'Frissítési útmutat megtekintése', 'important_alert_text' => 'Néhány frissítés körültekintést igényel.', 'details_title' => 'Bővítmény részletei', - 'details_view_homepage' => 'Weboldal megtekintése', + 'details_view_homepage' => 'Weboldal', 'details_readme' => 'Dokumentáció', 'details_readme_missing' => 'Nincs megadva dokumentáció.', 'details_upgrades' => 'Frissítési útmutató', @@ -280,7 +285,7 @@ return [ 'return_link' => 'Vissza az eseménynapló listához', 'id' => 'Azonosító', 'id_label' => 'Esemény azonosító', - 'created_at' => 'Dátum és idő', + 'created_at' => 'Időpont', 'message' => 'Üzenet', 'level' => 'Szint' ], From df6cdc084d3b11d2b4257655f7168ffc31f28fa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20Gerg=C5=91?= Date: Sat, 22 Aug 2015 12:19:31 +0200 Subject: [PATCH 55/66] Translate the plugin author string --- modules/system/controllers/updates/details.htm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/controllers/updates/details.htm b/modules/system/controllers/updates/details.htm index f5d9da4a8..5b465058a 100644 --- a/modules/system/controllers/updates/details.htm +++ b/modules/system/controllers/updates/details.htm @@ -26,7 +26,7 @@
  • -

    +

    From 90d2b87180739423c12a2f1535ec78de9b9ad0cd Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Mon, 24 Aug 2015 07:31:23 +1000 Subject: [PATCH 56/66] Focus record finder search when it opens - Fixes #1388 --- .../recordfinder/partials/_recordfinder_form.htm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/backend/formwidgets/recordfinder/partials/_recordfinder_form.htm b/modules/backend/formwidgets/recordfinder/partials/_recordfinder_form.htm index 2b11c962c..df6286554 100644 --- a/modules/backend/formwidgets/recordfinder/partials/_recordfinder_form.htm +++ b/modules/backend/formwidgets/recordfinder/partials/_recordfinder_form.htm @@ -19,4 +19,11 @@ - \ No newline at end of file + + + From 942a8c000ec4d57321fdada1ea0d4b8e3e228bad Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Mon, 24 Aug 2015 20:31:44 +1000 Subject: [PATCH 57/66] Add helper for listing file + db templates --- modules/system/models/MailTemplate.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/modules/system/models/MailTemplate.php b/modules/system/models/MailTemplate.php index 2195a24c8..bc708ce66 100644 --- a/modules/system/models/MailTemplate.php +++ b/modules/system/models/MailTemplate.php @@ -45,6 +45,23 @@ class MailTemplate extends Model protected static $registeredTemplates; + /** + * Returns an array of template codes and descriptions. + * @return array + */ + public static function listAllTemplates() + { + $fileTemplates = (array) self::make()->listRegisteredTemplates(); + $dbTemplates = (array) self::lists('description', 'code'); + $templates = $fileTemplates + $dbTemplates; + ksort($templates); + return $templates; + } + + /** + * Syncronise all file templates to the database. + * @return void + */ public static function syncAll() { $templates = self::make()->listRegisteredTemplates(); From 30593b0031fa13332014b63ac2ddc7d72aa82505 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Tue, 25 Aug 2015 19:29:55 +1000 Subject: [PATCH 58/66] Update FontAwesome to latest, recompile assets --- modules/system/assets/css/styles.css | 76 +- modules/system/assets/js/lang/lang.hu.js | 2 +- modules/system/assets/ui/docs/icon.md | 995 ++++++++++++++++++ modules/system/assets/ui/font/FontAwesome.otf | Bin 93888 -> 106260 bytes .../assets/ui/font/fontawesome-webfont.eot | Bin 60767 -> 68875 bytes .../assets/ui/font/fontawesome-webfont.svg | 105 +- .../assets/ui/font/fontawesome-webfont.ttf | Bin 122092 -> 138204 bytes .../assets/ui/font/fontawesome-webfont.woff | Bin 71508 -> 81284 bytes .../assets/ui/font/fontawesome-webfont.woff2 | Bin 56780 -> 64464 bytes modules/system/assets/ui/less/icon.icons.less | 83 +- .../system/assets/ui/less/icon.variables.less | 86 +- modules/system/assets/ui/storm.css | 76 +- 12 files changed, 1394 insertions(+), 29 deletions(-) create mode 100644 modules/system/assets/ui/docs/icon.md diff --git a/modules/system/assets/css/styles.css b/modules/system/assets/css/styles.css index b6d467da6..c5338dc00 100644 --- a/modules/system/assets/css/styles.css +++ b/modules/system/assets/css/styles.css @@ -558,7 +558,7 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143} .oc-icon-github:before,.icon-github:before{content:"\f09b"} .oc-icon-unlock:before,.icon-unlock:before{content:"\f09c"} .oc-icon-credit-card:before,.icon-credit-card:before{content:"\f09d"} -.oc-icon-rss:before,.icon-rss:before{content:"\f09e"} +.oc-icon-feed:before,.icon-feed:before,.oc-icon-rss:before,.icon-rss:before{content:"\f09e"} .oc-icon-hdd-o:before,.icon-hdd-o:before{content:"\f0a0"} .oc-icon-bullhorn:before,.icon-bullhorn:before{content:"\f0a1"} .oc-icon-bell:before,.icon-bell:before{content:"\f0f3"} @@ -834,14 +834,14 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143} .oc-icon-ge:before,.icon-ge:before,.oc-icon-empire:before,.icon-empire:before{content:"\f1d1"} .oc-icon-git-square:before,.icon-git-square:before{content:"\f1d2"} .oc-icon-git:before,.icon-git:before{content:"\f1d3"} -.oc-icon-hacker-news:before,.icon-hacker-news:before{content:"\f1d4"} +.oc-icon-y-combinator-square:before,.icon-y-combinator-square:before,.oc-icon-yc-square:before,.icon-yc-square:before,.oc-icon-hacker-news:before,.icon-hacker-news:before{content:"\f1d4"} .oc-icon-tencent-weibo:before,.icon-tencent-weibo:before{content:"\f1d5"} .oc-icon-qq:before,.icon-qq:before{content:"\f1d6"} .oc-icon-wechat:before,.icon-wechat:before,.oc-icon-weixin:before,.icon-weixin:before{content:"\f1d7"} .oc-icon-send:before,.icon-send:before,.oc-icon-paper-plane:before,.icon-paper-plane:before{content:"\f1d8"} .oc-icon-send-o:before,.icon-send-o:before,.oc-icon-paper-plane-o:before,.icon-paper-plane-o:before{content:"\f1d9"} .oc-icon-history:before,.icon-history:before{content:"\f1da"} -.oc-icon-genderless:before,.icon-genderless:before,.oc-icon-circle-thin:before,.icon-circle-thin:before{content:"\f1db"} +.oc-icon-circle-thin:before,.icon-circle-thin:before{content:"\f1db"} .oc-icon-header:before,.icon-header:before{content:"\f1dc"} .oc-icon-paragraph:before,.icon-paragraph:before{content:"\f1dd"} .oc-icon-sliders:before,.icon-sliders:before{content:"\f1de"} @@ -908,7 +908,7 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143} .oc-icon-venus:before,.icon-venus:before{content:"\f221"} .oc-icon-mars:before,.icon-mars:before{content:"\f222"} .oc-icon-mercury:before,.icon-mercury:before{content:"\f223"} -.oc-icon-transgender:before,.icon-transgender:before{content:"\f224"} +.oc-icon-intersex:before,.icon-intersex:before,.oc-icon-transgender:before,.icon-transgender:before{content:"\f224"} .oc-icon-transgender-alt:before,.icon-transgender-alt:before{content:"\f225"} .oc-icon-venus-double:before,.icon-venus-double:before{content:"\f226"} .oc-icon-mars-double:before,.icon-mars-double:before{content:"\f227"} @@ -917,6 +917,7 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143} .oc-icon-mars-stroke-v:before,.icon-mars-stroke-v:before{content:"\f22a"} .oc-icon-mars-stroke-h:before,.icon-mars-stroke-h:before{content:"\f22b"} .oc-icon-neuter:before,.icon-neuter:before{content:"\f22c"} +.oc-icon-genderless:before,.icon-genderless:before{content:"\f22d"} .oc-icon-facebook-official:before,.icon-facebook-official:before{content:"\f230"} .oc-icon-pinterest-p:before,.icon-pinterest-p:before{content:"\f231"} .oc-icon-whatsapp:before,.icon-whatsapp:before{content:"\f232"} @@ -928,10 +929,75 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143} .oc-icon-train:before,.icon-train:before{content:"\f238"} .oc-icon-subway:before,.icon-subway:before{content:"\f239"} .oc-icon-medium:before,.icon-medium:before{content:"\f23a"} +.oc-icon-yc:before,.icon-yc:before,.oc-icon-y-combinator:before,.icon-y-combinator:before{content:"\f23b"} +.oc-icon-optin-monster:before,.icon-optin-monster:before{content:"\f23c"} +.oc-icon-opencart:before,.icon-opencart:before{content:"\f23d"} +.oc-icon-expeditedssl:before,.icon-expeditedssl:before{content:"\f23e"} +.oc-icon-battery-4:before,.icon-battery-4:before,.oc-icon-battery-full:before,.icon-battery-full:before{content:"\f240"} +.oc-icon-battery-3:before,.icon-battery-3:before,.oc-icon-battery-three-quarters:before,.icon-battery-three-quarters:before{content:"\f241"} +.oc-icon-battery-2:before,.icon-battery-2:before,.oc-icon-battery-half:before,.icon-battery-half:before{content:"\f242"} +.oc-icon-battery-1:before,.icon-battery-1:before,.oc-icon-battery-quarter:before,.icon-battery-quarter:before{content:"\f243"} +.oc-icon-battery-0:before,.icon-battery-0:before,.oc-icon-battery-empty:before,.icon-battery-empty:before{content:"\f244"} +.oc-icon-mouse-pointer:before,.icon-mouse-pointer:before{content:"\f245"} +.oc-icon-i-cursor:before,.icon-i-cursor:before{content:"\f246"} +.oc-icon-object-group:before,.icon-object-group:before{content:"\f247"} +.oc-icon-object-ungroup:before,.icon-object-ungroup:before{content:"\f248"} +.oc-icon-sticky-note:before,.icon-sticky-note:before{content:"\f249"} +.oc-icon-sticky-note-o:before,.icon-sticky-note-o:before{content:"\f24a"} +.oc-icon-cc-jcb:before,.icon-cc-jcb:before{content:"\f24b"} +.oc-icon-cc-diners-club:before,.icon-cc-diners-club:before{content:"\f24c"} +.oc-icon-clone:before,.icon-clone:before{content:"\f24d"} +.oc-icon-balance-scale:before,.icon-balance-scale:before{content:"\f24e"} +.oc-icon-hourglass-o:before,.icon-hourglass-o:before{content:"\f250"} +.oc-icon-hourglass-1:before,.icon-hourglass-1:before,.oc-icon-hourglass-start:before,.icon-hourglass-start:before{content:"\f251"} +.oc-icon-hourglass-2:before,.icon-hourglass-2:before,.oc-icon-hourglass-half:before,.icon-hourglass-half:before{content:"\f252"} +.oc-icon-hourglass-3:before,.icon-hourglass-3:before,.oc-icon-hourglass-end:before,.icon-hourglass-end:before{content:"\f253"} +.oc-icon-hourglass:before,.icon-hourglass:before{content:"\f254"} +.oc-icon-hand-grab-o:before,.icon-hand-grab-o:before,.oc-icon-hand-rock-o:before,.icon-hand-rock-o:before{content:"\f255"} +.oc-icon-hand-stop-o:before,.icon-hand-stop-o:before,.oc-icon-hand-paper-o:before,.icon-hand-paper-o:before{content:"\f256"} +.oc-icon-hand-scissors-o:before,.icon-hand-scissors-o:before{content:"\f257"} +.oc-icon-hand-lizard-o:before,.icon-hand-lizard-o:before{content:"\f258"} +.oc-icon-hand-spock-o:before,.icon-hand-spock-o:before{content:"\f259"} +.oc-icon-hand-pointer-o:before,.icon-hand-pointer-o:before{content:"\f25a"} +.oc-icon-hand-peace-o:before,.icon-hand-peace-o:before{content:"\f25b"} +.oc-icon-trademark:before,.icon-trademark:before{content:"\f25c"} +.oc-icon-registered:before,.icon-registered:before{content:"\f25d"} +.oc-icon-creative-commons:before,.icon-creative-commons:before{content:"\f25e"} +.oc-icon-gg:before,.icon-gg:before{content:"\f260"} +.oc-icon-gg-circle:before,.icon-gg-circle:before{content:"\f261"} +.oc-icon-tripadvisor:before,.icon-tripadvisor:before{content:"\f262"} +.oc-icon-odnoklassniki:before,.icon-odnoklassniki:before{content:"\f263"} +.oc-icon-odnoklassniki-square:before,.icon-odnoklassniki-square:before{content:"\f264"} +.oc-icon-get-pocket:before,.icon-get-pocket:before{content:"\f265"} +.oc-icon-wikipedia-w:before,.icon-wikipedia-w:before{content:"\f266"} +.oc-icon-safari:before,.icon-safari:before{content:"\f267"} +.oc-icon-chrome:before,.icon-chrome:before{content:"\f268"} +.oc-icon-firefox:before,.icon-firefox:before{content:"\f269"} +.oc-icon-opera:before,.icon-opera:before{content:"\f26a"} +.oc-icon-internet-explorer:before,.icon-internet-explorer:before{content:"\f26b"} +.oc-icon-tv:before,.icon-tv:before,.oc-icon-television:before,.icon-television:before{content:"\f26c"} +.oc-icon-contao:before,.icon-contao:before{content:"\f26d"} +.oc-icon-500px:before,.icon-500px:before{content:"\f26e"} +.oc-icon-amazon:before,.icon-amazon:before{content:"\f270"} +.oc-icon-calendar-plus-o:before,.icon-calendar-plus-o:before{content:"\f271"} +.oc-icon-calendar-minus-o:before,.icon-calendar-minus-o:before{content:"\f272"} +.oc-icon-calendar-times-o:before,.icon-calendar-times-o:before{content:"\f273"} +.oc-icon-calendar-check-o:before,.icon-calendar-check-o:before{content:"\f274"} +.oc-icon-industry:before,.icon-industry:before{content:"\f275"} +.oc-icon-map-pin:before,.icon-map-pin:before{content:"\f276"} +.oc-icon-map-signs:before,.icon-map-signs:before{content:"\f277"} +.oc-icon-map-o:before,.icon-map-o:before{content:"\f278"} +.oc-icon-map:before,.icon-map:before{content:"\f279"} +.oc-icon-commenting:before,.icon-commenting:before{content:"\f27a"} +.oc-icon-commenting-o:before,.icon-commenting-o:before{content:"\f27b"} +.oc-icon-houzz:before,.icon-houzz:before{content:"\f27c"} +.oc-icon-vimeo:before,.icon-vimeo:before{content:"\f27d"} +.oc-icon-black-tie:before,.icon-black-tie:before{content:"\f27e"} +.oc-icon-fonticons:before,.icon-fonticons:before{content:"\f280"} .close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)} .close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)} button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none} -@font-face{font-family:'FontAwesome';src:url('../ui/font/fontawesome-webfont.eot?v=1.0.0');src:url('../ui/font/fontawesome-webfont.eot?#iefix&v=1.0.0') format('embedded-opentype'),url('../ui/font/fontawesome-webfont.woff?v=1.0.0') format('woff'),url('../ui/font/fontawesome-webfont.ttf?v=1.0.0') format('truetype'),url('../ui/font/fontawesome-webfont.svg#fontawesomeregular?v=1.0.0') format('svg');font-weight:normal;font-style:normal} +@font-face{font-family:'FontAwesome';src:url('../ui/font/fontawesome-webfont.eot?v=1.0.1');src:url('../ui/font/fontawesome-webfont.eot?#iefix&v=1.0.1') format('embedded-opentype'),url('../ui/font/fontawesome-webfont.woff?v=1.0.1') format('woff'),url('../ui/font/fontawesome-webfont.ttf?v=1.0.1') format('truetype'),url('../ui/font/fontawesome-webfont.svg#fontawesomeregular?v=1.0.1') format('svg');font-weight:normal;font-style:normal} [class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0} [class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none} [class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em} diff --git a/modules/system/assets/js/lang/lang.hu.js b/modules/system/assets/js/lang/lang.hu.js index aafe3d0bd..6899a1ca5 100644 --- a/modules/system/assets/js/lang/lang.hu.js +++ b/modules/system/assets/js/lang/lang.hu.js @@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {} if ($.oc.langMessages === undefined) $.oc.langMessages = {} $.oc.langMessages['hu'] = $.extend( $.oc.langMessages['hu'] || {}, - {"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}} + {"markdowneditor":{"formatting":"Forr\u00e1sk\u00f3d","quote":"Id\u00e9zet","code":"K\u00f3d","header1":"F\u0151c\u00edm 1","header2":"F\u0151c\u00edm 2","header3":"F\u0151c\u00edm 3","header4":"F\u0151c\u00edm 4","header5":"F\u0151c\u00edm 5","header6":"F\u0151c\u00edm 6","bold":"F\u00e9lk\u00f6v\u00e9r","italic":"D\u00f6lt","unorderedlist":"Rendezett lista","orderedlist":"Sz\u00e1mozott lista","video":"Vide\u00f3","image":"K\u00e9p","link":"Hivatkoz\u00e1s","horizontalrule":"Vonal besz\u00far\u00e1sa","fullscreen":"Teljes k\u00e9perny\u0151","preview":"El\u0151n\u00e9zet"},"mediamanager":{"insert_link":"Hivatkoz\u00e1s besz\u00far\u00e1sa","insert_image":"K\u00e9p besz\u00far\u00e1sa","insert_video":"Vide\u00f3 besz\u00far\u00e1sa","insert_audio":"Audi\u00f3 besz\u00far\u00e1sa","invalid_file_empty_insert":"Hivatkoz\u00e1s k\u00e9sz\u00edt\u00e9s\u00e9hez jel\u00f6lj\u00f6n ki egy sz\u00f6vegr\u00e9szt.","invalid_file_single_insert":"K\u00e9rj\u00fck jel\u00f6lj\u00f6n ki egy f\u00e1jlt.","invalid_image_empty_insert":"V\u00e1lasszon ki legal\u00e1bb egy k\u00e9pet a besz\u00far\u00e1shoz.","invalid_video_empty_insert":"V\u00e1lasszon ki legal\u00e1bb egy vide\u00f3t a besz\u00far\u00e1shoz.","invalid_audio_empty_insert":"V\u00e1lasszon ki legal\u00e1bb egy audi\u00f3t a besz\u00far\u00e1shoz."},"alert":{"confirm_button_text":"OK","cancel_button_text":"M\u00e9gsem"}} ); \ No newline at end of file diff --git a/modules/system/assets/ui/docs/icon.md b/modules/system/assets/ui/docs/icon.md new file mode 100644 index 000000000..4c5d9b441 --- /dev/null +++ b/modules/system/assets/ui/docs/icon.md @@ -0,0 +1,995 @@ +Provides icons of various descriptions + +## Usage + +### Inline icon + +Place Font Autumn icons just about anywhere with the `` tag. + +
    + icon-camera-retro +
    + +> **Note**: Icon classes are echoed via CSS :before. + +### With buttons + + + Refresh + + + Checkout + + + Comment + + + Delete + + + Settings + + + More Info + + +## Available icons + +### Web Application Icons + +
    +
      +
    • icon-adjust
    • +
    • icon-anchor
    • +
    • icon-archive
    • +
    • icon-area-chart
    • +
    • icon-arrows
    • +
    • icon-arrows-h
    • +
    • icon-arrows-v
    • +
    • icon-asterisk
    • +
    • icon-at
    • +
    • icon-balance-scale
    • +
    • icon-ban
    • +
    • icon-bar-chart
    • +
    • icon-barcode
    • +
    • icon-bars
    • +
    • icon-battery-empty
    • +
    • icon-battery-full
    • +
    • icon-battery-half
    • +
    • icon-battery-quarter
    • +
    • icon-battery-three-quarters
    • +
    • icon-bed
    • +
    • icon-beer
    • +
    • icon-bell
    • +
    • icon-bell-o
    • +
    • icon-bell-slash
    • +
    • icon-bell-slash-o
    • +
    • icon-bicycle
    • +
    • icon-binoculars
    • +
    • icon-birthday-cake
    • +
    • icon-bolt
    • +
    • icon-bomb
    • +
    • icon-book
    • +
    • icon-bookmark
    • +
    • icon-bookmark-o
    • +
    • icon-briefcase
    • +
    • icon-bug
    • +
    • icon-building
    • +
    • icon-building-o
    • +
    • icon-bullhorn
    • +
    • icon-bullseye
    • +
    • icon-bus
    • +
    • icon-calculator
    • +
    • icon-calendar
    • +
    • icon-calendar-check-o
    • +
    • icon-calendar-minus-o
    • +
    • icon-calendar-o
    • +
    • icon-calendar-plus-o
    • +
    • icon-calendar-times-o
    • +
    • icon-camera
    • +
    • icon-camera-retro
    • +
    • icon-car
    • +
    • icon-caret-square-o-down
    • +
    • icon-caret-square-o-left
    • +
    • icon-caret-square-o-right
    • +
    • icon-caret-square-o-up
    • +
    • icon-cart-arrow-down
    • +
    • icon-cart-plus
    • +
    • icon-cc
    • +
    • icon-certificate
    • +
    • icon-check
    • +
    • icon-check-circle
    • +
    • icon-check-circle-o
    • +
    • icon-check-square
    • +
    • icon-check-square-o
    • +
    • icon-child
    • +
    • icon-circle
    • +
    • icon-circle-o
    • +
    • icon-circle-o-notch
    • +
    • icon-circle-thin
    • +
    • icon-clock-o
    • +
    • icon-clone
    • +
    • icon-cloud
    • +
    • icon-cloud-download
    • +
    • icon-cloud-upload
    • +
    • icon-code
    • +
    • icon-code-fork
    • +
    • icon-coffee
    • +
    • icon-cog
    • +
    • icon-cogs
    • +
    • icon-comment
    • +
    • icon-comment-o
    • +
    • icon-commenting
    • +
    • icon-commenting-o
    • +
    +
      +
    • icon-comments
    • +
    • icon-comments-o
    • +
    • icon-compass
    • +
    • icon-copyright
    • +
    • icon-creative-commons
    • +
    • icon-credit-card
    • +
    • icon-crop
    • +
    • icon-crosshairs
    • +
    • icon-cube
    • +
    • icon-cubes
    • +
    • icon-cutlery
    • +
    • icon-database
    • +
    • icon-desktop
    • +
    • icon-diamond
    • +
    • icon-dot-circle-o
    • +
    • icon-download
    • +
    • icon-ellipsis-h
    • +
    • icon-ellipsis-v
    • +
    • icon-envelope
    • +
    • icon-envelope-o
    • +
    • icon-envelope-square
    • +
    • icon-eraser
    • +
    • icon-exchange
    • +
    • icon-exclamation
    • +
    • icon-exclamation-circle
    • +
    • icon-exclamation-triangle
    • +
    • icon-external-link
    • +
    • icon-external-link-square
    • +
    • icon-eye
    • +
    • icon-eye-slash
    • +
    • icon-eyedropper
    • +
    • icon-fax
    • +
    • icon-female
    • +
    • icon-fighter-jet
    • +
    • icon-file-archive-o
    • +
    • icon-file-audio-o
    • +
    • icon-file-code-o
    • +
    • icon-file-excel-o
    • +
    • icon-file-image-o
    • +
    • icon-file-pdf-o
    • +
    • icon-file-powerpoint-o
    • +
    • icon-file-video-o
    • +
    • icon-file-word-o
    • +
    • icon-film
    • +
    • icon-filter
    • +
    • icon-fire
    • +
    • icon-fire-extinguisher
    • +
    • icon-flag
    • +
    • icon-flag-checkered
    • +
    • icon-flag-o
    • +
    • icon-flask
    • +
    • icon-folder
    • +
    • icon-folder-o
    • +
    • icon-folder-open
    • +
    • icon-folder-open-o
    • +
    • icon-frown-o
    • +
    • icon-futbol-o
    • +
    • icon-gamepad
    • +
    • icon-gavel
    • +
    • icon-gift
    • +
    • icon-glass
    • +
    • icon-globe
    • +
    • icon-graduation-cap
    • +
    • icon-hand-lizard-o
    • +
    • icon-hand-paper-o
    • +
    • icon-hand-peace-o
    • +
    • icon-hand-pointer-o
    • +
    • icon-hand-rock-o
    • +
    • icon-hand-scissors-o
    • +
    • icon-hand-spock-o
    • +
    • icon-hdd-o
    • +
    • icon-headphones
    • +
    • icon-heart
    • +
    • icon-heart-o
    • +
    • icon-heartbeat
    • +
    • icon-history
    • +
    • icon-home
    • +
    • icon-hourglass
    • +
    • icon-hourglass-end
    • +
    • icon-hourglass-half
    • +
    • icon-hourglass-o
    • +
    • icon-hourglass-start
    • +
    +
      +
    • icon-i-cursor
    • +
    • icon-inbox
    • +
    • icon-industry
    • +
    • icon-info
    • +
    • icon-info-circle
    • +
    • icon-key
    • +
    • icon-keyboard-o
    • +
    • icon-language
    • +
    • icon-laptop
    • +
    • icon-leaf
    • +
    • icon-lemon-o
    • +
    • icon-level-down
    • +
    • icon-level-up
    • +
    • icon-life-ring
    • +
    • icon-lightbulb-o
    • +
    • icon-line-chart
    • +
    • icon-location-arrow
    • +
    • icon-lock
    • +
    • icon-magic
    • +
    • icon-magnet
    • +
    • icon-male
    • +
    • icon-map
    • +
    • icon-map-marker
    • +
    • icon-map-o
    • +
    • icon-map-pin
    • +
    • icon-map-signs
    • +
    • icon-meh-o
    • +
    • icon-microphone
    • +
    • icon-microphone-slash
    • +
    • icon-minus
    • +
    • icon-minus-circle
    • +
    • icon-minus-square
    • +
    • icon-minus-square-o
    • +
    • icon-mobile
    • +
    • icon-money
    • +
    • icon-moon-o
    • +
    • icon-motorcycle
    • +
    • icon-mouse-pointer
    • +
    • icon-music
    • +
    • icon-newspaper-o
    • +
    • icon-object-group
    • +
    • icon-object-ungroup
    • +
    • icon-paint-brush
    • +
    • icon-paper-plane
    • +
    • icon-paper-plane-o
    • +
    • icon-paw
    • +
    • icon-pencil
    • +
    • icon-pencil-square
    • +
    • icon-pencil-square-o
    • +
    • icon-phone
    • +
    • icon-phone-square
    • +
    • icon-picture-o
    • +
    • icon-pie-chart
    • +
    • icon-plane
    • +
    • icon-plug
    • +
    • icon-plus
    • +
    • icon-plus-circle
    • +
    • icon-plus-square
    • +
    • icon-plus-square-o
    • +
    • icon-power-off
    • +
    • icon-print
    • +
    • icon-puzzle-piece
    • +
    • icon-qrcode
    • +
    • icon-question
    • +
    • icon-question-circle
    • +
    • icon-quote-left
    • +
    • icon-quote-right
    • +
    • icon-random
    • +
    • icon-recycle
    • +
    • icon-refresh
    • +
    • icon-registered
    • +
    • icon-reply
    • +
    • icon-reply-all
    • +
    • icon-retweet
    • +
    • icon-road
    • +
    • icon-rocket
    • +
    • icon-rss
    • +
    • icon-rss-square
    • +
    • icon-search
    • +
    • icon-search-minus
    • +
    • icon-search-plus
    • +
    • icon-server
    • +
    +
      +
    • icon-share
    • +
    • icon-share-alt
    • +
    • icon-share-alt-square
    • +
    • icon-share-square
    • +
    • icon-share-square-o
    • +
    • icon-shield
    • +
    • icon-ship
    • +
    • icon-shopping-cart
    • +
    • icon-sign-in
    • +
    • icon-sign-out
    • +
    • icon-signal
    • +
    • icon-sitemap
    • +
    • icon-sliders
    • +
    • icon-smile-o
    • +
    • icon-sort
    • +
    • icon-sort-alpha-asc
    • +
    • icon-sort-alpha-desc
    • +
    • icon-sort-amount-asc
    • +
    • icon-sort-amount-desc
    • +
    • icon-sort-asc
    • +
    • icon-sort-desc
    • +
    • icon-sort-numeric-asc
    • +
    • icon-sort-numeric-desc
    • +
    • icon-space-shuttle
    • +
    • icon-spinner
    • +
    • icon-spoon
    • +
    • icon-square
    • +
    • icon-square-o
    • +
    • icon-star
    • +
    • icon-star-half
    • +
    • icon-star-half-o
    • +
    • icon-star-o
    • +
    • icon-sticky-note
    • +
    • icon-sticky-note-o
    • +
    • icon-street-view
    • +
    • icon-suitcase
    • +
    • icon-sun-o
    • +
    • icon-tablet
    • +
    • icon-tachometer
    • +
    • icon-tag
    • +
    • icon-tags
    • +
    • icon-tasks
    • +
    • icon-taxi
    • +
    • icon-television
    • +
    • icon-terminal
    • +
    • icon-thumb-tack
    • +
    • icon-thumbs-down
    • +
    • icon-thumbs-o-down
    • +
    • icon-thumbs-o-up
    • +
    • icon-thumbs-up
    • +
    • icon-ticket
    • +
    • icon-times
    • +
    • icon-times-circle
    • +
    • icon-times-circle-o
    • +
    • icon-tint
    • +
    • icon-toggle-off
    • +
    • icon-toggle-on
    • +
    • icon-trademark
    • +
    • icon-trash
    • +
    • icon-trash-o
    • +
    • icon-tree
    • +
    • icon-trophy
    • +
    • icon-truck
    • +
    • icon-tty
    • +
    • icon-umbrella
    • +
    • icon-university
    • +
    • icon-unlock
    • +
    • icon-unlock-alt
    • +
    • icon-upload
    • +
    • icon-user
    • +
    • icon-user-plus
    • +
    • icon-user-secret
    • +
    • icon-user-times
    • +
    • icon-users
    • +
    • icon-video-camera
    • +
    • icon-volume-down
    • +
    • icon-volume-off
    • +
    • icon-volume-up
    • +
    • icon-wheelchair
    • +
    • icon-wifi
    • +
    • icon-wrench
    • +
    +
    + +### Medical Icons + +
    +
      +
    • icon-ambulance
    • +
    • icon-h-square
    • +
    • icon-heart
    • +
    +
      +
    • icon-heart-o
    • +
    • icon-heartbeat
    • +
    • icon-hospital-o
    • +
    +
      +
    • icon-medkit
    • +
    • icon-plus-square
    • +
    • icon-stethoscope
    • +
    +
      +
    • icon-user-md
    • +
    • icon-wheelchair
    • +
    +
    + +### Text Editor Icons + +
    +
      +
    • icon-align-center
    • +
    • icon-align-justify
    • +
    • icon-align-left
    • +
    • icon-align-right
    • +
    • icon-bold
    • +
    • icon-chain-broken
    • +
    • icon-clipboard
    • +
    • icon-columns
    • +
    • icon-eraser
    • +
    • icon-file
    • +
    • icon-file-o
    • +
    +
      +
    • icon-file-text
    • +
    • icon-file-text-o
    • +
    • icon-files-o
    • +
    • icon-floppy-o
    • +
    • icon-font
    • +
    • icon-header
    • +
    • icon-indent
    • +
    • icon-italic
    • +
    • icon-link
    • +
    • icon-list
    • +
    +
      +
    • icon-list-alt
    • +
    • icon-list-ol
    • +
    • icon-list-ul
    • +
    • icon-outdent
    • +
    • icon-paperclip
    • +
    • icon-paragraph
    • +
    • icon-repeat
    • +
    • icon-scissors
    • +
    • icon-strikethrough
    • +
    • icon-subscript
    • +
    +
      +
    • icon-superscript
    • +
    • icon-table
    • +
    • icon-text-height
    • +
    • icon-text-width
    • +
    • icon-th
    • +
    • icon-th-large
    • +
    • icon-th-list
    • +
    • icon-underline
    • +
    • icon-undo
    • +
    +
    + +### Spinner Icons + +
    +
      +
    • icon-circle-o-notch
    • +
    • icon-cog
    • +
    +
      +
    • icon-refresh
    • +
    +
      +
    • icon-spinner
    • +
    +
      +
    +
    + +### File Type Icons + +
    +
      +
    • icon-file
    • +
    • icon-file-archive-o
    • +
    • icon-file-audio-o
    • +
    • icon-file-code-o
    • +
    +
      +
    • icon-file-excel-o
    • +
    • icon-file-image-o
    • +
    • icon-file-o
    • +
    +
      +
    • icon-file-pdf-o
    • +
    • icon-file-powerpoint-o
    • +
    • icon-file-text
    • +
    +
      +
    • icon-file-text-o
    • +
    • icon-file-video-o
    • +
    • icon-file-word-o
    • +
    +
    + +### Directional Icons + +
    +
      +
    • icon-angle-double-down
    • +
    • icon-angle-double-left
    • +
    • icon-angle-double-right
    • +
    • icon-angle-double-up
    • +
    • icon-angle-down
    • +
    • icon-angle-left
    • +
    • icon-angle-right
    • +
    • icon-angle-up
    • +
    • icon-arrow-circle-down
    • +
    • icon-arrow-circle-left
    • +
    • icon-arrow-circle-o-down
    • +
    • icon-arrow-circle-o-left
    • +
    • icon-arrow-circle-o-right
    • +
    +
      +
    • icon-arrow-circle-o-up
    • +
    • icon-arrow-circle-right
    • +
    • icon-arrow-circle-up
    • +
    • icon-arrow-down
    • +
    • icon-arrow-left
    • +
    • icon-arrow-right
    • +
    • icon-arrow-up
    • +
    • icon-arrows
    • +
    • icon-arrows-alt
    • +
    • icon-arrows-h
    • +
    • icon-arrows-v
    • +
    • icon-caret-down
    • +
    +
      +
    • icon-caret-left
    • +
    • icon-caret-right
    • +
    • icon-caret-square-o-down
    • +
    • icon-caret-square-o-left
    • +
    • icon-caret-square-o-right
    • +
    • icon-caret-square-o-up
    • +
    • icon-caret-up
    • +
    • icon-chevron-circle-down
    • +
    • icon-chevron-circle-left
    • +
    • icon-chevron-circle-right
    • +
    • icon-chevron-circle-up
    • +
    • icon-chevron-down
    • +
    +
      +
    • icon-chevron-left
    • +
    • icon-chevron-right
    • +
    • icon-chevron-up
    • +
    • icon-exchange
    • +
    • icon-hand-o-down
    • +
    • icon-hand-o-left
    • +
    • icon-hand-o-right
    • +
    • icon-hand-o-up
    • +
    • icon-long-arrow-down
    • +
    • icon-long-arrow-left
    • +
    • icon-long-arrow-right
    • +
    • icon-long-arrow-up
    • +
    +
    + +### Video Player Icons + +
    +
      +
    • icon-arrows-alt
    • +
    • icon-backward
    • +
    • icon-compress
    • +
    • icon-eject
    • +
    • icon-expand
    • +
    +
      +
    • icon-fast-backward
    • +
    • icon-fast-forward
    • +
    • icon-forward
    • +
    • icon-pause
    • +
    +
      +
    • icon-play
    • +
    • icon-play-circle
    • +
    • icon-play-circle-o
    • +
    • icon-random
    • +
    +
      +
    • icon-step-backward
    • +
    • icon-step-forward
    • +
    • icon-stop
    • +
    • icon-youtube-play
    • +
    +
    + +### Form Control Icons + +
    +
      +
    • icon-check-square
    • +
    • icon-check-square-o
    • +
    • icon-circle
    • +
    +
      +
    • icon-circle-o
    • +
    • icon-dot-circle-o
    • +
    • icon-minus-square
    • +
    +
      +
    • icon-minus-square-o
    • +
    • icon-plus-square
    • +
    • icon-plus-square-o
    • +
    +
      +
    • icon-square
    • +
    • icon-square-o
    • +
    +
    + +### Transportation Icons + +
    +
      +
    • icon-ambulance
    • +
    • icon-bicycle
    • +
    • icon-bus
    • +
    • icon-car
    • +
    +
      +
    • icon-fighter-jet
    • +
    • icon-motorcycle
    • +
    • icon-plane
    • +
    • icon-rocket
    • +
    +
      +
    • icon-ship
    • +
    • icon-space-shuttle
    • +
    • icon-subway
    • +
    • icon-taxi
    • +
    +
      +
    • icon-train
    • +
    • icon-truck
    • +
    • icon-wheelchair
    • +
    +
    + +### Chart Icons + +
    +
      +
    • icon-area-chart
    • +
    • icon-bar-chart
    • +
    +
      +
    • icon-line-chart
    • +
    +
      +
    • icon-pie-chart
    • +
    +
      +
    +
    + +### Brand Icons + +
    +
      +
    • icon-500px
    • +
    • icon-adn
    • +
    • icon-amazon
    • +
    • icon-android
    • +
    • icon-angellist
    • +
    • icon-apple
    • +
    • icon-behance
    • +
    • icon-behance-square
    • +
    • icon-bitbucket
    • +
    • icon-bitbucket-square
    • +
    • icon-black-tie
    • +
    • icon-btc
    • +
    • icon-buysellads
    • +
    • icon-cc-amex
    • +
    • icon-cc-diners-club
    • +
    • icon-cc-discover
    • +
    • icon-cc-jcb
    • +
    • icon-cc-mastercard
    • +
    • icon-cc-paypal
    • +
    • icon-cc-stripe
    • +
    • icon-cc-visa
    • +
    • icon-chrome
    • +
    • icon-codepen
    • +
    • icon-connectdevelop
    • +
    • icon-contao
    • +
    • icon-css3
    • +
    • icon-dashcube
    • +
    • icon-delicious
    • +
    • icon-deviantart
    • +
    • icon-digg
    • +
    • icon-dribbble
    • +
    • icon-dropbox
    • +
    • icon-drupal
    • +
    • icon-empire
    • +
    • icon-expeditedssl
    • +
    +
      +
    • icon-facebook
    • +
    • icon-facebook-official
    • +
    • icon-facebook-square
    • +
    • icon-firefox
    • +
    • icon-flickr
    • +
    • icon-fonticons
    • +
    • icon-forumbee
    • +
    • icon-foursquare
    • +
    • icon-get-pocket
    • +
    • icon-gg
    • +
    • icon-gg-circle
    • +
    • icon-git
    • +
    • icon-git-square
    • +
    • icon-github
    • +
    • icon-github-alt
    • +
    • icon-github-square
    • +
    • icon-google
    • +
    • icon-google-plus
    • +
    • icon-google-plus-square
    • +
    • icon-google-wallet
    • +
    • icon-gratipay
    • +
    • icon-hacker-news
    • +
    • icon-houzz
    • +
    • icon-html5
    • +
    • icon-instagram
    • +
    • icon-internet-explorer
    • +
    • icon-ioxhost
    • +
    • icon-joomla
    • +
    • icon-jsfiddle
    • +
    • icon-lastfm
    • +
    • icon-lastfm-square
    • +
    • icon-leanpub
    • +
    • icon-linkedin
    • +
    • icon-linkedin-square
    • +
    +
      +
    • icon-linux
    • +
    • icon-maxcdn
    • +
    • icon-meanpath
    • +
    • icon-medium
    • +
    • icon-odnoklassniki
    • +
    • icon-odnoklassniki-square
    • +
    • icon-opencart
    • +
    • icon-openid
    • +
    • icon-opera
    • +
    • icon-optin-monster
    • +
    • icon-pagelines
    • +
    • icon-paypal
    • +
    • icon-pied-piper
    • +
    • icon-pied-piper-alt
    • +
    • icon-pinterest
    • +
    • icon-pinterest-p
    • +
    • icon-pinterest-square
    • +
    • icon-qq
    • +
    • icon-rebel
    • +
    • icon-reddit
    • +
    • icon-reddit-square
    • +
    • icon-renren
    • +
    • icon-safari
    • +
    • icon-sellsy
    • +
    • icon-share-alt
    • +
    • icon-share-alt-square
    • +
    • icon-shirtsinbulk
    • +
    • icon-simplybuilt
    • +
    • icon-skyatlas
    • +
    • icon-skype
    • +
    • icon-slack
    • +
    • icon-slideshare
    • +
    • icon-soundcloud
    • +
    • icon-spotify
    • +
    +
      +
    • icon-stack-exchange
    • +
    • icon-stack-overflow
    • +
    • icon-steam
    • +
    • icon-steam-square
    • +
    • icon-stumbleupon
    • +
    • icon-stumbleupon-circle
    • +
    • icon-tencent-weibo
    • +
    • icon-trello
    • +
    • icon-tripadvisor
    • +
    • icon-tumblr
    • +
    • icon-tumblr-square
    • +
    • icon-twitch
    • +
    • icon-twitter
    • +
    • icon-twitter-square
    • +
    • icon-viacoin
    • +
    • icon-vimeo
    • +
    • icon-vimeo-square
    • +
    • icon-vine
    • +
    • icon-vk
    • +
    • icon-weibo
    • +
    • icon-weixin
    • +
    • icon-whatsapp
    • +
    • icon-wikipedia-w
    • +
    • icon-windows
    • +
    • icon-wordpress
    • +
    • icon-xing
    • +
    • icon-xing-square
    • +
    • icon-y-combinator
    • +
    • icon-yahoo
    • +
    • icon-yelp
    • +
    • icon-youtube
    • +
    • icon-youtube-play
    • +
    • icon-youtube-square
    • +
    +
    + +### Hand Icons + +
    +
      +
    • icon-hand-lizard-o
    • +
    • icon-hand-o-down
    • +
    • icon-hand-o-left
    • +
    • icon-hand-o-right
    • +
    +
      +
    • icon-hand-o-up
    • +
    • icon-hand-paper-o
    • +
    • icon-hand-peace-o
    • +
    • icon-hand-pointer-o
    • +
    +
      +
    • icon-hand-rock-o
    • +
    • icon-hand-scissors-o
    • +
    • icon-hand-spock-o
    • +
    • icon-thumbs-down
    • +
    +
      +
    • icon-thumbs-o-down
    • +
    • icon-thumbs-o-up
    • +
    • icon-thumbs-up
    • +
    +
    + +### Payment Icons + +
    +
      +
    • icon-cc-amex
    • +
    • icon-cc-diners-club
    • +
    • icon-cc-discover
    • +
    +
      +
    • icon-cc-jcb
    • +
    • icon-cc-mastercard
    • +
    • icon-cc-paypal
    • +
    +
      +
    • icon-cc-stripe
    • +
    • icon-cc-visa
    • +
    • icon-credit-card
    • +
    +
      +
    • icon-google-wallet
    • +
    • icon-paypal
    • +
    +
    + +### Currency Icons + +
    +
      +
    • icon-btc
    • +
    • icon-eur
    • +
    • icon-gbp
    • +
    • icon-gg
    • +
    +
      +
    • icon-gg-circle
    • +
    • icon-ils
    • +
    • icon-inr
    • +
    +
      +
    • icon-jpy
    • +
    • icon-krw
    • +
    • icon-money
    • +
    +
      +
    • icon-rub
    • +
    • icon-try
    • +
    • icon-usd
    • +
    +
    + +### Gender Icons + +
    +
      +
    • icon-genderless
    • +
    • icon-mars
    • +
    • icon-mars-double
    • +
    • icon-mars-stroke
    • +
    +
      +
    • icon-mars-stroke-h
    • +
    • icon-mars-stroke-v
    • +
    • icon-mercury
    • +
    +
      +
    • icon-neuter
    • +
    • icon-transgender
    • +
    • icon-transgender-alt
    • +
    +
      +
    • icon-venus
    • +
    • icon-venus-double
    • +
    • icon-venus-mars
    • +
    +
    + + + + + + + \ No newline at end of file diff --git a/modules/system/assets/ui/font/FontAwesome.otf b/modules/system/assets/ui/font/FontAwesome.otf index f7936cc1e789eea5438d576d6b12de20191da09d..681bdd4d4c8dddbaeb4d4f2a1f58c38cad92afe0 100644 GIT binary patch delta 44736 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 delta 32455 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 ChtR+P diff --git a/modules/system/assets/ui/font/fontawesome-webfont.eot b/modules/system/assets/ui/font/fontawesome-webfont.eot index 33b2bb80055cc480e797de704925acaba4ba7d7d..a30335d748c65c0bab5880b4e6dba53f5c79206c 100644 GIT binary patch literal 68875 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

    7r8$?kb-D3z%-c} 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 F002TuuHFCu literal 60767 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%0DKehr}RFC`2XTB_?==0w^)u1m5PYii@6f)6_5Ydu zv+NIZ_(Rt}Q++LT5!n8!J4x!>sE&v_3*cXat{Zq5;17w;B6$epw}$Rg`0nFJg5D-L zYvw@(goc5TeJjM($AJAZxZHZN}RzBcP0=_>ZI6WVGU zO#Nk-YqZTa3{!84P0K~GsI#32<+_AsXU43wILwZS(8n%S9)lP!Dg$$e2$$9$E?^Nj zql4do#+a8qEP(bD2)DpP|$dp<`TZ#bY6^~7Xv_Lle)77^OsVhMOm(@ z??8O8kA%}ZWpR&2v!7qFSw@TF6d*=9YT^Rtk(n8p=CQWvt1Om=n&5uP;GiT6 zMRvbm39kbp*KB`qoVg12w52Z)T}`X41P>D|q_%K#zuhwb+BpEogY0E)KnSy#@+(m5 z20@LG@LUEvk`I|OIUV^^0_YtG9AElBS!Dsh%k^P9r0moJ25Lkm-gh#igwBDhAOj0!EF&8MxV^-m1U1MEd?H7} zL;r;tfFIT|ei3-Z@gyM=!%Ba7Pa626JRAA`V<2D<{RLRT@0o=bE)XF)nFtUL67`2L z{?_Qz_`Yy2t+I)?9&z#z__Q%L3pnhN}U z_rN#WU)kD59D4whbSYERHY01jM7id50EuI1ctl?<_IT=Y5vP>(sNNkB&U5&F&^kBhm5y{o!y!F+4wdxXoy;!4$W`?_nL(+bK_QDAMUV1O0AwZ| z6j)s}9YEZbY-C^Y)9Ej`aS&~{sXCG2SS3ce$EY;Yv-c8TlrD$C85ATlLZpGP_YWfi z`RQ?z1@zIfa{yqfsUDMEPpwuX%XHdO+ASb3EPi1fBPocvfgsC0xa^CG2SWBPWQ&GS zpCXPti8b>WkYbf#Vg%A?&_UwUsUQE_t4GX?7QqUpKJ2Iw#%)Q4Ft(`9Ja&Yk{C@38 z@%T`)#wWy(kKfEH;ZBQ(m*Iq&L=<)4D7tNO{SsA4Fp4D?(Ex6nQS&f3TK|atgj`fE z2|OX0(&(ZqxJd~IANX&dvX?U14_<~h2(lP6k^H8ep;2HW6oPo?U%v{M>|{sU~;p zLTv$OTx3H^4zNUn4wUfo>j{CEvTC@C+cw+cW*ABH6u@!M2EdBL?1GbL_#e;7YDBas zic?MTazk(khXSyPeDom_I~wkLv?Wr8<%egEfM!*M9^kl$>zsVzaP}S!gcD3;Czy#58RTm?`p)RTS8I<-sC3+*n{A)P*rU!@Npj`e{x9xsif2v zTW`{q3p^?A!Mk60Q{(FLt(&TVe9z z0-!PiOV02JcNeq?AbJaI+B9xC;LB=}Ho0vH(@;Qe0zq~-8ckOa!(u@Wou`p_TR|QT z38H`lJE$G{q1egUX@&v$x7wNLWD#j*!D58GLv^bT+jpdKBrK#SsQsWK(+RO40VA^w z0nA7MN1Y1Fc#5JkwD5TtHG1t;lo=i)U+kFG?1Jh11h9382!marrRE2eZh;JGh`wNO zQA_~n?%97HOKLA^#oG(5*bgSllS%rOc(S%Yj00cYR;!D9G_90{pfq7D4I*$k?byOV zR|epi%oIJ{ou`5zS!-_dnxOa{uNv)(luMo^5TCOItq}2}sxCztLEzBGS)Mf6dzaw< z!GweAgvFYJu&mH(Vl9HJBV%=Jz~~i%nDGIF9ncTET-AQ=fv{L11&K_;ei!iht(!De;ym|y7ksL|^5Ko~B-vSh80++s?unD}bZaYa@ zPH4M$&fw;xEGN3_H1vHW><%-+dg7dfW)F8$bB+h7sThoOtteO(v{&-+iK}r$%G))# z*Nhx^!ZMj1VeG?EkWg+0CYQSX1t96fV9^3c+9C393LU&CHsFCa1q99$`zTMsEWwLc zxsw1|A?k8-m8HCrk6;K7dhNDJN3R9iws%6vTq_}PtR2CZ8TG;ltZ4I}sU+^s8`P3F5QxrypG1-{ zGlr^7$Wsy(lo=xfC~BpKfg<2z4OEeEF@~x{Pi7O#CvqMJy+f+}=CB_$&IuEslB@s# J000000038FvZ??8 diff --git a/modules/system/assets/ui/font/fontawesome-webfont.svg b/modules/system/assets/ui/font/fontawesome-webfont.svg index 1ee89d436..6fd19abcb 100644 --- a/modules/system/assets/ui/font/fontawesome-webfont.svg +++ b/modules/system/assets/ui/font/fontawesome-webfont.svg @@ -399,7 +399,7 @@ - + @@ -411,8 +411,8 @@ - - + + @@ -459,7 +459,7 @@ - + @@ -483,13 +483,13 @@ - + - + @@ -523,7 +523,7 @@ - + @@ -531,18 +531,18 @@ - + - + - + - + @@ -556,10 +556,85 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/system/assets/ui/font/fontawesome-webfont.ttf b/modules/system/assets/ui/font/fontawesome-webfont.ttf index ed9372f8ea0fbaa04f42630a48887e4b38945345..d7994e13086b1ac1a216bd754c93e1bccd65f237 100644 GIT binary patch delta 19019 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 a{Y8oiTrq(w))2tr5G>B&2kvjAsQ&|VPX)FB delta 3717 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 b%7NbA42BxTcoSrlSuMv%Lh(uG6hi(FwBy){ diff --git a/modules/system/assets/ui/font/fontawesome-webfont.woff b/modules/system/assets/ui/font/fontawesome-webfont.woff index 8b280b98fa2fa261aa4b0f8fd061f772073ef83e..6fd4ede0f30f170eecb4156beb7235bf01fff00b 100644 GIT binary patch delta 61681 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 kgu|{=z_EPdwI%aS;AX3)Hq)$ delta 51819 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 diff --git a/modules/system/assets/ui/font/fontawesome-webfont.woff2 b/modules/system/assets/ui/font/fontawesome-webfont.woff2 index 3311d585145b1cc1b9581e914acbb32d8542b4f5..5560193ccc5d768df40766ba54491f1822ed683c 100644 GIT binary patch literal 64464 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 diff --git a/modules/system/assets/ui/less/icon.icons.less b/modules/system/assets/ui/less/icon.icons.less index e8aa537e9..8f0db3a5e 100644 --- a/modules/system/assets/ui/less/icon.icons.less +++ b/modules/system/assets/ui/less/icon.icons.less @@ -160,6 +160,7 @@ .oc-icon-github:before, .icon-github:before { content: @github; } .oc-icon-unlock:before, .icon-unlock:before { content: @unlock; } .oc-icon-credit-card:before, .icon-credit-card:before { content: @credit-card; } +.oc-icon-feed:before, .icon-feed:before, .oc-icon-rss:before, .icon-rss:before { content: @rss; } .oc-icon-hdd-o:before, .icon-hdd-o:before { content: @hdd-o; } .oc-icon-bullhorn:before, .icon-bullhorn:before { content: @bullhorn; } @@ -489,6 +490,8 @@ .oc-icon-empire:before, .icon-empire:before { content: @empire; } .oc-icon-git-square:before, .icon-git-square:before { content: @git-square; } .oc-icon-git:before, .icon-git:before { content: @git; } +.oc-icon-y-combinator-square:before, .icon-y-combinator-square:before, +.oc-icon-yc-square:before, .icon-yc-square:before, .oc-icon-hacker-news:before, .icon-hacker-news:before { content: @hacker-news; } .oc-icon-tencent-weibo:before, .icon-tencent-weibo:before { content: @tencent-weibo; } .oc-icon-qq:before, .icon-qq:before { content: @qq; } @@ -499,7 +502,6 @@ .oc-icon-send-o:before, .icon-send-o:before, .oc-icon-paper-plane-o:before, .icon-paper-plane-o:before { content: @paper-plane-o; } .oc-icon-history:before, .icon-history:before { content: @history; } -.oc-icon-genderless:before, .icon-genderless:before, .oc-icon-circle-thin:before, .icon-circle-thin:before { content: @circle-thin; } .oc-icon-header:before, .icon-header:before { content: @header; } .oc-icon-paragraph:before, .icon-paragraph:before { content: @paragraph; } @@ -570,6 +572,7 @@ .oc-icon-venus:before, .icon-venus:before { content: @venus; } .oc-icon-mars:before, .icon-mars:before { content: @mars; } .oc-icon-mercury:before, .icon-mercury:before { content: @mercury; } +.oc-icon-intersex:before, .icon-intersex:before, .oc-icon-transgender:before, .icon-transgender:before { content: @transgender; } .oc-icon-transgender-alt:before, .icon-transgender-alt:before { content: @transgender-alt; } .oc-icon-venus-double:before, .icon-venus-double:before { content: @venus-double; } @@ -579,6 +582,7 @@ .oc-icon-mars-stroke-v:before, .icon-mars-stroke-v:before { content: @mars-stroke-v; } .oc-icon-mars-stroke-h:before, .icon-mars-stroke-h:before { content: @mars-stroke-h; } .oc-icon-neuter:before, .icon-neuter:before { content: @neuter; } +.oc-icon-genderless:before, .icon-genderless:before { content: @genderless; } .oc-icon-facebook-official:before, .icon-facebook-official:before { content: @facebook-official; } .oc-icon-pinterest-p:before, .icon-pinterest-p:before { content: @pinterest-p; } .oc-icon-whatsapp:before, .icon-whatsapp:before { content: @whatsapp; } @@ -591,3 +595,80 @@ .oc-icon-train:before, .icon-train:before { content: @train; } .oc-icon-subway:before, .icon-subway:before { content: @subway; } .oc-icon-medium:before, .icon-medium:before { content: @medium; } +.oc-icon-yc:before, .icon-yc:before, +.oc-icon-y-combinator:before, .icon-y-combinator:before { content: @y-combinator; } +.oc-icon-optin-monster:before, .icon-optin-monster:before { content: @optin-monster; } +.oc-icon-opencart:before, .icon-opencart:before { content: @opencart; } +.oc-icon-expeditedssl:before, .icon-expeditedssl:before { content: @expeditedssl; } +.oc-icon-battery-4:before, .icon-battery-4:before, +.oc-icon-battery-full:before, .icon-battery-full:before { content: @battery-full; } +.oc-icon-battery-3:before, .icon-battery-3:before, +.oc-icon-battery-three-quarters:before, .icon-battery-three-quarters:before { content: @battery-three-quarters; } +.oc-icon-battery-2:before, .icon-battery-2:before, +.oc-icon-battery-half:before, .icon-battery-half:before { content: @battery-half; } +.oc-icon-battery-1:before, .icon-battery-1:before, +.oc-icon-battery-quarter:before, .icon-battery-quarter:before { content: @battery-quarter; } +.oc-icon-battery-0:before, .icon-battery-0:before, +.oc-icon-battery-empty:before, .icon-battery-empty:before { content: @battery-empty; } +.oc-icon-mouse-pointer:before, .icon-mouse-pointer:before { content: @mouse-pointer; } +.oc-icon-i-cursor:before, .icon-i-cursor:before { content: @i-cursor; } +.oc-icon-object-group:before, .icon-object-group:before { content: @object-group; } +.oc-icon-object-ungroup:before, .icon-object-ungroup:before { content: @object-ungroup; } +.oc-icon-sticky-note:before, .icon-sticky-note:before { content: @sticky-note; } +.oc-icon-sticky-note-o:before, .icon-sticky-note-o:before { content: @sticky-note-o; } +.oc-icon-cc-jcb:before, .icon-cc-jcb:before { content: @cc-jcb; } +.oc-icon-cc-diners-club:before, .icon-cc-diners-club:before { content: @cc-diners-club; } +.oc-icon-clone:before, .icon-clone:before { content: @clone; } +.oc-icon-balance-scale:before, .icon-balance-scale:before { content: @balance-scale; } +.oc-icon-hourglass-o:before, .icon-hourglass-o:before { content: @hourglass-o; } +.oc-icon-hourglass-1:before, .icon-hourglass-1:before, +.oc-icon-hourglass-start:before, .icon-hourglass-start:before { content: @hourglass-start; } +.oc-icon-hourglass-2:before, .icon-hourglass-2:before, +.oc-icon-hourglass-half:before, .icon-hourglass-half:before { content: @hourglass-half; } +.oc-icon-hourglass-3:before, .icon-hourglass-3:before, +.oc-icon-hourglass-end:before, .icon-hourglass-end:before { content: @hourglass-end; } +.oc-icon-hourglass:before, .icon-hourglass:before { content: @hourglass; } +.oc-icon-hand-grab-o:before, .icon-hand-grab-o:before, +.oc-icon-hand-rock-o:before, .icon-hand-rock-o:before { content: @hand-rock-o; } +.oc-icon-hand-stop-o:before, .icon-hand-stop-o:before, +.oc-icon-hand-paper-o:before, .icon-hand-paper-o:before { content: @hand-paper-o; } +.oc-icon-hand-scissors-o:before, .icon-hand-scissors-o:before { content: @hand-scissors-o; } +.oc-icon-hand-lizard-o:before, .icon-hand-lizard-o:before { content: @hand-lizard-o; } +.oc-icon-hand-spock-o:before, .icon-hand-spock-o:before { content: @hand-spock-o; } +.oc-icon-hand-pointer-o:before, .icon-hand-pointer-o:before { content: @hand-pointer-o; } +.oc-icon-hand-peace-o:before, .icon-hand-peace-o:before { content: @hand-peace-o; } +.oc-icon-trademark:before, .icon-trademark:before { content: @trademark; } +.oc-icon-registered:before, .icon-registered:before { content: @registered; } +.oc-icon-creative-commons:before, .icon-creative-commons:before { content: @creative-commons; } +.oc-icon-gg:before, .icon-gg:before { content: @gg; } +.oc-icon-gg-circle:before, .icon-gg-circle:before { content: @gg-circle; } +.oc-icon-tripadvisor:before, .icon-tripadvisor:before { content: @tripadvisor; } +.oc-icon-odnoklassniki:before, .icon-odnoklassniki:before { content: @odnoklassniki; } +.oc-icon-odnoklassniki-square:before, .icon-odnoklassniki-square:before { content: @odnoklassniki-square; } +.oc-icon-get-pocket:before, .icon-get-pocket:before { content: @get-pocket; } +.oc-icon-wikipedia-w:before, .icon-wikipedia-w:before { content: @wikipedia-w; } +.oc-icon-safari:before, .icon-safari:before { content: @safari; } +.oc-icon-chrome:before, .icon-chrome:before { content: @chrome; } +.oc-icon-firefox:before, .icon-firefox:before { content: @firefox; } +.oc-icon-opera:before, .icon-opera:before { content: @opera; } +.oc-icon-internet-explorer:before, .icon-internet-explorer:before { content: @internet-explorer; } +.oc-icon-tv:before, .icon-tv:before, +.oc-icon-television:before, .icon-television:before { content: @television; } +.oc-icon-contao:before, .icon-contao:before { content: @contao; } +.oc-icon-500px:before, .icon-500px:before { content: @500px; } +.oc-icon-amazon:before, .icon-amazon:before { content: @amazon; } +.oc-icon-calendar-plus-o:before, .icon-calendar-plus-o:before { content: @calendar-plus-o; } +.oc-icon-calendar-minus-o:before, .icon-calendar-minus-o:before { content: @calendar-minus-o; } +.oc-icon-calendar-times-o:before, .icon-calendar-times-o:before { content: @calendar-times-o; } +.oc-icon-calendar-check-o:before, .icon-calendar-check-o:before { content: @calendar-check-o; } +.oc-icon-industry:before, .icon-industry:before { content: @industry; } +.oc-icon-map-pin:before, .icon-map-pin:before { content: @map-pin; } +.oc-icon-map-signs:before, .icon-map-signs:before { content: @map-signs; } +.oc-icon-map-o:before, .icon-map-o:before { content: @map-o; } +.oc-icon-map:before, .icon-map:before { content: @map; } +.oc-icon-commenting:before, .icon-commenting:before { content: @commenting; } +.oc-icon-commenting-o:before, .icon-commenting-o:before { content: @commenting-o; } +.oc-icon-houzz:before, .icon-houzz:before { content: @houzz; } +.oc-icon-vimeo:before, .icon-vimeo:before { content: @vimeo; } +.oc-icon-black-tie:before, .icon-black-tie:before { content: @black-tie; } +.oc-icon-fonticons:before, .icon-fonticons:before { content: @fonticons; } diff --git a/modules/system/assets/ui/less/icon.variables.less b/modules/system/assets/ui/less/icon.variables.less index fd4af2380..65ce406b3 100644 --- a/modules/system/assets/ui/less/icon.variables.less +++ b/modules/system/assets/ui/less/icon.variables.less @@ -2,14 +2,16 @@ // -------------------------- @icon-font-path: @font-path; -@icon-font-version: "1.0.0"; +@icon-font-version: "1.0.1"; +@500px: "\f26e"; @adjust: "\f042"; @adn: "\f170"; @align-center: "\f037"; @align-justify: "\f039"; @align-left: "\f036"; @align-right: "\f038"; +@amazon: "\f270"; @ambulance: "\f0f9"; @anchor: "\f13d"; @android: "\f17b"; @@ -45,12 +47,23 @@ @at: "\f1fa"; @automobile: "\f1b9"; @backward: "\f04a"; +@balance-scale: "\f24e"; @ban: "\f05e"; @bank: "\f19c"; @bar-chart: "\f080"; @bar-chart-o: "\f080"; @barcode: "\f02a"; @bars: "\f0c9"; +@battery-0: "\f244"; +@battery-1: "\f243"; +@battery-2: "\f242"; +@battery-3: "\f241"; +@battery-4: "\f240"; +@battery-empty: "\f244"; +@battery-full: "\f240"; +@battery-half: "\f242"; +@battery-quarter: "\f243"; +@battery-three-quarters: "\f241"; @bed: "\f236"; @beer: "\f0fc"; @behance: "\f1b4"; @@ -65,6 +78,7 @@ @bitbucket: "\f171"; @bitbucket-square: "\f172"; @bitcoin: "\f15a"; +@black-tie: "\f27e"; @bold: "\f032"; @bolt: "\f0e7"; @bomb: "\f1e2"; @@ -83,7 +97,11 @@ @cab: "\f1ba"; @calculator: "\f1ec"; @calendar: "\f073"; +@calendar-check-o: "\f274"; +@calendar-minus-o: "\f272"; @calendar-o: "\f133"; +@calendar-plus-o: "\f271"; +@calendar-times-o: "\f273"; @camera: "\f030"; @camera-retro: "\f083"; @car: "\f1b9"; @@ -99,7 +117,9 @@ @cart-plus: "\f217"; @cc: "\f20a"; @cc-amex: "\f1f3"; +@cc-diners-club: "\f24c"; @cc-discover: "\f1f2"; +@cc-jcb: "\f24b"; @cc-mastercard: "\f1f1"; @cc-paypal: "\f1f4"; @cc-stripe: "\f1f5"; @@ -121,12 +141,14 @@ @chevron-right: "\f054"; @chevron-up: "\f077"; @child: "\f1ae"; +@chrome: "\f268"; @circle: "\f111"; @circle-o: "\f10c"; @circle-o-notch: "\f1ce"; @circle-thin: "\f1db"; @clipboard: "\f0ea"; @clock-o: "\f017"; +@clone: "\f24d"; @close: "\f00d"; @cloud: "\f0c2"; @cloud-download: "\f0ed"; @@ -141,13 +163,17 @@ @columns: "\f0db"; @comment: "\f075"; @comment-o: "\f0e5"; +@commenting: "\f27a"; +@commenting-o: "\f27b"; @comments: "\f086"; @comments-o: "\f0e6"; @compass: "\f14e"; @compress: "\f066"; @connectdevelop: "\f20e"; +@contao: "\f26d"; @copy: "\f0c5"; @copyright: "\f1f9"; +@creative-commons: "\f25e"; @credit-card: "\f09d"; @crop: "\f125"; @crosshairs: "\f05b"; @@ -187,6 +213,7 @@ @exclamation-circle: "\f06a"; @exclamation-triangle: "\f071"; @expand: "\f065"; +@expeditedssl: "\f23e"; @external-link: "\f08e"; @external-link-square: "\f14c"; @eye: "\f06e"; @@ -199,6 +226,7 @@ @fast-backward: "\f049"; @fast-forward: "\f050"; @fax: "\f1ac"; +@feed: "\f09e"; @female: "\f182"; @fighter-jet: "\f0fb"; @file: "\f15b"; @@ -224,6 +252,7 @@ @filter: "\f0b0"; @fire: "\f06d"; @fire-extinguisher: "\f134"; +@firefox: "\f269"; @flag: "\f024"; @flag-checkered: "\f11e"; @flag-o: "\f11d"; @@ -236,6 +265,7 @@ @folder-open: "\f07c"; @folder-open-o: "\f115"; @font: "\f031"; +@fonticons: "\f280"; @forumbee: "\f211"; @forward: "\f04e"; @foursquare: "\f180"; @@ -247,7 +277,10 @@ @ge: "\f1d1"; @gear: "\f013"; @gears: "\f085"; -@genderless: "\f1db"; +@genderless: "\f22d"; +@get-pocket: "\f265"; +@gg: "\f260"; +@gg-circle: "\f261"; @gift: "\f06b"; @git: "\f1d3"; @git-square: "\f1d2"; @@ -266,10 +299,19 @@ @group: "\f0c0"; @h-square: "\f0fd"; @hacker-news: "\f1d4"; +@hand-grab-o: "\f255"; +@hand-lizard-o: "\f258"; @hand-o-down: "\f0a7"; @hand-o-left: "\f0a5"; @hand-o-right: "\f0a4"; @hand-o-up: "\f0a6"; +@hand-paper-o: "\f256"; +@hand-peace-o: "\f25b"; +@hand-pointer-o: "\f25a"; +@hand-rock-o: "\f255"; +@hand-scissors-o: "\f257"; +@hand-spock-o: "\f259"; +@hand-stop-o: "\f256"; @hdd-o: "\f0a0"; @header: "\f1dc"; @headphones: "\f025"; @@ -280,16 +322,29 @@ @home: "\f015"; @hospital-o: "\f0f8"; @hotel: "\f236"; +@hourglass: "\f254"; +@hourglass-1: "\f251"; +@hourglass-2: "\f252"; +@hourglass-3: "\f253"; +@hourglass-end: "\f253"; +@hourglass-half: "\f252"; +@hourglass-o: "\f250"; +@hourglass-start: "\f251"; +@houzz: "\f27c"; @html5: "\f13b"; +@i-cursor: "\f246"; @ils: "\f20b"; @image: "\f03e"; @inbox: "\f01c"; @indent: "\f03c"; +@industry: "\f275"; @info: "\f129"; @info-circle: "\f05a"; @inr: "\f156"; @instagram: "\f16d"; @institution: "\f19c"; +@internet-explorer: "\f26b"; +@intersex: "\f224"; @ioxhost: "\f208"; @italic: "\f033"; @joomla: "\f1aa"; @@ -334,7 +389,11 @@ @mail-reply: "\f112"; @mail-reply-all: "\f122"; @male: "\f183"; +@map: "\f279"; @map-marker: "\f041"; +@map-o: "\f278"; +@map-pin: "\f276"; +@map-signs: "\f277"; @mars: "\f222"; @mars-double: "\f227"; @mars-stroke: "\f229"; @@ -358,11 +417,19 @@ @moon-o: "\f186"; @mortar-board: "\f19d"; @motorcycle: "\f21c"; +@mouse-pointer: "\f245"; @music: "\f001"; @navicon: "\f0c9"; @neuter: "\f22c"; @newspaper-o: "\f1ea"; +@object-group: "\f247"; +@object-ungroup: "\f248"; +@odnoklassniki: "\f263"; +@odnoklassniki-square: "\f264"; +@opencart: "\f23d"; @openid: "\f19b"; +@opera: "\f26a"; +@optin-monster: "\f23c"; @outdent: "\f03b"; @pagelines: "\f18c"; @paint-brush: "\f1fc"; @@ -412,6 +479,7 @@ @reddit: "\f1a1"; @reddit-square: "\f1a2"; @refresh: "\f021"; +@registered: "\f25d"; @remove: "\f00d"; @renren: "\f18b"; @reorder: "\f0c9"; @@ -430,6 +498,7 @@ @rub: "\f158"; @ruble: "\f158"; @rupee: "\f156"; +@safari: "\f267"; @save: "\f0c7"; @scissors: "\f0c4"; @search: "\f002"; @@ -493,6 +562,8 @@ @step-backward: "\f048"; @step-forward: "\f051"; @stethoscope: "\f0f1"; +@sticky-note: "\f249"; +@sticky-note-o: "\f24a"; @stop: "\f04d"; @street-view: "\f21d"; @strikethrough: "\f0cc"; @@ -511,6 +582,7 @@ @tags: "\f02c"; @tasks: "\f0ae"; @taxi: "\f1ba"; +@television: "\f26c"; @tencent-weibo: "\f1d5"; @terminal: "\f120"; @text-height: "\f034"; @@ -534,6 +606,7 @@ @toggle-on: "\f205"; @toggle-right: "\f152"; @toggle-up: "\f151"; +@trademark: "\f25c"; @train: "\f238"; @transgender: "\f224"; @transgender-alt: "\f225"; @@ -541,6 +614,7 @@ @trash-o: "\f014"; @tree: "\f1bb"; @trello: "\f181"; +@tripadvisor: "\f262"; @trophy: "\f091"; @truck: "\f0d1"; @try: "\f195"; @@ -548,6 +622,7 @@ @tumblr: "\f173"; @tumblr-square: "\f174"; @turkish-lira: "\f195"; +@tv: "\f26c"; @twitch: "\f1e8"; @twitter: "\f099"; @twitter-square: "\f081"; @@ -572,6 +647,7 @@ @venus-mars: "\f228"; @viacoin: "\f237"; @video-camera: "\f03d"; +@vimeo: "\f27d"; @vimeo-square: "\f194"; @vine: "\f1ca"; @vk: "\f189"; @@ -585,15 +661,21 @@ @whatsapp: "\f232"; @wheelchair: "\f193"; @wifi: "\f1eb"; +@wikipedia-w: "\f266"; @windows: "\f17a"; @won: "\f159"; @wordpress: "\f19a"; @wrench: "\f0ad"; @xing: "\f168"; @xing-square: "\f169"; +@y-combinator: "\f23b"; +@y-combinator-square: "\f1d4"; @yahoo: "\f19e"; +@yc: "\f23b"; +@yc-square: "\f1d4"; @yelp: "\f1e9"; @yen: "\f157"; @youtube: "\f167"; @youtube-play: "\f16a"; @youtube-square: "\f166"; + diff --git a/modules/system/assets/ui/storm.css b/modules/system/assets/ui/storm.css index c05d7ea39..78b0eadcf 100644 --- a/modules/system/assets/ui/storm.css +++ b/modules/system/assets/ui/storm.css @@ -681,7 +681,7 @@ input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button" .oc-icon-github:before,.icon-github:before{content:"\f09b"} .oc-icon-unlock:before,.icon-unlock:before{content:"\f09c"} .oc-icon-credit-card:before,.icon-credit-card:before{content:"\f09d"} -.oc-icon-rss:before,.icon-rss:before{content:"\f09e"} +.oc-icon-feed:before,.icon-feed:before,.oc-icon-rss:before,.icon-rss:before{content:"\f09e"} .oc-icon-hdd-o:before,.icon-hdd-o:before{content:"\f0a0"} .oc-icon-bullhorn:before,.icon-bullhorn:before{content:"\f0a1"} .oc-icon-bell:before,.icon-bell:before{content:"\f0f3"} @@ -957,14 +957,14 @@ input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button" .oc-icon-ge:before,.icon-ge:before,.oc-icon-empire:before,.icon-empire:before{content:"\f1d1"} .oc-icon-git-square:before,.icon-git-square:before{content:"\f1d2"} .oc-icon-git:before,.icon-git:before{content:"\f1d3"} -.oc-icon-hacker-news:before,.icon-hacker-news:before{content:"\f1d4"} +.oc-icon-y-combinator-square:before,.icon-y-combinator-square:before,.oc-icon-yc-square:before,.icon-yc-square:before,.oc-icon-hacker-news:before,.icon-hacker-news:before{content:"\f1d4"} .oc-icon-tencent-weibo:before,.icon-tencent-weibo:before{content:"\f1d5"} .oc-icon-qq:before,.icon-qq:before{content:"\f1d6"} .oc-icon-wechat:before,.icon-wechat:before,.oc-icon-weixin:before,.icon-weixin:before{content:"\f1d7"} .oc-icon-send:before,.icon-send:before,.oc-icon-paper-plane:before,.icon-paper-plane:before{content:"\f1d8"} .oc-icon-send-o:before,.icon-send-o:before,.oc-icon-paper-plane-o:before,.icon-paper-plane-o:before{content:"\f1d9"} .oc-icon-history:before,.icon-history:before{content:"\f1da"} -.oc-icon-genderless:before,.icon-genderless:before,.oc-icon-circle-thin:before,.icon-circle-thin:before{content:"\f1db"} +.oc-icon-circle-thin:before,.icon-circle-thin:before{content:"\f1db"} .oc-icon-header:before,.icon-header:before{content:"\f1dc"} .oc-icon-paragraph:before,.icon-paragraph:before{content:"\f1dd"} .oc-icon-sliders:before,.icon-sliders:before{content:"\f1de"} @@ -1031,7 +1031,7 @@ input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button" .oc-icon-venus:before,.icon-venus:before{content:"\f221"} .oc-icon-mars:before,.icon-mars:before{content:"\f222"} .oc-icon-mercury:before,.icon-mercury:before{content:"\f223"} -.oc-icon-transgender:before,.icon-transgender:before{content:"\f224"} +.oc-icon-intersex:before,.icon-intersex:before,.oc-icon-transgender:before,.icon-transgender:before{content:"\f224"} .oc-icon-transgender-alt:before,.icon-transgender-alt:before{content:"\f225"} .oc-icon-venus-double:before,.icon-venus-double:before{content:"\f226"} .oc-icon-mars-double:before,.icon-mars-double:before{content:"\f227"} @@ -1040,6 +1040,7 @@ input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button" .oc-icon-mars-stroke-v:before,.icon-mars-stroke-v:before{content:"\f22a"} .oc-icon-mars-stroke-h:before,.icon-mars-stroke-h:before{content:"\f22b"} .oc-icon-neuter:before,.icon-neuter:before{content:"\f22c"} +.oc-icon-genderless:before,.icon-genderless:before{content:"\f22d"} .oc-icon-facebook-official:before,.icon-facebook-official:before{content:"\f230"} .oc-icon-pinterest-p:before,.icon-pinterest-p:before{content:"\f231"} .oc-icon-whatsapp:before,.icon-whatsapp:before{content:"\f232"} @@ -1051,10 +1052,75 @@ input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button" .oc-icon-train:before,.icon-train:before{content:"\f238"} .oc-icon-subway:before,.icon-subway:before{content:"\f239"} .oc-icon-medium:before,.icon-medium:before{content:"\f23a"} +.oc-icon-yc:before,.icon-yc:before,.oc-icon-y-combinator:before,.icon-y-combinator:before{content:"\f23b"} +.oc-icon-optin-monster:before,.icon-optin-monster:before{content:"\f23c"} +.oc-icon-opencart:before,.icon-opencart:before{content:"\f23d"} +.oc-icon-expeditedssl:before,.icon-expeditedssl:before{content:"\f23e"} +.oc-icon-battery-4:before,.icon-battery-4:before,.oc-icon-battery-full:before,.icon-battery-full:before{content:"\f240"} +.oc-icon-battery-3:before,.icon-battery-3:before,.oc-icon-battery-three-quarters:before,.icon-battery-three-quarters:before{content:"\f241"} +.oc-icon-battery-2:before,.icon-battery-2:before,.oc-icon-battery-half:before,.icon-battery-half:before{content:"\f242"} +.oc-icon-battery-1:before,.icon-battery-1:before,.oc-icon-battery-quarter:before,.icon-battery-quarter:before{content:"\f243"} +.oc-icon-battery-0:before,.icon-battery-0:before,.oc-icon-battery-empty:before,.icon-battery-empty:before{content:"\f244"} +.oc-icon-mouse-pointer:before,.icon-mouse-pointer:before{content:"\f245"} +.oc-icon-i-cursor:before,.icon-i-cursor:before{content:"\f246"} +.oc-icon-object-group:before,.icon-object-group:before{content:"\f247"} +.oc-icon-object-ungroup:before,.icon-object-ungroup:before{content:"\f248"} +.oc-icon-sticky-note:before,.icon-sticky-note:before{content:"\f249"} +.oc-icon-sticky-note-o:before,.icon-sticky-note-o:before{content:"\f24a"} +.oc-icon-cc-jcb:before,.icon-cc-jcb:before{content:"\f24b"} +.oc-icon-cc-diners-club:before,.icon-cc-diners-club:before{content:"\f24c"} +.oc-icon-clone:before,.icon-clone:before{content:"\f24d"} +.oc-icon-balance-scale:before,.icon-balance-scale:before{content:"\f24e"} +.oc-icon-hourglass-o:before,.icon-hourglass-o:before{content:"\f250"} +.oc-icon-hourglass-1:before,.icon-hourglass-1:before,.oc-icon-hourglass-start:before,.icon-hourglass-start:before{content:"\f251"} +.oc-icon-hourglass-2:before,.icon-hourglass-2:before,.oc-icon-hourglass-half:before,.icon-hourglass-half:before{content:"\f252"} +.oc-icon-hourglass-3:before,.icon-hourglass-3:before,.oc-icon-hourglass-end:before,.icon-hourglass-end:before{content:"\f253"} +.oc-icon-hourglass:before,.icon-hourglass:before{content:"\f254"} +.oc-icon-hand-grab-o:before,.icon-hand-grab-o:before,.oc-icon-hand-rock-o:before,.icon-hand-rock-o:before{content:"\f255"} +.oc-icon-hand-stop-o:before,.icon-hand-stop-o:before,.oc-icon-hand-paper-o:before,.icon-hand-paper-o:before{content:"\f256"} +.oc-icon-hand-scissors-o:before,.icon-hand-scissors-o:before{content:"\f257"} +.oc-icon-hand-lizard-o:before,.icon-hand-lizard-o:before{content:"\f258"} +.oc-icon-hand-spock-o:before,.icon-hand-spock-o:before{content:"\f259"} +.oc-icon-hand-pointer-o:before,.icon-hand-pointer-o:before{content:"\f25a"} +.oc-icon-hand-peace-o:before,.icon-hand-peace-o:before{content:"\f25b"} +.oc-icon-trademark:before,.icon-trademark:before{content:"\f25c"} +.oc-icon-registered:before,.icon-registered:before{content:"\f25d"} +.oc-icon-creative-commons:before,.icon-creative-commons:before{content:"\f25e"} +.oc-icon-gg:before,.icon-gg:before{content:"\f260"} +.oc-icon-gg-circle:before,.icon-gg-circle:before{content:"\f261"} +.oc-icon-tripadvisor:before,.icon-tripadvisor:before{content:"\f262"} +.oc-icon-odnoklassniki:before,.icon-odnoklassniki:before{content:"\f263"} +.oc-icon-odnoklassniki-square:before,.icon-odnoklassniki-square:before{content:"\f264"} +.oc-icon-get-pocket:before,.icon-get-pocket:before{content:"\f265"} +.oc-icon-wikipedia-w:before,.icon-wikipedia-w:before{content:"\f266"} +.oc-icon-safari:before,.icon-safari:before{content:"\f267"} +.oc-icon-chrome:before,.icon-chrome:before{content:"\f268"} +.oc-icon-firefox:before,.icon-firefox:before{content:"\f269"} +.oc-icon-opera:before,.icon-opera:before{content:"\f26a"} +.oc-icon-internet-explorer:before,.icon-internet-explorer:before{content:"\f26b"} +.oc-icon-tv:before,.icon-tv:before,.oc-icon-television:before,.icon-television:before{content:"\f26c"} +.oc-icon-contao:before,.icon-contao:before{content:"\f26d"} +.oc-icon-500px:before,.icon-500px:before{content:"\f26e"} +.oc-icon-amazon:before,.icon-amazon:before{content:"\f270"} +.oc-icon-calendar-plus-o:before,.icon-calendar-plus-o:before{content:"\f271"} +.oc-icon-calendar-minus-o:before,.icon-calendar-minus-o:before{content:"\f272"} +.oc-icon-calendar-times-o:before,.icon-calendar-times-o:before{content:"\f273"} +.oc-icon-calendar-check-o:before,.icon-calendar-check-o:before{content:"\f274"} +.oc-icon-industry:before,.icon-industry:before{content:"\f275"} +.oc-icon-map-pin:before,.icon-map-pin:before{content:"\f276"} +.oc-icon-map-signs:before,.icon-map-signs:before{content:"\f277"} +.oc-icon-map-o:before,.icon-map-o:before{content:"\f278"} +.oc-icon-map:before,.icon-map:before{content:"\f279"} +.oc-icon-commenting:before,.icon-commenting:before{content:"\f27a"} +.oc-icon-commenting-o:before,.icon-commenting-o:before{content:"\f27b"} +.oc-icon-houzz:before,.icon-houzz:before{content:"\f27c"} +.oc-icon-vimeo:before,.icon-vimeo:before{content:"\f27d"} +.oc-icon-black-tie:before,.icon-black-tie:before{content:"\f27e"} +.oc-icon-fonticons:before,.icon-fonticons:before{content:"\f280"} .close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)} .close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)} button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none} -@font-face{font-family:'FontAwesome';src:url('font/fontawesome-webfont.eot?v=1.0.0');src:url('font/fontawesome-webfont.eot?#iefix&v=1.0.0') format('embedded-opentype'),url('font/fontawesome-webfont.woff?v=1.0.0') format('woff'),url('font/fontawesome-webfont.ttf?v=1.0.0') format('truetype'),url('font/fontawesome-webfont.svg#fontawesomeregular?v=1.0.0') format('svg');font-weight:normal;font-style:normal} +@font-face{font-family:'FontAwesome';src:url('font/fontawesome-webfont.eot?v=1.0.1');src:url('font/fontawesome-webfont.eot?#iefix&v=1.0.1') format('embedded-opentype'),url('font/fontawesome-webfont.woff?v=1.0.1') format('woff'),url('font/fontawesome-webfont.ttf?v=1.0.1') format('truetype'),url('font/fontawesome-webfont.svg#fontawesomeregular?v=1.0.1') format('svg');font-weight:normal;font-style:normal} [class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0} [class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none} [class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em} From 0cf3a95c10b39355b50c54fad3c751fe2f19f17e Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Wed, 26 Aug 2015 17:41:25 +1000 Subject: [PATCH 59/66] Add favicon + robots + sitemap to mirrored files - Refs #1331 --- modules/system/console/OctoberMirror.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/modules/system/console/OctoberMirror.php b/modules/system/console/OctoberMirror.php index 1181476d1..3f69494bb 100644 --- a/modules/system/console/OctoberMirror.php +++ b/modules/system/console/OctoberMirror.php @@ -5,6 +5,13 @@ use Illuminate\Console\Command; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputArgument; +/** + * This command will create symbolic links to files and directories + * that are commonly required to be publicly available. + * + * It is experimental and currently undergoing testing, + * see: https://github.com/octobercms/october/issues/1331 + */ class OctoberMirror extends Command { @@ -19,7 +26,10 @@ class OctoberMirror extends Command protected $description = '(Experimental) Generates a mirrored public folder using symbolic links.'; protected $files = [ - 'index.php' + 'index.php', + 'favicon.ico', + 'robots.txt', + 'sitemap.xml', ]; protected $directories = [ From c3ff99f2288ffbf945d365abfacef9a675e5040e Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Wed, 26 Aug 2015 20:21:58 +1000 Subject: [PATCH 60/66] Update link to IRC --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 668cd2bf9..dfd714366 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ You can communicate with us using the following mediums: * [Follow us on Twitter](http://twitter.com/octobercms) for announcements and updates. * [Follow us on Facebook](http://facebook.com/octobercms) for announcements and updates. -* [Join us on IRC](https://kiwiirc.com/client/irc.freenode.net/?nick=Octonaut|?#october) to chat with us. +* [Join us on IRC](http://octobercms.com/chat) to chat with us. ### License From 793bf30c26c5a9f8eacb9ce73bfa9edc918646e9 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Wed, 26 Aug 2015 20:24:37 +1000 Subject: [PATCH 61/66] Decouple the toolbar from the layout system --- modules/backend/assets/css/october.css | 6 +- modules/backend/assets/js/october-min.js | 4 +- modules/backend/assets/js/october.layout.js | 4 +- modules/backend/assets/js/october.navbar.js | 4 +- .../backend/assets/less/layout/layout.less | 16 ++- .../backend/assets/less/layout/mainmenu.less | 4 +- .../assets/js/markdowneditor.js | 4 +- .../partials/_markdowneditor.htm | 4 +- modules/backend/layouts/_mainmenu.htm | 36 +++-- .../widgets/toolbar/partials/_toolbar.htm | 8 +- .../widgets/assetlist/partials/_toolbar.htm | 128 +++++++++--------- .../mediamanager/partials/_crop-toolbar.htm | 4 +- .../mediamanager/partials/_toolbar.htm | 14 +- .../templatelist/partials/_toolbar.htm | 53 ++++---- modules/system/assets/ui/docs/toolbar.md | 36 ++--- modules/system/assets/ui/less/toolbar.less | 35 ++--- modules/system/assets/ui/storm.css | 13 +- 17 files changed, 186 insertions(+), 187 deletions(-) diff --git a/modules/backend/assets/css/october.css b/modules/backend/assets/css/october.css index 8b40975f6..874d9d783 100644 --- a/modules/backend/assets/css/october.css +++ b/modules/backend/assets/css/october.css @@ -583,7 +583,6 @@ body{webkit-font-smoothing:antialiased;font-family:'Open Sans',Arial,sans-serif; .layout > .layout-row > .layout-cell.min-height{height:0} .layout > .layout-row > .layout-cell.center{text-align:center} .layout > .layout-row > .layout-cell.middle{vertical-align:middle} -.layout > .layout-row > .layout-cell.width-fix > form,.layout > .layout-row > .layout-cell.width-fix > div{display:inline-block} .layout > .layout-row > .layout-cell.width-100{width:100px} .layout > .layout-row > .layout-cell.width-120{width:120px} .layout > .layout-row > .layout-cell.width-200{width:200px} @@ -596,7 +595,6 @@ body{webkit-font-smoothing:antialiased;font-family:'Open Sans',Arial,sans-serif; .layout > .layout-row > .layout-cell.min-height{height:0} .layout > .layout-row > .layout-cell.center{text-align:center} .layout > .layout-row > .layout-cell.middle{vertical-align:middle} -.layout > .layout-row > .layout-cell.width-fix > form,.layout > .layout-row > .layout-cell.width-fix > div{display:inline-block} .layout > .layout-row.min-size{height:0} .layout > .layout-cell{display:table-cell;vertical-align:top;height:100%} .layout > .layout-cell.width-100{width:100px} @@ -611,8 +609,8 @@ body{webkit-font-smoothing:antialiased;font-family:'Open Sans',Arial,sans-serif; .layout > .layout-cell.min-height{height:0} .layout > .layout-cell.center{text-align:center} .layout > .layout-cell.middle{vertical-align:middle} -.layout > .layout-cell.width-fix > form,.layout > .layout-cell.width-fix > div{display:inline-block} .whiteboard{background:white} +.layout-cell.width-fix > form,[data-calculate-width] > form,.layout-cell.width-fix > div,[data-calculate-width] > div{display:inline-block} body.compact-container .layout.layout-container,body.compact-container .layout .layout-container{padding:0 !important} body.slim-container .layout.layout-container,body.slim-container .layout .layout-container{padding-left:0 !important;padding-right:0 !important} @media (max-width:768px){.layout .hide-on-small{display:none} @@ -639,7 +637,7 @@ nav#layout-mainmenu.navbar ul li.account a{padding-right:20px;position:relative; nav#layout-mainmenu.navbar ul li.account img{width:25px;margin-right:7px;position:relative;top:-2px} nav#layout-mainmenu.navbar ul.nav{display:inline-block} nav#layout-mainmenu.navbar .menu-toggle{display:none} -nav#layout-mainmenu.navbar .toolbar-item{margin-right:0} +nav#layout-mainmenu.navbar .toolbar-item{padding-right:0} nav#layout-mainmenu.navbar .toolbar-item:before,nav#layout-mainmenu.navbar .toolbar-item:after{margin-top:0} nav#layout-mainmenu.navbar .toolbar-item:before{left:-12px} nav#layout-mainmenu.navbar .toolbar-item:after{right:-12px} diff --git a/modules/backend/assets/js/october-min.js b/modules/backend/assets/js/october-min.js index a7eb638a5..5b1bf868d 100644 --- a/modules/backend/assets/js/october-min.js +++ b/modules/backend/assets/js/october-min.js @@ -884,7 +884,7 @@ return this}}(window.jQuery);(function($){$(window).load(function(){$('nav.navba navbar=$(this),nav=$('ul.nav',navbar) nav.verticalMenu($('a.menu-toggle',navbar)) $('li.with-tooltip > a',navbar).tooltip({container:'body',placement:'bottom'}) -$('.layout-cell.width-fix',navbar).one('oc.widthFixed',function(){var dragScroll=$('[data-control=toolbar]',navbar).data('oc.dragScroll') +$('[data-calculate-width]',navbar).one('oc.widthFixed',function(){var dragScroll=$('[data-control=toolbar]',navbar).data('oc.dragScroll') if(dragScroll){dragScroll.goToElement($('ul.nav > li.active',navbar),undefined,{'duration':0})}})})})})(jQuery);+function($){"use strict";if($.oc===undefined) $.oc={} var SideNav=function(element,options){this.options=options @@ -1090,7 +1090,7 @@ if(this.pageTitleTemplate===undefined) this.pageTitleTemplate=$title.data('titleTemplate') $title.text(this.pageTitleTemplate.replace('%s',title))} OctoberLayout.prototype.updateLayout=function(title){var $children,$el,fixedWidth,margin -$('.layout-cell.width-fix').each(function(){$children=$(this).children() +$('.layout-cell.width-fix, [data-calculate-width]').each(function(){$children=$(this).children() if($children.length>0){fixedWidth=0 $children.each(function(){$el=$(this) margin=$el.data('oc.layoutMargin') diff --git a/modules/backend/assets/js/october.layout.js b/modules/backend/assets/js/october.layout.js index 2c93cd896..2c2718193 100644 --- a/modules/backend/assets/js/october.layout.js +++ b/modules/backend/assets/js/october.layout.js @@ -15,7 +15,9 @@ OctoberLayout.prototype.updateLayout = function(title) { var $children, $el, fixedWidth, margin - $('.layout-cell.width-fix').each(function(){ + // The entire 'width-fix' class can probably be removed if year >= 2017 + // After checking that it isn't being used anywhere -sg + $('.layout-cell.width-fix, [data-calculate-width]').each(function(){ $children = $(this).children() if ($children.length > 0) { diff --git a/modules/backend/assets/js/october.navbar.js b/modules/backend/assets/js/october.navbar.js index e6e5fc768..df87b29c0 100644 --- a/modules/backend/assets/js/october.navbar.js +++ b/modules/backend/assets/js/october.navbar.js @@ -12,7 +12,7 @@ (function($){ $(window).load(function() { $('nav.navbar').each(function(){ - var + var navbar = $(this), nav = $('ul.nav', navbar) @@ -23,7 +23,7 @@ placement: 'bottom' }) - $('.layout-cell.width-fix', navbar).one('oc.widthFixed', function(){ + $('[data-calculate-width]', navbar).one('oc.widthFixed', function() { var dragScroll = $('[data-control=toolbar]', navbar).data('oc.dragScroll') if (dragScroll) { dragScroll.goToElement($('ul.nav > li.active', navbar), undefined, {'duration': 0}) diff --git a/modules/backend/assets/less/layout/layout.less b/modules/backend/assets/less/layout/layout.less index 23bdcf019..ad4b4a431 100644 --- a/modules/backend/assets/less/layout/layout.less +++ b/modules/backend/assets/less/layout/layout.less @@ -112,12 +112,6 @@ body { &.middle { vertical-align: middle; } - - &.width-fix { - > form, > div { - display: inline-block; - } - } } display: table; @@ -148,6 +142,16 @@ body { background: white; } +// +// Calculated fixed width +// + +.layout-cell.width-fix, [data-calculate-width] { + > form, > div { + display: inline-block; + } +} + // // Layout styles // diff --git a/modules/backend/assets/less/layout/mainmenu.less b/modules/backend/assets/less/layout/mainmenu.less index 8115f51f2..a687cd28d 100644 --- a/modules/backend/assets/less/layout/mainmenu.less +++ b/modules/backend/assets/less/layout/mainmenu.less @@ -7,8 +7,6 @@ body.mainmenu-open { } nav#layout-mainmenu.navbar { - // .clearfix(); - // position: relative; background-color: @color-mainmenu; height: auto; padding: 0 0 0 20px; @@ -84,7 +82,7 @@ nav#layout-mainmenu.navbar { .menu-toggle { display: none; } .toolbar-item { - margin-right: 0; + padding-right: 0; &:before, &:after { margin-top: 0; } &:before { left: -12px; } diff --git a/modules/backend/formwidgets/markdowneditor/assets/js/markdowneditor.js b/modules/backend/formwidgets/markdowneditor/assets/js/markdowneditor.js index b1c657039..c4433e366 100644 --- a/modules/backend/formwidgets/markdowneditor/assets/js/markdowneditor.js +++ b/modules/backend/formwidgets/markdowneditor/assets/js/markdowneditor.js @@ -169,8 +169,8 @@ MarkdownEditor.prototype.createToolbar = function() { var self = this, $button, - $buttons = $('

    '), - $fixedButtons = $('
    ') + $buttons = $('
    '), + $fixedButtons = $('
    ') $.each($.oc.markdownEditorButtons, function(code, button) { $button = self.makeToolbarButton(code, button) diff --git a/modules/backend/formwidgets/markdowneditor/partials/_markdowneditor.htm b/modules/backend/formwidgets/markdowneditor/partials/_markdowneditor.htm index 160198222..685284f35 100644 --- a/modules/backend/formwidgets/markdowneditor/partials/_markdowneditor.htm +++ b/modules/backend/formwidgets/markdowneditor/partials/_markdowneditor.htm @@ -1,4 +1,3 @@ - previewMode): ?>
    @@ -10,8 +9,7 @@ data-view-mode="" data-vendor-path=""> -
    - +
    diff --git a/modules/backend/layouts/_mainmenu.htm b/modules/backend/layouts/_mainmenu.htm index 216d7c960..35ae18eb8 100644 --- a/modules/backend/layouts/_mainmenu.htm +++ b/modules/backend/layouts/_mainmenu.htm @@ -2,28 +2,26 @@ $activeItem = BackendMenu::getActiveMainMenuItem(); $mySettings = System\Classes\SettingsManager::instance()->listItems('mysettings'); ?> -