diff options
author | Michael Gapczynski <GapczynskiM@gmail.com> | 2012-05-24 11:06:03 -0400 |
---|---|---|
committer | Michael Gapczynski <GapczynskiM@gmail.com> | 2012-05-24 11:06:03 -0400 |
commit | bee724c53e243bda82c9490154fcd13079e41082 (patch) | |
tree | 7009eecbea6507412354f2e10d3563150a9ce128 /apps/files_external | |
parent | 970124a90b1d20382699680e90eeb52f70cab62c (diff) | |
download | nextcloud-server-bee724c53e243bda82c9490154fcd13079e41082.tar.gz nextcloud-server-bee724c53e243bda82c9490154fcd13079e41082.zip |
Initial work on UI for mounting external storage
Diffstat (limited to 'apps/files_external')
-rw-r--r-- | apps/files_external/appinfo/app.php | 1 | ||||
-rw-r--r-- | apps/files_external/appinfo/info.xml | 2 | ||||
-rw-r--r-- | apps/files_external/css/settings.css | 6 | ||||
-rw-r--r-- | apps/files_external/js/settings.js | 59 | ||||
-rw-r--r-- | apps/files_external/settings.php | 35 | ||||
-rw-r--r-- | apps/files_external/templates/settings.php | 74 |
6 files changed, 176 insertions, 1 deletions
diff --git a/apps/files_external/appinfo/app.php b/apps/files_external/appinfo/app.php index 784ed032d47..2940a070258 100644 --- a/apps/files_external/appinfo/app.php +++ b/apps/files_external/appinfo/app.php @@ -10,3 +10,4 @@ OC::$CLASSPATH['OC_Filestorage_FTP']='apps/files_external/lib/ftp.php'; OC::$CLASSPATH['OC_Filestorage_DAV']='apps/files_external/lib/webdav.php'; OC::$CLASSPATH['OC_Filestorage_Google']='apps/files_external/lib/google.php'; OC::$CLASSPATH['OC_Filestorage_SWIFT']='apps/files_external/lib/swift.php'; +OCP\App::registerAdmin('files_external', 'settings'); diff --git a/apps/files_external/appinfo/info.xml b/apps/files_external/appinfo/info.xml index c324730593f..e0301365d16 100644 --- a/apps/files_external/appinfo/info.xml +++ b/apps/files_external/appinfo/info.xml @@ -4,7 +4,7 @@ <name>External storage support</name> <description>Mount external storage sources</description> <licence>AGPL</licence> - <author>Robin Appelman</author> + <author>Robin Appelman, Michael Gapczynski</author> <require>4</require> <shipped>true</shipped> <types> diff --git a/apps/files_external/css/settings.css b/apps/files_external/css/settings.css new file mode 100644 index 00000000000..b11af752ec8 --- /dev/null +++ b/apps/files_external/css/settings.css @@ -0,0 +1,6 @@ +.error { color: #FF3B3B; } +td.type { width:8em; } +td.mount, td.options, td.applicable { width:10em; } +#addStorage>td { border:none; } +#addStorage>td:not(.selectStorage) { visibility:hidden; } +#selectStorage { margin-left:-10px; }
\ No newline at end of file diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js new file mode 100644 index 00000000000..9a558ad6e43 --- /dev/null +++ b/apps/files_external/js/settings.js @@ -0,0 +1,59 @@ +$(document).ready(function(){ + + function applicableChange(applicable) { + if (applicable == 'Global') { + + } + console.log(applicable); + } + + $('#selectStorage').live('change', function() { + var tr = $(this).parent().parent(); + $('#externalStorage tbody').last().append($(tr).clone()); + var selected = $(this).val(); + $(this).parent().text(selected); + var backends = $(this).data('configurations').split(';'); + var configuration = []; + // Find selected backend configuration parameters + $.each(backends, function(index, backend) { + if (backend.split(':')[0] == selected) { + configuration = backend.split(':')[1].split(','); + // break; + } + }); + var td = $(tr).find('td.configuration'); + $.each(configuration, function(index, config) { + if (config.indexOf('*') != -1) { + td.append('<input type="password" placeholder="'+config.substring(1)+'" />'); + } else { + td.append('<input type="text" placeholder="'+config+'" />'); + } + }); + $(tr).find('td').last().attr('class', 'remove'); + $(tr).removeAttr('id'); + $(this).remove(); + }); + + $('td.remove>img').live('click', function() { + $(this).parent().parent().remove(); + // TODO remove storage + }); + + $('#externalStorage select[multiple]').each(function(index,element){ + applyMultiplySelect($(element)); + }); + + function applyMultiplySelect(element) { + var checkHandeler=false; + element.multiSelect({ + oncheck:applicableChange, + onuncheck:applicableChange, + minWidth: 120, + }); + } + + $('#allowUserMounting').bind('change', function() { + // TODO save setting + }); + +});
\ No newline at end of file diff --git a/apps/files_external/settings.php b/apps/files_external/settings.php new file mode 100644 index 00000000000..ce1b308d757 --- /dev/null +++ b/apps/files_external/settings.php @@ -0,0 +1,35 @@ +<?php + +/** +* ownCloud +* +* @author Michael Gapczynski +* @copyright 2012 Michael Gapczynski mtgap@owncloud.com +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU AFFERO GENERAL PUBLIC LICENSE for more details. +* +* You should have received a copy of the GNU Affero General Public +* License along with this library. If not, see <http://www.gnu.org/licenses/>. +*/ + +OCP\Util::addscript('files_external', 'settings'); +OCP\Util::addstyle('files_external', 'settings'); +$tmpl = new OCP\Template('files_external', 'settings'); +$tmpl->assign('allowUserMounting', 'yes'); +$tmpl->assign('isAdminPage', true); +$tmpl->assign('storage', array()); +$tmpl->assign('groups', OC_Group::getGroups()); +$tmpl->assign('backends', array('Amazon S3', 'FTP', 'Google Drive', 'SWIFT', 'WebDAV')); +$tmpl->assign('configurations', ''); +$tmpl->assign('options', array('Encrypt', 'Version control', 'Allow sharing')); +return $tmpl->fetchPage(); + +?>
\ No newline at end of file diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php new file mode 100644 index 00000000000..e34c0322390 --- /dev/null +++ b/apps/files_external/templates/settings.php @@ -0,0 +1,74 @@ +<form id="files_external"> + <fieldset class="personalblock"> + <legend><strong><?php echo $l->t('External Storage'); ?></strong></legend> + <?php if (isset($_['storage'])): ?> + <table id="externalStorage"> + <thead> + <tr> + <th><?php echo $l->t('Type'); ?></th> + <th><?php echo $l->t('Configuration'); ?></th> + <th><?php echo $l->t('Mount Location'); ?></th> + <th><?php echo $l->t('Options'); ?></th> + <?php if ($_['isAdminPage'] == true) echo '<th>'.$l->t('Applicable').'</th>'; ?> + <th> </th> + </tr> + </thead> + <tbody> + <?php $_['storage'] = array_merge($_['storage'], array(array('id' => 'addStorage', 'mount' => ''))); ?> + <?php foreach($_['storage'] as $storage): ?> + <tr <?php if ($storage['id'] == 'addStorage') echo 'id="addStorage"'; ?> data-storage-id="<?php echo $storage['id']; ?>"> + <?php if ($storage['id'] == 'addStorage'): ?> + <td class="selectStorage"> + <select id="selectStorage" data-configurations="<?php echo $_['configurations']; ?>"> + <option value="" disabled selected style="display:none;"><?php echo $l->t('Add storage'); ?></option> + <?php foreach($_['backends'] as $backend): ?> + <option value="<?php echo $backend; ?>"><?php echo $backend; ?></option> + <?php endforeach; ?> + </select> + </td> + <?php else: ?> + <td class="type" <?php if ($storage['status'] == 'error') echo 'class="error"'; ?>><?php echo $storage['type']; ?></td> + <?php endif; ?> + <td class ="configuration"> + <?php if (isset($storage['configuration'])): ?> + <?php foreach($storage['configuration'] as $parameter => $value): ?> + <?php if (strpos($parameter, '*') !== false): ?> + <input type="password" value="<?php echo $value; ?>" placeholder="<?php echo $l->t(substr($parameter, 1)); ?>" /> + <?php else: ?> + <input type="text" value="<?php echo $value; ?>" placeholder="<?php echo $l->t($parameter); ?>" /> + <?php endif; ?> + <?php endforeach; ?> + <?php endif; ?> + </td> + <td class="mount"><input type="text" name="storageMountLocation" value="<?php echo $storage['mount']; ?>" placeholder="<?php echo $l->t('Mount Location'); ?>" /></td> + <td class="options"> + <select class="selectOptions" title="<?php echo $l->t('None set')?>" multiple="multiple"> + <?php if (OCP\App::isEnabled('files_encryption')) echo '<option value="Encrypt">Encrypt</option>'; ?> + <?php if (OCP\App::isEnabled('files_versions')) echo '<option value="Version control">Version control</option>'; ?> + <?php if (OCP\App::isEnabled('files_sharing')) echo '<option value="Allow sharing">Allow sharing</option>'; ?> + </select> + </td> + <?php if ($_['isAdminPage'] == true): ?> + <td class="applicable"> + <select class="selectApplicable" data-storage-applicable="<?php echo $storage['applicable']; ?>" title="<?php echo $l->t('None set'); ?>" multiple="multiple"> + <option value="Global"><?php echo $l->t('Global'); ?></option> + <?php foreach($_['groups'] as $group): ?> + <option value="<?php echo $group; ?>"><?php echo $group; ?></option> + <?php endforeach; ?> + </select> + </td> + <?php endif; ?> + <td <?php if ($storage['id'] != 'addStorage') echo 'class="remove"'; ?>><img alt="<?php echo $l->t('Delete'); ?>" title="<?php echo $l->t('Delete'); ?>" class="svg action" src="<?php echo image_path('core', 'actions/delete.svg'); ?>" /></td> + </tr> + <?php endforeach; ?> + </tbody> + </table> + <?php endif; ?> + <?php if ($_['isAdminPage'] == true): ?> + <br /> + <input type="checkbox" name="allowUserMounting" id="allowUserMounting" value="1" <?php if ($_['allowUserMounting'] == 'yes') echo ' checked="checked"'; ?> /> + <label for="allowUserMounting"><?php echo $l->t('Enable User External Storage'); ?></label><br/> + <em><?php echo $l->t('Allow users to mount their own external storage'); ?></em> + <?php endif; ?> + </fieldset> +</form>
\ No newline at end of file |