Repository: airavata-php-gateway Updated Branches: refs/heads/develop 2fb0e4c29 -> 396346f6a
Notices User Side Implementation 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/396346f6 Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/396346f6 Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/396346f6 Branch: refs/heads/develop Commit: 396346f6a9b29909b37c95d5f9d04ce5349965ca Parents: 2fb0e4c Author: Nipurn Doshi <[email protected]> Authored: Fri Apr 29 14:59:47 2016 -0400 Committer: Nipurn Doshi <[email protected]> Committed: Fri Apr 29 14:59:47 2016 -0400 ---------------------------------------------------------------------- app/controllers/AccountController.php | 5 ++ app/controllers/AdminController.php | 2 +- app/libraries/AdminUtilities.php | 4 -- app/libraries/CommonUtilities.php | 80 ++++++++++++++++++++------- app/routes.php | 2 + app/views/admin/manage-notices.blade.php | 3 + app/views/layout/basic.blade.php | 9 +++ public/css/bootstrap.min.css | 26 +++++++-- 8 files changed, 102 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/396346f6/app/controllers/AccountController.php ---------------------------------------------------------------------- diff --git a/app/controllers/AccountController.php b/app/controllers/AccountController.php index ffc49b5..89b408b 100644 --- a/app/controllers/AccountController.php +++ b/app/controllers/AccountController.php @@ -438,4 +438,9 @@ class AccountController extends BaseController return 'result'; } + public function noticeSeenAck(){ + Session::put( "notice-count", Input::get("notice-count")); + Session::put("notice-seen", true); + } + } http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/396346f6/app/controllers/AdminController.php ---------------------------------------------------------------------- diff --git a/app/controllers/AdminController.php b/app/controllers/AdminController.php index 520ce5a..dae85b4 100644 --- a/app/controllers/AdminController.php +++ b/app/controllers/AdminController.php @@ -370,7 +370,7 @@ class AdminController extends BaseController { public function noticesView(){ Session::put("admin-nav", "notices"); $notices = array(); - $notices = array_reverse( AdminUtilities::get_all_notices() ); + $notices = array_reverse( CommonUtilities::get_all_notices() ); return View::make("admin/manage-notices", array("notices" => $notices)); } http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/396346f6/app/libraries/AdminUtilities.php ---------------------------------------------------------------------- diff --git a/app/libraries/AdminUtilities.php b/app/libraries/AdminUtilities.php index 8fb15ec..23994e0 100644 --- a/app/libraries/AdminUtilities.php +++ b/app/libraries/AdminUtilities.php @@ -111,10 +111,6 @@ class AdminUtilities } } - public static function get_all_notices(){ - return Airavata::getAllNotifications( Session::get('authz-token'), Session::get("gateway_id")); - } - public static function add_or_update_notice( $notifData, $update = false){ $notification = new Notification(); $notification->gatewayId = Session::get("gateway_id"); http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/396346f6/app/libraries/CommonUtilities.php ---------------------------------------------------------------------- diff --git a/app/libraries/CommonUtilities.php b/app/libraries/CommonUtilities.php index bfb1e5c..d5ce6c0 100644 --- a/app/libraries/CommonUtilities.php +++ b/app/libraries/CommonUtilities.php @@ -1,4 +1,5 @@ <?php +use Airavata\Model\Workspace\Notification; class CommonUtilities { @@ -115,20 +116,6 @@ class CommonUtilities ) ); -// if (Session::has("admin")) { -// $menus['Compute Resource'] = array -// ( -// array('label' => 'Register', 'url' => URL::to('/') . '/cr/create', "nav-active" => "compute-resource"), -// array('label' => 'Browse', 'url' => URL::to('/') . '/cr/browse', "nav-active" => "compute-resource") -// ); -// $menus['App Catalog'] = array -// ( -// array('label' => 'Module', 'url' => URL::to('/') . '/app/module', "nav-active" => "app-catalog"), -// array('label' => 'Interface', 'url' => URL::to('/') . '/app/interface', "nav-active" => "app-catalog"), -// array('label' => 'Deployment', 'url' => URL::to('/') . '/app/deployment', "nav-active" => "app-catalog") -// ); -// } - if( isset( Config::get('pga_config.portal')['jira-help'])) { $menus['Help'] = array(); @@ -153,7 +140,7 @@ class CommonUtilities <div class="container-fluid"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-2"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> @@ -165,7 +152,7 @@ class CommonUtilities </div> <!-- Collect the nav links, forms, and other content for toggling --> - <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> + <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-2"> <ul class="nav navbar-nav">'; @@ -212,10 +199,13 @@ class CommonUtilities if ("user-console" == Session::get("nav-active")) $active = " active "; } - echo '<li style="color:#fff; relative">' . - '<span class="glyphicon glyphicon-bell notif-bell"></span>' . - '<span class="notif-num" style="">2</span>' . - '</li>'; + + //notification bell + $notices = array(); + $notices = array_reverse( CommonUtilities::get_all_notices() ); + echo CommonUtilities::get_notices_ui( $notices); + + if (Session::has("admin") || Session::has("admin-read-only")) echo '<li class="' . $active . '"><a href="' . URL::to("/") . '/admin/dashboard"><span class="glyphicon glyphicon-user"></span>Admin Dashboard</a></li>'; // else @@ -238,6 +228,47 @@ class CommonUtilities echo '</div></div></nav>'; } + 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 --> + '; + } + $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>'; + + return $noticesUI; + } + /** * Add attributes to the HTTP header. */ @@ -266,5 +297,14 @@ class CommonUtilities throw new Exception('Error: Cannot open tokens database!'); } } + + /** + * Get All Notifications for a gateway + * @param + * + */ + public static function get_all_notices(){ + return Airavata::getAllNotifications( Session::get('authz-token'), Session::get("gateway_id")); + } } http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/396346f6/app/routes.php ---------------------------------------------------------------------- diff --git a/app/routes.php b/app/routes.php index 42b59f9..9391d52 100644 --- a/app/routes.php +++ b/app/routes.php @@ -293,6 +293,8 @@ Route::post("update-notice", "AdminController@updateNotice"); Route::post("delete-notice", "AdminController@deleteNotice"); +Route::post("notice-seen-ack", "AccountController@noticeSeenAck"); + //Super Admin Specific calls Route::post("admin/add-gateway", "AdminController@addGateway"); http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/396346f6/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 24c0a6e..2c0a84d 100644 --- a/app/views/admin/manage-notices.blade.php +++ b/app/views/admin/manage-notices.blade.php @@ -38,6 +38,7 @@ </div> @endif <h4 class="text-center">Existing Notices</h4> + <div class="table-responsive"> <table class="table table-bordered table-condensed" style="word-wrap: break-word;"> <tr> <th>Notice</th> @@ -56,6 +57,7 @@ </td> <td> {{ $notice->notifcationMessage}} + </td> <td class="time" unix-time="{{ $notice->publishedtime/1000 }}"> {{ $notice->publishedtime }} </td> @@ -79,6 +81,7 @@ @endforeach </tbody> </table> + </div> </div> </div> </div> http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/396346f6/app/views/layout/basic.blade.php ---------------------------------------------------------------------- diff --git a/app/views/layout/basic.blade.php b/app/views/layout/basic.blade.php index 575eca4..0895883 100755 --- a/app/views/layout/basic.blade.php +++ b/app/views/layout/basic.blade.php @@ -108,6 +108,15 @@ var fullName = "{{Session::get("user-profile")["firstname"] . " " . Session::get 'slow'); $(".seagrid-info").scrollTop( $(window).scrollTop() + 150); }) + + $(".notif-link").click( function(){ + $.ajax({ + type:"post", + url:"{{URL::to('/')}}/notice-seen-ack", + data:{"notice-count": $(".notif-num").data("total-notices")} + }); + $(".notif-num").addClass("fade"); + }) </script> <!-- Google Analytics for portal--> http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/396346f6/public/css/bootstrap.min.css ---------------------------------------------------------------------- diff --git a/public/css/bootstrap.min.css b/public/css/bootstrap.min.css index 715c62e..3e364dd 100644 --- a/public/css/bootstrap.min.css +++ b/public/css/bootstrap.min.css @@ -65,16 +65,34 @@ body{ } .notif-bell{ - margin:15px; + font-size:1.5em; } .notif-num{ background: red; border-radius: 20px; - padding: 7px; + padding: 5px; position: absolute; top: 0px; left: 50%; - font-size: 0.6em; - } \ No newline at end of file + color: #efefef; + } + + .notif-link, .notif-link:hover, .notif-link:active, .notif-link:focus{ + text-decoration: none; + cursor: default; + padding: 15px !important; + padding-bottom: 0 !important; + } + + +.widget-notifications .notification{position:relative;padding:7px 12px; text-decoration:none;} +.widget-notifications .notification+.notification{border-top:1px solid #e4e4e4} +.widget-notifications .notifications-list{position:relative} +.widget-notifications .notification-ago,.widget-notifications .notification-description,.widget-notifications .notification-title{display:block;margin-right:35px} +.widget-notifications .notification-title{font-size:11px;font-weight:700;padding-bottom:1px}.widget-notifications .notification-description{font-size:11px;color:#666}.widget-notifications .notification-ago{font-size:11px;font-style:italic;color:#bbb} +.widget-notifications .notification-icon{width:26px;height:26px;line-height:26px;text-align:center;border-radius:2px;position:absolute;top:50%;right:0;margin:-13px 12px 0 0;font-size:14px} +.widget-notifications .notifications-link{text-align:center;padding:8px 0!important;border-top:1px solid #e4e4e4;display:block;text-decoration:none!important;font-size:10px;font-weight:800;color:#999;line-height:18px!important;height:auto!important} +.widget-notifications .notifications-link:hover{background:#f4f4f4;color:#555; text-decoration:none;} +.widget-notifications:hover{text-decoration:none;} \ No newline at end of file
