修改可发布的xpi的插件包
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
/**
|
||||
* Open Zotero's built-in Select Items dialog and return chosen library items.
|
||||
*/
|
||||
export async function pickLibraryItems(options?: {
|
||||
multiSelect?: boolean;
|
||||
}): Promise<Zotero.Item[]> {
|
||||
const multiSelect = options?.multiSelect !== false;
|
||||
const mainWin = Zotero.getMainWindow?.() as
|
||||
| (Window & { openDialog?: (...args: any[]) => Window | null })
|
||||
| undefined;
|
||||
if (!mainWin?.openDialog) {
|
||||
throw new Error("无法打开文献选择窗口");
|
||||
}
|
||||
|
||||
const io: {
|
||||
multiSelect: boolean;
|
||||
onlyRegularItems: boolean;
|
||||
dataOut: number[] | null;
|
||||
itemTreeID: string;
|
||||
} = {
|
||||
multiSelect,
|
||||
onlyRegularItems: true,
|
||||
dataOut: null,
|
||||
itemTreeID: "chatpapers-select-items",
|
||||
};
|
||||
|
||||
const urls = [
|
||||
"chrome://zotero/content/selectItemsDialog.xhtml",
|
||||
"chrome://zotero/content/selectItemsDialog.xul",
|
||||
];
|
||||
|
||||
let opened = false;
|
||||
for (const url of urls) {
|
||||
try {
|
||||
mainWin.openDialog(
|
||||
url,
|
||||
"chatpapers-select-items-dialog",
|
||||
"chrome,modal,centerscreen,resizable=yes",
|
||||
io,
|
||||
);
|
||||
opened = true;
|
||||
break;
|
||||
} catch (e) {
|
||||
ztoolkit.log("pickLibraryItems openDialog failed", url, e);
|
||||
}
|
||||
}
|
||||
|
||||
if (!opened) {
|
||||
throw new Error("当前 Zotero 版本无法打开文献选择对话框");
|
||||
}
|
||||
|
||||
const ids = Array.isArray(io.dataOut) ? io.dataOut : [];
|
||||
if (!ids.length) return [];
|
||||
|
||||
return (Zotero.Items.get(ids).filter(Boolean) as Zotero.Item[]) || [];
|
||||
}
|
||||
Reference in New Issue
Block a user