AIRAVATA-2190 Must have write perm to edit/cancel
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/071a027a Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/071a027a Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/071a027a Branch: refs/heads/develop Commit: 071a027a134037ef63192e1e3dd99172fa306518 Parents: 0455ebd Author: Marcus Christie <[email protected]> Authored: Wed Nov 2 16:34:47 2016 -0400 Committer: Marcus Christie <[email protected]> Committed: Wed Nov 2 16:34:47 2016 -0400 ---------------------------------------------------------------------- app/controllers/ExperimentController.php | 4 ++++ app/libraries/ExperimentUtilities.php | 19 ++++++++----------- app/views/partials/experiment-info.blade.php | 17 ++++++----------- 3 files changed, 18 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/071a027a/app/controllers/ExperimentController.php ---------------------------------------------------------------------- diff --git a/app/controllers/ExperimentController.php b/app/controllers/ExperimentController.php index 4dfc24f..e6803a9 100755 --- a/app/controllers/ExperimentController.php +++ b/app/controllers/ExperimentController.php @@ -155,13 +155,17 @@ class ExperimentController extends BaseController $users = SharingUtilities::getProfilesForSharedUsers(Input::get("expId"), ResourceType::EXPERIMENT); $owner = array(); + $is_owner = false; if (strcmp(Session::get("username"), $experiment->userName) !== 0) { $owner[$experiment->userName] = $users[$experiment->userName]; $users = array_diff_key($users, $owner); + } else { + $is_owner = true; } $data['can_write'] = SharingUtilities::userCanWrite(Session::get("username"), $experiment->experimentId, ResourceType::EXPERIMENT); $data["users"] = json_encode($users); $data["owner"] = json_encode($owner); + $data["is_owner"] = $is_owner; } if( Input::has("dashboard")) http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/071a027a/app/libraries/ExperimentUtilities.php ---------------------------------------------------------------------- diff --git a/app/libraries/ExperimentUtilities.php b/app/libraries/ExperimentUtilities.php index 32f4323..3b803b5 100755 --- a/app/libraries/ExperimentUtilities.php +++ b/app/libraries/ExperimentUtilities.php @@ -948,6 +948,12 @@ class ExperimentUtilities $expVal["taskStates"] = TaskState::$__names; $expVal["taskTypes"] = TaskTypes::$__names; + if(Config::get('pga_config.airavata')["data-sharing-enabled"]) { + $can_write = SharingUtilities::userCanWrite(Session::get("username"), $experiment->experimentId, ResourceType::EXPERIMENT); + } else { + $can_write = true; + } + if( is_array( $experiment->experimentStatus ) ) $experimentStatusString = $expVal["experimentStates"][$experiment->experimentStatus[0]->state]; @@ -956,15 +962,6 @@ class ExperimentUtilities } $expVal["experimentStatusString"] = $experimentStatusString; - if ( $experimentStatusString == ExperimentState::FAILED) - $expVal["editable"] = false; - - $expVal["cancelable"] = false; - if ( $experimentStatusString == ExperimentState::LAUNCHED - || $experimentStatusString == ExperimentState::EXECUTING) - $expVal["cancelable"] = true; - - if ($experiment->experimentStatus != null) { $experimentStatus = $experiment->experimentStatus; @@ -999,7 +996,7 @@ class ExperimentUtilities case 'CREATED': case 'VALIDATED': case 'SCHEDULED': - $expVal["editable"] = true; + $expVal["editable"] = true && $can_write; break; default: $expVal["editable"] = false; @@ -1012,7 +1009,7 @@ class ExperimentUtilities case 'SCHEDULED': case 'LAUNCHED': case 'EXECUTING': - $expVal["cancelable"] = true; + $expVal["cancelable"] = true && $can_write; break; default: $expVal["cancelable"] = false; http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/071a027a/app/views/partials/experiment-info.blade.php ---------------------------------------------------------------------- diff --git a/app/views/partials/experiment-info.blade.php b/app/views/partials/experiment-info.blade.php index d66e8b7..8236a49 100644 --- a/app/views/partials/experiment-info.blade.php +++ b/app/views/partials/experiment-info.blade.php @@ -217,7 +217,7 @@ <div class="form-group"> @if(Config::get('pga_config.airavata')["data-sharing-enabled"]) - @if($can_write === true) + @if($is_owner) <!-- Only allow editing sharing here if the experiment isn't editable --> @include('partials/sharing-display-body', array("form" => !$expVal["editable"])) @else @@ -235,8 +235,8 @@ class="btn btn-default" onclick="return confirm('Are you sure you want to cancel this experiment?')" role="button" title="Cancel experiment" @if (!$expVal["cancelable"]) style="display: none" @endif> - <input name="cancel" type="submit" class="btn btn-warning" - value="Cancel" <?php if (!$expVal["cancelable"]) echo 'disabled'; ?> > + <span class="glyphicon glyphicon-remove"></span> + Cancel </a> <!-- <input name="clone"--> <!-- type="submit"--> @@ -253,8 +253,6 @@ Clone </a> <input type="hidden" name="expId" value="{{ Input::get('expId') }}"/> - @if(Config::get('pga_config.airavata')["data-sharing-enabled"]) - @if($can_write === true) <a href="{{URL::to('/') }}/experiment/edit?expId={{ $experiment->experimentId }}&savedExp=true" class="btn btn-default" role="button" @@ -262,10 +260,7 @@ <span class="glyphicon glyphicon-pencil"></span> Edit </a> - @endif - @endif - <!-- Only owner can update sharing --> - @if(Config::get('pga_config.airavata')["data-sharing-enabled"] && Session::get('username') === $experiment->userName && !$expVal["editable"]) + @if(Config::get('pga_config.airavata')["data-sharing-enabled"] && $is_owner && !$expVal["editable"]) <button name="update-sharing" type="submit" class="btn btn-primary" @@ -361,8 +356,8 @@ </div> @endif -@if(Config::get('pga_config.airavata')["data-sharing-enabled"] and isset($can_write)) - @if($can_write === true) +@if(Config::get('pga_config.airavata')["data-sharing-enabled"] and isset($is_owner)) + @if($is_owner) @include('partials/sharing-form-modal') @endif @endif
