Merge pull request #4598 from Viehlieb/feature/save_description_on_card_exit

Feature/save description on card exit
This commit is contained in:
Lauri Ojansivu 2022-07-28 17:11:35 +03:00 committed by GitHub
commit 5b883f4ea6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 69 additions and 1 deletions

View file

@ -1714,10 +1714,29 @@ BlazeComponent.extendComponent({
EscapeActions.register(
'detailsPane',
() => {
// if card description diverges from database due to editing
// ask user whether changes should be applied
if(currentUser.profile.rescueCardDescription== true)
{
currentDescription = document.getElementsByClassName("editor js-new-description-input").item(0)
if (currentDescription?.value && !(currentDescription.value === Utils.getCurrentCard().getDescription()))
{
if (confirm(TAPi18n.__('rescue-card-description-dialogue'))) {
Utils.getCurrentCard().setDescription(document.getElementsByClassName("editor js-new-description-input").item(0).value);
// Save it!
console.log(document.getElementsByClassName("editor js-new-description-input").item(0).value);
console.log("current description",Utils.getCurrentCard().getDescription());
} else {
// Do nothing!
console.log('Description changes were not saved to the database.');
}
}
}
if (Session.get('cardDetailsIsDragging')) {
// Reset dragging status as the mouse landed outside the cardDetails template area and this will prevent a mousedown event from firing
Session.set('cardDetailsIsDragging', false);
Session.set('cardDetailsIsMouseDown', false);
} else {
// Prevent close card when the user is selecting text and moves the mouse cursor outside the card detail area
Utils.goBoardId(Session.get('currentBoard'));

View file

@ -180,6 +180,13 @@ template(name="changeSettingsPopup")
option(selected="true", value="#{day.value}") #{day.name}
else
option(value="#{day.value}") #{day.name}
label.bold.clear
| {{_ 'card-settings'}}
ul#cards.card-description-rescued
a.flex.js-rescue-card-description(title="{{_ 'rescue-card-description'}}")
b  
#rescue-card-description.materialCheckBox.left(class="{{#if rescueCardDescription}}is-checked{{/if}}", value=rescueCardDescription)
span {{_ 'rescue-card-description'}}
input.js-apply-user-settings.left(type="submit" value="{{_ 'apply'}}")
template(name="userDeletePopup")

View file

@ -297,6 +297,16 @@ Template.changeSettingsPopup.helpers({
return false;
}
},
rescueCardDescription() {
currentUser = Meteor.user();
if (currentUser) {
return (currentUser.profile || {}).rescueCardDescription;
} else if (window.localStorage.getItem('rescueCardDescription')) {
return true;
} else {
return false;
}
},
showCardsCountAt() {
currentUser = Meteor.user();
if (currentUser) {
@ -356,6 +366,9 @@ Template.changeSettingsPopup.events({
window.localStorage.setItem('hasHiddenSystemMessages', 'true');
}
},
'click .js-rescue-card-description'() {
Meteor.call('toggleRescueCardDescription')
},
'click .js-apply-user-settings'(event, templateInstance) {
event.preventDefault();
let minLimit = parseInt(

View file

@ -541,6 +541,9 @@
"rename": "Umbenennen",
"rename-board": "Board umbenennen",
"restore": "Wiederherstellen",
"rescue-card-description": "Vor dem Schließen Dialog für ungespeicherte Änderungen von Kartenbeschreibungen anzeigen",
"rescue-card-description-dialogue": "Aktuelle Kartenbeschreibung mit ihren Änderungen überschreiben?",
"card-settings": "Karteneinstellungen",
"save": "Speichern",
"search": "Suchen",
"rules": "Regeln",
@ -1178,4 +1181,4 @@
"action": "Aktion",
"board-title": "Board-Titel",
"attachmentRenamePopup-title": "Umbenennen"
}
}

View file

@ -541,6 +541,9 @@
"rename": "Rename",
"rename-board": "Rename Board",
"restore": "Restore",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
"card-settings":"Card Settings",
"save": "Save",
"search": "Search",
"rules": "Rules",

View file

@ -337,6 +337,13 @@ Users.attachSchema(
type: Date,
optional: true,
},
'profile.rescueCardDescription': {
/**
* show dialog for saving card description on unintentional card closing
*/
type: Boolean,
optional: true,
},
'profile.showCardsCountAt': {
/**
* showCardCountAt field of the user
@ -794,6 +801,11 @@ Users.helpers({
return profile.hiddenMinicardLabelText || false;
},
hasRescuedCardDescription(){
const profile = this.profile || {};
return profile.rescueCardDescription || false;
},
getEmailBuffer() {
const { emailBuffer = [] } = this.profile || {};
return emailBuffer;
@ -1004,6 +1016,13 @@ Users.mutations({
},
};
},
toggleRescueCardDescription(value = false) {
return {
$set: {
'profile.rescueCardDescription': !value,
},
};
},
addNotification(activityId) {
return {
@ -1103,6 +1122,10 @@ Meteor.methods({
const user = Meteor.user();
user.toggleLabelText(user.hasHiddenMinicardLabelText());
},
toggleRescueCardDescription() {
const user = Meteor.user();
user.toggleRescueCardDescription(user.hasRescuedCardDescription());
},
changeLimitToShowCardsCount(limit) {
check(limit, Number);
Meteor.user().setShowCardsCountAt(limit);