Отображения меню блока решения для статьи базы знаний

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

Вопрос.
Как и что сделать, чтобы отобразить эту панель инструментов под учетной записью пользователя портала?

Нравится

4 комментария

Дамиан, эта логика реализована в схеме HtmlEditModule, в функции:

updateToolbar: function() {
	var id = this.id;
	var toolbar = this.toolbar;
	var memo = this.memo;
	if (!toolbar || !memo) {
		return;
	}
	var plainTextMode = this.plainTextMode;
	var enabled = this.enabled;
	var enabledInRichTextMode = !plainTextMode && enabled;
	var enabledInPlainTextMode = plainTextMode && enabled;
	var hideModeButtons = this.hideModeButtons;
	toolbar.fontFamily.setEnabled(enabledInRichTextMode);
	toolbar.fontSize.setEnabled(enabledInRichTextMode);
	toolbar.fontStyleBold.setEnabled(enabledInRichTextMode);
	toolbar.fontStyleItalic.setEnabled(enabledInRichTextMode);
	toolbar.fontStyleUnderline.setEnabled(enabledInRichTextMode);
	toolbar.fontColor.setEnabled(enabledInRichTextMode);
	toolbar.hightlightColor.setEnabled(enabledInRichTextMode);
	toolbar.numberedList.setEnabled(enabledInRichTextMode);
	toolbar.bulletedList.setEnabled(enabledInRichTextMode);
	toolbar.maximized.setEnabled(enabledInRichTextMode);
	toolbar.indentList.setEnabled(enabledInRichTextMode);
	toolbar.outdentList.setEnabled(enabledInRichTextMode);
	toolbar.justifyLeft.setEnabled(enabledInRichTextMode);
	toolbar.justifyCenter.setEnabled(enabledInRichTextMode);
	toolbar.justifyRight.setEnabled(enabledInRichTextMode);
	toolbar.image.setEnabled(enabledInRichTextMode);
	toolbar.link.setEnabled(enabledInRichTextMode);
	toolbar.htmlMode.setEnabled(enabledInPlainTextMode);
	toolbar.plainMode.setEnabled(enabledInRichTextMode);
	toolbar.htmlMode.setPressed(enabledInRichTextMode);
	toolbar.plainMode.setPressed(enabledInPlainTextMode);
	toolbar.htmlMode.setVisible(!hideModeButtons);
	toolbar.plainMode.setVisible(!hideModeButtons);
	memo.setReadonly(!enabled);
	var extToolbar = Ext.get(id + "-" + this.controlElementPrefix + "-toolbar");
	if (extToolbar) {
		extToolbar.dom.style.display = !enabled ? "none" : "table-cell";
	}
	var extHtmlEdit = Ext.get(id + "-" + this.controlElementPrefix + "-htmltext");
	if (extHtmlEdit) {
		extHtmlEdit.dom.style.display = plainTextMode ? "none" : "table-cell";
	}
	var extPlainText = Ext.get(id + "-" + this.controlElementPrefix + "-plaintext");
	if (extPlainText) {
		extPlainText.dom.style.display = !plainTextMode ? "none" : "table-cell";
	}
	var editor = this.editor;
	if (editor) {
		// TODO: 200083
		try {
			editor.setReadOnly(!enabled);
		} catch (e) {
			if (editor.document) {
				editor.document.getBody().$.contentEditable = enabled;
			}
		}
		if (extHtmlEdit) {
			extHtmlEdit.dom.style.backgroundColor = enabled ? "#ffffff" : "#f9f9f9";
		}
	}
},

Проверка условий видимости панели делается в 10 и 11 строках. То есть либо у поля установлено свойство plainTextMode, либо он неактивен. Если у Вас не было никаких доработок, вероятнее всего, вторая причина. По умолчанию в разделе базы знаний для портальных пользователей записи доступны только для чтения, и это, и другие поля просто заблокированы. В таком случае панель форматирования и не нужна. Чтобы она появилась, надо портальным пользователям дать права на создание/изменение статей БЗ:

Выставил права доступа согласно рекомендациям - не помогло.

Дамиан, как оказалось, свойство «enabled» не относится к правам, а задаётся непосредственно кодом в схеме карточки.

 

В PortalKnowledgeBasePage у трёх полей (название, тип и заметки) оно определено как false:

{
	"operation": "merge",
	"name": "Name",
	"values": {
		"enabled": false
	}
},
{
	"operation": "merge",
	"name": "Type",
	"values": {
		"enabled": false
	}
},
{
	"operation": "merge",
	"name": "Notes",
	"values": {
		"layout": {
			"column": 0,
			"row": 0,
			"colSpan": 24,
			"rowSpan": 1
		},
		"enabled": false
	}
},

Если в пакете Custom переопределить эту страницу, поменять на true, то поля (или только заметки, если менять лишь последнее) разблокируются. 

Спасибо, то что нужно. Разобрался с этим только сейчас.
Создал замещающую схему страницы портального раздела "Базы знаний" (PortalKnowledgeBasePage). Внутри неё в блоке diff прописал ваш код для заметок. Всё заработало, панель с кнопкой "развернуть во весь экран" появилась.

diff: /**SCHEMA_DIFF*/[
// Заметки.
{
  "operation": "merge",
  "name": "Notes",
  "values": {
    "layout": {
      "column": 0,
      "row": 0,
      "colSpan": 24,
      "rowSpan": 1
    },
    "enabled": true
  }
},
]/**SCHEMA_DIFF*/

 

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