added group creation ui

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

Branch: refs/heads/grouper-integration
Commit: a195a5b8eb9aaaa58715524a77bf1bceec2c4222
Parents: fedf8e1
Author: Jeff Kinnison <[email protected]>
Authored: Thu Jul 7 15:43:10 2016 -0400
Committer: Jeff Kinnison <[email protected]>
Committed: Thu Jul 7 15:43:10 2016 -0400

----------------------------------------------------------------------
 app/controllers/GroupController.php   |  33 ++++++
 app/routes.php                        |   6 +-
 app/views/experiment/create.blade.php |   1 +
 app/views/group/create.blade.php      |  75 +++++++++++++
 app/views/project/create.blade.php    |   1 +
 public/css/sharing.css                |   2 +-
 public/js/sharing/groups.js           | 162 +++++++++++++++++++++++++++++
 7 files changed, 278 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a195a5b8/app/controllers/GroupController.php
----------------------------------------------------------------------
diff --git a/app/controllers/GroupController.php 
b/app/controllers/GroupController.php
new file mode 100644
index 0000000..3d71837
--- /dev/null
+++ b/app/controllers/GroupController.php
@@ -0,0 +1,33 @@
+<?php
+
+class GroupController extends BaseController {
+    public function __construct()
+    {
+        $this->beforeFilter('verifylogin');
+        $this->beforeFilter('verifyauthorizeduser');
+        Session::put("nav-active", "group");
+    }
+
+    public function createView()
+    {
+        return View::make("group/create");
+    }
+
+    public function createSubmit()
+    {
+        // TODO: Write submission logic
+    }
+
+    public function editView()
+    {
+        // TODO: Write logic to load current group members
+    }
+
+    public function summaryView()
+    {
+        // TODO: Write group display logic
+    }
+
+}
+
+?>

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a195a5b8/app/routes.php
----------------------------------------------------------------------
diff --git a/app/routes.php b/app/routes.php
index 41fd139..bc9e744 100644
--- a/app/routes.php
+++ b/app/routes.php
@@ -97,7 +97,6 @@ Route::get("experiment/browse", 
"ExperimentController@browseView");
 
 Route::post("experiment/browse", "ExperimentController@browseView");
 
-
 Route::get("download", function(){
     //FIXME check for no ../ parts in the path
     if(Input::has("path") && (0 == strpos(Input::get("path"), 
Session::get('username'))
@@ -116,6 +115,11 @@ Route::get("files/browse", "FilemanagerController@browse");
 Route::get("files/get","FilemanagerController@get");
 
 /*
+ * Group Routes
+ */
+Route::get("group/create", "GroupController@createView");
+
+/*
  * Compute Resources Routes
 */
 

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a195a5b8/app/views/experiment/create.blade.php
----------------------------------------------------------------------
diff --git a/app/views/experiment/create.blade.php 
b/app/views/experiment/create.blade.php
index e36536f..ca857a2 100755
--- a/app/views/experiment/create.blade.php
+++ b/app/views/experiment/create.blade.php
@@ -83,5 +83,6 @@
 
 @section('scripts')
 @parent
+{{ 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/a195a5b8/app/views/group/create.blade.php
----------------------------------------------------------------------
diff --git a/app/views/group/create.blade.php b/app/views/group/create.blade.php
new file mode 100644
index 0000000..8d5c378
--- /dev/null
+++ b/app/views/group/create.blade.php
@@ -0,0 +1,75 @@
+@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 group</h1>
+
+    <form action="{{URL::to('/')}}/group/create" method="POST" role="form" 
enctype="multipart/form-data">
+
+        <?php
+
+        $disabled = '';
+        $groupName = '';
+        $groupDescription = '';
+
+        $echo = '';
+        $wrf = '';
+        ?>
+
+        <div class="form-group required">
+            <label for="group-name" class="control-label">Group Name</label>
+            <input type="text" class="form-control" name="group-name" 
id="group-name"
+                   placeholder="Enter group name" autofocus 
required="required" maxlength="50">
+        </div>
+        <div class="form-group">
+            <label for="group-description">Group Description</label>
+            <textarea class="form-control" name="group-description" 
id="group-description"
+                      placeholder="Optional: Enter a short description of the 
group" maxlength="200"></textarea>
+        </div>
+
+        <div class="form-group">
+            <label for="project-share">Select Group Members</label><br />
+            <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>
+            <select class="order-results-selector">
+                <option value="username">Username</option>
+                <option value="firstlast">First, Last Name</option>
+                <option value="lastfirst">Last, First Name</option>
+                <option value="email">Email</option>
+            </select>
+            <ul id="share-box-users" class="form-control"></ul>
+            <label>Members</label>
+            <ul id="share-box-share" class="text-align-center form-control">
+                <p>No members yet</p>
+            </ul>
+            <input id="share-settings" name="share-settings" type="hidden" 
value="" />
+        </div>
+
+        <div class="btn-toolbar">
+            <input name="continue" type="submit" class="btn btn-primary" 
value="Save">
+            <input name="clear" type="reset" class="btn btn-default" 
value="Clear">
+        </div>
+    </form>
+
+</div>
+
+{{ HTML::image("assets/Profile_avatar_placeholder_large.png", 'placeholder 
image', array('class' => 'baseimage')) }}
+
+@stop
+
+@section('scripts')
+@parent
+{{ HTML::script('js/sharing/sharing_utils.js') }}
+{{ HTML::script('js/sharing/groups.js') }}
+@stop

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a195a5b8/app/views/project/create.blade.php
----------------------------------------------------------------------
diff --git a/app/views/project/create.blade.php 
b/app/views/project/create.blade.php
index 069b5ba..d24ab1b 100755
--- a/app/views/project/create.blade.php
+++ b/app/views/project/create.blade.php
@@ -64,5 +64,6 @@
         $(this).val($.trim($(this).val()));
     });
 </script>
+{{ 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/a195a5b8/public/css/sharing.css
----------------------------------------------------------------------
diff --git a/public/css/sharing.css b/public/css/sharing.css
index 552e07d..426cd20 100755
--- a/public/css/sharing.css
+++ b/public/css/sharing.css
@@ -13,7 +13,7 @@
 #share-box-filter {
        width: 100%;
        height: 24pt;
-       font-size: large;
+       font-size: normal;
 }
 
 #share-box-options {

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/a195a5b8/public/js/sharing/groups.js
----------------------------------------------------------------------
diff --git a/public/js/sharing/groups.js b/public/js/sharing/groups.js
index e69de29..27bcbcc 100644
--- a/public/js/sharing/groups.js
+++ b/public/js/sharing/groups.js
@@ -0,0 +1,162 @@
+/**
+ * @author Jeff Kinnison <[email protected]>
+ */
+var dummy_user_data = [
+    {
+        username: 'testuser1',
+        firstname: 'Jane',
+        lastname: 'Doe',
+        email: '[email protected]'
+    },
+    {
+        username: 'testuser2',
+        firstname: 'Ego',
+        lastname: 'Id',
+        email: '[email protected]'
+    },
+    {
+        username: 'testuser3',
+        firstname: 'Ivan',
+        lastname: 'Ivanov',
+        email: '[email protected]'
+    },
+    {
+        username: 'testuser4',
+        firstname: 'Grok',
+        lastname: 'Smytheson',
+        email: '[email protected]'
+    },
+    {
+        username: 'testuser5',
+        firstname: 'Identifier',
+        lastname: 'Appellation',
+        email: '[email protected]'
+    }
+];
+
+$(function() {
+    var comparator_map, comparator, $original_shared_list, $revoke_list;
+    comparator_map = {
+            "username": usernameComparator,
+            "firstlast": firstLastComparator,
+            "lastfirst": lastFirstComparator,
+            "email": emailComparator
+    };
+    comparator = usernameComparator;
+
+    var createTestData = function() {
+        var $users, $user, data;
+
+        $users = $('#share-box-users');
+
+        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, 0, false);
+                $user.addClass('share-box-users-item');
+                $users.append($user);
+            }
+        }
+    }
+
+    // Filter visible user thumbnails based on pattern in .share-box-filter
+    $('body').on('keyup', '.share-box-filter', function (e) {
+        var $target, pattern, visible, $users;
+        e.preventDefault();
+        e.stopPropagation();
+        $target = $(e.target);
+        pattern = $target.val().toLowerCase();
+        if (!pattern || pattern === '') {
+            pattern = /.+/;
+        }
+        $users = $('#share-box-users').children(visible);
+        userFilter($users, pattern);
+        return false;
+    });
+
+    // Toggle between visible groups and visible users
+    // $('body').on('click', '.show-results-btn', function(e) {
+    //         var $target;
+    //         e.preventDefault();
+    //         e.stopPropagation();
+    //         $target = $(e.target);
+    //         if ($target.hasClass("show-groups") && 
!$target.hasClass('btn-primary')) {
+    //                 $('.group-thumbnail').show();
+    //                 $('.user-thumbnail').hide();
+    //                 $('.show-groups').addClass('btn-primary');
+    //                 $('.show-groups').removeClass('btn-default');
+    //                 $('.show-users').addClass('btn-default');
+    //                 $('.show-users').removeClass('btn-primary');
+    //         }
+    //         else if ($target.hasClass("show-users") && 
!$target.hasClass('btn-primary')) {
+    //                 $('.user-thumbnail').show();
+    //                 $('.group-thumbnail').hide();
+    //                 $('.show-users').addClass('btn-primary');
+    //                 $('.show-users').removeClass('btn-default');
+    //                 $('.show-groups').addClass('btn-default');
+    //                 $('.show-groups').removeClass('btn-primary');
+    //         }
+    //         return false;
+    // });
+
+    // Sort users by some metric
+    $('body').on('change', '.order-results-selector', function(e) {
+        var $target, $sibling, $sorted;
+        $target = $(e.target);
+        console.log($target);
+        comparator = comparator_map[$target.val()];
+        $('.order-results-selector').val($target.val());
+        $sibling = $target.siblings('#share-box-users');
+        $sorted = $sibling.children('.sharing-thumbnail');
+        $sorted.detach();
+        $sorted.sort(comparator);
+        $sibling.append($sorted);
+    });
+
+    // Handle adding and removing membership
+    $('body').on('click', '.share-box-users-item, .sharing-thumbnail-unshare', 
function(e) {
+        var $target, $share;
+        e.stopPropagation();
+        e.preventDefault();
+        console.log("Click!");
+        $target = $(e.target).closest('.sharing-thumbnail');
+        changeShareState($target);
+        $share = $('#share-box-share');
+        if ($share.children().length === 0) {
+            $share.append('<p>No members yet</p>');
+        }
+        else {
+            $par = $share.find('p');
+            $par.remove();
+        }
+        return false;
+    });
+
+    $('body').on('change', '#share-box-share', function(e) {
+        var $target, $par;
+        e.preventDefault();
+        e.stopPropagation();
+        $target = $(e.target);
+        if ($target.children().length === 0) {
+            $target.append('<p>No members yet</p>');
+        }
+        else {
+            $par = $target.find('p');
+            $par.remove();
+        }
+        return false;
+    });
+
+    $('body').on('click', 'input[type="reset"]', function (e) {
+        var $shared_users;
+        $shared_users = $('.share-box-share-item');
+        $shared_users.toggleClass('.share-box-share-item 
.share-box-users-item');
+        
$shared_users.find('.sharing-thumbnail-access').val(access_enum.NONE).hide();
+        $shared_users.detach().appendTo('#share-box-users');
+        $('.order-results-selector').trigger('change');
+        $('#shared-users').addClass('text-align-center');
+        $('#shared-users').prepend('<p>This project has not been shared</p>');
+    });
+
+    createTestData();
+});

Reply via email to