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>
<licence>AGPL</licence>
<author>Robin Appelman</author>
<require>4.91</require>
<require>4.93</require>
<shipped>true</shipped>
<standalone/>
<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 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; }

View File

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

View File

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

View File

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

View File

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

View File

@ -5,7 +5,7 @@
<description>File sharing between users</description>
<licence>AGPL</licence>
<author>Michael Gapczynski</author>
<require>4.91</require>
<require>4.93</require>
<shipped>true</shipped>
<default_enable/>
<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))) {
$source = $this->fopen($path1, 'r');
$target = $this->fopen($path2, 'w');
return \OC_Helper::streamCopy($source, $target);
list ($count, $result) = \OC_Helper::streamCopy($source, $target);
return $result;
}
return false;
}

View File

@ -18,7 +18,7 @@
<type>text</type>
<default></default>
<notnull>true</notnull>
<length>50</length>
<length>250</length>
</field>
<field>
@ -26,7 +26,7 @@
<type>text</type>
<default></default>
<notnull>true</notnull>
<length>50</length>
<length>64</length>
</field>
<field>
@ -42,7 +42,7 @@
<type>text</type>
<default></default>
<notnull>true</notnull>
<length>200</length>
<length>512</length>
</field>
<field>
@ -89,4 +89,30 @@
</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>

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

View File

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

View File

@ -36,10 +36,12 @@ class Trashbin {
*/
public static function move2trash($file_path) {
$user = \OCP\User::getUser();
$view = new \OC_FilesystemView('/'. $user);
$view = new \OC\Files\View('/'. $user);
if (!$view->is_dir('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);
@ -54,50 +56,61 @@ class Trashbin {
} else {
$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.'/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) ) {
$query = \OC_DB::prepare("INSERT INTO *PREFIX*files_trash (id,timestamp,location,type,mime,user)"
." VALUES (?,?,?,?,?,?)");
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) VALUES (?,?,?,?,?,?)");
$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.
$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);
return;
}
// Take care of file versions
if ( \OCP\App::isEnabled('files_versions') ) {
if ( $view->is_dir('files_versions'.$file_path) ) {
$trashbinSize += self::calculateSize(
new \OC_FilesystemView('/'. $user.'/files_versions/'.$file_path)
);
$view->rename('files_versions'.$file_path, 'versions_trashbin/'. $deleted.'.d'.$timestamp);
} else if ( $versions = \OCA\Files_Versions\Storage::getVersions($file_path) ) {
$trashbinSize += self::calculateSize(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) ) {
foreach ($versions as $v) {
$trashbinSize += $view->filesize('files_versions'.$v['path'].'.v'.$v['version']);
$view->rename('files_versions'.$v['path'].'.v'.$v['version'],
'versions_trashbin/'. $deleted.'.v'.$v['version'].'.d'.$timestamp);
$view->rename('files_versions'.$v['path'].'.v'.$v['version'], 'files_trashbin/versions'. $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 {
\OC_Log::write('files_trashbin', 'Couldn\'t move '.$file_path.' to the trash bin', \OC_log::ERROR);
}
// get available disk space for user
$quota = \OCP\Util::computerFileSize(\OC_Preferences::getValue($user, 'files', 'quota'));
if ( $quota == null ) {
$quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota'));
$quota = \OC_Preferences::getValue($user, 'files', 'quota');
if ( $quota === null ) {
$quota = \OC_Appconfig::getValue('files', 'default_quota');
}
if ( $quota == null ) {
$quota = \OC\Files\Filesystem::free_space('/');
if ( $quota === null ) {
$quota = \OC\Files\Filesystem::free_space('/') / count(\OCP\User::getUsers());
} else {
$quota = \OCP\Util::computerFileSize($quota);
}
// calculate available space for trash bin
$rootInfo = $view->getFileInfo('/files');
$free = $quota-$rootInfo['size']; // remaining free space for user
@ -106,9 +119,10 @@ class Trashbin {
} else {
$availableSpace = $free-$trashbinSize;
}
$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) {
$user = \OCP\User::getUser();
$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.'/versions_trashbin'));
}
if ( $timestamp ) {
$query = \OC_DB::prepare('SELECT location,type FROM *PREFIX*files_trash'
@ -143,15 +157,15 @@ class Trashbin {
$location = '';
}
} else {
$path_parts = pathinfo($filename);
$path_parts = pathinfo($file);
$result[] = array(
'location' => $path_parts['dirname'],
'type' => $view->is_dir('/files_trashbin/'.$file) ? 'dir' : 'files',
'type' => $view->is_dir('/files_trashbin/files/'.$file) ? 'dir' : 'files',
);
$location = '';
}
$source = \OC_Filesystem::normalizePath('files_trashbin/'.$file);
$source = \OC_Filesystem::normalizePath('files_trashbin/files/'.$file);
$target = \OC_Filesystem::normalizePath('files/'.$location.'/'.$filename);
// we need a extension in case a file/dir with the same name already exists
@ -171,33 +185,49 @@ class Trashbin {
} else {
$versionedFile = $file;
}
if ( $result[0]['type'] == 'dir' ) {
$trashbinSize -= self::calculateSize(
new \OC_FilesystemView('/'.$user.'/'.'versions_trashbin/'. $file)
);
$view->rename(\OC_Filesystem::normalizePath('versions_trashbin/'. $file),
\OC_Filesystem::normalizePath('files_versions/'.$location.'/'.$filename.$ext));
if ( $result[0]['type'] === 'dir' ) {
$trashbinSize -= self::calculateSize(new \OC_FilesystemView('/'.$user.'/'.'files_trashbin/versions/'. $file));
$view->rename(\OC_Filesystem::normalizePath('files_trashbin/versions/'. $file), \OC_Filesystem::normalizePath('files_versions/'.$location.'/'.$filename.$ext));
} else if ( $versions = self::getVersionsFromTrash($versionedFile, $timestamp) ) {
foreach ($versions as $v) {
if ($timestamp ) {
$trashbinSize -= $view->filesize('versions_trashbin/'.$versionedFile.'.v'.$v.'.d'.$timestamp);
$view->rename('versions_trashbin/'.$versionedFile.'.v'.$v.'.d'.$timestamp,
'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v);
$trashbinSize -= $view->filesize('files_trashbin/versions/'.$versionedFile.'.v'.$v.'.d'.$timestamp);
$view->rename('files_trashbin/versions/'.$versionedFile.'.v'.$v.'.d'.$timestamp, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v);
} else {
$trashbinSize -= $view->filesize('versions_trashbin/'.$versionedFile.'.v'.$v);
$view->rename('versions_trashbin/'.$versionedFile.'.v'.$v,
'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v);
$trashbinSize -= $view->filesize('files_trashbin/versions/'.$versionedFile.'.v'.$v);
$view->rename('files_trashbin/versions/'.$versionedFile.'.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 ) {
$query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?');
$query->execute(array($user,$filename,$timestamp));
}
\OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize);
self::setTrashbinSize($user, $trashbinSize);
return true;
} else {
\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();
$view = new \OC_FilesystemView('/'.$user);
$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.'/versions_trashbin'));
}
if ( $timestamp ) {
@ -231,31 +261,50 @@ class Trashbin {
}
if ( \OCP\App::isEnabled('files_versions') ) {
if ($view->is_dir('versions_trashbin/'.$file)) {
$size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/versions_trashbin/'.$file));
$view->unlink('versions_trashbin/'.$file);
if ($view->is_dir('files_trashbin/versions/'.$file)) {
$size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/files_trashbin/versions/'.$file));
$view->unlink('files_trashbin/versions/'.$file);
} else if ( $versions = self::getVersionsFromTrash($filename, $timestamp) ) {
foreach ($versions as $v) {
if ($timestamp ) {
$size += $view->filesize('/versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp);
$view->unlink('/versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp);
$size += $view->filesize('/files_trashbin/versions/'.$filename.'.v'.$v.'.d'.$timestamp);
$view->unlink('/files_trashbin/versions/'.$filename.'.v'.$v.'.d'.$timestamp);
} else {
$size += $view->filesize('/versions_trashbin/'.$filename.'.v'.$v);
$view->unlink('/versions_trashbin/'.$filename.'.v'.$v);
$size += $view->filesize('/files_trashbin/versions/'.$filename.'.v'.$v);
$view->unlink('/files_trashbin/versions/'.$filename.'.v'.$v);
}
}
}
}
if ($view->is_dir('/files_trashbin/'.$file)) {
$size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/files_trashbin/'.$file));
// Take care of encryption keys
$parts = pathinfo($file);
if ( $view->is_dir('/files_trashbin/files/'.$file) ) {
$keyfile = \OC_Filesystem::normalizePath('files_trashbin/keyfiles/'.$filename);
} 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;
\OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize);
self::setTrashbinSize($user, $trashbinSize);
return $size;
}
@ -275,7 +324,7 @@ class Trashbin {
$filename = $filename;
}
$target = \OC_Filesystem::normalizePath('files_trashbin/'.$filename);
$target = \OC_Filesystem::normalizePath('files_trashbin/files/'.$filename);
return $view->file_exists($target);
}
@ -301,31 +350,9 @@ class Trashbin {
$timestamp = $r['timestamp'];
$filename = $r['id'];
if ( $r['timestamp'] < $limit ) {
if ($view->is_dir('files_trashbin/'.$filename.'.d'.$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);
}
}
$size += self::delete($filename, $timestamp);
}
}
$query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND timestamp<?');
$query->execute(array($user,$limit));
$availableSpace = $availableSpace + $size;
// if size limit for trash bin reached, delete oldest files in trash bin
if ($availableSpace < 0) {
@ -341,6 +368,7 @@ class Trashbin {
$i++;
}
}
return $size;
@ -382,7 +410,7 @@ class Trashbin {
* @param $timestamp timestamp when the file was deleted
*/
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);
$versions = array();
if ($timestamp ) {
@ -449,4 +477,35 @@ class Trashbin {
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 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>
<?php endif; ?>

View File

@ -1,11 +1,11 @@
<?php
OCP\JSON::checkAppEnabled('files_versions');
$userDirectory = "/".OCP\USER::getUser()."/files";
$source = $_GET['source'];
list ($uid, $filename) = OCA\Files_Versions\Storage::getUidAndFilename($source);
$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();

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>
<licence>AGPL</licence>
<author>Frank Karlitschek</author>
<require>4.91</require>
<require>4.93</require>
<shipped>true</shipped>
<description>Versioning of files</description>
<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),
);
private static function getUidAndFilename($filename) {
public static function getUidAndFilename($filename) {
$uid = \OC\Files\Filesystem::getOwner($filename);
\OC\Files\Filesystem::initMountPoints($uid);
if ( $uid != \OCP\User::getUser() ) {
@ -46,6 +46,37 @@ class Storage {
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.
*/
@ -74,17 +105,19 @@ class Storage {
}
// store a new version of a file
$result = $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
$users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
$versionsSize = self::getVersionsSize($uid);
if ( $versionsSize === false || $versionSize < 0 ) {
$versionsSize = self::calculateSize($uid);
}
$versionsSize += $users_view->filesize('files'.$filename);
// expire old revisions if necessary
$newSize = self::expire($filename, $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';
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);
}
foreach ($versions as $v) {
unlink($abs_path . $v['version']);
$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');
// get available disk space for user
$quota = \OCP\Util::computerFileSize(\OC_Preferences::getValue($uid, 'files', 'quota'));
if ( $quota == null ) {
$quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota'));
$quota = \OC_Preferences::getValue($uid, 'files', 'quota');
if ( $quota === null ) {
$quota = \OC_Appconfig::getValue('files', 'default_quota');
}
if ( $quota == null ) {
$quota = \OC\Files\Filesystem::free_space('/');
if ( $quota === null ) {
$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
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);
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -4,14 +4,14 @@
:: @author Thomas Müller
:: @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
set DATADIR=data-autotest
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 $AUTOCONFIG ^= array ^( >> .\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 ^)^; >> .\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
::
:: start test execution
::
::call:execute_tests "sqlite"
call:execute_tests "mysql"
::call:execute_tests "mssql"
::call:execute_tests "ora"
::call:execute_tests "pgsql"
if [%1] == [] (
echo "Running on all database backends"
call:execute_tests "sqlite"
call:execute_tests "mysql"
call:execute_tests "mssql"
::call:execute_tests "ora"
call:execute_tests "pgsql"
) else (
call:execute_tests "%1"
)
goto:eof
@ -83,6 +102,9 @@ goto:eof
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
:: 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 /y %BASEDIR%\tests\autoconfig-%~1.php %BASEDIR%\config\autoconfig.php
@ -96,9 +118,8 @@ goto:eof
rmdir /s /q coverage-html-%~1
md coverage-html-%~1
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.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-autotest.xml --log-junit autotest-results-%~1.xml --coverage-clover autotest-clover-%~1.xml --coverage-html coverage-html-%~1
echo "Done with testing %~1 ..."
cd %BASEDIR%
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):
:: 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){
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);
});

View File

@ -5,6 +5,7 @@ $(document).ready(function() {
mysql:!!$('#hasMySQL').val(),
postgresql:!!$('#hasPostgreSQL').val(),
oracle:!!$('#hasOracle').val(),
mssql:!!$('#hasMSSQL').val()
};
$('#selectDbType').buttonset();
@ -41,6 +42,12 @@ $(document).ready(function() {
$('#dbhost').show(250);
$('#dbhostlabel').show(250);
});
$('#mssql').click(function() {
$('#use_other_db').slideDown(250);
$('#dbhost').show(250);
$('#dbhostlabel').show(250);
});
$('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",
"Category type not provided." => "סוג הקטגוריה לא סופק.",
"No category to add?" => "אין קטגוריה להוספה?",
"This category already exists: %s" => "הקטגוריה הבאה כבר קיימת: %s",
"Object type not provided." => "סוג הפריט לא סופק.",
"%s ID not provided." => "מזהה %s לא סופק.",
"Error adding %s to favorites." => "אירעה שגיאה בעת הוספת %s למועדפים.",
@ -52,6 +53,7 @@
"Error" => "שגיאה",
"The app name is not specified." => "שם היישום לא צוין.",
"The required file {file} is not installed!" => "הקובץ הנדרש {file} אינו מותקן!",
"Shared" => "שותף",
"Share" => "שתף",
"Error while sharing" => "שגיאה במהלך השיתוף",
"Error while unsharing" => "שגיאה במהלך ביטול השיתוף",
@ -82,6 +84,8 @@
"Error setting expiration date" => "אירעה שגיאה בעת הגדרת תאריך התפוגה",
"Sending ..." => "מתבצעת שליחה ...",
"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",
"Use the following link to reset your password: {link}" => "יש להשתמש בקישור הבא כדי לאפס את הססמה שלך: {link}",
"You will receive a link to reset your password via Email." => "יישלח לתיבת הדוא״ל שלך קישור לאיפוס הססמה.",
@ -105,6 +109,8 @@
"Security Warning" => "אזהרת אבטחה",
"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." => "ללא מחולל מספרים אקראיים מאובטח תוקף יכול לנבא את מחרוזות איפוס הססמה ולהשתלט על החשבון שלך.",
"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>",
"Advanced" => "מתקדם",
"Data folder" => "תיקיית נתונים",
@ -124,6 +130,7 @@
"Lost your password?" => "שכחת את ססמתך?",
"remember" => "שמירת הססמה",
"Log in" => "כניסה",
"Alternative Logins" => "כניסות אלטרנטיביות",
"prev" => "הקודם",
"next" => "הבא",
"Updating ownCloud to version %s, this may take a while." => "מעדכן את ownCloud אל גרסא %s, זה עלול לקחת זמן מה."

View File

@ -1,4 +1,18 @@
<?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" => "စက္ကန့်အနည်းငယ်က",
"1 minute ago" => "၁ မိနစ်အရင်က",
"1 hour ago" => "၁ နာရီ အရင်က",
@ -7,7 +21,44 @@
"last month" => "ပြီးခဲ့သောလ",
"last year" => "မနှစ်က",
"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" => "သုံးစွဲသူ",
"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');
$hasPostgreSQL = is_callable('pg_connect');
$hasOracle = is_callable('oci_connect');
$hasMSSQL = is_callable('sqlsrv_connect');
$datadir = OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data');
// Protect data directory here, so we can test if the protection is working
@ -26,6 +27,7 @@ $opts = array(
'hasMySQL' => $hasMySQL,
'hasPostgreSQL' => $hasPostgreSQL,
'hasOracle' => $hasOracle,
'hasMSSQL' => $hasMSSQL,
'directory' => $datadir,
'secureRNG' => OC_Util::secureRNG_available(),
'htaccessWorking' => OC_Util::ishtaccessworking(),

View File

@ -2,6 +2,7 @@
<input type='hidden' id='hasSQLite' value='<?php echo $_['hasSQLite'] ?>'>
<input type='hidden' id='hasPostgreSQL' value='<?php echo $_['hasPostgreSQL'] ?>'>
<input type='hidden' id='hasOracle' value='<?php echo $_['hasOracle'] ?>'>
<input type='hidden' id='hasMSSQL' value='<?php echo $_['hasMSSQL'] ?>'>
<form action="index.php" method="post">
<input type="hidden" name="install" value="true" />
<?php if(count($_['errors']) > 0): ?>
@ -60,7 +61,7 @@
</fieldset>
<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 ?>
<legend><?php echo $l->t( 'Configure the database' ); ?></legend>
<div id="selectDbType">
@ -78,7 +79,7 @@
<?php if($_['hasMySQL']): ?>
<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>
<input type="hidden" id="dbtype" name="dbtype" value="mysql" />
<?php else: ?>
@ -89,7 +90,7 @@
<?php endif; ?>
<?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>
<input type="hidden" id="dbtype" name="dbtype" value="pgsql" />
<?php else: ?>
@ -100,7 +101,7 @@
<?php endif; ?>
<?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>
<input type="hidden" id="dbtype" name="dbtype" value="oci" />
<?php else: ?>
@ -109,6 +110,17 @@
<?php OC_Helper::init_radio('dbtype', 'oci', 'sqlite'); ?>/>
<?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>
<?php if($hasOtherDB): ?>

View File

@ -34,7 +34,7 @@
<ul id="settings" class="svg">
<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'); ?>" />
</span>
<div id="expanddiv">

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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
msgid "Password"
msgstr ""
msgstr "စကားဝှက်"
#: templates/authenticate.php:6
msgid "Submit"
msgstr ""
#: templates/public.php:9
#: templates/public.php:10
#, php-format
msgid "%s shared the folder %s with you"
msgstr ""
#: templates/public.php:11
#: templates/public.php:13
#, php-format
msgid "%s shared the file %s with you"
msgstr ""
#: templates/public.php:14 templates/public.php:30
#: templates/public.php:19 templates/public.php:37
msgid "Download"
msgstr ""
#: templates/public.php:29
#: templates/public.php:34
msgid "No preview available for"
msgstr ""
#: templates/public.php:35
#: templates/public.php:43
msgid "web services under your control"
msgstr ""
msgstr "သင်၏ထိန်းချုပ်မှု့အောက်တွင်ရှိသော Web services"

View File

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

View File

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

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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
msgid "Password"
msgstr ""
msgstr "စကားဝှက်"
#: templates/settings.php:36
msgid "For anonymous access, leave DN and Password empty."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ownCloud Core 5.0.0\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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
$info=OC_App::getAppInfo($app);
$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',
'App "'.$info['name'].'" can\'t be installed because it is'
.' not compatible with this version of ownCloud',
@ -851,7 +851,7 @@ class OC_App{
foreach($apps as $app) {
// check if the app is compatible with this version of ownCloud
$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',
'App "'.$info['name'].'" ('.$app.') can\'t be used because it is'
.' 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
*/

View File

@ -320,8 +320,21 @@ class OC {
// set the session name to the instance id - which is unique
session_name(OC_Util::getInstanceId());
// (re)-initialize session
session_start();
// if session cant be started break with http 500 error
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
if (!isset($_SESSION['SID_CREATED'])) {

View File

@ -178,6 +178,13 @@ class OC_DB {
$dsn = 'oci:dbname=//' . $host . '/' . $name;
}
break;
case 'mssql':
if ($port) {
$dsn='sqlsrv:Server='.$host.','.$port.';Database='.$name;
} else {
$dsn='sqlsrv:Server='.$host.';Database='.$name;
}
break;
default:
return false;
}
@ -278,6 +285,15 @@ class OC_DB {
$dsn['database'] = $user;
}
break;
case 'mssql':
$dsn = array(
'phptype' => 'sqlsrv',
'username' => $user,
'password' => $pass,
'hostspec' => $host,
'database' => $name
);
break;
default:
return false;
}
@ -389,6 +405,13 @@ class OC_DB {
$query = self::prepare('SELECT lastval() AS id');
$row = $query->execute()->fetchRow();
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{
if($table !== null) {
$prefix = OC_Config::getValue( "dbtableprefix", "oc_" );
@ -631,7 +654,7 @@ class OC_DB {
} else {
return true;
}
} elseif( $type == 'pgsql' || $type == 'oci' || $type == 'mysql') {
} elseif( $type == 'pgsql' || $type == 'oci' || $type == 'mysql' || $type == 'mssql') {
$query = 'INSERT INTO `' .$table . '` ('
. implode(',', array_keys($input)) . ') SELECT \''
. implode('\',\'', array_values($input)) . '\' FROM ' . $table . ' WHERE ';
@ -691,7 +714,15 @@ class OC_DB {
}elseif( $type == 'oci' ) {
$query = str_replace( '`', '"', $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
$query = str_replace( '*PREFIX*', $prefix, $query );
@ -699,6 +730,60 @@ class OC_DB {
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
* @param string $tableName the table to drop
@ -850,19 +935,119 @@ class PDOStatementWrapper{
* make execute return the result instead of a bool
*/
public function execute($input=array()) {
$this->lastArguments=$input;
if(count($input)>0) {
$this->lastArguments = $input;
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);
}else{
} else {
$result=$this->statement->execute();
}
if($result) {
if ($result) {
return $this;
}else{
} else {
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
*/

View File

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

View File

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

View File

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

View File

@ -513,11 +513,16 @@ class OC_Helper {
if(!$source or !$target) {
return false;
}
$count=0;
$result = true;
$count = 0;
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" => "အကူအညီ",
"Users" => "သုံးစွဲသူ",
"Apps" => "Apps",
"Admin" => "အက်ဒမင်",
"ZIP download is turned off." => "ZIP ဒေါင်းလုတ်ကိုပိတ်ထားသည်",
"Files need to be downloaded one by one." => "ဖိုင်များသည် တစ်ခုပြီး တစ်ခုဒေါင်းလုတ်ချရန်လိုအပ်သည်",
"Back to Files" => "ဖိုင်သို့ပြန်သွားမည်",

View File

@ -62,7 +62,8 @@ class Files {
* @return int the number of bytes copied
*/
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.');
}
if($dbtype=='mysql' or $dbtype == 'pgsql' or $dbtype == 'oci') { //mysql and postgresql needs more config options
if($dbtype=='mysql')
if($dbtype == 'mysql' or $dbtype == 'pgsql' or $dbtype == 'oci' or $dbtype == 'mssql') { //mysql and postgresql needs more config options
if($dbtype == 'mysql')
$dbprettyname = 'MySQL';
else if($dbtype=='pgsql')
else if($dbtype == 'pgsql')
$dbprettyname = 'PostgreSQL';
else if ($dbtype == 'mssql')
$dbprettyname = 'MS SQL Server';
else
$dbprettyname = 'Oracle';
@ -152,6 +154,29 @@ class OC_Setup {
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 {
//delete the old sqlite database first, might cause infinte loops otherwise
if(file_exists("$datadir/owncloud.db")) {
@ -256,11 +281,12 @@ class OC_Setup {
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(mysql_error($connection))) . '<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'";
//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) {
@ -359,7 +385,7 @@ class OC_Setup {
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<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)) {
//The database does not exists... let's create it
@ -368,11 +394,11 @@ class OC_Setup {
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s"', array($query)) . '<br />';
echo($entry);
\OC_Log::write('setup.pg', $entry, \OC_Log::WARN);
}
else {
$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) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<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)) {
@ -396,7 +422,7 @@ class OC_Setup {
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<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
@ -405,7 +431,7 @@ class OC_Setup {
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(pg_last_error($connection))) . '<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) {
$entry = $l->t('DB Error: "%s"', array(oci_last_error($connection))) . '<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);
if($result) {
@ -498,9 +524,9 @@ class OC_Setup {
$un = $dbtableprefix.'users';
oci_bind_by_name($stmt, ':un', $un);
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 />';
echo($entry);
\OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
}
$result = oci_execute($stmt);
@ -526,14 +552,14 @@ class OC_Setup {
if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<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);
$result = oci_execute($stmt);
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<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)) {
@ -544,7 +570,7 @@ class OC_Setup {
if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<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);
$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('Offending command was: "%s", name: %s, password: %s',
array($query, $name, $password)) . '<br />';
echo($entry);
\OC_Log::write('setup.oci', $entry, \OC_Log::WARN);
}
} else { // change password of the existing role
$query = "ALTER USER :un IDENTIFIED BY :pw";
@ -560,7 +586,7 @@ class OC_Setup {
if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<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, ':pw', $password);
@ -568,26 +594,200 @@ class OC_Setup {
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<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;
$stmt = oci_parse($connection, $query);
if (!$stmt) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<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);
if(!$result) {
$entry = $l->t('DB Error: "%s"', array(oci_error($connection))) . '<br />';
$entry .= $l->t('Offending command was: "%s", name: %s, password: %s',
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
*/

View File

@ -413,11 +413,6 @@ class OC_Template{
if( $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
$page->assign('headers', $this->headers, false);
@ -530,8 +525,10 @@ class OC_Template{
* @param string $hint An option hint message
*/
public static function printErrorPage( $error_msg, $hint = '' ) {
$content = new OC_Template( '', 'error', 'error' );
$errors = array(array('error' => $error_msg, 'hint' => $hint));
OC_Template::printGuestPage("", "error", array("errors" => $errors));
$content->assign( 'errors', $errors, false );
$content->printPage();
die();
}
}

View File

@ -31,7 +31,7 @@ class OC_TemplateLayout extends OC_Template {
}
$user_displayname = OC_User::getDisplayName();
$this->assign( 'user_displayname', $user_displayname );
} else if ($renderas == 'guest') {
} else if ($renderas == 'guest' || $renderas == 'error') {
parent::__construct('core', 'layout.guest');
} else {
parent::__construct('core', 'layout.base');
@ -39,7 +39,7 @@ class OC_TemplateLayout extends OC_Template {
// Add the js files
$jsfiles = self::findJavascriptFiles(OC_Util::$scripts);
$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'));
}
if (!empty(OC_Util::$core_scripts)) {

View File

@ -75,7 +75,7 @@ class OC_Util {
public static function getVersion() {
// hint: We only can count up. Reset minor/patchlevel when
// updating major/minor version number.
return array(4, 93, 10);
return array(4, 94, 10);
}
/**
@ -83,7 +83,7 @@ class OC_Util {
* @return string
*/
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;
}
$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) {
$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.');
@ -509,10 +496,10 @@ class OC_Util {
* @return array with sanitized strings or a single sanitized string, depends on the input parameter.
*/
public static function sanitizeHTML( &$value ) {
if (is_array($value) || is_object($value)) {
if (is_array($value)) {
array_walk_recursive($value, 'OC_Util::sanitizeHTML');
} 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;
}
@ -569,11 +556,16 @@ class OC_Util {
if (!function_exists('curl_init')) {
return true;
}
$settings = array(
'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);
$return = true;
@ -587,6 +579,9 @@ class OC_Util {
$return = false;
}
// restore the original timeout
ini_set("default_socket_timeout", $old_timeout);
return $return;
}

View File

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

View File

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

View File

@ -39,6 +39,7 @@
"Forum" => "פורום",
"Commercial Support" => "תמיכה בתשלום",
"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" => "ססמה",
"Your password was changed" => "הססמה שלך הוחלפה",
"Unable to change your password" => "לא ניתן לשנות את הססמה שלך",

View File

@ -1,3 +1,6 @@
<?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;
case 'pgsql':
$sql = "SELECT tablename AS table_name, schemaname AS schema_name "
. "FROM pg_tables WHERE schemaname NOT LIKE 'pg_%' "
. "AND schemaname != 'information_schema' "
. "AND tablename = '".$table."'";
. "FROM pg_tables WHERE schemaname NOT LIKE 'pg_%' "
. "AND schemaname != 'information_schema' "
. "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);
$result = $query->execute(array());
$exists = $result && $result->fetchOne();