{"version":3,"sources":["dnapp.js","Controllers/mailinglist.subscribe.controller.js","Controllers/NewsListController.js","Controllers/resetUmbracoPasswordController.js","Controllers/search.controller.js","Controllers/socialShareController.js","Controllers/typeahead.controller.js","Libraries/angular-sanitize.js","Libraries/angular-truncate.js","Directives/loader.directive.js","Directives/validation-status-icon.directive.js","Services/core.service.js","Services/mailinglist.service.js","Services/NewsListService.js","Services/resetUmbracoPasswordService.js","Services/searchinternal.service.js"],"names":["angular","module","config","$compileProvider","$sceProvider","debugInfoEnabled","enabled","MailingListSubscribeController","mailingListService","ctrl","this","submitted","showEmailConfirm","subscriber","FirstName","LastName","Email","Lists","initLists","lists","length","push","toggleCheck","list","indexOf","splice","subscribe","form","$setSubmitted","$valid","Subscribe","$promise","then","response","mc","filter","ProviderId","error","console","warn","MailingListUnsubscribeController","$location","$scope","init","lists_init","provider_init","setProviders","email","getSubscriptions","providers","loop1","i","providerId","i2","provider","request","Subscriptions","subscriptions","s","f","find","l","Id","search","selected","result","initProvider","p","unSubscribe","UnSubscribe","toggleSubscription","unsubscribe","app","controller","newsListService","$filter","fixImages","novicell","responsiveLazyloadImage","image","vm","news","currentNews","hideButton","page","totalNews","$","data","nodeId","getImageDescription","showDescription","properties","value","getImagePhotographer","showPhotographer","loadMoreNews","getNews","Success","Data","merge","setTimeout","log","ErrorMessage","dataService","$sce","userName","newPassword","newPasswordConfirm","landingPage","success","message","messageType","isEmptyObject","g","checkGuid","userLogin","guid","requestPasswordReset","resetPassword","UserLogin","setNewPassword","isSame","internal","searchterm","results","contexts","totalResults","sortOrders","currentSort","initialLoad","vNodeId","vSearchTerm","vTotalResults","vAllContexts","pushState","contextChange","contextId","doesContextExist","removeContext","addContext","IsSelected","getItems","setSort","sortCode","getAllSelectedContexts","map","cat","Name","joined","getAllSelectedContextsForUrl","join","window","history","q","split","sortOrder","Search","Error","print","mailTo","text","url","location","href","bookmark","bookmarkURL","bookmarkTitle","document","title","addToHomescreen","isCompatible","autostart","startDelay","show","sidebar","addPanel","test","navigator","userAgent","opera","attr","rel","off","e","external","AddFavorite","alert","socialShare","type","shareUrl","width","height","open","searchField","searchResults","state","didSearch","id","searchAction","action","hide","removeClass","enter","keycode","typeahead","animate","scrollTop","addClass","TypeaheadSearch","undefined","$SanitizeProvider","svgEnabled","$get","$$sanitizeUri","extend","validElements","svgElements","html","buf","htmlParser","htmlSanitizeWriter","uri","isImage","enableSvg","isDefined","sanitizeText","chars","writer","noop","toMap","str","lowercaseKeys","obj","items","lowercase","handler","inertBodyElement","innerHTML","mXSSAttempts","$sanitizeMinErr","documentMode","stripCustomNsAttrs","node","firstChild","nodeType","start","nodeName","toLowerCase","attrToMap","attributes","textContent","nextNode","end","nextSibling","parentNode","removeChild","attrs","ii","name","encodeEntities","replace","SURROGATE_PAIR_REGEXP","hi","charCodeAt","low","NON_ALPHANUMERIC_REGEXP","uriValidator","ignoreCurrentElement","out","bind","tag","blockedElements","forEach","key","lkey","validAttrs","uriAttrs","voidElements","Node","ELEMENT_NODE","attrNode","attrName","removeAttributeNode","$$minErr","optionalEndTagBlockElements","optionalEndTagInlineElements","optionalEndTagElements","blockElements","inlineElements","htmlAttrs","svgAttrs","doc","implementation","createHTMLDocument","docElement","documentElement","getDocumentElement","bodyElements","getElementsByTagName","createElement","appendChild","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","linkyMinErr","isString","target","addText","addLink","isFunction","isObject","match","raw","index","substr","substring","input","isNaN","charAt","directive","$http","restrict","link","scope","elm","isLoading","pendingRequests","context","isredirecting","$watch","v","validationStatusIconDirective","getColor","valid","getIcon","validatorsEmpty","control","prop","$validators","hasOwnProperty","$$parentForm","$isEmpty","$viewValue","$modelValue","$required","$error","required","$touched","controllerAs","template","factory","Methods","getQueryString","regex","RegExp","exec","decodeURIComponent","$resource","method","params","isArray"],"mappings":"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","file":"angularmaster.min.js","sourcesContent":["'use strict';\r\n\r\nangular.module('dnapp', ['ngResource', 'ngSanitize', 'ngTruncate'])\r\n .config(['$compileProvider', '$sceProvider', function ($compileProvider, $sceProvider) {\r\n $compileProvider.debugInfoEnabled(false);\r\n $sceProvider.enabled(false);\r\n }]);","(function () {\r\n \"use strict\";\r\n\r\n var app = angular.module(\"dnapp\");\r\n\r\n function MailingListSubscribeController(mailingListService) {\r\n\r\n var ctrl = this;\r\n ctrl.submitted = false;\r\n ctrl.showEmailConfirm = false;\r\n\r\n ctrl.subscriber = {\r\n FirstName: \"\",\r\n LastName: \"\",\r\n Email: \"\",\r\n Lists: []\r\n }\r\n\r\n ctrl.initLists = function (lists) {\r\n ctrl.lists = lists;\r\n if (ctrl.lists.length == 1) {\r\n ctrl.subscriber.Lists.push(ctrl.lists[0]);\r\n }\r\n }\r\n\r\n ctrl.toggleCheck = function (list) {\r\n if (ctrl.subscriber.Lists.indexOf(list) === -1) {\r\n ctrl.subscriber.Lists.push(list);\r\n } else {\r\n ctrl.subscriber.Lists.splice(ctrl.subscriber.Lists.indexOf(list), 1);\r\n }\r\n };\r\n\r\n ctrl.subscribe = function (form) {\r\n form.$setSubmitted();\r\n if (!form.$valid) {\r\n return;\r\n }\r\n mailingListService.Subscribe(ctrl.subscriber)\r\n .$promise.then(function (response) {\r\n ctrl.submitted = true;\r\n var mc = response.filter(function (list) {\r\n return list.ProviderId == \"mailchimp\";\r\n })\r\n if (mc.length > 0) {\r\n ctrl.showEmailConfirm = true;\r\n }\r\n },\r\n function (error) { console.warn(\"bad things happened\", error); });\r\n }\r\n\r\n };\r\n app.controller(\"DN.MailingListSubscribeController\", [\"DN.MailingListService\", MailingListSubscribeController]);\r\n\r\n function MailingListUnsubscribeController(mailingListService, $location, $scope) {\r\n var ctrl = this;\r\n var lists = [];\r\n var provider = null;\r\n var lists_init = false;\r\n var provider_init = false;\r\n var email = $location.search().email;\r\n\r\n ctrl.selected = [];\r\n ctrl.result = [];\r\n ctrl.submitted = false;\r\n\r\n ctrl.initLists = function (l) {\r\n lists = l;\r\n lists_init = true;\r\n init();\r\n }\r\n\r\n ctrl.initProvider = function (p) {\r\n if (p && p.length > 0) { provider = p; }\r\n provider_init = true;\r\n init();\r\n }\r\n\r\n ctrl.unSubscribe = function () {\r\n if (ctrl.selected.length == 0) return;\r\n\r\n mailingListService.UnSubscribe({ Email: email, Lists: ctrl.selected })\r\n .$promise.then(function (response) {\r\n ctrl.submitted = true;\r\n ctrl.result = response;\r\n },\r\n function (error) { console.warn(\"bad things happened\", error); });\r\n }\r\n\r\n ctrl.toggleSubscription = function (list) {\r\n list.unsubscribe = !list.unsubscribe;\r\n ctrl.selected = ctrl.subscriptions.filter(function (s) {\r\n return s.unsubscribe;\r\n })\r\n };\r\n\r\n function init() {\r\n if (lists_init && provider_init) {\r\n if (lists.length > 0) { setProviders(); }\r\n if (email) { getSubscriptions(); }\r\n }\r\n }\r\n\r\n function setProviders() {\r\n var providers = [];\r\n loop1: for (var i = 0; i < lists.length; i++) {\r\n var providerId = lists[i].ProviderId;\r\n for (var i2 = 0; i2 < providers.length; i2++) {\r\n if (providers[i2] == providerId) {\r\n continue loop1;\r\n }\r\n }\r\n providers.push(providerId);\r\n }\r\n if (providers.length == 1) {\r\n provider = providers[0];\r\n }\r\n }\r\n\r\n function getSubscriptions() {\r\n var request = { email: email }\r\n if (provider) {\r\n request.providerId = provider;\r\n }\r\n mailingListService.Subscriptions(request).$promise.then(function (subscriptions) {\r\n if (lists.length > 0) {\r\n ctrl.subscriptions = subscriptions.filter(function (s) {\r\n var f = lists.find(function (l) {\r\n return s.Id == l.Id && s.ProviderId == l.ProviderId\r\n });\r\n return typeof f !== 'undefined';\r\n })\r\n } else {\r\n ctrl.subscriptions = subscriptions;\r\n }\r\n },\r\n function (error) {\r\n console.warn(\"bad things happened\", error);\r\n });\r\n\r\n }\r\n\r\n }\r\n app.controller(\"DN.MailingListUnsubscribeController\", [\"DN.MailingListService\", \"$location\", \"$scope\", MailingListUnsubscribeController]);\r\n\r\n\r\n})();","'use strict';\r\nangular\r\n .module('dnapp')\r\n .controller('DNDepartments.NewsListController', ['DNDepartments.NewsListService', '$filter', function (newsListService, $filter) {\r\n var vm = this;\r\n vm.news = [];\r\n vm.currentNews = 4;\r\n vm.hideButton = false;\r\n\r\n var page = 2;\r\n var totalNews = $('#js-total-news').data('total-news');\r\n var nodeId = $('#js-section-header').data('node-id');\r\n\r\n if (totalNews < 4) {\r\n vm.currentNews = totalNews;\r\n }\r\n\r\n if (vm.currentNews === totalNews) {\r\n vm.hideButton = true;\r\n }\r\n\r\n function fixImages() {\r\n novicell.responsiveLazyloadImage.image();\r\n }\r\n\r\n vm.getImageDescription = function (image) {\r\n if (image.showDescription) {\r\n return $filter('filter')(image.properties, 'description')[0].value;\r\n }\r\n return \"\";\r\n }\r\n\r\n vm.getImagePhotographer = function (image) {\r\n if (image.showPhotographer) {\r\n return $filter('filter')(image.properties, 'photographer')[0].value;\r\n }\r\n return \"\";\r\n }\r\n\r\n this.loadMoreNews = function () {\r\n newsListService.getNews({ nodeId: nodeId, page: page }).$promise.then(function (result) {\r\n if (result.Success) {\r\n page++;\r\n vm.currentNews += result.Data.length;\r\n\r\n $.merge(vm.news, result.Data);\r\n\r\n setTimeout(fixImages, 200);\r\n\r\n if (vm.currentNews === totalNews) {\r\n vm.hideButton = true;\r\n }\r\n } else {\r\n console.log(\"ERROR: \" + result.ErrorMessage);\r\n }\r\n });\r\n }\r\n }]);","'use strict';\r\nangular\r\n .module('dnapp')\r\n .controller('DNDepartments.ResetUmbracoController', ['DNDepartments.ResetUmbracoPasswordService', '$sce', '$location', function (dataService, $sce, $location) {\r\n var vm = this;\r\n vm.userName = null;\r\n\r\n vm.newPassword = null;\r\n vm.newPasswordConfirm = null;\r\n\r\n vm.landingPage = false;\r\n\r\n vm.success = false;\r\n vm.message = \"\";\r\n vm.messageType = \"\";\r\n\r\n if (!$.isEmptyObject($location.search()) && $location.search().l.length && $location.search().g.length) {\r\n dataService.checkGuid({ userLogin: $location.search().l, guid: $location.search().g }).$promise.then(function (response) {\r\n if (response.Success) {\r\n vm.landingPage = true;\r\n } else {\r\n if (response.ErrorMessage === \"Expired\") {\r\n vm.success = false;\r\n vm.message = \"INFO: Dit link er udløbet. Bestil et nyt.\";\r\n vm.messageType = \"reset-umb-password--info\";\r\n } else if (response.ErrorMessage === \"No guid\") {\r\n vm.success = false;\r\n vm.message = \"INFO: GUID findes ikke.\";\r\n vm.messageType = \"reset-umb-password--info\";\r\n }\r\n }\r\n });\r\n }\r\n\r\n vm.requestPasswordReset = function () {\r\n if (vm.userName != null && vm.userName.length) {\r\n dataService.resetPassword({ UserLogin: vm.userName }).$promise.then(function (response) {\r\n if (response.Success) {\r\n vm.success = true;\r\n vm.message = \"INFO: Vi har sendt dig et gendannelseslink.\";\r\n vm.messageType = \"reset-umb-password--success\";\r\n } else {\r\n vm.success = false;\r\n\r\n if (response.ErrorMessage != null && response.ErrorMessage !== \"ERROR: No User exists with ID -1\") {\r\n console.log(response.ErrorMessage);\r\n } else {\r\n vm.message = \"INFO: Ingen bruger med det brugernavn.\";\r\n vm.messageType = \"reset-umb-password--info\";\r\n }\r\n }\r\n });\r\n } else {\r\n vm.success = false;\r\n vm.message = \"INFO: Du har ikke udfyldt et brugernavn.\";\r\n vm.messageType = \"reset-umb-password--info\";\r\n }\r\n }\r\n\r\n vm.setNewPassword = function () {\r\n if (vm.newPassword != null && vm.newPassword.length && vm.newPasswordConfirm != null && vm.newPasswordConfirm.length) {\r\n var isSame = vm.newPassword === vm.newPasswordConfirm;\r\n\r\n if (isSame) {\r\n dataService.setNewPassword({ userLogin: $location.search().l, guid: $location.search().g, newPassword: vm.newPassword }).$promise.then(function (response) {\r\n if (response.Success) {\r\n vm.success = true;\r\n vm.message = \"INFO: Ny kode gemt. Gå til login\";\r\n vm.messageType = \"reset-umb-password--success\";\r\n } else {\r\n if (response.ErrorMessage === \"No guid\") {\r\n vm.success = false;\r\n vm.message = \"INFO: Der er sket en fejl. Prøv igen.\";\r\n vm.messageType = \"reset-umb-password--info\";\r\n }\r\n }\r\n });\r\n } else {\r\n vm.success = false;\r\n vm.message = \"INFO: Koderne er ikke ens.\";\r\n vm.messageType = \"reset-umb-password--info\";\r\n }\r\n } else {\r\n vm.success = false;\r\n vm.message = \"INFO: Du har ikke udfyldt et felt.\";\r\n vm.messageType = \"reset-umb-password--info\";\r\n }\r\n }\r\n }]);","'use strict';\r\nangular\r\n .module('dnapp')\r\n .controller('DN.SearchController', ['DN.InternalSearchService', '$filter', function (dataService, $filter) {\r\n var ctrl = this;\r\n var internal = {};\r\n\r\n // Internal variables\r\n var nodeId = 0;\r\n var searchterm = '';\r\n\r\n // Public variables\r\n ctrl.results = [];\r\n ctrl.contexts = [];\r\n ctrl.totalResults = 0;\r\n ctrl.sortOrders = ['Kontekst', 'A-Z', 'Z-A'];\r\n ctrl.currentSort = 0;\r\n ctrl.initialLoad = true;\r\n\r\n // Public functions\r\n ctrl.init = function (vNodeId, vSearchTerm, vTotalResults, vAllContexts) {\r\n nodeId = vNodeId;\r\n searchterm = vSearchTerm;\r\n ctrl.totalResults = vTotalResults;\r\n ctrl.contexts = vAllContexts;\r\n internal.pushState();\r\n }\r\n\r\n ctrl.contextChange = function (contextId) {\r\n if (ctrl.doesContextExist(contextId)) {\r\n ctrl.removeContext(contextId);\r\n } else {\r\n ctrl.addContext(contextId);\r\n }\r\n internal.pushState();\r\n }\r\n\r\n ctrl.addContext = function (contextId) {\r\n var result = $filter('filter')(ctrl.contexts, { Id: contextId })[0];\r\n result.IsSelected = true;\r\n internal.pushState();\r\n internal.getItems();\r\n }\r\n\r\n ctrl.removeContext = function (contextId) {\r\n var result = $filter('filter')(ctrl.contexts, { Id: contextId })[0];\r\n result.IsSelected = false;\r\n internal.pushState();\r\n internal.getItems();\r\n }\r\n\r\n ctrl.doesContextExist = function (contextId) {\r\n return ($filter('filter')(ctrl.contexts, { Id: contextId, IsSelected: true })).length;\r\n }\r\n\r\n ctrl.setSort = function (sortCode) {\r\n ctrl.currentSort = sortCode;\r\n internal.pushState();\r\n internal.getItems();\r\n }\r\n\r\n ctrl.getAllSelectedContexts = function () {\r\n var result = ($filter('filter')(ctrl.contexts, { IsSelected: true })).map(function (cat) { return cat.Name });\r\n\r\n var joined = 'alle';\r\n\r\n if (result.length < ctrl.contexts.length) {\r\n joined = result.length;\r\n }\r\n\r\n if (result.length === 0) {\r\n joined = 'alle';\r\n }\r\n\r\n return joined;\r\n }\r\n\r\n ctrl.getAllSelectedContextsForUrl = function() {\r\n return ($filter('filter')(ctrl.contexts, { IsSelected: true }))\r\n .map(function (cat) { return cat.Id }).join(',');\r\n }\r\n\r\n // Internal functions\r\n internal.pushState = function () {\r\n window.history.pushState('', '', \"?id=\" + nodeId + \"&search=\" + searchterm + \"&contexts=\" + ctrl.getAllSelectedContextsForUrl() + \"&sort=\" + ctrl.currentSort);\r\n }\r\n\r\n internal.getItems = function () {\r\n var data = {\r\n q: searchterm,\r\n nodeId: nodeId,\r\n contexts: ctrl.getAllSelectedContextsForUrl().split(','),\r\n sortOrder: ctrl.currentSort\r\n }\r\n\r\n dataService.Search(data)\r\n .$promise.then(function (response) {\r\n console.log(response);\r\n if (response.Success) {\r\n ctrl.results = response.Data;\r\n ctrl.totalResults = ctrl.results.length;\r\n ctrl.initialLoad = false;\r\n } else {\r\n console.log(response.Error);\r\n }\r\n });\r\n }\r\n }]);","'use strict';\r\nangular\r\n .module('dnapp')\r\n .controller('DNDepartments.SocialShareController', [function () {\r\n this.socialShare = function (type, text, shareUrl) {\r\n var url = \"\";\r\n var width = 0;\r\n var height = 0;\r\n\r\n if (type === 'Twitter') {\r\n url = \"https://twitter.com/intent/tweet?text=\";\r\n width = 500;\r\n height = 280;\r\n\r\n url += text + \" \" + shareUrl;\r\n }\r\n if (type === 'Facebook') {\r\n url = \"http://www.facebook.com/sharer/sharer.php?u=\";\r\n width = 500;\r\n height = 350;\r\n\r\n url += shareUrl;\r\n }\r\n if (type === 'Bookmark') {\r\n bookmark();\r\n return;\r\n }\r\n if (type === 'LinkedIn') {\r\n url = \"https://www.linkedin.com/shareArticle?mini=true&url=\";\r\n\r\n width = 500;\r\n height = 280;\r\n\r\n url += shareUrl + \"&title=\" + text;\r\n }\r\n if (type === 'GooglePlus') {\r\n url = \"https://plus.google.com/share?url=\";\r\n\r\n width = 500;\r\n height = 350;\r\n\r\n url += shareUrl;\r\n }\r\n if (type === \"MailTo\") {\r\n mailTo(text, shareUrl);\r\n return;\r\n }\r\n if (type === \"Print\") {\r\n print();\r\n return;\r\n }\r\n\r\n window.open(url, type, \"status = 1, height = \" + height + \", width = \" + width + \", resizable = 0\");\r\n }\r\n\r\n function print() {\r\n window.print();\r\n }\r\n\r\n function mailTo(text, url) {\r\n window.location.href = \"mailto:?subject=Fra Danmarks Naturfredningsforening: \" + text + \"&body=\" + url;\r\n }\r\n\r\n function bookmark() {\r\n var bookmarkURL = window.location.href;\r\n var bookmarkTitle = document.title;\r\n\r\n if ('addToHomescreen' in window && window.addToHomescreen.isCompatible) {\r\n // Mobile browsers\r\n addToHomescreen({ autostart: false, startDelay: 0 }).show(true);\r\n } else if (window.sidebar && window.sidebar.addPanel) {\r\n // Firefox version < 23\r\n window.sidebar.addPanel(bookmarkTitle, bookmarkURL, '');\r\n } else if ((window.sidebar && /Firefox/i.test(navigator.userAgent)) || (window.opera && window.print)) {\r\n // Firefox version >= 23 and Opera Hotlist\r\n $(this).attr({\r\n href: bookmarkURL,\r\n title: bookmarkTitle,\r\n rel: 'sidebar'\r\n }).off(e);\r\n return true;\r\n } else if (window.external && ('AddFavorite' in window.external)) {\r\n // IE Favorite\r\n window.external.AddFavorite(bookmarkURL, bookmarkTitle);\r\n } else {\r\n // Other browsers (mainly WebKit - Chrome/Safari)\r\n alert('Press ' + (/Mac/i.test(navigator.userAgent) ? 'Cmd' : 'Ctrl') + '+D to bookmark this page.');\r\n }\r\n\r\n return false;\r\n }\r\n }]);","'use strict';\r\nangular\r\n .module('dnapp')\r\n .controller('DN.TypeaheadController', ['DN.InternalSearchService', function (dataService) {\r\n var ctrl = this;\r\n\r\n // Internal variables\r\n\r\n // Controller variables\r\n ctrl.searchField = '';\r\n ctrl.searchResults = [];\r\n ctrl.state = 0;\r\n ctrl.didSearch = false;\r\n ctrl.nodeId = 0;\r\n\r\n // Functions\r\n ctrl.init = function(id) {\r\n ctrl.nodeId = id;\r\n }\r\n\r\n ctrl.searchAction = function (action) {\r\n switch (action) {\r\n case 0:\r\n ctrl.state = action;\r\n ctrl.searchField = '';\r\n ctrl.searchResults = [];\r\n ctrl.didSearch = false;\r\n $('#js-typeahead-backdrop').hide();\r\n $('body').removeClass('disable-scrolling');\r\n break;\r\n case 1:\r\n ctrl.state = action;\r\n break;\r\n }\r\n };\r\n\r\n ctrl.enter = function (keycode) {\r\n if (keycode === 27) {\r\n ctrl.searchAction(0);\r\n } else if (keycode === 13 && ctrl.searchField.length > 1) {\r\n document.location = \"/q?id=\" + ctrl.nodeId + '&search=' + ctrl.searchField;\r\n }\r\n };\r\n\r\n ctrl.typeahead = function () {\r\n if (ctrl.searchField.length > 1) {\r\n $('html, body').animate({ scrollTop: 0 }, 'slow');\r\n $('body').addClass('disable-scrolling');\r\n dataService.TypeaheadSearch({ q: ctrl.searchField, nodeId: ctrl.nodeId })\r\n .$promise.then(function (response) {\r\n if (response.Success) {\r\n ctrl.searchResults = response.Data;\r\n ctrl.didSearch = true;\r\n $('#js-typeahead-backdrop').show();\r\n } else {\r\n $('#js-typeahead-backdrop').hide();\r\n }\r\n });\r\n } else {\r\n ctrl.searchResults = [];\r\n ctrl.didSearch = false;\r\n $('#js-typeahead-backdrop').hide();\r\n }\r\n };\r\n }]);","/**\r\n * @license AngularJS v1.5.3\r\n * (c) 2010-2016 Google, Inc. http://angularjs.org\r\n * License: MIT\r\n */\r\n(function(window, angular, undefined) {'use strict';\r\n\r\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\r\n * Any commits to this file should be reviewed with security in mind. *\r\n * Changes to this file can potentially create security vulnerabilities. *\r\n * An approval from 2 Core members with history of modifying *\r\n * this file is required. *\r\n * *\r\n * Does the change somehow allow for arbitrary javascript to be executed? *\r\n * Or allows for someone to change the prototype of built-in objects? *\r\n * Or gives undesired access to variables likes document or window? *\r\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\r\n\r\nvar $sanitizeMinErr = angular.$$minErr('$sanitize');\r\n\r\n/**\r\n * @ngdoc module\r\n * @name ngSanitize\r\n * @description\r\n *\r\n * # ngSanitize\r\n *\r\n * The `ngSanitize` module provides functionality to sanitize HTML.\r\n *\r\n *\r\n *
\r\n *\r\n * See {@link ngSanitize.$sanitize `$sanitize`} for usage.\r\n */\r\n\r\n/**\r\n * @ngdoc service\r\n * @name $sanitize\r\n * @kind function\r\n *\r\n * @description\r\n * Sanitizes an html string by stripping all potentially dangerous tokens.\r\n *\r\n * The input is sanitized by parsing the HTML into tokens. All safe tokens (from a whitelist) are\r\n * then serialized back to properly escaped html string. This means that no unsafe input can make\r\n * it into the returned string.\r\n *\r\n * The whitelist for URL sanitization of attribute values is configured using the functions\r\n * `aHrefSanitizationWhitelist` and `imgSrcSanitizationWhitelist` of {@link ng.$compileProvider\r\n * `$compileProvider`}.\r\n *\r\n * The input may also contain SVG markup if this is enabled via {@link $sanitizeProvider}.\r\n *\r\n * @param {string} html HTML input.\r\n * @returns {string} Sanitized HTML.\r\n *\r\n * @example\r\n \r\n \r\n \r\n
\r\n Snippet: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
DirectiveHowSourceRendered
ng-bind-htmlAutomatically uses $sanitize
<div ng-bind-html=\"snippet\">
</div>
ng-bind-htmlBypass $sanitize by explicitly trusting the dangerous value\r\n
<div ng-bind-html=\"deliberatelyTrustDangerousSnippet()\">\r\n</div>
\r\n
ng-bindAutomatically escapes
<div ng-bind=\"snippet\">
</div>
\r\n
\r\n
\r\n \r\n it('should sanitize the html snippet by default', function() {\r\n expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()).\r\n toBe('

an html\\nclick here\\nsnippet

');\r\n });\r\n\r\n it('should inline raw snippet if bound to a trusted value', function() {\r\n expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).\r\n toBe(\"

an html\\n\" +\r\n \"click here\\n\" +\r\n \"snippet

\");\r\n });\r\n\r\n it('should escape snippet without any filter', function() {\r\n expect(element(by.css('#bind-default div')).getInnerHtml()).\r\n toBe(\"<p style=\\\"color:blue\\\">an html\\n\" +\r\n \"<em onmouseover=\\\"this.textContent='PWN3D!'\\\">click here</em>\\n\" +\r\n \"snippet</p>\");\r\n });\r\n\r\n it('should update', function() {\r\n element(by.model('snippet')).clear();\r\n element(by.model('snippet')).sendKeys('new text');\r\n expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()).\r\n toBe('new text');\r\n expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe(\r\n 'new text');\r\n expect(element(by.css('#bind-default div')).getInnerHtml()).toBe(\r\n \"new <b onclick=\\\"alert(1)\\\">text</b>\");\r\n });\r\n
\r\n
\r\n */\r\n\r\n\r\n/**\r\n * @ngdoc provider\r\n * @name $sanitizeProvider\r\n *\r\n * @description\r\n * Creates and configures {@link $sanitize} instance.\r\n */\r\nfunction $SanitizeProvider() {\r\n var svgEnabled = false;\r\n\r\n this.$get = ['$$sanitizeUri', function($$sanitizeUri) {\r\n if (svgEnabled) {\r\n angular.extend(validElements, svgElements);\r\n }\r\n return function(html) {\r\n var buf = [];\r\n htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) {\r\n return !/^unsafe:/.test($$sanitizeUri(uri, isImage));\r\n }));\r\n return buf.join('');\r\n };\r\n }];\r\n\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $sanitizeProvider#enableSvg\r\n * @kind function\r\n *\r\n * @description\r\n * Enables a subset of svg to be supported by the sanitizer.\r\n *\r\n *
\r\n *

By enabling this setting without taking other precautions, you might expose your\r\n * application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned\r\n * outside of the containing element and be rendered over other elements on the page (e.g. a login\r\n * link). Such behavior can then result in phishing incidents.

\r\n *\r\n *

To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg\r\n * tags within the sanitized content:

\r\n *\r\n *
\r\n *\r\n *
\r\n   *   .rootOfTheIncludedContent svg {\r\n   *     overflow: hidden !important;\r\n   *   }\r\n   *   
\r\n *
\r\n *\r\n * @param {boolean=} regexp New regexp to whitelist urls with.\r\n * @returns {boolean|ng.$sanitizeProvider} Returns the currently configured value if called\r\n * without an argument or self for chaining otherwise.\r\n */\r\n this.enableSvg = function(enableSvg) {\r\n if (angular.isDefined(enableSvg)) {\r\n svgEnabled = enableSvg;\r\n return this;\r\n } else {\r\n return svgEnabled;\r\n }\r\n };\r\n}\r\n\r\nfunction sanitizeText(chars) {\r\n var buf = [];\r\n var writer = htmlSanitizeWriter(buf, angular.noop);\r\n writer.chars(chars);\r\n return buf.join('');\r\n}\r\n\r\n\r\n// Regular Expressions for parsing tags and attributes\r\nvar SURROGATE_PAIR_REGEXP = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,\r\n // Match everything outside of normal chars and \" (quote character)\r\n NON_ALPHANUMERIC_REGEXP = /([^\\#-~ |!])/g;\r\n\r\n\r\n// Good source of info about elements and attributes\r\n// http://dev.w3.org/html5/spec/Overview.html#semantics\r\n// http://simon.html5.org/html-elements\r\n\r\n// Safe Void Elements - HTML5\r\n// http://dev.w3.org/html5/spec/Overview.html#void-elements\r\nvar voidElements = toMap(\"area,br,col,hr,img,wbr\");\r\n\r\n// Elements that you can, intentionally, leave open (and which close themselves)\r\n// http://dev.w3.org/html5/spec/Overview.html#optional-tags\r\nvar optionalEndTagBlockElements = toMap(\"colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr\"),\r\n optionalEndTagInlineElements = toMap(\"rp,rt\"),\r\n optionalEndTagElements = angular.extend({},\r\n optionalEndTagInlineElements,\r\n optionalEndTagBlockElements);\r\n\r\n// Safe Block Elements - HTML5\r\nvar blockElements = angular.extend({}, optionalEndTagBlockElements, toMap(\"address,article,\" +\r\n \"aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,\" +\r\n \"h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul\"));\r\n\r\n// Inline Elements - HTML5\r\nvar inlineElements = angular.extend({}, optionalEndTagInlineElements, toMap(\"a,abbr,acronym,b,\" +\r\n \"bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,\" +\r\n \"samp,small,span,strike,strong,sub,sup,time,tt,u,var\"));\r\n\r\n// SVG Elements\r\n// https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements\r\n// Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted.\r\n// They can potentially allow for arbitrary javascript to be executed. See #11290\r\nvar svgElements = toMap(\"circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,\" +\r\n \"hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,\" +\r\n \"radialGradient,rect,stop,svg,switch,text,title,tspan\");\r\n\r\n// Blocked Elements (will be stripped)\r\nvar blockedElements = toMap(\"script,style\");\r\n\r\nvar validElements = angular.extend({},\r\n voidElements,\r\n blockElements,\r\n inlineElements,\r\n optionalEndTagElements);\r\n\r\n//Attributes that have href and hence need to be sanitized\r\nvar uriAttrs = toMap(\"background,cite,href,longdesc,src,xlink:href\");\r\n\r\nvar htmlAttrs = toMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +\r\n 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +\r\n 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +\r\n 'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +\r\n 'valign,value,vspace,width');\r\n\r\n// SVG attributes (without \"id\" and \"name\" attributes)\r\n// https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes\r\nvar svgAttrs = toMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +\r\n 'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' +\r\n 'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' +\r\n 'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' +\r\n 'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' +\r\n 'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' +\r\n 'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' +\r\n 'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' +\r\n 'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' +\r\n 'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' +\r\n 'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' +\r\n 'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' +\r\n 'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' +\r\n 'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' +\r\n 'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true);\r\n\r\nvar validAttrs = angular.extend({},\r\n uriAttrs,\r\n svgAttrs,\r\n htmlAttrs);\r\n\r\nfunction toMap(str, lowercaseKeys) {\r\n var obj = {}, items = str.split(','), i;\r\n for (i = 0; i < items.length; i++) {\r\n obj[lowercaseKeys ? angular.lowercase(items[i]) : items[i]] = true;\r\n }\r\n return obj;\r\n}\r\n\r\nvar inertBodyElement;\r\n(function(window) {\r\n var doc;\r\n if (window.document && window.document.implementation) {\r\n doc = window.document.implementation.createHTMLDocument(\"inert\");\r\n } else {\r\n throw $sanitizeMinErr('noinert', \"Can't create an inert html document\");\r\n }\r\n var docElement = doc.documentElement || doc.getDocumentElement();\r\n var bodyElements = docElement.getElementsByTagName('body');\r\n\r\n // usually there should be only one body element in the document, but IE doesn't have any, so we need to create one\r\n if (bodyElements.length === 1) {\r\n inertBodyElement = bodyElements[0];\r\n } else {\r\n var html = doc.createElement('html');\r\n inertBodyElement = doc.createElement('body');\r\n html.appendChild(inertBodyElement);\r\n doc.appendChild(html);\r\n }\r\n})(window);\r\n\r\n/**\r\n * @example\r\n * htmlParser(htmlString, {\r\n * start: function(tag, attrs) {},\r\n * end: function(tag) {},\r\n * chars: function(text) {},\r\n * comment: function(text) {}\r\n * });\r\n *\r\n * @param {string} html string\r\n * @param {object} handler\r\n */\r\nfunction htmlParser(html, handler) {\r\n if (html === null || html === undefined) {\r\n html = '';\r\n } else if (typeof html !== 'string') {\r\n html = '' + html;\r\n }\r\n inertBodyElement.innerHTML = html;\r\n\r\n //mXSS protection\r\n var mXSSAttempts = 5;\r\n do {\r\n if (mXSSAttempts === 0) {\r\n throw $sanitizeMinErr('uinput', \"Failed to sanitize html because the input is unstable\");\r\n }\r\n mXSSAttempts--;\r\n\r\n // strip custom-namespaced attributes on IE<=11\r\n if (document.documentMode <= 11) {\r\n stripCustomNsAttrs(inertBodyElement);\r\n }\r\n html = inertBodyElement.innerHTML; //trigger mXSS\r\n inertBodyElement.innerHTML = html;\r\n } while (html !== inertBodyElement.innerHTML);\r\n\r\n var node = inertBodyElement.firstChild;\r\n while (node) {\r\n switch (node.nodeType) {\r\n case 1: // ELEMENT_NODE\r\n handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes));\r\n break;\r\n case 3: // TEXT NODE\r\n handler.chars(node.textContent);\r\n break;\r\n }\r\n\r\n var nextNode;\r\n if (!(nextNode = node.firstChild)) {\r\n if (node.nodeType == 1) {\r\n handler.end(node.nodeName.toLowerCase());\r\n }\r\n nextNode = node.nextSibling;\r\n if (!nextNode) {\r\n while (nextNode == null) {\r\n node = node.parentNode;\r\n if (node === inertBodyElement) break;\r\n nextNode = node.nextSibling;\r\n if (node.nodeType == 1) {\r\n handler.end(node.nodeName.toLowerCase());\r\n }\r\n }\r\n }\r\n }\r\n node = nextNode;\r\n }\r\n\r\n while (node = inertBodyElement.firstChild) {\r\n inertBodyElement.removeChild(node);\r\n }\r\n}\r\n\r\nfunction attrToMap(attrs) {\r\n var map = {};\r\n for (var i = 0, ii = attrs.length; i < ii; i++) {\r\n var attr = attrs[i];\r\n map[attr.name] = attr.value;\r\n }\r\n return map;\r\n}\r\n\r\n\r\n/**\r\n * Escapes all potentially dangerous characters, so that the\r\n * resulting string can be safely inserted into attribute or\r\n * element text.\r\n * @param value\r\n * @returns {string} escaped text\r\n */\r\nfunction encodeEntities(value) {\r\n return value.\r\n replace(/&/g, '&').\r\n replace(SURROGATE_PAIR_REGEXP, function(value) {\r\n var hi = value.charCodeAt(0);\r\n var low = value.charCodeAt(1);\r\n return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';\r\n }).\r\n replace(NON_ALPHANUMERIC_REGEXP, function(value) {\r\n return '&#' + value.charCodeAt(0) + ';';\r\n }).\r\n replace(//g, '>');\r\n}\r\n\r\n/**\r\n * create an HTML/XML writer which writes to buffer\r\n * @param {Array} buf use buf.join('') to get out sanitized html string\r\n * @returns {object} in the form of {\r\n * start: function(tag, attrs) {},\r\n * end: function(tag) {},\r\n * chars: function(text) {},\r\n * comment: function(text) {}\r\n * }\r\n */\r\nfunction htmlSanitizeWriter(buf, uriValidator) {\r\n var ignoreCurrentElement = false;\r\n var out = angular.bind(buf, buf.push);\r\n return {\r\n start: function(tag, attrs) {\r\n tag = angular.lowercase(tag);\r\n if (!ignoreCurrentElement && blockedElements[tag]) {\r\n ignoreCurrentElement = tag;\r\n }\r\n if (!ignoreCurrentElement && validElements[tag] === true) {\r\n out('<');\r\n out(tag);\r\n angular.forEach(attrs, function(value, key) {\r\n var lkey=angular.lowercase(key);\r\n var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');\r\n if (validAttrs[lkey] === true &&\r\n (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {\r\n out(' ');\r\n out(key);\r\n out('=\"');\r\n out(encodeEntities(value));\r\n out('\"');\r\n }\r\n });\r\n out('>');\r\n }\r\n },\r\n end: function(tag) {\r\n tag = angular.lowercase(tag);\r\n if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) {\r\n out('');\r\n }\r\n if (tag == ignoreCurrentElement) {\r\n ignoreCurrentElement = false;\r\n }\r\n },\r\n chars: function(chars) {\r\n if (!ignoreCurrentElement) {\r\n out(encodeEntities(chars));\r\n }\r\n }\r\n };\r\n}\r\n\r\n\r\n/**\r\n * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare\r\n * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want\r\n * to allow any of these custom attributes. This method strips them all.\r\n *\r\n * @param node Root element to process\r\n */\r\nfunction stripCustomNsAttrs(node) {\r\n if (node.nodeType === Node.ELEMENT_NODE) {\r\n var attrs = node.attributes;\r\n for (var i = 0, l = attrs.length; i < l; i++) {\r\n var attrNode = attrs[i];\r\n var attrName = attrNode.name.toLowerCase();\r\n if (attrName === 'xmlns:ns1' || attrName.indexOf('ns1:') === 0) {\r\n node.removeAttributeNode(attrNode);\r\n i--;\r\n l--;\r\n }\r\n }\r\n }\r\n\r\n var nextNode = node.firstChild;\r\n if (nextNode) {\r\n stripCustomNsAttrs(nextNode);\r\n }\r\n\r\n nextNode = node.nextSibling;\r\n if (nextNode) {\r\n stripCustomNsAttrs(nextNode);\r\n }\r\n}\r\n\r\n\r\n\r\n// define ngSanitize module and register $sanitize service\r\nangular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);\r\n\r\n/* global sanitizeText: false */\r\n\r\n/**\r\n * @ngdoc filter\r\n * @name linky\r\n * @kind function\r\n *\r\n * @description\r\n * Finds links in text input and turns them into html links. Supports `http/https/ftp/mailto` and\r\n * plain email address links.\r\n *\r\n * Requires the {@link ngSanitize `ngSanitize`} module to be installed.\r\n *\r\n * @param {string} text Input text.\r\n * @param {string} target Window (`_blank|_self|_parent|_top`) or named frame to open links in.\r\n * @param {object|function(url)} [attributes] Add custom attributes to the link element.\r\n *\r\n * Can be one of:\r\n *\r\n * - `object`: A map of attributes\r\n * - `function`: Takes the url as a parameter and returns a map of attributes\r\n *\r\n * If the map of attributes contains a value for `target`, it overrides the value of\r\n * the target parameter.\r\n *\r\n *\r\n * @returns {string} Html-linkified and {@link $sanitize sanitized} text.\r\n *\r\n * @usage\r\n \r\n *\r\n * @example\r\n \r\n \r\n
\r\n Snippet: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
FilterSourceRendered
linky filter\r\n
<div ng-bind-html=\"snippet | linky\">
</div>
\r\n
\r\n
\r\n
linky target\r\n
<div ng-bind-html=\"snippetWithSingleURL | linky:'_blank'\">
</div>
\r\n
\r\n
\r\n
linky custom attributes\r\n
<div ng-bind-html=\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\">
</div>
\r\n
\r\n
\r\n
no filter
<div ng-bind=\"snippet\">
</div>
\r\n \r\n \r\n angular.module('linkyExample', ['ngSanitize'])\r\n .controller('ExampleController', ['$scope', function($scope) {\r\n $scope.snippet =\r\n 'Pretty text with some links:\\n'+\r\n 'http://angularjs.org/,\\n'+\r\n 'mailto:us@somewhere.org,\\n'+\r\n 'another@somewhere.org,\\n'+\r\n 'and one more: ftp://127.0.0.1/.';\r\n $scope.snippetWithSingleURL = 'http://angularjs.org/';\r\n }]);\r\n \r\n \r\n it('should linkify the snippet with urls', function() {\r\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\r\n toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +\r\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\r\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);\r\n });\r\n\r\n it('should not linkify snippet without the linky filter', function() {\r\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).\r\n toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +\r\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\r\n expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);\r\n });\r\n\r\n it('should update', function() {\r\n element(by.model('snippet')).clear();\r\n element(by.model('snippet')).sendKeys('new http://link.');\r\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\r\n toBe('new http://link.');\r\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);\r\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())\r\n .toBe('new http://link.');\r\n });\r\n\r\n it('should work with the target property', function() {\r\n expect(element(by.id('linky-target')).\r\n element(by.binding(\"snippetWithSingleURL | linky:'_blank'\")).getText()).\r\n toBe('http://angularjs.org/');\r\n expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');\r\n });\r\n\r\n it('should optionally add custom attributes', function() {\r\n expect(element(by.id('linky-custom-attributes')).\r\n element(by.binding(\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\")).getText()).\r\n toBe('http://angularjs.org/');\r\n expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow');\r\n });\r\n \r\n \r\n */\r\nangular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {\r\n var LINKY_URL_REGEXP =\r\n /((ftp|https?):\\/\\/|(www\\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\\S*[^\\s.;,(){}<>\"\\u201d\\u2019]/i,\r\n MAILTO_REGEXP = /^mailto:/i;\r\n\r\n var linkyMinErr = angular.$$minErr('linky');\r\n var isString = angular.isString;\r\n\r\n return function(text, target, attributes) {\r\n if (text == null || text === '') return text;\r\n if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text);\r\n\r\n var match;\r\n var raw = text;\r\n var html = [];\r\n var url;\r\n var i;\r\n while ((match = raw.match(LINKY_URL_REGEXP))) {\r\n // We can not end in these as they are sometimes found at the end of the sentence\r\n url = match[0];\r\n // if we did not match ftp/http/www/mailto then assume mailto\r\n if (!match[2] && !match[4]) {\r\n url = (match[3] ? 'http://' : 'mailto:') + url;\r\n }\r\n i = match.index;\r\n addText(raw.substr(0, i));\r\n addLink(url, match[0].replace(MAILTO_REGEXP, ''));\r\n raw = raw.substring(i + match[0].length);\r\n }\r\n addText(raw);\r\n return $sanitize(html.join(''));\r\n\r\n function addText(text) {\r\n if (!text) {\r\n return;\r\n }\r\n html.push(sanitizeText(text));\r\n }\r\n\r\n function addLink(url, text) {\r\n var key;\r\n html.push('');\r\n addText(text);\r\n html.push('');\r\n }\r\n };\r\n}]);\r\n\r\n\r\n})(window, window.angular);\r\n","'use strict';\r\nangular.module('ngTruncate', [])\r\n .filter('truncate',\r\n function() {\r\n return function(input, chars) {\r\n if (isNaN(chars)) return input;\r\n chars = chars - 3;\r\n if (chars <= 0) return '...';\r\n if (input && input.length > chars) {\r\n input = input.substring(0, chars);\r\n\r\n while (input.charAt(input.length - 1) === ' ') {\r\n input = input.substr(0, input.length - 1);\r\n }\r\n\r\n return input + '...';\r\n }\r\n return input;\r\n };\r\n });","'use strict';\r\nangular\r\n .module('dnapp')\r\n .directive('loading', ['$http', function ($http) {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, elm, attrs) {\r\n scope.isLoading = function () {\r\n //console.log('isRedirecting:' + elm.context.attributes.isredirecting);\r\n return $http.pendingRequests.length > 0 || elm.context.attributes.isredirecting != null;\r\n };\r\n scope.$watch(scope.isLoading, function (v) {\r\n if (v) {\r\n elm.show();\r\n } else {\r\n elm.hide();\r\n }\r\n });\r\n }\r\n };\r\n }]);","\"use strict\";\r\n(function () {\r\n\r\n function validationStatusIconDirective() {\r\n\r\n function getColor(valid) {\r\n return valid ? \"green\" : \"red\";\r\n }\r\n\r\n function getIcon(valid) {\r\n return \"/dist/images/\" + (valid ? \"icon-verify.svg\" : \"icon-error.svg\");\r\n }\r\n\r\n function validatorsEmpty(control) {\r\n for (var prop in control.$validators) {\r\n //if (control.$validators.hasOwnProperty(prop) && prop !== \"required\") {\r\n if (control.$validators.hasOwnProperty(prop)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n\r\n return {\r\n restrict: \"E\",\r\n scope: {\r\n control: \"=ngControl\",\r\n form: \"=?\"\r\n },\r\n controller: ['$scope', function ($scope) {\r\n var ctrl = this;\r\n ctrl.getColor = getColor;\r\n ctrl.getIcon = getIcon;\r\n ctrl.show = function (control, form) {\r\n if (typeof (control) === \"undefined\" || control === null) { return false; }\r\n\r\n form = form || control.$$parentForm;\r\n\r\n if (control.$isEmpty(control.$viewValue) || control.$isEmpty(control.$modelValue)) {\r\n control.$required = control.$error.required;\r\n }\r\n\r\n if (!control.$touched) {\r\n return false;\r\n }\r\n if (control.$required) return true;\r\n\r\n\r\n //if (control.$error.required ||\r\n // control.$error.pattern ||\r\n // control.$error.date ||\r\n // control.$error.time ||\r\n // control.$error.min ||\r\n // control.$error.max) {\r\n // return true;\r\n //}\r\n //return control.$invalid;\r\n return !validatorsEmpty(control);\r\n };\r\n }],\r\n controllerAs: \"ctrl\",\r\n template: [\r\n \"\",\r\n ].join()\r\n };\r\n }\r\n\r\n var app = angular.module(\"dnapp\");\r\n app.directive(\"validationStatusIcon\", [validationStatusIconDirective]);\r\n})();","'use strict';\r\nangular\r\n .module('dnapp')\r\n .factory('DN.Core', [function () {\r\n function Methods() {\r\n // Place core functions here\r\n this.getQueryString = function (name) {\r\n name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\r\n var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^&#]*)\"),\r\n results = regex.exec(location.search);\r\n return results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\r\n }\r\n }\r\n\r\n return new Methods();\r\n }]);","'use strict';\r\nangular\r\n .module('dnapp')\r\n .factory('DN.MailingListService', ['$resource', function ($resource) {\r\n return $resource('/umbraco/api/MailingListApi/:action', {}, {\r\n Subscribe: { method: \"POST\", params: { action: \"Subscribe\" }, isArray: true },\r\n UnSubscribe: { method: \"POST\", params: { action: \"UnSubscribe\" }, isArray: true },\r\n Subscriptions: { method: \"GET\", params: { action: \"SubscriberLists\" }, isArray: true }\r\n });\r\n }]);","'use strict';\r\nangular\r\n .module('dnapp')\r\n .factory('DNDepartments.NewsListService', ['$resource', function ($resource) {\r\n return $resource('/umbraco/frontend/NewsApi/:action', {}, {\r\n getNews: { method: \"GET\", params: { action: \"GetNews\" } }\r\n });\r\n }]);","'use strict';\r\nangular\r\n .module('dnapp')\r\n .factory('DNDepartments.ResetUmbracoPasswordService', ['$resource', function ($resource) {\r\n return $resource('/umbraco/backend/ResetUmbracoPasswordApi/:action', {}, {\r\n resetPassword: { method: \"POST\", params: { action: \"ResetPassword\" } },\r\n checkGuid: { method: \"POST\", params: { action: \"CheckGuid\" } },\r\n setNewPassword: { method: \"POST\", params: { action: \"SetNewPassword\" } },\r\n });\r\n }]);","'use strict';\r\nangular\r\n .module('dnapp')\r\n .factory('DN.InternalSearchService', ['$resource', function ($resource) {\r\n return $resource('/umbraco/api/searchapi/:action', {}, {\r\n Search: { method: \"GET\", params: { action: \"Search\" } },\r\n TypeaheadSearch: { method: \"GET\", params: { action: \"TypeaheadSearch\" } }\r\n });\r\n }]);"]}