diff --git a/modules/core/validation/models.js b/modules/core/validation/models.js index c01a75301..b9819e060 100644 --- a/modules/core/validation/models.js +++ b/modules/core/validation/models.js @@ -58,7 +58,7 @@ export function validationIssue(attrs) { if (issue.severity === 'warning') { // allow ignoring any issue that's not an error fixes.push(new validationIssueFix({ - title: t('issues.fix.ignore_issue.title'), + title: t.html('issues.fix.ignore_issue.title'), icon: 'iD-icon-close', onClick: function() { context.validator().ignoreIssue(this.issue.id); @@ -67,6 +67,7 @@ export function validationIssue(attrs) { } fixes.forEach(function(fix) { + // the id doesn't matter as long as it's unique to this issue/fix fix.id = fix.title; // add a reference to the issue for use in actions fix.issue = issue; diff --git a/modules/validations/almost_junction.js b/modules/validations/almost_junction.js index ed5067e99..beaa2beb0 100644 --- a/modules/validations/almost_junction.js +++ b/modules/validations/almost_junction.js @@ -88,8 +88,8 @@ export function validationAlmostJunction(context) { function makeFixes(context) { let fixes = [new validationIssueFix({ icon: 'iD-icon-abutment', - title: t('issues.fix.connect_features.title'), - onClick(context) { + title: t.html('issues.fix.connect_features.title'), + onClick: function(context) { const annotation = t('issues.fix.connect_almost_junction.annotation'); const [, endNodeId, crossWayId] = this.issue.entityIds; const midNode = context.entity(this.issue.data.midId); @@ -135,8 +135,8 @@ export function validationAlmostJunction(context) { // node has no descriptive tags, suggest noexit fix fixes.push(new validationIssueFix({ icon: 'maki-barrier', - title: t('issues.fix.tag_as_disconnected.title'), - onClick(context) { + title: t.html('issues.fix.tag_as_disconnected.title'), + onClick: function(context) { const nodeID = this.issue.entityIds[1]; const tags = Object.assign({}, context.entity(nodeID).tags); tags.noexit = 'yes'; diff --git a/modules/validations/close_nodes.js b/modules/validations/close_nodes.js index 11caa490c..5dc0dd3ad 100644 --- a/modules/validations/close_nodes.js +++ b/modules/validations/close_nodes.js @@ -179,11 +179,11 @@ export function validationCloseNodes(context) { return [ new validationIssueFix({ icon: 'iD-operation-disconnect', - title: t('issues.fix.move_points_apart.title') + title: t.html('issues.fix.move_points_apart.title') }), new validationIssueFix({ icon: 'iD-icon-layers', - title: t('issues.fix.use_different_layers_or_levels.title') + title: t.html('issues.fix.use_different_layers_or_levels.title') }) ]; } @@ -242,7 +242,7 @@ export function validationCloseNodes(context) { return [ new validationIssueFix({ icon: 'iD-icon-plus', - title: t('issues.fix.merge_points.title'), + title: t.html('issues.fix.merge_points.title'), onClick: function(context) { var entityIds = this.issue.entityIds; var action = actionMergeNodes([entityIds[1], entityIds[2]]); @@ -251,7 +251,7 @@ export function validationCloseNodes(context) { }), new validationIssueFix({ icon: 'iD-operation-disconnect', - title: t('issues.fix.move_points_apart.title') + title: t.html('issues.fix.move_points_apart.title') }) ]; } diff --git a/modules/validations/crossing_ways.js b/modules/validations/crossing_ways.js index dcae5c603..7f3f339cb 100644 --- a/modules/validations/crossing_ways.js +++ b/modules/validations/crossing_ways.js @@ -444,7 +444,7 @@ export function validationCrossingWays(context) { if (isCrossingIndoors) { fixes.push(new validationIssueFix({ icon: 'iD-icon-layers', - title: t('issues.fix.use_different_levels.title') + title: t.html('issues.fix.use_different_levels.title') })); } else if (isCrossingTunnels || isCrossingBridges || @@ -473,7 +473,7 @@ export function validationCrossingWays(context) { // repositioning the features is always an option fixes.push(new validationIssueFix({ icon: 'iD-operation-move', - title: t('issues.fix.reposition_features.title') + title: t.html('issues.fix.reposition_features.title') })); return fixes; @@ -493,7 +493,7 @@ export function validationCrossingWays(context) { function makeAddBridgeOrTunnelFix(fixTitleID, iconName, bridgeOrTunnel){ return new validationIssueFix({ icon: iconName, - title: t('issues.fix.' + fixTitleID + '.title'), + title: t.html('issues.fix.' + fixTitleID + '.title'), onClick: function(context) { var mode = context.mode(); if (!mode || mode.id !== 'select') return; @@ -702,7 +702,7 @@ export function validationCrossingWays(context) { return new validationIssueFix({ icon: 'iD-icon-crossing', - title: t('issues.fix.' + fixTitleID + '.title'), + title: t.html('issues.fix.' + fixTitleID + '.title'), onClick: function(context) { var loc = this.issue.loc; var connectionTags = this.issue.data.connectionTags; @@ -745,7 +745,7 @@ export function validationCrossingWays(context) { function makeChangeLayerFix(higherOrLower) { return new validationIssueFix({ icon: 'iD-icon-' + (higherOrLower === 'higher' ? 'up' : 'down'), - title: t('issues.fix.tag_this_as_' + higherOrLower + '.title'), + title: t.html('issues.fix.tag_this_as_' + higherOrLower + '.title'), onClick: function(context) { var mode = context.mode(); diff --git a/modules/validations/disconnected_way.js b/modules/validations/disconnected_way.js index 56c6ea4ff..5ea9628f3 100644 --- a/modules/validations/disconnected_way.js +++ b/modules/validations/disconnected_way.js @@ -53,13 +53,13 @@ export function validationDisconnectedWay() { } if (!fixes.length) { fixes.push(new validationIssueFix({ - title: t('issues.fix.connect_feature.title') + title: t.html('issues.fix.connect_feature.title') })); } fixes.push(new validationIssueFix({ icon: 'iD-operation-delete', - title: t('issues.fix.delete_feature.title'), + title: t.html('issues.fix.delete_feature.title'), entityIds: [singleEntity.id], onClick: function(context) { var id = this.issue.entityIds[0]; @@ -71,7 +71,7 @@ export function validationDisconnectedWay() { })); } else { fixes.push(new validationIssueFix({ - title: t('issues.fix.connect_features.title') + title: t.html('issues.fix.connect_features.title') })); } @@ -182,7 +182,7 @@ export function validationDisconnectedWay() { return new validationIssueFix({ icon: 'iD-operation-continue' + (useLeftContinue ? '-left' : ''), - title: t('issues.fix.continue_from_' + whichEnd + '.title'), + title: t.html('issues.fix.continue_from_' + whichEnd + '.title'), entityIds: [vertexID], onClick: function(context) { var wayId = this.issue.entityIds[0]; diff --git a/modules/validations/help_request.js b/modules/validations/help_request.js index 070b45e80..e9842d37b 100644 --- a/modules/validations/help_request.js +++ b/modules/validations/help_request.js @@ -30,7 +30,7 @@ export function validationHelpRequest(context) { dynamicFixes: function() { return [ new validationIssueFix({ - title: t('issues.fix.address_the_concern.title') + title: t.html('issues.fix.address_the_concern.title') }) ]; }, diff --git a/modules/validations/impossible_oneway.js b/modules/validations/impossible_oneway.js index d4293bf99..7e51a2b55 100644 --- a/modules/validations/impossible_oneway.js +++ b/modules/validations/impossible_oneway.js @@ -176,7 +176,7 @@ export function validationImpossibleOneway() { if (attachedOneways.length) { fixes.push(new validationIssueFix({ icon: 'iD-operation-reverse', - title: t('issues.fix.reverse_feature.title'), + title: t.html('issues.fix.reverse_feature.title'), entityIds: [way.id], onClick: function(context) { var id = this.issue.entityIds[0]; @@ -190,7 +190,7 @@ export function validationImpossibleOneway() { (!isFirst && textDirection === 'rtl'); fixes.push(new validationIssueFix({ icon: 'iD-operation-continue' + (useLeftContinue ? '-left' : ''), - title: t('issues.fix.continue_from_' + (isFirst ? 'start' : 'end') + '.title'), + title: t.html('issues.fix.continue_from_' + (isFirst ? 'start' : 'end') + '.title'), onClick: function(context) { var entityID = this.issue.entityIds[0]; var vertexID = this.issue.entityIds[1]; diff --git a/modules/validations/incompatible_source.js b/modules/validations/incompatible_source.js index 3407f4385..916628492 100644 --- a/modules/validations/incompatible_source.js +++ b/modules/validations/incompatible_source.js @@ -43,7 +43,7 @@ export function validationIncompatibleSource() { dynamicFixes: function() { return [ new validationIssueFix({ - title: t('issues.fix.remove_proprietary_data.title') + title: t.html('issues.fix.remove_proprietary_data.title') }) ]; } diff --git a/modules/validations/mismatched_geometry.js b/modules/validations/mismatched_geometry.js index 3cfd81808..0619135f2 100644 --- a/modules/validations/mismatched_geometry.js +++ b/modules/validations/mismatched_geometry.js @@ -103,13 +103,13 @@ export function validationMismatchedGeometry() { var connectEndsOnClick = makeConnectEndpointsFixOnClick(entity, context.graph()); fixes.push(new validationIssueFix({ - title: t('issues.fix.connect_endpoints.title'), + title: t.html('issues.fix.connect_endpoints.title'), onClick: connectEndsOnClick })); fixes.push(new validationIssueFix({ icon: 'iD-operation-delete', - title: t('issues.fix.remove_tag.title'), + title: t.html('issues.fix.remove_tag.title'), onClick: function(context) { var entityId = this.issue.entityIds[0]; var entity = context.entity(entityId); @@ -218,7 +218,7 @@ export function validationMismatchedGeometry() { return [ new validationIssueFix({ icon: 'iD-operation-extract', - title: t('issues.fix.extract_point.title'), + title: t.html('issues.fix.extract_point.title'), onClick: extractOnClick }) ]; diff --git a/modules/validations/missing_role.js b/modules/validations/missing_role.js index 60a3a1af2..5e3f3d863 100644 --- a/modules/validations/missing_role.js +++ b/modules/validations/missing_role.js @@ -61,7 +61,7 @@ export function validationMissingRole() { makeAddRoleFix('outer'), new validationIssueFix({ icon: 'iD-operation-delete', - title: t('issues.fix.remove_from_relation.title'), + title: t.html('issues.fix.remove_from_relation.title'), onClick: function(context) { context.perform( actionDeleteMember(this.issue.entityIds[0], this.issue.data.member.index), @@ -87,7 +87,7 @@ export function validationMissingRole() { function makeAddRoleFix(role) { return new validationIssueFix({ - title: t('issues.fix.set_as_' + role + '.title'), + title: t.html('issues.fix.set_as_' + role + '.title'), onClick: function(context) { var oldMember = this.issue.data.member; var member = { id: this.issue.entityIds[1], type: oldMember.type, role: role }; diff --git a/modules/validations/missing_tag.js b/modules/validations/missing_tag.js index 42a094889..fa205a22a 100644 --- a/modules/validations/missing_tag.js +++ b/modules/validations/missing_tag.js @@ -98,7 +98,7 @@ export function validationMissingTag(context) { fixes.push(new validationIssueFix({ icon: 'iD-icon-search', - title: t('issues.fix.' + selectFixType + '.title'), + title: t.html('issues.fix.' + selectFixType + '.title'), onClick: function(context) { context.ui().sidebar.showPresetList(); } @@ -122,7 +122,7 @@ export function validationMissingTag(context) { fixes.push( new validationIssueFix({ icon: 'iD-operation-delete', - title: t('issues.fix.delete_feature.title'), + title: t.html('issues.fix.delete_feature.title'), disabledReason: disabledReasonID ? t('operations.delete.' + disabledReasonID + '.single') : undefined, onClick: deleteOnClick }) diff --git a/modules/validations/outdated_tags.js b/modules/validations/outdated_tags.js index 9c3af3948..dcf268407 100644 --- a/modules/validations/outdated_tags.js +++ b/modules/validations/outdated_tags.js @@ -180,7 +180,7 @@ export function validationOutdatedTags() { return [ new validationIssueFix({ autoArgs: autoArgs, - title: t('issues.fix.upgrade_tags.title'), + title: t.html('issues.fix.upgrade_tags.title'), onClick: (context) => { context.perform(doUpgrade, t('issues.fix.upgrade_tags.annotation')); } @@ -276,7 +276,7 @@ export function validationOutdatedTags() { return [ new validationIssueFix({ autoArgs: [doUpgrade, t('issues.fix.move_tags.annotation')], - title: t('issues.fix.move_tags.title'), + title: t.html('issues.fix.move_tags.title'), onClick: (context) => { context.perform(doUpgrade, t('issues.fix.move_tags.annotation')); } diff --git a/modules/validations/private_data.js b/modules/validations/private_data.js index 5515deda1..c793e117a 100644 --- a/modules/validations/private_data.js +++ b/modules/validations/private_data.js @@ -67,7 +67,7 @@ export function validationPrivateData() { return [ new validationIssueFix({ icon: 'iD-operation-delete', - title: t('issues.fix.' + fixID + '.title'), + title: t.html('issues.fix.' + fixID + '.title'), onClick: function(context) { context.perform(doUpgrade, t('issues.fix.upgrade_tags.annotation')); } diff --git a/modules/validations/suspicious_name.js b/modules/validations/suspicious_name.js index d5dda97fa..584f1f07b 100644 --- a/modules/validations/suspicious_name.js +++ b/modules/validations/suspicious_name.js @@ -75,7 +75,7 @@ export function validationSuspiciousName() { return [ new validationIssueFix({ icon: 'iD-operation-delete', - title: t('issues.fix.remove_the_name.title'), + title: t.html('issues.fix.remove_the_name.title'), onClick: function(context) { let entityId = this.issue.entityIds[0]; let entity = context.entity(entityId); @@ -121,7 +121,7 @@ export function validationSuspiciousName() { return [ new validationIssueFix({ icon: 'iD-operation-delete', - title: t('issues.fix.remove_the_name.title'), + title: t.html('issues.fix.remove_the_name.title'), onClick: function(context) { const entityId = this.issue.entityIds[0]; const entity = context.entity(entityId); diff --git a/modules/validations/unsquare_way.js b/modules/validations/unsquare_way.js index 34803225f..478733155 100644 --- a/modules/validations/unsquare_way.js +++ b/modules/validations/unsquare_way.js @@ -85,7 +85,7 @@ export function validationUnsquareWay(context) { return [ new validationIssueFix({ icon: 'iD-operation-orthogonalize', - title: t('issues.fix.square_feature.title'), + title: t.html('issues.fix.square_feature.title'), autoArgs: autoArgs, onClick: function(context, completionHandler) { var entityId = this.issue.entityIds[0]; @@ -100,7 +100,7 @@ export function validationUnsquareWay(context) { }), /* new validationIssueFix({ - title: t('issues.fix.tag_as_unsquare.title'), + title: t.html('issues.fix.tag_as_unsquare.title'), onClick: function(context) { var entityId = this.issue.entityIds[0]; var entity = context.entity(entityId);