Skip to content

Commit a30dc24

Browse files
authored
Merge pull request #7 from AtlasSystems/develop
Develop
2 parents eb8b0d6 + beecfb0 commit a30dc24

3 files changed

Lines changed: 232 additions & 15 deletions

File tree

Aeon-ArchivesSpace-Addon/Aeon-ArchivesSpace.lua

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ local performedAutoSearch = false;
4747
local transactionNumber = 0;
4848

4949
local archiveSpaceAddonScript = [[
50+
if (!("atlasAddonAsync" in window)) {
51+
atlasAddonAsync = window.chrome.webview.hostObjects.sync.atlasAddon;
52+
}
53+
5054
function buildObjectUrl(currentTreeId) {
5155
var archivalObjectId = /archival_object_(\d+)/.exec(currentTreeId);
5256
var resourceObjectId = /resource_(\d+)/.exec(currentTreeId);
@@ -115,7 +119,13 @@ function Init()
115119
catalogSearchForm.Form = interfaceMngr:CreateForm("ArchivesSpace", "Script");
116120

117121
-- Add a browser
118-
catalogSearchForm.Browser = catalogSearchForm.Form:CreateBrowser("Catalog", "Catalog Browser", "Catalog Search", "Chromium");
122+
local layoutName = "layout.xml";
123+
if (WebView2Enabled()) then
124+
catalogSearchForm.Browser = catalogSearchForm.Form:CreateBrowser("WebView2Catalog", "Catalog Browser", "Catalog Search", "WebView2");
125+
layoutName = "layoutWebView2.xml";
126+
else
127+
catalogSearchForm.Browser = catalogSearchForm.Form:CreateBrowser("Catalog", "Catalog Browser", "Catalog Search", "Chromium");
128+
end
119129

120130
-- Hide the text label
121131
catalogSearchForm.Browser.TextVisible = false;
@@ -141,7 +151,7 @@ function Init()
141151

142152
-- After we add all of our buttons and form elements, we can show the form.
143153
catalogSearchForm.Form:Show();
144-
catalogSearchForm.Form:LoadLayout("layout.xml");
154+
catalogSearchForm.Form:LoadLayout(layoutName);
145155

146156
transactionNumber = GetFieldValue("Transaction", "TransactionNumber");
147157

@@ -154,6 +164,10 @@ function Init()
154164
catalogSearchForm.Browser:Navigate(settings.BaseURL);
155165
end
156166

167+
function WebView2Enabled()
168+
return AddonInfo.Browsers ~= nil and AddonInfo.Browsers.WebView2 ~= nil and AddonInfo.Browsers.WebView2 == true;
169+
end
170+
157171
function ShowDevTools()
158172
catalogSearchForm.Browser:ShowDevTools();
159173
end
@@ -307,9 +321,9 @@ function PerformSuccessfulSearch(searchType)
307321
return false;
308322
else
309323
local searchUrl = settings.BaseURL;
310-
searchTerm = nil;
311-
aeonSourceField = HostAppInfo.SearchMapping[searchType].AeonSourceField;
312-
aspaceSeachCode = HostAppInfo.SearchMapping[searchType].ASpaceSearchType;
324+
local searchTerm = nil;
325+
local aeonSourceField = HostAppInfo.SearchMapping[searchType].AeonSourceField;
326+
local aspaceSearchCode = HostAppInfo.SearchMapping[searchType].ASpaceSearchType;
313327

314328
if GetFieldValue("Transaction", aeonSourceField) ~= nil then
315329
searchTerm = GetFieldValue("Transaction", aeonSourceField);
@@ -318,8 +332,8 @@ function PerformSuccessfulSearch(searchType)
318332
return false;
319333
end
320334
if (searchTerm ~= nil) and (searchTerm ~= "") then
321-
if(aspaceSeachCode ~= nil) then
322-
searchUrl = PathCombine(searchUrl,"advanced_search?utf8=✓&advanced=true&t0=text&op0=&f0=") .. AtlasHelpers.UrlEncode(aspaceSeachCode) .. "&top0=contains&v0=" .. AtlasHelpers.UrlEncode(searchTerm);
335+
if(aspaceSearchCode ~= nil) then
336+
searchUrl = PathCombine(searchUrl,"advanced_search?utf8=✓&advanced=true&t0=text&op0=&f0=") .. AtlasHelpers.UrlEncode(aspaceSearchCode) .. "&top0=contains&v0=" .. AtlasHelpers.UrlEncode(searchTerm);
323337
else
324338
-- Defaults to a general search if the ArchivesSpace Search Type is Nil
325339
searchUrl = PathCombine(searchUrl,"search?utf8=✓&q=") .. AtlasHelpers.UrlEncode(searchTerm);
@@ -395,6 +409,7 @@ function PopulateDataGrid()
395409
local archivalObject = GetArchivalObject(sessionId, currentRecordUri);
396410
local collectionUri = ExtractSubproperty(archivalObject, "resource", "ref");
397411
local collection = ArchivesSpaceGetRequest(sessionId, collectionUri);
412+
local instances = {};
398413

399414
if archivalObject and archivalObject.instances and (archivalObject.instances ~= JsonParser.NIL) and (#archivalObject.instances > 0) then
400415
LogDebug("Mapping Archival Object instances");
@@ -425,7 +440,7 @@ function PopulateDataGrid()
425440
availableData["ArchivalObjectInstance"] = ExtractArchivalObjectInstanceTitle(archivalObjectInstance, topContainer, digitalObject);
426441
availableData["ArchivalObjectInstanceBarcode"] = ExtractArchivalObjectInstanceBarcode(topContainer, digitalObject);
427442

428-
topContainerHasContainerLocations = (
443+
local topContainerHasContainerLocations = (
429444
topContainer and
430445
topContainer.container_locations and
431446
topContainer.container_locations ~= JsonParser.NIL and
@@ -434,7 +449,7 @@ function PopulateDataGrid()
434449

435450
if topContainerHasContainerLocations then
436451
for _, containerLocation in ipairs(topContainer.container_locations) do
437-
location = ArchivesSpaceGetRequest(sessionId, containerLocation.ref);
452+
local location = ArchivesSpaceGetRequest(sessionId, containerLocation.ref);
438453
availableData["ArchivalObjectContainerLocation"] = location.title;
439454
AddRowToItemsTable(itemsDataTable, availableData);
440455
end
@@ -774,11 +789,11 @@ end
774789
function CheckIfUserSignedIn()
775790
LogDebug("Checking if user is signed in");
776791

777-
local jsResult = catalogSearchForm.Browser:EvaluateScript(10000, [[document.getElementsByClassName('user-container').length > 0]]);
792+
local jsResult = catalogSearchForm.Browser:EvaluateScript([[document.getElementsByClassName('user-container').length > 0]]);
778793

779794
if (jsResult.Success) then
780795
LogDebug("IsUserSignedIn() result: " .. tostring(jsResult.Result));
781-
return jsResult.Result;
796+
return jsResult.Result == "True" or jsResult.Result == true;
782797
else
783798
LogDebug("Error determining if user is signed in: " .. jsResult.Message);
784799
return false;
@@ -812,11 +827,11 @@ end
812827
function LoginPageLoaded()
813828
LogDebug("Checking if Login Page is loaded");
814829

815-
local jsResult = catalogSearchForm.Browser:EvaluateScript(10000, [[document.getElementById('login') != null]]);
830+
local jsResult = catalogSearchForm.Browser:EvaluateScript([[document.getElementById('login') != null]]);
816831

817832
if (jsResult.Success) then
818833
LogDebug("LoginPageLoaded() result: " .. tostring(jsResult.Result));
819-
return jsResult.Result;
834+
return jsResult.Result == "True" or jsResult.Result == true;
820835
else
821836
LogDebug("Error determining if login page was loaded: " .. jsResult.Message);
822837
return false;
@@ -846,7 +861,7 @@ function PerformLogin()
846861
})
847862
]];
848863

849-
catalogSearchForm.Browser:ExecuteScript(loginScript, { settings.Username, settings.Password });
864+
catalogSearchForm.Browser:ExecuteScript(loginScript, { settings.Username, settings.Password } );
850865
end
851866

852867
function Truncate(value, size)

Aeon-ArchivesSpace-Addon/Config.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
33
<Name>ArchivesSpace Interface</Name>
44
<Author>Atlas Systems, Inc.</Author>
5-
<Version>2.2.0</Version>
5+
<Version>3.0.0</Version>
66
<Active>True</Active>
77
<Type>Addon</Type>
88
<Description>This addon performs searches in ArchivesSpace using the staff interface. This addon supports ArchivesSpace versions v2.8.0 and later.</Description>
Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
<XtraSerializer version="1.0" application="LayoutControl">
2+
<property name="#LayoutVersion" />
3+
<property name="OptionsFocus" isnull="true" iskey="true">
4+
<property name="ActivateSelectedControlOnGotFocus">true</property>
5+
<property name="AllowFocusControlOnLabelClick">false</property>
6+
<property name="EnableAutoTabOrder">true</property>
7+
<property name="AllowFocusControlOnActivatedTabPage">false</property>
8+
<property name="AllowFocusGroups">true</property>
9+
<property name="AllowFocusTabbedGroups">true</property>
10+
<property name="AllowFocusReadonlyEditors">true</property>
11+
<property name="MoveFocusRightToLeft">false</property>
12+
<property name="MoveFocusDirection">AcrossThenDown</property>
13+
</property>
14+
<property name="LookAndFeel" isnull="true" iskey="true">
15+
<property name="SkinName">DevExpress Style</property>
16+
<property name="Style">Skin</property>
17+
<property name="UseDefaultLookAndFeel">true</property>
18+
<property name="UseWindowsXPTheme">false</property>
19+
</property>
20+
<property name="Items" iskey="true" value="3">
21+
<property name="Item1" isnull="true" iskey="true">
22+
<property name="TypeName">LayoutGroup</property>
23+
<property name="TabbedGroupParentName" />
24+
<property name="GroupBordersVisible">false</property>
25+
<property name="AllowDrawBackground">true</property>
26+
<property name="EnableIndentsWithoutBorders">True</property>
27+
<property name="OptionsItemText" isnull="true" iskey="true">
28+
<property name="TextToControlDistance">3</property>
29+
<property name="TextAlignMode">UseParentOptions</property>
30+
</property>
31+
<property name="CaptionImageVisible">true</property>
32+
<property name="FlowDirection">LeftToRight</property>
33+
<property name="LayoutMode">Regular</property>
34+
<property name="CaptionImageLocation">Default</property>
35+
<property name="CaptionImageIndex">-1</property>
36+
<property name="AllowBorderColorBlending">false</property>
37+
<property name="ExpandOnDoubleClick">false</property>
38+
<property name="Expanded">true</property>
39+
<property name="DefaultLayoutType">Vertical</property>
40+
<property name="ShowTabPageCloseButton">false</property>
41+
<property name="AllowHtmlStringInCaption">false</property>
42+
<property name="AllowGlyphSkinning">Default</property>
43+
<property name="OptionsTableLayoutGroup" isnull="true" iskey="true">
44+
<property name="RowDefinitions" iskey="true" value="0" />
45+
<property name="ColumnDefinitions" iskey="true" value="0" />
46+
</property>
47+
<property name="Size">@3,Width=988@3,Height=522</property>
48+
<property name="ExpandButtonVisible">false</property>
49+
<property name="ExpandButtonMode">Normal</property>
50+
<property name="HeaderButtonsLocation">Default</property>
51+
<property name="GroupStyle">Inherited</property>
52+
<property name="TextLocation">Top</property>
53+
<property name="TabPageWidth">0</property>
54+
<property name="OptionsCustomization" isnull="true" iskey="true">
55+
<property name="AllowDrag">Default</property>
56+
<property name="AllowDrop">Default</property>
57+
</property>
58+
<property name="OptionsTableLayoutItem" isnull="true" iskey="true">
59+
<property name="RowIndex">0</property>
60+
<property name="RowSpan">1</property>
61+
<property name="ColumnIndex">0</property>
62+
<property name="ColumnSpan">1</property>
63+
</property>
64+
<property name="OptionsToolTip" isnull="true" iskey="true">
65+
<property name="ToolTip" />
66+
<property name="ToolTipTitle" />
67+
<property name="ToolTipIconType">None</property>
68+
<property name="ImmediateToolTip">false</property>
69+
<property name="AllowHtmlString">Default</property>
70+
<property name="IconToolTip" />
71+
<property name="IconToolTipTitle" />
72+
<property name="IconToolTipIconType">None</property>
73+
<property name="EnableIconToolTip">true</property>
74+
<property name="IconImmediateToolTip">false</property>
75+
<property name="IconAllowHtmlString">Default</property>
76+
</property>
77+
<property name="Name">Root</property>
78+
<property name="ParentName" />
79+
<property name="TextVisible">false</property>
80+
<property name="Location">@1,X=0@1,Y=0</property>
81+
<property name="ShowInCustomizationForm">true</property>
82+
<property name="Text">Main Group</property>
83+
<property name="CustomizationFormText">Main Group</property>
84+
<property name="StartNewLine">false</property>
85+
<property name="Visibility">Always</property>
86+
</property>
87+
<property name="Item2" isnull="true" iskey="true">
88+
<property name="TypeName">AtlasSystems.Scripting.UI.AddonControls.Grid</property>
89+
<property name="ControlName">CatalogItemsGrid</property>
90+
<property name="AllowHtmlStringInCaption">false</property>
91+
<property name="TextAlignMode">UseParentOptions</property>
92+
<property name="SizeConstraintsType">Default</property>
93+
<property name="Image" isnull="true" />
94+
<property name="ImageIndex">-1</property>
95+
<property name="ImageAlignment">MiddleLeft</property>
96+
<property name="ImageToTextDistance">5</property>
97+
<property name="SvgImage" isnull="true" />
98+
<property name="SvgImageSize">@1,Width=0@1,Height=0</property>
99+
<property name="MaxSize">@1,Width=0@1,Height=0</property>
100+
<property name="MinSize">@3,Width=106@2,Height=22</property>
101+
<property name="ControlAlignment">TopLeft</property>
102+
<property name="ContentVisible">true</property>
103+
<property name="HighlightFocusedItem">Default</property>
104+
<property name="TrimClientAreaToControl">true</property>
105+
<property name="ContentVertAlignment">Default</property>
106+
<property name="ContentHorzAlignment">Default</property>
107+
<property name="AllowGlyphSkinning">Default</property>
108+
<property name="OptionsCustomization" isnull="true" iskey="true">
109+
<property name="AllowDrag">Default</property>
110+
<property name="AllowDrop">Default</property>
111+
</property>
112+
<property name="OptionsTableLayoutItem" isnull="true" iskey="true">
113+
<property name="RowIndex">0</property>
114+
<property name="RowSpan">1</property>
115+
<property name="ColumnIndex">0</property>
116+
<property name="ColumnSpan">1</property>
117+
</property>
118+
<property name="OptionsToolTip" isnull="true" iskey="true">
119+
<property name="ToolTip" />
120+
<property name="ToolTipTitle" />
121+
<property name="ToolTipIconType">None</property>
122+
<property name="ImmediateToolTip">false</property>
123+
<property name="AllowHtmlString">Default</property>
124+
<property name="IconToolTip" />
125+
<property name="IconToolTipTitle" />
126+
<property name="IconToolTipIconType">None</property>
127+
<property name="EnableIconToolTip">true</property>
128+
<property name="IconImmediateToolTip">false</property>
129+
<property name="IconAllowHtmlString">Default</property>
130+
</property>
131+
<property name="Name">CatalogItemsGrid</property>
132+
<property name="ParentName">Root</property>
133+
<property name="TextVisible">false</property>
134+
<property name="TextSize">@1,Width=0@1,Height=0</property>
135+
<property name="Location">@1,X=0@3,Y=370</property>
136+
<property name="Size">@3,Width=974@3,Height=138</property>
137+
<property name="ShowInCustomizationForm">true</property>
138+
<property name="Text">Items</property>
139+
<property name="CustomizationFormText">CatalogItemsGrid</property>
140+
<property name="StartNewLine">false</property>
141+
<property name="Visibility">Always</property>
142+
<property name="TextLocation">Default</property>
143+
</property>
144+
<property name="Item3" isnull="true" iskey="true">
145+
<property name="TypeName">AtlasSystems.Scripting.UI.AddonControls.WebView2Browser</property>
146+
<property name="ControlName">Catalog</property>
147+
<property name="AllowHtmlStringInCaption">false</property>
148+
<property name="TextAlignMode">CustomSize</property>
149+
<property name="SizeConstraintsType">Default</property>
150+
<property name="Image" isnull="true" />
151+
<property name="ImageIndex">-1</property>
152+
<property name="ImageAlignment">MiddleLeft</property>
153+
<property name="ImageToTextDistance">5</property>
154+
<property name="SvgImage" isnull="true" />
155+
<property name="SvgImageSize">@1,Width=0@1,Height=0</property>
156+
<property name="MaxSize">@1,Width=0@1,Height=0</property>
157+
<property name="MinSize">@3,Width=102@2,Height=22</property>
158+
<property name="ControlAlignment">TopLeft</property>
159+
<property name="ContentVisible">true</property>
160+
<property name="HighlightFocusedItem">Default</property>
161+
<property name="TrimClientAreaToControl">true</property>
162+
<property name="ContentVertAlignment">Default</property>
163+
<property name="ContentHorzAlignment">Default</property>
164+
<property name="AllowGlyphSkinning">Default</property>
165+
<property name="OptionsCustomization" isnull="true" iskey="true">
166+
<property name="AllowDrag">Default</property>
167+
<property name="AllowDrop">Default</property>
168+
</property>
169+
<property name="OptionsTableLayoutItem" isnull="true" iskey="true">
170+
<property name="RowIndex">0</property>
171+
<property name="RowSpan">1</property>
172+
<property name="ColumnIndex">0</property>
173+
<property name="ColumnSpan">1</property>
174+
</property>
175+
<property name="OptionsToolTip" isnull="true" iskey="true">
176+
<property name="ToolTip" />
177+
<property name="ToolTipTitle" />
178+
<property name="ToolTipIconType">None</property>
179+
<property name="ImmediateToolTip">false</property>
180+
<property name="AllowHtmlString">Default</property>
181+
<property name="IconToolTip" />
182+
<property name="IconToolTipTitle" />
183+
<property name="IconToolTipIconType">None</property>
184+
<property name="EnableIconToolTip">true</property>
185+
<property name="IconImmediateToolTip">false</property>
186+
<property name="IconAllowHtmlString">Default</property>
187+
</property>
188+
<property name="Name">Catalog</property>
189+
<property name="ParentName">Root</property>
190+
<property name="TextVisible">false</property>
191+
<property name="TextSize">@1,Width=0@1,Height=0</property>
192+
<property name="Location">@1,X=0@1,Y=0</property>
193+
<property name="Size">@3,Width=974@3,Height=370</property>
194+
<property name="ShowInCustomizationForm">true</property>
195+
<property name="Text">Catalog Browser</property>
196+
<property name="CustomizationFormText">Catalog</property>
197+
<property name="StartNewLine">false</property>
198+
<property name="Visibility">Always</property>
199+
<property name="TextLocation">Default</property>
200+
</property>
201+
</property>
202+
</XtraSerializer>

0 commit comments

Comments
 (0)