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/07/11 19:09:44 UTC

[1/4] airavata-php-gateway git commit: added preliminary sharing to project backend

Repository: airavata-php-gateway
Updated Branches:
  refs/heads/grouper-integration 2c3c19fec -> 2f58f9191


added preliminary sharing to project backend


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/9fbd3022
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/9fbd3022
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/9fbd3022

Branch: refs/heads/grouper-integration
Commit: 9fbd3022522e1061ae639d984e44032a64ddb514
Parents: 2c3c19f
Author: Jeff Kinnison <je...@gmail.com>
Authored: Fri Jul 8 16:32:58 2016 -0400
Committer: Jeff Kinnison <je...@gmail.com>
Committed: Fri Jul 8 16:32:58 2016 -0400

----------------------------------------------------------------------
 app/libraries/ProjectUtilities.php | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/9fbd3022/app/libraries/ProjectUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/ProjectUtilities.php b/app/libraries/ProjectUtilities.php
index 011dcd9..730deda 100644
--- a/app/libraries/ProjectUtilities.php
+++ b/app/libraries/ProjectUtilities.php
@@ -5,6 +5,8 @@ use Airavata\API\Error\AiravataSystemException;
 use Airavata\API\Error\InvalidRequestException;
 use Airavata\Facades\Airavata;
 use Airavata\Model\Workspace\Project;
+use Airavata\Model\Group\ResourceType;
+use Airavata\Model\Group\ResourcePermissionType;
 
 class ProjectUtilities
 {
@@ -103,11 +105,31 @@ class ProjectUtilities
         $project->description = $_POST['project-description'];
         $project->gatewayId = Config::get('pga_config.airavata')['gateway-id'];
 
+        $share = $_POST['share-settings'];
+
         $projectId = null;
 
         try {
             $projectId = Airavata::createProject(Session::get('authz-token'), Config::get('pga_config.airavata')['gateway-id'], $project);
 
+            $add = array();
+            $revoke = array();
+
+            $share = json_decode($share);
+
+            if (json_last_error() === JSON_ERROR_NONE) {
+                foreach ($share as $uname => $access) {
+                    if ($access !== 0) {
+                        $add[$uname] = $value;
+                    }
+                    else {
+                        $revoke[$uname] = $value;
+                    }
+                }
+                GrouperUtilities::shareResourceWithUsers($projectId, ResourceType.Project, $add);
+                GrouperUtilities::revokeSharingOfResourceFromUsers($projectId, ResourceType.Project, $revoke);
+            }
+
             if ($projectId) {
                 CommonUtilities::print_success_message("<p>Project {$_POST['project-name']} created!</p>" .
                     '<p>You will be redirected to the summary page shortly, or you can
@@ -265,4 +287,4 @@ class ProjectUtilities
 
         return $projects;
     }
-}
\ No newline at end of file
+}


[3/4] airavata-php-gateway git commit: fully integrated project sharing

Posted by sc...@apache.org.
fully integrated project sharing


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/460fa7f8
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/460fa7f8
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/460fa7f8

Branch: refs/heads/grouper-integration
Commit: 460fa7f88eca09a4969a8dc41ea53ef312b4969a
Parents: 5c0b259
Author: Jeff Kinnison <je...@gmail.com>
Authored: Mon Jul 11 14:07:35 2016 -0400
Committer: Jeff Kinnison <je...@gmail.com>
Committed: Mon Jul 11 14:07:35 2016 -0400

----------------------------------------------------------------------
 app/controllers/ProjectController.php |  8 +--
 app/libraries/ProjectUtilities.php    | 26 ++++-----
 app/views/project/create.blade.php    |  4 +-
 public/js/sharing/share.js            | 85 ++++++++++++++----------------
 public/js/sharing/sharing_utils.js    | 35 +++++++++---
 5 files changed, 86 insertions(+), 72 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/460fa7f8/app/controllers/ProjectController.php
----------------------------------------------------------------------
diff --git a/app/controllers/ProjectController.php b/app/controllers/ProjectController.php
index eba7035..dbeb668 100755
--- a/app/controllers/ProjectController.php
+++ b/app/controllers/ProjectController.php
@@ -27,10 +27,12 @@ class ProjectController extends BaseController
     {
         $uids = GrouperUtilities::getAllGatewayUsers();
         $users = array();
-        for ($i = 0; $i < count($uids); $i++) {
-            $string = $uids[$i] . '@' . Config::get('pga_config.wsis')['tenant-domain'];
-            $users[$i] = WSIS::getUserProfile($string);
+        foreach ($uids as $uid) {
+            if (WSIS::usernameExists($uid)) {
+                $users[$uid] = WSIS::getUserProfile($uid);
+            }
         }
+        //var_dump($users);exit;
         return View::make("project/create", array("users" => json_encode($users)));
     }
 

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/460fa7f8/app/libraries/ProjectUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/ProjectUtilities.php b/app/libraries/ProjectUtilities.php
index acb9ed3..6bb3c67 100644
--- a/app/libraries/ProjectUtilities.php
+++ b/app/libraries/ProjectUtilities.php
@@ -106,21 +106,15 @@ class ProjectUtilities
         $project->gatewayId = Config::get('pga_config.airavata')['gateway-id'];
 
         $share = $_POST['share-settings'];
+        $share = json_decode($share);
+        var_dump($share);
+        exit;
 
         $projectId = null;
 
         try {
             $projectId = Airavata::createProject(Session::get('authz-token'), Config::get('pga_config.airavata')['gateway-id'], $project);
 
-            $add = array();
-            $revoke = array();
-
-            $share = json_decode($share);
-
-            if (json_last_error() === JSON_ERROR_NONE) {
-                $this->share_project($projectId, $share);
-            }
-
             if ($projectId) {
                 CommonUtilities::print_success_message("<p>Project {$_POST['project-name']} created!</p>" .
                     '<p>You will be redirected to the summary page shortly, or you can
@@ -136,6 +130,8 @@ class ProjectUtilities
             CommonUtilities::print_error_message('AiravataSystemException!<br><br>' . $ase->getMessage());
         }
 
+        $this->share_project($projectId, ResourceType::Project, json_decode($share));
+
         return $projectId;
     }
 
@@ -293,18 +289,18 @@ class ProjectUtilities
                 $wrevoke[$user] = ResourcePermissionType::WRITE;
             }
 
-            GrouperUtilities::shareResourceWithUsers($projectId, ResourceType::Project, $wadd);
-            GrouperUtilities::revokeSharingOfResourceFromUsers($projectId, ResourceType.Project::Project, $wrevoke);
-
             if ($perms['read']) {
                 $radd[$user] = ResourcePermissionType::READ;
             }
             else {
                 $rrevoke[$user] = ResourcePermissionType::READ;
             }
-
-            GrouperUtilities::shareResourceWithUsers($projectId, ResourceType::Project, $radd);
-            GrouperUtilities::revokeSharingOfResourceFromUsers($projectId, ResourceType.Project::Project, $rrevoke);
         }
+
+        GrouperUtilities::shareResourceWithUsers($projectId, ResourceType::Project, $wadd);
+        GrouperUtilities::revokeSharingOfResourceFromUsers($projectId, ResourceType.Project::Project, $wrevoke);
+
+        GrouperUtilities::shareResourceWithUsers($projectId, ResourceType::Project, $radd);
+        GrouperUtilities::revokeSharingOfResourceFromUsers($projectId, ResourceType.Project::Project, $rrevoke);
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/460fa7f8/app/views/project/create.blade.php
----------------------------------------------------------------------
diff --git a/app/views/project/create.blade.php b/app/views/project/create.blade.php
index 94348af..4f9147d 100755
--- a/app/views/project/create.blade.php
+++ b/app/views/project/create.blade.php
@@ -28,11 +28,11 @@
         <div class="form-group">
             <label for="project-share">Sharing Settings</label><br />
             <button class="btn btn-default" name="project-share" id="project-share">Share With Other Users</button><br />
-            <label>Show</label>
+            <!-- <label>Show</label>
             <div id="show-results-group" class="btn-group" role="group" aria-label="Show Groups or Users">
                 <button type="button" class="show-groups show-results-btn btn btn-primary">Groups</button>
                 <button type="button" class="show-users show-results-btn btn btn-default">Users</button>
-            </div>
+            </div> -->
             <label>Order By</label>
             <select class="order-results-selector">
                 <option value="username">Username</option>

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/460fa7f8/public/js/sharing/share.js
----------------------------------------------------------------------
diff --git a/public/js/sharing/share.js b/public/js/sharing/share.js
index 0be74e5..b417b7c 100755
--- a/public/js/sharing/share.js
+++ b/public/js/sharing/share.js
@@ -6,10 +6,8 @@
 
 var access_enum = {
     NONE: '0',
-    VIEW: '1',
-    RUN: '2',
-    EDIT: '3',
-    ADMIN: '4'
+    READ: '1',
+    WRITE: '2'
 };
 
 var dummy_user_data = [
@@ -119,12 +117,12 @@ $(function() {
                         <div class="modal-body"> \
                             <label>Click on the users you would like to share with.</label> \
                             <input id="share-box-filter" class="form-control" type="text" placeholder="Filter the user list" /> \
-                            <label>Show</label> \
-                            <div id="show-results-group" class="btn-group" role="group" aria-label="Show Groups or Users">\
-                                <button type="button" class="show-groups show-results-btn btn btn-primary">Groups</button> \
-                                <button type="button" class="show-users show-results-btn btn btn-default">Users</button> \
-                            </div> \
-                            <label>Order By</label> \
+                            <label>Show</label>' //\
+                            // <div id="show-results-group" class="btn-group" role="group" aria-label="Show Groups or Users">\
+                            //     <button type="button" class="show-groups show-results-btn btn btn-primary">Groups</button> \
+                            //     <button type="button" class="show-users show-results-btn btn btn-default">Users</button> \
+                            // </div> \
+                            + '<label>Order By</label> \
                             <select class="order-results-selector"> \
                                 <option value="username">Username</option> \
                                 <option value="firstlast">First, Last Name</option> \
@@ -156,44 +154,36 @@ $(function() {
         $users = $('#share-box-users');
         $share = $('#share-box-share');
 
-        for (var user in dummy_user_data) {
-            if (dummy_user_data.hasOwnProperty(user)) {
-                data = dummy_user_data[user];
-                $user = createThumbnail(data.username, data.firstname, data.lastname, data.email, data.access);
+        for (var user in users) {
+            if (users.hasOwnProperty(user)) {
+                data = users[user];
+                $user = createThumbnail(user, data.firstname, data.lastname, data.email, access_enum.NONE);
                 $user.addClass('user-thumbnail');
-                if (data.access === access_enum.NONE) {
-                    $user.addClass('share-box-users-item');
-                    $users.append($user);
-                }
-                else {
-                    $user.addClass('share-box-share-item');
-                    $user.find('.sharing-thumbnail-access').prop("disabled", false).show();
-                    $user.find('.sharing-thumbnail-unshare').show();
-                    $share.append($user);
-                }
-            }
-        }
-
-        for (var group in dummy_group_data) {
-            if (dummy_group_data.hasOwnProperty(group)) {
-                data = dummy_group_data[group];
-                $group = createThumbnail(data.username, data.firstname, data.lastname, data.email, data.access);
-                $group.addClass('group-thumbnail');
-                if (data.access === access_enum.NONE) {
-                    $group.addClass('share-box-users-item');
-                    $users.append($group);
-                }
-                else {
-                    $group.addClass('share-box-share-item');
-                    $group.find('.sharing-thumbnail-access').prop("disabled", false).show();
-                    $group.find('.sharing-thumbnail-unshare').show();
-                    $share.append($group);
-                }
+                $user.addClass('share-box-users-item');
+                $users.append($user);
             }
         }
 
-        $('.user-thumbnail').hide();
-        $('.group-thumbnail').show();
+        // for (var group in dummy_group_data) {
+        //     if (dummy_group_data.hasOwnProperty(group)) {
+        //         data = dummy_group_data[group];
+        //         $group = createThumbnail(data.username, data.firstname, data.lastname, data.email, data.access);
+        //         $group.addClass('group-thumbnail');
+        //         if (data.access === access_enum.NONE) {
+        //             $group.addClass('share-box-users-item');
+        //             $users.append($group);
+        //         }
+        //         else {
+        //             $group.addClass('share-box-share-item');
+        //             $group.find('.sharing-thumbnail-access').prop("disabled", false).show();
+        //             $group.find('.sharing-thumbnail-unshare').show();
+        //             $share.append($group);
+        //         }
+        //     }
+        // }
+
+        $('.user-thumbnail').show();
+        //$('.group-thumbnail').show();
     }
 
 
@@ -295,11 +285,12 @@ $(function() {
 
     // Save the sharing permissions of each selected user
     $('body').on('click', '#share-box-button', function(e) {
-        var data, resource_id, $share_list;
+        var data, resource_id, $share_list, share_settings;
         e.stopPropagation();
         e.preventDefault();
         data = $("#share-box").data()
         $share_list = $("#share-box-share").children();
+        share_settings = {};
         if (data.hasOwnProperty('resource_id')) {
             resource_id = data.resource_id;
             updateUserPrivileges(resource_id, $share_list);
@@ -309,16 +300,18 @@ $(function() {
             if ($share_list.filter('.sharing-thumbnail').length > 0) {
                 $share_list.sort(comparator_map.username);
                 $share_list.each(function(index, element) {
-                    var $e, data;
+                    var $e, data, settings;
                     $e = $(element);
                     data = $e.data();
                     if (data.hasOwnProperty('currentaccess')) {
                         data.access = data.currentaccess;
                         $e.data(data);
                     }
+                    share_settings[data.username] = data.access;
                     $e.find('.sharing-thumbnail-access').prop('disabled', true);
                     $e.find('.sharing-thumbnail-unshare').hide();
                 });
+                $('#share-settings').val(JSON.stringify(share_settings));
                 $('#shared-users').removeClass('text-align-center');
                 $share_list.detach().appendTo($('#shared-users'));
             }

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/460fa7f8/public/js/sharing/sharing_utils.js
----------------------------------------------------------------------
diff --git a/public/js/sharing/sharing_utils.js b/public/js/sharing/sharing_utils.js
index 2261d66..46bee1b 100644
--- a/public/js/sharing/sharing_utils.js
+++ b/public/js/sharing/sharing_utils.js
@@ -6,20 +6,36 @@ var createThumbnail = function(username, firstname, lastname, email, access = ac
       firstname: firstname,
       lastname: lastname,
       email: email,
-      access: access
+      access: {
+          read: false,
+          write: false
+      },
+      currentaccess: {
+          read: false,
+          write: false
+      }
   };
 
+  if (access === access_enum.READ) {
+      data.access.read = true;
+      data.currentaccess.read = true;
+  }
+  else if (access === access_enum.WRITE) {
+      data.access.read = true;
+      data.access.write = true;
+      data.currentaccess.read = true;
+      data.currentaccess.write = true;
+  }
+
   select = '';
 
   if (share) {
       select = '<select class="sharing-thumbnail-access" style="display: none;" disabled>';
 
       options = '';
-      options += '<option value="' + access_enum.NONE + '"' + (access === access_enum.NONE ? "selected" : "") + ' style="display: none;">Can View</option>';
-      options += '<option value="' + access_enum.VIEW + '"' + (access === access_enum.VIEW ? "selected" : "") + '>Can View</option>';
-      options += '<option value="' + access_enum.RUN + '"' + (access === access_enum.RUN ? "selected" : "") + '>Can Run</option>';
-      options += '<option value="' + access_enum.EDIT + '"' + (access === access_enum.EDIT ? "selected" : "") + '>Can Edit</option>';
-      options += '<option value="' + access_enum.ADMIN + '"' + (access === access_enum.ADMIN ? "selected" : "") + '>All Privileges</option>';
+      options += '<option value="' + access_enum.NONE + '"' + (access === access_enum.NONE ? "selected" : "") + ' style="display: none;">No Permissions</option>';
+      options += '<option value="' + access_enum.READ + '"' + (access === access_enum.VIEW ? "selected" : "") + '>Can Read</option>';
+      options += '<option value="' + access_enum.WRITE + '"' + (access === access_enum.RUN ? "selected" : "") + '>Can Write</option>';
 
       select += options;
       select += '</select>';
@@ -48,10 +64,14 @@ var createThumbnail = function(username, firstname, lastname, email, access = ac
 }
 
 var changeShareState = function($target) {
+    var data;
+    data = $target.data();
     // If the user has sharing privileges, revoke them
     if ($target.hasClass('share-box-users-item')) {
         console.log("Sharing");
         $target.find('.sharing-thumbnail-access').val('1').prop("disabled", false).show();
+        data.access.read = true;
+        $target.data(data);
         $target.find('.sharing-thumbnail-unshare').show();
         $target.detach().prependTo('#share-box-share').show();
     }
@@ -59,6 +79,9 @@ var changeShareState = function($target) {
     else if ($target.hasClass('share-box-share-item')) {
         console.log("Revoking share");
         $target.find('select').val('0').prop("disabled", true).hide();
+        data.access.read = true;
+        data.access.write = true;
+        $target.data(data);
         $target.find('.sharing-thumbnail-unshare').hide();
         $target.detach().appendTo('#share-box-users');
         $('#share-box-filter').trigger('keydown');


[2/4] airavata-php-gateway git commit: project updates

Posted by sc...@apache.org.
project updates


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/5c0b259e
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/5c0b259e
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/5c0b259e

Branch: refs/heads/grouper-integration
Commit: 5c0b259ed2a4c167e34837b9f7866d1df755686e
Parents: 9fbd302
Author: Jeff Kinnison <je...@gmail.com>
Authored: Mon Jul 11 12:56:30 2016 -0400
Committer: Jeff Kinnison <je...@gmail.com>
Committed: Mon Jul 11 12:56:30 2016 -0400

----------------------------------------------------------------------
 app/controllers/ProjectController.php | 10 +++++++-
 app/libraries/ProjectUtilities.php    | 40 ++++++++++++++++++++++--------
 app/views/project/create.blade.php    |  1 +
 3 files changed, 40 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5c0b259e/app/controllers/ProjectController.php
----------------------------------------------------------------------
diff --git a/app/controllers/ProjectController.php b/app/controllers/ProjectController.php
index fe3a35d..eba7035 100755
--- a/app/controllers/ProjectController.php
+++ b/app/controllers/ProjectController.php
@@ -1,5 +1,7 @@
 <?php
 
+
+
 class ProjectController extends BaseController
 {
 
@@ -23,7 +25,13 @@ class ProjectController extends BaseController
 
     public function createView()
     {
-        return View::make("project/create");
+        $uids = GrouperUtilities::getAllGatewayUsers();
+        $users = array();
+        for ($i = 0; $i < count($uids); $i++) {
+            $string = $uids[$i] . '@' . Config::get('pga_config.wsis')['tenant-domain'];
+            $users[$i] = WSIS::getUserProfile($string);
+        }
+        return View::make("project/create", array("users" => json_encode($users)));
     }
 
     public function createSubmit()

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5c0b259e/app/libraries/ProjectUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/ProjectUtilities.php b/app/libraries/ProjectUtilities.php
index 730deda..acb9ed3 100644
--- a/app/libraries/ProjectUtilities.php
+++ b/app/libraries/ProjectUtilities.php
@@ -118,16 +118,7 @@ class ProjectUtilities
             $share = json_decode($share);
 
             if (json_last_error() === JSON_ERROR_NONE) {
-                foreach ($share as $uname => $access) {
-                    if ($access !== 0) {
-                        $add[$uname] = $value;
-                    }
-                    else {
-                        $revoke[$uname] = $value;
-                    }
-                }
-                GrouperUtilities::shareResourceWithUsers($projectId, ResourceType.Project, $add);
-                GrouperUtilities::revokeSharingOfResourceFromUsers($projectId, ResourceType.Project, $revoke);
+                $this->share_project($projectId, $share);
             }
 
             if ($projectId) {
@@ -287,4 +278,33 @@ class ProjectUtilities
 
         return $projects;
     }
+
+    private function share_project($projectId, $users) {
+        $wadd = array();
+        $wrevoke = array();
+        $radd = array();
+        $rrevoke = array();
+
+        foreach ($users as $user => $perms) {
+            if ($perms['write']) {
+                $wadd[$user] = ResourcePermissionType::WRITE;
+            }
+            else {
+                $wrevoke[$user] = ResourcePermissionType::WRITE;
+            }
+
+            GrouperUtilities::shareResourceWithUsers($projectId, ResourceType::Project, $wadd);
+            GrouperUtilities::revokeSharingOfResourceFromUsers($projectId, ResourceType.Project::Project, $wrevoke);
+
+            if ($perms['read']) {
+                $radd[$user] = ResourcePermissionType::READ;
+            }
+            else {
+                $rrevoke[$user] = ResourcePermissionType::READ;
+            }
+
+            GrouperUtilities::shareResourceWithUsers($projectId, ResourceType::Project, $radd);
+            GrouperUtilities::revokeSharingOfResourceFromUsers($projectId, ResourceType.Project::Project, $rrevoke);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/5c0b259e/app/views/project/create.blade.php
----------------------------------------------------------------------
diff --git a/app/views/project/create.blade.php b/app/views/project/create.blade.php
index d24ab1b..94348af 100755
--- a/app/views/project/create.blade.php
+++ b/app/views/project/create.blade.php
@@ -63,6 +63,7 @@
     $(".projectName").blur(function () {
         $(this).val($.trim($(this).val()));
     });
+    var users = {{ $users }};
 </script>
 {{ HTML::script('js/sharing/sharing_utils.js') }}
 {{ HTML::script('js/sharing/share.js') }}


[4/4] airavata-php-gateway git commit: minor fixes and enable experiment sharing

Posted by sc...@apache.org.
minor fixes and enable experiment sharing


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/2f58f919
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/2f58f919
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/2f58f919

Branch: refs/heads/grouper-integration
Commit: 2f58f9191718cf06805de9f3fcc27256739995e5
Parents: 460fa7f
Author: Jeff Kinnison <je...@gmail.com>
Authored: Mon Jul 11 14:44:56 2016 -0400
Committer: Jeff Kinnison <je...@gmail.com>
Committed: Mon Jul 11 14:44:56 2016 -0400

----------------------------------------------------------------------
 app/controllers/ExperimentController.php        |  17 +++++---
 app/libraries/ExperimentUtilities.php           |  43 +++++++++++++++++--
 app/libraries/ProjectUtilities.php              |   7 +--
 .../assets/Profile_avatar_placeholder_large.png | Bin 0 -> 2011 bytes
 app/views/experiment/create.blade.php           |   7 ++-
 5 files changed, 57 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/2f58f919/app/controllers/ExperimentController.php
----------------------------------------------------------------------
diff --git a/app/controllers/ExperimentController.php b/app/controllers/ExperimentController.php
index 2f225d1..7a49e6f 100755
--- a/app/controllers/ExperimentController.php
+++ b/app/controllers/ExperimentController.php
@@ -1,8 +1,6 @@
 <?php
 
 use Airavata\Model\Status\JobState;
-use Airavata\Model\Group\ResourceType;
-use Airavata\Model\Group\ResourcePermissionType;
 
 class ExperimentController extends BaseController
 {
@@ -27,7 +25,14 @@ class ExperimentController extends BaseController
     public function createView()
     {
         Session::forget('exp_create_continue');
-        return View::make('experiment/create');
+        $uids = GrouperUtilities::getAllGatewayUsers();
+        $users = array();
+        foreach ($uids as $uid) {
+            if (WSIS::usernameExists($uid)) {
+                $users[$uid] = WSIS::getUserProfile($uid);
+            }
+        }
+        return View::make('experiment/create', array("users" => json_encode($users)));
     }
 
     public function createSubmit()
@@ -54,7 +59,7 @@ class ExperimentController extends BaseController
             if( $serverLimit < $allowedFileSize)
                 $allowedFileSize = $serverLimit;
 
-            
+
             $experimentInputs = array(
                 "clonedExp" => $clonedExp,
                 "savedExp" => $savedExp,
@@ -114,7 +119,7 @@ class ExperimentController extends BaseController
             else
                 Session::forget("permissionDenied");
 
-        
+
             $project = ProjectUtilities::get_project($experiment->projectId);
             $expVal = ExperimentUtilities::get_experiment_values($experiment);
             $jobDetails = ExperimentUtilities::get_job_details($experiment->experimentId);
@@ -129,7 +134,7 @@ class ExperimentController extends BaseController
                 }
             }
             $expVal["jobDetails"] = $jobDetails;
-            
+
             $data = array(
                 "expId" => Input::get("expId"),
                 "experiment" => $experiment,

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/2f58f919/app/libraries/ExperimentUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/ExperimentUtilities.php b/app/libraries/ExperimentUtilities.php
index da58102..58a3863 100644
--- a/app/libraries/ExperimentUtilities.php
+++ b/app/libraries/ExperimentUtilities.php
@@ -21,6 +21,8 @@ use Airavata\Model\Data\Replica\DataReplicaLocationModel;
 use Airavata\Model\Data\Replica\ReplicaLocationCategory;
 use Airavata\Model\Data\Replica\ReplicaPersistentType;
 use Airavata\Model\Application\Io\InputDataObjectType;
+use Airavata\Model\Group\ResourceType;
+use Airavata\Model\Group\ResourcePermissionType;
 
 class ExperimentUtilities
 {
@@ -77,7 +79,7 @@ class ExperimentUtilities
 
         $optFilesHtml = "";
 
-        if( count( $experimentInputs) > 0 ) { 
+        if( count( $experimentInputs) > 0 ) {
             foreach ($experimentInputs as $input) {
                 $matchingAppInput = null;
                 if ($input->type == DataType::URI) {
@@ -788,6 +790,8 @@ class ExperimentUtilities
         $experiment = ExperimentUtilities::assemble_experiment();
         $expId = null;
 
+        $share = $_POST['share-settings'];
+
         try {
             if ($experiment) {
                 $expId = Airavata::createExperiment(Session::get('authz-token'), Session::get("gateway_id"), $experiment);
@@ -809,6 +813,8 @@ class ExperimentUtilities
             CommonUtilities::print_error_message('AiravataSystemException!<br><br>' . $ase->getMessage());
         }
 
+        ExperimentUtilities::share_experiment($expId, json_decode($share));
+
         return $expId;
     }
 
@@ -932,14 +938,14 @@ class ExperimentUtilities
         if( is_object( $experiment->experimentStatus ) )
             $experimentStatusString = $expVal["experimentStates"][$experiment->experimentStatus->state];
         else
-            $experimentStatusString = $experiment->experimentStatus; 
+            $experimentStatusString = $experiment->experimentStatus;
 
         $expVal["experimentStatusString"] = $experimentStatusString;
         if ( $experimentStatusString == ExperimentState::FAILED)
             $expVal["editable"] = false;
 
         $expVal["cancelable"] = false;
-        if ( $experimentStatusString == ExperimentState::LAUNCHED 
+        if ( $experimentStatusString == ExperimentState::LAUNCHED
             || $experimentStatusString == ExperimentState::EXECUTING)
             $expVal["cancelable"] = true;
 
@@ -1303,5 +1309,34 @@ class ExperimentUtilities
         echo '</select>';
     }
 
+    private static function share_experiment($expId, $users) {
+        $wadd = array();
+        $wrevoke = array();
+        $radd = array();
+        $rrevoke = array();
+
+        foreach ($users as $user => $perms) {
+            if ($perms['write']) {
+                $wadd[$user] = ResourcePermissionType::WRITE;
+            }
+            else {
+                $wrevoke[$user] = ResourcePermissionType::WRITE;
+            }
+
+            if ($perms['read']) {
+                $radd[$user] = ResourcePermissionType::READ;
+            }
+            else {
+                $rrevoke[$user] = ResourcePermissionType::READ;
+            }
+        }
+
+        GrouperUtilities::shareResourceWithUsers($expId, ResourceType::Experiment, $wadd);
+        GrouperUtilities::revokeSharingOfResourceFromUsers($expId, ResourceType::Experiment, $wrevoke);
+
+        GrouperUtilities::shareResourceWithUsers($expId, ResourceType::Experiment, $radd);
+        GrouperUtilities::revokeSharingOfResourceFromUsers($expId, ResourceType::Experiment, $rrevoke);
+    }
+
 
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/2f58f919/app/libraries/ProjectUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/ProjectUtilities.php b/app/libraries/ProjectUtilities.php
index 6bb3c67..14ea0d4 100644
--- a/app/libraries/ProjectUtilities.php
+++ b/app/libraries/ProjectUtilities.php
@@ -106,9 +106,6 @@ class ProjectUtilities
         $project->gatewayId = Config::get('pga_config.airavata')['gateway-id'];
 
         $share = $_POST['share-settings'];
-        $share = json_decode($share);
-        var_dump($share);
-        exit;
 
         $projectId = null;
 
@@ -298,9 +295,9 @@ class ProjectUtilities
         }
 
         GrouperUtilities::shareResourceWithUsers($projectId, ResourceType::Project, $wadd);
-        GrouperUtilities::revokeSharingOfResourceFromUsers($projectId, ResourceType.Project::Project, $wrevoke);
+        GrouperUtilities::revokeSharingOfResourceFromUsers($projectId, ResourceType::Project, $wrevoke);
 
         GrouperUtilities::shareResourceWithUsers($projectId, ResourceType::Project, $radd);
-        GrouperUtilities::revokeSharingOfResourceFromUsers($projectId, ResourceType.Project::Project, $rrevoke);
+        GrouperUtilities::revokeSharingOfResourceFromUsers($projectId, ResourceType::Project, $rrevoke);
     }
 }

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/2f58f919/app/resources/assets/Profile_avatar_placeholder_large.png
----------------------------------------------------------------------
diff --git a/app/resources/assets/Profile_avatar_placeholder_large.png b/app/resources/assets/Profile_avatar_placeholder_large.png
new file mode 100644
index 0000000..0989209
Binary files /dev/null and b/app/resources/assets/Profile_avatar_placeholder_large.png differ

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/2f58f919/app/views/experiment/create.blade.php
----------------------------------------------------------------------
diff --git a/app/views/experiment/create.blade.php b/app/views/experiment/create.blade.php
index ca857a2..36de03d 100755
--- a/app/views/experiment/create.blade.php
+++ b/app/views/experiment/create.blade.php
@@ -52,10 +52,10 @@
             <label for="project-share">Sharing Settings</label><br />
             <button class="btn btn-default" name="project-share" id="project-share">Share With Other Users</button> <br />
             <label>Show</label>
-            <div id="show-results-group" class="btn-group" role="group" aria-label="Show Groups or Users">
+            <!-- <div id="show-results-group" class="btn-group" role="group" aria-label="Show Groups or Users">
                 <button type="button" class="show-groups show-results-btn btn btn-primary">Groups</button>
                 <button type="button" class="show-users show-results-btn btn btn-default">Users</button>
-            </div>
+            </div> -->
             <label>Order By</label>
             <select class="order-results-selector">
                 <option value="username">Username</option>
@@ -83,6 +83,9 @@
 
 @section('scripts')
 @parent
+<script>
+var users = {{ $users }};
+</script>
 {{ HTML::script('js/sharing/sharing_utils.js') }}
 {{ HTML::script('js/sharing/share.js') }}
 @stop