Добрый день!

Хочу добавить панель редактирования текста к существующему полю сообщения, но необходимая панель у него не появляется



Следовал инструкции https://community.terrasoft.ua/questions/izmenenie-teksta-v-kommentariy…



Для этого создал замещающую модель представления базовой схемы SocialFeed из пакета ESN, после чего удалось отрисовать новое поле с редактором



 

diff: [
// Сообщение в которое хочу добавить редактор текста 
//Зеленый блок на картинке
{
	"operation": "insert",
	"name": "SocialMessageEdit",
	"parentName": "SocialMessageEditContainer",
	"propertyName": "items",
	"values": {
		"generateId": false,
		"className": "Terrasoft.ESNHtmlEdit",
		"itemType": Terrasoft.ViewItemType.MODEL_ITEM,
		"dataValueType": Terrasoft.DataValueType.TEXT,
		"contentType": Terrasoft.ContentType.RICH_TEXT,
		"labelConfig": {
			"visible": false
		},
		"keydown": {bindTo: "onKeyDown"},
		"enterkeypressed": {bindTo: "onEnterKeyPressed"},
		"value": {bindTo: "SocialMessageText"},
		"placeholder": {bindTo: "Resources.Strings.WritePostHint"},
		"classes": {
			htmlEditClass: ["postMessage", "placeholderOpacity", "feedMaxWidth"]
		},
		"focus": {bindTo: "onSocialMessageEditFocus"},
		"focused": {bindTo: "SocialMessageEditFocused"},
		"blur": {bindTo: "onSocialMessageEditBlur"},
		"markerValue": "postMessageMemoEdit",
		"height": "26px",
		"prepareList": {bindTo: "prepareEntitiesExpandableList"},
		"list": {bindTo: "entitiesList"},
		"listViewItemRender": {bindTo: "onEntitiesListViewItemRender"},
		"autoGrow": true,
		"autoGrowMinHeight": 26,
		"customItemAttributes": {
			schema: {
				property: "schemaName",
				attribute: "data-schemaname"
			}
		}
	}
},
 
//Поле с редактором, которое удалось добавить
//Красный блок на картинке
{				
	"operation": "insert", // Операция добавления компонента на страницу.
	"name": "Message",//"Message", // Имя колонки схемы, к которой привязан компонент.
	"parentName": "SocialMessageEditContainer", // Мета-имя родительского контейнера, в который добавляется поле.
	"propertyName": "items", // Поле добавляется в коллекцию компонентов родительского элемента.
	"values": {
		// Заголовок поля.
		"contentType": this.Terrasoft.ContentType.RICH_TEXT,
		"labelConfig": {
			"visible": false
		},
		// Расположение поля.
		"layout": {						
			"column": 0, // Номер столбца.						
			"row": 0, // 5 Номер строки.						
			"colSpan": 12, // 12 Диапазон занимаемых столбцов.
			"layoutName": "SocialMessageEditContainer"
		},
		"height": "50px",
		"styles": {
			"background-color": "white"
		},
		"controlConfig": {  //здесь и ниже код для того, чтобы в примечания можно было добавлять картинки
			"imageLoaded": {
				"bindTo": "SortIcon"//"insertImagesToNotes"
			},
			"images": {
				"bindTo": "SummariesIcon"//"NotesImagesCollection"
			}
		}
	}
}
]

Вот такой результат вижу сейчас

Изображение удалено.

Нравится

5 комментариев

Если попробовать операцией merge изменить зеленый блок, функциональность не проявляется



 

{				
	"operation": "merge", // Операция добавления компонента на страницу.
	"name": "SocialMessageEdit",//"Message", // Имя колонки схемы, к которой привязан компонент.
	"parentName": "SocialMessageEditContainer", // Мета-имя родительского контейнера, в который добавляется поле.
	"propertyName": "items", // Поле добавляется в коллекцию компонентов родительского элемента.
	"values": {
		// Заголовок поля.
		"contentType": this.Terrasoft.ContentType.RICH_TEXT,
		"labelConfig": {
			"visible": false
		},
		// Расположение поля.
		"layout": {						
			"column": 0, // Номер столбца.						
			"row": 0, // 5 Номер строки.						
			"colSpan": 12, // 12 Диапазон занимаемых столбцов.
			"layoutName": "SocialMessageEditContainer"
		},
		"height": "50px",
		"styles": {
			"background-color": "white"
		},
		"controlConfig": {  //здесь и ниже код для того, чтобы в примечания можно было добавлять картинки
			"imageLoaded": {
				"bindTo": "SortIcon"//"insertImagesToNotes"
			},
			"images": {
				"bindTo": "SummariesIcon"//"NotesImagesCollection"
			}
		}
	}
}

 

Полный код замещающей модели представления базовой схемы SocialFeed :



https://datagr-my.sharepoint.com/:u:/g/personal/serhii_udielov_datagroup_ua/Efsq1LLC5wJOuTQV_9Ld4nMB3Y12zlmuLfn96ROGOyQHJA?e=jjhI5y 

Добрый день,

 

У меня получилось такое сделать, только нужно еще с кнопкой Publish доделать (пробовал через новые контейнеры сделать, но кнопку адекватно переместить не смог):

Сам код:

define("SocialFeed", ["ESNHtmlEditModule", "SocialMentionUtilities", "css!SocialMessagePublisherModule", "NotesUtilities"
], function() {
	return {
      	entitySchemaName: "SocialMessage",
      	mixins: {
			NotesUtilities: "Terrasoft.NotesUtilities"
		},
      	attributes: {
        	"NotesImagesCollection": {dataValueType: Terrasoft.DataValueType.COLLECTION}
		},
 
      	methods: {
          /**
			 * @inheritdoc
			 * @overridden
			 */
          	init: function(callback, scope) {
                this.callParent(arguments); 
                this.mixins.NotesUtilities.initNotesImagesCollection.call(this);
        	},
          	onNotesImagesUploadComplete: function() {
                this.hideBodyMask(); 
                this.updateFileDetail(); 
        	}, 
        	onNotesImagesUpload: function() { 
                this.showBodyMask(); 
        	},
 
          	onButtonClick: function(){
				console.log("Test");
            },
 
			postPublishActionsVisible: function() {
				return true;
			}
        },
 
		diff: /**SCHEMA_DIFF*/[
			{
					"operation": "insert",
					"name": "MessageContainer",
					"parentName": "SocialFeedHeader",
					"propertyName": "items",
					"values": {
						"itemType": Terrasoft.ViewItemType.CONTAINER,
						"items": []
					}
				},
			{				
				"operation": "insert",
				"name": "Message",
				"parentName": "MessageContainer", 
				"propertyName": "items",
				"values": {
					"contentType": this.Terrasoft.ContentType.RICH_TEXT,
					"labelConfig": {
						"visible": false
					},
					"value": {bindTo: "SocialMessageText"},
					"layout": {						
						"column": 0,						
						"row": 0,						
						"colSpan": 12,
                      	"layoutName": "SocialFeedHeader"
					},
					"height": "50px",
					"styles": {
							"background-color": "white"
					},
					"controlConfig": {
						"imageLoaded": {
							"bindTo": "SortIcon"
						},
						"images": {
							"bindTo": "NotesImagesCollection"
						}
					}
				}
			},
 
			{
					"operation": "insert",
					"name": "MessagePublishButtonContainer",
					"parentName": "MessageContainer",
					"propertyName": "items",
					"values": {
						"generateId": false,
						"itemType": Terrasoft.ViewItemType.CONTAINER,
						"classes": {
							wrapClassName: ["publishButtonWrap"]
						},
						"visible": {bindTo: "postPublishActionsVisible"},
						"items": []
					}
				},
 
			{
					"operation": "insert",
					"parentName": "MessagePublishButtonContainer",
					"name": "MessagePublishButton",
					"propertyName": "items",
					"values": {
						"generateId": false,
						"caption": {bindTo: "Resources.Strings.Publish"},
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"style": Terrasoft.controls.ButtonEnums.style.GREEN,
						"click": {bindTo: "onPostPublishClick"},
						"markerValue": "publishPostMessageButton",
						"classes": {
							textClass: ["floatRight"]
						},
						"clickDebounceTimeout": 1000
					}
				},
			{
				"operation": "remove",
				"name": "SocialMessageContainer"
			}
		]/**SCHEMA_DIFF*/
	};
});

Сообщения публикуются при нажатии на Publish, осталось только переместить саму кнопку.

Oleg Drobina,

Супер! Получилось отобразить редактор, поигрался немного с индексами и вышло более-менее корректно отобразить необходимые панельки





Но теперь появилась следующая проблема :

при попытке добавить изображение с локального устройства, ловлю такое (картинка не загружаеться):





Мой текущий код елемента :

{                

              "operation": "insert",

                "name": "Message",

                "parentName": "MessageContainer", 

                "propertyName": "items",

                "values": {

                      //"bindTo": "Message",

                      "itemType": Terrasoft.ViewItemType.MODEL_ITEM,

                      //"dataValueType": Terrasoft.DataValueType.TEXT,

                    "contentType": this.Terrasoft.ContentType.RICH_TEXT,

                      //"className": "Terrasoft.ESNHtmlEdit", //- removed redactor

                    "labelConfig": {

                        "visible": false

                    },

                      // "keydown": {bindTo: "onKeyDown"}, //invalid logic in side chat

                    // "enterkeypressed": {bindTo: "onEnterKeyPressed"}, //invalid logic in side chat

                    "value": {bindTo: "SocialMessageText"}, //+

                    //"placeholder": {bindTo: "Resources.Strings.WritePostHint"},

                      "focus": {bindTo: "onSocialMessageEditFocus"},

                    "focused": {bindTo: "SocialMessageEditFocused"},

                    "blur": {bindTo: "onSocialMessageEditBlur"},

                    "markerValue": "postMessageMemoEdit",

                    "layout": {                        

                        "column": 0,                        

                        "row": 0,                        

                        "colSpan": 12,

                          "layoutName": "SocialFeedHeader"

                    },

                    "height": "26px",

                      //"classes": {

                    //        htmlEditClass: ["placeholderOpacity"]

                    //},

                    "styles": {

                            "background-color": "white"

                    },

                    "controlConfig": {                          

                        "imageLoaded": {

                            "bindTo": "SortIcon"

                        },

                        "images": {

                            "bindTo": "NotesImagesCollection"

                        }

                    }

                },

                  "index" : 0

            },

Поправил код, теперь изображения загружаются корректно

 

 define("SocialFeed", ["ESNHtmlEditModule", "SocialMentionUtilities", "css!SocialMessagePublisherModule", "NotesUtilities"
], function() {
	return {
      	entitySchemaName: "SocialMessage",
      	mixins: {
			NotesUtilities: "Terrasoft.NotesUtilities"
		},
      	attributes: {
        	"NotesImagesCollection": {dataValueType: Terrasoft.DataValueType.COLLECTION}
		},
 
      	methods: {
          /**
			 * @inheritdoc
			 * @overridden
			 */
          	init: function(callback, scope) {
                this.callParent(arguments); 
                this.mixins.NotesUtilities.initNotesImagesCollection.call(this);
        	},
			postPublishActionsVisible: function() {
				return true;
			}
        },
 
		diff: /**SCHEMA_DIFF*/[
			{
					"operation": "insert",
					"name": "MessageContainer",
					"parentName": "SocialFeedHeader",
					"propertyName": "items",
					"values": {
						"itemType": Terrasoft.ViewItemType.CONTAINER,
						"items": []
					}
				},
			{				
				"operation": "insert",
				"name": "Message",
				"parentName": "MessageContainer", 
				"propertyName": "items",
				"values": {
					"contentType": this.Terrasoft.ContentType.RICH_TEXT,
					"labelConfig": {
						"visible": false
					},
					"value": {bindTo: "SocialMessageText"},
					"layout": {						
						"column": 0,						
						"row": 0,						
						"colSpan": 12,
                      	"layoutName": "SocialFeedHeader"
					},
					"height": "50px",
					"styles": {
							"background-color": "white"
					},
					"controlConfig": {
						"imageLoaded": {
							"bindTo": "insertImagesToNotes"
						},
						"images": {
							"bindTo": "NotesImagesCollection"
						}
					}
				}
			},
 
			{
					"operation": "insert",
					"name": "MessagePublishButtonContainer",
					"parentName": "MessageContainer",
					"propertyName": "items",
					"values": {
						"generateId": false,
						"itemType": Terrasoft.ViewItemType.CONTAINER,
						"classes": {
							wrapClassName: ["publishButtonWrap"]
						},
						"visible": {bindTo: "postPublishActionsVisible"},
						"items": []
					}
				},
 
			{
					"operation": "insert",
					"parentName": "MessagePublishButtonContainer",
					"name": "MessagePublishButton",
					"propertyName": "items",
					"values": {
						"generateId": false,
						"caption": {bindTo: "Resources.Strings.Publish"},
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"style": Terrasoft.controls.ButtonEnums.style.GREEN,
						"click": {bindTo: "onPostPublishClick"},
						"markerValue": "publishPostMessageButton",
						"classes": {
							textClass: ["floatRight"]
						},
						"clickDebounceTimeout": 1000
					}
				},
			{
				"operation": "remove",
				"name": "SocialMessageContainer"
			}
		]/**SCHEMA_DIFF*/
	};
});

 

Показать все комментарии

Здравствуйте. Я вместе с группой опытных программистов разрабатываю редактор скриптов Terrasoft CRM, который на данный момент включает в себя такие возможности как автодополнение, полная подсветка синтаксиса и еще несколько функций необходимых полноценному редактору. Предположительная стоимость продукта - $ 199 за одну лицензию. Интересно знать Ваше мнение по разрабатываемому продукту. Что бы Вы хотели видеть в данном редакторе, готовы ли Вы или Ваша компания купить данный продукт для удобства разработки и, как следствие, роста Вашей продуктивности работы?

Нравится

8 комментариев

Скрины в студию!

Хотелось бы увидеть демонстрацию функциональных возможностей в видео формате.

так как функциональная часть и визуальная пока разделены, я кинул только внешний вид редактора. Для удобства пользования, разработанный интерфейс редактора особо не отличается от интерфейса редактора скриптов террасофт.
Вопрос в том стоит ли продолжать разработку или это только я чувствую острую необходимость в нормальном редакторе кода.

Андрей, сейчас редактор скрипта (как и дизайнеры других сервисов) улучшается и в версии 3.4.1 добавлено немало полезной функциональности. Например, функция автодополненния кода (CodeCompletion) пересматривается и возможно будет расширена дополнением по классам ядра.

Уточните, чего именно вам не хватает в редакторе скрипта в TSAdmin? Возможно это уже будет в новой версии 3.4.1.

Планируется редактор только скриптов, без других типов объектов?
А не рассматривали вариантов в виде плагина к навороченной IDE вроде MSVS?

Уточните, чего именно вам не хватает в редакторе скрипта в TSAdmin? Возможно это уже будет в новой версии 3.4.1.

Хотелось бы подсветку выделенного слова и его совпадение в функции.

Константин, так сейчас выглядит мой дизайнер скрипта в TSAdmin (версия 3.4.1.62):

Все похожие слова при выделении или при поиске слова выделяются.

Вот настройки дизайнера скриптов в TSAdmin (можно выбрать цвет фона, размер и цвет шрифта, цвет выделения похожих слов и т.д.):
Окно опций

Интересно, продукт вышел?

Показать все комментарии

Здравствуйте!

Неоднократно пользователям приходится работать с сервисами выгруженными в *xml.
Привожу небольшой список редакторов для работы с данным форматом.

1) Для просмотра скриптов - XMLNotepad (официальный продукт Microsoft);
2) Для редактирования - Notepad (после редактирования сохраняет файл, после чего его можна загрузить в Terrasoft Administrator, т.к. другие редакторы меняют *.xml)
3) Для работы (редактирования и просмотра) - Altova;
www.altova.com/simpledownload2.html?gclid=CNzj9r6-nZgCFYoH3godyWtRnA
www.altova.com/products/xmlspy/xml_editor.html
4) Для сравнивания сервисов в проектах (с доработками конфигурации) - Araxis.

Поделитесь, возможно, Вы используете другое ПО для данных целей?!

Нравится

Поделиться

5 комментариев

Для меня незаменимым инструментом является VIM (vimdiff в комплекте) + FAR

Продвинутый редактор — кошмар для случайного пользователя. Если его удается в конце-концов закрыть, то вздыхаешь с облегчением и твердой уверенностью, что больше не будешь запускать эту программу ни в коем случае.
Действительно, такой редактор нельзя просто открыть и начать работать — требуется предварительная подготовка. Зато стоит раз испытать его в работе, и поражаешься, как мог обходиться без него раньше.
http://ru.wikibooks.org/wiki/Vim

Из графических, нравиться: Notepad++

С редактированием XML так же неплохо справляется Microsoft Visual Studio, наверняка он стоит, как минимум для отладки :)

Для отладки - Microsoft Visual Studio :-)

Может немного не в тему, но все жу :)
Сталкивался с задачами открытия больших xml - файлов (100mb+). Быстрее всех парсит:
1)XMLNotepad (официальный продукт Microsoft); - около минуты(вероятно SAX).
в то время как Visual Studio, NotePad и еще несколько редакторов(названия уже не вспомню) загибаются наглухо.

Использую для работы XMLMarker версии 1.1(free soft) для работы с небольшими файлами меня вполне устраивает, контролирует синтаксис, имеет три окна отображения информации из файла
-Дерево(в этом окне удобно осуществлять навигацию);
-Текстовый файл(где осуществляется редактирование, подсвечивается узел, на котором находиться курсор);
-Таблица(табличное представление узла, на котором установлен курсор с показом атрибутов).
XMLNotepad - не понравился после XMLMarker.
P.S. Сейчас не могу сбросить ссылку на проект, нет под рукой... постараюсь не забыть.

Показать все комментарии