@@ -52,13 +51,17 @@
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/linkpicker/linkpicker.html b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/linkpicker/linkpicker.html
index 704b61e333..6ba2ec0270 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/linkpicker/linkpicker.html
+++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/linkpicker/linkpicker.html
@@ -23,6 +23,7 @@
placeholder="@general_url"
class="umb-property-editor umb-textstring"
ng-model="model.target.url"
+ umb-auto-focus
ng-disabled="model.target.id || model.target.udi" />
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macroparameterpicker/macroparameterpicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macroparameterpicker/macroparameterpicker.controller.js
new file mode 100644
index 0000000000..5b81cb947d
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macroparameterpicker/macroparameterpicker.controller.js
@@ -0,0 +1,127 @@
+/**
+ * @ngdoc controller
+ * @name Umbraco.Editors.MacroParameterPickerController
+ * @function
+ *
+ * @description
+ * The controller for the content type editor macro parameter dialog
+ */
+
+(function() {
+ "use strict";
+
+ function MacroParameterController($scope, $filter, macroResource, localizationService, editorService) {
+
+ var vm = this;
+
+ vm.searchTerm = "";
+ vm.parameterEditors = [];
+ vm.loading = false;
+ vm.labels = {};
+
+ vm.filterItems = filterItems;
+ vm.showDetailsOverlay = showDetailsOverlay;
+ vm.hideDetailsOverlay = hideDetailsOverlay;
+ vm.pickParameterEditor = pickParameterEditor;
+ vm.close = close;
+
+ function init() {
+ setTitle();
+ getGroupedParameterEditors();
+ }
+
+ function setTitle() {
+ if (!$scope.model.title) {
+ localizationService.localize("defaultdialogs_selectEditor")
+ .then(function(data){
+ $scope.model.title = data;
+ });
+ }
+ }
+
+ function getGroupedParameterEditors() {
+
+ vm.loading = true;
+
+ macroResource.getGroupedParameterEditors().then(function (data) {
+ vm.parameterEditors = data;
+ vm.loading = false;
+ }, function () {
+ vm.loading = false;
+ });
+
+ }
+
+ function filterItems() {
+ // clear item details
+ $scope.model.itemDetails = null;
+
+ if (vm.searchTerm) {
+
+ var regex = new RegExp(vm.searchTerm, "i");
+
+ var parameterEditors = filterCollection(vm.parameterEditors, regex);
+
+ var totalResults = _.reduce(_.pluck(parameterEditors, 'count'), (m, n) => m + n, 0);
+
+ vm.filterResult = {
+ parameterEditors: parameterEditors,
+ totalResults: totalResults
+ };
+ } else {
+ vm.filterResult = null;
+ }
+ }
+
+ function filterCollection(collection, regex) {
+ return _.map(_.keys(collection), function (key) {
+
+ var filteredEditors = $filter('filter')(collection[key], function (editor) {
+ return regex.test(editor.name) || regex.test(editor.alias);
+ });
+
+ return {
+ group: key,
+ count: filteredEditors.length,
+ parameterEditors: filteredEditors
+ }
+ });
+ }
+
+ function showDetailsOverlay(property) {
+
+ var propertyDetails = {};
+ propertyDetails.icon = property.icon;
+ propertyDetails.title = property.name;
+
+ $scope.model.itemDetails = propertyDetails;
+ }
+
+ function hideDetailsOverlay() {
+ $scope.model.itemDetails = null;
+ }
+
+ function pickParameterEditor(selectedParameterEditor) {
+
+ console.log("pickParameterEditor", selectedParameterEditor);
+ console.log("$scope.model", $scope.model);
+
+ $scope.model.parameter.editor = selectedParameterEditor.alias;
+ $scope.model.parameter.dataTypeName = selectedParameterEditor.name;
+ $scope.model.parameter.dataTypeIcon = selectedParameterEditor.icon;
+
+ $scope.model.submit($scope.model);
+ }
+
+ function close() {
+ if ($scope.model.close) {
+ $scope.model.close();
+ }
+ }
+
+ init();
+ }
+
+ angular.module("umbraco").controller("Umbraco.Editors.MacroParameterPickerController", MacroParameterController);
+
+})();
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macroparameterpicker/macroparameterpicker.html b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macroparameterpicker/macroparameterpicker.html
new file mode 100644
index 0000000000..9f2b56401d
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macroparameterpicker/macroparameterpicker.html
@@ -0,0 +1,106 @@
+
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macropicker/macropicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macropicker/macropicker.controller.js
index aa63f2d6d6..dfc77f786c 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macropicker/macropicker.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macropicker/macropicker.controller.js
@@ -41,8 +41,6 @@ function MacroPickerController($scope, entityResource, macroResource, umbPropEdi
macroResource.getMacroParameters($scope.model.selectedMacro.id)
.then(function (data) {
-
-
//go to next page if there are params otherwise we can just exit
if (!angular.isArray(data) || data.length === 0) {
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macropicker/macropicker.html b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macropicker/macropicker.html
index 66c64657a9..fc1bec4ec1 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macropicker/macropicker.html
+++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/macropicker/macropicker.html
@@ -32,10 +32,10 @@
-
-
+
- {{ availableItem.name }}
+ {{availableItem.name}}
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.controller.js
index 0d184b71aa..ba103a2761 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.controller.js
@@ -28,6 +28,7 @@ angular.module("umbraco")
var dialogOptions = $scope.model;
$scope.disableFolderSelect = (dialogOptions.disableFolderSelect && dialogOptions.disableFolderSelect !== "0") ? true : false;
+ $scope.disableFocalPoint = (dialogOptions.disableFocalPoint && dialogOptions.disableFocalPoint !== "0") ? true : false;
$scope.onlyImages = (dialogOptions.onlyImages && dialogOptions.onlyImages !== "0") ? true : false;
$scope.onlyFolders = (dialogOptions.onlyFolders && dialogOptions.onlyFolders !== "0") ? true : false;
$scope.showDetails = (dialogOptions.showDetails && dialogOptions.showDetails !== "0") ? true : false;
@@ -137,7 +138,8 @@ angular.module("umbraco")
$scope.target = node;
if (ensureWithinStartNode(node)) {
selectMedia(node);
- $scope.target.url = mediaHelper.resolveFile(node);
+ $scope.target.url = mediaHelper.resolveFileFromEntity(node);
+ $scope.target.thumbnail = mediaHelper.resolveFileFromEntity(node, true);
$scope.target.altText = altText;
openDetailsDialog();
}
@@ -333,22 +335,26 @@ angular.module("umbraco")
}
function openDetailsDialog() {
+ localizationService.localize("defaultdialogs_editSelectedMedia").then(function (data) {
+ vm.mediaPickerDetailsOverlay = {
+ show: true,
+ title: data,
+ disableFocalPoint: $scope.disableFocalPoint,
+ submit: function (model) {
+ $scope.model.selection.push($scope.target);
+ $scope.model.submit($scope.model);
- vm.mediaPickerDetailsOverlay = {
- show: true,
- submit: function (model) {
+ vm.mediaPickerDetailsOverlay.show = false;
+ vm.mediaPickerDetailsOverlay = null;
+ },
+ close: function (oldModel) {
+ vm.mediaPickerDetailsOverlay.show = false;
+ vm.mediaPickerDetailsOverlay = null;
- $scope.model.selection.push($scope.target);
- $scope.model.submit($scope.model);
-
- vm.mediaPickerDetailsOverlay.show = false;
- vm.mediaPickerDetailsOverlay = null;
- },
- close: function (oldModel) {
- vm.mediaPickerDetailsOverlay.show = false;
- vm.mediaPickerDetailsOverlay = null;
- }
- };
+ close();
+ }
+ };
+ });
};
var debounceSearchMedia = _.debounce(function () {
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.html b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.html
index ed6be2e796..373dfbcba7 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.html
+++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/mediapicker/mediapicker.html
@@ -1,198 +1,227 @@
diff --git a/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-content-header.html b/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-content-header.html
index 6856daf42b..7430d45ce6 100644
--- a/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-content-header.html
+++ b/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-content-header.html
@@ -31,6 +31,7 @@
ng-class="{'name-is-empty': $parent.name===null || $parent.name===''}"
ng-disabled="nameDisabled"
umb-auto-focus
+ focus-on-filled="true"
val-server-field="{{serverValidationNameField}}"
required
aria-required="true"
diff --git a/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-header.html b/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-header.html
index bc4a88cd33..c46efb7b74 100644
--- a/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-header.html
+++ b/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-header.html
@@ -1,6 +1,6 @@