diff --git a/apps/encryption/l10n/cs_CZ.js b/apps/encryption/l10n/cs_CZ.js index 661731c31d..e057af58e9 100644 --- a/apps/encryption/l10n/cs_CZ.js +++ b/apps/encryption/l10n/cs_CZ.js @@ -28,8 +28,12 @@ OC.L10N.register( "one-time password for server-side-encryption" : "jednorázové heslo pro šifrování na straně serveru", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento soubor se nepodařilo dešifrovat, pravděpodobně je sdílený. Požádejte prosím majitele souboru, aby jej s vámi znovu sdílel.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Soubor nelze načíst, pravděpodobně se jedná o sdílený soubor. Požádejte prosím vlastníka souboru, aby vám jej znovu sdílel.", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Ahoj!\n\nAdministrátor povolil šifrování dat na serveru. Vaše soubory byly zašifrovány za použití hesla '%s'.\n\nPřihlašte se do webového rozhraní, přejděte do nastavení 'základního šifrovacího modulu ownCloud' a aktualizujte šifrovací heslo zadáním hesla výše do pole 'původní přihlašovací heslo' a svého aktuálního přihlašovacího hesla.\n\n", "The share will expire on %s." : "Sdílení vyprší %s.", "Cheers!" : "Ať slouží!", + "Hey there,

the admin enabled server-side-encryption. Your files were encrypted using the password %s.

Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.

" : "Ahoj!

Administrátor povolil šifrování dat na serveru. Vaše soubory byly zašifrovány za použití hesla %s.

Přihlašte se do webového rozhraní, přejděte do nastavení \"základního šifrovacího modulu ownCloud\" a aktualizujte šifrovací heslo zadáním hesla výše do pole \"původní přihlašovací heslo\" a svého aktuálního přihlašovacího hesla.

", + "Encrypt the home storage" : "Zašifrovat domovské úložiště", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Povolení tohoto nastavení zašifruje všechny soubory uložené v hlavním úložišti, jinak budou šifrovány pouze soubory na externích úložištích.", "Enable recovery key" : "Povolit záchranný klíč", "Disable recovery key" : "Vypnout záchranný klíč", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Záchranný klíč je dodatečný šifrovací klíč použitý pro\nšifrování souborů. S jeho pomocí lze obnovit soubory uživatele při zapomenutí hesla.", @@ -40,7 +44,7 @@ OC.L10N.register( "New recovery key password" : "Nové heslo záchranného klíče", "Repeat new recovery key password" : "Zopakujte nové heslo záchranného klíče", "Change Password" : "Změnit heslo", - "ownCloud basic encryption module" : "ownCloud základní šifrovací modul", + "ownCloud basic encryption module" : "základní šifrovací modul ownCloud", "Your private key password no longer matches your log-in password." : "Heslo vašeho soukromého klíče se již neshoduje s vaším přihlašovacím heslem.", "Set your old private key password to your current log-in password:" : "Změňte své staré heslo soukromého klíče na stejné, jako je vaše současné přihlašovací heslo:", " If you don't remember your old password you can ask your administrator to recover your files." : "Pokud si nepamatujete své původní heslo, můžete požádat správce o obnovu vašich souborů.", diff --git a/apps/encryption/l10n/cs_CZ.json b/apps/encryption/l10n/cs_CZ.json index 1b530d137e..74206d2ef1 100644 --- a/apps/encryption/l10n/cs_CZ.json +++ b/apps/encryption/l10n/cs_CZ.json @@ -26,8 +26,12 @@ "one-time password for server-side-encryption" : "jednorázové heslo pro šifrování na straně serveru", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento soubor se nepodařilo dešifrovat, pravděpodobně je sdílený. Požádejte prosím majitele souboru, aby jej s vámi znovu sdílel.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Soubor nelze načíst, pravděpodobně se jedná o sdílený soubor. Požádejte prosím vlastníka souboru, aby vám jej znovu sdílel.", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Ahoj!\n\nAdministrátor povolil šifrování dat na serveru. Vaše soubory byly zašifrovány za použití hesla '%s'.\n\nPřihlašte se do webového rozhraní, přejděte do nastavení 'základního šifrovacího modulu ownCloud' a aktualizujte šifrovací heslo zadáním hesla výše do pole 'původní přihlašovací heslo' a svého aktuálního přihlašovacího hesla.\n\n", "The share will expire on %s." : "Sdílení vyprší %s.", "Cheers!" : "Ať slouží!", + "Hey there,

the admin enabled server-side-encryption. Your files were encrypted using the password %s.

Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.

" : "Ahoj!

Administrátor povolil šifrování dat na serveru. Vaše soubory byly zašifrovány za použití hesla %s.

Přihlašte se do webového rozhraní, přejděte do nastavení \"základního šifrovacího modulu ownCloud\" a aktualizujte šifrovací heslo zadáním hesla výše do pole \"původní přihlašovací heslo\" a svého aktuálního přihlašovacího hesla.

", + "Encrypt the home storage" : "Zašifrovat domovské úložiště", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Povolení tohoto nastavení zašifruje všechny soubory uložené v hlavním úložišti, jinak budou šifrovány pouze soubory na externích úložištích.", "Enable recovery key" : "Povolit záchranný klíč", "Disable recovery key" : "Vypnout záchranný klíč", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Záchranný klíč je dodatečný šifrovací klíč použitý pro\nšifrování souborů. S jeho pomocí lze obnovit soubory uživatele při zapomenutí hesla.", @@ -38,7 +42,7 @@ "New recovery key password" : "Nové heslo záchranného klíče", "Repeat new recovery key password" : "Zopakujte nové heslo záchranného klíče", "Change Password" : "Změnit heslo", - "ownCloud basic encryption module" : "ownCloud základní šifrovací modul", + "ownCloud basic encryption module" : "základní šifrovací modul ownCloud", "Your private key password no longer matches your log-in password." : "Heslo vašeho soukromého klíče se již neshoduje s vaším přihlašovacím heslem.", "Set your old private key password to your current log-in password:" : "Změňte své staré heslo soukromého klíče na stejné, jako je vaše současné přihlašovací heslo:", " If you don't remember your old password you can ask your administrator to recover your files." : "Pokud si nepamatujete své původní heslo, můžete požádat správce o obnovu vašich souborů.", diff --git a/apps/encryption/l10n/ja.js b/apps/encryption/l10n/ja.js index 6babac76b2..fdae19d72e 100644 --- a/apps/encryption/l10n/ja.js +++ b/apps/encryption/l10n/ja.js @@ -32,6 +32,8 @@ OC.L10N.register( "The share will expire on %s." : "共有は %s で有効期限が切れます。", "Cheers!" : "それでは!", "Hey there,

the admin enabled server-side-encryption. Your files were encrypted using the password %s.

Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.

" : "こんにちは、

管理者がサーバーサイド暗号化を有効にしました。%sというパスワードであなたのファイルが暗号化されました。

Web画面からログインして、個人設定画面の\"ownCloud 基本暗号化モジュール\"のセクションにいき、暗号化パスワードの更新をお願いします。 \"旧ログインパスワード”部分に上記パスワードを入力し、現在のログインパスワードで更新します。

", + "Encrypt the home storage" : "メインストレージ暗号化", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "このオプションを有効にすると、外部ストレージ接続ストレージだけが暗号化されるのではなく、メインストレージのファイル全てが暗号化されます。", "Enable recovery key" : "復旧キーを有効にする", "Disable recovery key" : "復旧キーを無効にする", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "復旧キーは、ファイルの暗号化に使う特別な暗号化キーです。ユーザがパスワードを忘れてしまった場合には、リカバリキーを使ってユーザのファイルを復元することができます。", diff --git a/apps/encryption/l10n/ja.json b/apps/encryption/l10n/ja.json index 9ae46a8d9c..6b5811d5bc 100644 --- a/apps/encryption/l10n/ja.json +++ b/apps/encryption/l10n/ja.json @@ -30,6 +30,8 @@ "The share will expire on %s." : "共有は %s で有効期限が切れます。", "Cheers!" : "それでは!", "Hey there,

the admin enabled server-side-encryption. Your files were encrypted using the password %s.

Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.

" : "こんにちは、

管理者がサーバーサイド暗号化を有効にしました。%sというパスワードであなたのファイルが暗号化されました。

Web画面からログインして、個人設定画面の\"ownCloud 基本暗号化モジュール\"のセクションにいき、暗号化パスワードの更新をお願いします。 \"旧ログインパスワード”部分に上記パスワードを入力し、現在のログインパスワードで更新します。

", + "Encrypt the home storage" : "メインストレージ暗号化", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "このオプションを有効にすると、外部ストレージ接続ストレージだけが暗号化されるのではなく、メインストレージのファイル全てが暗号化されます。", "Enable recovery key" : "復旧キーを有効にする", "Disable recovery key" : "復旧キーを無効にする", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "復旧キーは、ファイルの暗号化に使う特別な暗号化キーです。ユーザがパスワードを忘れてしまった場合には、リカバリキーを使ってユーザのファイルを復元することができます。", diff --git a/apps/encryption/l10n/nl.js b/apps/encryption/l10n/nl.js index 0655b6d29b..39b8b52de0 100644 --- a/apps/encryption/l10n/nl.js +++ b/apps/encryption/l10n/nl.js @@ -32,6 +32,8 @@ OC.L10N.register( "The share will expire on %s." : "De share vervalt op %s.", "Cheers!" : "Proficiat!", "Hey there,

the admin enabled server-side-encryption. Your files were encrypted using the password %s.

Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.

" : "Hallo daar,

de beheerder heeft server-side versleuteling ingeschakeld. Uw bestanden werden versleuteld met het wachtwoord %s.

Login op de webinterface, ga naar 'ownCloud basis cryptomodule' in uw persoonlijke instellingen en pas uw cryptowachtwoord aan door dit wachtwoord in het \"oude inlog wachtwoord\" veld in te vullen alsmede in uw huidige inlogwachtwoord.

", + "Encrypt the home storage" : "Versleutel de eigen serveropslag", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Het inschakelen van deze optie zorgt voor versleutelen van alle bestanden op do hoofdopslag, anders worden alleen bestanden op externe opslag versleuteld", "Enable recovery key" : "Activeer herstelsleutel", "Disable recovery key" : "Deactiveer herstelsleutel", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "De herstelsleutel is een extra cryptografische sleutel die wordt gebruikt om bestanden te versleutelen. Die maakt het mogelijk bestanden te herstellen als de gebruiker zijn of haar wachtwoord vergeet.", diff --git a/apps/encryption/l10n/nl.json b/apps/encryption/l10n/nl.json index 00f6e67822..336e972734 100644 --- a/apps/encryption/l10n/nl.json +++ b/apps/encryption/l10n/nl.json @@ -30,6 +30,8 @@ "The share will expire on %s." : "De share vervalt op %s.", "Cheers!" : "Proficiat!", "Hey there,

the admin enabled server-side-encryption. Your files were encrypted using the password %s.

Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.

" : "Hallo daar,

de beheerder heeft server-side versleuteling ingeschakeld. Uw bestanden werden versleuteld met het wachtwoord %s.

Login op de webinterface, ga naar 'ownCloud basis cryptomodule' in uw persoonlijke instellingen en pas uw cryptowachtwoord aan door dit wachtwoord in het \"oude inlog wachtwoord\" veld in te vullen alsmede in uw huidige inlogwachtwoord.

", + "Encrypt the home storage" : "Versleutel de eigen serveropslag", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Het inschakelen van deze optie zorgt voor versleutelen van alle bestanden op do hoofdopslag, anders worden alleen bestanden op externe opslag versleuteld", "Enable recovery key" : "Activeer herstelsleutel", "Disable recovery key" : "Deactiveer herstelsleutel", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "De herstelsleutel is een extra cryptografische sleutel die wordt gebruikt om bestanden te versleutelen. Die maakt het mogelijk bestanden te herstellen als de gebruiker zijn of haar wachtwoord vergeet.", diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index 079c5330ec..6a767d48a2 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -589,7 +589,7 @@ context.fileList.showFileBusyState(filename, false); }; - context.fileList.showFileBusyState(downloadFileaction, true); + context.fileList.showFileBusyState(filename, true); OCA.Files.Files.handleDownload(url, disableLoadingState); } } diff --git a/apps/files/js/files.js b/apps/files/js/files.js index 9ab7609cc4..ae38511ec0 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -295,7 +295,12 @@ } }; - OC.redirect(url + '&downloadStartSecret=' + randomToken); + if (url.indexOf('?') >= 0) { + url += '&'; + } else { + url += '?'; + } + OC.redirect(url + 'downloadStartSecret=' + randomToken); OC.Util.waitFor(checkForDownloadCookie, 500); } }; diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js index ad232d3ff6..432e167da8 100644 --- a/apps/files/l10n/zh_TW.js +++ b/apps/files/l10n/zh_TW.js @@ -28,7 +28,7 @@ OC.L10N.register( "Files" : "檔案", "All files" : "所有檔案", "Favorites" : "最愛", - "Home" : "住宅", + "Home" : "家目錄", "Close" : " 關閉", "Upload cancelled." : "上傳已取消", "Unable to upload {filename} as it is a directory or has 0 bytes" : "因為 {filename} 是個目錄或是大小為零,所以無法上傳", @@ -75,12 +75,12 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n 位元組"], "Favorited" : "已加入最愛", "Favorite" : "我的最愛", - "{newname} already exists" : "{newname} 已經存在", - "Upload" : "上傳", "Text file" : "文字檔", "New text file.txt" : "新文字檔.txt", "Folder" : "資料夾", "New folder" : "新資料夾", + "{newname} already exists" : "{newname} 已經存在", + "Upload" : "上傳", "An error occurred while trying to update the tags" : "更新標籤時發生錯誤", "A new file or folder has been created" : "新的檔案或目錄已被 建立", "A file or folder has been changed" : "檔案或目錄已被 變更", diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json index 85ca6b2af4..b82dbfb1ff 100644 --- a/apps/files/l10n/zh_TW.json +++ b/apps/files/l10n/zh_TW.json @@ -26,7 +26,7 @@ "Files" : "檔案", "All files" : "所有檔案", "Favorites" : "最愛", - "Home" : "住宅", + "Home" : "家目錄", "Close" : " 關閉", "Upload cancelled." : "上傳已取消", "Unable to upload {filename} as it is a directory or has 0 bytes" : "因為 {filename} 是個目錄或是大小為零,所以無法上傳", @@ -73,12 +73,12 @@ "_%n byte_::_%n bytes_" : ["%n 位元組"], "Favorited" : "已加入最愛", "Favorite" : "我的最愛", - "{newname} already exists" : "{newname} 已經存在", - "Upload" : "上傳", "Text file" : "文字檔", "New text file.txt" : "新文字檔.txt", "Folder" : "資料夾", "New folder" : "新資料夾", + "{newname} already exists" : "{newname} 已經存在", + "Upload" : "上傳", "An error occurred while trying to update the tags" : "更新標籤時發生錯誤", "A new file or folder has been created" : "新的檔案或目錄已被 建立", "A file or folder has been changed" : "檔案或目錄已被 變更", diff --git a/apps/files/tests/js/fileactionsSpec.js b/apps/files/tests/js/fileactionsSpec.js index 6a57c56c3a..d29164c513 100644 --- a/apps/files/tests/js/fileactionsSpec.js +++ b/apps/files/tests/js/fileactionsSpec.js @@ -227,7 +227,7 @@ describe('OCA.Files.FileActions tests', function() { name: 'Test', type: OCA.Files.FileActions.TYPE_INLINE, mime: 'all', - icon: OC.imagePath('core', 'actions/test'), + icon: OC.imagePath('core', 'actions/test'), permissions: OC.PERMISSION_READ, actionHandler: actionStub }); @@ -556,4 +556,45 @@ describe('OCA.Files.FileActions tests', function() { expect(handler.notCalled).toEqual(true); }); }); + describe('default actions', function() { + describe('download', function() { + it('redirects to URL and sets busy state to list', function() { + var handleDownloadStub = sinon.stub(OCA.Files.Files, 'handleDownload'); + var busyStub = sinon.stub(fileList, 'showFileBusyState'); + var fileData = { + id: 18, + type: 'file', + name: 'testName.txt', + mimetype: 'text/plain', + size: '1234', + etag: 'a01234c', + mtime: '123456', + permissions: OC.PERMISSION_READ | OC.PERMISSION_UPDATE + }; + + // note: FileActions.display() is called implicitly + fileList.add(fileData); + + var model = fileList.getModelForFile('testName.txt'); + + fileActions.registerDefaultActions(); + fileActions.triggerAction('Download', model, fileList); + + expect(busyStub.calledOnce).toEqual(true); + expect(busyStub.calledWith('testName.txt', true)).toEqual(true); + expect(handleDownloadStub.calledOnce).toEqual(true); + expect(handleDownloadStub.getCall(0).args[0]).toEqual( + OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=testName.txt' + ); + busyStub.reset(); + handleDownloadStub.yield(); + + expect(busyStub.calledOnce).toEqual(true); + expect(busyStub.calledWith('testName.txt', false)).toEqual(true); + + busyStub.restore(); + handleDownloadStub.restore(); + }); + }); + }); }); diff --git a/apps/files/tests/js/filesSpec.js b/apps/files/tests/js/filesSpec.js index f20ba03e2f..30e6675c15 100644 --- a/apps/files/tests/js/filesSpec.js +++ b/apps/files/tests/js/filesSpec.js @@ -87,4 +87,56 @@ describe('OCA.Files.Files tests', function() { expect(url).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=%5B%22test%20file.txt%22%2C%22abc.txt%22%5D'); }); }); + describe('handleDownload', function() { + var redirectStub; + var cookieStub; + var clock; + var testUrl; + + beforeEach(function() { + testUrl = 'http://example.com/owncloud/path/download.php'; + redirectStub = sinon.stub(OC, 'redirect'); + cookieStub = sinon.stub(OC.Util, 'isCookieSetToValue'); + clock = sinon.useFakeTimers(); + }); + afterEach(function() { + redirectStub.restore(); + cookieStub.restore(); + clock.restore(); + }); + + it('appends secret to url when no existing parameters', function() { + Files.handleDownload(testUrl); + expect(redirectStub.calledOnce).toEqual(true); + expect(redirectStub.getCall(0).args[0]).toContain(testUrl + '?downloadStartSecret='); + }); + it('appends secret to url with existing parameters', function() { + Files.handleDownload(testUrl + '?test=1'); + expect(redirectStub.calledOnce).toEqual(true); + expect(redirectStub.getCall(0).args[0]).toContain(testUrl + '?test=1&downloadStartSecret='); + }); + it('sets cookie and calls callback when cookie appears', function() { + var callbackStub = sinon.stub(); + var token; + Files.handleDownload(testUrl, callbackStub); + expect(redirectStub.calledOnce).toEqual(true); + token = OC.parseQueryString(redirectStub.getCall(0).args[0]).downloadStartSecret; + expect(token).toBeDefined(); + + expect(cookieStub.calledOnce).toEqual(true); + cookieStub.returns(false); + clock.tick(600); + + expect(cookieStub.calledTwice).toEqual(true); + expect(cookieStub.getCall(1).args[0]).toEqual('ocDownloadStarted'); + expect(cookieStub.getCall(1).args[1]).toEqual(token); + expect(callbackStub.notCalled).toEqual(true); + + cookieStub.returns(true); + clock.tick(2000); + + expect(cookieStub.callCount).toEqual(3); + expect(callbackStub.calledOnce).toEqual(true); + }); + }); }); diff --git a/apps/files_external/l10n/cs_CZ.js b/apps/files_external/l10n/cs_CZ.js index a6b9404d73..1c655bfc99 100644 --- a/apps/files_external/l10n/cs_CZ.js +++ b/apps/files_external/l10n/cs_CZ.js @@ -16,6 +16,7 @@ OC.L10N.register( "Not permitted to use authentication mechanism \"%s\"" : "Nebylo povoleno použití ověřovacího mechanismu \"%s\"", "Unsatisfied backend parameters" : "Neuspokojivé parametry služby", "Unsatisfied authentication mechanism parameters" : "Neuspokojivé parametry ověřovacího mechanismu", + "Insufficient data: %s" : "Nedostatečná data: %s", "Personal" : "Osobní", "System" : "Systém", "Grant access" : "Povolit přístup", diff --git a/apps/files_external/l10n/cs_CZ.json b/apps/files_external/l10n/cs_CZ.json index 6c7e4c5b8d..50d12af805 100644 --- a/apps/files_external/l10n/cs_CZ.json +++ b/apps/files_external/l10n/cs_CZ.json @@ -14,6 +14,7 @@ "Not permitted to use authentication mechanism \"%s\"" : "Nebylo povoleno použití ověřovacího mechanismu \"%s\"", "Unsatisfied backend parameters" : "Neuspokojivé parametry služby", "Unsatisfied authentication mechanism parameters" : "Neuspokojivé parametry ověřovacího mechanismu", + "Insufficient data: %s" : "Nedostatečná data: %s", "Personal" : "Osobní", "System" : "Systém", "Grant access" : "Povolit přístup", diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js index 12738d841e..b62896fae5 100644 --- a/apps/files_external/l10n/fr.js +++ b/apps/files_external/l10n/fr.js @@ -16,6 +16,7 @@ OC.L10N.register( "Not permitted to use authentication mechanism \"%s\"" : "Non autorisé à utiliser le mécanisme d'authentification \"%s\"", "Unsatisfied backend parameters" : "Paramètres manquants pour le service", "Unsatisfied authentication mechanism parameters" : "Paramètres manquants pour la méthode d'authentification", + "Insufficient data: %s" : "Données insuffisantes : %s", "Personal" : "Personnel", "System" : "Système", "Grant access" : "Autoriser l'accès", diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json index 425413b7e8..ceb38a2ace 100644 --- a/apps/files_external/l10n/fr.json +++ b/apps/files_external/l10n/fr.json @@ -14,6 +14,7 @@ "Not permitted to use authentication mechanism \"%s\"" : "Non autorisé à utiliser le mécanisme d'authentification \"%s\"", "Unsatisfied backend parameters" : "Paramètres manquants pour le service", "Unsatisfied authentication mechanism parameters" : "Paramètres manquants pour la méthode d'authentification", + "Insufficient data: %s" : "Données insuffisantes : %s", "Personal" : "Personnel", "System" : "Système", "Grant access" : "Autoriser l'accès", diff --git a/apps/files_external/l10n/it.js b/apps/files_external/l10n/it.js index a5f8afb474..1727924f18 100644 --- a/apps/files_external/l10n/it.js +++ b/apps/files_external/l10n/it.js @@ -16,6 +16,7 @@ OC.L10N.register( "Not permitted to use authentication mechanism \"%s\"" : "Utilizzo del meccanismo di autenticazione \"%s\" non permesso", "Unsatisfied backend parameters" : "Parametri del motore non soddisfatti", "Unsatisfied authentication mechanism parameters" : "Parametri del meccanismo di autenticazione non soddisfatti", + "Insufficient data: %s" : "Dati insufficienti: %s", "Personal" : "Personale", "System" : "Sistema", "Grant access" : "Concedi l'accesso", diff --git a/apps/files_external/l10n/it.json b/apps/files_external/l10n/it.json index 2f6dad37d7..19d86a6196 100644 --- a/apps/files_external/l10n/it.json +++ b/apps/files_external/l10n/it.json @@ -14,6 +14,7 @@ "Not permitted to use authentication mechanism \"%s\"" : "Utilizzo del meccanismo di autenticazione \"%s\" non permesso", "Unsatisfied backend parameters" : "Parametri del motore non soddisfatti", "Unsatisfied authentication mechanism parameters" : "Parametri del meccanismo di autenticazione non soddisfatti", + "Insufficient data: %s" : "Dati insufficienti: %s", "Personal" : "Personale", "System" : "Sistema", "Grant access" : "Concedi l'accesso", diff --git a/apps/files_external/l10n/ja.js b/apps/files_external/l10n/ja.js index ac5d1bfe6f..b766f3010e 100644 --- a/apps/files_external/l10n/ja.js +++ b/apps/files_external/l10n/ja.js @@ -1,19 +1,28 @@ OC.L10N.register( "files_external", { + "Fetching request tokens failed. Verify that your app key and secret are correct." : "リクエストトークンの取得に失敗しました。アプリのキーとパスワードが正しいことを確認してください。", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "アクセストークンの取得に失敗しました。アプリのキーとパスワードが正しいことを確認してください。", "Please provide a valid app key and secret." : "有効なアプリのキーとパスワードを入力してください。", "Step 1 failed. Exception: %s" : "ステップ 1 の実行に失敗しました。例外: %s", "Step 2 failed. Exception: %s" : "ステップ 2 の実行に失敗しました。例外: %s", "External storage" : "外部ストレージ", "Storage with id \"%i\" not found" : "ストレージID \"%i\" が見つかりません", + "Invalid backend or authentication mechanism class" : "バックエンドまたは認証システムクラスが無効", "Invalid mount point" : "無効なマウントポイント", + "Objectstore forbidden" : "オブジェクトストアが禁じられています", "Invalid storage backend \"%s\"" : "\"%s\" のストレージバックエンドが不正", "Not permitted to use backend \"%s\"" : "バックエンド %s を使うための権限がありません", + "Not permitted to use authentication mechanism \"%s\"" : "認証システム %s を使う権限がありません", + "Unsatisfied backend parameters" : "バックエンドのためのパラメーターが不十分です。", "Unsatisfied authentication mechanism parameters" : "認証のためのパラメータが不十分です", + "Insufficient data: %s" : "データが不足しています: %s", "Personal" : "個人", "System" : "システム", "Grant access" : "アクセスを許可", "Access granted" : "アクセスは許可されました", + "Error configuring OAuth1" : "OAuth1 設定エラー", + "Error configuring OAuth2" : "OAuth2 設定エラー", "Generate keys" : "キーを生成", "Error generating key pair" : "キーペアの生成エラー", "Enable encryption" : "暗号化を有効に", @@ -27,6 +36,7 @@ OC.L10N.register( "Saved" : "保存されました", "Access key" : "アクセスキー", "Secret key" : "シークレットキー", + "Builtin" : "ビルトイン", "None" : "なし", "OAuth1" : "OAuth1", "App key" : "アプリキー", @@ -37,9 +47,12 @@ OC.L10N.register( "OpenStack" : "OpenStack", "Username" : "ユーザー名", "Password" : "パスワード", + "Tenant name" : "テナント名", + "Identity endpoint URL" : "認証エンドポイントURL", "Rackspace" : "Rackspace", "API key" : "APIキー", "Username and password" : "ユーザー名とパスワード", + "Session credentials" : "セッション資格情報", "RSA public key" : "RSA公開鍵", "Public key" : "公開鍵", "Amazon S3" : "Amazon S3", @@ -89,6 +102,7 @@ OC.L10N.register( "Advanced settings" : "詳細設定", "Delete" : "削除", "Add storage" : "ストレージを追加", + "Allow users to mount external storages" : "ユーザーに外部ストレージのマウントを許可する", "Allow users to mount the following external storage" : "ユーザーに以下の外部ストレージのマウントを許可する" }, "nplurals=1; plural=0;"); diff --git a/apps/files_external/l10n/ja.json b/apps/files_external/l10n/ja.json index 6664b3d97d..b9a3eda056 100644 --- a/apps/files_external/l10n/ja.json +++ b/apps/files_external/l10n/ja.json @@ -1,17 +1,26 @@ { "translations": { + "Fetching request tokens failed. Verify that your app key and secret are correct." : "リクエストトークンの取得に失敗しました。アプリのキーとパスワードが正しいことを確認してください。", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "アクセストークンの取得に失敗しました。アプリのキーとパスワードが正しいことを確認してください。", "Please provide a valid app key and secret." : "有効なアプリのキーとパスワードを入力してください。", "Step 1 failed. Exception: %s" : "ステップ 1 の実行に失敗しました。例外: %s", "Step 2 failed. Exception: %s" : "ステップ 2 の実行に失敗しました。例外: %s", "External storage" : "外部ストレージ", "Storage with id \"%i\" not found" : "ストレージID \"%i\" が見つかりません", + "Invalid backend or authentication mechanism class" : "バックエンドまたは認証システムクラスが無効", "Invalid mount point" : "無効なマウントポイント", + "Objectstore forbidden" : "オブジェクトストアが禁じられています", "Invalid storage backend \"%s\"" : "\"%s\" のストレージバックエンドが不正", "Not permitted to use backend \"%s\"" : "バックエンド %s を使うための権限がありません", + "Not permitted to use authentication mechanism \"%s\"" : "認証システム %s を使う権限がありません", + "Unsatisfied backend parameters" : "バックエンドのためのパラメーターが不十分です。", "Unsatisfied authentication mechanism parameters" : "認証のためのパラメータが不十分です", + "Insufficient data: %s" : "データが不足しています: %s", "Personal" : "個人", "System" : "システム", "Grant access" : "アクセスを許可", "Access granted" : "アクセスは許可されました", + "Error configuring OAuth1" : "OAuth1 設定エラー", + "Error configuring OAuth2" : "OAuth2 設定エラー", "Generate keys" : "キーを生成", "Error generating key pair" : "キーペアの生成エラー", "Enable encryption" : "暗号化を有効に", @@ -25,6 +34,7 @@ "Saved" : "保存されました", "Access key" : "アクセスキー", "Secret key" : "シークレットキー", + "Builtin" : "ビルトイン", "None" : "なし", "OAuth1" : "OAuth1", "App key" : "アプリキー", @@ -35,9 +45,12 @@ "OpenStack" : "OpenStack", "Username" : "ユーザー名", "Password" : "パスワード", + "Tenant name" : "テナント名", + "Identity endpoint URL" : "認証エンドポイントURL", "Rackspace" : "Rackspace", "API key" : "APIキー", "Username and password" : "ユーザー名とパスワード", + "Session credentials" : "セッション資格情報", "RSA public key" : "RSA公開鍵", "Public key" : "公開鍵", "Amazon S3" : "Amazon S3", @@ -87,6 +100,7 @@ "Advanced settings" : "詳細設定", "Delete" : "削除", "Add storage" : "ストレージを追加", + "Allow users to mount external storages" : "ユーザーに外部ストレージのマウントを許可する", "Allow users to mount the following external storage" : "ユーザーに以下の外部ストレージのマウントを許可する" },"pluralForm" :"nplurals=1; plural=0;" } \ No newline at end of file diff --git a/apps/files_external/l10n/nl.js b/apps/files_external/l10n/nl.js index bfcf493ee0..d26f5595f1 100644 --- a/apps/files_external/l10n/nl.js +++ b/apps/files_external/l10n/nl.js @@ -16,6 +16,7 @@ OC.L10N.register( "Not permitted to use authentication mechanism \"%s\"" : "Niet toegestaan om authenticatiemechanisme \"%s\" te gebruiken", "Unsatisfied backend parameters" : "Onvoldoende backend parameters", "Unsatisfied authentication mechanism parameters" : "Onvoldoende authenticatiemechanisme parameters", + "Insufficient data: %s" : "Onvoldoende gegevens: %s", "Personal" : "Persoonlijk", "System" : "Systeem", "Grant access" : "Sta toegang toe", diff --git a/apps/files_external/l10n/nl.json b/apps/files_external/l10n/nl.json index e3ff8826ef..cb1db40e3c 100644 --- a/apps/files_external/l10n/nl.json +++ b/apps/files_external/l10n/nl.json @@ -14,6 +14,7 @@ "Not permitted to use authentication mechanism \"%s\"" : "Niet toegestaan om authenticatiemechanisme \"%s\" te gebruiken", "Unsatisfied backend parameters" : "Onvoldoende backend parameters", "Unsatisfied authentication mechanism parameters" : "Onvoldoende authenticatiemechanisme parameters", + "Insufficient data: %s" : "Onvoldoende gegevens: %s", "Personal" : "Persoonlijk", "System" : "Systeem", "Grant access" : "Sta toegang toe", diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js index 3abc6d280d..1830ab1f99 100644 --- a/apps/files_external/l10n/pt_BR.js +++ b/apps/files_external/l10n/pt_BR.js @@ -16,6 +16,7 @@ OC.L10N.register( "Not permitted to use authentication mechanism \"%s\"" : "Não é permitido usar o mecanismo de autenticação \"%s\"", "Unsatisfied backend parameters" : "Parâmetros de back-end não-atendidos", "Unsatisfied authentication mechanism parameters" : "Parâmetros de mecanismos de autenticação não satisfeitos", + "Insufficient data: %s" : "Dados insuficientes: %s", "Personal" : "Pessoal", "System" : "Sistema", "Grant access" : "Permitir acesso", diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json index 31f71df8be..d33e4eba92 100644 --- a/apps/files_external/l10n/pt_BR.json +++ b/apps/files_external/l10n/pt_BR.json @@ -14,6 +14,7 @@ "Not permitted to use authentication mechanism \"%s\"" : "Não é permitido usar o mecanismo de autenticação \"%s\"", "Unsatisfied backend parameters" : "Parâmetros de back-end não-atendidos", "Unsatisfied authentication mechanism parameters" : "Parâmetros de mecanismos de autenticação não satisfeitos", + "Insufficient data: %s" : "Dados insuficientes: %s", "Personal" : "Pessoal", "System" : "Sistema", "Grant access" : "Permitir acesso", diff --git a/apps/files_external/l10n/pt_PT.js b/apps/files_external/l10n/pt_PT.js index 813226a9cf..ce816fa01d 100644 --- a/apps/files_external/l10n/pt_PT.js +++ b/apps/files_external/l10n/pt_PT.js @@ -14,6 +14,7 @@ OC.L10N.register( "Not permitted to use backend \"%s\"" : "Não é permitido utilizar a interface \"%s\"", "Not permitted to use authentication mechanism \"%s\"" : "Não é permitido utilizar o mecanismo de autenticação \"%s\"", "Unsatisfied authentication mechanism parameters" : "Parâmetros do mecanismo de autenticação inválidos", + "Insufficient data: %s" : "Dados insuficientes: %s", "Personal" : "Pessoal", "System" : "Sistema", "Grant access" : "Conceder acesso", diff --git a/apps/files_external/l10n/pt_PT.json b/apps/files_external/l10n/pt_PT.json index 310ffffcbe..89926c0fe2 100644 --- a/apps/files_external/l10n/pt_PT.json +++ b/apps/files_external/l10n/pt_PT.json @@ -12,6 +12,7 @@ "Not permitted to use backend \"%s\"" : "Não é permitido utilizar a interface \"%s\"", "Not permitted to use authentication mechanism \"%s\"" : "Não é permitido utilizar o mecanismo de autenticação \"%s\"", "Unsatisfied authentication mechanism parameters" : "Parâmetros do mecanismo de autenticação inválidos", + "Insufficient data: %s" : "Dados insuficientes: %s", "Personal" : "Pessoal", "System" : "Sistema", "Grant access" : "Conceder acesso", diff --git a/apps/files_external/l10n/sq.js b/apps/files_external/l10n/sq.js index 7edf0b5e67..85d8c251c8 100644 --- a/apps/files_external/l10n/sq.js +++ b/apps/files_external/l10n/sq.js @@ -16,6 +16,7 @@ OC.L10N.register( "Not permitted to use authentication mechanism \"%s\"" : "S’i lejohet të përdorë mekanizmin e mirëfilltësimit \"%s\"", "Unsatisfied backend parameters" : "Parametra mekanizmi shërbimi të paplotësuar", "Unsatisfied authentication mechanism parameters" : "Parametra mekanizmi mirëfilltësimi të papërmbushur", + "Insufficient data: %s" : "Të dhëna të pamjaftueshme: %s", "Personal" : "Personale", "System" : "Sistem", "Grant access" : "Akordoji hyrje", diff --git a/apps/files_external/l10n/sq.json b/apps/files_external/l10n/sq.json index 3d597974f4..c200be40d0 100644 --- a/apps/files_external/l10n/sq.json +++ b/apps/files_external/l10n/sq.json @@ -14,6 +14,7 @@ "Not permitted to use authentication mechanism \"%s\"" : "S’i lejohet të përdorë mekanizmin e mirëfilltësimit \"%s\"", "Unsatisfied backend parameters" : "Parametra mekanizmi shërbimi të paplotësuar", "Unsatisfied authentication mechanism parameters" : "Parametra mekanizmi mirëfilltësimi të papërmbushur", + "Insufficient data: %s" : "Të dhëna të pamjaftueshme: %s", "Personal" : "Personale", "System" : "Sistem", "Grant access" : "Akordoji hyrje", diff --git a/apps/files_sharing/l10n/pt_PT.js b/apps/files_sharing/l10n/pt_PT.js index 64600b5ff9..c0a79ac58f 100644 --- a/apps/files_sharing/l10n/pt_PT.js +++ b/apps/files_sharing/l10n/pt_PT.js @@ -52,6 +52,7 @@ OC.L10N.register( "Shared by %2$s" : "Partilhado por %2$s", "Shared via public link" : "Partilhado via hiperligação pública", "Shares" : "Partilhas", + "You received %2$s as a remote share from %1$s" : "Recebeu %2$s como uma partilha remota de %1$s", "Accept" : "Aceitar", "Decline" : "Recusar", "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Partilhe comigo através da minha Id. da Nuvem Federada #ownCloud, veja %s", diff --git a/apps/files_sharing/l10n/pt_PT.json b/apps/files_sharing/l10n/pt_PT.json index 52e1c8bbc6..f57f939e5c 100644 --- a/apps/files_sharing/l10n/pt_PT.json +++ b/apps/files_sharing/l10n/pt_PT.json @@ -50,6 +50,7 @@ "Shared by %2$s" : "Partilhado por %2$s", "Shared via public link" : "Partilhado via hiperligação pública", "Shares" : "Partilhas", + "You received %2$s as a remote share from %1$s" : "Recebeu %2$s como uma partilha remota de %1$s", "Accept" : "Aceitar", "Decline" : "Recusar", "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Partilhe comigo através da minha Id. da Nuvem Federada #ownCloud, veja %s", diff --git a/apps/files_trashbin/js/app.js b/apps/files_trashbin/js/app.js index 364b51697b..1f46f568bf 100644 --- a/apps/files_trashbin/js/app.js +++ b/apps/files_trashbin/js/app.js @@ -23,11 +23,13 @@ OCA.Trashbin.App = { return; } this._initialized = true; + var urlParams = OC.Util.History.parseUrlQuery(); this.fileList = new OCA.Trashbin.FileList( $('#app-content-trashbin'), { scrollContainer: $('#app-content'), fileActions: this._createFileActions(), - detailsViewEnabled: false + detailsViewEnabled: false, + scrollTo: urlParams.scrollto } ); }, diff --git a/apps/user_ldap/js/wizard/view.js b/apps/user_ldap/js/wizard/view.js index 7dedfab75f..3d994af652 100644 --- a/apps/user_ldap/js/wizard/view.js +++ b/apps/user_ldap/js/wizard/view.js @@ -352,6 +352,7 @@ OCA = OCA || {}; $('.ldap_submit').button(); $('.ldap_action_test_connection').button(); $('#ldapSettings').tabs({ beforeActivate: this.onTabChange }); + $('#ldapSettings :input').tooltip({placement: "right", container: "body", trigger: "hover"}); this.initControls(); this.disableTabs(); diff --git a/apps/user_ldap/l10n/pt_PT.js b/apps/user_ldap/l10n/pt_PT.js index 109c2efa85..7288c68330 100644 --- a/apps/user_ldap/l10n/pt_PT.js +++ b/apps/user_ldap/l10n/pt_PT.js @@ -66,6 +66,7 @@ OC.L10N.register( "Verify settings" : "Verificar definições", "1. Server" : "1. Servidor", "%s. Server:" : "%s. Servvidor", + "Add a new and blank configuration" : "Adicione uma nova configuração em branco", "Delete the current configuration" : "Apagar a configuração actual", "Host" : "Anfitrião", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Pode omitir o protocolo, excepto se necessitar de SSL. Neste caso, comece com ldaps://", diff --git a/apps/user_ldap/l10n/pt_PT.json b/apps/user_ldap/l10n/pt_PT.json index 30c8078964..5de030281b 100644 --- a/apps/user_ldap/l10n/pt_PT.json +++ b/apps/user_ldap/l10n/pt_PT.json @@ -64,6 +64,7 @@ "Verify settings" : "Verificar definições", "1. Server" : "1. Servidor", "%s. Server:" : "%s. Servvidor", + "Add a new and blank configuration" : "Adicione uma nova configuração em branco", "Delete the current configuration" : "Apagar a configuração actual", "Host" : "Anfitrião", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Pode omitir o protocolo, excepto se necessitar de SSL. Neste caso, comece com ldaps://", diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php index 8a6e3c6726..d4f4eaddcb 100644 --- a/apps/user_ldap/lib/access.php +++ b/apps/user_ldap/lib/access.php @@ -35,6 +35,7 @@ namespace OCA\user_ldap\lib; +use OCA\user_ldap\lib\user\OfflineUser; use OCA\User_LDAP\Mapping\AbstractMapping; /** @@ -710,6 +711,10 @@ class Access extends LDAPUtility implements user\IUserTools { $ocName = $this->dn2ocname($userRecord['dn'][0], $userRecord[$displayNameAttribute]); $this->cacheUserExists($ocName); $user = $this->userManager->get($ocName); + if($user instanceof OfflineUser) { + $user->unmark(); + $user = $this->userManager->get($ocName); + } $user->processAttributes($userRecord); } } diff --git a/apps/user_ldap/lib/user/offlineuser.php b/apps/user_ldap/lib/user/offlineuser.php index 72c0242792..3456a27b41 100644 --- a/apps/user_ldap/lib/user/offlineuser.php +++ b/apps/user_ldap/lib/user/offlineuser.php @@ -85,6 +85,13 @@ class OfflineUser { $this->fetchDetails(); } + /** + * remove the Delete-flag from the user. + */ + public function unmark() { + $this->config->setUserValue($this->ocName, 'user_ldap', 'isDeleted', '0'); + } + /** * exports the user details in an assoc array * @return array diff --git a/config/config.sample.php b/config/config.sample.php index 288e3a01cf..02e5aba3e9 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -879,11 +879,16 @@ $CONFIG = array( /** * Connection details for redis to use for memory caching. + * + * For enhanced security it is recommended to configure Redis + * to require a password. See http://redis.io/topics/security + * for more information. */ 'redis' => array( 'host' => 'localhost', // can also be a unix domain socket: '/tmp/redis.sock' 'port' => 6379, 'timeout' => 0.0, + 'password' => '', // Optional, if not defined no password will be used. 'dbindex' => 0, // Optional, if undefined SELECT will not run and will use Redis Server's default DB Index. ), diff --git a/core/js/js.js b/core/js/js.js index a3efb64e4b..460f65256a 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -1295,7 +1295,7 @@ function initCore() { */ function setupMainMenu() { // toggle the navigation - var $toggle = $('#header .menutoggle'); + var $toggle = $('#header .header-appname-container'); var $navigation = $('#navigation'); // init the menu diff --git a/core/js/tests/specs/coreSpec.js b/core/js/tests/specs/coreSpec.js index 3ebe55305f..f653fc8863 100644 --- a/core/js/tests/specs/coreSpec.js +++ b/core/js/tests/specs/coreSpec.js @@ -458,12 +458,11 @@ describe('Core base tests', function() { var clock; var $toggle; var $navigation; - var clock; beforeEach(function() { clock = sinon.useFakeTimers(); $('#testArea').append('