diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2014-04-03 17:04:16 +0200 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2014-04-03 17:04:16 +0200 |
commit | 14a53819777f5cb829aa15f8d749c9ae71d39b4e (patch) | |
tree | bd32bfd88a60ac20a7d5a00a559fffb705a9279e | |
parent | c0ebc1dfb1108b7cbe0fa134def00aa6ce0066b3 (diff) | |
parent | e2969062ca172b46713653ac243bb849a54ca7d7 (diff) | |
download | nextcloud-server-14a53819777f5cb829aa15f8d749c9ae71d39b4e.tar.gz nextcloud-server-14a53819777f5cb829aa15f8d749c9ae71d39b4e.zip |
Merge branch 'master' into fs-backend-registration
Conflicts:
apps/files_external/templates/settings.php
-rw-r--r-- | apps/files_external/lib/webdav.php | 2 | ||||
-rw-r--r-- | apps/files_external/templates/settings.php | 294 | ||||
-rw-r--r-- | tests/lib/files/storage/storage.php | 21 |
3 files changed, 172 insertions, 145 deletions
diff --git a/apps/files_external/lib/webdav.php b/apps/files_external/lib/webdav.php index b43c65e8e6c..dc98dcfb808 100644 --- a/apps/files_external/lib/webdav.php +++ b/apps/files_external/lib/webdav.php @@ -267,7 +267,7 @@ class DAV extends \OC\Files\Storage\Common { $curl = curl_init(); curl_setopt($curl, CURLOPT_USERPWD, $this->user . ':' . $this->password); - curl_setopt($curl, CURLOPT_URL, $this->createBaseUri() . str_replace(' ', '%20', $target)); + curl_setopt($curl, CURLOPT_URL, $this->createBaseUri() . $this->encodePath($target)); curl_setopt($curl, CURLOPT_BINARYTRANSFER, true); curl_setopt($curl, CURLOPT_INFILE, $source); // file pointer curl_setopt($curl, CURLOPT_INFILESIZE, filesize($path)); diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php index 84d9d3408d1..0d04e35e7fe 100644 --- a/apps/files_external/templates/settings.php +++ b/apps/files_external/templates/settings.php @@ -1,162 +1,170 @@ -<form id="files_external"> - <fieldset class="personalblock"> - <legend><strong><?php p($l->t('External Storage')); ?></strong></legend> - <table id="externalStorage" data-admin='<?php print_unescaped(json_encode($_['isAdminPage'])); ?>'> - <thead> +<form id="files_external" class="section"> + <h2><?php p($l->t('External Storage')); ?></h2> + <?php if (isset($_['dependencies']) and ($_['dependencies']<>'')) print_unescaped(''.$_['dependencies'].''); ?> + <table id="externalStorage" class="grid" data-admin='<?php print_unescaped(json_encode($_['isAdminPage'])); ?>'> + <thead> <tr> <th></th> <th><?php p($l->t('Folder name')); ?></th> <th><?php p($l->t('External storage')); ?></th> <th><?php p($l->t('Configuration')); ?></th> <!--<th><?php p($l->t('Options')); ?></th> --> - <?php if ($_['isAdminPage']) print_unescaped('<th>'.$l->t('Applicable').'</th>'); ?> + <?php if ($_['isAdminPage']) print_unescaped('<th>'.$l->t('Available for').'</th>'); ?> <th> </th> </tr> - </thead> - <tbody width="100%"> - <?php $_['mounts'] = array_merge($_['mounts'], array('' => array())); ?> - <?php foreach ($_['mounts'] as $mountPoint => $mount): ?> - <tr <?php print_unescaped(($mountPoint != '') ? 'class="'.OC_Util::sanitizeHTML($mount['class']).'"' : 'id="addMountPoint"'); ?>> - <td class="status"> - <?php if (isset($mount['status'])): ?> - <span class="<?php p(($mount['status']) ? 'success' : 'error'); ?>"></span> - <?php endif; ?> + </thead> + <tbody width="100%"> + <?php $_['mounts'] = array_merge($_['mounts'], array('' => array())); ?> + <?php foreach ($_['mounts'] as $mount): ?> + <tr <?php print_unescaped(isset($mount['mountpoint']) ? 'class="'.OC_Util::sanitizeHTML($mount['class']).'"' : 'id="addMountPoint"'); ?>> + <td class="status"> + <?php if (isset($mount['status'])): ?> + <span class="<?php p(($mount['status']) ? 'success' : 'error'); ?>"></span> + <?php endif; ?> + </td> + <td class="mountPoint"><input type="text" name="mountPoint" + value="<?php p(isset($mount['mountpoint']) ? $mount['mountpoint'] : ''); ?>" + placeholder="<?php p($l->t('Folder name')); ?>" /></td> + <?php if (!isset($mount['mountpoint'])): ?> + <td class="backend"> + <select id="selectBackend" data-configurations='<?php print_unescaped(json_encode($_['backends'])); ?>'> + <option value="" disabled selected + style="display:none;"><?php p($l->t('Add storage')); ?></option> + <?php foreach ($_['backends'] as $class => $backend): ?> + <option value="<?php p($class); ?>"><?php p($backend['backend']); ?></option> + <?php endforeach; ?> + </select> </td> - <td class="mountPoint"><input type="text" name="mountPoint" - value="<?php p($mountPoint); ?>" - placeholder="<?php p($l->t('Folder name')); ?>" /></td> - <?php if ($mountPoint == ''): ?> - <td class="backend"> - <select id="selectBackend" data-configurations='<?php print_unescaped(json_encode($_['backends'])); ?>'> - <option value="" disabled selected - style="display:none;"><?php p($l->t('Add storage')); ?></option> - <?php foreach ($_['backends'] as $class => $backend): ?> - <option value="<?php p($class); ?>"><?php p($backend['backend']); ?></option> - <?php endforeach; ?> - </select> - </td> - <?php else: ?> - <td class="backend" - data-class="<?php p($mount['class']); ?>"><?php p($mount['backend']); ?></td> - <?php endif; ?> - <td class ="configuration" width="100%"> - <?php if (isset($mount['configuration'])): ?> - <?php foreach ($mount['configuration'] as $parameter => $value): ?> - <?php if (isset($_['backends'][$mount['class']]['configuration'][$parameter])): ?> - <?php $placeholder = $_['backends'][$mount['class']]['configuration'][$parameter]; ?> - <?php if (strpos($placeholder, '*') !== false): ?> - <input type="password" - data-parameter="<?php p($parameter); ?>" - value="<?php p($value); ?>" - placeholder="<?php p(substr($placeholder, 1)); ?>" /> - <?php elseif (strpos($placeholder, '!') !== false): ?> - <label><input type="checkbox" - data-parameter="<?php p($parameter); ?>" - <?php if ($value == 'true'): ?> checked="checked"<?php endif; ?> - /><?php p(substr($placeholder, 1)); ?></label> - <?php elseif (strpos($placeholder, '&') !== false): ?> - <input type="text" - class="optional" - data-parameter="<?php p($parameter); ?>" - value="<?php p($value); ?>" - placeholder="<?php p(substr($placeholder, 5)); ?>" /> - <?php elseif (strpos($placeholder, '#') !== false): ?> - <input type="hidden" - data-parameter="<?php p($parameter); ?>" - value="<?php p($value); ?>" /> - <?php else: ?> - <input type="text" - data-parameter="<?php p($parameter); ?>" - value="<?php p($value); ?>" - placeholder="<?php p($placeholder); ?>" /> - <?php endif; ?> + <?php else: ?> + <td class="backend" + data-class="<?php p($mount['class']); ?>"><?php p($mount['backend']); ?></td> + <?php endif; ?> + <td class ="configuration" width="100%"> + <?php if (isset($mount['options'])): ?> + <?php foreach ($mount['options'] as $parameter => $value): ?> + <?php if (isset($_['backends'][$mount['class']]['configuration'][$parameter])): ?> + <?php + $placeholder = $_['backends'][$mount['class']]['configuration'][$parameter]; + $is_optional = FALSE; + if (strpos($placeholder, '&') === 0) { + $is_optional = TRUE; + $placeholder = substr($placeholder, 1); + } + ?> + <?php if (strpos($placeholder, '*') === 0): ?> + <input type="password" + <?php if ($is_optional): ?> class="optional"<?php endif; ?> + data-parameter="<?php p($parameter); ?>" + value="<?php p($value); ?>" + placeholder="<?php p(substr($placeholder, 1)); ?>" /> + <?php elseif (strpos($placeholder, '!') === 0): ?> + <label><input type="checkbox" + data-parameter="<?php p($parameter); ?>" + <?php if ($value == 'true'): ?> checked="checked"<?php endif; ?> + /><?php p(substr($placeholder, 1)); ?></label> + <?php elseif (strpos($placeholder, '#') === 0): ?> + <input type="hidden" + data-parameter="<?php p($parameter); ?>" + value="<?php p($value); ?>" /> + <?php else: ?> + <input type="text" + <?php if ($is_optional): ?> class="optional"<?php endif; ?> + data-parameter="<?php p($parameter); ?>" + value="<?php p($value); ?>" + placeholder="<?php p($placeholder); ?>" /> <?php endif; ?> - <?php endforeach; ?> - <?php if (isset($_['backends'][$mount['class']]['custom']) && !in_array('files_external/js/'.$_['backends'][$mount['class']]['custom'], \OC_Util::$scripts)): ?> - <?php OCP\Util::addScript('files_external', $_['backends'][$mount['class']]['custom']); ?> <?php endif; ?> + <?php endforeach; ?> + <?php if (isset($_['backends'][$mount['class']]['custom']) && !in_array('files_external/js/'.$_['backends'][$mount['class']]['custom'], \OC_Util::$scripts)): ?> + <?php OCP\Util::addScript('files_external', $_['backends'][$mount['class']]['custom']); ?> <?php endif; ?> - </td> - <?php if ($_['isAdminPage']): ?> - <td class="applicable" - align="right" - data-applicable-groups='<?php if (isset($mount['applicable']['groups'])) - print_unescaped(json_encode($mount['applicable']['groups'])); ?>' - data-applicable-users='<?php if (isset($mount['applicable']['users'])) - print_unescaped(json_encode($mount['applicable']['users'])); ?>'> - <select class="chzn-select" - multiple style="width:20em;" - data-placeholder="<?php p($l->t('None set')); ?>"> - <option value="all" <?php if (isset($mount['applicable']['users']) && in_array('all', $mount['applicable']['users'])) print_unescaped('selected="selected"');?> ><?php p($l->t('All Users')); ?></option> - <optgroup label="<?php p($l->t('Groups')); ?>"> - <?php foreach ($_['groups'] as $group): ?> - <option value="<?php p($group); ?>(group)" - <?php if (isset($mount['applicable']['groups']) && in_array($group, $mount['applicable']['groups'])): ?> - selected="selected" - <?php endif; ?>><?php p($group); ?></option> - <?php endforeach; ?> - </optgroup> - <optgroup label="<?php p($l->t('Users')); ?>"> - <?php foreach ($_['users'] as $user): ?> - <option value="<?php p($user); ?>" - <?php if (isset($mount['applicable']['users']) && in_array($user, $mount['applicable']['users'])): ?> - selected="selected" - <?php endif; ?>><?php p($_['userDisplayNames'][$user]); ?></option> - <?php endforeach; ?> - </optgroup> - </select> - </td> <?php endif; ?> - <td <?php if ($mountPoint != ''): ?>class="remove" - <?php else: ?>style="visibility:hidden;" - <?php endif ?>><img alt="<?php p($l->t('Delete')); ?>" - title="<?php p($l->t('Delete')); ?>" - class="svg action" - src="<?php print_unescaped(image_path('core', 'actions/delete.svg')); ?>" /></td> - </tr> - <?php endforeach; ?> - </tbody> - </table> - <?php if (isset($_['dependencies']) and ($_['dependencies']<>'')) print_unescaped(''.$_['dependencies'].''); ?> + </td> + <?php if ($_['isAdminPage']): ?> + <td class="applicable" + align="right" + data-applicable-groups='<?php if (isset($mount['applicable']['groups'])) + print_unescaped(json_encode($mount['applicable']['groups'])); ?>' + data-applicable-users='<?php if (isset($mount['applicable']['users'])) + print_unescaped(json_encode($mount['applicable']['users'])); ?>'> + <select class="chzn-select" + multiple style="width:20em;" + data-placeholder="<?php p($l->t('No user or group')); ?>"> + <option value="all" + <?php if (empty($mount['class']) || (isset($mount['applicable']['users']) && in_array('all', $mount['applicable']['users']))) print_unescaped('selected="selected"');?> > + <?php p($l->t('All Users')); ?> + </option> + <optgroup label="<?php p($l->t('Groups')); ?>"> + <?php foreach ($_['groups'] as $group): ?> + <option value="<?php p($group); ?>(group)" + <?php if (isset($mount['applicable']['groups']) && in_array($group, $mount['applicable']['groups'])): ?> + selected="selected" + <?php endif; ?>><?php p($group); ?></option> + <?php endforeach; ?> + </optgroup> + <optgroup label="<?php p($l->t('Users')); ?>"> + <?php foreach ($_['users'] as $user): ?> + <option value="<?php p($user); ?>" + <?php if (isset($mount['applicable']['users']) && in_array($user, $mount['applicable']['users'])): ?> + selected="selected" + <?php endif; ?>><?php p($_['userDisplayNames'][$user]); ?></option> + <?php endforeach; ?> + </optgroup> + </select> + </td> + <?php endif; ?> + <td <?php if (isset($mount['mountpoint'])): ?>class="remove" + <?php else: ?>style="visibility:hidden;" + <?php endif ?>><img alt="<?php p($l->t('Delete')); ?>" + title="<?php p($l->t('Delete')); ?>" + class="svg action" + src="<?php print_unescaped(image_path('core', 'actions/delete.svg')); ?>" /></td> + </tr> + <?php endforeach; ?> + </tbody> + </table> + <br /> + + <?php if ($_['isAdminPage']): ?> <br /> + <input type="checkbox" name="allowUserMounting" id="allowUserMounting" + value="1" <?php if ($_['allowUserMounting'] == 'yes') print_unescaped(' checked="checked"'); ?> /> + <label for="allowUserMounting"><?php p($l->t('Enable User External Storage')); ?></label> <span id="userMountingMsg" class="msg"></span> - <?php if ($_['isAdminPage']): ?> - <br /> - <input type="checkbox" - name="allowUserMounting" - id="allowUserMounting" - value="1" <?php if ($_['allowUserMounting'] == 'yes') print_unescaped(' checked="checked"'); ?> /> - <label for="allowUserMounting"><?php p($l->t('Enable User External Storage')); ?></label><br/> - <em><?php p($l->t('Allow users to mount their own external storage')); ?></em> - <?php endif; ?> - </fieldset> + <p id="userMountingBackups"<?php if ($_['allowUserMounting'] != 'yes'): ?> class="hidden"<?php endif; ?>> + <?php p($l->t('Allow users to mount the following external storage')); ?><br /> + <?php $i = 0; foreach ($_['personal_backends'] as $class => $backend): ?> + <input type="checkbox" id="allowUserMountingBackends<?php p($i); ?>" name="allowUserMountingBackends[]" value="<?php p($class); ?>" <?php if ($backend['enabled']) print_unescaped(' checked="checked"'); ?> /> + <label for="allowUserMountingBackends<?php p($i); ?>"><?php p($backend['backend']); ?></label> <br /> + <?php $i++; ?> + <?php endforeach; ?> + </p> + <?php endif; ?> </form> <?php if ( ! $_['isAdminPage']): ?> - <form id="files_external" - method="post" - enctype="multipart/form-data" - action="<?php p(OCP\Util::linkTo('files_external', 'ajax/addRootCertificate.php')); ?>"> - <fieldset class="personalblock"> - <legend><strong><?php p($l->t('SSL root certificates'));?></strong></legend> - <table id="sslCertificate" data-admin='<?php print_unescaped(json_encode($_['isAdminPage'])); ?>'> - <tbody width="100%"> - <?php foreach ($_['certs'] as $rootCert): ?> - <tr id="<?php p($rootCert) ?>"> - <td class="rootCert"><?php p($rootCert) ?></td> - <td <?php if ($rootCert != ''): ?>class="remove" - <?php else: ?>style="visibility:hidden;" - <?php endif; ?>><img alt="<?php p($l->t('Delete')); ?>" - title="<?php p($l->t('Delete')); ?>" - class="svg action" - src="<?php print_unescaped(image_path('core', 'actions/delete.svg')); ?>" /></td> - </tr> - <?php endforeach; ?> - </tbody> - </table> - <input type="hidden" name="requesttoken" value="<?php p($_['requesttoken']); ?>"> - <input type="file" id="rootcert_import" name="rootcert_import"> - <input type="submit" name="cert_import" value="<?php p($l->t('Import Root Certificate')); ?>" /> - </fieldset> - </form> +<form id="files_external" class="section" + method="post" + enctype="multipart/form-data" + action="<?php p(OCP\Util::linkTo('files_external', 'ajax/addRootCertificate.php')); ?>"> + <h2><?php p($l->t('SSL root certificates'));?></h2> + <table id="sslCertificate" data-admin='<?php print_unescaped(json_encode($_['isAdminPage'])); ?>'> + <tbody width="100%"> + <?php foreach ($_['certs'] as $rootCert): ?> + <tr id="<?php p($rootCert) ?>"> + <td class="rootCert"><?php p($rootCert) ?></td> + <td <?php if ($rootCert != ''): ?>class="remove" + <?php else: ?>style="visibility:hidden;" + <?php endif; ?>><img alt="<?php p($l->t('Delete')); ?>" + title="<?php p($l->t('Delete')); ?>" + class="svg action" + src="<?php print_unescaped(image_path('core', 'actions/delete.svg')); ?>" /></td> + </tr> + <?php endforeach; ?> + </tbody> + </table> + <input type="hidden" name="requesttoken" value="<?php p($_['requesttoken']); ?>"> + <input type="file" id="rootcert_import" name="rootcert_import"> + <input type="submit" name="cert_import" value="<?php p($l->t('Import Root Certificate')); ?>" /> +</form> <?php endif; ?> diff --git a/tests/lib/files/storage/storage.php b/tests/lib/files/storage/storage.php index 6ec35dfbc92..38cd17ac8c9 100644 --- a/tests/lib/files/storage/storage.php +++ b/tests/lib/files/storage/storage.php @@ -310,7 +310,7 @@ abstract class Storage extends \PHPUnit_Framework_TestCase { $this->assertFalse($this->instance->file_exists('folder')); } - public function hashProvider(){ + public function hashProvider() { return array( array('Foobar', 'md5'), array('Foobar', 'sha1'), @@ -326,4 +326,23 @@ abstract class Storage extends \PHPUnit_Framework_TestCase { $this->assertEquals(hash($type, $data), $this->instance->hash($type, 'hash.txt')); $this->assertEquals(hash($type, $data, true), $this->instance->hash($type, 'hash.txt', true)); } + + public function testHashInFileName() { + $this->instance->file_put_contents('#test.txt', 'data'); + $this->assertEquals('data', $this->instance->file_get_contents('#test.txt')); + + $this->instance->mkdir('#foo'); + $this->instance->file_put_contents('#foo/test.txt', 'data'); + $this->assertEquals('data', $this->instance->file_get_contents('#foo/test.txt')); + + $dh = $this->instance->opendir('#foo'); + $content = array(); + while ($file = readdir($dh)) { + if ($file != '.' and $file != '..') { + $content[] = $file; + } + } + + $this->assertEquals(array('test.txt'), $content); + } } |