]> source.dussan.org Git - nextcloud-server.git/commitdiff
Moved dependency checks to end of class files
authorPhilipp Kapfer <philipp.kapfer@gmx.at>
Fri, 2 Aug 2013 13:44:56 +0000 (15:44 +0200)
committerThomas Müller <thomas.mueller@tmit.eu>
Thu, 3 Apr 2014 14:46:22 +0000 (16:46 +0200)
Dependency messages now appear below the configuration options instead of above
Reworked dependency check method to support consolidated messages for multiple backends

Conflicts:
apps/files_external/lib/google.php
apps/files_external/lib/swift.php
apps/files_external/templates/settings.php

apps/files_external/lib/amazons3.php
apps/files_external/lib/config.php
apps/files_external/lib/dropbox.php
apps/files_external/lib/ftp.php
apps/files_external/lib/google.php
apps/files_external/lib/smb.php
apps/files_external/lib/swift.php
apps/files_external/lib/webdav.php
apps/files_external/templates/settings.php

index 969070360fef359e7723bba0bdc9c61f698f1bd7..352885121f95f7df2691ab1bb391857577283efb 100644 (file)
@@ -560,4 +560,16 @@ class AmazonS3 extends \OC\Files\Storage\Common {
                        return false;
                }
        }
+
+       /**
+        * check if curl is installed
+        */
+       public static function checkDependencies() {
+               if (function_exists('curl_init')) {
+                       return true;
+               } else {
+                       return array('curl');
+               }
+       }
+
 }
index 2112266efc42668bccf7068d7d4c4566b1511b89..242cdff911c2bba4920ab04729c0e401f820dd24 100755 (executable)
@@ -524,50 +524,85 @@ class OC_Mount_Config {
         * check dependencies
         */
        public static function checkDependencies() {
-               $dependencyMessages = array();
+               $dependencies = array();
                foreach (OC_Mount_Config::$backends as $class => $backend) {
                        if (isset($backend['has_dependencies']) and $backend['has_dependencies'] === true) {
                                $result = $class::checkDependencies();
-                               if ($result !== true and OC_Mount_Config::findFirstSentence($dependencyMessages, $result) < 0) {
-                                       $dependencyMessages[] = $result;
+                               if ($result !== true) {
+                                       foreach ($result as $key => $value) {
+                                               if (is_numeric($key)) {
+                                                       OC_Mount_Config::addDependency($dependencies, $value, $backend['backend']);
+                                               } else {
+                                                       OC_Mount_Config::addDependency($dependencies, $key, $backend['backend'], $value);
+                                               }
+                                       }
                                }
                        }
                }
 
-               if (count($dependencyMessages) > 0) {
-                       return implode('<br />', $dependencyMessages);
+               if (count($dependencies) > 0) {
+                       return OC_Mount_Config::generateDependencyMessage($dependencies);
                }
                return '';
        }
 
-       /**
-        * Finds the first string in an array that has the same first sentence (or part thereof)
-        * as a given comparison string
-        * @param $arr array An array of strings
-        * @param $str string The string to find
-        * @return int The position of the first occurrence or -1 if not found
-        */
-       private static function findFirstSentence($arr, $str) {
-               foreach ($arr as $i => $item) {
-                       $itemPos = strpos($item, '.');
-                       $strPos = strpos($str, '.');
-
-                       if ($itemPos < 0 && $strPos < 0) {
-                               $itemPos = strpos($item, ',');
-                               $strPos = strpos($str, ',');
-
-                               if ($itemPos < 0 && $strPos < 0) {
-                                       $itemPos = strlen($item);
-                                       $strPos = strlen($str);
+       private static function addDependency(&$dependencies, $module, $backend, $message=null) {
+               if (!isset($dependencies[$module])) {
+                       $dependencies[$module] = array();
+               }
+
+               if ($message === null) {
+                       $dependencies[$module][] = $backend;
+               } else {
+                       $dependencies[$module][] = array('backend' => $backend, 'message' => $message);
+               }
+       }
+
+       private static function generateDependencyMessage($dependencies) {
+               $l = new \OC_L10N('files_external');
+               $dependencyMessage = '';
+               foreach ($dependencies as $module => $backends) {
+                       $dependencyGroup = array();
+                       foreach ($backends as $backend) {
+                               if (is_array($backend)) {
+                                       $dependencyMessage .= '<br />' . $l->t('<b>Note:</b> ') . $backend['message'];
+                               } else {
+                                       $dependencyGroup[] = $backend;
                                }
                        }
 
-                       if ($itemPos === $strPos and strncasecmp($item, $str, $itemPos) === 0) {
-                               return $i;
+                       if (count($dependencyGroup) > 0) {
+                               $backends = '';
+                               for ($i = 0; $i < count($dependencyGroup); $i++) {
+                                       if ($i > 0 && $i === count($dependencyGroup) - 1) {
+                                               $backends .= $l->t(' and ');
+                                       } elseif ($i > 0) {
+                                               $backends .= ', ';
+                                       }
+                                       $backends .= '<i>' . $dependencyGroup[$i] . '</i>';
+                               }
+                               $dependencyMessage .= '<br />' . OC_Mount_Config::getSingleDependencyMessage($l, $module, $backends);
                        }
                }
+               return $dependencyMessage;
+       }
 
-               return -1;
+       /**
+        * Returns a dependency missing message
+        * @param $l OC_L10N
+        * @param $module string
+        * @param $backend string
+        * @return string
+        */
+       private static function getSingleDependencyMessage($l, $module, $backend) {
+               switch (strtolower($module)) {
+                       case 'curl':
+                               return $l->t('<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', $backend);
+                       case 'ftp':
+                               return $l->t('<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it.', $backend);
+                       default:
+                               return $l->t('<b>Note:</b> "%s" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it.', array($module, $backend));
+               }
        }
 
        /**
index f6a54bc0ca8d8f4c37520d682611f8e04b0dc739..38de3360f2b40c348427e5c15a04774ebd67a33f 100755 (executable)
@@ -33,18 +33,6 @@ class Dropbox extends \OC\Files\Storage\Common {
 
        private static $tempFiles = array();
 
-       /**
-        * check if curl is installed
-        */
-       public static function checkDependencies() {
-               if (function_exists('curl_init')) {
-                       return true;
-               } else {
-                       $l = new \OC_L10N('files_external');
-                       return $l->t('<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of Dropbox is not possible. Please ask your system administrator to install it.');
-               }
-       }
-
        public function __construct($params) {
                if (isset($params['configured']) && $params['configured'] == 'true'
                        && isset($params['app_key'])
@@ -323,4 +311,15 @@ class Dropbox extends \OC\Files\Storage\Common {
                return true;
        }
 
+       /**
+        * check if curl is installed
+        */
+       public static function checkDependencies() {
+               if (function_exists('curl_init')) {
+                       return true;
+               } else {
+                       return array('curl');
+               }
+       }
+
 }
index a6a775ff6d121f005f2bc05a45c74b92cc2f1767..b3f8b1444ae5d599de0ba504f8d2689adde0ca81 100644 (file)
@@ -17,18 +17,6 @@ class FTP extends \OC\Files\Storage\StreamWrapper{
 
        private static $tempFiles=array();
 
-       /**
-        * check if php-ftp is installed
-        */
-       public static function checkDependencies() {
-               if (function_exists('ftp_login')) {
-                       return(true);
-               } else {
-                       $l = new \OC_L10N('files_external');
-                       return $l->t('<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it.');
-               }
-       }
-
        public function __construct($params) {
                if (isset($params['host']) && isset($params['user']) && isset($params['password'])) {
                        $this->host=$params['host'];
@@ -131,4 +119,16 @@ class FTP extends \OC\Files\Storage\StreamWrapper{
                        unlink($tmpFile);
                }
        }
+
+       /**
+        * check if php-ftp is installed
+        */
+       public static function checkDependencies() {
+               if (function_exists('ftp_login')) {
+                       return(true);
+               } else {
+                       return array('ftp');
+               }
+       }
+
 }
index cfb7005c4c72f402d4e41ebf8aa6795a4858b7a0..56c0d451651b15c0f59d6e80cf9303d5c8b15bcd 100644 (file)
@@ -41,18 +41,6 @@ class Google extends \OC\Files\Storage\Common {
        const DRAWING = 'application/vnd.google-apps.drawing';
        const PRESENTATION = 'application/vnd.google-apps.presentation';
 
-       /**
-        * check if curl is installed
-        */
-       public static function checkDependencies() {
-               if (function_exists('curl_init')) {
-                       return true;
-               } else {
-                       $l = new \OC_L10N('files_external');
-                       return $l->t('<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of Google Drive is not possible. Please ask your system administrator to install it.');
-               }
-       }
-
        public function __construct($params) {
                if (isset($params['configured']) && $params['configured'] === 'true'
                        && isset($params['client_id']) && isset($params['client_secret'])
@@ -598,4 +586,15 @@ class Google extends \OC\Files\Storage\Common {
                return false;
        }
 
+       /**
+        * check if curl is installed
+        */
+       public static function checkDependencies() {
+               if (function_exists('curl_init')) {
+                       return true;
+               } else {
+                       return array('curl');
+               }
+       }
+
 }
index 6fb262323ff52623ebc1aa5ca347eb849953d303..3ef13b633a9ea002329d0e046a65d35402738acb 100644 (file)
@@ -17,20 +17,6 @@ class SMB extends \OC\Files\Storage\StreamWrapper{
        private $root;
        private $share;
 
-       /**
-        * check if smbclient is installed
-        */
-       public static function checkDependencies() {
-               if (function_exists('shell_exec')) {
-                       $output = shell_exec('which smbclient');
-                       if (!empty($output)) {
-                               return true;
-                       }
-               }
-               $l = new \OC_L10N('files_external');
-               return $l->t('<b>Note:</b> "smbclient" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it.');
-       }
-
        public function __construct($params) {
                if (isset($params['host']) && isset($params['user']) && isset($params['password']) && isset($params['share'])) {
                        $this->host=$params['host'];
@@ -148,4 +134,18 @@ class SMB extends \OC\Files\Storage\StreamWrapper{
                }
                return $lastCtime;
        }
+
+       /**
+        * check if smbclient is installed
+        */
+       public static function checkDependencies() {
+               if (function_exists('shell_exec')) {
+                       $output = shell_exec('which smbclient');
+                       if (!empty($output)) {
+                               return true;
+                       }
+               }
+               return array('smbclient');
+       }
+
 }
index a66d53fc1a8174525641a78bcd092774ec4a8e0c..a202d3843cb212925b5ba82b5cea18064b653857 100644 (file)
@@ -65,16 +65,16 @@ class Swift extends \OC\Files\Storage\Common {
                return $path;
        }
 
+       const SUBCONTAINER_FILE='.subcontainers';
+
        /**
-        * check if curl is installed
+        * translate directory path to container name
+        * @param string $path
+        * @return string
         */
-       public static function checkDependencies() {
-               if (function_exists('curl_init')) {
-                       return true;
-               } else {
-                       $l = new \OC_L10N('files_external');
-                       return $l->t('<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of OpenStack Swift is not possible. Please ask your system administrator to install it.');
-               }
+       private function getContainerName($path) {
+               $path=trim(trim($this->root, '/') . "/".$path, '/.');
+               return str_replace('/', '\\', $path);
        }
 
        /**
@@ -502,4 +502,16 @@ class Swift extends \OC\Files\Storage\Common {
                ), $tmpFile);
                unlink($tmpFile);
        }
+
+       /**
+        * check if curl is installed
+        */
+       public static function checkDependencies() {
+               if (function_exists('curl_init')) {
+                       return true;
+               } else {
+                       return array('curl');
+               }
+       }
+
 }
index 0ea7a085041258a1e46c4386ab8188233594ef3b..b43c65e8e6c05825bb27bfcdccc5da763ce46d65 100644 (file)
@@ -23,18 +23,6 @@ class DAV extends \OC\Files\Storage\Common {
 
        private static $tempFiles = array();
 
-       /**
-        * check if curl is installed
-        */
-       public static function checkDependencies() {
-               if (function_exists('curl_init')) {
-                       return true;
-               } else {
-                       $l = new \OC_L10N('files_external');
-                       return $l->t('<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of ownCloud / WebDAV is not possible. Please ask your system administrator to install it.');
-               }
-       }
-
        public function __construct($params) {
                if (isset($params['host']) && isset($params['user']) && isset($params['password'])) {
                        $host = $params['host'];
@@ -397,5 +385,16 @@ class DAV extends \OC\Files\Storage\Common {
                        return false;
                }
        }
+
+       /**
+        * check if curl is installed
+        */
+       public static function checkDependencies() {
+               if (function_exists('curl_init')) {
+                       return true;
+               } else {
+                       return array('curl');
+               }
+       }
 }
 
index e8815acaf16c8f7f68b5ea89b2d00301a751008f..84d9d3408d1b7a38999fcabc42e0ffada217e42c 100644 (file)
-<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>
+<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>
                        <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('Available for').'</th>'); ?>
+                               <?php if ($_['isAdminPage']) print_unescaped('<th>'.$l->t('Applicable').'</th>'); ?>
                                <th>&nbsp;</th>
                        </tr>
-               </thead>
-               <tbody width="100%">
-               <?php $_['mounts'] = array_merge($_['mounts'], array('' => array())); ?>
-               <?php foreach ($_['mounts'] as $mount): ?>
-                       <tr <?php print_unescaped(($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($mount['mountpoint']); ?>"
-                                                                                         placeholder="<?php p($l->t('Folder name')); ?>" /></td>
-                               <?php if ($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>
+                       </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; ?>
                                        </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['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); ?>" />
+                                       <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 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; ?>
-                                       <?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('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 ($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']): ?>
+                                       <?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'].''); ?>
                <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>
 
-               <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; ?>
+               <?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>
 </form>
 
 <?php if ( ! $_['isAdminPage']):  ?>
-<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>
+       <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>
 <?php endif; ?>