diff --git a/addons/knowledge/models/knowledge_article.py b/addons/knowledge/models/knowledge_article.py index 06e34ed3fa7..bebecce9047 100644 --- a/addons/knowledge/models/knowledge_article.py +++ b/addons/knowledge/models/knowledge_article.py @@ -859,6 +859,8 @@ class Article(models.Model): 'body': Markup('

%s

') % title, 'name': title, }) + else: + values['body'] = Markup('


') if parent: if not is_private and parent.category == "private": diff --git a/addons/knowledge/static/src/js/knowledge_controller.js b/addons/knowledge/static/src/js/knowledge_controller.js index 09a49da2b02..3e3bc6006d7 100644 --- a/addons/knowledge/static/src/js/knowledge_controller.js +++ b/addons/knowledge/static/src/js/knowledge_controller.js @@ -14,6 +14,7 @@ const KnowledgeArticleFormController = FormController.extend({ 'click .o_knowledge_add_icon': '_onAddRandomIcon', 'click .o_knowledge_add_cover': '_onAddCover', 'click #knowledge_search_bar': '_onSearch', + 'click .o_breadcrumb_article_name': '_onArticleBreadcrumbClick', 'change .o_breadcrumb_article_name': '_onRename', 'click i.o_toggle_favorite': '_onToggleFavorite', 'input .o_breadcrumb_article_name': '_adjustInputSize', @@ -102,8 +103,35 @@ const KnowledgeArticleFormController = FormController.extend({ * @param {Event} event */ _onRename: async function (event) { + var name = event.currentTarget.value; + if (name.length === 0) { + name = _t('New Article'); + } const id = await this._getId(); - await this._rename(id, event.currentTarget.value); + await this._rename(id, name); + }, + + /** + * When the user clicks on the name of the article, checks if the article + * name hasn't been set yet. If it hasn't, it will look for a title in the + * body of the article and set it as the name of the article. + * @param {Event} event + */ + _onArticleBreadcrumbClick: async function (event) { + const name = event.currentTarget.value; + if (name === _t('New Article')) { + const $articleTitle = this.$('.o_knowledge_editor h1'); + if ($articleTitle.text().length !== 0) { + this.$('.o_breadcrumb_article_name').val($articleTitle.text()); + this.trigger_up('field_changed', { + dataPointID: this.handle, + changes: { + 'name': $articleTitle.text(), + } + }); + this._rename(await this._getId(), $articleTitle.text()); + } + } }, /** @@ -269,6 +297,7 @@ const KnowledgeArticleFormController = FormController.extend({ */ _rename: async function (id, name) { this.$(`.o_knowledge_tree .o_article[data-article-id="${id}"] > .o_article_handle > .o_article_name`).text(name); + this.$(`.o_breadcrumb_article_name`).val(name); }, /**