You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by nd...@apache.org on 2015/05/01 23:33:23 UTC
[36/57] [partial] airavata-php-gateway git commit: AIRAVATA 1632 +
Job Description for Admin Dashboard
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/admin/manage-roles.blade.php
----------------------------------------------------------------------
diff --git a/app/views/admin/manage-roles.blade.php b/app/views/admin/manage-roles.blade.php
new file mode 100644
index 0000000..fa39a75
--- /dev/null
+++ b/app/views/admin/manage-roles.blade.php
@@ -0,0 +1,138 @@
+@extends('layout.basic')
+
+@section('page-header')
+ @parent
+ {{ HTML::style('css/admin.css')}}
+@stop
+
+@section('content')
+
+ <div id="wrapper">
+ <!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
+ @include( 'partials/dashboard-block')
+ <div id="page-wrapper">
+
+ <div class="container-fluid">
+ <div class="col-md-12">
+ @if( Session::has("message"))
+ <div class="row">
+ <div class="alert alert-success alert-dismissible" role="alert">
+ <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
+ {{ Session::get("message") }}
+ </div>
+ </div>
+ {{ Session::forget("message") }}
+ @endif
+
+ <h1 class="text-center">Roles</h1>
+
+ <table class="table table-striped table-condensed">
+ <tr>
+ <th>
+ Role</th>
+ <th>Actions</th>
+ </tr>
+ @foreach( $roles as $role)
+ <tr>
+ <td class="role-name">{{ $role }}</td>
+ <td>
+ <span class="glyphicon glyphicon-pencil edit-role-name"></span>
+ <a href="{{URL::to('/')}}/admin/dashboard/users?role={{$role}}">
+ <span class="glyphicon glyphicon-user role-users"></span>
+ </a>
+ <span class="glyphicon glyphicon-trash delete-role"></span>
+ </td>
+ </tr>
+ @endforeach
+ </table>
+ <div class="col-md-12">
+ <button type="button" class="btn btn-default toggle-add-role"><span class="glyphicon glyphicon-plus"></span>Add a new Role</button>
+ </div>
+ <div class="add-role col-md-6">
+ <form role="form" action="{{URL::to('/')}}/admin/addrole" method="POST" class="add-role-form">
+ <div class="form-group">
+ <label>Enter Role Name</label>
+ <input type="text" name="role" class="form-control"/>
+ </div>
+ <div class="form-group">
+ <input type="submit" class="form-control btn btn-primary" value="Add" />
+ </div>
+ </form>
+ </div>
+
+ <div class="edit-role hide">
+ <form class="edit-role-form">
+ <div class="form-group col-md-4">
+ <input type="text" name="new-role-name" class="new-role-name form-control"/>
+ <input type="hidden" name="original-role-name" class="original-role-name" value=""/>
+ </div>
+ <div class="form-group col-md-4">
+ <input type="submit" class="form-control btn btn-primary" value="Edit" />
+ </div>
+ </form>
+ </div>
+
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="modal fade" id="delete-role-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+ <div class="modal-dialog">
+
+ <form action="{{URL::to('/')}}/admin/deleterole" method="POST">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3 class="text-center">Delete Role Confirmation</h3>
+ </div>
+ <div class="modal-body">
+ <input type="hidden" class="form-control delete-roleName" name="role"/>
+ Do you really want to delete the role - <span class="delete-role-name"></span>
+ </div>
+ <div class="modal-footer">
+ <div class="form-group">
+ <input type="submit" class="btn btn-danger" value="Delete"/>
+ <input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+ </div>
+ </div>
+ </div>
+
+ </form>
+
+
+ </div>
+ </div>
+
+
+@stop
+
+@section('scripts')
+ @parent
+ <script>
+ $(".toggle-add-role").click( function(){
+ $(".add-role").slideDown();
+ });
+
+ $(".edit-role-name").click( function(){
+ var roleNameSpace = $(this).parent().parent().find(".role-name");
+ if( roleNameSpace.find(".edit-role-form").length )
+ {
+ roleNameSpace.html( roleNameSpace.find(".original-role-name").val() );
+ }
+ else
+ {
+ var role = roleNameSpace.html();
+ roleNameSpace.html( $(".edit-role").html() );
+ roleNameSpace.find(".original-role-name").val( role );
+ roleNameSpace.find(".new-role-name").val( role );
+ }
+ });
+
+ $(".delete-role").click( function(){
+ $("#delete-role-block").modal("show");
+ var roleName = $(this).parent().parent().find(".role-name").html();
+ $(".delete-role-name").html(roleName);
+ $(".delete-roleName").val(roleName);
+ });
+ </script>
+@stop
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/admin/manage-users.blade.php
----------------------------------------------------------------------
diff --git a/app/views/admin/manage-users.blade.php b/app/views/admin/manage-users.blade.php
new file mode 100644
index 0000000..5cbdb7b
--- /dev/null
+++ b/app/views/admin/manage-users.blade.php
@@ -0,0 +1,144 @@
+@extends('layout.basic')
+
+@section('page-header')
+ @parent
+ {{ HTML::style('css/admin.css')}}
+@stop
+
+@section('content')
+
+ <div id="wrapper">
+ <!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
+ @include( 'partials/dashboard-block')
+ <div id="page-wrapper">
+ <div class="col-md-12">
+ @if( Session::has("message"))
+ <div class="row">
+ <div class="alert alert-success alert-dismissible" role="alert">
+ <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
+ {{ Session::get("message") }}
+ </div>
+ </div>
+ {{ Session::forget("message") }}
+ @endif
+ </div>
+ <div class="container-fluid">
+ <div class="col-md-12">
+ @if( Session::has("message"))
+ <div class="row">
+ <div class="alert alert-success alert-dismissible" role="alert">
+ <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
+ {{ Session::get("message") }}
+ </div>
+ </div>
+ {{ Session::forget("message") }}
+ @endif
+
+ <h1 class="text-center">Users</h1>
+
+ <table class="table table-striped table-condensed">
+ <tr>
+ <th>Username</th>
+ <th>
+ Role :
+ <select onchange="location = this.options[this.selectedIndex].value;">
+ <option>Select a role</option>
+ <option value="{{URL::to('/')}}/admin/dashboard/users">All</option>
+ @foreach( (array)$roles as $role)
+ <option value="{{URL::to('/')}}/admin/dashboard/users?role={{$role}}">{{$role}}</option>
+ @endforeach
+ </select>
+ </th>
+ </tr>
+ @foreach( (array)$users as $user)
+ <tr class="user-row">
+ <td>{{ $user }}</td>
+ <td>
+ <button class="button btn btn-default check-roles fade" type="button" data-username="{{$user}}">Check All Roles</button>
+ <div class="user-roles"></div>
+ </td>
+ </tr>
+ @endforeach
+ </table>
+
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="modal fade" id="check-role-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3 class="text-center">User Roles</h3>
+ </div>
+ <div class="modal-body">
+ <h4 class="roles-of-user"></h4>
+ <div class="roles-load">
+ Getting User Roles. Please Wait...
+ </div>
+ <div class="roles-list">
+ </div>
+ </div>
+ <div class="modal-footer">
+ <div class="form-group">
+ <input type="submit" class="btn btn-primary" data-dismiss="modal" value="Ok"/>
+ </div>
+ </div>
+ </div>
+ <input type="hidden" class="base-url" value="{{URL::to('/')}}"/>
+ </div>
+ </div>
+
+ <div class="role-block">
+ <div class="btn-group" role="group">
+ <button type="button" class="btn btn-default role-name" disabled>Role</button>
+ <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-remove"></span></button>
+ </div>
+ </div>
+@stop
+
+@section('scripts')
+ @parent
+ <script>
+
+ $(".user-row").hover(
+ function(){
+ $(this).find(".check-roles").addClass("in");
+ },
+ function(){
+ $(this).find(".check-roles").removeClass("in");
+ }
+ );
+ $(".check-roles").click( function(){
+
+ var userName = $(this).data("username");
+ $("#check-role-block").modal("show");
+ $(".roles-of-user").html( "User : " + userName);
+ $(".roles-load").removeClass("hide");
+ $(".roles-list").addClass("hide");
+ $.ajax({
+ type: "POST",
+ url: $(".base-url").val() + "/admin/checkroles",
+ data:
+ {
+ username: userName
+ }
+ })
+ .complete(function( data ) {
+ roles = JSON.parse( data.responseText );
+ roleBlocks = "";
+ for( var i=0; i<roles.length; i++)
+ {
+ $(".role-block").find(".role-name").html( roles[i]);
+ var newRoleBlock = $(".role-block").html();
+ roleBlocks += newRoleBlock;
+ $(".roles-list").html( roleBlocks);
+ }
+ $(".roles-load").addClass("hide");
+ $(".roles-list").removeClass("hide");
+ });
+
+ });
+ </script>
+@stop
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/application/deployment.blade.php
----------------------------------------------------------------------
diff --git a/app/views/application/deployment.blade.php b/app/views/application/deployment.blade.php
new file mode 100644
index 0000000..2cad93b
--- /dev/null
+++ b/app/views/application/deployment.blade.php
@@ -0,0 +1,180 @@
+@extends('layout.basic')
+
+@section('page-header')
+ @parent
+ {{ HTML::style('css/style.css') }}
+@stop
+
+@section('content')
+
+<div class="container">
+ <div class="col-md-offset-2 col-md-8">
+
+ <div class="row">
+ <button class="btn btn-default create-app-deployment">Create a new Application Deployment</button>
+ </div>
+ @if( count( $appDeployments) )
+ @if( Session::has("message"))
+ <div class="row">
+ <div class="alert alert-success alert-dismissible" role="alert">
+ <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
+ {{ Session::get("message") }}
+ </div>
+ </div>
+ {{ Session::forget("message") }}
+ @endif
+
+ <div class="row">
+ <div class="col-md-6">
+ <h3>Existing Application Deployments :</h3>
+ </div>
+ <div class="col-md-6" style="margin-top:3.5%">
+ <input type="text" class="col-md-12 filterinput" placeholder="Search by Deployment Id Name" />
+ </div>
+ </div>
+ <div class="panel-group" id="accordion">
+ @foreach( $appDeployments as $index => $deployment )
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4 class="panel-title">
+ <a class="accordion-toggle collapsed deployment-id" data-toggle="collapse" data-parent="#accordion" href="#collapse-{{$index}}">
+ {{ $deployment->appDeploymentId }}
+ </a>
+ <div class="pull-right col-md-2 deployment-options fade">
+ <span class="glyphicon glyphicon-pencil edit-app-deployment" style="cursor:pointer;" data-toggle="modal" data-target="#edit-app-deployment-block" data-deployment-id="{{ $deployment->appDeploymentId }}"></span>
+ <span class="glyphicon glyphicon-trash delete-app-deployment" style="cursor:pointer;" data-toggle="modal" data-target="#delete-app-deployment-block" data-deployment-id="{{ $deployment->appDeploymentId }}"></span>
+ </div>
+ </h4>
+ </div>
+ <div id="collapse-{{$index}}" class="panel-collapse collapse">
+ <div class="panel-body">
+ <div class="app-deployment-block">
+ @include('partials/deployment-block', array( 'deploymentObject' => $deployment, 'computeResources' => $computeResources, 'modules' => $modules) )
+ </div>
+ </div>
+ </div>
+ </div>
+ @endforeach
+ </div>
+ @endif
+
+ <div class="load-cmd-ui hide">
+ <input name="moduleLoadCmds[]" type="text" class="form-control" placeholder="Module Load Command"/>
+ </div>
+
+ <div class="lib-prepend-path-ui hide">
+ <div class="col-md-12 well">
+ <input name="libraryPrependPathName[]" type="text" class="col-md-4" placeholder="Name"/>
+ <input name="libraryPrependPathValue[]" type="text" class="col-md-8" placeholder="Value"/>
+ </div>
+ </div>
+
+ <div class="lib-append-path-ui hide">
+ <div class="col-md-12 well">
+ <input name="libraryAppendPathName[]" type="text" class="col-md-4" placeholder="Name"/>
+ <input name="libraryAppendPathValue[]" type="text" class="col-md-8" placeholder="Value"/>
+ </div>
+ </div>
+
+ <div class="environment-ui hide">
+ <div class="col-md-12 well">
+ <input name="environmentName[]" type="text" class="col-md-4" placeholder="Name"/>
+ <input name="environmentValue[]" type="text" class="col-md-8" placeholder="Value"/>
+ </div>
+ </div>
+
+ <div class="pre-job-command-ui hide">
+ <div class="col-md-12 well">
+ <input name="preJobCommand[]" type="text" class="col-md-12" placeholder="Pre Job Command"/>
+ </div>
+ </div>
+
+ <div class="post-job-command-ui hide">
+ <div class="col-md-12 well">
+ <input name="postJobCommand[]" type="text" class="col-md-12" placeholder="Post Job Command"/>
+ </div>
+ </div>
+
+ <div class="modal fade" id="edit-app-deployment-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+ <div class="modal-dialog">
+ <form action="{{URL::to('/')}}/app/deployment-edit" method="POST">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3 class="text-center">Edit Application Deployment</h3>
+ </div>
+ <div class="modal-body row">
+ <div class="app-deployment-form-content col-md-12">
+ </div>
+ </div>
+ <div class="modal-footer">
+ <div class="form-group">
+ <input type="submit" class="btn btn-primary" value="Update"/>
+ <input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+ </div>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+
+ <div class="modal fade" id="create-app-deployment-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+ <div class="modal-dialog">
+ <form action="{{URL::to('/')}}/app/deployment-create" method="POST">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3 class="text-center">Create Application Deployment</h3>
+ </div>
+ <div class="modal-body row">
+ <div class="col-md-12">
+ <div class="create-app-deployment-block">
+ @include('partials/deployment-block', array( 'computeResources' => $computeResources, 'modules' => $modules) )
+ </div>
+ </div>
+ </div>
+ <div class="modal-footer">
+ <div class="form-group">
+ <input type="submit" class="btn btn-primary" value="Create"/>
+ <input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+ </div>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+
+ <div class="modal fade" id="delete-app-deployment-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+ <div class="modal-dialog">
+
+ <form action="{{URL::to('/')}}/app/deployment-delete" method="POST">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3 class="text-center">Delete Confirmation Application Deployment</h3>
+ </div>
+ <div class="modal-body">
+ <input type="hidden" class="form-control delete-deploymentId" name="appDeploymentId"/>
+ Do you really want to delete the Application Deployment - <span class="delete-deployment-id"></span>
+ </div>
+ <div class="modal-footer">
+ <div class="form-group">
+ <input type="submit" class="btn btn-danger" value="Delete"/>
+ <input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+ </div>
+ </div>
+ </div>
+
+ </form>
+
+
+ </div>
+ </div>
+
+ </div>
+
+</div>
+
+@stop
+
+@section('scripts')
+ @parent
+ {{ HTML::script('js/deployment.js') }}
+@stop
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/application/interface.blade.php
----------------------------------------------------------------------
diff --git a/app/views/application/interface.blade.php b/app/views/application/interface.blade.php
new file mode 100644
index 0000000..140a951
--- /dev/null
+++ b/app/views/application/interface.blade.php
@@ -0,0 +1,165 @@
+@extends('layout.basic')
+
+@section('page-header')
+ @parent
+ {{ HTML::style('css/style.css') }}
+@stop
+
+@section('content')
+
+<div class="container">
+ <div class="col-md-offset-2 col-md-8">
+
+ <div class="row">
+ <button class="btn btn-default create-app-interface">Create a new Application Interface</button>
+ </div>
+ @if( count( $appInterfaces) )
+ @if( Session::has("message"))
+ <div class="row">
+ <div class="alert alert-success alert-dismissible" role="alert">
+ <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
+ {{ Session::get("message") }}
+ </div>
+ </div>
+ {{ Session::forget("message") }}
+ @endif
+ <div class="row">
+
+ <div class="col-md-6">
+ <h3>Existing Application Interfaces :</h3>
+ </div>
+ <div class="col-md-6" style="margin-top:3.5%">
+ <input type="text" class="col-md-12 filterinput" placeholder="Search by Interface Name" />
+ </div>
+ </div>
+ <div class="panel-group" id="accordion">
+ @foreach( $appInterfaces as $index => $interface )
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4 class="panel-title">
+ <a class="accordion-toggle collapsed interface-name" data-toggle="collapse" data-parent="#accordion" href="#collapse-{{$index}}">
+ {{ $interface->applicationName }}
+ </a>
+ <div class="pull-right col-md-2 interface-options fade">
+ <span class="glyphicon glyphicon-pencil edit-app-interface" style="cursor:pointer;" data-toggle="modal" data-target="#edit-app-interface-block" data-interface-id="{{ $interface->applicationInterfaceId }}"></span>
+ <span class="glyphicon glyphicon-trash delete-app-interface" style="cursor:pointer;" data-toggle="modal" data-target="#delete-app-interface-block" data-interface-id="{{ $interface->applicationInterfaceId }}"></span>
+ </div>
+ </h4>
+ </div>
+ <div id="collapse-{{$index}}" class="panel-collapse collapse">
+ <div class="panel-body">
+ <div class="app-interface-block">
+ @include('partials/interface-block', array( 'interfaceObject' => $interface, 'dataTypes' => $dataTypes, 'modules' => $modules) )
+ </div>
+ </div>
+ </div>
+ </div>
+ @endforeach
+ </div>
+ @endif
+
+ </div>
+
+ <div class="app-module-block hide">
+ <div class="input-group">
+ <select name="applicationModules[]" class="app-module-select form-control">
+ @foreach( $modules as $index=> $module)
+ <option value="{{ $module->appModuleId}}">{{ $module->appModuleName }}</option>
+ @endforeach
+ </select>
+ <span class="input-group-addon remove-app-module" style="cursor:pointer;">x</span>
+ </div>
+ </div>
+
+ <div class="app-input-block hide">
+ @include('partials/interface-input-block', array( 'dataTypes' => $dataTypes) )
+ </div>
+
+ <div class="app-output-block hide">
+ @include('partials/interface-output-block', array( 'dataTypes' => $dataTypes) )
+ </div>
+</div>
+
+<div class="modal fade" id="edit-app-interface-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true" data-backdrop="static">
+ <div class="modal-dialog">
+ <form action="{{URL::to('/')}}/app/interface-edit" method="POST" id="edit-app-interface-form">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
+ <h3 class="text-center">Edit Application Interface</h3>
+ </div>
+ <div class="modal-body row">
+ <div class="app-interface-form-content col-md-12">
+ </div>
+ </div>
+ <div class="modal-footer">
+ <div class="form-group">
+ <input type="button" class="submit-edit-app-interface-form btn btn-primary" value="Update"/>
+ <input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+ <input type="submit" class="btn btn-primary hide really-submit-edit-app-interface-form" value=""/>
+ </div>
+ </div>
+ </div>
+ </form>
+ </div>
+</div>
+
+<div class="modal fade" id="create-app-interface-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true" data-backdrop="static">
+ <div class="modal-dialog">
+ <form action="{{URL::to('/')}}/app/interface-create" method="POST" id="create-app-interface-form">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
+ <h3 class="text-center">Create Application Interface</h3>
+ </div>
+ <div class="modal-body row">
+ <div class="col-md-12">
+ <div class="create-app-interface-block">
+ @include('partials/interface-block', array( 'dataTypes' => $dataTypes, 'modules' => $modules) )
+ </div>
+ </div>
+ </div>
+ <div class="modal-footer">
+ <div class="form-group">
+ <input type="button" class="btn btn-primary submit-create-app-interface-form" value="Create"/>
+ <input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+ <input type="submit" class="btn btn-primary hide really-submit-create-app-interface-form" value=""/>
+ </div>
+ </div>
+ </div>
+ </form>
+ </div>
+</div>
+
+<div class="modal fade" id="delete-app-interface-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+ <div class="modal-dialog">
+
+ <form action="{{URL::to('/')}}/app/interface-delete" method="POST">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3 class="text-center">Delete Confirmation Application Interface</h3>
+ </div>
+ <div class="modal-body">
+ <input type="hidden" class="form-control delete-interfaceid" name="appInterfaceId"/>
+ Do you really want to delete the Application Interface - <span class="delete-interface-name"></span>
+ </div>
+ <div class="modal-footer">
+ <div class="form-group">
+ <input type="submit" class="btn btn-danger" value="Delete"/>
+ <input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+ </div>
+ </div>
+ </div>
+
+ </form>
+
+
+ </div>
+</div>
+
+@stop
+
+@section('scripts')
+ @parent
+ {{ HTML::script('js/interface.js') }}
+@stop
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/application/module.blade.php
----------------------------------------------------------------------
diff --git a/app/views/application/module.blade.php b/app/views/application/module.blade.php
new file mode 100644
index 0000000..006f330
--- /dev/null
+++ b/app/views/application/module.blade.php
@@ -0,0 +1,189 @@
+@extends('layout.basic')
+
+@section('page-header')
+ @parent
+ {{ HTML::style('css/style.css') }}
+@stop
+
+@section('content')
+
+<div class="container">
+ <div class="col-md-offset-2 col-md-8">
+
+ <button class="btn btn-default create-app-module" data-toggle="modal" data-target="#new-app-module-block">Create a new Application Module</button>
+
+ @if( count( $modules) )
+ @if( Session::has("message"))
+ <div class="row">
+ <div class="alert alert-success alert-dismissible" role="alert">
+ <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
+ {{ Session::get("message") }}
+ </div>
+ </div>
+ {{ Session::forget("message") }}
+ @endif
+ <div class="row">
+ <div class="col-md-6">
+ <h3>Existing Modules :</h3>
+ </div>
+ <div class="col-md-6" style="margin-top:3.5%">
+ <input type="text" class="col-md-12 filterinput" placeholder="Search by Module Name" />
+ </div>
+ </div>
+ <div class="panel-group" id="accordion">
+ @foreach( $modules as $index => $module )
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4 class="panel-title">
+ <a class="accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapse-{{$index}}">
+ {{ $module->appModuleName }}
+ </a>
+ <div class="pull-right col-md-2 module-options fade">
+ <span class="glyphicon glyphicon-pencil edit-app-module" style="cursor:pointer;" data-toggle="modal" data-target="#edit-app-module-block" data-module-data="{{ htmlentities(json_encode( $module) ) }}"></span>
+ <span class="glyphicon glyphicon-trash delete-app-module" style="cursor:pointer;" data-toggle="modal" data-target="#delete-app-module-block" data-module-data="{{ htmlentities(json_encode( $module) ) }}"></span>
+ </div>
+ </h4>
+ </div>
+ <div id="collapse-{{$index}}" class="panel-collapse collapse">
+ <div class="panel-body">
+ {{ $module->appModuleDescription }}
+ </div>
+ </div>
+ </div>
+ @endforeach
+ </div>
+ @endif
+
+
+ <div class="modal fade" id="new-app-module-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+ <div class="modal-dialog">
+
+ <form action="{{URL::to('/')}}/app/module-create" method="POST">
+
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3 class="text-center">Create a new Application Module</h3>
+ </div>
+ <div class="modal-body">
+ @include('partials/module-block')
+ </div>
+ <div class="modal-footer">
+ <div class="form-group">
+ <input type="submit" class="btn btn-primary" value="Save"/>
+ <input type="reset" class="reset-create-form btn btn-success" value ="Reset"/>
+ </div>
+ </div>
+ </div>
+
+ </form>
+
+
+ </div>
+ </div>
+
+ <div class="modal fade" id="edit-app-module-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+ <div class="modal-dialog">
+
+ <form action="{{URL::to('/')}}/app/module-edit" method="POST">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3 class="text-center">Edit Application Module</h3>
+ </div>
+ <div class="modal-body">
+ <input type="hidden" class="form-control edit-moduleid" name="appModuleId"/>
+ @include('partials/module-block')
+ </div>
+ <div class="modal-footer">
+ <div class="form-group">
+ <input type="submit" class="btn btn-primary" value="Update"/>
+ <input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+ </div>
+ </div>
+ </div>
+
+ </form>
+
+
+ </div>
+ </div>
+
+ <div class="modal fade" id="delete-app-module-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+ <div class="modal-dialog">
+
+ <form action="{{URL::to('/')}}/app/module-delete" method="POST">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3 class="text-center">Delete Confirmation Application Module</h3>
+ </div>
+ <div class="modal-body">
+ <input type="hidden" class="form-control delete-moduleid" name="appModuleId"/>
+
+ Do you really want to delete the Application Module - <span class="delete-module-name"></span>
+ </div>
+ <div class="modal-footer">
+ <div class="form-group">
+ <input type="submit" class="btn btn-danger" value="Delete"/>
+ <input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+ </div>
+ </div>
+ </div>
+
+ </form>
+
+
+ </div>
+ </div>
+
+@stop
+
+@section('scripts')
+ @parent
+ <script type="text/javascript">
+
+ $(".panel-title").hover(
+ function(){
+ $(this).find(".module-options").addClass("in");
+ },
+ function(){
+ $(this).find(".module-options").removeClass("in");
+ }
+ );
+
+ $('.filterinput').keyup(function() {
+ var a = $(this).val();
+ if (a.length > 0) {
+ children = ($("#accordion").children());
+
+ var containing = children.filter(function () {
+ var regex = new RegExp('\\b' + a, 'i');
+ return regex.test($('a', this).text());
+ }).slideDown();
+ children.not(containing).slideUp();
+ } else {
+ children.slideDown();
+ }
+ return false;
+ });
+
+ $(".create-app-module").click( function(){
+ //reset form to clear it out if it got filled by edit modules
+ $(".reset-create-form").click();
+ })
+
+ $(".edit-app-module").click( function(){
+ var moduleData = $(this).data("module-data");
+ console.log( moduleData);
+ $(".edit-name").val( moduleData.appModuleName);
+ $(".edit-desc").val( moduleData.appModuleDescription);
+ $(".edit-version").val( moduleData.appModuleVersion);
+ $(".edit-moduleid").val( moduleData.appModuleId)
+ });
+
+ $(".delete-app-module").click( function(){
+ var moduleData = $(this).data("module-data");
+ $(".delete-module-name").html( moduleData.appModuleName);
+ $(".delete-moduleid").val( moduleData.appModuleId)
+ });
+ </script>
+
+@stop
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/emails/auth/reminder.blade.php
----------------------------------------------------------------------
diff --git a/app/views/emails/auth/reminder.blade.php b/app/views/emails/auth/reminder.blade.php
new file mode 100755
index 0000000..aebea9e
--- /dev/null
+++ b/app/views/emails/auth/reminder.blade.php
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en-US">
+ <head>
+ <meta charset="utf-8">
+ </head>
+ <body>
+ <h2>Password Reset</h2>
+
+ <div>
+ To reset your password, complete this form: {{ URL::to('password/reset', array($token)) }}.<br/>
+ This link will expire in {{ Config::get('auth.reminder.expire', 60) }} minutes.
+ </div>
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/experiment/create-complete.blade.php
----------------------------------------------------------------------
diff --git a/app/views/experiment/create-complete.blade.php b/app/views/experiment/create-complete.blade.php
new file mode 100644
index 0000000..a3ee8be
--- /dev/null
+++ b/app/views/experiment/create-complete.blade.php
@@ -0,0 +1,70 @@
+@extends('layout.basic')
+
+@section('page-header')
+ @parent
+@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) )
+
+ <div class="form-group btn-toolbar">
+ <div class="btn-group">
+ <button name="save" type="submit" class="btn btn-primary" value="Save">Save</button>
+ <button name="launch" type="submit" class="btn btn-success" id="expLaunch" value="Save and launch">Save and launch</button>
+ </div>
+
+ <a href="{{URL::to('/')}}/experiment/create" class="btn btn-default" role="button">Start over</a>
+ </div>
+
+ </form>
+
+
+</div>
+
+
+@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");
+ });
+ </script>
+@stop
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/experiment/create.blade.php
----------------------------------------------------------------------
diff --git a/app/views/experiment/create.blade.php b/app/views/experiment/create.blade.php
new file mode 100755
index 0000000..52873f1
--- /dev/null
+++ b/app/views/experiment/create.blade.php
@@ -0,0 +1,55 @@
+@extends('layout.basic')
+
+@section('page-header')
+ @parent
+@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">
+
+ <?php
+
+ $disabled = '';
+ $experimentName = '';
+ $experimentDescription = '';
+ $project = '';
+ $application = '';
+
+ $echo = '';
+ $wrf = '';
+ ?>
+
+ <div class="form-group required">
+ <label for="experiment-name" class="control-label">Experiment Name</label>
+ <input type="text" class="form-control" name="experiment-name" id="experiment-name" placeholder="Enter experiment name" autofocus required="required">
+ </div>
+ <div class="form-group">
+ <label for="experiment-description">Experiment Description</label>
+ <textarea class="form-control" name="experiment-description" id="experiment-description" placeholder="Optional: Enter a short description of the experiment"></textarea>
+ </div>
+ <div class="form-group required">
+ <label for="project" class="control-label">Project</label>
+
+
+ {{ Utilities::create_project_select($project, !$disabled) }}
+
+ </div>
+ <div class="form-group">
+ <label for="application">Application</label>
+
+ {{ Utilities::create_application_select($application, !$disabled) }}
+
+ </div>
+ <div class="btn-toolbar">
+ <input name="continue" type="submit" class="btn btn-primary" value="Continue">
+ <input name="clear" type="reset" class="btn btn-default" value="Reset values">
+ </div>
+ </form>
+
+</div>
+
+@stop
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/experiment/edit.blade.php
----------------------------------------------------------------------
diff --git a/app/views/experiment/edit.blade.php b/app/views/experiment/edit.blade.php
new file mode 100755
index 0000000..8eb759a
--- /dev/null
+++ b/app/views/experiment/edit.blade.php
@@ -0,0 +1,77 @@
+@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 Cloned 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')
+
+
+ <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>
+
+
+ </form>
+ </div>
+
+</div>
+
+@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");
+ });
+ </script>
+@stop
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/experiment/search.blade.php
----------------------------------------------------------------------
diff --git a/app/views/experiment/search.blade.php b/app/views/experiment/search.blade.php
new file mode 100755
index 0000000..e33acd0
--- /dev/null
+++ b/app/views/experiment/search.blade.php
@@ -0,0 +1,265 @@
+@extends('layout.basic')
+
+@section('page-header')
+ @parent
+ {{ HTML::style('css/datetimepicker.css')}}
+
+@stop
+
+@section('content')
+
+<div class="container" style="max-width: 750px;">
+<h1>Search for Experiments</h1>
+
+<form action="{{URL::to('/')}}/experiment/search" method="post" class="form-inline" role="form">
+ <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('', '', '', '');
+
+ Utilities::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" required
+ value="<?php if (isset($_POST['search-value'])) echo $_POST['search-value'] ?>">
+ </div>
+
+ <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" 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>
+</form>
+
+
+
+
+<?php
+
+if (isset( $expContainer))
+{
+ if (sizeof($expContainer) == 0)
+ {
+ Utilities::print_warning_message('No results found. Please try again.');
+ }
+ else
+ {
+
+?>
+
+ <div class="table-responsive">
+ <table class="table">
+ <tr>
+ <th>Name</th>
+ <th>Application</th>
+ <th>Description</th>
+ <!--<th>Resource</th>-->
+ <th>Creation Time</th>
+ <th>
+ <select class="form-control select-status">
+ <option value="ALL">Status</option>
+ @foreach( $expStates as $index => $state)
+ <option value="{{ $state }}">{{ $state }}</option>
+ @endforeach
+ </select>
+ </th>
+ </tr>
+
+
+<?php
+ foreach ($expContainer as $experiment)
+ {
+ $description = $experiment['experiment']->description;
+ if (strlen($description) > 17) // 17 is arbitrary
+ {
+ $description = substr($experiment['experiment']->description, 0, 17) . '<span class="text-muted">...</span>';
+ }
+
+ echo '<tr>';
+ $addEditOption="";
+ if( $experiment['expValue']['editable'])
+ $addEditOption = '<a href="'. URL::to('/') . '/experiment/edit?expId=' . $experiment['experiment']->experimentID . '" title="Edit"><span class="glyphicon glyphicon-pencil"></span></a>';
+
+ echo '<td>' . $experiment['experiment']->name . $addEditOption . '</td>';
+
+ echo '<td>' . $experiment['expValue']['applicationInterface']->applicationName . '</td>';
+
+ echo '<td>' . $description . '</td>';
+
+ //echo "<td>$computeResource->hostName</td>";
+ echo '<td>' . date('Y-m-d H:i:s', $experiment['experiment']->creationTime/1000) . '</td>';
+
+
+ switch ($experiment['expValue']['experimentStatusString'])
+ {
+ case 'CANCELING':
+ case 'CANCELED':
+ case 'UNKNOWN':
+ $textClass = 'text-warning';
+ break;
+ case 'FAILED':
+ $textClass = 'text-danger';
+ break;
+ case 'COMPLETED':
+ $textClass = 'text-success';
+ break;
+ default:
+ $textClass = 'text-info';
+ break;
+ }
+
+ ?>
+ <td>
+ <a class="<?php echo $textClass; ?>" href="{{ URL::to('/') }}/experiment/summary?expId=<?php echo $experiment['experiment']->experimentID; ?>">
+ <?php echo $experiment['expValue']['experimentStatusString']; ?>
+ </a>
+ </td>
+
+ </tr>
+
+ <?php
+ }
+
+ echo '
+ </table>
+ </div>
+ ';
+ }
+
+
+}
+?>
+
+
+</div>
+
+@stop
+
+@section('scripts')
+ @parent
+ {{ HTML::script('js/moment.js')}}
+ {{ HTML::script('js/datetimepicker.js')}}
+
+ <script type="text/javascript">
+
+ $(document).ready( function(){
+
+ /* 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);
+ });
+ $("#datetimepicker10").on("dp.change",function (e) {
+ $('#datetimepicker9').data("DateTimePicker").setMaxDate(e.date);
+ });
+
+ /* 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/01413d65/app/views/experiment/summary.blade.php
----------------------------------------------------------------------
diff --git a/app/views/experiment/summary.blade.php b/app/views/experiment/summary.blade.php
new file mode 100755
index 0000000..c3f3d4e
--- /dev/null
+++ b/app/views/experiment/summary.blade.php
@@ -0,0 +1,31 @@
+@extends('layout.basic')
+
+@section('page-header')
+ @parent
+@stop
+
+@section('content')
+ @include('partials/experiment-info')
+@stop
+
+
+@section('scripts')
+ @parent
+ <script>
+ setInterval( function(){
+ if( $.trim( $(".exp-status").html() ) != "COMPLETED")
+ {
+ $.ajax({
+ type:"GET",
+ url: "{{URL::to('/') }}/experiment/summary",
+ data: {expId: "{{ Input::get('expId') }}" },
+ success: function( exp){
+ if( $.trim( $("#expObj").val() ) != $.trim( exp) )
+ $(".refresh-exp").click();
+
+ }
+ });
+ }
+ }, 3000);
+ </script>
+@stop
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/gateway/browse.blade.php
----------------------------------------------------------------------
diff --git a/app/views/gateway/browse.blade.php b/app/views/gateway/browse.blade.php
new file mode 100644
index 0000000..6d26a06
--- /dev/null
+++ b/app/views/gateway/browse.blade.php
@@ -0,0 +1,218 @@
+@extends('layout.basic')
+
+@section('page-header')
+ @parent
+@stop
+
+@section('content')
+
+<div class="container">
+ <div class="col-md-offset-2 col-md-8">
+ <div class="row">
+ <a href="{{URL::to('/')}}/gp/create">
+ <button class="btn btn-default create-gateway-profile">Create a new Gateway Resource Profile</button>
+ </a>
+ </div>
+ @if( count( $gatewayProfiles) )
+ @if( Session::has("message"))
+ <div class="row">
+ <div class="alert alert-success alert-dismissible" role="alert">
+ <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
+ {{ Session::get("message") }}
+ </div>
+ </div>
+ {{ Session::forget("message") }}
+ @endif
+ <div class="row">
+
+ <div class="col-md-6">
+ <h3>Existing Gateway Resource Profiles :</h3>
+ </div>
+ <div class="col-md-6" style="margin-top:3.5%">
+ <input type="text" class="col-md-12 filterinput" placeholder="Search by Gateway Name" />
+ </div>
+ </div>
+ <div class="panel-group" id="accordion1">
+ @foreach( $gatewayProfiles as $indexGP => $gp )
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4 class="panel-title">
+ <a class="accordion-toggle collapsed gateway-name" data-toggle="collapse" data-parent="#accordion" href="#collapse-gateway-{{$indexGP}}">
+ {{ $gp->gatewayName }}
+ </a>
+ <div class="pull-right col-md-2 gateway-options fade">
+ <span class="glyphicon glyphicon-pencil edit-gateway" style="cursor:pointer;" data-toggle="modal" data-target="#edit-gateway-block" data-gp-id="{{ $gp->gatewayID }}" data-gp-name="{{ $gp->gatewayName }}" data-gp-desc="{{ $gp->gatewayDescription }}"></span>
+ <span class="glyphicon glyphicon-trash delete-gateway" style="cursor:pointer;" data-toggle="modal" data-target="#delete-gateway-block" data-gp-name="{{$gp->gatewayName}}" data-gp-id="{{ $gp->gatewayID }}"></span>
+ </div>
+ </h4>
+ </div>
+ <div id="collapse-gateway-{{$indexGP}}" class="panel-collapse collapse">
+ <div class="panel-body">
+ <div class="app-interface-block">
+ <h5>{{ $gp->gatewayDescription}}</h5>
+ <hr/>
+ <div class="row">
+ <div class="col-md-10">
+ <button class="btn btn-default add-cr" data-gpid="{{$gp->gatewayID}}"><span class="glyphicon glyphicon-plus"></span> Add a Compute Resource</button>
+ </div>
+ </div>
+ @if( count( $gp->computeResourcePreferences) )
+ <div class="col-md-12">
+ <h3>Existing Compute Resources :</h3>
+ </div>
+ <div class="accordion-inner">
+ <div class="panel-group" id="accordion-{{$indexGP}}">
+ @foreach( (array)$gp->computeResourcePreferences as $indexCRP => $crp )
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4 class="panel-title">
+ <a class="accordion-toggle collapsed gateway-name" data-toggle="collapse" data-parent="#accordion" href="#collapse-crp-{{$indexGP}}-{{$indexCRP}}">
+ {{ $crp->crDetails->hostName }}
+ </a>
+ <div class="pull-right col-md-2 gateway-options fade">
+ <span class="glyphicon glyphicon-remove remove-resource" style="cursor:pointer;" data-toggle="modal" data-target="#remove-resource-block" data-cr-name="{{$crp->crDetails->hostName}}" data-cr-id="{{$crp->computeResourceId}}" data-gp-id="{{ $gp->gatewayID }}"></span>
+ </div>
+ </h4>
+ </div>
+ <div id="collapse-crp-{{$indexGP}}-{{$indexCRP}}" class="panel-collapse collapse">
+ <div class="panel-body">
+ <div class="app-compute-resource-preferences-block">
+ <form action="{{URL::to('/')}}/gp/update-crp" method="POST">
+ <input type="hidden" name="gatewayId" id="gatewayId" value="{{$gp->gatewayID}}">
+ <input type="hidden" name="computeResourceId" id="gatewayId" value="{{$crp->computeResourceId}}">
+ <div class="form-horizontal">
+ @include('partials/gateway-preferences', array('computeResource' => $crp->crDetails, 'crData' => $crData, 'preferences'=>$crp, 'show'=>true))
+ </div>
+ </form>
+ </div>
+ </div>
+ </div>
+ </div>
+ @endforeach
+ </div>
+ </div>
+ @endif
+ </div>
+ </div>
+ </div>
+ </div>
+ @endforeach
+ </div>
+ @endif
+ </div>
+</div>
+
+<div class="add-compute-resource-block hide">
+ <div class="well">
+ <form action="{{URL::to('/')}}/gp/add-crp" method="POST">
+ <input type="hidden" name="gatewayId" id="gatewayId" value="">
+ <div class="input-group">
+ <select name="computeResourceId" class="cr-select form-control">
+ <option value="">Select a compute Resource and set its preferences</option>
+ @foreach( (array)$computeResources as $index => $cr)
+ <option value="{{ $cr->computeResourceId}}">{{ $cr->hostName }}</option>
+ @endforeach
+ </select>
+ <span class="input-group-addon remove-cr" style="cursor:pointer;">x</span>
+ </div>
+ <div class="pref-space form-horizontal"></div>
+ </form>
+ </div>
+</div>
+
+<!-- Edit a Gateway Modal -->
+<div class="modal fade" id="edit-gateway-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+ <div class="modal-dialog">
+
+ <form action="{{URL::to('/')}}/gp/edit" method="POST">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3 class="text-center">Edit Gateway</h3>
+ </div>
+ <div class="modal-body">
+ <input type="hidden" class="form-control edit-gpId" name="edit-gpId"/>
+ <div class="form-group required">
+ <label class="control-label">Gateway Name</label>
+ <input class="form-control edit-gp-name" maxlength="100" name="gatewayName" required="required" placeholder="Gateway Name"/>
+ </div>
+ <div class="form-group">
+ <label class="control-label">Gateway Description</label>
+ <textarea class="form-control edit-gp-desc" maxlength="255" name="gatewayDescription" placeholder="Gateway Description"></textarea>
+ </div>
+ </div>
+ <div class="modal-footer">
+ <div class="form-group">
+ <input type="submit" class="btn btn-primary" value="Update"/>
+ <input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+ </div>
+ </div>
+ </div>
+
+ </form>
+ </div>
+</div>
+
+<!-- delete a Gateway Modal -->
+<div class="modal fade" id="delete-gateway-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+ <div class="modal-dialog">
+
+ <form action="{{URL::to('/')}}/gp/delete-gp" method="POST">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3 class="text-center">Delete Gateway Profile Confirmation</h3>
+ </div>
+ <div class="modal-body">
+ <input type="hidden" class="form-control delete-gpId" name="del-gpId"/>
+ Do you really want to delete the Gateway Profile, <span class="delete-gp-name"></span> ?
+ </div>
+ <div class="modal-footer">
+ <div class="form-group">
+ <input type="submit" class="btn btn-danger" value="Delete"/>
+ <input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+ </div>
+ </div>
+ </div>
+
+ </form>
+ </div>
+</div>
+
+<!-- Remove a Compute Resource from a Gateway -->
+<div class="modal fade" id="remove-resource-block" tabindex="-1" role="dialog" aria-labelledby="add-modal" aria-hidden="true">
+ <div class="modal-dialog">
+
+ <form action="{{URL::to('/')}}/gp/remove-cr" method="POST">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h3 class="text-center">Remove Compute Resource Confirmation</h3>
+ </div>
+ <div class="modal-body">
+ <input type="hidden" class="form-control remove-crId" name="rem-crId"/>
+ <input type="hidden" class="form-control cr-gpId" name="gpId"/>
+
+ Do you really want to remove the Compute Resource, <span class="remove-cr-name"> </span>from the selected Gateway?
+ </div>
+ <div class="modal-footer">
+ <div class="form-group">
+ <input type="submit" class="btn btn-danger" value="Remove"/>
+ <input type="button" class="btn btn-default" data-dismiss="modal" value ="Cancel"/>
+ </div>
+ </div>
+ </div>
+
+ </form>
+ </div>
+</div>
+
+<!-- contains all compute resource choices that might get selected on adding a new one to a gateway -->
+@foreach( (array)$computeResources as $index => $cr)
+ @include('partials/gateway-preferences', array('computeResource' => $cr, 'crData' => $crData))
+@endforeach
+
+
+@stop
+
+@section('scripts')
+ @parent
+ {{ HTML::script('js/gateway.js') }}
+@stop
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/gateway/create.blade.php
----------------------------------------------------------------------
diff --git a/app/views/gateway/create.blade.php b/app/views/gateway/create.blade.php
new file mode 100644
index 0000000..24cba9c
--- /dev/null
+++ b/app/views/gateway/create.blade.php
@@ -0,0 +1,34 @@
+@extends('layout.basic')
+
+@section('page-header')
+ @parent
+@stop
+
+@section('content')
+
+<div class="container">
+ <div class="col-md-offset-2 col-md-8">
+ <h3>Create a Gateway</h3>
+ <form role="form" method="POST" action="{{ URL::to('/') }}/gp/create">
+ <div class="form-group required">
+ <label class="control-label">Enter Name</label>
+ <input class="form-control hostName" maxlength="100" name="gatewayName" required="required" placeholder="Gateway Name"/>
+ </div>
+ <div class="form-group">
+ <label class="control-label">Enter Description</label>
+ <textarea class="form-control" maxlength="255" name="gatewayDescription" placeholder="Gateway Description"></textarea>
+ </div>
+ <div class="form-group">
+ <input type="submit" class="btn btn-lg btn-primary" value="Create"/>
+ <input type="reset" class="btn btn-lg btn-success" value="Reset"/>
+ </div>
+ </form>
+ </div>
+</div>
+
+@stop
+
+@section('scripts')
+ @parent
+ {{ HTML::script('js/script.js') }}
+@stop
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/home.blade.php
----------------------------------------------------------------------
diff --git a/app/views/home.blade.php b/app/views/home.blade.php
new file mode 100755
index 0000000..a3deeeb
--- /dev/null
+++ b/app/views/home.blade.php
@@ -0,0 +1,180 @@
+@extends('layout.basic')
+
+@section('page-header')
+ @parent
+@stop
+
+@section('content')
+
+<div class="well">
+ <div class="container">
+
+ <?php
+
+ if (Utilities::id_in_session())
+ {
+ $columnClass = 'col-md-4';
+ if( Session::has("admin"))
+ $admin = " Admin";
+ else
+ $admin = "";
+
+ echo '<h4>Welcome'. $admin . ', '. Session::get("username") . '!</h4>';
+
+ if( Session::get("username") == 'admin1') // temporary hard-coded admin user. will replace with admin role in future
+ {
+ try
+ {
+ Utilities::open_tokens_file($tokenFilePath);
+ }
+ catch (Exception $e)
+ {
+ Utilities::print_error_message($e->getMessage());
+ }
+
+
+ if(isset($_GET['tokenId']))
+ {
+ try
+ {
+ Utilities::write_new_token($_GET['tokenId']);
+
+ Utilties::print_success_message('Received new XSEDE token ' . $tokenFile->tokenId .
+ '! Click <a href="' . $req_url .
+ '?gatewayName=' . $gatewayName .
+ '&email=' . $email .
+ '&portalUserName=' . $_SESSION['username'] .
+ '">here</a> to fetch a new token.');
+ }
+ catch (Exception $e)
+ {
+ print_error_message($e->getMessage());
+ }
+ }
+ else
+ {
+ echo '<p><small>Community token currently set to ' . $tokenFile->tokenId .
+ '. Click <a href="' . $req_url .
+ '?gatewayName=' . $gatewayName .
+ '&email=' . $email .
+ '&portalUserName=' . $_SESSION['username'] .
+ '">here</a> to fetch a new token.</small></p>';
+ }
+ }
+ else // standard user
+ {
+ /* temporarily remove to avoid confusion during XSEDE tutorial
+ if (isset($_SESSION['tokenId']))
+ {
+ echo '<p><small>XSEDE token currently active.
+ All experiments launched during this session will use your personal allocation.</small></p>';
+ }
+ elseif(!isset($_GET['tokenId']) && !isset($_SESSION['tokenId']))
+ {
+ echo '<p><small>Currently using community allocation. Click <a href="' .
+ $req_url .
+ '?gatewayName=' . $gatewayName .
+ '&email=' . $email .
+ '&portalUserName=' . $_SESSION['username'] .
+ '">here</a> to use your personal allocation for this session.</small></p>';
+ }
+ elseif(isset($_GET['tokenId']))
+ {
+ $_SESSION['tokenId'] = $_GET['tokenId'];
+
+ print_success_message('Received XSEDE token!' .
+ '<br>All experiments launched during this session will use your personal allocation.');
+ }
+ */
+ }
+ }
+ else
+ {
+ $columnClass = 'col-md-6';
+
+ echo '
+ <h1>PHP Gateway with Airavata</h1>
+ <p>
+ PGA is a science gateway built with the Airavata API. You can reference PGA as you integrate Airavata
+ into your own gateway, or you can create your gateway on top of PGA by cloning it at the link below.
+ PGA is known to work well in the Chrome, Firefox, and Internet Explorer browsers.
+ </p>
+ <p><a href="https://github.com/apache/airavata-php-gateway"
+ target="_blank">See the code <span class="glyphicon glyphicon-new-window"></span></a></p>
+ <p><a href="https://cwiki.apache.org/confluence/display/AIRAVATA/XSEDE+2014+Tutorial"
+ target="_blank">View the XSEDE 2014 tutorial documentation <span class="glyphicon glyphicon-new-window"></span></a></p>
+ ';
+ }
+
+ ?>
+
+
+ </div>
+</div>
+
+<div class="container">
+
+ <div class="row">
+ <?php
+
+ if (Utilities::id_in_session())
+ {
+ echo '
+ <div class="col-md-4">
+ <h2>PHP Gateway with Airavata</h2>
+
+ <p>
+ PGA is a science gateway built with the Airavata API. You can reference PGA as you integrate
+ Airavata into your own gateway, or you can create your gateway on top of PGA by cloning it at
+ the link below. PGA is known to work well in the Chrome, Firefox, and Internet Explorer browsers.
+ </p>
+ <p><a href="https://github.com/apache/airavata-php-gateway/"
+ target="_blank">See the code <span class="glyphicon glyphicon-new-window"></span></a></p>
+ <p><a href="https://cwiki.apache.org/confluence/display/AIRAVATA/XSEDE+2014+Tutorial"
+ target="_blank">View the XSEDE 2014 tutorial documentation <span class="glyphicon glyphicon-new-window"></span></a></p>
+ </div>
+ ';
+ }
+
+ ?>
+ <div class="<?php echo $columnClass; ?>">
+ <div class="thumbnail" style="border:none">
+ <img src="assets/scigap-header-logo.png" alt="SciGaP">
+ <div class="caption">
+ <p>
+ SciGaP is a hosted service with a public API that science gateways can use to manage
+ applications and workflows running on remote supercomputers, as well as other services. Gateway
+ developers can thus concentrate their efforts on building their scientific communities and not
+ worry about operations.
+ </p>
+ <p>
+ Science Gateway Platform as a Service (SciGaP) provides application programmer interfaces (APIs)
+ to hosted generic infrastructure services that can be used by domain science communities to
+ create Science Gateways.
+ </p>
+ <p><a href="http://scigap.org/"
+ target="_blank">Learn more <span class="glyphicon glyphicon-new-window"></span></a></p>
+ </div>
+ </div>
+ </div>
+ <div class="<?php echo $columnClass; ?>">
+ <div class="thumbnail" style="border:none">
+ <img src="assets/PoweredbyAiravata_Small.png" alt="Apache Airavata">
+ <div class="caption">
+ <p>
+ Apache Airavata is a software framework which is dominantly used to build Web-based science
+ gateways and assist to compose, manage, execute and monitor large scale applications and
+ workflows on distributed computing resources such as local clusters, supercomputers, national
+ grids, academic and commercial clouds. Airavata mainly supports long running applications and
+ workflows on distributed computational resources.
+ </p>
+ <p><a href="http://airavata.apache.org/" target="_blank">Learn more <span class="glyphicon glyphicon-new-window"></span></a></p>
+ </div>
+ </div>
+ </div>
+ </div>
+
+</div>
+
+@stop
+
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/layout/basic.blade.php
----------------------------------------------------------------------
diff --git a/app/views/layout/basic.blade.php b/app/views/layout/basic.blade.php
new file mode 100755
index 0000000..7bebad9
--- /dev/null
+++ b/app/views/layout/basic.blade.php
@@ -0,0 +1,102 @@
+@section ('page-header')
+
+<!DOCTYPE html>
+ <html lang="en">
+ <head>
+ <title>PHP Reference Gateway</title>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="resources/assets/favicon.ico" type="image/x-icon">
+ {{ HTML::style('css/bootstrap.min.css')}}
+ </head>
+
+<?php
+
+//Is there a need to connect to id store at this point? Commented for now.
+//Utilities::connect_to_id_store();
+
+?>
+
+<body>
+
+<?php Utilities::create_nav_bar(); ?>
+
+<?php
+ // Alerts if guests users try to go to the link without signing in.
+ if( Session::has("login-alert"))
+ {
+ Utilities::print_error_message("You need to login to use this service.");
+ Session::forget("login-alert");
+ }
+ // if signed in user is not an admin.
+ if( Session::has("admin-alert"))
+ {
+ Utilities::print_error_message("You need to be an admin to use this service.");
+ Session::forget("admin-alert");
+ }
+
+?>
+
+@show
+
+@yield('content')
+
+</body>
+@section('scripts')
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
+ <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
+
+ <!-- Jira Issue Collector - Report Issue -->
+ <script type="text/javascript"
+ src="https://gateways.atlassian.net/s/31280375aecc888d5140f63e1dc78a93-T/en_USmlc07/6328/46/1.4.13/_/download/batch/com.atlassian.jira.collector.plugin.jira-issue-collector-plugin:issuecollector/com.atlassian.jira.collector.plugin.jira-issue-collector-plugin:issuecollector.js?locale=en-US&collectorId=b1572922"></script>
+
+ <!-- Jira Issue Collector - Request Feature -->
+ <script type="text/javascript"
+ src="https://gateways.atlassian.net/s/31280375aecc888d5140f63e1dc78a93-T/en_USmlc07/6328/46/1.4.13/_/download/batch/com.atlassian.jira.collector.plugin.jira-issue-collector-plugin:issuecollector/com.atlassian.jira.collector.plugin.jira-issue-collector-plugin:issuecollector.js?locale=en-US&collectorId=674243b0"></script>
+
+
+ <script type="text/javascript">
+ window.ATL_JQ_PAGE_PROPS = $.extend(window.ATL_JQ_PAGE_PROPS, {
+ "b1572922":
+ {
+ "triggerFunction": function(showCollectorDialog) {
+ //Requries that jQuery is available!
+ jQuery("#report-issue").click(function(e) {
+ e.preventDefault();
+ showCollectorDialog();
+ });
+ }
+ },
+ "674243b0":
+ {
+ "triggerFunction": function(showCollectorDialog) {
+ //Requries that jQuery is available!
+ jQuery("#request-feature").click(function(e) {
+ e.preventDefault();
+ showCollectorDialog();
+ });
+ }
+ }
+ });
+
+ var highest = null;
+ $(".nav-tabs a").each(function(){ //find the height of your highest link
+ var h = $(this).height();
+ if(h > highest){
+ highest = $(this).height();
+ }
+ });
+
+ $(".nav-tabs a").height(highest); //set all your links to that height.
+
+
+ // not letting users to add only spaces in text boxes.
+ $("body").on( "blur", ".form-control", function(){
+ $(this).val( $.trim( $(this).val() ) );
+ });
+
+ </script>
+
+@show
+
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/partials/dashboard-block.blade.php
----------------------------------------------------------------------
diff --git a/app/views/partials/dashboard-block.blade.php b/app/views/partials/dashboard-block.blade.php
new file mode 100644
index 0000000..b7991d5
--- /dev/null
+++ b/app/views/partials/dashboard-block.blade.php
@@ -0,0 +1,50 @@
+<div class="collapse navbar-collapse navbar-ex1-collapse">
+ <ul class="nav navbar-nav side-nav">
+ <li @if( Session::has("manage")) class="active" @endif>
+ <a href="{{ URL::to('/')}}/admin/dashboard/gateway"><i class="fa fa-fw fa-dashboard"></i> Gateway @if( Session::has("scigap_admin"))s @endif</a>
+ </li>
+ <li>
+ <a href="{{ URL::to('/')}}/admin/dashboard/users"><i class="fa fa-fw fa-bar-chart-o"></i> Users</a>
+ </li>
+ <li>
+ <a href="{{ URL::to('/')}}/admin/dashboard/roles"><i class="fa fa-fw fa-table"></i>Roles</a>
+ </li>
+ <li>
+ <a href="{{ URL::to('/')}}/admin/dashboard/credential-store"><i class="fa fa-fw fa-table"></i>Credential Store</a>
+ </li>
+ <li>
+ <a href="tables.html"><i class="fa fa-fw fa-table"></i>Resources</a>
+ </li>
+ <li>
+ <a href="{{ URL::to('/')}}/admin/dashboard/experiments"><i class="fa fa-fw fa-experiments"></i>Experiments</a>
+ </li>
+ <li>
+ <a href="forms.html"><i class="fa fa-fw fa-edit"></i> Settings</a>
+ </li>
+ <!--
+ <li>
+ <a href="bootstrap-elements.html"><i class="fa fa-fw fa-desktop"></i> Bootstrap Elements</a>
+ </li>
+ <li>
+ <a href="bootstrap-grid.html"><i class="fa fa-fw fa-wrench"></i> Bootstrap Grid</a>
+ </li>
+ <li>
+ <a href="javascript:;" data-toggle="collapse" data-target="#demo"><i class="fa fa-fw fa-arrows-v"></i> Dropdown <i class="fa fa-fw fa-caret-down"></i></a>
+ <ul id="demo" class="collapse">
+ <li>
+ <a href="#">Dropdown Item</a>
+ </li>
+ <li>
+ <a href="#">Dropdown Item</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="blank-page.html"><i class="fa fa-fw fa-file"></i> Blank Page</a>
+ </li>
+ <li>
+ <a href="index-rtl.html"><i class="fa fa-fw fa-dashboard"></i> RTL Dashboard</a>
+ </li>
+ -->
+ </ul>
+ </div>
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/app/views/partials/deployment-block.blade.php
----------------------------------------------------------------------
diff --git a/app/views/partials/deployment-block.blade.php b/app/views/partials/deployment-block.blade.php
new file mode 100644
index 0000000..b624c3a
--- /dev/null
+++ b/app/views/partials/deployment-block.blade.php
@@ -0,0 +1,125 @@
+<!-- Application Deployments do not have a name. :(
+<div class="form-group" required>
+ <label class="control-label">Application Deployment Name</label>
+ <input type="text" class="form-control" name="applicationName" value="Class not saving it anywhere." readonly/>
+</div>
+-->
+@if( isset( $deploymentObject) )
+ <input type="hidden" name="app-deployment-id" value="{{$deploymentObject->appDeploymentId}}"/>
+@endif
+<div class="form-group required">
+ <label class="control-label">Application Module</label>
+ <select name="appModuleId" class="form-control app-module-filter" required readonly>
+ @foreach( $modules as $index => $module)
+ <option value="{{ $module->appModuleId }}" @if( isset( $deploymentObject) ) @if( $module->appModuleId == $deploymentObject->appModuleId) selected @endif @endif>{{ $module->appModuleName }}</option>
+ @endforeach
+ </select>
+</div>
+<div class="form-group required">
+ <label class="control-label">Application Compute Host</label>
+ <select name="computeHostId" class="form-control" required readonly>
+ @foreach( $computeResources as $id => $crName)
+ <option value="{{ $id }}" @if( isset( $deploymentObject) ) @if( $id == $deploymentObject->computeHostId) selected @endif @endif>{{ $crName }}</option>
+ @endforeach
+ </select>
+</div>
+<div class="form-group required">
+ <label class="control-label">Application Executable Path</label>
+ <input type="text" class="form-control" name="executablePath" value="@if( isset( $deploymentObject)){{$deploymentObject->executablePath}}@endif" required readonly/>
+</div>
+<div class="form-group required">
+ <label class="control-label">Application Parallelism Type</label>
+ <select name="parallelism" class="form-control" readonly>
+ @foreach( $applicationParallelismTypes as $index=>$parallelismType)
+ <option value="{{$index}}" @if( isset( $deploymentObject) ) @if( $index == $deploymentObject->parallelism) selected @endif @endif>{{ $parallelismType }}</option>
+ @endforeach
+ </select>
+</div>
+<div class="form-group">
+ <label class="control-label">Application Deployment Description</label>
+ <textarea class="form-control" name="appDeploymentDescription" readonly>@if( isset( $deploymentObject)){{$deploymentObject->appDeploymentDescription}}@endif</textarea>
+</div>
+<hr/>
+<div class="form-group">
+ <div class="show-load-cmds">
+ @if( isset( $deploymentObject))
+ @foreach( (array)$deploymentObject->moduleLoadCmds as $index => $cmd)
+ <input name="moduleLoadCmds[]" type="text" class="form-control" placeholder="Module Load Command" value="{{$cmd}}" readonly />
+ @endforeach
+ @endif
+ </div>
+ <button type="button" class="btn btn-default control-label add-load-cmd hide">Add Module Load Commands</label>
+</div>
+<hr/>
+<div class="form-group">
+ <div class="show-lib-prepend-paths">
+ <h5>Library Prepend Paths</h5>
+ @if( isset( $deploymentObject))
+ @foreach( (array)$deploymentObject->libPrependPaths as $path)
+ <div class="col-md-12 well">
+ <input name="libraryPrependPathName[]" type="text" class="col-md-4" placeholder="Name" value="{{$path->name}}" readonly/>
+ <input name="libraryPrependPathValue[]" type="text" class="col-md-8" placeholder="Value" value="{{$path->value}}" readonly/>
+ </div>
+ @endforeach
+ @endif
+ </div>
+ <button type="button" class="btn btn-default control-label add-lib-prepend-path hide">Add a Library Prepend Path</label>
+</div>
+<hr/>
+<div class="form-group">
+ <div class="show-lib-append-paths">
+ <h5>Library Append Paths</h5>
+ @if( isset( $deploymentObject))
+ @foreach( (array)$deploymentObject->libAppendPaths as $path)
+ <div class="col-md-12 well">
+ <input name="libraryAppendPathName[]" type="text" class="col-md-4" placeholder="Name" value="{{$path->name}}" readonly/>
+ <input name="libraryAppendPathValue[]" type="text" class="col-md-8" placeholder="Value" value="{{$path->value}}" readonly/>
+ </div>
+ @endforeach
+ @endif
+ </div>
+ <button type="button" class="btn btn-default control-label add-lib-append-path hide">Add a Library Append Path</label>
+</div>
+<hr/>
+<div class="form-group">
+ <div class="show-environments">
+ <h5>Environments</h5>
+ @if( isset( $deploymentObject))
+ @foreach( (array)$deploymentObject->setEnvironment as $path)
+ <div class="col-md-12 well">
+ <input name="environmentName[]" type="text" class="col-md-4" placeholder="Name" value="{{$path->name}}" readonly/>
+ <input name="environmentValue[]" type="text" class="col-md-8" placeholder="Value" value="{{$path->value}}" readonly/>
+ </div>
+ @endforeach
+ @endif
+ </div>
+ <button type="button" class="btn btn-default control-label add-environment hide">Add Environment</label>
+</div>
+
+<div class="form-group">
+ <div class="show-preJobCommands">
+ <h5>Pre Job Commands</h5>
+ @if( isset( $deploymentObject))
+ @foreach( (array)$deploymentObject->preJobCommands as $preJobCommand)
+ <div class="col-md-12 well">
+ <input name="preJobCommand[]" type="text" class="col-md-12" placeholder="Pre Job Command" value="{{$preJobCommand}}" readonly/>
+ </div>
+ @endforeach
+ @endif
+ </div>
+ <button type="button" class="btn btn-default control-label add-preJobCommand hide">Add Pre Job Command</label>
+</div>
+
+<div class="form-group">
+ <div class="show-postJobCommands">
+ <h5>Post Job Commands</h5>
+ @if( isset( $deploymentObject))
+ @foreach( (array)$deploymentObject->postJobCommands as $postJobCommand)
+ <div class="col-md-12 well">
+ <input name="postJobCommand[]" type="text" class="col-md-12" placeholder="Post Job Command" value="{{$postJobCommand}}" readonly/>
+ </div>
+ @endforeach
+ @endif
+ </div>
+ <button type="button" class="btn btn-default control-label add-postJobCommand hide">Add Post Job Command</label>
+</div>
\ No newline at end of file