AIRAVATA-1397 Display max upload file size in form Also no longer using 'server-allowed'file-size' from pga_config.php.
Project: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/commit/d0af4e3b Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/d0af4e3b Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/d0af4e3b Branch: refs/heads/dreg-gateway Commit: d0af4e3b43c72cfb4c9c405cfe8f39202f439a19 Parents: 65ef21b Author: Marcus Christie <machris...@apache.org> Authored: Wed Jan 11 10:16:45 2017 -0500 Committer: Marcus Christie <machris...@apache.org> Committed: Wed Jan 11 10:18:57 2017 -0500 ---------------------------------------------------------------------- app/config/pga_config.php.template | 5 ---- app/controllers/ExperimentController.php | 26 ++++++++++++++------- app/libraries/ExperimentUtilities.php | 15 ++++++++---- app/views/experiment/edit.blade.php | 1 + app/views/partials/experiment-inputs.blade.php | 4 ++-- public/css/bootstrap.min.css | 18 ++++++++++++++ 6 files changed, 49 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d0af4e3b/app/config/pga_config.php.template ---------------------------------------------------------------------- diff --git a/app/config/pga_config.php.template b/app/config/pga_config.php.template index 7a18f5a..ac378f6 100644 --- a/app/config/pga_config.php.template +++ b/app/config/pga_config.php.template @@ -114,11 +114,6 @@ return array( 'gateway-id' => 'default', /** - * Maximum size of a file which is allowed to upload to the server - */ - 'server-allowed-file-size' => 64, - - /** * absolute path of the data dir */ 'experiment-data-absolute-path' => '/var/www/experimentData', http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d0af4e3b/app/controllers/ExperimentController.php ---------------------------------------------------------------------- diff --git a/app/controllers/ExperimentController.php b/app/controllers/ExperimentController.php index 5f1533f..7bfd8c5 100755 --- a/app/controllers/ExperimentController.php +++ b/app/controllers/ExperimentController.php @@ -50,13 +50,6 @@ class ExperimentController extends BaseController if( Input::has("savedExp")) $savedExp = true; - // Condition added to deal with php ini default value set for post_max_size issue. - $allowedFileSize = Config::get('pga_config.airavata')["server-allowed-file-size"]; - $serverLimit = intval( ini_get( 'post_max_size') ); - if( $serverLimit < $allowedFileSize) - $allowedFileSize = $serverLimit; - - $experimentInputs = array( "clonedExp" => $clonedExp, "savedExp" => $savedExp, @@ -72,7 +65,7 @@ class ExperimentController extends BaseController "computeResources" => $computeResources, "resourceHostId" => null, "advancedOptions" => Config::get('pga_config.airavata')["advanced-experiment-options"], - "allowedFileSize" => $allowedFileSize + "allowedFileSize" => $this->getAllowedFileSize() ); if(Config::get('pga_config.airavata')["data-sharing-enabled"]){ @@ -299,7 +292,7 @@ class ExperimentController extends BaseController "userDN" => $experiment->userConfigurationData->userDN, "userHasComputeResourcePreference" => $userHasComputeResourcePreference, "useUserCRPref" => $experiment->userConfigurationData->useUserCRPref, - "allowedFileSize" => Config::get('pga_config.airavata')["server-allowed-file-size"], + "allowedFileSize" => $this->getAllowedFileSize(), 'experiment' => $experiment, "queueDefaults" => $queueDefaults, 'computeResources' => $computeResources, @@ -503,6 +496,21 @@ class ExperimentController extends BaseController return Response::json(array("success" => false, "error" => "Error: failed to update sharing: " . $ex->getMessage())); } } + + private function getAllowedFileSize() + { + // Condition added to deal with php ini default value set for post_max_size issue. + // NOTE: the following assumes that upload_max_filesize and + // post_max_size are in megabytes (for example, if + // upload_max_filesize is 8M then $allowedFileSize is 8, but the 'M' + // is assumed and not considered) + $allowedFileSize = intval( ini_get( 'upload_max_filesize' ) ); + $serverLimit = intval( ini_get( 'post_max_size' ) ); + if( $serverLimit < $allowedFileSize) { + $allowedFileSize = $serverLimit; + } + return $allowedFileSize; + } } ?> http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d0af4e3b/app/libraries/ExperimentUtilities.php ---------------------------------------------------------------------- diff --git a/app/libraries/ExperimentUtilities.php b/app/libraries/ExperimentUtilities.php index d939f7d..a4fee3b 100755 --- a/app/libraries/ExperimentUtilities.php +++ b/app/libraries/ExperimentUtilities.php @@ -753,9 +753,10 @@ class ExperimentUtilities * Create form inputs to accept the inputs to the given application * @param $id * @param $isRequired + * @param $allowedFileSize maximum file size in megabytes * @internal param $required */ - public static function create_inputs($id, $isRequired) + public static function create_inputs($id, $isRequired, $allowedFileSize) { $inputs = AppUtilities::get_application_inputs($id); @@ -812,8 +813,11 @@ class ExperimentUtilities <label for="experiment-input">' . $input->name . '</label> <div data-file-id="' . $input->sanitizedFormName . '" class="readBytesButtons btn btn-default btn-xs" data-toggle="modal" style="float: right">view file</div> - <input class="file-input" type="file" name="' . $input->sanitizedFormName . - '" id="' . $input->sanitizedFormName . '" ' . $required . '> + <div class="file-upload-container"> + <input class="file-input" type="file" name="' . $input->sanitizedFormName . + '" id="' . $input->sanitizedFormName . '" ' . $required . '> + <div class="file-upload-max-size">Max Upload Size: ' . $allowedFileSize .'M</div> + </div> <p class="help-block">' . $input->userFriendlyDescription . '</p> </div>'; break; @@ -830,7 +834,10 @@ class ExperimentUtilities if($appInterface->hasOptionalFileInputs){ echo '<div> <label>Optional Input Files</label> - <input type="file" class="file-input" id="optInputFiles" name="optInputFiles[]" multiple onchange="javascript:updateList()" > + <div class="file-upload-container"> + <input type="file" class="file-input" id="optInputFiles" name="optInputFiles[]" multiple onchange="javascript:updateList()" > + <div class="file-upload-max-size">Max Upload Size: ' . $allowedFileSize .'M</div> + </div> <div id="optFileList"></div> </div>'; } http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d0af4e3b/app/views/experiment/edit.blade.php ---------------------------------------------------------------------- diff --git a/app/views/experiment/edit.blade.php b/app/views/experiment/edit.blade.php index bfa5331..52e035b 100755 --- a/app/views/experiment/edit.blade.php +++ b/app/views/experiment/edit.blade.php @@ -39,6 +39,7 @@ This experiment is connected with an Application which is currently not deployed on any Resource. The experiment cannot be launched at the moment. </p> @endif + <input type="hidden" id="allowedFileSize" value="{{ $expInputs['allowedFileSize'] }}"/> </form> </div> http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d0af4e3b/app/views/partials/experiment-inputs.blade.php ---------------------------------------------------------------------- diff --git a/app/views/partials/experiment-inputs.blade.php b/app/views/partials/experiment-inputs.blade.php index c2c85f8..dfe9d6c 100644 --- a/app/views/partials/experiment-inputs.blade.php +++ b/app/views/partials/experiment-inputs.blade.php @@ -41,9 +41,9 @@ {{ ExperimentUtilities::list_input_files($expInputs['experiment']->experimentInputs) }} <hr/> </div> - {{ ExperimentUtilities::create_inputs($expInputs['application'], false) }} + {{ ExperimentUtilities::create_inputs($expInputs['application'], false, $expInputs['allowedFileSize']) }} @else - {{ ExperimentUtilities::create_inputs($expInputs['application'], true) }} + {{ ExperimentUtilities::create_inputs($expInputs['application'], true, $expInputs['allowedFileSize']) }} @endif </div> <!-- Modal to view file inputs--> http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d0af4e3b/public/css/bootstrap.min.css ---------------------------------------------------------------------- diff --git a/public/css/bootstrap.min.css b/public/css/bootstrap.min.css index 69ea7f4..0f7ca0c 100644 --- a/public/css/bootstrap.min.css +++ b/public/css/bootstrap.min.css @@ -144,4 +144,22 @@ body{ top: 0px; bottom: 0px; right: 0px; +} + +.file-upload-container { + position: relative; + padding-right: 120px; +} +.file-upload-container > input[type="file"] { + width: 100%; +} +.file-upload-container > .file-upload-max-size { + position: absolute; + right: 0px; + top: 50%; + /* negative one half of the height of this element (which is approx. font-size * line-height) */ + margin-top: calc( -1/2 * (12px * 1.42) ); + font-size: 12px; + font-style: italic; + color: #737373; } \ No newline at end of file