Repository: airavata-php-gateway
Updated Branches:
  refs/heads/develop cfdd5399d -> a84b53a98


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/develop
Commit: b01d107d708e873838300587caefa67d3bb74f1c
Parents: f9fc016
Author: Nipurn Doshi <[email protected]>
Authored: Tue May 3 11:25:18 2016 -0400
Committer: Nipurn Doshi <[email protected]>
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) ),

Reply via email to