Merge branch 'master' of github.com:owncloud/core into issue_1776

Conflicts:
	core/templates/layout.user.php
This commit is contained in:
Qingping Hou 2013-02-25 17:16:03 -05:00
commit 195b52cb63
74 changed files with 1398 additions and 557 deletions

View File

@ -5,7 +5,7 @@
<description>File Management</description> <description>File Management</description>
<licence>AGPL</licence> <licence>AGPL</licence>
<author>Robin Appelman</author> <author>Robin Appelman</author>
<require>4.91</require> <require>4.93</require>
<shipped>true</shipped> <shipped>true</shipped>
<standalone/> <standalone/>
<default_enable/> <default_enable/>

View File

@ -123,6 +123,24 @@ a.action>img { max-height:16px; max-width:16px; vertical-align:text-bottom; }
.selectedActions a { display:inline; margin:-.5em 0; padding:.5em !important; } .selectedActions a { display:inline; margin:-.5em 0; padding:.5em !important; }
.selectedActions a img { position:relative; top:.3em; } .selectedActions a img { position:relative; top:.3em; }
#fileList a.action {
display:none;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
opacity: 0;
}
#fileList tr:hover a.action {
display:inline;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=.5)";
filter: alpha(opacity=.5);
opacity: .5;
}
#fileList tr:hover a.action:hover {
display:inline;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=1)";
filter: alpha(opacity=1);
opacity: 1;
}
#scanning-message{ top:40%; left:40%; position:absolute; display:none; } #scanning-message{ top:40%; left:40%; position:absolute; display:none; }

View File

@ -334,7 +334,7 @@ var FileList={
if (result.status == 'success') { if (result.status == 'success') {
$.each(files,function(index,file){ $.each(files,function(index,file){
var files = $('tr').filterAttr('data-file',file); var files = $('tr').filterAttr('data-file',file);
files.hide(); files.remove();
files.find('input[type="checkbox"]').removeAttr('checked'); files.find('input[type="checkbox"]').removeAttr('checked');
files.removeClass('selected'); files.removeClass('selected');
}); });

View File

@ -524,7 +524,7 @@ $(document).ready(function() {
crumb.text(text); crumb.text(text);
} }
$(window).click(function(){ $(document).click(function(){
$('#new>ul').hide(); $('#new>ul').hide();
$('#new').removeClass('active'); $('#new').removeClass('active');
$('#new li').each(function(i,element){ $('#new li').each(function(i,element){
@ -595,7 +595,7 @@ $(document).ready(function() {
var date=new Date(); var date=new Date();
FileList.addFile(name,0,date,false,hidden); FileList.addFile(name,0,date,false,hidden);
var tr=$('tr').filterAttr('data-file',name); var tr=$('tr').filterAttr('data-file',name);
tr.data('mime','text/plain').data('id',result.data.id); tr.attr('data-mime','text/plain');
tr.attr('data-id', result.data.id); tr.attr('data-id', result.data.id);
getMimeIcon('text/plain',function(path){ getMimeIcon('text/plain',function(path){
tr.find('td.filename').attr('style','background-image:url('+path+')'); tr.find('td.filename').attr('style','background-image:url('+path+')');
@ -863,6 +863,10 @@ var dragOptions={
$('#fileList tr td.filename').addClass('ui-draggable'); $('#fileList tr td.filename').addClass('ui-draggable');
} }
} }
// sane browsers support using the distance option
if ( ! $.browser.msie) {
dragOptions['distance'] = 20;
}
var folderDropOptions={ var folderDropOptions={
drop: function( event, ui ) { drop: function( event, ui ) {

View File

@ -8,6 +8,7 @@
"Missing a temporary folder" => "תיקייה זמנית חסרה", "Missing a temporary folder" => "תיקייה זמנית חסרה",
"Failed to write to disk" => "הכתיבה לכונן נכשלה", "Failed to write to disk" => "הכתיבה לכונן נכשלה",
"Files" => "קבצים", "Files" => "קבצים",
"Delete permanently" => "מחק לצמיתות",
"Delete" => "מחיקה", "Delete" => "מחיקה",
"Rename" => "שינוי שם", "Rename" => "שינוי שם",
"Pending" => "ממתין", "Pending" => "ממתין",

View File

@ -5,7 +5,7 @@
<description>Mount external storage sources</description> <description>Mount external storage sources</description>
<licence>AGPL</licence> <licence>AGPL</licence>
<author>Robin Appelman, Michael Gapczynski</author> <author>Robin Appelman, Michael Gapczynski</author>
<require>4.91</require> <require>4.93</require>
<shipped>true</shipped> <shipped>true</shipped>
<types> <types>
<filesystem/> <filesystem/>

View File

@ -5,7 +5,7 @@
<description>File sharing between users</description> <description>File sharing between users</description>
<licence>AGPL</licence> <licence>AGPL</licence>
<author>Michael Gapczynski</author> <author>Michael Gapczynski</author>
<require>4.91</require> <require>4.93</require>
<shipped>true</shipped> <shipped>true</shipped>
<default_enable/> <default_enable/>
<types> <types>

View File

@ -0,0 +1,4 @@
<?php $TRANSLATIONS = array(
"Password" => "စကားဝှက်",
"web services under your control" => "သင်၏ထိန်းချုပ်မှု့အောက်တွင်ရှိသော Web services"
);

View File

@ -315,7 +315,8 @@ class Shared extends \OC\Files\Storage\Common {
if ($this->isCreatable(dirname($path2))) { if ($this->isCreatable(dirname($path2))) {
$source = $this->fopen($path1, 'r'); $source = $this->fopen($path1, 'r');
$target = $this->fopen($path2, 'w'); $target = $this->fopen($path2, 'w');
return \OC_Helper::streamCopy($source, $target); list ($count, $result) = \OC_Helper::streamCopy($source, $target);
return $result;
} }
return false; return false;
} }

View File

@ -18,7 +18,7 @@
<type>text</type> <type>text</type>
<default></default> <default></default>
<notnull>true</notnull> <notnull>true</notnull>
<length>50</length> <length>250</length>
</field> </field>
<field> <field>
@ -26,7 +26,7 @@
<type>text</type> <type>text</type>
<default></default> <default></default>
<notnull>true</notnull> <notnull>true</notnull>
<length>50</length> <length>64</length>
</field> </field>
<field> <field>
@ -42,7 +42,7 @@
<type>text</type> <type>text</type>
<default></default> <default></default>
<notnull>true</notnull> <notnull>true</notnull>
<length>200</length> <length>512</length>
</field> </field>
<field> <field>
@ -89,4 +89,30 @@
</table> </table>
<table>
<name>*dbprefix*files_trashsize</name>
<declaration>
<field>
<name>user</name>
<type>text</type>
<default></default>
<notnull>true</notnull>
<length>64</length>
</field>
<field>
<name>size</name>
<type>text</type>
<default></default>
<notnull>true</notnull>
<length>50</length>
</field>
</declaration>
</table>
</database> </database>

View File

@ -0,0 +1,40 @@
<?php
$installedVersion=OCP\Config::getAppValue('files_trashbin', 'installed_version');
// move versions to new directory
if (version_compare($installedVersion, '0.2', '<')) {
$datadir = \OCP\Config::getSystemValue('datadirectory').'/';
$users = \OCP\User::getUsers();
foreach ($users as $user) {
//create new folders
@mkdir($datadir.$user.'/files_trashbin/files');
@mkdir($datadir.$user.'/files_trashbin/versions');
@mkdir($datadir.$user.'/files_trashbin/keyfiles');
// move files to the new folders
if ($handle = opendir($datadir.$user.'/files_trashbin')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && $file != 'files' && $file != 'versions' && $file != 'keyfiles') {
rename($datadir.$user.'/files_trashbin/'.$file,
$datadir.$user.'/files_trashbin/files/'.$file);
}
}
closedir($handle);
}
// move versions to the new folder
if ($handle = opendir($datadir.$user.'/versions_trashbin')) {
while (false !== ($file = readdir($handle))) {
rename($datadir.$user.'/versions_trashbin/'.$file,
$datadir.$user.'/files_trashbin/versions/'.$file);
}
closedir($handle);
}
@rmdir($datadir.$user.'/versions_trashbin');
}
}

View File

@ -1 +1 @@
0.1 0.3

View File

@ -9,7 +9,7 @@ OCP\Util::addScript('files', 'fileactions');
$tmpl = new OCP\Template('files_trashbin', 'index', 'user'); $tmpl = new OCP\Template('files_trashbin', 'index', 'user');
$user = \OCP\User::getUser(); $user = \OCP\User::getUser();
$view = new OC_Filesystemview('/'.$user.'/files_trashbin'); $view = new OC_Filesystemview('/'.$user.'/files_trashbin/files');
OCP\Util::addStyle('files', 'files'); OCP\Util::addStyle('files', 'files');
OCP\Util::addScript('files', 'filelist'); OCP\Util::addScript('files', 'filelist');
@ -19,7 +19,6 @@ $dir = isset($_GET['dir']) ? stripslashes($_GET['dir']) : '';
$result = array(); $result = array();
if ($dir) { if ($dir) {
$dirlisting = true; $dirlisting = true;
$view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_trashbin');
$fullpath = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath($dir); $fullpath = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath($dir);
$dirContent = opendir($fullpath); $dirContent = opendir($fullpath);
$i = 0; $i = 0;
@ -96,6 +95,7 @@ $list->assign('disableDownloadActions', true);
$tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage(), false); $tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage(), false);
$tmpl->assign('fileList', $list->fetchPage(), false); $tmpl->assign('fileList', $list->fetchPage(), false);
$tmpl->assign('files', $files); $tmpl->assign('files', $files);
$tmpl->assign('dirlisting', $dirlisting);
$tmpl->assign('dir', OC_Filesystem::normalizePath($view->getAbsolutePath())); $tmpl->assign('dir', OC_Filesystem::normalizePath($view->getAbsolutePath()));
$tmpl->printPage(); $tmpl->printPage();

View File

@ -1,8 +1,16 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Couldn't delete %s permanently" => "בלתי אפשרי למחוק את %s לצמיתות",
"Couldn't restore %s" => "בלתי אפשרי לשחזר את %s",
"perform restore operation" => "בצע פעולת שחזור",
"delete file permanently" => "מחק קובץ לצמיתות",
"Delete permanently" => "מחק לצמיתות",
"Name" => "שם", "Name" => "שם",
"Deleted" => "נמחק",
"1 folder" => "תיקייה אחת", "1 folder" => "תיקייה אחת",
"{count} folders" => "{count} תיקיות", "{count} folders" => "{count} תיקיות",
"1 file" => "קובץ אחד", "1 file" => "קובץ אחד",
"{count} files" => "{count} קבצים", "{count} files" => "{count} קבצים",
"Nothing in here. Your trash bin is empty!" => "שום דבר כאן. סל המחזור שלך ריק!",
"Restore" => "שחזר",
"Delete" => "מחיקה" "Delete" => "מחיקה"
); );

View File

@ -36,10 +36,12 @@ class Trashbin {
*/ */
public static function move2trash($file_path) { public static function move2trash($file_path) {
$user = \OCP\User::getUser(); $user = \OCP\User::getUser();
$view = new \OC_FilesystemView('/'. $user); $view = new \OC\Files\View('/'. $user);
if (!$view->is_dir('files_trashbin')) { if (!$view->is_dir('files_trashbin')) {
$view->mkdir('files_trashbin'); $view->mkdir('files_trashbin');
$view->mkdir("versions_trashbin"); $view->mkdir("files_trashbin/files");
$view->mkdir("files_trashbin/versions");
$view->mkdir("files_trashbin/keyfiles");
} }
$path_parts = pathinfo($file_path); $path_parts = pathinfo($file_path);
@ -54,50 +56,61 @@ class Trashbin {
} else { } else {
$type = 'file'; $type = 'file';
} }
if ( ($trashbinSize = \OCP\Config::getAppValue('files_trashbin', 'size')) === null ) { $trashbinSize = self::getTrashbinSize($user);
if ( $trashbinSize === false || $trashbinSize < 0 ) {
$trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin')); $trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin'));
$trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/versions_trashbin'));
} }
$trashbinSize += self::copy_recursive($file_path, 'files_trashbin/'.$deleted.'.d'.$timestamp, $view); $trashbinSize += self::copy_recursive($file_path, 'files_trashbin/files/'.$deleted.'.d'.$timestamp, $view);
if ( $view->file_exists('files_trashbin/'.$deleted.'.d'.$timestamp) ) { if ( $view->file_exists('files_trashbin/files/'.$deleted.'.d'.$timestamp) ) {
$query = \OC_DB::prepare("INSERT INTO *PREFIX*files_trash (id,timestamp,location,type,mime,user)" $query = \OC_DB::prepare("INSERT INTO *PREFIX*files_trash (id,timestamp,location,type,mime,user) VALUES (?,?,?,?,?,?)");
." VALUES (?,?,?,?,?,?)");
$result = $query->execute(array($deleted, $timestamp, $location, $type, $mime, $user)); $result = $query->execute(array($deleted, $timestamp, $location, $type, $mime, $user));
if ( !$result ) { // if file couldn't be added to the database than also don't store it in the trash bin. if ( !$result ) { // if file couldn't be added to the database than also don't store it in the trash bin.
$view->deleteAll('files_trashbin/'.$deleted.'.d'.$timestamp); $view->deleteAll('files_trashbin/files/'.$deleted.'.d'.$timestamp);
\OC_Log::write('files_trashbin', 'trash bin database couldn\'t be updated', \OC_log::ERROR); \OC_Log::write('files_trashbin', 'trash bin database couldn\'t be updated', \OC_log::ERROR);
return; return;
} }
// Take care of file versions
if ( \OCP\App::isEnabled('files_versions') ) { if ( \OCP\App::isEnabled('files_versions') ) {
if ( $view->is_dir('files_versions'.$file_path) ) { if ( $view->is_dir('files_versions'.$file_path) ) {
$trashbinSize += self::calculateSize( $trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_versions/'.$file_path));
new \OC_FilesystemView('/'. $user.'/files_versions/'.$file_path) $view->rename('files_versions'.$file_path, 'files_trashbin/versions'. $deleted.'.d'.$timestamp);
); } else if ( $versions = \OCA\Files_Versions\Storage::getVersions($user, $file_path) ) {
$view->rename('files_versions'.$file_path, 'versions_trashbin/'. $deleted.'.d'.$timestamp);
} else if ( $versions = \OCA\Files_Versions\Storage::getVersions($file_path) ) {
foreach ($versions as $v) { foreach ($versions as $v) {
$trashbinSize += $view->filesize('files_versions'.$v['path'].'.v'.$v['version']); $trashbinSize += $view->filesize('files_versions'.$v['path'].'.v'.$v['version']);
$view->rename('files_versions'.$v['path'].'.v'.$v['version'], $view->rename('files_versions'.$v['path'].'.v'.$v['version'], 'files_trashbin/versions'. $deleted.'.v'.$v['version'].'.d'.$timestamp);
'versions_trashbin/'. $deleted.'.v'.$v['version'].'.d'.$timestamp);
} }
} }
} }
// Take care of encryption keys
$keyfile = \OC_Filesystem::normalizePath('files_encryption/keyfiles/'.$file_path);
if ( \OCP\App::isEnabled('files_encryption') && $view->file_exists($keyfile.'.key') ) {
if ( $view->is_dir('files'.$file_path) ) {
$trashbinSize += self::calculateSize(new \OC_FilesystemView('/'.$user.'/'.$keyfile));
$view->rename($keyfile, 'files_trashbin/keyfiles/'. $deleted.'.d'.$timestamp);
} else {
$trashbinSize += $view->filesize($keyfile.'.key');
$view->rename($keyfile.'.key', 'files_trashbin/keyfiles/'. $deleted.'.key.d'.$timestamp);
}
}
} else { } else {
\OC_Log::write('files_trashbin', 'Couldn\'t move '.$file_path.' to the trash bin', \OC_log::ERROR); \OC_Log::write('files_trashbin', 'Couldn\'t move '.$file_path.' to the trash bin', \OC_log::ERROR);
} }
// get available disk space for user // get available disk space for user
$quota = \OCP\Util::computerFileSize(\OC_Preferences::getValue($user, 'files', 'quota')); $quota = \OC_Preferences::getValue($user, 'files', 'quota');
if ( $quota == null ) { if ( $quota === null ) {
$quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota')); $quota = \OC_Appconfig::getValue('files', 'default_quota');
} }
if ( $quota == null ) { if ( $quota === null ) {
$quota = \OC\Files\Filesystem::free_space('/'); $quota = \OC\Files\Filesystem::free_space('/') / count(\OCP\User::getUsers());
} else {
$quota = \OCP\Util::computerFileSize($quota);
} }
// calculate available space for trash bin // calculate available space for trash bin
$rootInfo = $view->getFileInfo('/files'); $rootInfo = $view->getFileInfo('/files');
$free = $quota-$rootInfo['size']; // remaining free space for user $free = $quota-$rootInfo['size']; // remaining free space for user
@ -106,9 +119,10 @@ class Trashbin {
} else { } else {
$availableSpace = $free-$trashbinSize; $availableSpace = $free-$trashbinSize;
} }
$trashbinSize -= self::expire($availableSpace); $trashbinSize -= self::expire($availableSpace);
\OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize);
self::setTrashbinSize($user, $trashbinSize);
} }
@ -121,10 +135,10 @@ class Trashbin {
public static function restore($file, $filename, $timestamp) { public static function restore($file, $filename, $timestamp) {
$user = \OCP\User::getUser(); $user = \OCP\User::getUser();
$view = new \OC_FilesystemView('/'.$user); $view = new \OC_FilesystemView('/'.$user);
if ( ($trashbinSize = \OCP\Config::getAppValue('files_trashbin', 'size')) === null ) { $trashbinSize = self::getTrashbinSize($user);
if ( $trashbinSize === false || $trashbinSize < 0 ) {
$trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin')); $trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin'));
$trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/versions_trashbin'));
} }
if ( $timestamp ) { if ( $timestamp ) {
$query = \OC_DB::prepare('SELECT location,type FROM *PREFIX*files_trash' $query = \OC_DB::prepare('SELECT location,type FROM *PREFIX*files_trash'
@ -143,15 +157,15 @@ class Trashbin {
$location = ''; $location = '';
} }
} else { } else {
$path_parts = pathinfo($filename); $path_parts = pathinfo($file);
$result[] = array( $result[] = array(
'location' => $path_parts['dirname'], 'location' => $path_parts['dirname'],
'type' => $view->is_dir('/files_trashbin/'.$file) ? 'dir' : 'files', 'type' => $view->is_dir('/files_trashbin/files/'.$file) ? 'dir' : 'files',
); );
$location = ''; $location = '';
} }
$source = \OC_Filesystem::normalizePath('files_trashbin/'.$file); $source = \OC_Filesystem::normalizePath('files_trashbin/files/'.$file);
$target = \OC_Filesystem::normalizePath('files/'.$location.'/'.$filename); $target = \OC_Filesystem::normalizePath('files/'.$location.'/'.$filename);
// we need a extension in case a file/dir with the same name already exists // we need a extension in case a file/dir with the same name already exists
@ -171,33 +185,49 @@ class Trashbin {
} else { } else {
$versionedFile = $file; $versionedFile = $file;
} }
if ( $result[0]['type'] == 'dir' ) { if ( $result[0]['type'] === 'dir' ) {
$trashbinSize -= self::calculateSize( $trashbinSize -= self::calculateSize(new \OC_FilesystemView('/'.$user.'/'.'files_trashbin/versions/'. $file));
new \OC_FilesystemView('/'.$user.'/'.'versions_trashbin/'. $file) $view->rename(\OC_Filesystem::normalizePath('files_trashbin/versions/'. $file), \OC_Filesystem::normalizePath('files_versions/'.$location.'/'.$filename.$ext));
);
$view->rename(\OC_Filesystem::normalizePath('versions_trashbin/'. $file),
\OC_Filesystem::normalizePath('files_versions/'.$location.'/'.$filename.$ext));
} else if ( $versions = self::getVersionsFromTrash($versionedFile, $timestamp) ) { } else if ( $versions = self::getVersionsFromTrash($versionedFile, $timestamp) ) {
foreach ($versions as $v) { foreach ($versions as $v) {
if ($timestamp ) { if ($timestamp ) {
$trashbinSize -= $view->filesize('versions_trashbin/'.$versionedFile.'.v'.$v.'.d'.$timestamp); $trashbinSize -= $view->filesize('files_trashbin/versions/'.$versionedFile.'.v'.$v.'.d'.$timestamp);
$view->rename('versions_trashbin/'.$versionedFile.'.v'.$v.'.d'.$timestamp, $view->rename('files_trashbin/versions/'.$versionedFile.'.v'.$v.'.d'.$timestamp, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v);
'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v);
} else { } else {
$trashbinSize -= $view->filesize('versions_trashbin/'.$versionedFile.'.v'.$v); $trashbinSize -= $view->filesize('files_trashbin/versions/'.$versionedFile.'.v'.$v);
$view->rename('versions_trashbin/'.$versionedFile.'.v'.$v, $view->rename('files_trashbin/versions/'.$versionedFile.'.v'.$v, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v);
'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v);
} }
} }
} }
} }
// Take care of encryption keys TODO! Get '.key' in file between file name and delete date (also for permanent delete!)
$parts = pathinfo($file);
if ( $result[0]['type'] === 'dir' ) {
$keyfile = \OC_Filesystem::normalizePath('files_trashbin/keyfiles/'.$parts['dirname'].'/'.$filename);
} else {
$keyfile = \OC_Filesystem::normalizePath('files_trashbin/keyfiles/'.$parts['dirname'].'/'.$filename.'.key');
}
if ($timestamp) {
$keyfile .= '.d'.$timestamp;
}
if ( \OCP\App::isEnabled('files_encryption') && $view->file_exists($keyfile) ) {
if ( $result[0]['type'] === 'dir' ) {
$trashbinSize -= self::calculateSize(new \OC_FilesystemView('/'.$user.'/'.$keyfile));
$view->rename($keyfile, 'files_encryption/keyfiles/'. $location.'/'.$filename);
} else {
$trashbinSize -= $view->filesize($keyfile);
$view->rename($keyfile, 'files_encryption/keyfiles/'. $location.'/'.$filename.'.key');
}
}
if ( $timestamp ) { if ( $timestamp ) {
$query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?'); $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?');
$query->execute(array($user,$filename,$timestamp)); $query->execute(array($user,$filename,$timestamp));
} }
\OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize); self::setTrashbinSize($user, $trashbinSize);
return true; return true;
} else { } else {
\OC_Log::write('files_trashbin', 'Couldn\'t restore file from trash bin, '.$filename, \OC_log::ERROR); \OC_Log::write('files_trashbin', 'Couldn\'t restore file from trash bin, '.$filename, \OC_log::ERROR);
@ -216,10 +246,10 @@ class Trashbin {
$user = \OCP\User::getUser(); $user = \OCP\User::getUser();
$view = new \OC_FilesystemView('/'.$user); $view = new \OC_FilesystemView('/'.$user);
$size = 0; $size = 0;
if ( ($trashbinSize = \OCP\Config::getAppValue('files_trashbin', 'size')) === null ) { $trashbinSize = self::getTrashbinSize($user);
if ( $trashbinSize === false || $trashbinSize < 0 ) {
$trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin')); $trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin'));
$trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/versions_trashbin'));
} }
if ( $timestamp ) { if ( $timestamp ) {
@ -231,31 +261,50 @@ class Trashbin {
} }
if ( \OCP\App::isEnabled('files_versions') ) { if ( \OCP\App::isEnabled('files_versions') ) {
if ($view->is_dir('versions_trashbin/'.$file)) { if ($view->is_dir('files_trashbin/versions/'.$file)) {
$size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/versions_trashbin/'.$file)); $size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/files_trashbin/versions/'.$file));
$view->unlink('versions_trashbin/'.$file); $view->unlink('files_trashbin/versions/'.$file);
} else if ( $versions = self::getVersionsFromTrash($filename, $timestamp) ) { } else if ( $versions = self::getVersionsFromTrash($filename, $timestamp) ) {
foreach ($versions as $v) { foreach ($versions as $v) {
if ($timestamp ) { if ($timestamp ) {
$size += $view->filesize('/versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp); $size += $view->filesize('/files_trashbin/versions/'.$filename.'.v'.$v.'.d'.$timestamp);
$view->unlink('/versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp); $view->unlink('/files_trashbin/versions/'.$filename.'.v'.$v.'.d'.$timestamp);
} else { } else {
$size += $view->filesize('/versions_trashbin/'.$filename.'.v'.$v); $size += $view->filesize('/files_trashbin/versions/'.$filename.'.v'.$v);
$view->unlink('/versions_trashbin/'.$filename.'.v'.$v); $view->unlink('/files_trashbin/versions/'.$filename.'.v'.$v);
} }
} }
} }
} }
if ($view->is_dir('/files_trashbin/'.$file)) { // Take care of encryption keys
$size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/files_trashbin/'.$file)); $parts = pathinfo($file);
if ( $view->is_dir('/files_trashbin/files/'.$file) ) {
$keyfile = \OC_Filesystem::normalizePath('files_trashbin/keyfiles/'.$filename);
} else { } else {
$size += $view->filesize('/files_trashbin/'.$file); $keyfile = \OC_Filesystem::normalizePath('files_trashbin/keyfiles/'.$filename.'.key');
} }
$view->unlink('/files_trashbin/'.$file); if ($timestamp) {
$keyfile .= '.d'.$timestamp;
}
if ( \OCP\App::isEnabled('files_encryption') && $view->file_exists($keyfile) ) {
if ( $view->is_dir($keyfile) ) {
$size += self::calculateSize(new \OC_FilesystemView('/'.$user.'/'.$keyfile));
} else {
$size += $view->filesize($keyfile);
}
$view->unlink($keyfile);
}
if ($view->is_dir('/files_trashbin/files/'.$file)) {
$size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/files_trashbin/files/'.$file));
} else {
$size += $view->filesize('/files_trashbin/files/'.$file);
}
$view->unlink('/files_trashbin/files/'.$file);
$trashbinSize -= $size; $trashbinSize -= $size;
\OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize); self::setTrashbinSize($user, $trashbinSize);
return $size; return $size;
} }
@ -275,7 +324,7 @@ class Trashbin {
$filename = $filename; $filename = $filename;
} }
$target = \OC_Filesystem::normalizePath('files_trashbin/'.$filename); $target = \OC_Filesystem::normalizePath('files_trashbin/files/'.$filename);
return $view->file_exists($target); return $view->file_exists($target);
} }
@ -301,31 +350,9 @@ class Trashbin {
$timestamp = $r['timestamp']; $timestamp = $r['timestamp'];
$filename = $r['id']; $filename = $r['id'];
if ( $r['timestamp'] < $limit ) { if ( $r['timestamp'] < $limit ) {
if ($view->is_dir('files_trashbin/'.$filename.'.d'.$timestamp)) { $size += self::delete($filename, $timestamp);
$size += self::calculateSize(
new \OC_FilesystemView('/'.$user.'/files_trashbin/'.$filename.'.d'.$timestamp)
);
} else {
$size += $view->filesize('files_trashbin/'.$filename.'.d'.$timestamp);
}
$view->unlink('files_trashbin/'.$filename.'.d'.$timestamp);
if ($r['type'] == 'dir') {
$size += self::calculateSize(
new \OC_FilesystemView('/'.$user.'/versions_trashbin/'.$filename.'.d'.$timestamp)
);
$view->unlink('versions_trashbin/'.$filename.'.d'.$timestamp);
} else if ( $versions = self::getVersionsFromTrash($filename, $timestamp) ) {
foreach ($versions as $v) {
$size += $view->filesize('versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp);
$view->unlink('versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp);
}
}
} }
} }
$query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND timestamp<?');
$query->execute(array($user,$limit));
$availableSpace = $availableSpace + $size; $availableSpace = $availableSpace + $size;
// if size limit for trash bin reached, delete oldest files in trash bin // if size limit for trash bin reached, delete oldest files in trash bin
if ($availableSpace < 0) { if ($availableSpace < 0) {
@ -341,6 +368,7 @@ class Trashbin {
$i++; $i++;
} }
} }
return $size; return $size;
@ -382,7 +410,7 @@ class Trashbin {
* @param $timestamp timestamp when the file was deleted * @param $timestamp timestamp when the file was deleted
*/ */
private static function getVersionsFromTrash($filename, $timestamp) { private static function getVersionsFromTrash($filename, $timestamp) {
$view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/versions_trashbin'); $view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_trashbin/versions');
$versionsName = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath($filename); $versionsName = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath($filename);
$versions = array(); $versions = array();
if ($timestamp ) { if ($timestamp ) {
@ -449,4 +477,35 @@ class Trashbin {
return $size; return $size;
} }
/**
* get current size of trash bin from a given user
*
* @param $user user who owns the trash bin
* @return mixed trash bin size or false if no trash bin size is stored
*/
private static function getTrashbinSize($user) {
$query = \OC_DB::prepare('SELECT size FROM *PREFIX*files_trashsize WHERE user=?');
$result = $query->execute(array($user))->fetchAll();
if ($result) {
return $result[0]['size'];
}
return false;
}
/**
* write to the database how much space is in use for the trash bin
*
* @param $user owner of the trash bin
* @param $size size of the trash bin
*/
private static function setTrashbinSize($user, $size) {
if ( self::getTrashbinSize($user) === false) {
$query = \OC_DB::prepare('INSERT INTO *PREFIX*files_trashsize (size, user) VALUES (?, ?)');
}else {
$query = \OC_DB::prepare('UPDATE *PREFIX*files_trashsize SET size=? WHERE user=?');
}
$query->execute(array($size, $user));
}
} }

View File

@ -5,7 +5,7 @@
</div> </div>
<div id='notification'></div> <div id='notification'></div>
<?php if (isset($_['files']) && count($_['files'])==0):?> <?php if (isset($_['files']) && count($_['files'])==0 && $_['dirlisting'] == false):?>
<div id="emptyfolder"><?php echo $l->t('Nothing in here. Your trash bin is empty!')?></div> <div id="emptyfolder"><?php echo $l->t('Nothing in here. Your trash bin is empty!')?></div>
<?php endif; ?> <?php endif; ?>

View File

@ -1,11 +1,11 @@
<?php <?php
OCP\JSON::checkAppEnabled('files_versions'); OCP\JSON::checkAppEnabled('files_versions');
$userDirectory = "/".OCP\USER::getUser()."/files";
$source = $_GET['source']; $source = $_GET['source'];
list ($uid, $filename) = OCA\Files_Versions\Storage::getUidAndFilename($source);
$count = 5; //show the newest revisions $count = 5; //show the newest revisions
if( ($versions = OCA\Files_Versions\Storage::getVersions( $source, $count)) ) { if( ($versions = OCA\Files_Versions\Storage::getVersions($uid, $filename, $count)) ) {
$versionsFormatted = array(); $versionsFormatted = array();

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="ISO-8859-1" ?>
<database>
<name>*dbname*</name>
<create>true</create>
<overwrite>false</overwrite>
<charset>utf8</charset>
<table>
<name>*dbprefix*files_versions</name>
<declaration>
<field>
<name>user</name>
<type>text</type>
<default></default>
<notnull>true</notnull>
<length>64</length>
</field>
<field>
<name>size</name>
<type>text</type>
<default></default>
<notnull>true</notnull>
<length>50</length>
</field>
</declaration>
</table>
</database>

View File

@ -4,7 +4,7 @@
<name>Versions</name> <name>Versions</name>
<licence>AGPL</licence> <licence>AGPL</licence>
<author>Frank Karlitschek</author> <author>Frank Karlitschek</author>
<require>4.91</require> <require>4.93</require>
<shipped>true</shipped> <shipped>true</shipped>
<description>Versioning of files</description> <description>Versioning of files</description>
<types> <types>

View File

@ -1 +1 @@
1.0.2 1.0.3

View File

@ -35,7 +35,7 @@ class Storage {
6 => array('intervalEndsAfter' => -1, 'step' => 604800), 6 => array('intervalEndsAfter' => -1, 'step' => 604800),
); );
private static function getUidAndFilename($filename) { public static function getUidAndFilename($filename) {
$uid = \OC\Files\Filesystem::getOwner($filename); $uid = \OC\Files\Filesystem::getOwner($filename);
\OC\Files\Filesystem::initMountPoints($uid); \OC\Files\Filesystem::initMountPoints($uid);
if ( $uid != \OCP\User::getUser() ) { if ( $uid != \OCP\User::getUser() ) {
@ -46,6 +46,37 @@ class Storage {
return array($uid, $filename); return array($uid, $filename);
} }
/**
* get current size of all versions from a given user
*
* @param $user user who owns the versions
* @return mixed versions size or false if no versions size is stored
*/
private static function getVersionsSize($user) {
$query = \OC_DB::prepare('SELECT size FROM *PREFIX*files_versions WHERE user=?');
$result = $query->execute(array($user))->fetchAll();
if ($result) {
return $result[0]['size'];
}
return false;
}
/**
* write to the database how much space is in use for versions
*
* @param $user owner of the versions
* @param $size size of the versions
*/
private static function setVersionsSize($user, $size) {
if ( self::getVersionsSize($user) === false) {
$query = \OC_DB::prepare('INSERT INTO *PREFIX*files_versions (size, user) VALUES (?, ?)');
}else {
$query = \OC_DB::prepare('UPDATE *PREFIX*files_versions SET size=? WHERE user=?');
}
$query->execute(array($size, $user));
}
/** /**
* store a new version of a file. * store a new version of a file.
*/ */
@ -74,17 +105,19 @@ class Storage {
} }
// store a new version of a file // store a new version of a file
$result = $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename)); $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) { $versionsSize = self::getVersionsSize($uid);
if ( $versionsSize === false || $versionSize < 0 ) {
$versionsSize = self::calculateSize($uid); $versionsSize = self::calculateSize($uid);
} }
$versionsSize += $users_view->filesize('files'.$filename); $versionsSize += $users_view->filesize('files'.$filename);
// expire old revisions if necessary // expire old revisions if necessary
$newSize = self::expire($filename, $versionsSize); $newSize = self::expire($filename, $versionsSize);
if ( $newSize != $versionsSize ) { if ( $newSize != $versionsSize ) {
\OCP\Config::setAppValue('files_versions', 'size', $versionsSize); self::setVersionsSize($uid, $newSize);
} }
} }
} }
@ -99,14 +132,15 @@ class Storage {
$abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$filename.'.v'; $abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$filename.'.v';
if( ($versions = self::getVersions($uid, $filename)) ) { if( ($versions = self::getVersions($uid, $filename)) ) {
if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) { $versionsSize = self::getVersionsSize($uid);
if ( $versionsSize === false || $versionsSize < 0 ) {
$versionsSize = self::calculateSize($uid); $versionsSize = self::calculateSize($uid);
} }
foreach ($versions as $v) { foreach ($versions as $v) {
unlink($abs_path . $v['version']); unlink($abs_path . $v['version']);
$versionsSize -= $v['size']; $versionsSize -= $v['size'];
} }
\OCP\Config::setAppValue('files_versions', 'size', $versionsSize); self::setVersionsSize($uid, $versionsSize);
} }
} }
@ -316,17 +350,20 @@ class Storage {
$versions_fileview = new \OC\Files\View('/'.$uid.'/files_versions'); $versions_fileview = new \OC\Files\View('/'.$uid.'/files_versions');
// get available disk space for user // get available disk space for user
$quota = \OCP\Util::computerFileSize(\OC_Preferences::getValue($uid, 'files', 'quota')); $quota = \OC_Preferences::getValue($uid, 'files', 'quota');
if ( $quota == null ) { if ( $quota === null ) {
$quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota')); $quota = \OC_Appconfig::getValue('files', 'default_quota');
} }
if ( $quota == null ) { if ( $quota === null ) {
$quota = \OC\Files\Filesystem::free_space('/'); $quota = \OC\Files\Filesystem::free_space('/') / count(\OCP\User::getUsers());
} else {
$quota = \OCP\Util::computerFileSize($quota);
} }
// make sure that we have the current size of the version history // make sure that we have the current size of the version history
if ( $versionsSize === null ) { if ( $versionsSize === null ) {
if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) { $versionsSize = self::getVersionsSize($uid);
if ( $versionsSize === false || $versionsSize < 0 ) {
$versionsSize = self::calculateSize($uid); $versionsSize = self::calculateSize($uid);
} }
} }

View File

@ -7,7 +7,7 @@
This app is not compatible to the WebDAV user backend.</description> This app is not compatible to the WebDAV user backend.</description>
<licence>AGPL</licence> <licence>AGPL</licence>
<author>Dominik Schmidt and Arthur Schiwon</author> <author>Dominik Schmidt and Arthur Schiwon</author>
<require>4.91</require> <require>4.93</require>
<shipped>true</shipped> <shipped>true</shipped>
<types> <types>
<authentication/> <authentication/>

View File

@ -7,6 +7,7 @@
"User Login Filter" => "סנן כניסת משתמש", "User Login Filter" => "סנן כניסת משתמש",
"User List Filter" => "סנן רשימת משתמשים", "User List Filter" => "סנן רשימת משתמשים",
"Group Filter" => "סנן קבוצה", "Group Filter" => "סנן קבוצה",
"Port" => "פורט",
"in seconds. A change empties the cache." => "בשניות. שינוי מרוקן את המטמון.", "in seconds. A change empties the cache." => "בשניות. שינוי מרוקן את המטמון.",
"in bytes" => "בבתים", "in bytes" => "בבתים",
"Help" => "עזרה" "Help" => "עזרה"

View File

@ -1,3 +1,4 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Password" => "စကားဝှက်",
"Help" => "အကူအညီ" "Help" => "အကူအညီ"
); );

View File

@ -357,9 +357,6 @@ class Connection {
case 'ldapAgentPassword': case 'ldapAgentPassword':
$value = base64_encode($value); $value = base64_encode($value);
break; break;
case 'homeFolderNamingRule':
$value = empty($value) ? 'opt:username' : $value;
break;
case 'ldapBase': case 'ldapBase':
case 'ldapBaseUsers': case 'ldapBaseUsers':
case 'ldapBaseGroups': case 'ldapBaseGroups':
@ -394,10 +391,10 @@ class Connection {
$config = array(); $config = array();
foreach($trans as $dbKey => $classKey) { foreach($trans as $dbKey => $classKey) {
if($classKey == 'homeFolderNamingRule') { if($classKey == 'homeFolderNamingRule') {
if(strpos($this->config[$classKey], 'opt') === 0) { if(strpos($this->config[$classKey], 'attr:') === 0) {
$config[$dbKey] = '';
} else {
$config[$dbKey] = substr($this->config[$classKey], 5); $config[$dbKey] = substr($this->config[$classKey], 5);
} else {
$config[$dbKey] = '';
} }
continue; continue;
} else if((strpos($classKey, 'ldapBase') !== false) } else if((strpos($classKey, 'ldapBase') !== false)
@ -540,7 +537,7 @@ class Connection {
'ldap_cache_ttl' => 600, 'ldap_cache_ttl' => 600,
'ldap_uuid_attribute' => 'auto', 'ldap_uuid_attribute' => 'auto',
'ldap_override_uuid_attribute' => 0, 'ldap_override_uuid_attribute' => 0,
'home_folder_naming_rule' => 'opt:username', 'home_folder_naming_rule' => '',
'ldap_turn_off_cert_check' => 0, 'ldap_turn_off_cert_check' => 0,
'ldap_configuration_active' => 1, 'ldap_configuration_active' => 1,
'ldap_attributes_for_user_search' => '', 'ldap_attributes_for_user_search' => '',

View File

@ -7,7 +7,7 @@
This app is not compatible to the LDAP user and group backend.</description> This app is not compatible to the LDAP user and group backend.</description>
<licence>AGPL</licence> <licence>AGPL</licence>
<author>Frank Karlitschek</author> <author>Frank Karlitschek</author>
<require>4.91</require> <require>4.93</require>
<shipped>true</shipped> <shipped>true</shipped>
<types> <types>
<authentication/> <authentication/>

View File

@ -4,14 +4,14 @@
:: @author Thomas Müller :: @author Thomas Müller
:: @author Tobias Ramforth (translated into Windows batch file) :: @author Tobias Ramforth (translated into Windows batch file)
:: ::
:: @copyright 2012 Thomas Müller thomas.mueller@tmit.eu :: @copyright 2012, 2013 Thomas Müller thomas.mueller@tmit.eu
:: ::
@echo off @echo off
set DATADIR=data-autotest set DATADIR=data-autotest
set BASEDIR=%~dp0 set BASEDIR=%~dp0
:: create autoconfig for sqlite, mysql and postgresql :: create autoconfig for sqlite, mysql, postgresql and mssql
echo ^<?php > .\tests\autoconfig-sqlite.php echo ^<?php > .\tests\autoconfig-sqlite.php
echo $AUTOCONFIG ^= array ^( >> .\tests\autoconfig-sqlite.php echo $AUTOCONFIG ^= array ^( >> .\tests\autoconfig-sqlite.php
echo 'installed' ^=^> false^, >> .\tests\autoconfig-sqlite.php echo 'installed' ^=^> false^, >> .\tests\autoconfig-sqlite.php
@ -50,16 +50,35 @@ echo 'dbhost' ^=^> 'localhost'^, >> .\tests\autoconfig-pgsql.php
echo 'dbpass' ^=^> 'owncloud'^, >> .\tests\autoconfig-pgsql.php echo 'dbpass' ^=^> 'owncloud'^, >> .\tests\autoconfig-pgsql.php
echo ^)^; >> .\tests\autoconfig-pgsql.php echo ^)^; >> .\tests\autoconfig-pgsql.php
echo ^<?php > .\tests\autoconfig-mssql.php
echo $AUTOCONFIG ^= array ^( >> .\tests\autoconfig-mssql.php
echo 'installed' ^=^> false^, >> .\tests\autoconfig-mssql.php
echo 'dbtype' ^=^> 'mssql'^, >> .\tests\autoconfig-mssql.php
echo 'dbtableprefix' ^=^> 'oc_'^, >> .\tests\autoconfig-mssql.php
echo 'adminlogin' ^=^> 'admin'^, >> .\tests\autoconfig-mssql.php
echo 'adminpass' ^=^> 'admin'^, >> .\tests\autoconfig-mssql.php
echo 'directory' ^=^> '%BASEDIR%%DATADIR%'^, >> .\tests\autoconfig-mssql.php
echo 'dbuser' ^=^> 'oc_autotest'^, >> .\tests\autoconfig-mssql.php
echo 'dbname' ^=^> 'oc_autotest'^, >> .\tests\autoconfig-mssql.php
echo 'dbhost' ^=^> 'localhost\sqlexpress'^, >> .\tests\autoconfig-mssql.php
echo 'dbpass' ^=^> 'owncloud'^, >> .\tests\autoconfig-mssql.php
echo ^)^; >> .\tests\autoconfig-mssql.php
echo localhost:5432:*:oc_autotest:owncloud > %APPDATA%\postgresql\pgpass.conf echo localhost:5432:*:oc_autotest:owncloud > %APPDATA%\postgresql\pgpass.conf
:: ::
:: start test execution :: start test execution
:: ::
::call:execute_tests "sqlite" if [%1] == [] (
call:execute_tests "mysql" echo "Running on all database backends"
::call:execute_tests "mssql" call:execute_tests "sqlite"
::call:execute_tests "ora" call:execute_tests "mysql"
::call:execute_tests "pgsql" call:execute_tests "mssql"
::call:execute_tests "ora"
call:execute_tests "pgsql"
) else (
call:execute_tests "%1"
)
goto:eof goto:eof
@ -83,6 +102,9 @@ goto:eof
if "%~1" == "mysql" mysql -u oc_autotest -powncloud -e "DROP DATABASE oc_autotest" if "%~1" == "mysql" mysql -u oc_autotest -powncloud -e "DROP DATABASE oc_autotest"
if "%~1" == "pgsql" dropdb -h localhost -p 5432 -U oc_autotest -w oc_autotest if "%~1" == "pgsql" dropdb -h localhost -p 5432 -U oc_autotest -w oc_autotest
:: we assume a sqlexpress installation
if "%~1" == "mssql" sqlcmd -S localhost\sqlexpress -U oc_autotest -P owncloud -Q "IF EXISTS (SELECT name FROM sys.databases WHERE name=N'oc_autotest') DROP DATABASE [oc_autotest]"
:: copy autoconfig :: copy autoconfig
copy /y %BASEDIR%\tests\autoconfig-%~1.php %BASEDIR%\config\autoconfig.php copy /y %BASEDIR%\tests\autoconfig-%~1.php %BASEDIR%\config\autoconfig.php
@ -96,9 +118,8 @@ goto:eof
rmdir /s /q coverage-html-%~1 rmdir /s /q coverage-html-%~1
md coverage-html-%~1 md coverage-html-%~1
php -f enable_all.php php -f enable_all.php
::phpunit --log-junit autotest-results-%~1.xml --coverage-clover autotest-clover-%~1.xml --coverage-html coverage-html-%~1
::phpunit --bootstrap bootstrap.php --configuration phpunit.xml php win32-phpunit.php --bootstrap bootstrap.php --configuration phpunit-autotest.xml --log-junit autotest-results-%~1.xml --coverage-clover autotest-clover-%~1.xml --coverage-html coverage-html-%~1
php win32-phpunit.php --bootstrap bootstrap.php --configuration phpunit.xml --log-junit autotest-results-%~1.xml --coverage-clover autotest-clover-%~1.xml --coverage-html coverage-html-%~1
echo "Done with testing %~1 ..." echo "Done with testing %~1 ..."
cd %BASEDIR% cd %BASEDIR%
goto:eof goto:eof
@ -114,4 +135,10 @@ goto:eof
:: - to enable dropdb I decided to add following line to pg_hba.conf (this is not the safest way but I don't care for the testing machine): :: - to enable dropdb I decided to add following line to pg_hba.conf (this is not the safest way but I don't care for the testing machine):
:: local all all trust :: local all all trust
:: ::
:: NOTES on mssql:
:: we assume the usage of a local installed sqlexpress
:: create a user 'oc_autotest' with password 'owncloud' and assign the server role 'dbcreator'
:: make sure the sqlserver is configured to allow sql authentication
::

View File

@ -669,7 +669,7 @@ $(document).ready(function(){
$('#settings #expanddiv').click(function(event){ $('#settings #expanddiv').click(function(event){
event.stopPropagation(); event.stopPropagation();
}); });
$(window).click(function(){//hide the settings menu when clicking outside it $(document).click(function(){//hide the settings menu when clicking outside it
$('#settings #expanddiv').slideUp(200); $('#settings #expanddiv').slideUp(200);
}); });

View File

@ -5,6 +5,7 @@ $(document).ready(function() {
mysql:!!$('#hasMySQL').val(), mysql:!!$('#hasMySQL').val(),
postgresql:!!$('#hasPostgreSQL').val(), postgresql:!!$('#hasPostgreSQL').val(),
oracle:!!$('#hasOracle').val(), oracle:!!$('#hasOracle').val(),
mssql:!!$('#hasMSSQL').val()
}; };
$('#selectDbType').buttonset(); $('#selectDbType').buttonset();
@ -41,6 +42,12 @@ $(document).ready(function() {
$('#dbhost').show(250); $('#dbhost').show(250);
$('#dbhostlabel').show(250); $('#dbhostlabel').show(250);
}); });
$('#mssql').click(function() {
$('#use_other_db').slideDown(250);
$('#dbhost').show(250);
$('#dbhostlabel').show(250);
});
$('input[checked]').trigger('click'); $('input[checked]').trigger('click');

View File

@ -5,6 +5,7 @@
"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "המשתמש %s שיתף אתך את התיקייה „%s“. ניתן להוריד את התיקייה מכאן: %s", "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "המשתמש %s שיתף אתך את התיקייה „%s“. ניתן להוריד את התיקייה מכאן: %s",
"Category type not provided." => "סוג הקטגוריה לא סופק.", "Category type not provided." => "סוג הקטגוריה לא סופק.",
"No category to add?" => "אין קטגוריה להוספה?", "No category to add?" => "אין קטגוריה להוספה?",
"This category already exists: %s" => "הקטגוריה הבאה כבר קיימת: %s",
"Object type not provided." => "סוג הפריט לא סופק.", "Object type not provided." => "סוג הפריט לא סופק.",
"%s ID not provided." => "מזהה %s לא סופק.", "%s ID not provided." => "מזהה %s לא סופק.",
"Error adding %s to favorites." => "אירעה שגיאה בעת הוספת %s למועדפים.", "Error adding %s to favorites." => "אירעה שגיאה בעת הוספת %s למועדפים.",
@ -52,6 +53,7 @@
"Error" => "שגיאה", "Error" => "שגיאה",
"The app name is not specified." => "שם היישום לא צוין.", "The app name is not specified." => "שם היישום לא צוין.",
"The required file {file} is not installed!" => "הקובץ הנדרש {file} אינו מותקן!", "The required file {file} is not installed!" => "הקובץ הנדרש {file} אינו מותקן!",
"Shared" => "שותף",
"Share" => "שתף", "Share" => "שתף",
"Error while sharing" => "שגיאה במהלך השיתוף", "Error while sharing" => "שגיאה במהלך השיתוף",
"Error while unsharing" => "שגיאה במהלך ביטול השיתוף", "Error while unsharing" => "שגיאה במהלך ביטול השיתוף",
@ -82,6 +84,8 @@
"Error setting expiration date" => "אירעה שגיאה בעת הגדרת תאריך התפוגה", "Error setting expiration date" => "אירעה שגיאה בעת הגדרת תאריך התפוגה",
"Sending ..." => "מתבצעת שליחה ...", "Sending ..." => "מתבצעת שליחה ...",
"Email sent" => "הודעת הדוא״ל נשלחה", "Email sent" => "הודעת הדוא״ל נשלחה",
"The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "תהליך העדכון לא הושלם בהצלחה. נא דווח את הבעיה ב<a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">קהילת ownCloud</a>.",
"The update was successful. Redirecting you to ownCloud now." => "תהליך העדכון הסתיים בהצלחה. עכשיו מנתב אותך אל ownCloud.",
"ownCloud password reset" => "איפוס הססמה של ownCloud", "ownCloud password reset" => "איפוס הססמה של ownCloud",
"Use the following link to reset your password: {link}" => "יש להשתמש בקישור הבא כדי לאפס את הססמה שלך: {link}", "Use the following link to reset your password: {link}" => "יש להשתמש בקישור הבא כדי לאפס את הססמה שלך: {link}",
"You will receive a link to reset your password via Email." => "יישלח לתיבת הדוא״ל שלך קישור לאיפוס הססמה.", "You will receive a link to reset your password via Email." => "יישלח לתיבת הדוא״ל שלך קישור לאיפוס הססמה.",
@ -105,6 +109,8 @@
"Security Warning" => "אזהרת אבטחה", "Security Warning" => "אזהרת אבטחה",
"No secure random number generator is available, please enable the PHP OpenSSL extension." => "אין מחולל מספרים אקראיים מאובטח, נא להפעיל את ההרחבה OpenSSL ב־PHP.", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "אין מחולל מספרים אקראיים מאובטח, נא להפעיל את ההרחבה OpenSSL ב־PHP.",
"Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "ללא מחולל מספרים אקראיים מאובטח תוקף יכול לנבא את מחרוזות איפוס הססמה ולהשתלט על החשבון שלך.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "ללא מחולל מספרים אקראיים מאובטח תוקף יכול לנבא את מחרוזות איפוס הססמה ולהשתלט על החשבון שלך.",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "תיקיית וקבצי המידע שלך כנראה נגישים מהאינטרנט מכיוון שקובץ ה.htaccess לא עובד.",
"For information how to properly configure your server, please see the <a href=\"http://doc.owncloud.org/server/5.0/admin_manual/installation.html\" target=\"_blank\">documentation</a>." => "לקבלת מידע להגדרה נכונה של השרת שלך, ראה את ה<a href=\"http://doc.owncloud.org/server/5.0/admin_manual/installation.html\" target=\"_blank\">תיעוד</a>.",
"Create an <strong>admin account</strong>" => "יצירת <strong>חשבון מנהל</strong>", "Create an <strong>admin account</strong>" => "יצירת <strong>חשבון מנהל</strong>",
"Advanced" => "מתקדם", "Advanced" => "מתקדם",
"Data folder" => "תיקיית נתונים", "Data folder" => "תיקיית נתונים",
@ -124,6 +130,7 @@
"Lost your password?" => "שכחת את ססמתך?", "Lost your password?" => "שכחת את ססמתך?",
"remember" => "שמירת הססמה", "remember" => "שמירת הססמה",
"Log in" => "כניסה", "Log in" => "כניסה",
"Alternative Logins" => "כניסות אלטרנטיביות",
"prev" => "הקודם", "prev" => "הקודם",
"next" => "הבא", "next" => "הבא",
"Updating ownCloud to version %s, this may take a while." => "מעדכן את ownCloud אל גרסא %s, זה עלול לקחת זמן מה." "Updating ownCloud to version %s, this may take a while." => "מעדכן את ownCloud אל גרסא %s, זה עלול לקחת זמן מה."

View File

@ -1,4 +1,18 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"No category to add?" => "ထည့်ရန်ခေါင်းစဉ်မရှိဘူးလား",
"No categories selected for deletion." => "ဖျက်ရန်အတွက်ခေါင်းစဉ်မရွေးထားပါ",
"January" => "ဇန်နဝါရီ",
"February" => "ဖေဖော်ဝါရီ",
"March" => "မတ်",
"April" => "ဧပြီ",
"May" => "မေ",
"June" => "ဇွန်",
"July" => "ဇူလိုင်",
"August" => "ဩဂုတ်",
"September" => "စက်တင်ဘာ",
"October" => "အောက်တိုဘာ",
"November" => "နိုဝင်ဘာ",
"December" => "ဒီဇင်ဘာ",
"seconds ago" => "စက္ကန့်အနည်းငယ်က", "seconds ago" => "စက္ကန့်အနည်းငယ်က",
"1 minute ago" => "၁ မိနစ်အရင်က", "1 minute ago" => "၁ မိနစ်အရင်က",
"1 hour ago" => "၁ နာရီ အရင်က", "1 hour ago" => "၁ နာရီ အရင်က",
@ -7,7 +21,44 @@
"last month" => "ပြီးခဲ့သောလ", "last month" => "ပြီးခဲ့သောလ",
"last year" => "မနှစ်က", "last year" => "မနှစ်က",
"years ago" => "နှစ် အရင်က", "years ago" => "နှစ် အရင်က",
"Choose" => "ရွေးချယ်",
"Cancel" => "ပယ်ဖျက်မည်",
"No" => "မဟုတ်ဘူး",
"Yes" => "ဟုတ်",
"Ok" => "အိုကေ",
"Password" => "စကားဝှက်",
"Set expiration date" => "သက်တမ်းကုန်ဆုံးမည့်ရက်သတ်မှတ်မည်",
"Expiration date" => "သက်တမ်းကုန်ဆုံးမည့်ရက်",
"Share via email:" => "အီးမေးလ်ဖြင့်ဝေမျှမည် -",
"Resharing is not allowed" => "ပြန်လည်ဝေမျှခြင်းခွင့်မပြုပါ",
"can edit" => "ပြင်ဆင်နိုင်",
"create" => "ဖန်တီးမည်",
"delete" => "ဖျက်မည်",
"share" => "ဝေမျှမည်",
"Password protected" => "စကားဝှက်ဖြင့်ကာကွယ်ထားသည်",
"You will receive a link to reset your password via Email." => "အီးမေးလ်မှတစ်ဆင့် သင်၏စကားဝှက်ကို ပြန်ဖော်ရန်အတွက် Link တစ်ခုလက်ခံရရှိပါလိမ့်မယ်။",
"Username" => "သုံးစွဲသူအမည်",
"Your password was reset" => "သင်၏စကားဝှက်ကိုပြန်ဖော်ပြီးပါပြီ။",
"To login page" => "ဝင်ရောက်သည့်စာမျက်နှာသို့",
"New password" => "စကားဝှက်အသစ်",
"Users" => "သုံးစွဲသူ", "Users" => "သုံးစွဲသူ",
"Apps" => "Apps", "Apps" => "Apps",
"Help" => "အကူအညီ" "Admin" => "အက်ဒမင်",
"Help" => "အကူအညီ",
"Cloud not found" => "မတွေ့ရှိမိပါ",
"Add" => "ပေါင်းထည့်",
"Security Warning" => "လုံခြုံရေးသတိပေးချက်",
"Create an <strong>admin account</strong>" => "<strong>အက်ဒမင်အကောင့်</strong>တစ်ခုဖန်တီးမည်",
"Advanced" => "အဆင့်မြင့်",
"Data folder" => "အချက်အလက်ဖိုလ်ဒါလ်",
"Database user" => "Database သုံးစွဲသူ",
"Database password" => "Database စကားဝှက်",
"Database name" => "Database အမည်",
"Finish setup" => "တပ်ဆင်ခြင်းပြီးပါပြီ။",
"web services under your control" => "သင်၏ထိန်းချုပ်မှု့အောက်တွင်ရှိသော Web services",
"Lost your password?" => "သင်၏စကားဝှက်ပျောက်သွားပြီလား။",
"remember" => "မှတ်မိစေသည်",
"Log in" => "ဝင်ရောက်ရန်",
"prev" => "ယခင်",
"next" => "နောက်သို့"
); );

View File

@ -16,6 +16,7 @@ $hasSQLite = class_exists('SQLite3');
$hasMySQL = is_callable('mysql_connect'); $hasMySQL = is_callable('mysql_connect');
$hasPostgreSQL = is_callable('pg_connect'); $hasPostgreSQL = is_callable('pg_connect');
$hasOracle = is_callable('oci_connect'); $hasOracle = is_callable('oci_connect');
$hasMSSQL = is_callable('sqlsrv_connect');
$datadir = OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data'); $datadir = OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data');
// Protect data directory here, so we can test if the protection is working // Protect data directory here, so we can test if the protection is working
@ -26,6 +27,7 @@ $opts = array(
'hasMySQL' => $hasMySQL, 'hasMySQL' => $hasMySQL,
'hasPostgreSQL' => $hasPostgreSQL, 'hasPostgreSQL' => $hasPostgreSQL,
'hasOracle' => $hasOracle, 'hasOracle' => $hasOracle,
'hasMSSQL' => $hasMSSQL,
'directory' => $datadir, 'directory' => $datadir,
'secureRNG' => OC_Util::secureRNG_available(), 'secureRNG' => OC_Util::secureRNG_available(),
'htaccessWorking' => OC_Util::ishtaccessworking(), 'htaccessWorking' => OC_Util::ishtaccessworking(),

View File

@ -2,6 +2,7 @@
<input type='hidden' id='hasSQLite' value='<?php echo $_['hasSQLite'] ?>'> <input type='hidden' id='hasSQLite' value='<?php echo $_['hasSQLite'] ?>'>
<input type='hidden' id='hasPostgreSQL' value='<?php echo $_['hasPostgreSQL'] ?>'> <input type='hidden' id='hasPostgreSQL' value='<?php echo $_['hasPostgreSQL'] ?>'>
<input type='hidden' id='hasOracle' value='<?php echo $_['hasOracle'] ?>'> <input type='hidden' id='hasOracle' value='<?php echo $_['hasOracle'] ?>'>
<input type='hidden' id='hasMSSQL' value='<?php echo $_['hasMSSQL'] ?>'>
<form action="index.php" method="post"> <form action="index.php" method="post">
<input type="hidden" name="install" value="true" /> <input type="hidden" name="install" value="true" />
<?php if(count($_['errors']) > 0): ?> <?php if(count($_['errors']) > 0): ?>
@ -60,7 +61,7 @@
</fieldset> </fieldset>
<fieldset id='databaseField'> <fieldset id='databaseField'>
<?php if($_['hasMySQL'] or $_['hasPostgreSQL'] or $_['hasOracle']) <?php if($_['hasMySQL'] or $_['hasPostgreSQL'] or $_['hasOracle'] or $_['hasMSSQL'])
$hasOtherDB = true; else $hasOtherDB =false; //other than SQLite ?> $hasOtherDB = true; else $hasOtherDB =false; //other than SQLite ?>
<legend><?php echo $l->t( 'Configure the database' ); ?></legend> <legend><?php echo $l->t( 'Configure the database' ); ?></legend>
<div id="selectDbType"> <div id="selectDbType">
@ -78,7 +79,7 @@
<?php if($_['hasMySQL']): ?> <?php if($_['hasMySQL']): ?>
<input type='hidden' id='hasMySQL' value='true'/> <input type='hidden' id='hasMySQL' value='true'/>
<?php if(!$_['hasSQLite'] and !$_['hasPostgreSQL'] and !$_['hasOracle']): ?> <?php if(!$_['hasSQLite'] and !$_['hasPostgreSQL'] and !$_['hasOracle'] and !$_['hasMSSQL']): ?>
<p>MySQL <?php echo $l->t( 'will be used' ); ?>.</p> <p>MySQL <?php echo $l->t( 'will be used' ); ?>.</p>
<input type="hidden" id="dbtype" name="dbtype" value="mysql" /> <input type="hidden" id="dbtype" name="dbtype" value="mysql" />
<?php else: ?> <?php else: ?>
@ -89,7 +90,7 @@
<?php endif; ?> <?php endif; ?>
<?php if($_['hasPostgreSQL']): ?> <?php if($_['hasPostgreSQL']): ?>
<?php if(!$_['hasSQLite'] and !$_['hasMySQL'] and !$_['hasOracle']): ?> <?php if(!$_['hasSQLite'] and !$_['hasMySQL'] and !$_['hasOracle'] and !$_['hasMSSQL']): ?>
<p>PostgreSQL <?php echo $l->t( 'will be used' ); ?>.</p> <p>PostgreSQL <?php echo $l->t( 'will be used' ); ?>.</p>
<input type="hidden" id="dbtype" name="dbtype" value="pgsql" /> <input type="hidden" id="dbtype" name="dbtype" value="pgsql" />
<?php else: ?> <?php else: ?>
@ -100,7 +101,7 @@
<?php endif; ?> <?php endif; ?>
<?php if($_['hasOracle']): ?> <?php if($_['hasOracle']): ?>
<?php if(!$_['hasSQLite'] and !$_['hasMySQL'] and !$_['hasPostgreSQL']): ?> <?php if(!$_['hasSQLite'] and !$_['hasMySQL'] and !$_['hasPostgreSQL'] and !$_['hasMSSQL']): ?>
<p>Oracle <?php echo $l->t( 'will be used' ); ?>.</p> <p>Oracle <?php echo $l->t( 'will be used' ); ?>.</p>
<input type="hidden" id="dbtype" name="dbtype" value="oci" /> <input type="hidden" id="dbtype" name="dbtype" value="oci" />
<?php else: ?> <?php else: ?>
@ -109,6 +110,17 @@
<?php OC_Helper::init_radio('dbtype', 'oci', 'sqlite'); ?>/> <?php OC_Helper::init_radio('dbtype', 'oci', 'sqlite'); ?>/>
<?php endif; ?> <?php endif; ?>
<?php endif; ?> <?php endif; ?>
<?php if($_['hasMSSQL']): ?>
<input type='hidden' id='hasMSSQL' value='true'/>
<?php if(!$_['hasSQLite'] and !$_['hasMySQL'] and !$_['hasPostgreSQL'] and !$_['hasOracle']): ?>
<p>MS SQL <?php echo $l->t( 'will be used' ); ?>.</p>
<input type="hidden" id="dbtype" name="dbtype" value="mssql" />
<?php else: ?>
<label class="mssql" for="mssql">MS SQL</label>
<input type="radio" name="dbtype" value='mssql' id="mssql" <?php OC_Helper::init_radio('dbtype', 'mssql', 'sqlite'); ?>/>
<?php endif; ?>
<?php endif; ?>
</div> </div>
<?php if($hasOtherDB): ?> <?php if($hasOtherDB): ?>

View File

@ -34,7 +34,7 @@
<ul id="settings" class="svg"> <ul id="settings" class="svg">
<span id="expand"> <span id="expand">
<span id="expandDisplayName"><?php echo $_['displayname'] ?></span> <span id="expandDisplayName"><?php echo $_['user_displayname'] ?></span>
<img class="svg" src="<?php echo image_path('', 'actions/caret.svg'); ?>" /> <img class="svg" src="<?php echo image_path('', 'actions/caret.svg'); ?>" />
</span> </span>
<div id="expanddiv"> <div id="expanddiv">

View File

@ -12,9 +12,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud\n" "Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-02-22 00:06+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: 2013-02-20 23:20+0000\n" "PO-Revision-Date: 2013-02-24 12:10+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Last-Translator: Gilad Naaman <gilad.doom@gmail.com>\n"
"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -22,24 +22,24 @@ msgstr ""
"Language: he\n" "Language: he\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ajax/share.php:85 #: ajax/share.php:97
#, php-format #, php-format
msgid "User %s shared a file with you" msgid "User %s shared a file with you"
msgstr "המשתמש %s שיתף אתך קובץ" msgstr "המשתמש %s שיתף אתך קובץ"
#: ajax/share.php:87 #: ajax/share.php:99
#, php-format #, php-format
msgid "User %s shared a folder with you" msgid "User %s shared a folder with you"
msgstr "המשתמש %s שיתף אתך תיקייה" msgstr "המשתמש %s שיתף אתך תיקייה"
#: ajax/share.php:89 #: ajax/share.php:101
#, php-format #, php-format
msgid "" msgid ""
"User %s shared the file \"%s\" with you. It is available for download here: " "User %s shared the file \"%s\" with you. It is available for download here: "
"%s" "%s"
msgstr "המשתמש %s שיתף אתך את הקובץ „%s“. ניתן להוריד את הקובץ מכאן: %s" msgstr "המשתמש %s שיתף אתך את הקובץ „%s“. ניתן להוריד את הקובץ מכאן: %s"
#: ajax/share.php:91 #: ajax/share.php:104
#, php-format #, php-format
msgid "" msgid ""
"User %s shared the folder \"%s\" with you. It is available for download " "User %s shared the folder \"%s\" with you. It is available for download "
@ -57,7 +57,7 @@ msgstr "אין קטגוריה להוספה?"
#: ajax/vcategories/add.php:37 #: ajax/vcategories/add.php:37
#, php-format #, php-format
msgid "This category already exists: %s" msgid "This category already exists: %s"
msgstr "" msgstr "הקטגוריה הבאה כבר קיימת: %s"
#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 #: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27
#: ajax/vcategories/favorites.php:24 #: ajax/vcategories/favorites.php:24
@ -85,79 +85,79 @@ msgstr "לא נבחרו קטגוריות למחיקה"
msgid "Error removing %s from favorites." msgid "Error removing %s from favorites."
msgstr "שגיאה בהסרת %s מהמועדפים." msgstr "שגיאה בהסרת %s מהמועדפים."
#: js/config.php:32 #: js/config.php:34
msgid "Sunday" msgid "Sunday"
msgstr "יום ראשון" msgstr "יום ראשון"
#: js/config.php:32 #: js/config.php:35
msgid "Monday" msgid "Monday"
msgstr "יום שני" msgstr "יום שני"
#: js/config.php:32 #: js/config.php:36
msgid "Tuesday" msgid "Tuesday"
msgstr "יום שלישי" msgstr "יום שלישי"
#: js/config.php:32 #: js/config.php:37
msgid "Wednesday" msgid "Wednesday"
msgstr "יום רביעי" msgstr "יום רביעי"
#: js/config.php:32 #: js/config.php:38
msgid "Thursday" msgid "Thursday"
msgstr "יום חמישי" msgstr "יום חמישי"
#: js/config.php:32 #: js/config.php:39
msgid "Friday" msgid "Friday"
msgstr "יום שישי" msgstr "יום שישי"
#: js/config.php:32 #: js/config.php:40
msgid "Saturday" msgid "Saturday"
msgstr "שבת" msgstr "שבת"
#: js/config.php:33 #: js/config.php:45
msgid "January" msgid "January"
msgstr "ינואר" msgstr "ינואר"
#: js/config.php:33 #: js/config.php:46
msgid "February" msgid "February"
msgstr "פברואר" msgstr "פברואר"
#: js/config.php:33 #: js/config.php:47
msgid "March" msgid "March"
msgstr "מרץ" msgstr "מרץ"
#: js/config.php:33 #: js/config.php:48
msgid "April" msgid "April"
msgstr "אפריל" msgstr "אפריל"
#: js/config.php:33 #: js/config.php:49
msgid "May" msgid "May"
msgstr "מאי" msgstr "מאי"
#: js/config.php:33 #: js/config.php:50
msgid "June" msgid "June"
msgstr "יוני" msgstr "יוני"
#: js/config.php:33 #: js/config.php:51
msgid "July" msgid "July"
msgstr "יולי" msgstr "יולי"
#: js/config.php:33 #: js/config.php:52
msgid "August" msgid "August"
msgstr "אוגוסט" msgstr "אוגוסט"
#: js/config.php:33 #: js/config.php:53
msgid "September" msgid "September"
msgstr "ספטמבר" msgstr "ספטמבר"
#: js/config.php:33 #: js/config.php:54
msgid "October" msgid "October"
msgstr "אוקטובר" msgstr "אוקטובר"
#: js/config.php:33 #: js/config.php:55
msgid "November" msgid "November"
msgstr "נובמבר" msgstr "נובמבר"
#: js/config.php:33 #: js/config.php:56
msgid "December" msgid "December"
msgstr "דצמבר" msgstr "דצמבר"
@ -258,7 +258,7 @@ msgstr "הקובץ הנדרש {file} אינו מותקן!"
#: js/share.js:29 js/share.js:43 js/share.js:90 #: js/share.js:29 js/share.js:43 js/share.js:90
msgid "Shared" msgid "Shared"
msgstr "" msgstr "שותף"
#: js/share.js:93 #: js/share.js:93
msgid "Share" msgid "Share"
@ -296,7 +296,7 @@ msgstr "שיתוף עם קישור"
msgid "Password protect" msgid "Password protect"
msgstr "הגנה בססמה" msgstr "הגנה בססמה"
#: js/share.js:185 templates/installation.php:44 templates/login.php:35 #: js/share.js:185 templates/installation.php:46 templates/login.php:35
msgid "Password" msgid "Password"
msgstr "ססמה" msgstr "ססמה"
@ -385,11 +385,11 @@ msgid ""
"The update was unsuccessful. Please report this issue to the <a " "The update was unsuccessful. Please report this issue to the <a "
"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " "href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud "
"community</a>." "community</a>."
msgstr "" msgstr "תהליך העדכון לא הושלם בהצלחה. נא דווח את הבעיה ב<a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">קהילת ownCloud</a>."
#: js/update.js:18 #: js/update.js:18
msgid "The update was successful. Redirecting you to ownCloud now." msgid "The update was successful. Redirecting you to ownCloud now."
msgstr "" msgstr "תהליך העדכון הסתיים בהצלחה. עכשיו מנתב אותך אל ownCloud."
#: lostpassword/controller.php:48 #: lostpassword/controller.php:48
msgid "ownCloud password reset" msgid "ownCloud password reset"
@ -411,7 +411,7 @@ msgstr "איפוס שליחת דוא״ל."
msgid "Request failed!" msgid "Request failed!"
msgstr "הבקשה נכשלה!" msgstr "הבקשה נכשלה!"
#: lostpassword/templates/lostpassword.php:11 templates/installation.php:39 #: lostpassword/templates/lostpassword.php:11 templates/installation.php:40
#: templates/login.php:28 #: templates/login.php:28
msgid "Username" msgid "Username"
msgstr "שם משתמש" msgstr "שם משתמש"
@ -492,65 +492,65 @@ msgstr "ללא מחולל מספרים אקראיים מאובטח תוקף יכ
msgid "" msgid ""
"Your data directory and files are probably accessible from the internet " "Your data directory and files are probably accessible from the internet "
"because the .htaccess file does not work." "because the .htaccess file does not work."
msgstr "" msgstr "תיקיית וקבצי המידע שלך כנראה נגישים מהאינטרנט מכיוון שקובץ ה.htaccess לא עובד."
#: templates/installation.php:32 #: templates/installation.php:32
msgid "" msgid ""
"For information how to properly configure your server, please see the <a " "For information how to properly configure your server, please see the <a "
"href=\"http://doc.owncloud.org/server/5.0/admin_manual/installation.html\" " "href=\"http://doc.owncloud.org/server/5.0/admin_manual/installation.html\" "
"target=\"_blank\">documentation</a>." "target=\"_blank\">documentation</a>."
msgstr "" msgstr "לקבלת מידע להגדרה נכונה של השרת שלך, ראה את ה<a href=\"http://doc.owncloud.org/server/5.0/admin_manual/installation.html\" target=\"_blank\">תיעוד</a>."
#: templates/installation.php:36 #: templates/installation.php:36
msgid "Create an <strong>admin account</strong>" msgid "Create an <strong>admin account</strong>"
msgstr "יצירת <strong>חשבון מנהל</strong>" msgstr "יצירת <strong>חשבון מנהל</strong>"
#: templates/installation.php:52 #: templates/installation.php:54
msgid "Advanced" msgid "Advanced"
msgstr "מתקדם" msgstr "מתקדם"
#: templates/installation.php:54 #: templates/installation.php:56
msgid "Data folder" msgid "Data folder"
msgstr "תיקיית נתונים" msgstr "תיקיית נתונים"
#: templates/installation.php:61 #: templates/installation.php:65
msgid "Configure the database" msgid "Configure the database"
msgstr "הגדרת מסד הנתונים" msgstr "הגדרת מסד הנתונים"
#: templates/installation.php:66 templates/installation.php:77 #: templates/installation.php:70 templates/installation.php:82
#: templates/installation.php:87 templates/installation.php:97 #: templates/installation.php:93 templates/installation.php:104
msgid "will be used" msgid "will be used"
msgstr "ינוצלו" msgstr "ינוצלו"
#: templates/installation.php:109 #: templates/installation.php:117
msgid "Database user" msgid "Database user"
msgstr "שם משתמש במסד הנתונים" msgstr "שם משתמש במסד הנתונים"
#: templates/installation.php:113 #: templates/installation.php:122
msgid "Database password" msgid "Database password"
msgstr "ססמת מסד הנתונים" msgstr "ססמת מסד הנתונים"
#: templates/installation.php:117 #: templates/installation.php:127
msgid "Database name" msgid "Database name"
msgstr "שם מסד הנתונים" msgstr "שם מסד הנתונים"
#: templates/installation.php:125 #: templates/installation.php:137
msgid "Database tablespace" msgid "Database tablespace"
msgstr "מרחב הכתובות של מסד הנתונים" msgstr "מרחב הכתובות של מסד הנתונים"
#: templates/installation.php:131 #: templates/installation.php:144
msgid "Database host" msgid "Database host"
msgstr "שרת בסיס נתונים" msgstr "שרת בסיס נתונים"
#: templates/installation.php:136 #: templates/installation.php:150
msgid "Finish setup" msgid "Finish setup"
msgstr "סיום התקנה" msgstr "סיום התקנה"
#: templates/layout.guest.php:33 #: templates/layout.guest.php:35
msgid "web services under your control" msgid "web services under your control"
msgstr "שירותי רשת בשליטתך" msgstr "שירותי רשת בשליטתך"
#: templates/layout.user.php:48 #: templates/layout.user.php:53
msgid "Log out" msgid "Log out"
msgstr "התנתקות" msgstr "התנתקות"
@ -582,7 +582,7 @@ msgstr "כניסה"
#: templates/login.php:49 #: templates/login.php:49
msgid "Alternative Logins" msgid "Alternative Logins"
msgstr "" msgstr "כניסות אלטרנטיביות"
#: templates/part.pagenavi.php:3 #: templates/part.pagenavi.php:3
msgid "prev" msgid "prev"

View File

@ -11,8 +11,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud\n" "Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-02-22 00:06+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: 2013-02-20 23:30+0000\n" "PO-Revision-Date: 2013-02-24 12:30+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -54,27 +54,27 @@ msgid ""
"the HTML form" "the HTML form"
msgstr "הקובץ שהועלה חרג מההנחיה MAX_FILE_SIZE שצוינה בטופס ה־HTML" msgstr "הקובץ שהועלה חרג מההנחיה MAX_FILE_SIZE שצוינה בטופס ה־HTML"
#: ajax/upload.php:31 #: ajax/upload.php:30
msgid "The uploaded file was only partially uploaded" msgid "The uploaded file was only partially uploaded"
msgstr "הקובץ שהועלה הועלה בצורה חלקית" msgstr "הקובץ שהועלה הועלה בצורה חלקית"
#: ajax/upload.php:32 #: ajax/upload.php:31
msgid "No file was uploaded" msgid "No file was uploaded"
msgstr "לא הועלו קבצים" msgstr "לא הועלו קבצים"
#: ajax/upload.php:33 #: ajax/upload.php:32
msgid "Missing a temporary folder" msgid "Missing a temporary folder"
msgstr "תיקייה זמנית חסרה" msgstr "תיקייה זמנית חסרה"
#: ajax/upload.php:34 #: ajax/upload.php:33
msgid "Failed to write to disk" msgid "Failed to write to disk"
msgstr "הכתיבה לכונן נכשלה" msgstr "הכתיבה לכונן נכשלה"
#: ajax/upload.php:52 #: ajax/upload.php:51
msgid "Not enough storage available" msgid "Not enough storage available"
msgstr "" msgstr ""
#: ajax/upload.php:83 #: ajax/upload.php:82
msgid "Invalid directory." msgid "Invalid directory."
msgstr "" msgstr ""
@ -84,7 +84,7 @@ msgstr "קבצים"
#: js/fileactions.js:125 #: js/fileactions.js:125
msgid "Delete permanently" msgid "Delete permanently"
msgstr "" msgstr "מחק לצמיתות"
#: js/fileactions.js:127 templates/index.php:91 templates/index.php:92 #: js/fileactions.js:127 templates/index.php:91 templates/index.php:92
msgid "Delete" msgid "Delete"

View File

@ -3,13 +3,14 @@
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# #
# Translators: # Translators:
# Gilad Naaman <gilad.doom@gmail.com>, 2013.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud\n" "Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-02-22 00:06+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: 2013-02-20 23:32+0000\n" "PO-Revision-Date: 2013-02-24 12:30+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Last-Translator: Gilad Naaman <gilad.doom@gmail.com>\n"
"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -20,24 +21,24 @@ msgstr ""
#: ajax/delete.php:40 #: ajax/delete.php:40
#, php-format #, php-format
msgid "Couldn't delete %s permanently" msgid "Couldn't delete %s permanently"
msgstr "" msgstr "בלתי אפשרי למחוק את %s לצמיתות"
#: ajax/undelete.php:41 #: ajax/undelete.php:41
#, php-format #, php-format
msgid "Couldn't restore %s" msgid "Couldn't restore %s"
msgstr "" msgstr "בלתי אפשרי לשחזר את %s"
#: js/trash.js:7 js/trash.js:96 #: js/trash.js:7 js/trash.js:96
msgid "perform restore operation" msgid "perform restore operation"
msgstr "" msgstr "בצע פעולת שחזור"
#: js/trash.js:34 #: js/trash.js:34
msgid "delete file permanently" msgid "delete file permanently"
msgstr "" msgstr "מחק קובץ לצמיתות"
#: js/trash.js:121 #: js/trash.js:121
msgid "Delete permanently" msgid "Delete permanently"
msgstr "" msgstr "מחק לצמיתות"
#: js/trash.js:151 templates/index.php:17 #: js/trash.js:151 templates/index.php:17
msgid "Name" msgid "Name"
@ -45,7 +46,7 @@ msgstr "שם"
#: js/trash.js:152 templates/index.php:27 #: js/trash.js:152 templates/index.php:27
msgid "Deleted" msgid "Deleted"
msgstr "" msgstr "נמחק"
#: js/trash.js:161 #: js/trash.js:161
msgid "1 folder" msgid "1 folder"
@ -65,11 +66,11 @@ msgstr "{count} קבצים"
#: templates/index.php:9 #: templates/index.php:9
msgid "Nothing in here. Your trash bin is empty!" msgid "Nothing in here. Your trash bin is empty!"
msgstr "" msgstr "שום דבר כאן. סל המחזור שלך ריק!"
#: templates/index.php:20 templates/index.php:22 #: templates/index.php:20 templates/index.php:22
msgid "Restore" msgid "Restore"
msgstr "" msgstr "שחזר"
#: templates/index.php:30 templates/index.php:31 #: templates/index.php:30 templates/index.php:31
msgid "Delete" msgid "Delete"

View File

@ -11,8 +11,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud\n" "Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-02-22 00:06+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: 2013-02-20 23:30+0000\n" "PO-Revision-Date: 2013-02-24 12:20+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -25,8 +25,8 @@ msgstr ""
msgid "Unable to load list from App Store" msgid "Unable to load list from App Store"
msgstr "לא ניתן לטעון רשימה מה־App Store" msgstr "לא ניתן לטעון רשימה מה־App Store"
#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:17
#: ajax/togglegroups.php:18 #: ajax/togglegroups.php:20
msgid "Authentication error" msgid "Authentication error"
msgstr "שגיאת הזדהות" msgstr "שגיאת הזדהות"
@ -74,12 +74,12 @@ msgstr "בקשה לא חוקית"
msgid "Admins can't remove themself from the admin group" msgid "Admins can't remove themself from the admin group"
msgstr "מנהלים לא יכולים להסיר את עצמם מקבוצת המנהלים" msgstr "מנהלים לא יכולים להסיר את עצמם מקבוצת המנהלים"
#: ajax/togglegroups.php:28 #: ajax/togglegroups.php:30
#, php-format #, php-format
msgid "Unable to add user to group %s" msgid "Unable to add user to group %s"
msgstr "לא ניתן להוסיף משתמש לקבוצה %s" msgstr "לא ניתן להוסיף משתמש לקבוצה %s"
#: ajax/togglegroups.php:34 #: ajax/togglegroups.php:36
#, php-format #, php-format
msgid "Unable to remove user from group %s" msgid "Unable to remove user from group %s"
msgstr "לא ניתן להסיר משתמש מהקבוצה %s" msgstr "לא ניתן להסיר משתמש מהקבוצה %s"
@ -320,11 +320,11 @@ msgstr ""
msgid "More" msgid "More"
msgstr "יותר" msgstr "יותר"
#: templates/admin.php:227 templates/personal.php:98 #: templates/admin.php:227 templates/personal.php:102
msgid "Version" msgid "Version"
msgstr "גרסא" msgstr "גרסא"
#: templates/admin.php:230 templates/personal.php:100 #: templates/admin.php:230 templates/personal.php:105
msgid "" msgid ""
"Developed by the <a href=\"http://ownCloud.org/contact\" " "Developed by the <a href=\"http://ownCloud.org/contact\" "
"target=\"_blank\">ownCloud community</a>, the <a " "target=\"_blank\">ownCloud community</a>, the <a "
@ -334,51 +334,51 @@ msgid ""
"License\">AGPL</abbr></a>." "License\">AGPL</abbr></a>."
msgstr "פותח על די <a href=\"http://ownCloud.org/contact\" target=\"_blank\">קהילתownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">קוד המקור</a> מוגן ברישיון <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." msgstr "פותח על די <a href=\"http://ownCloud.org/contact\" target=\"_blank\">קהילתownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">קוד המקור</a> מוגן ברישיון <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>."
#: templates/apps.php:10 #: templates/apps.php:11
msgid "Add your App" msgid "Add your App"
msgstr "הוספת היישום שלך" msgstr "הוספת היישום שלך"
#: templates/apps.php:11 #: templates/apps.php:12
msgid "More Apps" msgid "More Apps"
msgstr "יישומים נוספים" msgstr "יישומים נוספים"
#: templates/apps.php:24 #: templates/apps.php:28
msgid "Select an App" msgid "Select an App"
msgstr "בחירת יישום" msgstr "בחירת יישום"
#: templates/apps.php:28 #: templates/apps.php:34
msgid "See application page at apps.owncloud.com" msgid "See application page at apps.owncloud.com"
msgstr "צפה בעמוד הישום ב apps.owncloud.com" msgstr "צפה בעמוד הישום ב apps.owncloud.com"
#: templates/apps.php:29 #: templates/apps.php:36
msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>"
msgstr "ברישיון <span class=\"licence\"></span>לטובת <span class=\"author\"></span>" msgstr "ברישיון <span class=\"licence\"></span>לטובת <span class=\"author\"></span>"
#: templates/apps.php:31 #: templates/apps.php:38
msgid "Update" msgid "Update"
msgstr "עדכון" msgstr "עדכון"
#: templates/help.php:3 #: templates/help.php:4
msgid "User Documentation" msgid "User Documentation"
msgstr "תיעוד משתמש" msgstr "תיעוד משתמש"
#: templates/help.php:4 #: templates/help.php:6
msgid "Administrator Documentation" msgid "Administrator Documentation"
msgstr "תיעוד מנהלים" msgstr "תיעוד מנהלים"
#: templates/help.php:6 #: templates/help.php:9
msgid "Online Documentation" msgid "Online Documentation"
msgstr "תיעוד מקוון" msgstr "תיעוד מקוון"
#: templates/help.php:7 #: templates/help.php:11
msgid "Forum" msgid "Forum"
msgstr "פורום" msgstr "פורום"
#: templates/help.php:9 #: templates/help.php:14
msgid "Bugtracker" msgid "Bugtracker"
msgstr "" msgstr ""
#: templates/help.php:11 #: templates/help.php:17
msgid "Commercial Support" msgid "Commercial Support"
msgstr "תמיכה בתשלום" msgstr "תמיכה בתשלום"
@ -387,79 +387,79 @@ msgstr "תמיכה בתשלום"
msgid "You have used <strong>%s</strong> of the available <strong>%s</strong>" msgid "You have used <strong>%s</strong> of the available <strong>%s</strong>"
msgstr "השתמשת ב־<strong>%s</strong> מתוך <strong>%s</strong> הזמינים לך" msgstr "השתמשת ב־<strong>%s</strong> מתוך <strong>%s</strong> הזמינים לך"
#: templates/personal.php:14 #: templates/personal.php:15
msgid "Get the apps to sync your files" msgid "Get the apps to sync your files"
msgstr "" msgstr "השג את האפליקציות על מנת לסנכרן את הקבצים שלך"
#: templates/personal.php:25 #: templates/personal.php:26
msgid "Show First Run Wizard again" msgid "Show First Run Wizard again"
msgstr "" msgstr ""
#: templates/personal.php:36 templates/users.php:23 templates/users.php:79 #: templates/personal.php:37 templates/users.php:23 templates/users.php:79
msgid "Password" msgid "Password"
msgstr "ססמה" msgstr "ססמה"
#: templates/personal.php:37 #: templates/personal.php:38
msgid "Your password was changed" msgid "Your password was changed"
msgstr "הססמה שלך הוחלפה" msgstr "הססמה שלך הוחלפה"
#: templates/personal.php:38 #: templates/personal.php:39
msgid "Unable to change your password" msgid "Unable to change your password"
msgstr "לא ניתן לשנות את הססמה שלך" msgstr "לא ניתן לשנות את הססמה שלך"
#: templates/personal.php:39 #: templates/personal.php:40
msgid "Current password" msgid "Current password"
msgstr "ססמה נוכחית" msgstr "ססמה נוכחית"
#: templates/personal.php:40 #: templates/personal.php:42
msgid "New password" msgid "New password"
msgstr "ססמה חדשה" msgstr "ססמה חדשה"
#: templates/personal.php:42 #: templates/personal.php:44
msgid "Change password" msgid "Change password"
msgstr "שינוי ססמה" msgstr "שינוי ססמה"
#: templates/personal.php:54 templates/users.php:78 #: templates/personal.php:56 templates/users.php:78
msgid "Display Name" msgid "Display Name"
msgstr "" msgstr ""
#: templates/personal.php:55 #: templates/personal.php:57
msgid "Your display name was changed" msgid "Your display name was changed"
msgstr "" msgstr ""
#: templates/personal.php:56 #: templates/personal.php:58
msgid "Unable to change your display name" msgid "Unable to change your display name"
msgstr "" msgstr ""
#: templates/personal.php:59 #: templates/personal.php:61
msgid "Change display name" msgid "Change display name"
msgstr "" msgstr ""
#: templates/personal.php:68 #: templates/personal.php:70
msgid "Email" msgid "Email"
msgstr "דוא״ל" msgstr "דוא״ל"
#: templates/personal.php:69 #: templates/personal.php:72
msgid "Your email address" msgid "Your email address"
msgstr "כתובת הדוא״ל שלך" msgstr "כתובת הדוא״ל שלך"
#: templates/personal.php:70 #: templates/personal.php:73
msgid "Fill in an email address to enable password recovery" msgid "Fill in an email address to enable password recovery"
msgstr "נא למלא את כתובת הדוא״ל שלך כדי לאפשר שחזור ססמה" msgstr "נא למלא את כתובת הדוא״ל שלך כדי לאפשר שחזור ססמה"
#: templates/personal.php:76 templates/personal.php:77 #: templates/personal.php:79 templates/personal.php:80
msgid "Language" msgid "Language"
msgstr "פה" msgstr "פה"
#: templates/personal.php:82 #: templates/personal.php:86
msgid "Help translate" msgid "Help translate"
msgstr "עזרה בתרגום" msgstr "עזרה בתרגום"
#: templates/personal.php:87 #: templates/personal.php:91
msgid "WebDAV" msgid "WebDAV"
msgstr "" msgstr ""
#: templates/personal.php:89 #: templates/personal.php:93
msgid "Use this address to connect to your ownCloud in your file manager" msgid "Use this address to connect to your ownCloud in your file manager"
msgstr "השתמש בכתובת זאת על מנת להתחבר אל ownCloud דרך סייר קבצים." msgstr "השתמש בכתובת זאת על מנת להתחבר אל ownCloud דרך סייר קבצים."

View File

@ -8,8 +8,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud\n" "Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-02-08 00:10+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: 2013-02-07 23:11+0000\n" "PO-Revision-Date: 2013-02-24 12:30+0000\n"
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
"Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -22,17 +22,17 @@ msgstr ""
msgid "Failed to delete the server configuration" msgid "Failed to delete the server configuration"
msgstr "" msgstr ""
#: ajax/testConfiguration.php:35 #: ajax/testConfiguration.php:36
msgid "The configuration is valid and the connection could be established!" msgid "The configuration is valid and the connection could be established!"
msgstr "" msgstr ""
#: ajax/testConfiguration.php:37 #: ajax/testConfiguration.php:39
msgid "" msgid ""
"The configuration is valid, but the Bind failed. Please check the server " "The configuration is valid, but the Bind failed. Please check the server "
"settings and credentials." "settings and credentials."
msgstr "" msgstr ""
#: ajax/testConfiguration.php:40 #: ajax/testConfiguration.php:43
msgid "" msgid ""
"The configuration is invalid. Please look in the ownCloud log for further " "The configuration is invalid. Please look in the ownCloud log for further "
"details." "details."
@ -87,224 +87,224 @@ msgstr ""
msgid "Server configuration" msgid "Server configuration"
msgstr "" msgstr ""
#: templates/settings.php:17 #: templates/settings.php:18
msgid "Add Server Configuration" msgid "Add Server Configuration"
msgstr "" msgstr ""
#: templates/settings.php:21 #: templates/settings.php:23
msgid "Host" msgid "Host"
msgstr "מארח" msgstr "מארח"
#: templates/settings.php:21 #: templates/settings.php:25
msgid "" msgid ""
"You can omit the protocol, except you require SSL. Then start with ldaps://" "You can omit the protocol, except you require SSL. Then start with ldaps://"
msgstr "" msgstr ""
#: templates/settings.php:22 #: templates/settings.php:26
msgid "Base DN" msgid "Base DN"
msgstr "" msgstr ""
#: templates/settings.php:22 #: templates/settings.php:27
msgid "One Base DN per line" msgid "One Base DN per line"
msgstr "" msgstr ""
#: templates/settings.php:22 #: templates/settings.php:28
msgid "You can specify Base DN for users and groups in the Advanced tab" msgid "You can specify Base DN for users and groups in the Advanced tab"
msgstr "" msgstr ""
#: templates/settings.php:23 #: templates/settings.php:30
msgid "User DN" msgid "User DN"
msgstr "DN משתמש" msgstr "DN משתמש"
#: templates/settings.php:23 #: templates/settings.php:32
msgid "" msgid ""
"The DN of the client user with which the bind shall be done, e.g. " "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 " "uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password "
"empty." "empty."
msgstr "" msgstr ""
#: templates/settings.php:24 #: templates/settings.php:33
msgid "Password" msgid "Password"
msgstr "סיסמא" msgstr "סיסמא"
#: templates/settings.php:24 #: templates/settings.php:36
msgid "For anonymous access, leave DN and Password empty." msgid "For anonymous access, leave DN and Password empty."
msgstr "לגישה אנונימית, השאר את הDM והסיסמא ריקים." msgstr "לגישה אנונימית, השאר את הDM והסיסמא ריקים."
#: templates/settings.php:25 #: templates/settings.php:37
msgid "User Login Filter" msgid "User Login Filter"
msgstr "סנן כניסת משתמש" msgstr "סנן כניסת משתמש"
#: templates/settings.php:25 #: templates/settings.php:40
#, php-format #, php-format
msgid "" msgid ""
"Defines the filter to apply, when login is attempted. %%uid replaces the " "Defines the filter to apply, when login is attempted. %%uid replaces the "
"username in the login action." "username in the login action."
msgstr "" msgstr ""
#: templates/settings.php:25 #: templates/settings.php:41
#, php-format #, php-format
msgid "use %%uid placeholder, e.g. \"uid=%%uid\"" msgid "use %%uid placeholder, e.g. \"uid=%%uid\""
msgstr "" msgstr ""
#: templates/settings.php:26 #: templates/settings.php:42
msgid "User List Filter" msgid "User List Filter"
msgstr "סנן רשימת משתמשים" msgstr "סנן רשימת משתמשים"
#: templates/settings.php:26 #: templates/settings.php:45
msgid "Defines the filter to apply, when retrieving users." msgid "Defines the filter to apply, when retrieving users."
msgstr "" msgstr ""
#: templates/settings.php:26 #: templates/settings.php:46
msgid "without any placeholder, e.g. \"objectClass=person\"." msgid "without any placeholder, e.g. \"objectClass=person\"."
msgstr "" msgstr ""
#: templates/settings.php:27 #: templates/settings.php:47
msgid "Group Filter" msgid "Group Filter"
msgstr "סנן קבוצה" msgstr "סנן קבוצה"
#: templates/settings.php:27 #: templates/settings.php:50
msgid "Defines the filter to apply, when retrieving groups." msgid "Defines the filter to apply, when retrieving groups."
msgstr "" msgstr ""
#: templates/settings.php:27 #: templates/settings.php:51
msgid "without any placeholder, e.g. \"objectClass=posixGroup\"." msgid "without any placeholder, e.g. \"objectClass=posixGroup\"."
msgstr "" msgstr ""
#: templates/settings.php:31 #: templates/settings.php:55
msgid "Connection Settings" msgid "Connection Settings"
msgstr "" msgstr ""
#: templates/settings.php:33 #: templates/settings.php:57
msgid "Configuration Active" msgid "Configuration Active"
msgstr "" msgstr ""
#: templates/settings.php:33 #: templates/settings.php:57
msgid "When unchecked, this configuration will be skipped." msgid "When unchecked, this configuration will be skipped."
msgstr "" msgstr ""
#: templates/settings.php:34 #: templates/settings.php:58
msgid "Port" msgid "Port"
msgstr "" msgstr "פורט"
#: templates/settings.php:35 #: templates/settings.php:59
msgid "Backup (Replica) Host" msgid "Backup (Replica) Host"
msgstr "" msgstr ""
#: templates/settings.php:35 #: templates/settings.php:59
msgid "" msgid ""
"Give an optional backup host. It must be a replica of the main LDAP/AD " "Give an optional backup host. It must be a replica of the main LDAP/AD "
"server." "server."
msgstr "" msgstr ""
#: templates/settings.php:36 #: templates/settings.php:60
msgid "Backup (Replica) Port" msgid "Backup (Replica) Port"
msgstr "" msgstr ""
#: templates/settings.php:37 #: templates/settings.php:61
msgid "Disable Main Server" msgid "Disable Main Server"
msgstr "" msgstr ""
#: templates/settings.php:37 #: templates/settings.php:61
msgid "When switched on, ownCloud will only connect to the replica server." msgid "When switched on, ownCloud will only connect to the replica server."
msgstr "" msgstr ""
#: templates/settings.php:38 #: templates/settings.php:62
msgid "Use TLS" msgid "Use TLS"
msgstr "" msgstr ""
#: templates/settings.php:38 #: templates/settings.php:62
msgid "Do not use it additionally for LDAPS connections, it will fail." msgid "Do not use it additionally for LDAPS connections, it will fail."
msgstr "" msgstr ""
#: templates/settings.php:39 #: templates/settings.php:63
msgid "Case insensitve LDAP server (Windows)" msgid "Case insensitve LDAP server (Windows)"
msgstr "" msgstr ""
#: templates/settings.php:40 #: templates/settings.php:64
msgid "Turn off SSL certificate validation." msgid "Turn off SSL certificate validation."
msgstr "" msgstr ""
#: templates/settings.php:40 #: templates/settings.php:64
msgid "" msgid ""
"If connection only works with this option, import the LDAP server's SSL " "If connection only works with this option, import the LDAP server's SSL "
"certificate in your ownCloud server." "certificate in your ownCloud server."
msgstr "" msgstr ""
#: templates/settings.php:40 #: templates/settings.php:64
msgid "Not recommended, use for testing only." msgid "Not recommended, use for testing only."
msgstr "" msgstr ""
#: templates/settings.php:41 #: templates/settings.php:65
msgid "in seconds. A change empties the cache." msgid "in seconds. A change empties the cache."
msgstr "בשניות. שינוי מרוקן את המטמון." msgstr "בשניות. שינוי מרוקן את המטמון."
#: templates/settings.php:43 #: templates/settings.php:67
msgid "Directory Settings" msgid "Directory Settings"
msgstr "" msgstr ""
#: templates/settings.php:45 #: templates/settings.php:69
msgid "User Display Name Field" msgid "User Display Name Field"
msgstr "" msgstr ""
#: templates/settings.php:45 #: templates/settings.php:69
msgid "The LDAP attribute to use to generate the user`s ownCloud name." msgid "The LDAP attribute to use to generate the user`s ownCloud name."
msgstr "" msgstr ""
#: templates/settings.php:46 #: templates/settings.php:70
msgid "Base User Tree" msgid "Base User Tree"
msgstr "" msgstr ""
#: templates/settings.php:46 #: templates/settings.php:70
msgid "One User Base DN per line" msgid "One User Base DN per line"
msgstr "" msgstr ""
#: templates/settings.php:47 #: templates/settings.php:71
msgid "User Search Attributes" msgid "User Search Attributes"
msgstr "" msgstr ""
#: templates/settings.php:47 templates/settings.php:50 #: templates/settings.php:71 templates/settings.php:74
msgid "Optional; one attribute per line" msgid "Optional; one attribute per line"
msgstr "" msgstr ""
#: templates/settings.php:48 #: templates/settings.php:72
msgid "Group Display Name Field" msgid "Group Display Name Field"
msgstr "" msgstr ""
#: templates/settings.php:48 #: templates/settings.php:72
msgid "The LDAP attribute to use to generate the groups`s ownCloud name." msgid "The LDAP attribute to use to generate the groups`s ownCloud name."
msgstr "" msgstr ""
#: templates/settings.php:49 #: templates/settings.php:73
msgid "Base Group Tree" msgid "Base Group Tree"
msgstr "" msgstr ""
#: templates/settings.php:49 #: templates/settings.php:73
msgid "One Group Base DN per line" msgid "One Group Base DN per line"
msgstr "" msgstr ""
#: templates/settings.php:50 #: templates/settings.php:74
msgid "Group Search Attributes" msgid "Group Search Attributes"
msgstr "" msgstr ""
#: templates/settings.php:51 #: templates/settings.php:75
msgid "Group-Member association" msgid "Group-Member association"
msgstr "" msgstr ""
#: templates/settings.php:53 #: templates/settings.php:77
msgid "Special Attributes" msgid "Special Attributes"
msgstr "" msgstr ""
#: templates/settings.php:56 #: templates/settings.php:80
msgid "in bytes" msgid "in bytes"
msgstr "בבתים" msgstr "בבתים"
#: templates/settings.php:58 #: templates/settings.php:82
msgid "" msgid ""
"Leave empty for user name (default). Otherwise, specify an LDAP/AD " "Leave empty for user name (default). Otherwise, specify an LDAP/AD "
"attribute." "attribute."
msgstr "" msgstr ""
#: templates/settings.php:62 #: templates/settings.php:86
msgid "Help" msgid "Help"
msgstr "עזרה" msgstr "עזרה"

View File

@ -8,8 +8,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud\n" "Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-02-22 00:06+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: 2013-02-21 11:20+0000\n" "PO-Revision-Date: 2013-02-24 11:20+0000\n"
"Last-Translator: Pyae Sone <gipsyhnh@gmail.com>\n" "Last-Translator: Pyae Sone <gipsyhnh@gmail.com>\n"
"Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -18,24 +18,24 @@ msgstr ""
"Language: my_MM\n" "Language: my_MM\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
#: ajax/share.php:85 #: ajax/share.php:97
#, php-format #, php-format
msgid "User %s shared a file with you" msgid "User %s shared a file with you"
msgstr "" msgstr ""
#: ajax/share.php:87 #: ajax/share.php:99
#, php-format #, php-format
msgid "User %s shared a folder with you" msgid "User %s shared a folder with you"
msgstr "" msgstr ""
#: ajax/share.php:89 #: ajax/share.php:101
#, php-format #, php-format
msgid "" msgid ""
"User %s shared the file \"%s\" with you. It is available for download here: " "User %s shared the file \"%s\" with you. It is available for download here: "
"%s" "%s"
msgstr "" msgstr ""
#: ajax/share.php:91 #: ajax/share.php:104
#, php-format #, php-format
msgid "" msgid ""
"User %s shared the folder \"%s\" with you. It is available for download " "User %s shared the folder \"%s\" with you. It is available for download "
@ -48,7 +48,7 @@ msgstr ""
#: ajax/vcategories/add.php:30 #: ajax/vcategories/add.php:30
msgid "No category to add?" msgid "No category to add?"
msgstr "" msgstr "ထည့်ရန်ခေါင်းစဉ်မရှိဘူးလား"
#: ajax/vcategories/add.php:37 #: ajax/vcategories/add.php:37
#, php-format #, php-format
@ -74,88 +74,88 @@ msgstr ""
#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 #: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136
msgid "No categories selected for deletion." msgid "No categories selected for deletion."
msgstr "" msgstr "ဖျက်ရန်အတွက်ခေါင်းစဉ်မရွေးထားပါ"
#: ajax/vcategories/removeFromFavorites.php:35 #: ajax/vcategories/removeFromFavorites.php:35
#, php-format #, php-format
msgid "Error removing %s from favorites." msgid "Error removing %s from favorites."
msgstr "" msgstr ""
#: js/config.php:32 #: js/config.php:34
msgid "Sunday" msgid "Sunday"
msgstr "" msgstr ""
#: js/config.php:32 #: js/config.php:35
msgid "Monday" msgid "Monday"
msgstr "" msgstr ""
#: js/config.php:32 #: js/config.php:36
msgid "Tuesday" msgid "Tuesday"
msgstr "" msgstr ""
#: js/config.php:32 #: js/config.php:37
msgid "Wednesday" msgid "Wednesday"
msgstr "" msgstr ""
#: js/config.php:32 #: js/config.php:38
msgid "Thursday" msgid "Thursday"
msgstr "" msgstr ""
#: js/config.php:32 #: js/config.php:39
msgid "Friday" msgid "Friday"
msgstr "" msgstr ""
#: js/config.php:32 #: js/config.php:40
msgid "Saturday" msgid "Saturday"
msgstr "" msgstr ""
#: js/config.php:33 #: js/config.php:45
msgid "January" msgid "January"
msgstr "" msgstr "ဇန်နဝါရီ"
#: js/config.php:33 #: js/config.php:46
msgid "February" msgid "February"
msgstr "" msgstr "ဖေဖော်ဝါရီ"
#: js/config.php:33 #: js/config.php:47
msgid "March" msgid "March"
msgstr "" msgstr "မတ်"
#: js/config.php:33 #: js/config.php:48
msgid "April" msgid "April"
msgstr "" msgstr "ဧပြီ"
#: js/config.php:33 #: js/config.php:49
msgid "May" msgid "May"
msgstr "" msgstr "မေ"
#: js/config.php:33 #: js/config.php:50
msgid "June" msgid "June"
msgstr "" msgstr "ဇွန်"
#: js/config.php:33 #: js/config.php:51
msgid "July" msgid "July"
msgstr "" msgstr "ဇူလိုင်"
#: js/config.php:33 #: js/config.php:52
msgid "August" msgid "August"
msgstr "" msgstr "ဩဂုတ်"
#: js/config.php:33 #: js/config.php:53
msgid "September" msgid "September"
msgstr "" msgstr "စက်တင်ဘာ"
#: js/config.php:33 #: js/config.php:54
msgid "October" msgid "October"
msgstr "" msgstr "အောက်တိုဘာ"
#: js/config.php:33 #: js/config.php:55
msgid "November" msgid "November"
msgstr "" msgstr "နိုဝင်ဘာ"
#: js/config.php:33 #: js/config.php:56
msgid "December" msgid "December"
msgstr "" msgstr "ဒီဇင်ဘာ"
#: js/js.js:286 #: js/js.js:286
msgid "Settings" msgid "Settings"
@ -215,23 +215,23 @@ msgstr "နှစ် အရင်က"
#: js/oc-dialogs.js:126 #: js/oc-dialogs.js:126
msgid "Choose" msgid "Choose"
msgstr "" msgstr "ရွေးချယ်"
#: js/oc-dialogs.js:146 js/oc-dialogs.js:166 #: js/oc-dialogs.js:146 js/oc-dialogs.js:166
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr "ပယ်ဖျက်မည်"
#: js/oc-dialogs.js:162 #: js/oc-dialogs.js:162
msgid "No" msgid "No"
msgstr "" msgstr "မဟုတ်ဘူး"
#: js/oc-dialogs.js:163 #: js/oc-dialogs.js:163
msgid "Yes" msgid "Yes"
msgstr "" msgstr "ဟုတ်"
#: js/oc-dialogs.js:180 #: js/oc-dialogs.js:180
msgid "Ok" msgid "Ok"
msgstr "" msgstr "အိုကေ"
#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 #: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102
#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 #: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162
@ -292,9 +292,9 @@ msgstr ""
msgid "Password protect" msgid "Password protect"
msgstr "" msgstr ""
#: js/share.js:185 templates/installation.php:44 templates/login.php:35 #: js/share.js:185 templates/installation.php:46 templates/login.php:35
msgid "Password" msgid "Password"
msgstr "" msgstr "စကားဝှက်"
#: js/share.js:189 #: js/share.js:189
msgid "Email link to person" msgid "Email link to person"
@ -306,15 +306,15 @@ msgstr ""
#: js/share.js:194 #: js/share.js:194
msgid "Set expiration date" msgid "Set expiration date"
msgstr "" msgstr "သက်တမ်းကုန်ဆုံးမည့်ရက်သတ်မှတ်မည်"
#: js/share.js:195 #: js/share.js:195
msgid "Expiration date" msgid "Expiration date"
msgstr "" msgstr "သက်တမ်းကုန်ဆုံးမည့်ရက်"
#: js/share.js:227 #: js/share.js:227
msgid "Share via email:" msgid "Share via email:"
msgstr "" msgstr "အီးမေးလ်ဖြင့်ဝေမျှမည် -"
#: js/share.js:229 #: js/share.js:229
msgid "No people found" msgid "No people found"
@ -322,7 +322,7 @@ msgstr ""
#: js/share.js:256 #: js/share.js:256
msgid "Resharing is not allowed" msgid "Resharing is not allowed"
msgstr "" msgstr "ပြန်လည်ဝေမျှခြင်းခွင့်မပြုပါ"
#: js/share.js:292 #: js/share.js:292
msgid "Shared in {item} with {user}" msgid "Shared in {item} with {user}"
@ -334,7 +334,7 @@ msgstr ""
#: js/share.js:325 #: js/share.js:325
msgid "can edit" msgid "can edit"
msgstr "" msgstr "ပြင်ဆင်နိုင်"
#: js/share.js:327 #: js/share.js:327
msgid "access control" msgid "access control"
@ -342,7 +342,7 @@ msgstr ""
#: js/share.js:330 #: js/share.js:330
msgid "create" msgid "create"
msgstr "" msgstr "ဖန်တီးမည်"
#: js/share.js:333 #: js/share.js:333
msgid "update" msgid "update"
@ -350,15 +350,15 @@ msgstr ""
#: js/share.js:336 #: js/share.js:336
msgid "delete" msgid "delete"
msgstr "" msgstr "ဖျက်မည်"
#: js/share.js:339 #: js/share.js:339
msgid "share" msgid "share"
msgstr "" msgstr "ဝေမျှမည်"
#: js/share.js:373 js/share.js:569 #: js/share.js:373 js/share.js:569
msgid "Password protected" msgid "Password protected"
msgstr "" msgstr "စကားဝှက်ဖြင့်ကာကွယ်ထားသည်"
#: js/share.js:582 #: js/share.js:582
msgid "Error unsetting expiration date" msgid "Error unsetting expiration date"
@ -397,7 +397,7 @@ msgstr ""
#: lostpassword/templates/lostpassword.php:3 #: lostpassword/templates/lostpassword.php:3
msgid "You will receive a link to reset your password via Email." msgid "You will receive a link to reset your password via Email."
msgstr "" msgstr "အီးမေးလ်မှတစ်ဆင့် သင်၏စကားဝှက်ကို ပြန်ဖော်ရန်အတွက် Link တစ်ခုလက်ခံရရှိပါလိမ့်မယ်။"
#: lostpassword/templates/lostpassword.php:5 #: lostpassword/templates/lostpassword.php:5
msgid "Reset email send." msgid "Reset email send."
@ -407,10 +407,10 @@ msgstr ""
msgid "Request failed!" msgid "Request failed!"
msgstr "" msgstr ""
#: lostpassword/templates/lostpassword.php:11 templates/installation.php:39 #: lostpassword/templates/lostpassword.php:11 templates/installation.php:40
#: templates/login.php:28 #: templates/login.php:28
msgid "Username" msgid "Username"
msgstr "" msgstr "သုံးစွဲသူအမည်"
#: lostpassword/templates/lostpassword.php:14 #: lostpassword/templates/lostpassword.php:14
msgid "Request reset" msgid "Request reset"
@ -418,15 +418,15 @@ msgstr ""
#: lostpassword/templates/resetpassword.php:4 #: lostpassword/templates/resetpassword.php:4
msgid "Your password was reset" msgid "Your password was reset"
msgstr "" msgstr "သင်၏စကားဝှက်ကိုပြန်ဖော်ပြီးပါပြီ။"
#: lostpassword/templates/resetpassword.php:5 #: lostpassword/templates/resetpassword.php:5
msgid "To login page" msgid "To login page"
msgstr "" msgstr "ဝင်ရောက်သည့်စာမျက်နှာသို့"
#: lostpassword/templates/resetpassword.php:8 #: lostpassword/templates/resetpassword.php:8
msgid "New password" msgid "New password"
msgstr "" msgstr "စကားဝှက်အသစ်"
#: lostpassword/templates/resetpassword.php:11 #: lostpassword/templates/resetpassword.php:11
msgid "Reset password" msgid "Reset password"
@ -446,7 +446,7 @@ msgstr "Apps"
#: strings.php:8 #: strings.php:8
msgid "Admin" msgid "Admin"
msgstr "" msgstr "အက်ဒမင်"
#: strings.php:9 #: strings.php:9
msgid "Help" msgid "Help"
@ -458,7 +458,7 @@ msgstr ""
#: templates/404.php:12 #: templates/404.php:12
msgid "Cloud not found" msgid "Cloud not found"
msgstr "" msgstr "မတွေ့ရှိမိပါ"
#: templates/edit_categories_dialog.php:4 #: templates/edit_categories_dialog.php:4
msgid "Edit categories" msgid "Edit categories"
@ -466,11 +466,11 @@ msgstr ""
#: templates/edit_categories_dialog.php:16 #: templates/edit_categories_dialog.php:16
msgid "Add" msgid "Add"
msgstr "" msgstr "ပေါင်းထည့်"
#: templates/installation.php:23 templates/installation.php:30 #: templates/installation.php:23 templates/installation.php:30
msgid "Security Warning" msgid "Security Warning"
msgstr "" msgstr "လုံခြုံရေးသတိပေးချက်"
#: templates/installation.php:24 #: templates/installation.php:24
msgid "" msgid ""
@ -499,54 +499,54 @@ msgstr ""
#: templates/installation.php:36 #: templates/installation.php:36
msgid "Create an <strong>admin account</strong>" msgid "Create an <strong>admin account</strong>"
msgstr "" msgstr "<strong>အက်ဒမင်အကောင့်</strong>တစ်ခုဖန်တီးမည်"
#: templates/installation.php:52
msgid "Advanced"
msgstr ""
#: templates/installation.php:54 #: templates/installation.php:54
msgid "Data folder" msgid "Advanced"
msgstr "" msgstr "အဆင့်မြင့်"
#: templates/installation.php:61 #: templates/installation.php:56
msgid "Data folder"
msgstr "အချက်အလက်ဖိုလ်ဒါလ်"
#: templates/installation.php:65
msgid "Configure the database" msgid "Configure the database"
msgstr "" msgstr ""
#: templates/installation.php:66 templates/installation.php:77 #: templates/installation.php:70 templates/installation.php:82
#: templates/installation.php:87 templates/installation.php:97 #: templates/installation.php:93 templates/installation.php:104
msgid "will be used" msgid "will be used"
msgstr "" msgstr ""
#: templates/installation.php:109
msgid "Database user"
msgstr ""
#: templates/installation.php:113
msgid "Database password"
msgstr ""
#: templates/installation.php:117 #: templates/installation.php:117
msgid "Database name" msgid "Database user"
msgstr "" msgstr "Database သုံးစွဲသူ"
#: templates/installation.php:125 #: templates/installation.php:122
msgid "Database password"
msgstr "Database စကားဝှက်"
#: templates/installation.php:127
msgid "Database name"
msgstr "Database အမည်"
#: templates/installation.php:137
msgid "Database tablespace" msgid "Database tablespace"
msgstr "" msgstr ""
#: templates/installation.php:131 #: templates/installation.php:144
msgid "Database host" msgid "Database host"
msgstr "" msgstr ""
#: templates/installation.php:136 #: templates/installation.php:150
msgid "Finish setup" msgid "Finish setup"
msgstr "" msgstr "တပ်ဆင်ခြင်းပြီးပါပြီ။"
#: templates/layout.guest.php:33 #: templates/layout.guest.php:35
msgid "web services under your control" msgid "web services under your control"
msgstr "" msgstr "သင်၏ထိန်းချုပ်မှု့အောက်တွင်ရှိသော Web services"
#: templates/layout.user.php:48 #: templates/layout.user.php:53
msgid "Log out" msgid "Log out"
msgstr "" msgstr ""
@ -566,15 +566,15 @@ msgstr ""
#: templates/login.php:19 #: templates/login.php:19
msgid "Lost your password?" msgid "Lost your password?"
msgstr "" msgstr "သင်၏စကားဝှက်ပျောက်သွားပြီလား။"
#: templates/login.php:41 #: templates/login.php:41
msgid "remember" msgid "remember"
msgstr "" msgstr "မှတ်မိစေသည်"
#: templates/login.php:43 #: templates/login.php:43
msgid "Log in" msgid "Log in"
msgstr "" msgstr "ဝင်ရောက်ရန်"
#: templates/login.php:49 #: templates/login.php:49
msgid "Alternative Logins" msgid "Alternative Logins"
@ -582,11 +582,11 @@ msgstr ""
#: templates/part.pagenavi.php:3 #: templates/part.pagenavi.php:3
msgid "prev" msgid "prev"
msgstr "" msgstr "ယခင်"
#: templates/part.pagenavi.php:20 #: templates/part.pagenavi.php:20
msgid "next" msgid "next"
msgstr "" msgstr "နောက်သို့"
#: templates/update.php:3 #: templates/update.php:3
#, php-format #, php-format

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud\n" "Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-02-21 00:14+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: 2012-08-12 22:35+0000\n" "PO-Revision-Date: 2012-08-12 22:35+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n"
@ -19,30 +19,30 @@ msgstr ""
#: templates/authenticate.php:4 #: templates/authenticate.php:4
msgid "Password" msgid "Password"
msgstr "" msgstr "စကားဝှက်"
#: templates/authenticate.php:6 #: templates/authenticate.php:6
msgid "Submit" msgid "Submit"
msgstr "" msgstr ""
#: templates/public.php:9 #: templates/public.php:10
#, php-format #, php-format
msgid "%s shared the folder %s with you" msgid "%s shared the folder %s with you"
msgstr "" msgstr ""
#: templates/public.php:11 #: templates/public.php:13
#, php-format #, php-format
msgid "%s shared the file %s with you" msgid "%s shared the file %s with you"
msgstr "" msgstr ""
#: templates/public.php:14 templates/public.php:30 #: templates/public.php:19 templates/public.php:37
msgid "Download" msgid "Download"
msgstr "" msgstr ""
#: templates/public.php:29 #: templates/public.php:34
msgid "No preview available for" msgid "No preview available for"
msgstr "" msgstr ""
#: templates/public.php:35 #: templates/public.php:43
msgid "web services under your control" msgid "web services under your control"
msgstr "" msgstr "သင်၏ထိန်းချုပ်မှု့အောက်တွင်ရှိသော Web services"

View File

@ -8,8 +8,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud\n" "Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-02-22 00:06+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: 2013-02-21 11:20+0000\n" "PO-Revision-Date: 2013-02-24 08:40+0000\n"
"Last-Translator: Pyae Sone <gipsyhnh@gmail.com>\n" "Last-Translator: Pyae Sone <gipsyhnh@gmail.com>\n"
"Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -40,7 +40,7 @@ msgstr "Apps"
#: app.php:406 #: app.php:406
msgid "Admin" msgid "Admin"
msgstr "" msgstr "အက်ဒမင်"
#: files.php:202 #: files.php:202
msgid "ZIP download is turned off." msgid "ZIP download is turned off."
@ -178,7 +178,7 @@ msgid ""
"because the WebDAV interface seems to be broken." "because the WebDAV interface seems to be broken."
msgstr "" msgstr ""
#: setup.php:651 #: setup.php:650
#, php-format #, php-format
msgid "Please double check the <a href='%s'>installation guides</a>." msgid "Please double check the <a href='%s'>installation guides</a>."
msgstr "" msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud\n" "Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-02-22 00:06+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: 2011-07-25 16:05+0000\n" "PO-Revision-Date: 2011-07-25 16:05+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n"
@ -21,8 +21,8 @@ msgstr ""
msgid "Unable to load list from App Store" msgid "Unable to load list from App Store"
msgstr "" msgstr ""
#: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:15 #: ajax/changedisplayname.php:23 ajax/removeuser.php:15 ajax/setquota.php:17
#: ajax/togglegroups.php:18 #: ajax/togglegroups.php:20
msgid "Authentication error" msgid "Authentication error"
msgstr "ခွင့်ပြုချက်မအောင်မြင်" msgstr "ခွင့်ပြုချက်မအောင်မြင်"
@ -70,12 +70,12 @@ msgstr ""
msgid "Admins can't remove themself from the admin group" msgid "Admins can't remove themself from the admin group"
msgstr "" msgstr ""
#: ajax/togglegroups.php:28 #: ajax/togglegroups.php:30
#, php-format #, php-format
msgid "Unable to add user to group %s" msgid "Unable to add user to group %s"
msgstr "" msgstr ""
#: ajax/togglegroups.php:34 #: ajax/togglegroups.php:36
#, php-format #, php-format
msgid "Unable to remove user from group %s" msgid "Unable to remove user from group %s"
msgstr "" msgstr ""
@ -167,7 +167,7 @@ msgstr ""
#: templates/admin.php:15 #: templates/admin.php:15
msgid "Security Warning" msgid "Security Warning"
msgstr "" msgstr "လုံခြုံရေးသတိပေးချက်"
#: templates/admin.php:18 #: templates/admin.php:18
msgid "" msgid ""
@ -316,11 +316,11 @@ msgstr ""
msgid "More" msgid "More"
msgstr "" msgstr ""
#: templates/admin.php:227 templates/personal.php:98 #: templates/admin.php:227 templates/personal.php:102
msgid "Version" msgid "Version"
msgstr "" msgstr ""
#: templates/admin.php:230 templates/personal.php:100 #: templates/admin.php:230 templates/personal.php:105
msgid "" msgid ""
"Developed by the <a href=\"http://ownCloud.org/contact\" " "Developed by the <a href=\"http://ownCloud.org/contact\" "
"target=\"_blank\">ownCloud community</a>, the <a " "target=\"_blank\">ownCloud community</a>, the <a "
@ -330,51 +330,51 @@ msgid ""
"License\">AGPL</abbr></a>." "License\">AGPL</abbr></a>."
msgstr "" msgstr ""
#: templates/apps.php:10 #: templates/apps.php:11
msgid "Add your App" msgid "Add your App"
msgstr "" msgstr ""
#: templates/apps.php:11 #: templates/apps.php:12
msgid "More Apps" msgid "More Apps"
msgstr "" msgstr ""
#: templates/apps.php:24 #: templates/apps.php:28
msgid "Select an App" msgid "Select an App"
msgstr "" msgstr ""
#: templates/apps.php:28 #: templates/apps.php:34
msgid "See application page at apps.owncloud.com" msgid "See application page at apps.owncloud.com"
msgstr "" msgstr ""
#: templates/apps.php:29 #: templates/apps.php:36
msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>"
msgstr "" msgstr ""
#: templates/apps.php:31 #: templates/apps.php:38
msgid "Update" msgid "Update"
msgstr "" msgstr ""
#: templates/help.php:3 #: templates/help.php:4
msgid "User Documentation" msgid "User Documentation"
msgstr "" msgstr ""
#: templates/help.php:4 #: templates/help.php:6
msgid "Administrator Documentation" msgid "Administrator Documentation"
msgstr "" msgstr ""
#: templates/help.php:6 #: templates/help.php:9
msgid "Online Documentation" msgid "Online Documentation"
msgstr "" msgstr ""
#: templates/help.php:7 #: templates/help.php:11
msgid "Forum" msgid "Forum"
msgstr "" msgstr ""
#: templates/help.php:9 #: templates/help.php:14
msgid "Bugtracker" msgid "Bugtracker"
msgstr "" msgstr ""
#: templates/help.php:11 #: templates/help.php:17
msgid "Commercial Support" msgid "Commercial Support"
msgstr "" msgstr ""
@ -383,79 +383,79 @@ msgstr ""
msgid "You have used <strong>%s</strong> of the available <strong>%s</strong>" msgid "You have used <strong>%s</strong> of the available <strong>%s</strong>"
msgstr "" msgstr ""
#: templates/personal.php:14 #: templates/personal.php:15
msgid "Get the apps to sync your files" msgid "Get the apps to sync your files"
msgstr "" msgstr ""
#: templates/personal.php:25 #: templates/personal.php:26
msgid "Show First Run Wizard again" msgid "Show First Run Wizard again"
msgstr "" msgstr ""
#: templates/personal.php:36 templates/users.php:23 templates/users.php:79 #: templates/personal.php:37 templates/users.php:23 templates/users.php:79
msgid "Password" msgid "Password"
msgstr "" msgstr "စကားဝှက်"
#: templates/personal.php:37 #: templates/personal.php:38
msgid "Your password was changed" msgid "Your password was changed"
msgstr "" msgstr ""
#: templates/personal.php:38 #: templates/personal.php:39
msgid "Unable to change your password" msgid "Unable to change your password"
msgstr "" msgstr ""
#: templates/personal.php:39 #: templates/personal.php:40
msgid "Current password" msgid "Current password"
msgstr "" msgstr ""
#: templates/personal.php:40
msgid "New password"
msgstr ""
#: templates/personal.php:42 #: templates/personal.php:42
msgid "New password"
msgstr "စကားဝှက်အသစ်"
#: templates/personal.php:44
msgid "Change password" msgid "Change password"
msgstr "" msgstr ""
#: templates/personal.php:54 templates/users.php:78 #: templates/personal.php:56 templates/users.php:78
msgid "Display Name" msgid "Display Name"
msgstr "" msgstr ""
#: templates/personal.php:55 #: templates/personal.php:57
msgid "Your display name was changed" msgid "Your display name was changed"
msgstr "" msgstr ""
#: templates/personal.php:56 #: templates/personal.php:58
msgid "Unable to change your display name" msgid "Unable to change your display name"
msgstr "" msgstr ""
#: templates/personal.php:59 #: templates/personal.php:61
msgid "Change display name" msgid "Change display name"
msgstr "" msgstr ""
#: templates/personal.php:68 #: templates/personal.php:70
msgid "Email" msgid "Email"
msgstr "" msgstr ""
#: templates/personal.php:69 #: templates/personal.php:72
msgid "Your email address" msgid "Your email address"
msgstr "" msgstr ""
#: templates/personal.php:70 #: templates/personal.php:73
msgid "Fill in an email address to enable password recovery" msgid "Fill in an email address to enable password recovery"
msgstr "" msgstr ""
#: templates/personal.php:76 templates/personal.php:77 #: templates/personal.php:79 templates/personal.php:80
msgid "Language" msgid "Language"
msgstr "" msgstr ""
#: templates/personal.php:82 #: templates/personal.php:86
msgid "Help translate" msgid "Help translate"
msgstr "" msgstr ""
#: templates/personal.php:87 #: templates/personal.php:91
msgid "WebDAV" msgid "WebDAV"
msgstr "" msgstr ""
#: templates/personal.php:89 #: templates/personal.php:93
msgid "Use this address to connect to your ownCloud in your file manager" msgid "Use this address to connect to your ownCloud in your file manager"
msgstr "" msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud\n" "Project-Id-Version: ownCloud\n"
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
"POT-Creation-Date: 2013-02-22 00:06+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: 2012-08-12 22:45+0000\n" "PO-Revision-Date: 2012-08-12 22:45+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n"
@ -124,7 +124,7 @@ msgstr ""
#: templates/settings.php:33 #: templates/settings.php:33
msgid "Password" msgid "Password"
msgstr "" msgstr "စကားဝှက်"
#: templates/settings.php:36 #: templates/settings.php:36
msgid "For anonymous access, leave DN and Password empty." msgid "For anonymous access, leave DN and Password empty."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n" "Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-02-24 00:06+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n" "Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-02-24 00:05+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n" "Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-02-24 00:05+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n" "Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-02-24 00:05+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n" "Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-02-24 00:05+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n" "Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-02-24 00:05+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n" "Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-02-24 00:05+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n" "Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-02-24 00:06+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n" "Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-02-24 00:06+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n" "Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-02-24 00:05+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\n" "Project-Id-Version: ownCloud Core 5.0.0\n"
"Report-Msgid-Bugs-To: translations@owncloud.org\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n"
"POT-Creation-Date: 2013-02-24 00:05+0100\n" "POT-Creation-Date: 2013-02-25 00:05+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -223,7 +223,7 @@ class OC_App{
// check if the app is compatible with this version of ownCloud // check if the app is compatible with this version of ownCloud
$info=OC_App::getAppInfo($app); $info=OC_App::getAppInfo($app);
$version=OC_Util::getVersion(); $version=OC_Util::getVersion();
if(!isset($info['require']) or ($version[0]>$info['require'])) { if(!isset($info['require']) or !self::isAppVersionCompatible($version, $info['require'])) {
OC_Log::write('core', OC_Log::write('core',
'App "'.$info['name'].'" can\'t be installed because it is' 'App "'.$info['name'].'" can\'t be installed because it is'
.' not compatible with this version of ownCloud', .' not compatible with this version of ownCloud',
@ -851,7 +851,7 @@ class OC_App{
foreach($apps as $app) { foreach($apps as $app) {
// check if the app is compatible with this version of ownCloud // check if the app is compatible with this version of ownCloud
$info = OC_App::getAppInfo($app); $info = OC_App::getAppInfo($app);
if(!isset($info['require']) or (($version[0].'.'.$version[1])>$info['require'])) { if(!isset($info['require']) or !self::isAppVersionCompatible($version, $info['require'])) {
OC_Log::write('core', OC_Log::write('core',
'App "'.$info['name'].'" ('.$app.') can\'t be used because it is' 'App "'.$info['name'].'" ('.$app.') can\'t be used because it is'
.' not compatible with this version of ownCloud', .' not compatible with this version of ownCloud',
@ -862,6 +862,36 @@ class OC_App{
} }
} }
/**
* Compares the app version with the owncloud version to see if the app
* requires a newer version than the currently active one
* @param array $owncloudVersions array with 3 entries: major minor bugfix
* @param string $appRequired the required version from the xml
* major.minor.bugfix
* @return boolean true if compatible, otherwise false
*/
public static function isAppVersionCompatible($owncloudVersions, $appRequired){
$appVersions = explode('.', $appRequired);
for($i=0; $i<count($appVersions); $i++){
$appVersion = (int) $appVersions[$i];
if(isset($owncloudVersions[$i])){
$owncloudVersion = $owncloudVersions[$i];
} else {
$owncloudVersion = 0;
}
if($owncloudVersion < $appVersion){
return false;
}
}
return true;
}
/** /**
* get the installed version of all apps * get the installed version of all apps
*/ */

View File

@ -320,8 +320,21 @@ class OC {
// set the session name to the instance id - which is unique // set the session name to the instance id - which is unique
session_name(OC_Util::getInstanceId()); session_name(OC_Util::getInstanceId());
// (re)-initialize session // if session cant be started break with http 500 error
session_start(); if (session_start() === false){
OC_Log::write('core', 'Session could not be initialized',
OC_Log::ERROR);
header('HTTP/1.1 500 Internal Server Error');
$error = 'Session could not be initialized. Please contact your ';
$error .= 'system administrator';
$tmpl = new OC_Template('', 'error', 'guest');
$tmpl->assign('errors', array(1 => array('error' => $error)));
$tmpl->printPage();
exit();
}
// regenerate session id periodically to avoid session fixation // regenerate session id periodically to avoid session fixation
if (!isset($_SESSION['SID_CREATED'])) { if (!isset($_SESSION['SID_CREATED'])) {

View File

@ -178,6 +178,13 @@ class OC_DB {
$dsn = 'oci:dbname=//' . $host . '/' . $name; $dsn = 'oci:dbname=//' . $host . '/' . $name;
} }
break; break;
case 'mssql':
if ($port) {
$dsn='sqlsrv:Server='.$host.','.$port.';Database='.$name;
} else {
$dsn='sqlsrv:Server='.$host.';Database='.$name;
}
break;
default: default:
return false; return false;
} }
@ -278,6 +285,15 @@ class OC_DB {
$dsn['database'] = $user; $dsn['database'] = $user;
} }
break; break;
case 'mssql':
$dsn = array(
'phptype' => 'sqlsrv',
'username' => $user,
'password' => $pass,
'hostspec' => $host,
'database' => $name
);
break;
default: default:
return false; return false;
} }
@ -389,6 +405,13 @@ class OC_DB {
$query = self::prepare('SELECT lastval() AS id'); $query = self::prepare('SELECT lastval() AS id');
$row = $query->execute()->fetchRow(); $row = $query->execute()->fetchRow();
return $row['id']; return $row['id'];
}
if( $type == 'mssql' ) {
if($table !== null) {
$prefix = OC_Config::getValue( "dbtableprefix", "oc_" );
$table = str_replace( '*PREFIX*', $prefix, $table );
}
return self::$connection->lastInsertId($table);
}else{ }else{
if($table !== null) { if($table !== null) {
$prefix = OC_Config::getValue( "dbtableprefix", "oc_" ); $prefix = OC_Config::getValue( "dbtableprefix", "oc_" );
@ -631,7 +654,7 @@ class OC_DB {
} else { } else {
return true; return true;
} }
} elseif( $type == 'pgsql' || $type == 'oci' || $type == 'mysql') { } elseif( $type == 'pgsql' || $type == 'oci' || $type == 'mysql' || $type == 'mssql') {
$query = 'INSERT INTO `' .$table . '` (' $query = 'INSERT INTO `' .$table . '` ('
. implode(',', array_keys($input)) . ') SELECT \'' . implode(',', array_keys($input)) . ') SELECT \''
. implode('\',\'', array_values($input)) . '\' FROM ' . $table . ' WHERE '; . implode('\',\'', array_values($input)) . '\' FROM ' . $table . ' WHERE ';
@ -691,7 +714,15 @@ class OC_DB {
}elseif( $type == 'oci' ) { }elseif( $type == 'oci' ) {
$query = str_replace( '`', '"', $query ); $query = str_replace( '`', '"', $query );
$query = str_ireplace( 'NOW()', 'CURRENT_TIMESTAMP', $query ); $query = str_ireplace( 'NOW()', 'CURRENT_TIMESTAMP', $query );
} }elseif( $type == 'mssql' ) {
$query = preg_replace( "/\`(.*?)`/", "[$1]", $query );
$query = str_replace( 'NOW()', 'CURRENT_TIMESTAMP', $query );
$query = str_replace( 'now()', 'CURRENT_TIMESTAMP', $query );
$query = str_replace( 'LENGTH(', 'LEN(', $query );
$query = str_replace( 'SUBSTR(', 'SUBSTRING(', $query );
$query = self::fixLimitClauseForMSSQL($query);
}
// replace table name prefix // replace table name prefix
$query = str_replace( '*PREFIX*', $prefix, $query ); $query = str_replace( '*PREFIX*', $prefix, $query );
@ -699,6 +730,60 @@ class OC_DB {
return $query; return $query;
} }
private static function fixLimitClauseForMSSQL($query) {
$limitLocation = stripos ($query, "LIMIT");
if ( $limitLocation === false ) {
return $query;
}
// total == 0 means all results - not zero results
//
// First number is either total or offset, locate it by first space
//
$offset = substr ($query, $limitLocation + 5);
$offset = substr ($offset, 0, stripos ($offset, ' '));
$offset = trim ($offset);
// check for another parameter
if (stripos ($offset, ',') === false) {
// no more parameters
$offset = 0;
$total = intval ($offset);
} else {
// found another parameter
$offset = intval ($offset);
$total = substr ($query, $limitLocation + 5);
$total = substr ($total, stripos ($total, ','));
$total = substr ($total, 0, stripos ($total, ' '));
$total = intval ($total);
}
$query = trim (substr ($query, 0, $limitLocation));
if ($offset == 0 && $total !== 0) {
if (strpos($query, "SELECT") === false) {
$query = "TOP {$total} " . $query;
} else {
$query = preg_replace('/SELECT(\s*DISTINCT)?/Dsi', 'SELECT$1 TOP '.$total, $query);
}
} else if ($offset > 0) {
$query = preg_replace('/SELECT(\s*DISTINCT)?/Dsi', 'SELECT$1 TOP(10000000) ', $query);
$query = 'SELECT *
FROM (SELECT sub2.*, ROW_NUMBER() OVER(ORDER BY sub2.line2) AS line3
FROM (SELECT 1 AS line2, sub1.* FROM (' . $query . ') AS sub1) as sub2) AS sub3';
if ($total > 0) {
$query .= ' WHERE line3 BETWEEN ' . ($offset + 1) . ' AND ' . ($offset + $total);
} else {
$query .= ' WHERE line3 > ' . $offset;
}
}
return $query;
}
/** /**
* @brief drop a table * @brief drop a table
* @param string $tableName the table to drop * @param string $tableName the table to drop
@ -850,19 +935,119 @@ class PDOStatementWrapper{
* make execute return the result instead of a bool * make execute return the result instead of a bool
*/ */
public function execute($input=array()) { public function execute($input=array()) {
$this->lastArguments=$input; $this->lastArguments = $input;
if(count($input)>0) { if (count($input) > 0) {
if (!isset($type)) {
$type = OC_Config::getValue( "dbtype", "sqlite" );
}
if ($type == 'mssql') {
$input = $this->tryFixSubstringLastArgumentDataForMSSQL($input);
}
$result=$this->statement->execute($input); $result=$this->statement->execute($input);
}else{ } else {
$result=$this->statement->execute(); $result=$this->statement->execute();
} }
if($result) {
if ($result) {
return $this; return $this;
}else{ } else {
return false; return false;
} }
} }
private function tryFixSubstringLastArgumentDataForMSSQL($input) {
$query = $this->statement->queryString;
$pos = stripos ($query, 'SUBSTRING');
if ( $pos === false) {
return;
}
try {
$newQuery = '';
$cArg = 0;
$inSubstring = false;
// Create new query
for ($i = 0; $i < strlen ($query); $i++) {
if ($inSubstring == false) {
// Defines when we should start inserting values
if (substr ($query, $i, 9) == 'SUBSTRING') {
$inSubstring = true;
}
} else {
// Defines when we should stop inserting values
if (substr ($query, $i, 1) == ')') {
$inSubstring = false;
}
}
if (substr ($query, $i, 1) == '?') {
// We found a question mark
if ($inSubstring) {
$newQuery .= $input[$cArg];
//
// Remove from input array
//
array_splice ($input, $cArg, 1);
} else {
$newQuery .= substr ($query, $i, 1);
$cArg++;
}
} else {
$newQuery .= substr ($query, $i, 1);
}
}
// The global data we need
$name = OC_Config::getValue( "dbname", "owncloud" );
$host = OC_Config::getValue( "dbhost", "" );
$user = OC_Config::getValue( "dbuser", "" );
$pass = OC_Config::getValue( "dbpassword", "" );
if (strpos($host,':')) {
list($host, $port) = explode(':', $host, 2);
} else {
$port = false;
}
$opts = array();
if ($port) {
$dsn = 'sqlsrv:Server='.$host.','.$port.';Database='.$name;
} else {
$dsn = 'sqlsrv:Server='.$host.';Database='.$name;
}
$PDO = new PDO($dsn, $user, $pass, $opts);
$PDO->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->statement = $PDO->prepare($newQuery);
$this->lastArguments = $input;
return $input;
} catch (PDOException $e){
$entry = 'PDO DB Error: "'.$e->getMessage().'"<br />';
$entry .= 'Offending command was: '.$this->statement->queryString .'<br />';
$entry .= 'Input parameters: ' .print_r($input, true).'<br />';
$entry .= 'Stack trace: ' .$e->getTraceAsString().'<br />';
OC_Log::write('core', $entry, OC_Log::FATAL);
OC_User::setUserId(null);
// send http status 503
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
OC_Template::printErrorPage('Failed to connect to database');
die ($entry);
}
}
/** /**
* provide numRows * provide numRows
*/ */

View File

@ -500,8 +500,8 @@ class Cache {
public function getIncomplete() { public function getIncomplete() {
$query = \OC_DB::prepare('SELECT `path` FROM `*PREFIX*filecache`' $query = \OC_DB::prepare('SELECT `path` FROM `*PREFIX*filecache`'
. ' WHERE `storage` = ? AND `size` = -1 ORDER BY `fileid` DESC LIMIT 1'); . ' WHERE `storage` = ? AND `size` = -1 ORDER BY `fileid` DESC LIMIT 1');
$query->execute(array($this->numericId)); $result = $query->execute(array($this->numericId));
if ($row = $query->fetchRow()) { if ($row = $result->fetchRow()) {
return $row['path']; return $row['path'];
} else { } else {
return false; return false;

View File

@ -97,8 +97,8 @@ abstract class Common implements \OC\Files\Storage\Storage {
public function copy($path1, $path2) { public function copy($path1, $path2) {
$source=$this->fopen($path1, 'r'); $source=$this->fopen($path1, 'r');
$target=$this->fopen($path2, 'w'); $target=$this->fopen($path2, 'w');
$count=\OC_Helper::streamCopy($source, $target); list($count, $result) = \OC_Helper::streamCopy($source, $target);
return $count>0; return $result;
} }
/** /**

View File

@ -285,7 +285,7 @@ class View {
} }
$target = $this->fopen($path, 'w'); $target = $this->fopen($path, 'w');
if ($target) { if ($target) {
$count = \OC_Helper::streamCopy($data, $target); list ($count, $result) = \OC_Helper::streamCopy($data, $target);
fclose($target); fclose($target);
fclose($data); fclose($data);
if ($this->fakeRoot == Filesystem::getRoot()) { if ($this->fakeRoot == Filesystem::getRoot()) {
@ -303,7 +303,7 @@ class View {
); );
} }
\OC_FileProxy::runPostProxies('file_put_contents', $absolutePath, $count); \OC_FileProxy::runPostProxies('file_put_contents', $absolutePath, $count);
return $count > 0; return $result;
} else { } else {
return false; return false;
} }
@ -361,10 +361,9 @@ class View {
} else { } else {
$source = $this->fopen($path1 . $postFix1, 'r'); $source = $this->fopen($path1 . $postFix1, 'r');
$target = $this->fopen($path2 . $postFix2, 'w'); $target = $this->fopen($path2 . $postFix2, 'w');
$count = \OC_Helper::streamCopy($source, $target); list($count, $result) = \OC_Helper::streamCopy($source, $target);
list($storage1, $internalPath1) = Filesystem::resolvePath($absolutePath1 . $postFix1); list($storage1, $internalPath1) = Filesystem::resolvePath($absolutePath1 . $postFix1);
$storage1->unlink($internalPath1); $storage1->unlink($internalPath1);
$result = $count > 0;
} }
if ($this->fakeRoot == Filesystem::getRoot()) { if ($this->fakeRoot == Filesystem::getRoot()) {
\OC_Hook::emit( \OC_Hook::emit(
@ -444,7 +443,7 @@ class View {
} else { } else {
$source = $this->fopen($path1 . $postFix1, 'r'); $source = $this->fopen($path1 . $postFix1, 'r');
$target = $this->fopen($path2 . $postFix2, 'w'); $target = $this->fopen($path2 . $postFix2, 'w');
$result = \OC_Helper::streamCopy($source, $target); list($count, $result) = \OC_Helper::streamCopy($source, $target);
} }
if ($this->fakeRoot == Filesystem::getRoot()) { if ($this->fakeRoot == Filesystem::getRoot()) {
\OC_Hook::emit( \OC_Hook::emit(

View File

@ -513,11 +513,16 @@ class OC_Helper {
if(!$source or !$target) { if(!$source or !$target) {
return false; return false;
} }
$count=0; $result = true;
$count = 0;
while(!feof($source)) { while(!feof($source)) {
$count+=fwrite($target, fread($source, 8192)); if ( ( $c = fwrite($target, fread($source, 8192)) ) === false) {
$result = false;
} else {
$count += $c;
}
} }
return $count; return array($count, $result);
} }
/** /**

View File

@ -2,6 +2,7 @@
"Help" => "အကူအညီ", "Help" => "အကူအညီ",
"Users" => "သုံးစွဲသူ", "Users" => "သုံးစွဲသူ",
"Apps" => "Apps", "Apps" => "Apps",
"Admin" => "အက်ဒမင်",
"ZIP download is turned off." => "ZIP ဒေါင်းလုတ်ကိုပိတ်ထားသည်", "ZIP download is turned off." => "ZIP ဒေါင်းလုတ်ကိုပိတ်ထားသည်",
"Files need to be downloaded one by one." => "ဖိုင်များသည် တစ်ခုပြီး တစ်ခုဒေါင်းလုတ်ချရန်လိုအပ်သည်", "Files need to be downloaded one by one." => "ဖိုင်များသည် တစ်ခုပြီး တစ်ခုဒေါင်းလုတ်ချရန်လိုအပ်သည်",
"Back to Files" => "ဖိုင်သို့ပြန်သွားမည်", "Back to Files" => "ဖိုင်သို့ပြန်သွားမည်",

View File

@ -62,7 +62,8 @@ class Files {
* @return int the number of bytes copied * @return int the number of bytes copied
*/ */
public static function streamCopy( $source, $target ) { public static function streamCopy( $source, $target ) {
return(\OC_Helper::streamCopy( $source, $target )); list($count, $result) = \OC_Helper::streamCopy( $source, $target );
return $count;
} }
/** /**

View File

@ -40,11 +40,13 @@ class OC_Setup {
$error[] = $l->t('Specify a data folder.'); $error[] = $l->t('Specify a data folder.');
} }
if($dbtype=='mysql' or $dbtype == 'pgsql' or $dbtype == 'oci') { //mysql and postgresql needs more config options if($dbtype == 'mysql' or $dbtype == 'pgsql' or $dbtype == 'oci' or $dbtype == 'mssql') { //mysql and postgresql needs more config options
if($dbtype=='mysql') if($dbtype == 'mysql')
$dbprettyname = 'MySQL'; $dbprettyname = 'MySQL';
else if($dbtype=='pgsql') else if($dbtype == 'pgsql')
$dbprettyname = 'PostgreSQL'; $dbprettyname = 'PostgreSQL';
else if ($dbtype == 'mssql')
$dbprettyname = 'MS SQL Server';
else else
$dbprettyname = 'Oracle'; $dbprettyname = 'Oracle';
@ -152,6 +154,29 @@ class OC_Setup {
return $error; return $error;
} }
} }
elseif ($dbtype == 'mssql') {
$dbuser = $options['dbuser'];
$dbpass = $options['dbpass'];
$dbname = $options['dbname'];
$dbhost = $options['dbhost'];
$dbtableprefix = isset($options['dbtableprefix']) ? $options['dbtableprefix'] : 'oc_';
OC_Config::setValue('dbname', $dbname);
OC_Config::setValue('dbhost', $dbhost);
OC_Config::setValue('dbuser', $dbuser);
OC_Config::setValue('dbpassword', $dbpass);
OC_Config::setValue('dbtableprefix', $dbtableprefix);
try {
self::setupMSSQLDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix);
} catch (Exception $e) {
$error[] = array(
'error' => 'MS SQL username and/or password not valid',
'hint' => 'You need to enter either an existing account or the administrator.'
);
return $error;
}
}
else { else {
//delete the old sqlite database first, might cause infinte loops otherwise //delete the old sqlite database first, might cause infinte loops otherwise
if(file_exists("$datadir/owncloud.db")) { if(file_exists("$datadir/owncloud.db")) {
@ -256,11 +281,12 @@ class OC_Setup {
if(!$result) { if(!$result) {
$entry = $l->t('DB Error: "%s"', array(mysql_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(mysql_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />'; $entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry); \OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
} }
$query="GRANT ALL PRIVILEGES ON `$name` . * TO '$user'"; $query="GRANT ALL PRIVILEGES ON `$name` . * TO '$user'";
//this query will fail if there aren't the right permissons, ignore the error
$result = mysql_query($query, $connection); //this query will fail if there aren't the right permissions, ignore the error
mysql_query($query, $connection);
} }
private static function createDBUser($name, $password, $connection) { private static function createDBUser($name, $password, $connection) {
@ -359,7 +385,7 @@ class OC_Setup {
if(!$result) { if(!$result) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />'; $entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry); \OC_Log::write('setup.pg', $entry, \OC_Log::WARN);
} }
if(! pg_fetch_row($result)) { if(! pg_fetch_row($result)) {
//The database does not exists... let's create it //The database does not exists... let's create it
@ -368,11 +394,11 @@ class OC_Setup {
if(!$result) { if(!$result) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />'; $entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry); \OC_Log::write('setup.pg', $entry, \OC_Log::WARN);
} }
else { else {
$query = "REVOKE ALL PRIVILEGES ON DATABASE \"$e_name\" FROM PUBLIC"; $query = "REVOKE ALL PRIVILEGES ON DATABASE \"$e_name\" FROM PUBLIC";
$result = pg_query($connection, $query); pg_query($connection, $query);
} }
} }
} }
@ -386,7 +412,7 @@ class OC_Setup {
if(!$result) { if(!$result) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />'; $entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry); \OC_Log::write('setup.pg', $entry, \OC_Log::WARN);
} }
if(! pg_fetch_row($result)) { if(! pg_fetch_row($result)) {
@ -396,7 +422,7 @@ class OC_Setup {
if(!$result) { if(!$result) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />'; $entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry); \OC_Log::write('setup.pg', $entry, \OC_Log::WARN);
} }
} }
else { // change password of the existing role else { // change password of the existing role
@ -405,7 +431,7 @@ class OC_Setup {
if(!$result) { if(!$result) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />'; $entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry); \OC_Log::write('setup.pg', $entry, \OC_Log::WARN);
} }
} }
} }
@ -434,7 +460,7 @@ class OC_Setup {
if (!$stmt) { if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_last_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(oci_last_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />'; $entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry); \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
} }
$result = oci_execute($stmt); $result = oci_execute($stmt);
if($result) { if($result) {
@ -498,9 +524,9 @@ class OC_Setup {
$un = $dbtableprefix.'users'; $un = $dbtableprefix.'users';
oci_bind_by_name($stmt, ':un', $un); oci_bind_by_name($stmt, ':un', $un);
if (!$stmt) { if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_last_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />'; $entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry); \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
} }
$result = oci_execute($stmt); $result = oci_execute($stmt);
@ -526,14 +552,14 @@ class OC_Setup {
if (!$stmt) { if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />'; $entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry); \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
} }
oci_bind_by_name($stmt, ':un', $name); oci_bind_by_name($stmt, ':un', $name);
$result = oci_execute($stmt); $result = oci_execute($stmt);
if(!$result) { if(!$result) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />'; $entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry); \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
} }
if(! oci_fetch_row($stmt)) { if(! oci_fetch_row($stmt)) {
@ -544,7 +570,7 @@ class OC_Setup {
if (!$stmt) { if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />'; $entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry); \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
} }
//oci_bind_by_name($stmt, ':un', $name); //oci_bind_by_name($stmt, ':un', $name);
$result = oci_execute($stmt); $result = oci_execute($stmt);
@ -552,7 +578,7 @@ class OC_Setup {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s", name: %s, password: %s', $entry .= $l->t('Offending command was: "%s", name: %s, password: %s',
array($query, $name, $password)) . '<br />'; array($query, $name, $password)) . '<br />';
echo($entry); \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
} }
} else { // change password of the existing role } else { // change password of the existing role
$query = "ALTER USER :un IDENTIFIED BY :pw"; $query = "ALTER USER :un IDENTIFIED BY :pw";
@ -560,7 +586,7 @@ class OC_Setup {
if (!$stmt) { if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />'; $entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry); \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
} }
oci_bind_by_name($stmt, ':un', $name); oci_bind_by_name($stmt, ':un', $name);
oci_bind_by_name($stmt, ':pw', $password); oci_bind_by_name($stmt, ':pw', $password);
@ -568,26 +594,200 @@ class OC_Setup {
if(!$result) { if(!$result) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />'; $entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry); \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
} }
} }
// grant neccessary roles // grant necessary roles
$query = 'GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER, UNLIMITED TABLESPACE TO '.$name; $query = 'GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER, UNLIMITED TABLESPACE TO '.$name;
$stmt = oci_parse($connection, $query); $stmt = oci_parse($connection, $query);
if (!$stmt) { if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />'; $entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry); \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
} }
$result = oci_execute($stmt); $result = oci_execute($stmt);
if(!$result) { if(!$result) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />'; $entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s", name: %s, password: %s', $entry .= $l->t('Offending command was: "%s", name: %s, password: %s',
array($query, $name, $password)) . '<br />'; array($query, $name, $password)) . '<br />';
echo($entry); \OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
} }
} }
private static function setupMSSQLDatabase($dbhost, $dbuser, $dbpass, $dbname, $dbtableprefix) {
$l = self::getTrans();
//check if the database user has admin right
$masterConnectionInfo = array( "Database" => "master", "UID" => $dbuser, "PWD" => $dbpass);
$masterConnection = @sqlsrv_connect($dbhost, $masterConnectionInfo);
if(!$masterConnection) {
$entry = null;
if( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
throw new Exception($l->t('MS SQL username and/or password not valid: $s', array($entry)));
}
OC_Config::setValue('dbuser', $dbuser);
OC_Config::setValue('dbpassword', $dbpass);
self::mssql_createDBLogin($dbuser, $dbpass, $masterConnection);
self::mssql_createDatabase($dbname, $masterConnection);
self::mssql_createDBUser($dbuser, $dbname, $masterConnection);
sqlsrv_close($masterConnection);
self::mssql_createDatabaseStructure($dbhost, $dbname, $dbuser, $dbpass, $dbtableprefix);
}
private static function mssql_createDBLogin($name, $password, $connection) {
$query = "SELECT * FROM master.sys.server_principals WHERE name = '".$name."';";
$result = sqlsrv_query($connection, $query);
if ($result === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
} else {
$row = sqlsrv_fetch_array($result);
if ($row === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
} else {
if ($row == null) {
$query = "CREATE LOGIN [".$name."] WITH PASSWORD = '".$password."';";
$result = sqlsrv_query($connection, $query);
if (!$result or $result === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
}
}
}
}
}
private static function mssql_createDBUser($name, $dbname, $connection) {
$query = "SELECT * FROM [".$dbname."].sys.database_principals WHERE name = '".$name."';";
$result = sqlsrv_query($connection, $query);
if ($result === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
} else {
$row = sqlsrv_fetch_array($result);
if ($row === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
} else {
if ($row == null) {
$query = "USE [".$dbname."]; CREATE USER [".$name."] FOR LOGIN [".$name."];";
$result = sqlsrv_query($connection, $query);
if (!$result || $result === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry = 'DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
}
}
$query = "USE [".$dbname."]; EXEC sp_addrolemember 'db_owner', '".$name."';";
$result = sqlsrv_query($connection, $query);
if (!$result || $result === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
}
}
}
}
private static function mssql_createDatabase($dbname, $connection) {
$query = "CREATE DATABASE [".$dbname."];";
$result = sqlsrv_query($connection, $query);
if (!$result || $result === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
}
}
private static function mssql_createDatabaseStructure($dbhost, $dbname, $dbuser, $dbpass, $dbtableprefix) {
$connectionInfo = array( "Database" => $dbname, "UID" => $dbuser, "PWD" => $dbpass);
$connection = @sqlsrv_connect($dbhost, $connectionInfo);
//fill the database if needed
$query = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{$dbname}' AND TABLE_NAME = '{$dbtableprefix}users'";
$result = sqlsrv_query($connection, $query);
if ($result === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
} else {
$row = sqlsrv_fetch_array($result);
if ($row === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OC_Log::write('setup.mssql', $entry, \OC_Log::WARN);
} else {
if ($row == null) {
OC_DB::createDbFromStructure('db_structure.xml');
}
}
}
sqlsrv_close($connection);
}
/** /**
* create .htaccess files for apache hosts * create .htaccess files for apache hosts
*/ */

View File

@ -413,11 +413,6 @@ class OC_Template{
if( $this->renderas ) { if( $this->renderas ) {
$page = new OC_TemplateLayout($this->renderas); $page = new OC_TemplateLayout($this->renderas);
if($this->renderas == 'user') {
$page->assign('requesttoken', $this->vars['requesttoken']);
$user = OC_User::getUser();
$page->assign('displayname', OCP\User::getDisplayName($user));
}
// Add custom headers // Add custom headers
$page->assign('headers', $this->headers, false); $page->assign('headers', $this->headers, false);
@ -530,8 +525,10 @@ class OC_Template{
* @param string $hint An option hint message * @param string $hint An option hint message
*/ */
public static function printErrorPage( $error_msg, $hint = '' ) { public static function printErrorPage( $error_msg, $hint = '' ) {
$content = new OC_Template( '', 'error', 'error' );
$errors = array(array('error' => $error_msg, 'hint' => $hint)); $errors = array(array('error' => $error_msg, 'hint' => $hint));
OC_Template::printGuestPage("", "error", array("errors" => $errors)); $content->assign( 'errors', $errors, false );
$content->printPage();
die(); die();
} }
} }

View File

@ -31,7 +31,7 @@ class OC_TemplateLayout extends OC_Template {
} }
$user_displayname = OC_User::getDisplayName(); $user_displayname = OC_User::getDisplayName();
$this->assign( 'user_displayname', $user_displayname ); $this->assign( 'user_displayname', $user_displayname );
} else if ($renderas == 'guest') { } else if ($renderas == 'guest' || $renderas == 'error') {
parent::__construct('core', 'layout.guest'); parent::__construct('core', 'layout.guest');
} else { } else {
parent::__construct('core', 'layout.base'); parent::__construct('core', 'layout.base');
@ -39,7 +39,7 @@ class OC_TemplateLayout extends OC_Template {
// Add the js files // Add the js files
$jsfiles = self::findJavascriptFiles(OC_Util::$scripts); $jsfiles = self::findJavascriptFiles(OC_Util::$scripts);
$this->assign('jsfiles', array(), false); $this->assign('jsfiles', array(), false);
if (OC_Config::getValue('installed', false)) { if (OC_Config::getValue('installed', false) && $renderas!='error') {
$this->append( 'jsfiles', OC_Helper::linkToRoute('js_config')); $this->append( 'jsfiles', OC_Helper::linkToRoute('js_config'));
} }
if (!empty(OC_Util::$core_scripts)) { if (!empty(OC_Util::$core_scripts)) {

View File

@ -75,7 +75,7 @@ class OC_Util {
public static function getVersion() { public static function getVersion() {
// hint: We only can count up. Reset minor/patchlevel when // hint: We only can count up. Reset minor/patchlevel when
// updating major/minor version number. // updating major/minor version number.
return array(4, 93, 10); return array(4, 94, 10);
} }
/** /**
@ -83,7 +83,7 @@ class OC_Util {
* @return string * @return string
*/ */
public static function getVersionString() { public static function getVersionString() {
return '5.0 beta 1'; return '5.0 beta 2';
} }
/** /**
@ -275,19 +275,6 @@ class OC_Util {
$web_server_restart= false; $web_server_restart= false;
} }
$handler = ini_get("session.save_handler");
if($handler == "files") {
$tmpDir = session_save_path();
if($tmpDir != "") {
if(!@is_writable($tmpDir)) {
$errors[]=array('error' => 'The temporary folder used by PHP to save the session data'
.' is either incorrect or not writable! Please check : '.session_save_path().'<br/>',
'hint'=>'Please ask your server administrator to grant write access'
.' or define another temporary folder.');
}
}
}
if($web_server_restart) { if($web_server_restart) {
$errors[]=array('error'=>'PHP modules have been installed, but they are still listed as missing?<br/>', $errors[]=array('error'=>'PHP modules have been installed, but they are still listed as missing?<br/>',
'hint'=>'Please ask your server administrator to restart the web server.'); 'hint'=>'Please ask your server administrator to restart the web server.');
@ -509,10 +496,10 @@ class OC_Util {
* @return array with sanitized strings or a single sanitized string, depends on the input parameter. * @return array with sanitized strings or a single sanitized string, depends on the input parameter.
*/ */
public static function sanitizeHTML( &$value ) { public static function sanitizeHTML( &$value ) {
if (is_array($value) || is_object($value)) { if (is_array($value)) {
array_walk_recursive($value, 'OC_Util::sanitizeHTML'); array_walk_recursive($value, 'OC_Util::sanitizeHTML');
} else { } else {
$value = htmlentities($value, ENT_QUOTES, 'UTF-8'); //Specify encoding for PHP<5.4 $value = htmlentities((string)$value, ENT_QUOTES, 'UTF-8'); //Specify encoding for PHP<5.4
} }
return $value; return $value;
} }
@ -569,11 +556,16 @@ class OC_Util {
if (!function_exists('curl_init')) { if (!function_exists('curl_init')) {
return true; return true;
} }
$settings = array( $settings = array(
'baseUri' => OC_Helper::linkToRemote('webdav'), 'baseUri' => OC_Helper::linkToRemote('webdav'),
); );
// save the old timeout so that we can restore it later
$old_timeout=ini_get("default_socket_timeout");
// use a 5 sec timeout for the check. Should be enough for local requests.
ini_set("default_socket_timeout", 5);
$client = new \Sabre_DAV_Client($settings); $client = new \Sabre_DAV_Client($settings);
$return = true; $return = true;
@ -587,6 +579,9 @@ class OC_Util {
$return = false; $return = false;
} }
// restore the original timeout
ini_set("default_socket_timeout", $old_timeout);
return $return; return $return;
} }

View File

@ -28,7 +28,7 @@ OC.search.showResults=function(results){
OC.search.hide(); OC.search.hide();
event.stopPropagation(); event.stopPropagation();
}); });
$(window).click(function(event){ $(document).click(function(event){
OC.search.hide(); OC.search.hide();
}); });
OC.search.lastResults=results; OC.search.lastResults=results;

View File

@ -42,9 +42,9 @@ $(document).ready(function(){
$.post( 'ajax/changedisplayname.php', post, function(data){ $.post( 'ajax/changedisplayname.php', post, function(data){
if( data.status == "success" ){ if( data.status == "success" ){
$('#displaynamechanged').show(); $('#displaynamechanged').show();
$('#oldDisplayName').val($('#displayName').val()); $('#oldDisplayName').text($('#displayName').val());
// update displayName on the top right expand button // update displayName on the top right expand button
$('#expandDisplayName').html($('#displayName').val()); $('#expandDisplayName').text($('#displayName').val());
} }
else{ else{
$('#newdisplayname').val(data.data.displayName) $('#newdisplayname').val(data.data.displayName)

View File

@ -39,6 +39,7 @@
"Forum" => "פורום", "Forum" => "פורום",
"Commercial Support" => "תמיכה בתשלום", "Commercial Support" => "תמיכה בתשלום",
"You have used <strong>%s</strong> of the available <strong>%s</strong>" => "השתמשת ב־<strong>%s</strong> מתוך <strong>%s</strong> הזמינים לך", "You have used <strong>%s</strong> of the available <strong>%s</strong>" => "השתמשת ב־<strong>%s</strong> מתוך <strong>%s</strong> הזמינים לך",
"Get the apps to sync your files" => "השג את האפליקציות על מנת לסנכרן את הקבצים שלך",
"Password" => "ססמה", "Password" => "ססמה",
"Your password was changed" => "הססמה שלך הוחלפה", "Your password was changed" => "הססמה שלך הוחלפה",
"Unable to change your password" => "לא ניתן לשנות את הססמה שלך", "Unable to change your password" => "לא ניתן לשנות את הססמה שלך",

View File

@ -1,3 +1,6 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Authentication error" => "ခွင့်ပြုချက်မအောင်မြင်" "Authentication error" => "ခွင့်ပြုချက်မအောင်မြင်",
"Security Warning" => "လုံခြုံရေးသတိပေးချက်",
"Password" => "စကားဝှက်",
"New password" => "စကားဝှက်အသစ်"
); );

66
tests/lib/app.php Normal file
View File

@ -0,0 +1,66 @@
<?php
/**
* Copyright (c) 2012 Bernhard Posselt <nukeawhale@gmail.com>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
class Test_App extends PHPUnit_Framework_TestCase {
public function testIsAppVersionCompatibleSingleOCNumber(){
$oc = array(4);
$app = '4.0';
$this->assertTrue(OC_App::isAppVersionCompatible($oc, $app));
}
public function testIsAppVersionCompatibleMultipleOCNumber(){
$oc = array(4, 3, 1);
$app = '4.3';
$this->assertTrue(OC_App::isAppVersionCompatible($oc, $app));
}
public function testIsAppVersionCompatibleSingleNumber(){
$oc = array(4);
$app = '4';
$this->assertTrue(OC_App::isAppVersionCompatible($oc, $app));
}
public function testIsAppVersionCompatibleSingleAppNumber(){
$oc = array(4, 3);
$app = '4';
$this->assertTrue(OC_App::isAppVersionCompatible($oc, $app));
}
public function testIsAppVersionCompatibleShouldFail(){
$oc = array(4, 3, 1);
$app = '4.3.2';
$this->assertFalse(OC_App::isAppVersionCompatible($oc, $app));
}
public function testIsAppVersionCompatibleShouldFailTwoVersionNumbers(){
$oc = array(4, 3, 1);
$app = '4.4';
$this->assertFalse(OC_App::isAppVersionCompatible($oc, $app));
}
public function testIsAppVersionCompatibleShouldFailOneVersionNumbers(){
$oc = array(4, 3, 1);
$app = '5';
$this->assertFalse(OC_App::isAppVersionCompatible($oc, $app));
}
}

View File

@ -91,9 +91,15 @@ class Test_DBSchema extends PHPUnit_Framework_TestCase {
break; break;
case 'pgsql': case 'pgsql':
$sql = "SELECT tablename AS table_name, schemaname AS schema_name " $sql = "SELECT tablename AS table_name, schemaname AS schema_name "
. "FROM pg_tables WHERE schemaname NOT LIKE 'pg_%' " . "FROM pg_tables WHERE schemaname NOT LIKE 'pg_%' "
. "AND schemaname != 'information_schema' " . "AND schemaname != 'information_schema' "
. "AND tablename = '".$table."'"; . "AND tablename = '".$table."'";
$query = OC_DB::prepare($sql);
$result = $query->execute(array());
$exists = $result && $result->fetchOne();
break;
case 'mssql':
$sql = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '{$table}'";
$query = OC_DB::prepare($sql); $query = OC_DB::prepare($sql);
$result = $query->execute(array()); $result = $query->execute(array());
$exists = $result && $result->fetchOne(); $exists = $result && $result->fetchOne();