diff options
Diffstat (limited to 'apps')
47 files changed, 422 insertions, 52 deletions
diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php index 4ed0bbc5b0f..c3d3199a003 100644 --- a/apps/files/ajax/upload.php +++ b/apps/files/ajax/upload.php @@ -48,6 +48,8 @@ if(strpos($dir, '..') === false) { $fileCount=count($files['name']); for($i=0;$i<$fileCount;$i++) { $target = OCP\Files::buildNotExistingFileName(stripslashes($dir), $files['name'][$i]); + // $path needs to be normalized - this failed within drag'n'drop upload to a sub-folder + $target = OC_Filesystem::normalizePath($target); if(is_uploaded_file($files['tmp_name'][$i]) and OC_Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) { $meta = OC_FileCache::get($target); $id = OC_FileCache::getId($target); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index ac2e0d63588..a5550dc9926 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -141,7 +141,7 @@ var FileList={ tr=$('tr').filterAttr('data-file',name); tr.data('renaming',true); td=tr.children('td.filename'); - input=$('<input class="filename"></input>').val(name); + input=$('<input class="filename"/>').val(name); form=$('<form></form>'); form.append(input); td.children('a.name').hide(); @@ -160,11 +160,11 @@ var FileList={ OC.dialogs.alert(result.data.message, 'Error moving file'); newname = name; } - tr.data('renaming',false); }); } } + tr.data('renaming',false); tr.attr('data-file', newname); var path = td.children('a.name').attr('href'); td.children('a.name').attr('href', path.replace(encodeURIComponent(name), encodeURIComponent(newname))); diff --git a/apps/files/js/files.js b/apps/files/js/files.js index 982351c589e..2b250e0c7c5 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -228,7 +228,12 @@ $(document).ready(function() { } }); }else{ - var date=new Date(); + var dropTarget = $(e.originalEvent.target).closest('tr'); + if(dropTarget && dropTarget.attr('data-type') === 'dir') { // drag&drop upload to folder + var dirName = dropTarget.attr('data-file') + } + + var date=new Date(); if(files){ for(var i=0;i<files.length;i++){ if(files[i].size>0){ @@ -281,7 +286,10 @@ $(document).ready(function() { var jqXHR = $('.file_upload_start').fileupload('send', {files: files[i], formData: function(form) { var formArray = form.serializeArray(); - formArray[1]['value'] = dirName; + // array index 0 contains the max files size + // array index 1 contains the request token + // array index 2 contains the directory + formArray[2]['value'] = dirName; return formArray; }}).success(function(result, textStatus, jqXHR) { var response; @@ -291,7 +299,13 @@ $(document).ready(function() { $('#notification').fadeIn(); } var file=response[0]; + // TODO: this doesn't work if the file name has been changed server side delete uploadingFiles[dirName][file.name]; + if ($.assocArraySize(uploadingFiles[dirName]) == 0) { + delete uploadingFiles[dirName]; + } + + var uploadtext = $('tr').filterAttr('data-type', 'dir').filterAttr('data-file', dirName).find('.uploadtext') var currentUploads = parseInt(uploadtext.attr('currentUploads')); currentUploads -= 1; uploadtext.attr('currentUploads', currentUploads); @@ -495,6 +509,10 @@ $(document).ready(function() { $('#notification').text(t('files','Invalid name, \'/\' is not allowed.')); $('#notification').fadeIn(); return; + } else if( type == 'folder' && $('#dir').val() == '/' && $(this).val() == 'Shared') { + $('#notification').text(t('files','Invalid folder name. Usage of "Shared" is reserved by Owncloud')); + $('#notification').fadeIn(); + return; } var name = getUniqueName($(this).val()); if (name != $(this).val()) { @@ -821,7 +839,7 @@ function getSelectedFiles(property){ name:$(element).attr('data-file'), mime:$(element).data('mime'), type:$(element).data('type'), - size:$(element).data('size'), + size:$(element).data('size') }; if(property){ files.push(file[property]); diff --git a/apps/files/l10n/el.php b/apps/files/l10n/el.php index 49742dfb3db..920ddf57591 100644 --- a/apps/files/l10n/el.php +++ b/apps/files/l10n/el.php @@ -49,6 +49,7 @@ "New" => "Νέο", "Text file" => "Αρχείο κειμένου", "Folder" => "Φάκελος", +"From link" => "Από σύνδεσμο", "Upload" => "Αποστολή", "Cancel upload" => "Ακύρωση αποστολής", "Nothing in here. Upload something!" => "Δεν υπάρχει τίποτα εδώ. Ανέβασε κάτι!", diff --git a/apps/files/l10n/et_EE.php b/apps/files/l10n/et_EE.php index fedb8b5736c..73d5a286a9b 100644 --- a/apps/files/l10n/et_EE.php +++ b/apps/files/l10n/et_EE.php @@ -49,6 +49,7 @@ "New" => "Uus", "Text file" => "Tekstifail", "Folder" => "Kaust", +"From link" => "Allikast", "Upload" => "Lae üles", "Cancel upload" => "Tühista üleslaadimine", "Nothing in here. Upload something!" => "Siin pole midagi. Lae midagi üles!", diff --git a/apps/files/l10n/gl.php b/apps/files/l10n/gl.php index b049f3b2f33..a93920463a1 100644 --- a/apps/files/l10n/gl.php +++ b/apps/files/l10n/gl.php @@ -1,5 +1,5 @@ <?php $TRANSLATIONS = array( -"There is no error, the file uploaded with success" => "Non hai erros, o ficheiro enviouse correctamente", +"There is no error, the file uploaded with success" => "Non hai erros. O ficheiro enviouse correctamente", "The uploaded file exceeds the upload_max_filesize directive in php.ini" => "O ficheiro enviado supera a directiva upload_max_filesize no php.ini", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O ficheiro enviado supera a directiva MAX_FILE_SIZE que foi indicada no formulario HTML", "The uploaded file was only partially uploaded" => "O ficheiro enviado foi só parcialmente enviado", @@ -9,26 +9,39 @@ "Files" => "Ficheiros", "Unshare" => "Deixar de compartir", "Delete" => "Eliminar", +"Rename" => "Mudar o nome", +"{new_name} already exists" => "xa existe un {new_name}", "replace" => "substituír", -"suggest name" => "suxira nome", +"suggest name" => "suxerir nome", "cancel" => "cancelar", +"replaced {new_name}" => "substituír {new_name}", "undo" => "desfacer", -"generating ZIP-file, it may take some time." => "xerando ficheiro ZIP, pode levar un anaco.", +"replaced {new_name} with {old_name}" => "substituír {new_name} polo {old_name}", +"unshared {files}" => "{files} sen compartir", +"deleted {files}" => "{files} eliminados", +"generating ZIP-file, it may take some time." => "xerando un ficheiro ZIP, o que pode levar un anaco.", "Unable to upload your file as it is a directory or has 0 bytes" => "Non se puido subir o ficheiro pois ou é un directorio ou ten 0 bytes", "Upload Error" => "Erro na subida", "Close" => "Pechar", "Pending" => "Pendentes", +"1 file uploading" => "1 ficheiro subíndose", +"{count} files uploading" => "{count} ficheiros subíndose", "Upload cancelled." => "Subida cancelada.", "File upload is in progress. Leaving the page now will cancel the upload." => "A subida do ficheiro está en curso. Saír agora da páxina cancelará a subida.", "Invalid name, '/' is not allowed." => "Nome non válido, '/' non está permitido.", -"error while scanning" => "erro mentras analizaba", +"{count} files scanned" => "{count} ficheiros escaneados", +"error while scanning" => "erro mentres analizaba", "Name" => "Nome", "Size" => "Tamaño", "Modified" => "Modificado", +"1 folder" => "1 cartafol", +"{count} folders" => "{count} cartafoles", +"1 file" => "1 ficheiro", +"{count} files" => "{count} ficheiros", "File handling" => "Manexo de ficheiro", "Maximum upload size" => "Tamaño máximo de envío", "max. possible: " => "máx. posible: ", -"Needed for multi-file and folder downloads." => "Preciso para descarga de varios ficheiros e cartafoles.", +"Needed for multi-file and folder downloads." => "Precísase para a descarga de varios ficheiros e cartafoles.", "Enable ZIP-download" => "Habilitar a descarga-ZIP", "0 is unlimited" => "0 significa ilimitado", "Maximum input size for ZIP files" => "Tamaño máximo de descarga para os ZIP", @@ -36,13 +49,14 @@ "New" => "Novo", "Text file" => "Ficheiro de texto", "Folder" => "Cartafol", +"From link" => "Dende a ligazón", "Upload" => "Enviar", -"Cancel upload" => "Cancelar subida", -"Nothing in here. Upload something!" => "Nada por aquí. Envíe algo.", +"Cancel upload" => "Cancelar a subida", +"Nothing in here. Upload something!" => "Nada por aquí. Envía algo.", "Share" => "Compartir", "Download" => "Descargar", "Upload too large" => "Envío demasiado grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os ficheiros que trata de subir superan o tamaño máximo permitido neste servidor", -"Files are being scanned, please wait." => "Estanse analizando os ficheiros, espere por favor.", -"Current scanning" => "Análise actual." +"Files are being scanned, please wait." => "Estanse analizando os ficheiros. Agarda.", +"Current scanning" => "Análise actual" ); diff --git a/apps/files/l10n/ja_JP.php b/apps/files/l10n/ja_JP.php index b97975b8ef7..c4c78545a79 100644 --- a/apps/files/l10n/ja_JP.php +++ b/apps/files/l10n/ja_JP.php @@ -20,7 +20,7 @@ "unshared {files}" => "未共有 {files}", "deleted {files}" => "削除 {files}", "generating ZIP-file, it may take some time." => "ZIPファイルを生成中です、しばらくお待ちください。", -"Unable to upload your file as it is a directory or has 0 bytes" => "アップロード使用としているファイルがディレクトリ、もしくはサイズが0バイトのため、アップロードできません。", +"Unable to upload your file as it is a directory or has 0 bytes" => "ディレクトリもしくは0バイトのファイルはアップロードできません", "Upload Error" => "アップロードエラー", "Close" => "閉じる", "Pending" => "保留", diff --git a/apps/files/l10n/ko.php b/apps/files/l10n/ko.php index 110dea7a8b5..b604740c773 100644 --- a/apps/files/l10n/ko.php +++ b/apps/files/l10n/ko.php @@ -7,20 +7,37 @@ "Missing a temporary folder" => "임시 폴더가 사라짐", "Failed to write to disk" => "디스크에 쓰지 못했습니다", "Files" => "파일", +"Unshare" => "공유해제", "Delete" => "삭제", +"Rename" => "이름변경", +"{new_name} already exists" => "{new_name} 이미 존재함", "replace" => "대체", +"suggest name" => "이름을 제안", "cancel" => "취소", +"replaced {new_name}" => "{new_name} 으로 대체", "undo" => "복구", +"replaced {new_name} with {old_name}" => "{old_name}이 {new_name}으로 대체됨", +"unshared {files}" => "{files} 공유해제", +"deleted {files}" => "{files} 삭제됨", "generating ZIP-file, it may take some time." => "ZIP파일 생성에 시간이 걸릴 수 있습니다.", "Unable to upload your file as it is a directory or has 0 bytes" => "이 파일은 디렉토리이거나 0 바이트이기 때문에 업로드 할 수 없습니다.", "Upload Error" => "업로드 에러", "Close" => "닫기", "Pending" => "보류 중", +"1 file uploading" => "1 파일 업로드중", +"{count} files uploading" => "{count} 파일 업로드중", "Upload cancelled." => "업로드 취소.", +"File upload is in progress. Leaving the page now will cancel the upload." => "파일 업로드을 진행합니다. 페이지를 떠나게 될경우 업로드가 취소됩니다.", "Invalid name, '/' is not allowed." => "잘못된 이름, '/' 은 허용이 되지 않습니다.", +"{count} files scanned" => "{count} 파일 스캔되었습니다.", +"error while scanning" => "스캔하는 도중 에러", "Name" => "이름", "Size" => "크기", "Modified" => "수정됨", +"1 folder" => "1 폴더", +"{count} folders" => "{count} 폴더", +"1 file" => "1 파일", +"{count} files" => "{count} 파일", "File handling" => "파일 처리", "Maximum upload size" => "최대 업로드 크기", "max. possible: " => "최대. 가능한:", @@ -32,6 +49,7 @@ "New" => "새로 만들기", "Text file" => "텍스트 파일", "Folder" => "폴더", +"From link" => "From link", "Upload" => "업로드", "Cancel upload" => "업로드 취소", "Nothing in here. Upload something!" => "내용이 없습니다. 업로드할 수 있습니다!", diff --git a/apps/files/l10n/lv.php b/apps/files/l10n/lv.php index 6488ee534ec..24b46f53316 100644 --- a/apps/files/l10n/lv.php +++ b/apps/files/l10n/lv.php @@ -1,10 +1,14 @@ <?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Viss kārtībā, augšupielāde veiksmīga", "No file was uploaded" => "Neviens fails netika augšuplādēts", +"Missing a temporary folder" => "Trūkst pagaidu mapes", "Failed to write to disk" => "Nav iespējams saglabāt", "Files" => "Faili", "Unshare" => "Pārtraukt līdzdalīšanu", "Delete" => "Izdzēst", +"Rename" => "Pārdēvēt", "replace" => "aizvietot", +"suggest name" => "Ieteiktais nosaukums", "cancel" => "atcelt", "undo" => "vienu soli atpakaļ", "generating ZIP-file, it may take some time." => "lai uzģenerētu ZIP failu, kāds brīdis ir jāpagaida", @@ -12,14 +16,18 @@ "Upload Error" => "Augšuplādēšanas laikā radās kļūda", "Pending" => "Gaida savu kārtu", "Upload cancelled." => "Augšuplāde ir atcelta", +"File upload is in progress. Leaving the page now will cancel the upload." => "Notiek augšupielāde. Pametot lapu tagad, tiks atcelta augšupielāde.", "Invalid name, '/' is not allowed." => "Šis simbols '/', nav atļauts.", "Name" => "Nosaukums", "Size" => "Izmērs", "Modified" => "Izmainīts", +"File handling" => "Failu pārvaldība", "Maximum upload size" => "Maksimālais failu augšuplādes apjoms", "max. possible: " => "maksīmālais iespējamais:", +"Needed for multi-file and folder downloads." => "Vajadzīgs vairāku failu un mapju lejuplādei", "Enable ZIP-download" => "Iespējot ZIP lejuplādi", "0 is unlimited" => "0 ir neierobežots", +"Save" => "Saglabāt", "New" => "Jauns", "Text file" => "Teksta fails", "Folder" => "Mape", @@ -29,6 +37,7 @@ "Share" => "Līdzdalīt", "Download" => "Lejuplādēt", "Upload too large" => "Fails ir par lielu lai to augšuplādetu", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Jūsu augšuplādējamie faili pārsniedz servera pieļaujamo failu augšupielādes apjomu", "Files are being scanned, please wait." => "Faili šobrīd tiek caurskatīti, nedaudz jāpagaida.", "Current scanning" => "Šobrīd tiek pārbaudīti" ); diff --git a/apps/files/l10n/sl.php b/apps/files/l10n/sl.php index bf4cfa1ea3a..3e9a3b117ea 100644 --- a/apps/files/l10n/sl.php +++ b/apps/files/l10n/sl.php @@ -17,21 +17,27 @@ "replaced {new_name}" => "zamenjano je ime {new_name}", "undo" => "razveljavi", "replaced {new_name} with {old_name}" => "zamenjano ime {new_name} z imenom {old_name}", +"unshared {files}" => "odstranjeno iz souporabe {files}", +"deleted {files}" => "izbrisano {files}", "generating ZIP-file, it may take some time." => "Ustvarjanje datoteke ZIP. To lahko traja nekaj časa.", "Unable to upload your file as it is a directory or has 0 bytes" => "Pošiljanje ni mogoče, saj gre za mapo, ali pa je datoteka velikosti 0 bajtov.", "Upload Error" => "Napaka med nalaganjem", "Close" => "Zapri", "Pending" => "V čakanju ...", "1 file uploading" => "Pošiljanje 1 datoteke", +"{count} files uploading" => "nalagam {count} datotek", "Upload cancelled." => "Pošiljanje je preklicano.", "File upload is in progress. Leaving the page now will cancel the upload." => "V teku je pošiljanje datoteke. Če zapustite to stran zdaj, bo pošiljanje preklicano.", "Invalid name, '/' is not allowed." => "Neveljavno ime. Znak '/' ni dovoljen.", +"{count} files scanned" => "{count} files scanned", "error while scanning" => "napaka med pregledovanjem datotek", "Name" => "Ime", "Size" => "Velikost", "Modified" => "Spremenjeno", "1 folder" => "1 mapa", +"{count} folders" => "{count} map", "1 file" => "1 datoteka", +"{count} files" => "{count} datotek", "File handling" => "Upravljanje z datotekami", "Maximum upload size" => "Največja velikost za pošiljanja", "max. possible: " => "največ mogoče:", @@ -43,6 +49,7 @@ "New" => "Nova", "Text file" => "Besedilna datoteka", "Folder" => "Mapa", +"From link" => "Iz povezave", "Upload" => "Pošlji", "Cancel upload" => "Prekliči pošiljanje", "Nothing in here. Upload something!" => "Tukaj ni ničesar. Naložite kaj!", diff --git a/apps/files/l10n/th_TH.php b/apps/files/l10n/th_TH.php index 79b607413f0..3352dc13110 100644 --- a/apps/files/l10n/th_TH.php +++ b/apps/files/l10n/th_TH.php @@ -49,6 +49,7 @@ "New" => "อัพโหลดไฟล์ใหม่", "Text file" => "ไฟล์ข้อความ", "Folder" => "แฟ้มเอกสาร", +"From link" => "จากลิงก์", "Upload" => "อัพโหลด", "Cancel upload" => "ยกเลิกการอัพโหลด", "Nothing in here. Upload something!" => "ยังไม่มีไฟล์ใดๆอยู่ที่นี่ กรุณาอัพโหลดไฟล์!", diff --git a/apps/files/l10n/uk.php b/apps/files/l10n/uk.php index af75c2774ec..e2b99d899d5 100644 --- a/apps/files/l10n/uk.php +++ b/apps/files/l10n/uk.php @@ -5,27 +5,48 @@ "The uploaded file was only partially uploaded" => "Файл відвантажено лише частково", "No file was uploaded" => "Не відвантажено жодного файлу", "Missing a temporary folder" => "Відсутній тимчасовий каталог", +"Failed to write to disk" => "Невдалося записати на диск", "Files" => "Файли", "Unshare" => "Заборонити доступ", "Delete" => "Видалити", +"Rename" => "Перейменувати", +"{new_name} already exists" => "{new_name} вже існує", +"replace" => "заміна", +"suggest name" => "запропонуйте назву", +"cancel" => "відміна", +"replaced {new_name}" => "замінено {new_name}", "undo" => "відмінити", +"replaced {new_name} with {old_name}" => "замінено {new_name} на {old_name}", +"deleted {files}" => "видалено {files}", "generating ZIP-file, it may take some time." => "Створення ZIP-файлу, це може зайняти певний час.", "Unable to upload your file as it is a directory or has 0 bytes" => "Неможливо завантажити ваш файл тому, що він тека або файл розміром 0 байт", "Upload Error" => "Помилка завантаження", "Close" => "Закрити", "Pending" => "Очікування", +"1 file uploading" => "1 файл завантажується", +"{count} files uploading" => "{count} файлів завантажується", "Upload cancelled." => "Завантаження перервано.", +"File upload is in progress. Leaving the page now will cancel the upload." => "Виконується завантаження файлу. Закриття цієї сторінки приведе до відміни завантаження.", "Invalid name, '/' is not allowed." => "Некоректне ім'я, '/' не дозволено.", +"{count} files scanned" => "{count} файлів проскановано", +"error while scanning" => "помилка при скануванні", "Name" => "Ім'я", "Size" => "Розмір", "Modified" => "Змінено", +"1 folder" => "1 папка", +"{count} folders" => "{count} папок", +"1 file" => "1 файл", +"{count} files" => "{count} файлів", "Maximum upload size" => "Максимальний розмір відвантажень", "max. possible: " => "макс.можливе:", +"Enable ZIP-download" => "Активувати ZIP-завантаження", "0 is unlimited" => "0 є безліміт", +"Maximum input size for ZIP files" => "Максимальний розмір завантажуємого ZIP файлу", "Save" => "Зберегти", "New" => "Створити", "Text file" => "Текстовий файл", "Folder" => "Папка", +"From link" => "З посилання", "Upload" => "Відвантажити", "Cancel upload" => "Перервати завантаження", "Nothing in here. Upload something!" => "Тут нічого немає. Відвантажте що-небудь!", diff --git a/apps/files/l10n/vi.php b/apps/files/l10n/vi.php index e83ce940c1e..16138e722a2 100644 --- a/apps/files/l10n/vi.php +++ b/apps/files/l10n/vi.php @@ -5,7 +5,7 @@ "The uploaded file was only partially uploaded" => "Tập tin tải lên mới chỉ tải lên được một phần", "No file was uploaded" => "Không có tập tin nào được tải lên", "Missing a temporary folder" => "Không tìm thấy thư mục tạm", -"Failed to write to disk" => "Không thể ghi vào đĩa cứng", +"Failed to write to disk" => "Không thể ghi ", "Files" => "Tập tin", "Unshare" => "Không chia sẽ", "Delete" => "Xóa", @@ -19,7 +19,7 @@ "replaced {new_name} with {old_name}" => "đã thay thế {new_name} bằng {old_name}", "unshared {files}" => "hủy chia sẽ {files}", "deleted {files}" => "đã xóa {files}", -"generating ZIP-file, it may take some time." => "Tạo tập tinh ZIP, điều này có thể mất một ít thời gian", +"generating ZIP-file, it may take some time." => "Tạo tập tin ZIP, điều này có thể làm mất một chút thời gian", "Unable to upload your file as it is a directory or has 0 bytes" => "Không thể tải lên tập tin này do nó là một thư mục hoặc kích thước tập tin bằng 0 byte", "Upload Error" => "Tải lên lỗi", "Close" => "Đóng", @@ -40,7 +40,7 @@ "{count} files" => "{count} tập tin", "File handling" => "Xử lý tập tin", "Maximum upload size" => "Kích thước tối đa ", -"max. possible: " => "tối đa cho phép", +"max. possible: " => "tối đa cho phép:", "Needed for multi-file and folder downloads." => "Cần thiết cho tải nhiều tập tin và thư mục.", "Enable ZIP-download" => "Cho phép ZIP-download", "0 is unlimited" => "0 là không giới hạn", @@ -48,15 +48,15 @@ "Save" => "Lưu", "New" => "Mới", "Text file" => "Tập tin văn bản", -"Folder" => "Folder", +"Folder" => "Thư mục", "From link" => "Từ liên kết", "Upload" => "Tải lên", "Cancel upload" => "Hủy upload", "Nothing in here. Upload something!" => "Không có gì ở đây .Hãy tải lên một cái gì đó !", "Share" => "Chia sẻ", "Download" => "Tải xuống", -"Upload too large" => "File tải lên quá lớn", -"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Các tập tin bạn đang cố gắng tải lên vượt quá kích thước tối đa cho phép trên máy chủ này.", +"Upload too large" => "Tập tin tải lên quá lớn", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Các tập tin bạn đang tải lên vượt quá kích thước tối đa cho phép trên máy chủ .", "Files are being scanned, please wait." => "Tập tin đang được quét ,vui lòng chờ.", "Current scanning" => "Hiện tại đang quét" ); diff --git a/apps/files/l10n/zh_CN.php b/apps/files/l10n/zh_CN.php index 12975abdcf6..c9a3ab26c52 100644 --- a/apps/files/l10n/zh_CN.php +++ b/apps/files/l10n/zh_CN.php @@ -49,6 +49,7 @@ "New" => "新建", "Text file" => "文本文件", "Folder" => "文件夹", +"From link" => "来自链接", "Upload" => "上传", "Cancel upload" => "取消上传", "Nothing in here. Upload something!" => "这里还什么都没有。上传些东西吧!", diff --git a/apps/files_encryption/l10n/fa.php b/apps/files_encryption/l10n/fa.php index 0faa3f3aae7..01582e48e60 100644 --- a/apps/files_encryption/l10n/fa.php +++ b/apps/files_encryption/l10n/fa.php @@ -1,5 +1,6 @@ <?php $TRANSLATIONS = array( "Encryption" => "رمزگذاری", +"Exclude the following file types from encryption" => "نادیده گرفتن فایل های زیر برای رمز گذاری", "None" => "هیچکدام", "Enable Encryption" => "فعال کردن رمزگذاری" ); diff --git a/apps/files_encryption/l10n/gl.php b/apps/files_encryption/l10n/gl.php index 1434ff48aac..91d155ccad3 100644 --- a/apps/files_encryption/l10n/gl.php +++ b/apps/files_encryption/l10n/gl.php @@ -1,6 +1,6 @@ <?php $TRANSLATIONS = array( -"Encryption" => "Encriptado", -"Exclude the following file types from encryption" => "Excluír os seguintes tipos de ficheiro da encriptación", +"Encryption" => "Cifrado", +"Exclude the following file types from encryption" => "Excluír os seguintes tipos de ficheiro do cifrado", "None" => "Nada", -"Enable Encryption" => "Habilitar encriptación" +"Enable Encryption" => "Activar o cifrado" ); diff --git a/apps/files_encryption/l10n/ko.php b/apps/files_encryption/l10n/ko.php new file mode 100644 index 00000000000..83816bc2f14 --- /dev/null +++ b/apps/files_encryption/l10n/ko.php @@ -0,0 +1,6 @@ +<?php $TRANSLATIONS = array( +"Encryption" => "암호화", +"Exclude the following file types from encryption" => "다음파일 형식에 암호화 제외", +"None" => "없음", +"Enable Encryption" => "암호화 사용" +); diff --git a/apps/files_encryption/l10n/ta_LK.php b/apps/files_encryption/l10n/ta_LK.php new file mode 100644 index 00000000000..1d1ef74007e --- /dev/null +++ b/apps/files_encryption/l10n/ta_LK.php @@ -0,0 +1,6 @@ +<?php $TRANSLATIONS = array( +"Encryption" => "மறைக்குறியீடு", +"Exclude the following file types from encryption" => "மறைக்குறியாக்கலில் பின்வரும் கோப்பு வகைகளை நீக்கவும்", +"None" => "ஒன்றுமில்லை", +"Enable Encryption" => "மறைக்குறியாக்கலை இயலுமைப்படுத்துக" +); diff --git a/apps/files_encryption/l10n/vi.php b/apps/files_encryption/l10n/vi.php index cabf2da7dce..6365084fdc6 100644 --- a/apps/files_encryption/l10n/vi.php +++ b/apps/files_encryption/l10n/vi.php @@ -1,6 +1,6 @@ <?php $TRANSLATIONS = array( "Encryption" => "Mã hóa", "Exclude the following file types from encryption" => "Loại trừ các loại tập tin sau đây từ mã hóa", -"None" => "none", +"None" => "Không có gì hết", "Enable Encryption" => "BẬT mã hóa" ); diff --git a/apps/files_external/l10n/gl.php b/apps/files_external/l10n/gl.php index 3830efb70bf..f98809bfc0d 100644 --- a/apps/files_external/l10n/gl.php +++ b/apps/files_external/l10n/gl.php @@ -1,18 +1,24 @@ <?php $TRANSLATIONS = array( +"Access granted" => "Concedeuse acceso", +"Error configuring Dropbox storage" => "Erro configurando o almacenamento en Dropbox", +"Grant access" => "Permitir o acceso", +"Fill out all required fields" => "Cubrir todos os campos obrigatorios", +"Please provide a valid Dropbox app key and secret." => "Dá o segredo e a clave correcta do aplicativo de Dropbox.", +"Error configuring Google Drive storage" => "Erro configurando o almacenamento en Google Drive", "External Storage" => "Almacenamento externo", "Mount point" => "Punto de montaxe", -"Backend" => "Almacén", +"Backend" => "Infraestrutura", "Configuration" => "Configuración", "Options" => "Opcións", "Applicable" => "Aplicable", -"Add mount point" => "Engadir punto de montaxe", -"None set" => "Non establecido", +"Add mount point" => "Engadir un punto de montaxe", +"None set" => "Ningún definido", "All Users" => "Tódolos usuarios", "Groups" => "Grupos", "Users" => "Usuarios", "Delete" => "Eliminar", -"Enable User External Storage" => "Habilitar almacenamento externo do usuario", +"Enable User External Storage" => "Activar o almacenamento externo do usuario", "Allow users to mount their own external storage" => "Permitir aos usuarios montar os seus propios almacenamentos externos", -"SSL root certificates" => "Certificados raíz SSL", -"Import Root Certificate" => "Importar Certificado Raíz" +"SSL root certificates" => "Certificados SSL root", +"Import Root Certificate" => "Importar o certificado root" ); diff --git a/apps/files_external/l10n/ko.php b/apps/files_external/l10n/ko.php new file mode 100644 index 00000000000..d44ad88d85c --- /dev/null +++ b/apps/files_external/l10n/ko.php @@ -0,0 +1,24 @@ +<?php $TRANSLATIONS = array( +"Access granted" => "접근 허가", +"Error configuring Dropbox storage" => "드롭박스 저장공간 구성 에러", +"Grant access" => "접근권한 부여", +"Fill out all required fields" => "모든 필요한 필드들을 입력하세요.", +"Please provide a valid Dropbox app key and secret." => "유효한 드롭박스 응용프로그램 키와 비밀번호를 입력해주세요.", +"Error configuring Google Drive storage" => "구글드라이브 저장공간 구성 에러", +"External Storage" => "확장 저장공간", +"Mount point" => "마운트 포인트", +"Backend" => "백엔드", +"Configuration" => "설정", +"Options" => "옵션", +"Applicable" => "적용가능", +"Add mount point" => "마운트 포인트 추가", +"None set" => "세트 없음", +"All Users" => "모든 사용자", +"Groups" => "그룹", +"Users" => "사용자", +"Delete" => "삭제", +"Enable User External Storage" => "사용자 확장 저장공간 사용", +"Allow users to mount their own external storage" => "사용자들에게 그들의 확장 저장공간 마운트 하는것을 허용", +"SSL root certificates" => "SSL 루트 인증서", +"Import Root Certificate" => "루트 인증서 가져오기" +); diff --git a/apps/files_external/l10n/uk.php b/apps/files_external/l10n/uk.php index 79920b9014a..ea8f2b26657 100644 --- a/apps/files_external/l10n/uk.php +++ b/apps/files_external/l10n/uk.php @@ -1,5 +1,23 @@ <?php $TRANSLATIONS = array( +"Access granted" => "Доступ дозволено", +"Error configuring Dropbox storage" => "Помилка при налаштуванні сховища Dropbox", +"Grant access" => "Дозволити доступ", +"Fill out all required fields" => "Заповніть всі обов'язкові поля", +"Please provide a valid Dropbox app key and secret." => "Будь ласка, надайте дійсний ключ та пароль Dropbox.", +"Error configuring Google Drive storage" => "Помилка при налаштуванні сховища Google Drive", +"External Storage" => "Зовнішні сховища", +"Mount point" => "Точка монтування", +"Backend" => "Backend", +"Configuration" => "Налаштування", +"Options" => "Опції", +"Add mount point" => "Додати точку монтування", +"None set" => "Не встановлено", +"All Users" => "Усі користувачі", "Groups" => "Групи", "Users" => "Користувачі", -"Delete" => "Видалити" +"Delete" => "Видалити", +"Enable User External Storage" => "Активувати користувацькі зовнішні сховища", +"Allow users to mount their own external storage" => "Дозволити користувачам монтувати власні зовнішні сховища", +"SSL root certificates" => "SSL корневі сертифікати", +"Import Root Certificate" => "Імпортувати корневі сертифікати" ); diff --git a/apps/files_sharing/l10n/gl.php b/apps/files_sharing/l10n/gl.php index c9644d720e3..fe06a5bc70e 100644 --- a/apps/files_sharing/l10n/gl.php +++ b/apps/files_sharing/l10n/gl.php @@ -1,7 +1,9 @@ <?php $TRANSLATIONS = array( "Password" => "Contrasinal", "Submit" => "Enviar", +"%s shared the folder %s with you" => "%s compartiu o cartafol %s contigo", +"%s shared the file %s with you" => "%s compartiu ficheiro %s contigo", "Download" => "Baixar", "No preview available for" => "Sen vista previa dispoñible para ", -"web services under your control" => "servizos web baixo o seu control" +"web services under your control" => "servizos web baixo o teu control" ); diff --git a/apps/files_sharing/l10n/ko.php b/apps/files_sharing/l10n/ko.php new file mode 100644 index 00000000000..c172da854d8 --- /dev/null +++ b/apps/files_sharing/l10n/ko.php @@ -0,0 +1,9 @@ +<?php $TRANSLATIONS = array( +"Password" => "비밀번호", +"Submit" => "제출", +"%s shared the folder %s with you" => "%s 공유된 폴더 %s 당신과 함께", +"%s shared the file %s with you" => "%s 공유된 파일 %s 당신과 함께", +"Download" => "다운로드", +"No preview available for" => "사용가능한 프리뷰가 없습니다.", +"web services under your control" => "당신의 통제하에 있는 웹서비스" +); diff --git a/apps/files_sharing/l10n/ta_LK.php b/apps/files_sharing/l10n/ta_LK.php new file mode 100644 index 00000000000..6cf6f6236b7 --- /dev/null +++ b/apps/files_sharing/l10n/ta_LK.php @@ -0,0 +1,9 @@ +<?php $TRANSLATIONS = array( +"Password" => "கடவுச்சொல்", +"Submit" => "சமர்ப்பிக்குக", +"%s shared the folder %s with you" => "%s கோப்புறையானது %s உடன் பகிரப்பட்டது", +"%s shared the file %s with you" => "%s கோப்பானது %s உடன் பகிரப்பட்டது", +"Download" => "பதிவிறக்குக", +"No preview available for" => "அதற்கு முன்னோக்கு ஒன்றும் இல்லை", +"web services under your control" => "வலைய சேவைகள் உங்களுடைய கட்டுப்பாட்டின் கீழ் உள்ளது" +); diff --git a/apps/files_sharing/l10n/uk.php b/apps/files_sharing/l10n/uk.php index 43b86a28c17..cdc103ad465 100644 --- a/apps/files_sharing/l10n/uk.php +++ b/apps/files_sharing/l10n/uk.php @@ -1,4 +1,9 @@ <?php $TRANSLATIONS = array( "Password" => "Пароль", -"Download" => "Завантажити" +"Submit" => "Submit", +"%s shared the folder %s with you" => "%s опублікував каталог %s для Вас", +"%s shared the file %s with you" => "%s опублікував файл %s для Вас", +"Download" => "Завантажити", +"No preview available for" => "Попередній перегляд недоступний для", +"web services under your control" => "підконтрольні Вам веб-сервіси" ); diff --git a/apps/files_sharing/l10n/vi.php b/apps/files_sharing/l10n/vi.php index 6a36f11899e..afeec5c6481 100644 --- a/apps/files_sharing/l10n/vi.php +++ b/apps/files_sharing/l10n/vi.php @@ -1,8 +1,8 @@ <?php $TRANSLATIONS = array( "Password" => "Mật khẩu", "Submit" => "Xác nhận", -"%s shared the folder %s with you" => "%s đã chia sẽ thư mục %s với bạn", -"%s shared the file %s with you" => "%s đã chia sẽ tập tin %s với bạn", +"%s shared the folder %s with you" => "%s đã chia sẻ thư mục %s với bạn", +"%s shared the file %s with you" => "%s đã chia sẻ tập tin %s với bạn", "Download" => "Tải về", "No preview available for" => "Không có xem trước cho", "web services under your control" => "dịch vụ web dưới sự kiểm soát của bạn" diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index 35cca7c42dc..647e1e08a31 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -1,3 +1,11 @@ +<script type="text/javascript"> + <?php if ( array_key_exists('publicListView', $_) && $_['publicListView'] == true ) { + echo "var publicListView = true;"; + } else { + echo "var publicListView = false;"; + } + ?> +</script> <input type="hidden" name="dir" value="<?php echo $_['dir'] ?>" id="dir"> <input type="hidden" name="downloadURL" value="<?php echo $_['downloadURL'] ?>" id="downloadURL"> <input type="hidden" name="filename" value="<?php echo $_['filename'] ?>" id="filename"> diff --git a/apps/files_versions/l10n/gl.php b/apps/files_versions/l10n/gl.php index c0d5937e1b1..535a669d357 100644 --- a/apps/files_versions/l10n/gl.php +++ b/apps/files_versions/l10n/gl.php @@ -1,7 +1,8 @@ <?php $TRANSLATIONS = array( "Expire all versions" => "Caducar todas as versións", +"History" => "Historia", "Versions" => "Versións", -"This will delete all existing backup versions of your files" => "Esto eliminará todas as copias de respaldo existentes dos seus ficheiros", -"Files Versioning" => "Versionado de ficheiros", -"Enable" => "Habilitar" +"This will delete all existing backup versions of your files" => "Isto eliminará todas as copias de seguranza que haxa dos teus ficheiros", +"Files Versioning" => "Sistema de versión de ficheiros", +"Enable" => "Activar" ); diff --git a/apps/files_versions/l10n/ko.php b/apps/files_versions/l10n/ko.php new file mode 100644 index 00000000000..9c14de0962a --- /dev/null +++ b/apps/files_versions/l10n/ko.php @@ -0,0 +1,8 @@ +<?php $TRANSLATIONS = array( +"Expire all versions" => "모든 버전이 만료되었습니다.", +"History" => "역사", +"Versions" => "버전", +"This will delete all existing backup versions of your files" => "당신 파일의 존재하는 모든 백업 버전이 삭제될것입니다.", +"Files Versioning" => "파일 버전관리중", +"Enable" => "가능" +); diff --git a/apps/files_versions/l10n/ru_RU.php b/apps/files_versions/l10n/ru_RU.php index a14258eea87..557c2f8e6d1 100644 --- a/apps/files_versions/l10n/ru_RU.php +++ b/apps/files_versions/l10n/ru_RU.php @@ -2,7 +2,7 @@ "Expire all versions" => "Срок действия всех версий истекает", "History" => "История", "Versions" => "Версии", -"This will delete all existing backup versions of your files" => "Это приведет к удалению всех существующих версий резервной копии ваших файлов", +"This will delete all existing backup versions of your files" => "Это приведет к удалению всех существующих версий резервной копии Ваших файлов", "Files Versioning" => "Файлы управления версиями", "Enable" => "Включить" ); diff --git a/apps/files_versions/l10n/ta_LK.php b/apps/files_versions/l10n/ta_LK.php new file mode 100644 index 00000000000..f1215b3ecc1 --- /dev/null +++ b/apps/files_versions/l10n/ta_LK.php @@ -0,0 +1,8 @@ +<?php $TRANSLATIONS = array( +"Expire all versions" => "எல்லா பதிப்புகளும் காலாவதியாகிவிட்டது", +"History" => "வரலாறு", +"Versions" => "பதிப்புகள்", +"This will delete all existing backup versions of your files" => "உங்களுடைய கோப்புக்களில் ஏற்கனவே உள்ள ஆதாரநகல்களின் பதிப்புக்களை இவை அழித்துவிடும்", +"Files Versioning" => "கோப்பு பதிப்புகள்", +"Enable" => "இயலுமைப்படுத்துக" +); diff --git a/apps/files_versions/l10n/vi.php b/apps/files_versions/l10n/vi.php index a92e85a017a..260c3b6b39c 100644 --- a/apps/files_versions/l10n/vi.php +++ b/apps/files_versions/l10n/vi.php @@ -2,7 +2,7 @@ "Expire all versions" => "Hết hạn tất cả các phiên bản", "History" => "Lịch sử", "Versions" => "Phiên bản", -"This will delete all existing backup versions of your files" => "Điều này sẽ xóa tất cả các phiên bản sao lưu hiện có ", -"Files Versioning" => "Phiên bản tệp tin", -"Enable" => "Kích hoạtLịch sử" +"This will delete all existing backup versions of your files" => "Khi bạn thực hiện thao tác này sẽ xóa tất cả các phiên bản sao lưu hiện có ", +"Files Versioning" => "Phiên bản tập tin", +"Enable" => "Bật " ); diff --git a/apps/user_ldap/appinfo/update.php b/apps/user_ldap/appinfo/update.php index e6e25cec734..9b54ba18b6c 100644 --- a/apps/user_ldap/appinfo/update.php +++ b/apps/user_ldap/appinfo/update.php @@ -34,22 +34,49 @@ $groupBE = new \OCA\user_ldap\GROUP_LDAP(); $groupBE->setConnector($connector); foreach($objects as $object) { - $fetchDNSql = 'SELECT `ldap_dn`, `owncloud_name` FROM `*PREFIX*ldap_'.$object.'_mapping` WHERE `directory_uuid` = \'\''; - $updateSql = 'UPDATE `*PREFIX*ldap_'.$object.'_mapping` SET `ldap_DN` = ?, `directory_uuid` = ? WHERE `ldap_dn` = ?'; + $fetchDNSql = ' + SELECT `ldap_dn`, `owncloud_name`, `directory_uuid` + FROM `*PREFIX*ldap_'.$object.'_mapping`'; + $updateSql = ' + UPDATE `*PREFIX*ldap_'.$object.'_mapping` + SET `ldap_DN` = ?, `directory_uuid` = ? + WHERE `ldap_dn` = ?'; $query = OCP\DB::prepare($fetchDNSql); $res = $query->execute(); $DNs = $res->fetchAll(); $updateQuery = OCP\DB::prepare($updateSql); foreach($DNs as $dn) { - $newDN = mb_strtolower($dn['ldap_dn'], 'UTF-8'); - if($object == 'user') { + $newDN = escapeDN(mb_strtolower($dn['ldap_dn'], 'UTF-8')); + if(!empty($dn['directory_uuid'])) { + $uuid = $dn['directory_uuid']; + } elseif($object == 'user') { $uuid = $userBE->getUUID($newDN); //fix home folder to avoid new ones depending on the configuration $userBE->getHome($dn['owncloud_name']); } else { $uuid = $groupBE->getUUID($newDN); } - $updateQuery->execute(array($newDN, $uuid, $dn['ldap_dn'])); + try { + $updateQuery->execute(array($newDN, $uuid, $dn['ldap_dn'])); + } catch(Exception $e) { + \OCP\Util::writeLog('user_ldap', 'Could not update '.$object.' '.$dn['ldap_dn'].' in the mappings table. ', \OCP\Util::WARN); + } + + } +} + +function escapeDN($dn) { + $aDN = ldap_explode_dn($dn, false); + unset($aDN['count']); + foreach($aDN as $key => $part) { + $value = substr($part, strpos($part, '=')+1); + $escapedValue = strtr($value, Array(','=>'\2c', '='=>'\3d', '+'=>'\2b', + '<'=>'\3c', '>'=>'\3e', ';'=>'\3b', '\\'=>'\5c', + '"'=>'\22', '#'=>'\23')); + $part = str_replace($part, $value, $escapedValue); } + $dn = implode(',', $aDN); + + return $dn; } diff --git a/apps/user_ldap/appinfo/version b/apps/user_ldap/appinfo/version index 73082a89b35..b1a5f4781d1 100644 --- a/apps/user_ldap/appinfo/version +++ b/apps/user_ldap/appinfo/version @@ -1 +1 @@ -0.3.0.0
\ No newline at end of file +0.3.0.1
\ No newline at end of file diff --git a/apps/user_ldap/l10n/gl.php b/apps/user_ldap/l10n/gl.php new file mode 100644 index 00000000000..efcea02c180 --- /dev/null +++ b/apps/user_ldap/l10n/gl.php @@ -0,0 +1,37 @@ +<?php $TRANSLATIONS = array( +"Host" => "Servidor", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Podes omitir o protocolo agás que precises de SSL. Nese caso comeza con ldaps://", +"Base DN" => "DN base", +"You can specify Base DN for users and groups in the Advanced tab" => "Podes especificar a DN base para usuarios e grupos na lapela de «Avanzado»", +"User DN" => "DN do usuario", +"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "O DN do cliente do usuario co que hai que estabelecer unha conexión, p.ex uid=axente, dc=exemplo, dc=com. Para o acceso en anónimo deixa o DN e o contrasinal baleiros.", +"Password" => "Contrasinal", +"For anonymous access, leave DN and Password empty." => "Para o acceso anónimo deixa o DN e o contrasinal baleiros.", +"User Login Filter" => "Filtro de acceso de usuarios", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Define o filtro que se aplica cando se intenta o acceso. %%uid substitúe o nome de usuario e a acción de acceso.", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "usar a marca de posición %%uid, p.ex «uid=%%uid»", +"User List Filter" => "Filtro da lista de usuarios", +"Defines the filter to apply, when retrieving users." => "Define o filtro a aplicar cando se recompilan os usuarios.", +"without any placeholder, e.g. \"objectClass=person\"." => "sen ningunha marca de posición, como p.ex \"objectClass=persoa\".", +"Group Filter" => "Filtro de grupo", +"Defines the filter to apply, when retrieving groups." => "Define o filtro a aplicar cando se recompilan os grupos.", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "sen ningunha marca de posición, como p.ex \"objectClass=grupoPosix\".", +"Port" => "Porto", +"Base User Tree" => "Base da árbore de usuarios", +"Base Group Tree" => "Base da árbore de grupo", +"Group-Member association" => "Asociación de grupos e membros", +"Use TLS" => "Usar TLS", +"Do not use it for SSL connections, it will fail." => "Non o empregues para conexións SSL: fallará.", +"Case insensitve LDAP server (Windows)" => "Servidor LDAP que non distingue entre maiúsculas e minúsculas (Windows)", +"Turn off SSL certificate validation." => "Apaga a validación do certificado SSL.", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Se a conexión só funciona con esta opción importa o certificado SSL do servidor LDAP no teu servidor ownCloud.", +"Not recommended, use for testing only." => "Non se recomenda. Só para probas.", +"User Display Name Field" => "Campo de mostra do nome de usuario", +"The LDAP attribute to use to generate the user`s ownCloud name." => "O atributo LDAP a empregar para xerar o nome de usuario de ownCloud.", +"Group Display Name Field" => "Campo de mostra do nome de grupo", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "O atributo LDAP úsase para xerar os nomes dos grupos de ownCloud.", +"in bytes" => "en bytes", +"in seconds. A change empties the cache." => "en segundos. Calquera cambio baleira o caché.", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Deixar baleiro para o nome de usuario (por defecto). Noutro caso, especifica un atributo LDAP/AD.", +"Help" => "Axuda" +); diff --git a/apps/user_ldap/l10n/ko.php b/apps/user_ldap/l10n/ko.php new file mode 100644 index 00000000000..681365d221f --- /dev/null +++ b/apps/user_ldap/l10n/ko.php @@ -0,0 +1,33 @@ +<?php $TRANSLATIONS = array( +"Host" => "호스트", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "당신은 필요로하는 SSL을 제외하고, 프로토콜을 생략 할 수 있습니다. 다음 시작 주소는 LDAPS://", +"Base DN" => "기본 DN", +"You can specify Base DN for users and groups in the Advanced tab" => "당신은 고급 탭에서 사용자 및 그룹에 대한 기본 DN을 지정할 수 있습니다.", +"User DN" => "사용자 DN", +"Password" => "비밀번호", +"For anonymous access, leave DN and Password empty." => "익명의 접속을 위해서는 DN과 비밀번호를 빈상태로 두면 됩니다.", +"User Login Filter" => "사용자 로그인 필터", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "로그인을 시도 할 때 적용 할 필터를 정의합니다. %%udi는 로그인 작업의 사용자 이름을 대체합니다.", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "use %%uid placeholder, e.g. \"uid=%%uid\"", +"User List Filter" => "사용자 목록 필터", +"Defines the filter to apply, when retrieving users." => "사용자를 검색 할 때 적용 할 필터를 정의합니다.", +"Group Filter" => "그룹 필터", +"Defines the filter to apply, when retrieving groups." => "그룹을 검색 할 때 적용 할 필터를 정의합니다.", +"Port" => "포트", +"Base User Tree" => "기본 사용자 트리", +"Base Group Tree" => "기본 그룹 트리", +"Group-Member association" => "그룹 회원 동료", +"Use TLS" => "TLS 사용", +"Do not use it for SSL connections, it will fail." => "SSL연결을 사용하지 마세요, 그것은 실패할겁니다.", +"Case insensitve LDAP server (Windows)" => "insensitve LDAP 서버 (Windows)의 경우", +"Turn off SSL certificate validation." => "SSL 인증서 유효성 검사를 해제합니다.", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "연결에만 이 옵션을 사용할 경우 당신의 ownCloud 서버에 LDAP 서버의 SSL 인증서를 가져옵니다.", +"Not recommended, use for testing only." => "추천하지 않음, 테스트로만 사용", +"User Display Name Field" => "사용자 표시 이름 필드", +"The LDAP attribute to use to generate the user`s ownCloud name." => "LDAP 속성은 사용자의 ownCloud 이름을 생성하기 위해 사용합니다.", +"Group Display Name Field" => "그룹 표시 이름 필드", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "LDAP 속성은 그룹의 ownCloud 이름을 생성하기 위해 사용합니다.", +"in bytes" => "바이트", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "사용자 이름(기본값)을 비워 둡니다. 그렇지 않으면 LDAP/AD 특성을 지정합니다.", +"Help" => "도움말" +); diff --git a/apps/user_ldap/l10n/ta_LK.php b/apps/user_ldap/l10n/ta_LK.php new file mode 100644 index 00000000000..2028becaf98 --- /dev/null +++ b/apps/user_ldap/l10n/ta_LK.php @@ -0,0 +1,27 @@ +<?php $TRANSLATIONS = array( +"Host" => "ஓம்புனர்", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "நீங்கள் SSL சேவையை தவிர உடன்படு வரைமுறையை தவிர்க்க முடியும். பிறகு ldaps:.// உடன் ஆரம்பிக்கவும்", +"Base DN" => "தள DN", +"You can specify Base DN for users and groups in the Advanced tab" => "நீங்கள் பயனாளர்களுக்கும் மேன்மை தத்தலில் உள்ள குழுவிற்கும் தள DN ஐ குறிப்பிடலாம் ", +"User DN" => "பயனாளர் DN", +"Password" => "கடவுச்சொல்", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "எந்த ஒதுக்கீடும் இல்லாமல், உதாரணம். \"objectClass=posixGroup\".", +"Port" => "துறை ", +"Base User Tree" => "தள பயனாளர் மரம்", +"Base Group Tree" => "தள குழு மரம்", +"Group-Member association" => "குழு உறுப்பினர் சங்கம்", +"Use TLS" => "TLS ஐ பயன்படுத்தவும்", +"Do not use it for SSL connections, it will fail." => "SSL இணைப்பிற்கு பயன்படுத்தவேண்டாம், அது தோல்வியடையும்.", +"Case insensitve LDAP server (Windows)" => "உணர்ச்சியான LDAP சேவையகம் (சாளரங்கள்)", +"Turn off SSL certificate validation." => "SSL சான்றிதழின் செல்லுபடியை நிறுத்திவிடவும்", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "இந்த தெரிவுகளில் மட்டும் இணைப்பு வேலைசெய்தால், உங்களுடைய owncloud சேவையகத்திலிருந்து LDAP சேவையகத்தின் SSL சான்றிதழை இறக்குமதி செய்யவும்", +"Not recommended, use for testing only." => "பரிந்துரைக்கப்படவில்லை, சோதனைக்காக மட்டும் பயன்படுத்தவும்.", +"User Display Name Field" => "பயனாளர் காட்சிப்பெயர் புலம்", +"The LDAP attribute to use to generate the user`s ownCloud name." => "பயனாளரின் ownCloud பெயரை உருவாக்க LDAP பண்புக்கூறை பயன்படுத்தவும்.", +"Group Display Name Field" => "குழுவின் காட்சி பெயர் புலம் ", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "ownCloud குழுக்களின் பெயர்களை உருவாக்க LDAP பண்புக்கூறை பயன்படுத்தவும்.", +"in bytes" => "bytes களில் ", +"in seconds. A change empties the cache." => "செக்கன்களில். ஒரு மாற்றம் இடைமாற்றுநினைவகத்தை வெற்றிடமாக்கும்.", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "பயனாளர் பெயரிற்கு வெற்றிடமாக விடவும் (பொது இருப்பு). இல்லாவிடின் LDAP/AD பண்புக்கூறை குறிப்பிடவும்.", +"Help" => "உதவி" +); diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php index b2244c17c0e..53d4edbe69c 100644 --- a/apps/user_ldap/lib/access.php +++ b/apps/user_ldap/lib/access.php @@ -58,6 +58,7 @@ abstract class Access { return false; } $rr = @ldap_read($cr, $dn, $filter, array($attr)); + $dn = $this->DNasBaseParameter($dn); if(!is_resource($rr)) { \OCP\Util::writeLog('user_ldap', 'readAttribute failed for DN '.$dn, \OCP\Util::DEBUG); //in case an error occurs , e.g. object does not exist @@ -119,6 +120,14 @@ abstract class Access { //make comparisons and everything work $dn = mb_strtolower($dn, 'UTF-8'); + //escape DN values according to RFC 2253 – this is already done by ldap_explode_dn + //to use the DN in search filters, \ needs to be escaped to \5c additionally + //to use them in bases, we convert them back to simple backslashes in readAttribute() + $aDN = ldap_explode_dn($dn, false); + unset($aDN['count']); + $dn = implode(',', $aDN); + $dn = str_replace('\\', '\\5c', $dn); + return $dn; } @@ -227,7 +236,6 @@ abstract class Access { * returns the internal ownCloud name for the given LDAP DN of the user, false on DN outside of search DN */ public function dn2ocname($dn, $ldapname = null, $isUser = true) { - $dn = $this->sanitizeDN($dn); $table = $this->getMapTable($isUser); if($isUser) { $fncFindMappedName = 'findMappedUser'; @@ -424,7 +432,6 @@ abstract class Access { */ private function mapComponent($dn, $ocname, $isUser = true) { $table = $this->getMapTable($isUser); - $dn = $this->sanitizeDN($dn); $sqlAdjustment = ''; $dbtype = \OCP\Config::getSystemValue('dbtype'); @@ -677,6 +684,7 @@ abstract class Access { } public function areCredentialsValid($name, $password) { + $name = $this->DNasBaseParameter($name); $testConnection = clone $this->connection; $credentials = array( 'ldapAgentName' => $name, @@ -719,6 +727,7 @@ abstract class Access { public function getUUID($dn) { if($this->detectUuidAttribute($dn)) { + \OCP\Util::writeLog('user_ldap', 'UUID Checking \ UUID for '.$dn.' using '. $this->connection->ldapUuidAttribute, \OCP\Util::DEBUG); $uuid = $this->readAttribute($dn, $this->connection->ldapUuidAttribute); if(!is_array($uuid) && $this->connection->ldapOverrideUuidAttribute) { $this->detectUuidAttribute($dn, true); @@ -764,6 +773,18 @@ abstract class Access { } /** + * @brief converts a stored DN so it can be used as base parameter for LDAP queries + * @param $dn the DN + * @returns String + * + * converts a stored DN so it can be used as base parameter for LDAP queries + * internally we store them for usage in LDAP filters + */ + private function DNasBaseParameter($dn) { + return str_replace('\\5c', '\\', $dn); + } + + /** * @brief get a cookie for the next LDAP paged search * @param $filter the search filter to identify the correct search * @param $limit the limit (or 'pageSize'), to identify the correct search well diff --git a/apps/user_webdavauth/l10n/gl.php b/apps/user_webdavauth/l10n/gl.php new file mode 100644 index 00000000000..a5b7e56771f --- /dev/null +++ b/apps/user_webdavauth/l10n/gl.php @@ -0,0 +1,3 @@ +<?php $TRANSLATIONS = array( +"WebDAV URL: http://" => "URL WebDAV: http://" +); diff --git a/apps/user_webdavauth/l10n/ko.php b/apps/user_webdavauth/l10n/ko.php new file mode 100644 index 00000000000..9bd32954b05 --- /dev/null +++ b/apps/user_webdavauth/l10n/ko.php @@ -0,0 +1,3 @@ +<?php $TRANSLATIONS = array( +"WebDAV URL: http://" => "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/sl.php b/apps/user_webdavauth/l10n/sl.php new file mode 100644 index 00000000000..9bd32954b05 --- /dev/null +++ b/apps/user_webdavauth/l10n/sl.php @@ -0,0 +1,3 @@ +<?php $TRANSLATIONS = array( +"WebDAV URL: http://" => "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/ta_LK.php b/apps/user_webdavauth/l10n/ta_LK.php new file mode 100644 index 00000000000..9bd32954b05 --- /dev/null +++ b/apps/user_webdavauth/l10n/ta_LK.php @@ -0,0 +1,3 @@ +<?php $TRANSLATIONS = array( +"WebDAV URL: http://" => "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/th_TH.php b/apps/user_webdavauth/l10n/th_TH.php new file mode 100644 index 00000000000..9bd32954b05 --- /dev/null +++ b/apps/user_webdavauth/l10n/th_TH.php @@ -0,0 +1,3 @@ +<?php $TRANSLATIONS = array( +"WebDAV URL: http://" => "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/uk.php b/apps/user_webdavauth/l10n/uk.php new file mode 100644 index 00000000000..9bd32954b05 --- /dev/null +++ b/apps/user_webdavauth/l10n/uk.php @@ -0,0 +1,3 @@ +<?php $TRANSLATIONS = array( +"WebDAV URL: http://" => "WebDAV URL: http://" +); diff --git a/apps/user_webdavauth/l10n/zh_CN.php b/apps/user_webdavauth/l10n/zh_CN.php new file mode 100644 index 00000000000..33c77f7d30e --- /dev/null +++ b/apps/user_webdavauth/l10n/zh_CN.php @@ -0,0 +1,3 @@ +<?php $TRANSLATIONS = array( +"WebDAV URL: http://" => "WebDAV地址: http://" +); diff --git a/apps/user_webdavauth/user_webdavauth.php b/apps/user_webdavauth/user_webdavauth.php index 0b0be7c2fa1..839196c114c 100755 --- a/apps/user_webdavauth/user_webdavauth.php +++ b/apps/user_webdavauth/user_webdavauth.php @@ -56,7 +56,7 @@ class OC_USER_WEBDAVAUTH extends OC_User_Backend { } $returncode= substr($headers[0], 9, 3); - if($returncode=='401') { + if(($returncode=='401') or ($returncode=='403')) { return(false); }else{ return($uid); |