Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Rafael Monnerat
erp5
Commits
e98efa7e
Commit
e98efa7e
authored
Aug 21, 2020
by
Lu Xu
👀
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
erp5_officejs: Web share target API applying to smart assistant
parent
52e51c21
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
898 additions
and
38 deletions
+898
-38
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_bootloader_serviceworker_js.js
...age_module/gadget_officejs_bootloader_serviceworker_js.js
+41
-4
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_bootloader_serviceworker_js.xml
...ge_module/gadget_officejs_bootloader_serviceworker_js.xml
+3
-3
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_home_html.html
.../gadget_officejs_erp5_page_smart_assistant_home_html.html
+1
-0
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_home_html.xml
...e/gadget_officejs_erp5_page_smart_assistant_home_html.xml
+2
-2
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_home_js.js
...dule/gadget_officejs_erp5_page_smart_assistant_home_js.js
+21
-13
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_home_js.xml
...ule/gadget_officejs_erp5_page_smart_assistant_home_js.xml
+3
-3
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_upload_shared_file_html.html
...js_erp5_page_smart_assistant_upload_shared_file_html.html
+23
-0
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_upload_shared_file_html.xml
...ejs_erp5_page_smart_assistant_upload_shared_file_html.xml
+370
-0
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_upload_shared_file_js.js
...ficejs_erp5_page_smart_assistant_upload_shared_file_js.js
+70
-0
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_upload_shared_file_js.xml
...icejs_erp5_page_smart_assistant_upload_shared_file_js.xml
+329
-0
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_json_manifest_smart_assistant_json.json
...e/gadget_officejs_json_manifest_smart_assistant_json.json
+26
-10
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_json_manifest_smart_assistant_json.xml
...le/gadget_officejs_json_manifest_smart_assistant_json.xml
+2
-2
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_officejs_smart_assistant/WebSection_getSmartAssistantPrecacheManifestList.py
...stant/WebSection_getSmartAssistantPrecacheManifestList.py
+7
-1
No files found.
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_bootloader_serviceworker_js.js
View file @
e98efa7e
/*jslint indent: 2*/
/*jslint indent: 2*/
/*global self, fetch, Request, Response */
/*global self, fetch, Request, Response
, URL, Blob
*/
var
global
=
self
,
window
=
self
;
var
global
=
self
,
window
=
self
;
(
function
(
self
,
fetch
,
Re
quest
,
Response
)
{
(
function
(
self
,
fetch
,
Re
sponse
,
Blob
)
{
"
use strict
"
;
"
use strict
"
;
self
.
DOMParser
=
{};
self
.
DOMParser
=
{};
...
@@ -52,7 +52,8 @@ var global = self, window = self;
...
@@ -52,7 +52,8 @@ var global = self, window = self;
self
.
addEventListener
(
"
fetch
"
,
function
(
event
)
{
self
.
addEventListener
(
"
fetch
"
,
function
(
event
)
{
var
relative_url
=
'
./
'
+
event
.
request
.
url
.
split
(
"
#
"
)[
0
]
var
relative_url
=
'
./
'
+
event
.
request
.
url
.
split
(
"
#
"
)[
0
]
.
replace
(
self
.
registration
.
scope
,
""
)
.
replace
(
self
.
registration
.
scope
,
""
)
.
replace
(
self
.
version_url
,
""
);
.
replace
(
self
.
version_url
,
""
),
tmp
;
if
(
relative_url
===
'
./no-cache
'
)
{
if
(
relative_url
===
'
./no-cache
'
)
{
event
.
respondWith
(
new
Response
(
self
.
cache_list
));
event
.
respondWith
(
new
Response
(
self
.
cache_list
));
return
;
return
;
...
@@ -80,6 +81,42 @@ var global = self, window = self;
...
@@ -80,6 +81,42 @@ var global = self, window = self;
return
new
Response
(
error
,
{
"
statusText
"
:
error
.
message
,
"
status
"
:
500
});
return
new
Response
(
error
,
{
"
statusText
"
:
error
.
message
,
"
status
"
:
500
});
})
})
);
);
}
else
if
(
// postData from manifest.json
event
.
request
.
method
===
'
POST
'
&&
relative_url
.
split
(
'
?
'
)[
0
].
endsWith
(
'
postData
'
)
)
{
self
.
request
=
event
.
request
;
event
.
respondWith
(
Response
.
redirect
(
'
.
'
));
}
else
if
(
// Determine if it hasSharedData
event
.
request
.
url
.
endsWith
(
'
hasSharedData
'
)
)
{
event
.
respondWith
(
new
Response
(
self
.
request
?
"
true
"
:
"
false
"
));
}
else
if
(
// getSharedData from upload_shared_file page
// upload_shared_file page processes the data
event
.
request
.
url
.
endsWith
(
'
getSharedData
'
)
&&
event
.
request
.
method
===
'
GET
'
)
{
if
(
!
self
.
request
)
{
event
.
respondWith
(
new
Response
(
''
));
}
else
{
tmp
=
self
.
request
;
delete
self
.
request
;
event
.
respondWith
(
new
self
.
RSVP
.
Queue
()
.
push
(
function
()
{
return
tmp
.
formData
();
})
.
push
(
function
(
data
)
{
return
data
.
get
(
'
file
'
);
})
.
push
(
function
(
file
)
{
return
new
Response
(
new
Blob
([
file
],
{
type
:
file
.
type
}));
})
);
}
}
else
{
}
else
{
event
.
respondWith
(
event
.
respondWith
(
new
self
.
RSVP
.
Queue
()
new
self
.
RSVP
.
Queue
()
...
@@ -101,4 +138,4 @@ var global = self, window = self;
...
@@ -101,4 +138,4 @@ var global = self, window = self;
}
}
});
});
}(
self
,
fetch
,
Request
,
Response
));
}(
self
,
fetch
,
Response
,
Blob
));
\ No newline at end of file
\ No newline at end of file
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_bootloader_serviceworker_js.xml
View file @
e98efa7e
...
@@ -223,7 +223,7 @@
...
@@ -223,7 +223,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
P0
</string>
</value>
<value>
<string>
zope
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -237,7 +237,7 @@
...
@@ -237,7 +237,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
69.27647.29835.22169
</string>
</value>
<value>
<string>
9
86.49641.0.58982
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -255,7 +255,7 @@
...
@@ -255,7 +255,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
1
533640296
.2
</float>
<float>
1
600683471
.2
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_home_html.html
View file @
e98efa7e
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
<meta
charset=
"utf-8"
>
<meta
charset=
"utf-8"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"gadget_officejs_smart_assistant.css"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"gadget_officejs_smart_assistant.css"
>
<link
rel=
"manifest"
href=
"gadget_officejs_json_manifest_smart_assistant.json"
>
<title>
OfficeJS Smart Assistant Home
</title>
<title>
OfficeJS Smart Assistant Home
</title>
...
...
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_home_html.xml
View file @
e98efa7e
...
@@ -278,7 +278,7 @@
...
@@ -278,7 +278,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
79.64140.28065.34372
</string>
</value>
<value>
<string>
9
81.3464.44902.45755
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -296,7 +296,7 @@
...
@@ -296,7 +296,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
157
4460415.05
</float>
<float>
157
8607727.59
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_home_js.js
View file @
e98efa7e
/*global window, rJS, jIO, Handlebars, RSVP, Blob, SimpleQuery, ComplexQuery, Query*/
/*global window, rJS, jIO,
navigator,
Handlebars, RSVP, Blob, SimpleQuery, ComplexQuery, Query*/
/*jslint indent:2, maxlen: 80, nomen: true */
/*jslint indent:2, maxlen: 80, nomen: true */
(
function
(
window
,
rJS
,
jIO
,
RSVP
,
SimpleQuery
,
ComplexQuery
,
Query
)
{
(
function
(
window
,
rJS
,
jIO
,
navigator
,
RSVP
,
SimpleQuery
,
ComplexQuery
,
Query
)
{
"
use strict
"
;
"
use strict
"
;
rJS
(
window
)
rJS
(
window
)
...
@@ -46,10 +47,6 @@
...
@@ -46,10 +47,6 @@
type
:
"
DateTimeField
"
type
:
"
DateTimeField
"
}
}
};
};
result
.
data
.
rows
[
i
].
value
[
"
listbox_uid:list
"
]
=
{
key
:
"
listbox_uid:list
"
,
value
:
2713
};
}
}
}
}
return
result
;
return
result
;
...
@@ -67,7 +64,7 @@
...
@@ -67,7 +64,7 @@
portal_type
=
gadget
.
props
.
portal_type
,
portal_type
=
gadget
.
props
.
portal_type
,
parent_relative_url
=
gadget
.
props
.
parent_relative_url
;
parent_relative_url
=
gadget
.
props
.
parent_relative_url
;
return
RSVP
.
Queue
()
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
.
push
(
function
()
{
return
gadget
.
getDeclaredGadget
(
scope
);
return
gadget
.
getDeclaredGadget
(
scope
);
})
})
...
@@ -126,7 +123,7 @@
...
@@ -126,7 +123,7 @@
// declared methods
// declared methods
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
.
ready
(
function
(
g
)
{
.
ready
(
function
(
g
)
{
return
RSVP
.
Queue
()
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
.
push
(
function
()
{
return
RSVP
.
all
([
return
RSVP
.
all
([
g
.
getSetting
(
'
portal_type
'
),
g
.
getSetting
(
'
portal_type
'
),
...
@@ -140,10 +137,8 @@
...
@@ -140,10 +137,8 @@
};
};
});
});
})
})
.
declareMethod
(
"
render
"
,
function
()
{
.
declareMethod
(
"
render
"
,
function
()
{
var
gadget
=
this
;
var
gadget
=
this
;
this
.
getDeclaredGadget
(
'
form_list
'
);
return
gadget
.
getSetting
(
'
jio_storage_name
'
)
return
gadget
.
getSetting
(
'
jio_storage_name
'
)
.
push
(
function
(
result
)
{
.
push
(
function
(
result
)
{
...
@@ -151,8 +146,22 @@
...
@@ -151,8 +146,22 @@
return
gadget
.
redirect
({
command
:
'
display
'
,
return
gadget
.
redirect
({
command
:
'
display
'
,
options
:
{
page
:
'
ojs_configurator
'
}});
options
:
{
page
:
'
ojs_configurator
'
}});
}
}
if
(
'
serviceWorker
'
in
navigator
)
{
if
(
navigator
.
serviceWorker
.
controller
)
{
return
jIO
.
util
.
ajax
({
url
:
'
hasSharedData
'
});
}
}
})
})
.
push
(
function
()
{
.
push
(
function
(
result
)
{
if
(
result
)
{
if
(
result
.
target
.
response
===
'
true
'
)
{
return
gadget
.
redirect
({
command
:
'
display
'
,
options
:
{
page
:
'
ojs_smart_assistant_upload_shared_file
'
}});
}
}
return
RSVP
.
all
([
return
RSVP
.
all
([
gadget
.
getDeclaredGadget
(
'
form_view_upload_audio
'
),
gadget
.
getDeclaredGadget
(
'
form_view_upload_audio
'
),
gadget
.
getDeclaredGadget
(
'
form_view_image_text
'
),
gadget
.
getDeclaredGadget
(
'
form_view_image_text
'
),
...
@@ -328,7 +337,6 @@
...
@@ -328,7 +337,6 @@
page_icon
:
"
exchange
"
page_icon
:
"
exchange
"
});
});
});
});
});
});
}(
window
,
rJS
,
jIO
,
RSVP
,
SimpleQuery
,
ComplexQuery
,
Query
));
}(
window
,
rJS
,
jIO
,
navigator
,
RSVP
,
SimpleQuery
,
ComplexQuery
,
Query
));
\ No newline at end of file
\ No newline at end of file
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_home_js.xml
View file @
e98efa7e
...
@@ -184,7 +184,7 @@
...
@@ -184,7 +184,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
15
62159205.06
</float>
<float>
15
97277315.11
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
@@ -233,7 +233,7 @@
...
@@ -233,7 +233,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
98
0.55662.21812.79
87
</string>
</value>
<value>
<string>
98
6.52650.40049.328
87
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -251,7 +251,7 @@
...
@@ -251,7 +251,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
1
577797510.26
</float>
<float>
1
600864455.71
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_upload_shared_file_html.html
0 → 100644
View file @
e98efa7e
<!doctype html>
<html>
<head>
<meta
charset=
"utf-8"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"gadget_officejs_smart_assistant.css"
>
<link
rel=
"manifest"
href=
"gadget_officejs_json_manifest_smart_assistant.json"
>
<title>
OfficeJS Smart Assistant Upload Shared File
</title>
<script
src=
"rsvp.js"
></script>
<script
src=
"renderjs.js"
></script>
<script
src=
"jiodev.js"
></script>
<script
src=
"gadget_erp5_page_ojs_smart_assistant_upload_shared_file.js"
></script>
</head>
<body>
<h1>
Your file is uploading to Smart Assistant...
</h1>
</body>
</html>
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_upload_shared_file_html.xml
0 → 100644
View file @
e98efa7e
This diff is collapsed.
Click to expand it.
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_upload_shared_file_js.js
0 → 100644
View file @
e98efa7e
/*global window, rJS, jIO, Handlebars, RSVP, Blob*/
/*jslint indent:2, maxlen: 80, nomen: true */
(
function
(
window
,
rJS
,
jIO
,
RSVP
)
{
"
use strict
"
;
rJS
(
window
)
/////////////////////////////////////////////////////////////////
// Acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
"
jio_post
"
,
"
jio_post
"
)
.
declareAcquiredMethod
(
"
redirect
"
,
"
redirect
"
)
.
declareAcquiredMethod
(
"
notifySubmitting
"
,
"
notifySubmitting
"
)
.
declareAcquiredMethod
(
"
jio_putAttachment
"
,
"
jio_putAttachment
"
)
.
declareAcquiredMethod
(
"
notifySubmitted
"
,
"
notifySubmitted
"
)
.
declareService
(
function
handleWebShareFile
()
{
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
jIO
.
util
.
ajax
({
type
:
'
GET
'
,
url
:
'
getSharedData
'
,
dataType
:
"
blob
"
});
})
.
push
(
function
(
resx
)
{
// Condition: when there's uploaded data
if
(
resx
.
target
.
response
.
size
)
{
return
gadget
.
notifySubmitting
()
.
push
(
function
()
{
return
gadget
.
jio_post
({
"
title
"
:
Date
(),
//get date as title
portal_type
:
"
Smart Assistant File
"
,
parent_relative_url
:
"
smart_assistant_file_module
"
,
validation_state
:
'
draft
'
});
})
.
push
(
function
(
id
)
{
return
gadget
.
jio_putAttachment
(
id
,
'
data
'
,
resx
.
target
.
response
);
})
.
push
(
function
()
{
return
gadget
.
notifySubmitted
({
"
message
"
:
"
Data created
"
,
"
status
"
:
"
success
"
});
})
.
push
(
function
()
{
return
gadget
.
redirect
({
command
:
'
display
'
,
options
:
{
page
:
"
ojs_smart_assistant_document_list
"
}
});
});
}
// Condition: if there's no data
return
gadget
.
notifySubmitted
({
"
message
"
:
"
No data found
"
,
"
status
"
:
"
failed
"
})
.
push
(
function
()
{
return
gadget
.
redirect
({
command
:
'
display
'
,
options
:
{
page
:
"
ojs_smart_assistant_home
"
}
});
});
});
});
}(
window
,
rJS
,
jIO
,
RSVP
));
\ No newline at end of file
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_erp5_page_smart_assistant_upload_shared_file_js.xml
0 → 100644
View file @
e98efa7e
This diff is collapsed.
Click to expand it.
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_json_manifest_smart_assistant_json.json
View file @
e98efa7e
//
Update
web
app
manifest
so
that
it
can
be
installable
{
{
"short_name"
:
"Smart Assistant"
,
"short_name"
:
"Smart Assistant"
,
"name"
:
"OfficeJS Smart Assistant"
,
"name"
:
"OfficeJS Smart Assistant"
,
"description"
:
"Assist you with using an ERP"
,
"description"
:
"Assist you with using an ERP"
,
"icons"
:
[{
"icons"
:
[{
"src"
:
"officejs_smart_assistant_icon.png"
,
"src"
:
"officejs_smart_assistant_icon.png"
,
"sizes"
:
"any"
,
"sizes"
:
"any"
,
"type"
:
"image/png"
"type"
:
"image/png"
}],
}],
"start_url"
:
"../../"
,
"start_url"
:
"../"
,
"display"
:
"standalone"
"theme_color"
:
"#333"
,
"background_color"
:
"#333"
,
"display"
:
"standalone"
,
"scope"
:
"../"
,
//
web
share
target
API
"share_target"
:
{
"action"
:
"./postData"
,
"method"
:
"POST"
,
"enctype"
:
"multipart/form-data"
,
"params"
:
{
"files"
:
[{
"name"
:
"file"
,
"accept"
:
[
"*/*"
]
}]
}
}
}
}
\ No newline at end of file
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_json_manifest_smart_assistant_json.xml
View file @
e98efa7e
...
@@ -239,7 +239,7 @@
...
@@ -239,7 +239,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
70.32880.35131.1459
2
</string>
</value>
<value>
<string>
9
86.3906.17858.1121
2
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -257,7 +257,7 @@
...
@@ -257,7 +257,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
15
37948707.94
</float>
<float>
15
98012587.45
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_officejs_smart_assistant/WebSection_getSmartAssistantPrecacheManifestList.py
View file @
e98efa7e
...
@@ -128,7 +128,13 @@ url_list = [
...
@@ -128,7 +128,13 @@ url_list = [
"gadget_officejs_jio_smart_assistant_text_view.js"
,
"gadget_officejs_jio_smart_assistant_text_view.js"
,
"gadget_officejs_jio_smart_assistant_text_view.html"
,
"gadget_officejs_jio_smart_assistant_text_view.html"
,
"gadget_erp5_page_ojs_smart_assistant_home.html"
,
"gadget_erp5_page_ojs_smart_assistant_home.html"
,
"gadget_erp5_page_ojs_smart_assistant_home.js"
"gadget_erp5_page_ojs_smart_assistant_home.js"
,
"gadget_erp5_page_ojs_smart_assistant_upload_shared_file.html"
,
"gadget_erp5_page_ojs_smart_assistant_upload_shared_file.js"
,
"gadget_erp5_page_ojs_smart_assistant_worklist.html"
,
"gadget_erp5_page_ojs_smart_assistant_worklist.js"
,
"gadget_officejs_jio_query_view.html"
,
"gadget_officejs_jio_smart_assistant_query_view.js"
]
]
return
url_list
return
url_list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment