update 20240611
This commit is contained in:
@@ -83,9 +83,10 @@
|
||||
'web.qunit_suite_tests': [
|
||||
'knowledge/static/tests/knowledge_form_view_tests.js',
|
||||
'knowledge/static/tests/form_controller_patch_tests.js',
|
||||
'knowledge/static/tests/knowledge_external_embeds_hotkeys.js',
|
||||
'knowledge/static/tests/knowledge_external_embeds_tests.js',
|
||||
'knowledge/static/tests/knowledge_form_view_tests.js',
|
||||
'knowledge/static/tests/knowledge_behaviors_upgrade_tests.js',
|
||||
'knowledge/static/tests/knowledge_thread_tests.js',
|
||||
'knowledge/static/tests/knowledge_wysiwyg_collaboration_tests.js',
|
||||
('include', 'knowledge.assets_wysiwyg'),
|
||||
],
|
||||
|
||||
@@ -71,6 +71,16 @@ class KnowledgeController(http.Controller):
|
||||
))
|
||||
|
||||
def _redirect_to_portal_view(self, article):
|
||||
url = '/knowledge/article'
|
||||
if article.id:
|
||||
url += '#id=%s' % article.id
|
||||
return request.redirect(url)
|
||||
|
||||
@http.route('/knowledge/article', type='http', auth='user')
|
||||
def _access_knowledge_portal_view(self):
|
||||
if request.env.user._is_internal():
|
||||
return request.redirect('/web')
|
||||
|
||||
# We build the session information necessary for the web client to load
|
||||
session_info = request.env['ir.http'].session_info()
|
||||
user_context = dict(request.env.context)
|
||||
@@ -82,7 +92,6 @@ class KnowledgeController(http.Controller):
|
||||
|
||||
session_info.update(
|
||||
cache_hashes=cache_hashes,
|
||||
knowledge_article_id=article.id,
|
||||
user_companies={
|
||||
'current_company': request.env.company.id,
|
||||
'allowed_companies': {
|
||||
@@ -148,7 +157,7 @@ class KnowledgeController(http.Controller):
|
||||
'id': member['member_id'],
|
||||
'partner_id': partner_id,
|
||||
'partner_name': member['partner_name'],
|
||||
'partner_email': member['partner_email'],
|
||||
'partner_email': member['partner_email'] if not member['partner_share'] or partner_id == request.env.user.partner_id.id or request.env.user._is_internal() else False,
|
||||
'permission': member['permission'],
|
||||
'based_on': f'{member["based_on_icon"] or request.env["knowledge.article"]._get_no_icon_placeholder()} {member["based_on_name"] or _("Untitled")}' if member['based_on'] else False,
|
||||
'based_on_id': member['based_on'] if member['based_on'] in based_on_articles.ids else False,
|
||||
|
||||
@@ -104,11 +104,15 @@
|
||||
<span style="font-size: 14px;">You can use the clipboard as a description, a message or simply copy it to your clipboard! 👌</span>
|
||||
</li>
|
||||
<li>
|
||||
<span style="font-size: 14px;">Not sure how to do it? <a href="https://www.youtube.com/watch?v=r_r8rl73asE">See how it works <i class="fa fa-youtube-play"/></a>.</span>
|
||||
<span style="font-size: 14px;">Not sure how to do it? Check the video below 👇</span>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="o_knowledge_behavior_anchor o_knowledge_behavior_type_video"
|
||||
data-behavior-props="%7B%22videoId%22%3A%22uEdaZRqa1FQ%22%2C%22platform%22%3A%22youtube%22%2C%22params%22%3A%7B%22rel%22%3A0%7D%7D"
|
||||
data-oe-protected="true"/>
|
||||
<p><br /></p>
|
||||
<div class="o_knowledge_behavior_anchor o_knowledge_behavior_type_template" data-oe-protected="true">
|
||||
<div class="d-flex">
|
||||
<div class="o_knowledge_template_label align-middle">Clipboard</div>
|
||||
|
||||
+72
-28
@@ -5,16 +5,16 @@
|
||||
# Translators:
|
||||
# Mustafa Rawi <mustafa@cubexco.com>, 2023
|
||||
# Martin Trigaux, 2023
|
||||
# Malaz Abuidris <msea@odoo.com>, 2023
|
||||
# Wil Odoo, 2023
|
||||
# Malaz Abuidris <msea@odoo.com>, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Wil Odoo, 2023\n"
|
||||
"Last-Translator: Malaz Abuidris <msea@odoo.com>, 2024\n"
|
||||
"Language-Team: Arabic (https://app.transifex.com/odoo/teams/41243/ar/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -80,6 +80,19 @@ msgstr "عدد الموظفين: "
|
||||
msgid "#Is Favorite"
|
||||
msgstr "#مفضل "
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
"\"%(article_item_name)s\" هو عنصر مقال من \"%(article_name)s\" ولا يمكن "
|
||||
"استعادته من تلقاء نفسه. تواصل مع صاحب \"%(article_name)s\" ليقوم باستعادته "
|
||||
"عوضاً عن ذلك. "
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -931,9 +944,9 @@ msgstr ""
|
||||
" </span>\n"
|
||||
" </span>\n"
|
||||
" <span style=\"font-size: 14px;\">\n"
|
||||
" — هذه\n"
|
||||
" <span style=\"font-weight: bolder;\"><font class=\"text-o-color-2\">أشياؤك</font></span>,\n"
|
||||
" الأشياء التي تبقيها لنفسك\n"
|
||||
" — هذه الأشياء\n"
|
||||
" <span style=\"font-weight: bolder;\"><font class=\"text-o-color-2\">لك وحدك</font></span>،\n"
|
||||
" هي الأشياء التي عليك إبقاؤها خاصة\n"
|
||||
" (<span style=\"font-style: italic;\">المسودات، قوائم المهام، ...</span>)\n"
|
||||
" </span>"
|
||||
|
||||
@@ -1382,6 +1395,15 @@ msgstr ""
|
||||
"<span style=\"font-size: 14px;\">أتحتاج إلى هذا المستند في مكان ما؟ يمكنك "
|
||||
"العودة إلى هنا عن طريق الضغط على أيقونة 📗 في الدردشة.</span> "
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
"<span style=\"font-size: 14px;\">لست واثقاً من كيفية القيام بذلك؟ شاهد "
|
||||
"الفيديو أدناه 👇</span> "
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -2474,6 +2496,7 @@ msgstr "خصائص عنصر المقال "
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -3460,7 +3483,7 @@ msgstr "تحرير "
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "تحرير"
|
||||
@@ -3680,6 +3703,13 @@ msgstr "الجنس: ذ "
|
||||
msgid "Gender(s): W"
|
||||
msgstr "الجنس: أ "
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr "إنشاء مقال باستخدام الذكاء الاصطناعي "
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -4779,15 +4809,6 @@ msgstr "نقل إلى سلة المهملات "
|
||||
msgid "Move to Workspace"
|
||||
msgstr "النقل إلى مساحة العمل "
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr "النقل إلى الهدف %(article_name)s غير واضح. يجب تحديد الفئة. "
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -4968,11 +4989,6 @@ msgstr "لا توجة مرحلة بعد! "
|
||||
msgid "No template yet."
|
||||
msgstr "لا يوجد قالب بعد. "
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr "لست متأكداً من كيفية القيام بذلك؟ "
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -5063,6 +5079,13 @@ msgstr "Onboarding.pdf"
|
||||
msgid "Ongoing"
|
||||
msgstr "جاري"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr "يُسمَح فقط للمستخدمين الداخليين الوصول إلى نافذة العرض هذه. "
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -5117,7 +5140,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -5533,7 +5556,6 @@ msgstr "إزالة من المفضلة "
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5768,11 +5790,6 @@ msgstr "القسم"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr "اذهب إلى الطبيب ثم أرسل العذر الطبي. "
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr "ألقِ نظرة على كيفية عمله <i class=\"fa fa-youtube-play\"/>"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -6239,6 +6256,15 @@ msgstr "معرض ريادة الأعمال المستقبلي "
|
||||
msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr "يحتاج المقال '%s' إلى مستخدم واحد على الأقل مع صلاحية 'الكتابة'. "
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr "مكان هدف %(article_name)s غير واضح. يجب تحديد الفئة. "
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6786,6 +6812,13 @@ msgstr "مساحة العمل"
|
||||
msgid "Write"
|
||||
msgstr "اكتب "
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr "اكتب مقالاً عن "
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6875,6 +6908,17 @@ msgstr "لا يمكنك حفظ المفضلة في هذا المقال "
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr "لا يمكنك مغادرة مقال كنت الكاتب الأخير فيه "
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
"لا يمكنك نقل %(article_name)s تحت %(item_name)s, حيث إن %(item_name)s هو "
|
||||
"عنصر مقال. حوّل %(item_name)s إلى مقال أولاً. "
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+423
-181
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+73
-28
@@ -4,15 +4,15 @@
|
||||
#
|
||||
# Translators:
|
||||
# Wil Odoo, 2023
|
||||
# Larissa Manderfeld, 2023
|
||||
# Larissa Manderfeld, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Larissa Manderfeld, 2023\n"
|
||||
"Last-Translator: Larissa Manderfeld, 2024\n"
|
||||
"Language-Team: German (https://app.transifex.com/odoo/teams/41243/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -78,6 +78,19 @@ msgstr "# Mitarbeiter:"
|
||||
msgid "#Is Favorite"
|
||||
msgstr "#Ist Favorit"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
"„%(article_item_name)s“ ist ein Artikelelement von „%(article_name)s“ und "
|
||||
"kann nicht alleine wiederhergestellt werden. Kontaktieren Sie stattdessenden"
|
||||
" Eigentümer von „%(article_name)s“, um es wiederherzustellen."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -1389,6 +1402,15 @@ msgstr ""
|
||||
"Kommen Sie hierhin zurück, indem Sie auf das Symbol 📗 im Chatter "
|
||||
"klicken.</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Wie geht das? Sehen Sie sich das folgende "
|
||||
"Video an 👇</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -2499,6 +2521,7 @@ msgstr "Eigenschaften für Artikelelemente"
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -2633,7 +2656,7 @@ msgstr "Rückstand"
|
||||
#: code:addons/knowledge/static/src/components/item_calendar_props_dialog/item_calendar_props_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Base Color On"
|
||||
msgstr "Farben basieren auf"
|
||||
msgstr "Farbe basieren auf"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -3505,7 +3528,7 @@ msgstr "BEARBEITEN"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "Bearbeiten"
|
||||
@@ -3727,6 +3750,13 @@ msgstr "Geschlecht(er): M"
|
||||
msgid "Gender(s): W"
|
||||
msgstr "Geschlecht(er): W"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr "Einen Artikel mit KI generieren"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -4843,17 +4873,6 @@ msgstr "In Papierkorb verschieben"
|
||||
msgid "Move to Workspace"
|
||||
msgstr "In Arbeitsbereich verschieben"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr ""
|
||||
"Bewegung zum Ziel von %(article_name)s ist mehrdeutig, Sie sollten die "
|
||||
"Kategorie bestimmen."
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -5034,11 +5053,6 @@ msgstr "Noch keine Phase!"
|
||||
msgid "No template yet."
|
||||
msgstr "Noch keine Vorlage."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr "Sie wissen nicht, wie das funktioniert?"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -5129,6 +5143,13 @@ msgstr "Einführungsphase.pdf"
|
||||
msgid "Ongoing"
|
||||
msgstr "Laufend"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr "Nur interne Benutzer haben Zugriff auf diese Ansicht."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -5184,7 +5205,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -5607,7 +5628,6 @@ msgstr "Aus Favoriten entfernen"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5842,11 +5862,6 @@ msgstr "Abschnitt"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr "Gehen Sie zum Arzt und senden Sie uns das ärztliche Attest."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr "So geht's: <i class=\"fa fa-youtube-play\"/>!"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -6315,6 +6330,17 @@ msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr ""
|
||||
"Der Artikel „%s“ benötigt mindestens ein Mitglied mit „Schreiben“-Zugriff."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr ""
|
||||
"Die Zielplatzierung von %(article_name)s ist mehrdeutig, Sie sollten die "
|
||||
"Kategorie bestimmen."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6883,6 +6909,13 @@ msgstr "Arbeitsbereich"
|
||||
msgid "Write"
|
||||
msgstr "Schreiben"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr "Schreiben Sie einen Artikel über"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6978,6 +7011,18 @@ msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr ""
|
||||
"Sie können einen Artikel, für den Sie der letzte Autor sind, nicht verlassen"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
"Sie können %(article_name)s nicht unter %(item_name)s verschieben, da "
|
||||
"%(item_name)s ein Artikelelement ist. Wandeln Sie %(item_name)s zuerst in "
|
||||
"einen Artikel um."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
+685
-323
File diff suppressed because it is too large
Load Diff
+137
-94
@@ -3,18 +3,19 @@
|
||||
# * knowledge
|
||||
#
|
||||
# Translators:
|
||||
# Fernanda Alvarez, 2023
|
||||
# Patricia Gutiérrez Capetillo <pagc@odoo.com>, 2023
|
||||
# Wil Odoo, 2023
|
||||
# Iran Villalobos López, 2023
|
||||
# Patricia Gutiérrez Capetillo <pagc@odoo.com>, 2024
|
||||
# Fernanda Alvarez, 2024
|
||||
# Martin Trigaux, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Iran Villalobos López, 2023\n"
|
||||
"Last-Translator: Martin Trigaux, 2024\n"
|
||||
"Language-Team: Spanish (Latin America) (https://app.transifex.com/odoo/teams/41243/es_419/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -78,7 +79,20 @@ msgstr "Número de empleados:"
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__favorite_count
|
||||
msgid "#Is Favorite"
|
||||
msgstr "# Es un favorito"
|
||||
msgstr "#Es favorito"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
"\"%(article_item_name)s\" es un elemento de artículo de \"%(article_name)s\""
|
||||
" y no se puede restaurar por sí mismo. Contacte al dueño de "
|
||||
"\"%(article_name)s\" para poder restaurarlo."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
@@ -175,7 +189,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"<em>\n"
|
||||
" <font class=\"text-600\">\n"
|
||||
" ¿Qué está tratando de lograr con esta campaña?\n"
|
||||
" ¿Qué quiere lograr con esta campaña?\n"
|
||||
" </font>\n"
|
||||
" </em>"
|
||||
|
||||
@@ -190,7 +204,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"<em>\n"
|
||||
" <font class=\"text-600\">\n"
|
||||
" ¿De qué está tratando de convencer a la gente involucrada?\n"
|
||||
" ¿De qué quiere convencer a la gente?\n"
|
||||
" </font>\n"
|
||||
" </em>"
|
||||
|
||||
@@ -283,7 +297,7 @@ msgid ""
|
||||
" </em>"
|
||||
msgstr ""
|
||||
"<em>\n"
|
||||
" <font class=\"text-600\">¿Cómo es que ocurrió?</font>\n"
|
||||
" <font class=\"text-600\">¿Cómo ocurrió?</font>\n"
|
||||
" </em>"
|
||||
|
||||
#. module: knowledge
|
||||
@@ -305,7 +319,7 @@ msgid ""
|
||||
" </em>"
|
||||
msgstr ""
|
||||
"<em>\n"
|
||||
" <font class=\"text-600\">Escriba aquí cualquier otra pregunta o duda que pueda llegar a tener.</font>\n"
|
||||
" <font class=\"text-600\">Escriba aquí cualquier otra pregunta o duda que pueda tener.</font>\n"
|
||||
" </em>"
|
||||
|
||||
#. module: knowledge
|
||||
@@ -490,8 +504,8 @@ msgid ""
|
||||
"<font class=\"text-600\">Detailed Explanation of the feature, with "
|
||||
"screenshots or a GIF</font>"
|
||||
msgstr ""
|
||||
"<font class=\"text-600\">Explicación detallada de la función, incluya "
|
||||
"capturas de pantalla o un GIF</font>"
|
||||
"<font class=\"text-600\">Explicación detallada de la función en la que se "
|
||||
"incluya capturas de pantalla o un GIF</font>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_account_management
|
||||
@@ -514,8 +528,8 @@ msgid ""
|
||||
"<font class=\"text-600\">How do stakeholders interact regarding "
|
||||
"offers?</font>"
|
||||
msgstr ""
|
||||
"<font class=\"text-600\">¿Cómo interactúan las partes interesadas con "
|
||||
"respecto a las ofertas?</font>"
|
||||
"<font class=\"text-600\">¿Cómo interactúan las partes interesadas con las "
|
||||
"ofertas?</font>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_account_management
|
||||
@@ -527,7 +541,7 @@ msgstr "<font class=\"text-600\">¿Cómo comparan y evalúan las ofertas?</font>
|
||||
msgid ""
|
||||
"<font class=\"text-600\">I made sure any visual change is responsive</font>"
|
||||
msgstr ""
|
||||
"<font class=\"text-600\">Me aseguré de que cualquier cambio visual sea "
|
||||
"<font class=\"text-600\">Me aseguré de que cualquier cambio visual fuera "
|
||||
"responsivo</font>"
|
||||
|
||||
#. module: knowledge
|
||||
@@ -734,7 +748,7 @@ msgstr ""
|
||||
" <font style=\"color: rgb(255, 0, 0);\"><strong>Rojo: lo que más valoran son los resultados.</strong></font><br>\n"
|
||||
" <strong>\n"
|
||||
" <font style=\"color: rgb(239, 198, 49);\">\n"
|
||||
" Amarillo: lo que más valoran es la creatividad y el entusiasmo, más que los resultados.\n"
|
||||
" Amarillo: valoran la creatividad y el entusiasmo más que los resultados.\n"
|
||||
" </font>\n"
|
||||
" </strong>\n"
|
||||
" </i>"
|
||||
@@ -1012,9 +1026,9 @@ msgstr ""
|
||||
"<span style=\"font-size: 14px;\">\n"
|
||||
" Pruebe los\n"
|
||||
" <span style=\"font-weight: bolder;\">comandos</span>\n"
|
||||
" debajo de esta lista,\n"
|
||||
" abajo de esta lista.\n"
|
||||
" <span style=\"font-weight: bolder;\">\n"
|
||||
" <font class=\"text-o-color-2\">escriba</font>\n"
|
||||
" <font class=\"text-o-color-2\">Escriba</font>\n"
|
||||
" </span>\n"
|
||||
" \"<span style=\"font-weight: bolder;\">/</span>\"\n"
|
||||
" </span>"
|
||||
@@ -1289,7 +1303,7 @@ msgid ""
|
||||
" </span>"
|
||||
msgstr ""
|
||||
"<span style=\"font-size: 14px;\">\n"
|
||||
" ¿Desea ir\n"
|
||||
" ¿Desea ser\n"
|
||||
" <span style=\"font-style: italic;\">aún más</span>\n"
|
||||
" rápido? ⚡️\n"
|
||||
" </span>\n"
|
||||
@@ -1392,6 +1406,15 @@ msgstr ""
|
||||
"<span style=\"font-size: 14px;\">¿Necesita este documento en alguna parte? "
|
||||
"Regrese aquí haciendo clic en el icono 📗 en el chatter.</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
"<span style=\"font-size: 14px;\">¿No sabes muy bien cómo hacerlo? Mire el "
|
||||
"video aquí abajo 👇</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -1967,8 +1990,8 @@ msgid ""
|
||||
"A must listen for all developers out there and anyone interested in "
|
||||
"Javascript!"
|
||||
msgstr ""
|
||||
"Sin duda alguna, todas las personas que se dediquen al desarrollo o que "
|
||||
"estén interesadas en Javascript deben escucharlo."
|
||||
"Todas las personas que se dediquen al desarrollo o que estén interesadas en "
|
||||
"Javascript deben escucharlo."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_persona_3
|
||||
@@ -2345,8 +2368,8 @@ msgid ""
|
||||
"Are you sure you want to leave your private Article? As you are its last "
|
||||
"member, it will be moved to the Trash."
|
||||
msgstr ""
|
||||
"¿Está seguro de que quiere dejar su artículo como privado? Ya que es su "
|
||||
"último miembro, se moverá a la papelera."
|
||||
"¿Está seguro de que quiere dejar el artículo como privado? Tome en cuenta "
|
||||
"que usted es el último miembro, por lo que se moverá a la papelera."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -2491,6 +2514,7 @@ msgstr "Propiedades del elemento del artículo"
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -2667,7 +2691,7 @@ msgid ""
|
||||
"class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-"
|
||||
"star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-star-o\"></i></span>"
|
||||
msgstr ""
|
||||
"Atracción por la marca <span class=\"o_stars o_five_stars\" "
|
||||
"Atracción de la marca <span class=\"o_stars o_five_stars\" "
|
||||
"id=\"checkId-3\"><i class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i><i "
|
||||
"class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-"
|
||||
"star-o\"></i></span>"
|
||||
@@ -2680,7 +2704,7 @@ msgid ""
|
||||
"star\"></i><i class=\"fa fa-star-o\"></i><i class=\"fa fa-"
|
||||
"star-o\"></i></span>"
|
||||
msgstr ""
|
||||
"Atracción por la marca <span class=\"o_stars o_five_stars\" "
|
||||
"Atracción de la marca <span class=\"o_stars o_five_stars\" "
|
||||
"id=\"checkId-3\"><i class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i><i "
|
||||
"class=\"fa fa-star\"></i><i class=\"fa fa-star-o\"></i><i class=\"fa fa-"
|
||||
"star-o\"></i></span>"
|
||||
@@ -2693,7 +2717,7 @@ msgid ""
|
||||
"star-o\"></i><i class=\"fa fa-star-o\"></i><i class=\"fa fa-"
|
||||
"star-o\"></i></span>"
|
||||
msgstr ""
|
||||
"Atracción por la marca <span class=\"o_stars o_five_stars\" "
|
||||
"Atracción de la marca <span class=\"o_stars o_five_stars\" "
|
||||
"id=\"checkId-3\"><i class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i><i "
|
||||
"class=\"fa fa-star-o\"></i><i class=\"fa fa-star-o\"></i><i class=\"fa fa-"
|
||||
"star-o\"></i></span>"
|
||||
@@ -2706,7 +2730,7 @@ msgid ""
|
||||
"star-o\"></i><i class=\"fa fa-star-o\"></i><i class=\"fa fa-"
|
||||
"star-o\"></i></span>"
|
||||
msgstr ""
|
||||
"Atracción por la marca <span class=\"o_stars o_five_stars\" "
|
||||
"Atracción de la marca <span class=\"o_stars o_five_stars\" "
|
||||
"id=\"checkId-3\"><i class=\"fa fa-star-o\"></i><i class=\"fa fa-"
|
||||
"star-o\"></i><i class=\"fa fa-star-o\"></i><i class=\"fa fa-star-o\"></i><i "
|
||||
"class=\"fa fa-star-o\"></i></span>"
|
||||
@@ -2912,7 +2936,7 @@ msgid ""
|
||||
"Centralize account insights in one document for comprehensive monitoring and"
|
||||
" follow-up."
|
||||
msgstr ""
|
||||
"Centralize la información sobre la cuenta en un solo documento para llevar "
|
||||
"Centralice la información sobre la cuenta en un solo documento para llevar "
|
||||
"un mejor seguimiento y monitoreo. "
|
||||
|
||||
#. module: knowledge
|
||||
@@ -3144,8 +3168,8 @@ msgid ""
|
||||
"Could not move \"%s%s\" in the shared section. Only shared articles can be "
|
||||
"moved in this section."
|
||||
msgstr ""
|
||||
"No se pudo mover \"%s%s\" a la sección de compartidos, solo puede mover los "
|
||||
"artículos compartidos."
|
||||
"No se pudo mover \"%s%s\" a la sección de compartidos. Solo puede mover "
|
||||
"artículos compartidos a esta sección."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -3383,7 +3407,7 @@ msgid ""
|
||||
" before being permanently removed for your database"
|
||||
msgstr ""
|
||||
"Los artículos eliminados se almacenan en la papelera durante <b>%(threshold)s</b> días adicionales\n"
|
||||
" antes de ser eliminados de forma permanente de su base de datos"
|
||||
" antes de eliminarse de forma permanente de su base de datos"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__deletion_date
|
||||
@@ -3490,7 +3514,7 @@ msgstr "EDITAR"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
@@ -3710,6 +3734,13 @@ msgstr "Género: hombre"
|
||||
msgid "Gender(s): W"
|
||||
msgstr "Género: mujer"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr "Genere un artículo con inteligencia artificial."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -3764,7 +3795,7 @@ msgstr "¿Tiene subartículos normales?"
|
||||
msgid ""
|
||||
"Has the user access to each parent from current article until its root?"
|
||||
msgstr ""
|
||||
"¿El usuario tiene acceso a cada parte principal desde el artículo actual "
|
||||
"¿El usuario tiene acceso a cada parte principal, desde el artículo actual "
|
||||
"hasta su origen?"
|
||||
|
||||
#. module: knowledge
|
||||
@@ -3917,7 +3948,7 @@ msgid ""
|
||||
" Considering we just launched ProductName, I was thinking you would be interested."
|
||||
msgstr ""
|
||||
"Mientras realizaba una investigación por internet me encontré con su empresa.<br>\n"
|
||||
" Acabamos de lanzar [escriba el nombre del producto aquí] y considero que podría ser de su interés. "
|
||||
" Acabamos de lanzar [escriba el nombre del producto aquí] y considero que podría interesarle. "
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_sales_playbook
|
||||
@@ -3981,8 +4012,7 @@ msgstr ""
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article_thread__message_has_error
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article_thread__message_has_sms_error
|
||||
msgid "If checked, some messages have a delivery error."
|
||||
msgstr ""
|
||||
"Si se encuentra seleccionado, algunos mensajes presentan un error de envío."
|
||||
msgstr "Si se encuentra seleccionado, algunos mensajes tienen error de envío."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_product_catalog
|
||||
@@ -4275,7 +4305,7 @@ msgstr "Es una plantilla"
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__has_item_parent
|
||||
msgid "Is the parent an Item?"
|
||||
msgstr "¿Es el principal un elemento?"
|
||||
msgstr "¿El principal es un elemento?"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_post_mortem
|
||||
@@ -4285,7 +4315,7 @@ msgstr "Resumen de errores"
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_account_management
|
||||
msgid "Issues they are trying to solve:"
|
||||
msgstr "Problemas a los que se busca una solución:"
|
||||
msgstr "Problemas para los que se está buscando una solución:"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article__template_category_sequence
|
||||
@@ -4302,22 +4332,22 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_meeting_minutes_template
|
||||
msgid "Item 1"
|
||||
msgstr "Primer tema"
|
||||
msgstr "Tema 1"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_meeting_minutes_template
|
||||
msgid "Item 2"
|
||||
msgstr "Segundo tema"
|
||||
msgstr "Tema 2"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_meeting_minutes_template
|
||||
msgid "Item 3"
|
||||
msgstr "Tercer tema"
|
||||
msgstr "Tema 3"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_meeting_minutes_template
|
||||
msgid "Item 4"
|
||||
msgstr "Cuarto tema"
|
||||
msgstr "Tema 4"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -4539,7 +4569,7 @@ msgstr "Permisos y tiempo personal"
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_hr_faq
|
||||
msgid "Let your Team Leader know in advance."
|
||||
msgstr "Avise con anticipación a su Líder de equipo. "
|
||||
msgstr "Avise con anticipación a su líder de equipo. "
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -4760,10 +4790,9 @@ msgid ""
|
||||
" kilometers.<br>Starting from the office, they enjoyed a great tour in the countryside before\n"
|
||||
" coming back to Grand-Rosière, where they were welcomed with a drink and a burger."
|
||||
msgstr ""
|
||||
"Más de 150 Odooers participaron en la edición de este año de las carreras de"
|
||||
" 5 y 11 kilómetros.<br>El punto de partida fue la oficina, disfrutaron de un"
|
||||
" gran recorrido por el campo antes de regresar a Grand-Rosière, donde les "
|
||||
"recibimos con una bebida y una hamburguesa."
|
||||
"Más de 150 Odooers participaron en la carrera de 5 u 11 kilómetros\n"
|
||||
" de este año.<br>El recorrido inició en la oficina y pudiero. correr a través del campo antes\n"
|
||||
" de regresar a Grand-Rosière, donde se les recibió con bebidas y hamburguesas."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -4828,17 +4857,6 @@ msgstr "Mover a la papelera"
|
||||
msgid "Move to Workspace"
|
||||
msgstr "Mover al espacio de trabajo"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr ""
|
||||
"Mover al destino de %(article_name)s es ambiguo, debe especificar la "
|
||||
"categoría."
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -4949,7 +4967,7 @@ msgstr "Próxima reunión: <font class=\"text-400\">lugar y fecha</font>"
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_meeting_example_branding
|
||||
msgid "Next Meeting: <u>6th May, @John's Office</u>"
|
||||
msgstr "Próxima reunión: <u>6 de mayo @ oficina de John</u>"
|
||||
msgstr "Próxima reunión: <u>6 de mayo en la oficina de John</u>"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -5010,19 +5028,14 @@ msgstr "No se encontraron artículos ocultos"
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.actions.act_window,help:knowledge.knowledge_article_stage_action
|
||||
msgid "No stage yet!"
|
||||
msgstr "Aún no hay etapa"
|
||||
msgstr "Todavía no hay etapa."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "No template yet."
|
||||
msgstr "No hay plantilla."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr "¿No está seguro de cómo hacerlo?"
|
||||
msgstr "Todavía no hay plantilla."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -5114,6 +5127,13 @@ msgstr "Onboarding.pdf"
|
||||
msgid "Ongoing"
|
||||
msgstr "En curso"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr "Solo los usuarios internos pueden acceder a esta vista."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -5164,12 +5184,12 @@ msgid ""
|
||||
"Oops, the file %s could not be found. Please replace this file box by a new "
|
||||
"one to re-upload the file."
|
||||
msgstr ""
|
||||
"Uy, no pudimos encontrar el archivo %s, reemplace este cuadro de archivo por"
|
||||
" uno nuevo para volver a cargar el archivo."
|
||||
"Lo sentimos, no pudimos encontrar el archivo %s, reemplace este cuadro de "
|
||||
"archivo por uno nuevo para volver a cargarlo."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -5242,7 +5262,7 @@ msgstr "Resultados"
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article_stage__parent_id
|
||||
msgid "Owner Article"
|
||||
msgstr "Propietario del artículo"
|
||||
msgstr "Dueño del artículo"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_company_newsletter
|
||||
@@ -5464,7 +5484,7 @@ msgid ""
|
||||
"Properties are fields that can only be added on articles that have a parent."
|
||||
msgstr ""
|
||||
"Las propiedades son campos que solo se pueden agregar a artículos que tienen"
|
||||
" uno principal."
|
||||
" un artículo principal."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -5592,7 +5612,6 @@ msgstr "Eliminar de favoritos"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5691,7 +5710,7 @@ msgstr "Restringir acceso"
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.js:0
|
||||
#, python-format
|
||||
msgid "Restrict own access"
|
||||
msgstr "Restringir el propio acceso"
|
||||
msgstr "Restringir el acceso propio"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields.selection,name:knowledge.selection__knowledge_article__inherited_permission__none
|
||||
@@ -5827,11 +5846,6 @@ msgstr "Sección"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr "Consulte a un médico y envíenos la receta."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr "Vea cómo funciona <i class=\"fa fa-youtube-play\"/>"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -5939,9 +5953,9 @@ msgid ""
|
||||
"fa-star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i><i "
|
||||
"class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i></span>"
|
||||
msgstr ""
|
||||
"Estatus social <span class=\"o_stars o_five_stars\" id=\"checkId-4\"><i "
|
||||
"class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-"
|
||||
"star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i></span>"
|
||||
"Social <span class=\"o_stars o_five_stars\" id=\"checkId-4\"><i class=\"fa "
|
||||
"fa-star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i><i "
|
||||
"class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i></span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_persona_4
|
||||
@@ -5950,7 +5964,7 @@ msgid ""
|
||||
"class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-"
|
||||
"star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-star-o\"></i></span>"
|
||||
msgstr ""
|
||||
"Estatus social <span class=\"o_stars o_five_stars\" id=\"checkId-4\"><i "
|
||||
"Estado social <span class=\"o_stars o_five_stars\" id=\"checkId-4\"><i "
|
||||
"class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-"
|
||||
"star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-star-o\"></i></span>"
|
||||
|
||||
@@ -5962,7 +5976,7 @@ msgid ""
|
||||
"star\"></i><i class=\"fa fa-star-o\"></i><i class=\"fa fa-"
|
||||
"star-o\"></i></span>"
|
||||
msgstr ""
|
||||
"Estatus social <span class=\"o_stars o_five_stars\" id=\"checkId-4\"><i "
|
||||
"Estado social <span class=\"o_stars o_five_stars\" id=\"checkId-4\"><i "
|
||||
"class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-"
|
||||
"star\"></i><i class=\"fa fa-star-o\"></i><i class=\"fa fa-"
|
||||
"star-o\"></i></span>"
|
||||
@@ -5975,7 +5989,7 @@ msgid ""
|
||||
"star-o\"></i><i class=\"fa fa-star-o\"></i><i class=\"fa fa-"
|
||||
"star-o\"></i></span>"
|
||||
msgstr ""
|
||||
"Estatus social <span class=\"o_stars o_five_stars\" id=\"checkId-4\"><i "
|
||||
"Estado social <span class=\"o_stars o_five_stars\" id=\"checkId-4\"><i "
|
||||
"class=\"fa fa-star-o\"></i><i class=\"fa fa-star-o\"></i><i class=\"fa fa-"
|
||||
"star-o\"></i><i class=\"fa fa-star-o\"></i><i class=\"fa fa-"
|
||||
"star-o\"></i></span>"
|
||||
@@ -5987,7 +6001,7 @@ msgid ""
|
||||
"class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-"
|
||||
"star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-star-o\"></i></span>"
|
||||
msgstr ""
|
||||
"Estatus social <span class=\"o_stars o_five_stars\" id=\"checkId-4\"><i "
|
||||
"Estado social <span class=\"o_stars o_five_stars\" id=\"checkId-4\"><i "
|
||||
"class=\"fa fa-star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-"
|
||||
"star\"></i><i class=\"fa fa-star\"></i><i class=\"fa fa-star-o\"></i></span>"
|
||||
|
||||
@@ -6259,9 +6273,9 @@ msgid ""
|
||||
" <strong>Odoo Run</strong>\n"
|
||||
" </font>!"
|
||||
msgstr ""
|
||||
"¡Gracias a todas las personas que nos ayudaron a organizar esta edición del \n"
|
||||
"¡Gracias a todas las personas que nos ayudaron a organizar esta edición de la \n"
|
||||
" <font class=\"text-o-color-2\">\n"
|
||||
" <strong>Maratón Odoo</strong>\n"
|
||||
" <strong>carrera de Odoo</strong>\n"
|
||||
" </font>!"
|
||||
|
||||
#. module: knowledge
|
||||
@@ -6299,6 +6313,17 @@ msgstr "Nuestra participación en Future Entrepreneurship"
|
||||
msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr "El artículo \"%s\" necesita al menos un miembro con acceso a \"Editar\"."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr ""
|
||||
"La ubicación de destino de %(article_name)s es ambigua, especifique la "
|
||||
"categoría."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6331,7 +6356,7 @@ msgstr "El registro al que está dirigido este macro no se pudo encontrar."
|
||||
#: code:addons/knowledge/controllers/main.py:0
|
||||
#, python-format
|
||||
msgid "The selected member does not exists or has been already deleted."
|
||||
msgstr "El miembro seleccionado no existe o ya ha sido eliminado."
|
||||
msgstr "El miembro seleccionado no existe o ya se eliminó."
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article__sequence
|
||||
@@ -6734,7 +6759,7 @@ msgid ""
|
||||
"they have write access on the article."
|
||||
msgstr ""
|
||||
"Cuando está bloqueado, los usuarios no pueden escribir en el cuerpo o "
|
||||
"cambiar el título, aún con acceso de edición al artículo."
|
||||
"cambiar el título, aún aunque tengan acceso de edición al artículo."
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article__to_delete
|
||||
@@ -6770,10 +6795,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Sin importar si tiene preferencia por el encanto rústico de una cabaña de "
|
||||
"madera o la intrínseca belleza de las acerías victorianas, aquí podrá "
|
||||
"encontrar lo que necesita. ¿Está en búsqueda de una opción más específica? "
|
||||
"También podemos ayudarle, solo póngase en contacto con nuestros arquitectos "
|
||||
"y nos aseguraremos de construir un lugar que cumpla con sus "
|
||||
"especificaciones."
|
||||
"encontrar lo que necesita. ¿Busca una opción más específica? También podemos"
|
||||
" ayudarle, solo póngase en contacto con nuestros arquitectos y nos "
|
||||
"aseguraremos de construir un lugar que cumpla con lo que usted desea."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_meeting_example_branding
|
||||
@@ -6803,8 +6827,8 @@ msgstr ""
|
||||
" priorizar la comodidad al compartir un espacio tan limitado. Para asegurar "
|
||||
"que todas las personas que habitarán allí sean felices, verifique que haya "
|
||||
"al menos 9m² por persona. Si planea vivir con varios compañeros de "
|
||||
"habitación, le recomendamos nuestro modelo Serenità, tiene suficiente "
|
||||
"espacio para que todos se sientan a gusto.<br>"
|
||||
"habitación, le recomendamos nuestro modelo Serenità, el cual tiene "
|
||||
"suficiente espacio para que todos se sientan cómodos.<br>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_product_catalog
|
||||
@@ -6858,6 +6882,13 @@ msgstr "Espacio de trabajo"
|
||||
msgid "Write"
|
||||
msgstr "Editar"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr "Escriba un artículo al respecto"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6949,6 +6980,18 @@ msgstr "No puede guardar este artículo como favorito"
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr "No puede abandonar un artículo del cual es el último autor"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
"No puede mover %(article_name)s a %(item_name)s, ya que %(item_name)s es un "
|
||||
"elemento de un artículo. Primero debe convertir %(item_name)s en un "
|
||||
"artículo."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
+112
-50
@@ -13,20 +13,23 @@
|
||||
# Martin Aavastik <martin@avalah.ee>, 2023
|
||||
# Piia Paurson <piia@avalah.ee>, 2023
|
||||
# Eneli Õigus <enelioigus@gmail.com>, 2023
|
||||
# Anna, 2023
|
||||
# Rivo Zängov <eraser@eraser.ee>, 2023
|
||||
# JanaAvalah, 2023
|
||||
# Triine Aavik <triine@avalah.ee>, 2023
|
||||
# Leaanika Randmets, 2023
|
||||
# Martin Trigaux, 2023
|
||||
# Mihkel avalah, 2023
|
||||
# Katrin Kampura, 2023
|
||||
# Anna, 2024
|
||||
# Birgit Vijar, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Martin Trigaux, 2023\n"
|
||||
"Last-Translator: Birgit Vijar, 2024\n"
|
||||
"Language-Team: Estonian (https://app.transifex.com/odoo/teams/41243/et/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -88,6 +91,16 @@ msgstr ""
|
||||
msgid "#Is Favorite"
|
||||
msgstr "#Lemmik"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -95,7 +108,7 @@ msgstr "#Lemmik"
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid "%(article_name)s (copy)"
|
||||
msgstr ""
|
||||
msgstr "%(article_name)s (copy)"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
@@ -530,17 +543,17 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_personal_organizer
|
||||
msgid "<font class=\"text-600\">Reminder 1</font>"
|
||||
msgstr ""
|
||||
msgstr "<font class=\"text-600\">Meeldetuletus 1</font>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_personal_organizer
|
||||
msgid "<font class=\"text-600\">Reminder 2</font>"
|
||||
msgstr ""
|
||||
msgstr "<font class=\"text-600\">Meeldetuletus 2</font>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_personal_organizer
|
||||
msgid "<font class=\"text-600\">Reminder 3</font>"
|
||||
msgstr ""
|
||||
msgstr "<font class=\"text-600\">Meeldetuletus 3</font>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_personal_organizer
|
||||
@@ -856,6 +869,15 @@ msgid ""
|
||||
" \"<span style=\"font-weight: bolder;\">/</span>\"\n"
|
||||
" </span>"
|
||||
msgstr ""
|
||||
"<span style=\"font-size: 14px;\">\n"
|
||||
" Proovi nimekirja all\n"
|
||||
" käskusid\n"
|
||||
" \n"
|
||||
" <span style=\"font-weight: bolder;\">\n"
|
||||
" trükkides\n"
|
||||
" </span>\n"
|
||||
" \"<span style=\"font-weight: bolder;\">/</span>\"\n"
|
||||
" </span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
@@ -896,6 +918,14 @@ msgid ""
|
||||
" <span style=\"font-style: italic; text-decoration-line: underline;\">it</span>\n"
|
||||
" </span>"
|
||||
msgstr ""
|
||||
"<span style=\"font-size: 14px;\">\n"
|
||||
" Vali tekst\n"
|
||||
" <font class=\"bg-o-color-2\">esile tõstmiseks</font>,\n"
|
||||
" <span style=\"text-decoration-line: line-through;\">läbi kriipsutamiseks</span>\n"
|
||||
" või\n"
|
||||
" <span style=\"font-weight: bolder;\">stiili</span>\n"
|
||||
" <span style=\"font-style: italic; text-decoration-line: underline;\">muutmiseks</span>\n"
|
||||
" </span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
@@ -1052,14 +1082,14 @@ msgstr ""
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Check this box to indicate it's done</span>"
|
||||
msgstr ""
|
||||
msgstr "Märgi kastike, et näidata, et see on tehtud"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Click anywhere, and just start "
|
||||
"typing</span>"
|
||||
msgstr ""
|
||||
msgstr "</span>Vajuta kuhu iganes ja lihtsalt alusta trükkimist</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
@@ -1094,10 +1124,19 @@ msgid ""
|
||||
"here by clicking on the 📗 icon in the chatter.</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Vajuta Ctrl-Z muudatuste tagasi "
|
||||
"võtmiseks</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
@@ -1269,6 +1308,9 @@ msgid ""
|
||||
" <font style=\"color: rgb(148, 189, 123);\">Do</font>\n"
|
||||
" </strong>"
|
||||
msgstr ""
|
||||
"<strong>\n"
|
||||
" <font style=\"color: rgb(148, 189, 123);\">Do</font>\n"
|
||||
" </strong>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_personal_organizer
|
||||
@@ -1479,7 +1521,7 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_sales_playbook
|
||||
msgid "<strong>Q1,2,3,4</strong>"
|
||||
msgstr ""
|
||||
msgstr "<strong>Q1,2,3,4</strong>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_release_note
|
||||
@@ -1624,7 +1666,7 @@ msgstr "Tegevustüübi ikoon"
|
||||
#: code:addons/knowledge/static/src/components/topbar/topbar.xml:0
|
||||
#, python-format
|
||||
msgid "Add Properties"
|
||||
msgstr ""
|
||||
msgstr "Lisa omadusi"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -1806,25 +1848,25 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_persona_4
|
||||
msgid "Age: 24"
|
||||
msgstr ""
|
||||
msgstr "Vanus 24"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_persona_2
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_persona_3
|
||||
msgid "Age: 29"
|
||||
msgstr ""
|
||||
msgstr "Vanus: 29"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_persona_1
|
||||
msgid "Age: 42"
|
||||
msgstr ""
|
||||
msgstr "Vanus: 42"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
#, python-format
|
||||
msgid "All Comments"
|
||||
msgstr ""
|
||||
msgstr "Kõik kommentaarid"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_product_catalog
|
||||
@@ -2023,6 +2065,7 @@ msgstr "Artikli üksuse rekvisiidid"
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -2134,7 +2177,7 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_company_newsletter
|
||||
msgid "BOOK NOW"
|
||||
msgstr ""
|
||||
msgstr "BRONEERI NÜÜD"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_sales_playbook
|
||||
@@ -2308,7 +2351,7 @@ msgstr "Saab lugeda"
|
||||
#: model:ir.model.fields.selection,name:knowledge.selection__knowledge_article_member__permission__write
|
||||
#: model:ir.model.fields.selection,name:knowledge.selection__knowledge_invite__permission__write
|
||||
msgid "Can edit"
|
||||
msgstr ""
|
||||
msgstr "Saab muuta"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__is_article_visible_by_everyone
|
||||
@@ -2393,7 +2436,7 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_hr_faq
|
||||
msgid "Car_Catalog.png"
|
||||
msgstr ""
|
||||
msgstr "Car_Catalog.png"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -2974,7 +3017,7 @@ msgstr "MUUDA"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "Muuda"
|
||||
@@ -2982,27 +3025,27 @@ msgstr "Muuda"
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_personas
|
||||
msgid "Education:"
|
||||
msgstr ""
|
||||
msgstr "Haridus:"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_persona_1
|
||||
msgid "Education: Bachelor's degree in Marketing"
|
||||
msgstr ""
|
||||
msgstr "Haridus: Turunuduse bakalaureusekraad"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_persona_2
|
||||
msgid "Education: High school diploma"
|
||||
msgstr ""
|
||||
msgstr "Haridus: keskkooli diplom"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_persona_3
|
||||
msgid "Education: PhD."
|
||||
msgstr ""
|
||||
msgstr "Haridus: doktorikraad"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_persona_4
|
||||
msgid "Education: Student"
|
||||
msgstr ""
|
||||
msgstr "Haridus: tudeng"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_company_newsletter
|
||||
@@ -3192,6 +3235,13 @@ msgstr ""
|
||||
msgid "Gender(s): W"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -4130,7 +4180,7 @@ msgstr "Protokollid"
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_meeting_example_branding
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_meeting_minutes_template
|
||||
msgid "Meeting Minutes Template"
|
||||
msgstr ""
|
||||
msgstr "Koosoleku protokolli mall"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_form
|
||||
@@ -4267,15 +4317,6 @@ msgstr ""
|
||||
msgid "Move to Workspace"
|
||||
msgstr "Liiguta tööalale"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -4456,11 +4497,6 @@ msgstr ""
|
||||
msgid "No template yet."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -4491,7 +4527,7 @@ msgstr "Vigade arv"
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article__message_needaction_counter
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article_thread__message_needaction_counter
|
||||
msgid "Number of messages requiring action"
|
||||
msgstr ""
|
||||
msgstr "Tegevust nõudvate sõnumite arv"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article__message_has_error_counter
|
||||
@@ -4549,6 +4585,13 @@ msgstr "Onboarding.pdf"
|
||||
msgid "Ongoing"
|
||||
msgstr "Käimasolev"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -4598,7 +4641,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -4925,7 +4968,7 @@ msgstr "Hinnangud"
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid "Read"
|
||||
msgstr ""
|
||||
msgstr "Loe"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_invite__partner_ids
|
||||
@@ -4991,7 +5034,6 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5226,11 +5268,6 @@ msgstr "Sektsioon"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -5652,6 +5689,15 @@ msgstr ""
|
||||
msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr "Artikkel '%s' vajab vähemalt ühte kasutajat \"Kirjutamise\" õigustega."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6167,6 +6213,13 @@ msgstr "Tööala"
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid "Write"
|
||||
msgstr "Kirjuta"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
@@ -6258,6 +6311,15 @@ msgstr ""
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
@@ -6460,12 +6522,12 @@ msgstr "nt. hooned"
|
||||
#: code:addons/knowledge/static/src/components/item_calendar_props_dialog/item_calendar_props_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "e.g. Meetings"
|
||||
msgstr ""
|
||||
msgstr "nt. Koosolekud"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_stage_view_form
|
||||
msgid "e.g. Ongoing"
|
||||
msgstr ""
|
||||
msgstr "nt. Käimasolev"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
|
||||
+73
-34
@@ -16,15 +16,17 @@
|
||||
# Martin Trigaux, 2023
|
||||
# Hamid Darabi, 2023
|
||||
# Hamed Mohammadi <hamed@dehongi.com>, 2023
|
||||
# Hanna Kheradroosta, 2023
|
||||
# Abbas Ebadian, 2024
|
||||
# Hanna Kheradroosta, 2024
|
||||
# Mostafa Barmshory <mostafa.barmshory@gmail.com>, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Hanna Kheradroosta, 2023\n"
|
||||
"Last-Translator: Mostafa Barmshory <mostafa.barmshory@gmail.com>, 2024\n"
|
||||
"Language-Team: Persian (https://app.transifex.com/odoo/teams/41243/fa/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -86,6 +88,16 @@ msgstr ""
|
||||
msgid "#Is Favorite"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -1044,6 +1056,13 @@ msgid ""
|
||||
"here by clicking on the 📗 icon in the chatter.</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -1932,7 +1951,7 @@ msgstr ""
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_stage_view_search
|
||||
#, python-format
|
||||
msgid "Article"
|
||||
msgstr ""
|
||||
msgstr "بند"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
@@ -1957,6 +1976,7 @@ msgstr ""
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -2021,7 +2041,7 @@ msgstr ""
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_view_search
|
||||
#, python-format
|
||||
msgid "Articles"
|
||||
msgstr ""
|
||||
msgstr "بندها"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
@@ -2903,7 +2923,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "ویرایش"
|
||||
@@ -2941,7 +2961,7 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_sales_playbook
|
||||
msgid "Email:"
|
||||
msgstr ""
|
||||
msgstr "ایمیل:"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -3121,6 +3141,13 @@ msgstr ""
|
||||
msgid "Gender(s): W"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -3435,7 +3462,7 @@ msgstr ""
|
||||
#: code:addons/knowledge/static/src/js/wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Index"
|
||||
msgstr ""
|
||||
msgstr "شاخص"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_product_catalog
|
||||
@@ -3746,7 +3773,7 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_sales_playbook
|
||||
msgid "Job Position:"
|
||||
msgstr ""
|
||||
msgstr "موقعیت شغلی:"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_view_form
|
||||
@@ -4197,15 +4224,6 @@ msgstr ""
|
||||
msgid "Move to Workspace"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -4386,11 +4404,6 @@ msgstr ""
|
||||
msgid "No template yet."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -4421,7 +4434,7 @@ msgstr "تعداد خطاها"
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article__message_needaction_counter
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article_thread__message_needaction_counter
|
||||
msgid "Number of messages requiring action"
|
||||
msgstr ""
|
||||
msgstr "تعداد پیام هایی که نیاز به اقدام دارند"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article__message_has_error_counter
|
||||
@@ -4479,6 +4492,13 @@ msgstr ""
|
||||
msgid "Ongoing"
|
||||
msgstr "در دست اقدام"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -4528,7 +4548,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -4855,7 +4875,7 @@ msgstr "رتبهها"
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid "Read"
|
||||
msgstr ""
|
||||
msgstr "خوانده شده"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_invite__partner_ids
|
||||
@@ -4921,7 +4941,6 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5156,11 +5175,6 @@ msgstr "بخش"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -5582,6 +5596,15 @@ msgstr ""
|
||||
msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6095,6 +6118,13 @@ msgstr "فضای کار"
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid "Write"
|
||||
msgstr "نوشتن"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
@@ -6186,6 +6216,15 @@ msgstr ""
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
@@ -6463,7 +6502,7 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields.selection,name:knowledge.selection__knowledge_article__user_permission__read
|
||||
msgid "read"
|
||||
msgstr ""
|
||||
msgstr "خواندن"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -6492,7 +6531,7 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields.selection,name:knowledge.selection__knowledge_article__user_permission__write
|
||||
msgid "write"
|
||||
msgstr ""
|
||||
msgstr "نوشتن"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_software_specification
|
||||
|
||||
+1082
-471
File diff suppressed because it is too large
Load Diff
+73
-27
@@ -4,15 +4,16 @@
|
||||
#
|
||||
# Translators:
|
||||
# Wil Odoo, 2023
|
||||
# Jolien De Paepe, 2023
|
||||
# Jolien De Paepe, 2024
|
||||
# Manon Rondou, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Jolien De Paepe, 2023\n"
|
||||
"Last-Translator: Manon Rondou, 2024\n"
|
||||
"Language-Team: French (https://app.transifex.com/odoo/teams/41243/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -78,6 +79,19 @@ msgstr "# Employés :"
|
||||
msgid "#Is Favorite"
|
||||
msgstr "#Est favori"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
"\"%(article_item_name)s\" est un élément d'article de \"%(article_name)s\" "
|
||||
"et ne peut pas être restauré seul. Contactez le popriétaire de "
|
||||
"\"%(article_name)s\" pour obtenir une restauration."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -1392,6 +1406,15 @@ msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Vous avez besoin de ce document quelque "
|
||||
"part ? Revenez ici en cliquant sur l'icône 📗 dans le chatter.</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Vous ne savez pas comment faire ? Regardez "
|
||||
"la vidéo ci-dessous 👇</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -2492,6 +2515,7 @@ msgstr "Propriétés de l'élément d'article"
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -3497,7 +3521,7 @@ msgstr "MODIFIER"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "Modifier"
|
||||
@@ -3719,6 +3743,13 @@ msgstr "Genre : M"
|
||||
msgid "Gender(s): W"
|
||||
msgstr "Genre : F"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr "Générez un article avec l'IA"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -4831,17 +4862,6 @@ msgstr "Déplacer vers la corbeille"
|
||||
msgid "Move to Workspace"
|
||||
msgstr "Déplacer vers l'espace de travail"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr ""
|
||||
"Le déplacement vers la cible de %(article_name)s est ambigu, veuillez "
|
||||
"préciser la catégorie."
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -5022,11 +5042,6 @@ msgstr "Pas encore d'étape !"
|
||||
msgid "No template yet."
|
||||
msgstr "Pas encore de modèle."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr "Vous ne savez pas comment vous y prendre ?"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -5117,6 +5132,13 @@ msgstr "Onboarding.pdf"
|
||||
msgid "Ongoing"
|
||||
msgstr "En cours"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr "Seuls les utilisateurs internes peuvent accéder à cette vue."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -5175,7 +5197,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -5595,7 +5617,6 @@ msgstr "Supprimer des favoris"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5830,11 +5851,6 @@ msgstr "Section"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr "Consultez un médecin et envoyez-nous le certificat médical."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr "Voir comment cela fonctionne <i class=\"fa fa-youtube-play\"/>"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -6302,6 +6318,17 @@ msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr ""
|
||||
"L'article '%s' a besoin d'au moins un membre avec un accès en 'écriture'."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr ""
|
||||
"L'emplacement de destination de %(article_name)s est ambigu. Veuillez "
|
||||
"préciser la catégorie."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6863,6 +6890,13 @@ msgstr "Espace de travail "
|
||||
msgid "Write"
|
||||
msgstr "Écrire"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr "Écrivez un article sur"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6959,6 +6993,18 @@ msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas quitter un article dont vous êtes le dernier auteur"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas déplacer %(article_name)s sous %(item_name)s, car "
|
||||
"%(item_name)s est un élément d'article. Convertissez %(item_name)s d'abord "
|
||||
"en un article."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
+61
-29
@@ -13,26 +13,28 @@
|
||||
# Leandro Noijovich <eliel.sorcerer@gmail.com>, 2023
|
||||
# Yihya Hugirat <hugirat@gmail.com>, 2023
|
||||
# Netta Waizer, 2023
|
||||
# Roy Sayag, 2023
|
||||
# NoaFarkash, 2023
|
||||
# Lilach Gilliam <lilach.gilliam@gmail.com>, 2023
|
||||
# שהאב חוסיין <shhab89@gmail.com>, 2023
|
||||
# ZVI BLONDER <ZVIBLONDER@gmail.com>, 2023
|
||||
# Martin Trigaux, 2023
|
||||
# MichaelHadar, 2024
|
||||
# Roy Sayag, 2024
|
||||
# yael terner, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Martin Trigaux, 2023\n"
|
||||
"Last-Translator: yael terner, 2024\n"
|
||||
"Language-Team: Hebrew (https://app.transifex.com/odoo/teams/41243/he/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Language: he\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;\n"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -88,6 +90,16 @@ msgstr ""
|
||||
msgid "#Is Favorite"
|
||||
msgstr "#מועדף"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -1050,6 +1062,13 @@ msgid ""
|
||||
"here by clicking on the 📗 icon in the chatter.</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -1580,7 +1599,7 @@ msgstr "סוג פעילות"
|
||||
#: code:addons/knowledge/static/src/components/topbar/topbar.xml:0
|
||||
#, python-format
|
||||
msgid "Add Properties"
|
||||
msgstr ""
|
||||
msgstr "הוסף מאפיינים"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -1965,6 +1984,7 @@ msgstr ""
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -2913,7 +2933,7 @@ msgstr "עריכה"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "ערוך"
|
||||
@@ -3131,6 +3151,13 @@ msgstr ""
|
||||
msgid "Gender(s): W"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -4206,15 +4233,6 @@ msgstr ""
|
||||
msgid "Move to Workspace"
|
||||
msgstr "העבר לסביבת עבודה"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -4395,11 +4413,6 @@ msgstr ""
|
||||
msgid "No template yet."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -4539,7 +4552,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -4838,7 +4851,7 @@ msgstr ""
|
||||
#: model:knowledge.article,template_name:knowledge.knowledge_article_template_sprint_calendar_public_holiday
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_sprint_calendar_public_holiday
|
||||
msgid "Public Holidays"
|
||||
msgstr ""
|
||||
msgstr "חגים "
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_software_specification
|
||||
@@ -4866,7 +4879,7 @@ msgstr "דירוגים"
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid "Read"
|
||||
msgstr ""
|
||||
msgstr "קריאה"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_invite__partner_ids
|
||||
@@ -4932,7 +4945,6 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5167,11 +5179,6 @@ msgstr "סעיף"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -5593,6 +5600,15 @@ msgstr ""
|
||||
msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr "המאמר '%s' צריך לפחות חבר אחד עם גישת כתיבה."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6106,6 +6122,13 @@ msgstr "סביבת עבודה"
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid "Write"
|
||||
msgstr "כתיבה"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
@@ -6197,6 +6220,15 @@ msgstr ""
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+72
-27
@@ -3,16 +3,16 @@
|
||||
# * knowledge
|
||||
#
|
||||
# Translators:
|
||||
# Abe Manyo, 2023
|
||||
# Wil Odoo, 2023
|
||||
# Abe Manyo, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Wil Odoo, 2023\n"
|
||||
"Last-Translator: Abe Manyo, 2024\n"
|
||||
"Language-Team: Indonesian (https://app.transifex.com/odoo/teams/41243/id/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -78,6 +78,19 @@ msgstr "# Karyawan:"
|
||||
msgid "#Is Favorite"
|
||||
msgstr "#Apakah Favorit"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
"\"%(article_item_name)s\" adalah Item Artikel dari \"%(article_name)s\" dan "
|
||||
"tidak dapat langsung dipulihkan. Hubungi pemilik \"%(article_name)s\" untuk "
|
||||
"memulihkannya."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -1389,6 +1402,15 @@ msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Butuh dokumen ini di tempat lain? Kembali "
|
||||
"ke sini dengan mengeklik pada ikon 📗 di obrolan.</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Tidak yakin bagaimana cara melakukannya? "
|
||||
"Periksa video di bawah 👇</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -2485,6 +2507,7 @@ msgstr "Properti Item Artikel"
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -3483,7 +3506,7 @@ msgstr "EDIT"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "Edit"
|
||||
@@ -3705,6 +3728,13 @@ msgstr "Jenis Kelamin: P"
|
||||
msgid "Gender(s): W"
|
||||
msgstr "Jenis Kelamin: W"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr "Buat Artikel dengan AI"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -4816,17 +4846,6 @@ msgstr "Pindahkan ke Tong Sampah"
|
||||
msgid "Move to Workspace"
|
||||
msgstr "Pindahkan ke Ruang Kerja"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr ""
|
||||
"Pindahkan ke target dari %(article_name)s bersifat ambigu, Anda harus "
|
||||
"menentukan kategori."
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -5007,11 +5026,6 @@ msgstr "Belum ada tahap!"
|
||||
msgid "No template yet."
|
||||
msgstr "Belum ada templat."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr "Tidak yakin bagaimana melakukannya?"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -5102,6 +5116,13 @@ msgstr "Onboarding.pdf"
|
||||
msgid "Ongoing"
|
||||
msgstr "Terus-menerus"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr "Hanya User Internal yang dapat mengakses tampilan ini."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -5156,7 +5177,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -5578,7 +5599,6 @@ msgstr "Hapus dari favorit"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5813,11 +5833,6 @@ msgstr "Bagian"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr "Lihat dokter dan kirimkan kami surat sakit."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr "Lihat bagaimana cara kerjanya <i class=\"fa fa-youtube-play\"/>"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -6283,6 +6298,17 @@ msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr ""
|
||||
"Artikel '%s' membutuhkan setidaknya satu anggota dengan akses 'Tulis'."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr ""
|
||||
"Tujuan pemindahan %(article_name)s ambigu, Anda harus menentukan "
|
||||
"kategorinya."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6839,6 +6865,13 @@ msgstr "Ruang Kerja"
|
||||
msgid "Write"
|
||||
msgstr "Tulis"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr "Tulis artikel mengenai"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6935,6 +6968,18 @@ msgstr ""
|
||||
"Anda tidak dapat meninggalkan artikel saat Anda merupakan penulis "
|
||||
"terakhirnya"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
"Anda tidak dapat memindahkan %(article_name)s di bawah %(item_name)s, karena"
|
||||
" %(item_name)s adalah item Artikel. Konversikan %(item_name)s menjadi "
|
||||
"Artikel terlebih dahulu."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+72
-27
@@ -3,17 +3,17 @@
|
||||
# * knowledge
|
||||
#
|
||||
# Translators:
|
||||
# Marianna Ciofani, 2023
|
||||
# Wil Odoo, 2023
|
||||
# Sergio Zanchetta <primes2h@gmail.com>, 2023
|
||||
# Marianna Ciofani, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Sergio Zanchetta <primes2h@gmail.com>, 2023\n"
|
||||
"Last-Translator: Marianna Ciofani, 2024\n"
|
||||
"Language-Team: Italian (https://app.transifex.com/odoo/teams/41243/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -79,6 +79,19 @@ msgstr "Numero di dipendenti:"
|
||||
msgid "#Is Favorite"
|
||||
msgstr "#È preferito"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
"\"%(article_item_name)s\" è un elemento dell'articolo \"%(article_name)s\" e"
|
||||
" non può essere ripristinato da solo. Contatta il proprietario di "
|
||||
"\"%(article_name)s\" per ripristinarlo."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -1391,6 +1404,15 @@ msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Hai bisogno di questo documento da qualche "
|
||||
"parte? Torna qui e fai clic sull'icona 📗 nel chatter.</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Non sei sicuro di come farlo? Guarda il "
|
||||
"video 👇</span> "
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -2486,6 +2508,7 @@ msgstr "Proprietà elemento articolo"
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -3487,7 +3510,7 @@ msgstr "MODIFICA"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "Modifica"
|
||||
@@ -3710,6 +3733,13 @@ msgstr "Genere: M"
|
||||
msgid "Gender(s): W"
|
||||
msgstr "Genere: F"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr "Genera un articolo con l'IA"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -4818,17 +4848,6 @@ msgstr "Sposta nel cestino"
|
||||
msgid "Move to Workspace"
|
||||
msgstr "Sposta in Spazio di lavoro"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr ""
|
||||
"Lo spostamento all'obiettivo di %(article_name)s è ambiguo, devi specificare"
|
||||
" la categoria."
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -5009,11 +5028,6 @@ msgstr "Ancora nessuna fase!"
|
||||
msgid "No template yet."
|
||||
msgstr "Ancora nessun modello!"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr "Non sei sicuro di come procedere?"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -5104,6 +5118,13 @@ msgstr "Onboarding.pdf"
|
||||
msgid "Ongoing"
|
||||
msgstr "In corso"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr "Solo gli utenti interni possono accedere a questa vista."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -5159,7 +5180,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -5579,7 +5600,6 @@ msgstr "Elimina dai preferiti"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5814,11 +5834,6 @@ msgstr "Sezione"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr "Consulta un medico e inviaci il certificato."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr "Guarda come funziona <i class=\"fa fa-youtube-play\"/>"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -6286,6 +6301,17 @@ msgstr ""
|
||||
"L'articolo \"%s\" necessita di almeno un membro con l'accesso \"in "
|
||||
"scrittura\"."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr ""
|
||||
"La posizione di destinazione di %(article_name)s è ambigua, dovresti "
|
||||
"specificare la categoria."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6844,6 +6870,13 @@ msgstr "Spazio di lavoro"
|
||||
msgid "Write"
|
||||
msgstr "Scrivi"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr "Scrivi un articolo riguardo"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6937,6 +6970,18 @@ msgstr "Non è possibile salvare il preferito su questo articolo"
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr "Non puoi abbandonare un articolo di cui sei l'ultimo scrittore"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
"Non è possibile spostare %(article_name)s sotto %(item_name)s perché "
|
||||
"%(item_name)s è un elemento articolo. È necessario convertire %(item_name)s "
|
||||
"in articolo."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
+73
-33
@@ -4,17 +4,17 @@
|
||||
#
|
||||
# Translators:
|
||||
# Norimichi Sugimoto <norimichi.sugimoto@tls-ltd.co.jp>, 2023
|
||||
# Ryoko Tsuda <ryoko@quartile.co>, 2023
|
||||
# Junko Augias, 2023
|
||||
# Wil Odoo, 2023
|
||||
# Ryoko Tsuda <ryoko@quartile.co>, 2024
|
||||
# Junko Augias, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Wil Odoo, 2023\n"
|
||||
"Last-Translator: Junko Augias, 2024\n"
|
||||
"Language-Team: Japanese (https://app.transifex.com/odoo/teams/41243/ja/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -76,6 +76,17 @@ msgstr "従業員数:"
|
||||
msgid "#Is Favorite"
|
||||
msgstr "#お気に入り"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
"\"%(article_item_name)s\"は\"%(article_name)s\"の記事アイテムであり、単独で復元することはできません。代わりに\"%(article_name)s\"の所有者に連絡して復元を依頼して下さい。"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -921,7 +932,7 @@ msgstr ""
|
||||
" — これは\n"
|
||||
" <span style=\"font-weight: bolder;\"><font class=\"text-o-color-2\">あなたのものです</font></span>、\n"
|
||||
" ご自分用にしておきましょう。\n"
|
||||
" (<span style=\"font-style: italic;\">下書き、 Todoリスト..</span>)\n"
|
||||
" (<span style=\"font-style: italic;\">ドラフト、 Todoリスト..</span>)\n"
|
||||
" </span>"
|
||||
|
||||
#. module: knowledge
|
||||
@@ -1364,6 +1375,13 @@ msgstr ""
|
||||
"<span style=\"font-size: "
|
||||
"14px;\">このドキュメントがどこかで必要ですか?チャターの📗アイコンをクリックしてここに戻って来て下さい。</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr "<span style=\"font-size: 14px;\">やり方がわからない場合は、以下の動画をご覧下さい 👇</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -2420,6 +2438,7 @@ msgstr "記事項目プロパティ"
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -2767,7 +2786,7 @@ msgstr "ユーザは記事を見ることができますか?"
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_invite_view_form
|
||||
#, python-format
|
||||
msgid "Cancel"
|
||||
msgstr "キャンセル"
|
||||
msgstr "取消"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
@@ -3386,7 +3405,7 @@ msgstr "編集"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "編集"
|
||||
@@ -3544,7 +3563,7 @@ msgstr "ファイル"
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.portal_my_home_knowledge
|
||||
msgid "Find all articles shared with you"
|
||||
msgstr "共有された全てのドキュメントを見る"
|
||||
msgstr "共有されたすべてのドキュメントを参照できます。"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article_stage__fold
|
||||
@@ -3604,6 +3623,13 @@ msgstr "性別: 男性"
|
||||
msgid "Gender(s): W"
|
||||
msgstr "性別: 女性"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr "AIで記事を作成"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -4537,7 +4563,7 @@ msgstr "メディア"
|
||||
#: model:knowledge.article,template_name:knowledge.knowledge_article_template_sprint_calendar_meeting
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_sprint_calendar_meeting
|
||||
msgid "Meeting"
|
||||
msgstr "打ち合わせ"
|
||||
msgstr "ミーティング"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:knowledge.article,template_name:knowledge.knowledge_article_template_meeting_example_branding
|
||||
@@ -4664,7 +4690,7 @@ msgstr "記事を移動"
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#, python-format
|
||||
msgid "Move cancelled"
|
||||
msgstr "移動がキャンセルされました。"
|
||||
msgstr "移動が取消ルされました。"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -4694,15 +4720,6 @@ msgstr "ゴミ箱に移動"
|
||||
msgid "Move to Workspace"
|
||||
msgstr "移動先ワークスペース"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr "%(article_name)sのターゲットへの移動が曖昧なので、カテゴリを指定する必要があります。"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -4883,11 +4900,6 @@ msgstr "ステージがまだありません!"
|
||||
msgid "No template yet."
|
||||
msgstr "テンプレートがありません。"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr "どうすればいいかわからないのですか?"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -4978,6 +4990,13 @@ msgstr "Onboarding.pdf"
|
||||
msgid "Ongoing"
|
||||
msgstr "処理中"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr "内部ユーザのみがこのビューにアクセスできます。"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -5027,7 +5046,7 @@ msgstr "おっと、ファイル%sが見つかりません。ファイルを再
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -5437,7 +5456,6 @@ msgstr "お気に入りから削除"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5672,11 +5690,6 @@ msgstr "セクション"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr "医者に診てもらい、診断書を送って下さい。"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr "仕組みを見る<i class=\"fa fa-youtube-play\"/>"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -6139,6 +6152,15 @@ msgstr "未来の起業家フェア"
|
||||
msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr "記事'%s'には、'執筆'アクセス権を持つメンバが少なくとも一人必要です。"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr "%(article_name)sの宛先の配置が曖昧なので、カテゴリを指定する必要があります。"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6512,13 +6534,13 @@ msgstr "すでに次が待ち遠しいです🏃"
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__website_message_ids
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article_thread__website_message_ids
|
||||
msgid "Website Messages"
|
||||
msgstr "サイトメッセージ"
|
||||
msgstr "ウェブサイトメッセージ"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article__website_message_ids
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article_thread__website_message_ids
|
||||
msgid "Website communication history"
|
||||
msgstr "サイト通信履歴"
|
||||
msgstr "ウェブサイト通信履歴"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
@@ -6667,6 +6689,13 @@ msgstr "ワークスペース"
|
||||
msgid "Write"
|
||||
msgstr "書く"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr "以下についての記事を書く:"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6757,6 +6786,17 @@ msgstr "この記事のお気に入りは保存できません。"
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr "自分が最後の執筆者である記事を残すことはできません。"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
"%(article_name)s を "
|
||||
"%(item_name)sの下に移動することはできません。%(item_name)sは記事項目であるためです。%(item_name)sをまずは記事に変換して下さい。"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
@@ -6,8 +6,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2024-01-26 16:09+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -69,6 +69,16 @@ msgstr ""
|
||||
msgid "#Is Favorite"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -1027,6 +1037,13 @@ msgid ""
|
||||
"here by clicking on the 📗 icon in the chatter.</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -1940,6 +1957,7 @@ msgstr ""
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -2886,7 +2904,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
@@ -3104,6 +3122,13 @@ msgstr ""
|
||||
msgid "Gender(s): W"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -4179,15 +4204,6 @@ msgstr ""
|
||||
msgid "Move to Workspace"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -4368,11 +4384,6 @@ msgstr ""
|
||||
msgid "No template yet."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -4461,6 +4472,13 @@ msgstr ""
|
||||
msgid "Ongoing"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -4510,7 +4528,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -4903,7 +4921,6 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5138,11 +5155,6 @@ msgstr ""
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -5560,6 +5572,15 @@ msgstr ""
|
||||
msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6075,6 +6096,13 @@ msgstr ""
|
||||
msgid "Write"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6164,6 +6192,15 @@ msgstr ""
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
+42
-23
@@ -12,7 +12,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Sarah Park, 2023\n"
|
||||
"Language-Team: Korean (https://app.transifex.com/odoo/teams/41243/ko/)\n"
|
||||
@@ -1369,6 +1369,13 @@ msgstr ""
|
||||
"<span style=\"font-size: 14px;\">이 문서를 어딘가에 사용하셔야 하나요? 메시지창에서 📗 아이콘을 클릭하시면 "
|
||||
"바로 돌아올 수 있습니다.</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -3391,7 +3398,7 @@ msgstr "편집"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "편집"
|
||||
@@ -3609,6 +3616,13 @@ msgstr "성별: 남성"
|
||||
msgid "Gender(s): W"
|
||||
msgstr "성별: 여성"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -4703,15 +4717,6 @@ msgstr "휴지통으로 이동"
|
||||
msgid "Move to Workspace"
|
||||
msgstr "저장공간으로 이동"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr "%(article_name)s 대상으로 이동할 수 없습니다. 카테고리를 지정해야 합니다."
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -4892,11 +4897,6 @@ msgstr "아직 단계가 없습니다!"
|
||||
msgid "No template yet."
|
||||
msgstr "아직 서식이 없습니다."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr "진행 방법을 잘 모르시겠다고요?"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -5036,7 +5036,7 @@ msgstr "%s 파일을 찾을 수 없습니다. 파일을 다시 업로드하시
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -5446,7 +5446,6 @@ msgstr "즐겨찾기에서 삭제"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5681,11 +5680,6 @@ msgstr "구분"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr "의사의 진찰을 받은 후 진단서를 보내주세요."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr "진행 방식 보기 <i class=\"fa fa-youtube-play\"/>"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -6145,6 +6139,15 @@ msgstr "미래 창업 박람회"
|
||||
msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr " '%s' 게시물에는 '쓰기' 권한을 가진 구성원이 한 명 이상 있어야 합니다."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr "%(article_name)s 최종 위치가 정확하지 않습니다. 카테고리를 지정하세요."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6683,6 +6686,13 @@ msgstr "저장공간"
|
||||
msgid "Write"
|
||||
msgstr "쓰기"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6774,6 +6784,15 @@ msgstr "이 게시물에서 즐겨찾기를 저장할 수 없습니다."
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr "마지막 작성자인 경우 게시물에서 나갈 수 없습니다."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
+67
-30
@@ -3,22 +3,22 @@
|
||||
# * knowledge
|
||||
#
|
||||
# Translators:
|
||||
# Will Sensors, 2023
|
||||
# Anzelika Adejanova, 2023
|
||||
# Armīns Jeltajevs <armins.jeltajevs@gmail.com>, 2023
|
||||
# Arnis Putniņš <arnis@allegro.lv>, 2023
|
||||
# Martin Trigaux, 2023
|
||||
# Konstantins Zabogonskis <inculin4ik@gmail.com>, 2023
|
||||
# ievaputnina <ievai.putninai@gmail.com>, 2023
|
||||
# JanisJanis <jbojars@gmail.com>, 2023
|
||||
# Will Sensors, 2024
|
||||
# ievaputnina <ievai.putninai@gmail.com>, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: JanisJanis <jbojars@gmail.com>, 2023\n"
|
||||
"Last-Translator: ievaputnina <ievai.putninai@gmail.com>, 2024\n"
|
||||
"Language-Team: Latvian (https://app.transifex.com/odoo/teams/41243/lv/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -80,6 +80,16 @@ msgstr ""
|
||||
msgid "#Is Favorite"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -1038,6 +1048,13 @@ msgid ""
|
||||
"here by clicking on the 📗 icon in the chatter.</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -1951,6 +1968,7 @@ msgstr ""
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -2590,7 +2608,7 @@ msgstr ""
|
||||
#: code:addons/knowledge/static/src/components/topbar/topbar.xml:0
|
||||
#, python-format
|
||||
msgid "Cover"
|
||||
msgstr ""
|
||||
msgstr "Nosegt"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_cover__attachment_url
|
||||
@@ -2897,7 +2915,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "Labot"
|
||||
@@ -3115,6 +3133,13 @@ msgstr ""
|
||||
msgid "Gender(s): W"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -4190,15 +4215,6 @@ msgstr ""
|
||||
msgid "Move to Workspace"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -4379,11 +4395,6 @@ msgstr ""
|
||||
msgid "No template yet."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -4414,7 +4425,7 @@ msgstr "Kļūdu skaits"
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article__message_needaction_counter
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article_thread__message_needaction_counter
|
||||
msgid "Number of messages requiring action"
|
||||
msgstr ""
|
||||
msgstr "To ziņojumu skaits, kuros nepieciešama rīcība"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article__message_has_error_counter
|
||||
@@ -4472,6 +4483,13 @@ msgstr ""
|
||||
msgid "Ongoing"
|
||||
msgstr "Ongoing"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -4521,7 +4539,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -4841,7 +4859,7 @@ msgstr ""
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__rating_ids
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article_thread__rating_ids
|
||||
msgid "Ratings"
|
||||
msgstr ""
|
||||
msgstr "Reitingi"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
@@ -4914,7 +4932,6 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5149,11 +5166,6 @@ msgstr "Sadaļa"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -5491,7 +5503,7 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__template_description
|
||||
msgid "Template Description"
|
||||
msgstr ""
|
||||
msgstr "Sagataves apraksts"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_template_view_search
|
||||
@@ -5575,6 +5587,15 @@ msgstr ""
|
||||
msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6090,6 +6111,13 @@ msgstr ""
|
||||
msgid "Write"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6179,6 +6207,15 @@ msgstr ""
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+85
-41
@@ -6,16 +6,16 @@
|
||||
# Yenthe Van Ginneken <yenthespam@gmail.com>, 2023
|
||||
# Martin Trigaux, 2023
|
||||
# Wil Odoo, 2023
|
||||
# Jolien De Paepe, 2023
|
||||
# Erwin van der Ploeg <erwin@odooexperts.nl>, 2023
|
||||
# Jolien De Paepe, 2024
|
||||
# Erwin van der Ploeg <erwin@odooexperts.nl>, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Erwin van der Ploeg <erwin@odooexperts.nl>, 2023\n"
|
||||
"Last-Translator: Erwin van der Ploeg <erwin@odooexperts.nl>, 2024\n"
|
||||
"Language-Team: Dutch (https://app.transifex.com/odoo/teams/41243/nl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -81,6 +81,19 @@ msgstr "# Medewerkers:"
|
||||
msgid "#Is Favorite"
|
||||
msgstr "#Is Favoriet"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
"\"%(article_item_name)s\" is een artikelitem van \"%(article_name)s\" en kan"
|
||||
" niet op zichzelf worden hersteld. Neem contact op met de eigenaar van "
|
||||
"\"%(article_name)s\" om het te laten herstellen."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -1331,6 +1344,15 @@ msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Heb je dit document ergens nodig? Kom hier "
|
||||
"terug door op het 📗-pictogram in de chatter te klikken.</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Weet je niet zeker hoe het moet? Bekijk dan"
|
||||
" zeker onderstaande video 👇</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -1886,7 +1908,7 @@ msgstr "Toegang beperkt. Mag niet met iedereen worden gedeeld van"
|
||||
#. module: knowledge
|
||||
#: model:knowledge.article,template_name:knowledge.knowledge_article_template_account_management
|
||||
msgid "Account Management"
|
||||
msgstr "Rekeningenbeheer"
|
||||
msgstr "Accountbeheer"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_account_management
|
||||
@@ -2372,6 +2394,7 @@ msgstr "Eigenschappen van artikelitem"
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -2537,7 +2560,7 @@ msgstr "Boekjes voor een totale prijs > $1000"
|
||||
#: model:knowledge.article,template_name:knowledge.knowledge_article_template_brand_assets
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid "Brand Assets"
|
||||
msgstr "Brand Assets"
|
||||
msgstr "Merkmiddelen"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_persona_1
|
||||
@@ -3367,11 +3390,11 @@ msgstr "Dupliceren"
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_mail_invite
|
||||
msgid "EDIT"
|
||||
msgstr "BEWERK"
|
||||
msgstr "BEWERKEN"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "Bewerken"
|
||||
@@ -3593,6 +3616,13 @@ msgstr "Geslacht(en): M"
|
||||
msgid "Gender(s): W"
|
||||
msgstr "Geslacht(en): W"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr "Genereer een artikel met AI"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -3653,7 +3683,7 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_invite__have_share_partners
|
||||
msgid "Have Share Partners"
|
||||
msgstr "Deelpartners hebben"
|
||||
msgstr "Is gedeeld met relaties"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
@@ -4703,17 +4733,6 @@ msgstr "Verplaatsen naar de prullenbak"
|
||||
msgid "Move to Workspace"
|
||||
msgstr "Naar werkruimte verplaatsen"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr ""
|
||||
"Verplaatsen naar doel van %(article_name)s is dubbelzinnig, je moet de "
|
||||
"categorie specificeren."
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -4894,11 +4913,6 @@ msgstr "Nog geen fases!"
|
||||
msgid "No template yet."
|
||||
msgstr "Nog geen sjablonen."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr "Ben je niet zeker hoe dit moet?"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -4947,7 +4961,7 @@ msgstr "Doelstellingen met onze samenwerking"
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_meeting_example_branding
|
||||
msgid "Odoo Brand Assets"
|
||||
msgstr "Odoo Brand Assets"
|
||||
msgstr "Odoo Merkmiddelen"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_company_newsletter
|
||||
@@ -4989,6 +5003,13 @@ msgstr "Onboarding.pdf"
|
||||
msgid "Ongoing"
|
||||
msgstr "Lopend"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr "Alleen interne gebruikers hebben toegang tot deze weergave."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -5044,7 +5065,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -5098,7 +5119,7 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_shared_todos
|
||||
msgid "Otherwise, feel free to handle others listed below:"
|
||||
msgstr "Anders kunt u gerust de onderstaande personen behandelen:"
|
||||
msgstr "Anders kun je gerust de onderstaande personen behandelen:"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_hr_faq
|
||||
@@ -5463,7 +5484,6 @@ msgstr "Verwijder van favorieten"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5495,7 +5515,7 @@ msgstr "Beantwoorden"
|
||||
#: code:addons/knowledge/static/src/components/knowledge_cover/knowledge_cover.xml:0
|
||||
#, python-format
|
||||
msgid "Reposition"
|
||||
msgstr "Verplaatse"
|
||||
msgstr "Verplaatsen"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -5610,7 +5630,7 @@ msgstr "Verkoopdetails"
|
||||
#: model:knowledge.article,template_name:knowledge.knowledge_article_template_sales_playbook
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_sales_playbook
|
||||
msgid "Sales Playbook"
|
||||
msgstr "Sales Playbook"
|
||||
msgstr "Verkoopdraaiboek"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -5698,11 +5718,6 @@ msgstr "Sectie"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr "Ga naar de dokter en stuur ons een ziektebriefje."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr "Zie hoe het werkt <i class=\"fa fa-youtube-play\"/>"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -5789,7 +5804,7 @@ msgstr "Minder tonen"
|
||||
#: code:addons/knowledge/static/src/components/topbar/topbar.xml:0
|
||||
#, python-format
|
||||
msgid "Show Properties"
|
||||
msgstr "Eigendommen tonen"
|
||||
msgstr "Eigenschappen tonen"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -5947,7 +5962,7 @@ msgstr ""
|
||||
#: model:knowledge.article,template_name:knowledge.knowledge_article_template_sprint_calendar
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_sprint_calendar
|
||||
msgid "Sprint Calendar"
|
||||
msgstr "Sprint Kalender"
|
||||
msgstr "Sprintkalender"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_stage_view_form
|
||||
@@ -6057,7 +6072,7 @@ msgstr "Sjabloon"
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__template_body
|
||||
msgid "Template Body"
|
||||
msgstr "Sjabloonlichaam"
|
||||
msgstr "Inhoud sjabloon"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_template_category_action
|
||||
@@ -6088,7 +6103,7 @@ msgstr "Sjabloonitems"
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__template_preview
|
||||
msgid "Template Preview"
|
||||
msgstr "Sjabloon preview"
|
||||
msgstr "Sjabloon voorbeeld"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__template_sequence
|
||||
@@ -6099,7 +6114,7 @@ msgstr "Sjabloonreeks"
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_template_stage_action
|
||||
#: model:ir.ui.menu,name:knowledge.knowledge_article_template_stage_menu
|
||||
msgid "Template Stages"
|
||||
msgstr "Sjabloonstadia"
|
||||
msgstr "Sjabloonfases"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__template_name
|
||||
@@ -6167,6 +6182,17 @@ msgstr "De Ondernemersbeurs van de Toekomst"
|
||||
msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr "Het artikel '%s' heeft minimaal één lid nodig met 'schrijf'-toegang."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr ""
|
||||
"De doelbestemming van %(article_name)s is dubbelzinnig. Specifieer de "
|
||||
"categorie."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6727,6 +6753,13 @@ msgstr "Werkruimte"
|
||||
msgid "Write"
|
||||
msgstr "Schrijven"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr "Schrijf een artikel over"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6818,6 +6851,17 @@ msgstr "Je kan dit artikel niet als favoriet opslaan"
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr "Je kunt geen artikel achterlaten waarvan je de laatste schrijver bent"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
"Je kan %(article_name)s niet onder %(item_name)s verplaatsen, aangezien "
|
||||
"%(item_name)s een artikelitem is. Zet eerst %(item_name)s om in een artikel."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
+42
-25
@@ -13,7 +13,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Wil Odoo, 2023\n"
|
||||
"Language-Team: Polish (https://app.transifex.com/odoo/teams/41243/pl/)\n"
|
||||
@@ -1237,6 +1237,13 @@ msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Potrzebujesz gdzieś tego dokumentu? Wróć "
|
||||
"tutaj, klikając ikonę 📗 w rozmowie.</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -3149,7 +3156,7 @@ msgstr "EDYTUJ"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "Edytuj"
|
||||
@@ -3367,6 +3374,13 @@ msgstr ""
|
||||
msgid "Gender(s): W"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -4454,17 +4468,6 @@ msgstr "Przenieś do kosza"
|
||||
msgid "Move to Workspace"
|
||||
msgstr "Przejdź do obszaru roboczego"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr ""
|
||||
"Przeniesienie do docelowego artykułu %(article_name)s jest niejednoznaczne, "
|
||||
"powinieneś wyszczególnić kategorię."
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -4645,11 +4648,6 @@ msgstr "Nie ma jeszcze etapu!"
|
||||
msgid "No template yet."
|
||||
msgstr "Nie ma jeszcze szablonu."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr "Nie wiesz, jak to zrobić?"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -4792,7 +4790,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -5189,7 +5187,6 @@ msgstr "Usuń z ulubionych"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5424,11 +5421,6 @@ msgstr "Sekcja"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr "Zobacz, jak to działa <i class=\"fa fa-youtube-play\"/>"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -5853,6 +5845,15 @@ msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr ""
|
||||
"Ten artykuł '%s' wymaga przynajmniej jednej osoby z dostępem \"do pisania\"."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6384,6 +6385,13 @@ msgstr "Przestrzeń robocza"
|
||||
msgid "Write"
|
||||
msgstr "Pisz"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6475,6 +6483,15 @@ msgstr "Nie można zapisać ulubionych w tym artykule"
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr "Nie możesz opuścić artykułu, którego ostatnim twórcą jesteś Ty"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+73
-28
@@ -5,17 +5,17 @@
|
||||
# Translators:
|
||||
# Éder Brito <britoederr@gmail.com>, 2023
|
||||
# Martin Trigaux, 2023
|
||||
# Maitê Dietze, 2023
|
||||
# Wil Odoo, 2023
|
||||
# Layna Nascimento, 2023
|
||||
# a75f12d3d37ea5bf159c4b3e85eb30e7_0fa6927, 2023
|
||||
# Maitê Dietze, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Layna Nascimento, 2023\n"
|
||||
"Last-Translator: Maitê Dietze, 2024\n"
|
||||
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/odoo/teams/41243/pt_BR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -81,6 +81,19 @@ msgstr "Nº de funcionários:"
|
||||
msgid "#Is Favorite"
|
||||
msgstr "#É favorito"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
"\"%(article_item_name)s\" é um item de artigo de \"%(article_name)s\" e não "
|
||||
"pode ser restaurado sozinho. Entre em contato com o proprietário do "
|
||||
"\"%(article_name)s\" para restaurá-lo."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -1392,6 +1405,15 @@ msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Precisa desse documento em algum lugar? "
|
||||
"Volte até aqui clicando no ícone 📗 do chatter.</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Não sabe muito bem como fazer isso? Confira"
|
||||
" o vídeo abaixo 👇</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -2487,6 +2509,7 @@ msgstr "Propriedades do item do artigo"
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -3488,7 +3511,7 @@ msgstr "EDITAR"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
@@ -3710,6 +3733,13 @@ msgstr "Gênero(s): M"
|
||||
msgid "Gender(s): W"
|
||||
msgstr "Gênero(s): F"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr "Gerar um artigo com IA"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -4362,7 +4392,7 @@ msgstr "Cargo:"
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_view_form
|
||||
msgid "Join"
|
||||
msgstr "Participar"
|
||||
msgstr "Entrar"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -4817,16 +4847,6 @@ msgstr "Mover para a lixeira"
|
||||
msgid "Move to Workspace"
|
||||
msgstr "Mover para o espaço de trabalho"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr ""
|
||||
"Mover para destino de %(article_name)s é ambíguo. Especifique a categoria."
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -5007,11 +5027,6 @@ msgstr "Nenhum estágio ainda."
|
||||
msgid "No template yet."
|
||||
msgstr "Nenhum modelo ainda."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr "Não tem certeza de como fazer?"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -5102,6 +5117,13 @@ msgstr "Onboarding.pdf"
|
||||
msgid "Ongoing"
|
||||
msgstr "Em andamento"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr "Somente usuários internos podem acessar essa visualização."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -5159,7 +5181,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -5582,7 +5604,6 @@ msgstr "Remover dos favoritos"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5817,11 +5838,6 @@ msgstr "Seção"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr "Consulte um médico e nos envie o atestado."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr "Veja como funciona <i class=\"fa fa-youtube-play\"/>"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -6288,6 +6304,17 @@ msgstr "Feira do empreendedorismo do futuro"
|
||||
msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr "O artigo \"%s\" precisa ter pelo menos um membro com acesso \"Editar\"."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr ""
|
||||
"O posicionamento de destino de %(article_name)s é ambíguo. Especifique a "
|
||||
"categoria."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6842,6 +6869,13 @@ msgstr "Espaço de trabalho"
|
||||
msgid "Write"
|
||||
msgstr "Editar"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr "Escreva um artigo sobre"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6934,6 +6968,17 @@ msgstr "Você não pode salvar favoritos nesse artigo"
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr "Você não pode sair de um artigo em que você é o último editor"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
"Você não pode mover %(article_name)s para %(item_name)s pois %(item_name)s é"
|
||||
" um item de artigo. Converta o %(item_name)sem um Artigo primeiro."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+607
-340
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+1363
-629
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+714
-279
File diff suppressed because it is too large
Load Diff
+101
-55
@@ -3,16 +3,16 @@
|
||||
# * knowledge
|
||||
#
|
||||
# Translators:
|
||||
# Thi Huong Nguyen, 2023
|
||||
# Wil Odoo, 2023
|
||||
# Thi Huong Nguyen, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Wil Odoo, 2023\n"
|
||||
"Last-Translator: Thi Huong Nguyen, 2024\n"
|
||||
"Language-Team: Vietnamese (https://app.transifex.com/odoo/teams/41243/vi/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -49,7 +49,7 @@ msgid ""
|
||||
"\"%(article_name)s\" is a template and can not be a child of an article "
|
||||
"(\"%(parent_article_name)s\")."
|
||||
msgstr ""
|
||||
"\"%(article_name)s\" là mẫu và không thể là con của một bài viết "
|
||||
"\"%(article_name)s\" là mẫu và không thể là phần phụ của một bài viết "
|
||||
"(\"%(parent_article_name)s\")."
|
||||
|
||||
#. module: knowledge
|
||||
@@ -60,7 +60,7 @@ msgid ""
|
||||
"\"%(article_name)s\" is an article and can not be a child of a template "
|
||||
"(\"%(parent_article_name)s\").\""
|
||||
msgstr ""
|
||||
"\"%(article_name)s\" là bài viết và không thể là con của một mẫu "
|
||||
"\"%(article_name)s\" là bài viết và không thể là phần phụ của một mẫu "
|
||||
"(\"%(parent_article_name)s\").\""
|
||||
|
||||
#. module: knowledge
|
||||
@@ -78,6 +78,19 @@ msgstr "# nhân viên:"
|
||||
msgid "#Is Favorite"
|
||||
msgstr "#Là yêu thích"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
"\"%(article_item_name)s\" là một Hạng mục bài viết từ \"%(article_name)s\" "
|
||||
"và không thể tự khôi phục được. Hãy liên hệ với chủ sở hữu của "
|
||||
"\"%(article_name)s\" để khôi phục nó."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -1298,7 +1311,7 @@ msgstr ""
|
||||
" </span>\n"
|
||||
" bằng cách mở\n"
|
||||
" <span style=\"font-weight: bolder;\">\n"
|
||||
" <font class=\"text-o-color-2\">Khung nhập lệnh</font>\n"
|
||||
" <font class=\"text-o-color-2\">Bảng lệnh</font>\n"
|
||||
" </span>\n"
|
||||
" (Ctrl + k/⌘ + k) sau đó tìm kiếm các bài viết bằng cách bắt đầu truy vấn với\n"
|
||||
" \"<span style=\"font-weight: bolder;\">?</span>\".\n"
|
||||
@@ -1386,6 +1399,15 @@ msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Bạn cần tài liệu này ở đâu đó? Hãy quay lại"
|
||||
" đây bằng cách nhấp vào biểu tượng 📗 trong cửa sổ trò chuyện.</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr ""
|
||||
"<span style=\"font-size: 14px;\">Bạn không rõ cách làm? Hãy xem video dưới "
|
||||
"đây 👇</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -2402,7 +2424,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Bạn có chắc chắn muốn khôi phục quyền truy cập không? Điều này đồng nghĩa "
|
||||
"với việc bài viết này giờ đây sẽ kế thừa mọi quyền truy cập được thiết lập "
|
||||
"trên các bài viết cha của nó."
|
||||
"trên các bài viết chính của nó."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -2414,7 +2436,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Bạn có chắc chắn muốn hạn chế quyền truy cập vào bài viết này không? Điều "
|
||||
"này đồng nghĩa với việc bài viết sẽ không còn kế thừa quyền truy cập từ các "
|
||||
"bài viết cha của nó nữa."
|
||||
"bài viết chính của nó nữa."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -2484,6 +2506,7 @@ msgstr "Thuộc tính hạng mục bài viết"
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -2531,7 +2554,7 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model:ir.model.constraint,message:knowledge.constraint_knowledge_article_check_article_item_parent
|
||||
msgid "Article items must have a parent."
|
||||
msgstr "Các hạng mục bài viết phải có cha."
|
||||
msgstr "Các hạng mục bài viết phải có hạng mục chính."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
@@ -2864,7 +2887,7 @@ msgid ""
|
||||
"rights can not be inferred without a parent."
|
||||
msgstr ""
|
||||
"Không thể di chuyển %(article_name)s làm bài viết gốc của phần 'được chia "
|
||||
"sẻ' vì không thể suy ra quyền truy cập nếu không có cha."
|
||||
"sẻ' vì không thể suy ra quyền truy cập nếu không có phần chính."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
@@ -2957,7 +2980,7 @@ msgstr "Thay đổi ảnh bìa"
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__child_ids
|
||||
msgid "Child Articles and Items"
|
||||
msgstr "Hạng mục và bài viết con"
|
||||
msgstr "Hạng mục và bài viết phụ"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -3394,7 +3417,7 @@ msgstr "Các bài viết huỷ đồng bộ phải có quyền nội bộ."
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__is_desynchronized
|
||||
msgid "Desyncronized with parents"
|
||||
msgstr "Huỷ đồng bộ hóa với cha"
|
||||
msgstr "Huỷ đồng bộ hóa với phần chính"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -3486,7 +3509,7 @@ msgstr "CHỈNH SỬA"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "Chỉnh sửa"
|
||||
@@ -3708,6 +3731,13 @@ msgstr "Giới tính: Nam"
|
||||
msgid "Gender(s): W"
|
||||
msgstr "Giới tính: Nữ"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr "Tạo một bài viết bằng AI"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_member_view_search
|
||||
@@ -3750,20 +3780,20 @@ msgstr "Có quyền viết"
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__has_item_children
|
||||
msgid "Has article item children?"
|
||||
msgstr "Có con của hạng mục bài viết?"
|
||||
msgstr "Có phần phụ của hạng mục bài viết?"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__has_article_children
|
||||
msgid "Has normal article children?"
|
||||
msgstr "Có bài viết con bình thường?"
|
||||
msgstr "Có phần phụ của bài viết bình thường?"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article__user_has_access_parent_path
|
||||
msgid ""
|
||||
"Has the user access to each parent from current article until its root?"
|
||||
msgstr ""
|
||||
"Người dùng có quyền truy cập vào từng bài viết cha tính từ bài viết hiện tại"
|
||||
" cho đến bài viết gốc của nó?"
|
||||
"Người dùng có quyền truy cập vào từng bài viết chính tính từ bài viết hiện "
|
||||
"tại cho đến bài viết gốc của nó?"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_invite__have_share_partners
|
||||
@@ -3799,7 +3829,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Đây là những logo mà bạn có thể thoải mái sử dụng.\n"
|
||||
" <br>\n"
|
||||
" Chúng cũng có thể được chia sẻ với khách hàng, cánh nhà báo, và các đơn vị bán lại."
|
||||
" Chúng cũng có thể được chia sẻ với khách hàng, các đơn vị báo chí, đơn vị bán lại."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_product_catalog
|
||||
@@ -3994,7 +4024,7 @@ msgid ""
|
||||
"If set, this article won't inherit access rules from its parents anymore."
|
||||
msgstr ""
|
||||
"Nếu cài đặt, bài viết này sẽ không kế thừa các quy tắc truy cập từ bài viết "
|
||||
"cha của nó."
|
||||
"chính của nó."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_post_mortem
|
||||
@@ -4074,7 +4104,7 @@ msgstr "Quyền được kế thừa"
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__inherited_permission_parent_id
|
||||
msgid "Inherited Permission Parent Article"
|
||||
msgstr "Bài viết cha có quyền được kế thừa"
|
||||
msgstr "Bài viết chính có quyền được kế thừa"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -4268,7 +4298,7 @@ msgstr "Là mẫu"
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__has_item_parent
|
||||
msgid "Is the parent an Item?"
|
||||
msgstr "Cha có phải là một hạng mục không?"
|
||||
msgstr "Phần chính có phải là một hạng mục không?"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_post_mortem
|
||||
@@ -4627,7 +4657,7 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model:knowledge.article,template_description:knowledge.knowledge_article_template_sprint_calendar
|
||||
msgid "Manage your team schedule for the upcoming sprint."
|
||||
msgstr ""
|
||||
msgstr "Quản lý lịch làm việc của bộ phận cho cuộc chạy nước rút sắp tới."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
@@ -4818,17 +4848,6 @@ msgstr "Chuyển vào thùng rác"
|
||||
msgid "Move to Workspace"
|
||||
msgstr "Chuyển vào không gian làm việc"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr ""
|
||||
"Mục tiêu chuyển đến của %(article_name)s không rõ ràng, bạn cần xác định "
|
||||
"danh mục."
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -5009,11 +5028,6 @@ msgstr "Chưa có giai đoạn nào!"
|
||||
msgid "No template yet."
|
||||
msgstr "Chưa có mẫu nào."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr "Bạn không chắc chắn nên làm thế nào?"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -5104,6 +5118,13 @@ msgstr "Onboarding.pdf"
|
||||
msgid "Ongoing"
|
||||
msgstr "Đang diễn ra"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr "Chỉ Người dùng nội bộ mới có thể truy cập chế độ xem này."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -5159,7 +5180,7 @@ msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -5248,17 +5269,17 @@ msgstr "Điểm yếu (<em>đánh dấu vào mục liên quan</em>)"
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__parent_id
|
||||
msgid "Parent Article"
|
||||
msgstr "Bài viết cha"
|
||||
msgstr "Bài viết chính"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__parent_path
|
||||
msgid "Parent Path"
|
||||
msgstr "Tuyến cha"
|
||||
msgstr "Tuyến chính"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_template_view_form
|
||||
msgid "Parent Template"
|
||||
msgstr "Mẫu cha"
|
||||
msgstr "Mẫu chính"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article_member__partner_id
|
||||
@@ -5455,7 +5476,7 @@ msgid ""
|
||||
"Properties are fields that can only be added on articles that have a parent."
|
||||
msgstr ""
|
||||
"Thuộc tính là những trường chỉ có thể được thêm vào các bài viết có bài viết"
|
||||
" cha."
|
||||
" chính."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -5583,7 +5604,6 @@ msgstr "Xoá khỏi danh sách yêu thích"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5818,11 +5838,6 @@ msgstr "Phần"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr "Hãy đến gặp bác sĩ và gửi cho chúng tôi phiếu khám bệnh."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr "Hãy xem cách thực hiện tại đây<i class=\"fa fa-youtube-play\"/>"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -6084,7 +6099,8 @@ msgstr "Giai đoạn"
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article_stage__parent_id
|
||||
msgid "Stages are shared among acommon parent and its children articles."
|
||||
msgstr "Giai đoạn được chia sẻ giữa bài viết cha và các bài viết con của nó."
|
||||
msgstr ""
|
||||
"Giai đoạn được chia sẻ giữa bài viết chính và các bài viết phụ của nó."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_account_management
|
||||
@@ -6286,6 +6302,16 @@ msgstr "Hội chợ khởi nghiệp tương lai"
|
||||
msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr "Bài viết '%s' cần ít nhất một thành viên có quyền 'Viết'."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr ""
|
||||
"Vị trí đích của %(article_name)s không rõ ràng, bạn cần xác định danh mục."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6324,7 +6350,7 @@ msgstr "Thành viên được chọn không tồn tại hoặc đã bị xóa."
|
||||
#: model:ir.model.fields,help:knowledge.field_knowledge_article__sequence
|
||||
msgid ""
|
||||
"The sequence is computed only among the articles that have the same parent."
|
||||
msgstr "Trình tự chỉ được tính trong số các bài viết có cùng cha."
|
||||
msgstr "Trình tự chỉ được tính trong số các bài viết có cùng bài viết chính."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -6338,8 +6364,8 @@ msgstr "Thuộc tính ngày bắt đầu là bắt buộc."
|
||||
msgid ""
|
||||
"The subject is the title of the highest parent in the article hierarchy."
|
||||
msgstr ""
|
||||
"Chủ đề là tiêu đề của bài viết cha cao nhất trong hệ thống phân cấp bài "
|
||||
"viết."
|
||||
"Chủ đề là tiêu đề của bài viết chính có thứ tự cao nhất trong hệ thống phân "
|
||||
"cấp bài viết."
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_company_newsletter
|
||||
@@ -6415,7 +6441,8 @@ msgstr ""
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Those fields will be available on all articles that share the same parent."
|
||||
msgstr "Những trường đó sẽ có sẵn trên tất cả bài viết có cùng cha."
|
||||
msgstr ""
|
||||
"Những trường đó sẽ có sẵn trên tất cả bài viết có cùng bài viết chính."
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article_thread__is_resolved
|
||||
@@ -6843,6 +6870,13 @@ msgstr "Không gian làm việc"
|
||||
msgid "Write"
|
||||
msgstr "Viết"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr "Viết một bài viết về"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6935,6 +6969,18 @@ msgstr "Bạn không thể đánh dấu yêu thích trên bài viết này"
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr "Bạn không thể rời khỏi bài viết mà bạn là người viết cuối cùng"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
"Bạn không thể di chuyển %(article_name)s dưới %(item_name)s, vì "
|
||||
"%(item_name)s là một Hạng mục bài viết. Trước tiên hãy chuyển %(item_name)s "
|
||||
"thành một Bài viết."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
@@ -7113,7 +7159,7 @@ msgstr ""
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_trash_notification
|
||||
msgid "and the following child article(s) have"
|
||||
msgstr "và (các) bài viết con sau đây có"
|
||||
msgstr "và (các) bài viết phụ sau đây có"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
|
||||
+82
-40
@@ -5,15 +5,17 @@
|
||||
# Translators:
|
||||
# Wil Odoo, 2023
|
||||
# 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2023
|
||||
# Jeffery CHEN <jeffery9@gmail.com>, 2023
|
||||
# Chloe Wang, 2024
|
||||
# 湘子 南 <1360857908@qq.com>, 2024
|
||||
# Jeffery CHEN <jeffery9@gmail.com>, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 17.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-10-26 22:20+0000\n"
|
||||
"POT-Creation-Date: 2024-01-26 16:09+0000\n"
|
||||
"PO-Revision-Date: 2023-10-26 23:10+0000\n"
|
||||
"Last-Translator: Jeffery CHEN <jeffery9@gmail.com>, 2023\n"
|
||||
"Last-Translator: Jeffery CHEN <jeffery9@gmail.com>, 2024\n"
|
||||
"Language-Team: Chinese (China) (https://app.transifex.com/odoo/teams/41243/zh_CN/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -75,6 +77,18 @@ msgstr "# 员工:"
|
||||
msgid "#Is Favorite"
|
||||
msgstr "#是最喜欢的"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\"%(article_item_name)s\" is an Article Item from \"%(article_name)s\" and "
|
||||
"cannot be restored on its own. Contact the owner of \"%(article_name)s\" to "
|
||||
"have it restored instead."
|
||||
msgstr ""
|
||||
"\"%(article_item_name)s\" 是来自的 \"%(article_name)s\" 文章项目,不能自行恢复. 联系 "
|
||||
"\"%(article_name)s\" 的所有者来恢复它."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -1329,7 +1343,7 @@ msgid ""
|
||||
"<span style=\"font-size: 14px;\">From any Odoo document, find this article "
|
||||
"by clicking on the 📗 icon in the chatter.</span>"
|
||||
msgstr ""
|
||||
"<span style=\"font-size: 14px;\">在任何 Odoo 文档中,只要点击聊天中的 📗 图标即可找到这篇文章。</span>"
|
||||
"<span style=\"font-size: 14px;\">在任何 ERP 文档中,只要点击聊天中的 📗 图标即可查找这篇文章。</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
@@ -1352,6 +1366,13 @@ msgid ""
|
||||
"here by clicking on the 📗 icon in the chatter.</span>"
|
||||
msgstr "<span style=\"font-size: 14px;\">需要这份文件?点击聊天中的📗 图标回到这里。</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid ""
|
||||
"<span style=\"font-size: 14px;\">Not sure how to do it? Check the video "
|
||||
"below 👇</span>"
|
||||
msgstr "<span style=\"font-size: 14px;\">不知道应该如何做?查看下面的视频 👇</span>"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "<span style=\"font-size: 14px;\">Press Ctrl-Z to undo any change</span>"
|
||||
@@ -2375,7 +2396,7 @@ msgstr "您确定要将权限设置为\"无\"吗? 如果您这样做,您将
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_stage_view_search
|
||||
#, python-format
|
||||
msgid "Article"
|
||||
msgstr "条款"
|
||||
msgstr "文章"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
@@ -2400,6 +2421,7 @@ msgstr "文章项目属性"
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.js:0
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_action_item_calendar
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action
|
||||
#: model:ir.actions.act_window,name:knowledge.knowledge_article_item_action_stages
|
||||
@@ -2789,7 +2811,7 @@ msgstr "Car_Catalog.png"
|
||||
#: code:addons/knowledge/static/src/components/move_article_dialog/move_article_dialog.js:0
|
||||
#, python-format
|
||||
msgid "Categories"
|
||||
msgstr "电商品类"
|
||||
msgstr "类别"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article_template_category__sequence
|
||||
@@ -3326,7 +3348,7 @@ msgstr "记录营销活动,确定关键目标和成果的优先次序。"
|
||||
msgid ""
|
||||
"Don't forget to spread the word, we're <em>so</em> looking forward to "
|
||||
"unveiling this new Odoo version! 🥳"
|
||||
msgstr "别忘了传播消息,我们<em>非常</em>期待新版 Odoo 的发布!🥳"
|
||||
msgstr "别忘了传播消息,我们<em>非常so</em>期待新版 ERP 的发布!🥳"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
@@ -3365,7 +3387,7 @@ msgstr "编辑"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#, python-format
|
||||
msgid "Edit"
|
||||
msgstr "编辑"
|
||||
@@ -3569,7 +3591,7 @@ msgstr "全幅"
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_personas
|
||||
msgid "Gender(s):"
|
||||
msgstr "性别:男"
|
||||
msgstr "性别:"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_persona_2
|
||||
@@ -3581,7 +3603,14 @@ msgstr "性别:男"
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_persona_1
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_marketing_customer_persona_3
|
||||
msgid "Gender(s): W"
|
||||
msgstr "性别:男"
|
||||
msgstr "性别:女"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/knowledge_article_html_field/knowledge_article_html_field.xml:0
|
||||
#, python-format
|
||||
msgid "Generate an Article with AI"
|
||||
msgstr "使用 AI 生成文章"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_favorite_view_search
|
||||
@@ -3906,7 +3935,7 @@ msgstr "客户体验不一致"
|
||||
#: code:addons/knowledge/static/src/js/wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Index"
|
||||
msgstr "指标"
|
||||
msgstr "索引"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_product_catalog
|
||||
@@ -4253,7 +4282,7 @@ msgstr "文章项目看板"
|
||||
#. module: knowledge
|
||||
#: model:knowledge.article,template_description:knowledge.knowledge_article_template_shared_todos
|
||||
msgid "Keep track of your company to-dos and share them with your colleagues."
|
||||
msgstr "记录公司的待办事项,并与同事分享。"
|
||||
msgstr "记录公司的待办,并与同事分享。"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:knowledge.article,template_description:knowledge.knowledge_article_template_company_newsletter
|
||||
@@ -4606,7 +4635,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"150 多名奥杜人参加了今年的 5 或 11 公里长跑活动。\n"
|
||||
" <br> ,他们从办公室出发,在郊外尽情游览,然后返回大罗西埃,在那里他们受到了饮料和汉堡的欢迎。\n"
|
||||
" 在回到大罗西埃(Grand-Rosière)之前,他们在那里受到了饮料和汉堡的欢迎。"
|
||||
" 在回到大罗西埃(Grand-Rosière)之前,他们在那里受到了饮料和汉堡的欢迎."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -4671,15 +4700,6 @@ msgstr "移至回收站"
|
||||
msgid "Move to Workspace"
|
||||
msgstr "移至工作区"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Move to target of %(article_name)s is ambiguous, you should specify the "
|
||||
"category."
|
||||
msgstr "移动到目标%(article_name)s是模糊的,您应该指定类别。"
|
||||
|
||||
#. module: knowledge
|
||||
#: model:ir.model.fields,field_description:knowledge.field_knowledge_article__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
@@ -4860,11 +4880,6 @@ msgstr "尚无阶段!"
|
||||
msgid "No template yet."
|
||||
msgstr "尚无模板。"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "Not sure how to do it?"
|
||||
msgstr "不知道怎么做?"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/comments_panel/comments_panel.xml:0
|
||||
@@ -4955,6 +4970,13 @@ msgstr "Onboarding.pdf"
|
||||
msgid "Ongoing"
|
||||
msgstr "正在进行"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/view_link_behavior/view_link_behavior.js:0
|
||||
#, python-format
|
||||
msgid "Only Internal Users can access this view."
|
||||
msgstr ""
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
@@ -5004,7 +5026,7 @@ msgstr "哎呀,无法找到文件%s。请用一个新的文件框替换这个
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/embedded_view_actions_menu/embedded_view_actions_menu.xml:0
|
||||
#: code:addons/knowledge/static/src/components/sidebar/sidebar.js:0
|
||||
#: code:addons/knowledge/static/src/views/item_calendar/item_calendar_views.xml:0
|
||||
#, python-format
|
||||
@@ -5414,7 +5436,6 @@ msgstr "从收藏夹移除"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/behaviors/embedded_view_behavior/embedded_view_manager.xml:0
|
||||
#: code:addons/knowledge/static/src/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog.xml:0
|
||||
#, python-format
|
||||
msgid "Rename"
|
||||
@@ -5649,11 +5670,6 @@ msgstr "小节"
|
||||
msgid "See a doctor and send us the sick note."
|
||||
msgstr "去看医生,并把病假条发送给我们。"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:ir.ui.view,arch_db:knowledge.knowledge_article_user_onboarding
|
||||
msgid "See how it works <i class=\"fa fa-youtube-play\"/>"
|
||||
msgstr "了解看看<i class=\"fa fa-youtube-play\"/>"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/article_template_picker_dialog/article_template_picker_dialog.js:0
|
||||
@@ -5719,7 +5735,7 @@ msgstr "分享"
|
||||
#: model:knowledge.article,template_name:knowledge.knowledge_article_template_shared_todos
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_shared_todos
|
||||
msgid "Shared To-Do List"
|
||||
msgstr "共享待办事项清单"
|
||||
msgstr "共享待办清单"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -5747,7 +5763,7 @@ msgstr "显示属性"
|
||||
#: code:addons/knowledge/static/src/js/wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Show nested articles"
|
||||
msgstr "显示巢状文章"
|
||||
msgstr "显示嵌套文章"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_sales_playbook
|
||||
@@ -6111,6 +6127,15 @@ msgstr "未来创业博览会"
|
||||
msgid "The article '%s' needs at least one member with 'Write' access."
|
||||
msgstr "文章”%s“需要至少一位有“写入”权限的成员。"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The destination placement of %(article_name)s is ambiguous, you should "
|
||||
"specify the category."
|
||||
msgstr "%(article_name)s的目标位置不明确,应指定类别。"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/macros/abstract_macro.js:0
|
||||
@@ -6169,7 +6194,7 @@ msgstr "主题是文章层次结构中最高父级的标题。"
|
||||
msgid ""
|
||||
"The tickets to participate to Odoo Experience 23 are now available and they "
|
||||
"are cheaper if you book them now!"
|
||||
msgstr "参加 Odoo Experience 23 的门票现已开始发售,现在预订会更便宜!"
|
||||
msgstr "参加 ERP Experience 23 的门票现已开始发售,现在可用的预订会更便宜!"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -6226,9 +6251,9 @@ msgid ""
|
||||
" Antwerp, ready to promote our company!<br>Fabien was also there and gave an interview on the main\n"
|
||||
" stage."
|
||||
msgstr ""
|
||||
"今年,Odoo 再次参加了在安特卫普举行的<em>学生科技创新节</em>。\n"
|
||||
" <br> Fabien 也来到了现场,并在主舞台上接受了采访。\n"
|
||||
" 舞台上接受了采访。"
|
||||
"今年,ERP 再次参加了在安特卫普举行的<em>学生科技创新节</em>。\n"
|
||||
" 安特卫普,准备促销我们的公司! <br> Fabien 也来到了现场,并在主舞台上接受了采访。\n"
|
||||
" 舞台阶段上接受了面谈."
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
@@ -6644,6 +6669,13 @@ msgstr "工作区"
|
||||
msgid "Write"
|
||||
msgstr "写入"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/js/knowledge_wysiwyg.js:0
|
||||
#, python-format
|
||||
msgid "Write an article about"
|
||||
msgstr "写一篇文章关于"
|
||||
|
||||
#. module: knowledge
|
||||
#: model_terms:knowledge.article,template_body:knowledge.knowledge_article_template_brand_assets
|
||||
msgid ""
|
||||
@@ -6733,6 +6765,16 @@ msgstr "您不能保存本文的收藏夹"
|
||||
msgid "You can't leave an article for which you are the last writer"
|
||||
msgstr "您不能离开一篇您是最后一名作者的文章"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-python
|
||||
#: code:addons/knowledge/models/knowledge_article.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an "
|
||||
"Article Item. Convert %(item_name)s into an Article first."
|
||||
msgstr ""
|
||||
"你不能将%(article_name)s移动到%(item_name)s下,因为%(item_name)s是一个文章项目。请先将%(item_name)s转换为文章。"
|
||||
|
||||
#. module: knowledge
|
||||
#. odoo-javascript
|
||||
#: code:addons/knowledge/static/src/components/permission_panel/permission_panel.xml:0
|
||||
|
||||
+1237
-659
File diff suppressed because it is too large
Load Diff
@@ -16,7 +16,7 @@ from odoo import api, Command, fields, models, _
|
||||
from odoo.addons.web_editor.tools import handle_history_divergence
|
||||
from odoo.exceptions import AccessError, ValidationError, UserError
|
||||
from odoo.osv import expression
|
||||
from odoo.tools import get_lang
|
||||
from odoo.tools import get_lang, is_html_empty
|
||||
from odoo.tools.translate import html_translate
|
||||
from odoo.tools.sql import SQL
|
||||
|
||||
@@ -1107,6 +1107,7 @@ class Article(models.Model):
|
||||
|
||||
def _get_common_copied_data(self):
|
||||
return {
|
||||
"article_properties_definition": self.article_properties_definition,
|
||||
"body": self.body,
|
||||
"cover_image_id": self.cover_image_id.id,
|
||||
"cover_image_position": self.cover_image_position,
|
||||
@@ -1117,6 +1118,35 @@ class Article(models.Model):
|
||||
"name": _("%(article_name)s (copy)", article_name=self.name) if self.name else False,
|
||||
}
|
||||
|
||||
def _update_article_references(self, original_article):
|
||||
"""
|
||||
Updates the IDs stored in the body of the current articles.
|
||||
After calling that method, the embedded views listing the article items
|
||||
of the original article will now list the article items of the current record.
|
||||
:param <knowledge.article> original_article: original article
|
||||
"""
|
||||
for article in self:
|
||||
if is_html_empty(article.body):
|
||||
continue
|
||||
needs_embed_view_update = False
|
||||
fragment = html.fragment_fromstring(article.body, create_parent=True)
|
||||
for element in fragment.findall(".//*[@data-behavior-props]"):
|
||||
if "o_knowledge_behavior_type_embedded_view" in element.get("class"):
|
||||
behavior_props = json.loads(parse.unquote(element.get("data-behavior-props")))
|
||||
context = behavior_props.get("context", {})
|
||||
if context.get("default_is_article_item") and context.get("active_id") == original_article.id:
|
||||
context.update({
|
||||
"active_id": article.id,
|
||||
"default_parent_id": article.id
|
||||
})
|
||||
element.set("data-behavior-props", parse.quote(json.dumps(behavior_props), safe="()*!'"))
|
||||
needs_embed_view_update = True
|
||||
|
||||
if needs_embed_view_update:
|
||||
article.write({
|
||||
"body": html.tostring(fragment, encoding="unicode")
|
||||
})
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# ACTIONS
|
||||
# ------------------------------------------------------------
|
||||
@@ -1126,6 +1156,7 @@ class Article(models.Model):
|
||||
""" Creates a copy of an article. != duplicate article (see `copy`).
|
||||
Creates a new private article with the same body, icon and cover,
|
||||
but drops other fields such as members, childs, permissions etc.
|
||||
Note: Article references will be update, see `_update_article_references`
|
||||
"""
|
||||
self.ensure_one()
|
||||
article_vals = self._get_common_copied_data()
|
||||
@@ -1137,13 +1168,21 @@ class Article(models.Model):
|
||||
"internal_permission": "none",
|
||||
"parent_id": False,
|
||||
})
|
||||
return self.create(article_vals)
|
||||
article = self.create(article_vals)
|
||||
article._update_article_references(self)
|
||||
# Copy the related stages for the /kanban command:
|
||||
for stage in self.env["knowledge.article.stage"].search([("parent_id", "=", self.id)]):
|
||||
stage.copy({
|
||||
"parent_id": article.id
|
||||
})
|
||||
return article
|
||||
|
||||
@api.returns('self', lambda value: value.id)
|
||||
def action_clone(self):
|
||||
"""Creates a duplicate of an article in the same context as the original.
|
||||
This means that this methods create a copy with the same parent,
|
||||
permission and properties as the original
|
||||
Note: Article references will be update, see `_update_article_references`
|
||||
"""
|
||||
self.ensure_one()
|
||||
if not self.user_can_write or not (self.parent_id and self.parent_id.user_can_write):
|
||||
@@ -1154,10 +1193,15 @@ class Article(models.Model):
|
||||
"parent_id": self.parent_id.id,
|
||||
"article_properties": self.article_properties,
|
||||
"is_article_item": self.is_article_item,
|
||||
"article_properties_definition": self.article_properties_definition,
|
||||
})
|
||||
return self.create(article_vals)
|
||||
|
||||
article = self.create(article_vals)
|
||||
article._update_article_references(self)
|
||||
# Copy the related stages for the /kanban command:
|
||||
for stage in self.env["knowledge.article.stage"].search([("parent_id", "=", self.id)]):
|
||||
stage.copy({
|
||||
"parent_id": article.id
|
||||
})
|
||||
return article
|
||||
|
||||
def action_home_page(self):
|
||||
""" Redirect to the home page of knowledge, which displays an article.
|
||||
@@ -1229,7 +1273,7 @@ class Article(models.Model):
|
||||
# _detach_unwritable_descendants calls _filter_access_rules_python which returns
|
||||
# a sudo-ed recordset
|
||||
writable_descendants = self._detach_unwritable_descendants().with_env(self.env)
|
||||
(self + writable_descendants).toggle_active()
|
||||
(self + writable_descendants).filtered('active').toggle_active()
|
||||
if send_to_trash:
|
||||
(self + writable_descendants).to_delete = True
|
||||
(self + writable_descendants)._send_trash_notifications()
|
||||
@@ -1255,20 +1299,27 @@ class Article(models.Model):
|
||||
* To avoid 'restoring' an article that will not appear anywhere on
|
||||
the knowledge home page, make the article a root article.
|
||||
"""
|
||||
for article_item in self.filtered(lambda article: article.is_article_item \
|
||||
and article.parent_id not in self \
|
||||
and article.parent_id.sudo().to_delete):
|
||||
raise UserError(
|
||||
_('"%(article_item_name)s" is an Article Item from "%(article_name)s" and cannot be restored on its own. Contact the owner of "%(article_name)s" to have it restored instead.',
|
||||
article_item_name=article_item.display_name,
|
||||
article_name=article_item.parent_id.display_name))
|
||||
|
||||
writable_descendants = self.with_context(active_test=False)._detach_unwritable_descendants().with_env(self.env)
|
||||
res = super(Article, self + writable_descendants).action_unarchive()
|
||||
# Trash management: unarchive removes the article from the trash
|
||||
articles_to_restore = (self + writable_descendants).filtered(lambda article: article.to_delete)
|
||||
articles_to_restore.write({'to_delete': False})
|
||||
for article in self.filtered(lambda article: article.parent_id.to_delete):
|
||||
write_values = article._desync_access_from_parents_values()
|
||||
for article_sudo in self.sudo().filtered(lambda article: article.parent_id.to_delete):
|
||||
write_values = article_sudo._desync_access_from_parents_values()
|
||||
# Make it root
|
||||
write_values.update({
|
||||
'parent_id': False,
|
||||
'is_desynchronized': False
|
||||
})
|
||||
# sudo to write on members
|
||||
article.sudo().write(write_values)
|
||||
article_sudo.write(write_values)
|
||||
return res
|
||||
|
||||
def action_join(self):
|
||||
@@ -1309,11 +1360,18 @@ class Article(models.Model):
|
||||
category = category or parent.category or before_article.category
|
||||
if not category:
|
||||
raise ValidationError(
|
||||
_("Move to target of %(article_name)s is ambiguous, you should specify the category.")
|
||||
_("The destination placement of %(article_name)s is ambiguous, you should specify the category.",
|
||||
article_name=self.display_name)
|
||||
)
|
||||
if category == 'shared' and not parent and (self.parent_id or self.category != 'shared'):
|
||||
raise ValidationError(
|
||||
_("Cannot move %(article_name)s as a root of the 'shared' section since access rights can not be inferred without a parent.")
|
||||
_("Cannot move %(article_name)s as a root of the 'shared' section since access rights can not be inferred without a parent.",
|
||||
article_name=self.display_name)
|
||||
)
|
||||
if parent.is_article_item:
|
||||
raise ValidationError(
|
||||
_("You can't move %(article_name)s under %(item_name)s, as %(item_name)s is an Article Item. "
|
||||
"Convert %(item_name)s into an Article first.", article_name=self.display_name, item_name=parent.display_name)
|
||||
)
|
||||
|
||||
if category == 'private':
|
||||
@@ -2678,12 +2736,13 @@ class Article(models.Model):
|
||||
current article (to avoid recursions) """
|
||||
return self.search_read(
|
||||
domain=[
|
||||
'&', '&', '&', '&',
|
||||
'&', '&', '&', '&', '&',
|
||||
('is_template', '=', False),
|
||||
('name', 'ilike', search_term),
|
||||
('id', 'not in', self.ids),
|
||||
'!', ('parent_id', 'child_of', self.ids),
|
||||
('user_has_access', '=', True),
|
||||
('is_article_item', '=', False),
|
||||
],
|
||||
fields=['id', 'display_name', 'root_article_id'],
|
||||
limit=15,
|
||||
@@ -2760,6 +2819,9 @@ class Article(models.Model):
|
||||
# Do not fetch articles that the user did not join (articles with
|
||||
# internal permissions may be set as visible to members only)
|
||||
root_articles_domain.append(("is_article_visible", "=", True))
|
||||
else:
|
||||
# Do not fetch private articles of other users for portal user
|
||||
expression.AND([root_articles_domain, ['|', ('user_has_access', '=', True), ('category', '!=', 'private')]])
|
||||
|
||||
# Fetch root article_ids as sudo, ACLs will be checked on next global call fetching 'all_visible_articles'
|
||||
# this helps avoiding 2 queries done for ACLs (and redundant with the global fetch)
|
||||
@@ -2767,7 +2829,7 @@ class Article(models.Model):
|
||||
|
||||
favorite_articles_ids = self.env['knowledge.article.favorite'].sudo().search(
|
||||
[("user_id", "=", self.env.user.id), ('is_article_active', '=', True)]
|
||||
).article_id.ids
|
||||
).article_id.filtered(lambda article: article.user_has_access).ids
|
||||
|
||||
# Add favorite articles and items (they are root articles in the
|
||||
# favorite tree)
|
||||
|
||||
@@ -90,7 +90,7 @@ class KnowledgeArticleThread(models.Model):
|
||||
which is a simple template comprised of the comment sent and the person that tagged the notified user.
|
||||
"""
|
||||
|
||||
kwargs['msg_vals'] = {**kwargs['msg_vals'], 'email_layout_xmlid': 'knowledge.knowledge_mail_notification_layout'}
|
||||
kwargs['msg_vals'] = {**kwargs.get('msg_vals', {}), 'email_layout_xmlid': 'knowledge.knowledge_mail_notification_layout'}
|
||||
|
||||
return super()._notify_thread_by_email(message, recipients_data, **kwargs)
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import { useService } from "@web/core/utils/hooks";
|
||||
import {
|
||||
Component,
|
||||
onMounted,
|
||||
useExternalListener,
|
||||
} from "@odoo/owl";
|
||||
import {
|
||||
copyOids,
|
||||
@@ -46,6 +47,7 @@ export class AbstractBehavior extends Component {
|
||||
setup() {
|
||||
super.setup();
|
||||
this.setupAnchor();
|
||||
this.uiService = useService('ui');
|
||||
this.knowledgeCommandsService = useService('knowledgeCommandsService');
|
||||
if (!this.props.readonly) {
|
||||
onMounted(() => {
|
||||
@@ -114,6 +116,41 @@ export class AbstractBehavior extends Component {
|
||||
*/
|
||||
extraRender() {}
|
||||
|
||||
/**
|
||||
* Normally, the editable is the only element in the editor which has the focus.
|
||||
* With behaviors however (and most notably embedded views), it can be useful to delegate the focus at a lower level
|
||||
* (i.e. to use hotkeys with the uiService).
|
||||
* Also, since "focus" and "blur" events don't bubble, and the "blur" event is used to handle a dirty field for saving purpose,
|
||||
* it has to sometimes be triggered programmatically for a proper save.
|
||||
*
|
||||
* We are adding tabindex="-1" to the anchor because this attribute is needed to capture the
|
||||
* 'focusin' and 'focusout' events.
|
||||
* In these events we are using activateElement/deactivateElement:
|
||||
*
|
||||
* `activateElement` is used to set the anchor as an active element in the ui service, this enables
|
||||
* us to contain the events inside the embedded view when it has the focus.
|
||||
*
|
||||
* `deactivateElement` removes the anchor as an active element, leaving only the document as active
|
||||
* and we come back to the default behavior of the document handling all the events.
|
||||
*
|
||||
*/
|
||||
handleFocusEvents() {
|
||||
this.props.anchor.setAttribute('tabindex', '-1');
|
||||
useExternalListener(this.props.anchor, 'focusin', () => {
|
||||
if (!this.props.anchor.contains(this.uiService.activeElement)) {
|
||||
this.uiService.activateElement(this.props.anchor);
|
||||
}
|
||||
});
|
||||
useExternalListener(this.props.anchor, 'focusout', (event) => {
|
||||
if (!this.props.anchor.contains(event.relatedTarget)) {
|
||||
this.uiService.deactivateElement(this.props.anchor);
|
||||
if (!this.props.readonly && !this.editor.editable.contains(event.relatedTarget)) {
|
||||
this.editor.editable.dispatchEvent(new FocusEvent('blur', {relatedTarget: event.relatedTarget}));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is used to ensure that the correct attributes are set
|
||||
* on the anchor of the Behavior. Attributes could be incorrect for the
|
||||
@@ -122,6 +159,7 @@ export class AbstractBehavior extends Component {
|
||||
* of a Behavior which was in another state (i.e. from readonly to editable)
|
||||
*/
|
||||
setupAnchor() {
|
||||
this.handleFocusEvents();
|
||||
if (!this.props.readonly) {
|
||||
this.props.anchor.setAttribute('contenteditable', 'false');
|
||||
// prevent some interactions with OdooEditor, @see web_editor module
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import { _t } from "@web/core/l10n/translation";
|
||||
import { AbstractBehavior } from "@knowledge/components/behaviors/abstract_behavior/abstract_behavior";
|
||||
import { encodeDataBehaviorProps } from "@knowledge/js/knowledge_utils";
|
||||
import { AlertDialog } from "@web/core/confirmation_dialog/confirmation_dialog";
|
||||
import { useService } from "@web/core/utils/hooks";
|
||||
import { useEffect } from "@odoo/owl";
|
||||
@@ -48,11 +49,25 @@ export class ArticleBehavior extends AbstractBehavior {
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Some `/article` blocks had their behavior-props encoded with
|
||||
* `JSON.stringify` instead of `encodeDataBehaviorProps`. This override is
|
||||
* there to ensure that props are encoded with the correct format.
|
||||
* TODO ABD: this logic should be ultimately part of a knowledge upgrade.
|
||||
* @see AbstractBehavior
|
||||
* @override
|
||||
*/
|
||||
setupAnchor () {
|
||||
setupAnchor() {
|
||||
super.setupAnchor();
|
||||
this.props.anchor.setAttribute('target', '_blank');
|
||||
if (!this.props.readonly) {
|
||||
try {
|
||||
// JSON.parse will crash if the props are already encoded,
|
||||
// in that case there is no need to update them.
|
||||
this.props.anchor.dataset.behaviorProps = encodeDataBehaviorProps(
|
||||
JSON.parse(this.props.anchor.dataset.behaviorProps)
|
||||
);
|
||||
} catch {}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
+2
-39
@@ -13,8 +13,7 @@ import { uuid } from "@web/views/utils";
|
||||
import {
|
||||
onError,
|
||||
onMounted,
|
||||
onWillDestroy,
|
||||
useExternalListener,
|
||||
onWillDestroy,
|
||||
useState,
|
||||
useSubEnv } from "@odoo/owl";
|
||||
|
||||
@@ -43,7 +42,6 @@ export class EmbeddedViewBehavior extends AbstractBehavior {
|
||||
setup () {
|
||||
super.setup();
|
||||
this.actionService = useService('action');
|
||||
this.uiService = useService('ui');
|
||||
this.state = useState({
|
||||
waiting: true,
|
||||
error: false
|
||||
@@ -123,35 +121,6 @@ export class EmbeddedViewBehavior extends AbstractBehavior {
|
||||
this.state.error = true;
|
||||
});
|
||||
}
|
||||
/**
|
||||
* This function enables us to adds the desired attributes to the anchor of the embedded view
|
||||
* before it is rendered.
|
||||
* We are adding tabindex="-1" to the anchor because this attribute is needed to capture the
|
||||
* 'focusin' and 'focusout' events.
|
||||
* In these events we are using activateElement/deactivateElement:
|
||||
*
|
||||
* `activateElement` is used to set the anchor as an active element in the ui service, this enables
|
||||
* us to contain the events inside the embedded view when it has the focus.
|
||||
*
|
||||
* `deactivateElement` removes the anchor as an active element, leaving only the document as active
|
||||
* and we come back to the default behavior of the document handling all the events.
|
||||
*
|
||||
* @override
|
||||
*/
|
||||
setupAnchor() {
|
||||
super.setupAnchor();
|
||||
this.props.anchor.setAttribute('tabindex', '-1');
|
||||
useExternalListener(this.props.anchor, 'focusin', () => {
|
||||
if (!this.props.anchor.contains(this.uiService.activeElement)) {
|
||||
this.uiService.activateElement(this.props.anchor);
|
||||
}
|
||||
});
|
||||
useExternalListener(this.props.anchor, 'focusout', (event) => {
|
||||
if (!this.props.anchor.contains(event.relatedTarget)) {
|
||||
this.uiService.deactivateElement(this.props.anchor);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// TECHNICAL
|
||||
@@ -184,13 +153,7 @@ export class EmbeddedViewBehavior extends AbstractBehavior {
|
||||
*/
|
||||
setTitle (name) {
|
||||
const behaviorProps = decodeDataBehaviorProps(this.props.anchor.getAttribute('data-behavior-props'));
|
||||
if (behaviorProps.act_window) {
|
||||
behaviorProps.act_window.name = name;
|
||||
behaviorProps.act_window.display_name = name;
|
||||
}
|
||||
if (behaviorProps.display_name) {
|
||||
behaviorProps.display_name = name;
|
||||
}
|
||||
behaviorProps.display_name = name;
|
||||
this.props.anchor.dataset.behaviorProps = encodeDataBehaviorProps(behaviorProps);
|
||||
this.embeddedViewManagerProps.action.name = name;
|
||||
this.embeddedViewManagerProps.action.display_name = name;
|
||||
|
||||
+15
-10
@@ -7,7 +7,7 @@ import { EmbeddedView } from "@knowledge/views/embedded_view";
|
||||
import { ItemCalendarPropsDialog } from "@knowledge/components/item_calendar_props_dialog/item_calendar_props_dialog";
|
||||
import { PromptEmbeddedViewNameDialog } from "@knowledge/components/prompt_embedded_view_name_dialog/prompt_embedded_view_name_dialog";
|
||||
import { useOwnDebugContext } from "@web/core/debug/debug_context";
|
||||
import { useService } from "@web/core/utils/hooks";
|
||||
import { useBus, useService } from "@web/core/utils/hooks";
|
||||
import {
|
||||
Component,
|
||||
onWillStart,
|
||||
@@ -15,10 +15,6 @@ import {
|
||||
useSubEnv
|
||||
} from "@odoo/owl";
|
||||
import { decodeDataBehaviorProps, encodeDataBehaviorProps } from "@knowledge/js/knowledge_utils";
|
||||
import {
|
||||
BehaviorToolbar,
|
||||
BehaviorToolbarButton,
|
||||
} from "@knowledge/components/behaviors/behavior_toolbar/behavior_toolbar";
|
||||
|
||||
|
||||
const EMBEDDED_VIEW_LIMITS = {
|
||||
@@ -30,10 +26,6 @@ const EMBEDDED_VIEW_LIMITS = {
|
||||
* Wrapper for the embedded view, manage the toolbar and the embedded view props
|
||||
*/
|
||||
export class EmbeddedViewManager extends Component {
|
||||
static components = {
|
||||
BehaviorToolbar,
|
||||
BehaviorToolbarButton,
|
||||
};
|
||||
static props = {
|
||||
action: { type: Object },
|
||||
additionalViewProps: { type: Object, optional: true },
|
||||
@@ -70,6 +62,16 @@ export class EmbeddedViewManager extends Component {
|
||||
// store the start and end date properties that the model should use.
|
||||
this.state = useState({additionalViewProps: this.props.additionalViewProps});
|
||||
|
||||
useBus(this.env.bus, `KNOWLEDGE_EMBEDDED_${this.props.context.knowledgeEmbeddedViewId}:EDIT`, () => {
|
||||
if (this.props.additionalViewProps) {
|
||||
this._onEditBtnClick(this);
|
||||
} else {
|
||||
this._onRenameBtnClick(this);
|
||||
}
|
||||
});
|
||||
useBus(this.env.bus, `KNOWLEDGE_EMBEDDED_${this.props.context.knowledgeEmbeddedViewId}:OPEN`, () => {
|
||||
this._onOpenBtnClick(this);
|
||||
});
|
||||
/**
|
||||
* @param {ViewType} viewType
|
||||
* @param {Object} [props={}]
|
||||
@@ -301,7 +303,10 @@ export class EmbeddedViewManager extends Component {
|
||||
this.actionService.doAction(this.action, {
|
||||
viewType: this.props.viewType,
|
||||
props,
|
||||
additionalContext: { knowledgeEmbeddedViewId: this.props.context.knowledgeEmbeddedViewId }
|
||||
additionalContext: {
|
||||
knowledgeEmbeddedViewId: this.props.context.knowledgeEmbeddedViewId,
|
||||
isOpenedEmbeddedView: true
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+4
-17
@@ -10,27 +10,11 @@
|
||||
|
||||
.o_knowledge_behavior_type_embedded_view {
|
||||
margin-left: calc(-1 * var(--editor-gutter-size));
|
||||
margin-right: calc(-1 * var(--editor-gutter-size));
|
||||
margin-right: calc(-1 * var(--editor-gutter-size) - 2rem);
|
||||
position: relative;
|
||||
background-color: $o-webclient-background-color;
|
||||
border-left: 2px solid transparent; // adjust to resizer
|
||||
|
||||
.o_knowledge_toolbar {
|
||||
position: absolute;
|
||||
visibility: hidden;
|
||||
height: 2rem;
|
||||
top: -2rem;
|
||||
right: 0rem;
|
||||
|
||||
> div {
|
||||
height: 2rem;
|
||||
}
|
||||
}
|
||||
&:hover {
|
||||
.o_knowledge_toolbar {
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
.o_knowledge_embedded_view {
|
||||
.o_content:not(.o_view_sample_data) .o_view_nocontent:not(.o_knowledge_item_calendar_nocontent) {
|
||||
display: none !important;
|
||||
@@ -38,6 +22,9 @@
|
||||
.breadcrumb {
|
||||
margin-right: 8px;
|
||||
}
|
||||
.o_content {
|
||||
max-height: 80vh;
|
||||
}
|
||||
}
|
||||
.o_view_nocontent_empty_folder:before {
|
||||
@extend %o-nocontent-empty-document;
|
||||
|
||||
-25
@@ -1,31 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<templates>
|
||||
<t t-name="knowledge.EmbeddedViewManager">
|
||||
<t t-set="edit">Edit</t>
|
||||
<t t-set="rename">Rename</t>
|
||||
<t t-set="open">Open</t>
|
||||
<BehaviorToolbar buttonsGroupClass="'bg-white rounded-top border border-bottom-0'">
|
||||
<t t-set-slot="buttons">
|
||||
<BehaviorToolbarButton
|
||||
t-if="props.additionalViewProps"
|
||||
icon="'fa-pencil'"
|
||||
label="edit"
|
||||
onClick.bind="_onEditBtnClick"
|
||||
/>
|
||||
<BehaviorToolbarButton
|
||||
t-else=""
|
||||
hidden="props.readonly"
|
||||
icon="'fa-pencil'"
|
||||
label="rename"
|
||||
onClick.bind="_onRenameBtnClick"
|
||||
/>
|
||||
<BehaviorToolbarButton
|
||||
icon="'fa-external-link'"
|
||||
label="open"
|
||||
onClick.bind="_onOpenBtnClick"
|
||||
/>
|
||||
</t>
|
||||
</BehaviorToolbar>
|
||||
<div class="o_knowledge_embedded_view d-flex flex-column flex-grow-1 border-top border-bottom"
|
||||
data-oe-transient-content="true">
|
||||
<t t-component="EmbeddedView" t-props="allEmbeddedViewProps"/>
|
||||
|
||||
@@ -72,10 +72,12 @@ export class FileBehavior extends AbstractBehavior {
|
||||
this.fileNameRef = useRefWithSingleCollaborativeChild(
|
||||
'fileNameRef',
|
||||
(element) => {
|
||||
if (element) {
|
||||
this.setFileName(this.fileNameRef.el.textContent);
|
||||
const fileName = this.fileNameSpanTextContent;
|
||||
if (element && fileName.length) {
|
||||
this.setFileName(fileName);
|
||||
} else {
|
||||
this.renderFileName();
|
||||
this.editor.historyStep();
|
||||
}
|
||||
}
|
||||
);
|
||||
@@ -89,7 +91,7 @@ export class FileBehavior extends AbstractBehavior {
|
||||
}
|
||||
}, () => [this.state.editFileName]);
|
||||
useEffect(() => {
|
||||
if (this.state.fileModel.filename !== this.fileNameRef.el.textContent) {
|
||||
if (this.state.fileModel.filename !== this.fileNameSpanTextContent) {
|
||||
this.renderFileName();
|
||||
this.editor.historyStep();
|
||||
}
|
||||
@@ -206,14 +208,25 @@ export class FileBehavior extends AbstractBehavior {
|
||||
*/
|
||||
synchronizeOids(blueprint) {
|
||||
super.synchronizeOids(blueprint);
|
||||
const currentFileNameEl = this.props.anchor.querySelector('.o_knowledge_file_name[data-oe-protected="false"]');
|
||||
const blueprintFileNameEl = blueprint.querySelector('.o_knowledge_file_name[data-oe-protected="false"]');
|
||||
const currentFileNameEl = this.props.anchor.querySelector('.o_knowledge_file_name_container[data-oe-protected="false"]');
|
||||
const blueprintFileNameEl = blueprint.querySelector('.o_knowledge_file_name_container[data-oe-protected="false"]');
|
||||
if (!blueprintFileNameEl) {
|
||||
return;
|
||||
}
|
||||
copyOids(blueprintFileNameEl, currentFileNameEl);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// GETTERS/SETTERS
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* @returns {String} fileName as it is written in the editor.
|
||||
*/
|
||||
get fileNameSpanTextContent() {
|
||||
return this.fileNameRef.el.querySelector(".o_knowledge_file_name")?.textContent || "";
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// BUSINESS
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="d-block ps-2 text-break flex-grow-1">
|
||||
<div t-attf-class="o_knowledge_file_name #{ state.editFileName ? 'd-none' : '' }"
|
||||
<div t-attf-class="o_knowledge_file_name_container #{ state.editFileName ? 'd-none' : '' }"
|
||||
data-oe-protected="false" t-ref="fileNameRef" t-att-tabindex="!this.props.readonly ? '-1' : undefined"
|
||||
t-on-focus="props.readonly ? () => {} : onFocusFileName"/>
|
||||
<div data-oe-transient-content="true">
|
||||
@@ -57,7 +57,7 @@
|
||||
</t>
|
||||
<t t-name="knowledge.FileBehaviorFileName">
|
||||
<div class="d-flex">
|
||||
<span t-out="fileName"/>
|
||||
<span class="o_knowledge_file_name" t-out="fileName"/>
|
||||
<i class="fa fa-pencil mx-1 invisible align-items-center d-inline-flex"/>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
@@ -95,19 +95,22 @@ export class TemplateBehavior extends AbstractBehavior {
|
||||
if (!this.templateContent.el) {
|
||||
return;
|
||||
}
|
||||
const blob = [new ClipboardItem({
|
||||
"text/html": new Blob([this.templateContent.el.innerHTML], { type: "text/html" }),
|
||||
"text/plain": new Blob([this.templateContent.el.innerHTML], { type: "text/plain" }),
|
||||
})];
|
||||
try {
|
||||
await browser.navigator.clipboard.write(blob);
|
||||
const selection = document.getSelection();
|
||||
selection.removeAllRanges();
|
||||
const range = new Range();
|
||||
range.selectNodeContents(this.templateContent.el);
|
||||
selection.addRange(range);
|
||||
if (document.execCommand("copy")) {
|
||||
// Nor the original `clipboard.write` function nor the polyfill
|
||||
// written in `clipboard.js` does trigger the `odooEditor` `copy`
|
||||
// handler, therefore `execCommand` should be called here so that
|
||||
// html content is properly handled within the editor.
|
||||
this.popover.open(this.copyToClipboardButton.el, {
|
||||
tooltip: _t("Content copied to clipboard."),
|
||||
});
|
||||
browser.setTimeout(this.popover.close, 800);
|
||||
} catch (error) {
|
||||
browser.console.warn(error);
|
||||
}
|
||||
selection.removeAllRanges();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import { AbstractBehavior } from "@knowledge/components/behaviors/abstract_behavior/abstract_behavior";
|
||||
import { makeContext } from "@web/core/context";
|
||||
import { _t } from "@web/core/l10n/translation";
|
||||
import { useService } from "@web/core/utils/hooks";
|
||||
import { useEffect } from "@odoo/owl";
|
||||
|
||||
@@ -24,12 +25,20 @@ export class ViewLinkBehavior extends AbstractBehavior {
|
||||
setup () {
|
||||
super.setup();
|
||||
this.actionService = useService('action');
|
||||
this.notification = useService("notification");
|
||||
this.userService = useService("user");
|
||||
useEffect(() => {
|
||||
const type = this.props.readonly ? 'click' : 'dblclick';
|
||||
/**
|
||||
* @param {Event} event
|
||||
*/
|
||||
const onLinkClick = event => {
|
||||
const onLinkClick = async (event) => {
|
||||
const isInternalUser = await this.userService.hasGroup("base.group_user");
|
||||
if (!isInternalUser) {
|
||||
return this.notification.add(_t("Only Internal Users can access this view."), {
|
||||
type: "warning",
|
||||
});
|
||||
}
|
||||
this.openViewLink(event);
|
||||
};
|
||||
this.props.anchor.addEventListener(type, onLinkClick);
|
||||
|
||||
@@ -84,6 +84,10 @@ export class KnowledgeCommentsThread extends Component {
|
||||
});
|
||||
|
||||
useChildSubEnv({
|
||||
// We need to unset the chatter inside the env of the child Components
|
||||
// because this Object contains values and methods that are linked to the form view's
|
||||
// main chatter. By doing this we distinguish the main chatter from the comments.
|
||||
chatter: false,
|
||||
closeThread: this.resolveComment.bind(this),
|
||||
openThread: this.unresolveComment.bind(this),
|
||||
isResolved: this.isResolved
|
||||
@@ -94,6 +98,13 @@ export class KnowledgeCommentsThread extends Component {
|
||||
useBus(this.uiService.bus, 'resize', () => {
|
||||
this.state.smallUI = this.isSmallUINeeded();
|
||||
});
|
||||
useBus(this.env.bus, `KNOWLEDGE_COMMENT_${this.state.knowledgeThreadId}:HIGHLIGHT`, () => {
|
||||
this.state.commenting = true;
|
||||
if (!this.state.isResolved && this.state.smallUI) {
|
||||
this.openPopover({ target: this.targetRef.el });
|
||||
}
|
||||
this.highlightComment(true);
|
||||
});
|
||||
useBus(this.env.bus, `KNOWLEDGE_COMMENT_${this.state.knowledgeThreadId}:COMPUTE_POSITION`, ({detail}) => {
|
||||
if (detail) {
|
||||
this.anchors = detail.newAnchors;
|
||||
@@ -176,8 +187,9 @@ export class KnowledgeCommentsThread extends Component {
|
||||
});
|
||||
|
||||
onPatched(() => {
|
||||
if (this.state.commenting && !this.state.smallUI) {
|
||||
if (this.autoFocusTextarea) {
|
||||
this.composerDivRef.el?.querySelector('textarea')?.focus();
|
||||
this.autoFocusTextarea = false;
|
||||
}
|
||||
const { messages } = this.threadService.store.get(this.state.thread.localId);
|
||||
if (messages.length && messages.every((message) => !message.body)) {
|
||||
@@ -471,8 +483,11 @@ export class KnowledgeCommentsThread extends Component {
|
||||
) &&
|
||||
!ev.target.closest('.o-mail-Message-actions, .o-mail-Message-content .o-mail-Composer, .o-mail-MessageReaction, .o-mail-Composer ~ span a')
|
||||
) {
|
||||
if (!this.state.smallUI) {
|
||||
this.autoFocusTextarea = true;
|
||||
}
|
||||
this.state.commenting = true;
|
||||
if ( !this.state.isResolved && this.state.smallUI ) {
|
||||
if (!this.state.isResolved && this.state.smallUI && !this.props.forceFullSize) {
|
||||
this.openPopover({target: this.targetRef.el});
|
||||
}
|
||||
this.highlightComment(true);
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
'd-inline-block position-absolute end-100 rounded': !props.forceFullSize,
|
||||
'pt-2': !(state.smallUI || props.record.data.full_width)
|
||||
}"
|
||||
t-attf-style="top: ${this.state.top}px; ${this.state.width}; ${this.state.marginRight};"
|
||||
t-attf-style="${!this.props.forceFullSize ? `top: ${this.state.top}px;${this.state.width};${this.state.marginRight};` : ''}"
|
||||
t-ref="targetRef">
|
||||
<div class="o_knowledge_comment_small_ui"
|
||||
t-if="!props.forceFullSize and state.smallUI"
|
||||
|
||||
@@ -187,11 +187,11 @@ export class KnowledgeCommentsHandler extends Component {
|
||||
if (commentNode && commentNode.dataset.id) {
|
||||
const commentingId = parseInt(commentNode.dataset.id);
|
||||
this.commentingId = commentingId;
|
||||
this.env.bus.trigger(`KNOWLEDGE_COMMENT_${commentingId}:HIGHLIGHT`);
|
||||
document.querySelector(`.o_knowledge_comment_box[data-id='${commentingId}']`)?.scrollIntoView({
|
||||
behavior: 'smooth',
|
||||
block: 'nearest'
|
||||
});
|
||||
document.querySelector(`.o_knowledge_comment_box[data-id='${commentingId}']`)?.click();
|
||||
} else if (ev.target?.closest('.o_field_knowledge_article_html_field')) {
|
||||
this.commentingId = false;
|
||||
}
|
||||
|
||||
@@ -104,7 +104,9 @@ export class KnowledgeArticleCommentsPanel extends Component {
|
||||
}
|
||||
|
||||
insertNewThreadFromHandler(event) {
|
||||
const newlyCreatedComment = event.detail.comment;
|
||||
const newlyCreatedComment = Object.assign({}, event.detail.comment, {
|
||||
insertNewThread: this.insertNewThread.bind(this),
|
||||
});
|
||||
this.state.commentMode = 'unresolved';
|
||||
if (newlyCreatedComment.isCreationMode) {
|
||||
this.state.comments['undefined'] = newlyCreatedComment;
|
||||
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
/** @odoo-module */
|
||||
|
||||
import { Dropdown } from "@web/core/dropdown/dropdown";
|
||||
import { DropdownItem } from "@web/core/dropdown/dropdown_item";
|
||||
import { registry } from "@web/core/registry";
|
||||
import { Component } from "@odoo/owl";
|
||||
|
||||
const cogMenuRegistry = registry.category("cogMenu");
|
||||
|
||||
export class EmbeddedViewActionsMenu extends Component {
|
||||
static props = {};
|
||||
static template = "knowledge.EmbeddedViewActionsMenu";
|
||||
static components = { Dropdown, DropdownItem };
|
||||
|
||||
_onOpenEmbeddedView () {
|
||||
this.env.bus.trigger(`KNOWLEDGE_EMBEDDED_${this.env.searchModel.context.knowledgeEmbeddedViewId}:OPEN`);
|
||||
}
|
||||
_onEditEmbeddedView () {
|
||||
this.env.bus.trigger(`KNOWLEDGE_EMBEDDED_${this.env.searchModel.context.knowledgeEmbeddedViewId}:EDIT`);
|
||||
}
|
||||
}
|
||||
|
||||
cogMenuRegistry.add(
|
||||
'embedded-view-actions-menu',
|
||||
{
|
||||
Component: EmbeddedViewActionsMenu,
|
||||
groupNumber: 10,
|
||||
isDisplayed: (env) => {
|
||||
/**
|
||||
* Those buttons should only be displayed when inside the main Knowledge view.
|
||||
* This means that the context should contain an embedded ID and a context key called
|
||||
* `isOpenedEmbeddedView`. (Which is added when clicking on the open button)
|
||||
*/
|
||||
return env.searchModel.context.knowledgeEmbeddedViewId &&
|
||||
!env.searchModel.context.isOpenedEmbeddedView;
|
||||
},
|
||||
},
|
||||
);
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<templates>
|
||||
<t t-name="knowledge.EmbeddedViewActionsMenu" owl="1">
|
||||
<DropdownItem onSelected.bind="_onOpenEmbeddedView">
|
||||
<i class="fa fa-fw fa-external-link me-1"/>Open
|
||||
</DropdownItem>
|
||||
<DropdownItem onSelected.bind="_onEditEmbeddedView">
|
||||
<i class="fa fa-fw fa-pencil me-1"/>Edit
|
||||
</DropdownItem>
|
||||
</t>
|
||||
</templates>
|
||||
+47
-6
@@ -1,10 +1,9 @@
|
||||
/** @odoo-module */
|
||||
|
||||
import { _t } from "@web/core/l10n/translation";
|
||||
import { memoize } from "@web/core/utils/functions";
|
||||
import { renderToElement } from "@web/core/utils/render";
|
||||
import { CalendarRenderer } from "@web/views/calendar/calendar_renderer";
|
||||
import { CohortRenderer } from "@web_cohort/cohort_renderer";
|
||||
import { GanttRenderer } from "@web_gantt/gantt_renderer";
|
||||
import { GraphRenderer } from "@web/views/graph/graph_renderer";
|
||||
import { HierarchyRenderer } from "@web_hierarchy/hierarchy_renderer";
|
||||
import { KanbanRenderer } from "@web/views/kanban/kanban_renderer";
|
||||
@@ -222,8 +221,6 @@ const EmbeddedViewListRendererPatch = () => ({
|
||||
});
|
||||
|
||||
patch(CalendarRenderer.prototype, EmbeddedViewRendererPatch());
|
||||
patch(CohortRenderer.prototype, EmbeddedViewRendererPatch());
|
||||
patch(GanttRenderer.prototype, EmbeddedViewRendererPatch());
|
||||
patch(GraphRenderer.prototype, EmbeddedViewRendererPatch());
|
||||
patch(HierarchyRenderer.prototype, EmbeddedViewRendererPatch());
|
||||
patch(KanbanRenderer.prototype, EmbeddedViewRendererPatch());
|
||||
@@ -234,8 +231,6 @@ patch(PivotRenderer.prototype, EmbeddedViewRendererPatch());
|
||||
|
||||
const supportedEmbeddedViews = new Set([
|
||||
'calendar',
|
||||
'cohort',
|
||||
'gantt',
|
||||
'graph',
|
||||
'hierarchy',
|
||||
'kanban',
|
||||
@@ -244,6 +239,52 @@ const supportedEmbeddedViews = new Set([
|
||||
'pivot',
|
||||
]);
|
||||
|
||||
const externalModules = {
|
||||
"@web_cohort/cohort_renderer": {
|
||||
renderer: "CohortRenderer",
|
||||
view: "cohort",
|
||||
},
|
||||
"@web_gantt/gantt_renderer": {
|
||||
renderer: "GanttRenderer",
|
||||
view: "gantt",
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
* Ensure that a patch is only applied once for each module.
|
||||
*/
|
||||
const patchExternalModule = memoize((path) => {
|
||||
const { [externalModules[path].renderer]: Renderer } = odoo.loader.modules.get(path) || {};
|
||||
if (Renderer) {
|
||||
patch(Renderer.prototype, EmbeddedViewRendererPatch());
|
||||
supportedEmbeddedViews.add(externalModules[path].view);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Apply all patches.
|
||||
*/
|
||||
const patchExternalModules = () => {
|
||||
for (const path of Object.keys(externalModules)) {
|
||||
patchExternalModule(path);
|
||||
}
|
||||
};
|
||||
|
||||
// Apply a patch to a lazy-loaded module.
|
||||
odoo.loader.bus.addEventListener("module-started", (e) => {
|
||||
if (e.detail.moduleName in externalModules) {
|
||||
patchExternalModule(e.detail.moduleName);
|
||||
}
|
||||
});
|
||||
|
||||
if (odoo.loader.checkErrorProm) {
|
||||
// Apply all patches after every non-lazy module finished loading.
|
||||
odoo.loader.checkErrorProm.then(patchExternalModules);
|
||||
} else {
|
||||
// Apply all patches in case the current file is a lazy-loaded module.
|
||||
patchExternalModules();
|
||||
}
|
||||
|
||||
export {
|
||||
supportedEmbeddedViews,
|
||||
};
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
/** @odoo-module **/
|
||||
|
||||
import { FormStatusIndicator } from "@web/views/form/form_status_indicator/form_status_indicator";
|
||||
|
||||
/**
|
||||
* This extension of the FormStatusIndicator is used to add a new indicator to the ones that already
|
||||
* exists. This new icon is used in the same way as the icon in Google Docs => indicate that all changes
|
||||
* have been committed to the DB.
|
||||
*/
|
||||
export class KnowledgeFormStatusIndicator extends FormStatusIndicator {
|
||||
static template = 'knowledge.FormStatusIndicator';
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<templates xml:space="preserve">
|
||||
<t t-name="knowledge.FormStatusIndicator" t-inherit="web.FormStatusIndicator">
|
||||
<xpath expr="//div[hasclass('o_form_status_indicator_buttons')]" position="before">
|
||||
<img src="/knowledge/static/src/img/form_status_indicator_saved.svg"
|
||||
class="align-items-center d-flex px-1 py-0 border border-transparent user-select-none"
|
||||
t-attf-class="{{ displayButtons ? 'd-none' : ''}}"
|
||||
data-tooltip="All changes saved"/>
|
||||
</xpath>
|
||||
</t>
|
||||
</templates>
|
||||
+10
-1
@@ -6,6 +6,7 @@ import { encodeDataBehaviorProps } from "@knowledge/js/knowledge_utils";
|
||||
import { HtmlField, htmlField } from "@web_editor/js/backend/html_field";
|
||||
import { ItemCalendarPropsDialog } from "@knowledge/components/item_calendar_props_dialog/item_calendar_props_dialog";
|
||||
import {
|
||||
onWillStart,
|
||||
onWillUnmount,
|
||||
onWillUpdateProps,
|
||||
} from "@odoo/owl";
|
||||
@@ -35,6 +36,7 @@ export class KnowledgeArticleHtmlField extends HtmlField {
|
||||
this.actionService = useService("action");
|
||||
this.dialogService = useService("dialog");
|
||||
this.orm = useService("orm");
|
||||
this.userService = useService('user');
|
||||
onWillUpdateProps(nextProps => {
|
||||
this.state.isWysiwygHelperActive = this.isWysiwygHelperActive(nextProps);
|
||||
});
|
||||
@@ -46,6 +48,9 @@ export class KnowledgeArticleHtmlField extends HtmlField {
|
||||
this.wysiwyg.odooEditor.removeEventListener("historyResetFromSteps", this.editorStepsCallback);
|
||||
}
|
||||
});
|
||||
onWillStart(async () => {
|
||||
this.isPortalUser = await this.userService.hasGroup('base.group_portal');
|
||||
})
|
||||
}
|
||||
|
||||
get wysiwygOptions() {
|
||||
@@ -114,7 +119,7 @@ export class KnowledgeArticleHtmlField extends HtmlField {
|
||||
};
|
||||
const body = renderToString("knowledge.article_item_template", {
|
||||
behaviorProps: encodeDataBehaviorProps(behaviorProps),
|
||||
title: name
|
||||
title: name || _t("Article Items")
|
||||
});
|
||||
this.updateArticle(name, body, {
|
||||
full_width: true
|
||||
@@ -184,6 +189,10 @@ export class KnowledgeArticleHtmlField extends HtmlField {
|
||||
});
|
||||
}
|
||||
|
||||
onGenerateArticleClick() {
|
||||
this.wysiwyg.generateArticle();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} title
|
||||
* @param {string} body
|
||||
|
||||
+4
-1
@@ -8,7 +8,7 @@
|
||||
<div t-if="state.isWysiwygHelperActive and state.isEmpty" class="o_knowledge_helper pb-3">
|
||||
<p class="text-muted">Start typing to continue with an empty page or pick an option below to get started.</p>
|
||||
<div class="d-flex flex-column">
|
||||
<a href="#" class="o_knowledge_load_template p-2" data-hotkey="A" t-on-click="onLoadTemplateBtnClick">
|
||||
<a href="#" class="o_knowledge_load_template p-2" data-hotkey="A" t-on-click="onLoadTemplateBtnClick" t-if="!isPortalUser">
|
||||
<i class="fa fa-lg fa-paint-brush me-1"/> Load a Template
|
||||
</a>
|
||||
<a href="#" class="o_knowledge_add_item_kanban p-2" data-hotkey="K" t-on-click="onBuildItemKanbanBtnClick">
|
||||
@@ -20,6 +20,9 @@
|
||||
<a href="#" class="o_knowledge_add_item_calendar p-2" data-hotkey="C" t-on-click="onBuildItemCalendarBtnClick">
|
||||
<i class="fa fa-lg fa-calendar me-1"/> Build an Item Calendar
|
||||
</a>
|
||||
<a href="#" class="o_knowledge_generate_article p-2" data-hotkey="G" t-on-click="onGenerateArticleClick">
|
||||
<i class="fa fa-lg fa-magic me-1"/> Generate an Article with AI
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</xpath>
|
||||
|
||||
@@ -22,7 +22,9 @@
|
||||
<t t-else="">
|
||||
<a role="button" t-on-click="changeCover"
|
||||
class="btn btn-light text-capitalize me-3 o_knowledge_replace_cover o_knowledge_option_button">
|
||||
<i class="fa fa-lg fa-picture-o me-1" title="Change cover"/> Replace cover
|
||||
<i class="fa fa-lg fa-picture-o" title="Change cover"/>
|
||||
<span class="d-none d-sm-inline ms-1">Replace cover</span>
|
||||
<span class="d-sm-none ms-1">Replace</span>
|
||||
</a>
|
||||
<a t-if="!this.env.isSmall" role="button" t-on-click="repositionCover"
|
||||
class="btn btn-light text-capitalize me-3 o_knowledge_reposition_cover o_knowledge_option_button">
|
||||
@@ -30,7 +32,7 @@
|
||||
</a>
|
||||
<a role="button" t-on-click="removeCover"
|
||||
class="btn btn-light text-capitalize o_knowledge_remove_cover o_knowledge_option_button">
|
||||
<i class="fa fa-lg fa-trash-o me-1" title="Remove cover"/> Remove
|
||||
<i class="fa fa-lg fa-trash-o" title="Remove cover"/><span class="d-none d-sm-inline ms-1">Remove</span>
|
||||
</a>
|
||||
</t>
|
||||
</span>
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
/** @odoo-module **/
|
||||
|
||||
import { patch } from "@web/core/utils/patch";
|
||||
import { Dropdown } from "@web/core/dropdown/dropdown";
|
||||
|
||||
|
||||
patch(Dropdown.prototype, {
|
||||
/**
|
||||
* Embedded view in knowledge can become the active element,
|
||||
* but dropdowns should be able to be closed by clicking.
|
||||
* Actually, the only case where a dropdown should sometimes not be closed is if
|
||||
* a dialog becomes the active element above the opened dropdown.
|
||||
* @override
|
||||
*/
|
||||
isInActiveElement() {
|
||||
return (
|
||||
super.isInActiveElement() ||
|
||||
(
|
||||
this.ui.activeElement !== this.myActiveEl &&
|
||||
this.myActiveEl &&
|
||||
this.myActiveEl.contains(this.ui.activeElement) &&
|
||||
this.ui.activeElement.classList.contains("o_knowledge_behavior_anchor")
|
||||
)
|
||||
);
|
||||
},
|
||||
});
|
||||
@@ -4,7 +4,7 @@ import { session } from "@web/session";
|
||||
import { ConfirmationDialog, AlertDialog } from "@web/core/confirmation_dialog/confirmation_dialog";
|
||||
import { _t } from "@web/core/l10n/translation";
|
||||
import { useService } from '@web/core/utils/hooks';
|
||||
import { Component, onWillStart, useState } from "@odoo/owl";
|
||||
import { Component, onWillStart, useEffect, useState} from "@odoo/owl";
|
||||
|
||||
const permissionLevel = {'none': 0, 'read': 1, 'write': 2}
|
||||
const restrictMessage = _t("Are you sure you want to restrict access to this article? "
|
||||
@@ -29,9 +29,11 @@ export class PermissionPanel extends Component {
|
||||
partner_id: session.partner_id
|
||||
});
|
||||
onWillStart(async () => {
|
||||
this.loadPanel();
|
||||
this.isInternalUser = await this.userService.hasGroup('base.group_user');
|
||||
});
|
||||
useEffect(() => {
|
||||
this.loadPanel();
|
||||
}, () => [this.props.record.resId]);
|
||||
}
|
||||
|
||||
async loadPanel () {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<div class='o_field_widget o_field_properties'>
|
||||
<PropertiesField
|
||||
columns="1"
|
||||
showAddButton="1"
|
||||
showAddButton="true"
|
||||
name="'article_properties'"
|
||||
record="this.props.record"
|
||||
readonly="this.props.record.data.is_locked || !this.props.record.data.user_can_write"
|
||||
|
||||
@@ -15,6 +15,7 @@ import { getRandomIcon } from '@knowledge/js/knowledge_utils';
|
||||
import KnowledgeIcon from '@knowledge/components/knowledge_icon/knowledge_icon';
|
||||
import MoveArticleDialog from '@knowledge/components/move_article_dialog/move_article_dialog';
|
||||
import PermissionPanel from '@knowledge/components/permission_panel/permission_panel';
|
||||
import { KnowledgeFormStatusIndicator } from "@knowledge/components/form_status_indicator/form_status_indicator";
|
||||
import HistoryDialog from '@web_editor/components/history_dialog/history_dialog';
|
||||
|
||||
|
||||
@@ -262,14 +263,8 @@ class KnowledgeTopbar extends Component {
|
||||
}
|
||||
|
||||
async unarchiveArticle() {
|
||||
this.actionService.doAction(
|
||||
await this.orm.call(
|
||||
'knowledge.article',
|
||||
'action_unarchive_article',
|
||||
[this.props.record.resId]
|
||||
),
|
||||
{stackPosition: 'replaceCurrentAction'}
|
||||
);
|
||||
await this.orm.call('knowledge.article', 'action_unarchive_article', [this.props.record.resId]);
|
||||
await this.props.record.load();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -311,9 +306,6 @@ class KnowledgeTopbar extends Component {
|
||||
*/
|
||||
async _onNameClick(event) {
|
||||
this.env.ensureArticleName();
|
||||
window.setTimeout(() => {
|
||||
event.target.select();
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -322,6 +314,7 @@ KnowledgeTopbar.props = {
|
||||
...standardWidgetProps,
|
||||
};
|
||||
KnowledgeTopbar.components = {
|
||||
KnowledgeFormStatusIndicator,
|
||||
KnowledgeIcon,
|
||||
PermissionPanel,
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates>
|
||||
<t t-name="knowledge.KnowledgeTopbar">
|
||||
<div class="o_knowledge_header d-flex gap-2 flex-column justify-content-end flex-sm-row align-items-sm-center border-bottom d-print-none bg-view px-0 py-2 ps-sm-3 pe-sm-2">
|
||||
<div class="o_knowledge_header d-flex flex-wrap gap-1 flex-column justify-content-end flex-sm-row align-items-sm-center border-bottom d-print-none bg-view px-0 py-2 ps-sm-3 pe-sm-2">
|
||||
<div class="d-flex flex-grow-1 min-w-0 gap-1 px-2 px-sm-0 pt-2 pt-sm-0">
|
||||
<a role="button" class="d-md-none btn btn-light align-self-start px-2 py-1" t-on-click="() => this.env.toggleAsideMobile()">
|
||||
<i class="fa fa-lg fa-bars" title="Toggle aside menu"/>
|
||||
@@ -31,7 +31,7 @@
|
||||
t-on-click="ev => this._onNameClick(ev)"
|
||||
class="o_breadcrumb_article_name_container position-relative text-truncate mx-1">
|
||||
<!-- span forces the input to match the length of its value -->
|
||||
<span class="pe-2" t-esc="this.props.record.data.name" t-att-title="this.props.record.data.name" />
|
||||
<span class="pe-2" t-att-title="this.props.record.data.name" t-out="this.props.record.data.name"/>
|
||||
<div class="o_field_widget o_required_modifier o_field_char o_breadcrumb_article_name mb-0">
|
||||
<input t-if="!(props.record.data.is_locked || !props.record.data.user_can_write || !props.record.data.active || !props.record.resId)" id="name" class="o_input" type="text" autocomplete="off"
|
||||
t-att-value="props.record.data.name" placeholder="Untitled"/>
|
||||
@@ -42,10 +42,13 @@
|
||||
</div>
|
||||
<i class="fa fa-fw fa-lock" title="This article is locked" t-if="this.props.record.data.is_locked" />
|
||||
</li>
|
||||
<t t-if="props.record.resId and props.record.data.active and !props.record.data.is_locked and props.record.data.user_can_write">
|
||||
<KnowledgeFormStatusIndicator model="props.record.model" save="env.save" discard="env.discard"/>
|
||||
</t>
|
||||
</ol>
|
||||
</div>
|
||||
<!-- Buttons -->
|
||||
<div class="d-flex gap-1 flex-column flex-lg-row">
|
||||
<div class="d-flex gap-1 flex-wrap justify-content-end">
|
||||
<!-- Icon and Cover buttons -->
|
||||
<div class="d-flex gap-1 o_knowledge_add_buttons" t-if="props.record.resId and props.record.data.active and !props.record.data.is_locked and props.record.data.user_can_write">
|
||||
<button class="btn btn-light text-nowrap o_knowledge_add_icon" t-if="!props.record.data.icon"
|
||||
@@ -79,7 +82,7 @@
|
||||
<i class="fa fa-fw fs-6 fa-plus-circle me-1"/>New
|
||||
</a>
|
||||
<div class="o-dropdown dropdown o-dropdown--no-caret" t-if="props.record.resId and props.record.data.active">
|
||||
<a t-ref="sharePanel_button" role="button" class="btn btn-light btn-share dropdown-toggle" id="dropdown_share_panel" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" data-hotkey="s">
|
||||
<a t-ref="sharePanel_button" role="button" class="btn btn-light btn-share dropdown-toggle" id="dropdown_share_panel" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" data-hotkey="shift+s">
|
||||
<i class="fa fa-fw fs-6 fa-share-alt me-1"/>
|
||||
<t t-if="isInternalUser">Share</t>
|
||||
<t t-else="">Members</t>
|
||||
@@ -97,7 +100,7 @@
|
||||
<i class="fa fa-fw fs-6 fa-comments"/>
|
||||
</a>
|
||||
<a t-ref="btn_history"
|
||||
t-if="props.record.resId and isInternalUser"
|
||||
t-if="props.record.resId and isInternalUser and props.record.data.user_can_write"
|
||||
role="button"
|
||||
t-attf-class="btn btn-light btn-history #{state.displayHistory ? 'active' : ''}"
|
||||
data-hotkey="h"
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
/* @odoo-module */
|
||||
|
||||
import { threadActionsRegistry } from "@mail/core/common/thread_actions";
|
||||
import { patch } from "@web/core/utils/patch";
|
||||
|
||||
patch(threadActionsRegistry.get("expand-form"), {
|
||||
async open(component) {
|
||||
if (component.thread.model === "knowledge.article.thread") {
|
||||
const [articleThreadData] = await component.env.services.orm.read(
|
||||
"knowledge.article.thread",
|
||||
[component.thread.id],
|
||||
["article_id"],
|
||||
{ load: false }
|
||||
);
|
||||
component.actionService.doAction("knowledge.ir_actions_server_knowledge_home_page", {
|
||||
stackPosition: "replaceCurrentAction",
|
||||
additionalContext: {
|
||||
res_id: articleThreadData["article_id"],
|
||||
},
|
||||
});
|
||||
component.chatWindowService.close(component.props.chatWindow);
|
||||
} else {
|
||||
super.open(component);
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,14 @@
|
||||
<svg width="18" height="11" viewBox="0 0 18 13" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M15.3 4.5C15.3 4.84313 15.2353 5.17219 15.12 5.47312C16.7625 5.805 18 7.25906
|
||||
18 9C18 10.9884 16.3884 12.6 14.4 12.6H4.05C1.81406 12.6 0 10.7859 0 8.55C0 6.78375
|
||||
1.13063 5.28188 2.70563 4.72781L2.70562 4.72779C2.70281 4.65186 2.7 4.57593 2.7
|
||||
4.5C2.7 2.01375 4.71375 0 7.2 0C8.86781 0 10.3219 0.905625 11.1009 2.25563C11.5284
|
||||
1.96875 12.0459 1.8 12.6 1.8C14.0906 1.8 15.3 3.00938 15.3 4.5ZM4.13039 7.61571L7.02427
|
||||
10.5096C7.19813 10.6835 7.48003 10.6835 7.6539 10.5096L12.7738 5.38965C12.9477 5.21577
|
||||
12.9477 4.93388 12.7738 4.76002L12.1442 4.13039C11.9704 3.95654 11.6885 3.95654 11.5146
|
||||
4.13039L7.33909 8.30589L5.38963 6.35646C5.21577 6.18258 4.93386 6.18258 4.76
|
||||
6.35646L4.13039 6.98608C3.95654 7.15996 3.95654 7.44185 4.13039 7.61571Z" fill="#374151"
|
||||
/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 997 B |
@@ -3,7 +3,7 @@
|
||||
import { _t } from "@web/core/l10n/translation";
|
||||
import { FormController } from '@web/views/form/form_controller';
|
||||
import { KnowledgeSidebar } from '@knowledge/components/sidebar/sidebar';
|
||||
import { useService } from "@web/core/utils/hooks";
|
||||
import { useBus, useService } from "@web/core/utils/hooks";
|
||||
import { Deferred } from "@web/core/utils/concurrency";
|
||||
|
||||
import { onMounted, onWillStart, useChildSubEnv, useExternalListener, useRef } from "@odoo/owl";
|
||||
@@ -30,7 +30,14 @@ export class KnowledgeArticleFormController extends FormController {
|
||||
renameArticle: this.renameArticle.bind(this),
|
||||
toggleAsideMobile: this.toggleAsideMobile.bind(this),
|
||||
topbarMountedPromise: this.topbarMountedPromise,
|
||||
save: this.save.bind(this),
|
||||
discard: this.discard.bind(this),
|
||||
});
|
||||
|
||||
useBus(this.env.bus, 'KNOWLEDGE:OPEN_ARTICLE', (event) => {
|
||||
this.openArticle(event.detail.id);
|
||||
});
|
||||
|
||||
// Unregister the current candidate recordInfo for Knowledge macros in
|
||||
// case of breadcrumbs mismatch.
|
||||
onWillStart(() => {
|
||||
|
||||
@@ -20,17 +20,9 @@ export class KnowledgePlugin {
|
||||
this.editor = editor;
|
||||
}
|
||||
/**
|
||||
* Remove the highlight decorators from the document and replace the video
|
||||
* iframe with a video link before saving. The method aims to solve the
|
||||
* following issues:
|
||||
* (1) Some components are susceptible to add classes that are meant to be purely for decoration
|
||||
* or highlighting of specific anchors in the text. These classes shouldn't be saved because
|
||||
* they serve no real purpose other than highlight the text or decorate it temporarily.
|
||||
* (2) When saving the document, the sanitizer discards the video iframe
|
||||
* from the document. As a result, people reading the article outside
|
||||
* of the odoo backend will not be able to see and access the video.
|
||||
* To solve that issue, we will replace the iframe with a link before
|
||||
* saving.
|
||||
* Some content displayed as part of a Behavior Component render is not destined to be saved.
|
||||
* The purpose of this function is to clean such content so that it will not be saved nor considered
|
||||
* during _isDirty evaluation (which is the determining factor to enable a save).
|
||||
* @param {Element} editable
|
||||
*/
|
||||
cleanForSave(editable) {
|
||||
@@ -40,7 +32,8 @@ export class KnowledgePlugin {
|
||||
elementToClean.classList.remove(decorationClass);
|
||||
}
|
||||
}
|
||||
// Replace the iframe with a video link:
|
||||
// Replace the iframe with a video link, because iframe elements are discarded by the backend sanitizer,
|
||||
// and Behavior components are not rendered for public users, so they'll have access to the link instead
|
||||
for (const anchor of editable.querySelectorAll('.o_knowledge_behavior_type_video')) {
|
||||
const props = decodeDataBehaviorProps(anchor.dataset.behaviorProps);
|
||||
const a = document.createElement('a');
|
||||
@@ -56,9 +49,16 @@ export class KnowledgePlugin {
|
||||
// html_field is being saved while the user is editing the name of the
|
||||
// file (The input is removed by default because it is the child of a
|
||||
// data-oe-transient-content="true" node).
|
||||
for (const fileNameEl of editable.querySelectorAll('.o_knowledge_behavior_type_file .o_knowledge_file_name')) {
|
||||
for (const fileNameEl of editable.querySelectorAll('.o_knowledge_behavior_type_file .o_knowledge_file_name_container')) {
|
||||
fileNameEl.classList.remove("d-none");
|
||||
}
|
||||
|
||||
// Remove the loading icon and/or error messages from embedded views anchors.
|
||||
// Only children used as a props for the Embedded View Component are kept.
|
||||
for (const embeddedViewEl of editable.querySelectorAll(".o_knowledge_behavior_type_embedded_view")) {
|
||||
const childrenToKeep = [...embeddedViewEl.querySelectorAll(":scope > [data-prop-name]")];
|
||||
embeddedViewEl.replaceChildren(...childrenToKeep);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/** @odoo-module */
|
||||
|
||||
import { _t } from "@web/core/l10n/translation";
|
||||
import { isEmptyBlock } from "@web_editor/js/editor/odoo-editor/src/OdooEditor";
|
||||
import { Wysiwyg } from "@web_editor/js/wysiwyg/wysiwyg";
|
||||
import { useBus } from '@web/core/utils/hooks';
|
||||
@@ -9,6 +10,7 @@ import {
|
||||
getSelectedNodes,
|
||||
closestElement,
|
||||
} from "@web_editor/js/editor/odoo-editor/src/utils/utils";
|
||||
import { ChatGPTPromptDialog } from '@web_editor/js/wysiwyg/widgets/chatgpt_prompt_dialog';
|
||||
import { useRef } from '@odoo/owl';
|
||||
|
||||
/**
|
||||
@@ -28,6 +30,35 @@ export class KnowledgeWysiwyg extends Wysiwyg {
|
||||
this.knowledgeCommentsToolbarBtnRef = useRef('knowledgeCommentsToolbarBtn');
|
||||
}
|
||||
|
||||
/**
|
||||
* This function enables the user to generate an article using ChatGPT.
|
||||
* We search inside of the generated content if we have a title.
|
||||
* If we find one then we put it inside of an H1 in order to have it as the article's
|
||||
* title.
|
||||
* Otherwise we put a blank H1 in the generated content so that the user can add
|
||||
* one later.
|
||||
*/
|
||||
generateArticle() {
|
||||
this.env.services.dialog.add(ChatGPTPromptDialog, {
|
||||
initialPrompt: _t('Write an article about'),
|
||||
insert: (content) => {
|
||||
const generatedContentTitle = content.querySelector('h1,h2');
|
||||
const articleTitle = document.createElement('h1');
|
||||
if (generatedContentTitle && generatedContentTitle.tagName !== 'H1') {
|
||||
articleTitle.innerText = generatedContentTitle.innerText;
|
||||
generatedContentTitle.replaceWith(articleTitle);
|
||||
} else if (!generatedContentTitle) {
|
||||
articleTitle.innerHTML = '<br>';
|
||||
content.prepend(articleTitle);
|
||||
}
|
||||
|
||||
const divElement = document.createElement('div');
|
||||
divElement.appendChild(content);
|
||||
this.odooEditor.resetContent(divElement.innerHTML);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure the new buttons added inside the knowledge toolbar.
|
||||
* @override
|
||||
|
||||
@@ -268,16 +268,20 @@ patch(Wysiwyg.prototype, {
|
||||
articleSelected: article => {
|
||||
const articleLinkBlock = renderToElement('knowledge.ArticleBehaviorBlueprint', {
|
||||
href: '/knowledge/article/' + article.articleId,
|
||||
data: JSON.stringify({
|
||||
data: encodeDataBehaviorProps({
|
||||
article_id: article.articleId,
|
||||
display_name: article.displayName,
|
||||
})
|
||||
}),
|
||||
});
|
||||
const nameNode = document.createTextNode(article.display_name);
|
||||
articleLinkBlock.appendChild(nameNode);
|
||||
this._notifyNewBehavior(articleLinkBlock, restoreSelection);
|
||||
},
|
||||
parentArticleId: this.options.recordInfo.res_model === 'knowledge.article' ? this.options.recordInfo.res_id : undefined
|
||||
}, {
|
||||
onClose: () => {
|
||||
restoreSelection();
|
||||
}
|
||||
});
|
||||
},
|
||||
/**
|
||||
@@ -315,6 +319,7 @@ patch(Wysiwyg.prototype, {
|
||||
action_help: actionWindow.act_window?.help,
|
||||
});
|
||||
this._notifyNewBehavior(embeddedViewBlock, restoreSelection);
|
||||
this.env.model.root.update({'full_width': true});
|
||||
},
|
||||
/**
|
||||
* Inserts a video in the editor
|
||||
@@ -369,6 +374,9 @@ patch(Wysiwyg.prototype, {
|
||||
};
|
||||
return insertedNodes;
|
||||
});
|
||||
if (behaviorBlueprint.classList.contains('o_knowledge_behavior_type_embedded_view')) {
|
||||
this.env.model.root.update({'full_width': true});
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Notify a new @see FileBehavior when selecting a file in a
|
||||
@@ -420,6 +428,10 @@ patch(Wysiwyg.prototype, {
|
||||
itemCalendarProps,
|
||||
});
|
||||
}
|
||||
}, {
|
||||
onClose: () => {
|
||||
restoreSelection();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ export class UseAsAttachmentMacro extends AbstractMacro {
|
||||
this.validatePage();
|
||||
const el = this.getFirstVisibleElement('.o-mail-Chatter-attachFiles:not([disabled])', (matchEl) => {
|
||||
// Wait for the attachments to be loaded by the chatter.
|
||||
const attachmentsCountEl = matchEl.querySelector('span');
|
||||
const attachmentsCountEl = matchEl.querySelector('sup');
|
||||
return attachmentsCountEl && Number.parseInt(attachmentsCountEl.textContent) > 0;
|
||||
});
|
||||
if (el) {
|
||||
|
||||
@@ -4,34 +4,47 @@ import { useBus, useService } from '@web/core/utils/hooks';
|
||||
import { ActionContainer } from '@web/webclient/actions/action_container';
|
||||
import { MainComponentsContainer } from "@web/core/main_components_container";
|
||||
import { useOwnDebugContext } from "@web/core/debug/debug_context";
|
||||
import { session } from '@web/session';
|
||||
import { Component, onMounted, useExternalListener, useState } from "@odoo/owl";
|
||||
import { Component, onMounted, useExternalListener } from "@odoo/owl";
|
||||
|
||||
export class KnowledgePortalWebClient extends Component {
|
||||
setup() {
|
||||
window.parent.document.body.style.margin = "0"; // remove the margin in the parent body
|
||||
this.actionService = useService("action");
|
||||
this.orm = useService("orm");
|
||||
this.router = useService("router");
|
||||
this.userService = useService("user");
|
||||
useOwnDebugContext({ categories: ["default"] });
|
||||
this.state = useState({
|
||||
fullscreen: false,
|
||||
});
|
||||
useBus(this.env.bus, "ACTION_MANAGER:UI-UPDATED", (mode) => {
|
||||
if (mode !== "new") {
|
||||
this.state.fullscreen = mode === "fullscreen";
|
||||
}
|
||||
});
|
||||
useBus(this.env.bus, "ROUTE_CHANGE", this._showView);
|
||||
onMounted(() => { this._showView(); });
|
||||
useExternalListener(window, "keydown", this.onGlobalKeyDown, { capture: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the article specified in the URL hash (eg. /knowledge/article#id=42)
|
||||
*/
|
||||
async _showView() {
|
||||
const { knowledge_article_id } = session;
|
||||
const isOnKnowledgeArticleFormView = () => {
|
||||
if (this.actionService.currentController) {
|
||||
const { action } = this.actionService.currentController;
|
||||
return action && action.xml_id === "knowledge.knowledge_article_action_form";
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
this.actionService.doAction('knowledge.ir_actions_server_knowledge_home_page', {
|
||||
additionalContext: knowledge_article_id ? { res_id: knowledge_article_id } : {},
|
||||
stackPosition: 'replaceCurrentAction',
|
||||
// When the user is already on the Knowledge form view, we can load
|
||||
// another record in the model to avoid reloading the sidebar.
|
||||
|
||||
if (isOnKnowledgeArticleFormView() && this.router.current.hash.id) {
|
||||
this.env.bus.trigger("KNOWLEDGE:OPEN_ARTICLE", {
|
||||
id: this.router.current.hash.id,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
await this.actionService.doAction("knowledge.ir_actions_server_knowledge_home_page", {
|
||||
additionalContext: this.router.current.hash.id
|
||||
? { res_id: this.router.current.hash.id }
|
||||
: {},
|
||||
stackPosition: "replaceCurrentAction",
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
}
|
||||
|
||||
.odoo-editor-editable .o_knowledge_behavior_type_file {
|
||||
.o_knowledge_file_name {
|
||||
.o_knowledge_file_name_container {
|
||||
&:hover i {
|
||||
visibility: visible !important;
|
||||
}
|
||||
@@ -124,6 +124,9 @@
|
||||
background: radial-gradient($white, transparent);
|
||||
}
|
||||
}
|
||||
.o_kanban_renderer.o_kanban_grouped .o_kanban_group {
|
||||
background: #{$o-kanban-background};
|
||||
}
|
||||
}
|
||||
|
||||
// Knowledge Toolbars
|
||||
|
||||
@@ -22,6 +22,12 @@ $knowledge-bg--hover: $gray-300;
|
||||
.o_knowledge_form_view, .o_knowledge_public_view {
|
||||
|
||||
background-color: var(--knowledge-view-bg, $o-white);
|
||||
.o_knowledge_header {
|
||||
.o_form_status_indicator {
|
||||
align-self: normal !important;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
.o_knowledge_sidebar {
|
||||
.o_article:not(.o_article_has_children) {
|
||||
.o_article_caret {
|
||||
@@ -94,6 +100,9 @@ $knowledge-bg--hover: $gray-300;
|
||||
transition: background-color 0.3s ease-in-out;
|
||||
&.knowledge-thread-highlighted-comment {
|
||||
background-color: rgba($knowledge-bg--active, 0.171);
|
||||
.knowledge-thread-comment:not(.focused-comment) {
|
||||
background-color: initial;
|
||||
}
|
||||
&.focused-comment {
|
||||
background-color: $knowledge-bg--active;
|
||||
}
|
||||
|
||||
@@ -52,4 +52,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
body > :not(.o_action_manager) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,8 +34,11 @@
|
||||
.o_knowledge_behavior_type_embedded_view .o_list_renderer thead {
|
||||
position: relative;
|
||||
z-index: auto;
|
||||
}
|
||||
|
||||
.position-sticky {
|
||||
position: unset !important;
|
||||
}
|
||||
}
|
||||
.o_breadcrumb_article_name > input:not(.o_readonly_modifier):hover {
|
||||
border-bottom: $input-border-width solid $o-brand-primary;
|
||||
}
|
||||
@@ -51,7 +54,6 @@
|
||||
.o_knowledge_editor .o_field_html .note-editable,
|
||||
.o_knowledge_editor .o_field_html .o_readonly,
|
||||
.o_knowledge_editor .o_field_html .o_knowledge_helper {
|
||||
margin-bottom: -0.5rem;
|
||||
padding-left: var(--editor-gutter-size) !important;
|
||||
padding-right: calc(var(--editor-gutter-size) + 2rem) !important;
|
||||
}
|
||||
@@ -175,6 +177,21 @@
|
||||
}
|
||||
}
|
||||
|
||||
.o_knowledge_body {
|
||||
.o_knowledge_icon {
|
||||
font-size: 3em;
|
||||
line-height: normal;
|
||||
margin-top: map-get($spacers, 3) !important;
|
||||
margin-bottom: 0 !important;
|
||||
.o_article_emoji {
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
.o_widget_knowledge_cover + .o_knowledge_icon {
|
||||
margin-top: -0.7em !important;
|
||||
}
|
||||
}
|
||||
|
||||
.o_knowledge_chatter {
|
||||
.oe_chatter {
|
||||
padding: 0;
|
||||
@@ -356,7 +373,7 @@
|
||||
.o_scroll_view_lg, .o_knowledge_properties {
|
||||
width: 100%;
|
||||
}
|
||||
.o_knowledge_chatter, .o_knowledge_properties {
|
||||
.o_knowledge_chatter, .o_knowledge_properties, .o_knowledge_comments_panel {
|
||||
border-top: 1px solid $border-color;
|
||||
}
|
||||
.o_knowledge_properties {
|
||||
@@ -370,18 +387,10 @@
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
.o_knowledge_form_view {
|
||||
.o_scroll_view {
|
||||
// Make icon overwrap the cover
|
||||
.o_widget_knowledge_cover + .o_field_knowledge_icon {
|
||||
margin-bottom: -80px !important;
|
||||
.o_article_emoji {
|
||||
position:relative;
|
||||
top: -50px;
|
||||
}
|
||||
}
|
||||
.o_field_knowledge_icon.o_large {
|
||||
font-size: 80px;
|
||||
.o_knowledge_article_view_form_view {
|
||||
.o_knowledge_body {
|
||||
.o_knowledge_icon {
|
||||
font-size: 5em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import { SearchModel } from "@web/search/search_model";
|
||||
|
||||
export class KnowledgeSearchModel extends SearchModel {
|
||||
export const KnowledgeSearchModelMixin = (T) => class extends T {
|
||||
setup(services, args) {
|
||||
this.onSaveKnowledgeFavorite = args.onSaveKnowledgeFavorite;
|
||||
this.onDeleteKnowledgeFavorite = args.onDeleteKnowledgeFavorite;
|
||||
@@ -15,14 +15,22 @@ export class KnowledgeSearchModel extends SearchModel {
|
||||
*/
|
||||
async load(config) {
|
||||
await super.load(config);
|
||||
if (config.state) {
|
||||
if (config.state && !this.isStateCompleteForEmbeddedView) {
|
||||
// If the config contains an imported state that is not directly
|
||||
// coming from a view that was embedded in Knowledge, the favorite
|
||||
// filters have to be loaded, since they come from the
|
||||
// `data-behavior-props` attribute of the anchor for the
|
||||
// EmbeddedViewBehavior. Otherwise, those are already specified in
|
||||
// the state and they should not be duplicated.
|
||||
let defaultFavoriteId = null;
|
||||
const activateFavorite = "activateFavorite" in config ? config.activateFavorite : true;
|
||||
if (activateFavorite) {
|
||||
defaultFavoriteId = this._createGroupOfFavorites(this.irFilters || []);
|
||||
if (defaultFavoriteId) {
|
||||
// activate default search items (populate this.query)
|
||||
this._activateDefaultSearchItems(defaultFavoriteId);
|
||||
}
|
||||
}
|
||||
// activate default search items (populate this.query)
|
||||
this._activateDefaultSearchItems(defaultFavoriteId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,4 +50,24 @@ export class KnowledgeSearchModel extends SearchModel {
|
||||
async _deleteIrFilters(searchItem) {
|
||||
this.onDeleteKnowledgeFavorite(searchItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
* @returns {Object}
|
||||
*/
|
||||
exportState() {
|
||||
const state = super.exportState();
|
||||
state.isStateCompleteForEmbeddedView = true;
|
||||
return state;
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
_importState(state) {
|
||||
super._importState(state);
|
||||
this.isStateCompleteForEmbeddedView = state.isStateCompleteForEmbeddedView;
|
||||
}
|
||||
}
|
||||
|
||||
export class KnowledgeSearchModel extends KnowledgeSearchModelMixin(SearchModel) {}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/** @odoo-module */
|
||||
|
||||
import { KnowledgeSearchModel } from "@knowledge/search_model/search_model";
|
||||
import { KnowledgeSearchModelMixin } from "@knowledge/search_model/search_model";
|
||||
import { SearchModel } from "@web/search/search_model";
|
||||
import { View } from "@web/views/view";
|
||||
|
||||
export class EmbeddedView extends View {
|
||||
@@ -14,7 +15,9 @@ export class EmbeddedView extends View {
|
||||
const {additionalViewProps, onDeleteKnowledgeFavorite, onSaveKnowledgeFavorite, ...viewProps} = props;
|
||||
Object.assign(viewProps, additionalViewProps);
|
||||
await super.loadView(viewProps);
|
||||
this.withSearchProps.SearchModel = KnowledgeSearchModel;
|
||||
this.withSearchProps.SearchModel = KnowledgeSearchModelMixin(
|
||||
this.withSearchProps.SearchModel || SearchModel
|
||||
);
|
||||
this.withSearchProps.searchModelArgs = {
|
||||
onSaveKnowledgeFavorite,
|
||||
onDeleteKnowledgeFavorite,
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
|
||||
import { _t } from "@web/core/l10n/translation";
|
||||
import { memoize } from "@web/core/utils/functions";
|
||||
import { registry } from "@web/core/registry";
|
||||
import { HotkeyCommandItem } from "@web/core/commands/default_providers";
|
||||
import { splitCommandName } from "@web/core/commands/command_palette";
|
||||
@@ -30,6 +31,18 @@ commandSetupRegistry.add("?", {
|
||||
const commandProviderRegistry = registry.category("command_provider");
|
||||
|
||||
const fn = (hidden) => {
|
||||
// Check if the user has enough rights to create a new article
|
||||
const canCreate = memoize(env => {
|
||||
return env.services.orm.call(
|
||||
"knowledge.article",
|
||||
"check_access_rights",
|
||||
[],
|
||||
{
|
||||
operation: "create",
|
||||
raise_exception: false,
|
||||
},
|
||||
);
|
||||
});
|
||||
return async function provide(env, options) {
|
||||
const articlesData = await env.services.orm.call(
|
||||
"knowledge.article",
|
||||
@@ -42,18 +55,9 @@ const fn = (hidden) => {
|
||||
);
|
||||
if (!hidden){
|
||||
if (articlesData.length === 0) {
|
||||
// check if user has enough rights to create a new article
|
||||
const canCreate = await env.services.orm.call(
|
||||
"knowledge.article",
|
||||
"check_access_rights",
|
||||
[],
|
||||
{
|
||||
operation: "create",
|
||||
raise_exception: false,
|
||||
},
|
||||
);
|
||||
// only display the "create article" command when there are at least 3 character
|
||||
if (canCreate && options.searchValue.length > 2) {
|
||||
// Only display the "create article" command when the user can
|
||||
// create an article and when the user inputs at least 3 characters
|
||||
if (await canCreate(env) && options.searchValue.length > 2) {
|
||||
return [{
|
||||
Component: Knowledge404Command,
|
||||
async action() {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//t[@archInfo='archInfo']" position="attributes">
|
||||
<attribute name="class" add="'p-0 d-flex flex-column flex-grow-1 min-w-0'" />
|
||||
<attribute name="class" add="'p-0 d-flex flex-column flex-grow-1 min-w-0 mw-100'" />
|
||||
</xpath>
|
||||
|
||||
</t>
|
||||
|
||||
+15
-21
@@ -12,7 +12,6 @@ import { EmbeddedViewBehavior } from "@knowledge/components/behaviors/embedded_v
|
||||
import { EmbeddedViewManager } from "@knowledge/components/behaviors/embedded_view_behavior/embedded_view_manager";
|
||||
import { makeView, setupViewRegistries } from "@web/../tests/views/helpers";
|
||||
import { HtmlField } from "@web_editor/js/backend/html_field";
|
||||
import { encodeDataBehaviorProps } from "@knowledge/js/knowledge_utils";
|
||||
|
||||
import { onMounted } from "@odoo/owl";
|
||||
|
||||
@@ -22,21 +21,13 @@ let embedMountedPromise;
|
||||
/**
|
||||
* Insert an embedded kanban view inside a Knowledge article
|
||||
* @param {HTMLElement} htmlField - Object HtmlField of Knowledge
|
||||
* @param {HTMLElement} target - Target node
|
||||
* @param {HTMLElement} action - Server action used for the embed
|
||||
*/
|
||||
const insertKanbanEmbed = async (htmlField, target) => {
|
||||
const insertKanbanEmbed = async (htmlField, action) => {
|
||||
const wysiwyg = htmlField.wysiwyg;
|
||||
const behaviorProps = encodeDataBehaviorProps({
|
||||
act_window: serverData.actions.actionExternalKanban,
|
||||
name: 'External Embed',
|
||||
view_type: 'kanban',
|
||||
context: {}
|
||||
});
|
||||
|
||||
wysiwyg.odooEditor.observerUnactive();
|
||||
const embedDiv = document.createElement('div');
|
||||
embedDiv.className = "o_knowledge_behavior_anchor o_knowledge_behavior_type_embedded_view";
|
||||
embedDiv.setAttribute('data-behavior-props', behaviorProps);
|
||||
target.replaceWith(embedDiv);
|
||||
await wysiwyg._insertEmbeddedView(null, action, 'kanban', 'External Kanban');
|
||||
await htmlFieldReadyPromise;
|
||||
await htmlField.mountBehaviors();
|
||||
wysiwyg.odooEditor.observerActive();
|
||||
@@ -52,7 +43,7 @@ const insertKanbanEmbed = async (htmlField, target) => {
|
||||
* would need to change its use for embedded views.
|
||||
*/
|
||||
|
||||
QUnit.module("Knowledge External Embeds Hotkeys", (hooks) => {
|
||||
QUnit.module("Knowledge External Embeds Tests", (hooks) => {
|
||||
hooks.beforeEach(() => {
|
||||
htmlFieldReadyPromise = makeDeferred();
|
||||
embedMountedPromise = makeDeferred();
|
||||
@@ -87,13 +78,15 @@ QUnit.module("Knowledge External Embeds Hotkeys", (hooks) => {
|
||||
knowledge_article: {
|
||||
fields: {
|
||||
display_name: {string: "Displayed name", type: "char"},
|
||||
full_width: {string: "Is Full Width ?", type: "boolean"},
|
||||
body: {string: "Body", type: 'html'},
|
||||
},
|
||||
records: [{
|
||||
id: 1,
|
||||
display_name: "My Article",
|
||||
body: `<p class="embedded_view_target"><br/></p>
|
||||
<p class="regular_html_field_node"><br/></p>`
|
||||
<p class="regular_html_field_node"><br/></p>`,
|
||||
full_width: false
|
||||
}]
|
||||
},
|
||||
quick_create: {
|
||||
@@ -148,7 +141,7 @@ QUnit.module("Knowledge External Embeds Hotkeys", (hooks) => {
|
||||
setupViewRegistries();
|
||||
});
|
||||
QUnit.test('Testing normal hotkey behavior: kanban embed', async function (assert) {
|
||||
assert.expect(2);
|
||||
assert.expect(3);
|
||||
await makeView({
|
||||
type: "form",
|
||||
resModel: "knowledge_article",
|
||||
@@ -156,6 +149,7 @@ QUnit.module("Knowledge External Embeds Hotkeys", (hooks) => {
|
||||
arch: `<form js_class="knowledge_article_view_form">
|
||||
<sheet>
|
||||
<div>
|
||||
<field name="full_width" readonly="1"/>
|
||||
<div class="o_knowledge_editor d-flex flex-grow-1">
|
||||
<field name="body" widget="knowledge_article_html_field"/>
|
||||
</div>
|
||||
@@ -172,14 +166,14 @@ QUnit.module("Knowledge External Embeds Hotkeys", (hooks) => {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const htmlField = await htmlFieldReadyPromise;
|
||||
|
||||
const editable = htmlField.wysiwyg.odooEditor.editable;
|
||||
const embedViewTargetNode = editable.querySelector('.embedded_view_target');
|
||||
const regularHtmlFieldNode = editable.querySelector('.regular_html_field_node');
|
||||
await insertKanbanEmbed(htmlField, serverData.actions.actionExternalKanban);
|
||||
// Embedded views trigger full width
|
||||
assert.equal(document.querySelector('.o_field_boolean[name="full_width"] input').value, 'on');
|
||||
|
||||
await insertKanbanEmbed(htmlField, embedViewTargetNode);
|
||||
const editable = htmlField.wysiwyg.odooEditor.editable;
|
||||
const regularHtmlFieldNode = editable.querySelector('.regular_html_field_node');
|
||||
await embedMountedPromise;
|
||||
const embedViewWrapperNode = editable.querySelector('.o_knowledge_behavior_anchor.o_knowledge_behavior_type_embedded_view')
|
||||
await click(editable, '.o_kanban_group:nth-of-type(1) .o_kanban_quick_add');
|
||||
@@ -3,7 +3,7 @@
|
||||
import { onMounted, onWillStart, status } from "@odoo/owl";
|
||||
import { FormController } from "@web/views/form/form_controller";
|
||||
import { registry } from "@web/core/registry";
|
||||
import { click, getFixture, makeDeferred, nextTick, patchWithCleanup } from "@web/../tests/helpers/utils";
|
||||
import { click, getFixture, makeDeferred, mockSendBeacon, nextTick, patchWithCleanup } from "@web/../tests/helpers/utils";
|
||||
import { makeView, setupViewRegistries } from "@web/../tests/views/helpers";
|
||||
import { renderToElement } from "@web/core/utils/render";
|
||||
import { patch } from "@web/core/utils/patch";
|
||||
@@ -486,30 +486,19 @@ QUnit.module("Knowledge - Ensure body save scenarios", (hooks) => {
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
QUnit.test("Ensure save on beforeLeave when Behaviors mutex is not idle and when it is", async function (assert) {
|
||||
await testFormSave(assert, "beforeLeave");
|
||||
});
|
||||
/**
|
||||
* This test forces a call to the beforeLeave function of the KnowledgeFormController. It
|
||||
* simulates that we leave the form view.
|
||||
*
|
||||
* The function will be called 2 times successively:
|
||||
* 1- at a controlled time when a Behavior is in the process of being
|
||||
* mounted, but not finished, to ensure that the saved article value is
|
||||
* not corrupted (no missing html node).
|
||||
* 2- at a controlled time when every Behavior was successfully mounted and
|
||||
* no other Behavior is being mounted, to ensure that the saved article
|
||||
* value contains information updated from the Behavior nodes.
|
||||
*/
|
||||
|
||||
QUnit.test("Ensure save on beforeUnload when Behaviors mutex is not idle and when it is", async function (assert) {
|
||||
await testFormSave(assert, "beforeUnload");
|
||||
});
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// UTILS
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* This test util will force a call to a KnowledgeFormController method
|
||||
* that should save the current record (i.e. beforeLeave and beforeUnload).
|
||||
*
|
||||
* The method will be called 2 times successively:
|
||||
* 1- at a controlled time when a Behavior is in the process of being
|
||||
* mounted, but not finished, to ensure that the saved article value is
|
||||
* not corrupted (no missing html node).
|
||||
* 2- at a controlled time when every Behavior was successfully mounted and
|
||||
* no other Behavior is being mounted, to ensure that the saved article
|
||||
* value contains information updated from the Behavior nodes.
|
||||
*/
|
||||
async function testFormSave (assert, formSaveHandlerName) {
|
||||
assert.expect(4);
|
||||
let writeCount = 0;
|
||||
await makeView({
|
||||
@@ -583,7 +572,7 @@ QUnit.module("Knowledge - Ensure body save scenarios", (hooks) => {
|
||||
|
||||
// Attempt a save when the mutex is not idle. It should save the
|
||||
// unchanged blueprint of the Behavior.
|
||||
await formController[formSaveHandlerName]();
|
||||
await formController.beforeLeave();
|
||||
|
||||
// Allow the Template Behavior to go past the `onWillStart` lifecycle
|
||||
// step.
|
||||
@@ -594,8 +583,107 @@ QUnit.module("Knowledge - Ensure body save scenarios", (hooks) => {
|
||||
await htmlField.mountBehaviors();
|
||||
|
||||
// Attempt a save when the mutex is idle.
|
||||
await formController[formSaveHandlerName]();
|
||||
}
|
||||
await formController.beforeLeave();
|
||||
});
|
||||
|
||||
QUnit.test("Ensure save on beforeUnload when Behaviors mutex is not idle and when it is", async function (assert) {
|
||||
/**
|
||||
* This test forces a call to the beforeUnload function of the KnowledgeFormController. It
|
||||
* simulates that the close the browser/tab when being on that form view.
|
||||
*
|
||||
* The function will be called 2 times successively:
|
||||
* 1- at a controlled time when a Behavior is in the process of being
|
||||
* mounted, but not finished, to ensure that the saved article value is
|
||||
* not corrupted (no missing html node).
|
||||
* 2- at a controlled time when every Behavior was successfully mounted and
|
||||
* no other Behavior is being mounted, to ensure that the saved article
|
||||
* value contains information updated from the Behavior nodes.
|
||||
*/
|
||||
|
||||
mockSendBeacon((route) => {
|
||||
if (route === '/web/dataset/call_kw/knowledge_article/web_save') {
|
||||
if (writeCount === 0) {
|
||||
// The first expected `write` value should be the
|
||||
// unmodified blueprint, since OWL has not finished
|
||||
// mounting the Behavior nodes.
|
||||
assert.notOk(editor.editable.querySelector('[data-prop-name="content"]'));
|
||||
assert.equal(editor.editable.querySelector('.witness').textContent, "WITNESS_ME!");
|
||||
} else if (writeCount === 1) {
|
||||
// Change the expected `write` value, the "witness node"
|
||||
// should have been cleaned since it serves no purpose
|
||||
// for this Behavior in the OWL template.
|
||||
assert.notOk(editor.editable.querySelector('.witness'));
|
||||
assert.equal(editor.editable.querySelector('[data-prop-name="content"]').innerHTML, "<p><br></p>");
|
||||
} else {
|
||||
// This should never be called and will fail if it is.
|
||||
assert.ok(writeCount === 1, "Write should only be called 2 times during this test");
|
||||
}
|
||||
writeCount += 1;
|
||||
}
|
||||
});
|
||||
|
||||
assert.expect(4);
|
||||
let writeCount = 0;
|
||||
await makeView({
|
||||
type: "form",
|
||||
resModel: "knowledge_article",
|
||||
serverData,
|
||||
arch,
|
||||
resId: 1,
|
||||
});
|
||||
// Let the htmlField be mounted and recover the Component instance.
|
||||
htmlField = await htmlFieldPromise;
|
||||
const editor = htmlField.wysiwyg.odooEditor;
|
||||
|
||||
// Patch to control when the next mounting is done.
|
||||
const isAtWillStart = makeDeferred();
|
||||
const pauseWillStart = makeDeferred();
|
||||
const unpatch = patch(TemplateBehavior.prototype, {
|
||||
setup() {
|
||||
super.setup(...arguments);
|
||||
onWillStart(async () => {
|
||||
isAtWillStart.resolve();
|
||||
await pauseWillStart;
|
||||
unpatch();
|
||||
});
|
||||
}
|
||||
});
|
||||
// Introduce a Behavior blueprint with an "witness node" that does not
|
||||
// serve any purpose except for the fact that it should be left
|
||||
// untouched until OWL completely finishes its mounting process
|
||||
// and at that point it will be replaced by the rendered OWL template.
|
||||
const behaviorHTML = `
|
||||
<div class="o_knowledge_behavior_anchor o_knowledge_behavior_type_template">
|
||||
<div class="witness">WITNESS_ME!</div>
|
||||
</div>
|
||||
`;
|
||||
const anchor = parseHTML(editor.document, behaviorHTML).firstChild;
|
||||
const target = editor.editable.querySelector(".test_target");
|
||||
// The BehaviorState MutationObserver will try to start the mounting
|
||||
// process for the Behavior with the anchor node as soon as it is in
|
||||
// the DOM.
|
||||
editor.editable.replaceChild(anchor, target);
|
||||
// Validate the mutation as a normal user history step.
|
||||
editor.historyStep();
|
||||
|
||||
// Wait for the Template Behavior onWillStart lifecycle step.
|
||||
await isAtWillStart;
|
||||
|
||||
// Attempt a save when the mutex is not idle. It should save the
|
||||
// unchanged blueprint of the Behavior.
|
||||
await formController.beforeUnload();
|
||||
|
||||
// Allow the Template Behavior to go past the `onWillStart` lifecycle
|
||||
// step.
|
||||
pauseWillStart.resolve();
|
||||
|
||||
// Wait for the mount mutex to be idle. The Template Behavior should
|
||||
// be fully mounted after this.
|
||||
await htmlField.mountBehaviors();
|
||||
|
||||
// Attempt a save when the mutex is idle.
|
||||
await formController.beforeUnload();
|
||||
});
|
||||
});
|
||||
|
||||
//==============================================================================
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
/* @odoo-module */
|
||||
|
||||
import { startServer } from "@bus/../tests/helpers/mock_python_environment";
|
||||
import { addModelNamesToFetch } from "@bus/../tests/helpers/model_definitions_helpers";
|
||||
import { start } from "@mail/../tests/helpers/test_utils";
|
||||
import { click, contains } from "@web/../tests/utils";
|
||||
import { makeDeferred, patchWithCleanup } from "@web/../tests/helpers/utils";
|
||||
|
||||
QUnit.module("Knowledge - Thread tests");
|
||||
|
||||
addModelNamesToFetch(["knowledge.article", "knowledge.article.thread"]);
|
||||
|
||||
QUnit.test("Expand article.thread opens linked article", async function (assert) {
|
||||
const pyEnv = await startServer();
|
||||
const actionPromise = makeDeferred();
|
||||
|
||||
const { env } = await start();
|
||||
|
||||
patchWithCleanup(env.services.action, {
|
||||
doAction(action, params) {
|
||||
assert.ok(params?.additionalContext?.res_id);
|
||||
assert.strictEqual(action, "knowledge.ir_actions_server_knowledge_home_page");
|
||||
assert.step("knowledge_action_called");
|
||||
actionPromise.resolve();
|
||||
},
|
||||
});
|
||||
|
||||
const articleId = pyEnv["knowledge.article"].create({
|
||||
name: "Thread tests",
|
||||
body: `
|
||||
<h1>Thread tests</h1>
|
||||
<p>Hello World</p>
|
||||
`,
|
||||
});
|
||||
|
||||
const thread = pyEnv["knowledge.article.thread"].create({
|
||||
article_id: articleId,
|
||||
});
|
||||
|
||||
pyEnv["bus.bus"]._sendone(pyEnv.currentPartner, "mail.message/inbox", {
|
||||
author_id: pyEnv.publicPartnerId,
|
||||
body: "Howdy Neighbor",
|
||||
id: thread,
|
||||
needaction_partner_ids: [pyEnv.currentPartnerId],
|
||||
model: "knowledge.article.thread",
|
||||
res_id: thread,
|
||||
record_name: "Thread tests",
|
||||
});
|
||||
|
||||
await contains(".o-mail-MessagingMenu-counter", { text: "1" });
|
||||
await click(".o-mail-DiscussSystray-class .fa-comments");
|
||||
await click(".o-mail-NotificationItem");
|
||||
await contains(".o-mail-ChatWindow-header", { text: "Thread tests" });
|
||||
await click(".o-mail-ChatWindow-command[title='Open Form View']");
|
||||
await actionPromise;
|
||||
await assert.verifySteps(["knowledge_action_called"]);
|
||||
await contains(".o-mail-ChatWindow-header", { count: 0 });
|
||||
});
|
||||
@@ -205,7 +205,7 @@ registry.category("web_tour.tours").add('knowledge_calendar_command_tour', {
|
||||
trigger: '.o_knowledge_editor .odoo-editor-editable h1',
|
||||
run: 'text Item Article',
|
||||
}, { // Go back to parent article
|
||||
trigger: '.o_knowledge_tree .o_article_name:contains("EditorCommandsArticle")',
|
||||
trigger: '.o_knowledge_tree .o_article_name:contains("Article Items")',
|
||||
run: 'click',
|
||||
}, { // Check that the item is shown in the calendar
|
||||
trigger: '.fc-time-grid-event .o_event_title:contains("Item Article")',
|
||||
@@ -218,8 +218,10 @@ registry.category("web_tour.tours").add('knowledge_calendar_command_tour', {
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
// Open the view props editor
|
||||
trigger: '.o_knowledge_behavior_type_embedded_view .o_knowledge_toolbar button:contains("Edit")',
|
||||
trigger: '.o_control_panel_breadcrumbs_actions .dropdown-toggle',
|
||||
run: 'click',
|
||||
}, {
|
||||
trigger: '.dropdown-item:contains(Edit)'
|
||||
}, { // Change the start property
|
||||
trigger: '.o_knowledge_item_calendar_dialog_date_start .o_select_menu_toggler',
|
||||
run: 'click',
|
||||
@@ -258,8 +260,10 @@ registry.category("web_tour.tours").add('knowledge_calendar_command_tour', {
|
||||
extra_trigger: '.fc-view:not(:has(.fc-event-container))',
|
||||
run: () => {},
|
||||
}, { // Change start and stop dates again
|
||||
trigger: '.o_knowledge_behavior_type_embedded_view .o_knowledge_toolbar button:contains("Edit")',
|
||||
trigger: '.o_control_panel_breadcrumbs_actions .dropdown-toggle',
|
||||
run: 'click',
|
||||
}, {
|
||||
trigger: '.dropdown-item:contains(Edit)'
|
||||
}, { // Change the start property
|
||||
trigger: '.o_knowledge_item_calendar_dialog_date_start .o_select_menu_toggler',
|
||||
run: 'click',
|
||||
@@ -279,8 +283,10 @@ registry.category("web_tour.tours").add('knowledge_calendar_command_tour', {
|
||||
trigger: '.modal-footer .btn-primary',
|
||||
run: 'click',
|
||||
}, { // Open the view
|
||||
trigger: '.o_knowledge_behavior_type_embedded_view .o_knowledge_toolbar button:contains("Open")',
|
||||
trigger: '.o_control_panel_breadcrumbs_actions .dropdown-toggle',
|
||||
run: 'click',
|
||||
}, {
|
||||
trigger: '.dropdown-item:contains(Open)'
|
||||
}, { // Check that the item is shown
|
||||
trigger: '.fc-view .o_event_title:contains("Item Article")',
|
||||
extra_trigger: '.o_knowledge_article_view_calendar_embedded_view.o_action',
|
||||
@@ -375,7 +381,7 @@ registry.category("web_tour.tours").add('knowledge_calendar_command_tour', {
|
||||
trigger: '.modal-dialog .btn-primary',
|
||||
run: 'click',
|
||||
}, { // Go back to parent article
|
||||
trigger: '.o_knowledge_tree .o_article_name:contains("EditorCommandsArticle")',
|
||||
trigger: '.o_knowledge_tree .o_article_name:contains("Article Items")',
|
||||
run: 'click',
|
||||
}, { // Make sure view is not crashed and shows nocontent helper
|
||||
trigger: '.o_knowledge_article_view_calendar_embedded_view .o_knowledge_item_calendar_nocontent',
|
||||
|
||||
@@ -32,7 +32,7 @@ registry.category("web_tour.tours").add('knowledge_file_command_tour', {
|
||||
extra_trigger: 'iframe.o-FileViewer-view body:contains(Content)',
|
||||
run: 'click',
|
||||
}, {
|
||||
trigger: '.o_knowledge_file_name:contains(Onboarding)',
|
||||
trigger: '.o_knowledge_file_name_container:contains(Onboarding)',
|
||||
run: function() {
|
||||
this.$anchor[0].dispatchEvent(new Event('focus'));
|
||||
}
|
||||
@@ -43,7 +43,14 @@ registry.category("web_tour.tours").add('knowledge_file_command_tour', {
|
||||
this.$anchor[0].dispatchEvent(new Event('blur'));
|
||||
}
|
||||
}, {
|
||||
trigger: '.o_knowledge_file_name > div:contains(Renamed)',
|
||||
run: () => {},
|
||||
trigger: 'span.o_knowledge_file_name',
|
||||
run: function() {
|
||||
// specifically test that there is no zeroWidthSpace character in the
|
||||
// name that would be added by the editor
|
||||
const currentName = this.$anchor[0].textContent;
|
||||
if (currentName !== "Renamed") {
|
||||
throw new Error(`The new file name was expected to be: "Renamed", but the actual value is: "${currentName}"`);
|
||||
}
|
||||
},
|
||||
}, ...endKnowledgeTour()
|
||||
]});
|
||||
|
||||
@@ -167,8 +167,10 @@ function domHelpFieldSteps () {
|
||||
trigger: '.o_knowledge_behavior_type_embedded_view .o_kanban_renderer',
|
||||
run: () => {}
|
||||
}, { // open the view
|
||||
trigger: '.o_knowledge_toolbar button:contains(Open)',
|
||||
run: 'click'
|
||||
trigger: '.o_control_panel_breadcrumbs_actions .dropdown-toggle',
|
||||
run: 'click',
|
||||
}, {
|
||||
trigger: '.dropdown-item:contains(Open)'
|
||||
}, { // verify that the help message is displayed
|
||||
trigger: '.o_action_manager > .o_view_controller.o_kanban_view .o_nocontent_help:contains("Test help message")',
|
||||
run: () => {}
|
||||
@@ -211,8 +213,10 @@ function domHelpFieldSteps () {
|
||||
trigger: '.o_knowledge_behavior_type_embedded_view .o_kanban_renderer',
|
||||
run: () => {},
|
||||
}, { // open the view
|
||||
trigger: '.o_knowledge_toolbar button:contains(Open)',
|
||||
run: 'click'
|
||||
trigger: '.o_control_panel_breadcrumbs_actions .dropdown-toggle',
|
||||
run: 'click',
|
||||
}, {
|
||||
trigger: '.dropdown-item:contains(Open)'
|
||||
}, { // verify that the default help message is displayed
|
||||
trigger: '.o_action_manager > .o_view_controller.o_kanban_view .o_nocontent_help:contains("No data to display")',
|
||||
run: () => {}
|
||||
|
||||
@@ -42,8 +42,10 @@ registry.category("web_tour.tours").add('knowledge_list_command_tour', {
|
||||
behaviorProps = decodeDataBehaviorProps(embeddedViewElement.dataset.behaviorProps);
|
||||
}
|
||||
}, { // click on rename button
|
||||
trigger: '.o_knowledge_toolbar button:contains(Rename)',
|
||||
trigger: '.o_control_panel_breadcrumbs_actions .dropdown-toggle',
|
||||
run: 'click',
|
||||
}, {
|
||||
trigger: '.dropdown-item:contains(Edit)'
|
||||
}, { // click to validate the modal
|
||||
trigger: '.modal-footer button.btn-primary',
|
||||
run: 'click'
|
||||
@@ -52,6 +54,9 @@ registry.category("web_tour.tours").add('knowledge_list_command_tour', {
|
||||
run: () => {
|
||||
const embeddedViewElement = document.querySelector('.o_knowledge_behavior_type_embedded_view');
|
||||
const newBehaviorProps = decodeDataBehaviorProps(embeddedViewElement.dataset.behaviorProps);
|
||||
if (newBehaviorProps.display_name !== behaviorProps.display_name) {
|
||||
throw new Error('The name displayed should not have changed');
|
||||
}
|
||||
if (JSON.stringify(newBehaviorProps) !== JSON.stringify(behaviorProps)) {
|
||||
// check that knowledge.article render_embedded_view urllib.parse.quote did
|
||||
// produce an equivalent data-behavior-props as knowledge_utils encodeDataBehaviorProps encodeURIComponent
|
||||
@@ -59,8 +64,10 @@ registry.category("web_tour.tours").add('knowledge_list_command_tour', {
|
||||
}
|
||||
}
|
||||
}, { // click on rename button
|
||||
trigger: '.o_knowledge_toolbar button:contains(Rename)',
|
||||
trigger: '.o_control_panel_breadcrumbs_actions .dropdown-toggle',
|
||||
run: 'click',
|
||||
}, {
|
||||
trigger: '.dropdown-item:contains(Edit)'
|
||||
}, { // rename the view
|
||||
trigger: '.modal-body input',
|
||||
run: 'text New Title',
|
||||
|
||||
@@ -4,6 +4,50 @@ import { registry } from "@web/core/registry";
|
||||
import { endKnowledgeTour, openCommandBar } from "../knowledge_tour_utils.js";
|
||||
import { stepUtils } from "@web_tour/tour_service/tour_utils";
|
||||
|
||||
/**
|
||||
* Verify that a filter is not duplicated and is properly maintained after
|
||||
* a round trip with the breadcrumbs.
|
||||
*
|
||||
* @param {String} kanban name of a kanban view in which records can be created
|
||||
* @param {String} filterName name of a favorite filter which is already present in the view
|
||||
* @returns {Array} steps
|
||||
*/
|
||||
const validateFavoriteFilterPersistence = function(kanban, filterName) {
|
||||
return [{
|
||||
content: 'create and edit item in the kanban view',
|
||||
trigger: `.o_knowledge_embedded_view .o_kanban_view:contains(${kanban}) .o-kanban-button-new`,
|
||||
run: "click",
|
||||
}, {
|
||||
content: 'Give the name to the item',
|
||||
trigger: 'input#name_0',
|
||||
run: 'text Item 1',
|
||||
}, {
|
||||
content: 'click on the edit button',
|
||||
trigger: '.o_kanban_edit',
|
||||
}, {
|
||||
content: `go to the ${kanban} from the breadcrumb`,
|
||||
trigger: '.o_back_button',
|
||||
}, {
|
||||
// Open the favorite of the first kanban and check it's favorite
|
||||
trigger: `.o_breadcrumb:contains('${kanban}')`,
|
||||
run: function () {
|
||||
const view = this.$anchor[0].closest(
|
||||
'.o_kanban_view'
|
||||
);
|
||||
const searchMenuButton = view.querySelector(".o_searchview_dropdown_toggler");
|
||||
searchMenuButton.click();
|
||||
},
|
||||
}, {
|
||||
trigger: '.o_favorite_menu',
|
||||
run: function () {
|
||||
const favorites = this.$anchor[0].querySelectorAll("span.dropdown-item");
|
||||
if (favorites.length !== 1 || favorites[0].innerText !== filterName) {
|
||||
console.error(`Only one filter "(${filterName})" should be available`);
|
||||
}
|
||||
},
|
||||
}]
|
||||
};
|
||||
|
||||
/**
|
||||
* Insert the Knowledge kanban view as an embedded view in article.
|
||||
*
|
||||
@@ -65,11 +109,15 @@ const validateFavoriteFiltersSteps = function (kanban1, kanban2) {
|
||||
// check that the search item has been added
|
||||
trigger: ".o_facet_value",
|
||||
run: function () {
|
||||
const items = document.querySelectorAll(".o_facet_value");
|
||||
if (items.length !== 1) {
|
||||
console.error("The search should be applied only on the first view");
|
||||
} else if (items[0].innerText !== 'testFilter') {
|
||||
console.error(`Wrong favorite name: ${items[0].innerText}`);
|
||||
const items = [...document.querySelectorAll(".o_searchview_facet")];
|
||||
const testFacets = items.filter((el) => {
|
||||
return (
|
||||
el.querySelector(".o_searchview_facet_label .fa-star") &&
|
||||
el.querySelector(".o_facet_values")?.innerText === "testFilter"
|
||||
);
|
||||
});
|
||||
if (testFacets.length !== 1) {
|
||||
console.error("The 'testFilter' facet should be applied only on the first view");
|
||||
}
|
||||
},
|
||||
}, {
|
||||
@@ -157,6 +205,8 @@ registry.category("web_tour.tours").add("knowledge_items_search_favorites_tour",
|
||||
run: () => {},
|
||||
},
|
||||
...validateFavoriteFiltersSteps("Items 1", "Items 2"),
|
||||
// testFilter was added as a favorite during validateFavoriteFiltersSteps to Items 1
|
||||
...validateFavoriteFilterPersistence("Items 1", "testFilter"),
|
||||
...endKnowledgeTour(),
|
||||
],
|
||||
});
|
||||
@@ -168,8 +218,10 @@ registry.category("web_tour.tours").add("knowledge_search_favorites_tour", {
|
||||
// insert a first kanban view
|
||||
...embedKnowledgeKanbanViewSteps("Article 1"),
|
||||
{ // wait for embedded view to load and click on rename button
|
||||
trigger: '.o_knowledge_behavior_type_embedded_view:has(.o_knowledge_embedded_view .o_control_panel:contains(Articles)) .o_knowledge_toolbar button:contains(Rename)',
|
||||
trigger: '.o_knowledge_behavior_type_embedded_view:has(.o_knowledge_embedded_view .o_control_panel:contains(Articles)) .o_control_panel_breadcrumbs_actions .dropdown-toggle',
|
||||
allowInvisible: true,
|
||||
}, {
|
||||
trigger: '.dropdown-item:contains(Edit)'
|
||||
}, { // rename the view Kanban 1
|
||||
trigger: '.modal-dialog input.form-control',
|
||||
run: `text Kanban 1`,
|
||||
|
||||
@@ -128,9 +128,16 @@ registry.category("web_tour.tours").add('knowledge_main_flow_tour', {
|
||||
trigger: '.o_field_many2many_tags_email[name=partner_ids] input',
|
||||
run: 'text micheline@knowledge.com',
|
||||
}, {
|
||||
// Create the partner
|
||||
trigger: '.ui-autocomplete.dropdown-menu a:contains("micheline@knowledge.com")',
|
||||
in_modal: false,
|
||||
// Open the simplified create form view
|
||||
trigger: '.o-autocomplete--dropdown-menu .o_m2o_dropdown_option_create_edit a',
|
||||
run: 'click',
|
||||
}, {
|
||||
// Give an email address to the partner
|
||||
trigger: '.o_field_widget[name=email] input',
|
||||
run: 'text micheline@knowledge.com',
|
||||
}, {
|
||||
// Save the new partner
|
||||
trigger: '.o_form_button_save',
|
||||
}, {
|
||||
// Submit the invite wizard
|
||||
trigger: 'button:contains("Invite")',
|
||||
|
||||
@@ -90,9 +90,16 @@ registry.category("web_tour.tours").add('knowledge_sidebar_tour', {
|
||||
trigger: '.o_field_many2many_tags_email[name=partner_ids] input',
|
||||
run: 'text henri@knowledge.com',
|
||||
}, {
|
||||
// Create the partner
|
||||
trigger: '.ui-autocomplete.dropdown-menu a:contains("henri@knowledge.com")',
|
||||
in_modal: false,
|
||||
// Open the simplified create form view
|
||||
trigger: '.o-autocomplete--dropdown-menu .o_m2o_dropdown_option_create_edit a',
|
||||
run: 'click',
|
||||
}, {
|
||||
// Give an email address to the partner
|
||||
trigger: '.o_field_widget[name=email] input',
|
||||
run: 'text henri@knowledge.com',
|
||||
}, {
|
||||
// Save the new partner
|
||||
trigger: '.o_form_button_save',
|
||||
}, {
|
||||
// Submit the invite wizard
|
||||
trigger: 'button:contains("Invite")',
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import json
|
||||
|
||||
from datetime import datetime
|
||||
from lxml import html
|
||||
from unittest.mock import patch
|
||||
from urllib import parse
|
||||
|
||||
from odoo import exceptions
|
||||
from odoo.addons.knowledge.tests.common import KnowledgeCommonWData
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.tests.common import tagged, users
|
||||
from odoo.tools import mute_logger
|
||||
|
||||
@@ -146,6 +151,30 @@ class TestKnowledgeArticleBusiness(KnowledgeCommonBusinessCase):
|
||||
with self.assertRaises(exceptions.AccessError):
|
||||
Article.article_create(title=_title, parent_id=private_nonmember.id, is_private=False)
|
||||
|
||||
@users('employee')
|
||||
def test_article_get_sidebar_articles(self):
|
||||
""" Testing the main access point for the sidebar. """
|
||||
playground_root = self.article_workspace.with_env(self.env)
|
||||
playground_children = self.workspace_children.with_env(self.env)
|
||||
shared_root = self.article_shared.with_env(self.env)
|
||||
# all articles are folded, expect only roots and no favorite
|
||||
sidebar_articles = self.env['knowledge.article'].get_sidebar_articles()
|
||||
self.assertListEqual(sidebar_articles['favorite_ids'], [])
|
||||
self.assertListEqual([article['id'] for article in sidebar_articles['articles']], (shared_root + playground_root).ids)
|
||||
# add both articles as favorite, favorite_ids should be populated
|
||||
(playground_root + shared_root).action_toggle_favorite()
|
||||
sidebar_articles = self.env['knowledge.article'].get_sidebar_articles()
|
||||
self.assertListEqual(sidebar_articles['favorite_ids'], (playground_root + shared_root).ids)
|
||||
# remove access to shared article, favorite_ids should have one element and only playground should be kept
|
||||
shared_root.sudo()._add_members(self.partner_employee, 'none', True)
|
||||
sidebar_articles = self.env['knowledge.article'].get_sidebar_articles()
|
||||
self.assertListEqual(sidebar_articles['favorite_ids'], playground_root.ids)
|
||||
self.assertListEqual([article['id'] for article in sidebar_articles['articles']], playground_root.ids)
|
||||
# unfold playground, should contain its children
|
||||
sidebar_articles = self.env['knowledge.article'].get_sidebar_articles(playground_root.ids)
|
||||
self.assertListEqual(sidebar_articles['favorite_ids'], [playground_root.id])
|
||||
self.assertListEqual([article['id'] for article in sidebar_articles['articles']], (playground_children + playground_root).ids)
|
||||
|
||||
@mute_logger('odoo.addons.base.models.ir_rule', 'odoo.addons.mail.models.mail_mail', 'odoo.models.unlink', 'odoo.tests')
|
||||
@users('employee')
|
||||
def test_article_invite_members(self):
|
||||
@@ -684,6 +713,16 @@ class TestKnowledgeArticleBusiness(KnowledgeCommonBusinessCase):
|
||||
self.assertFalse(workspace_children[0].parent_id)
|
||||
self.assertEqual(workspace_children.root_article_id, workspace_children[0])
|
||||
|
||||
workspace_child_item = self.env['knowledge.article'].create({
|
||||
'name': 'Article Item Child',
|
||||
'parent_id': article_workspace.id,
|
||||
'is_article_item': True
|
||||
}).with_env(self.env)
|
||||
|
||||
with self.assertRaises(exceptions.ValidationError):
|
||||
workspace_children[0].move_to(parent_id=workspace_child_item.id)
|
||||
|
||||
|
||||
@mute_logger('odoo.addons.base.models.ir_rule')
|
||||
@users('employee')
|
||||
def test_article_move_to_shared(self):
|
||||
@@ -970,6 +1009,121 @@ class TestKnowledgeArticleCopy(KnowledgeCommonBusinessCase):
|
||||
self.assertFalse(new_article.child_ids)
|
||||
self.assertFalse(new_article.parent_id)
|
||||
|
||||
def test_article_make_private_copy_having_embedded_views_of_article_items(self):
|
||||
""" When the user copies an article, the system should copy the body
|
||||
of the original article and update the ID references stored within
|
||||
it so that the embedded views listing the article items of the original
|
||||
article now list the article items of the copy. This test will check
|
||||
that the ID references have been updated in the body of the new article. """
|
||||
article = self.env['knowledge.article'].create({
|
||||
'name': 'Hello'
|
||||
})
|
||||
|
||||
def render_embedded_view(behavior_props):
|
||||
return '''
|
||||
<div class="o_knowledge_behavior_anchor o_knowledge_behavior_type_embedded_view"
|
||||
data-oe-protected="true"
|
||||
data-behavior-props="%s"/>
|
||||
''' % (parse.quote(json.dumps(behavior_props)))
|
||||
|
||||
article.write({
|
||||
'body': (
|
||||
'<p>Hello world</p>' +
|
||||
render_embedded_view({
|
||||
'action_xml_id': 'knowledge.knowledge_article_item_action',
|
||||
'display_name': 'Kanban',
|
||||
'view_type': 'kanban',
|
||||
'context': {
|
||||
'active_id': article.id,
|
||||
'default_parent_id': article.id,
|
||||
'default_icon': '📄',
|
||||
'default_is_article_item': True,
|
||||
}
|
||||
}) +
|
||||
render_embedded_view({
|
||||
'action_xml_id': 'knowledge.knowledge_article_item_action',
|
||||
'display_name': 'List',
|
||||
'view_type': 'list',
|
||||
'context': {
|
||||
'active_id': article.id,
|
||||
'default_parent_id': article.id,
|
||||
'default_icon': '📄',
|
||||
'default_is_article_item': True,
|
||||
}
|
||||
}) +
|
||||
render_embedded_view({
|
||||
'action_xml_id': 'knowledge.knowledge_article_action',
|
||||
'display_name': 'Articles',
|
||||
'view_type': 'list',
|
||||
'context': {
|
||||
'search_default_filter_trashed': 1,
|
||||
}
|
||||
})
|
||||
)
|
||||
})
|
||||
|
||||
expected_view_types = [
|
||||
'kanban',
|
||||
'list',
|
||||
'list'
|
||||
]
|
||||
expected_contexts = [{
|
||||
'active_id': article.id,
|
||||
'default_parent_id': article.id,
|
||||
'default_icon': '📄',
|
||||
'default_is_article_item': True,
|
||||
}, {
|
||||
'active_id': article.id,
|
||||
'default_parent_id': article.id,
|
||||
'default_icon': '📄',
|
||||
'default_is_article_item': True,
|
||||
}, {
|
||||
'search_default_filter_trashed': 1,
|
||||
}]
|
||||
|
||||
fragment = html.fragment_fromstring(article.body, create_parent=True)
|
||||
embedded_views = [embedded_view for embedded_view in fragment.findall('.//*[@data-behavior-props]') \
|
||||
if 'o_knowledge_behavior_type_embedded_view' in embedded_view.get('class')]
|
||||
|
||||
# Check that the original article contains the embedded views we want
|
||||
self.assertEqual(len(embedded_views), 3)
|
||||
for (embedded_view, expected_view_type, expected_context) in zip(embedded_views, expected_view_types, expected_contexts):
|
||||
behavior_props = json.loads(parse.unquote(embedded_view.get('data-behavior-props', {})))
|
||||
self.assertEqual(behavior_props['view_type'], expected_view_type)
|
||||
self.assertEqual(behavior_props['context'], expected_context)
|
||||
|
||||
# Copy the article
|
||||
new_article = article.action_make_private_copy()
|
||||
|
||||
expected_contexts = [{
|
||||
'active_id': new_article.id,
|
||||
'default_parent_id': new_article.id,
|
||||
'default_icon': '📄',
|
||||
'default_is_article_item': True,
|
||||
}, {
|
||||
'active_id': new_article.id,
|
||||
'default_parent_id': new_article.id,
|
||||
'default_icon': '📄',
|
||||
'default_is_article_item': True,
|
||||
}, {
|
||||
'search_default_filter_trashed': 1,
|
||||
}]
|
||||
|
||||
fragment = html.fragment_fromstring(new_article.body, create_parent=True)
|
||||
embedded_views = [embedded_view for embedded_view in fragment.findall('.//*[@data-behavior-props]') \
|
||||
if 'o_knowledge_behavior_type_embedded_view' in embedded_view.get('class')]
|
||||
|
||||
# Check that the context of the embedded views stored in the body of the
|
||||
# newly created article have properly been updated: The embedded views
|
||||
# listing the article items of the original article should now list the
|
||||
# article items of the copy.
|
||||
|
||||
self.assertEqual(len(embedded_views), 3)
|
||||
for (embedded_view, expected_view_type, expected_context) in zip(embedded_views, expected_view_types, expected_contexts):
|
||||
behavior_props = json.loads(parse.unquote(embedded_view.get('data-behavior-props', {})))
|
||||
self.assertEqual(behavior_props['view_type'], expected_view_type)
|
||||
self.assertEqual(behavior_props['context'], expected_context)
|
||||
|
||||
@mute_logger('odoo.addons.base.models.ir_model', 'odoo.addons.base.models.ir_rule')
|
||||
@users('employee')
|
||||
def test_copy(self):
|
||||
@@ -1033,6 +1187,20 @@ class TestKnowledgeArticleRemoval(KnowledgeCommonBusinessCase):
|
||||
""" Testing archive that should also archive children. """
|
||||
self._test_archive(test_trash=False)
|
||||
|
||||
def test_archive_unactive_article(self):
|
||||
""" Checking that an unactive article can be archived. """
|
||||
article = self.env['knowledge.article'].create({'name': 'Article'})
|
||||
self.assertTrue(article.active)
|
||||
self.assertFalse(article.to_delete)
|
||||
|
||||
article.action_archive()
|
||||
self.assertFalse(article.active)
|
||||
self.assertFalse(article.to_delete)
|
||||
|
||||
article.action_send_to_trash()
|
||||
self.assertFalse(article.active)
|
||||
self.assertTrue(article.to_delete)
|
||||
|
||||
def _test_archive(self, test_trash=False):
|
||||
archive_method_name = 'action_send_to_trash' if test_trash else 'action_archive'
|
||||
|
||||
@@ -1204,6 +1372,93 @@ class TestKnowledgeArticleRemoval(KnowledgeCommonBusinessCase):
|
||||
msg="ACLs: unlink is not accessible to employees"):
|
||||
article_workspace.unlink()
|
||||
|
||||
def test_unarchive_article_items_having_archived_parent(self):
|
||||
""" Check that the user can not unarchive an article item whose parent is archived. """
|
||||
parent_article = self.env['knowledge.article'].create({
|
||||
'active': False,
|
||||
'to_delete': True,
|
||||
'name': 'Parent article',
|
||||
})
|
||||
article_item = self.env['knowledge.article'].create({
|
||||
'active': False,
|
||||
'to_delete': True,
|
||||
'name': 'Article item',
|
||||
'parent_id': parent_article.id,
|
||||
'is_article_item': True,
|
||||
})
|
||||
|
||||
with self.assertRaises(UserError):
|
||||
article_item.action_unarchive()
|
||||
|
||||
(parent_article + article_item).action_unarchive()
|
||||
self.assertTrue(parent_article.active)
|
||||
self.assertFalse(parent_article.to_delete)
|
||||
self.assertTrue(article_item.active)
|
||||
self.assertFalse(article_item.to_delete)
|
||||
self.assertEqual(article_item.parent_id, parent_article)
|
||||
|
||||
|
||||
@users('employee')
|
||||
def test_unarchive_article_having_inaccessible_parent(self):
|
||||
""" Check that the user can restore an article whose parent is inaccessible. """
|
||||
|
||||
parent_article = self.env['knowledge.article'].sudo().create({
|
||||
'active': False,
|
||||
'to_delete': True,
|
||||
'name': 'Parent article',
|
||||
'internal_permission': 'write',
|
||||
'article_member_ids': [
|
||||
(0, 0, {
|
||||
'partner_id': self.env.user.partner_id.id,
|
||||
'permission': 'none'
|
||||
}),
|
||||
(0, 0, {
|
||||
'partner_id': self.customer.id,
|
||||
'permission': 'read'
|
||||
}),
|
||||
]
|
||||
}).with_user(self.env.user)
|
||||
|
||||
child_article = self.env['knowledge.article'].sudo().create({
|
||||
'active': False,
|
||||
'to_delete': True,
|
||||
'name': 'Child article',
|
||||
'parent_id': parent_article.id,
|
||||
'article_member_ids': [
|
||||
(0, 0, {
|
||||
'partner_id': self.env.user.partner_id.id,
|
||||
'permission': 'write'
|
||||
}),
|
||||
]
|
||||
}).with_user(self.env.user)
|
||||
|
||||
# Check the access rights:
|
||||
with self.assertRaises(exceptions.AccessError):
|
||||
parent_article.check_access_rule('read')
|
||||
child_article.check_access_rule('write')
|
||||
|
||||
# Unarchive the child article:
|
||||
child_article.action_unarchive()
|
||||
|
||||
# When the parent article is in the trash, the child article should be
|
||||
# detached from its parent so that it will not be deleted when the parent
|
||||
# article is deleted.
|
||||
|
||||
self.assertTrue(child_article.active)
|
||||
self.assertFalse(child_article.to_delete)
|
||||
self.assertFalse(child_article.parent_id)
|
||||
self.assertFalse(child_article.is_desynchronized)
|
||||
self.assertMembers(child_article, 'write', {
|
||||
self.env.user.partner_id: 'write',
|
||||
self.customer: 'read'
|
||||
})
|
||||
|
||||
self.assertFalse(parent_article.active)
|
||||
self.assertTrue(parent_article.to_delete)
|
||||
self.assertMembers(parent_article, 'write', {
|
||||
self.env.user.partner_id: 'none',
|
||||
self.customer: 'read'
|
||||
})
|
||||
|
||||
@tagged('post_install', '-at_install', 'knowledge_internals', 'knowledge_management')
|
||||
class TestKnowledgeShare(KnowledgeCommonWData):
|
||||
|
||||
@@ -196,6 +196,15 @@ class TestKnowledgeArticleInternals(KnowledgeCommonWData):
|
||||
class TestKnowledgeArticleUtilities(KnowledgeCommonWData):
|
||||
""" Test data oriented utilities and tools for articles. """
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
cls.env['knowledge.article'].create({
|
||||
'name': 'Child Workspace Item',
|
||||
'is_article_item': True,
|
||||
'parent_id': cls.article_workspace.id
|
||||
})
|
||||
|
||||
@users('employee')
|
||||
def test_article_get_valid_parent_options(self):
|
||||
child_writable_article = self.workspace_children[1].with_env(self.env)
|
||||
@@ -228,6 +237,12 @@ class TestKnowledgeArticleUtilities(KnowledgeCommonWData):
|
||||
'Should contain: none of descendants, so only other accessible articles (shared section), filtered by search term'
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
child_writable_article.get_valid_parent_options(search_term='Item'),
|
||||
[],
|
||||
'Should contain: nothing as the searched article is an Article Item'
|
||||
)
|
||||
|
||||
@users('employee')
|
||||
def test_article_get_ancestor_ids(self):
|
||||
# Using ids from method docstring for easy matching.
|
||||
|
||||
@@ -4,11 +4,12 @@
|
||||
import base64
|
||||
from markupsafe import Markup
|
||||
|
||||
from odoo.tests.common import tagged, users, HttpCase
|
||||
from odoo.tests.common import tagged
|
||||
from odoo.addons.base.tests.common import HttpCaseWithUserDemo
|
||||
|
||||
|
||||
@tagged('post_install', '-at_install', 'knowledge', 'knowledge_tour')
|
||||
class TestKnowledgeEditorCommands(HttpCase):
|
||||
class TestKnowledgeEditorCommands(HttpCaseWithUserDemo):
|
||||
"""
|
||||
This test suit run tours to test the new editor commands of Knowledge.
|
||||
"""
|
||||
|
||||
@@ -10,11 +10,12 @@ from markupsafe import Markup
|
||||
from PIL import Image
|
||||
from unittest import skipIf
|
||||
from odoo import fields
|
||||
from odoo.tests.common import tagged, HttpCase, users
|
||||
from odoo.tests.common import tagged, users
|
||||
from odoo.addons.base.tests.common import HttpCaseWithUserDemo
|
||||
from odoo.addons.mail.tests.common import MailCommon, mail_new_test_user
|
||||
|
||||
|
||||
class TestKnowledgeUICommon(HttpCase, MailCommon):
|
||||
class TestKnowledgeUICommon(HttpCaseWithUserDemo, MailCommon):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(TestKnowledgeUICommon, cls).setUpClass()
|
||||
@@ -244,7 +245,7 @@ class TestKnowledgeUI(TestKnowledgeUICommon):
|
||||
'partner_id': self.env.ref('base.partner_admin').id,
|
||||
'permission': 'write',
|
||||
}), (0, 0, {
|
||||
'partner_id': self.env.ref('base.partner_demo').id,
|
||||
'partner_id': self.partner_demo.id,
|
||||
'permission': 'read',
|
||||
})],
|
||||
'is_article_visible_by_everyone': True,
|
||||
@@ -252,11 +253,11 @@ class TestKnowledgeUI(TestKnowledgeUICommon):
|
||||
|
||||
self.start_tour('/knowledge/article/%s' % articles[0].id, 'knowledge_readonly_favorite_tour', login='demo', step_delay=100)
|
||||
|
||||
self.assertTrue(articles[0].with_user(self.env.ref('base.user_demo').id).is_user_favorite)
|
||||
self.assertTrue(articles[1].with_user(self.env.ref('base.user_demo').id).is_user_favorite)
|
||||
self.assertTrue(articles[0].with_user(self.user_demo.id).is_user_favorite)
|
||||
self.assertTrue(articles[1].with_user(self.user_demo.id).is_user_favorite)
|
||||
self.assertGreater(
|
||||
articles[0].with_user(self.env.ref('base.user_demo').id).user_favorite_sequence,
|
||||
articles[1].with_user(self.env.ref('base.user_demo').id).user_favorite_sequence,
|
||||
articles[0].with_user(self.user_demo.id).user_favorite_sequence,
|
||||
articles[1].with_user(self.user_demo.id).user_favorite_sequence,
|
||||
)
|
||||
|
||||
def test_knowledge_resequence_children_of_readonly_parent_tour(self):
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user