diff --git a/data/core.yaml b/data/core.yaml index a904dfa20..1811f6674 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -146,6 +146,9 @@ en: connected_to_hidden: single: This feature can't be deleted because it is connected to a hidden feature. multiple: These features can't be deleted because some are connected to hidden features. + has_wikidata_tag: + single: This feature can't be deleted because it has a Wikidata tag. + multiple: These feature can't be deleted because some have Wikidata tags. add_member: annotation: Added a member to a relation. delete_member: diff --git a/dist/locales/en.json b/dist/locales/en.json index 77b75da91..ba9fd8cdb 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -185,6 +185,10 @@ "connected_to_hidden": { "single": "This feature can't be deleted because it is connected to a hidden feature.", "multiple": "These features can't be deleted because some are connected to hidden features." + }, + "has_wikidata_tag": { + "single": "This feature can't be deleted because it has a Wikidata tag.", + "multiple": "These feature can't be deleted because some have Wikidata tags." } }, "add_member": { diff --git a/modules/operations/delete.js b/modules/operations/delete.js index fb0e10b5b..d1152b191 100644 --- a/modules/operations/delete.js +++ b/modules/operations/delete.js @@ -76,9 +76,16 @@ export function operationDelete(selectedIDs, context) { reason = 'part_of_relation'; } else if (selectedIDs.some(incompleteRelation)) { reason = 'incomplete_relation'; + } else if (selectedIDs.some(hasWikidataTag)) { + reason = 'has_wikidata_tag'; } return reason; + function hasWikidataTag(id) { + var entity = context.entity(id); + return entity.tags.wikidata && entity.tags.wikidata.trim().length > 0; + } + function incompleteRelation(id) { var entity = context.entity(id); return entity.type === 'relation' && !entity.isComplete(context.graph());