feat: auto-links screen, keyphrase feed and MCP tools

- SEO › Auto-links (golem15.seo.autolinks, after Pages): list by phrase
  with locale, origin and active filters, the disabled row state, the
  form with its refusals, history through a field-less extension
- toolbar Add focus keyphrases (from_keyphrases) and
  POST /autolinks/from-keyphrases
- GET/POST /autolinks, PUT /autolinks/{id}, DELETE /autolinks and the
  tools seo_list_autolinks, seo_create_autolink, seo_update_autolink,
  seo_delete_autolinks, seo_autolinks_from_keyphrases
- the settings tile description and the permission comment name
  auto-links and the site audit
This commit is contained in:
Jakub Zych
2026-11-04 16:30:56 +01:00
parent 6203aec2bc
commit ab4e83416d
19 changed files with 852 additions and 13 deletions

View File

@@ -0,0 +1,16 @@
# Auto-links filters (UI-SPEC C22): locale, origin and active only.
scopes:
locale:
label: golem15.seo::lang.autolinks.locale
modelClass: Golem15\SEO\Models\Autolink
nameFrom: locale
scope: FilterAutolinkLocale
origin:
label: golem15.seo::lang.autolinks.origin
modelClass: Golem15\SEO\Models\Autolink
nameFrom: origin
scope: FilterAutolinkOrigin
active:
label: golem15.seo::lang.autolinks.filter_active
type: switch
column: enabled

View File

@@ -0,0 +1,18 @@
# Auto-link form (UI-SPEC C22).
name: golem15.seo::lang.autolinks.name
form: ~/plugins/golem15/seo/models/autolink/fields.yaml
modelClass: Golem15\SEO\Models\Autolink
defaultRedirect: golem15/seo/autolinks
create:
redirect: golem15/seo/autolinks/update/:id
redirectClose: golem15/seo/autolinks
update:
redirect: golem15/seo/autolinks
redirectClose: golem15/seo/autolinks
messages:
create: golem15.seo::lang.autolinks.new
update: golem15.seo::lang.autolinks.name
deleteConfirm: golem15.seo::lang.autolinks.delete_confirm

View File

@@ -0,0 +1,26 @@
# Auto-links list (UI-SPEC C22): the phrases by phrase; the toolbar
# creates, deletes and adds the records' focus keyphrases.
list: ~/plugins/golem15/seo/models/autolink/columns.yaml
modelClass: Golem15\SEO\Models\Autolink
title: golem15.seo::lang.autolinks.list_title
recordUrl: golem15/seo/autolinks/update/:id
noRecordsMessage: golem15.seo::lang.autolinks.list_empty
recordsPerPage: 50
showCheckboxes: true
showSetup: true
filter: config_filter.yaml
defaultSort:
column: phrase
direction: asc
toolbar:
buttons: [create, delete, from_keyphrases]
search:
prompt: backend::lang.list.search_prompt
messages:
create: golem15.seo::lang.autolinks.new
empty: golem15.seo::lang.autolinks.list_empty
deleteConfirm: golem15.seo::lang.autolinks.delete_selected_confirm
rowStateDisabled: golem15.seo::lang.autolinks.state_off