Relationship Popup not working in Studio (7.10.25)

I’m in a LTS installation and can’t seem to access relationships for any module in studio. I get the following:

I have reset al my permissions with no luck. I also found in console that there are some extra “//” in the HTML which if I remove in the browser I can click on the “add relationship” button and get to next screen.

Question: Is this just me, or should I add as bug on Github?

html

I wouldn’t say it’s a bug if it only happens in that particular installation. All it takes is a single wrong delimiter to get the screens to leak HTML like you’re seeing.

On your screenshot that part with the arrow seems correct to me (the delimiters are being escaped). The parts that seem wrong to me are these:

image

But you would need to find the file where those things are coming from, and it can be quite tricky…

Hey I found the solution to this problem!!! I’ve been avoiding it for a while but if anyone else has it, I rebuilt and repaired all the JS files, grouping files, etc. in Admin/repair.

That solved the problem.

2 Likes

Here is an add -

I had same exactly error issue, but clearing JS and setting perms didn’t do anything.
So next step (whenever I have a major system crash)

I started deleting Vardefs in the custom modules (Not in The the Extension folder) being in developer mode you can get instant results when modifying these folders e.g.

custom\modules<Module>\Ext\Vardefs\vardefs.ext.php

Through trial and error I narrowed it down to the User vardefs and then this specific Definition from a Google Authenticator plugin.

/*
$dictionary['User']['fields']['ht_remember_browser_name'] = array(
    'name' => 'ht_remember_browser_name',
    'vname' => 'LBL_HT_REMEMBER_BROWSER_NAME',
	'function' => 'getRegisteredDevices',
    'type' => 'multienum',
	'options' => 'getRegisteredDevices', 
    'studio' => 'hidden',
	'inline_edit' => false,
):
*/

I’m not sure why???
When def is gone I can get into relationship, when it is there I can’t.
Here is the utils function called in this def:

function getRegisteredDevices(){
$query = "SELECT ht_remember_browser_name FROM users WHERE id = ‘{$REQUEST[‘record’]}’";
$result = $GLOBALS[‘db’]->query($query, true);
$registeredDevices = array();
$registeredDevicesNames = array();
$registeredDevicesNames[’’] = ‘’;
$row = $GLOBALS[‘db’]->fetchByAssoc($result);
$registeredDevices = unencodeMultienum($row[‘ht_remember_browser_name’]);
foreach($registeredDevices as $key => $value){
$device_name = explode(’
’, $value);
$registeredDevicesNames[$value] = $device_name[1];
$GLOBALS[‘app_list_strings’][‘getRegisteredDevices’][$value] = $device_name[1];

	}
	echo "<link href='custom/include/select2/css/select2.css' rel='stylesheet' type='text/css'/>";
	return $registeredDevicesNames;
}

Any ideas why this would conflict this moduleLoadRelationship2()???

Does that vardef really end in a colon?

):

That doesn’t look right, it should be a semicolon ;

No wonder it breaks the PHP code.

It does Really have a Colon.
Great catch PGR, nice to have a fresh set of eyes.
I’ll make sure to let the owner of the plugin know so they can fix it on there end.

Cool.

@pstevens is your issue the same? Do you have the same plugin?

The installation that had the problem did indeed have a 2 factor id plugin that uses Google Authenticator. I did find that the problem came back, but I was able to flush the JS cache again and be able to get to the relationships. So flushing the cache was not a permanent fix. Sorry, should have come back and updated the thread.

I also noticed that when I turn off display_errors in Cpanel, this error no longer happens (at least not visibly) and I can create relationships.

I always recommend to leave display_errors off, it typically breaks things if it happens in the wrong place. Errors should just be traced in the logs.