Editor Plugin Development
- Editor Configuration
Panel > Operations > Publish
Editor Logic
Global Permissions
The function of publishing the settings of the configuration page is given the first priority.
Panel > Operations > Publish
Role Permissions
Role permission is given the second priority.
Panel > Operations > Roles
Upload Permissions
Storage setting is given the third priority.
Panel > Systems > Storage
Explanation
- First layer: the global configuration applies to all roles. When a specific condition is enabled, all roles need to meet the condition before publishing account e-mail or mobile phone binding, special rules, etc., excluding whitelist roles configured in such two key names as
post_limit_whitelist
and comment_limit_whitelist. - Second layer: when no condition is enabled for configuration publishing (or the conditions for publishing configuration are met), identify the primary role. If the permission of the primary role is enabled, members of the role need to meet the condition before publishing permissions and special rules.
- Note: if the primary role has an expiration time and has expired, permissions of the role should be inherited. If there is no inherited role (or the inherited ID could not find its role), the role permissions of the
default_role
key name and key value in the configuration table shall prevail. If the key value of the configuration table is null (or the role could not be found), the process shall be handled as no permissions are granted.
- Note: if the primary role has an expiration time and has expired, permissions of the role should be inherited. If there is no inherited role (or the inherited ID could not find its role), the role permissions of the
- Third layer: when the role has not set upload parameters (e.g., whether upload is permitted; the size of uploaded parameters, and upload time), the settings saved by the system shall prevail. If the role has set upload parameters, the role permission shall prevail.
Editor Permissions
According to the method encapsulated in the description of the above three layers of logic, publishing permission can be obtained based on the user and type.
php
ConfigUtility::getPublishConfigByType($userId, $type, $langTag, $timezone);
Parameter Name | Type | Required | Description |
---|---|---|---|
userId | Number | required | users->id |
type | String | required | post or comment |
langTag | String | optional | If empty, the database language is used. |
timezone | String | optional | If empty, the default time zone is used. |
Editor Function Flow
- Obtain configuration parameter
GET
/api/fresns/v1/editor/{type}/configs
to identify permission and render the editor
editor
parameter rendering editorpublish
parameter identifying and publishing permissioneditPerm
parameter identifying and editing permission
- Obtain configuration parameter
- Request for
GET
/api/fresns/v1/editor/{type}/drafts
interface to obtain the draft list
- 2.1 When the draft list is empty, request for
POST
/api/fresns/v1/editor/{type}/draft
to create the draft automatically - 2.2 If there is a draft, pop up the selection layer.
Select draft
request forGET
/api/fresns/v1/editor/{type}/draft/{did}
to load the content of the draftCreate a draft
request forPOST
/api/fresns/v1/editor/{type}/draft
to create a new draft
- Request for
- The editor updates the logic with
PATCH
/api/fresns/v1/editor/{type}/draft/{did}
interface in a real-time manner
- 3.1 When a group is selected (or changed), trigger update;
- 3.2 When images are uploaded (or deleted), trigger update;
- 3.3 When videos are uploaded (or deleted), trigger update;
- 3.4 When audios are uploaded (or deleted), trigger update;
- 3.5 When files are uploaded (or deleted), trigger update;
- 3.6 When anonymity is selected (or canceled), trigger update;
- 3.7 When “location” is obtained in the parameter returned by the call-back interface (or the location is deleted from the editor), trigger update;
- 3.8 When “comment with button configuration” is obtained in the parameter returned by the call-back interface (or the comment setting is deleted from the editor), trigger update;
- 3.9 When “read permission configuration” is obtained in the parameter returned by the call-back interface (or read permission is deleted from the editor), trigger update;
- 3.10 When “specific member list configuration” is obtained in the parameter returned by the call-back interface (or specific member list configuration is deleted from the editor), trigger update;
- 3.11 When “location” (or the location is deleted from the editor)is obtained in the parameter returned by the call-back interface, trigger update;
- 3.12 Inputting the title and content would not trigger the update. The editor would update the title and content once every 10 seconds.
- The editor updates the logic with
- Click to publish
- 4.1 If content triggers a reviewed, the user will be prompted that the content has been submitted for review (API return
code=38200
) and will be published successfully after the review is passed. - 4.2 Everything is normal, then the publication is successful.
Content Rules
- Mention(At): preceded by
@
and ended with a space. - Hashtag(Topic): based on the configured editor.toolbar.hashtag.format. If the value is 1, the topic should be preceded by
#
and ended with a space; if the value is 2, the topic should be preceded by#
and ended with#
. there could be a single space. - Sticker(Emoji): preceded by
[
and ended with]
, with no space between[
and]
.