Skip to content

Commit 7ceaa02

Browse files
committed
fix #490 make Documatic launcher class-specific
1 parent d422140 commit 7ceaa02

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

src/commands/serverActions.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,22 +59,25 @@ export async function serverActions(): Promise<void> {
5959
return;
6060
});
6161
}
62+
const file = currentFile();
63+
const classname = file && file.name.toLowerCase().endsWith(".cls") ? file.name.slice(0, -4) : "";
64+
const classnameEncoded = encodeURIComponent(classname);
6265
const connInfo = `${host}:${port}[${nsEncoded}]`;
6366
const serverUrl = `${https ? "https" : "http"}://${host}:${port}`;
6467
const portalUrl = `${serverUrl}/csp/sys/UtilHome.csp?$NAMESPACE=${nsEncoded}`;
65-
const classRef = `${serverUrl}/csp/documatic/%25CSP.Documatic.cls?LIBRARY=${nsEncoded}`;
68+
const classRef = `${serverUrl}/csp/documatic/%25CSP.Documatic.cls?LIBRARY=${nsEncoded}${
69+
classname ? "&CLASSNAME=" + classnameEncoded : ""
70+
}`;
6671
const iris = workspaceState.get(workspaceFolder + ":iris", false);
6772
const usernameEncoded = encodeURIComponent(username);
6873
const passwordEncoded = encodeURIComponent(password);
6974
const auth = iris
7075
? `&IRISUsername=${usernameEncoded}&IRISPassword=${passwordEncoded}`
7176
: `&CacheUserName=${usernameEncoded}&CachePassword=${passwordEncoded}`;
7277
let extraLinks = 0;
73-
const file = currentFile();
74-
const classname = file && file.name.match(/cls$/i) ? file.name : "";
7578
for (const title in links) {
7679
let link = String(links[title]);
77-
if (classname == "" && link.includes("${classname}")) {
80+
if (classname == "" && (link.includes("${classname}") || link.includes("${classnameEncoded}"))) {
7881
continue;
7982
}
8083
link = link
@@ -84,7 +87,8 @@ export async function serverActions(): Promise<void> {
8487
.replace("${serverAuth}", auth)
8588
.replace("${ns}", nsEncoded)
8689
.replace("${namespace}", ns == "%SYS" ? "sys" : nsEncoded.toLowerCase())
87-
.replace("${classname}", classname);
90+
.replace("${classname}", classname)
91+
.replace("${classnameEncoded}", classnameEncoded);
8892
actions.push({
8993
id: "extraLink" + extraLinks++,
9094
label: title,
@@ -99,14 +103,14 @@ export async function serverActions(): Promise<void> {
99103
});
100104
}
101105
actions.push({
102-
detail: portalUrl,
103106
id: "openPortal",
104107
label: "Open Management Portal",
108+
detail: portalUrl,
105109
});
106110
actions.push({
107-
detail: classRef,
108111
id: "openClassReference",
109-
label: "Open Class Reference",
112+
label: "Open Class Reference" + (classname ? ` for ${classname}` : ""),
113+
detail: classRef,
110114
});
111115
if (
112116
!vscode.window.activeTextEditor ||

0 commit comments

Comments
 (0)