Having figured out how to do this I thought I would post the solution.

Sometimes the name of an uploaded file does not indicate what the contents are, the description is needed.  Out of the box this description is not displayed on an attachment timeline tile.  The steps to add the description follow.

The Creatio page on configuring the timeline is Timeline.  The scheme of things is roughly table 'TimelinePageSetting' configures the timeline for a section, while table 'TimelineTileSetting' is for configuring individual tiles.

Create two modules (Advanced settings > +Add), which I will call "UsrFileTimelineItemViewWithDescription" and "UsrFileTimelineItemViewModelWithDescription".

Add the following to "UsrFileTimelineItemViewWithDescription":

define("UsrFileTimelineItemViewModelWithDescription", ["UsrFileTimelineItemViewModelWithDescriptionResources", "FileTimelineItemViewModel"
      ],
      function() {
            Ext.define("Terrasoft.configuration.UsrFileTimelineItemViewModelWithDescription", {
                  alternateClassName: "Terrasoft.UsrFileTimelineItemViewModelWithDescription",
                  extend: "Terrasoft.FileTimelineItemViewModel",
            });
      }
);

Within this schema add a localizable string with the code "NotesLabel" ('Notes' being the name of the column within the table that holds attachments, the table name being the section name suffixed with "File", e.g., "OpprtunityFile") . Set the value to "Description", it will be the label of the field in the timeline.

Add the following to "UsrFileTimelineItemViewModelWithDescription":

define("UsrFileTimelineItemViewWithDescription", ["FileTimelineItemView"], function() {
      Ext.define("Terrasoft.configuration.UsrFileTimelineItemViewWithDescription", {
            extend: "Terrasoft.FileTimelineItemView",
            alternateClassName: "Terrasoft.UsrFileTimelineItemViewWithDescription",
            getBodyViewConfig: function() {
                  var bodyConfig = {
                        "name": "BodyContainer",
                        "itemType": Terrasoft.ViewItemType.CONTAINER,
                        "classes": {
                              "wrapClassName": ["timeline-item-body-container"]
                        },
                        "items": [
                              this.getTextWithLabelContainerViewConfig("Resources.Strings.NotesLabel", "Notes")
                        ]
                  };
                  var imagePreviewConfig = this.callParent(arguments);
                  bodyConfig.items.unshift(imagePreviewConfig);
                  return bodyConfig;
            }
      });
});

Execute the following SQL to obtain the current 'TimelineTileSetting' table 'Data' entry for attachments:

SELECT encode("Data", 'escape')
AS text_column
FROM "TimelineTileSetting"
WHERE "Name" = 'Files'

I used JSON Formatter to format the JSON output.

Change "viewClassName" and "viewModelClassName" to reflect the modules created earlier.

Add the following 'columns' configuration:

"columns":[{"columnName":"Notes","columnAlias": "Notes"}]

The JSON should now look along the lines of:

{
    "typeColumnValue":"529bc2f8-0ee0-df11-971b-001d60e938c6",
    "entitySchemaName":"##ReferenceSchemaName##File",
    "viewModelClassName":"Terrasoft.UsrFileTimelineItemViewModelWithDescription",
    "viewClassName":"Terrasoft.UsrFileTimelineItemViewWithDescription",
    "orderColumnName":"CreatedOn",
    "authorColumnName":"CreatedBy",
    "captionColumnName":"Name",
    "columns":[
        {
            "columnName":"Notes",
            "columnAlias":"Notes"
        }
    ]
}

I used Minify JSON to re-minify the JSON.

Update 'TimelineTileSetting' with the following query:

UPDATE "TimelineTileSetting"
SET "Data" = '{"typeColumnValue":"529bc2f8-0ee0-df11-971b-001d60e938c6","entitySchemaName":"##ReferenceSchemaName##File","viewModelClassName":"Terrasoft.UsrFileTimelineItemViewModelWithDescription","viewClassName":"Terrasoft.UsrFileTimelineItemViewWithDescription","orderColumnName":"CreatedOn","authorColumnName":"CreatedBy","captionColumnName":"Name","columns":[{"columnName":"Notes","columnAlias": "Notes"}]}'
WHERE "Name" = 'Files'

Refresh the browser cache, if necessary generating the source code for all schemas and compiling the app.

Like 1

Like

2 comments

A quick correction, the final UPDATE query 'Data' column is binary data, so the query should be:

UPDATE "TimelineTileSetting"
SET "Data" = decode('{"typeColumnValue":"529bc2f8-0ee0-df11-971b-001d60e938c6","entitySchemaName":"##ReferenceSchemaName##File","viewModelClassName":"Terrasoft.UsrFileTimelineItemViewModelWithDescription","viewClassName":"Terrasoft.UsrFileTimelineItemViewWithDescription","orderColumnName":"CreatedOn","authorColumnName":"CreatedBy","captionColumnName":"Name","columns":[{"columnName":"Notes","columnAlias": "Notes"}]}', 'escape')
WHERE "Name" = 'Files'

 

Nice! Thanks for sharing.

Ryan

Show all comments

I need to add the attachment 'Description' (the 'Notes' field of the attachment file 'OpportunityFile') to the Timeline tile for an attachment (Opportunities section).  I'm probably missing a step out, but if somebody can clarify this for me it would be much appreciated:

 

1) The Data for key 'OpportunityPageV2' of 'TimelinePageSetting':

select
"Key",
encode("Data",'escape') as "Data"
from "TimelinePageSetting"
    {
        "entityConfigKey":"59de07a7-28dd-4dc9-a106-a07cb9981423",
        "entitySchemaName":"OpportunityFile",
        "typeColumnName":"Type",
        "typeColumnValue":"529bc2f8-0ee0-df11-971b-001d60e938c6",
        "referenceColumnName":"Opportunity",
        "masterRecordColumnName":"Id"
    },

2) The edited entry for Id '59de07a7-28dd-4dc9-a106-a07cb9981423' of 'TimelineTileSetting':

select
"Id", 
"Name", 
encode("Data", 'escape') as "Data"
from "TimelineTileSetting"
{
    "typeColumnValue":"529bc2f8-0ee0-df11-971b-001d60e938c6",
    "entitySchemaName":"##ReferenceSchemaName##File",
    "viewModelClassName":"Terrasoft.FileTimelineItemViewModel",
    "viewClassName":"Terrasoft.UsrFileTimelineItemView",
    "orderColumnName":"CreatedOn",
    "authorColumnName":"CreatedBy",
    "captionColumnName":"Name",
    "messageColumnName":"Notes"
}

3) 'UsrFileTimelineItemView' is a new Module with source code copied from 'FileTimelineItemView' with the addition of the 'getMessageViewConfig' method copied from the example (note I am using the original viewModelClassName 'FileTimelineItemViewModel'):

 define("UsrFileTimelineItemView", ["BaseTimelineItemView"], function() {
	/**
	 * @class Terrasoft.configuration.FileTimelineItemView
	 * File timeline item view class.
	 */
	Ext.define("Terrasoft.configuration.UsrFileTimelineItemView", {
		extend: "Terrasoft.BaseTimelineItemView",
		alternateClassName: "Terrasoft.UsrFileTimelineItemView",
 
		// region Methods: Protected
 
		/**
		 * Returns file type icon view config.
		 * @protected
		 * @return {Object}
		 */
		getFileTypeIconConfig: function() {
			return {
				"name": "FileTypeIcon",
				"itemType": Terrasoft.ViewItemType.IMAGE,
				"getSrcMethod": "FileTypeSrc",
				"generator": "ImageCustomGeneratorV2.generateSimpleCustomImage",
				"onPhotoChange": Terrasoft.emptyFn,
				"classes": {
					"wrapClass": ["timeline-item-file-type-icon"]
				}
			};
		},
 
		/**
		 * Returns file preview image view config.
		 * @protected
		 * @return {Object}
		 */
		getFilePreviewImageConfig: function() {
			return {
				"name": "FilePreviewImage",
				"itemType": Terrasoft.ViewItemType.IMAGE,
				"getSrcMethod": "getPreviewImageSrc",
				"generator": "ImageCustomGeneratorV2.generateSimpleCustomImage",
				"onPhotoChange": Terrasoft.emptyFn,
				"classes": {
					"wrapClass": ["timeline-item-file-preview-image"]
				}
			};
		},
 
		/**
		 * @inheritdoc Terrasoft.BaseTimelineItemView#getCaptionViewConfig
		 * @protected
		 */
		getCaptionViewConfig: function() {
			var config = this.callParent(arguments);
			config.target = "_self";
			delete config.click;
			return config;
		},
 
		/**
		 * @inheritdoc Terrasoft.BaseTimelineItemView#getLeftHeaderViewConfig
		 * @protected
		 */
		getLeftHeaderViewConfig: function() {
			var leftHeaderConfig = this.callParent(arguments);
			leftHeaderConfig.items.splice(1, 0, this.getFileTypeIconConfig());
			return leftHeaderConfig;
		},
 
		/**
		 * @inheritdoc Terrasoft.BaseTimelineItemView#getBodyViewConfig
		 * @override
		 */
		getBodyViewConfig: function() {
			var bodyConfig = this.callParent(arguments);
			bodyConfig.controlConfig.visibilityHeight = 0;
			bodyConfig.visible = {
				"bindTo": "isFilePreviewImageVisible"
			};
			bodyConfig.items = [
				this.getFilePreviewImageConfig()
			];
			return bodyConfig;
		},
 
		// endregion
 
        // Redefined method returning the [Message] tile field configuration. 
        getMessageViewConfig: function() {
            // Receiving standard settings.
            var config = this.callParent(arguments);
            // Visibility setup. Visible if the tile is deployed.
            config.visible = {
                "bindTo": "IsExpanded"
            };
            return config;
        }
 
	});
});

 

Like 0

Like

1 comments

Hi all,



In Creatio 7, is there a way to nest a detail within a field group?



 

Like 0

Like

1 comments

Nevermind, I've found a solution by changing the parent name to the field group name.

 

				"operation": "insert",
				"name": "My Detail",
				"values": {
					"itemType": 2,
					"markerValue": "added-detail"
				},
				"parentName": "My Field Group",
				"propertyName": "items",
				"index": 1

 

Show all comments

Hello Community,

 

Our client has a case where he needs to upload a file secured with a password to the attachment details. He tried to upload that file file but with no success. Is there a way to keep that file in its encrypted format and be able to upload it?

 

Thank you,

Like 0

Like

2 comments

...

Hello Mariam,



You can make a password file in the archive and put the archive in the detail. At the moment there is no possibility to enter the password exactly inside Creatio. Perhaps this can be implemented by custom development.



Regards,

Anton

Show all comments

I use apps for Creation https://marketplace.creatio.com/app/data-binding-tool-creation

An error appears in the console after trying to link the column settings for a part. What could this be related to?

Like 0

Like

1 comments

Hello Vlad!

I have successfully bound list settings on CRM Creatio 8.0.8 using this add-on on my side. Please, provide more details so that we can reproduce your issue:

1. Which Creatio product and version do you use?

2. Did you save the list settings for all users before binding these settings? 3. List settings for which section or detail did you try to bind?

Show all comments

Question about secure access to the portal.

https://academy.creatio.com/docs/user/on_site_deployment/deployment_add…

According to the article, it is recommended to disable login for non-portal users on the portal server, which means that even the Supervisor will not be able to log in.

How to compile the portal application?

Like 0

Like

1 comments

Good day,

 

Thank you for your question.

In this case, we recommend treating the portal application as a node of the web farm.

So basically, you just do all of the changes on your main node, then just transfer compiled and ready-to-go main node to your portal node.

 

Here is a separate answer that describes the steps on deployment for web farms in greater detail - https://community.creatio.com/questions/haproxy-site-installation-horiz…

 

Thank you.

Show all comments

Hi, i  am trying to implement a timer countdown in a field of a section. can someone give any suggestion how we can setup a countdown timer. i am using 7.18 version. 

I can see in 8:0 update to add a countdown timer a component is added. but our requirement is to set countdown timer to a specific field. can someone help

Like 0

Like

3 comments

Hello,

 

Unfortunately, this is only available in the new UI. If you want to configure "countdown" you can update and configure according to this documentation: 

https://academy.creatio.com/docs/user/nocode_platform/element_setup_exa…



Best regards,

Orkhan Gojaev

Can we create any business processs to solve this issue.

Alok Kumar,

 

Unfortunately we do not have such examples, we recommend that you upgrade to a newer version. 



Best regards,

Orkhan Gojaev

Show all comments

Hello,

Our forms are not sending entries to Creatio since yesterday or early this morning.

Anyone having the same issue?

Like 0

Like

4 comments

Hello,

 

Could you please elaborate a bit on the issue you have? Is there any specific error while using the functionality?

Anastasiia Zhuravel, WordPress auto-updated to 6.2 from 6.1.1 last night and since then, the entries are stuck in my wordpress database and not going into Creatio. I'm using Gravity Forms and I'm not seeing any error message. I also tested another form we use in Drupal 7 and these work fine

Hi Christelle,



Thank you for bringing this issue to our attention.

The connector you are referring to is no longer supported. As such, we have removed it from the Marketplace.

We recommend setting up the integration using the following functionality instead:

 

https://academy.creatio.com/docs/user/customization_tools/web_services

 

https://academy.creatio.com/docs/user/setup_and_administration/base_int…

Christelle Samson,

 

Hi Christellle,

 

 

We have found a new way to integrate WordPress forms using WP engine version 6.2 and upper. Please take a look at the article below. I hope this solution will be helpful for you.

HOW TO CONNECT WORDPRESS FORMS TO CREATIO

 

Show all comments

Hello. In my case, I need to add the ability to upload to excel from pivot tables. As far as I understand, this is a possible corrective version of the "PivotTableViewConfig" module, but as far as I know, modules cannot be loaded into their own package.

Like 0

Like

3 comments

Hello Roman,



You can export pivot table data to Excel from the dashboard only in Freedom UI.



Please find more information here.

Bogdan,

Hello, 

I want to further ask on this. In freedom UI, Nor form edit pages neither list pages edit pages, there is no 'list' type component. Components in these edit pages are:

spline, bar, line, doughnut, area, column, scatter --> ( those are 'chart' types),

Pipeline

Metric

Gauge.

There is NO 'LIST' type component in new UI page/form/list edit Pages. 

Again, how can We 'create' list type dashboard element in new UI? And beside system being in new UI or old UI, How can we export pivot table? 

 

Ismet Sinan Ekici, 

Hello,

Sorry for the misunderstanding, but pivot tables are not currently available in Freedom UI.  You can use pivot tables only in the Classic UI, but unfortunately, there is no way to export them yet.

 

To answer your second question, to create a list element in the dashboard of the Freedom design, you can use a regular list element: 

 

 

Best Regards, 

Halyna 

Show all comments

Hello

Does anyone have any successful experience with authenticating to an external web service that only uses Token-based authentication?

I found a similar post, how the solution was proposed to be passed in the heder of the Authorization request: 

Authorization: Bearer .

Unfortunately, this method did not work. Please help me solve the problem

Like 0

Like

4 comments

Hello Olga,

 

Could you please clarify this question?

What difficulties arise?

Hello, Anastasia.

Now in the CRM - system only two methods of authentication are available - the basic and Auth 2.0, when setting up a web - service 

Only Token - based authentication is available for the web-service that we are trying to integrate with.

How can I configure Token - based authentication?

 

Hi,

I will try to describe the problem in more detail

In the documentation of the web service, in addition to Token-based authentication, there is a description of the authentication method based on OAuth 1.0a

Here is a successful request to Postman

 

When I tried to send the same request from Creatio (I copied the parameters from Postman), I get an error

 



 

Hello Olga,

 

Please review this video material, as it may assist you in implementing your task:

https://www.youtube.com/live/mHaGY1DxETw?feature=share&t=292

https://www.youtube.com/live/ehjfcBxpLsQ?feature=share&t=247

Show all comments