diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/validation/valmulti.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/validation/valmulti.directive.js new file mode 100644 index 0000000000..1aca4c2528 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/common/directives/validation/valmulti.directive.js @@ -0,0 +1,27 @@ +(function () { + /** + * @ngdoc directive + * @name umbraco.directives.directive:multi + * @restrict A + * @description Used on input fields when you want to validate multiple fields at once. + **/ + function multi($parse, $rootScope) { + return { + restrict: 'A', + require: 'ngModel', + link: function (scope, elem, attrs, ngModelCtrl) { + var validate = $parse(attrs.multi)(scope); + ngModelCtrl.$viewChangeListeners.push(function () { + // ngModelCtrl.$setValidity('multi', validate()); + $rootScope.$broadcast('multi:valueChanged'); + }); + + var deregisterListener = scope.$on('multi:valueChanged', function (event) { + ngModelCtrl.$setValidity('multi', validate()); + }); + scope.$on('$destroy', deregisterListener); // optional, only required for $rootScope.$on + } + }; + } + angular.module('umbraco.directives.validation').directive('multi', ['$parse', '$rootScope', multi]); +})(); diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js index 089637521a..073682b59f 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js @@ -242,6 +242,44 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) { { id: id, culture: culture })), 'Failed to publish content with id ' + id); }, + /** + * @ngdoc method + * @name umbraco.resources.contentResource#getCultureAndDomains + * @methodOf umbraco.resources.contentResource + * + * @description + * Gets the culture and hostnames for a content item with the given Id + * + * ##usage + *
+ * contentResource.getCultureAndDomains(1234)
+ * .then(function(data) {
+ * alert(data.Domains, data.Language);
+ * });
+ *
+ * @param {Int} id the ID of the node to get the culture and domains for.
+ * @returns {Promise} resourcePromise object.
+ *
+ */
+ getCultureAndDomains: function (id) {
+ if (!id) {
+ throw "id cannot be null";
+ }
+ return umbRequestHelper.resourcePromise(
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "GetCultureAndDomains", { id: id })),
+ 'Failed to retreive culture and hostnames for ' + id);
+ },
+ saveLanguageAndDomains: function (model) {
+ return umbRequestHelper.resourcePromise(
+ $http.post(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "PostSaveLanguageAndDomains"),
+ model));
+ },
/**
* @ngdoc method
* @name umbraco.resources.contentResource#emptyRecycleBin
@@ -334,26 +372,26 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
*/
getById: function (id) {
return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "GetById",
- { id: id })),
- 'Failed to retrieve data for content id ' + id)
- .then(function(result) {
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "GetById",
+ { id: id })),
+ 'Failed to retrieve data for content id ' + id)
+ .then(function (result) {
return $q.when(umbDataFormatter.formatContentGetData(result));
});
},
getBlueprintById: function (id) {
return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "GetBlueprintById",
- [{ id: id }])),
- 'Failed to retrieve data for content id ' + id)
- .then(function(result) {
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "GetBlueprintById",
+ [{ id: id }])),
+ 'Failed to retrieve data for content id ' + id)
+ .then(function (result) {
return $q.when(umbDataFormatter.formatContentGetData(result));
});
},
@@ -410,15 +448,15 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
});
return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "GetByIds",
- idQuery)),
- 'Failed to retrieve data for content with multiple ids')
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "GetByIds",
+ idQuery)),
+ 'Failed to retrieve data for content with multiple ids')
.then(function (result) {
//each item needs to be re-formatted
- _.each(result, function(r) {
+ _.each(result, function (r) {
umbDataFormatter.formatContentGetData(r)
});
return $q.when(result);
@@ -461,13 +499,13 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
getScaffold: function (parentId, alias) {
return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "GetEmpty",
- [{ contentTypeAlias: alias }, { parentId: parentId }])),
- 'Failed to retrieve data for empty content item type ' + alias)
- .then(function(result) {
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "GetEmpty",
+ [{ contentTypeAlias: alias }, { parentId: parentId }])),
+ 'Failed to retrieve data for empty content item type ' + alias)
+ .then(function (result) {
return $q.when(umbDataFormatter.formatContentGetData(result));
});
},
@@ -475,13 +513,13 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) {
getBlueprintScaffold: function (parentId, blueprintId) {
return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "contentApiBaseUrl",
- "GetEmpty",
- [{ blueprintId: blueprintId }, { parentId: parentId }])),
- 'Failed to retrieve blueprint for id ' + blueprintId)
- .then(function(result) {
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "contentApiBaseUrl",
+ "GetEmpty",
+ [{ blueprintId: blueprintId }, { parentId: parentId }])),
+ 'Failed to retrieve blueprint for id ' + blueprintId)
+ .then(function (result) {
return $q.when(umbDataFormatter.formatContentGetData(result));
});
},
diff --git a/src/Umbraco.Web.UI.Client/src/views/content/assigndomain.html b/src/Umbraco.Web.UI.Client/src/views/content/assigndomain.html
index 0283459483..e12bac75a6 100644
--- a/src/Umbraco.Web.UI.Client/src/views/content/assigndomain.html
+++ b/src/Umbraco.Web.UI.Client/src/views/content/assigndomain.html
@@ -1,24 +1,70 @@
-UI magic to be done...
-