5cff98cffaac2ec822a4489660df20959a48912e max Fri Sep 18 09:34:37 2026 -0700 hgSession: name tooltip's URL example was swallowing "<sessionName>" #Preview2 week - bugs introduced now will need a build patch to fix refs #38311 diff --git src/hg/js/hgSession.js src/hg/js/hgSession.js index 5709080017a..537151601a4 100644 --- src/hg/js/hgSession.js +++ src/hg/js/hgSession.js @@ -671,34 +671,36 @@ function sessSaveCardHtml(C) { if (!C.loggedIn) { return ''; } // Assembly and position separated by a colon (e.g. "hg38: chr7:1-1,000"); assembly is already // the accession for hubs (trackHubSkipHubName on the server). var loc = ''; if (C.db && C.position) { loc = sessEnc(C.db) + ': ' + sessEnc(C.position); } else if (C.db) { loc = sessEnc(C.db); } else if (C.position) { loc = sessEnc(C.position); } if (loc && C.trackCount) { loc += ', ' + sessNum(C.trackCount) + ' track' + (C.trackCount === 1 ? '' : 's') + ' shown'; } var what = loc ? '<span class="sessSaveWhat">' + loc + '</span>' : ''; // Ghost text for the name field is a real generated name, not an explanation of the feature - // the info bubble already says what it is. var randName = sessEnc(sessRandomShareName()); + // "[sessionName]", not "<sessionName>": the tooltip is inserted via innerHTML (addMouseover in + // utils.js), so a literal "<...>" is parsed as an (invisible) tag instead of shown as text. var nameTip = 'Optional. Leave this blank and your session will be saved under an ' + 'automatically generated random name, like the one shown here. The session name ' + 'becomes part of the session’s URL, e.g. https://genome.ucsc.edu/s/' + - sessEnc(C.userName) + '/<sessionName>.'; + sessEnc(C.userName) + '/[sessionName].'; var descTip = 'Shown when the session is loaded, in the table below on mouseover, and in ' + 'the Public Sessions gallery if this session is made public.'; return '<div class="sessSaveCard">' + '<div class="sessSaveHead"><span class="sessSaveTitle">' + 'Save the current view as a stable session link</span>' + what + '</div>' + '<div class="sessSaveRow">' + '<div class="sessSaveField">' + '<input id="sessSaveName" class="sessSaveInput" type="text" maxlength="255" ' + 'placeholder="Session name, default ' + randName + '">' + '<span class="sessInfo" title="' + nameTip + '">ⓘ</span></div>' + '<label class="sessSaveCheck"><input type="checkbox" id="sessSavePrivate"> ' + 'Private: Session can only be loaded by myself</label>' + '<button type="button" class="gbPill primary" id="sessSaveBtn" ' + 'title="Save your current browser view as a named session">Save session</button>' + '</div>' +