- golem15.seo.issues (Site audit): current issues errors first, labels, summary and fix columns, filters, P7 issue_details, Check this address again, Ignore, Stop ignoring, bulk Ignore, ignored rows badged - golem15.seo.crawls (Crawls): newest first, P6 crawl_summary with one status callout, staging and rendered-comparison lines, stats strip and per-kind table; Cancel; a running crawl refuses delete - Start crawl toolbar action on both, refusing already_running and no_site_url; navigation Site audit (gauge) and Crawls (globe) - routes and MCP tools start/cancel/list/get/delete crawls, list_issues with filters (open by default), recheck_url, ignore and unignore - AdminOperations maps both controllers; toolbar actions get their own operation kind - TestCrawlAdmin, TestCrawlTools, TestIssueKindLabels
88 lines
2.6 KiB
Go
88 lines
2.6 KiB
Go
package seo
|
|
|
|
import (
|
|
"git.golem15.com/golem15/sm-seo-plugin/controllers"
|
|
"git.golem15.com/golem15/summercms/modules/pact"
|
|
)
|
|
|
|
// Navigation registers the SEO main item (UI-SPEC C2) behind
|
|
// golem15.seo.manage. It lands on Redirects; each side-menu entry is added
|
|
// when its controller exists, in the C2 order.
|
|
func (*Plugin) Navigation() []pact.NavigationItem {
|
|
return []pact.NavigationItem{{
|
|
Code: "seo",
|
|
Label: "golem15.seo::lang.nav.seo",
|
|
Icon: "search",
|
|
Permissions: []string{controllers.PermissionManage},
|
|
Order: 600,
|
|
Controller: controllers.RedirectsControllerID,
|
|
SideMenu: []pact.NavigationItem{
|
|
{
|
|
Code: "redirects",
|
|
Label: "golem15.seo::lang.nav.redirects",
|
|
Icon: "arrow-right",
|
|
Permissions: []string{controllers.PermissionManage},
|
|
Controller: controllers.RedirectsControllerID,
|
|
},
|
|
{
|
|
Code: "notfound",
|
|
Label: "golem15.seo::lang.nav.notfound",
|
|
Icon: "triangle-alert",
|
|
Permissions: []string{controllers.PermissionManage},
|
|
Controller: controllers.NotFoundControllerID,
|
|
},
|
|
{
|
|
Code: "rules",
|
|
Label: "golem15.seo::lang.nav.rules",
|
|
Icon: "link",
|
|
Permissions: []string{controllers.PermissionManage},
|
|
Controller: controllers.RulesControllerID,
|
|
},
|
|
{
|
|
Code: "pages",
|
|
Label: "golem15.seo::lang.nav.pages",
|
|
Icon: "files",
|
|
Permissions: []string{controllers.PermissionManage},
|
|
Controller: controllers.PagesControllerID,
|
|
},
|
|
{
|
|
Code: "audit",
|
|
Label: "golem15.seo::lang.nav.audit",
|
|
Icon: "gauge",
|
|
Permissions: []string{controllers.PermissionManage},
|
|
Controller: controllers.IssuesControllerID,
|
|
},
|
|
{
|
|
Code: "crawls",
|
|
Label: "golem15.seo::lang.nav.crawls",
|
|
Icon: "globe",
|
|
Permissions: []string{controllers.PermissionManage},
|
|
Controller: controllers.CrawlsControllerID,
|
|
},
|
|
{
|
|
Code: "robots",
|
|
Label: "golem15.seo::lang.nav.robots",
|
|
Icon: "file-text",
|
|
Permissions: []string{controllers.PermissionManage},
|
|
Controller: controllers.RobotsControllerID,
|
|
},
|
|
{
|
|
Code: "history",
|
|
Label: "golem15.seo::lang.nav.history",
|
|
Icon: "clock",
|
|
Permissions: []string{controllers.PermissionManage},
|
|
Controller: controllers.HistoryControllerID,
|
|
},
|
|
{
|
|
Code: "transfer",
|
|
Label: "golem15.seo::lang.nav.transfer",
|
|
Icon: "download",
|
|
Permissions: []string{controllers.PermissionManage},
|
|
Controller: controllers.TransferControllerID,
|
|
},
|
|
},
|
|
}}
|
|
}
|
|
|
|
var _ pact.HasNavigation = (*Plugin)(nil)
|