From 0876004d9a2d1ff44c088cbde72bfc65f2207cfc Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 10 Jan 2018 16:00:32 +0100 Subject: [PATCH] U4-10803: remove dependency on angular-moment --- src/Umbraco.Web.UI.Client/bower.json | 7 +--- src/Umbraco.Web.UI.Client/src/app.js | 3 +- .../components/content/edit.controller.js | 1 + .../content/umbcontentnodeinfo.directive.js | 37 ++++++++----------- .../media/umbmedianodeinfo.directive.js | 30 +++++++++++++-- .../src/common/services/util.service.js | 17 ++++++++- .../content/umb-content-node-info.html | 12 +++--- .../components/media/umb-media-node-info.html | 4 +- src/Umbraco.Web/UI/JavaScript/JsInitialize.js | 1 - 9 files changed, 68 insertions(+), 44 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/bower.json b/src/Umbraco.Web.UI.Client/bower.json index 2991149c7e..991cf61fbb 100644 --- a/src/Umbraco.Web.UI.Client/bower.json +++ b/src/Umbraco.Web.UI.Client/bower.json @@ -31,8 +31,7 @@ "moment": "~2.10.3", "ace-builds": "^1.2.3", "clipboard": "1.7.1", - "font-awesome": "~4.2", - "angular-moment": "^1.0.1" + "font-awesome": "~4.2" }, "install": { @@ -69,10 +68,6 @@ "bower_components/angular-local-storage/dist/angular-local-storage.min.js.map" ], - "angular-moment": [ - "bower_components/angular-moment/angular-moment.min.js" - ], - "tinymce": [ "bower_components/tinymce/tinymce.min.js" ], diff --git a/src/Umbraco.Web.UI.Client/src/app.js b/src/Umbraco.Web.UI.Client/src/app.js index bf25b1fab9..0130124e4f 100644 --- a/src/Umbraco.Web.UI.Client/src/app.js +++ b/src/Umbraco.Web.UI.Client/src/app.js @@ -11,8 +11,7 @@ var app = angular.module('umbraco', [ 'ngMobile', 'tmh.dynamicLocale', 'ngFileUpload', - 'LocalStorageModule', - 'angularMoment' + 'LocalStorageModule' ]); var packages = angular.module("umbraco.packages", []); diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js index 774d3276f1..eaa87b8296 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js @@ -84,6 +84,7 @@ } function createButtons(content) { + $scope.page.buttonGroupState = "init"; var buttons = contentEditingHelper.configureContentEditorButtons({ create: $scope.page.isNew, content: content, diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbcontentnodeinfo.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbcontentnodeinfo.directive.js index 0f9a560ff2..dfae22c8be 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbcontentnodeinfo.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbcontentnodeinfo.directive.js @@ -1,7 +1,7 @@ (function () { 'use strict'; - function ContentNodeInfoDirective($timeout, $location, logResource, eventsService, userService, localizationService) { + function ContentNodeInfoDirective($timeout, $location, logResource, eventsService, userService, localizationService, dateHelper) { function link(scope, element, attrs, ctrl) { @@ -86,7 +86,7 @@ // get current backoffice user and format dates userService.getCurrentUser().then(function (currentUser) { angular.forEach(data.items, function(item) { - item.timestampFormatted = getLocalDate(item.timestamp, currentUser.locale, 'LLL'); + item.timestampFormatted = dateHelper.getLocalDate(item.timestamp, currentUser.locale, 'LLL'); }); }); @@ -199,31 +199,24 @@ function ucfirst(string) { return string.charAt(0).toUpperCase() + string.slice(1); - } - - function getLocalDate(date, culture, format) { - if (date) { - var dateVal; - var serverOffset = Umbraco.Sys.ServerVariables.application.serverTimeOffset; - var localOffset = new Date().getTimezoneOffset(); - var serverTimeNeedsOffsetting = -serverOffset !== localOffset; - if (serverTimeNeedsOffsetting) { - dateVal = dateHelper.convertToLocalMomentTime(date, serverOffset); - } else { - dateVal = moment(date, 'YYYY-MM-DD HH:mm:ss'); - } - return dateVal.locale(culture).format(format); - } } function formatDatesToLocal() { // get current backoffice user and format dates userService.getCurrentUser().then(function (currentUser) { - scope.node.createDateFormatted = getLocalDate(scope.node.createDate, currentUser.locale, 'LLL'); - scope.node.releaseDateMonth = scope.node.releaseDate ? ucfirst(getLocalDate(scope.node.releaseDate, currentUser.locale, 'MMMM')) : null; - scope.node.releaseDateDay = scope.node.releaseDate ? ucfirst(getLocalDate(scope.node.releaseDate, currentUser.locale, 'dddd')) : null; - scope.node.removeDateMonth = scope.node.removeDate ? ucfirst(getLocalDate(scope.node.removeDate, currentUser.locale, 'MMMM')) : null; - scope.node.removeDateDay = scope.node.removeDate ? ucfirst(getLocalDate(scope.node.removeDate, currentUser.locale, 'dddd')) : null; + scope.node.createDateFormatted = dateHelper.getLocalDate(scope.node.createDate, currentUser.locale, 'LLL'); + + scope.node.releaseDateYear = scope.node.releaseDate ? ucfirst(dateHelper.getLocalDate(scope.node.releaseDate, currentUser.locale, 'YYYY')) : null; + scope.node.releaseDateMonth = scope.node.releaseDate ? ucfirst(dateHelper.getLocalDate(scope.node.releaseDate, currentUser.locale, 'MMMM')) : null; + scope.node.releaseDateDayNumber = scope.node.releaseDate ? ucfirst(dateHelper.getLocalDate(scope.node.releaseDate, currentUser.locale, 'DD')) : null; + scope.node.releaseDateDay = scope.node.releaseDate ? ucfirst(dateHelper.getLocalDate(scope.node.releaseDate, currentUser.locale, 'dddd')) : null; + scope.node.releaseDateTime = scope.node.releaseDate ? ucfirst(dateHelper.getLocalDate(scope.node.releaseDate, currentUser.locale, 'HH:mm')) : null; + + scope.node.removeDateYear = scope.node.removeDate ? ucfirst(dateHelper.getLocalDate(scope.node.removeDate, currentUser.locale, 'YYYY')) : null; + scope.node.removeDateMonth = scope.node.removeDate ? ucfirst(dateHelper.getLocalDate(scope.node.removeDate, currentUser.locale, 'MMMM')) : null; + scope.node.removeDateDayNumber = scope.node.removeDate ? ucfirst(dateHelper.getLocalDate(scope.node.removeDate, currentUser.locale, 'DD')) : null; + scope.node.removeDateDay = scope.node.removeDate ? ucfirst(dateHelper.getLocalDate(scope.node.removeDate, currentUser.locale, 'dddd')) : null; + scope.node.removeDateTime = scope.node.removeDate ? ucfirst(dateHelper.getLocalDate(scope.node.removeDate, currentUser.locale, 'HH:mm')) : null; }); } diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/media/umbmedianodeinfo.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/media/umbmedianodeinfo.directive.js index dd9c3e71e2..1aa026cb3a 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/media/umbmedianodeinfo.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/media/umbmedianodeinfo.directive.js @@ -1,20 +1,28 @@ (function () { 'use strict'; - function MediaNodeInfoDirective($timeout, $location) { + function MediaNodeInfoDirective($timeout, $location, eventsService, userService, dateHelper) { function link(scope, element, attrs, ctrl) { + var evts = []; + function onInit() { - scope.allowOpenMediaType = true; - // get document type details scope.mediaType = scope.node.contentType; - // get node url scope.nodeUrl = scope.node.mediaLink; + // make sure dates are formatted to the user's locale + formatDatesToLocal(); + } + function formatDatesToLocal() { + // get current backoffice user and format dates + userService.getCurrentUser().then(function (currentUser) { + scope.node.createDateFormatted = dateHelper.getLocalDate(scope.node.createDate, currentUser.locale, 'LLL'); + scope.node.updateDateFormatted = dateHelper.getLocalDate(scope.node.updateDate, currentUser.locale, 'LLL'); + }); } scope.openMediaType = function (mediaType) { @@ -22,6 +30,20 @@ var url = "/settings/mediaTypes/edit/" + mediaType.id; $location.path(url); }; + + // watch for content updates - reload content when node is saved, published etc. + scope.$watch('node.updateDate', function(newValue, oldValue){ + if(!newValue) { return; } + if(newValue === oldValue) { return; } + formatDatesToLocal(); + }); + + //ensure to unregister from all events! + scope.$on('$destroy', function () { + for (var e in evts) { + eventsService.unsubscribe(evts[e]); + } + }); onInit(); diff --git a/src/Umbraco.Web.UI.Client/src/common/services/util.service.js b/src/Umbraco.Web.UI.Client/src/common/services/util.service.js index 067ef60492..d6847bd30c 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/util.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/util.service.js @@ -90,6 +90,21 @@ function dateHelper() { //create a moment with the iso format which will include the offset with the correct time // then convert it to local time return moment.parseZone(isoFormat).local(); + }, + + getLocalDate: function (date, culture, format) { + if (date) { + var dateVal; + var serverOffset = Umbraco.Sys.ServerVariables.application.serverTimeOffset; + var localOffset = new Date().getTimezoneOffset(); + var serverTimeNeedsOffsetting = -serverOffset !== localOffset; + if (serverTimeNeedsOffsetting) { + dateVal = dateHelper.convertToLocalMomentTime(date, serverOffset); + } else { + dateVal = moment(date, 'YYYY-MM-DD HH:mm:ss'); + } + return dateVal.locale(culture).format(format); + } } }; @@ -583,7 +598,7 @@ function queryStrings($window) { var pl = /\+/g; // Regex for replacing addition symbol with a space var search = /([^&=]+)=?([^&]*)/g; - var decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }; + var decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }; return { diff --git a/src/Umbraco.Web.UI.Client/src/views/components/content/umb-content-node-info.html b/src/Umbraco.Web.UI.Client/src/views/components/content/umb-content-node-info.html index 1bb6e77840..564d50951e 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/content/umb-content-node-info.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/content/umb-content-node-info.html @@ -109,9 +109,9 @@
-
{{node.releaseDateMonth}} {{node.releaseDate | amDateFormat:'YYYY'}}
-
{{node.releaseDate | amDateFormat:'DD'}}
-
{{node.releaseDateDay}} {{node.releaseDate | amDateFormat:'HH:mm'}}
+
{{node.releaseDateMonth}} {{node.releaseDateYear}}
+
{{node.releaseDateDayNumber}}
+
{{node.releaseDateDay}} {{node.releaseDateTime}}
Set date @@ -141,9 +141,9 @@
-
{{node.removeDateMonth}} {{node.removeDate | amDateFormat:'YYYY'}}
-
{{node.removeDate | amDateFormat:'DD'}}
-
{{node.removeDateDay}} {{node.removeDate | amDateFormat:'HH:mm'}}
+
{{node.removeDateMonth}} {{node.removeDateYear}}
+
{{node.removeDateDayNumber}}
+
{{node.removeDateDay}} {{node.removeDateTime}}
Set date diff --git a/src/Umbraco.Web.UI.Client/src/views/components/media/umb-media-node-info.html b/src/Umbraco.Web.UI.Client/src/views/components/media/umb-media-node-info.html index 0bd9762e4e..3a01d735e7 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/media/umb-media-node-info.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/media/umb-media-node-info.html @@ -30,11 +30,11 @@ - {{node.createDate | amDateFormat:'MMMM Do YYYY, HH:mm'}} by {{ node.owner.name }} + {{node.createDateFormatted}} by {{ node.owner.name }} - {{node.updateDate | amDateFormat:'MMMM Do YYYY, HH:mm'}} + {{node.updateDateFormatted}} diff --git a/src/Umbraco.Web/UI/JavaScript/JsInitialize.js b/src/Umbraco.Web/UI/JavaScript/JsInitialize.js index 9ba625df65..961fb8e54e 100644 --- a/src/Umbraco.Web/UI/JavaScript/JsInitialize.js +++ b/src/Umbraco.Web/UI/JavaScript/JsInitialize.js @@ -4,7 +4,6 @@ 'lib/underscore/underscore-min.js', 'lib/moment/moment-with-locales.js', - 'lib/angular-moment/angular-moment.min.js', 'lib/jquery-ui/jquery-ui.min.js', 'lib/jquery-ui-touch-punch/jquery.ui.touch-punch.js',