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/07 19:27:13 UTC
[09/50] [abbrv] airavata-php-gateway git commit: Notification System
modifications
Notification System modifications
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/b01d107d
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/b01d107d
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/b01d107d
Branch: refs/heads/master
Commit: b01d107d708e873838300587caefa67d3bb74f1c
Parents: f9fc016
Author: Nipurn Doshi <ni...@gmail.com>
Authored: Tue May 3 11:25:18 2016 -0400
Committer: Nipurn Doshi <ni...@gmail.com>
Committed: Tue May 3 11:25:18 2016 -0400
----------------------------------------------------------------------
app/controllers/AdminController.php | 10 +-
app/libraries/AdminUtilities.php | 18 ++-
app/libraries/CommonUtilities.php | 72 ++++++------
app/views/admin/manage-notices.blade.php | 162 +++++++++++++++-----------
public/js/time-conversion.js | 2 +
5 files changed, 148 insertions(+), 116 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/b01d107d/app/controllers/AdminController.php
----------------------------------------------------------------------
diff --git a/app/controllers/AdminController.php b/app/controllers/AdminController.php
index dae85b4..6d2c7ea 100644
--- a/app/controllers/AdminController.php
+++ b/app/controllers/AdminController.php
@@ -370,8 +370,9 @@ class AdminController extends BaseController {
public function noticesView(){
Session::put("admin-nav", "notices");
$notices = array();
+ $noticePriorities = CommonUtilities::get_notice_priorities();
$notices = array_reverse( CommonUtilities::get_all_notices() );
- return View::make("admin/manage-notices", array("notices" => $notices));
+ return View::make("admin/manage-notices", array("notices" => $notices, "priorities" => $noticePriorities));
}
public function addNotice(){
@@ -382,12 +383,7 @@ class AdminController extends BaseController {
public function updateNotice(){
$inputs = Input::all();
- if( AdminUtilities::add_or_update_notice( $inputs, true))
- {
- return 1;
- }
- else
- return 0;
+ return AdminUtilities::add_or_update_notice( $inputs, true);
}
public function deleteNotice(){
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/b01d107d/app/libraries/AdminUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/AdminUtilities.php b/app/libraries/AdminUtilities.php
index 23994e0..64dfbc2 100644
--- a/app/libraries/AdminUtilities.php
+++ b/app/libraries/AdminUtilities.php
@@ -2,6 +2,7 @@
use Airavata\Model\Workspace\Gateway;
use Airavata\Model\Workspace\Notification;
+use Airavata\Model\Workspace\NotificationPriority;
class AdminUtilities
{
@@ -115,16 +116,21 @@ class AdminUtilities
$notification = new Notification();
$notification->gatewayId = Session::get("gateway_id");
$notification->title = $notifData["title"];
- $notification->notifcationMessage = $notifData["notificationMessage"];
- $notification->publishedtime = strtotime( $notifData["publishedtime"])* 1000;
+ $notification->notificationMessage = $notifData["notificationMessage"];
+ $notification->publishedTime = strtotime( $notifData["publishedTime"])* 1000;
$notification->expirationTime = strtotime( $notifData["expirationTime"]) * 1000;
+ $notification->priority = intval($notifData["priority"]);
if( $update){
$notification->notificationId = $notifData["notificationId"];
- return Airavata::getNotification(
- Session::get('authz-token'),
- Session::get("gateway_id"),
- Airavata::updateNotification( Session::get("authz-token"), $notification) );
+ if( Airavata::updateNotification( Session::get("authz-token"), $notification) )
+ {
+ return json_encode( Airavata::getNotification( Session::get('authz-token'),
+ Session::get("gateway_id"),
+ $notifData["notificationId"] ));
+ }
+ else
+ 0;
}
else
return Airavata::getNotification(
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/b01d107d/app/libraries/CommonUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/CommonUtilities.php b/app/libraries/CommonUtilities.php
index d5ce6c0..fed4c17 100644
--- a/app/libraries/CommonUtilities.php
+++ b/app/libraries/CommonUtilities.php
@@ -1,5 +1,6 @@
<?php
use Airavata\Model\Workspace\Notification;
+use Airavata\Model\Workspace\NotificationPriority;
class CommonUtilities
{
@@ -230,41 +231,42 @@ class CommonUtilities
public static function get_notices_ui( $notices){
- $notifVisibility = "";
- $countOfNotices = count( $notices);
- $newNotices = 0;
- if( Session::has("notice-count")){
- $newNotices = $countOfNotices - Session::get("notice-count");
- if( !$newNotices)
- $notifVisibility = "hide";
- }
- else
- $newNotices = count( $notices);
-
- $noticesUI = '<li clas="dropdown" style="color:#fff; relative">' .
- '<a href="#" class="dropdown-toggle notif-link" data-toggle="dropdown">' .
- '<span class="glyphicon glyphicon-bell notif-bell"></span>' .
- '<span class="notif-num ' . $notifVisibility . '" data-total-notices="' . $countOfNotices . '">' . $newNotices . '</span>'.
- '<div class="dropdown-menu widget-notifications no-padding" style="width: 300px"><div class="slimScrollDiv" style="position: relative; overflow-y: scroll; overflow-x:hidden; width: auto; height: 250px;"><div class="notifications-list" id="main-navbar-notifications" style=" width: auto; height: 250px;">';
-
- foreach( $notices as $notice){
- $noticesUI .= '
- <div class="notification">
- <div class="notification-title text-primary">' . $notice->title . '</div>
- <div class="notification-description"><strong></strong>' . $notice->notifcationMessage . '</div>
- <div class="notification-ago">' . date("m/d/Y h:i:s A T", $notice->publishedtime) . '</div>
- <div class="notification-icon"></div>
- </div> <!-- / .notification -->
- ';
- }
+ $notifVisibility = "";
+ $countOfNotices = count( $notices);
+ $newNotices = 0;
+ if( Session::has("notice-count")){
+ $newNotices = $countOfNotices - Session::get("notice-count");
+ }
+ else
+ $newNotices = $countOfNotices;
+
+ if( !$newNotices)
+ $notifVisibility = "hide";
+
+ $noticesUI = '<li clas="dropdown" style="color:#fff; relative">' .
+ '<a href="#" class="dropdown-toggle notif-link" data-toggle="dropdown">' .
+ '<span class="glyphicon glyphicon-bell notif-bell"></span>' .
+ '<span class="notif-num ' . $notifVisibility . '" data-total-notices="' . $countOfNotices . '">' . $newNotices . '</span>'.
+ '<div class="dropdown-menu widget-notifications no-padding" style="width: 300px"><div class="slimScrollDiv" style="position: relative; overflow-y: scroll; overflow-x:hidden; width: auto; height: 250px;"><div class="notifications-list" id="main-navbar-notifications" style=" width: auto; height: 250px;">';
+
+ foreach( $notices as $notice){
$noticesUI .= '
- </div><div class="slimScrollBar" style="width: 7px; position: absolute; top: 0px; opacity: 0.4; display: none; border-radius: 7px; z-index: 99; right: 1px; height: 195.925px; background: rgb(0, 0, 0);"></div>
+ <div class="notification">
+ <div class="notification-title text-primary">' . $notice->title . '</div>
+ <div class="notification-description"><strong></strong>' . $notice->notificationMessage . '</div>
+ <div class="notification-ago">' . date("m/d/Y h:i:s A T", $notice->publishedTime) . '</div>
+ <div class="notification-icon"></div>
+ </div> <!-- / .notification -->
+ ';
+ }
+ $noticesUI .= '
+ </div><div class="slimScrollBar" style="width: 7px; position: absolute; top: 0px; opacity: 0.4; display: none; border-radius: 7px; z-index: 99; right: 1px; height: 195.925px; background: rgb(0, 0, 0);"></div>
- <div class="slimScrollRail" style="width: 7px; height: 100%; position: absolute; top: 0px; display: none; border-radius: 7px; opacity: 0.2; z-index: 90; right: 1px; background: rgb(51, 51, 51);"></div></div> <!-- / .notifications-list -->
- <a href="#" class="notifications-link">MORE NOTIFICATIONS</a>
- </div>'.
- '</a>'.
- '</li>';
+ <div class="slimScrollRail" style="width: 7px; height: 100%; position: absolute; top: 0px; display: none; border-radius: 7px; opacity: 0.2; z-index: 90; right: 1px; background: rgb(51, 51, 51);"></div></div> <!-- / .notifications-list -->
+ <a href="#" class="notifications-link">MORE NOTIFICATIONS</a>
+ </div>'.
+ '</a>'.
+ '</li>';
return $noticesUI;
}
@@ -306,5 +308,9 @@ class CommonUtilities
public static function get_all_notices(){
return Airavata::getAllNotifications( Session::get('authz-token'), Session::get("gateway_id"));
}
+
+ public static function get_notice_priorities(){
+ return NotificationPriority::$__names;
+ }
}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/b01d107d/app/views/admin/manage-notices.blade.php
----------------------------------------------------------------------
diff --git a/app/views/admin/manage-notices.blade.php b/app/views/admin/manage-notices.blade.php
index 2c0a84d..9413e5b 100644
--- a/app/views/admin/manage-notices.blade.php
+++ b/app/views/admin/manage-notices.blade.php
@@ -56,16 +56,16 @@
{{ $notice->title }}
</td>
<td>
- {{ $notice->notifcationMessage}}
+ {{ $notice->notificationMessage}}
</td>
- <td class="time" unix-time="{{ $notice->publishedtime/1000 }}">
- {{ $notice->publishedtime }}
+ <td @if( $notice->publishedTime != null) class="time" unix-time="{{ $notice->publishedTime/1000 }}" @endif>
+ Not Set
</td>
- <td class="time" unix-time="{{ $notice->expirationTime/1000 }}">
- {{ $notice->expirationTime }}
+ <td @if( $notice->expirationTime != null) class="time" unix-time="{{ $notice->expirationTime/1000 }}" @endif>
+ Not Set
</td>
- <td>
- {{-- $notice->priority --}}
+ <td class="priority">
+ {{ $priorities[$notice->priority] }}
</td>
@if( Session::has("admin"))
<td class="update-notice-icon">
@@ -87,12 +87,13 @@
</div>
</div>
+<input type="hidden" id="priorities-list" data-priorities="{{ htmlspecialchars(json_encode( $priorities ), ENT_QUOTES, 'UTF-8') }}"/>
<!-- Create a Notice -->
<div class="modal fade" id="create-notice" tabindex="-1" role="dialog" aria-labelledby="add-modal"
aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
- <form class="form-horizontal notice-form-values">
+ <form class="form-horizontal notice-form-values" action="javascript:0" method="POST">
<div class="modal-header">
<h3 class="text-center">Create a new Notice</h3>
</div>
@@ -100,7 +101,7 @@
</div>
<div class="modal-footer">
- <button type="submit" class="btn btn-primary submit-add-notice-form" class="btn btn-primary form-control" value="Submit">Create</button>
+ <input type="submit" class="btn btn-primary submit-add-notice-form" class="btn btn-primary form-control" value="Create"/>
</div>
</form>
@@ -111,7 +112,7 @@
aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
- <form class="form-horizontal notice-form-values">
+ <form class="form-horizontal notice-form-values" action="#" method="POST">
<input type="hidden" class="notice-notificationId" name="notificationId"/>
<div class="modal-header">
<h3 class="text-center">Update Notice</h3>
@@ -120,7 +121,7 @@
</div>
<div class="modal-footer">
- <button type="submit" class="btn btn-primary submit-update-notice-form" class="btn btn-primary form-control" value="Submit">Update</button>
+ <input type="submit" class="btn btn-primary submit-update-notice-form" class="btn btn-primary form-control" value="Update"/>
</div>
</form>
</div>
@@ -175,7 +176,7 @@
<label class="col-md-3 control-label">Publish Date</label>
<div class="col-md-6">
<div class='input-group date datetimepicker9'>
- <input type='text' class="form-control notice-publishedtime" id="publishedtime" required placeholder="From Date"/>
+ <input type='text' class="form-control notice-publishedTime" required placeholder="From Date"/>
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
@@ -186,7 +187,7 @@
<label class="col-md-3 control-label">Expiration Date</label>
<div class="col-md-6">
<div class='input-group date datetimepicker10'>
- <input type='text' class="form-control notice-expirationTime" placeholder="To Date" id="expirationTime"/>
+ <input type='text' class="form-control notice-expirationTime" placeholder="To Date"/>
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
@@ -197,10 +198,10 @@
<div class="form-group required">
<label class="col-md-3 control-label">Priority</label>
<div class="col-md-6">
- <select class="form-control notice-priority">
- <option>Low</option>
- <option>Normal</option>
- <option>Hight</option>
+ <select class="form-control notice-priority" name="priority">
+ @foreach( $priorities as $index => $priority)
+ <option value="{{ $index }}">{{ $priority}}</option>
+ @endforeach
</select>
</div>
</div>
@@ -230,8 +231,14 @@
var formInput = $("#update-notice .notice-" + key);
formInput.val( noticeData[key]);
}
- $("#update-notice .notice-publishedtime").val( moment( parseInt( $("#update-notice .notice-publishedtime").val()) ).format('MM/DD/YYYY hh:mm a') );
- $("#update-notice .notice-expirationTime").val( moment( parseInt( $("#update-notice .notice-expirationTime").val()) ).format('MM/DD/YYYY hh:mm a') );
+ var publishedTimeElem = $("#update-notice .notice-publishedTime");
+ if( publishedTimeElem.val() != "")
+ publishedTimeElem.val( moment( parseInt( publishedTimeElem.val())).format('MM/DD/YYYY hh:mm a') );
+
+ var expirationTimeElem = $("#update-notice .notice-expirationTime");
+ if( expirationTimeElem.val() != "")
+ expirationTimeElem.val( moment( parseInt( expirationTimeElem.val())).format('MM/DD/YYYY hh:mm a') );
+
setDateProperties("#update-notice");
$("#update-notice").modal( "show");
@@ -240,56 +247,70 @@
//Add notice submit
$("body").on("click", ".submit-add-notice-form", function(ev){
ev.preventDefault();
- $(this).html("<img src='{{URL::to('/')}}/assets/ajax-loader.gif'/>");
- var formData = $("#create-notice .notice-form-values").serialize();
- formData += "&publishedtime="+ moment( $("#publishedtime").val() ).utc().format('MM/DD/YYYY hh:mm a');
- formData += "&expirationTime="+ moment( $("#expirationTime").val() ).utc().format('MM/DD/YYYY hh:mm a');
- $.ajax({
- url: '{{URL::to('/')}}/add-notice',
- type: "post",
- data: formData,
- success: function( data){
- var addedNotice = $.parseJSON( data);
- $(".notices-list").prepend(
- "<tr class='alert alert-success' data-notice-info='" + data + "'>" + updateRow( addedNotice) + "</tr>"
- );
- $("#create-notice").modal("hide");
- },
- error: function(){
- $(".submit-add-notice-form").after("<span alert alert-danger'>An error has occurred. Please try again later.</span>");
- }
- }).complete( function(){
- $(".submit-add-notice-form").html("Submit");
- });
+ if( $('#create-notice .notice-form-values')[0].checkValidity() ){
+ $(this).html("<img src='{{URL::to('/')}}/assets/ajax-loader.gif'/>");
+ var formData = $("#create-notice .notice-form-values").serialize();
+ formData += "&publishedTime="+ moment( $("#create-notice .notice-publishedTime").val() ).utc().format('MM/DD/YYYY hh:mm a');
+ formData += "&expirationTime="+ moment( $("#create-notice .notice-expirationTime").val() ).utc().format('MM/DD/YYYY hh:mm a');
+ $.ajax({
+ url: '{{URL::to('/')}}/add-notice',
+ type: "post",
+ data: formData,
+ success: function( data){
+ var addedNotice = $.parseJSON( data);
+ $(".notices-list").prepend(
+ "<tr id='notice-'" + addedNotice.notificationId + "' class='alert alert-success' data-notice-info='" + data + "'>" + updateRow( addedNotice) + "</tr>"
+ );
+ $("#create-notice").modal("hide");
+ },
+ error: function(){
+ $(".submit-add-notice-form").after("<span alert alert-danger'>An error has occurred. Please try again later.</span>");
+ }
+ }).complete( function(){
+ $(".submit-add-notice-form").html("Submit");
+ });
+ }
});
//Update Notice Submit
$("body").on("click", ".submit-update-notice-form", function(ev){
ev.preventDefault();
- $(this).html("<img src='{{URL::to('/')}}/assets/ajax-loader.gif'/>");
- var formData = $("#update-notice .notice-form-values").serialize();
- formData += "&publishedtime="+ moment( $("#publishedtime").val() ).utc().format('MM/DD/YYYY hh:mm a');
- formData += "&expirationTime="+ moment( $("#expirationTime").val() ).utc().format('MM/DD/YYYY hh:mm a');
- $.ajax({
- url: '{{URL::to('/')}}/update-notice',
- type: "post",
- data: formData,
- success: function( data){
- var addedNotice = $.parseJSON( data);
- $("#notice-" + $("#update-notice .notice-notificationId").val() ).html(updateRow( addedNotice));
-
- $("#notice-" + $("#update-notice .notice-notificationId").val())
- .addClass("alert")
- .addClass("alert-success")
- .data("notice-info", data);
- $("#update-notice").modal("hide");
- },
- error: function(){
- $(".submit-update-notice-form").after("<span alert alert-danger'>An error has occurred. Please try again later.</span>");
- }
- }).complete( function(){
- $(".submit-add-notice-form").html("Update");
- });
+ if( $('#update-notice .notice-form-values')[0].checkValidity() ){
+ $(this).html("<img src='{{URL::to('/')}}/assets/ajax-loader.gif'/>");
+ var formData = $("#update-notice .notice-form-values").serialize();
+ var publishedTime = $("#update-notice .notice-publishedTime").val();
+ if( publishedTime != "")
+ formData += "&publishedTime="+ moment().utc( publishedTime).format('MM/DD/YYYY hh:mm a');
+ else
+ formData += "&publishedTime=";
+ var expirationTime = $("#ipdate-notice .notice-expirationTime").val();
+ if( expirationTime != "")
+ formData += "&expirationTime="+ moment( ).utc().format('MM/DD/YYYY hh:mm a');
+ else
+ formData += "&expirationTime=";
+
+ $.ajax({
+ url: '{{URL::to('/')}}/update-notice',
+ type: "post",
+ data: formData,
+ success: function( data){
+ var addedNotice = $.parseJSON( data);
+ elemToUpdate = $("#notice-" + $("#update-notice .notice-notificationId").val() );
+ elemToUpdate.html(updateRow( addedNotice));
+
+ elemToUpdate.addClass("alert").addClass("alert-success").data("notice-info", data);
+ $("#update-notice").modal("hide");
+
+ },
+ error: function(){
+ $(".submit-update-notice-form").after("<span alert alert-danger'>An error has occurred. Please try again later.</span>");
+ }
+ }).complete( function(){
+ $(".submit-update-notice-form").html("Update");
+ });
+ }
+ else
+ $('#update-notice .notice-form-values').submit();
});
$(".notices-list").on("click", ".delete-notice-icon", function(){
@@ -337,22 +358,23 @@
$( parent + " .datetimepicker10").data("DateTimePicker").setMinDate(e.date);
//hack to close calendar on selecting date
- $(this).find(".glyphicon-calendar").click();
+ //$(this).find(".glyphicon-calendar").click();
});
$( parent + " .datetimepicker10").on("dp.change", function (e) {
$( parent + " .datetimepicker9").data("DateTimePicker").setMaxDate(e.date);
//hack to close calendar on selecting date
- $(this).find(".glyphicon-calendar").click();
+ //$(this).find(".glyphicon-calendar").click();
});
}
function updateRow( noticeObject){
+ var prioritiesList = $("#priorities-list").data("priorities");
var row = "<td>" + noticeObject.title + "</td>" +
- "<td>" + noticeObject.notifcationMessage + "</td>" +
- "<td class='date'>" + convertTimestamp( noticeObject.publishedtime) + "</td>" +
- "<td class='date' unix-time='" + convertTimestamp( noticeObject.expirationTime ) + "'</td>" +
- "<td></td>"+
+ "<td>" + noticeObject.notificationMessage + "</td>" +
+ "<td class='date'>" + convertTimestamp( noticeObject.publishedTime) + "</td>" +
+ "<td class='date'>" + convertTimestamp( noticeObject.expirationTime ) + "'</td>" +
+ "<td>" + prioritiesList[noticeObject.priority] + "</td>"+
"<td class='update-notice-icon'><span class='glyphicon glyphicon-pencil'></span></td>"+
"<td class='delete-notice-icon'><span class='glyphicon glyphicon-trash'></span></td>";
return row;
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/b01d107d/public/js/time-conversion.js
----------------------------------------------------------------------
diff --git a/public/js/time-conversion.js b/public/js/time-conversion.js
index 459d6a4..a9683d6 100644
--- a/public/js/time-conversion.js
+++ b/public/js/time-conversion.js
@@ -2,6 +2,8 @@
//<td> elements should have the unix time as an attribute e.g. <td class="time" unix-time="423423423524"></td>
function convertTimestamp(timestamp) {
+ if( timestamp == null)
+ return;
if( timestamp.length <= 10)
timestamp = timestamp * 1000;// Convert the passed timestamp to milliseconds
var d = new Date( parseInt( timestamp) ),