Jump to content

Generic Edit Framework GenericItemList Treating URLs undesirably


Go to solution Solved by softworkz,

Recommended Posts

Posted (edited)

4.9.1.90

I have a button in UI.cs defined such

        public GenericItemList ScheduledTaskLink { get; set; } = new GenericItemList
{
    new GenericListItem
    {
        PrimaryText   = "Configure Scheduled Task",
        SecondaryText = "Manage execution intervals and triggers for this plugin",
        HyperLink     = "#!/scheduledtasks"
    }

i set the hyperlink in  the View.cs with the worker id

When i hover over the GenericItemList i get

http://192.168.4.162:8096/web/index.html#!/scheduledtask?id=fdd2f33a4070897a6b3df1bb84b5c2aa (correct)

(i can copy that manually and paste into address bar, its all good)

but when i click i get something invalid with an extra index.html/

http://192.168.4.162:8096/web/index.html#!/index.html/scheduledtask?id=fdd2f33a4070897a6b3df1bb84b5c2aa

 

My goal is to have a nice looking button that takes me to the tasks config page, any ideas why the two controls (GenericItemList/GenericListitem and labelitem) are treated differently for the same hyperlink?

 

thanks

Edited by ginjaninja
Posted (edited)

This is a snippet from the configuration page response
 "ScheduledTaskLink": [
                {
                    "IconMode": "LargeInCircle",
                    "Status": "Unavailable",
                    "PrimaryText": "Configure Scheduled Task",
                    "SecondaryText": "Manage execution intervals and triggers for this plugin",
                    "ShowSecondaryFirst": false,
                    "HasPercentage": false,
                    "PercentComplete": 0,
                    "HyperLink": "#!/scheduledtask?id=fdd2f33a4070897a6b3df1bb84b5c2aa",
                    "HyperLinkTargetExternal": false
                }
            ],

this is google response helping me analyse the browser, got to be honest i dont know if slop or not
 

markdown
### Bug Report: GenericEdit GenericListItem HyperLink Path Corruption in emby-linkbutton / Page.js

#### Steps to Reproduce
1. Create a GenericListItem inside a GenericEdit panel config screen layout.
2. Supply a standard hash-bang route payload to the HyperLink property block.

#### Step 1: Raw JSON Payload Evidence (Network Tab Response)
The server code populates the item data layout correctly. The raw network transmission string is entirely clean:
"ScheduledTaskLink": [
    {
        "PrimaryText": "Configure Scheduled Task",
        "HyperLink": "#!/scheduledtask?id=fdd2f33a4070897a6b3df1bb84b5c2aa"
    }
]

#### Step 2: Rendered DOM State Evidence (Elements Tab)
The frontend framework successfully handles the property mapping and renders a standard HTML anchor extension structure:
<a is="emby-linkbutton" class="..." href="/web/index.html#!/scheduledtask?id=fdd2f33a4070897a6b3df1bb84b5c2aa" id="ScheduledTaskLink.listitem0">

#### Step 3: Click Navigation Mutation (The Bug Context)
When clicked, the emby-linkbutton component executes its click listener, bypassing native link processing and passing execution directly to the base Page.js instance:
`appRouter.handleAnchorClick = _page.default.handleAnchorClick`

Because the client application sits on the file path `/web/index.html`, Page.js parses the href against the window context and mistakenly treats `index.html` as an active directory path component folder rather than a file. It pushes an extra `index.html/` text segment straight into the active routing token address space:

 

FWIW i tried HyperLinkTargetExternal=true , just in case but it seems thats not available yet? devs are already aware?

 

Edited by ginjaninja
  • Solution
Posted
On 6/11/2026 at 12:54 PM, ginjaninja said:

"ScheduledTaskLink": [
                {
                    "IconMode": "LargeInCircle",
                    "Status": "Unavailable",
                    "PrimaryText": "Configure Scheduled Task",
                    "SecondaryText": "Manage execution intervals and triggers for this plugin",
                    "ShowSecondaryFirst": false,
                    "HasPercentage": false,
                    "PercentComplete": 0,
                    "HyperLink": "#!/scheduledtask?id=fdd2f33a4070897a6b3df1bb84b5c2aa",
                    "HyperLinkTargetExternal": false
                }
            ],

 

Use  "HyperLink": "/scheduledtask?id=fdd2f33a4070897a6b3df1bb84b5c2aa",

 

ginjaninja
Posted
10 minutes ago, softworkz said:

 

Use  "HyperLink": "/scheduledtask?id=fdd2f33a4070897a6b3df1bb84b5c2aa",

 

thank you - worked

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...