Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions setup/web_widget_html_markdown/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import setuptools

setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)
113 changes: 113 additions & 0 deletions web_widget_html_markdown/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
========================
Web Widget Html Markdown
========================

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
:target: https://github.com/OCA/web/tree/14/web_widget_html_markdown
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/web-14/web-14-web_widget_html_markdown
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/162/14
:alt: Try me on Runbot

|badge1| |badge2| |badge3| |badge4| |badge5|

Behaviour of the module and best practices
==========================================

This module implements a Markdown editor on Html fields, in contrast to web_widget_text_markdown, which implements it on Text fields. In readonly mode, the widget displays HTML, but when editing, the widget offers you an option to edit in Markdown or in HTML. If you edit markdown, it will save as the rendered HTML, but with the source Markdown embedded inside a <script> tag. When editing again, it will show you the Markdown source. If you edit HTML, you will lose the Markdown and the content will just behave as a regular HTML field with an HTML widget.

Utility of this module vs web_widget_text_markdown
==================================================
The benefit of this module over web_widget_text_html is that it allows markdown-editing of HTML fields such as for example the mail.message body for the chatter, or HTML fields that end up in printed reports such as the Quotation description. Such fields cannot be converted to Text fields because it will cause problems for their functionality. But with this widget, they can still be edited as Markdown.

A difficulty with this module is that once you start editing a field as HTML, whether with this Markdown widget in HTML mode, or through a view that has the normal HTML editor, you will lose the Markdown source and you will have to keep editing the field as HTML, or do a backconversion to Markdown. This backconversion is always lossy to a certain extent and we did not bother implementing it - but it's something for the roadmap.

**Table of contents**

.. contents::
:local:

Usage
=====

Your XML form view definition should contain:

```
<field name="field_name" widget="html_markdown"/>
```

This will replace the default Html widget with the new Markdown/HTML widget and
allow the field to be edited as Markdown or HTML, depending on the user's choice.

#### Options
- default_markdown_on_new : if true when creating a new record, markdown will
be selected by default.
- only_markdown_on_new : if true when creating a new record, only markdown
will be present on radiobutton.

Known issues / Roadmap
======================

* Implement conversion from HTML to Markdown, either through a JS or a Python module, instead of not allowing it, or allowing it only after HTML is emptied.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/web/issues/new?body=module:%20web_widget_html_markdown%0Aversion:%2014%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
~~~~~~~

* Giovanni Francesco Capalbo
* Therp B.V.

Contributors
~~~~~~~~~~~~

* Tom Blauwendraat <tom@sunflowerweb.nl>
* Kevin Kamau <kevin@sunflowerweb.nl>
* Giovanni Francesco Capalbo <giovanni@therp.nl>

Other credits
~~~~~~~~~~~~~

* Therp B.V. <https://therp.nl>

Maintainers
~~~~~~~~~~~

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/web <https://github.com/OCA/web/tree/14/web_widget_html_markdown>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions web_widget_html_markdown/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
24 changes: 24 additions & 0 deletions web_widget_html_markdown/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright 2022 Therp B.V. - <http:///therp.nl>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Web Widget Html Markdown",
"version": "14.0.1.0.0",
"author": "Giovanni Francesco Capalbo, Therp B.V. , "
"Odoo Community Association (OCA)",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont think your name should be here, and the others are just from the text_html module. Just put Therp and OCA only.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

"category": "Web",
"license": "AGPL-3",
"website": "https://github.com/OCA/web",
"summary": "Widget for Html fields that adds markdown Html undirectional editor",
"depends": [
"web",
"web_editor",
],
"demo": ["demo/bootstrap_markdown.xml"],
"data": ["views/assets.xml"],
"qweb": [
"static/src/xml/radio_info.xml",
],
"installable": True,
"auto_install": False,
"application": False,
}
12 changes: 12 additions & 0 deletions web_widget_html_markdown/demo/bootstrap_markdown.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_groups_form_inherited" model="ir.ui.view">
<field name="model">res.groups</field>
<field name="inherit_id" ref="base.view_groups_form" />
<field name="arch" type="xml">
<field name="comment" position="attributes">
<attribute name="widget">html_markdown</attribute>
</field>
</field>
</record>
</odoo>
3 changes: 3 additions & 0 deletions web_widget_html_markdown/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
* Tom Blauwendraat <tom@sunflowerweb.nl>
* Kevin Kamau <kevin@sunflowerweb.nl>
* Giovanni Francesco Capalbo <giovanni@therp.nl>
1 change: 1 addition & 0 deletions web_widget_html_markdown/readme/CREDITS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* Therp B.V. <https://therp.nl>
11 changes: 11 additions & 0 deletions web_widget_html_markdown/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Behaviour of the module and best practices
==========================================

This module implements a Markdown editor on Html fields, in contrast to web_widget_text_markdown, which implements it on Text fields. In readonly mode, the widget displays HTML, but when editing, the widget offers you an option to edit in Markdown or in HTML. If you edit markdown, it will save as the rendered HTML, but with the source Markdown embedded inside a <script> tag. When editing again, it will show you the Markdown source. If you edit HTML, you will lose the Markdown and the content will just behave as a regular HTML field with an HTML widget.

Utility of this module vs web_widget_text_markdown
==================================================
The benefit of this module over web_widget_text_html is that it allows markdown-editing of HTML fields such as for example the mail.message body for the chatter, or HTML fields that end up in printed reports such as the Quotation description. Such fields cannot be converted to Text fields because it will cause problems for their functionality. But with this widget, they can still be edited as Markdown.

A difficulty with this module is that once you start editing a field as HTML, whether with this Markdown widget in HTML mode, or through a view that has the normal HTML editor, you will lose the Markdown source and you will have to keep editing the field as HTML, or do a backconversion to Markdown. This backconversion is always lossy to a certain extent and we did not bother implementing it - but it's something for the roadmap.
.
1 change: 1 addition & 0 deletions web_widget_html_markdown/readme/ROADMAP.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* Implement conversion from HTML to Markdown, either through a JS or a Python module, instead of not allowing it, or allowing it only after HTML is emptied.
26 changes: 26 additions & 0 deletions web_widget_html_markdown/readme/USAGE.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Your XML form view definition should contain:

...
<field name="field_name" widget="html_markdown"/>
...

This will replace the default Html widget with the new Markdown/HTML widget and
allow the field to be edited as Markdown or HTML, depending on the user's choice.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This part is good, and then below we can explain the new options that will be added.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.


#### Options
- default_markdown_on_new : if true when creating a new record, markdown will
be selected by default.
- only_markdown_on_new : if true when creating a new record, only markdown
will be present on radiobutton.

example

´´´
<field name="description"
widget="html_markdown"
options="{'only_markdown_on_new' : 1,
'default_markdown_on_new':1}"/>
´´´

will offer only markdown on new records , very useful for exqmple in mail threads,
if we want to have markdown only threads.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading