5872e3a9d5f3d2916bbf10f359011b9d04fc3b93
max
Wed Aug 26 03:18:39 2026 -0700
Revert "Share a link: create the session only when the user asks, and copy in one click"
This reverts commit 3f97b357c59. The change was work in progress and was
committed by mistake; web.c still has the matching data-shortlink part
uncommitted, so this half does not stand on its own. The genark syncFtp commit
that went out with it is fine and stays.
diff --git src/hg/js/hgSession.js src/hg/js/hgSession.js
index 1cba1a3abdd..a1dda41235a 100644
--- src/hg/js/hgSession.js
+++ src/hg/js/hgSession.js
@@ -35,40 +35,39 @@
var sessData = null; // set in sessionBuild: {config, sessions}
var sessDt = null; // the DataTable API
var sessSelectMode = false; // bulk-select (checkbox column) shown?
function sessEnc(s) {
// HTML-escape via the shared utils.js helper (escapes quotes too, so it is attribute-safe).
return (typeof htmlEncode === 'function') ? htmlEncode(String(s == null ? '' : s)) : String(s);
}
function sessNum(n) {
return (typeof commify === 'function') ? commify(n) : String(n);
}
function sessRandomShareName() {
- // Auto-name convention for machine-generated session names: a leading "_" (which marks the name
- // as internally generated, and is kept verbatim by the short-link encoder) followed by 8 URL-safe
- // alphanumeric chars. This is the single source of the convention: the top-right "Share a link"
- // menu (topLinks.js) and hgSession.c both defer to a name generated here.
+ // Mirror the server's auto/anonymous share-name convention ("share_" + 8 URL-safe alphanumeric
+ // chars). hgSession.c's doSaveSessionJson generates the same style server-side for the top-right
+ // "Share a link"; we generate it here so the confirm dialog can show the name before saving.
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var s = '';
for (var i = 0; i < 8; i++) {
s += chars.charAt(Math.floor(Math.random() * chars.length));
}
- return '_' + s;
+ return 'share_' + s;
}
function sessMbpPos(pos) {
// Shorten a position to megabases to save horizontal space:
// "chr7:155799529-155812871" -> "chr7:155.80-155.81 Mbp". Falls back to the raw string
// if it doesn't parse.
var m = /^(.+):([0-9,]+)-([0-9,]+)$/.exec(String(pos));
if (!m) { return String(pos); }
var s = parseInt(m[2].replace(/,/g, ''), 10);
var e = parseInt(m[3].replace(/,/g, ''), 10);
if (isNaN(s) || isNaN(e)) { return String(pos); }
return m[1] + ':' + (s / 1e6).toFixed(2) + '-' + (e / 1e6).toFixed(2) + ' Mbp';
}
function sessMsg(text, cls) {
@@ -421,31 +420,31 @@
}
// Build the base params for an action on a given session (decoded name; the CGI re-encodes it).
function sessActParams(action, row) {
var p = {};
p[action] = '1';
p[SESS_P.oldName] = row.name;
return p;
}
// ---- Save current view ---------------------------------------------------
function sessDoSave() {
var name = document.getElementById('sessSaveName').value.trim();
if (!name) {
- // Empty name: offer to save under a random internal "_XXXXXXXX" name, after
+ // Empty name: offer to save under a server-style random "share_XXXXXXXX" name, after
// confirming the user really meant to leave it blank.
var rand = sessRandomShareName();
sessConfirm({
title: 'Save without a name?',
bodyHtml: 'You left the session name empty. Your session will be saved under the ' +
'randomly generated name ' + sessEnc(rand) + '.
You can also create ' +
'these quick share links any time from the Share a link option at the top ' +
'right of every Genome Browser page.',
okLabel: 'Save session',
onOk: function() { sessModalClose(); sessDoSaveWithName(rand); }
});
return;
}
sessDoSaveWithName(name);
}