V8: Add infinite editing to datatype references tab (#6907)
* Add infinite editing to datatype references tab * Use correct save button label in infinite editing mode
This commit is contained in:
committed by
Poornima Nayar
parent
e85640c483
commit
dbe088eedb
@@ -640,6 +640,23 @@ When building a custom infinite editor view you can use the same components as a
|
||||
editor.view = "views/mediatypes/edit.html";
|
||||
open(editor);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
* @name umbraco.services.editorService#memberTypeEditor
|
||||
* @methodOf umbraco.services.editorService
|
||||
*
|
||||
* @description
|
||||
* Opens the member type editor in infinite editing, the submit callback returns the saved member type
|
||||
* @param {Object} editor rendering options
|
||||
* @param {Callback} editor.submit Submits the editor
|
||||
* @param {Callback} editor.close Closes the editor
|
||||
* @returns {Object} editor object
|
||||
*/
|
||||
function memberTypeEditor(editor) {
|
||||
editor.view = "views/membertypes/edit.html";
|
||||
open(editor);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
@@ -1011,6 +1028,7 @@ When building a custom infinite editor view you can use the same components as a
|
||||
iconPicker: iconPicker,
|
||||
documentTypeEditor: documentTypeEditor,
|
||||
mediaTypeEditor: mediaTypeEditor,
|
||||
memberTypeEditor: memberTypeEditor,
|
||||
queryBuilder: queryBuilder,
|
||||
treePicker: treePicker,
|
||||
nodePermissions: nodePermissions,
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* @description
|
||||
* The controller for the info view of the datatype editor
|
||||
*/
|
||||
function DataTypeInfoController($scope, $routeParams, dataTypeResource, eventsService, $timeout) {
|
||||
function DataTypeInfoController($scope, $routeParams, dataTypeResource, eventsService, $timeout, editorService) {
|
||||
|
||||
var vm = this;
|
||||
var evts = [];
|
||||
@@ -17,6 +17,9 @@ function DataTypeInfoController($scope, $routeParams, dataTypeResource, eventsSe
|
||||
|
||||
vm.view = {};
|
||||
vm.view.loading = true;
|
||||
vm.openDocumentType = openDocumentType;
|
||||
vm.openMediaType = openMediaType;
|
||||
vm.openMemberType = openMemberType;
|
||||
|
||||
/** Loads in the data type references one time */
|
||||
function loadRelations() {
|
||||
@@ -31,6 +34,57 @@ function DataTypeInfoController($scope, $routeParams, dataTypeResource, eventsSe
|
||||
}
|
||||
}
|
||||
|
||||
function openDocumentType(id, event) {
|
||||
open(id, event, "documentType");
|
||||
}
|
||||
|
||||
function openMediaType(id, event) {
|
||||
open(id, event, "mediaType");
|
||||
}
|
||||
|
||||
function openMemberType(id, event) {
|
||||
open(id, event, "memberType");
|
||||
}
|
||||
|
||||
function open(id, event, type) {
|
||||
// targeting a new tab/window?
|
||||
if (event.ctrlKey ||
|
||||
event.shiftKey ||
|
||||
event.metaKey || // apple
|
||||
(event.button && event.button === 1) // middle click, >IE9 + everyone else
|
||||
) {
|
||||
// yes, let the link open itself
|
||||
return;
|
||||
}
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
|
||||
const editor = {
|
||||
id: id,
|
||||
submit: function (model) {
|
||||
editorService.close();
|
||||
vm.view.loading = true;
|
||||
referencesLoaded = false;
|
||||
loadRelations();
|
||||
},
|
||||
close: function () {
|
||||
editorService.close();
|
||||
}
|
||||
};
|
||||
|
||||
switch (type) {
|
||||
case "documentType":
|
||||
editorService.documentTypeEditor(editor);
|
||||
break;
|
||||
case "mediaType":
|
||||
editorService.mediaTypeEditor(editor);
|
||||
break;
|
||||
case "memberType":
|
||||
editorService.memberTypeEditor(editor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// load data type references when the references tab is activated
|
||||
evts.push(eventsService.on("app.tabChange", function (event, args) {
|
||||
$timeout(function () {
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
<div class="umb-table-cell umb-table__name"><span>{{::reference.name}}</span></div>
|
||||
<div class="umb-table-cell"><span title="{{::reference.alias}}">{{::reference.alias}}</span></div>
|
||||
<div class="umb-table-cell --noOverflow"><span>{{::reference.properties | umbCmsJoinArray:', ':'name'}}</span></div>
|
||||
<div class="umb-table-cell umb-table-cell--nano"><a href="#/settings/documentTypes/edit/{{::reference.id}}"><localize key="general_open">Open</localize></a></div>
|
||||
<div class="umb-table-cell umb-table-cell--nano"><a href="#/settings/documentTypes/edit/{{::reference.id}}" ng-click="vm.openDocumentType(reference.id, $event)"><localize key="general_open">Open</localize></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -73,7 +73,7 @@
|
||||
<div class="umb-table-cell umb-table__name"><span>{{::reference.name}}</span></div>
|
||||
<div class="umb-table-cell"><span title="{{::reference.alias}}">{{::reference.alias}}</span></div>
|
||||
<div class="umb-table-cell --noOverflow"><span>{{::reference.properties | umbCmsJoinArray:', ':'name'}}</span></div>
|
||||
<div class="umb-table-cell umb-table-cell--nano"><a href="#/settings/mediaTypes/edit/{{::reference.id}}"><localize key="general_open">Open</localize></a></div>
|
||||
<div class="umb-table-cell umb-table-cell--nano"><a href="#/settings/mediaTypes/edit/{{::reference.id}}" ng-click="vm.openMediaType(reference.id, $event)"><localize key="general_open">Open</localize></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -104,7 +104,7 @@
|
||||
<div class="umb-table-cell umb-table__name"><span>{{::reference.name}}</span></div>
|
||||
<div class="umb-table-cell"><span title="{{::reference.alias}}">{{::reference.alias}}</span></div>
|
||||
<div class="umb-table-cell --noOverflow"><span>{{::reference.properties | umbCmsJoinArray:', ':'name'}}</span></div>
|
||||
<div class="umb-table-cell umb-table-cell--nano"><a href="#/settings/memberTypes/edit/{{::reference.id}}"><localize key="general_open">Open</localize></a></div>
|
||||
<div class="umb-table-cell umb-table-cell--nano"><a href="#/settings/memberTypes/edit/{{::reference.id}}" ng-click="vm.openMemberType(reference.id, $event)"><localize key="general_open">Open</localize></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -13,8 +13,13 @@
|
||||
|
||||
var evts = [];
|
||||
var vm = this;
|
||||
var infiniteMode = $scope.model && $scope.model.infiniteMode;
|
||||
var memberTypeId = infiniteMode ? $scope.model.id : $routeParams.id;
|
||||
var create = infiniteMode ? $scope.model.create : $routeParams.create;
|
||||
|
||||
vm.save = save;
|
||||
vm.close = close;
|
||||
|
||||
vm.editorfor = "visuallyHiddenTexts_newMember";
|
||||
vm.header = {};
|
||||
vm.header.editorfor = "content_membergroup";
|
||||
@@ -25,6 +30,7 @@
|
||||
vm.page.loading = false;
|
||||
vm.page.saveButtonState = "init";
|
||||
vm.labels = {};
|
||||
vm.saveButtonKey = infiniteMode ? "buttons_saveAndClose" : "buttons_save";
|
||||
|
||||
var labelKeys = [
|
||||
"general_design",
|
||||
@@ -86,7 +92,7 @@
|
||||
vm.page.defaultButton = {
|
||||
hotKey: "ctrl+s",
|
||||
hotKeyWhenHidden: true,
|
||||
labelKey: "buttons_save",
|
||||
labelKey: vm.saveButtonKey,
|
||||
letter: "S",
|
||||
type: "submit",
|
||||
handler: function () { vm.save(); }
|
||||
@@ -94,7 +100,7 @@
|
||||
vm.page.subButtons = [{
|
||||
hotKey: "ctrl+g",
|
||||
hotKeyWhenHidden: true,
|
||||
labelKey: "buttons_saveAndGenerateModels",
|
||||
labelKey: infiniteMode ? "buttons_generateModelsAndClose" : "buttons_saveAndGenerateModels",
|
||||
letter: "G",
|
||||
handler: function () {
|
||||
|
||||
@@ -147,12 +153,12 @@
|
||||
}
|
||||
});
|
||||
|
||||
if ($routeParams.create) {
|
||||
if (create) {
|
||||
|
||||
vm.page.loading = true;
|
||||
|
||||
//we are creating so get an empty data type item
|
||||
memberTypeResource.getScaffold($routeParams.id)
|
||||
memberTypeResource.getScaffold(memberTypeId)
|
||||
.then(function (dt) {
|
||||
init(dt);
|
||||
|
||||
@@ -163,10 +169,12 @@
|
||||
|
||||
vm.page.loading = true;
|
||||
|
||||
memberTypeResource.getById($routeParams.id).then(function (dt) {
|
||||
memberTypeResource.getById(memberTypeId).then(function (dt) {
|
||||
init(dt);
|
||||
|
||||
syncTreeNode(vm.contentType, dt.path, true);
|
||||
if(!infiniteMode) {
|
||||
syncTreeNode(vm.contentType, dt.path, true);
|
||||
}
|
||||
|
||||
vm.page.loading = false;
|
||||
});
|
||||
@@ -219,10 +227,16 @@
|
||||
}
|
||||
}).then(function (data) {
|
||||
//success
|
||||
syncTreeNode(vm.contentType, data.path);
|
||||
if(!infiniteMode) {
|
||||
syncTreeNode(vm.contentType, data.path);
|
||||
}
|
||||
|
||||
vm.page.saveButtonState = "success";
|
||||
|
||||
if(infiniteMode && $scope.model.submit) {
|
||||
$scope.model.submit();
|
||||
}
|
||||
|
||||
deferred.resolve(data);
|
||||
}, function (err) {
|
||||
//error
|
||||
@@ -307,6 +321,12 @@
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function close() {
|
||||
if(infiniteMode && $scope.model.close) {
|
||||
$scope.model.close();
|
||||
}
|
||||
}
|
||||
|
||||
evts.push(eventsService.on("editors.groupsBuilder.changed", function(name, args) {
|
||||
angularHelper.getCurrentForm($scope).$setDirty();
|
||||
|
||||
@@ -40,6 +40,14 @@
|
||||
|
||||
<umb-editor-footer-content-right>
|
||||
|
||||
<umb-button ng-if="model.infiniteMode"
|
||||
type="button"
|
||||
button-style="link"
|
||||
label-key="general_close"
|
||||
shortcut="esc"
|
||||
action="vm.close()">
|
||||
</umb-button>
|
||||
|
||||
<umb-button
|
||||
ng-if="!vm.page.modelsBuilder"
|
||||
type="button"
|
||||
@@ -47,8 +55,7 @@
|
||||
state="vm.page.saveButtonState"
|
||||
button-style="success"
|
||||
shortcut="ctrl+s"
|
||||
label="Save"
|
||||
label-key="buttons_save">
|
||||
label-key="{{vm.saveButtonKey}}">
|
||||
</umb-button>
|
||||
|
||||
<umb-button-group
|
||||
|
||||
Reference in New Issue
Block a user