From c740037982ef893dfb60de03e334cf7a076e1526 Mon Sep 17 00:00:00 2001 From: emmi-odoo Date: Fri, 31 Oct 2025 15:47:09 +0100 Subject: [PATCH] [IMP] knowledge/commands: update Knowledge and HTML editor docs task-5173838 closes odoo/documentation#15079 Signed-off-by: Emmanuel Minga (EMMI) --- .../applications/essentials/html_editor.rst | 244 +++++++++--------- .../html_editor/style-and-colors.png | Bin 10756 -> 11545 bytes .../applications/productivity/knowledge.rst | 113 ++++---- 3 files changed, 191 insertions(+), 166 deletions(-) diff --git a/content/applications/essentials/html_editor.rst b/content/applications/essentials/html_editor.rst index 5afdffb10..11f2a66d2 100644 --- a/content/applications/essentials/html_editor.rst +++ b/content/applications/essentials/html_editor.rst @@ -4,12 +4,12 @@ Odoo rich-text editor ===================== -The Odoo rich-text editor allows creating and editing rich-text content in HTML fields, such as the -:guilabel:`Internal Notes` and :guilabel:`Description` fields, as well as in the :ref:`Knowledge -articles ` and the :ref:`Studio report -editor `, among others. Start typing or use the -:ref:`toolbar ` or :ref:`powerbox -` for formatting and structuring text. +The Odoo rich-text editor allows for creating and editing rich-text content in HTML fields, such as +the :guilabel:`Internal Notes` and :guilabel:`Description` fields, as well as in the :ref:`Knowledge +articles ` and the :ref:`Studio report editor +`, among others. Start typing or use the :ref:`toolbar +` or :ref:`powerbox ` for +formatting and structuring text. .. tip:: Hover over any element in the text (header, table, clipboard, etc.) to reveal the @@ -22,51 +22,75 @@ Text editor toolbar =================== To edit a word, sentence, or paragraph, select or double-click it to display the text editor -toolbar and apply any of the following formatting options: +toolbar and apply any of the following standard formatting options: -- **Font style**: Change the style using various options, such as :guilabel:`Header 1 to 6, +- **Font style**: Define the font style using various options, such as :guilabel:`Header 1 to 6, Normal, Paragraph, Code`, and :guilabel:`Quote`. -- :guilabel:`B`: Put the text in bold. -- :guilabel:`I`: Put the text in italics. -- :guilabel:`U`: Underline the text. -- :guilabel:`S`: Strike through the text. -- :guilabel:`A` and :icon:`fa-paint-brush` :guilabel:`(paintbrush)` to customize the font and - background colors, respectively: +- **Font size**: Select the preferred font size. +- :icon:`fa-bold` (:guilabel:`Toggle bold`): Put the text in bold. +- :icon:`fa-italic` (:guilabel:`Toggle italic`): Put the text in italics. +- :icon:`fa-underline` (:guilabel:`Toggle underline`): Underline the text. +- :icon:`fa-font` (:guilabel:`Apply Font Color`): Customize the font colors: - :guilabel:`Solid`: Select the preferred color from the predefined palette. - :guilabel:`Custom`: Customize the color palette using the wheel or by configuring the :guilabel:`hex` code and :guilabel:`RGBA` values. - :guilabel:`Gradient`: Select a predefined gradient or customize it by choosing between :guilabel:`Linear` or :guilabel:`Radial` and adjusting the wheel. + - :icon:`fa-trash` (:guilabel:`Reset`): Restore the original font/background color. -- **Font size**: Adjust the size of the text. -- :icon:`fa-list-ul` (:guilabel:`bulleted list`): Turn the text into a bulleted list. -- :icon:`fa-list-ol` (:guilabel:`numbered list`): Turn the text into a numbered list. -- :icon:`fa-check-square-o` (:guilabel:`checklist`): Turn the text into a checklist. -- :icon:`fa-link` (:guilabel:`link`): Insert or edit a URL link to a selected text, and optionally - upload an image using its file URL. -- :guilabel:`Translate`: Translate the content in the :doc:`installed languages - `. -- :icon:`fa-magic` :guilabel:`AI` (:guilabel:`ChatGPT`): Get AI-generated suggestions and adjust - the tone by clicking buttons such as :guilabel:`Correct, Shorten, Lengthen, Friendly, - Professional`, and :guilabel:`Persuasive`. +- :icon:`fa-link` (:guilabel:`Add a link`): Insert or edit a URL link to a selected text, and + optionally upload an image using its file URL. +- :guilabel:`Odoo AI`: Write a prompt and get AI-generated content. Optionally, click the + AI suggestions instead of writing a prompt. + +Click the :icon:`fa-ellipsis-v` (:guilabel:`Expand toolbar`) icon to display additional formatting +options: + +- **Font family**: Use the :guilabel:`Default system font` or select a preferred font family for + the text. +- :icon:`fa-strikethrough` (:guilabel:`Toggle strikethrough`): Strike through the text. +- :icon:`fa-paint-brush` :guilabel:`(Apply Background Color)`: Customize the background colors. +- :icon:`fa-eraser` (:guilabel:`Remove Format`): Remove all formatting applied to a selected text. +- :icon:`fa-list-ul` (:guilabel:`Toggle List`): Select the following list options: + + - :icon:`fa-list-ul` (:guilabel:`Bulleted list`): Turn the text into a bulleted list. + - :icon:`fa-list-ol` (:guilabel:`Numbered list`): Turn the text into a numbered list. + - :icon:`fa-check-square-o` (:guilabel:`Checklist`): Turn the text into a checklist. + +- :icon:`fa-align-left` (:guilabel:`Align text`): Select the following text alignments: + + - :icon:`fa-align-left` (:guilabel:`align left`): Align the text on the left. + - :icon:`fa-align-center` (:guilabel:`align center`): Align the text in the center. + - :icon:`fa-align-right` (:guilabel:`align right`): Align the text on the right. + - :icon:`fa-align-justify` (:guilabel:`justify`): Apply straight edges to both text margins. + +- :guilabel:`Translate with AI`: Translate the content in the :doc:`installed languages + ` with AI. .. image:: html_editor/style-and-colors.png :alt: Text editor's toolbox - .. tip:: - Use the following keyboard shortcuts to apply formatting: - - **Emphasis**: Press `CTRL`/`CMD` + `B`, `CTRL`/`CMD` + `I`, or `CTRL`/`CMD` + `U` to apply - the bold, italics, or underlined effect. - - **Numbered list**: Type `1.`, `1)`, `A.`, or `A)` to start a numbered list. - - **Bulleted list**: Type `*` or `-` to start a bulleted list. + - Use the following keyboard shortcuts to apply formatting: + + - **Emphasis**: Press `CTRL`/`CMD` + `B`, `CTRL`/`CMD` + `I`, or `CTRL`/`CMD` + `U` to apply + the bold, italics, or underlined effect. + - **Numbered list**: Type `1.`, `1)`, `A.`, or `A)` to start a numbered list. + - **Bulleted list**: Type `*` or `-` to start a bulleted list. + + - Click a hyperlinked text and perform one of the following actions: :icon:`fa-clipboard` + (:guilabel:`Copy Link`), :icon:`fa-pencil-square-o` (:guilabel:`Edit Link`), or + :icon:`fa-chain-broken` (:guilabel:`Remove Link`). .. _essentials/html_editor/commands: Powerbox commands ================= +Commands enable editing and managing various types of features within the text editor, such as +tables, banners, headers, and more. + To use a command, type `/` to open the powerbox, then enter the command's name or select from multiple features to insert tables, images, banners, etc. @@ -88,26 +112,24 @@ multiple features to insert tables, images, banners, etc. * - Command - Use - * - :guilabel:`Separator` + * - :icon:`fa-minus` :guilabel:`Separator` - Insert a horizontal rule separator. - * - :guilabel:`2 columns` + * - :icon:`fa-columns` :guilabel:`2 columns` - Convert into 2 columns. - * - :guilabel:`3 columns` + * - :icon:`fa-columns` :guilabel:`3 columns` - Convert into 3 columns. - * - :guilabel:`4 columns` + * - :icon:`fa-columns` :guilabel:`4 columns` - Convert into 4 columns. - * - :guilabel:`Table` + * - :icon:`fa-table` :guilabel:`Table` - Insert a table. - * - :guilabel:`Bulleted list` + * - :icon:`fa-list-ul` :guilabel:`Bulleted list` - Create a bulleted list. - * - :guilabel:`Numbered list` + * - :icon:`fa-list-ol` :guilabel:`Numbered list` - Create a numbered list. - * - :guilabel:`Checklist` + * - :icon:`fa-check-square-o` :guilabel:`Checklist` - Create a checklist. - * - :guilabel:`Quote` - - Add a blockquote section. - * - :guilabel:`Code` - - Add a code section. + * - :icon:`fa-caret-square-o-right` :guilabel:`Toggle list` + - Hide a group of text under a foldable toggle. .. note:: To organize a table, hover over a column or row to reveal the table menu. Click the @@ -117,40 +139,44 @@ multiple features to insert tables, images, banners, etc. .. tab:: Banner .. list-table:: - :widths: 20 80 + :widths: 30 70 :header-rows: 1 :stub-columns: 1 * - Command - Use - * - :guilabel:`Banner Info` + * - :icon:`fa-info-circle` :guilabel:`Banner Info` - Insert an info banner. - * - :guilabel:`Banner Success` + * - :icon:`fa-check-circle` :guilabel:`Banner Success` - Insert a success banner. - * - :guilabel:`Banner Warning` + * - :icon:`fa-exclamation-triangle` :guilabel:`Banner Warning` - Insert a warning banner. - * - :guilabel:`Banner Danger` + * - :icon:`fa-exclamation-circle` :guilabel:`Banner Danger` - Insert a danger banner. .. tab:: Format .. list-table:: - :widths: 20 80 + :widths: 30 70 :header-rows: 1 :stub-columns: 1 * - Command - Use - * - :guilabel:`Heading 1` + * - :icon:`fa-header` :guilabel:`Heading 1` - Big section heading. - * - :guilabel:`Heading 2` + * - :icon:`fa-header` :guilabel:`Heading 2` - Medium section heading. - * - :guilabel:`Heading 3` + * - :icon:`fa-header` :guilabel:`Heading 3` - Small section heading. - * - :guilabel:`Text` + * - :icon:`fa-paragraph` :guilabel:`Text` - Paragraph block: Insert a paragraph. - * - :guilabel:`Switch direction` + * - :icon:`fa-exchange` :guilabel:`Switch direction` - Switch the text's direction. + * - :icon:`fa-quote-right` :guilabel:`Quote` + - Add a blockquote section. + * - :icon:`fa-code` :guilabel:`Code` + - Add a code section. .. tab:: Media @@ -161,39 +187,30 @@ multiple features to insert tables, images, banners, etc. * - Command - Use - * - :guilabel:`Media` + * - :icon:`fa-file-image-o` :guilabel:`Media` - :ref:`Insert an image ` or icon: :doc:`Search the Unsplash database ` or upload images, documents, or icons. - * - :guilabel:`Clipboard` - - Add a clipboard section to store content and reuse it in other apps. - * - :guilabel:`Upload a file` + * - :icon:`fa-upload` :guilabel:`Upload a file` - Add a download box: share images, recordings, or documents that internal users can download. .. tab:: Navigation .. list-table:: - :widths: 20 80 + :widths: 30 70 :header-rows: 1 :stub-columns: 1 * - Command - Use - * - :guilabel:`Link` + * - :icon:`fa-link` :guilabel:`Link` - Add a link: Type the label and enter a URL or upload a file, then click :guilabel:`Apply`. - * - :guilabel:`Button` + * - :icon:`fa-link` :guilabel:`Button` - Add a button: Type the label, enter a URL or upload a file, select the button style, type, and size, then click :guilabel:`Apply`. - * - :guilabel:`Article` - - Insert a shortcut to a :doc:`Knowledge article `. - * - :guilabel:`Appointment` - - Add a specific appointment: Select one or several appointment type(s) to assign to - relevant users, then click :guilabel:`Insert a link`. - * - :guilabel:`Table Of Content` + * - :icon:`fa-bookmark` :guilabel:`Table Of Contents` - Highlight the structure (headings): Create a table of content based on the headings. - * - :guilabel:`Video Link` - - Insert a video: Copy-paste the video URL (Youtube, Vimeo, Dailymotion, and Youku only). .. tab:: Widget @@ -204,43 +221,19 @@ multiple features to insert tables, images, banners, etc. * - Command - Use - * - :guilabel:`Emoji` + * - :icon:`fa-smile-o` :guilabel:`Emoji` - Add an emoji: search for the desired emoji. - * - :guilabel:`3 Stars` + * - :icon:`fa-star-o` :guilabel:`3 Stars` - Insert a rating of up to 3 stars. - * - :guilabel:`5 Stars` + * - :icon:`fa-star` :guilabel:`5 Stars` - Insert a rating of up to 5 stars. - .. tab:: AI Tools - - .. list-table:: - :widths: 20 80 - :header-rows: 1 - :stub-columns: 1 - - * - Command - - Use - * - :guilabel:`ChatGPT` - - Generate content with AI. - - .. tab:: Basic Block - - .. list-table:: - :widths: 20 80 - :header-rows: 1 - :stub-columns: 1 - - * - Command - - Use - * - :guilabel:`Signature` - - Insert your signature. - .. _insert-media: Insert media ------------ -To insert media, type `/Media` or click the :icon:`fa-file-image-o` :guilabel:`(image)` icon in the +To insert media, type `/Media` or click the :icon:`fa-file-image-o` :guilabel:`(media)` icon in the tooltip, then choose from the following tabs: - :guilabel:`Images` @@ -256,7 +249,13 @@ tooltip, then choose from the following tabs: - :guilabel:`Add URL`: Copy-paste a valid URL. - :guilabel:`Upload a document`: Upload a document from a local drive. -- :guilabel:`Icons`: Search an icon from the selection in the database. +- :guilabel:`Icons`: Search for and select one of the available icons. +- :guilabel:`Videos`: Paste a video URL of the following sources: YouTube, Vimeo, Dailymotion, and + Youku. Alternatively, type code to embed a video. + +.. note:: + When adding a video, use the toggles to enable autoplay or looping, hide player controls or the + fullscreen button, or set a start time. Media editor toolbar ~~~~~~~~~~~~~~~~~~~~ @@ -264,23 +263,22 @@ Media editor toolbar After :ref:`inserting an image `, click it to display the media editor toolbar, and apply any of the following formatting options: -- :icon:`fa-search-plus` (:guilabel:`preview`): Preview the image, zoom in or out, print it or - download it. Exit the preview by clicking the :icon:`fa-times` :guilabel:`(close)` icon in the - top right corner. -- :guilabel:`Description`: Edit the image description and tooltip, then click :guilabel:`Save`. -- :icon:`fa-square` (:guilabel:`rounded`): Apply a rounded shape to the corners of the image. -- :icon:`fa-circle-o` (:guilabel:`circle`): Apply a circular shape to the image. -- :icon:`fa-sun-o` (:guilabel:`shadow`): Apply a shadow effect to the image. -- :icon:`fa-picture-o` (:guilabel:`image`): Apply a border to the image. -- :icon:`fa-plus-square-o` (:guilabel:`padding`): Add an image padding and choose from small, - medium, large, or extra large sizes. -- :guilabel:`Default`: Restore the image to its default size. -- :guilabel:`100%`: Set the image to full size. -- :guilabel:`50%`: Set the image to half its size. -- :guilabel:`25%`: Set the image to a quarter of its size. +- :icon:`fa-search-plus` (:guilabel:`Preview image`): Preview the image, zoom in or out, rotate it, + print it, or download it. Exit the preview by clicking the :icon:`fa-times` :guilabel:`(close)` + icon in the top right corner. +- :guilabel:`Description`: Edit the image description and tooltip, then click :guilabel:`Apply`. +- :guilabel:`Caption`: Write a caption under 100 characters below the image. +- :icon:`fa-square` (:guilabel:`Rounded`): Apply a rounded shape to the corners of the image. +- :icon:`fa-circle-o` (:guilabel:`Circle`): Apply a circular shape to the image. +- :icon:`fa-sun-o` (:guilabel:`Shadow`): Apply a shadow effect to the image. +- :icon:`fa-picture-o` (:guilabel:`Thumbnail`): Apply a border to the image. +- :icon:`fa-plus-square-o` (:guilabel:`Padding`): Add an image padding and choose from + :guilabel:`Small`, :guilabel:`Medium`, :guilabel:`Large`, or :guilabel:`XL` sizes. +- :guilabel:`Resize`: Restore the image to its default size or set its size to :guilabel:`25%`, + :guilabel:`50%`, or :guilabel:`100%`. - :icon:`fa-object-ungroup` (:guilabel:`object`): Resize and rotate the image. Click the :icon:`fa-object-ungroup` :guilabel:`(object)` icon a second time to reset the transformation. -- :icon:`fa-crop` (:guilabel:`crop`): Crop the image manually or apply the following options: +- :icon:`fa-crop` (:guilabel:`Crop image`): Crop the image manually or apply the following options: - Choose from the `Flexible`, `16:9`, `4:3`, `1:1`, or `2:3` aspect ratios. - Zoom in or out. @@ -288,9 +286,21 @@ apply any of the following formatting options: - Flip horizontally or vertically. - Reset the image. -- :guilabel:`Replace`: Replace the image by searching in the :doc:`Unsplash +- :icon:`fa-link` (:guilabel:`Add a link`): Add a link to the image, type the URL, then click + :guilabel:`Apply`. To remove the link, click :icon:`fa-unlink` (:guilabel:`Remove Link`). +- :icon:`fa-exchange` (:guilabel:`Replace`): Replace the image by searching in the :doc:`Unsplash ` database, adding a URL, or uploading a different one. -- :icon:`fa-link` (:guilabel:`link`): Insert a link to the image, type the URL, then click - :guilabel:`Apply`. To remove the link, click the :icon:`fa-chain-broken` :guilabel:`(unlink)` icon. -- :icon:`fa-trash` (:guilabel:`trash`): Remove the image. +- :icon:`fa-trash` (:guilabel:`Delete`): Delete the image. + +Icon editor toolbar +~~~~~~~~~~~~~~~~~~~ + +After :ref:`inserting an icon `, click it to display the icon editor toolbar, and +apply any of the following formatting options: + +- :icon:`fa-font` (:guilabel:`Select Font Color`): Customize the font color. +- :icon:`fa-paint-brush` (:guilabel:`Select Background Color`): Customize the background color. +- :guilabel:`Resize icon`: From :guilabel:`1x` to :guilabel:`5x`. +- :icon:`fa-play` (:guilabel:`Toggle icon spin`): Activate the spin animation. +- :guilabel:`Replace`: Select a different icon. diff --git a/content/applications/essentials/html_editor/style-and-colors.png b/content/applications/essentials/html_editor/style-and-colors.png index f1ee33fb4e2f92f13bdfc2a918c78b499bfff29e..f8d0bfdc51e2cd77de63f6a11c570092574eec34 100644 GIT binary patch literal 11545 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 literal 10756 zcmbt)XH-*Pvp3R|D!qgjq*v)3q!U690i>e{mna`iyJ!UR3RXvEOr{~zv*umbOo}NCKNuIbdK8@*_ z*_pm3uZ|fSlYnrMTw?+|k;!`oap`-Kk+n`^Hl`QG*8i54B8gAofS27T>l`+lWZNS?g_?_*u?eH9wgbHA$cN6 zW!iIld*|@*==ksH`UYWs;pg)5a&}JM*x1;@&n2?hBqXZXRL>&tQG85FUT4qyd*Nw` zap|bcSX8_>)GMH|sa453HZC<`Z*QL$D6MVd2G_NnnfaayGRyO^=8{%M1jjoVK_10F zum)=IXqss9$`dblOEE8HfKU@wPF5K+c{_1oULDR`Ug;h_61RlG4^qt?eH^W#^1V1v ztek9YT&nso)?&^$pD>6#7mBT@2*qn}%w?kKo9V8c8zz63jf;4)ym3h^hzGd^+qW#9 z5Kq2>eRQJPxHJP=TncCIvK6tRiXIyCHitRP>|e067w*o#A0C?sa^re?PHcWwI=Iq1 zSrl+OTdr#RkS+`rYE> zk4NF%J3CEH6_JUny(7W7?U|kZr|+}p8z1*}%ql)D^>ISstM4-~T*sD-y)*&YM;Qe& zTz81Y9?#7Mlwgw0Sh{KGcE{Y?V(C84{P?Y=ww#qc^;&80RX#&US4YQn;!Kve^>q)$ z>#1dN9SmLLpO&IMXm@uh$ai-c7`k?j&WVjgH8mnpjrg;X*i0h+nW?d|J|9ZC70%ET z%GeRg(8YGs!(2q{WbfD7%AaSo9RXxyKr&N9J!tss@3L_#p6`5buP%EnFcn+8eT-%| zfH>Mb@w&d7e1vmON|N0AexFt5lUjCG>jUfGZw3gdc4iMT$JJg21g#8 zJ2eCv-W*$O%C6EI5zZ5H>S)q1^F!^D!+qXS%K&sUrw-u;*eupoN6THyX$TK>V;Oud zEUC$TYDQ-xFHX%O6ZdrHXYz1YRyP2{w|0_Uo%iM~{IF8DQyywr%7rsuhSLof|;&{h@cGIf{u7 z*BcDHLyM&-c+x!9nEbMX1Nvv7s#uzvdE{1-q0NW-+}yuUHY-0TM$x6ulH0dQqcbK`3mMifyn|PF}dtC%08q(zi19P?+<^5PHQ}2RW z`)k4q6>^lRW;4efxByowZ5N8LMMbl0%6i2Y>x=W=h+(@wt0(k)IA25PRTsp-aH@gi zx-e@(Q0K(^x+H4Ym75k0=!mIJL{+tC9#={1Q+0myr!Uve<{u_>U(cduvGZFZW4mWL z4OdY#&+2}aOlI>a|NCPJmp_cz(Q;@DN!JMUP}H`fM++6?>nI&1?r&X(#Rf;u@kvZk zKTj+%qkCyl>+RL^AgK){k}E^ZXgx_`0b6}rEt#CRzCAv--?wV)vz>2DV9V%*eysQM zocGJ|Kz?2m?c#^<0O#`)Soj+o*)!yUzg&Bl@~Ko!{AqIKo^UG<92i?UWgCrf+yBfq z*$W>|Yjx>Wzjglxabf+#t&@I-px!&=SpP2T@2R%=FC)7h{fFx+xF*WZ%2!1ws`O|J z8t52voCSRyDGT3#tfJ3T#``)74_CIco*a&ah=ib&I^tJ)7_qNuaBrDv5(N1e4BF+y z#_wRnH(@UgnJyE{GQzjsJV{aF;h5+3w0X^PWjzyAH(o5LkVq~KO(z^&U* zp#T1LzVCXShH~y^NFbTpif7M$ah@T@sh^)^ha0i>FnOOl9%?DY-XJL>_>tnP+Eog3 zW8`7Kk`mpBFt@DFXW%H-sn1i5BQ5iw)P)QrCH(b;-f&mBHraPH1hDwbh836E|MER- z<*b9qSfxM@vcqIMKFcpygrW|$@svyDeU4rNlvcE+NeUEM1xzszW=o^A6p?$>61V9- zUH#*cRM@};mf1G-chdoqE`$z4t;MV5^GFHlbWd)$4#8nymiEW=G21&u+jbn`mIup= zmLv2%wP*2m?pNg6-*vo+v!ja4{x59oQ1l2Lh#+6JUaZK&%F$2J3Xxc%oOd8A-2h?+6uEQ+bgiIZ|=7{D_jE^FO8hZy`u{TU7d!s zU&{a8*Pwuu64ELjnJa;$SL2`Shyp(>t-)DUrkowr>{HFU5O2&Ku^_G{B;&DV_^gRx_BYhwFur}IcG+2blXaU zMuQ*|Pw>D5@1;*|M`8K(h2mcxqK`{w-snk6vwiK zSlC+sb19oaMwo&6EQd)kfJIchxva1t+C+h1x;r%2aCEB%?d|xtO3zzSoJY2%_LIW*J?ECZT zK}MIsYges`-={3r={pO5R4u$K1%B~ySzMX5cyu6BQ+n@5!uvMYZ-;SB6qdxChx~5u z5}>49f!N`{m9w4IhKLsk=BKuPEzZyDWbj4z7J;-+N=_2CBn^Y zkc5&G@-=F!UmIFujZIxu2BavDn^qXRYH>EyL|NA(R953tFRljrS|2;CrkOvpf+lTy z=36CBOtKd4!2=@2L35!TS%WqY%s==bD~5%C(W}_B@9I0$BN~3~a!4R8=p9z4SQFBz=rYC61w-&5{E??1&ru%qcC<<9k#oMWg4mbE=(SR@HomjQpG-Ng?BAVr zQFt3vH~#n#e_*~48~^}WEP9Z?xXs3C|JRBJ`^Qvts`=s6Ye7HkHkIMZ$Jkr=?}xK~ z2Jk-o_ms(hK8(lzv`+sfM z&dKaaYcf@ek6zK%;iL}ET$XVO&%c51nx2cgSm=qmxVY$R%jhQK?sxZO^>pPxb+LMS zh9hr}b@jw+1OG%m+-dDCf9!9ywam1tpvkEhU)$xo@ZrZ7R>&FOFFSW#dpE^c0aSeWl_ zX*zsFHlDdATs6=VGC4i=)%)-#?knIDWbdm&PxI-_YxeTOky?>>r7;`%(jpM=&0 z>+E2^b!RwJl5FS3^7aq#T(UnUs`u&o!f242H%@q6xPCh7RnU2i%vWzE$^G3h@3GP# zQE7dfadkZ;fKPl+Uy?(5#q3tOWi$0N2`}@G$qli4;M}oa#i4b^?X%vWM&;2`eCuDBy{rdRY z99D+q=VpuZD}~iE*Le4!+2FMc))_s#_-hqE?zh24&wZb__{6JE2|b3!Diner%-TxE zzCxEgDPc|0zM=`Dzc5c z21bWEu{Z=4WHl*tIYv1Vgw?R@VL7+Q28C2atC}c=L?zt!KrZ@bEw;(e$P_}VtMiqN zWN;I#M|J6QbuD}}7y$2~bCRrJ)qDSv6m7mixk#vo5fejpD3$8l(e=Q2#Vm;srzNP6 z!0uDg!ay`WF8ED<4U%YV3L}_*dC(sgoD>F_`M@>yMZrn6n4_I#XH>E3v8~K|;$+?n zh@0v4yGV&_Cft|%c{}ShJ6+uNMnNZ?UxTH!tx!Xe>b3-={?rY9NgpsO5ZyO$9qC?? zgmg7x^BIU1Gf|&67Z)NKO~;&JA(8rDM@kiHO5v+QrPQ1fmSni+$0c;xfBaW2_sna6 z!`TXGC{}G}Yl|Hc0}ZkT#4CTt_ZxneZlho;cjMTN8CgYPJo??6MPT zT*y>v91ZT9jo`0-`DVrC+p@#3-_CS5&xaJ!4ddc$-P<{|(@G_5hr!sS;Q8Y|xJ#ec zhnVptfv2M?ARpU70f5g!oJ?JzipSjj1xvmwI1e@BumEY!lk!F53hn`fD9fp<(yDn8 zE`wa6!>iZ~oio|8qCBxIFb7AE$PRtmg6B2)#t~&4(@pvo3Z8}et$N^2UwXDj6!~ZN zW+_)11L!|&WDnlxS%kj68!lq8p=M(tj=>W=PwDlCSF%AX?}(Ei)+zX?SSttk z8*w4Ro-vf~8IuSEi7b~{Qn|T0cTuxg(C3%YdURLK_@VierE3=Zbe?H;kS*ipWN;#6 zHtV1jPg~~IAMimPB9Q;L(~m2K1;(9;q8S#EtjX#enSvMHICP+?`cttaC_6UcS}07rN_lD!mE~OTc);}hy5{e?^mXrV znw;YhbZhal^<7ygVN{R?D~>(~hm9caGfa0gfm%y0g%Ep3y*Gqnwu-A%`Q7)HAB_a- zqs{!g)^xN=@6{_B!S9IiDIH6gUnl2yG+R9hSJR6Lk#K??nSPY`#Vp%|LU*w;ZaaH_ zsA$lIN1>$OCF&d#8rO8nYy=N^OL`-~XjH%-j4Y_+RF@n*`aohM8>!H05%xp+L(v$S z1o728Hm~A&9^;#DL6ndq1a`^xGsim#+QWq9)e;9B%a{WCTGMNR-}^VOBQjX3Ca#K*?1JefFkTOjzi0E+3eMFXJZ-+W1@25U+T85y&bu+WzI?-B`UBw( z_XkRxR|Zt)y1wgqp^~9STD`2mS&Rh=$zZoho9k2?_=6c1lRY5YR*DFHP*h5Z9^^o8 z`j0l5-`tjU9FUt{F>7hCK{q%CYKh?;Br}t;_-8 zIU++JUIqC)DpEQAEmfvt1r&L+dZt60%i^;CijN+~jDV+1s+vy>yjs~WhXEKj-`!M1 z2g!Ezyo<7Nn(3#rSs^?)<_?DY$M?WP3uF}J5kL6|imwmOCGyp# z4$=t%Vr8J{o@Hc7&s&Fu+US@DP5Cc>Sq7IMKQX<6^#=*5zeO+D%+6ZSg0A2n(e#NA z-wmOF=mI)kM8>lr$RWBUz66j8{jW)+Fh~(#1*1lHLUD@+uDs+3LIQNfE0heY0%~RW zzheKP^B(!Yuew zC9?gF3~!yut`OVz$q0;173sop6hbntP>f+NU<(%yJyC4*Ar(A}e?>#v2DI}}WKjRe z3F)1_TDwYGcoHYlLq`gh((%7yRV#qgWOzcN`EQ~7RBn+Rr5)8Kh3Hnw0VC=3;X0nL z1|6>iKpj~2@BS0w4@|Iq7%PbgSf&JBf%Shm-{CqqubW)sk=x)#T+)E1CQLXI@Ivd1 zDlx0ue`a>7igh4Kc%k?MCJ>5sm!sF`#=`s<>#pp3LoMA%Ll7}VVicr|IpHuT0k**< z!iM9my(jm%u(cB81ySigT;&ue<{FJY!udD-VzTTNq@ac!* zXTQ~c4hs+Q%?5oJPUtmjx!mv{`AxzIk7N37Do8c+jXbdboi(gw>BV%pB zk@wEb0ru;?5$D}vBj&Z2dL11CErB(of8xwI@v(bl?}x1b8KyTMFI-Z zjog#OUl&XU(}G^)kwa?Gsm8P)NP9|B0!ZThiy}$=KNLb=gbHnK`Y(-mrCE?BeWcsp z2UoR6Fu_}LiRDpb*iewBrGNyl_vy!4_~}RZI$o%nMm;VbFO(=3vuY@~rN%sN-Q8M} z=5V{F?OB>ndr4Y*cujgZhxve}&1)k?6BSIvp=b%N)bYVB%*g?>1#E0R>JE56y*TXE zj~KpV*qW{t(e(-%AULHQ4;4b+Tr~d}v7hG`85;v0J6!jj$h1;LM@PPE(>jYb8e8}A zotUVr)$%Hl?JGgAfz1p8d!@_FJXn^_puJgtKG#F zVE5ntxAK~M&d4#(TqA0RQ9j}q!4EgnOY6035B63spAuWvMlOZzPVbz?J;9voSfF}) zTJ|5RYd&2dhm0b6zyE+jaigQE*IeTc!8WGE6M}~Rv$pmyQci3i9f>9B*dhY?bMunTK;%u{p*ra z-}bl)+M$~KCEKJcFsScrgIeDKYK+B6vElQzjUMzJC*3GJSHKQGHBG7#u#(yfKPCR2 ze+Yu&`LF(|XNU{>a?~7h$Nd{!GMiv0p(?_nKMn-AfxLsBYoiNVRMUjB9b9kPpv=90 zs&7AB(ahG&=V@qc?psRf12x?3>!{KP&U5y#%T8*q-!{|iTdx_-X(&61o!}f@QDcn# ztF71{Es%b6(P@QrKfWS?fP>`xb8Nmh%2lQy&TIxe) z;QRsT!ev0{;s*aoQ`+$@wq0x3Q3uXf;iL;Ejkhnhs8L!8xVCurG|Oy8QI{57qN583 zqL=d1wept;xT*OHm#G3k;B7z)$~L#6MobwJ;G<>b)7W`%WGX$L-#**g=H28w)esCf zp&w@~t@Tku?`VaF6@~o>wNf*6@S_uvUcC9Ofgp{QI`BjL>TH%7sY70{YDqbVuR2ow za8C90mh%4oLYyI1s3f!JZo#6s18tv&kJO;|S#khSnG0vyHQ!H-{owyhc-F6d?i+9G z_pPpU00)QfLgHjw;}=~viMYk#wfl9_CM+St&6x~1N5^g9$QvV!Dj>e*^CZ$jd-!!6 zhogP0w&w3ZE*|uq&@;w=3=b$g@#s26ib#UYd=usu>??qy5>2~X3-)=HK;?GY&@=nj z2}%pgEWXFGW?D8c2L-=v^A+5#kT#=R-0qilG?ZVHdlxF;opS}!FKEH$#f|+Vk5|C) z>M5aplAoB4!$B)Xj>Z6~jFc8NGsInX*rP1*K~jAGeQYKuZS;#F$nnO4A%C?@6XV%H zssVW#jq?=vHABK%PY6(XkF^>Iq#{8&xd~%MkW08FkVAkMW}yF)CBv>vh*=k+bu+{) zNp^XXl&@AeNvHfC zyjD;CtkC0ilkoCB+o#*TYVY=z8#baoc?n+iDU<1S=A*K{sW(Z3!~V=Xl+qs;JW;xvFIKPn@+{ZrcxhyC!1MruO_F= zmvNUZP8E~=f~7I`w!MhXbCQ;=xEd2)V=buCPy&b8=Jevm+vrWlE17rX6JqRkUSEkr2_Ry<8hsag zFRC9RB>>%hLtYX#C|pKY_-$;cQ&4i2+EN1YEby! zs*aW@Y4Q)pKrn<{0&zEwbU0m+$FhPRvyrmw@xO*rBLZ+}F|G^eLSNQBX{mP;XbQkw zcxPq`3v3E`kyma%A(bFydI*ty7tA?rJ+Mz$k`SFxjc1gGe809 z2fDr>RV0UEi%yhxek{guc6kx}`XF`?tcUEFzke#JA1`nUlt-vEV3^b+N);<`K8 zHqC!N8mcvO6pD}*awLGw4SB5$=@9@1*xj`aqw=rjhfMQJYi82N#i>&U!9E(>O~IdQ zQa7p!7S|=L?5=+;Yc5}FvK-83E0N2!!Ix#FQ<49}u)p_H{EShnti+6JK|oV#-=vP z!?E;qQ58^$sA#F7kbyyT9wS3GlM!-?RutyP?IxxSz7~Jzra`*yT(O+FnO2bKfzab6EB4Mi+tMFKS$GaS;x}UbJzhX#}O@Y(Z zk2FVmp~a{i+3|O53UWo$$p1SX{InVTRbAJM$}YBdry|Lo80(l!WxBYVhkM62uMh2m8buCz2nKzRsIh zL}LH0Y)H9KqaSCni4~IJjfJ*iP$T=b4zA4%>-+R`lbF&XeU3vx37ZFSfEB#1Q%Mu` zPEol|R=qecqL`O}E9qX5j(9l9Zso#aReBYaozkM(zQ$~2(NHm2;2u{}t+Qy1%Y5G% zS#RbO4ag&W#GPN)dp$Vac4kG0>`<_%kLTCOIB1LHvQ0Q5I+=7E?=jycz=R6 zHaM-VS`*yr>#D85wo? zKkouyYbDNy_vHXApbv`W$NHC2D4$_F~c7D%2%BlL31)qyKhNz4~+S`=e-zvPSZ>i$@ zX*yvk_sDL02^$PE%f1=`XvMsHVIXagNB}zwx|L_h0!dpV4Y{i+y|N;af!qF#|DZMT zJ!5b?fk4zbv<%TxHLbtekQu0Jb2?HkRq^{IS$O6hPX%vqu2T3$F))=4;~I4{v$>s) zbax1bUiqY`qXTYH(v~SiPfVB@?oUlc=h-`qvtlHG5e@EELbXucJ(muM>10j(YR99> z-1{KrPk~#rOg72ndFy*#-Ij1Av_u%hup?g|d7XvI`gm)wLe+;lIq#OSKd{8Sv-j$TcU4;N$ucPy> zYzndK!W&Izr6iZC4_#Bi4 zDf;ObO$%lbAg2=`qjg^{SL|Zy9|QEubiclg(-VAoXZdN7BI~$$v2&3YR{!~HF1t2G zr{GEFutZ!abr_+3&(~#sEZpASYW_NpGxtJW>e@-{Bh3q~g0mVyi_Z@nIw${HX}@~K zpWryPj*Rq|t$r+B^0LLYV+w;4tg|J+Ad>QL0uP;@!i%24f859YTvWa3Mt}?qNx&8H zREhL!1VX~bINa{Kck8LaL5oYT-#Gf=$S>Bf33}8)QC&a{&fLcbk?V$v)ZCvB53@FM zji>{I_CZJ=#5)(awZ}?#yUsYvZ0t|<4^FLTel4NyD==_*VJ2w4f_#vuoHS~U%9p{q zO4Hn47|)6qL*i0=EQcY+jxYg`kV^ivK4LnJAPCwt9EI8D!}4ob5?b`3w0cfAYEyvq zEXoHU9>YN=Nte=cZZGqz<3~dL z$tugtfZblRC$=}bG2bH@AHdomT`fx0p>SB+d#7R;qJu>hWvBZZ6=^Px}PMb&iZ zH6d-d$V$VO)L~(0mXe(w-ih>z?66 zjyimC^_lJ!>|;<*Ma!>ycRPMKcFkY17ya=V3+%W(1UnItKmal)HOG!o#;I7Q!|X_t z6J7Y)QLHPn7K=nR6dB*h5a+RD#h&>uQldo#=U*Ocq5P2`, and adding a :ref:`cover picture ` with a :ref:`title emoji `. +.. tip:: + To enlarge or reduce the article's width, click the :icon:`fa-ellipsis-v` (:guilabel:`More + actions`) icon, then toggle the :icon:`oi-arrows-h` :guilabel:`Full Width` on or off. + .. _knowledge/articles_editing/text-editor: Text editor toolbar @@ -105,6 +110,12 @@ following commands are exclusive to the Knowledge app: * - :guilabel:`Item Calendar` - Insert a Calendar view and create :ref:`article items `. + * - :guilabel:`Clipboard` + - Add a clipboard section to store content and reuse it in other apps. + * - :guilabel:`Foldable Section` + - Hide the text inside a foldable section. + * - :guilabel:`Article` + - Insert a shortcut to an article. .. _knowledge/articles_editing/items: @@ -123,24 +134,25 @@ consistent information across related items and articles. Cover pictures -------------- -To add a cover picture, click the :icon:`fa-ellipsis-v` :guilabel:`(ellipsis)` icon, then -:guilabel:`Add Cover`. The following options enable selecting and inserting pictures from different -sources: - -- Search the :doc:`Unsplash ` database to find a - suitable picture. If the database and **Unsplash** account are associated, the cover - picture is automatically selected based on the article's name. -- :guilabel:`Add URL`: Copy-paste the **image address**. -- :guilabel:`Upload an image`: Upload the file into the image library. +To add a cover picture, click the :icon:`fa-ellipsis-v` (:guilabel:`More actions`) icon, then +:guilabel:`Add Cover`. To manage the cover picture, hover the mouse over it and select the preferred option: -- :guilabel:`Replace Cover` and search from the database or library, or add a different URL. - -- :guilabel:`Reposition` and adjust the picture before clicking :guilabel:`Save Position`. - +- :guilabel:`Replace Cover`: Search from the :doc:`Unsplash + ` database library, click :guilabel:`Add URL` and + paste the **image address**, or click :guilabel:`Upload an image` to upload a file into the image + library. +- :guilabel:`Reposition`: Adjust the picture, then click :guilabel:`Save Position` or + :guilabel:`Cancel`. - :guilabel:`Remove`. +.. note:: + - After clicking :guilabel:`Add Cover`, a cover picture is automatically attributed to the + article based on the title. + - A removed cover picture can be retrieved in the database library. To delete it, hover the + mouse over it and click the :icon:`fa-trash` (:guilabel:`trash`) icon. + .. _knowledge/articles_editing/emoji: Title emoji @@ -148,9 +160,8 @@ Title emoji To add a title emoji to the article's name and header: -- Click the :icon:`fa-ellipsis-v` :guilabel:`(ellipsis)` icon, then :guilabel:`Add Icon` to +- Click the :icon:`fa-ellipsis-v` (:guilabel:`More actions`) icon, then :guilabel:`Add Icon` to generate a random emoji. Click the emoji to select a different one. - - Alternatively, click the :icon:`fa-file-text-o` :guilabel:`(page)` icon next to the article's name in the sidebar or the top bar and select the preferred emoji. @@ -187,15 +198,15 @@ Knowledge allows for managing articles, which consists of :ref:`structuring Basic management ---------------- -Click the :icon:`fa-ellipsis-v` (:guilabel:`ellipsis`) icon and select one of the following actions -for basic article management: +Click the :icon:`fa-ellipsis-v` (:guilabel:`More actions`) icon and select one of the following +actions for basic article management: - :guilabel:`Move To`: Select the article to move under a category or another article, then click :guilabel:`Move Article`. - :guilabel:`Lock Content`: Lock the article to stop edits. Click :guilabel:`Unlock` to edit again. - :guilabel:`Create a Copy`: Copy the article under the :guilabel:`Private` section. - :guilabel:`Open Version History`: Restore a previous version of the article. -- :guilabel:`Export`: Open the browser's print function. +- :guilabel:`Download PDF`: Open the browser's print function. - :guilabel:`Add to Templates`: Add the article to the list of templates. - :guilabel:`Send to Trash`: Move the article to the trash. @@ -212,7 +223,7 @@ for basic article management: .. tip:: - Move an article directly from the sidebar tree by dragging and dropping it under another article or category. - - Click the :icon:`fa-search` (:guilabel:`serch`) icon in the top-left corner or press `CTRL` / + - Click the :icon:`fa-search` (:guilabel:`search`) icon in the top-left corner or press `CTRL` / `CMD` + `K` to open the command palette, then type `?` to search for visible articles or `$` for :ref:`hidden articles `. Alternatively, hover over the :guilabel:`Workspace` category and click the :icon:`fa-eye` (:guilabel:`eye`) icon to find @@ -258,6 +269,11 @@ inviting :ref:`users `, providing :ref:`onlin Articles listed under a category in the sidebar tree are **visible**. Articles that certain users must search for through the command palette due to restricted access rights are **hidden**. +.. tip:: + To copy a specific section of an article, hover over the header (`H1`, `H2`, and `H3`), and click + the :icon:`fa-link` (:guilabel:`link`) icon. Clicking the shared link leads to the selected + section of the article. + .. _knowledge/articles_editing/rights: Configure access rights @@ -265,8 +281,8 @@ Configure access rights Click :guilabel:`Share` in the top-right menu to configure access rights. -Default access rights -********************* +General access +************** .. tabs:: @@ -277,18 +293,18 @@ Default access rights * - Setting - Use - * - :guilabel:`Can edit` + * - :guilabel:`Can Edit` - Allow all internal users to edit the article. - * - :guilabel:`Can read` + * - :guilabel:`Can Read` - Allow all internal users to read the article only. - * - :guilabel:`No access` - - Prevent all users from accessing the article in the sidebar tree or searching in the - command palette. + * - :guilabel:`Members only` + - Allow only members to access the article from the sidebar tree or by searching for it in + the command palette. .. _knowledge/articles_editing/visibility: -Visibility -********** +Show in workspace +***************** .. tabs:: @@ -301,8 +317,8 @@ Visibility - Use * - :guilabel:`Everyone` - The article is visible in the sidebar tree to all internal users. - * - :guilabel:`Members` - - The article is only visible in the sidebar tree to :ref:`invited users + * - :guilabel:`Members only` + - The article is only visible in the sidebar tree to :ref:`members `, while other users can find it using the hidden article search by pressing `CTRL` / `CMD` + `K` and typing `$`. @@ -319,7 +335,7 @@ Visibility Invite specific users ~~~~~~~~~~~~~~~~~~~~~ -To grant specific internal or portal users access to a private article or to share a +To grant specific internal or portal users access to a private nested article or to share a :guilabel:`Workspace` article with a portal user, follow these steps: #. Click :guilabel:`Share` in the top-right menu. @@ -332,8 +348,8 @@ To grant specific internal or portal users access to a private article or to sha Generate article URL ~~~~~~~~~~~~~~~~~~~~ -Click :guilabel:`Share` and activate the :guilabel:`Share to web` toggle to generate a URL. Click -:guilabel:`Copy Link` to copy the article's URL. +To generate a URL and share an article, click :guilabel:`Share` and activate the :guilabel:`Share to +web` toggle. Click :guilabel:`Copy Link` to copy the article's URL. .. note:: - If an article contains :ref:`inserted views `, users with @@ -350,8 +366,8 @@ Removing an article involves deleting or archiving it. Delete an article ~~~~~~~~~~~~~~~~~ -Select an article in the sidebar tree and click the :icon:`fa-ellipsis-v` (:guilabel:`ellipsis`) -icon, then :guilabel:`Send to Trash`. Alternatively, hold click the article and drag it to the +Select an article in the sidebar tree and click the :icon:`fa-ellipsis-v` (:guilabel:`More actions`) +icon, then :guilabel:`Send to Trash`. Alternatively, drag and drop the article under :guilabel:`Drop here to delete this article` at the bottom left corner. The article is moved to the trash for 30 days before being permanently deleted. @@ -380,11 +396,11 @@ Archive`. Retrieval --------- -Retrieving Knowledge articles consists of accessing them from various Odoo apps or restoring -previous versions. +Retrieving Knowledge articles consists of accessing them from Odoo apps or restoring previous +versions. -Access articles from various apps -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Access articles from Odoo apps +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Knowledge articles are accessible from the :ref:`form view ` of various apps. Click the :icon:`fa-bookmark` :guilabel:`(Knowledge)` icon in the top right corner to open @@ -399,8 +415,8 @@ Version history ~~~~~~~~~~~~~~~ To retrieve a previous version of an article, select it in the sidebar tree and click the -:icon:`fa-ellipsis-v` (:guilabel:`ellipsis`) icon, then the :icon:`fa-history` (:guilabel:`history`) -icon to open the version history. Select a version and click :guilabel:`Restore history`. +:icon:`fa-ellipsis-v` (:guilabel:`More actions`) icon, then :guilabel:`Open Version History`. +Select a version and click :guilabel:`Restore history`. .. note:: In the version history, the :guilabel:`Content` tab shows the selected version, while the @@ -412,17 +428,16 @@ icon to open the version history. Select a version and click :guilabel:`Restore Properties ========== -Properties are custom fields for storing and managing information that users with `Can edit` -:ref:`access rights ` can add to :ref:`nested articles -` or :ref:`article items +Properties are custom fields for storing and managing information that members can add to +:ref:`nested articles ` or :ref:`article items `. -To add a property, click the :icon:`fa-ellipsis-v` (:guilabel:`ellipsis`) icon, then +To add a property, click the :icon:`fa-ellipsis-v` (:guilabel:`More actions`) icon, then :menuselection:`Add Properties --> Add a Property`, enter a :guilabel:`Label`, and select a :guilabel:`Field Type`. -To learn more about properties and field types, go to :doc:`Property fields -`. +.. seealso:: + :doc:`/applications/essentials/property_fields` .. note:: - Click outside the property field window to save a property.