-
Notifications
You must be signed in to change notification settings - Fork 0
/
_menu.js
167 lines (149 loc) · 5.91 KB
/
_menu.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
function onOpen(e) {
let targetMenuString, kerkoValidationSite, zoteroItemKeyAction, zoteroCollectionKeyAction, opendevedUser = false;
// https://developers.google.com/workspace/add-ons/concepts/editor-auth-lifecycle#the_complete_lifecycle
let targetRefLinks;
const activeUser = Session.getEffectiveUser().getEmail();
opendevedUser = getStyleValue('local_show_advanced_menu');
if (e && e.authMode == ScriptApp.AuthMode.NONE) {
targetMenuString = 'Toggle target';
kerkoValidationSite = '<Enter validation site>';
zoteroItemKeyAction = 'Add/change';
zoteroCollectionKeyAction = 'Add/change';
targetRefLinks = 'zotero';
} else {
kerkoValidationSite = getDocumentPropertyString('kerko_validation_site');
if (kerkoValidationSite == null) {
if (activeUser.search(/edtechhub.org/i) != -1) {
kerkoValidationSite = 'https://docs.edtechhub.org/lib/';
} else if (opendevedUser) {
kerkoValidationSite = 'https://docs.opendeved.net/lib/';
} else {
kerkoValidationSite = '<Enter validation site>';
}
}
targetRefLinks = getDocumentPropertyString('target_ref_links');
if (targetRefLinks == 'kerko') {
targetMenuString = 'Toggle target (current: Kerko)';
} else {
targetMenuString = 'Toggle target (current: Zotero)';
targetRefLinks = 'zotero';
}
let currentZoteroCollectionKey = getDocumentPropertyString('zotero_collection_key');
zoteroCollectionKeyAction = currentZoteroCollectionKey == null ? 'Add' : 'Change';
let currentZoteroItemKey = getDocumentPropertyString('zotero_item');
zoteroItemKeyAction = currentZoteroItemKey == null ? 'Add' : 'Change';
}
const ui = getUi();
const menu = ui.createMenu('bZotero');
const where = ' via ' + targetRefLinks;
const whereForest = targetRefLinks == 'kerko' ? ' via Forest API' : ' via zotero';
menu.addItem('Insert/update bibliography', 'insertUpdateBibliography');
menu.addItem('Bibliography sidebar [experimental]', 'bibliographySidebar');
menu.addSeparator();
menu.addItem('Author (Year) ↔ Author, Year', 'modifyLinkParenthesis')
menu.addItem('Update/validate document links' + whereForest, 'validateLinks');
menu.addItem('Clear validation markers', 'clearLinkMarkers');
menu.addItem('Remove underlines from hyperlinks', 'removeUnderlineFromHyperlinks');
menu.addSeparator();
menu.addSubMenu(ui.createMenu('Configure and publish')
.addItem('Prepare for publishing', 'prepareForPublishing')
.addSeparator()
.addItem(zoteroItemKeyAction + ' Zotero item key for this doc', 'addZoteroItemKey')
.addItem(zoteroCollectionKeyAction + ' Zotero collection key for this doc', 'addZoteroCollectionKey')
.addSeparator()
.addItem(targetMenuString, 'targetReferenceLinks')
.addItem('Remove openin=zoteroapp from hyperlinks', 'removeOpeninZoteroapp')
.addSeparator()
.addItem('Enter validation site', 'enterValidationSite')
);
menu.addSubMenu(ui.createMenu('Additional functions')
.addItem('Analyse Kerko links', 'analyseKerkoLinks')
.addItem('Analyse Kerko links V1', 'analyseKerkoLinksV1')
.addItem('Update/validate document links' + where + ' V1', 'validateLinksV1')
.addItem('Show item keys', 'showItemKeys')
.addItem('Show links & urls', 'validateLinksTestHelper')
.addSeparator()
.addItem('Convert ZoteroTransfer markers to bZotero', 'zoteroTransferDoc')
.addSeparator()
.addItem('Remove country markers (⇡Country: )', 'removeCountryMarkers')
.addSeparator()
.addItem('Convert to numbered references (\'Vancouver\')', 'applyVancouverStyle')
.addItem('Convert to text references (\'APA7\')', 'applyAPA7Style')
// Remove for now:
//.addItem('znocountry highlight missing country info', 'highlightMissingCountryMarker')
// Remove for now
// .addItem('zsuper make superscripts for citations', 'makeSuperscriptsForCitations')
);
menu.addSeparator()
.addSubMenu(ui.createMenu('Text citation functions')
.addItem('zpack Turn Zotero text citations into links', 'packZoteroCall')
.addItem('zunpack Turn Zotero links into text', 'unpackCombined')
.addSeparator()
.addItem('zpacks Turn selected Zotero text citations into links', 'packZoteroSelectiveCall')
.addItem('zunpackWarning Turn Zotero links into text, with warnings where citation text has changed', 'unpackCombinedWarning')
.addSeparator()
.addSubMenu(ui.createMenu('Format text citations')
.addItem('zminify - with small text', 'minifyCitations')
.addItem('zmaxify - with coloured text', 'maxifyCitations')
.addItem('zunfy - plain text', 'unfyCitations')
.addSeparator()
// clearWarningMarkers is new version of clearZwarnings
.addItem('zclear warnings 《warning:...》and ❲ and ❳', 'clearWarningMarkers')
)
)
menu.addToUi();
}
function minifyCitations() {
if (HOST_APP == 'docs') {
minifyCitationsDocs();
} else {
packZoteroSlides('minifyCitations');
}
};
function maxifyCitations() {
if (HOST_APP == 'docs') {
maxifyCitationsDocs();
} else {
packZoteroSlides('maxifyCitations');
}
};
function unfyCitations() {
if (HOST_APP == 'docs') {
unfyCitationsDocs();
} else {
packZoteroSlides('unfyCitations');
}
};
function unpackCombined() {
if (HOST_APP == 'docs') {
restoreZoteroLinks();
zoteroUnpackCall(false);
} else {
unpackZoteroSlides(false);
}
};
function unpackCombinedWarning() {
if (HOST_APP == 'docs') {
restoreZoteroLinks();
zoteroUnpackCall(true);
} else {
unpackZoteroSlides(true);
}
};
function packZoteroCall() {
if (HOST_APP == 'docs') {
zoteroPackUnpack(true, false, null);
} else {
packZoteroSlides('packZotero');
}
};
function zoteroUnpackCall(warning) {
zoteroPackUnpack(false, false, warning);
};
function packZoteroSelectiveCall() {
if (HOST_APP == 'docs') {
zoteroPackUnpack(true, true, null);
} else {
packZoteroSelectiveCallSlides();
}
};