Skip to content

Commit 8393fde

Browse files
authored
Adds support for simple markdown in property descriptions, and extended property descriptions (#11628)
* Adds support for simple markdown in property descriptions, and extended descriptions * removes max-width for property descriptions (doesn't make sense to limit these IMO)
1 parent 0a626c6 commit 8393fde

File tree

4 files changed

+48
-2
lines changed

4 files changed

+48
-2
lines changed

src/Umbraco.Web.UI.Client/src/common/directives/components/property/umbproperty.directive.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,21 @@
7575
// inheritance is (i.e.infinite editing)
7676
var found = angularHelper.traverseScopeChain($scope, s => s && s.vm && s.vm.constructor.name === "UmbPropertyController");
7777
vm.parentUmbProperty = found ? found.vm : null;
78+
}
79+
80+
if (vm.property.description) {
81+
// split by lines containing only '--'
82+
var descriptionParts = vm.property.description.split(/^--$/gim);
83+
if (descriptionParts.length > 1) {
84+
// if more than one part, we have an extended description,
85+
// combine to one extended description, and remove leading linebreak
86+
vm.property.extendedDescription = descriptionParts.splice(1).join("--").substring(1);
87+
vm.property.extendedDescriptionVisible = false;
88+
89+
// set propertydescription to first part, and remove trailing linebreak
90+
vm.property.description = descriptionParts[0].slice(0, -1);
7891
}
92+
}
7993
}
8094

8195
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* @ngdoc filter
3+
* @name umbraco.filters.simpleMarkdown
4+
* @description
5+
* Used when rendering a string as Markdown as HTML (i.e. with ng-bind-html). Allows use of **bold**, *italics*, ![images](url) and [links](url)
6+
**/
7+
angular.module("umbraco.filters").filter('simpleMarkdown', function () {
8+
return function (text) {
9+
if (!text) {
10+
return '';
11+
}
12+
13+
return text
14+
.replace(/\*\*(.*)\*\*/gim, '<b>$1</b>')
15+
.replace(/\*(.*)\*/gim, '<i>$1</i>')
16+
.replace(/!\[(.*?)\]\((.*?)\)/gim, "<img alt='$1' src='$2' />")
17+
.replace(/\[(.*?)\]\((.*?)\)/gim, "<a href='$2' target='_blank' class='underline'>$1</a>")
18+
.replace(/\n/g, '<br />').trim();
19+
};
20+
});

src/Umbraco.Web.UI.Client/src/less/main.less

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,6 @@ umb-property:last-of-type .umb-control-group {
237237
}
238238

239239
.control-description {
240-
max-width:480px;// avoiding description becoming too wide when its placed on top of property.
241240
margin-bottom: 5px;
242241
}
243242
}

src/Umbraco.Web.UI.Client/src/views/components/property/umb-property.html

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,20 @@
2424

2525
<umb-property-actions ng-if="!vm.showInherit" actions="vm.propertyActions"></umb-property-actions>
2626

27-
<small class="control-description" ng-if="vm.property.description" ng-bind-html="vm.property.description | preserveNewLineInHtml"></small>
27+
<small class="control-description" ng-if="vm.property.description" ng-bind-html="vm.property.description | simpleMarkdown"></small>
28+
29+
<div ng-if="vm.property.extendedDescription">
30+
31+
<div ng-if="vm.property.extendedDescriptionVisible">
32+
<small class="control-description" ng-bind-html="vm.property.extendedDescription | simpleMarkdown"></small>
33+
</div>
34+
35+
<button type="button" class="btn btn-mini btn-link btn-link-reverse p0" ng-click="vm.property.extendedDescriptionVisible = !vm.property.extendedDescriptionVisible">
36+
<localize ng-if="!vm.property.extendedDescriptionVisible" key="general_readMore"></localize>
37+
<localize ng-if="vm.property.extendedDescriptionVisible" key="general_close"></localize>
38+
</button>
39+
40+
</div>
2841
</div>
2942

3043
<div class="controls" ng-transclude>

0 commit comments

Comments
 (0)