Apostrophe cms - inline editing of rich text in custom widgets?

别等时光非礼了梦想. 提交于 2019-12-20 07:07:00

问题


I can't make inline editing of rich text save back to the db in some cases.

Please bear with me, there will be some code pasted here, as it is the only way I can describe what I'm doing.

I have two kinds of custom widgets in my project - the ones where there is only one instance of the widget, typically defined like this in the lib\modules directory:

article-widgets
    - views
    -    - widget.html
    - index.js

And then the kind of widgets that are repeated, and can be used in several places around the site, typically defined like this:

employees
    - index.js
employees-widgets
    - views
    -    - widget.html

This one I can make work:

In the first kind I define a rich text are in article-widgets\index.js

{
    name: 'ingress',
    label: 'Ingress',
    type: 'area',
    required: true,
    options: {
        widgets: {
            'apostrophe-rich-text': {
                toolbar: ['Bold', 'Italic', 'Link', 'Unlink' ]
            }
        }
    }
}

And then in article-widgets\views\widget.html

{{ apos.singleton(data.widget, 'ingress', 'apostrophe-rich-text',{
    toolbar: [ 'Bold', 'Italic', 'Link', 'Unlink' ]
}) }}

This one is not working for me:

In the second type - I can edit inline, but changes are not saved.

In employees\index.js

{
    name: 'body',
    label: 'Beskrivelse',
    type: 'area',
    options: {
        widgets: {
            'apostrophe-rich-text': {
                toolbar: ['Bold', 'Italic', 'Link', 'Unlink']
            }
        }
    }
}

And then in employees-widgets\views\widget.html

{% for piece in data.widget._pieces %}
    <div>
        {{
            apos.singleton(piece, 'body', 'apostrophe-rich-text', {
                toolbar: [ 'Bold', 'Italic', 'Link', 'Unlink' ]
            })
        }}
    </div>
{% endfor %}

I can't understand why the later is not working. Am I doing something wrong - or is inline editing of repeated items not possible?


回答1:


One of Apostrophe's subtleties is that any property beginning with an underscore (_) (except _id) is not actually part of the parent object and changes don't go back to the database

These are properties attached for convenience by Apostrophe somewhere in the retrieval process.

I don't thinkg modifying the piece from the widget is something baked in by default (typically piece-widgets are single-serving views for content) but it is possible to set up custom backend functionality.

Not a total 1:1 of your issue but if you look at the comments and comments-widgets module in this (rough) example, you can see we're modifying the piece's content via the widget.

https://github.com/stuartromanek/apostrophe-comment-system/tree/master/lib/modules



来源:https://stackoverflow.com/questions/45884189/apostrophe-cms-inline-editing-of-rich-text-in-custom-widgets

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!