add utils angular module and navigation check factory

This commit is contained in:
Rafael Schouten
2014-10-14 00:25:46 +11:00
parent 5dd9879b96
commit 5e41865871
5 changed files with 47 additions and 4 deletions

View File

@@ -0,0 +1,37 @@
angular.module("admin.utils")
.factory "NavigationCheck", ($window, $rootScope) ->
callbacks = []
# Action for regular browser navigation.
onBeforeUnloadHandler = ($event) ->
message = getMessage()
if message
($event or $window.event).preventDefault()
message
# Action for angular navigation.
locationChangeStartHandler = ($event) ->
message = getMessage()
if message and not $window.confirm(message)
$event.stopPropagation() if $event.stopPropagation
$event.preventDefault() if $event.preventDefault
$event.cancelBubble = true
$event.returnValue = false
# Runs callback functions to retreive most recently added non-empty message.
getMessage = ->
message = null
message = callback() ? message for callback in callbacks
message
register = (callback) ->
callbacks.push callback
if $window.addEventListener
$window.addEventListener "beforeunload", onBeforeUnloadHandler
else
$window.onbeforeunload = onBeforeUnloadHandler
$rootScope.$on "$locationChangeStart", locationChangeStartHandler
return register: register

View File

@@ -0,0 +1 @@
angular.module("admin.utils", [])