check for propertyForm to prevent js error in content type editor

This commit is contained in:
Mads Rasmussen
2015-09-28 15:23:22 +02:00
parent ac42f1c1d8
commit 5abcd01ffb

View File

@@ -2,16 +2,16 @@
* @ngdoc controller
* @name Umbraco.Editors.FileUploadController
* @function
*
*
* @description
* The controller for the file upload property editor. It is important to note that the $scope.model.value
* doesn't necessarily depict what is saved for this property editor. $scope.model.value can be empty when we
* doesn't necessarily depict what is saved for this property editor. $scope.model.value can be empty when we
* are submitting files because in that case, we are adding files to the fileManager which is what gets peristed
* on the server. However, when we are clearing files, we are setting $scope.model.value to "{clearFiles: true}"
* to indicate on the server that we are removing files for this property. We will keep the $scope.model.value to
* to indicate on the server that we are removing files for this property. We will keep the $scope.model.value to
* be the name of the file selected (if it is a newly selected file) or keep it to be it's original value, this allows
* for the editors to check if the value has changed and to re-bind the property if that is true.
*
*
*/
function fileUploadController($scope, $element, $compile, imageHelper, fileManager, umbRequestHelper, mediaHelper) {
@@ -21,11 +21,14 @@ function fileUploadController($scope, $element, $compile, imageHelper, fileManag
fileManager.setFiles($scope.model.alias, []);
//clear the current files
$scope.files = [];
if ($scope.propertyForm.fileCount) {
//this is required to re-validate
$scope.propertyForm.fileCount.$setViewValue($scope.files.length);
if($scope.propertyForm) {
if ($scope.propertyForm.fileCount) {
//this is required to re-validate
$scope.propertyForm.fileCount.$setViewValue($scope.files.length);
}
}
}
/** this method is used to initialize the data and to re-initialize it if the server value is changed */
@@ -37,7 +40,7 @@ function fileUploadController($scope, $element, $compile, imageHelper, fileManag
index = 1;
}
//this is used in order to tell the umb-single-file-upload directive to
//this is used in order to tell the umb-single-file-upload directive to
//rebuild the html input control (and thus clearing the selected file) since
//that is the only way to manipulate the html for the file input control.
$scope.rebuildInput = {
@@ -95,7 +98,9 @@ function fileUploadController($scope, $element, $compile, imageHelper, fileManag
//reset to original value
$scope.model.value = $scope.originalValue;
//this is required to re-validate
$scope.propertyForm.fileCount.$setViewValue($scope.files.length);
if($scope.propertyForm) {
$scope.propertyForm.fileCount.$setViewValue($scope.files.length);
}
}
});
@@ -127,12 +132,12 @@ function fileUploadController($scope, $element, $compile, imageHelper, fileManag
//listen for when the model value has changed
$scope.$watch("model.value", function (newVal, oldVal) {
//cannot just check for !newVal because it might be an empty string which we
//cannot just check for !newVal because it might be an empty string which we
//want to look for.
if (newVal !== null && newVal !== undefined && newVal !== oldVal) {
//now we need to check if we need to re-initialize our structure which is kind of tricky
// since we only want to do that if the server has changed the value, not if this controller
// has changed the value. There's only 2 scenarios where we change the value internall so
// has changed the value. There's only 2 scenarios where we change the value internall so
// we know what those values can be, if they are not either of them, then we'll re-initialize.
if (newVal.clearFiles !== true && newVal !== $scope.originalValue && !newVal.selectedFiles) {
@@ -158,13 +163,13 @@ angular.module("umbraco")
"imagesApiBaseUrl",
"GetBigThumbnail",
[{ originalImagePath: property.value }]);
return thumbnailUrl;
}
else {
return null;
}
}
else {
return property.value;