You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2016/09/14 19:45:30 UTC
airavata-php-gateway git commit: making data sharing configurable in
PGA
Repository: airavata-php-gateway
Updated Branches:
refs/heads/develop 7b69b1459 -> 5e6bca460
making data sharing configurable in PGA
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/5e6bca46
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/5e6bca46
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/5e6bca46
Branch: refs/heads/develop
Commit: 5e6bca460320a4dd3e988ed693c3d1a4112127b9
Parents: 7b69b14
Author: scnakandala <su...@gmail.com>
Authored: Wed Sep 14 15:45:25 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Wed Sep 14 15:45:25 2016 -0400
----------------------------------------------------------------------
app/config/pga_config.php.template | 7 +-
app/controllers/ExperimentController.php | 188 +++++++++-------
app/controllers/ProjectController.php | 151 +++++++------
app/libraries/ExperimentUtilities.php | 17 +-
app/libraries/ProjectUtilities.php | 14 +-
.../experiment/no-sharing-browse.blade.php | 214 +++++++++++++++++++
.../no-sharing-create-complete.blade.php | 168 +++++++++++++++
app/views/experiment/no-sharing-edit.blade.php | 96 +++++++++
.../partials/experiment-container.blade.php | 6 +-
app/views/partials/experiment-info.blade.php | 38 ++--
app/views/project/no-sharing-browse.blade.php | 146 +++++++++++++
app/views/project/no-sharing-create.blade.php | 33 +++
app/views/project/no-sharing-edit.blade.php | 49 +++++
app/views/project/no-sharing-summary.blade.php | 103 +++++++++
app/views/project/no-summary.blade.php | 119 +++++++++++
app/views/project/summary.blade.php | 119 -----------
16 files changed, 1187 insertions(+), 281 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/config/pga_config.php.template
----------------------------------------------------------------------
diff --git a/app/config/pga_config.php.template b/app/config/pga_config.php.template
index 532a612..0a707aa 100644
--- a/app/config/pga_config.php.template
+++ b/app/config/pga_config.php.template
@@ -161,7 +161,12 @@ return array(
/**
* Gateway data store resource id
*/
- 'gateway-data-store-resource-id' => ''
+ 'gateway-data-store-resource-id' => '',
+
+ /**
+ * Data Sharing enabled
+ */
+ 'data-sharing-enabled' = false
],
/**
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/controllers/ExperimentController.php
----------------------------------------------------------------------
diff --git a/app/controllers/ExperimentController.php b/app/controllers/ExperimentController.php
index e760cee..7da421b 100755
--- a/app/controllers/ExperimentController.php
+++ b/app/controllers/ExperimentController.php
@@ -73,10 +73,15 @@ class ExperimentController extends BaseController
"allowedFileSize" => $allowedFileSize
);
- $users = SharingUtilities::getProfilesForSharedUsers($_POST['project'], ResourceType::PROJECT);
- $owner = array();
+ if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ $users = SharingUtilities::getProfilesForSharedUsers($_POST['project'], ResourceType::PROJECT);
+ $owner = array();
+
+ return View::make("experiment/create-complete", array("expInputs" => $experimentInputs, "users" => json_encode($users), "owner" => json_encode($owner)));
+ }else{
+ return View::make("experiment/no-sharing-create-complete", array("expInputs" => $experimentInputs));
+ }
- return View::make("experiment/create-complete", array("expInputs" => $experimentInputs, "users" => json_encode($users), "owner" => json_encode($owner)));
} else if (isset($_POST['save']) || isset($_POST['launch'])) {
$expId = ExperimentUtilities::create_experiment();
@@ -91,7 +96,6 @@ class ExperimentController extends BaseController
<a href=' . URL::to('/') . '"/experiment/summary?expId=' . $expId . '">go directly</a> to experiment summary page.</p>');
}*/
- $users = SharingUtilities::getProfilesForSharedUsers($expId, ResourceType::EXPERIMENT);
return Redirect::to('experiment/summary?expId=' . $expId);
} else
return Redirect::to("home")->with("message", "Something went wrong here. Please file a bug report using the link in the Help menu.");
@@ -134,13 +138,7 @@ class ExperimentController extends BaseController
}
$expVal["jobDetails"] = $jobDetails;
- $users = SharingUtilities::getProfilesForSharedUsers(Input::get("expId"), ResourceType::EXPERIMENT);
- $owner = array();
- if (strcmp(Session::get("username"), $experiment->userName) !== 0) {
- $owner[$experiment->userName] = $users[$experiment->userName];
- $users = array_diff_key($users, $owner);
- }
$data = array(
"expId" => Input::get("expId"),
@@ -148,11 +146,21 @@ class ExperimentController extends BaseController
"project" => $project,
"jobDetails" => $jobDetails,
"expVal" => $expVal,
- "autoRefresh"=> $autoRefresh,
- "users" => json_encode($users),
- "owner" => json_encode($owner),
- "can_write" => SharingUtilities::userCanWrite(Session::get("username"), $experiment->experimentId, ResourceType::EXPERIMENT)
+ "autoRefresh"=> $autoRefresh
);
+ if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ $users = SharingUtilities::getProfilesForSharedUsers(Input::get("expId"), ResourceType::EXPERIMENT);
+
+ $owner = array();
+ if (strcmp(Session::get("username"), $experiment->userName) !== 0) {
+ $owner[$experiment->userName] = $users[$experiment->userName];
+ $users = array_diff_key($users, $owner);
+ }
+ $data['can_write'] = SharingUtilities::userCanWrite(Session::get("username"), $experiment->experimentId, ResourceType::EXPERIMENT);
+ $data["users"] = json_encode($users);
+ $data["owner"] = json_encode($owner);
+ }
+
if( Input::has("dashboard"))
{
$detailedExperiment = ExperimentUtilities::get_detailed_experiment( $_GET['expId']);
@@ -208,57 +216,61 @@ class ExperimentController extends BaseController
public function editView()
{
- if (SharingUtilities::userCanWrite(Session::get("username"), $_GET['expId'], ResourceType::EXPERIMENT) === true) {
- $queueDefaults = array("queueName" => Config::get('pga_config.airavata')["queue-name"],
- "nodeCount" => Config::get('pga_config.airavata')["node-count"],
- "cpuCount" => Config::get('pga_config.airavata')["total-cpu-count"],
- "wallTimeLimit" => Config::get('pga_config.airavata')["wall-time-limit"]
- );
-
- $experiment = ExperimentUtilities::get_experiment($_GET['expId']);
- $expVal = ExperimentUtilities::get_experiment_values($experiment);
- $expVal["jobState"] = ExperimentUtilities::get_job_status($experiment);
+ $queueDefaults = array("queueName" => Config::get('pga_config.airavata')["queue-name"],
+ "nodeCount" => Config::get('pga_config.airavata')["node-count"],
+ "cpuCount" => Config::get('pga_config.airavata')["total-cpu-count"],
+ "wallTimeLimit" => Config::get('pga_config.airavata')["wall-time-limit"]
+ );
- $computeResources = CRUtilities::create_compute_resources_select($experiment->executionId, $expVal['scheduling']->resourceHostId);
+ $experiment = ExperimentUtilities::get_experiment($_GET['expId']);
+ $expVal = ExperimentUtilities::get_experiment_values($experiment);
+ $expVal["jobState"] = ExperimentUtilities::get_job_status($experiment);
- $clonedExp = false; $savedExp = false;
- if( Input::has("clonedExp"))
- $clonedExp = true;
- if( Input::has("savedExp"))
- $savedExp = true;
+ $computeResources = CRUtilities::create_compute_resources_select($experiment->executionId, $expVal['scheduling']->resourceHostId);
+
+ $clonedExp = false; $savedExp = false;
+ if( Input::has("clonedExp"))
+ $clonedExp = true;
+ if( Input::has("savedExp"))
+ $savedExp = true;
+
+ $experimentInputs = array(
+ "clonedExp" => $clonedExp,
+ "savedExp" => $savedExp,
+ "disabled" => ' ',
+ "experimentName" => $experiment->experimentName,
+ "experimentDescription" => $experiment->description,
+ "application" => $experiment->executionId,
+ "autoSchedule" => $experiment->userConfigurationData->airavataAutoSchedule,
+ "userDN" => $experiment->userConfigurationData->userDN,
+ "allowedFileSize" => Config::get('pga_config.airavata')["server-allowed-file-size"],
+ 'experiment' => $experiment,
+ "queueDefaults" => $queueDefaults,
+ 'computeResources' => $computeResources,
+ "resourceHostId" => $expVal['scheduling']->resourceHostId,
+ 'project' => $experiment->projectId,
+ 'expVal' => $expVal,
+ 'cloning' => true,
+ 'advancedOptions' => Config::get('pga_config.airavata')["advanced-experiment-options"]
+ );
- $experimentInputs = array(
- "clonedExp" => $clonedExp,
- "savedExp" => $savedExp,
- "disabled" => ' ',
- "experimentName" => $experiment->experimentName,
- "experimentDescription" => $experiment->description,
- "application" => $experiment->executionId,
- "autoSchedule" => $experiment->userConfigurationData->airavataAutoSchedule,
- "userDN" => $experiment->userConfigurationData->userDN,
- "allowedFileSize" => Config::get('pga_config.airavata')["server-allowed-file-size"],
- 'experiment' => $experiment,
- "queueDefaults" => $queueDefaults,
- 'computeResources' => $computeResources,
- "resourceHostId" => $expVal['scheduling']->resourceHostId,
- 'project' => $experiment->projectId,
- 'expVal' => $expVal,
- 'cloning' => true,
- 'advancedOptions' => Config::get('pga_config.airavata')["advanced-experiment-options"]
- );
+ if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ if (SharingUtilities::userCanWrite(Session::get("username"), $_GET['expId'], ResourceType::EXPERIMENT) === true) {
+ $users = SharingUtilities::getProfilesForSharedUsers($_GET['expId'], ResourceType::EXPERIMENT);
- $users = SharingUtilities::getProfilesForSharedUsers($_GET['expId'], ResourceType::EXPERIMENT);
+ $owner = array();
+ if (strcmp(Session::get("username"), $experiment->userName) !== 0) {
+ $owner[$experiment->userName] = $users[$experiment->userName];
+ $users = array_diff_key($users, $owner);
+ }
- $owner = array();
- if (strcmp(Session::get("username"), $experiment->userName) !== 0) {
- $owner[$experiment->userName] = $users[$experiment->userName];
- $users = array_diff_key($users, $owner);
+ return View::make("experiment/edit", array("expInputs" => $experimentInputs, "users" => json_encode($users), "owner" => json_encode($owner)));
}
-
- return View::make("experiment/edit", array("expInputs" => $experimentInputs, "users" => json_encode($users), "owner" => json_encode($owner)));
- }
- else {
- Redirect::to("experiment/summary?expId=" . $experiment->experimentId)->with("error", "You do not have permission to edit this experiment");
+ else {
+ Redirect::to("experiment/summary?expId=" . $experiment->experimentId)->with("error", "You do not have permission to edit this experiment");
+ }
+ }else {
+ return View::make("experiment/no-sharing-edit", array("expInputs" => $experimentInputs));
}
}
@@ -278,10 +290,28 @@ class ExperimentController extends BaseController
public function editSubmit()
{
- if (SharingUtilities::userCanWrite(Session::get("username"), Input::get('expId'), ResourceType::EXPERIMENT)) {
+ $experiment = ExperimentUtilities::get_experiment(Input::get('expId')); // update local experiment variable
+ $updatedExperiment = ExperimentUtilities::apply_changes_to_experiment($experiment, Input::all());
+
+ if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ if (SharingUtilities::userCanWrite(Session::get("username"), Input::get('expId'), ResourceType::EXPERIMENT)) {
+ if (isset($_POST['save']) || isset($_POST['launch'])) {
+
+ ExperimentUtilities::update_experiment($experiment->experimentId, $updatedExperiment);
+
+ if (isset($_POST['save'])) {
+ $experiment = ExperimentUtilities::get_experiment(Input::get('expId')); // update local experiment variable
+ }
+ if (isset($_POST['launch'])) {
+ ExperimentUtilities::launch_experiment($experiment->experimentId);
+ }
+
+ return Redirect::to('experiment/summary?expId=' . $experiment->experimentId);
+ } else
+ return View::make("home");
+ }
+ }else{
if (isset($_POST['save']) || isset($_POST['launch'])) {
- $experiment = ExperimentUtilities::get_experiment(Input::get('expId')); // update local experiment variable
- $updatedExperiment = ExperimentUtilities::apply_changes_to_experiment($experiment, Input::all());
ExperimentUtilities::update_experiment($experiment->experimentId, $updatedExperiment);
@@ -328,19 +358,29 @@ class ExperimentController extends BaseController
($pageNo - 1) * $this->limit);
$experimentStates = ExperimentUtilities::getExpStates();
- $can_write = array();
- foreach ($expContainer as $experiment) {
- $can_write[$experiment['experiment']->experimentId] = SharingUtilities::userCanWrite(Session::get("username"), $experiment['experiment']->experimentId, ResourceType::EXPERIMENT);
- }
+ if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ $can_write = array();
+ foreach ($expContainer as $experiment) {
+ $can_write[$experiment['experiment']->experimentId] = SharingUtilities::userCanWrite(Session::get("username"), $experiment['experiment']->experimentId, ResourceType::EXPERIMENT);
+ }
- return View::make('experiment/browse', array(
- 'input' => Input::all(),
- 'pageNo' => $pageNo,
- 'limit' => $this->limit,
- 'expStates' => $experimentStates,
- 'expContainer' => $expContainer,
- 'can_write' => $can_write
- ));
+ return View::make('experiment/browse', array(
+ 'input' => Input::all(),
+ 'pageNo' => $pageNo,
+ 'limit' => $this->limit,
+ 'expStates' => $experimentStates,
+ 'expContainer' => $expContainer,
+ 'can_write' => $can_write
+ ));
+ }else{
+ return View::make('experiment/no-sharing-browse', array(
+ 'input' => Input::all(),
+ 'pageNo' => $pageNo,
+ 'limit' => $this->limit,
+ 'expStates' => $experimentStates,
+ 'expContainer' => $expContainer
+ ));
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/controllers/ProjectController.php
----------------------------------------------------------------------
diff --git a/app/controllers/ProjectController.php b/app/controllers/ProjectController.php
index 966f36a..701e266 100755
--- a/app/controllers/ProjectController.php
+++ b/app/controllers/ProjectController.php
@@ -25,8 +25,13 @@ class ProjectController extends BaseController
public function createView()
{
- $users = SharingUtilities::getAllUserProfiles();
- return View::make("project/create", array("users" => json_encode($users), "owner" => json_encode(array())));
+ if (Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ $users = SharingUtilities::getAllUserProfiles();
+ return View::make("project/create", array("users" => json_encode($users), "owner" => json_encode(array())));
+ }else{
+ return View::make("project/no-sharing-create");
+ }
+
}
public function createSubmit()
@@ -45,35 +50,42 @@ class ProjectController extends BaseController
Session::put("projId", Input::get("projId"));
$project = ProjectUtilities::get_project(Input::get('projId'));
-
- $users = SharingUtilities::getProfilesForSharedUsers(Input::get('projId'), ResourceType::PROJECT);
-
- $owner = array();
- if (strcmp(Session::get("username"), $project->owner) !== 0) {
- $owner[$project->owner] = $users[$project->owner];
- $users = array_diff_key($users, $owner);
- }
-
$experiments = ProjectUtilities::get_experiments_in_project(Input::get("projId"));
- $experiment_can_write = array();
- foreach($experiments as $experiment) {
- if (SharingUtilities::userCanWrite(Session::get("username"), $experiment->experimentId, ResourceType::EXPERIMENT)) {
- $experiment_can_write[$experiment->experimentId] = true;
+ if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ $users = SharingUtilities::getProfilesForSharedUsers(Input::get('projId'), ResourceType::PROJECT);
+
+ $owner = array();
+ if (strcmp(Session::get("username"), $project->owner) !== 0) {
+ $owner[$project->owner] = $users[$project->owner];
+ $users = array_diff_key($users, $owner);
}
- else {
- $experiment_can_write[$experiment->experimentId] = false;
+
+ $experiment_can_write = array();
+ foreach($experiments as $experiment) {
+ if (SharingUtilities::userCanWrite(Session::get("username"), $experiment->experimentId, ResourceType::EXPERIMENT)) {
+ $experiment_can_write[$experiment->experimentId] = true;
+ }
+ else {
+ $experiment_can_write[$experiment->experimentId] = false;
+ }
}
+
+ return View::make("project/summary",
+ array("projectId" => Input::get("projId"),
+ "experiments" => $experiments,
+ "users" => json_encode($users),
+ "owner" => json_encode($owner),
+ "project_can_write" => SharingUtxilities::userCanWrite(Session::get("username"), Input::get("projId"), ResourceType::PROJECT),
+ "experiment_can_write" => $experiment_can_write
+ ));
+ }else{
+ return View::make("project/no-sharing-summary",
+ array("projectId" => Input::get("projId"),
+ "experiments" => $experiments
+ ));
}
- return View::make("project/summary",
- array("projectId" => Input::get("projId"),
- "experiments" => $experiments,
- "users" => json_encode($users),
- "owner" => json_encode($owner),
- "project_can_write" => SharingUtilities::userCanWrite(Session::get("username"), Input::get("projId"), ResourceType::PROJECT),
- "experiment_can_write" => $experiment_can_write
- ));
} else
return Redirect::to("home");
}
@@ -81,25 +93,29 @@ class ProjectController extends BaseController
public function editView()
{
if (Input::has("projId")) {
- if (SharingUtilities::userCanWrite(Session::get("username"), Input::get("projId"), ResourceType::PROJECT)) {
- $project = ProjectUtilities::get_project($_GET['projId']);
- $users = SharingUtilities::getProfilesForSharedUsers(Input::get('projId'), ResourceType::PROJECT);
- $owner = array();
-
- if (strcmp(Session::get("username"), $project->owner) !== 0) {
- $owner[$project->owner] = $users[$project->owner];
- $users = array_diff_key($users, $owner);
+ $project = ProjectUtilities::get_project($_GET['projId']);
+ if (Config::get('pga_config.airavata')["data-sharing-enabled"]) {
+ if (SharingUtilities::userCanWrite(Session::get("username"), Input::get("projId"), ResourceType::PROJECT)) {
+ $users = SharingUtilities::getProfilesForSharedUsers(Input::get('projId'), ResourceType::PROJECT);
+ $owner = array();
+ if (strcmp(Session::get("username"), $project->owner) !== 0) {
+ $owner[$project->owner] = $users[$project->owner];
+ $users = array_diff_key($users, $owner);
+ }
+ return View::make("project/edit",
+ array("projectId" => Input::get("projId"),
+ "project" => $project,
+ "users" => json_encode($users),
+ "owner" => json_encode($owner)
+ ));
+ }else {
+ return Redirect::to('project/summary?projId=' . Input::get("projId"))->with("error", "You do not have permission to edit this project.");
}
-
- return View::make("project/edit",
+ } else {
+ return View::make("project/no-sharing-edit",
array("projectId" => Input::get("projId"),
"project" => $project,
- "users" => json_encode($users),
- "owner" => json_encode($owner)
));
- }
- else {
- return Redirect::to('project/summary?projId=' . Input::get("projId"))->with("error", "You do not have permission to edit this project.");
}
} else
return Redirect::to("home");
@@ -107,16 +123,20 @@ class ProjectController extends BaseController
public function editSubmit()
{
- if (isset($_POST['save']) && SharingUtilities::userCanWrite(Session::get("username"), Input::get("projectId"), ResourceType::PROJECT)) {
- $projectDetails = array();
- $projectDetails["owner"] = Session::get("username");
- $projectDetails["name"] = Input::get("project-name");
- $projectDetails["description"] = Input::get("project-description");
+ $projectDetails = array();
+ $projectDetails["owner"] = Session::get("username");
+ $projectDetails["name"] = Input::get("project-name");
+ $projectDetails["description"] = Input::get("project-description");
- ProjectUtilities::update_project(Input::get("projectId"), $projectDetails);
+ if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ if (isset($_POST['save']) && SharingUtilities::userCanWrite(Session::get("username"), Input::get("projectId"), ResourceType::PROJECT)) {
- return Redirect::to("project/summary?projId=" . Input::get("projectId"))->with("project_edited", true);
+ ProjectUtilities::update_project(Input::get("projectId"), $projectDetails);
+ }
+ }else{
+ ProjectUtilities::update_project(Input::get("projectId"), $projectDetails);
}
+ return Redirect::to("project/summary?projId=" . Input::get("projectId"))->with("project_edited", true);
}
public function browseView()
@@ -142,23 +162,32 @@ class ProjectController extends BaseController
$projects = ProjectUtilities::get_all_user_accessible_projects_with_pagination($this->limit, ($pageNo - 1) * $this->limit);
}
- $can_write = array();
- $user = Session::get("username");
- foreach($projects as $project) {
- if (SharingUtilities::userCanWrite($user, $project->projectID, ResourceType::PROJECT)) {
- $can_write[$project->projectID] = true;
- }
- else {
- $can_write[$project->projectID] = false;
+ if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ $can_write = array();
+ $user = Session::get("username");
+ foreach($projects as $project) {
+ if (SharingUtilities::userCanWrite($user, $project->projectID, ResourceType::PROJECT)) {
+ $can_write[$project->projectID] = true;
+ }
+ else {
+ $can_write[$project->projectID] = false;
+ }
}
+
+ return View::make('project/browse', array(
+ 'pageNo' => $pageNo,
+ 'limit' => $this->limit,
+ 'projects' => $projects,
+ 'can_write' => $can_write
+ ));
+ }else{
+ return View::make('project/no-sharing-browse', array(
+ 'pageNo' => $pageNo,
+ 'limit' => $this->limit,
+ 'projects' => $projects
+ ));
}
- return View::make('project/browse', array(
- 'pageNo' => $pageNo,
- 'limit' => $this->limit,
- 'projects' => $projects,
- 'can_write' => $can_write
- ));
}
/**
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/libraries/ExperimentUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/ExperimentUtilities.php b/app/libraries/ExperimentUtilities.php
index 4d38c7c..8b4b195 100755
--- a/app/libraries/ExperimentUtilities.php
+++ b/app/libraries/ExperimentUtilities.php
@@ -550,7 +550,6 @@ class ExperimentUtilities
*/
public static function update_experiment($expId, $updatedExperiment)
{
- $share = $_POST['share-settings'];
try {
Airavata::updateExperiment(Session::get('authz-token'), $expId, $updatedExperiment);
} catch (InvalidRequestException $ire) {
@@ -571,7 +570,10 @@ class ExperimentUtilities
'<p>AiravataSystemException: ' . $ase->getMessage() . '</p>');
}
- ExperimentUtilities::share_experiment($expId, json_decode($share));
+ if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ $share = $_POST['share-settings'];
+ ExperimentUtilities::share_experiment($expId, json_decode($share));
+ }
}
@@ -1128,7 +1130,16 @@ class ExperimentUtilities
$expContainer = array();
$expNum = 0;
foreach ($experiments as $experiment) {
- if (SharingUtilities::userCanRead(Session::get('username'), $experiment->experimentId, ResourceType::EXPERIMENT)) {
+ if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ if (SharingUtilities::userCanRead(Session::get('username'), $experiment->experimentId, ResourceType::EXPERIMENT)) {
+ $expValue = ExperimentUtilities::get_experiment_values($experiment, true);
+ $expContainer[$expNum]['experiment'] = $experiment;
+ if ($expValue["experimentStatusString"] == "FAILED")
+ $expValue["editable"] = false;
+ $expContainer[$expNum]['expValue'] = $expValue;
+ $expNum++;
+ }
+ }else{
$expValue = ExperimentUtilities::get_experiment_values($experiment, true);
$expContainer[$expNum]['experiment'] = $experiment;
if ($expValue["experimentStatusString"] == "FAILED")
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/libraries/ProjectUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/ProjectUtilities.php b/app/libraries/ProjectUtilities.php
index ca8081e..ea65ddb 100755
--- a/app/libraries/ProjectUtilities.php
+++ b/app/libraries/ProjectUtilities.php
@@ -105,8 +105,6 @@ class ProjectUtilities
$project->description = $_POST['project-description'];
$project->gatewayId = Config::get('pga_config.airavata')['gateway-id'];
- $share = $_POST['share-settings'];
-
$projectId = null;
try {
@@ -127,7 +125,10 @@ class ProjectUtilities
CommonUtilities::print_error_message('AiravataSystemException!<br><br>' . $ase->getMessage());
}
- ProjectUtilities::share_project($projectId, json_decode($share));
+ if (Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ $share = $_POST['share-settings'];
+ ProjectUtilities::share_project($projectId, json_decode($share));
+ }
return $projectId;
}
@@ -203,8 +204,6 @@ class ProjectUtilities
$updatedProject->description = $projectDetails["description"];
$updatedProject->gatewayId = Config::get('pga_config.airavata')['gateway-id'];
- $share = $_POST['share-settings'];
-
try {
Airavata::updateProject(Session::get('authz-token'), $projectId, $updatedProject);
@@ -219,7 +218,10 @@ class ProjectUtilities
CommonUtilities::print_error_message('AiravataSystemException!<br><br>' . $ase->getMessage());
}
- ProjectUtilities::share_project($projectId, json_decode($share));
+ if (Config::get('pga_config.airavata')["data-sharing-enabled"]){
+ $share = $_POST['share-settings'];
+ ProjectUtilities::share_project($projectId, json_decode($share));
+ }
}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/views/experiment/no-sharing-browse.blade.php
----------------------------------------------------------------------
diff --git a/app/views/experiment/no-sharing-browse.blade.php b/app/views/experiment/no-sharing-browse.blade.php
new file mode 100755
index 0000000..5b76914
--- /dev/null
+++ b/app/views/experiment/no-sharing-browse.blade.php
@@ -0,0 +1,214 @@
+@extends('layout.basic')
+
+@section('page-header')
+@parent
+{{ HTML::style('css/datetimepicker.css')}}
+
+@stop
+
+@section('content')
+
+<div class="container" style="max-width: 80%;">
+ <form action="{{URL::to('/')}}/experiment/browse" method="post" class="form-inline" role="form">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h3>Search for Experiments</h3>
+ </div>
+ <div class="panel-body">
+ <div class="form-group">
+ <label for="search-key">Search by</label>
+ <select class="form-control" name="search-key" id="search-key">
+ <?php
+
+ // set up options for select input
+ $values = array('experiment-name', 'experiment-description', 'application', 'creation-time');
+ $labels = array('Experiment Name', 'Experiment Description', 'Application', 'Creation Time');
+ $disabled = array('', '', '', '');
+
+ ExperimentUtilities::create_options($values, $labels, $disabled);
+
+ ?>
+ </select>
+ </div>
+
+ <div class="form-group search-text-block">
+ <label for="search-value">for</label>
+ <input type="search" class="form-control" name="search-value" id="search-value" placeholder="value"
+ value="<?php if (isset($_POST['search-value'])) echo $_POST['search-value'] ?>">
+ </div>
+
+ <select name="status-type" class="form-control select-status">
+ <option value="ALL">Status</option>
+ <?php
+ foreach ($expStates as $index => $state) {
+ if (isset($input) && isset($input["status-type"]) && $state == $input["status-type"]) {
+ echo '<option value="' . $state . '" selected>' . $state . '</option>';
+ } else {
+ echo '<option value="' . $state . '">' . $state . '</option>';
+ }
+ }
+ ?>
+ </select>
+
+ <div class="container select-dates hide">
+ <div class="col-md-12">
+ Select dates between which you want to search for experiments.
+ </div>
+ <div class="col-sm-8" style="height:75px;">
+ <div class='col-md-6'>
+ <div class="form-group">
+ <div class='input-group date' id='datetimepicker9'>
+ <input type='text' class="form-control" placeholder="From Date" name="from-date"
+ value="<?php if (isset($_POST['from-date'])) echo $_POST['from-date'] ?>"/>
+ <span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span>
+ </span>
+ </div>
+ </div>
+ </div>
+ <div class='col-md-6'>
+ <div class="form-group">
+ <div class='input-group date' id='datetimepicker10'>
+ <input type='text' class="form-control" placeholder="To Date" name="to-date"
+ value="<?php if (isset($_POST['to-date'])) echo $_POST['to-date'] ?>"/>
+ <span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span>
+ </span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <button name="search" type="submit" class="btn btn-primary pull-right" value="Search"><span
+ class="glyphicon glyphicon-search"></span> Search
+ </button>
+ <p class="help-block">You can use * as a wildcard character. Tip: search for * alone to retrieve all of your
+ experiments.</p>
+
+ </div>
+ </div>
+
+ <!-- Pagination Handling -->
+ <?php
+ if (isset($expContainer)) {
+ ?>
+ <div class="pull-right btn-toolbar" style="padding-bottom: 5px">
+ <?php
+ if ($pageNo != 1) {
+ echo '<input class="btn btn-primary btn-xs" type="submit" style="cursor: pointer" name="prev" value="Previous"/>';
+ }
+ if (sizeof($expContainer) > 0) {
+ echo '<input class="btn btn-primary btn-xs" type="submit" style="cursor: pointer" name="next" value="Next"/>';
+ }
+ ?>
+ </div>
+ <div class="pull-left">
+ <?php if (sizeof($expContainer) != 0) echo 'Showing experiments from ' . strval(($pageNo - 1) * $limit + 1)
+ . ' to ' . strval(min($pageNo * $limit, ($pageNo - 1) * $limit + sizeof($expContainer))); ?>
+ </div>
+ <input type="hidden" name="pageNo" value="<?php echo($pageNo) ?>"/>
+ <div style="clear: both"></div>
+ <?php
+ }
+ ?>
+ </form>
+
+ @include('partials/experiment-container')
+
+</div>
+
+@stop
+
+@section('scripts')
+@parent
+{{ HTML::script('js/moment.js')}}
+{{ HTML::script('js/datetimepicker.js')}}
+
+<script type="text/javascript">
+
+ $(document).ready(function () {
+
+//------------------------Commenting Client Side filtering--------------------------------------
+// /* script to make status select work on the UI side itself. */
+//
+// $(".select-status").on("change", function(){
+// selectedStatus = this.value;
+//
+// if( selectedStatus == "ALL")
+// {
+// $("table tr").slideDown();
+// }
+// else
+// {
+// $("table tr").each(function(index) {
+// if (index != 0) {
+//
+// $row = $(this);
+//
+// var status = $.trim( $row.find("td:last").text() );
+// if (status == selectedStatus )
+// {
+// $(this).slideDown();
+// }
+// else {
+// $(this).slideUp();
+// }
+// }
+// });
+// }
+// });
+
+ /* making datetimepicker work for exp search */
+
+ $('#datetimepicker9').datetimepicker({
+ pick12HourFormat: false
+ });
+ $('#datetimepicker10').datetimepicker({
+ pick12HourFormat: false
+ });
+ $("#datetimepicker9").on("dp.change", function (e) {
+ $('#datetimepicker10').data("DateTimePicker").setMinDate(e.date);
+
+ //hack to close calendar on selecting date
+ $(this).find(".glyphicon-calendar").click();
+ });
+ $("#datetimepicker10").on("dp.change", function (e) {
+ $('#datetimepicker9').data("DateTimePicker").setMaxDate(e.date);
+
+ //hack to close calendar on selecting date
+ $(this).find(".glyphicon-calendar").click();
+ });
+
+ /* selecting creation time */
+ $("#search-key").on("change", function () {
+ if (this.value == "creation-time") {
+ $(".search-text-block").addClass("hide");
+ $(".select-dates").removeClass("hide");
+ $("#search-value").removeAttr("required");
+
+ }
+ else {
+ $(".search-text-block").removeClass("hide");
+ $(".select-dates").addClass("hide");
+ $("#search-value").attr("required");
+ }
+ });
+
+ changeInputVisibility($("#search-key").val());
+
+ });
+
+ function changeInputVisibility(selectedStatus) {
+ if (selectedStatus == "creation-time") {
+ $(".search-text-block").addClass("hide");
+ $(".select-dates").removeClass("hide");
+ $("#search-value").removeAttr("required");
+
+ }
+ else {
+ $(".search-text-block").removeClass("hide");
+ $(".select-dates").addClass("hide");
+ $("#search-value").attr("required");
+ }
+ }
+</script>
+@stop
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/views/experiment/no-sharing-create-complete.blade.php
----------------------------------------------------------------------
diff --git a/app/views/experiment/no-sharing-create-complete.blade.php b/app/views/experiment/no-sharing-create-complete.blade.php
new file mode 100755
index 0000000..31ed895
--- /dev/null
+++ b/app/views/experiment/no-sharing-create-complete.blade.php
@@ -0,0 +1,168 @@
+@extends('layout.basic')
+
+@section('page-header')
+@parent
+{{ HTML::style('css/sharing.css') }}
+@stop
+
+@section('content')
+<div class="col-md-offset-3 col-md-6">
+
+ <h1>Create a new experiment</h1>
+
+ <form action="{{URL::to('/')}}/experiment/create" method="POST" role="form" enctype="multipart/form-data">
+
+ <input type="hidden" name="experiment-name" value="{{$expInputs['experimentName']}}">
+ <input type="hidden" name="experiment-description" value="{{$expInputs['experimentDescription']}}">
+ <input type="hidden" name="project" value="{{$expInputs['project']}}">
+ <input type="hidden" name="application" value="{{$expInputs['application']}}">
+
+ @include('partials/experiment-inputs', array("expInputs" => $expInputs, "queueDefaults" =>
+ $expInputs['queueDefaults']) )
+
+ <div class="form-group btn-toolbar">
+ <div class="btn-group">
+ <button onclick="disableWarn()" name="save" type="submit" class="btn btn-primary" value="Save">Save</button>
+ <button onclick="disableWarn()" name="launch" type="submit" class="btn btn-success" id="expLaunch" value="Save and launch">Save
+ and launch
+ </button>
+ </div>
+
+ <a onclick="disableWarn()" href="{{URL::to('/')}}/experiment/create" class="btn btn-default" role="button">Start over</a>
+ </div>
+
+ </form>
+
+<input type="hidden" id="allowedFileSize" value="{{ $expInputs['allowedFileSize'] }}"/>
+</div>
+
+
+@stop
+
+@section('scripts')
+@parent
+<script>
+ var warn = true;
+
+ function disableWarn(){
+ warn = false;
+ return false;
+ }
+
+ $('.file-input').bind('change', function () {
+
+ var inputFileSize = Math.round(this.files[0].size / (1024 * 1024));
+ if (inputFileSize > $("#allowedFileSize").val()) {
+ alert("The input file size is greater than the allowed file size (" + $("#allowedFileSize").val() + " MB) in a form. Please upload another file.");
+ $(this).val("");
+ }
+
+ });
+
+ $("#enableEmail").change(function () {
+ if (this.checked) {
+ $("#emailAddresses").attr("required", "required");
+ $(this).parent().children(".emailSection").removeClass("hide");
+ }
+ else {
+ $(this).parent().children(".emailSection").addClass("hide");
+ $("#emailAddresses").removeAttr("required");
+ }
+
+ });
+
+ $(".addEmail").click(function () {
+ var emailInput = $(this).parent().find("#emailAddresses").clone();
+ emailInput.removeAttr("id").removeAttr("required").val("").appendTo(".emailAddresses");
+ });
+
+ $("#compute-resource").change(function () {
+ var crId = $(this).val();
+ $(".loading-img ").removeClass("hide");
+ $.ajax({
+ url: '../experiment/getQueueView',
+ type: 'get',
+ data: {crId: crId},
+ success: function (data) {
+ $(".queue-view").html(data);
+ $(".loading-img ").addClass("hide");
+ }
+ });
+ });
+
+ window.onbeforeunload = function() {
+ if(warn){
+ return "Are you sure you want to navigate to other page ? (you will loose all unsaved data)";
+ }
+ warn = true;
+ }
+
+ //Selecting the first option as the default
+ $( document ).ready(function() {
+ var crId = $("#compute-resource").val();
+ $(".loading-img ").removeClass("hide");
+ $.ajax({
+ url: '../experiment/getQueueView',
+ type: 'get',
+ data: {crId: crId},
+ success: function (data) {
+ $(".queue-view").html(data);
+ $(".loading-img ").addClass("hide");
+ },error : function(data){
+ $(".loading-img ").addClass("hide");
+ }
+ });
+ });
+
+ //Setting the file input view JS code
+ $( document ).ready(function() {
+ function readBlob(opt_startByte, opt_stopByte, fileId) {
+
+ var files = document.getElementById(fileId).files;
+ if (!files.length) {
+ alert('Please select a file!');
+ return;
+ }
+
+ var file = files[0];
+ var start = 0;
+ var stop = Math.min(512*1024,file.size - 1);
+
+ var reader = new FileReader();
+
+ // If we use onloadend, we need to check the readyState.
+ reader.onloadend = function(evt) {
+ if (evt.target.readyState == FileReader.DONE) { // DONE == 2
+ $('#byte_content').html(evt.target.result.replace(/(?:\r\n|\r|\n)/g, '<br />'));
+ $('#byte_range').html(
+ ['Read bytes: ', start + 1, ' - ', stop + 1,
+ ' of ', file.size, ' byte file'].join(''));
+ }
+ };
+
+ var blob = file.slice(start, stop + 1);
+ reader.readAsBinaryString(blob);
+
+ $('#input-file-view').modal('show');
+ }
+
+ $( ".readBytesButtons" ).click(function() {
+ var startByte = $(this).data('startbyte');
+ var endByte = $(this).data('endbyte');
+ var fileId = $(this).data('file-id');
+ readBlob(startByte, endByte, fileId);
+ });
+ });
+
+ updateList = function() {
+ var input = document.getElementById('optInputFiles');
+ var output = document.getElementById('optFileList');
+
+ output.innerHTML = '<ul>';
+ for (var i = 0; i < input.files.length; ++i) {
+ output.innerHTML += '<li>' + input.files.item(i).name + '</li>';
+ }
+ output.innerHTML += '</ul>';
+ }
+</script>
+@stop
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/views/experiment/no-sharing-edit.blade.php
----------------------------------------------------------------------
diff --git a/app/views/experiment/no-sharing-edit.blade.php b/app/views/experiment/no-sharing-edit.blade.php
new file mode 100755
index 0000000..f9042b5
--- /dev/null
+++ b/app/views/experiment/no-sharing-edit.blade.php
@@ -0,0 +1,96 @@
+@extends('layout.basic')
+
+@section('page-header')
+@parent
+@stop
+
+@section('content')
+
+<?php
+//$echoResources = array('localhost', 'trestles.sdsc.edu', 'lonestar.tacc.utexas.edu');
+//$wrfResources = array('trestles.sdsc.edu');
+
+//$appResources = array('Echo' => $echoResources, 'WRF' => $wrfResources);
+?>
+
+
+<div class="container">
+
+ <div class="col-md-offset-3 col-md-6">
+ <h1>Edit Experiment</h1>
+
+ <form action="{{URL::to('/')}}/experiment/edit" method="POST" role="form" enctype="multipart/form-data">
+ <input type="hidden" name="expId" value="<?php echo Input::get('expId'); ?>"/>
+
+ @include('partials/experiment-inputs', array( "expInputs", $expInputs))
+
+ @if( count( $expInputs['computeResources']) > 0)
+ <div class="btn-toolbar">
+ <div class="btn-group">
+ <input name="save" type="submit" class="btn btn-primary"
+ value="Save" <?php if (!$expInputs['expVal']['editable']) echo 'disabled' ?>>
+ <input name="launch" type="submit" class="btn btn-success"
+ value="Save and launch" <?php if (!$expInputs['expVal']['editable']) echo 'disabled' ?>>
+ </div>
+ </div>
+ @else
+ <p class="well alert alert-danger">
+ 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
+ </form>
+ </div>
+
+</div>
+
+{{ HTML::image("assets/Profile_avatar_placeholder_large.png", 'placeholder image', array('class' => 'baseimage')) }}
+
+@include('partials/sharing-form-modal')
+@stop
+
+
+@section('scripts')
+@parent
+<script>
+ $('.file-input').bind('change', function () {
+
+ var inputFileSize = Math.round(this.files[0].size / (1024 * 1024));
+ if (inputFileSize > $("#allowedFileSize").val()) {
+ alert("The input file size is greater than the allowed file size (" + $("#allowedFileSize").val() + " MB) in a form. Please upload another file.");
+ $(this).val("");
+ }
+
+ });
+
+ $("#enableEmail").change(function () {
+ if (this.checked) {
+ $("#emailAddresses").attr("required", "required");
+ $(this).parent().children(".emailSection").removeClass("hide");
+ }
+ else {
+ $(this).parent().children(".emailSection").addClass("hide");
+ $("#emailAddresses").removeAttr("required");
+ }
+
+ });
+
+ $(".addEmail").click(function () {
+ var emailInput = $(this).parent().find("#emailAddresses").clone();
+ emailInput.removeAttr("id").removeAttr("required").val("").appendTo(".emailAddresses");
+ });
+
+ $("#compute-resource").change(function () {
+ var crId = $(this).val();
+ $(".loading-img ").removeClass("hide");
+ $.ajax({
+ url: '../experiment/getQueueView',
+ type: 'get',
+ data: {crId: crId},
+ success: function (data) {
+ $(".queue-view").html(data);
+ $(".loading-img ").addClass("hide");
+ }
+ });
+ });
+</script>
+@stop
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/views/partials/experiment-container.blade.php
----------------------------------------------------------------------
diff --git a/app/views/partials/experiment-container.blade.php b/app/views/partials/experiment-container.blade.php
index 561063e..dd86c98 100644
--- a/app/views/partials/experiment-container.blade.php
+++ b/app/views/partials/experiment-container.blade.php
@@ -28,8 +28,10 @@
<a href="{{URL::to('/')}}/experiment/summary?expId={{$experiment['experiment']->experimentId}}" target="_blank">
{{ $experiment['experiment']->name }}
</a>
- @if( $experiment['expValue']['editable'] and $can_write[$experiment['experiment']->experimentId] === true)
- <a href="{{URL::to('/')}}/experiment/edit?expId={{$experiment['experiment']->experimentId}}" title="Edit"><span class="glyphicon glyphicon-pencil"></span></a>
+ @if(Config::get('pga_config.airavata')["data-sharing-enabled"])
+ @if( $experiment['expValue']['editable'] and $can_write[$experiment['experiment']->experimentId] === true)
+ <a href="{{URL::to('/')}}/experiment/edit?expId={{$experiment['experiment']->experimentId}}" title="Edit"><span class="glyphicon glyphicon-pencil"></span></a>
+ @endif
@endif
</td>
<td>{{$experiment['experiment']->userName}}</td>
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/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 80fcf55..dbdf579 100644
--- a/app/views/partials/experiment-info.blade.php
+++ b/app/views/partials/experiment-info.blade.php
@@ -77,7 +77,7 @@
<tr>
<td>Name</td>
<td>ID</td>
- <td>Status</td>
+ <td>Status</td>SharingUtilities::userCanWrite(Session::get("username"), $experiment->experimentId, ResourceType::EXPERIMENT)
<td>Creation Time</td>
</tr>
<tr>
@@ -204,10 +204,12 @@
</table>
<div class="form-group">
- @if($can_write === true)
- @include('partials/sharing-display-body', array("form" => true))
- @else
- @include('partials/sharing-display-body', array("form" => false))
+ @if(Config::get('pga_config.airavata')["data-sharing-enabled"])
+ @if($can_write === true)
+ @include('partials/sharing-display-body', array("form" => true))
+ @else
+ @include('partials/sharing-display-body', array("form" => false))
+ @endif
@endif
</div>
@@ -245,6 +247,7 @@
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"
@@ -254,6 +257,7 @@
Edit
</a>
@endif
+ @endif
</div>
</form>
@endif
@@ -340,20 +344,24 @@
</div>
@endif
-@if($can_write === true)
-@include('partials/sharing-form-modal')
+@if(Config::get('pga_config.airavata')["data-sharing-enabled"])
+ @if($can_write === true)
+ @include('partials/sharing-form-modal')
+ @endif
@endif
-
@section('scripts')
@parent
{{ HTML::script('js/time-conversion.js')}}
-<script>
- var users = {{ $users }};
- var owner = {{ $owner }};
- $('#project-share').data({url: "{{URL::to('/')}}/experiment/unshared-users", resourceId: "{{Input::get('expId')}}"})
-</script>
-{{ HTML::script('js/sharing/sharing_utils.js') }}
-{{ HTML::script('js/sharing/share.js') }}
+@if(Config::get('pga_config.airavata')["data-sharing-enabled"])
+ <script>
+ var users = {{ $users }};
+ var owner = {{ $owner }};
+ $('#project-share').data({url: "{{URL::to('/')}}/experiment/unshared-users", resourceId: "{{Input::get('expId')}}"})
+ </script>
+ {{ HTML::script('js/sharing/sharing_utils.js') }}
+ {{ HTML::script('js/sharing/share.js') }}
+@endif
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.2.1/Chart.bundle.min.js"></script>
{{ HTML::script('js/simstream.js') }}
<script>
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/views/project/no-sharing-browse.blade.php
----------------------------------------------------------------------
diff --git a/app/views/project/no-sharing-browse.blade.php b/app/views/project/no-sharing-browse.blade.php
new file mode 100755
index 0000000..4dc8efb
--- /dev/null
+++ b/app/views/project/no-sharing-browse.blade.php
@@ -0,0 +1,146 @@
+@extends('layout.basic')
+
+@section('page-header')
+@parent
+@stop
+
+@section('content')
+
+<div class="container" style="max-width: 80%;">
+
+ <form action="{{ URL::to('/') }}/project/browse" method="post" class="form-inline" role="form">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h3>Search for Projects</h3>
+ </div>
+ <div class="panel-body">
+ <div class="form-group">
+ <label for="search-key">Search by</label>
+ <select class="form-control" name="search-key" id="search-key">
+ <option value="project-name">Project Name</option>
+ <option value="project-description">Project description</option>
+ </select>
+ </div>
+
+ <div class="form-group">
+ <label for="search-value">for</label>
+ <input type="search" class="form-control" name="search-value" id="search-value" placeholder="value"
+ value="<?php if (isset($_POST['search-value'])) echo $_POST['search-value'] ?>">
+ </div>
+
+ <button name="search" type="submit" class="btn btn-primary" value="Search"><span
+ class="glyphicon glyphicon-search"></span> Search
+ </button>
+ <p class="help-block">You can use * as a wildcard character. Tip: search for * alone to retrieve all of your
+ projects.</p>
+ </div>
+ </div>
+
+
+ <!-- Pagination Handling -->
+ <?php
+ if (isset($projects)) {
+ ?>
+ <div class="pull-right btn-toolbar" style="padding-bottom: 5px">
+ <?php
+ if ($pageNo != 1) {
+ echo '<input class="btn btn-primary btn-xs" type="submit" style="cursor: pointer" name="prev" value="Previous"/>';
+ }
+ if (sizeof($projects) > 0) {
+ echo '<input class="btn btn-primary btn-xs" type="submit" style="cursor: pointer" name="next" value="Next"/>';
+ }
+ ?>
+ </div>
+ <div class="pull-left">
+ <?php if (sizeof($projects) != 0) echo 'Showing projects from ' . strval(($pageNo - 1) * $limit + 1)
+ . ' to ' . strval(min($pageNo * $limit, ($pageNo - 1) * $limit + sizeof($projects))); ?>
+ </div>
+ <input type="hidden" name="pageNo" value="<?php echo($pageNo) ?>"/>
+ <div style="clear: both"></div>
+ <?php
+ }
+ ?>
+ </form>
+
+
+
+
+
+ <?php
+
+ if (isset($projects))
+ {
+ /**
+ * get results
+ */
+
+ /**
+ * display results
+ */
+ if (sizeof($projects) == 0)
+ {
+ if ($pageNo == 1) {
+ CommonUtilities::print_warning_message('No results found. Please try again.');
+ } else {
+ CommonUtilities::print_warning_message('No more results found.');
+ }
+ }
+ else
+ {
+ ?>
+ <div class="table-responsive">
+ <table class="table">
+
+ <tr>
+
+ <th>Name</th>
+ <th>Owner</th>
+ <th>Creation Time</th>
+ <th>Experiments</th>
+
+ </tr>
+ <?php
+
+ foreach ($projects as $project) {
+
+ ?>
+ <tr>
+ <td>
+ <?php echo $project->name; ?>
+ <a href="{{URL::to('/')}}/project/edit?projId=<?php echo $project->projectID; ?>" title="Edit">
+ <span class="glyphicon glyphicon-pencil"></span>
+ </a>
+ </td>
+ <td>
+ {{$project->owner}}
+ </td>
+ <td class="time" unix-time="
+ <?php echo $project->creationTime / 1000 ?>">
+ </td>
+ <td>
+ <a href="{{URL::to('/')}}/project/summary?projId=<?php echo $project->projectID; ?>">
+ <span class="glyphicon glyphicon-list"></span>
+ </a>
+ <a href="{{URL::to('/')}}/project/summary?projId=<?php echo $project->projectID; ?>"> View</a>
+ </td>
+ </tr>
+ <?php
+
+ }
+
+ echo '</table>';
+ echo '</div>';
+ }
+
+ }
+
+ ?>
+
+
+ </div>
+
+ @stop
+ @section('scripts')
+ @parent
+ {{ HTML::script('js/time-conversion.js')}}
+ @stop
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/views/project/no-sharing-create.blade.php
----------------------------------------------------------------------
diff --git a/app/views/project/no-sharing-create.blade.php b/app/views/project/no-sharing-create.blade.php
new file mode 100755
index 0000000..665fe78
--- /dev/null
+++ b/app/views/project/no-sharing-create.blade.php
@@ -0,0 +1,33 @@
+@extends('layout.basic')
+@section('page-header')
+ @parent
+@stop
+
+@section('content')
+
+<div class="container" style="max-width: 750px">
+
+ <h1>Create a new project</h1>
+
+
+ <form action="create" method="post" role="form" class="project-creation-form">
+ <div class="form-group required">
+ <label for="project-name" class="control-label">Project Name</label>
+ <input type="text" class="form-control projectName" name="project-name" id="project-name"
+ placeholder="Enter project name" autofocus required maxlength="50">
+ </div>
+
+ <div class="form-group">
+ <label for="project-description">Project Description</label>
+ <textarea class="form-control" name="project-description" id="project-description"
+ placeholder="Optional: Enter a short description of the project" maxlength="200"></textarea>
+ </div>
+
+ <input name="save" type="submit" class="btn btn-primary create-project" value="Save">
+ <input name="clear" type="reset" class="btn btn-default" value="Clear">
+
+ </form>
+
+</div>
+
+@stop
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/views/project/no-sharing-edit.blade.php
----------------------------------------------------------------------
diff --git a/app/views/project/no-sharing-edit.blade.php b/app/views/project/no-sharing-edit.blade.php
new file mode 100755
index 0000000..8e17b72
--- /dev/null
+++ b/app/views/project/no-sharing-edit.blade.php
@@ -0,0 +1,49 @@
+@extends('layout.basic')
+
+@section('page-header')
+ @parent
+@stop
+
+@section('content')
+
+<div class="container" style="max-width: 750px;">
+
+ <?php if (Session::has("project_edited")) { ?>
+ <div class="alert alert-success">
+ The project has been edited
+ </div>
+ <?php Session::forget("project_edited");
+
+ }
+ ?>
+
+
+ <h1>Edit Project</h1>
+
+ <form action="edit" method="post" role="form">
+ <div class="form-group">
+ <label for="project-name">Project Name</label>
+ <input type="text"
+ class="form-control"
+ name="project-name"
+ id="project-name"
+ value="{{ $project->name }}" required maxlength="50">
+ </div>
+ <div class="form-group">
+ <label for="project-description">Project Description</label>
+ <textarea class="form-control"
+ name="project-description"
+ id="project-description" maxlength="200">{{ $project->description }}</textarea>
+ <input type="hidden" name="projectId" value="{{ Input::get('projId') }}"/>
+ </div>
+
+ <div class="btn-toolbar">
+ <input name="save" type="submit" class="btn btn-primary" value="Save">
+ </div>
+
+
+ </form>
+
+
+</div>
+@stop
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/views/project/no-sharing-summary.blade.php
----------------------------------------------------------------------
diff --git a/app/views/project/no-sharing-summary.blade.php b/app/views/project/no-sharing-summary.blade.php
new file mode 100755
index 0000000..3cfe606
--- /dev/null
+++ b/app/views/project/no-sharing-summary.blade.php
@@ -0,0 +1,103 @@
+@extends('layout.basic')
+
+@section('page-header')
+ @parent
+@stop
+
+@section('content')
+
+<div class="container" style="max-width: 80%;">
+ <?php
+ $project = ProjectUtilities::get_project($_GET['projId']);
+ ?>
+ <h1>Project Summary
+ @if( !isset($dashboard))
+ <small><a href="{{ URL::to('/') }}/project/summary?projId={{ $project->projectID }}"
+ title="Refresh"><span class="glyphicon glyphicon-refresh refresh-exp"></span></a></small>
+ @endif
+ </h1>
+ <div>
+ <div>
+ <h3>{{ $project->name }}
+ <a href="edit?projId={{ $project->projectID }}" title="Edit">
+ <span class="glyphicon glyphicon-pencil"></span>
+ </a>
+ </h3>
+ <p>{{ $project->description }}</p>
+ </div>
+ <div class="table-responsive">
+ <table class="table">
+ <tr>
+
+ <th>Name</th>
+ <th>Owner</th>
+ <th>Application</th>
+ <th>Compute Resource</th>
+ <th>Last Modified Time</th>
+ <th>Experiment Status</th>
+ <th>Job Status</th>
+
+ </tr>
+ <?php
+
+ foreach ($experiments as $experiment) {
+ $expValues = ExperimentUtilities::get_experiment_values($experiment, true);
+ $expValues["jobState"] = ExperimentUtilities::get_job_status($experiment);
+ $applicationInterface = AppUtilities::get_application_interface($experiment->executionId);
+
+ try {
+ $cr = CRUtilities::get_compute_resource($experiment->userConfigurationData->computationalResourceScheduling->resourceHostId);
+ if (!empty($cr)) {
+ $resourceName = $cr->hostName;
+ }
+ } catch (Exception $ex) {
+ $resourceName = 'Error while retrieving the CR';
+ }
+ ?>
+
+ <tr>
+ <td>
+ <a href="{{URL::to('/')}}/experiment/summary?expId={{$experiment->experimentId}}">
+ {{ $experiment->experimentName }}
+ </a>
+ @if( $expValues['editable'] and $experiment_can_write[$experiment->experimentId] === true)
+ <a href="{{URL::to('/')}}/experiment/edit?expId={{$experiment->experimentId}}" title="Edit"><span class="glyphicon glyphicon-pencil"></span></a>
+ @endif
+ </td>
+ <td>{{ $experiment->userName }}</td>
+ <td>
+ @if( $applicationInterface != null )
+ {{ $applicationInterface->applicationName }}
+ @else
+ <span class='text-danger'>Removed</span>
+ @endif
+ </td>
+
+ <td>{{ $resourceName }}</td>
+ <td class="time" unix-time="{{$expValues["experimentTimeOfStateChange"]}}"></td>
+ <td>
+ <div class="{{ExperimentUtilities::get_status_color_class( $expValues["experimentStatusString"])}}">
+ {{ $expValues["experimentStatusString"] }}
+ </div>
+ </td>
+
+ <td>
+ @if (isset($expValues["jobState"]) )
+ <div class="{{ ExperimentUtilities::get_status_color_class( $expValues["jobState"]) }}">
+ {{ $expValues["jobState"] }}
+ </div>
+ @endif
+ </td>
+ </tr>
+ <?php
+ }
+ ?>
+ </table>
+ </div>
+ </div>
+</div>
+@stop
+@section('scripts')
+@parent
+{{ HTML::script('js/time-conversion.js')}}
+@stop
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/views/project/no-summary.blade.php
----------------------------------------------------------------------
diff --git a/app/views/project/no-summary.blade.php b/app/views/project/no-summary.blade.php
new file mode 100755
index 0000000..a307a63
--- /dev/null
+++ b/app/views/project/no-summary.blade.php
@@ -0,0 +1,119 @@
+@extends('layout.basic')
+
+@section('page-header')
+@parent
+{{ HTML::style('css/sharing.css') }}
+@stop
+
+@section('content')
+
+<div class="container" style="max-width: 80%;">
+ <?php
+ $project = ProjectUtilities::get_project($_GET['projId']);
+ ?>
+ <h1>Project Summary
+ @if( !isset($dashboard))
+ <small><a href="{{ URL::to('/') }}/project/summary?projId={{ $project->projectID }}"
+ title="Refresh"><span class="glyphicon glyphicon-refresh refresh-exp"></span></a></small>
+ @endif
+ </h1>
+ <div>
+ <div>
+ <h3>{{ $project->name }}
+ @if($project_can_write === true)
+ <a href="edit?projId={{ $project->projectID }}" title="Edit">
+ <span class="glyphicon glyphicon-pencil"></span>
+ </a>
+ @endif
+ </h3>
+ <p>{{ $project->description }}</p>
+ </div>
+ <div class="table-responsive">
+ <table class="table">
+ <tr>
+
+ <th>Name</th>
+ <th>Owner</th>
+ <th>Application</th>
+ <th>Compute Resource</th>
+ <th>Last Modified Time</th>
+ <th>Experiment Status</th>
+ <th>Job Status</th>
+
+ </tr>
+ <?php
+
+ foreach ($experiments as $experiment) {
+ $expValues = ExperimentUtilities::get_experiment_values($experiment, true);
+ $expValues["jobState"] = ExperimentUtilities::get_job_status($experiment);
+ $applicationInterface = AppUtilities::get_application_interface($experiment->executionId);
+
+ try {
+ $cr = CRUtilities::get_compute_resource($experiment->userConfigurationData->computationalResourceScheduling->resourceHostId);
+ if (!empty($cr)) {
+ $resourceName = $cr->hostName;
+ }
+ } catch (Exception $ex) {
+ $resourceName = 'Error while retrieving the CR';
+ }
+ ?>
+
+ <tr>
+ <td>
+ <a href="{{URL::to('/')}}/experiment/summary?expId={{$experiment->experimentId}}">
+ {{ $experiment->experimentName }}
+ </a>
+ @if( $expValues['editable'] and $experiment_can_write[$experiment->experimentId] === true)
+ <a href="{{URL::to('/')}}/experiment/edit?expId={{$experiment->experimentId}}" title="Edit"><span class="glyphicon glyphicon-pencil"></span></a>
+ @endif
+ </td>
+ <td>{{ $experiment->userName }}</td>
+ <td>
+ @if( $applicationInterface != null )
+ {{ $applicationInterface->applicationName }}
+ @else
+ <span class='text-danger'>Removed</span>
+ @endif
+ </td>
+
+ <td>{{ $resourceName }}</td>
+ <td class="time" unix-time="{{$expValues["experimentTimeOfStateChange"]}}"></td>
+ <td>
+ <div class="{{ExperimentUtilities::get_status_color_class( $expValues["experimentStatusString"])}}">
+ {{ $expValues["experimentStatusString"] }}
+ </div>
+ </td>
+
+ <td>
+ @if (isset($expValues["jobState"]) )
+ <div class="{{ ExperimentUtilities::get_status_color_class( $expValues["jobState"]) }}">
+ {{ $expValues["jobState"] }}
+ </div>
+ @endif
+ </td>
+ </tr>
+ <?php
+ }
+ ?>
+ </table>
+ </div>
+ </div>
+ <div style="margin-top: 10%;">
+ @include('partials/sharing-display-body', array('form' => false))
+ </div>
+</div>
+
+{{ HTML::image("assets/Profile_avatar_placeholder_large.png", 'placeholder image', array('class' => 'baseimage')) }}
+
+@stop
+@section('scripts')
+@parent
+<script>
+var users = {{ $users }};
+var owner = {{ $owner }};
+</script>
+{{ HTML::script('js/time-conversion.js')}}
+{{ HTML::script('js/sharing/sharing_utils.js') }}
+{{ HTML::script('js/sharing/share.js') }}
+
+@stop
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5e6bca46/app/views/project/summary.blade.php
----------------------------------------------------------------------
diff --git a/app/views/project/summary.blade.php b/app/views/project/summary.blade.php
deleted file mode 100755
index a307a63..0000000
--- a/app/views/project/summary.blade.php
+++ /dev/null
@@ -1,119 +0,0 @@
-@extends('layout.basic')
-
-@section('page-header')
-@parent
-{{ HTML::style('css/sharing.css') }}
-@stop
-
-@section('content')
-
-<div class="container" style="max-width: 80%;">
- <?php
- $project = ProjectUtilities::get_project($_GET['projId']);
- ?>
- <h1>Project Summary
- @if( !isset($dashboard))
- <small><a href="{{ URL::to('/') }}/project/summary?projId={{ $project->projectID }}"
- title="Refresh"><span class="glyphicon glyphicon-refresh refresh-exp"></span></a></small>
- @endif
- </h1>
- <div>
- <div>
- <h3>{{ $project->name }}
- @if($project_can_write === true)
- <a href="edit?projId={{ $project->projectID }}" title="Edit">
- <span class="glyphicon glyphicon-pencil"></span>
- </a>
- @endif
- </h3>
- <p>{{ $project->description }}</p>
- </div>
- <div class="table-responsive">
- <table class="table">
- <tr>
-
- <th>Name</th>
- <th>Owner</th>
- <th>Application</th>
- <th>Compute Resource</th>
- <th>Last Modified Time</th>
- <th>Experiment Status</th>
- <th>Job Status</th>
-
- </tr>
- <?php
-
- foreach ($experiments as $experiment) {
- $expValues = ExperimentUtilities::get_experiment_values($experiment, true);
- $expValues["jobState"] = ExperimentUtilities::get_job_status($experiment);
- $applicationInterface = AppUtilities::get_application_interface($experiment->executionId);
-
- try {
- $cr = CRUtilities::get_compute_resource($experiment->userConfigurationData->computationalResourceScheduling->resourceHostId);
- if (!empty($cr)) {
- $resourceName = $cr->hostName;
- }
- } catch (Exception $ex) {
- $resourceName = 'Error while retrieving the CR';
- }
- ?>
-
- <tr>
- <td>
- <a href="{{URL::to('/')}}/experiment/summary?expId={{$experiment->experimentId}}">
- {{ $experiment->experimentName }}
- </a>
- @if( $expValues['editable'] and $experiment_can_write[$experiment->experimentId] === true)
- <a href="{{URL::to('/')}}/experiment/edit?expId={{$experiment->experimentId}}" title="Edit"><span class="glyphicon glyphicon-pencil"></span></a>
- @endif
- </td>
- <td>{{ $experiment->userName }}</td>
- <td>
- @if( $applicationInterface != null )
- {{ $applicationInterface->applicationName }}
- @else
- <span class='text-danger'>Removed</span>
- @endif
- </td>
-
- <td>{{ $resourceName }}</td>
- <td class="time" unix-time="{{$expValues["experimentTimeOfStateChange"]}}"></td>
- <td>
- <div class="{{ExperimentUtilities::get_status_color_class( $expValues["experimentStatusString"])}}">
- {{ $expValues["experimentStatusString"] }}
- </div>
- </td>
-
- <td>
- @if (isset($expValues["jobState"]) )
- <div class="{{ ExperimentUtilities::get_status_color_class( $expValues["jobState"]) }}">
- {{ $expValues["jobState"] }}
- </div>
- @endif
- </td>
- </tr>
- <?php
- }
- ?>
- </table>
- </div>
- </div>
- <div style="margin-top: 10%;">
- @include('partials/sharing-display-body', array('form' => false))
- </div>
-</div>
-
-{{ HTML::image("assets/Profile_avatar_placeholder_large.png", 'placeholder image', array('class' => 'baseimage')) }}
-
-@stop
-@section('scripts')
-@parent
-<script>
-var users = {{ $users }};
-var owner = {{ $owner }};
-</script>
-{{ HTML::script('js/time-conversion.js')}}
-{{ HTML::script('js/sharing/sharing_utils.js') }}
-{{ HTML::script('js/sharing/share.js') }}
-
-@stop