Merge branch 'master' into memcache-public

Conflicts:
	apps/user_ldap/lib/connection.php
This commit is contained in:
Robin Appelman 2014-01-15 13:02:15 +01:00
commit 729210daa0
61 changed files with 355 additions and 3525 deletions

@ -1 +1 @@
Subproject commit 95ab25149c4903650a1113c01ccb1732fb089f14
Subproject commit dbe0025a42773d363513fb2c80106306d5444b48

View File

@ -222,6 +222,14 @@ $(document).ready(function() {
//examine file
var file = data.files[0];
try {
// FIXME: not so elegant... need to refactor that method to return a value
Files.isFileNameValid(file.name);
}
catch (errorMessage) {
data.textStatus = 'invalidcharacters';
data.errorThrown = errorMessage;
}
if (file.type === '' && file.size === 4096) {
data.textStatus = 'dirorzero';
@ -605,7 +613,7 @@ $(document).ready(function() {
if (result.status === 'success') {
var date=new Date();
FileList.addDir(name, 0, date, hidden);
var tr=$('tr[data-file="'+name+'"]');
var tr = FileList.findFileEl(name);
tr.attr('data-id', result.data.id);
} else {
OC.dialogs.alert(result.data.message, t('core', 'Could not create folder'));
@ -647,7 +655,7 @@ $(document).ready(function() {
$('#uploadprogressbar').fadeOut();
var date = new Date();
FileList.addFile(localName, size, date, false, hidden);
var tr = $('tr[data-file="'+localName+'"]');
var tr = FileList.findFileEl(localName);
tr.data('mime', mime).data('id', id);
tr.attr('data-id', id);
var path = $('#dir').val()+'/'+localName;

View File

@ -71,7 +71,7 @@ var FileActions = {
FileActions.currentFile = parent;
var actions = FileActions.get(FileActions.getCurrentMimeType(), FileActions.getCurrentType(), FileActions.getCurrentPermissions());
var file = FileActions.getCurrentFile();
if ($('tr[data-file="'+file+'"]').data('renaming')) {
if (FileList.findFileEl(file).data('renaming')) {
return;
}

View File

@ -6,6 +6,13 @@ var FileList={
$(this).attr('data-file',decodeURIComponent($(this).attr('data-file')));
});
},
/**
* Returns the tr element for a given file name
*/
findFileEl: function(fileName){
// use filterAttr to avoid escaping issues
return $('#fileList tr').filterAttr('data-file', fileName);
},
update:function(fileListHtml) {
var $fileList = $('#fileList');
$fileList.empty().html(fileListHtml);
@ -292,8 +299,9 @@ var FileList={
$('#filestable').toggleClass('hidden', show);
},
remove:function(name){
$('tr').filterAttr('data-file',name).find('td.filename').draggable('destroy');
$('tr').filterAttr('data-file',name).remove();
var fileEl = FileList.findFileEl(name);
fileEl.find('td.filename').draggable('destroy');
fileEl.remove();
FileList.updateFileSummary();
if ( ! $('tr[data-file]').exists() ) {
$('#emptycontent').removeClass('hidden');
@ -334,7 +342,7 @@ var FileList={
FileList.updateFileSummary();
},
loadingDone:function(name, id) {
var mime, tr = $('tr[data-file="'+name+'"]');
var mime, tr = FileList.findFileEl(name);
tr.data('loading', false);
mime = tr.data('mime');
tr.attr('data-mime', mime);
@ -347,12 +355,12 @@ var FileList={
}, null, null, tr.attr('data-etag'));
tr.find('td.filename').draggable(dragOptions);
},
isLoading:function(name) {
return $('tr[data-file="'+name+'"]').data('loading');
isLoading:function(file) {
return FileList.findFileEl(file).data('loading');
},
rename:function(oldname) {
var tr, td, input, form;
tr = $('tr[data-file="'+oldname+'"]');
tr = FileList.findFileEl(oldname);
tr.data('renaming',true);
td = tr.children('td.filename');
input = $('<input type="text" class="filename"/>').val(oldname);
@ -500,14 +508,16 @@ var FileList={
form.trigger('submit');
});
},
inList:function(filename) {
return $('#fileList tr[data-file="'+filename+'"]').length;
inList:function(file) {
return FileList.findFileEl(file).length;
},
replace:function(oldName, newName, isNewFile) {
// Finish any existing actions
$('tr[data-file="'+oldName+'"]').hide();
$('tr[data-file="'+newName+'"]').hide();
var tr = $('tr[data-file="'+oldName+'"]').clone();
var oldFileEl = FileList.findFileEl(oldName);
var newFileEl = FileList.findFileEl(newName);
oldFileEl.hide();
newFileEl.hide();
var tr = oldFileEl.clone();
tr.attr('data-replace', 'true');
tr.attr('data-file', newName);
var td = tr.children('td.filename');
@ -559,7 +569,7 @@ var FileList={
files=[files];
}
for (var i=0; i<files.length; i++) {
var deleteAction = $('tr[data-file="'+files[i]+'"]').children("td.date").children(".action.delete");
var deleteAction = FileList.findFileEl(files[i]).children("td.date").children(".action.delete");
deleteAction.removeClass('delete-icon').addClass('progress-icon');
}
// Finish any existing actions
@ -573,7 +583,7 @@ var FileList={
function(result) {
if (result.status === 'success') {
$.each(files,function(index,file) {
var files = $('tr[data-file="'+file+'"]');
var files = FileList.findFileEl(file);
files.remove();
files.find('input[type="checkbox"]').removeAttr('checked');
files.removeClass('selected');
@ -595,7 +605,7 @@ var FileList={
OC.Notification.hide();
}, 10000);
$.each(files,function(index,file) {
var deleteAction = $('tr[data-file="' + file + '"] .action.delete');
var deleteAction = FileList.findFileEl(file).find('.action.delete');
deleteAction.removeClass('progress-icon').addClass('delete-icon');
});
}
@ -737,7 +747,7 @@ var FileList={
},
scrollTo:function(file) {
//scroll to and highlight preselected file
var $scrolltorow = $('tr[data-file="'+file+'"]');
var $scrolltorow = FileList.findFileEl(file);
if ($scrolltorow.exists()) {
$scrolltorow.addClass('searchresult');
$(window).scrollTop($scrolltorow.position().top);
@ -949,7 +959,7 @@ $(document).ready(function() {
$('#notification').on('click', '.undo', function() {
if (FileList.deleteFiles) {
$.each(FileList.deleteFiles,function(index,file) {
$('tr[data-file="'+file+'"]').show();
FileList.findFileEl(file).show();
});
FileList.deleteCanceled=true;
FileList.deleteFiles=null;
@ -959,10 +969,10 @@ $(document).ready(function() {
FileList.deleteCanceled = false;
FileList.deleteFiles = [FileList.replaceOldName];
} else {
$('tr[data-file="'+FileList.replaceOldName+'"]').show();
FileList.findFileEl(FileList.replaceOldName).show();
}
$('tr[data-replace="true"').remove();
$('tr[data-file="'+FileList.replaceNewName+'"]').show();
FileList.findFileEl(FileList.replaceNewName).show();
FileList.replaceCanceled = true;
FileList.replaceOldName = null;
FileList.replaceNewName = null;
@ -977,7 +987,8 @@ $(document).ready(function() {
});
});
$('#notification:first-child').on('click', '.suggest', function() {
$('tr[data-file="'+$('#notification > span').attr('data-oldName')+'"]').show();
var file = $('#notification > span').attr('data-oldName');
FileList.findFileEl(file).show();
OC.Notification.hide();
});
$('#notification:first-child').on('click', '.cancel', function() {

View File

@ -282,7 +282,7 @@ $(document).ready(function() {
procesSelection();
} else {
var filename=$(this).parent().parent().attr('data-file');
var tr=$('tr[data-file="'+filename+'"]');
var tr = FileList.findFileEl(filename);
var renaming=tr.data('renaming');
if (!renaming && !FileList.isLoading(filename)) {
FileActions.currentFile = $(this).parent();
@ -541,10 +541,12 @@ var folderDropOptions={
if (result) {
if (result.status === 'success') {
//recalculate folder size
var oldSize = $('#fileList tr[data-file="'+target+'"]').data('size');
var newSize = oldSize + $('#fileList tr[data-file="'+file+'"]').data('size');
$('#fileList tr[data-file="'+target+'"]').data('size', newSize);
$('#fileList tr[data-file="'+target+'"]').find('td.filesize').text(humanFileSize(newSize));
var oldFile = FileList.findFileEl(target);
var newFile = FileList.findFileEl(file);
var oldSize = oldFile.data('size');
var newSize = oldSize + newFile.data('size');
oldFile.data('size', newSize);
oldFile.find('td.filesize').text(humanFileSize(newSize));
FileList.remove(file);
procesSelection();
@ -738,7 +740,7 @@ Files.lazyLoadPreview = function(path, mime, ready, width, height, etag) {
}
function getUniqueName(name) {
if ($('tr[data-file="'+name+'"]').exists()) {
if (FileList.findFileEl(name).exists()) {
var parts=name.split('.');
var extension = "";
if (parts.length > 1) {

View File

@ -1,21 +0,0 @@
<?php
$TRANSLATIONS = array(
"File name cannot be empty." => "Имя файла не может быть пустым.",
"Files" => "Файлы",
"Share" => "Сделать общим",
"Rename" => "Переименовать",
"_%n folder_::_%n folders_" => array("","",""),
"_%n file_::_%n files_" => array("","",""),
"_Uploading %n file_::_Uploading %n files_" => array("","",""),
"'.' is an invalid file name." => "'.' является неверным именем файла.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Некорректное имя, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' не допустимы.",
"Error" => "Ошибка",
"Size" => "Размер",
"Upload" => "Загрузка",
"0 is unlimited" => "0 без ограничений",
"Save" => "Сохранить",
"Cancel upload" => "Отмена загрузки",
"Download" => "Загрузка",
"Delete" => "Удалить"
);
$PLURAL_FORMS = "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);";

View File

@ -130,7 +130,7 @@ class smb {
// this put env is necessary to read the output of smbclient correctly
$old_locale = getenv('LC_ALL');
putenv('LC_ALL=en_US.UTF-8');
$output = popen (SMB4PHP_SMBCLIENT." -N {$auth} {$options} {$port} {$options} {$params} 2>/dev/null", 'r');
$output = popen ('TZ=UTC '.SMB4PHP_SMBCLIENT." -N {$auth} {$options} {$port} {$options} {$params} 2>/dev/null", 'r');
$gotInfo = false;
$info = array ();
$info['info']= array ();

View File

@ -1,6 +0,0 @@
<?php
$TRANSLATIONS = array(
"Options" => "Опции",
"Delete" => "Удалить"
);
$PLURAL_FORMS = "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);";

View File

@ -392,8 +392,7 @@ class OC_Mount_Config {
* @return array
*/
public static function getCertificates() {
$view = \OCP\Files::getStorage('files_external');
$path=\OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath("").'uploads/';
$path=OC_User::getHome(OC_User::getUser()) . '/files_external/uploads/';
\OCP\Util::writeLog('files_external', 'checking path '.$path, \OCP\Util::INFO);
if ( ! is_dir($path)) {
//path might not exist (e.g. non-standard OC_User::getHome() value)
@ -415,8 +414,7 @@ class OC_Mount_Config {
* creates certificate bundle
*/
public static function createCertificateBundle() {
$view = \OCP\Files::getStorage("files_external");
$path = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath("");
$path=OC_User::getHome(OC_User::getUser()) . '/files_external';
$certs = OC_Mount_Config::getCertificates();
$fh_certs = fopen($path."/rootcerts.crt", 'w');

View File

@ -14,6 +14,7 @@ class DAV extends \OC\Files\Storage\Common{
private $host;
private $secure;
private $root;
private $certPath;
private $ready;
/**
* @var \Sabre_DAV_Client
@ -40,6 +41,12 @@ class DAV extends \OC\Files\Storage\Common{
} else {
$this->secure = false;
}
if ($this->secure === true) {
$certPath=\OC_User::getHome(\OC_User::getUser()) . '/files_external/rootcerts.crt';
if (file_exists($certPath)) {
$this->certPath=$certPath;
}
}
$this->root=isset($params['root'])?$params['root']:'/';
if ( ! $this->root || $this->root[0]!='/') {
$this->root='/'.$this->root;
@ -58,20 +65,16 @@ class DAV extends \OC\Files\Storage\Common{
}
$this->ready = true;
$settings = array(
'baseUri' => $this->createBaseUri(),
'userName' => $this->user,
'password' => $this->password,
);
$settings = array(
'baseUri' => $this->createBaseUri(),
'userName' => $this->user,
'password' => $this->password,
);
$this->client = new \Sabre_DAV_Client($settings);
$caview = \OCP\Files::getStorage('files_external');
if ($caview) {
$certPath=\OCP\Config::getSystemValue('datadirectory').$caview->getAbsolutePath("").'rootcerts.crt';
if (file_exists($certPath)) {
$this->client->addTrustedCertificates($certPath);
}
if ($this->secure === true && $this->certPath) {
$this->client->addTrustedCertificates($this->certPath);
}
}
@ -166,7 +169,14 @@ class DAV extends \OC\Files\Storage\Common{
curl_setopt($curl, CURLOPT_URL, $this->createBaseUri().str_replace(' ', '%20', $path));
curl_setopt($curl, CURLOPT_FILE, $fp);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
if ($this->secure === true) {
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
if($this->certPath){
curl_setopt($curl, CURLOPT_CAINFO, $this->certPath);
}
}
curl_exec ($curl);
curl_close ($curl);
rewind($fp);
@ -254,6 +264,13 @@ class DAV extends \OC\Files\Storage\Common{
curl_setopt($curl, CURLOPT_INFILE, $source); // file pointer
curl_setopt($curl, CURLOPT_INFILESIZE, filesize($path));
curl_setopt($curl, CURLOPT_PUT, true);
if ($this->secure === true) {
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
if($this->certPath){
curl_setopt($curl, CURLOPT_CAINFO, $this->certPath);
}
}
curl_exec ($curl);
curl_close ($curl);
}
@ -331,3 +348,4 @@ class DAV extends \OC\Files\Storage\Common{
}
}
}

View File

@ -29,19 +29,19 @@ $(document).ready(function() {
}
}
FileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function(filename) {
var tr = $('tr').filterAttr('data-file', filename);
var tr = FileList.findFileEl(filename);
if (tr.length > 0) {
window.location = $(tr).find('a.name').attr('href');
}
});
FileActions.register('file', 'Download', OC.PERMISSION_READ, '', function(filename) {
var tr = $('tr').filterAttr('data-file', filename);
var tr = FileList.findFileEl(filename);
if (tr.length > 0) {
window.location = $(tr).find('a.name').attr('href');
}
});
FileActions.register('dir', 'Download', OC.PERMISSION_READ, '', function(filename) {
var tr = $('tr').filterAttr('data-file', filename);
var tr = FileList.findFileEl(filename);
if (tr.length > 0) {
window.location = $(tr).find('a.name').attr('href')+'&download';
}

View File

@ -22,7 +22,7 @@ $(document).ready(function() {
} else {
var item = $('#dir').val() + '/' + filename;
}
var tr = $('tr').filterAttr('data-file', filename);
var tr = FileList.findFileEl(filename);
if ($(tr).data('type') == 'dir') {
var itemType = 'folder';
} else {

View File

@ -1,8 +0,0 @@
<?php
$TRANSLATIONS = array(
"Password" => "Пароль",
"Download" => "Загрузка",
"Upload" => "Загрузка",
"Cancel upload" => "Отмена загрузки"
);
$PLURAL_FORMS = "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);";

View File

@ -172,7 +172,7 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
$source['fileOwner'] = $fileOwner;
return $source;
}
\OCP\Util::writeLog('files_sharing', 'File source not found for: '.$target, \OCP\Util::ERROR);
\OCP\Util::writeLog('files_sharing', 'File source not found for: '.$target, \OCP\Util::DEBUG);
return false;
}

View File

@ -279,43 +279,26 @@ class Shared extends \OC\Files\Storage\Common {
if ($this->isDeletable($path)) {
list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
return $storage->unlink($internalPath);
} else if (dirname($path) == '/' || dirname($path) == '.') {
// Unshare the file from the user if in the root of the Shared folder
if ($this->is_dir($path)) {
$itemType = 'folder';
} else {
$itemType = 'file';
}
return \OCP\Share::unshareFromSelf($itemType, $path);
}
}
return false;
}
public function rename($path1, $path2) {
// Check for partial files
if (pathinfo($path1, PATHINFO_EXTENSION) === 'part') {
if ($oldSource = $this->getSourcePath($path1)) {
// Renaming/moving is only allowed within shared folders
$pos1 = strpos($path1, '/', 1);
$pos2 = strpos($path2, '/', 1);
if ($pos1 !== false && $pos2 !== false && ($oldSource = $this->getSourcePath($path1))) {
$newSource = $this->getSourcePath(dirname($path2)) . '/' . basename($path2);
// Within the same folder, we only need UPDATE permissions
if (dirname($path1) == dirname($path2) and $this->isUpdatable($path1)) {
list($storage, $oldInternalPath) = \OC\Files\Filesystem::resolvePath($oldSource);
$newInternalPath = substr($oldInternalPath, 0, -5);
list(, $newInternalPath) = \OC\Files\Filesystem::resolvePath($newSource);
return $storage->rename($oldInternalPath, $newInternalPath);
}
} else {
// Renaming/moving is only allowed within shared folders
$pos1 = strpos($path1, '/', 1);
$pos2 = strpos($path2, '/', 1);
if ($pos1 !== false && $pos2 !== false && ($oldSource = $this->getSourcePath($path1))) {
$newSource = $this->getSourcePath(dirname($path2)) . '/' . basename($path2);
// Within the same folder, we only need UPDATE permissions
if (dirname($path1) == dirname($path2) and $this->isUpdatable($path1)) {
list($storage, $oldInternalPath) = \OC\Files\Filesystem::resolvePath($oldSource);
list(, $newInternalPath) = \OC\Files\Filesystem::resolvePath($newSource);
return $storage->rename($oldInternalPath, $newInternalPath);
// otherwise DELETE and CREATE permissions required
} elseif ($this->isDeletable($path1) && $this->isCreatable(dirname($path2))) {
$rootView = new \OC\Files\View('');
return $rootView->rename($oldSource, $newSource);
}
// otherwise DELETE and CREATE permissions required
} elseif ($this->isDeletable($path1) && $this->isCreatable(dirname($path2))) {
$rootView = new \OC\Files\View('');
return $rootView->rename($oldSource, $newSource);
}
}
return false;

View File

@ -3,8 +3,8 @@ $(document).ready(function() {
if (typeof FileActions !== 'undefined') {
FileActions.register('all', 'Restore', OC.PERMISSION_READ, OC.imagePath('core', 'actions/history'), function(filename) {
var tr = $('tr').filterAttr('data-file', filename);
var deleteAction = $('tr').filterAttr('data-file', filename).children("td.date").children(".action.delete");
var tr = FileList.findFileEl(filename);
var deleteAction = tr.children("td.date").children(".action.delete");
deleteAction.removeClass('delete-icon').addClass('progress-icon');
disableActions();
$.post(OC.filePath('files_trashbin', 'ajax', 'undelete.php'),
@ -30,8 +30,8 @@ $(document).ready(function() {
return OC.imagePath('core', 'actions/delete');
}, function(filename) {
$('.tipsy').remove();
var tr = $('tr').filterAttr('data-file', filename);
var deleteAction = $('tr').filterAttr('data-file', filename).children("td.date").children(".action.delete");
var tr = FileList.findFileEl(filename);
var deleteAction = tr.children("td.date").children(".action.delete");
deleteAction.removeClass('delete-icon').addClass('progress-icon');
disableActions();
$.post(OC.filePath('files_trashbin', 'ajax', 'delete.php'),
@ -73,7 +73,7 @@ $(document).ready(function() {
var dirlisting = getSelectedFiles('dirlisting')[0];
disableActions();
for (var i = 0; i < files.length; i++) {
var deleteAction = $('tr').filterAttr('data-file', files[i]).children("td.date").children(".action.delete");
var deleteAction = FileList.findFileEl(files[i]).children("td.date").children(".action.delete");
deleteAction.removeClass('delete-icon').addClass('progress-icon');
}
@ -119,7 +119,7 @@ $(document).ready(function() {
}
else {
for (var i = 0; i < files.length; i++) {
var deleteAction = $('tr').filterAttr('data-file', files[i]).children("td.date").children(".action.delete");
var deleteAction = FileList.findFileEl(files[i]).children("td.date").children(".action.delete");
deleteAction.removeClass('delete-icon').addClass('progress-icon');
}
}
@ -169,7 +169,7 @@ $(document).ready(function() {
event.preventDefault();
}
var filename = $(this).parent().parent().attr('data-file');
var tr = $('tr').filterAttr('data-file',filename);
var tr = FileList.findFileEl(filename);
var renaming = tr.data('renaming');
if(!renaming && !FileList.isLoading(filename)){
if(mime.substr(0, 5) === 'text/'){ //no texteditor for now

View File

@ -1,6 +0,0 @@
<?php
$TRANSLATIONS = array(
"Error" => "Ошибка",
"Delete" => "Удалить"
);
$PLURAL_FORMS = "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);";

View File

@ -77,6 +77,7 @@ function goToVersionPage(url){
function createVersionsDropdown(filename, files) {
var start = 0;
var fileEl;
var html = '<div id="dropdown" class="drop drop-versions" data-file="'+escapeHTML(files)+'">';
html += '<div id="private">';
@ -86,8 +87,9 @@ function createVersionsDropdown(filename, files) {
html += '<input type="button" value="'+ t('files_versions', 'More versions...') + '" name="show-more-versions" id="show-more-versions" style="display: none;" />';
if (filename) {
$('tr').filterAttr('data-file',filename).addClass('mouseOver');
$(html).appendTo($('tr').filterAttr('data-file',filename).find('td.filename'));
fileEl = FileList.findFileEl(filename);
fileEl.addClass('mouseOver');
$(html).appendTo(fileEl.find('td.filename'));
} else {
$(html).appendTo($('thead .share'));
}
@ -138,7 +140,7 @@ function createVersionsDropdown(filename, files) {
var preview = '<img class="preview" src="'+revision.preview+'"/>';
var download ='<a href="' + path + "?file=" + files + '&revision=' + revision.version + '">';
var download ='<a href="' + path + "?file=" + encodeURIComponent(files) + '&revision=' + revision.version + '">';
download+='<img';
download+=' src="' + OC.imagePath('core', 'actions/download') + '"';
download+=' name="downloadVersion" />';
@ -146,8 +148,7 @@ function createVersionsDropdown(filename, files) {
download+='</a>';
var revert='<span class="revertVersion"';
revert+=' id="' + revision.version + '"';
revert+=' value="' + files + '">';
revert+=' id="' + revision.version + '">';
revert+='<img';
revert+=' src="' + OC.imagePath('core', 'actions/history') + '"';
revert+=' name="revertVersion"';
@ -156,14 +157,13 @@ function createVersionsDropdown(filename, files) {
var version=$('<li/>');
version.attr('value', revision.version);
version.html(preview + download + revert);
// add file here for proper name escaping
version.find('span.revertVersion').attr('value', files);
version.appendTo('#found_versions');
}
$('tr').filterAttr('data-file',filename).addClass('mouseOver');
$('#dropdown').show('blind');
}
$(this).click(

View File

@ -98,7 +98,6 @@ class Storage {
$files_view = new \OC\Files\View('/'.$uid .'/files');
$users_view = new \OC\Files\View('/'.$uid);
$versions_view = new \OC\Files\View('/'.$uid.'/files_versions');
// check if filename is a directory
if($files_view->is_dir($filename)) {
@ -132,7 +131,10 @@ class Storage {
\OC_FileProxy::$enabled = false;
// store a new version of a file
$users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
$mtime = $users_view->filemtime('files'.$filename);
$users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'. $mtime);
// call getFileInfo to enforce a file cache entry for the new version
$users_view->getFileInfo('files_versions'.$filename.'.v'.$mtime);
// reset proxy state
\OC_FileProxy::$enabled = $proxyStatus;

View File

@ -1,12 +0,0 @@
<?php
$TRANSLATIONS = array(
"Error" => "Ошибка",
"Select groups" => "Выбрать группы",
"_%s group found_::_%s groups found_" => array("","",""),
"_%s user found_::_%s users found_" => array("","",""),
"Save" => "Сохранить",
"Help" => "Помощь",
"Password" => "Пароль",
"Back" => "Назад"
);
$PLURAL_FORMS = "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);";

View File

@ -50,7 +50,8 @@ class Connection extends LDAPUtility {
parent::__construct($ldap);
$this->configPrefix = $configPrefix;
$this->configID = $configID;
$this->configuration = new Configuration($configPrefix);
$this->configuration = new Configuration($configPrefix,
!is_null($configID));
$memcache = \OC::$server->getMemCacheFactory();
if($memcache->isAvailable()) {
$this->cache = $memcache->create();

View File

@ -792,10 +792,13 @@ class Wizard extends LDAPUtility {
\OCP\Util::writeLog('user_ldap', 'Wiz: Setting LDAP Options ', \OCP\Util::DEBUG);
//set LDAP options
$a = $this->ldap->setOption($cr, LDAP_OPT_PROTOCOL_VERSION, 3);
$c = $this->ldap->setOption($cr, LDAP_OPT_NETWORK_TIMEOUT, self::LDAP_NW_TIMEOUT);
$this->ldap->setOption($cr, LDAP_OPT_PROTOCOL_VERSION, 3);
$this->ldap->setOption($cr, LDAP_OPT_NETWORK_TIMEOUT, self::LDAP_NW_TIMEOUT);
if($tls) {
$this->ldap->startTls($cr);
$isTlsWorking = @$this->ldap->startTls($cr);
if(!$isTlsWorking) {
return false;
}
}
\OCP\Util::writeLog('user_ldap', 'Wiz: Attemping to Bind ', \OCP\Util::DEBUG);
@ -809,7 +812,7 @@ class Wizard extends LDAPUtility {
if($ncc) {
throw new \Exception('Certificate cannot be validated.');
}
\OCP\Util::writeLog('user_ldap', 'Wiz: Bind succesfull with Port '. $port, \OCP\Util::DEBUG);
\OCP\Util::writeLog('user_ldap', 'Wiz: Bind successfull to Port '. $port . ' TLS ' . intval($tls), \OCP\Util::DEBUG);
return true;
}

View File

@ -63,3 +63,9 @@
.ie8 #nojavascript {
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#4c320000', endColorstr='#4c320000'); /* IE */
}
/* IE8 doesn't have rounded corners, so the strengthify bar should be wider */
.lte8 #body-login .strengthify-wrapper {
width: 271px;
left: 6px;
}

View File

@ -341,7 +341,7 @@ input[type="submit"].enabled {
margin-bottom: 20px;
text-align: left;
}
#body-login form #adminaccount { margin-bottom:5px; }
#body-login form #adminaccount { margin-bottom:15px; }
#body-login form fieldset legend, #datadirContent label {
width: 100%;
font-weight: bold;
@ -361,6 +361,21 @@ input[type="submit"].enabled {
margin-left: -4px;
}
/* strengthify wrapper */
#body-login .strengthify-wrapper {
display: inline-block;
position: relative;
left: 15px;
top: -21px;
width: 252px;
}
/* tipsy for the strengthify wrapper looks better with following font settings */
#body-login .tipsy-inner {
font-weight: bold;
color: #ccc;
}
/* Icons for username and password fields to better recognize them */
#adminlogin, #adminpass, #user, #password { width:11.7em!important; padding-left:1.8em; }
#adminlogin+label+img, #adminpass-icon, #user+label+img, #password-icon {

View File

@ -7,9 +7,9 @@ $(document).ready(function() {
oracle:!!$('#hasOracle').val(),
mssql:!!$('#hasMSSQL').val()
};
$('#selectDbType').buttonset();
if($('#hasSQLite').val()){
$('#use_other_db').hide();
$('#use_oracle_db').hide();
@ -63,17 +63,27 @@ $(document).ready(function() {
form.submit();
return false;
});
// Expand latest db settings if page was reloaded on error
var currentDbType = $('input[type="radio"]:checked').val();
if (currentDbType === undefined){
$('input[type="radio"]').first().click();
}
if (currentDbType === 'sqlite' || (dbtypes.sqlite && currentDbType === undefined)){
$('#datadirContent').hide(250);
$('#databaseField').hide(250);
}
$('#adminpass').strengthify({
zxcvbn: OC.linkTo('3rdparty','zxcvbn/js/zxcvbn.js'),
titles: [
t('core', 'Very weak password'),
t('core', 'Weak password'),
t('core', 'So-so password'),
t('core', 'Good password'),
t('core', 'Strong password')
]
});
});

View File

@ -181,7 +181,8 @@ OC.Share={
},
showDropDown:function(itemType, itemSource, appendTo, link, possiblePermissions, filename) {
var data = OC.Share.loadItem(itemType, itemSource);
var html = '<div id="dropdown" class="drop" data-item-type="'+itemType+'" data-item-source="'+itemSource+'"" data-item-source-name="'+filename+'">';
var dropDownEl;
var html = '<div id="dropdown" class="drop" data-item-type="'+itemType+'" data-item-source="'+itemSource+'">';
if (data !== false && data.reshare !== false && data.reshare.uid_owner !== undefined) {
if (data.reshare.share_type == OC.Share.SHARE_TYPE_GROUP) {
html += '<span class="reshare">'+t('core', 'Shared with you and the group {group} by {owner}', {group: escapeHTML(data.reshare.share_with), owner: escapeHTML(data.reshare.displayname_owner)})+'</span>';
@ -239,7 +240,8 @@ OC.Share={
html += '<input type="checkbox" name="expirationCheckbox" id="expirationCheckbox" value="1" /><label for="expirationCheckbox">'+t('core', 'Set expiration date')+'</label>';
html += '<input id="expirationDate" type="text" placeholder="'+t('core', 'Expiration date')+'" style="display:none; width:90%;" />';
html += '</div>';
$(html).appendTo(appendTo);
dropDownEl = $(html);
dropDownEl = dropDownEl.appendTo(appendTo);
// Reset item shares
OC.Share.itemShares = [];
if (data.shares) {
@ -332,8 +334,10 @@ OC.Share={
} else {
html += '<input id="shareWith" type="text" placeholder="'+t('core', 'Resharing is not allowed')+'" style="width:90%;" disabled="disabled"/>';
html += '</div>';
$(html).appendTo(appendTo);
dropDownEl = $(html);
dropDownEl.appendTo(appendTo);
}
dropDownEl.attr('data-item-source-name', filename);
$('#dropdown').show('blind', function() {
OC.Share.droppedDown = true;
});

View File

@ -1,21 +0,0 @@
<?php
$TRANSLATIONS = array(
"Settings" => "Настройки",
"_%n minute ago_::_%n minutes ago_" => array("","",""),
"_%n hour ago_::_%n hours ago_" => array("","",""),
"_%n day ago_::_%n days ago_" => array("","",""),
"_%n month ago_::_%n months ago_" => array("","",""),
"Yes" => "Да",
"No" => "Нет",
"_{count} file conflict_::_{count} file conflicts_" => array("","",""),
"Cancel" => "Отмена",
"Share" => "Сделать общим",
"Error" => "Ошибка",
"Password" => "Пароль",
"can edit" => "возможно редактирование",
"Warning" => "Предупреждение",
"Delete" => "Удалить",
"Username" => "Имя пользователя",
"Help" => "Помощь"
);
$PLURAL_FORMS = "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);";

View File

@ -20,6 +20,8 @@ if ($dbIsSet AND $directoryIsSet AND $adminAccountIsSet) {
}
}
OC_Util::addScript( '3rdparty', 'strengthify/jquery.strengthify' );
OC_Util::addStyle( '3rdparty', 'strengthify/strengthify' );
OC_Util::addScript('setup');
$hasSQLite = class_exists('SQLite3');

View File

@ -59,6 +59,7 @@
<img class="svg" id="adminpass-icon" src="<?php print_unescaped(image_path('', 'actions/password.svg')); ?>" alt="" />
<input type="checkbox" id="show" name="show" />
<label for="show"></label>
<div class="strengthify-wrapper"></div>
</p>
</fieldset>

View File

@ -12,7 +12,7 @@
<td bgcolor="#f8f8f8" width="20px">&nbsp;</td>
<td bgcolor="#f8f8f8" style="font-weight:normal; font-size:0.8em; line-height:1.2em; font-family:verdana,'arial',sans;">
<?php
print_unescaped($l->t('Hey there,<br><br>just letting you know that %s shared »%s« with you.<br><a href="%s">View it!</a><br><br>', array($_['user_displayname'], $_['filename'], $_['link'])));
print_unescaped($l->t('Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href="%s">View it!</a><br><br>', array($_['user_displayname'], $_['filename'], $_['link'])));
if ( isset($_['expiration']) ) {
p($l->t("The share will expire on %s.", array($_['expiration'])));
print_unescaped('<br><br>');

View File

@ -1,780 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-12-20 01:55-0500\n"
"PO-Revision-Date: 2013-12-20 06:23+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru_RU\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: ajax/share.php:119 ajax/share.php:198
#, php-format
msgid "%s shared »%s« with you"
msgstr ""
#: ajax/share.php:169
#, php-format
msgid "Couldn't send mail to following users: %s "
msgstr ""
#: ajax/update.php:11
msgid "Turned on maintenance mode"
msgstr ""
#: ajax/update.php:14
msgid "Turned off maintenance mode"
msgstr ""
#: ajax/update.php:17
msgid "Updated database"
msgstr ""
#: ajax/update.php:20
msgid "Updating filecache, this may take really long..."
msgstr ""
#: ajax/update.php:23
msgid "Updated filecache"
msgstr ""
#: ajax/update.php:26
#, php-format
msgid "... %d%% done ..."
msgstr ""
#: avatar/controller.php:62
msgid "No image or file provided"
msgstr ""
#: avatar/controller.php:81
msgid "Unknown filetype"
msgstr ""
#: avatar/controller.php:85
msgid "Invalid image"
msgstr ""
#: avatar/controller.php:115 avatar/controller.php:142
msgid "No temporary profile picture available, try again"
msgstr ""
#: avatar/controller.php:135
msgid "No crop data provided"
msgstr ""
#: js/config.php:32
msgid "Sunday"
msgstr ""
#: js/config.php:33
msgid "Monday"
msgstr ""
#: js/config.php:34
msgid "Tuesday"
msgstr ""
#: js/config.php:35
msgid "Wednesday"
msgstr ""
#: js/config.php:36
msgid "Thursday"
msgstr ""
#: js/config.php:37
msgid "Friday"
msgstr ""
#: js/config.php:38
msgid "Saturday"
msgstr ""
#: js/config.php:43
msgid "January"
msgstr ""
#: js/config.php:44
msgid "February"
msgstr ""
#: js/config.php:45
msgid "March"
msgstr ""
#: js/config.php:46
msgid "April"
msgstr ""
#: js/config.php:47
msgid "May"
msgstr ""
#: js/config.php:48
msgid "June"
msgstr ""
#: js/config.php:49
msgid "July"
msgstr ""
#: js/config.php:50
msgid "August"
msgstr ""
#: js/config.php:51
msgid "September"
msgstr ""
#: js/config.php:52
msgid "October"
msgstr ""
#: js/config.php:53
msgid "November"
msgstr ""
#: js/config.php:54
msgid "December"
msgstr ""
#: js/js.js:398
msgid "Settings"
msgstr "Настройки"
#: js/js.js:869
msgid "seconds ago"
msgstr ""
#: js/js.js:870
msgid "%n minute ago"
msgid_plural "%n minutes ago"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: js/js.js:871
msgid "%n hour ago"
msgid_plural "%n hours ago"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: js/js.js:872
msgid "today"
msgstr ""
#: js/js.js:873
msgid "yesterday"
msgstr ""
#: js/js.js:874
msgid "%n day ago"
msgid_plural "%n days ago"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: js/js.js:875
msgid "last month"
msgstr ""
#: js/js.js:876
msgid "%n month ago"
msgid_plural "%n months ago"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: js/js.js:877
msgid "months ago"
msgstr ""
#: js/js.js:878
msgid "last year"
msgstr ""
#: js/js.js:879
msgid "years ago"
msgstr ""
#: js/oc-dialogs.js:123
msgid "Choose"
msgstr ""
#: js/oc-dialogs.js:146
msgid "Error loading file picker template: {error}"
msgstr ""
#: js/oc-dialogs.js:172
msgid "Yes"
msgstr "Да"
#: js/oc-dialogs.js:182
msgid "No"
msgstr "Нет"
#: js/oc-dialogs.js:199
msgid "Ok"
msgstr ""
#: js/oc-dialogs.js:219
msgid "Error loading message template: {error}"
msgstr ""
#: js/oc-dialogs.js:347
msgid "{count} file conflict"
msgid_plural "{count} file conflicts"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: js/oc-dialogs.js:361
msgid "One file conflict"
msgstr ""
#: js/oc-dialogs.js:367
msgid "Which files do you want to keep?"
msgstr ""
#: js/oc-dialogs.js:368
msgid ""
"If you select both versions, the copied file will have a number added to its"
" name."
msgstr ""
#: js/oc-dialogs.js:376
msgid "Cancel"
msgstr "Отмена"
#: js/oc-dialogs.js:386
msgid "Continue"
msgstr ""
#: js/oc-dialogs.js:433 js/oc-dialogs.js:446
msgid "(all selected)"
msgstr ""
#: js/oc-dialogs.js:436 js/oc-dialogs.js:449
msgid "({count} selected)"
msgstr ""
#: js/oc-dialogs.js:457
msgid "Error loading file exists template"
msgstr ""
#: js/share.js:51 js/share.js:66 js/share.js:106
msgid "Shared"
msgstr ""
#: js/share.js:109
msgid "Share"
msgstr "Сделать общим"
#: js/share.js:158 js/share.js:171 js/share.js:178 js/share.js:707
#: js/share.js:719 templates/installation.php:10
msgid "Error"
msgstr "Ошибка"
#: js/share.js:160 js/share.js:747
msgid "Error while sharing"
msgstr ""
#: js/share.js:171
msgid "Error while unsharing"
msgstr ""
#: js/share.js:178
msgid "Error while changing permissions"
msgstr ""
#: js/share.js:187
msgid "Shared with you and the group {group} by {owner}"
msgstr ""
#: js/share.js:189
msgid "Shared with you by {owner}"
msgstr ""
#: js/share.js:213
msgid "Share with user or group …"
msgstr ""
#: js/share.js:219
msgid "Share link"
msgstr ""
#: js/share.js:222
msgid "Password protect"
msgstr ""
#: js/share.js:224 templates/installation.php:58 templates/login.php:38
msgid "Password"
msgstr "Пароль"
#: js/share.js:229
msgid "Allow Public Upload"
msgstr ""
#: js/share.js:233
msgid "Email link to person"
msgstr ""
#: js/share.js:234
msgid "Send"
msgstr ""
#: js/share.js:239
msgid "Set expiration date"
msgstr ""
#: js/share.js:240
msgid "Expiration date"
msgstr ""
#: js/share.js:275
msgid "Share via email:"
msgstr ""
#: js/share.js:278
msgid "No people found"
msgstr ""
#: js/share.js:322 js/share.js:359
msgid "group"
msgstr ""
#: js/share.js:333
msgid "Resharing is not allowed"
msgstr ""
#: js/share.js:375
msgid "Shared in {item} with {user}"
msgstr ""
#: js/share.js:397
msgid "Unshare"
msgstr ""
#: js/share.js:405
msgid "notify by email"
msgstr ""
#: js/share.js:408
msgid "can edit"
msgstr "возможно редактирование"
#: js/share.js:410
msgid "access control"
msgstr ""
#: js/share.js:413
msgid "create"
msgstr ""
#: js/share.js:416
msgid "update"
msgstr ""
#: js/share.js:419
msgid "delete"
msgstr ""
#: js/share.js:422
msgid "share"
msgstr ""
#: js/share.js:694
msgid "Password protected"
msgstr ""
#: js/share.js:707
msgid "Error unsetting expiration date"
msgstr ""
#: js/share.js:719
msgid "Error setting expiration date"
msgstr ""
#: js/share.js:734
msgid "Sending ..."
msgstr ""
#: js/share.js:745
msgid "Email sent"
msgstr ""
#: js/share.js:769
msgid "Warning"
msgstr "Предупреждение"
#: js/tags.js:4
msgid "The object type is not specified."
msgstr ""
#: js/tags.js:13
msgid "Enter new"
msgstr ""
#: js/tags.js:27
msgid "Delete"
msgstr "Удалить"
#: js/tags.js:31
msgid "Add"
msgstr ""
#: js/tags.js:39
msgid "Edit tags"
msgstr ""
#: js/tags.js:57
msgid "Error loading dialog template: {error}"
msgstr ""
#: js/tags.js:261
msgid "No tags selected for deletion."
msgstr ""
#: js/update.js:8
msgid "Please reload the page."
msgstr ""
#: js/update.js:17
msgid ""
"The update was unsuccessful. Please report this issue to the <a "
"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud "
"community</a>."
msgstr ""
#: js/update.js:21
msgid "The update was successful. Redirecting you to ownCloud now."
msgstr ""
#: lostpassword/controller.php:62
#, php-format
msgid "%s password reset"
msgstr ""
#: lostpassword/templates/email.php:2
msgid "Use the following link to reset your password: {link}"
msgstr ""
#: lostpassword/templates/lostpassword.php:7
msgid ""
"The link to reset your password has been sent to your email.<br>If you do "
"not receive it within a reasonable amount of time, check your spam/junk "
"folders.<br>If it is not there ask your local administrator ."
msgstr ""
#: lostpassword/templates/lostpassword.php:15
msgid "Request failed!<br>Did you make sure your email/username was right?"
msgstr ""
#: lostpassword/templates/lostpassword.php:18
msgid "You will receive a link to reset your password via Email."
msgstr ""
#: lostpassword/templates/lostpassword.php:21 templates/installation.php:52
#: templates/login.php:31
msgid "Username"
msgstr "Имя пользователя"
#: lostpassword/templates/lostpassword.php:25
msgid ""
"Your files are encrypted. If you haven't enabled the recovery key, there "
"will be no way to get your data back after your password is reset. If you "
"are not sure what to do, please contact your administrator before you "
"continue. Do you really want to continue?"
msgstr ""
#: lostpassword/templates/lostpassword.php:27
msgid "Yes, I really want to reset my password now"
msgstr ""
#: lostpassword/templates/lostpassword.php:30
msgid "Reset"
msgstr ""
#: lostpassword/templates/resetpassword.php:4
msgid "Your password was reset"
msgstr ""
#: lostpassword/templates/resetpassword.php:5
msgid "To login page"
msgstr ""
#: lostpassword/templates/resetpassword.php:8
msgid "New password"
msgstr ""
#: lostpassword/templates/resetpassword.php:11
msgid "Reset password"
msgstr ""
#: strings.php:5
msgid "Personal"
msgstr ""
#: strings.php:6
msgid "Users"
msgstr ""
#: strings.php:7 templates/layout.user.php:111
msgid "Apps"
msgstr ""
#: strings.php:8
msgid "Admin"
msgstr ""
#: strings.php:9
msgid "Help"
msgstr "Помощь"
#: tags/controller.php:22
msgid "Error loading tags"
msgstr ""
#: tags/controller.php:48
msgid "Tag already exists"
msgstr ""
#: tags/controller.php:64
msgid "Error deleting tag(s)"
msgstr ""
#: tags/controller.php:75
msgid "Error tagging"
msgstr ""
#: tags/controller.php:86
msgid "Error untagging"
msgstr ""
#: tags/controller.php:97
msgid "Error favoriting"
msgstr ""
#: tags/controller.php:108
msgid "Error unfavoriting"
msgstr ""
#: templates/403.php:12
msgid "Access forbidden"
msgstr ""
#: templates/404.php:15
msgid "Cloud not found"
msgstr ""
#: templates/altmail.php:2
#, php-format
msgid ""
"Hey there,\n"
"\n"
"just letting you know that %s shared %s with you.\n"
"View it: %s\n"
"\n"
msgstr ""
#: templates/altmail.php:4 templates/mail.php:17
#, php-format
msgid "The share will expire on %s."
msgstr ""
#: templates/altmail.php:7 templates/mail.php:20
msgid "Cheers!"
msgstr ""
#: templates/installation.php:25 templates/installation.php:32
#: templates/installation.php:39
msgid "Security Warning"
msgstr ""
#: templates/installation.php:26
msgid "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)"
msgstr ""
#: templates/installation.php:27
#, php-format
msgid "Please update your PHP installation to use %s securely."
msgstr ""
#: templates/installation.php:33
msgid ""
"No secure random number generator is available, please enable the PHP "
"OpenSSL extension."
msgstr ""
#: templates/installation.php:34
msgid ""
"Without a secure random number generator an attacker may be able to predict "
"password reset tokens and take over your account."
msgstr ""
#: templates/installation.php:40
msgid ""
"Your data directory and files are probably accessible from the internet "
"because the .htaccess file does not work."
msgstr ""
#: templates/installation.php:42
#, php-format
msgid ""
"For information how to properly configure your server, please see the <a "
"href=\"%s\" target=\"_blank\">documentation</a>."
msgstr ""
#: templates/installation.php:48
msgid "Create an <strong>admin account</strong>"
msgstr ""
#: templates/installation.php:67
msgid "Advanced"
msgstr ""
#: templates/installation.php:74
msgid "Data folder"
msgstr ""
#: templates/installation.php:86
msgid "Configure the database"
msgstr ""
#: templates/installation.php:91 templates/installation.php:103
#: templates/installation.php:114 templates/installation.php:125
#: templates/installation.php:137
msgid "will be used"
msgstr ""
#: templates/installation.php:149
msgid "Database user"
msgstr ""
#: templates/installation.php:156
msgid "Database password"
msgstr ""
#: templates/installation.php:161
msgid "Database name"
msgstr ""
#: templates/installation.php:169
msgid "Database tablespace"
msgstr ""
#: templates/installation.php:176
msgid "Database host"
msgstr ""
#: templates/installation.php:185
msgid "Finish setup"
msgstr ""
#: templates/installation.php:185
msgid "Finishing …"
msgstr ""
#: templates/layout.user.php:40
msgid ""
"This application requires JavaScript to be enabled for correct operation. "
"Please <a href=\"http://enable-javascript.com/\" target=\"_blank\">enable "
"JavaScript</a> and re-load this interface."
msgstr ""
#: templates/layout.user.php:44
#, php-format
msgid "%s is available. Get more information on how to update."
msgstr ""
#: templates/layout.user.php:72 templates/singleuser.user.php:8
msgid "Log out"
msgstr ""
#: templates/login.php:9
msgid "Automatic logon rejected!"
msgstr ""
#: templates/login.php:10
msgid ""
"If you did not change your password recently, your account may be "
"compromised!"
msgstr ""
#: templates/login.php:12
msgid "Please change your password to secure your account again."
msgstr ""
#: templates/login.php:17
msgid "Server side authentication failed!"
msgstr ""
#: templates/login.php:18
msgid "Please contact your administrator."
msgstr ""
#: templates/login.php:44
msgid "Lost your password?"
msgstr ""
#: templates/login.php:49
msgid "remember"
msgstr ""
#: templates/login.php:52
msgid "Log in"
msgstr ""
#: templates/login.php:58
msgid "Alternative Logins"
msgstr ""
#: templates/mail.php:15
#, php-format
msgid ""
"Hey there,<br><br>just letting you know that %s shared »%s« with you.<br><a "
"href=\"%s\">View it!</a><br><br>"
msgstr ""
#: templates/singleuser.user.php:3
msgid "This ownCloud instance is currently in single user mode."
msgstr ""
#: templates/singleuser.user.php:4
msgid "This means only administrators can use the instance."
msgstr ""
#: templates/singleuser.user.php:5 templates/update.user.php:5
msgid ""
"Contact your system administrator if this message persists or appeared "
"unexpectedly."
msgstr ""
#: templates/singleuser.user.php:7 templates/update.user.php:6
msgid "Thank you for your patience."
msgstr ""
#: templates/update.admin.php:3
#, php-format
msgid "Updating ownCloud to version %s, this may take a while."
msgstr ""
#: templates/update.user.php:3
msgid ""
"This ownCloud instance is currently being updated, which may take a while."
msgstr ""
#: templates/update.user.php:4
msgid "Please reload this page after a short time to continue using ownCloud."
msgstr ""

View File

@ -1,416 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-12-20 01:55-0500\n"
"PO-Revision-Date: 2013-12-20 06:23+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru_RU\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: ajax/move.php:17
#, php-format
msgid "Could not move %s - File with this name already exists"
msgstr ""
#: ajax/move.php:27 ajax/move.php:30
#, php-format
msgid "Could not move %s"
msgstr ""
#: ajax/newfile.php:56 js/files.js:74
msgid "File name cannot be empty."
msgstr "Имя файла не может быть пустым."
#: ajax/newfile.php:62
msgid "File name must not contain \"/\". Please choose a different name."
msgstr ""
#: ajax/newfile.php:72 ajax/newfolder.php:37 lib/app.php:67
#, php-format
msgid ""
"The name %s is already used in the folder %s. Please choose a different "
"name."
msgstr ""
#: ajax/newfile.php:81
msgid "Not a valid source"
msgstr ""
#: ajax/newfile.php:86
msgid ""
"Server is not allowed to open URLs, please check the server configuration"
msgstr ""
#: ajax/newfile.php:103
#, php-format
msgid "Error while downloading %s to %s"
msgstr ""
#: ajax/newfile.php:140
msgid "Error when creating the file"
msgstr ""
#: ajax/newfolder.php:21
msgid "Folder name cannot be empty."
msgstr ""
#: ajax/newfolder.php:27
msgid "Folder name must not contain \"/\". Please choose a different name."
msgstr ""
#: ajax/newfolder.php:56
msgid "Error when creating the folder"
msgstr ""
#: ajax/upload.php:18 ajax/upload.php:50
msgid "Unable to set upload directory."
msgstr ""
#: ajax/upload.php:27
msgid "Invalid Token"
msgstr ""
#: ajax/upload.php:64
msgid "No file was uploaded. Unknown error"
msgstr ""
#: ajax/upload.php:71
msgid "There is no error, the file uploaded with success"
msgstr ""
#: ajax/upload.php:72
msgid ""
"The uploaded file exceeds the upload_max_filesize directive in php.ini: "
msgstr ""
#: ajax/upload.php:74
msgid ""
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
"the HTML form"
msgstr ""
#: ajax/upload.php:75
msgid "The uploaded file was only partially uploaded"
msgstr ""
#: ajax/upload.php:76
msgid "No file was uploaded"
msgstr ""
#: ajax/upload.php:77
msgid "Missing a temporary folder"
msgstr ""
#: ajax/upload.php:78
msgid "Failed to write to disk"
msgstr ""
#: ajax/upload.php:96
msgid "Not enough storage available"
msgstr ""
#: ajax/upload.php:127 ajax/upload.php:154
msgid "Upload failed. Could not get file info."
msgstr ""
#: ajax/upload.php:144
msgid "Upload failed. Could not find uploaded file"
msgstr ""
#: ajax/upload.php:172
msgid "Invalid directory."
msgstr ""
#: appinfo/app.php:11
msgid "Files"
msgstr "Файлы"
#: js/file-upload.js:228
msgid "Unable to upload {filename} as it is a directory or has 0 bytes"
msgstr ""
#: js/file-upload.js:239
msgid "Not enough space available"
msgstr ""
#: js/file-upload.js:306
msgid "Upload cancelled."
msgstr ""
#: js/file-upload.js:344
msgid "Could not get result from server."
msgstr ""
#: js/file-upload.js:436
msgid ""
"File upload is in progress. Leaving the page now will cancel the upload."
msgstr ""
#: js/file-upload.js:523
msgid "URL cannot be empty"
msgstr ""
#: js/file-upload.js:527 js/filelist.js:377
msgid "In the home folder 'Shared' is a reserved filename"
msgstr ""
#: js/file-upload.js:529 js/filelist.js:379
msgid "{new_name} already exists"
msgstr ""
#: js/file-upload.js:595
msgid "Could not create file"
msgstr ""
#: js/file-upload.js:611
msgid "Could not create folder"
msgstr ""
#: js/file-upload.js:661
msgid "Error fetching URL"
msgstr ""
#: js/fileactions.js:125
msgid "Share"
msgstr "Сделать общим"
#: js/fileactions.js:137
msgid "Delete permanently"
msgstr ""
#: js/fileactions.js:194
msgid "Rename"
msgstr "Переименовать"
#: js/filelist.js:69 js/filelist.js:72 js/filelist.js:889
msgid "Pending"
msgstr ""
#: js/filelist.js:405
msgid "Could not rename file"
msgstr ""
#: js/filelist.js:539
msgid "replaced {new_name} with {old_name}"
msgstr ""
#: js/filelist.js:539
msgid "undo"
msgstr ""
#: js/filelist.js:591
msgid "Error deleting file."
msgstr ""
#: js/filelist.js:609 js/filelist.js:683 js/files.js:631
msgid "%n folder"
msgid_plural "%n folders"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: js/filelist.js:610 js/filelist.js:684 js/files.js:637
msgid "%n file"
msgid_plural "%n files"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: js/filelist.js:617
msgid "{dirs} and {files}"
msgstr ""
#: js/filelist.js:828 js/filelist.js:866
msgid "Uploading %n file"
msgid_plural "Uploading %n files"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: js/files.js:72
msgid "'.' is an invalid file name."
msgstr "'.' является неверным именем файла."
#: js/files.js:81
msgid ""
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not "
"allowed."
msgstr "Некорректное имя, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' не допустимы."
#: js/files.js:93
msgid "Your storage is full, files can not be updated or synced anymore!"
msgstr ""
#: js/files.js:97
msgid "Your storage is almost full ({usedSpacePercent}%)"
msgstr ""
#: js/files.js:110
msgid ""
"Encryption App is enabled but your keys are not initialized, please log-out "
"and log-in again"
msgstr ""
#: js/files.js:114
msgid ""
"Invalid private key for Encryption App. Please update your private key "
"password in your personal settings to recover access to your encrypted "
"files."
msgstr ""
#: js/files.js:118
msgid ""
"Encryption was disabled but your files are still encrypted. Please go to "
"your personal settings to decrypt your files."
msgstr ""
#: js/files.js:349
msgid ""
"Your download is being prepared. This might take some time if the files are "
"big."
msgstr ""
#: js/files.js:558 js/files.js:596
msgid "Error moving file"
msgstr ""
#: js/files.js:558 js/files.js:596
msgid "Error"
msgstr "Ошибка"
#: js/files.js:613 templates/index.php:56
msgid "Name"
msgstr ""
#: js/files.js:614 templates/index.php:68
msgid "Size"
msgstr "Размер"
#: js/files.js:615 templates/index.php:70
msgid "Modified"
msgstr ""
#: lib/app.php:60
msgid "Invalid folder name. Usage of 'Shared' is reserved."
msgstr ""
#: lib/app.php:101
#, php-format
msgid "%s could not be renamed"
msgstr ""
#: lib/helper.php:11 templates/index.php:16
msgid "Upload"
msgstr "Загрузка"
#: templates/admin.php:5
msgid "File handling"
msgstr ""
#: templates/admin.php:7
msgid "Maximum upload size"
msgstr ""
#: templates/admin.php:10
msgid "max. possible: "
msgstr ""
#: templates/admin.php:15
msgid "Needed for multi-file and folder downloads."
msgstr ""
#: templates/admin.php:17
msgid "Enable ZIP-download"
msgstr ""
#: templates/admin.php:20
msgid "0 is unlimited"
msgstr "0 без ограничений"
#: templates/admin.php:22
msgid "Maximum input size for ZIP files"
msgstr ""
#: templates/admin.php:26
msgid "Save"
msgstr "Сохранить"
#: templates/index.php:5
msgid "New"
msgstr ""
#: templates/index.php:8
msgid "New text file"
msgstr ""
#: templates/index.php:8
msgid "Text file"
msgstr ""
#: templates/index.php:10
msgid "New folder"
msgstr ""
#: templates/index.php:10
msgid "Folder"
msgstr ""
#: templates/index.php:12
msgid "From link"
msgstr ""
#: templates/index.php:29
msgid "Deleted files"
msgstr ""
#: templates/index.php:34
msgid "Cancel upload"
msgstr "Отмена загрузки"
#: templates/index.php:40
msgid "You dont have permission to upload or create files here"
msgstr ""
#: templates/index.php:45
msgid "Nothing in here. Upload something!"
msgstr ""
#: templates/index.php:62
msgid "Download"
msgstr "Загрузка"
#: templates/index.php:73 templates/index.php:74
msgid "Delete"
msgstr "Удалить"
#: templates/index.php:86
msgid "Upload too large"
msgstr ""
#: templates/index.php:88
msgid ""
"The files you are trying to upload exceed the maximum size for file uploads "
"on this server."
msgstr ""
#: templates/index.php:93
msgid "Files are being scanned, please wait."
msgstr ""
#: templates/index.php:96
msgid "Current scanning"
msgstr ""
#: templates/upgrade.php:2
msgid "Upgrading filesystem cache..."
msgstr ""

View File

@ -1,201 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-11-29 14:08-0500\n"
"PO-Revision-Date: 2013-11-29 19:08+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru_RU\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: ajax/adminrecovery.php:29
msgid "Recovery key successfully enabled"
msgstr ""
#: ajax/adminrecovery.php:34
msgid ""
"Could not enable recovery key. Please check your recovery key password!"
msgstr ""
#: ajax/adminrecovery.php:48
msgid "Recovery key successfully disabled"
msgstr ""
#: ajax/adminrecovery.php:53
msgid ""
"Could not disable recovery key. Please check your recovery key password!"
msgstr ""
#: ajax/changeRecoveryPassword.php:49
msgid "Password successfully changed."
msgstr ""
#: ajax/changeRecoveryPassword.php:51
msgid "Could not change the password. Maybe the old password was not correct."
msgstr ""
#: ajax/updatePrivateKeyPassword.php:52
msgid "Private key password successfully updated."
msgstr ""
#: ajax/updatePrivateKeyPassword.php:54
msgid ""
"Could not update the private key password. Maybe the old password was not "
"correct."
msgstr ""
#: files/error.php:12
msgid ""
"Encryption app not initialized! Maybe the encryption app was re-enabled "
"during your session. Please try to log out and log back in to initialize the"
" encryption app."
msgstr ""
#: files/error.php:16
#, php-format
msgid ""
"Your private key is not valid! Likely your password was changed outside of "
"%s (e.g. your corporate directory). You can update your private key password"
" in your personal settings to recover access to your encrypted files."
msgstr ""
#: files/error.php:19
msgid ""
"Can not decrypt this file, probably this is a shared file. Please ask the "
"file owner to reshare the file with you."
msgstr ""
#: files/error.php:22 files/error.php:27
msgid ""
"Unknown error please check your system settings or contact your "
"administrator"
msgstr ""
#: hooks/hooks.php:59
msgid "Missing requirements."
msgstr ""
#: hooks/hooks.php:60
msgid ""
"Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL "
"together with the PHP extension is enabled and configured properly. For now,"
" the encryption app has been disabled."
msgstr ""
#: hooks/hooks.php:273
msgid "Following users are not set up for encryption:"
msgstr ""
#: js/detect-migration.js:21
msgid "Initial encryption started... This can take some time. Please wait."
msgstr ""
#: js/settings-admin.js:13
msgid "Saving..."
msgstr ""
#: templates/invalid_private_key.php:8
msgid "Go directly to your "
msgstr ""
#: templates/invalid_private_key.php:8
msgid "personal settings"
msgstr ""
#: templates/settings-admin.php:4 templates/settings-personal.php:3
msgid "Encryption"
msgstr ""
#: templates/settings-admin.php:7
msgid ""
"Enable recovery key (allow to recover users files in case of password loss):"
msgstr ""
#: templates/settings-admin.php:11
msgid "Recovery key password"
msgstr ""
#: templates/settings-admin.php:14
msgid "Repeat Recovery key password"
msgstr ""
#: templates/settings-admin.php:21 templates/settings-personal.php:51
msgid "Enabled"
msgstr ""
#: templates/settings-admin.php:29 templates/settings-personal.php:59
msgid "Disabled"
msgstr ""
#: templates/settings-admin.php:34
msgid "Change recovery key password:"
msgstr ""
#: templates/settings-admin.php:40
msgid "Old Recovery key password"
msgstr ""
#: templates/settings-admin.php:47
msgid "New Recovery key password"
msgstr ""
#: templates/settings-admin.php:53
msgid "Repeat New Recovery key password"
msgstr ""
#: templates/settings-admin.php:58
msgid "Change Password"
msgstr ""
#: templates/settings-personal.php:9
msgid "Your private key password no longer match your log-in password:"
msgstr ""
#: templates/settings-personal.php:12
msgid "Set your old private key password to your current log-in password."
msgstr ""
#: templates/settings-personal.php:14
msgid ""
" If you don't remember your old password you can ask your administrator to "
"recover your files."
msgstr ""
#: templates/settings-personal.php:22
msgid "Old log-in password"
msgstr ""
#: templates/settings-personal.php:28
msgid "Current log-in password"
msgstr ""
#: templates/settings-personal.php:33
msgid "Update Private Key Password"
msgstr ""
#: templates/settings-personal.php:42
msgid "Enable password recovery:"
msgstr ""
#: templates/settings-personal.php:44
msgid ""
"Enabling this option will allow you to reobtain access to your encrypted "
"files in case of password loss"
msgstr ""
#: templates/settings-personal.php:60
msgid "File recovery settings updated"
msgstr ""
#: templates/settings-personal.php:61
msgid "Could not update file recovery"
msgstr ""

View File

@ -1,123 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-11-21 10:01-0500\n"
"PO-Revision-Date: 2013-11-16 07:50+0000\n"
"Last-Translator: masensio <masensio@solidgear.es>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru_RU\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: js/dropbox.js:7 js/dropbox.js:28 js/google.js:8 js/google.js:39
msgid "Access granted"
msgstr ""
#: js/dropbox.js:30 js/dropbox.js:96 js/dropbox.js:102
msgid "Error configuring Dropbox storage"
msgstr ""
#: js/dropbox.js:65 js/google.js:86
msgid "Grant access"
msgstr ""
#: js/dropbox.js:101
msgid "Please provide a valid Dropbox app key and secret."
msgstr ""
#: js/google.js:42 js/google.js:121
msgid "Error configuring Google Drive storage"
msgstr ""
#: lib/config.php:461
msgid ""
"<b>Warning:</b> \"smbclient\" is not installed. Mounting of CIFS/SMB shares "
"is not possible. Please ask your system administrator to install it."
msgstr ""
#: lib/config.php:465
msgid ""
"<b>Warning:</b> The FTP support in PHP is not enabled or installed. Mounting"
" of FTP shares is not possible. Please ask your system administrator to "
"install it."
msgstr ""
#: lib/config.php:468
msgid ""
"<b>Warning:</b> The Curl support in PHP is not enabled or installed. "
"Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask "
"your system administrator to install it."
msgstr ""
#: templates/settings.php:3
msgid "External Storage"
msgstr ""
#: templates/settings.php:9 templates/settings.php:28
msgid "Folder name"
msgstr ""
#: templates/settings.php:10
msgid "External storage"
msgstr ""
#: templates/settings.php:11
msgid "Configuration"
msgstr ""
#: templates/settings.php:12
msgid "Options"
msgstr "Опции"
#: templates/settings.php:13
msgid "Applicable"
msgstr ""
#: templates/settings.php:33
msgid "Add storage"
msgstr ""
#: templates/settings.php:90
msgid "None set"
msgstr ""
#: templates/settings.php:91
msgid "All Users"
msgstr ""
#: templates/settings.php:92
msgid "Groups"
msgstr ""
#: templates/settings.php:100
msgid "Users"
msgstr ""
#: templates/settings.php:113 templates/settings.php:114
#: templates/settings.php:149 templates/settings.php:150
msgid "Delete"
msgstr "Удалить"
#: templates/settings.php:129
msgid "Enable User External Storage"
msgstr ""
#: templates/settings.php:130
msgid "Allow users to mount their own external storage"
msgstr ""
#: templates/settings.php:141
msgid "SSL root certificates"
msgstr ""
#: templates/settings.php:159
msgid "Import Root Certificate"
msgstr ""

View File

@ -1,84 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-11-15 22:54-0500\n"
"PO-Revision-Date: 2013-11-13 16:11+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru_RU\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: templates/authenticate.php:4
msgid "This share is password-protected"
msgstr ""
#: templates/authenticate.php:7
msgid "The password is wrong. Try again."
msgstr ""
#: templates/authenticate.php:10
msgid "Password"
msgstr "Пароль"
#: templates/part.404.php:3
msgid "Sorry, this link doesnt seem to work anymore."
msgstr ""
#: templates/part.404.php:4
msgid "Reasons might be:"
msgstr ""
#: templates/part.404.php:6
msgid "the item was removed"
msgstr ""
#: templates/part.404.php:7
msgid "the link expired"
msgstr ""
#: templates/part.404.php:8
msgid "sharing is disabled"
msgstr ""
#: templates/part.404.php:10
msgid "For more info, please ask the person who sent this link."
msgstr ""
#: templates/public.php:18
#, php-format
msgid "%s shared the folder %s with you"
msgstr ""
#: templates/public.php:21
#, php-format
msgid "%s shared the file %s with you"
msgstr ""
#: templates/public.php:29 templates/public.php:95
msgid "Download"
msgstr "Загрузка"
#: templates/public.php:46 templates/public.php:49
msgid "Upload"
msgstr "Загрузка"
#: templates/public.php:59
msgid "Cancel upload"
msgstr "Отмена загрузки"
#: templates/public.php:92
msgid "No preview available for"
msgstr ""
#: templates/public.php:99
msgid "Direct link"
msgstr ""

View File

@ -1,60 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-11-21 10:01-0500\n"
"PO-Revision-Date: 2013-11-16 07:50+0000\n"
"Last-Translator: masensio <masensio@solidgear.es>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru_RU\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: ajax/delete.php:42
#, php-format
msgid "Couldn't delete %s permanently"
msgstr ""
#: ajax/undelete.php:42
#, php-format
msgid "Couldn't restore %s"
msgstr ""
#: js/trash.js:18 js/trash.js:44 js/trash.js:121 js/trash.js:149
msgid "Error"
msgstr "Ошибка"
#: lib/trashbin.php:815 lib/trashbin.php:817
msgid "restored"
msgstr ""
#: templates/index.php:8
msgid "Nothing in here. Your trash bin is empty!"
msgstr ""
#: templates/index.php:22
msgid "Name"
msgstr ""
#: templates/index.php:25 templates/index.php:27
msgid "Restore"
msgstr ""
#: templates/index.php:33
msgid "Deleted"
msgstr ""
#: templates/index.php:36 templates/index.php:37
msgid "Delete"
msgstr "Удалить"
#: templates/part.breadcrumb.php:9
msgid "Deleted Files"
msgstr ""

View File

@ -1,43 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-10-19 08:26-0400\n"
"PO-Revision-Date: 2013-10-18 09:15+0000\n"
"Last-Translator: masensio <masensio@solidgear.es>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru_RU\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: ajax/rollbackVersion.php:13
#, php-format
msgid "Could not revert: %s"
msgstr ""
#: js/versions.js:14
msgid "Versions"
msgstr ""
#: js/versions.js:60
msgid "Failed to revert {file} to revision {timestamp}."
msgstr ""
#: js/versions.js:86
msgid "More versions..."
msgstr ""
#: js/versions.js:123
msgid "No other versions available"
msgstr ""
#: js/versions.js:154
msgid "Restore"
msgstr ""

View File

@ -1,337 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-12-20 01:55-0500\n"
"PO-Revision-Date: 2013-12-20 06:23+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru_RU\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: private/app.php:243
#, php-format
msgid ""
"App \"%s\" can't be installed because it is not compatible with this version"
" of ownCloud."
msgstr ""
#: private/app.php:255
msgid "No app name specified"
msgstr ""
#: private/app.php:360
msgid "Help"
msgstr "Помощь"
#: private/app.php:373
msgid "Personal"
msgstr ""
#: private/app.php:384
msgid "Settings"
msgstr "Настройки"
#: private/app.php:396
msgid "Users"
msgstr ""
#: private/app.php:409
msgid "Admin"
msgstr ""
#: private/app.php:873
#, php-format
msgid "Failed to upgrade \"%s\"."
msgstr ""
#: private/avatar.php:66
msgid "Unknown filetype"
msgstr ""
#: private/avatar.php:71
msgid "Invalid image"
msgstr ""
#: private/defaults.php:34
msgid "web services under your control"
msgstr ""
#: private/files.php:66 private/files.php:98
#, php-format
msgid "cannot open \"%s\""
msgstr ""
#: private/files.php:231
msgid "ZIP download is turned off."
msgstr ""
#: private/files.php:232
msgid "Files need to be downloaded one by one."
msgstr ""
#: private/files.php:233 private/files.php:261
msgid "Back to Files"
msgstr ""
#: private/files.php:258
msgid "Selected files too large to generate zip file."
msgstr ""
#: private/files.php:259
msgid ""
"Please download the files separately in smaller chunks or kindly ask your "
"administrator."
msgstr ""
#: private/installer.php:63
msgid "No source specified when installing app"
msgstr ""
#: private/installer.php:70
msgid "No href specified when installing app from http"
msgstr ""
#: private/installer.php:75
msgid "No path specified when installing app from local file"
msgstr ""
#: private/installer.php:89
#, php-format
msgid "Archives of type %s are not supported"
msgstr ""
#: private/installer.php:103
msgid "Failed to open archive when installing app"
msgstr ""
#: private/installer.php:125
msgid "App does not provide an info.xml file"
msgstr ""
#: private/installer.php:131
msgid "App can't be installed because of not allowed code in the App"
msgstr ""
#: private/installer.php:140
msgid ""
"App can't be installed because it is not compatible with this version of "
"ownCloud"
msgstr ""
#: private/installer.php:146
msgid ""
"App can't be installed because it contains the <shipped>true</shipped> tag "
"which is not allowed for non shipped apps"
msgstr ""
#: private/installer.php:159
msgid ""
"App can't be installed because the version in info.xml/version is not the "
"same as the version reported from the app store"
msgstr ""
#: private/installer.php:169
msgid "App directory already exists"
msgstr ""
#: private/installer.php:182
#, php-format
msgid "Can't create app folder. Please fix permissions. %s"
msgstr ""
#: private/json.php:28
msgid "Application is not enabled"
msgstr ""
#: private/json.php:39 private/json.php:62 private/json.php:73
msgid "Authentication error"
msgstr ""
#: private/json.php:51
msgid "Token expired. Please reload page."
msgstr ""
#: private/search/provider/file.php:18 private/search/provider/file.php:36
msgid "Files"
msgstr "Файлы"
#: private/search/provider/file.php:27 private/search/provider/file.php:34
msgid "Text"
msgstr "Текст"
#: private/search/provider/file.php:30
msgid "Images"
msgstr ""
#: private/setup/abstractdatabase.php:26
#, php-format
msgid "%s enter the database username."
msgstr ""
#: private/setup/abstractdatabase.php:29
#, php-format
msgid "%s enter the database name."
msgstr ""
#: private/setup/abstractdatabase.php:32
#, php-format
msgid "%s you may not use dots in the database name"
msgstr ""
#: private/setup/mssql.php:20
#, php-format
msgid "MS SQL username and/or password not valid: %s"
msgstr ""
#: private/setup/mssql.php:21 private/setup/mysql.php:13
#: private/setup/oci.php:114 private/setup/postgresql.php:24
#: private/setup/postgresql.php:70
msgid "You need to enter either an existing account or the administrator."
msgstr ""
#: private/setup/mysql.php:12
msgid "MySQL username and/or password not valid"
msgstr ""
#: private/setup/mysql.php:67 private/setup/oci.php:54
#: private/setup/oci.php:121 private/setup/oci.php:144
#: private/setup/oci.php:151 private/setup/oci.php:162
#: private/setup/oci.php:169 private/setup/oci.php:178
#: private/setup/oci.php:186 private/setup/oci.php:195
#: private/setup/oci.php:201 private/setup/postgresql.php:89
#: private/setup/postgresql.php:98 private/setup/postgresql.php:115
#: private/setup/postgresql.php:125 private/setup/postgresql.php:134
#, php-format
msgid "DB Error: \"%s\""
msgstr ""
#: private/setup/mysql.php:68 private/setup/oci.php:55
#: private/setup/oci.php:122 private/setup/oci.php:145
#: private/setup/oci.php:152 private/setup/oci.php:163
#: private/setup/oci.php:179 private/setup/oci.php:187
#: private/setup/oci.php:196 private/setup/postgresql.php:90
#: private/setup/postgresql.php:99 private/setup/postgresql.php:116
#: private/setup/postgresql.php:126 private/setup/postgresql.php:135
#, php-format
msgid "Offending command was: \"%s\""
msgstr ""
#: private/setup/mysql.php:85
#, php-format
msgid "MySQL user '%s'@'localhost' exists already."
msgstr ""
#: private/setup/mysql.php:86
msgid "Drop this user from MySQL"
msgstr ""
#: private/setup/mysql.php:91
#, php-format
msgid "MySQL user '%s'@'%%' already exists"
msgstr ""
#: private/setup/mysql.php:92
msgid "Drop this user from MySQL."
msgstr ""
#: private/setup/oci.php:34
msgid "Oracle connection could not be established"
msgstr ""
#: private/setup/oci.php:41 private/setup/oci.php:113
msgid "Oracle username and/or password not valid"
msgstr ""
#: private/setup/oci.php:170 private/setup/oci.php:202
#, php-format
msgid "Offending command was: \"%s\", name: %s, password: %s"
msgstr ""
#: private/setup/postgresql.php:23 private/setup/postgresql.php:69
msgid "PostgreSQL username and/or password not valid"
msgstr ""
#: private/setup.php:28
msgid "Set an admin username."
msgstr ""
#: private/setup.php:31
msgid "Set an admin password."
msgstr ""
#: private/setup.php:195
msgid ""
"Your web server is not yet properly setup to allow files synchronization "
"because the WebDAV interface seems to be broken."
msgstr ""
#: private/setup.php:196
#, php-format
msgid "Please double check the <a href='%s'>installation guides</a>."
msgstr ""
#: private/tags.php:194
#, php-format
msgid "Could not find category \"%s\""
msgstr ""
#: private/template/functions.php:130
msgid "seconds ago"
msgstr ""
#: private/template/functions.php:131
msgid "%n minute ago"
msgid_plural "%n minutes ago"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: private/template/functions.php:132
msgid "%n hour ago"
msgid_plural "%n hours ago"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: private/template/functions.php:133
msgid "today"
msgstr ""
#: private/template/functions.php:134
msgid "yesterday"
msgstr ""
#: private/template/functions.php:136
msgid "%n day go"
msgid_plural "%n days ago"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: private/template/functions.php:138
msgid "last month"
msgstr ""
#: private/template/functions.php:139
msgid "%n month ago"
msgid_plural "%n months ago"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: private/template/functions.php:141
msgid "last year"
msgstr ""
#: private/template/functions.php:142
msgid "years ago"
msgstr ""

View File

@ -1,668 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-12-04 18:12-0500\n"
"PO-Revision-Date: 2013-12-04 23:13+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru_RU\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: ajax/apps/ocs.php:20
msgid "Unable to load list from App Store"
msgstr ""
#: ajax/changedisplayname.php:25 ajax/removeuser.php:15 ajax/setquota.php:17
#: ajax/togglegroups.php:20 changepassword/controller.php:55
msgid "Authentication error"
msgstr ""
#: ajax/changedisplayname.php:31
msgid "Your full name has been changed."
msgstr ""
#: ajax/changedisplayname.php:34
msgid "Unable to change full name"
msgstr ""
#: ajax/creategroup.php:10
msgid "Group already exists"
msgstr ""
#: ajax/creategroup.php:19
msgid "Unable to add group"
msgstr ""
#: ajax/lostpassword.php:12
msgid "Email saved"
msgstr ""
#: ajax/lostpassword.php:14
msgid "Invalid email"
msgstr ""
#: ajax/removegroup.php:13
msgid "Unable to delete group"
msgstr ""
#: ajax/removeuser.php:25
msgid "Unable to delete user"
msgstr ""
#: ajax/setlanguage.php:15
msgid "Language changed"
msgstr ""
#: ajax/setlanguage.php:17 ajax/setlanguage.php:20
msgid "Invalid request"
msgstr ""
#: ajax/togglegroups.php:12
msgid "Admins can't remove themself from the admin group"
msgstr ""
#: ajax/togglegroups.php:30
#, php-format
msgid "Unable to add user to group %s"
msgstr ""
#: ajax/togglegroups.php:36
#, php-format
msgid "Unable to remove user from group %s"
msgstr ""
#: ajax/updateapp.php:14
msgid "Couldn't update app."
msgstr ""
#: changepassword/controller.php:20
msgid "Wrong password"
msgstr ""
#: changepassword/controller.php:42
msgid "No user supplied"
msgstr ""
#: changepassword/controller.php:74
msgid ""
"Please provide an admin recovery password, otherwise all user data will be "
"lost"
msgstr ""
#: changepassword/controller.php:79
msgid ""
"Wrong admin recovery password. Please check the password and try again."
msgstr ""
#: changepassword/controller.php:87
msgid ""
"Back-end doesn't support password change, but the users encryption key was "
"successfully updated."
msgstr ""
#: changepassword/controller.php:92 changepassword/controller.php:103
msgid "Unable to change password"
msgstr ""
#: js/apps.js:43
msgid "Update to {appversion}"
msgstr ""
#: js/apps.js:49 js/apps.js:82 js/apps.js:110
msgid "Disable"
msgstr ""
#: js/apps.js:49 js/apps.js:90 js/apps.js:103 js/apps.js:119
msgid "Enable"
msgstr ""
#: js/apps.js:71
msgid "Please wait...."
msgstr ""
#: js/apps.js:79 js/apps.js:80 js/apps.js:101
msgid "Error while disabling app"
msgstr ""
#: js/apps.js:100 js/apps.js:114 js/apps.js:115
msgid "Error while enabling app"
msgstr ""
#: js/apps.js:125
msgid "Updating...."
msgstr ""
#: js/apps.js:128
msgid "Error while updating app"
msgstr ""
#: js/apps.js:128
msgid "Error"
msgstr "Ошибка"
#: js/apps.js:129 templates/apps.php:43
msgid "Update"
msgstr ""
#: js/apps.js:132
msgid "Updated"
msgstr ""
#: js/personal.js:220
msgid "Select a profile picture"
msgstr ""
#: js/personal.js:266
msgid "Decrypting files... Please wait, this can take some time."
msgstr ""
#: js/personal.js:287
msgid "Saving..."
msgstr ""
#: js/users.js:47
msgid "deleted"
msgstr ""
#: js/users.js:47
msgid "undo"
msgstr ""
#: js/users.js:79
msgid "Unable to remove user"
msgstr ""
#: js/users.js:95 templates/users.php:26 templates/users.php:90
#: templates/users.php:118
msgid "Groups"
msgstr ""
#: js/users.js:100 templates/users.php:92 templates/users.php:130
msgid "Group Admin"
msgstr ""
#: js/users.js:123 templates/users.php:170
msgid "Delete"
msgstr "Удалить"
#: js/users.js:284
msgid "add group"
msgstr ""
#: js/users.js:451
msgid "A valid username must be provided"
msgstr ""
#: js/users.js:452 js/users.js:458 js/users.js:473
msgid "Error creating user"
msgstr ""
#: js/users.js:457
msgid "A valid password must be provided"
msgstr ""
#: js/users.js:481
msgid "Warning: Home directory for user \"{user}\" already exists"
msgstr ""
#: personal.php:45 personal.php:46
msgid "__language_name__"
msgstr ""
#: templates/admin.php:8
msgid "Everything (fatal issues, errors, warnings, info, debug)"
msgstr ""
#: templates/admin.php:9
msgid "Info, warnings, errors and fatal issues"
msgstr ""
#: templates/admin.php:10
msgid "Warnings, errors and fatal issues"
msgstr ""
#: templates/admin.php:11
msgid "Errors and fatal issues"
msgstr ""
#: templates/admin.php:12
msgid "Fatal issues only"
msgstr ""
#: templates/admin.php:22 templates/admin.php:36
msgid "Security Warning"
msgstr ""
#: templates/admin.php:25
#, php-format
msgid ""
"You are accessing %s via HTTP. We strongly suggest you configure your server"
" to require using HTTPS instead."
msgstr ""
#: templates/admin.php:39
msgid ""
"Your data directory and your files are probably accessible from the "
"internet. The .htaccess file is not working. We strongly suggest that you "
"configure your webserver in a way that the data directory is no longer "
"accessible or you move the data directory outside the webserver document "
"root."
msgstr ""
#: templates/admin.php:50
msgid "Setup Warning"
msgstr ""
#: templates/admin.php:53
msgid ""
"Your web server is not yet properly setup to allow files synchronization "
"because the WebDAV interface seems to be broken."
msgstr ""
#: templates/admin.php:54
#, php-format
msgid "Please double check the <a href=\"%s\">installation guides</a>."
msgstr ""
#: templates/admin.php:65
msgid "Module 'fileinfo' missing"
msgstr ""
#: templates/admin.php:68
msgid ""
"The PHP module 'fileinfo' is missing. We strongly recommend to enable this "
"module to get best results with mime-type detection."
msgstr ""
#: templates/admin.php:79
msgid "Your PHP version is outdated"
msgstr ""
#: templates/admin.php:82
msgid ""
"Your PHP version is outdated. We strongly recommend to update to 5.3.8 or "
"newer because older versions are known to be broken. It is possible that "
"this installation is not working correctly."
msgstr ""
#: templates/admin.php:93
msgid "Locale not working"
msgstr ""
#: templates/admin.php:98
msgid "System locale can not be set to a one which supports UTF-8."
msgstr ""
#: templates/admin.php:102
msgid ""
"This means that there might be problems with certain characters in file "
"names."
msgstr ""
#: templates/admin.php:106
#, php-format
msgid ""
"We strongly suggest to install the required packages on your system to "
"support one of the following locales: %s."
msgstr ""
#: templates/admin.php:118
msgid "Internet connection not working"
msgstr ""
#: templates/admin.php:121
msgid ""
"This server has no working internet connection. This means that some of the "
"features like mounting of external storage, notifications about updates or "
"installation of 3rd party apps don´t work. Accessing files from remote and "
"sending of notification emails might also not work. We suggest to enable "
"internet connection for this server if you want to have all features."
msgstr ""
#: templates/admin.php:135
msgid "Cron"
msgstr ""
#: templates/admin.php:142
msgid "Execute one task with each page loaded"
msgstr ""
#: templates/admin.php:150
msgid ""
"cron.php is registered at a webcron service to call cron.php every 15 "
"minutes over http."
msgstr ""
#: templates/admin.php:158
msgid "Use systems cron service to call the cron.php file every 15 minutes."
msgstr ""
#: templates/admin.php:163
msgid "Sharing"
msgstr ""
#: templates/admin.php:169
msgid "Enable Share API"
msgstr ""
#: templates/admin.php:170
msgid "Allow apps to use the Share API"
msgstr ""
#: templates/admin.php:177
msgid "Allow links"
msgstr ""
#: templates/admin.php:178
msgid "Allow users to share items to the public with links"
msgstr ""
#: templates/admin.php:186
msgid "Allow public uploads"
msgstr ""
#: templates/admin.php:187
msgid ""
"Allow users to enable others to upload into their publicly shared folders"
msgstr ""
#: templates/admin.php:195
msgid "Allow resharing"
msgstr ""
#: templates/admin.php:196
msgid "Allow users to share items shared with them again"
msgstr ""
#: templates/admin.php:203
msgid "Allow users to share with anyone"
msgstr ""
#: templates/admin.php:206
msgid "Allow users to only share with users in their groups"
msgstr ""
#: templates/admin.php:213
msgid "Allow mail notification"
msgstr ""
#: templates/admin.php:214
msgid "Allow user to send mail notification for shared files"
msgstr ""
#: templates/admin.php:221
msgid "Security"
msgstr ""
#: templates/admin.php:234
msgid "Enforce HTTPS"
msgstr ""
#: templates/admin.php:236
#, php-format
msgid "Forces the clients to connect to %s via an encrypted connection."
msgstr ""
#: templates/admin.php:242
#, php-format
msgid ""
"Please connect to your %s via HTTPS to enable or disable the SSL "
"enforcement."
msgstr ""
#: templates/admin.php:254
msgid "Log"
msgstr ""
#: templates/admin.php:255
msgid "Log level"
msgstr ""
#: templates/admin.php:287
msgid "More"
msgstr "Подробнее"
#: templates/admin.php:288
msgid "Less"
msgstr ""
#: templates/admin.php:294 templates/personal.php:173
msgid "Version"
msgstr ""
#: templates/admin.php:298 templates/personal.php:176
msgid ""
"Developed by the <a href=\"http://ownCloud.org/contact\" "
"target=\"_blank\">ownCloud community</a>, the <a "
"href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is "
"licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" "
"target=\"_blank\"><abbr title=\"Affero General Public "
"License\">AGPL</abbr></a>."
msgstr ""
#: templates/apps.php:13
msgid "Add your App"
msgstr ""
#: templates/apps.php:28
msgid "More Apps"
msgstr ""
#: templates/apps.php:33
msgid "Select an App"
msgstr ""
#: templates/apps.php:39
msgid "See application page at apps.owncloud.com"
msgstr ""
#: templates/apps.php:41
msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>"
msgstr ""
#: templates/help.php:4
msgid "User Documentation"
msgstr ""
#: templates/help.php:6
msgid "Administrator Documentation"
msgstr ""
#: templates/help.php:9
msgid "Online Documentation"
msgstr ""
#: templates/help.php:11
msgid "Forum"
msgstr ""
#: templates/help.php:14
msgid "Bugtracker"
msgstr ""
#: templates/help.php:17
msgid "Commercial Support"
msgstr ""
#: templates/personal.php:8
msgid "Get the apps to sync your files"
msgstr ""
#: templates/personal.php:19
msgid "Show First Run Wizard again"
msgstr ""
#: templates/personal.php:27
#, php-format
msgid "You have used <strong>%s</strong> of the available <strong>%s</strong>"
msgstr ""
#: templates/personal.php:39 templates/users.php:23 templates/users.php:89
msgid "Password"
msgstr "Пароль"
#: templates/personal.php:40
msgid "Your password was changed"
msgstr ""
#: templates/personal.php:41
msgid "Unable to change your password"
msgstr ""
#: templates/personal.php:42
msgid "Current password"
msgstr ""
#: templates/personal.php:44
msgid "New password"
msgstr ""
#: templates/personal.php:46
msgid "Change password"
msgstr ""
#: templates/personal.php:58 templates/users.php:88
msgid "Full Name"
msgstr ""
#: templates/personal.php:73
msgid "Email"
msgstr ""
#: templates/personal.php:75
msgid "Your email address"
msgstr ""
#: templates/personal.php:76
msgid "Fill in an email address to enable password recovery"
msgstr ""
#: templates/personal.php:86
msgid "Profile picture"
msgstr ""
#: templates/personal.php:91
msgid "Upload new"
msgstr ""
#: templates/personal.php:93
msgid "Select new from Files"
msgstr ""
#: templates/personal.php:94
msgid "Remove image"
msgstr ""
#: templates/personal.php:95
msgid "Either png or jpg. Ideally square but you will be able to crop it."
msgstr ""
#: templates/personal.php:97
msgid "Your avatar is provided by your original account."
msgstr ""
#: templates/personal.php:101
msgid "Abort"
msgstr ""
#: templates/personal.php:102
msgid "Choose as profile image"
msgstr ""
#: templates/personal.php:110 templates/personal.php:111
msgid "Language"
msgstr ""
#: templates/personal.php:130
msgid "Help translate"
msgstr ""
#: templates/personal.php:137
msgid "WebDAV"
msgstr ""
#: templates/personal.php:139
#, php-format
msgid ""
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via "
"WebDAV</a>"
msgstr ""
#: templates/personal.php:150
msgid "Encryption"
msgstr ""
#: templates/personal.php:152
msgid "The encryption app is no longer enabled, please decrypt all your files"
msgstr ""
#: templates/personal.php:158
msgid "Log-in password"
msgstr ""
#: templates/personal.php:163
msgid "Decrypt all Files"
msgstr ""
#: templates/users.php:21
msgid "Login Name"
msgstr ""
#: templates/users.php:30
msgid "Create"
msgstr "Создать"
#: templates/users.php:36
msgid "Admin Recovery Password"
msgstr ""
#: templates/users.php:37 templates/users.php:38
msgid ""
"Enter the recovery password in order to recover the users files during "
"password change"
msgstr ""
#: templates/users.php:42
msgid "Default Storage"
msgstr ""
#: templates/users.php:44 templates/users.php:139
msgid "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")"
msgstr ""
#: templates/users.php:48 templates/users.php:148
msgid "Unlimited"
msgstr ""
#: templates/users.php:66 templates/users.php:163
msgid "Other"
msgstr ""
#: templates/users.php:87
msgid "Username"
msgstr "Имя пользователя"
#: templates/users.php:94
msgid "Storage"
msgstr ""
#: templates/users.php:108
msgid "change full name"
msgstr ""
#: templates/users.php:112
msgid "set new password"
msgstr ""
#: templates/users.php:143
msgid "Default"
msgstr ""

View File

@ -1,515 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-12-20 01:55-0500\n"
"PO-Revision-Date: 2013-12-20 06:23+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru_RU\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: ajax/clearMappings.php:34
msgid "Failed to clear the mappings."
msgstr ""
#: ajax/deleteConfiguration.php:34
msgid "Failed to delete the server configuration"
msgstr ""
#: ajax/testConfiguration.php:39
msgid "The configuration is valid and the connection could be established!"
msgstr ""
#: ajax/testConfiguration.php:42
msgid ""
"The configuration is valid, but the Bind failed. Please check the server "
"settings and credentials."
msgstr ""
#: ajax/testConfiguration.php:46
msgid ""
"The configuration is invalid. Please have a look at the logs for further "
"details."
msgstr ""
#: ajax/wizard.php:32
msgid "No action specified"
msgstr ""
#: ajax/wizard.php:38
msgid "No configuration specified"
msgstr ""
#: ajax/wizard.php:81
msgid "No data specified"
msgstr ""
#: ajax/wizard.php:89
#, php-format
msgid " Could not set configuration %s"
msgstr ""
#: js/settings.js:67
msgid "Deletion failed"
msgstr ""
#: js/settings.js:83
msgid "Take over settings from recent server configuration?"
msgstr ""
#: js/settings.js:84
msgid "Keep settings?"
msgstr ""
#: js/settings.js:99
msgid "Cannot add server configuration"
msgstr ""
#: js/settings.js:127
msgid "mappings cleared"
msgstr ""
#: js/settings.js:128
msgid "Success"
msgstr ""
#: js/settings.js:133
msgid "Error"
msgstr "Ошибка"
#: js/settings.js:837
msgid "Configuration OK"
msgstr ""
#: js/settings.js:846
msgid "Configuration incorrect"
msgstr ""
#: js/settings.js:855
msgid "Configuration incomplete"
msgstr ""
#: js/settings.js:872 js/settings.js:881
msgid "Select groups"
msgstr "Выбрать группы"
#: js/settings.js:875 js/settings.js:884
msgid "Select object classes"
msgstr ""
#: js/settings.js:878
msgid "Select attributes"
msgstr ""
#: js/settings.js:905
msgid "Connection test succeeded"
msgstr ""
#: js/settings.js:912
msgid "Connection test failed"
msgstr ""
#: js/settings.js:921
msgid "Do you really want to delete the current Server Configuration?"
msgstr ""
#: js/settings.js:922
msgid "Confirm Deletion"
msgstr ""
#: lib/wizard.php:79 lib/wizard.php:93
#, php-format
msgid "%s group found"
msgid_plural "%s groups found"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: lib/wizard.php:122
#, php-format
msgid "%s user found"
msgid_plural "%s users found"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: lib/wizard.php:778 lib/wizard.php:790
msgid "Invalid Host"
msgstr ""
#: lib/wizard.php:951
msgid "Could not find the desired feature"
msgstr ""
#: templates/part.settingcontrols.php:2
msgid "Save"
msgstr "Сохранить"
#: templates/part.settingcontrols.php:4
msgid "Test Configuration"
msgstr ""
#: templates/part.settingcontrols.php:10 templates/part.wizardcontrols.php:14
msgid "Help"
msgstr "Помощь"
#: templates/part.wizard-groupfilter.php:4
#, php-format
msgid "Limit the access to %s to groups meeting this criteria:"
msgstr ""
#: templates/part.wizard-groupfilter.php:8
#: templates/part.wizard-userfilter.php:8
msgid "only those object classes:"
msgstr ""
#: templates/part.wizard-groupfilter.php:17
#: templates/part.wizard-userfilter.php:17
msgid "only from those groups:"
msgstr ""
#: templates/part.wizard-groupfilter.php:25
#: templates/part.wizard-loginfilter.php:32
#: templates/part.wizard-userfilter.php:25
msgid "Edit raw filter instead"
msgstr ""
#: templates/part.wizard-groupfilter.php:30
#: templates/part.wizard-loginfilter.php:37
#: templates/part.wizard-userfilter.php:30
msgid "Raw LDAP filter"
msgstr ""
#: templates/part.wizard-groupfilter.php:31
#, php-format
msgid ""
"The filter specifies which LDAP groups shall have access to the %s instance."
msgstr ""
#: templates/part.wizard-groupfilter.php:38
msgid "groups found"
msgstr ""
#: templates/part.wizard-loginfilter.php:4
msgid "What attribute shall be used as login name:"
msgstr ""
#: templates/part.wizard-loginfilter.php:8
msgid "LDAP Username:"
msgstr ""
#: templates/part.wizard-loginfilter.php:16
msgid "LDAP Email Address:"
msgstr ""
#: templates/part.wizard-loginfilter.php:24
msgid "Other Attributes:"
msgstr ""
#: templates/part.wizard-loginfilter.php:38
#, php-format
msgid ""
"Defines the filter to apply, when login is attempted. %%uid replaces the "
"username in the login action. Example: \"uid=%%uid\""
msgstr ""
#: templates/part.wizard-server.php:18
msgid "Add Server Configuration"
msgstr ""
#: templates/part.wizard-server.php:30
msgid "Host"
msgstr ""
#: templates/part.wizard-server.php:31
msgid ""
"You can omit the protocol, except you require SSL. Then start with ldaps://"
msgstr ""
#: templates/part.wizard-server.php:36
msgid "Port"
msgstr ""
#: templates/part.wizard-server.php:44
msgid "User DN"
msgstr ""
#: templates/part.wizard-server.php:45
msgid ""
"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."
msgstr ""
#: templates/part.wizard-server.php:52
msgid "Password"
msgstr "Пароль"
#: templates/part.wizard-server.php:53
msgid "For anonymous access, leave DN and Password empty."
msgstr ""
#: templates/part.wizard-server.php:60
msgid "One Base DN per line"
msgstr ""
#: templates/part.wizard-server.php:61
msgid "You can specify Base DN for users and groups in the Advanced tab"
msgstr ""
#: templates/part.wizard-userfilter.php:4
#, php-format
msgid "Limit the access to %s to users meeting this criteria:"
msgstr ""
#: templates/part.wizard-userfilter.php:31
#, php-format
msgid ""
"The filter specifies which LDAP users shall have access to the %s instance."
msgstr ""
#: templates/part.wizard-userfilter.php:38
msgid "users found"
msgstr ""
#: templates/part.wizardcontrols.php:5
msgid "Back"
msgstr "Назад"
#: templates/part.wizardcontrols.php:8
msgid "Continue"
msgstr ""
#: templates/settings.php:11
msgid ""
"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may"
" experience unexpected behavior. Please ask your system administrator to "
"disable one of them."
msgstr ""
#: templates/settings.php:14
msgid ""
"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not "
"work. Please ask your system administrator to install it."
msgstr ""
#: templates/settings.php:20
msgid "Connection Settings"
msgstr ""
#: templates/settings.php:22
msgid "Configuration Active"
msgstr ""
#: templates/settings.php:22
msgid "When unchecked, this configuration will be skipped."
msgstr ""
#: templates/settings.php:23
msgid "Backup (Replica) Host"
msgstr ""
#: templates/settings.php:23
msgid ""
"Give an optional backup host. It must be a replica of the main LDAP/AD "
"server."
msgstr ""
#: templates/settings.php:24
msgid "Backup (Replica) Port"
msgstr ""
#: templates/settings.php:25
msgid "Disable Main Server"
msgstr ""
#: templates/settings.php:25
msgid "Only connect to the replica server."
msgstr ""
#: templates/settings.php:26
msgid "Case insensitve LDAP server (Windows)"
msgstr ""
#: templates/settings.php:27
msgid "Turn off SSL certificate validation."
msgstr ""
#: templates/settings.php:27
#, php-format
msgid ""
"Not recommended, use it for testing only! If connection only works with this"
" option, import the LDAP server's SSL certificate in your %s server."
msgstr ""
#: templates/settings.php:28
msgid "Cache Time-To-Live"
msgstr ""
#: templates/settings.php:28
msgid "in seconds. A change empties the cache."
msgstr ""
#: templates/settings.php:30
msgid "Directory Settings"
msgstr ""
#: templates/settings.php:32
msgid "User Display Name Field"
msgstr ""
#: templates/settings.php:32
msgid "The LDAP attribute to use to generate the user's display name."
msgstr ""
#: templates/settings.php:33
msgid "Base User Tree"
msgstr ""
#: templates/settings.php:33
msgid "One User Base DN per line"
msgstr ""
#: templates/settings.php:34
msgid "User Search Attributes"
msgstr ""
#: templates/settings.php:34 templates/settings.php:37
msgid "Optional; one attribute per line"
msgstr ""
#: templates/settings.php:35
msgid "Group Display Name Field"
msgstr ""
#: templates/settings.php:35
msgid "The LDAP attribute to use to generate the groups's display name."
msgstr ""
#: templates/settings.php:36
msgid "Base Group Tree"
msgstr ""
#: templates/settings.php:36
msgid "One Group Base DN per line"
msgstr ""
#: templates/settings.php:37
msgid "Group Search Attributes"
msgstr ""
#: templates/settings.php:38
msgid "Group-Member association"
msgstr ""
#: templates/settings.php:40
msgid "Special Attributes"
msgstr ""
#: templates/settings.php:42
msgid "Quota Field"
msgstr ""
#: templates/settings.php:43
msgid "Quota Default"
msgstr ""
#: templates/settings.php:43
msgid "in bytes"
msgstr ""
#: templates/settings.php:44
msgid "Email Field"
msgstr ""
#: templates/settings.php:45
msgid "User Home Folder Naming Rule"
msgstr ""
#: templates/settings.php:45
msgid ""
"Leave empty for user name (default). Otherwise, specify an LDAP/AD "
"attribute."
msgstr ""
#: templates/settings.php:51
msgid "Internal Username"
msgstr ""
#: templates/settings.php:52
msgid ""
"By default the internal username will be created from the UUID attribute. It"
" makes sure that the username is unique and characters do not need to be "
"converted. The internal username has the restriction that only these "
"characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced "
"with their ASCII correspondence or simply omitted. On collisions a number "
"will be added/increased. The internal username is used to identify a user "
"internally. It is also the default name for the user home folder. It is also"
" a part of remote URLs, for instance for all *DAV services. With this "
"setting, the default behavior can be overridden. To achieve a similar "
"behavior as before ownCloud 5 enter the user display name attribute in the "
"following field. Leave it empty for default behavior. Changes will have "
"effect only on newly mapped (added) LDAP users."
msgstr ""
#: templates/settings.php:53
msgid "Internal Username Attribute:"
msgstr ""
#: templates/settings.php:54
msgid "Override UUID detection"
msgstr ""
#: templates/settings.php:55
msgid ""
"By default, the UUID attribute is automatically detected. The UUID attribute"
" is used to doubtlessly identify LDAP users and groups. Also, the internal "
"username will be created based on the UUID, if not specified otherwise "
"above. You can override the setting and pass an attribute of your choice. "
"You must make sure that the attribute of your choice can be fetched for both"
" users and groups and it is unique. Leave it empty for default behavior. "
"Changes will have effect only on newly mapped (added) LDAP users and groups."
msgstr ""
#: templates/settings.php:56
msgid "UUID Attribute for Users:"
msgstr ""
#: templates/settings.php:57
msgid "UUID Attribute for Groups:"
msgstr ""
#: templates/settings.php:58
msgid "Username-LDAP User Mapping"
msgstr ""
#: templates/settings.php:59
msgid ""
"Usernames are used to store and assign (meta) data. In order to precisely "
"identify and recognize users, each LDAP user will have a internal username. "
"This requires a mapping from username to LDAP user. The created username is "
"mapped to the UUID of the LDAP user. Additionally the DN is cached as well "
"to reduce LDAP interaction, but it is not used for identification. If the DN"
" changes, the changes will be found. The internal username is used all over."
" Clearing the mappings will have leftovers everywhere. Clearing the mappings"
" is not configuration sensitive, it affects all LDAP configurations! Never "
"clear the mappings in a production environment, only in a testing or "
"experimental stage."
msgstr ""
#: templates/settings.php:60
msgid "Clear Username-LDAP User Mapping"
msgstr ""
#: templates/settings.php:60
msgid "Clear Groupname-LDAP Group Mapping"
msgstr ""

View File

@ -1,36 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# AnnaSch <cdewqazxsqwe@gmail.com>, 2013
# AnnaSch <cdewqazxsqwe@gmail.com>, 2012
# skoptev <skoptev@ukr.net>, 2012
msgid ""
msgstr ""
"Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-10-19 08:26-0400\n"
"PO-Revision-Date: 2013-10-18 09:15+0000\n"
"Last-Translator: masensio <masensio@solidgear.es>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru_RU\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: templates/settings.php:3
msgid "WebDAV Authentication"
msgstr ""
#: templates/settings.php:4
msgid "Address: "
msgstr ""
#: templates/settings.php:7
msgid ""
"The user credentials will be sent to this address. This plugin checks the "
"response and will interpret the HTTP statuscodes 401 and 403 as invalid "
"credentials, and all other responses as valid credentials."
msgstr ""

View File

@ -544,12 +544,12 @@ class OC {
OC_User::useBackend(new OC_User_Database());
OC_Group::useBackend(new OC_Group_Database());
if (isset($_SERVER['PHP_AUTH_USER']) && self::$session->exists('user_id')
if (isset($_SERVER['PHP_AUTH_USER']) && self::$session->exists('loginname')
&& $_SERVER['PHP_AUTH_USER'] !== self::$session->get('loginname')) {
$sessionUser = self::$session->get('loginname');
$serverUser = $_SERVER['PHP_AUTH_USER'];
OC_Log::write('core',
"Session user-id ($sessionUser) doesn't match SERVER[PHP_AUTH_USER] ($serverUser).",
"Session loginname ($sessionUser) doesn't match SERVER[PHP_AUTH_USER] ($serverUser).",
OC_Log::WARN);
OC_User::logout();
}

View File

@ -1,12 +0,0 @@
<?php
$TRANSLATIONS = array(
"Help" => "Помощь",
"Settings" => "Настройки",
"Files" => "Файлы",
"Text" => "Текст",
"_%n minute ago_::_%n minutes ago_" => array("","",""),
"_%n hour ago_::_%n hours ago_" => array("","",""),
"_%n day go_::_%n days ago_" => array("","",""),
"_%n month ago_::_%n months ago_" => array("","","")
);
$PLURAL_FORMS = "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);";

View File

@ -33,7 +33,7 @@ class OC_API {
const USER_AUTH = 1;
const SUBADMIN_AUTH = 2;
const ADMIN_AUTH = 3;
/**
* API Response Codes
*/
@ -41,13 +41,13 @@ class OC_API {
const RESPOND_SERVER_ERROR = 996;
const RESPOND_NOT_FOUND = 998;
const RESPOND_UNKNOWN_ERROR = 999;
/**
* api actions
*/
protected static $actions = array();
private static $logoutRequired = false;
/**
* registers an api call
* @param string $method the http method
@ -58,7 +58,7 @@ class OC_API {
* @param array $defaults
* @param array $requirements
*/
public static function register($method, $url, $action, $app,
public static function register($method, $url, $action, $app,
$authLevel = OC_API::USER_AUTH,
$defaults = array(),
$requirements = array()) {
@ -75,7 +75,7 @@ class OC_API {
}
self::$actions[$name][] = array('app' => $app, 'action' => $action, 'authlevel' => $authLevel);
}
/**
* handles an api call
* @param array $parameters
@ -125,7 +125,7 @@ class OC_API {
self::respond($response, $format);
}
/**
* merge the returned result objects into one response
* @param array $responses
@ -166,32 +166,31 @@ class OC_API {
// Maybe any that are not OC_API::RESPOND_SERVER_ERROR
// Merge failed responses if more than one
$data = array();
$meta = array();
foreach($shipped['failed'] as $failure) {
$data = array_merge_recursive($data, $failure['response']->getData());
}
$picked = reset($shipped['failed']);
$code = $picked['response']->getStatusCode();
$response = new OC_OCS_Result($data, $code);
$meta = $picked['response']->getMeta();
$response = new OC_OCS_Result($data, $code, $meta['message']);
return $response;
} elseif(!empty($shipped['succeeded'])) {
$responses = array_merge($shipped['succeeded'], $thirdparty['succeeded']);
} elseif(!empty($thirdparty['failed'])) {
// Merge failed responses if more than one
$data = array();
$meta = array();
foreach($thirdparty['failed'] as $failure) {
$data = array_merge_recursive($data, $failure['response']->getData());
}
$picked = reset($thirdparty['failed']);
$code = $picked['response']->getStatusCode();
$response = new OC_OCS_Result($data, $code);
$meta = $picked['response']->getMeta();
$response = new OC_OCS_Result($data, $code, $meta['message']);
return $response;
} else {
$responses = $thirdparty['succeeded'];
}
// Merge the successful responses
$meta = array();
$data = array();
foreach($responses as $app => $response) {
@ -200,22 +199,25 @@ class OC_API {
} else {
$data = array_merge_recursive($data, $response['response']->getData());
}
$codes[] = $response['response']->getStatusCode();
$codes[] = array('code' => $response['response']->getStatusCode(),
'meta' => $response['response']->getMeta());
}
// Use any non 100 status codes
$statusCode = 100;
$statusMessage = null;
foreach($codes as $code) {
if($code != 100) {
$statusCode = $code;
if($code['code'] != 100) {
$statusCode = $code['code'];
$statusMessage = $code['meta']['message'];
break;
}
}
$result = new OC_OCS_Result($data, $statusCode);
$result = new OC_OCS_Result($data, $statusCode, $statusMessage);
return $result;
}
/**
* authenticate the api call
* @param array $action the action details as supplied to OC_API::register()
@ -261,8 +263,8 @@ class OC_API {
return false;
break;
}
}
}
/**
* http basic auth
* @return string|false (username, or false on failure)
@ -294,7 +296,7 @@ class OC_API {
return false;
}
/**
* respond to a call
* @param OC_OCS_Result $result
@ -343,5 +345,5 @@ class OC_API {
}
}
}
}

View File

@ -242,7 +242,10 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
$fileExists = $fs->file_exists($targetPath);
if ($renameOkay === false || $fileExists === false) {
\OC_Log::write('webdav', '\OC\Files\Filesystem::rename() failed', \OC_Log::ERROR);
$fs->unlink($targetPath);
// only delete if an error occurred and the target file was already created
if ($fileExists) {
$fs->unlink($targetPath);
}
throw new Sabre_DAV_Exception();
}

View File

@ -178,7 +178,7 @@ class Cache {
if ($file['storage_mtime'] == 0) {
$file['storage_mtime'] = $file['mtime'];
}
if ($file['encrypted']) {
if ($file['encrypted'] or ($file['unencrypted_size'] > 0 and $file['mimetype'] === 'httpd/unix-directory')) {
$file['encrypted_size'] = $file['size'];
$file['size'] = $file['unencrypted_size'];
}
@ -511,22 +511,34 @@ class Cache {
$entry = $this->get($path);
if ($entry && $entry['mimetype'] === 'httpd/unix-directory') {
$id = $entry['fileid'];
$sql = 'SELECT SUM(`size`) AS f1, MIN(`size`) AS f2 FROM `*PREFIX*filecache` '.
$sql = 'SELECT SUM(`size`) AS f1, MIN(`size`) AS f2, ' .
'SUM(`unencrypted_size`) AS f3 ' .
'FROM `*PREFIX*filecache` ' .
'WHERE `parent` = ? AND `storage` = ?';
$result = \OC_DB::executeAudited($sql, array($id, $this->getNumericStorageId()));
if ($row = $result->fetchRow()) {
list($sum, $min) = array_values($row);
list($sum, $min, $unencryptedSum) = array_values($row);
$sum = (int)$sum;
$min = (int)$min;
$unencryptedSum = (int)$unencryptedSum;
if ($min === -1) {
$totalSize = $min;
} else {
$totalSize = $sum;
}
$update = array();
if ($entry['size'] !== $totalSize) {
$this->update($id, array('size' => $totalSize));
$update['size'] = $totalSize;
}
if ($entry['unencrypted_size'] !== $unencryptedSum) {
$update['unencrypted_size'] = $unencryptedSum;
}
if (count($update) > 0) {
$this->update($id, $update);
}
if ($totalSize !== -1 and $unencryptedSum > 0) {
$totalSize = $unencryptedSum;
}
}
}
return $totalSize;

View File

@ -122,7 +122,7 @@ class Scanner extends BasicEmitter {
$propagateETagChange = true;
}
// only reuse data if the file hasn't explicitly changed
if (isset($data['mtime']) && isset($cacheData['mtime']) && $data['mtime'] === $cacheData['mtime']) {
if (isset($data['storage_mtime']) && isset($cacheData['storage_mtime']) && $data['storage_mtime'] === $cacheData['storage_mtime']) {
if (($reuseExisting & self::REUSE_SIZE) && ($data['size'] === -1)) {
$data['size'] = $cacheData['size'];
}

View File

@ -246,6 +246,8 @@ class OC_User {
session_regenerate_id(true);
self::setUserId($uid);
self::setDisplayName($uid);
self::getUserSession()->setLoginName($uid);
OC_Hook::emit( "OC_User", "post_login", array( "uid" => $uid, 'password'=>'' ));
return true;
}

View File

@ -115,13 +115,13 @@ class Session implements Emitter, \OCP\IUserSession {
/**
* set the login name
*
* @param string login name for the logged in user
* @param string $loginName for the logged in user
*/
public function setLoginname($loginname) {
if (is_null($loginname)) {
public function setLoginName($loginName) {
if (is_null($loginName)) {
$this->session->remove('loginname');
} else {
$this->session->set('loginname', $loginname);
$this->session->set('loginname', $loginName);
}
}
@ -130,7 +130,7 @@ class Session implements Emitter, \OCP\IUserSession {
*
* @return string
*/
public function getLoginname() {
public function getLoginName() {
if ($this->activeUser) {
return $this->session->get('loginname');
} else {
@ -158,7 +158,7 @@ class Session implements Emitter, \OCP\IUserSession {
if (!is_null($user)) {
if ($user->isEnabled()) {
$this->setUser($user);
$this->setLoginname($uid);
$this->setLoginName($uid);
$this->manager->emit('\OC\User', 'postLogin', array($user, $password));
return true;
} else {
@ -176,7 +176,7 @@ class Session implements Emitter, \OCP\IUserSession {
public function logout() {
$this->manager->emit('\OC\User', 'logout');
$this->setUser(null);
$this->setLoginname(null);
$this->setLoginName(null);
$this->unsetMagicInCookie();
}

View File

@ -580,7 +580,7 @@ class OC_Util {
// Check if we are a user
if( !OC_User::isLoggedIn()) {
header( 'Location: '.OC_Helper::linkToAbsolute( '', 'index.php',
array('redirectUrl' => OC_Request::requestUri())
array('redirect_url' => OC_Request::requestUri())
));
exit();
}

View File

@ -147,3 +147,16 @@ table.shareAPI td { padding-bottom: 0.8em; }
/* HELP */
.pressed {background-color:#DDD;}
/* PASSWORD */
.strengthify-wrapper {
position: absolute;
left: 189px;
width: 131px;
margin-top: -7px;
}
/* OPERA hack for strengthify*/
doesnotexist:-o-prefocus, .strengthify-wrapper {
left: 185px;
width: 129px;
}

View File

@ -1,5 +1,6 @@
/**
* Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
* 2013, Morris Jobke <morris.jobke@gmail.com>
* This file is licensed under the Affero General Public License version 3 or later.
* See the COPYING-README file.
*/
@ -243,6 +244,17 @@ $(document).ready(function(){
$('#sendcropperbutton').click(function(){
sendCropData();
});
$('#pass2').strengthify({
zxcvbn: OC.linkTo('3rdparty','zxcvbn/js/zxcvbn.js'),
titles: [
t('core', 'Very weak password'),
t('core', 'Weak password'),
t('core', 'So-so password'),
t('core', 'Good password'),
t('core', 'Strong password')
]
});
} );
OC.Encryption = {

View File

@ -1,10 +0,0 @@
<?php
$TRANSLATIONS = array(
"Error" => "Ошибка",
"Delete" => "Удалить",
"More" => "Подробнее",
"Password" => "Пароль",
"Create" => "Создать",
"Username" => "Имя пользователя"
);
$PLURAL_FORMS = "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);";

View File

@ -13,6 +13,8 @@ $defaults = new OC_Defaults(); // initialize themable default strings and urls
// Highlight navigation entry
OC_Util::addScript( 'settings', 'personal' );
OC_Util::addStyle( 'settings', 'settings' );
OC_Util::addScript( '3rdparty', 'strengthify/jquery.strengthify' );
OC_Util::addStyle( '3rdparty', 'strengthify/strengthify' );
OC_Util::addScript( '3rdparty', 'chosen/chosen.jquery.min' );
OC_Util::addStyle( '3rdparty', 'chosen' );
\OC_Util::addScript('files', 'jquery.fileupload');
@ -20,6 +22,8 @@ if (\OC_Config::getValue('enable_avatars', true) === true) {
\OC_Util::addScript('3rdparty/Jcrop', 'jquery.Jcrop.min');
\OC_Util::addStyle('3rdparty/Jcrop', 'jquery.Jcrop.min');
}
// Highlight navigation entry
OC_App::setActiveNavigationEntry( 'personal' );
$storageInfo=OC_Helper::getStorageInfo('/');

View File

@ -44,6 +44,8 @@ if($_['passwordChangeSupported']) {
placeholder="<?php echo $l->t('New password');?>" data-typetoggle="#personal-show" />
<input type="checkbox" id="personal-show" name="show" /><label for="personal-show"></label>
<input id="passwordbutton" type="submit" value="<?php echo $l->t('Change password');?>" />
<br/>
<div class="strengthify-wrapper"></div>
</fieldset>
</form>
<?php

View File

@ -7,12 +7,12 @@
*/
class Test_API extends PHPUnit_Framework_TestCase {
// Helps build a response variable
function buildResponse($shipped, $data, $code) {
function buildResponse($shipped, $data, $code, $message=null) {
return array(
'shipped' => $shipped,
'response' => new OC_OCS_Result($data, $code),
'response' => new OC_OCS_Result($data, $code, $message),
'app' => uniqid('testapp_', true),
);
}
@ -64,24 +64,24 @@ class Test_API extends PHPUnit_Framework_TestCase {
// Two shipped success results
array(true, 100, true, 100, true),
// Two shipped results, one success and one failure
array(true, 100, true, 997, false),
array(true, 100, true, 998, false),
// Two shipped results, both failure
array(true, 997, true, 997, false),
array(true, 997, true, 998, false),
// Two third party success results
array(false, 100, false, 100, true),
// Two third party results, one success and one failure
array(false, 100, false, 997, false),
array(false, 100, false, 998, false),
// Two third party results, both failure
array(false, 997, false, 997, false),
array(false, 997, false, 998, false),
// One of each, both success
array(false, 100, true, 100, true),
array(true, 100, false, 100, true),
// One of each, both failure
array(false, 997, true, 997, false),
array(false, 997, true, 998, false),
// One of each, shipped success
array(false, 997, true, 100, true),
// One of each, third party success
array(false, 100, true, 997, false),
array(false, 100, true, 998, false),
);
}
/**
@ -117,12 +117,25 @@ class Test_API extends PHPUnit_Framework_TestCase {
// Two shipped success results
$result = OC_API::mergeResponses(array(
$this->buildResponse($shipped1, $data1, $statusCode1),
$this->buildResponse($shipped2, $data2, $statusCode2),
$this->buildResponse($shipped1, $data1, $statusCode1, "message1"),
$this->buildResponse($shipped2, $data2, $statusCode2, "message2"),
));
$this->checkResult($result, $succeeded);
$resultData = $result->getData();
$resultMeta = $result->getMeta();
$resultStatusCode = $result->getStatusCode();
$this->assertArrayHasKey('jan', $resultData['users']);
// check if the returned status message matches the selected status code
if ($resultStatusCode === 997) {
$this->assertEquals('message1', $resultMeta['message']);
} elseif ($resultStatusCode === 998) {
$this->assertEquals('message2', $resultMeta['message']);
} elseif ($resultStatusCode === 100) {
$this->assertEquals(null, $resultMeta['message']);
}
}
}

View File

@ -137,6 +137,51 @@ class Cache extends \PHPUnit_Framework_TestCase {
$this->assertFalse($this->cache->inCache('folder/bar'));
}
public function testEncryptedFolder() {
$file1 = 'folder';
$file2 = 'folder/bar';
$file3 = 'folder/foo';
$data1 = array('size' => 100, 'mtime' => 50, 'mimetype' => 'httpd/unix-directory');
$fileData = array();
$fileData['bar'] = array('size' => 1000, 'unencrypted_size' => 900, 'encrypted' => 1, 'mtime' => 20, 'mimetype' => 'foo/file');
$fileData['foo'] = array('size' => 20, 'unencrypted_size' => 16, 'encrypted' => 1, 'mtime' => 25, 'mimetype' => 'foo/file');
$this->cache->put($file1, $data1);
$this->cache->put($file2, $fileData['bar']);
$this->cache->put($file3, $fileData['foo']);
$content = $this->cache->getFolderContents($file1);
$this->assertEquals(count($content), 2);
foreach ($content as $cachedData) {
$data = $fileData[$cachedData['name']];
// indirect retrieval swaps unencrypted_size and size
$this->assertEquals($data['unencrypted_size'], $cachedData['size']);
}
$file4 = 'folder/unkownSize';
$fileData['unkownSize'] = array('size' => -1, 'mtime' => 25, 'mimetype' => 'foo/file');
$this->cache->put($file4, $fileData['unkownSize']);
$this->assertEquals(-1, $this->cache->calculateFolderSize($file1));
$fileData['unkownSize'] = array('size' => 5, 'mtime' => 25, 'mimetype' => 'foo/file');
$this->cache->put($file4, $fileData['unkownSize']);
$this->assertEquals(916, $this->cache->calculateFolderSize($file1));
// direct cache entry retrieval returns the original values
$this->assertEquals(1025, $this->cache->get($file1)['size']);
$this->assertEquals(916, $this->cache->get($file1)['unencrypted_size']);
$this->cache->remove($file2);
$this->cache->remove($file3);
$this->cache->remove($file4);
$this->assertEquals(0, $this->cache->calculateFolderSize($file1));
$this->cache->remove('folder');
$this->assertFalse($this->cache->inCache('folder/foo'));
$this->assertFalse($this->cache->inCache('folder/bar'));
}
public function testRootFolderSizeForNonHomeStorage() {
$dir1 = 'knownsize';
$dir2 = 'unknownsize';

View File

@ -147,7 +147,7 @@ class Scanner extends \PHPUnit_Framework_TestCase {
$this->scanner->scan('');
$oldData = $this->cache->get('');
$this->storage->unlink('folder/bar.txt');
$this->cache->put('folder', array('mtime' => $this->storage->filemtime('folder')));
$this->cache->put('folder', array('mtime' => $this->storage->filemtime('folder'), 'storage_mtime' => $this->storage->filemtime('folder')));
$this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW, \OC\Files\Cache\Scanner::REUSE_SIZE);
$newData = $this->cache->get('');
$this->assertNotEquals($oldData['etag'], $newData['etag']);

View File

@ -88,7 +88,7 @@ class Updater extends \PHPUnit_Framework_TestCase {
public function testWrite() {
$textSize = strlen("dummy file data\n");
$imageSize = filesize(\OC::$SERVERROOT . '/core/img/logo.png');
$this->cache->put('foo.txt', array('mtime' => 100));
$this->cache->put('foo.txt', array('mtime' => 100, 'storage_mtime' => 150));
$rootCachedData = $this->cache->get('');
$this->assertEquals(3 * $textSize + $imageSize, $rootCachedData['size']);

View File

@ -545,4 +545,21 @@ class View extends \PHPUnit_Framework_TestCase {
$this->assertContains($item['name'], $names);
}
}
public function testTouchNotSupported() {
$storage = new TemporaryNoTouch(array());
$scanner = $storage->getScanner();
\OC\Files\Filesystem::mount($storage, array(), '/test/');
$past = time() - 100;
$storage->file_put_contents('test', 'foobar');
$scanner->scan('');
$view = new \OC\Files\View('');
$info = $view->getFileInfo('/test/test');
$view->touch('/test/test', $past);
$scanner->scanFile('test', \OC\Files\Cache\Scanner::REUSE_ETAG);
$info2 = $view->getFileInfo('/test/test');
$this->assertEquals($info['etag'], $info2['etag']);
}
}

View File

@ -58,7 +58,7 @@ class TestCleanupListener implements PHPUnit_Framework_TestListener {
}
private function unlinkDir($dir) {
if ($dh = opendir($dir)) {
if ($dh = @opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if ($file === '..' || $file === '.') {
continue;
@ -68,12 +68,12 @@ class TestCleanupListener implements PHPUnit_Framework_TestListener {
$this->unlinkDir($path);
}
else {
unlink($path);
@unlink($path);
}
}
closedir($dh);
}
rmdir($dir);
@rmdir($dir);
}
private function cleanStrayDataFiles() {