start output of element content in nestedcontent property editor

This commit is contained in:
2019-08-29 02:39:51 +02:00
parent e306b2c807
commit 259c1de11b
5 changed files with 109 additions and 12 deletions
@@ -0,0 +1,15 @@
{
"text": {
"html": "text"
},
"button": {
"text": "text",
"link": "url"
},
"images": {
"items": "media"
},
"xblocks": {
"items": "list"
}
}
@@ -1,26 +1,101 @@
angular.module("umbraco").controller("brothers.uNesting.PropertyEditorController", function ($scope, $controller)
angular.module("umbraco").controller("brothers.uNesting.PropertyEditorController", function ($scope, $controller, $http)
{
angular.extend(this, $controller('Umbraco.PropertyEditors.NestedContent.PropertyEditorController', { $scope: $scope }));
$scope.getView = function (node, idx)
{
if ($scope.model.value[idx])
{
var contentType = $scope.getContentTypeConfig($scope.model.value[idx].ncContentTypeAlias);
var elementsConfig = {};
if (contentType !== null && contentType.nameExp)
var init = function ()
{
// Run the expression against the stored dictionary value, NOT the node object
var item = $scope.model.value[idx];
var newName = contentType.nameExp(item);
$http.get("/App_Plugins/brothers.uNesting/elements.json").then(function (res)
{
elementsConfig = res.data;
if (newName && (newName = $.trim(newName)))
_.each($scope.nodes, function (node, idx)
{
return newName;
}
}
}
return node.documentType.description || 'Enter data ...';
node.uNestingContent = getContent(node, $scope.model.value[idx], elementsConfig[node.contentTypeAlias]);
});
});
};
$scope.$watch("inited", function (newVal)
{
if (newVal)
{
init();
}
});
var getContent = function (node, item, config)
{
if (!item)
{
return '';
}
if (!config)
{
return node.documentType.description;
}
var lines = [];
_.each(config, function (type, alias)
{
var value = item[alias];
if (value)
{
if (type === 'text')
{
lines.push(stripHtml(value));
}
if (type === 'url')
{
lines.push(value[0].url);
}
}
});
if (lines.length < 1)
{
return node.documentType.description;
}
else
{
return lines.join('<br>');
}
};
var stripHtml = function (html)
{
if (!html)
{
return '';
}
var stripped = html.replace('<br>', ' ').replace('<br />', ' ').replace('<br/>', ' ').replace(/<[^>]+>/gm, '');
return stripped.length > 120 ? (stripped.substring(0, 120) + '...') : stripped;
};
//$scope.getView = function (node, idx)
//{
// if ($scope.model.value[idx])
// {
// var contentType = $scope.getContentTypeConfig($scope.model.value[idx].ncContentTypeAlias);
// if (contentType !== null && contentType.nameExp)
// {
// // Run the expression against the stored dictionary value, NOT the node object
// var item = $scope.model.value[idx];
// var newName = contentType.nameExp(item);
// if (newName && (newName = $.trim(newName)))
// {
// return newName;
// }
// }
// }
// return node.documentType.description || 'Enter data ...';
//};
});
@@ -72,6 +72,7 @@
{
color: #817f85;
font-size: 13px;
overflow: hidden;
}
/* icons */
@@ -22,7 +22,7 @@
<i ng-if="showIcons" class="icon" ng-class="$parent.getIcon($index)"></i>
<div class="unesting-item-header-content" ng-class="{'--has-icon': showIcons}">
<div class="unesting-item-header-content-name" ng-bind="node.contentTypeName"></div>
<div class="unesting-item-header-content-text" ng-bind-html="getView(node, $index)"></div>
<div class="unesting-item-header-content-text" ng-if="node.uNestingContent" ng-bind-html="node.uNestingContent"></div>
</div>
</div>
+6
View File
@@ -395,6 +395,10 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="App_Plugins\brothers.uNesting\interceptor.js" />
<Content Include="App_Plugins\brothers.uNesting\uNesting.controller.js" />
<Content Include="App_Plugins\brothers.uNesting\uNesting.css" />
<Content Include="App_Plugins\brothers.uNesting\uNesting.html" />
<Content Include="App_Plugins\brothers.uNesting\_nc.js" />
<Content Include="App_Plugins\Cultiv.Tabify\directives\ct-tabbed-content.html" />
<Content Include="App_Plugins\Cultiv.Tabify\directives\cttabbedcontent.directive.js" />
@@ -486,6 +490,8 @@
<Content Include="App_Plugins\StarterKit\backoffice\tours\create-content.json" />
<Content Include="App_Plugins\StarterKit\backoffice\tours\data-structure.json" />
<Content Include="App_Plugins\StarterKit\package.manifest" />
<Content Include="App_Plugins\brothers.uNesting\elements.json" />
<None Include="App_Plugins\brothers.uNesting\package.manifest" />
<None Include="packages.config" />
<Content Include="Views\Web.config" />
<Content Include="Views\Partials\Grid\Editors\Textstring.cshtml" />