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
Labels
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
Romain Courteaud
erp5
Commits
f74f420e
Commit
f74f420e
authored
Jun 30, 2017
by
Sven Franck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
erp5_officejs_afs_directory: rewrite custom storages and automate openhub data retrieval via proxy
parent
2c05c656
Changes
72
Hide whitespace changes
Inline
Side-by-side
Showing
72 changed files
with
2844 additions
and
1390 deletions
+2844
-1390
bt5/erp5_officejs_afs_directory/ExtensionTemplateItem/portal_components/extension.erp5.AfsOpenHub.py
...mplateItem/portal_components/extension.erp5.AfsOpenHub.py
+40
-0
bt5/erp5_officejs_afs_directory/ExtensionTemplateItem/portal_components/extension.erp5.AfsOpenHub.xml
...plateItem/portal_components/extension.erp5.AfsOpenHub.xml
+121
-0
bt5/erp5_officejs_afs_directory/PathTemplateItem/image_module/gadget_erp5_afs_camera_png.png
...hTemplateItem/image_module/gadget_erp5_afs_camera_png.png
+0
-0
bt5/erp5_officejs_afs_directory/PathTemplateItem/image_module/gadget_erp5_afs_logo_png.png
...athTemplateItem/image_module/gadget_erp5_afs_logo_png.png
+0
-0
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_appcache.xml
...TemplateItem/web_page_module/gadget_erp5_afs_appcache.xml
+93
-38
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_converter_storage_js.js
...m/web_page_module/gadget_erp5_afs_converter_storage_js.js
+267
-0
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_converter_storage_js.xml
.../web_page_module/gadget_erp5_afs_converter_storage_js.xml
+81
-74
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_css.css
.../PathTemplateItem/web_page_module/gadget_erp5_afs_css.css
+31
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_css.xml
.../PathTemplateItem/web_page_module/gadget_erp5_afs_css.xml
+2
-2
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_jio_html.html
...emplateItem/web_page_module/gadget_erp5_afs_jio_html.html
+8
-10
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_jio_html.xml
...TemplateItem/web_page_module/gadget_erp5_afs_jio_html.xml
+2
-2
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_jio_js.js
...athTemplateItem/web_page_module/gadget_erp5_afs_jio_js.js
+67
-294
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_jio_js.xml
...thTemplateItem/web_page_module/gadget_erp5_afs_jio_js.xml
+4
-4
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_panel_html.html
...plateItem/web_page_module/gadget_erp5_afs_panel_html.html
+13
-13
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_panel_html.xml
...mplateItem/web_page_module/gadget_erp5_afs_panel_html.xml
+3
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_panel_js.js
...hTemplateItem/web_page_module/gadget_erp5_afs_panel_js.js
+73
-67
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_panel_js.xml
...TemplateItem/web_page_module/gadget_erp5_afs_panel_js.xml
+3
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_publisher_storage_js.js
...m/web_page_module/gadget_erp5_afs_publisher_storage_js.js
+73
-0
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_publisher_storage_js.xml
.../web_page_module/gadget_erp5_afs_publisher_storage_js.xml
+7
-7
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_router_html.html
...lateItem/web_page_module/gadget_erp5_afs_router_html.html
+2
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_router_html.xml
...plateItem/web_page_module/gadget_erp5_afs_router_html.xml
+2
-2
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_router_js.js
...TemplateItem/web_page_module/gadget_erp5_afs_router_js.js
+2
-10
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_router_js.xml
...emplateItem/web_page_module/gadget_erp5_afs_router_js.xml
+3
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_directory_html.html
.../web_page_module/gadget_erp5_page_afs_directory_html.html
+4
-9
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_directory_html.xml
...m/web_page_module/gadget_erp5_page_afs_directory_html.xml
+3
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_directory_js.js
...Item/web_page_module/gadget_erp5_page_afs_directory_js.js
+69
-66
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_directory_js.xml
...tem/web_page_module/gadget_erp5_page_afs_directory_js.xml
+3
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_html.html
.../web_page_module/gadget_erp5_page_afs_publisher_html.html
+138
-137
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_html.xml
...m/web_page_module/gadget_erp5_page_afs_publisher_html.xml
+2
-2
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_js.js
...Item/web_page_module/gadget_erp5_page_afs_publisher_js.js
+132
-41
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_js.xml
...tem/web_page_module/gadget_erp5_page_afs_publisher_js.xml
+3
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_list_html.html
...page_module/gadget_erp5_page_afs_publisher_list_html.html
+2
-5
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_list_html.xml
..._page_module/gadget_erp5_page_afs_publisher_list_html.xml
+2
-2
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_list_js.js
...web_page_module/gadget_erp5_page_afs_publisher_list_js.js
+58
-55
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_list_js.xml
...eb_page_module/gadget_erp5_page_afs_publisher_list_js.xml
+3
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_statistic_html.html
...module/gadget_erp5_page_afs_publisher_statistic_html.html
+0
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_statistic_html.xml
..._module/gadget_erp5_page_afs_publisher_statistic_html.xml
+2
-2
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_statistic_js.js
...age_module/gadget_erp5_page_afs_publisher_statistic_js.js
+53
-53
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_statistic_js.xml
...ge_module/gadget_erp5_page_afs_publisher_statistic_js.xml
+2
-2
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_html.html
...m/web_page_module/gadget_erp5_page_afs_software_html.html
+133
-133
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_html.xml
...em/web_page_module/gadget_erp5_page_afs_software_html.xml
+2
-2
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_js.js
...eItem/web_page_module/gadget_erp5_page_afs_software_js.js
+145
-60
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_js.xml
...Item/web_page_module/gadget_erp5_page_afs_software_js.xml
+3
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_list_html.html
..._page_module/gadget_erp5_page_afs_software_list_html.html
+2
-5
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_list_html.xml
...b_page_module/gadget_erp5_page_afs_software_list_html.xml
+2
-2
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_list_js.js
.../web_page_module/gadget_erp5_page_afs_software_list_js.js
+56
-52
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_list_js.xml
...web_page_module/gadget_erp5_page_afs_software_list_js.xml
+3
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_html.html
...b_page_module/gadget_erp5_page_afs_success_case_html.html
+61
-61
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_html.xml
...eb_page_module/gadget_erp5_page_afs_success_case_html.xml
+2
-2
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_js.js
...m/web_page_module/gadget_erp5_page_afs_success_case_js.js
+87
-4
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_js.xml
.../web_page_module/gadget_erp5_page_afs_success_case_js.xml
+3
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_list_html.html
...e_module/gadget_erp5_page_afs_success_case_list_html.html
+9
-9
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_list_html.xml
...ge_module/gadget_erp5_page_afs_success_case_list_html.xml
+1
-1
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_list_js.js
..._page_module/gadget_erp5_page_afs_success_case_list_js.js
+63
-55
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_list_js.xml
...page_module/gadget_erp5_page_afs_success_case_list_js.xml
+3
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_unsplash_js.js
...eItem/web_page_module/gadget_erp5_page_afs_unsplash_js.js
+2
-2
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_unsplash_js.xml
...Item/web_page_module/gadget_erp5_page_afs_unsplash_js.xml
+2
-2
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_site_module/afs.xml
...js_afs_directory/PathTemplateItem/web_site_module/afs.xml
+3
-3
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_site_module/afs/hateoas.xml
...irectory/PathTemplateItem/web_site_module/afs/hateoas.xml
+481
-0
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_site_module/afs/hateoas/connection.xml
...thTemplateItem/web_site_module/afs/hateoas/connection.xml
+148
-55
bt5/erp5_officejs_afs_directory/SkinTemplateItem/portal_skins/erp5_officejs_afs.xml
...ctory/SkinTemplateItem/portal_skins/erp5_officejs_afs.xml
+32
-0
bt5/erp5_officejs_afs_directory/SkinTemplateItem/portal_skins/erp5_officejs_afs/Software_getAnalysis.py
...em/portal_skins/erp5_officejs_afs/Software_getAnalysis.py
+15
-0
bt5/erp5_officejs_afs_directory/SkinTemplateItem/portal_skins/erp5_officejs_afs/Software_getAnalysis.xml
...m/portal_skins/erp5_officejs_afs/Software_getAnalysis.xml
+62
-0
bt5/erp5_officejs_afs_directory/SkinTemplateItem/portal_skins/erp5_officejs_afs/Software_getAndStoreAnalysisList.py
...ins/erp5_officejs_afs/Software_getAndStoreAnalysisList.py
+31
-0
bt5/erp5_officejs_afs_directory/SkinTemplateItem/portal_skins/erp5_officejs_afs/Software_getAndStoreAnalysisList.xml
...ns/erp5_officejs_afs/Software_getAndStoreAnalysisList.xml
+62
-0
bt5/erp5_officejs_afs_directory/SkinTemplateItem/portal_skins/erp5_officejs_afs/Software_getAndStoreOpenHubLatestAnalysisList.xml
...ejs_afs/Software_getAndStoreOpenHubLatestAnalysisList.xml
+28
-0
bt5/erp5_officejs_afs_directory/SkinTemplateItem/portal_skins/erp5_officejs_afs/Software_getOpenHubLatestAnalysis.xml
...s/erp5_officejs_afs/Software_getOpenHubLatestAnalysis.xml
+28
-0
bt5/erp5_officejs_afs_directory/bt/template_extension_id_list
...erp5_officejs_afs_directory/bt/template_extension_id_list
+1
-0
bt5/erp5_officejs_afs_directory/bt/template_keep_last_workflow_history_only_path_list
...ory/bt/template_keep_last_workflow_history_only_path_list
+0
-1
bt5/erp5_officejs_afs_directory/bt/template_keep_workflow_path_list
...fficejs_afs_directory/bt/template_keep_workflow_path_list
+0
-1
bt5/erp5_officejs_afs_directory/bt/template_path_list
bt5/erp5_officejs_afs_directory/bt/template_path_list
+0
-1
bt5/erp5_officejs_afs_directory/bt/template_skin_id_list
bt5/erp5_officejs_afs_directory/bt/template_skin_id_list
+1
-0
No files found.
bt5/erp5_officejs_afs_directory/ExtensionTemplateItem/portal_components/extension.erp5.AfsOpenHub.py
0 → 100644
View file @
f74f420e
import
urllib2
import
json
github_list_url
=
"https://api.github.com/repos/Nexedi/awesome-free-software/contents/?ref=master"
openhub_key
=
"1afe873fd46de2cd79292e00728883e727926a513fbf15f86c62821ba296139b"
def
getLatestAnalysesAsXml
(
url
):
if
url
==
None
:
raise
Exception
(
"No url parameter provided."
)
url
=
url
.
replace
(
"/languages_summary"
,
".xml"
).
replace
(
"/p/"
,
"/projects/"
).
replace
(
" "
,
""
)
response
=
urllib2
.
urlopen
(
url
+
"?api_key="
+
openhub_key
)
return
response
.
read
()
def
isValidProfileUrl
(
url
):
return
url
is
not
None
and
url
is
not
""
and
"hub"
in
url
def
getOpenHubUrlList
():
item_list
=
urllib2
.
urlopen
(
github_list_url
)
json_list
=
json
.
loads
(
item_list
.
read
())
request_list
=
[]
for
element
in
json_list
:
if
".json"
in
element
.
title
:
publisher_profile_request
=
urllib2
.
urlopen
(
element
.
download_url
)
publisher_profile
=
json
.
loads
(
publisher_profile_request
.
read
())
publisher_software_list
=
publisher_profile
.
free_software_list
if
len
(
publisher_software_list
):
for
software
in
publisher_software_list
:
software_profile_url
=
software
.
source_code_profile
if
isValidProfileUrl
(
software_profile_url
):
if
software_profile_url
not
in
request_list
:
request_list
.
append
(
software_profile_url
)
return
request_list
def
fetchOpenHubProfileListAsXml
():
request_list
=
getOpenHubUrlList
()
return
request_list
\ No newline at end of file
bt5/erp5_officejs_afs_directory/ExtensionTemplateItem/portal_components/extension.erp5.AfsOpenHub.xml
0 → 100644
View file @
f74f420e
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Extension Component"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_recorded_property_dict
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
AfsOpenHub
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string>
methods for retrieving software profiles on openhub
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
extension.erp5.AfsOpenHub
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Extension Component
</string>
</value>
</item>
<item>
<key>
<string>
sid
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
text_content_error_message
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
text_content_warning_message
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
version
</string>
</key>
<value>
<string>
erp5
</string>
</value>
</item>
<item>
<key>
<string>
workflow_history
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
component_validation_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
validate
</string>
</value>
</item>
<item>
<key>
<string>
validation_state
</string>
</key>
<value>
<string>
validated
</string>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_afs_directory/PathTemplateItem/image_module/gadget_erp5_afs_camera_png.png
deleted
100644 → 0
View file @
2c05c656
3.37 KB
bt5/erp5_officejs_afs_directory/PathTemplateItem/image_module/gadget_erp5_afs_logo_png.png
deleted
100644 → 0
View file @
2c05c656
6.41 KB
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_appcache.xml
View file @
f74f420e
...
@@ -103,40 +103,97 @@
...
@@ -103,40 +103,97 @@
</item>
</item>
<item>
<item>
<key>
<string>
text_content
</string>
</key>
<key>
<string>
text_content
</string>
</key>
<value>
<string
encoding=
"cdata"
>
<![CDATA[
<value>
<string>
CACHE MANIFEST\n
# generated on Wed, 28 Jun 2017 15:50:00 GMT .\n
CACHE MANIFEST\n
# generated on Mon, 30 May 2017 10:00:00 GMT\n
# images/ajax-loader.gif\n
# images/ajax-loader.gif\n
CACHE:\n
CACHE:\n
font-awesome/font-awesome-webfont.eot?v=4.6.3\n
font-awesome/font-awesome-webfont.eot?#iefix&v=4.6.3\n
font-awesome/font-awesome-webfont.woff?v=4.6.3\n
font-awesome/font-awesome-webfont.ttf?v=4.6.3\n
font-awesome/font-awesome-webfont.svg?v=4.6.3#fontawesomeregular\n
favicon.ico\n
gadget_erp5_afs_camera.png?format=png\n
gadget_erp5_afs_logo.png?format=png\n
URI.js\n
URI.js\n
erp5_launcher_nojqm.js\n
erp5_launcher_nojqm.js\n
gadget_erp5_nojqm.css\n
gadget_erp5_nojqm.css\n
gadget_erp5_editor_panel.html\n
gadget_erp5_editor_panel.html\n
gadget_erp5_editor_panel.js\n
gadget_erp5_editor_panel.js\n
gadget_erp5_field_checkbox.html\n
gadget_erp5_field_checkbox.js\n
gadget_erp5_field_datetime.html\n
gadget_erp5_field_datetime.js\n
gadget_erp5_field_email.html\n
gadget_erp5_field_email.js\n
gadget_erp5_field_file.html\n
gadget_erp5_field_file.js\n
gadget_erp5_field_float.html\n
gadget_erp5_field_float.js\n
gadget_erp5_field_gadget.html\n
gadget_erp5_field_gadget.js\n
gadget_erp5_field_image.html\n
gadget_erp5_field_image.js\n
gadget_erp5_field_integer.html\n
gadget_erp5_field_integer.js\n
gadget_erp5_field_list.html\n
gadget_erp5_field_list.js\n
gadget_erp5_field_listbox.html\n
gadget_erp5_field_listbox.html\n
gadget_erp5_field_listbox.js\n
gadget_erp5_field_listbox.js\n
gadget_erp5_field_multicheckbox.html\n
gadget_erp5_field_multicheckbox.js\n
gadget_erp5_field_multilist.html\n
gadget_erp5_field_multilist.js\n
gadget_erp5_field_multirelationstring.html\n
gadget_erp5_field_multirelationstring.js\n
gadget_erp5_field_radio.html\n
gadget_erp5_field_radio.js\n
gadget_erp5_field_readonly.html\n
gadget_erp5_field_readonly.js\n
gadget_erp5_field_relationstring.html\n
gadget_erp5_field_relationstring.js\n
gadget_erp5_field_string.html\n
gadget_erp5_field_string.js\n
gadget_erp5_field_password.html\n
gadget_erp5_field_password.js\n
gadget_erp5_field_textarea.html\n
gadget_erp5_field_textarea.js\n
gadget_erp5_form.html\n
gadget_erp5_form.html\n
gadget_erp5_form.js\n
gadget_erp5_form.js\n
gadget_erp5_header.html\n
gadget_erp5_header.html\n
gadget_erp5_header.js\n
gadget_erp5_header.js\n
gadget_erp5_global.js\n
gadget_erp5_jio.html\n
gadget_erp5_label_field.html\n
gadget_erp5_jio.js\n
gadget_erp5_label_field.js\n
gadget_erp5_page_action.html\n
gadget_erp5_notification.html\n
gadget_erp5_page_action.js\n
gadget_erp5_notification.js\n
gadget_erp5_page_form.html\n
gadget_erp5_page_form.js\n
gadget_erp5_page_front.html\n
gadget_erp5_page_front.js\n
gadget_erp5_page_history.html\n
gadget_erp5_page_history.js\n
gadget_erp5_page_jump.html\n
gadget_erp5_page_jump.js\n
gadget_erp5_page_logout.html\n
gadget_erp5_page_logout.js\n
gadget_erp5_page_preference.html\n
gadget_erp5_page_preference.js\n
gadget_erp5_page_relation_search.html\n
gadget_erp5_page_relation_search.js\n
gadget_erp5_page_search.html\n
gadget_erp5_page_search.js\n
gadget_erp5_page_tab.html\n
gadget_erp5_page_tab.js\n
gadget_erp5_page_worklist.html\n
gadget_erp5_page_worklist.js\n
gadget_erp5_panel.html\n
gadget_erp5_panel.js\n
gadget_erp5_pt_form_dialog.html\n
gadget_erp5_pt_form_dialog.js\n
gadget_erp5_pt_form_list.html\n
gadget_erp5_pt_form_list.html\n
gadget_erp5_pt_form_list.js\n
gadget_erp5_pt_form_list.js\n
gadget_erp5_pt_form_view.html\n
gadget_erp5_pt_form_view.js\n
gadget_erp5_pt_form_view_editable.html\n
gadget_erp5_pt_form_view_editable.js\n
gadget_erp5_pt_report_view.html\n
gadget_erp5_pt_report_view.js\n
gadget_erp5_router.html\n
gadget_erp5_router.html\n
gadget_erp5_router.js\n
gadget_erp5_router.js\n
gadget_erp5_relation_input.html\n
gadget_erp5_relation_input.js\n
gadget_erp5_search_editor.html\n
gadget_erp5_search_editor.html\n
gadget_erp5_search_editor.js\n
gadget_erp5_search_editor.js\n
gadget_erp5_searchfield.html\n
gadget_erp5_searchfield.html\n
...
@@ -144,8 +201,7 @@ gadget_erp5_searchfield.js\n
...
@@ -144,8 +201,7 @@ gadget_erp5_searchfield.js\n
gadget_erp5_sort_editor.html\n
gadget_erp5_sort_editor.html\n
gadget_erp5_sort_editor.js\n
gadget_erp5_sort_editor.js\n
gadget_global.js\n
gadget_global.js\n
gadget_html5_input.html\n
gadget_erp5_global.js\n
gadget_html5_input.js\n
gadget_jio.html\n
gadget_jio.html\n
gadget_jio.js\n
gadget_jio.js\n
gadget_translation.html\n
gadget_translation.html\n
...
@@ -157,35 +213,34 @@ renderjs.js\n
...
@@ -157,35 +213,34 @@ renderjs.js\n
rsvp.js\n
rsvp.js\n
# CUSTOM AFS files\n
# CUSTOM AFS files\n
gadget_erp5_page_afs_success_case.html\n
gadget_erp5_page_afs_success_case.html\n
gadget_erp5_page_afs_success_case.js\n
gadget_erp5_page_afs_publisher.html\n
gadget_erp5_page_afs_publisher.js\n
gadget_erp5_page_afs_publisher.js\n
gadget_erp5_page_afs_publisher.html\n
gadget_erp5_page_afs_success_case_list.html\n
gadget_erp5_page_afs_success_case_list.html\n
gadget_erp5_page_afs_success_case_list.js\n
gadget_erp5_page_afs_success_case_list.js\n
gadget_erp5_page_afs_publisher_list.html\n
gadget_erp5_page_afs_software_list.html\n
gadget_erp5_page_afs_publisher_list.js\n
gadget_erp5_page_afs_software_list.js\n
gadget_erp5_page_afs_publisher_statistic.html\n
gadget_erp5_page_afs_publisher_statistic.js\n
gadget_erp5_page_afs_unsplash.html\n
gadget_erp5_page_afs_unsplash.js\n
gadget_erp5_page_afs_software.html\n
gadget_erp5_page_afs_software.html\n
gadget_erp5_page_afs_software.js\n
gadget_erp5_page_afs_directory.html\n
gadget_erp5_page_afs_directory.html\n
gadget_erp5_page_afs_directory.js\n
gadget_erp5_page_afs_directory.js\n
gadget_erp5_afs_jio.html\n
gadget_erp5_afs_jio.html\n
gadget_erp5_afs_jio.js\n
gadget_erp5_afs_panel.html\n
gadget_erp5_afs_panel.html\n
gadget_erp5_afs_panel.js\n
gadget_erp5_afs_panel.js\n
gadget_erp5_afs_router.html\n
gadget_erp5_afs_router.html\n
gadget_erp5_afs_router.js\n
gadget_erp5_afs_router.js\n
gadget_erp5_afs_jio.js\n
gadget_erp5_page_afs_success_case.js\n
gadget_erp5_page_afs_publisher_list.html\n
gadget_erp5_page_afs_publisher_list.js\n
gadget_erp5_afs.css\n
gadget_erp5_afs.css\n
gadget_erp5_afs_storage.js\n
gadget_erp5_afs_publisher_storage.js\n
gadget_erp5_page_afs_software_list.html\n
gadget_erp5_afs_converter_storage.js\n
gadget_erp5_page_afs_software_list.js\n
gadget_erp5_page_afs_software.js\n
gadget_erp5_page_afs_unsplash.js\n
gadget_erp5_page_afs_unsplash.html\n
gadget_erp5_page_afs_publisher_statistic.js\n
gadget_erp5_page_afs_publisher_statistic.html\n
NETWORK:\n
NETWORK:\n
*
*
</string>
</value>
]]>
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
...
@@ -306,7 +361,7 @@ NETWORK:\n
...
@@ -306,7 +361,7 @@ NETWORK:\n
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -320,7 +375,7 @@ NETWORK:\n
...
@@ -320,7 +375,7 @@ NETWORK:\n
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.46970.48446.4744
</string>
</value>
<value>
<string>
9
60.20037.12063.10137
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -338,7 +393,7 @@ NETWORK:\n
...
@@ -338,7 +393,7 @@ NETWORK:\n
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6169745.29
</float>
<float>
149
8657850.06
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_converter_storage_js.js
0 → 100644
View file @
f74f420e
/*jslint indent: 2, nomen: true, maxlen: 80*/
/*global window, jIO, RSVP, DOMParser, Object */
(
function
(
window
,
jIO
,
RSVP
,
DOMParser
,
Object
)
{
"
use strict
"
;
// XXX Bad proxy!
var
LOC
=
'
https://softinst56769.host.vifib.net/erp5/web_site_module/afs/
'
,
ID_LOC
=
"
https://raw.githubusercontent.com/
"
,
ID_PATH
=
"
Nexedi/awesome-free-software/master/
"
,
FETCH
=
"
Software_getAnalysis?url=
"
,
PARSER
=
new
DOMParser
();
function
garble
(
str
)
{
return
window
.
encodeURIComponent
(
str
.
replace
(
/ /g
,
"
-
"
));
}
function
isArray
(
value
)
{
return
Object
.
prototype
.
toString
.
call
(
value
)
===
'
[object Array]
'
;
}
function
isValidCase
(
success_case
)
{
return
(
success_case
!==
"
N/A
"
&&
success_case
.
title
!==
""
&&
success_case
.
title
!==
"
N/A
"
);
}
// only called on repair, convert publisher storage content into records
// of publishers, software and success cases
function
convertDataSet
(
storage
,
result_list
)
{
var
response
=
[];
if
(
result_list
.
length
===
0
)
{
return
response
;
}
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
RSVP
.
all
(
result_list
.
map
(
function
(
item
)
{
return
storage
.
get
(
item
.
id
);
}));
})
.
push
(
function
(
publisher_list
)
{
var
publisher
,
software_list
,
software
,
success_case_list
,
success_case
,
i
,
j
,
k
;
for
(
i
=
0
;
i
<
publisher_list
.
length
;
i
+=
1
)
{
publisher
=
publisher_list
[
i
];
// XXX parallel promises? title is too unreliable as id
publisher
.
item_id
=
result_list
[
i
].
id
.
split
(
"
/
"
).
pop
().
split
(
"
.
"
)[
0
];
// add publisher id
response
.
push
({
"
id
"
:
garble
(
publisher
.
item_id
),
"
value
"
:
{}
});
software_list
=
publisher
.
free_software_list
;
if
(
isArray
(
software_list
))
{
for
(
j
=
0
;
j
<
software_list
.
length
;
j
+=
1
)
{
software
=
software_list
[
j
];
// add software id
response
.
push
({
id
:
garble
(
publisher
.
item_id
)
+
"
/
"
+
garble
(
software
.
title
),
value
:
{}
});
success_case_list
=
software
.
success_case_list
;
if
(
isArray
(
success_case_list
))
{
for
(
k
=
0
;
k
<
success_case_list
.
length
;
k
+=
1
)
{
success_case
=
success_case_list
[
k
];
if
(
isValidCase
(
success_case
))
{
// add case id
response
.
push
({
id
:
garble
(
publisher
.
item_id
)
+
"
/
"
+
garble
(
software
.
title
)
+
"
/
"
+
garble
(
success_case
.
title
),
value
:
{}
});
}
}
}
}
}
}
return
response
;
});
}
function
retrieveOpenHubAnalysisTotalLines
(
software
)
{
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
jIO
.
util
.
ajax
({
type
:
"
GET
"
,
url
:
LOC
+
FETCH
+
software
.
source_code_profile
,
dataType
:
"
text
"
});
})
.
push
(
function
(
data
)
{
var
response
=
data
.
target
.
response
||
data
.
target
.
responseText
;
return
PARSER
.
parseFromString
(
response
,
"
text/xml
"
)
.
getElementsByTagName
(
"
total_code_lines
"
)[
0
].
childNodes
[
0
].
nodeValue
;
});
}
function
isValidProfileUrl
(
url
)
{
return
url
&&
url
!==
""
&&
url
.
indexOf
(
"
hub
"
)
>
-
1
;
}
function
isInt
(
value
)
{
return
!
isNaN
(
value
)
&&
(
function
(
x
)
{
if
((
x
|
0
)
===
x
)
{
return
x
;
}
return
0
;
})(
parseFloat
(
value
));
}
function
totalLines
(
arr
)
{
return
arr
.
reduce
(
function
(
running_total
,
line
)
{
return
running_total
+=
isInt
(
line
);
},
0
);
}
function
retrieveTotalLinesFromPublisher
(
publisher
)
{
var
unique_software_list
=
[];
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
RSVP
.
all
(
publisher
.
free_software_list
.
map
(
function
(
software
)
{
var
profile_url
=
software
.
source_code_profile
;
if
(
isValidProfileUrl
(
profile_url
))
{
if
(
unique_software_list
.
indexOf
(
profile_url
)
===
-
1
)
{
unique_software_list
.
push
(
profile_url
);
return
retrieveOpenHubAnalysisTotalLines
(
software
);
}
}
}).
filter
(
Boolean
));
})
.
push
(
function
(
line_list
)
{
return
totalLines
(
line_list
);
});
}
function
retrieveSuccessCaseFromSoftware
(
publisher
,
path_list
)
{
return
publisher
.
free_software_list
.
reduce
(
function
(
response
,
software
)
{
var
software_title
=
garble
(
software
.
title
);
if
(
software_title
===
path_list
[
1
])
{
if
(
isArray
(
software
.
success_case_list
))
{
return
software
.
success_case_list
.
reduce
(
function
(
response
,
item
)
{
var
case_title
=
garble
(
item
.
title
);
if
(
case_title
===
path_list
[
2
])
{
item
.
portal_type
=
"
success_case
"
;
item
.
software
=
software
.
title
;
item
.
software_website
=
software
.
website
;
item
.
publisher
=
software
.
publisher
;
item
.
publisher_website
=
software
.
website
;
item
.
category_list
=
software
.
category_list
;
item
.
uid
=
case_title
;
return
item
;
}
return
response
;
});
}
}
return
response
;
},
undefined
);
}
function
retrieveSoftwareFromPublisher
(
publisher
,
path_list
)
{
return
publisher
.
free_software_list
.
reduce
(
function
(
response
,
software
)
{
var
software_title
=
garble
(
software
.
title
);
if
(
software_title
===
path_list
[
1
])
{
software
.
portal_type
=
"
software
"
;
software
.
publisher
=
publisher
.
title
;
software
.
publisher_website
=
publisher
.
website
;
software
.
uid
=
garble
(
publisher
.
title
)
+
"
/
"
+
software_title
;
return
software
;
}
return
response
;
},
undefined
);
}
// find and assemble single object from publisher entries
function
convertDataItem
(
storage
,
id
)
{
var
path_list
=
id
.
split
(
"
/
"
),
path_len
=
path_list
.
length
,
publisher
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
storage
.
get
(
ID_LOC
+
ID_PATH
+
path_list
[
0
]
+
"
.json
"
);
})
.
push
(
function
(
result
)
{
if
(
path_len
===
1
)
{
return
RSVP
.
all
([
result
,
retrieveTotalLinesFromPublisher
(
result
)
]);
}
return
[
result
];
});
})
.
push
(
function
(
result_list
)
{
var
response
;
publisher
=
result_list
[
0
];
publisher
.
portal_type
=
"
publisher
"
;
publisher
.
uid
=
garble
(
publisher
.
title
);
publisher
.
total_lines
=
result_list
[
1
]
||
0
;
if
(
path_len
===
1
)
{
response
=
publisher
;
}
else
if
(
path_len
===
2
)
{
response
=
retrieveSoftwareFromPublisher
(
publisher
,
path_list
);
}
else
if
(
path_len
===
3
)
{
response
=
retrieveSuccessCaseFromSoftware
(
publisher
,
path_list
);
}
return
response
;
})
.
push
(
null
,
function
(
error
)
{
console
.
log
(
error
);
throw
error
;
});
}
function
ConverterStorage
(
spec
)
{
this
.
_sub_storage
=
jIO
.
createJIO
(
spec
.
sub_storage
);
}
ConverterStorage
.
prototype
.
get
=
function
(
id
)
{
return
convertDataItem
(
this
.
_sub_storage
,
id
);
};
ConverterStorage
.
prototype
.
repair
=
function
()
{
return
this
.
_sub_storage
.
repair
.
apply
(
this
.
_sub_storage
,
arguments
);
};
ConverterStorage
.
prototype
.
hasCapacity
=
function
(
name
)
{
return
(
name
===
"
list
"
);
};
ConverterStorage
.
prototype
.
buildQuery
=
function
()
{
var
storage
=
this
.
_sub_storage
,
argument_list
=
arguments
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
storage
.
buildQuery
.
apply
(
storage
,
argument_list
);
})
.
push
(
function
(
result
)
{
return
convertDataSet
(
storage
,
result
);
});
};
jIO
.
addStorage
(
'
converter_storage
'
,
ConverterStorage
);
}(
window
,
jIO
,
RSVP
,
DOMParser
,
Object
));
bt5/erp5_officejs_afs_directory/PathTemplateItem/
image_module/gadget_erp5_afs_camera_png
.xml
→
bt5/erp5_officejs_afs_directory/PathTemplateItem/
web_page_module/gadget_erp5_afs_converter_storage_js
.xml
View file @
f74f420e
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<ZopeData>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<pickle>
<global
name=
"
Image
"
module=
"erp5.portal_type"
/>
<global
name=
"
Web Script
"
module=
"erp5.portal_type"
/>
</pickle>
</pickle>
<pickle>
<pickle>
<dictionary>
<dictionary>
...
@@ -63,53 +63,23 @@
...
@@ -63,53 +63,23 @@
</tuple>
</tuple>
</value>
</value>
</item>
</item>
<item>
<key>
<string>
_count
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_mt_index
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_tree
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
<item>
<item>
<key>
<string>
content_md5
</string>
</key>
<key>
<string>
content_md5
</string>
</key>
<value>
<string>
bd1ecafea5249017c0e36104ec9aa556
</string>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<string>
image/png
</string>
</value>
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
gadget_erp5_afs_camera.png
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<value>
<none/>
<none/>
</value>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
filenam
e
</string>
</key>
<key>
<string>
default_referenc
e
</string>
</key>
<value>
<string>
afs_camera.png
</string>
</value>
<value>
<string>
gadget_erp5_afs_converter_storage.js
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
height
</string>
</key>
<key>
<string>
description
</string>
</key>
<value>
<
int>
150
</int
>
</value>
<value>
<
string>
Custom AFS converter storage
</string
>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
id
</string>
</key>
<key>
<string>
id
</string>
</key>
<value>
<string>
gadget_erp5_afs_c
amera_png
</string>
</value>
<value>
<string>
gadget_erp5_afs_c
onverter_storage_js
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
language
</string>
</key>
<key>
<string>
language
</string>
</key>
...
@@ -117,7 +87,7 @@
...
@@ -117,7 +87,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
portal_type
</string>
</key>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Image
</string>
</value>
<value>
<string>
Web Script
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
short_title
</string>
</key>
<key>
<string>
short_title
</string>
</key>
...
@@ -127,48 +97,22 @@
...
@@ -127,48 +97,22 @@
</item>
</item>
<item>
<item>
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string>
AFS Camera
</string>
</value>
<value>
<string>
Gadget AFS Converter Storage
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
version
</string>
</key>
<key>
<string>
version
</string>
</key>
<value>
<string>
001
</string>
</value>
<value>
<string>
001
</string>
</value>
</item>
</item>
<item>
<key>
<string>
width
</string>
</key>
<value>
<int>
200
</int>
</value>
</item>
<item>
<item>
<key>
<string>
workflow_history
</string>
</key>
<key>
<string>
workflow_history
</string>
</key>
<value>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
U
=
</string>
</persistent>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
I
=
</string>
</persistent>
</value>
</value>
</item>
</item>
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Length"
module=
"BTrees.Length"
/>
</pickle>
<pickle>
<int>
0
</int>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"OOBTree"
module=
"BTrees.OOBTree"
/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"OOBTree"
module=
"BTrees.OOBTree"
/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record
id=
"5"
aka=
"AAAAAAAAAAU="
>
<pickle>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
</pickle>
...
@@ -181,13 +125,19 @@
...
@@ -181,13 +125,19 @@
<item>
<item>
<key>
<string>
document_publication_workflow
</string>
</key>
<key>
<string>
document_publication_workflow
</string>
</key>
<value>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
Y
=
</string>
</persistent>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
M
=
</string>
</persistent>
</value>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
edit_workflow
</string>
</key>
<key>
<string>
edit_workflow
</string>
</key>
<value>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAc=
</string>
</persistent>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
processing_status_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAU=
</string>
</persistent>
</value>
</value>
</item>
</item>
</dictionary>
</dictionary>
...
@@ -196,7 +146,7 @@
...
@@ -196,7 +146,7 @@
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
<record
id=
"
6"
aka=
"AAAAAAAAAAY
="
>
<record
id=
"
3"
aka=
"AAAAAAAAAAM
="
>
<pickle>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
</pickle>
</pickle>
...
@@ -211,7 +161,7 @@
...
@@ -211,7 +161,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -233,7 +183,7 @@
...
@@ -233,7 +183,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6061557.92
</float>
<float>
149
8657793.17
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
@@ -249,7 +199,7 @@
...
@@ -249,7 +199,7 @@
</tuple>
</tuple>
</pickle>
</pickle>
</record>
</record>
<record
id=
"
7"
aka=
"AAAAAAAAAAc
="
>
<record
id=
"
4"
aka=
"AAAAAAAAAAQ
="
>
<pickle>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
</pickle>
</pickle>
...
@@ -264,7 +214,7 @@
...
@@ -264,7 +214,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -278,7 +228,7 @@
...
@@ -278,7 +228,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.45174.56579.19421
</string>
</value>
<value>
<string>
9
60.25923.56736.46438
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -296,7 +246,64 @@
...
@@ -296,7 +246,64 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
1496061545.81
</float>
<float>
1498838738.54
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
<record
id=
"5"
aka=
"AAAAAAAAAAU="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
detect_converted_file
</string>
</value>
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
3
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
error_message
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_processing_state
</string>
</key>
<value>
<string>
converted
</string>
</value>
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
0.0.0.0
</string>
</value>
</item>
<item>
<key>
<string>
time
</string>
</key>
<value>
<object>
<klass>
<global
name=
"DateTime"
module=
"DateTime.DateTime"
/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>
1498657059.06
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_css.css
View file @
f74f420e
...
@@ -273,6 +273,34 @@
...
@@ -273,6 +273,34 @@
}
}
}
}
/*
-------------------------------------------------------------------------
------------------------- OPENHUB ATTRIBUTION ---------------------------
-------------------------------------------------------------------------
*/
div
[
data-gadget-scope
=
'panel'
]
ul
li
a
:first-child:nth-last-child
(
2
)
{
display
:
inline-block
;
width
:
62%
;
vertical-align
:
middle
;
}
div
[
data-gadget-scope
=
'panel'
]
ul
li
a
:first-child:nth-last-child
(
2
)
~
a
{
display
:
inline-block
;
width
:
33%
;
vertical-align
:
middle
;
margin
:
0
;
padding
:
0
;
}
div
[
data-gadget-scope
=
'panel'
]
ul
li
a
:first-child:nth-last-child
(
2
)
~
a
img
{
height
:
100%
;
width
:
80px
;
margin
:
0
;
padding
:
0
;
}
div
[
data-gadget-scope
=
'panel'
]
ul
li
a
:first-child:nth-last-child
(
2
)
~
a
:hover
,
div
[
data-gadget-scope
=
'panel'
]
ul
li
a
:first-child:nth-last-child
(
2
)
~
a
:active
{
background-color
:
inherit
;
}
/*
/*
-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------- UNSPLASH BANNER ------------------------------
-------------------------- UNSPLASH BANNER ------------------------------
...
@@ -294,7 +322,7 @@
...
@@ -294,7 +322,7 @@
.ui-banner-section
img
{
.ui-banner-section
img
{
/* max-height: 100%; */
/* max-height: 100%; */
max-width
:
100%
;
max-width
:
100%
;
width
:
auto
;
width
:
100%
;
height
:
auto
;
height
:
auto
;
position
:
absolute
;
position
:
absolute
;
top
:
0
;
top
:
0
;
...
@@ -308,13 +336,13 @@
...
@@ -308,13 +336,13 @@
.ui-banner-section
span
{
.ui-banner-section
span
{
position
:
absolute
;
position
:
absolute
;
bottom
:
0
;
bottom
:
0
;
right
:
0
;
right
:
2em
;
color
:
white
;
color
:
white
;
font-size
:
small
;
font-size
:
small
;
padding
:
0
.5em
.25em
0
;
padding
:
0
.5em
.25em
0
;
}
}
.ui-banner-section
span
a
{
.ui-banner-section
span
a
{
color
:
rgb
(
153
,
153
,
153
)
;
color
:
#fff
;
}
}
.ui-banner-section
h1
{
.ui-banner-section
h1
{
position
:
absolute
;
position
:
absolute
;
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_css.xml
View file @
f74f420e
...
@@ -234,7 +234,7 @@
...
@@ -234,7 +234,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.36825.37639.35106
</string>
</value>
<value>
<string>
9
60.20124.44127.50739
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -252,7 +252,7 @@
...
@@ -252,7 +252,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
5561064.
3
</float>
<float>
149
8491332.9
3
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_jio_html.html
View file @
f74f420e
<!Doctype html>
<!Doctype html>
<html>
<html>
<head>
<head>
<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"
>
<title>
Jio Gadget
</title>
<title>
Jio Gadget
</title>
<!-- renderjs -->
<script
src=
"rsvp.js"
></script>
<script
src=
"rsvp.js"
type=
"text/javascript"
></script>
<script
src=
"renderjs.js"
></script>
<script
src=
"renderjs.js"
type=
"text/javascript"
></script>
<script
src=
"jiodev.js"
></script>
<script
src=
"jiodev.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_afs_storage.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_afs_jio.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_afs_publisher_storage.js"
></script>
<script
src=
"gadget_erp5_afs_converter_storage.js"
></script>
<script
src=
"gadget_erp5_afs_jio.js"
></script>
</head>
</head>
<body>
<body>
<div
data-gadget-url=
'gadget_jio.html'
data-gadget-scope=
'jio'
></div>
<div
data-gadget-url=
'gadget_jio.html'
data-gadget-scope=
'jio'
></div>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_jio_html.xml
View file @
f74f420e
...
@@ -232,7 +232,7 @@
...
@@ -232,7 +232,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.35277.2835.34423
</string>
</value>
<value>
<string>
9
60.24363.10114.40618
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -250,7 +250,7 @@
...
@@ -250,7 +250,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
5467687.67
</float>
<float>
149
8744996.96
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_jio_js.js
View file @
f74f420e
/*global window, rJS, RSVP,
/*global window, rJS */
jIO, DOMParser */
/*jslint indent: 2, nomen: true, maxlen: 80*/
/*jslint indent: 2, maxerr: 3, nomen: true */
(
function
(
window
,
rJS
)
{
(
function
(
window
,
rJS
,
RSVP
)
{
"
use strict
"
;
"
use strict
"
;
var
DIRTY_OLOH_LOOKUP_UNTIL_API_WORKS
=
{
/////////////////////////////////////////////////////////////////
"
https://www.openhub.net/p/alfresco/analyses/latest/languages_summary
"
:
62894263
,
// some methods
"
https://www.openhub.net/p/swift-lang/analyses/latest/languages_summary
"
:
755449
,
/////////////////////////////////////////////////////////////////
"
https://www.openhub.net/p/bluemind/analyses/latest/languages_summary
"
:
857795
,
"
https://www.openhub.net/p/drupalcommerce/analyses/latest/languages_summary
"
:
49743
,
"
https://www.openhub.net/p/obm/analyses/latest/languages_summary
"
:
363914
,
"
https://www.openhub.net/p/linshare/analyses/latest/languages_summary
"
:
185407
,
"
https://www.openhub.net/p/linid-directory-manager/analyses/latest/languages_summary
"
:
725443
,
"
https://www.openhub.net/p/openpaas/analyses/latest/languages_summary
"
:
228875
,
"
https://www.openhub.net/p/magento/analyses/latest/languages_summary
"
:
13507099
,
"
https://www.openhub.net/p/mariadb/analyses/latest/languages_summary
"
:
3163137
,
"
https://www.openhub.net/p/vscode/analyses/latest/languages_summary
"
:
106972
,
"
https://www.openhub.net/p/mongodb/analyses/latest/languages_summary
"
:
1734408
,
"
https://www.openhub.net/p/erp5/analyses/latest/languages_summary
"
:
11685522
,
"
https://www.openhub.net/p/SlapOS/analyses/latest/languages_summary
"
:
583328
,
"
https://www.openhub.net/p/wendelin/analyses/latest/languages_summary
"
:
123904
,
"
https://www.openhub.net/p/renderjs/analyses/latest/languages_summary
"
:
52261
,
"
https://www.openhub.net/p/odoo/analyses/latest/languages_summary
"
:
2492373
,
"
https://www.openhub.net/p/mondrian/analyses/latest/languages_summary
"
:
1319124
,
"
https://www.openhub.net/p/PrestaShop/analyses/latest/languages_summary
"
:
539680
,
"
https://www.openhub.net/p/symfony/analyses/latest/languages_summary
"
:
1480506
,
"
https://www.openhub.net/p/php-twig/analyses/latest/languages_summary
"
:
22572
,
"
https://www.openhub.net/p/fabpots_Silex/analyses/latest/languages_summary
"
:
11586
,
"
https://www.openhub.net/p/talend-studio/analyses/latest/languages_summary
"
:
287512
,
"
https://www.openhub.net/p/xwiki/analyses/latest/languages_summary
"
:
7909332
};
// XXX
... lord have mercy
// XXX
: the two methods below should be inside jiodev
function
mockupQueryParam
(
param
,
select_list
)
{
function
mockupQueryParam
(
param
,
select_list
)
{
var
wild_param
=
param
.
replace
(
/
[
()
]
/g
,
"
%
"
).
replace
(
/ /g
,
''
),
var
wild_param
=
param
.
replace
(
/
[
()
]
/g
,
"
%
"
).
replace
(
/ /g
,
''
);
return_list
=
[],
return
'
(
'
+
select_list
.
map
(
function
(
key
)
{
len
,
return
key
+
'
:"
'
+
wild_param
+
'
"
'
;
i
;
}).
join
(
'
OR
'
)
+
'
)
'
;
for
(
i
=
0
,
len
=
select_list
.
length
;
i
<
len
;
i
+=
1
)
{
return_list
.
push
(
select_list
[
i
]
+
'
:"
'
+
wild_param
+
'
"
'
);
}
return
'
(
'
+
return_list
.
join
(
'
OR
'
)
+
'
)
'
;
}
}
// XXX... lord, I need more mercy
function
pimpQuery
(
option_dict
)
{
function
updateQuery
(
query
,
select_list
)
{
var
query_param_list
=
option_dict
.
query
.
split
(
"
AND
"
),
var
query_param_list
=
query
.
split
(
"
AND
"
),
query
=
option_dict
.
query
,
key_list
=
option_dict
.
select_list
||
[],
param
,
param
,
len
,
len
,
i
;
i
;
for
(
i
=
0
,
len
=
query_param_list
.
length
;
i
<
len
;
i
+=
1
)
{
for
(
i
=
0
,
len
=
query_param_list
.
length
;
i
<
len
;
i
+=
1
)
{
param
=
query_param_list
[
i
];
param
=
query_param_list
[
i
];
// search
// search
if
(
param
.
split
(
"
:
"
).
length
!==
2
)
{
if
(
param
.
split
(
"
:
"
).
length
!==
2
)
{
return
query
.
replace
(
param
,
mockupQueryParam
(
param
,
select
_list
));
return
query
.
replace
(
param
,
mockupQueryParam
(
param
,
key
_list
));
}
}
// hide rows
// hide rows
...
@@ -65,275 +39,73 @@
...
@@ -65,275 +39,73 @@
return
query
;
return
query
;
}
}
function
createDataSheets
(
gadget
)
{
gadget
.
jio_allDocs
=
gadget
.
state_parameter_dict
.
jio_storage
.
allDocs
;
gadget
.
jio_get
=
gadget
.
state_parameter_dict
.
jio_storage
.
get
;
gadget
.
jio_put
=
gadget
.
state_parameter_dict
.
jio_storage
.
put
;
return
gadget
.
jio_allDocs
()
/////////////////////////////////////////////////////////////////
// Make Publisher datasheets
/////////////////////////////////////////////////////////////////
.
push
(
function
(
data
)
{
var
uid
=
0
,
publisher_id_list
,
promise_list
;
/*
function isReplicate(el) {
return (el.id.indexOf("_replicate_") < 0);
}
*/
function
setPortalTypeOnPublisher
(
el
)
{
return
gadget
.
jio_get
(
el
.
id
)
.
push
(
function
(
publisher_object
)
{
publisher_object
.
portal_type
=
"
publisher
"
;
//publisher_object.url = publisher_object.website;
uid
+=
1
;
publisher_object
.
uid
=
uid
.
toString
();
return
gadget
.
jio_put
(
publisher_object
.
uid
,
publisher_object
);
});
}
publisher_id_list
=
data
.
data
.
rows
;
promise_list
=
publisher_id_list
.
map
(
setPortalTypeOnPublisher
);
return
RSVP
.
all
(
promise_list
);
})
.
push
(
function
()
{
return
gadget
.
jio_allDocs
({
select_list
:
[
'
title
'
,
'
free_software_list
'
,
'
website
'
,
'
lines
'
],
query
:
'
portal_type: "publisher"
'
});
})
/////////////////////////////////////////////////////////////////
// Create Statistic Sheets
/////////////////////////////////////////////////////////////////
.
push
(
function
(
result_list
)
{
var
publisher_list
=
result_list
.
data
.
rows
,
statistic_list
=
[],
i_len
=
publisher_list
.
length
,
i
;
// OPENHUB LOOKUP?
// curl https://www.openhub.net/projects/{project_id}/analyses/latest.xml
function
createStatisticSheet
(
my_publisher_row
)
{
var
software_list
=
my_publisher_row
.
value
.
free_software_list
,
j_len
=
software_list
.
length
,
profile_url
,
software_analysis
,
software_analysis_list
=
[],
j
;
for
(
j
=
0
;
j
<
j_len
;
j
+=
1
)
{
profile_url
=
software_list
[
j
].
source_code_profile
;
if
(
profile_url
&&
profile_url
!==
""
)
{
// more yuck
software_analysis
=
DIRTY_OLOH_LOOKUP_UNTIL_API_WORKS
[
profile_url
];
delete
DIRTY_OLOH_LOOKUP_UNTIL_API_WORKS
[
profile_url
];
//software_analysis = jIO.util.ajax({
// type: "GET",
// "url": profile_url.replace("/languages_summary", ".xml")
//});
// prevent multiple entries into calculation
}
software_analysis_list
.
push
(
software_analysis
||
0
);
}
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
RSVP
.
all
(
software_analysis_list
);
})
.
push
(
function
(
my_stat_list
)
{
var
line_total
=
0
,
k_len
=
my_stat_list
.
length
,
k
;
for
(
k
=
0
;
k
<
k_len
;
k
+=
1
)
{
if
(
my_stat_list
[
k
])
{
// xml = parser.parseFromString(my_stat_list[k],"text/xml");
//line_total += xml.getElementsByTagName("total_code_lines")[0]
// .childNodes[0].nodeValue;
line_total
+=
my_stat_list
[
k
];
}
}
// actually we need to store this...
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
jio_get
(
my_publisher_row
.
id
);
})
.
push
(
function
(
my_publisher
)
{
my_publisher
.
lines
=
line_total
;
// my_publisher_row.value.lines = line_total.toString();
return
gadget
.
jio_put
(
my_publisher
.
uid
,
my_publisher
);
});
});
}
for
(
i
=
0
;
i
<
i_len
;
i
+=
1
)
{
statistic_list
.
push
(
createStatisticSheet
(
publisher_list
[
i
]));
}
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
RSVP
.
all
(
statistic_list
);
})
.
push
(
function
()
{
return
result_list
;
});
})
/////////////////////////////////////////////////////////////////
// Make Software datasheets
/////////////////////////////////////////////////////////////////
.
push
(
function
(
publisher_list
)
{
var
uid
=
2000
,
save_software_promise_list
,
publishers
,
promise_list
;
function
saveSoftwareListFromPublisher
(
j
)
{
var
publisher
=
j
.
value
.
title
,
software_list
=
j
.
value
.
free_software_list
,
website
=
j
.
value
.
website
;
function
saveSoftwareDocument
(
software
)
{
software
.
portal_type
=
"
software
"
;
software
.
publisher
=
publisher
;
software
.
publisher_website
=
website
;
uid
+=
1
;
software
.
uid
=
uid
.
toString
();
return
gadget
.
jio_put
(
software
.
uid
,
software
);
}
save_software_promise_list
=
software_list
.
map
(
saveSoftwareDocument
);
return
RSVP
.
all
(
save_software_promise_list
);
}
publishers
=
publisher_list
.
data
.
rows
;
promise_list
=
publishers
.
map
(
saveSoftwareListFromPublisher
);
return
RSVP
.
all
(
promise_list
);
})
.
push
(
function
()
{
return
gadget
.
jio_allDocs
({
select_list
:
[
'
title
'
,
'
website
'
,
'
success_case_list
'
,
'
publisher
'
,
'
category_list
'
],
query
:
'
portal_type: "software"
'
});
})
/////////////////////////////////////////////////////////////////
// Make Success Case datasheets
/////////////////////////////////////////////////////////////////
.
push
(
function
(
software_list
)
{
var
uid
=
3000
,
softwares
,
promise_list
;
function
saveSuccessCaseListFromSoftware
(
softwareObject
)
{
var
software
=
softwareObject
.
value
,
publisher
=
softwareObject
.
value
.
publisher
,
website
=
softwareObject
.
value
.
website
,
success_case_list
=
softwareObject
.
value
.
success_case_list
,
save_success_case_promise_list
;
function
isValid
(
success_case
)
{
return
(
success_case
!==
"
N/A
"
&&
success_case
.
title
!==
""
&&
success_case
.
title
!==
"
N/A
"
);
}
function
addProperties
(
success_case
)
{
success_case
.
portal_type
=
"
success_case
"
;
success_case
.
software
=
software
.
title
;
success_case
.
software_website
=
software
.
website
;
success_case
.
publisher
=
publisher
;
success_case
.
publisher_website
=
website
;
success_case
.
category_list
=
software
.
category_list
;
uid
+=
1
;
success_case
.
uid
=
uid
.
toString
();
return
gadget
.
jio_put
(
success_case
.
uid
,
success_case
);
}
save_success_case_promise_list
=
success_case_list
.
filter
(
isValid
)
.
map
(
addProperties
);
return
RSVP
.
all
(
save_success_case_promise_list
);
}
softwares
=
software_list
.
data
.
rows
.
filter
(
function
(
sw
)
{
return
(
sw
.
value
.
success_case_list
!==
"
N/A
"
);
});
promise_list
=
softwares
.
map
(
saveSuccessCaseListFromSoftware
);
return
RSVP
.
all
(
promise_list
);
/*
})
.push(undefined, function (error) {
console.log(error);
*/
});
}
rJS
(
window
)
rJS
(
window
)
/////////////////////////////////////////////////////////////////
// ready
/////////////////////////////////////////////////////////////////
.
ready
(
function
(
gadget
)
{
.
ready
(
function
(
gadget
)
{
// not so nice...
return
gadget
.
getDeclaredGadget
(
'
jio
'
)
return
gadget
.
getDeclaredGadget
(
'
jio
'
)
.
push
(
function
(
jio_gadget
)
{
.
push
(
function
(
jio_gadget
)
{
// Initialize the gadget local parameters
gadget
.
state_parameter_dict
=
{
"
jio_storage
"
:
jio_gadget
};
gadget
.
state_parameter_dict
=
{
jio_storage
:
jio_gadget
};
});
});
})
})
/////////////////////////////////////////////////////////////////
// acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
'
getSetting
'
,
'
getSetting
'
)
.
declareAcquiredMethod
(
'
getSetting
'
,
'
getSetting
'
)
.
declareAcquiredMethod
(
'
redirect
'
,
'
redirect
'
)
.
declareAcquiredMethod
(
'
redirect
'
,
'
redirect
'
)
.
declareAcquiredMethod
(
'
getUrlFor
'
,
'
getUrlFor
'
)
.
declareAcquiredMethod
(
'
getUrlFor
'
,
'
getUrlFor
'
)
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.
declareMethod
(
'
createJio
'
,
function
()
{
.
declareMethod
(
'
createJio
'
,
function
()
{
var
gadget
=
this
;
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
gadget
.
state_parameter_dict
.
jio_storage
.
createJio
({
return
gadget
.
state_parameter_dict
.
jio_storage
.
createJio
({
"
type
"
:
"
replicate
"
,
check_local_modification
:
false
,
"
check_local_modification
"
:
false
,
check_local_creation
:
false
,
"
check_local_creation
"
:
false
,
check_local_deletion
:
false
,
"
check_local_deletion
"
:
false
,
parallel_operation_amount
:
100
,
"
local_sub_storage
"
:
{
type
:
"
replicate
"
,
"
type
"
:
"
query
"
,
local_sub_storage
:
{
"
sub_storage
"
:
{
type
:
"
memory
"
}
type
:
"
query
"
,
},
sub_storage
:
{
"
remote_sub_storage
"
:
{
type
:
"
memory
"
"
type
"
:
"
query
"
,
}
"
sub_storage
"
:
{
},
"
type
"
:
"
converter_storage
"
,
remote_sub_storage
:
{
"
sub_storage
"
:
{
type
:
"
query
"
,
"
type
"
:
"
replicate
"
,
sub_storage
:
{
"
check_local_modification
"
:
false
,
type
:
"
publisher_storage
"
,
"
check_local_creation
"
:
false
,
url
:
"
/
"
"
check_local_deletion
"
:
false
,
"
local_sub_storage
"
:
{
"
type
"
:
"
query
"
,
"
sub_storage
"
:
{
type
:
"
memory
"
}
},
"
remote_sub_storage
"
:
{
"
type
"
:
"
query
"
,
"
sub_storage
"
:
{
type
:
"
publisher_storage
"
,
url
:
"
/
"
}
}
}
}
}
})
}
.
push
(
function
()
{
}
return
gadget
.
state_parameter_dict
.
jio_storage
.
repair
();
});
})
return
gadget
.
state_parameter_dict
.
jio_storage
.
repair
();
.
push
(
function
()
{
return
createDataSheets
(
gadget
);
});
});
})
})
.
declareMethod
(
'
allDocs
'
,
function
(
option_dict
)
{
.
declareMethod
(
'
allDocs
'
,
function
(
option_dict
)
{
option_dict
.
query
=
updateQuery
(
option_dict
.
query
,
option_dict
.
select_list
);
if
(
option_dict
&&
option_dict
.
query
)
{
option_dict
.
query
=
pimpQuery
(
option_dict
);
}
return
this
.
state_parameter_dict
.
jio_storage
.
allDocs
(
option_dict
);
return
this
.
state_parameter_dict
.
jio_storage
.
allDocs
(
option_dict
);
})
})
.
declareMethod
(
'
getAttachment
'
,
function
(
id
,
view
)
{
.
declareMethod
(
'
getAttachment
'
,
function
(
id
,
view
)
{
...
@@ -348,4 +120,5 @@
...
@@ -348,4 +120,5 @@
.
declareMethod
(
'
repair
'
,
function
()
{
.
declareMethod
(
'
repair
'
,
function
()
{
return
this
.
state_parameter_dict
.
jio_storage
.
repair
();
return
this
.
state_parameter_dict
.
jio_storage
.
repair
();
});
});
}(
window
,
rJS
,
RSVP
));
\ No newline at end of file
}(
window
,
rJS
));
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_jio_js.xml
View file @
f74f420e
...
@@ -97,7 +97,7 @@
...
@@ -97,7 +97,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string>
Gadget AFS
Storage
JS
</string>
</value>
<value>
<string>
Gadget AFS
JIO
JS
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
version
</string>
</key>
<key>
<string>
version
</string>
</key>
...
@@ -214,7 +214,7 @@
...
@@ -214,7 +214,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -228,7 +228,7 @@
...
@@ -228,7 +228,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.45138.58632.4420
</string>
</value>
<value>
<string>
9
60.24361.33104.43502
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -246,7 +246,7 @@
...
@@ -246,7 +246,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6066128.63
</float>
<float>
149
8810373.32
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_panel_html.html
View file @
f74f420e
<!Doctype html>
<!Doctype html>
<html>
<html>
<head>
<head>
<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"
>
<title>
Panel
</title>
<title>
Panel
</title>
<!-- renderjs -->
<script
src=
"rsvp.js"
></script>
<script
src=
"rsvp.js"
type=
"text/javascript"
></script>
<script
src=
"renderjs.js"
></script>
<script
src=
"renderjs.js"
type=
"text/javascript"
></script>
<script
src=
"handlebars.js"
></script>
<script
src=
"handlebars.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_global.js"
></script>
<script
src=
"gadget_global.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_afs_panel.js"
type=
"text/javascript"
></script>
<script
id=
"panel-template-header"
type=
"text/x-handlebars-template"
>
<script
id=
"panel-template-header"
type=
"text/x-handlebars-template"
>
<
div
data
-
role
=
"
header
"
class
=
"
ui-bar-inherit
"
>
<
div
data
-
role
=
"
header
"
class
=
"
ui-bar-inherit
"
>
...
@@ -19,7 +20,7 @@
...
@@ -19,7 +20,7 @@
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"
panel_img
"
>
<
div
class
=
"
panel_img
"
>
<
img
class
=
"
ui-title
"
alt
=
"
AFS
"
src
=
"
gadget_erp5_afs_logo.png?format=png
"
/>
<
img
class
=
"
ui-title
"
alt
=
"
AFS
"
src
=
"
data:image/png;base64,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
"
/>
<
/div
>
<
/div
>
<!--
div
class
=
"
ui-controlgroup ui-controlgroup-horizontal ui-btn-right
"
>
<!--
div
class
=
"
ui-controlgroup ui-controlgroup-horizontal ui-btn-right
"
>
<
div
class
=
"
ui-controlgroup-controls
"
>
<
div
class
=
"
ui-controlgroup-controls
"
>
...
@@ -33,7 +34,10 @@
...
@@ -33,7 +34,10 @@
<
div
class
=
"
ui-content
"
>
<
div
class
=
"
ui-content
"
>
<
ul
data
-
role
=
"
listview
"
class
=
"
ui-listview
"
data
-
enhanced
=
"
true
"
>
<
ul
data
-
role
=
"
listview
"
class
=
"
ui-listview
"
data
-
enhanced
=
"
true
"
>
<
li
class
=
"
ui-first-child
"
><
a
href
=
"
{{directory_href}}
"
class
=
"
ui-btn ui-btn-icon-left ui-icon-table
"
data
-
i18n
=
"
Directory
"
accesskey
=
"
d
"
>
Directory
<
/a></
li
>
<
li
class
=
"
ui-first-child
"
><
a
href
=
"
{{directory_href}}
"
class
=
"
ui-btn ui-btn-icon-left ui-icon-table
"
data
-
i18n
=
"
Directory
"
accesskey
=
"
d
"
>
Directory
<
/a></
li
>
<
li
><
a
href
=
"
{{publisher_statistic_href}}
"
class
=
"
ui.btn ui-btn-icon-left ui-icon-trophy
"
data
-
i18n
=
"
Statistics
"
accesskey
=
"
t
"
>
Statistics
<
/a></
li
>
<
li
>
<
a
href
=
"
{{publisher_statistic_href}}
"
class
=
"
ui.btn ui-btn-icon-left ui-icon-trophy
"
data
-
i18n
=
"
Statistics
"
accesskey
=
"
t
"
>
Statistics
<
/a
>
<
a
href
=
"
https://www.openhub.net
"
><
img
src
=
"
https://www.openhub.net/images/badges/mini.gif
"
/><
/a
>
<
/li
>
<
li
><
a
href
=
"
{{publisher_href}}
"
class
=
"
ui-btn ui-btn-icon-left ui-icon-university
"
data
-
i18n
=
"
Publishers
"
accesskey
=
"
a
"
>
Publishers
<
/a></
li
>
<
li
><
a
href
=
"
{{publisher_href}}
"
class
=
"
ui-btn ui-btn-icon-left ui-icon-university
"
data
-
i18n
=
"
Publishers
"
accesskey
=
"
a
"
>
Publishers
<
/a></
li
>
<
li
><
a
href
=
"
{{software_href}}
"
class
=
"
ui-btn ui-btn-icon-left ui-icon-cube
"
data
-
i18n
=
"
Software Products
"
accesskey
=
"
p
"
>
Software
Products
<
/a></
li
>
<
li
><
a
href
=
"
{{software_href}}
"
class
=
"
ui-btn ui-btn-icon-left ui-icon-cube
"
data
-
i18n
=
"
Software Products
"
accesskey
=
"
p
"
>
Software
Products
<
/a></
li
>
<
li
class
=
"
ui-last-child
"
><
a
href
=
"
{{success_case_href}}
"
class
=
"
ui-btn ui-btn-icon-left ui-icon-book
"
data
-
i18n
=
"
Success Cases
"
accesskey
=
"
s
"
>
Success
Cases
<
/a></
li
>
<
li
class
=
"
ui-last-child
"
><
a
href
=
"
{{success_case_href}}
"
class
=
"
ui-btn ui-btn-icon-left ui-icon-book
"
data
-
i18n
=
"
Success Cases
"
accesskey
=
"
s
"
>
Success
Cases
<
/a></
li
>
...
@@ -66,10 +70,6 @@
...
@@ -66,10 +70,6 @@
<
/ul
>
<
/ul
>
<
/div
>
<
/div
>
</script>
</script>
<!-- custom script -->
<script
src=
"gadget_erp5_afs_panel.js"
type=
"text/javascript"
></script>
</head>
</head>
<body>
<body>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_panel_html.xml
View file @
f74f420e
...
@@ -218,7 +218,7 @@
...
@@ -218,7 +218,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -232,7 +232,7 @@
...
@@ -232,7 +232,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.46970.48446.4744
</string>
</value>
<value>
<string>
9
60.20109.14881.10990
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -250,7 +250,7 @@
...
@@ -250,7 +250,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6169827.2
4
</float>
<float>
149
8657650.6
4
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_panel_js.js
View file @
f74f420e
/*jslint
nomen: true, indent: 2, maxerr: 3
*/
/*jslint
indent: 2, nomen: true, maxlen: 80
*/
/*global
document, window, rJS, Handlebars, RSVP, loopEventListener, Node
*/
/*global
window, Node, rJS, Handlebars, RSVP, loopEventListener
*/
(
function
(
document
,
window
,
rJS
,
Handlebars
,
RSVP
,
loopEventListener
,
Node
)
{
(
function
(
window
,
Node
,
rJS
,
Handlebars
,
RSVP
,
loopEventListener
)
{
"
use strict
"
;
"
use strict
"
;
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
//
temlat
es
//
some variabl
es
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
// Precompile templates while loading the first gadget instance
var
gadget_klass
=
rJS
(
window
),
var
gadget_klass
=
rJS
(
window
),
source_header
=
gadget_klass
.
__template_element
source_header
=
gadget_klass
.
__template_element
.
getElementById
(
"
panel-template-header
"
)
.
getElementById
(
"
panel-template-header
"
).
innerHTML
,
.
innerHTML
,
panel_template_header
=
Handlebars
.
compile
(
source_header
),
panel_template_header
=
Handlebars
.
compile
(
source_header
),
source_body
=
gadget_klass
.
__template_element
source_body
=
gadget_klass
.
__template_element
.
getElementById
(
"
panel-template-body
"
)
.
getElementById
(
"
panel-template-body
"
).
innerHTML
,
.
innerHTML
,
panel_template_body
=
Handlebars
.
compile
(
source_body
);
panel_template_body
=
Handlebars
.
compile
(
source_body
);
/////////////////////////////////////////////////////////////////
// some methods
/////////////////////////////////////////////////////////////////
function
getUrlDict
(
param
)
{
return
{
command
:
'
display
'
,
options
:
{
page
:
param
}};
}
gadget_klass
gadget_klass
/////////////////////////////////////////////////////////////////
// state
/////////////////////////////////////////////////////////////////
.
setState
({
.
setState
({
visible
:
false
,
visible
:
false
,
desktop
:
false
desktop
:
false
})
})
.
onStateChange
(
function
(
modification_dict
)
{
var
gadget
=
this
;
if
(
modification_dict
.
hasOwnProperty
(
"
visible
"
))
{
if
(
gadget
.
state
.
visible
)
{
if
(
!
gadget
.
element
.
classList
.
contains
(
'
visible
'
))
{
gadget
.
element
.
classList
.
toggle
(
'
visible
'
);
}
}
else
{
if
(
gadget
.
element
.
classList
.
contains
(
'
visible
'
))
{
gadget
.
element
.
classList
.
remove
(
'
visible
'
);
}
}
}
})
//////////////////////////////////////////////
//////////////////////////////////////////////
// acquired method
// acquired method
s
//////////////////////////////////////////////
//////////////////////////////////////////////
.
declareAcquiredMethod
(
"
translateHtml
"
,
"
translateHtml
"
)
.
declareAcquiredMethod
(
"
getUrlFor
"
,
"
getUrlFor
"
)
.
declareAcquiredMethod
(
"
getUrlFor
"
,
"
getUrlFor
"
)
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
...
@@ -37,6 +60,7 @@
...
@@ -37,6 +60,7 @@
visible
:
!
this
.
state
.
visible
visible
:
!
this
.
state
.
visible
});
});
})
})
.
declareMethod
(
'
close
'
,
function
()
{
.
declareMethod
(
'
close
'
,
function
()
{
return
this
.
changeState
({
return
this
.
changeState
({
visible
:
false
visible
:
false
...
@@ -44,82 +68,69 @@
...
@@ -44,82 +68,69 @@
})
})
.
declareMethod
(
'
render
'
,
function
()
{
.
declareMethod
(
'
render
'
,
function
()
{
var
g
=
this
;
var
g
adget
=
this
;
return
new
RSVP
.
Queue
()
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
.
push
(
function
()
{
return
RSVP
.
all
([
return
RSVP
.
all
([
g
.
getUrlFor
({
command
:
'
display
'
,
options
:
{
page
:
"
afs_directory
"
}}
),
g
adget
.
getUrlFor
(
getUrlDict
(
"
afs_directory
"
)
),
g
.
getUrlFor
({
command
:
'
display
'
,
options
:
{
page
:
"
afs_publisher_statistic
"
}}
),
g
adget
.
getUrlFor
(
getUrlDict
(
"
afs_publisher_statistic
"
)
),
g
.
getUrlFor
({
command
:
'
display
'
,
options
:
{
page
:
"
afs_publisher_list
"
}}
),
g
adget
.
getUrlFor
(
getUrlDict
(
"
afs_publisher_list
"
)
),
g
.
getUrlFor
({
command
:
'
display
'
,
options
:
{
page
:
"
afs_software_list
"
}}
),
g
adget
.
getUrlFor
(
getUrlDict
(
"
afs_software_list
"
)
),
g
.
getUrlFor
({
command
:
'
display
'
,
options
:
{
page
:
"
afs_success_case_list
"
}}
)
g
adget
.
getUrlFor
(
getUrlDict
(
"
afs_success_case_list
"
)
)
]);
]);
})
})
.
push
(
function
(
all_result
)
{
.
push
(
function
(
result_list
)
{
var
content
=
panel_template_header
();
// XXX: Customize panel header!
var
tmp
=
panel_template_header
()
+
content
+=
panel_template_body
({
panel_template_body
({
"
directory_href
"
:
result_list
[
0
],
"
directory_href
"
:
all_result
[
0
],
"
publisher_statistic_href
"
:
result_list
[
1
],
"
publisher_statistic_href
"
:
all_result
[
1
],
"
publisher_href
"
:
result_list
[
2
],
"
publisher_href
"
:
all_result
[
2
],
"
software_href
"
:
result_list
[
3
],
"
software_href
"
:
all_result
[
3
],
"
success_case_href
"
:
result_list
[
4
]
"
success_case_href
"
:
all_result
[
4
]
});
});
g
.
element
.
querySelector
(
"
div
"
).
innerHTML
=
tmp
;
});
})
.
onStateChange
(
function
(
modification_dict
)
{
gadget
.
element
.
querySelector
(
"
div
"
).
innerHTML
=
content
;
if
(
modification_dict
.
hasOwnProperty
(
"
visible
"
))
{
});
if
(
this
.
state
.
visible
)
{
if
(
!
this
.
element
.
classList
.
contains
(
'
visible
'
))
{
this
.
element
.
classList
.
toggle
(
'
visible
'
);
}
}
else
{
if
(
this
.
element
.
classList
.
contains
(
'
visible
'
))
{
this
.
element
.
classList
.
remove
(
'
visible
'
);
}
}
}
})
})
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
// declared
service
s
// declared
job
s
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
.
onEvent
(
'
click
'
,
function
(
evt
)
{
if
((
evt
.
target
.
nodeType
===
Node
.
ELEMENT_NODE
)
&&
(
evt
.
target
.
tagName
===
'
BUTTON
'
))
{
return
this
.
toggle
();
}
},
false
,
false
)
.
declareJob
(
'
listenResize
'
,
function
()
{
.
declareJob
(
'
listenResize
'
,
function
()
{
// resize should be only trigger after the render method
// as displaying the panel rely on external gadget (for translation for example)
// resize should be only trigger after the render method as displaying
// the panel rely on external gadget (for translation for example)
var
result
,
var
result
,
event
,
event
,
context
=
this
;
context
=
this
;
function
extractSizeAndDispatch
()
{
function
extractSizeAndDispatch
()
{
if
(
window
.
matchMedia
(
"
(min-width: 85em)
"
).
matches
)
{
if
(
window
.
matchMedia
(
"
(min-width: 85em)
"
).
matches
)
{
return
context
.
changeState
({
return
context
.
changeState
({
desktop
:
true
});
desktop
:
true
});
}
}
return
context
.
changeState
({
return
context
.
changeState
({
desktop
:
false
});
desktop
:
false
});
}
}
result
=
loopEventListener
(
window
,
'
resize
'
,
false
,
result
=
loopEventListener
(
window
,
'
resize
'
,
false
,
extractSizeAndDispatch
);
extractSizeAndDispatch
);
event
=
document
.
createEvent
(
"
Event
"
);
event
=
window
.
document
.
createEvent
(
"
Event
"
);
event
.
initEvent
(
'
resize
'
,
true
,
true
);
event
.
initEvent
(
'
resize
'
,
true
,
true
);
window
.
dispatchEvent
(
event
);
window
.
dispatchEvent
(
event
);
return
result
;
return
result
;
})
})
/////////////////////////////////////////////////////////////////
// event handlers
/////////////////////////////////////////////////////////////////
.
onEvent
(
'
click
'
,
function
(
evt
)
{
if
((
evt
.
target
.
nodeType
===
Node
.
ELEMENT_NODE
)
&&
(
evt
.
target
.
tagName
===
'
BUTTON
'
))
{
return
this
.
toggle
();
}
},
false
,
false
)
.
onEvent
(
'
blur
'
,
function
(
evt
)
{
.
onEvent
(
'
blur
'
,
function
(
evt
)
{
// XXX Horrible hack to clear the search when focus is lost
// XXX Horrible hack to clear the search when focus is lost
// This does not follow renderJS design, as a gadget should not touch
// This does not follow renderJS design, as a gadget should not touch
// another gadget content
// another gadget content
...
@@ -128,9 +139,4 @@
...
@@ -128,9 +139,4 @@
}
}
},
true
,
false
);
},
true
,
false
);
}(
document
,
window
,
rJS
,
Handlebars
,
RSVP
,
loopEventListener
,
Node
));
}(
window
,
Node
,
rJS
,
Handlebars
,
RSVP
,
loopEventListener
));
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_panel_js.xml
View file @
f74f420e
...
@@ -214,7 +214,7 @@
...
@@ -214,7 +214,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -228,7 +228,7 @@
...
@@ -228,7 +228,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.45262.19816.34594
</string>
</value>
<value>
<string>
9
60.22813.18734.54818
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -246,7 +246,7 @@
...
@@ -246,7 +246,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6066838.57
</float>
<float>
149
8652069.39
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_storage_js.js
→
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_
publisher_
storage_js.js
View file @
f74f420e
/*jslint indent: 2, nomen: true, maxlen:
12
0*/
/*jslint indent: 2, nomen: true, maxlen:
8
0*/
/*global jIO, RSVP, JSON */
/*global jIO, RSVP, JSON */
(
function
(
jIO
,
RSVP
,
JSON
)
{
(
function
(
jIO
,
RSVP
,
JSON
)
{
"
use strict
"
;
"
use strict
"
;
function
PublisherStorage
(
spec
)
{
var
HREF
=
'
https://api.github.com/repos/
'
,
USER
=
'
Nexedi
'
,
// NOTE: requires Website Layout Configuration CSP modification
REPO
=
'
awesome-free-software
'
,
// => connect-src 'self' https://raw.githubusercontent.com https://api.github.com data:
;
BRANCH
=
'
/contents/?ref=master
'
;
//https://api.github.com/repos/Nexedi/awesome-free-software
function
fetchUrl
(
option_dict
)
{
//https://api.github.com/repos/Nexedi/awesome-free-software/contents/?ref=master
return
new
RSVP
.
Queue
()
//https://api.github.com/repos/Nexedi/awesome-free-software/contents/alfresco.json
.
push
(
function
()
{
//https://raw.githubusercontent.com/Nexedi/awesome-free-software/master/alfresco.json
return
jIO
.
util
.
ajax
(
option_dict
);
})
.
push
(
function
(
data
)
{
return
JSON
.
parse
(
data
.
target
.
response
||
data
.
target
.
responseText
);
});
}
this
.
_href
=
spec
.
href
||
'
https://api.github.com/repos/
'
;
function
PublisherStorage
(
spec
)
{
this
.
_user
=
spec
.
user
||
'
Nexedi
'
;
this
.
_href
=
spec
.
href
||
HREF
;
this
.
_repo
=
spec
.
repo
||
'
awesome-free-software
'
;
this
.
_user
=
spec
.
user
||
USER
;
this
.
_repo
=
spec
.
repo
||
REPO
;
this
.
_branch
=
spec
.
branch
||
BRANCH
;
this
.
_url
=
this
.
_href
+
this
.
_user
+
'
/
'
+
this
.
_repo
+
this
.
_branch
;
}
}
PublisherStorage
.
prototype
.
get
=
function
(
id
)
{
PublisherStorage
.
prototype
.
get
=
function
(
id
)
{
return
new
RSVP
.
Queue
()
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
.
push
(
function
()
{
return
jIO
.
util
.
ajax
({
type
:
"
GET
"
,
url
:
id
,
dataType
:
"
text
"
});
return
fetchUrl
({
type
:
"
GET
"
,
url
:
id
,
dataType
:
"
text
"
});
})
})
.
push
(
.
push
(
undefined
,
function
(
error
)
{
function
(
response
)
{
if
((
error
.
target
!==
undefined
)
&&
(
error
.
target
.
status
===
404
))
{
return
JSON
.
parse
(
response
.
target
.
response
||
response
.
target
.
responseText
);
throw
new
jIO
.
util
.
jIOError
(
"
Cannot find document
"
,
404
);
},
function
(
error
)
{
if
((
error
.
target
!==
undefined
)
&&
(
error
.
target
.
status
===
404
))
{
throw
new
jIO
.
util
.
jIOError
(
"
Cannot find document
"
,
404
);
}
throw
error
;
}
}
);
throw
error
;
});
};
};
PublisherStorage
.
prototype
.
hasCapacity
=
function
(
name
)
{
PublisherStorage
.
prototype
.
hasCapacity
=
function
(
name
)
{
...
@@ -42,20 +44,18 @@
...
@@ -42,20 +44,18 @@
};
};
PublisherStorage
.
prototype
.
buildQuery
=
function
()
{
PublisherStorage
.
prototype
.
buildQuery
=
function
()
{
var
url
=
this
.
_href
+
this
.
_user
+
'
/
'
+
this
.
_repo
+
'
/contents/?ref=master
'
;
var
url
=
this
.
_url
;
return
new
RSVP
.
Queue
()
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
.
push
(
function
()
{
return
jIO
.
util
.
ajax
({
"
type
"
:
"
GET
"
,
"
url
"
:
url
});
return
fetchUrl
({
"
type
"
:
"
GET
"
,
"
url
"
:
url
});
})
})
.
push
(
function
(
data
)
{
.
push
(
function
(
data
_list
)
{
var
data_list
=
JSON
.
parse
(
data
.
target
.
response
||
data
.
target
.
responseText
)
,
var
result_list
=
[]
,
result_list
=
[]
,
len
=
data_list
.
length
,
data_entry
,
data_entry
,
len
,
i
;
i
;
for
(
i
=
0
,
len
=
data_list
.
length
;
i
<
len
;
i
+=
1
)
{
for
(
i
=
0
;
i
<
len
;
i
+=
1
)
{
data_entry
=
data_list
[
i
];
data_entry
=
data_list
[
i
];
if
(
data_entry
.
path
.
indexOf
(
"
.json
"
)
>
-
1
)
{
if
(
data_entry
.
path
.
indexOf
(
"
.json
"
)
>
-
1
)
{
result_list
.
push
({
result_list
.
push
({
...
@@ -70,4 +70,4 @@
...
@@ -70,4 +70,4 @@
jIO
.
addStorage
(
'
publisher_storage
'
,
PublisherStorage
);
jIO
.
addStorage
(
'
publisher_storage
'
,
PublisherStorage
);
}(
jIO
,
RSVP
,
JSON
));
}(
jIO
,
RSVP
,
JSON
));
\ No newline at end of file
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_storage_js.xml
→
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_
publisher_
storage_js.xml
View file @
f74f420e
...
@@ -71,15 +71,15 @@
...
@@ -71,15 +71,15 @@
</item>
</item>
<item>
<item>
<key>
<string>
default_reference
</string>
</key>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
gadget_erp5_afs_storage.js
</string>
</value>
<value>
<string>
gadget_erp5_afs_
publisher_
storage.js
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
description
</string>
</key>
<key>
<string>
description
</string>
</key>
<value>
<string>
Custom AFS storage
</string>
</value>
<value>
<string>
Custom AFS
publisher
storage
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
id
</string>
</key>
<key>
<string>
id
</string>
</key>
<value>
<string>
gadget_erp5_afs_storage_js
</string>
</value>
<value>
<string>
gadget_erp5_afs_
publisher_
storage_js
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
language
</string>
</key>
<key>
<string>
language
</string>
</key>
...
@@ -97,7 +97,7 @@
...
@@ -97,7 +97,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string>
Gadget AFS Storage
</string>
</value>
<value>
<string>
Gadget AFS
Publisher
Storage
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
version
</string>
</key>
<key>
<string>
version
</string>
</key>
...
@@ -214,7 +214,7 @@
...
@@ -214,7 +214,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -228,7 +228,7 @@
...
@@ -228,7 +228,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.45095.9318.10888
</string>
</value>
<value>
<string>
9
60.24382.2075.20667
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -246,7 +246,7 @@
...
@@ -246,7 +246,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6056764.06
</float>
<float>
149
8746700.08
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_router_html.html
View file @
f74f420e
<!Doctype html>
<!Doctype html>
<html>
<html>
<head>
<head>
<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"
>
<title>
Router Gadget
</title>
<title>
Router Gadget
</title>
<!-- renderjs -->
<script
src=
"rsvp.js"
type=
"text/javascript"
></script>
<script
src=
"rsvp.js"
type=
"text/javascript"
></script>
<script
src=
"renderjs.js"
type=
"text/javascript"
></script>
<script
src=
"renderjs.js"
type=
"text/javascript"
></script>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_router_html.xml
View file @
f74f420e
...
@@ -238,7 +238,7 @@
...
@@ -238,7 +238,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
95
3.59501.33025.63675
</string>
</value>
<value>
<string>
95
9.35277.15921.2798
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -256,7 +256,7 @@
...
@@ -256,7 +256,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
5467674.51
</float>
<float>
149
8657663.98
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_router_js.js
View file @
f74f420e
/*jslint
nomen: true, indent: 2, maxerr: 3
*/
/*jslint
indent: 2, nomen: true, maxlen: 80
*/
/*global window, rJS */
/*global window, rJS */
(
function
(
window
,
rJS
)
{
(
function
(
window
,
rJS
)
{
"
use strict
"
;
"
use strict
"
;
rJS
(
window
)
rJS
(
window
)
/*
.ready(function (g) {
return g.getDeclaredGadget("router")
.push(function (my_default_router) {
return my_default_router.start();
});
})
*/
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
// declared methods
// declared methods
...
@@ -62,4 +54,4 @@
...
@@ -62,4 +54,4 @@
});
});
});
});
}(
window
,
rJS
));
}(
window
,
rJS
));
\ No newline at end of file
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_afs_router_js.xml
View file @
f74f420e
...
@@ -220,7 +220,7 @@
...
@@ -220,7 +220,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -234,7 +234,7 @@
...
@@ -234,7 +234,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.45017.10197.48298
</string>
</value>
<value>
<string>
9
60.22683.21993.61064
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -252,7 +252,7 @@
...
@@ -252,7 +252,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6066978.7
</float>
<float>
149
8644239.26
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_directory_html.html
View file @
f74f420e
<!Doctype html>
<!Doctype html>
<html>
<html>
<head>
<head>
<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"
>
<title>
Free Software Publisher Directory
</title>
<title>
Free Software Publisher Directory
</title>
<link
rel=
"stylesheet"
href=
"gadget_erp5_afs.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"gadget_erp5_afs.css"
type=
"text/css"
/>
<!-- renderjs -->
<script
src=
"rsvp.js"
type=
"text/javascript"
></script>
<script
src=
"rsvp.js"
type=
"text/javascript"
></script>
<script
src=
"renderjs.js"
type=
"text/javascript"
></script>
<script
src=
"renderjs.js"
type=
"text/javascript"
></script>
<script
src=
"handlebars.js"
type=
"text/javascript"
></script>
<script
src=
"handlebars.js"
type=
"text/javascript"
></script>
<!-- custom script -->
<script
src=
"gadget_global.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_page_afs_directory.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_page_afs_directory.js"
type=
"text/javascript"
></script>
<!-- templates -->
<!-- templates -->
<script
id=
"frontpage-template"
type=
"text/x-handlebars-template"
>
<script
id=
"frontpage-template"
type=
"text/x-handlebars-template"
>
<
ul
class
=
"
grid-items
"
>
<
ul
class
=
"
grid-items
"
>
...
@@ -33,8 +28,8 @@
...
@@ -33,8 +28,8 @@
<
section
class
=
"
ui-content-section ui-body-c
"
>
<
section
class
=
"
ui-content-section ui-body-c
"
>
<
h1
>
{{
category
}}
<
/h1
>
<
h1
>
{{
category
}}
<
/h1
>
<
ul
>
<
ul
>
{{
#
each
software
s
}}
{{
#
each
software
_list
}}
<
li
><
a
href
=
"
{{
value.href}}
"
>
{{
value
.
title
}}
<
/a></
li
>
<
li
><
a
href
=
"
{{
href}}
"
>
{{
title
}}
<
/a></
li
>
{{
/
each
}}
{{
/
each
}}
<
/ul
>
<
/ul
>
<
/section
>
<
/section
>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_directory_html.xml
View file @
f74f420e
...
@@ -218,7 +218,7 @@
...
@@ -218,7 +218,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -232,7 +232,7 @@
...
@@ -232,7 +232,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.46970.48446.4744
</string>
</value>
<value>
<string>
9
60.20029.51205.49066
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -250,7 +250,7 @@
...
@@ -250,7 +250,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6169875.85
</float>
<float>
149
8657596.37
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_directory_js.js
View file @
f74f420e
/*global window, rJS, RSVP, Handlebars, URI, console, jIO, document */
/*global window, rJS, RSVP, Handlebars, jIO, document */
/*jslint nomen: true, indent: 2, maxerr: 3 */
/*jslint indent: 2, nomen: true, maxlen: 80*/
(
function
(
window
,
rJS
,
RSVP
,
Handlebars
,
document
)
{
(
function
(
window
,
rJS
,
RSVP
,
Handlebars
,
URI
,
document
)
{
"
use strict
"
;
"
use strict
"
;
var
gadget_klass
=
rJS
(
window
),
/////////////////////////////////////////////////////////////////
// some varables
/////////////////////////////////////////////////////////////////
var
VIEW
=
"
?page=afs_software&view=view
"
,
gadget_klass
=
rJS
(
window
),
templater
=
gadget_klass
.
__template_element
,
templater
=
gadget_klass
.
__template_element
,
source
=
templater
.
getElementById
(
"
frontpage-template
"
)
source
=
templater
.
getElementById
(
"
frontpage-template
"
).
innerHTML
,
.
innerHTML
,
template
=
Handlebars
.
compile
(
source
);
template
=
Handlebars
.
compile
(
source
);
Handlebars
.
registerPartial
(
Handlebars
.
registerPartial
(
"
list-partial
"
,
"
list-partial
"
,
templater
.
getElementById
(
"
list-partial
"
).
innerHTML
templater
.
getElementById
(
"
list-partial
"
).
innerHTML
);
);
gadget_klass
gadget_klass
/////////////////////////////////////////////////////////////////
// acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
"
updateHeader
"
,
"
updateHeader
"
)
.
declareAcquiredMethod
(
"
updateHeader
"
,
"
updateHeader
"
)
.
declareAcquiredMethod
(
"
jio_allDocs
"
,
"
jio_allDocs
"
)
.
declareAcquiredMethod
(
"
jio_allDocs
"
,
"
jio_allDocs
"
)
...
@@ -23,9 +31,7 @@
...
@@ -23,9 +31,7 @@
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
.
declareMethod
(
"
render
"
,
function
()
{
.
declareMethod
(
"
render
"
,
function
()
{
var
gadget
=
this
,
var
gadget
=
this
,
masonry_container
=
gadget
.
element
.
querySelector
(
grid
=
gadget
.
element
.
querySelector
(
'
.ui-masonry-container
'
);
'
.ui-masonry-container
'
);
return
new
RSVP
.
Queue
()
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
.
push
(
function
()
{
...
@@ -36,67 +42,64 @@
...
@@ -36,67 +42,64 @@
})
})
]);
]);
})
})
.
push
(
function
(
my_response_list
)
{
.
push
(
function
(
result_list
)
{
return
RSVP
.
all
([
return
result_list
[
0
].
render
();
gadget
.
jio_allDocs
({
select_list
:
[
'
category_list
'
],
query
:
'
portal_type:"software"
'
}),
my_response_list
[
0
].
render
()
]);
})
})
.
push
(
function
(
my_response_lis
t
)
{
.
push
(
function
(
html_conten
t
)
{
var
softwares
=
my_response_list
[
0
].
data
.
rows
,
var
banner
=
document
.
createRange
()
obj
,
.
createContextualFragment
(
html_content
||
""
);
// get categories and flatten array of category arrays
gadget
.
element
.
insertBefore
(
banner
,
grid
);
categories
=
softwares
return
gadget
.
jio_allDocs
({
.
map
((
obj
)
=>
obj
.
value
.
category_list
)
select_list
:
[
'
category_list
'
,
'
title
'
,
'
publisher
'
],
.
reduce
((
cur
,
prev
)
=>
cur
.
concat
(
prev
)),
query
:
'
portal_type:"software"
'
// remove duplicates (case sensitive!)
unique_categories
=
Array
.
from
(
new
Set
(
categories
)),
// kudos: https://davidwalsh.name/convert-html-stings-dom-nodes
banner
=
document
.
createRange
()
.
createContextualFragment
(
my_response_list
[
1
]
||
""
);
gadget
.
element
.
insertBefore
(
banner
,
masonry_container
);
return
RSVP
.
all
(
unique_categories
);
})
.
push
(
function
(
categories
)
{
var
softwares_by_category
=
categories
.
map
(
function
(
category
)
{
return
gadget
.
jio_allDocs
({
select_list
:
[
'
title
'
,
'
publisher
'
,
'
logo
'
],
query
:
'
category_list:"%
'
+
category
+
'
%" AND portal_type:"software"
'
})
.
push
(
function
(
softwares
)
{
softwares
.
data
.
rows
.
map
(
function
(
sw
)
{
// XXX hardcoded page and view
sw
.
value
.
href
=
"
#/
"
+
sw
.
id
+
"
?page=afs_software&view=view
"
;
});
return
{
category
:
category
,
softwares
:
softwares
.
data
.
rows
};
});
});
});
return
RSVP
.
all
(
softwares_by_category
);
})
})
.
push
(
function
(
result
)
{
.
push
(
function
(
result_list
)
{
var
content
;
var
software_list
=
result_list
.
data
.
rows
,
global_category_list
=
[],
config
;
// list of unique list of categories
if
(
software_list
.
length
>
0
)
{
global_category_list
=
software_list
.
reduce
(
function
(
list
,
dict
)
{
var
software
=
dict
.
value
;
if
(
software
.
category_list
.
length
>
0
)
{
software
.
category_list
.
map
(
function
(
category
)
{
if
(
list
.
indexOf
(
category
)
===
-
1
)
{
list
.
push
(
category
);
}
});
}
return
list
;
},
[]);
}
// populate list with software
config
=
global_category_list
.
reduce
(
function
(
result
,
category
)
{
var
category_entry
=
{
"
category
"
:
category
,
"
software_list
"
:
[]},
len
=
software_list
.
length
,
match_list
,
software
,
i
;
// reverse sort categories by number of softwares
for
(
i
=
0
;
i
<
len
;
i
+=
1
)
{
result
.
sort
(
(
a
,
b
)
=>
b
.
softwares
.
length
-
a
.
softwares
.
length
);
software
=
software_list
[
i
].
value
;
match_list
=
software
.
category_list
;
if
(
match_list
&&
match_list
.
length
>
0
)
{
if
(
match_list
.
indexOf
(
category
)
>
-
1
)
{
category_entry
.
software_list
.
push
({
"
title
"
:
software
.
title
,
"
href
"
:
"
#/
"
+
software_list
[
i
].
id
+
VIEW
});
}
}
}
result
.
push
(
category_entry
);
return
result
;
},
[]);
content
=
template
(
result
);
grid
.
innerHTML
=
template
(
config
);
masonry_container
.
innerHTML
=
content
;
});
});
});
});
}(
window
,
rJS
,
RSVP
,
Handlebars
,
URI
,
document
));
}(
window
,
rJS
,
RSVP
,
Handlebars
,
document
));
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_directory_js.xml
View file @
f74f420e
...
@@ -214,7 +214,7 @@
...
@@ -214,7 +214,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -228,7 +228,7 @@
...
@@ -228,7 +228,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.46981.52420.64187
</string>
</value>
<value>
<string>
9
60.25451.60616.27306
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -246,7 +246,7 @@
...
@@ -246,7 +246,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6170069.03
</float>
<float>
149
8812651.17
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_html.html
View file @
f74f420e
<!Doctype html>
<!Doctype html>
<html>
<html>
<head>
<head>
<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"
>
<title>
Publisher
</title>
<title>
Publisher
</title>
<script
src=
"rsvp.js"
></script>
<script
src=
"renderjs.js"
></script>
<script
src=
"handlebars.js"
></script>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"gadget_erp5_afs.css"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"gadget_erp5_afs.css"
/>
<script
src=
"gadget_erp5_page_afs_publisher.js"
></script>
<script
id=
"display-template"
type=
"text/x-handlebars-template"
>
<
section
class
=
"
ui-grid-container ui-responsive
"
>
<
ul
class
=
"
grid-elements custom-software-profile
"
>
<
li
>
{{
#
if
logo
}}
<
div
class
=
"
custom-software-profile-image-wrapper
"
><
a
href
=
"
{{website}}
"
><
img
src
=
"
{{logo}}
"
alt
><
/a></
div
>
{{
/
if
}}
<
/li
>
<
li
>
<
h1
>
{{
title
}}
<
/h1
>
{{
#
if
wikipedia_description
}}
<
p
>
{{
wikipedia_description
}}
<
/p
>
{{
/
if
}}
<
br
/>
{{
#
if
wikipedia_url
}}
<
p
><
a
href
=
"
{{wikipedia_url}}
"
class
=
""
>
Read
more
on
Wikipedia
<
/a></
p
>
{{
/
if
}}
<
ul
>
<
li
>
Founded
:
{{
founded_year
}}
<
/li
>
<
li
>
Country
:
{{
country
}}
<
/li
>
<
li
>
Website
:
<
a
href
=
"
{{website}}
"
>
{{
website
}}
<
/a></
li
>
<
li
>
Presence
:
{{
#
each
presence
}}{{
this
}}
&
nbsp
;{{
/each}
}
<
/li
>
<
/ul
>
<
/li
>
<
/ul
>
<
section
class
=
"
ui-content-header-plain ui-bar-c
"
>
<script
src=
"rsvp.js"
></script>
<
h2
>
Free
software
Solutions
<
/h2
>
<script
src=
"renderjs.js"
></script>
<
/section
>
<script
src=
"handlebars.js"
></script>
<script
src=
"gadget_erp5_page_afs_publisher.js"
></script>
<
ul
class
=
"
grid-items custom-software-list
"
>
<script
id=
"display-template"
type=
"text/x-handlebars-template"
>
{{
#
each
free_software_list
}}
<
section
class
=
"
ui-grid-container ui-responsive
"
>
<
ul
class
=
"
grid-elements custom-software-profile
"
>
<
li
>
<
li
>
<
ul
class
=
"
custom-software-profile
"
>
{{
#
if
logo
}}
<
li
>
<
div
class
=
"
custom-software-profile-image-wrapper
"
><
a
href
=
"
{{website}}
"
><
img
src
=
"
{{logo}}
"
alt
><
/a></
div
>
{{
#
if
logo
}}
{{
/
if
}}
<
div
class
=
"
custom-software-profile-image-wrapper
"
><
a
href
=
"
{{website}}
"
><
img
src
=
"
{{logo}}
"
alt
><
/a></
div
>
<
/li
>
{{
else
}}
<
li
>
<
div
>&
nbsp
<
/div
>
<
h1
>
{{
title
}}
<
/h1
>
{{
/
if
}}
{{
#
if
wikipedia_description
}}
<
/li
>
<
p
>
{{
wikipedia_description
}}
<
/p
>
<
li
>
{{
/
if
}}
<
h1
>
{{
title
}}
<
/h1
>
<
br
/>
{{
#
if
wikipedia_description
}}
{{
#
if
wikipedia_url
}}
<
p
>
{{
wikipedia_description
}}
<
/p
>
<
p
><
a
href
=
"
{{wikipedia_url}}
"
class
=
""
>
Read
more
on
Wikipedia
<
/a></
p
>
<
br
/>
{{
/
if
}}
{{
/
if
}}
<
ul
>
{{
#
if
wikipedia_url
}}
<
li
>
Founded
:
{{
founded_year
}}
<
/li
>
<
p
><
a
href
=
"
{{wikipedia_url}}
"
class
=
""
>
Read
more
on
Wikipedia
<
/a></
p
>
<
li
>
Country
:
{{
country
}}
<
/li
>
<
br
/>
<
li
>
Website
:
<
a
href
=
"
{{website}}
"
>
{{
website
}}
<
/a></
li
>
{{
/
if
}}
<
li
>
Presence
:
{{
#
each
presence
}}{{
this
}}
&
nbsp
;{{
/each}
}
<
div
>
<
ul
class
=
"
custom-success-story-category-list
"
><
lh
>
Categories
:
<
/lh
>
{{
#
each
category_list
}}
<
li
>
{{
this
}}
<
/li
>
{{
/
each
}}
<
/ul
>
<
/div
>
<
table
class
=
"
custom-link-table
"
>
<
tbody
>
<
tr
>
<
td
>
Publisher
Site
<
/td
>
<
td
><
a
href
=
"
{{publisher_website}}
"
>
{{
publisher
}}
<
/a></
td
>
<
/tr
>
<
tr
>
<
td
>
Product
Site
<
/td
>
<
td
><
a
href
=
"
{{website}}
"
>
{{
title
}}
<
/a></
td
>
<
/tr
>
<
tr
>
<
td
>
Source
Code
<
/td
>
<
td
>
{{
#
if
source_code_download
}}
<
a
href
=
"
{{source_code_download}}
"
>
Download
<
/a
>
{{
else
}}
<
a
class
=
"
ui-disabled
"
href
=
""
>
Download
<
/a
>
{{
/
if
}}
/
{{
#
if
source_code_profile
}}
<
a
href
=
"
{{source_code_profile}}
"
>
Profile
<
/a
>
{{
else
}}
<
a
class
=
"
ui-disabled
"
href
=
""
>
Profile
<
/a
>
{{
/
if
}}
<
/td
>
<
/tr
>
<
tr
>
<
td
>
Free
Software
Commercial
Support
<
/td
>
<
td
>
{{
#
if
commercial_support
}}
<
a
href
=
"
{{commercial_support}}
"
>
Yes
<
/a
>
{{
#
if
commercial_support_description
}}
<
abbr
title
=
"
{{commercial_support_description}}
"
>
(?)
<
/abbr
>
{{
/if}
}
{{
else
}}
No
{{
/if}
}
<
/td
>
<
/tr
>
<
/tbody
>
<
/table
>
<
/li
>
<
/li
>
<
/ul
>
<
/ul
>
<
section
class
=
"
ui-content-header-plain ui-bar-c
"
>
<
/li
>
<
h3
>
Success
Stories
<
/h3
>
<
/ul
>
<
/section
>
{{
#
if
success_case_list
}}
<
section
class
=
"
ui-content-header-plain ui-bar-c
"
>
<
ul
class
=
"
grid-items custom-success-story-list
"
>
<
h2
>
Free
software
Solutions
<
/h2
>
{{
#
each
success_case_list
}}
<
/section
>
<
li
>
{{
#
if
image
}}
<
ul
class
=
"
grid-items custom-software-list
"
>
<
div
class
=
"
custom-success-story-image-wrapper {{image_class}}
"
><
a
href
=
"
{{url}}
"
><
img
src
=
"
{{image}}
"
alt
><
/a></
div
>
{{
#
each
free_software_list
}}
{{
else
}}
<
li
>
<
div
>&
nbsp
;
<
/div
>
<
ul
class
=
"
custom-software-profile
"
>
{{
/
if
}}
<
li
>
<
p
class
=
"
custom-success-story-title
"
>
{{
title
}}
<
/a></
p
>
{{
#
if
logo
}}
<
p
class
=
"
custom-success-story-description
"
>
{{
description
}}
<
a
href
=
"
{{url}}
"
>
Read
more
<
/a></
p
>
<
div
class
=
"
custom-software-profile-image-wrapper
"
><
a
href
=
"
{{website}}
"
><
img
src
=
"
{{logo}}
"
alt
><
/a></
div
>
<
p
>
Industry
:
{{
industry
}}
<
/p
>
{{
else
}}
<
ul
class
=
"
custom-success-story-category-list
"
><
lh
>
Categories
:
<
/lh>
<
div
>&
nbsp
<
/div
>
{{
#
each
..
/
category_list
}}
{{
/
if
}}
<
/li
>
<
li
>
<
h1
>
{{
title
}}
<
/h1
>
{{
#
if
wikipedia_description
}}
<
p
>
{{
wikipedia_description
}}
<
/p
>
<
br
/>
{{
/
if
}}
{{
#
if
wikipedia_url
}}
<
p
><
a
href
=
"
{{wikipedia_url}}
"
class
=
""
>
Read
more
on
Wikipedia
<
/a></
p
>
<
br
/>
{{
/
if
}}
<
div
>
<
ul
class
=
"
custom-success-story-category-list
"
><
lh
>
Categories
:
<
/lh
>
{{
#
each
category_list
}}
<
li
>
{{
this
}}
<
/li
>
<
li
>
{{
this
}}
<
/li
>
{{
/
each
}}
{{
/
each
}}
<
/ul
>
<
/ul
>
<
p
class
=
"
custom-success-story-client
"
>
Customer
:
<
span
>
{{
customer
}}
<
/span></
p
>
<
/div
>
<
p
>
Country
:
{{
country
}}
<
/p
>
<
table
class
=
"
custom-link-table
"
>
<
p
>
Language
:
{{
language
}}
<
/p
>
<
tbody
>
<
/li
>
<
tr
>
{{
/
each
}}
<
td
>
Publisher
Site
<
/td
>
<
td
><
a
href
=
"
{{publisher_website}}
"
>
{{
publisher
}}
<
/a></
td
>
<
/tr
>
<
tr
>
<
td
>
Product
Site
<
/td
>
<
td
><
a
href
=
"
{{website}}
"
>
{{
title
}}
<
/a></
td
>
<
/tr
>
<
tr
>
<
td
>
Source
Code
<
/td
>
<
td
>
{{
#
if
source_code_download
}}
<
a
href
=
"
{{source_code_download}}
"
>
Download
<
/a
>
{{
else
}}
<
a
class
=
"
ui-disabled
"
href
=
""
>
Download
<
/a
>
{{
/
if
}}
/
{{
#
if
source_code_profile
}}
<
a
href
=
"
{{source_code_profile}}
"
>
Profile
<
/a
>
{{
else
}}
<
a
class
=
"
ui-disabled
"
href
=
""
>
Profile
<
/a
>
{{
/
if
}}
<
/td
>
<
/tr
>
<
tr
>
<
td
>
Free
Software
Commercial
Support
<
/td
>
<
td
>
{{
#
if
commercial_support
}}
<
a
href
=
"
{{commercial_support}}
"
>
Yes
<
/a
>
{{
#
if
commercial_support_description
}}
<
abbr
title
=
"
{{commercial_support_description}}
"
>
(?)
<
/abbr
>
{{
/if}
}
{{
else
}}
No
{{
/if}
}
<
/td
>
<
/tr
>
<
/tbody
>
<
/table
>
<
/li
>
<
/ul
>
<
/ul
>
{{
/
if
}}
<
section
class
=
"
ui-content-header-plain ui-bar-c
"
>
<
/li
>
<
h3
>
Success
Stories
<
/h3
>
<
/section
>
{{
/
each
}}
{{
#
if
success_case_list
}}
<
/ul
>
<
ul
class
=
"
grid-items custom-success-story-list
"
>
<
/section
>
{{
#
each
success_case_list
}}
</script>
<
li
>
{{
#
if
image
}}
<
div
class
=
"
custom-success-story-image-wrapper {{image_class}}
"
><
a
href
=
"
{{url}}
"
><
img
src
=
"
{{image}}
"
alt
><
/a></
div
>
{{
else
}}
<
div
>&
nbsp
;
<
/div
>
{{
/
if
}}
<
p
class
=
"
custom-success-story-title
"
>
{{
title
}}
<
/a></
p
>
<
p
class
=
"
custom-success-story-description
"
>
{{
description
}}
<
a
href
=
"
{{url}}
"
>
Read
more
<
/a></
p
>
<
p
>
Industry
:
{{
industry
}}
<
/p
>
<
ul
class
=
"
custom-success-story-category-list
"
><
lh
>
Categories
:
<
/lh>
{{
#
each
..
/
category_list
}}
<
li
>
{{
this
}}
<
/li
>
{{
/
each
}}
<
/ul
>
<
p
class
=
"
custom-success-story-client
"
>
Customer
:
<
span
>
{{
customer
}}
<
/span></
p
>
<
p
>
Country
:
{{
country
}}
<
/p
>
<
p
>
Language
:
{{
language
}}
<
/p
>
<
/li
>
{{
/
each
}}
<
/ul
>
{{
/
if
}}
<
/li
>
{{
/
each
}}
<
/ul
>
<
/section
>
</script>
</head>
</head>
<body>
<body>
<article
class=
"display-widget ui-content"
></article>
<article
class=
"display-widget ui-content"
></article>
</body>
</body>
</html>
</html>
\ No newline at end of file
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_html.xml
View file @
f74f420e
...
@@ -232,7 +232,7 @@
...
@@ -232,7 +232,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
95
4.58644.17552.59852
</string>
</value>
<value>
<string>
95
9.35276.32069.1399
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -250,7 +250,7 @@
...
@@ -250,7 +250,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
5467629.29
</float>
<float>
149
8657508.03
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_js.js
View file @
f74f420e
/*globals window, RSVP, rJS, Handlebars, jIO*/
/*globals window, RSVP, rJS, Handlebars, jIO*/
/*jslint indent: 2, nomen: true, maxlen:
10
0*/
/*jslint indent: 2, nomen: true, maxlen:
8
0*/
(
function
(
window
,
RSVP
,
rJS
,
Handlebars
,
jIO
)
{
(
function
(
window
,
RSVP
,
rJS
,
Handlebars
,
jIO
)
{
"
use strict
"
;
"
use strict
"
;
var
gadget_klass
=
rJS
(
window
),
/////////////////////////////////////////////////////////////////
// some parameters
/////////////////////////////////////////////////////////////////
var
PLACEHOLDER
=
"
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACWCA
"
+
"
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
"
+
"
uy/EEV+A9Em3PVuGWDlwAAAABJRU5ErkJggg==
"
,
// https://en.wikipedia.org/api/rest_v1 - only works in for english
WIKIPEDIA_URL
=
'
https://en.wikipedia.org/api/rest_v1/page/summary/
'
,
NEXEDI_CONTACT_URL
=
'
https://www.nexedi.com/contact
'
,
STR
=
""
,
NA
=
"
N/A
"
,
gadget_klass
=
rJS
(
window
),
templater
=
gadget_klass
.
__template_element
,
templater
=
gadget_klass
.
__template_element
,
display_widget_table
=
Handlebars
.
compile
(
display_widget_table
=
Handlebars
.
compile
(
templater
.
getElementById
(
"
display-template
"
).
innerHTML
templater
.
getElementById
(
"
display-template
"
).
innerHTML
);
);
/////////////////////////////////////////////////////////////////
// some methods
/////////////////////////////////////////////////////////////////
function
clean
(
case_list
)
{
function
clean
(
case_list
)
{
var
i
,
var
i
,
len
,
len
,
entry
;
entry
;
for
(
i
=
0
,
len
=
case_list
.
length
;
i
<
len
;
i
+=
1
)
{
for
(
i
=
0
,
len
=
case_list
.
length
;
i
<
len
;
i
+=
1
)
{
entry
=
case_list
[
i
];
entry
=
case_list
[
i
];
if
(
entry
.
image
===
"
N/A
"
||
entry
.
image
===
""
)
{
if
(
entry
.
image
===
NA
||
entry
.
image
===
STR
)
{
entry
.
image
=
'
gadget_erp5_afs_camera.png?format=png
'
;
entry
.
image
=
PLACEHOLDER
;
entry
.
image_class
=
"
custom-placeholder
"
;
entry
.
image_class
=
"
custom-placeholder
"
;
}
}
}
}
return
case_list
;
return
case_list
;
}
}
function
isNoValidSuccessCaseList
(
case_list
)
{
return
(
case_list
.
length
===
0
||
case_list
===
NA
||
case_list
[
0
].
title
===
NA
||
case_list
[
0
].
title
===
STR
);
}
function
fetchWikiProfile
(
url
)
{
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
jIO
.
util
.
ajax
({
type
:
"
GET
"
,
headers
:
{
"
api-user-agent
"
:
NEXEDI_CONTACT_URL
},
url
:
WIKIPEDIA_URL
+
url
.
split
(
"
/
"
).
pop
()
});
})
.
push
(
function
(
data
)
{
var
response
=
data
.
target
.
response
||
data
.
target
.
responseText
;
return
JSON
.
parse
(
response
).
extract
;
})
.
push
(
undefined
,
function
()
{
return
undefined
;
});
}
rJS
(
window
)
rJS
(
window
)
/////////////////////////////////////////////////////////////////
// acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
'
updateHeader
'
,
'
updateHeader
'
)
.
declareAcquiredMethod
(
'
updateHeader
'
,
'
updateHeader
'
)
.
declareAcquiredMethod
(
'
jio_get
'
,
'
jio_get
'
)
.
declareAcquiredMethod
(
'
jio_get
'
,
'
jio_get
'
)
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.
declareMethod
(
'
render
'
,
function
(
options
)
{
.
declareMethod
(
'
render
'
,
function
(
options
)
{
var
gadget
=
this
;
var
gadget
=
this
;
...
@@ -35,46 +143,26 @@
...
@@ -35,46 +143,26 @@
return
gadget
.
jio_get
(
options
.
jio_key
);
return
gadget
.
jio_get
(
options
.
jio_key
);
})
})
.
push
(
function
(
publisher
)
{
.
push
(
function
(
publisher
)
{
// https://en.wikipedia.org/api/rest_v1/
var
wiki_list
=
[];
// only works in for english
var
wikipedia_api_url
=
'
https://en.wikipedia.org/api/rest_v1/page/summary/
'
,
wiki_list
=
[];
publisher
.
free_software_list
.
map
(
function
(
software
)
{
publisher
.
free_software_list
.
map
(
function
(
software
)
{
if
(
software
.
commercial_support
===
"
N/A
"
)
{
// cleanup and retrive wikipedia data
if
(
software
.
commercial_support
===
NA
)
{
delete
software
.
commercial_support
;
delete
software
.
commercial_support
;
}
}
if
(
software
.
logo
===
"
N/A
"
||
software
.
logo
===
""
)
{
if
(
software
.
logo
===
NA
||
software
.
logo
===
STR
)
{
software
.
logo
=
'
gadget_erp5_afs_camera.png?format=png
'
;
software
.
logo
=
PLACEHOLDER
;
}
}
if
(
software
.
success_case_list
.
length
===
0
||
if
(
isNoValidSuccessCaseList
(
software
.
success_case_list
))
{
software
.
success_case_list
===
"
N/A
"
||
software
.
success_case_list
[
0
].
title
===
"
N/A
"
||
software
.
success_case_list
[
0
].
title
===
""
)
{
delete
software
.
success_case_list
;
delete
software
.
success_case_list
;
}
else
{
}
else
{
software
.
success_case_list
=
clean
(
software
.
success_case_list
);
software
.
success_case_list
=
clean
(
software
.
success_case_list
);
}
}
if
(
software
.
wikipedia_url
===
"
N/A
"
)
{
if
(
software
.
wikipedia_url
===
NA
)
{
delete
software
.
wikipedia_url
;
delete
software
.
wikipedia_url
;
}
else
{
}
else
{
wiki_list
.
push
(
wiki_list
.
push
(
fetchWikiProfile
(
software
.
wikipedia_url
));
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
jIO
.
util
.
ajax
({
type
:
"
GET
"
,
headers
:
{
"
api-user-agent
"
:
"
https://www.nexedi.com/contact
"
},
url
:
wikipedia_api_url
+
software
.
wikipedia_url
.
split
(
"
/
"
).
pop
()
});
})
.
push
(
function
(
my_content
)
{
var
response
=
my_content
.
target
.
response
||
my_content
.
target
.
responseText
;
return
JSON
.
parse
(
response
).
extract
;
},
function
()
{
return
undefined
;
})
);
}
}
});
});
...
@@ -82,23 +170,26 @@
...
@@ -82,23 +170,26 @@
.
push
(
function
()
{
.
push
(
function
()
{
return
RSVP
.
all
(
wiki_list
);
return
RSVP
.
all
(
wiki_list
);
})
})
.
push
(
function
(
my_wiki_list
)
{
.
push
(
function
(
data_list
)
{
var
i
,
len
;
var
len
=
publisher
.
free_software_list
.
length
,
if
(
my_wiki_list
&&
my_wiki_list
.
length
>
0
)
{
i
;
for
(
i
=
0
,
len
=
publisher
.
free_software_list
.
length
;
i
<
len
;
i
+=
1
)
{
if
(
data_list
&&
data_list
.
length
>
0
)
{
for
(
i
=
0
;
i
<
len
;
i
+=
1
)
{
if
(
publisher
.
free_software_list
[
i
].
wikipedia_url
)
{
if
(
publisher
.
free_software_list
[
i
].
wikipedia_url
)
{
publisher
.
free_software_list
[
i
].
wikipedia_description
=
my_wiki_list
[
i
];
publisher
.
free_software_list
[
i
].
wikipedia_description
=
data_list
[
i
];
}
}
}
}
}
}
return
publisher
;
return
publisher
;
});
});
})
})
.
push
(
function
(
my_
publisher
)
{
.
push
(
function
(
publisher
)
{
gadget
.
element
.
querySelector
(
"
.display-widget
"
)
gadget
.
element
.
querySelector
(
"
.display-widget
"
)
.
innerHTML
=
display_widget_table
(
my_
publisher
);
.
innerHTML
=
display_widget_table
(
publisher
);
return
gadget
.
updateHeader
({
page_title
:
my_
publisher
.
title
});
return
gadget
.
updateHeader
({
page_title
:
publisher
.
title
});
});
});
});
});
}(
window
,
RSVP
,
rJS
,
Handlebars
,
jIO
));
}(
window
,
RSVP
,
rJS
,
Handlebars
,
jIO
));
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_js.xml
View file @
f74f420e
...
@@ -214,7 +214,7 @@
...
@@ -214,7 +214,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -228,7 +228,7 @@
...
@@ -228,7 +228,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.45186.37882.22272
</string>
</value>
<value>
<string>
9
60.22633.10127.42069
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -246,7 +246,7 @@
...
@@ -246,7 +246,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6067089.61
</float>
<float>
149
8641220.3
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_list_html.html
View file @
f74f420e
<!Doctype html>
<!Doctype html>
<html>
<html>
<head>
<head>
<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"
>
<title>
Success Stories
</title>
<title>
Success Stories
</title>
<link
rel=
"stylesheet"
href=
"gadget_erp5_afs.css"
/>
<link
rel=
"stylesheet"
href=
"gadget_erp5_afs.css"
/>
...
@@ -11,9 +11,6 @@
...
@@ -11,9 +11,6 @@
<script
src=
"renderjs.js"
type=
"text/javascript"
></script>
<script
src=
"renderjs.js"
type=
"text/javascript"
></script>
<script
src=
"handlebars.js"
type=
"text/javascript"
></script>
<script
src=
"handlebars.js"
type=
"text/javascript"
></script>
<!-- custom script -->
<script
src=
"gadget_global.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_page_afs_publisher_list.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_page_afs_publisher_list.js"
type=
"text/javascript"
></script>
</head>
</head>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_list_html.xml
View file @
f74f420e
...
@@ -232,7 +232,7 @@
...
@@ -232,7 +232,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
959.3527
5.11438.17476
</string>
</value>
<value>
<string>
959.3527
7.24112.56320
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -250,7 +250,7 @@
...
@@ -250,7 +250,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
5467682.0
</float>
<float>
149
8657681.41
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_list_js.js
View file @
f74f420e
/*globals window, RSVP, rJS*/
/*globals window, RSVP, rJS*/
/*jslint indent: 2, nomen: true, maxlen: 80*/
/*jslint indent: 2, nomen: true, maxlen: 80*/
(
function
(
window
,
RSVP
,
rJS
)
{
(
function
(
window
,
RSVP
,
rJS
)
{
"
use strict
"
;
"
use strict
"
;
/////////////////////////////////////////////////////////////////
// some parameters
/////////////////////////////////////////////////////////////////
var
STR
=
""
,
QUERY
=
'
urn:jio:allDocs?query=
'
+
'
portal_type:
'
+
'
"publisher"
'
,
SORT
=
'
field_listbox_sort_list:json
'
,
COLUMN_LIST
=
[
[
'
title
'
,
'
Title
'
],
[
'
country
'
,
'
Country
'
],
[
'
founded_year
'
,
'
Founded
'
],
[
'
presence
'
,
'
Presence
'
]
];
rJS
(
window
)
rJS
(
window
)
.
declareAcquiredMethod
(
"
translate
"
,
"
translate
"
)
.
declareAcquiredMethod
(
"
getUrlFor
"
,
"
getUrlFor
"
)
/////////////////////////////////////////////////////////////////
// acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
"
getUrlParameter
"
,
"
getUrlParameter
"
)
.
declareAcquiredMethod
(
"
getUrlParameter
"
,
"
getUrlParameter
"
)
.
declareAcquiredMethod
(
"
updateHeader
"
,
"
updateHeader
"
)
.
declareAcquiredMethod
(
"
updateHeader
"
,
"
updateHeader
"
)
.
declareAcquiredMethod
(
"
jio_allDocs
"
,
"
jio_allDocs
"
)
/////////////////////////////////////////////////////////////////
// published methods
/////////////////////////////////////////////////////////////////
.
allowPublicAcquisition
(
'
updateHeader
'
,
function
()
{
.
allowPublicAcquisition
(
'
updateHeader
'
,
function
()
{
return
;
return
;
})
})
.
allowPublicAcquisition
(
'
getUrlParameter
'
,
function
(
argument_list
)
{
.
allowPublicAcquisition
(
'
getUrlParameter
'
,
function
(
argument_list
)
{
return
this
.
getUrlParameter
(
argument_list
)
return
this
.
getUrlParameter
(
argument_list
)
.
push
(
function
(
result
)
{
.
push
(
function
(
result
)
{
if
((
result
===
undefined
)
&&
if
((
result
===
undefined
)
&&
(
argument_list
[
0
]
===
SORT
))
{
(
argument_list
[
0
]
===
'
field_listbox_sort_list:json
'
))
{
return
[[
'
title
'
,
'
ascending
'
]];
return
[[
'
title
'
,
'
ascending
'
]];
}
}
return
result
;
return
result
;
});
});
})
})
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.
declareMethod
(
"
render
"
,
function
()
{
.
declareMethod
(
"
render
"
,
function
()
{
var
gadget
=
this
;
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
.
push
(
function
()
{
return
gadget
.
updateHeader
({
return
RSVP
.
all
([
page_title
:
"
Publisher List
"
gadget
.
updateHeader
({
page_title
:
"
Publisher List
"
}),
});
gadget
.
getDeclaredGadget
(
"
form_list
"
)
})
]);
.
push
(
function
()
{
return
gadget
.
getDeclaredGadget
(
"
form_list
"
);
})
})
.
push
(
function
(
form_gadget
)
{
.
push
(
function
(
result_list
)
{
var
column_list
=
[
return
result_list
[
1
].
render
({
//['logo', 'Logo'],
erp5_document
:
{
[
'
title
'
,
'
Title
'
],
"
_embedded
"
:
{
[
'
country
'
,
'
Country
'
],
"
_view
"
:
{
[
'
founded_year
'
,
'
Founded
'
],
"
listbox
"
:
{
[
'
presence
'
,
'
Presence
'
]
"
column_list
"
:
COLUMN_LIST
,
];
"
show_anchor
"
:
0
,
"
default_params
"
:
{},
return
form_gadget
.
render
({
"
editable
"
:
0
,
erp5_document
:
{
"
_embedded
"
:
{
"
_view
"
:
{
"
key
"
:
"
field_listbox
"
,
"
listbox
"
:
{
"
lines
"
:
20
,
"
column_list
"
:
column_list
,
"
list_method
"
:
"
portal_catalog
"
,
"
show_anchor
"
:
0
,
"
query
"
:
QUERY
,
"
default_params
"
:
{},
"
portal_type
"
:
[],
"
editable
"
:
0
,
"
search_column_list
"
:
COLUMN_LIST
,
"
key
"
:
"
field_listbox
"
,
"
sort_column_list
"
:
COLUMN_LIST
,
"
lines
"
:
20
,
"
sort_on
"
:
[
"
title
"
,
"
ascending
"
],
"
list_method
"
:
"
portal_catalog
"
,
"
title
"
:
"
Documents
"
,
"
query
"
:
'
urn:jio:allDocs?query=
'
+
'
portal_type:
'
+
"
type
"
:
"
ListBox
"
'
"publisher"
'
,
}
"
portal_type
"
:
[],
"
search_column_list
"
:
column_list
,
"
sort_column_list
"
:
column_list
,
"
sort_on
"
:
[
"
title
"
,
"
ascending
"
],
"
title
"
:
"
Documents
"
,
"
type
"
:
"
ListBox
"
}
}},
"
_links
"
:
{
"
type
"
:
{
// form_list display portal_type in header
name
:
""
}
}
}
},
},
"
_links
"
:
{
"
type
"
:
{
name
:
STR
}}
},
form_definition
:
{
form_definition
:
{
group_list
:
[
group_list
:
[
[
[
"
bottom
"
,
[[
"
listbox
"
]]],
"
bottom
"
,
[
"
hidden
"
,
[
"
listbox_modification_date
"
]]
[[
"
listbox
"
]]
],
[
"
hidden
"
,
[
"
listbox_modification_date
"
]
]
]
]
}
}
});
});
});
});
});
});
}(
window
,
RSVP
,
rJS
));
\ No newline at end of file
}(
window
,
RSVP
,
rJS
));
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_list_js.xml
View file @
f74f420e
...
@@ -214,7 +214,7 @@
...
@@ -214,7 +214,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -228,7 +228,7 @@
...
@@ -228,7 +228,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.45151.41449.24985
</string>
</value>
<value>
<string>
9
60.22649.27783.51
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -246,7 +246,7 @@
...
@@ -246,7 +246,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6067110.9
2
</float>
<float>
149
8642539.6
2
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_statistic_html.html
View file @
f74f420e
...
@@ -4,15 +4,12 @@
...
@@ -4,15 +4,12 @@
<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"
>
<title>
Free Software Publisher Statistics
</title>
<title>
Free Software Publisher Statistics
</title>
<link
rel=
"stylesheet"
href=
"gadget_erp5_afs.css"
/>
<link
rel=
"stylesheet"
href=
"gadget_erp5_afs.css"
/>
<script
src=
"rsvp.js"
></script>
<script
src=
"rsvp.js"
></script>
<script
src=
"renderjs.js"
></script>
<script
src=
"renderjs.js"
></script>
<script
src=
"gadget_global.js"
></script>
<script
src=
"gadget_erp5_page_afs_publisher_statistic.js"
></script>
<script
src=
"gadget_erp5_page_afs_publisher_statistic.js"
></script>
</head>
</head>
<body>
<body>
<div
data-gadget-url=
"gadget_erp5_pt_form_list.html"
<div
data-gadget-url=
"gadget_erp5_pt_form_list.html"
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_statistic_html.xml
View file @
f74f420e
...
@@ -232,7 +232,7 @@
...
@@ -232,7 +232,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.36392.63010.46540
</string>
</value>
<value>
<string>
9
60.22902.49514.45755
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -250,7 +250,7 @@
...
@@ -250,7 +250,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6073513.05
</float>
<float>
149
8657408.74
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_statistic_js.js
View file @
f74f420e
...
@@ -3,23 +3,32 @@
...
@@ -3,23 +3,32 @@
(
function
(
window
,
RSVP
,
rJS
)
{
(
function
(
window
,
RSVP
,
rJS
)
{
"
use strict
"
;
"
use strict
"
;
var
SORT_STRING
=
'
field_listbox_sort_list:json
'
;
/////////////////////////////////////////////////////////////////
// some parameters
/////////////////////////////////////////////////////////////////
var
STR
=
""
,
QUERY
=
'
urn:jio:allDocs?query=
'
+
'
portal_type:"publisher"
'
,
SORT
=
'
field_listbox_sort_list:json
'
,
COLUMN_LIST
=
[
[
'
title
'
,
'
Title
'
],
[
'
country
'
,
'
Country
'
],
[
'
total_lines
'
,
'
Total Lines of Code
'
]
],
SORT_LIST
=
[
[
'
total_lines
'
,
'
Total Lines of Code
'
]
];
rJS
(
window
)
rJS
(
window
)
.
ready
(
function
(
g
)
{
g
.
props
=
{};
return
g
.
getElement
()
.
push
(
function
(
element
)
{
g
.
props
.
element
=
element
;
});
})
.
declareAcquiredMethod
(
"
translate
"
,
"
translate
"
)
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
"
getUrlFor
"
,
"
getUrlFor
"
)
// acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
"
getUrlParameter
"
,
"
getUrlParameter
"
)
.
declareAcquiredMethod
(
"
getUrlParameter
"
,
"
getUrlParameter
"
)
.
declareAcquiredMethod
(
"
updateHeader
"
,
"
updateHeader
"
)
.
declareAcquiredMethod
(
"
updateHeader
"
,
"
updateHeader
"
)
.
declareAcquiredMethod
(
"
jio_allDocs
"
,
"
jio_allDocs
"
)
/////////////////////////////////////////////////////////////////
// published methods
/////////////////////////////////////////////////////////////////
.
allowPublicAcquisition
(
'
updateHeader
'
,
function
()
{
.
allowPublicAcquisition
(
'
updateHeader
'
,
function
()
{
return
;
return
;
})
})
...
@@ -27,60 +36,50 @@
...
@@ -27,60 +36,50 @@
.
allowPublicAcquisition
(
'
getUrlParameter
'
,
function
(
argument_list
)
{
.
allowPublicAcquisition
(
'
getUrlParameter
'
,
function
(
argument_list
)
{
return
this
.
getUrlParameter
(
argument_list
)
return
this
.
getUrlParameter
(
argument_list
)
.
push
(
function
(
result
)
{
.
push
(
function
(
result
)
{
if
((
result
===
undefined
)
&&
(
argument_list
[
0
]
===
SORT
_STRING
))
{
if
((
result
===
undefined
)
&&
(
argument_list
[
0
]
===
SORT
))
{
return
[[
'
lines
'
,
'
de
scending
'
]];
return
[[
'
title
'
,
'
a
scending
'
]];
}
}
return
result
;
return
result
;
});
});
})
})
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.
declareMethod
(
"
render
"
,
function
()
{
.
declareMethod
(
"
render
"
,
function
()
{
var
gadget
=
this
;
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
.
push
(
function
()
{
return
gadget
.
updateHeader
({
return
RSVP
.
all
([
page_title
:
"
Statistics
"
gadget
.
updateHeader
({
page_title
:
"
Statistics
"
}),
});
gadget
.
getDeclaredGadget
(
"
form_list
"
)
]);
})
})
.
push
(
function
()
{
.
push
(
function
(
result_list
)
{
return
gadget
.
getDeclaredGadget
(
"
form_list
"
);
return
result_list
[
1
].
render
({
})
erp5_document
:
{
.
push
(
function
(
form_gadget
)
{
"
_embedded
"
:
{
var
column_list
=
[
"
_view
"
:
{
[
'
title
'
,
'
Title
'
],
"
listbox
"
:
{
[
'
country
'
,
'
Country
'
],
"
column_list
"
:
COLUMN_LIST
,
[
'
lines
'
,
'
Total Lines of Code
'
]
"
show_anchor
"
:
0
,
],
"
default_params
"
:
{},
sort_column_list
=
[
"
editable
"
:
0
,
[
'
lines
'
,
'
Total Lines of Code
'
]
"
key
"
:
"
field_listbox
"
,
];
"
lines
"
:
20
,
"
list_method
"
:
"
portal_catalog
"
,
return
form_gadget
.
render
({
"
query
"
:
QUERY
,
erp5_document
:
{
"
_embedded
"
:
{
"
_view
"
:
{
"
portal_type
"
:
[],
"
listbox
"
:
{
"
search_column_list
"
:
COLUMN_LIST
,
"
column_list
"
:
column_list
,
"
sort_column_list
"
:
SORT_LIST
,
"
show_anchor
"
:
0
,
"
sort_on
"
:
[
"
total_lines
"
,
"
descending
"
],
"
default_params
"
:
{},
"
title
"
:
"
Documents
"
,
"
editable
"
:
0
,
"
type
"
:
"
ListBox
"
"
key
"
:
"
field_listbox
"
,
}
"
lines
"
:
20
,
"
list_method
"
:
"
portal_catalog
"
,
"
query
"
:
'
urn:jio:allDocs?query=
'
+
'
portal_type:"publisher"
'
,
"
portal_type
"
:
[],
"
search_column_list
"
:
column_list
,
"
sort_column_list
"
:
sort_column_list
,
"
sort_on
"
:
[
"
lines
"
,
"
descending
"
],
"
title
"
:
"
Documents
"
,
"
type
"
:
"
ListBox
"
}
}},
"
_links
"
:
{
"
type
"
:
{
// form_list display portal_type in header
name
:
""
}
}
}
},
},
"
_links
"
:
{
"
type
"
:
{
name
:
STR
}}
},
form_definition
:
{
form_definition
:
{
group_list
:
[
group_list
:
[
[
"
bottom
"
,
[[
"
listbox
"
]]],
[
"
bottom
"
,
[[
"
listbox
"
]]],
...
@@ -90,4 +89,5 @@
...
@@ -90,4 +89,5 @@
});
});
});
});
});
});
}(
window
,
RSVP
,
rJS
));
}(
window
,
RSVP
,
rJS
));
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_publisher_statistic_js.xml
View file @
f74f420e
...
@@ -228,7 +228,7 @@
...
@@ -228,7 +228,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.45388.59712.6178
</string>
</value>
<value>
<string>
9
60.20090.53630.24883
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -246,7 +246,7 @@
...
@@ -246,7 +246,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6074387.6
9
</float>
<float>
149
8643289.7
9
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_html.html
View file @
f74f420e
<!Doctype html>
<!Doctype html>
<html>
<html>
<head>
<head>
<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"
>
<title>
Success Story List
</title>
<title>
Success Story List
</title>
<link
type=
"text/css"
rel=
"stylesheet"
href=
"gadget_erp5_afs.css"
/>
<script
src=
"rsvp.js"
></script>
<script
src=
"renderjs.js"
></script>
<script
src=
"handlebars.js"
></script>
<link
type=
"text/css"
rel=
"stylesheet"
href=
"gadget_erp5_afs.css"
/>
<script
src=
"gadget_erp5_page_afs_software.js"
></script>
<script
src=
"rsvp.js"
></script>
<script
id=
"display-template"
type=
"text/x-handlebars-template"
>
<script
src=
"renderjs.js"
></script>
<
section
class
=
"
ui-grid-container ui-responsive
"
>
<script
src=
"handlebars.js"
></script>
<
ul
class
=
"
grid-elements custom-software-profile
"
>
<
li
>
<script
src=
"gadget_erp5_page_afs_software.js"
></script>
{{
#
if
logo
}}
<
div
class
=
"
custom-software-profile-image-wrapper
"
><
a
href
=
"
{{website}}
"
><
img
src
=
"
{{logo}}
"
><
/a></
div
>
<script
id=
"display-template"
type=
"text/x-handlebars-template"
>
{{
/
if
}}
<
section
class
=
"
ui-grid-container ui-responsive
"
>
<
/li
>
<
ul
class
=
"
grid-elements custom-software-profile
"
>
<
li
>
<
li
>
<
h1
>
{{
title
}}
<
/h1
>
{{
#
if
logo
}}
{{
#
if
wikipedia_description
}}
<
div
class
=
"
custom-software-profile-image-wrapper
"
><
a
href
=
"
{{website}}
"
><
img
src
=
"
{{logo}}
"
><
/a></
div
>
<
p
>
{{
wikipedia_description
}}
<
/p
>
{{
/
if
}}
<
br
/>
<
/li
>
{{
/
if
}}
<
li
>
{{
#
if
wikipedia_url
}}
<
h1
>
{{
title
}}
<
/h1
>
<
p
><
a
href
=
"
{{wikipedia_url}}
"
class
=
""
>
Read
more
on
Wikipedia
<
/a></
p
>
{{
#
if
wikipedia_description
}}
{{
/
if
}}
<
p
>
{{
wikipedia_description
}}
<
/p
>
<
/li
>
<
br
/>
<
/ul
>
{{
/
if
}}
{{
#
if
wikipedia_url
}}
<
p
><
a
href
=
"
{{wikipedia_url}}
"
class
=
""
>
Read
more
on
Wikipedia
<
/a></
p
>
{{
/
if
}}
<
/li
>
<
/ul
>
<
section
class
=
"
ui-content-header-plain ui-bar-c
"
>
<
h3
>
Software
Spec
<
/h3
>
<
/section
>
<
table
class
=
"
custom-link-table
"
>
<
tbody
>
<
tr
>
<
td
>
Publisher
Site
<
/td
>
<
td
><
a
href
=
"
{{publisher_website}}
"
>
{{
publisher
}}
<
/a></
td
>
<
/tr
>
<
tr
>
<
td
>
Product
Site
<
/td
>
<
td
><
a
href
=
"
{{website}}
"
>
{{
title
}}
<
/a></
td
>
<
/tr
>
<
tr
>
<
td
>
Source
Code
<
/td
>
<
td
>
{{
#
if
source_code_download
}}
<
a
href
=
"
{{source_code_download}}
"
>
Download
<
/a
>
{{
else
}}
<
a
class
=
"
ui-disabled
"
href
=
""
>
Download
<
/a
>
{{
/
if
}}
/
{{
#
if
source_code_profile
}}
<
a
href
=
"
{{source_code_profile}}
"
>
Profile
<
/a
>
{{
else
}}
<
a
class
=
"
ui-disabled
"
href
=
""
>
Profile
<
/a
>
{{
/
if
}}
<
/td
>
<
/tr
>
<
tr
>
<
td
>
Free
Software
Commercial
Support
<
/td
>
<
td
>
{{
#
if
commercial_support
}}
<
a
href
=
"
{{commercial_support}}
"
>
Yes
<
/a
>
{{
#
if
commercial_support_description
}}
<
abbr
title
=
"
{{commercial_support_description}}
"
>
(?)
<
/abbr
>
{{
/if}
}
{{
else
}}
No
{{
/if}
}
<
/td
>
<
/tr
>
<
/tbody
>
<
/table
>
{{
#
if
success_case_list
}}
<
section
class
=
"
ui-content-header-plain ui-bar-c
"
>
<
section
class
=
"
ui-content-header-plain ui-bar-c
"
>
<
h3
>
S
uccess
Stories
<
/h3
>
<
h3
>
S
oftware
Spec
<
/h3
>
<
/section
>
<
/section
>
<
ul
class
=
"
grid-items custom-success-story-list
"
>
<
table
class
=
"
custom-link-table
"
>
{{
#
each
success_case_list
}}
<
tbody
>
<
li
>
<
tr
>
{{
#
if
image
}}
<
td
>
Publisher
Site
<
/td
>
<
div
class
=
"
custom-success-story-image-wrapper {{image_class}}
"
><
a
href
=
"
{{url}}
"
><
img
src
=
"
{{image}}
"
alt
><
/a></
div
>
<
td
><
a
href
=
"
{{publisher_website}}
"
>
{{
publisher
}}
<
/a></
td
>
{{
else
}}
<
/tr
>
<
div
>&
nbsp
;
<
/div
>
<
tr
>
{{
/
if
}}
<
td
>
Product
Site
<
/td
>
<
p
class
=
"
custom-success-story-title
"
>
{{
title
}}
<
/a></
p
>
<
td
><
a
href
=
"
{{website}}
"
>
{{
title
}}
<
/a></
td
>
<
p
class
=
"
custom-success-story-description
"
>
{{
description
}}
<
a
href
=
"
{{url}}
"
>
Read
more
<
/a></
p
>
<
/tr
>
<
table
class
=
"
custom-link-table
"
>
<
tr
>
<
tbody
>
<
td
>
Source
Code
<
/td
>
<
tr
>
<
td
>
<
td
>
Categories
<
/td
>
{{
#
if
source_code_download
}}
<
td
>
<
a
href
=
"
{{source_code_download}}
"
>
Download
<
/a
>
<
ul
class
=
"
custom-success-story-category-list
"
>
{{
else
}}
{{
#
each
..
/
category_list
}}
<
a
class
=
"
ui-disabled
"
href
=
""
>
Download
<
/a
>
<
li
>
{{
this
}}
<
/li
>
{{
/
if
}}
{{
/
each
}}
/
<
/ul
>
{{
#
if
source_code_profile
}}
<
/td
>
<
a
href
=
"
{{source_code_profile}}
"
>
Profile
<
/a
>
<
/tr
>
{{
else
}}
<
tr
>
<
a
class
=
"
ui-disabled
"
href
=
""
>
Profile
<
/a
>
<
td
class
=
"
custom-success-story-client
"
>
Customer
<
/td
>
{{
/
if
}}
<
td
><
b
>
{{
customer
}}
<
/b></
td
>
<
/td
>
<
/tr
>
<
/tr
>
<
tr
>
<
tr
>
<
td
>
Industry
<
/td
>
<
td
>
Free
Software
Commercial
Support
<
/td
>
<
td
>
{{
industry
}}
<
/td
>
<
td
>
<
/tr
>
{{
#
if
commercial_support
}}
<
tr
>
<
a
href
=
"
{{commercial_support}}
"
>
Yes
<
/a
>
<
td
>
Country
<
/td
>
{{
#
if
commercial_support_description
}}
<
td
>
{{
country
}}
<
/td
>
<
abbr
title
=
"
{{commercial_support_description}}
"
>
(?)
<
/abbr
>
<
/tr
>
{{
/if}
}
<
tr
>
{{
else
}}
<
td
>
Language
<
/td
>
No
<
td
>
{{
language
}}
<
/td
>
{{
/if}
}
<
/tr
>
<
/td
>
<
tr
>
<
/tr
>
<
td
>
Product
Site
<
/td
>
<
/tbody
>
<
td
><
a
href
=
"
{{software_website}}
"
>
{{
software
}}
<
/a></
td
>
<
/table
>
<
/tr
>
<
tr
>
{{
#
if
success_case_list
}}
<
td
>
Publisher
Site
<
/td
>
<
section
class
=
"
ui-content-header-plain ui-bar-c
"
>
<
td
><
a
href
=
"
{{publisher_website}}
"
>
{{
publisher
}}
<
/a></
td
>
<
h3
>
Success
Stories
<
/h3
>
<
/tr
>
<
/section
>
<
/tbody
>
<
ul
class
=
"
grid-items custom-success-story-list
"
>
<
/table
>
{{
#
each
success_case_list
}}
<
/li
>
<
li
>
{{
/
each
}}
{{
#
if
image
}}
<
/ul
>
<
div
class
=
"
custom-success-story-image-wrapper {{image_class}}
"
><
a
href
=
"
{{url}}
"
><
img
src
=
"
{{image}}
"
alt
><
/a></
div
>
{{
/
if
}}
{{
else
}}
<
/section
>
<
div
>&
nbsp
;
<
/div
>
{{
/
if
}}
</script>
<
p
class
=
"
custom-success-story-title
"
>
{{
title
}}
<
/a></
p
>
<
p
class
=
"
custom-success-story-description
"
>
{{
description
}}
<
a
href
=
"
{{url}}
"
>
Read
more
<
/a></
p
>
<
table
class
=
"
custom-link-table
"
>
<
tbody
>
<
tr
>
<
td
>
Categories
<
/td
>
<
td
>
<
ul
class
=
"
custom-success-story-category-list
"
>
{{
#
each
..
/
category_list
}}
<
li
>
{{
this
}}
<
/li
>
{{
/
each
}}
<
/ul
>
<
/td
>
<
/tr
>
<
tr
>
<
td
class
=
"
custom-success-story-client
"
>
Customer
<
/td
>
<
td
><
b
>
{{
customer
}}
<
/b></
td
>
<
/tr
>
<
tr
>
<
td
>
Industry
<
/td
>
<
td
>
{{
industry
}}
<
/td
>
<
/tr
>
<
tr
>
<
td
>
Country
<
/td
>
<
td
>
{{
country
}}
<
/td
>
<
/tr
>
<
tr
>
<
td
>
Language
<
/td
>
<
td
>
{{
language
}}
<
/td
>
<
/tr
>
<
tr
>
<
td
>
Product
Site
<
/td
>
<
td
><
a
href
=
"
{{software_website}}
"
>
{{
software
}}
<
/a></
td
>
<
/tr
>
<
tr
>
<
td
>
Publisher
Site
<
/td
>
<
td
><
a
href
=
"
{{publisher_website}}
"
>
{{
publisher
}}
<
/a></
td
>
<
/tr
>
<
/tbody
>
<
/table
>
<
/li
>
{{
/
each
}}
<
/ul
>
{{
/
if
}}
<
/section
>
</script>
</head>
</head>
<body>
<body>
<div
class=
"display-widget"
></div>
<div
class=
"display-widget"
></div>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_html.xml
View file @
f74f420e
...
@@ -232,7 +232,7 @@
...
@@ -232,7 +232,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
95
5.20609.15320.31283
</string>
</value>
<value>
<string>
95
9.35276.53022.61934
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -250,7 +250,7 @@
...
@@ -250,7 +250,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
5467648.49
</float>
<float>
149
8657572.87
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_js.js
View file @
f74f420e
/*globals window, RSVP, rJS, Handlebars, jIO*/
/*globals window, RSVP, rJS, Handlebars, jIO*/
/*jslint indent: 2, nomen: true, maxlen:
10
0*/
/*jslint indent: 2, nomen: true, maxlen:
8
0*/
(
function
(
window
,
RSVP
,
rJS
,
Handlebars
,
jIO
)
{
(
function
(
window
,
RSVP
,
rJS
,
Handlebars
,
jIO
)
{
"
use strict
"
;
"
use strict
"
;
var
gadget_klass
=
rJS
(
window
),
/////////////////////////////////////////////////////////////////
// some parameters
/////////////////////////////////////////////////////////////////
var
PLACEHOLDER
=
"
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACWCA
"
+
"
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
"
+
"
uy/EEV+A9Em3PVuGWDlwAAAABJRU5ErkJggg==
"
,
// https://en.wikipedia.org/api/rest_v1 - only works in for english
WIKIPEDIA_URL
=
'
https://en.wikipedia.org/api/rest_v1/page/summary/
'
,
NEXEDI_CONTACT_URL
=
'
https://www.nexedi.com/contact
'
,
STR
=
""
,
NA
=
"
N/A
"
,
gadget_klass
=
rJS
(
window
),
templater
=
gadget_klass
.
__template_element
,
templater
=
gadget_klass
.
__template_element
,
display_widget_table
=
Handlebars
.
compile
(
display_widget_table
=
Handlebars
.
compile
(
templater
.
getElementById
(
"
display-template
"
).
innerHTML
templater
.
getElementById
(
"
display-template
"
).
innerHTML
);
);
function
clean
(
case_list
,
software_website
,
software_title
,
publisher_website
,
publisher_title
)
{
/////////////////////////////////////////////////////////////////
var
emptry_string
=
""
,
// some methods
i
,
/////////////////////////////////////////////////////////////////
len
,
function
clean
(
software
)
{
entry
;
var
case_list
=
software
.
success_case_list
,
for
(
i
=
0
,
len
=
case_list
.
length
;
i
<
len
;
i
+=
1
)
{
len
=
case_list
.
length
,
entry
=
case_list
[
i
];
success_case
,
if
(
entry
.
image
===
"
N/A
"
||
entry
.
image
===
""
)
{
i
;
entry
.
image
=
'
gadget_erp5_afs_camera.png?format=png
'
;
entry
.
image_class
=
"
custom-placeholder
"
;
for
(
i
=
0
;
i
<
len
;
i
+=
1
)
{
success_case
=
case_list
[
i
];
if
(
success_case
.
image
===
NA
||
success_case
.
image
===
STR
)
{
success_case
.
image
=
PLACEHOLDER
;
success_case
.
image_class
=
"
custom-placeholder
"
;
}
}
entry
.
software_website
=
software_website
||
emptry_string
;
success_case
.
software_website
=
software
.
website
||
STR
;
entry
.
software
=
software_title
||
emptry_string
;
success_case
.
software
=
software
.
title
||
STR
;
entry
.
publisher_website
=
publisher_website
||
emptry_string
;
success_case
.
publisher_website
=
software
.
publisher_website
||
STR
;
entry
.
publisher
=
publisher_title
||
emptry_string
;
success_case
.
publisher
=
software
.
publisher
||
STR
;
}
}
return
case_list
;
return
case_list
;
}
}
function
isNoValidSuccessCaseList
(
case_list
)
{
return
(
case_list
.
length
===
0
||
case_list
===
NA
||
case_list
[
0
].
title
===
NA
||
case_list
[
0
].
title
===
STR
);
}
function
fetchWikiProfile
(
url
)
{
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
jIO
.
util
.
ajax
({
type
:
"
GET
"
,
headers
:
{
"
api-user-agent
"
:
NEXEDI_CONTACT_URL
},
url
:
WIKIPEDIA_URL
+
url
.
split
(
"
/
"
).
pop
()
});
})
.
push
(
function
(
data
)
{
var
response
=
data
.
target
.
response
||
data
.
target
.
responseText
;
return
JSON
.
parse
(
response
).
extract
;
})
.
push
(
undefined
,
function
()
{
return
undefined
;
});
}
rJS
(
window
)
rJS
(
window
)
/////////////////////////////////////////////////////////////////
// acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
'
updateHeader
'
,
'
updateHeader
'
)
.
declareAcquiredMethod
(
'
updateHeader
'
,
'
updateHeader
'
)
.
declareAcquiredMethod
(
'
jio_get
'
,
'
jio_get
'
)
.
declareAcquiredMethod
(
'
jio_get
'
,
'
jio_get
'
)
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.
declareMethod
(
'
render
'
,
function
(
options
)
{
.
declareMethod
(
'
render
'
,
function
(
options
)
{
var
gadget
=
this
;
var
gadget
=
this
;
...
@@ -40,61 +149,37 @@
...
@@ -40,61 +149,37 @@
return
gadget
.
jio_get
(
options
.
jio_key
);
return
gadget
.
jio_get
(
options
.
jio_key
);
})
})
.
push
(
function
(
software
)
{
.
push
(
function
(
software
)
{
var
queue
=
new
RSVP
.
Queue
();
// https://en.wikipedia.org/api/rest_v1/
// cleanup and retrieve wikipedia data
// only works in for english
if
(
software
.
logo
===
NA
||
software
.
logo
===
STR
)
{
var
wikipedia_api_url
=
'
https://en.wikipedia.org/api/rest_v1/page/summary/
'
;
software
.
logo
=
PLACEHOLDER
;
if
(
software
.
logo
===
"
N/A
"
||
software
.
logo
===
""
)
{
software
.
logo
=
'
gadget_erp5_afs_camera.png?format=png
'
;
}
}
if
(
software
.
commercial_support
===
"
N/A
"
)
{
if
(
software
.
commercial_support
===
NA
)
{
delete
software
.
commercial_support
;
delete
software
.
commercial_support
;
}
}
if
(
software
.
success_case_list
.
length
===
0
||
if
(
isNoValidSuccessCaseList
(
software
.
success_case_list
))
{
software
.
success_case_list
===
"
N/A
"
||
software
.
success_case_list
[
0
].
title
===
"
N/A
"
||
software
.
success_case_list
[
0
].
title
===
""
)
{
delete
software
.
success_case_list
;
delete
software
.
success_case_list
;
}
else
{
}
else
{
software
.
success_case_list
=
clean
(
software
.
success_case_list
=
clean
(
software
);
software
.
success_case_list
,
software
.
website
,
software
.
title
,
software
.
publisher_website
,
software
.
publisher
);
}
}
if
(
software
.
wikipedia_url
===
"
N/A
"
)
{
if
(
software
.
wikipedia_url
===
NA
)
{
delete
software
.
wikipedia_url
;
delete
software
.
wikipedia_url
;
return
software
;
}
else
{
queue
.
push
(
fetchWikiProfile
(
software
.
wikipedia_url
));
}
}
return
new
RSVP
.
Queue
()
return
queue
.
push
(
function
()
{
.
push
(
function
(
wikipedia_content
)
{
return
jIO
.
util
.
ajax
({
if
(
wikipedia_content
)
{
type
:
"
GET
"
,
software
.
wikipedia_description
=
wikipedia_content
;
headers
:
{
"
api-user-agent
"
:
"
https://www.nexedi.com/contact
"
},
}
url
:
wikipedia_api_url
+
software
.
wikipedia_url
.
split
(
"
/
"
).
pop
()
gadget
.
element
.
querySelector
(
"
.display-widget
"
)
});
.
innerHTML
=
display_widget_table
(
software
);
})
.
push
(
function
(
my_content
)
{
var
response
=
my_content
.
target
.
response
||
my_content
.
target
.
responseText
;
software
.
wikipedia_description
=
JSON
.
parse
(
response
).
extract
;
return
software
;
},
function
()
{
// console.log(my_error)
// 404 or not allowed, swallow
return
software
;
});
})
.
push
(
function
(
my_software
)
{
gadget
.
element
.
querySelector
(
"
.display-widget
"
)
.
innerHTML
=
display_widget_table
(
my_software
);
return
gadget
.
updateHeader
({
page_title
:
my_software
.
title
});
return
gadget
.
updateHeader
({
page_title
:
software
.
title
});
});
});
});
});
});
}(
window
,
RSVP
,
rJS
,
Handlebars
,
jIO
));
}(
window
,
RSVP
,
rJS
,
Handlebars
,
jIO
));
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_js.xml
View file @
f74f420e
...
@@ -214,7 +214,7 @@
...
@@ -214,7 +214,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -228,7 +228,7 @@
...
@@ -228,7 +228,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.45186.59501.25241
</string>
</value>
<value>
<string>
9
60.22629.43878.37017
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -246,7 +246,7 @@
...
@@ -246,7 +246,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6067144.61
</float>
<float>
149
8641074.59
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_list_html.html
View file @
f74f420e
<!Doctype html>
<!Doctype html>
<html>
<html>
<head>
<head>
<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"
>
<title>
Software
</title>
<title>
Software
</title>
<link
rel=
"stylesheet"
href=
"gadget_erp5_afs.css"
/>
<link
rel=
"stylesheet"
href=
"gadget_erp5_afs.css"
/>
...
@@ -11,9 +11,6 @@
...
@@ -11,9 +11,6 @@
<script
src=
"renderjs.js"
type=
"text/javascript"
></script>
<script
src=
"renderjs.js"
type=
"text/javascript"
></script>
<script
src=
"handlebars.js"
type=
"text/javascript"
></script>
<script
src=
"handlebars.js"
type=
"text/javascript"
></script>
<!-- custom script -->
<script
src=
"gadget_global.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_page_afs_software_list.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_erp5_page_afs_software_list.js"
type=
"text/javascript"
></script>
</head>
</head>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_list_html.xml
View file @
f74f420e
...
@@ -232,7 +232,7 @@
...
@@ -232,7 +232,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
959.3527
5.22570.50176
</string>
</value>
<value>
<string>
959.3527
6.45558.8891
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -250,7 +250,7 @@
...
@@ -250,7 +250,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
5467641.69
</float>
<float>
149
8657545.3
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_list_js.js
View file @
f74f420e
/*globals window, RSVP, rJS*/
/*globals window, RSVP, rJS*/
/*jslint indent: 2, nomen: true, maxlen: 80*/
/*jslint indent: 2, nomen: true, maxlen: 80*/
(
function
(
window
,
RSVP
,
rJS
)
{
(
function
(
window
,
RSVP
,
rJS
)
{
"
use strict
"
;
"
use strict
"
;
/////////////////////////////////////////////////////////////////
// some parameters
/////////////////////////////////////////////////////////////////
var
STR
=
""
,
QUERY
=
'
urn:jio:allDocs?query=portal_type:"software"
'
,
SORT
=
'
field_listbox_sort_list:json
'
,
COLUMN_LIST
=
[
[
'
title
'
,
'
Title
'
],
[
'
publisher
'
,
'
Publisher
'
],
[
'
category_list
'
,
'
Category
'
]
];
rJS
(
window
)
rJS
(
window
)
.
declareAcquiredMethod
(
"
translate
"
,
"
translate
"
)
.
declareAcquiredMethod
(
"
getUrlFor
"
,
"
getUrlFor
"
)
/////////////////////////////////////////////////////////////////
// acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
"
getUrlParameter
"
,
"
getUrlParameter
"
)
.
declareAcquiredMethod
(
"
getUrlParameter
"
,
"
getUrlParameter
"
)
.
declareAcquiredMethod
(
"
updateHeader
"
,
"
updateHeader
"
)
.
declareAcquiredMethod
(
"
updateHeader
"
,
"
updateHeader
"
)
.
declareAcquiredMethod
(
"
jio_allDocs
"
,
"
jio_allDocs
"
)
/////////////////////////////////////////////////////////////////
// published methods
/////////////////////////////////////////////////////////////////
.
allowPublicAcquisition
(
'
updateHeader
'
,
function
()
{
.
allowPublicAcquisition
(
'
updateHeader
'
,
function
()
{
return
;
return
;
})
})
.
allowPublicAcquisition
(
'
getUrlParameter
'
,
function
(
argument_list
)
{
.
allowPublicAcquisition
(
'
getUrlParameter
'
,
function
(
argument_list
)
{
return
this
.
getUrlParameter
(
argument_list
)
return
this
.
getUrlParameter
(
argument_list
)
.
push
(
function
(
result
)
{
.
push
(
function
(
result
)
{
if
((
result
===
undefined
)
&&
if
((
result
===
undefined
)
&&
(
argument_list
[
0
]
===
SORT
))
{
(
argument_list
[
0
]
===
'
field_listbox_sort_list:json
'
))
{
return
[[
'
title
'
,
'
ascending
'
]];
return
[[
'
title
'
,
'
ascending
'
]];
}
}
return
result
;
return
result
;
});
});
})
})
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.
declareMethod
(
"
render
"
,
function
()
{
.
declareMethod
(
"
render
"
,
function
()
{
var
gadget
=
this
;
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
.
push
(
function
()
{
return
gadget
.
updateHeader
({
return
RSVP
.
all
([
page_title
:
"
Software List
"
gadget
.
updateHeader
({
page_title
:
"
Software List
"
}),
});
gadget
.
getDeclaredGadget
(
"
form_list
"
)
})
]);
.
push
(
function
()
{
return
gadget
.
getDeclaredGadget
(
"
form_list
"
);
})
})
.
push
(
function
(
form_gadget
)
{
.
push
(
function
(
result_list
)
{
var
column_list
=
[
return
result_list
[
1
].
render
({
//['logo', 'Logo'],
erp5_document
:
{
[
'
title
'
,
'
Title
'
],
"
_embedded
"
:
{
[
'
publisher
'
,
'
Publisher
'
],
"
_view
"
:
{
[
'
category_list
'
,
'
Category
'
]
"
listbox
"
:
{
];
"
column_list
"
:
COLUMN_LIST
,
"
show_anchor
"
:
0
,
return
form_gadget
.
render
({
"
default_params
"
:
{},
erp5_document
:
{
"
_embedded
"
:
{
"
_view
"
:
{
"
editable
"
:
0
,
"
listbox
"
:
{
"
key
"
:
"
field_listbox
"
,
"
column_list
"
:
column_list
,
"
lines
"
:
20
,
"
show_anchor
"
:
0
,
"
list_method
"
:
"
portal_catalog
"
,
"
default_params
"
:
{},
"
query
"
:
QUERY
,
"
editable
"
:
0
,
"
portal_type
"
:
[],
"
key
"
:
"
field_listbox
"
,
"
search_column_list
"
:
COLUMN_LIST
,
"
lines
"
:
20
,
"
sort_column_list
"
:
COLUMN_LIST
,
"
list_method
"
:
"
portal_catalog
"
,
"
title
"
:
"
Documents
"
,
"
query
"
:
'
urn:jio:allDocs?query=
'
+
'
portal_type:
'
+
"
type
"
:
"
ListBox
"
'
"software"
'
,
}
"
portal_type
"
:
[],
"
search_column_list
"
:
column_list
,
"
sort_column_list
"
:
column_list
,
"
title
"
:
"
Documents
"
,
"
type
"
:
"
ListBox
"
}
}},
"
_links
"
:
{
"
type
"
:
{
// form_list display portal_type in header
name
:
""
}
}
}
},
},
"
_links
"
:
{
"
type
"
:
{
name
:
STR
}}
},
form_definition
:
{
form_definition
:
{
group_list
:
[
group_list
:
[
[
[
"
bottom
"
,
[[
"
listbox
"
]]],
"
bottom
"
,
[
"
hidden
"
,
[
"
listbox_modification_date
"
]]
[[
"
listbox
"
]]
],
[
"
hidden
"
,
[
"
listbox_modification_date
"
]
]
]
]
}
}
});
});
});
});
});
});
}(
window
,
RSVP
,
rJS
));
}(
window
,
RSVP
,
rJS
));
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_software_list_js.xml
View file @
f74f420e
...
@@ -214,7 +214,7 @@
...
@@ -214,7 +214,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -228,7 +228,7 @@
...
@@ -228,7 +228,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.45114.42947.5734
</string>
</value>
<value>
<string>
9
60.22662.39286.38860
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -246,7 +246,7 @@
...
@@ -246,7 +246,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6067168.05
</float>
<float>
149
8643008.6
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_html.html
View file @
f74f420e
<!Doctype html>
<!Doctype html>
<html>
<html>
<head>
<head>
<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"
>
<title>
Success Story
</title>
<title>
Success Story
</title>
<script
src=
"rsvp.js"
></script>
<link
type=
"text/css"
rel=
"stylesheet"
href=
"gadget_erp5_afs.css"
/>
<script
src=
"renderjs.js"
></script>
<script
src=
"handlebars.js"
></script>
<script
src=
"rsvp.js"
></script>
<script
src=
"renderjs.js"
></script>
<script
src=
"handlebars.js"
></script>
<script
src=
"gadget_erp5_page_afs_success_case.js"
></script>
<link
type=
"text/css"
rel=
"stylesheet"
href=
"gadget_erp5_afs.css"
/>
<script
id=
"display-template"
type=
"text/x-handlebars-template"
>
<
section
class
=
"
ui-grid-container ui-responsive
"
>
<
h1
>
{{
title
}}
<
/h1
>
{{
#
if
image
}}
<
div
class
=
"
custom-success-story-image-wrapper {{image_class}}
"
><
a
href
=
"
{{url}}
"
><
img
src
=
"
{{image}}
"
alt
><
/a></
div
>
{{
else
}}
<
div
>&
nbsp
;
<
/div
>
{{
/
if
}}
<
p
class
=
"
custom-success-story-description
"
>
{{
description
}}
<
a
href
=
"
{{url}}
"
>
Read
More
<
/a></
p
>
<script
src=
"gadget_erp5_page_afs_success_case.js"
></script>
<
table
class
=
"
custom-link-table
"
>
<
tbody
>
<
tr
>
<
td
>
Categories
<
/td
>
<
td
>
<
ul
class
=
"
custom-success-story-category-list
"
>
{{
#
each
category_list
}}
<
li
>
{{
this
}}
<
/li
>
{{
/
each
}}
<
/ul
>
<
/td
>
<
/tr
>
<
tr
>
<
td
class
=
"
custom-success-story-client
"
>
Customer
<
/td
>
<
td
><
b
>
{{
customer
}}
<
/b></
td
>
<
/tr
>
<
tr
>
<
td
>
Industry
<
/td
>
<
td
>
{{
industry
}}
<
/td
>
<
/tr
>
<
tr
>
<
td
>
Country
<
/td
>
<
td
>
{{
country
}}
<
/td
>
<
/tr
>
<
tr
>
<
td
>
Language
<
/td
>
<
td
>
{{
language
}}
<
/td
>
<
/tr
>
<
tr
>
<
td
>
Product
Site
<
/td
>
<
td
><
a
href
=
"
{{software_website}}
"
>
{{
software
}}
<
/a></
td
>
<
/tr
>
<
tr
>
<
td
>
Publisher
Site
<
/td
>
<
td
><
a
href
=
"
{{publisher_website}}
"
>
{{
publisher
}}
<
/a></
td
>
<
/tr
>
<
/tbody
>
<
/table
>
<script
id=
"display-template"
type=
"text/x-handlebars-template"
>
<
/section
>
<
section
class
=
"
ui-grid-container ui-responsive
"
>
</script>
<
h1
>
{{
title
}}
<
/h1
>
{{
#
if
image
}}
<
div
class
=
"
custom-success-story-image-wrapper {{image_class}}
"
><
a
href
=
"
{{url}}
"
><
img
src
=
"
{{image}}
"
alt
><
/a></
div
>
{{
else
}}
<
div
>&
nbsp
;
<
/div
>
{{
/
if
}}
<
p
class
=
"
custom-success-story-description
"
>
{{
description
}}
<
a
href
=
"
{{url}}
"
>
Read
More
<
/a></
p
>
<
table
class
=
"
custom-link-table
"
>
<
tbody
>
<
tr
>
<
td
>
Categories
<
/td
>
<
td
>
<
ul
class
=
"
custom-success-story-category-list
"
>
{{
#
each
category_list
}}
<
li
>
{{
this
}}
<
/li
>
{{
/
each
}}
<
/ul
>
<
/td
>
<
/tr
>
<
tr
>
<
td
class
=
"
custom-success-story-client
"
>
Customer
<
/td
>
<
td
><
b
>
{{
customer
}}
<
/b></
td
>
<
/tr
>
<
tr
>
<
td
>
Industry
<
/td
>
<
td
>
{{
industry
}}
<
/td
>
<
/tr
>
<
tr
>
<
td
>
Country
<
/td
>
<
td
>
{{
country
}}
<
/td
>
<
/tr
>
<
tr
>
<
td
>
Language
<
/td
>
<
td
>
{{
language
}}
<
/td
>
<
/tr
>
<
tr
>
<
td
>
Product
Site
<
/td
>
<
td
><
a
href
=
"
{{software_website}}
"
>
{{
software
}}
<
/a></
td
>
<
/tr
>
<
tr
>
<
td
>
Publisher
Site
<
/td
>
<
td
><
a
href
=
"
{{publisher_website}}
"
>
{{
publisher
}}
<
/a></
td
>
<
/tr
>
<
/tbody
>
<
/table
>
<
/section
>
</script>
</head>
</head>
<body>
<body>
<div
class=
"display-widget"
></div>
<div
class=
"display-widget"
></div>
</body>
</body>
</html>
</html>
\ No newline at end of file
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_html.xml
View file @
f74f420e
...
@@ -232,7 +232,7 @@
...
@@ -232,7 +232,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
95
4.58847.53110.31982
</string>
</value>
<value>
<string>
95
9.35276.22741.45209
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -250,7 +250,7 @@
...
@@ -250,7 +250,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
5467620.79
</float>
<float>
149
8657466.07
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_js.js
View file @
f74f420e
...
@@ -3,31 +3,114 @@
...
@@ -3,31 +3,114 @@
(
function
(
window
,
RSVP
,
rJS
,
Handlebars
)
{
(
function
(
window
,
RSVP
,
rJS
,
Handlebars
)
{
"
use strict
"
;
"
use strict
"
;
var
gadget_klass
=
rJS
(
window
),
/////////////////////////////////////////////////////////////////
// some parameters
/////////////////////////////////////////////////////////////////
var
PLACEHOLDER
=
"
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACWCA
"
+
"
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
"
+
"
uy/EEV+A9Em3PVuGWDlwAAAABJRU5ErkJggg==
"
,
STR
=
""
,
NA
=
"
N/A
"
,
gadget_klass
=
rJS
(
window
),
templater
=
gadget_klass
.
__template_element
,
templater
=
gadget_klass
.
__template_element
,
display_widget_table
=
Handlebars
.
compile
(
display_widget_table
=
Handlebars
.
compile
(
templater
.
getElementById
(
"
display-template
"
).
innerHTML
templater
.
getElementById
(
"
display-template
"
).
innerHTML
);
);
rJS
(
window
)
rJS
(
window
)
/////////////////////////////////////////////////////////////////
// acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
'
updateHeader
'
,
'
updateHeader
'
)
.
declareAcquiredMethod
(
'
updateHeader
'
,
'
updateHeader
'
)
.
declareAcquiredMethod
(
'
jio_get
'
,
'
jio_get
'
)
.
declareAcquiredMethod
(
'
jio_get
'
,
'
jio_get
'
)
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.
declareMethod
(
'
render
'
,
function
(
options
)
{
.
declareMethod
(
'
render
'
,
function
(
options
)
{
var
gadget
=
this
;
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
.
push
(
function
()
{
return
gadget
.
jio_get
(
options
.
jio_key
);
return
gadget
.
jio_get
(
options
.
jio_key
);
})
})
.
push
(
function
(
story
)
{
.
push
(
function
(
story
)
{
if
(
story
.
image
===
"
N/A
"
||
story
.
image
===
""
)
{
story
.
image
=
'
gadget_erp5_afs_camera.png?format=png
'
;
if
(
story
.
image
===
NA
||
story
.
image
===
STR
)
{
story
.
image
=
PLACEHOLDER
;
story
.
image_class
=
"
custom-placeholder
"
;
story
.
image_class
=
"
custom-placeholder
"
;
}
}
gadget
.
element
.
querySelector
(
"
.display-widget
"
)
gadget
.
element
.
querySelector
(
"
.display-widget
"
)
.
innerHTML
=
display_widget_table
(
story
);
.
innerHTML
=
display_widget_table
(
story
);
return
gadget
.
updateHeader
({
page_title
:
story
.
title
});
return
gadget
.
updateHeader
({
page_title
:
story
.
title
});
});
});
});
});
}(
window
,
RSVP
,
rJS
,
Handlebars
));
\ No newline at end of file
}(
window
,
RSVP
,
rJS
,
Handlebars
));
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_js.xml
View file @
f74f420e
...
@@ -214,7 +214,7 @@
...
@@ -214,7 +214,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -228,7 +228,7 @@
...
@@ -228,7 +228,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
95
9.45187.8875.24320
</string>
</value>
<value>
<string>
95
5.20616.5429.32785
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -246,7 +246,7 @@
...
@@ -246,7 +246,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6067187.24
</float>
<float>
149
8641401.93
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_list_html.html
View file @
f74f420e
<!Doctype html>
<!Doctype html>
<html>
<html>
<head>
<head>
<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"
>
<title>
Success Case List
</title>
<title>
Success Case List
</title>
<link
rel=
"stylesheet"
href=
"gadget_erp5_afs.css"
/>
<script
src=
"rsvp.js"
></script>
<link
rel=
"stylesheet"
href=
"gadget_erp5_afs.css"
/>
<script
src=
"renderjs.js"
></script>
<script
src=
"gadget_global.js"
></script>
<script
src=
"rsvp.js"
></script>
<script
src=
"gadget_erp5_page_afs_success_case_list.js"
></script>
<script
src=
"renderjs.js"
></script>
<script
src=
"gadget_global.js"
></script>
<script
src=
"gadget_erp5_page_afs_success_case_list.js"
></script>
</head>
</head>
<body>
<body>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_list_html.xml
View file @
f74f420e
...
@@ -250,7 +250,7 @@
...
@@ -250,7 +250,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
5467635.2
</float>
<float>
149
8657524.31
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_list_js.js
View file @
f74f420e
...
@@ -2,85 +2,93 @@
...
@@ -2,85 +2,93 @@
/*jslint indent: 2, nomen: true, maxlen: 80*/
/*jslint indent: 2, nomen: true, maxlen: 80*/
(
function
(
window
,
RSVP
,
rJS
)
{
(
function
(
window
,
RSVP
,
rJS
)
{
"
use strict
"
;
"
use strict
"
;
/////////////////////////////////////////////////////////////////
// some parameters
/////////////////////////////////////////////////////////////////
var
STR
=
""
,
QUERY
=
'
urn:jio:allDocs?query=portal_type:"success_case"
'
,
SORT
=
'
field_listbox_sort_list:json
'
,
COLUMN_LIST
=
[
[
'
title
'
,
'
Title
'
],
[
'
software
'
,
'
Software
'
],
[
'
publisher
'
,
'
Publisher
'
],
[
'
industry
'
,
'
Industry
'
],
[
'
category_list
'
,
'
Software Categories
'
],
[
'
customer
'
,
'
Customer
'
],
[
'
country
'
,
'
Country
'
],
[
'
language
'
,
'
Language
'
]
];
rJS
(
window
)
rJS
(
window
)
.
declareAcquiredMethod
(
"
translate
"
,
"
translate
"
)
.
declareAcquiredMethod
(
"
getUrlFor
"
,
"
getUrlFor
"
)
/////////////////////////////////////////////////////////////////
// acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
"
getUrlParameter
"
,
"
getUrlParameter
"
)
.
declareAcquiredMethod
(
"
getUrlParameter
"
,
"
getUrlParameter
"
)
.
declareAcquiredMethod
(
"
updateHeader
"
,
"
updateHeader
"
)
.
declareAcquiredMethod
(
"
updateHeader
"
,
"
updateHeader
"
)
.
declareAcquiredMethod
(
"
jio_allDocs
"
,
"
jio_allDocs
"
)
/////////////////////////////////////////////////////////////////
// published methods
/////////////////////////////////////////////////////////////////
.
allowPublicAcquisition
(
'
updateHeader
'
,
function
()
{
.
allowPublicAcquisition
(
'
updateHeader
'
,
function
()
{
return
;
return
;
})
})
.
allowPublicAcquisition
(
'
getUrlParameter
'
,
function
(
argument_list
)
{
.
allowPublicAcquisition
(
'
getUrlParameter
'
,
function
(
argument_list
)
{
return
this
.
getUrlParameter
(
argument_list
)
return
this
.
getUrlParameter
(
argument_list
)
.
push
(
function
(
result
)
{
.
push
(
function
(
result
)
{
if
((
result
===
undefined
)
&&
if
((
result
===
undefined
)
&&
(
argument_list
[
0
]
===
SORT
))
{
(
argument_list
[
0
]
===
'
field_listbox_sort_list:json
'
))
{
return
[[
'
title
'
,
'
ascending
'
]];
return
[[
'
title
'
,
'
ascending
'
]];
}
}
return
result
;
return
result
;
});
});
})
})
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.
declareMethod
(
"
render
"
,
function
()
{
.
declareMethod
(
"
render
"
,
function
()
{
var
gadget
=
this
;
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
.
push
(
function
()
{
return
gadget
.
updateHeader
({
return
RSVP
.
all
([
page_title
:
"
Success Story List
"
gadget
.
updateHeader
({
page_title
:
"
Success Story List
"
}),
});
gadget
.
getDeclaredGadget
(
"
form_list
"
)
]);
})
})
.
push
(
function
()
{
.
push
(
function
(
result_list
)
{
return
gadget
.
getDeclaredGadget
(
"
form_list
"
);
return
result_list
[
1
].
render
({
})
erp5_document
:
{
.
push
(
function
(
form_gadget
)
{
"
_embedded
"
:
{
var
column_list
=
[
"
_view
"
:
{
[
'
title
'
,
'
Title
'
],
"
listbox
"
:
{
[
'
software
'
,
'
Software
'
],
"
column_list
"
:
COLUMN_LIST
,
[
'
publisher
'
,
'
Publisher
'
],
"
show_anchor
"
:
0
,
[
'
industry
'
,
'
Industry
'
],
"
default_params
"
:
{},
[
'
category_list
'
,
'
Software Categories
'
],
"
editable
"
:
1
,
[
'
customer
'
,
'
Customer
'
],
"
editable_column_list
"
:
[],
[
'
country
'
,
'
Country
'
],
"
key
"
:
"
field_listbox
"
,
[
'
language
'
,
'
Language
'
]
"
lines
"
:
20
,
];
"
list_method
"
:
"
portal_catalog
"
,
"
query
"
:
QUERY
,
return
form_gadget
.
render
({
"
portal_type
"
:
[],
erp5_document
:
{
"
_embedded
"
:
{
"
_view
"
:
{
"
search_column_list
"
:
COLUMN_LIST
,
"
listbox
"
:
{
"
sort_column_list
"
:
COLUMN_LIST
,
"
column_list
"
:
column_list
,
"
title
"
:
""
,
"
show_anchor
"
:
0
,
"
type
"
:
"
ListBox
"
"
default_params
"
:
{},
}
"
editable
"
:
1
,
"
editable_column_list
"
:
[],
"
key
"
:
"
field_listbox
"
,
"
lines
"
:
20
,
"
list_method
"
:
"
portal_catalog
"
,
"
query
"
:
'
urn:jio:allDocs?query=portal_type:"success_case"
'
,
"
portal_type
"
:
[],
"
search_column_list
"
:
column_list
,
"
sort_column_list
"
:
column_list
,
"
title
"
:
""
,
"
type
"
:
"
ListBox
"
}
}},
"
_links
"
:
{
"
type
"
:
{
// form_list display portal_type in header
name
:
""
}
}
}
},
},
"
_links
"
:
{
"
type
"
:
{
name
:
STR
}}
},
form_definition
:
{
form_definition
:
{
group_list
:
[[
group_list
:
[
"
bottom
"
,
[
"
bottom
"
,
[[
"
listbox
"
]]],
[[
"
listbox
"
]]
[
"
hidden
"
,
[
"
listbox_modification_date
"
]]
],
]
[
"
hidden
"
,
[
"
listbox_modification_date
"
]]]
}
}
});
});
});
});
});
});
}(
window
,
RSVP
,
rJS
));
}(
window
,
RSVP
,
rJS
));
\ No newline at end of file
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_success_case_list_js.xml
View file @
f74f420e
...
@@ -214,7 +214,7 @@
...
@@ -214,7 +214,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
<value>
<string>
3
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
...
@@ -228,7 +228,7 @@
...
@@ -228,7 +228,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.45122.5485.9130
</string>
</value>
<value>
<string>
9
60.25491.21351.54101
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -246,7 +246,7 @@
...
@@ -246,7 +246,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6067205.22
</float>
<float>
149
8812721.65
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_unsplash_js.js
View file @
f74f420e
...
@@ -52,11 +52,11 @@
...
@@ -52,11 +52,11 @@
if
(
is_response
)
{
if
(
is_response
)
{
image_dict
=
JSON
.
parse
(
is_response
);
image_dict
=
JSON
.
parse
(
is_response
);
// I don't need the gadget hooray, just the container, so look away
//gadget.element.innerHTML =
//gadget.element.innerHTML =
// I don't need the gadget hooray, just the container, so sorry.
return
template
({
return
template
({
"
message
"
:
"
What can Free Software do for you?
"
,
"
message
"
:
"
What can Free Software do for you?
"
,
"
src
"
:
image_dict
.
urls
.
full
+
UTM
,
"
src
"
:
image_dict
.
urls
.
regular
+
UTM
,
"
alt
"
:
"
Free Software
"
,
"
alt
"
:
"
Free Software
"
,
"
source_url
"
:
image_dict
.
user
.
links
.
html
+
UTM
,
"
source_url
"
:
image_dict
.
user
.
links
.
html
+
UTM
,
"
source_title
"
:
image_dict
.
user
.
name
,
"
source_title
"
:
image_dict
.
user
.
name
,
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_page_module/gadget_erp5_page_afs_unsplash_js.xml
View file @
f74f420e
...
@@ -228,7 +228,7 @@
...
@@ -228,7 +228,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
9
59.45391.58217.49288
</string>
</value>
<value>
<string>
9
60.19800.9537.42137
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -246,7 +246,7 @@
...
@@ -246,7 +246,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
6074563.45
</float>
<float>
149
8491243.08
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_site_module/afs.xml
View file @
f74f420e
...
@@ -337,7 +337,7 @@
...
@@ -337,7 +337,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
configuration_content_security_policy
</string>
</key>
<key>
<string>
configuration_content_security_policy
</string>
</key>
<value>
<string>
default-src \'self\'; img-src \'self\' https://images.unsplash.com * data:; media-src \'self\' blob:; connect-src \'self\' https://api.unsplash.com https://en.wikipedia.org https://fr.wikipedia.org https://raw.githubusercontent.com https://api.github.com data:; script-src \'self\' \'unsafe-eval\'; font-src \'self\'; style-src \'self\' data:; frame-src \'self\' data:
</string>
</value>
<value>
<string>
default-src \'self\'; img-src \'self\' https://images.unsplash.com * data:; media-src \'self\' blob:; connect-src \'self\' https://api.unsplash.com https://
www.openhub.net https://
en.wikipedia.org https://fr.wikipedia.org https://raw.githubusercontent.com https://api.github.com data:; script-src \'self\' \'unsafe-eval\'; font-src \'self\'; style-src \'self\' data:; frame-src \'self\' data:
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
configuration_default_view_action_reference
</string>
</key>
<key>
<string>
configuration_default_view_action_reference
</string>
</key>
...
@@ -614,7 +614,7 @@
...
@@ -614,7 +614,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
959.3
0886.17996.5358
</string>
</value>
<value>
<string>
959.3
1263.27499.6263
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -632,7 +632,7 @@
...
@@ -632,7 +632,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
149
5226845.13
</float>
<float>
149
7023079.42
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
...
bt5/erp5_officejs_afs_directory/PathTemplateItem/web_site_module/afs/hateoas.xml
0 → 100644
View file @
f74f420e
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Web Section"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_Add_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Add_portal_folders_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Copy_or_Move_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Delete_objects_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Modify_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
<string>
Owner
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
__before_publishing_traverse__
</string>
</key>
<value>
<object>
<klass>
<global
name=
"MultiHook"
module=
"ZPublisher.BeforeTraverse"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_defined_in_class
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
_hookname
</string>
</key>
<value>
<string>
__before_publishing_traverse__
</string>
</value>
</item>
<item>
<key>
<string>
_list
</string>
</key>
<value>
<list>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</list>
</value>
</item>
<item>
<key>
<string>
_prior
</string>
</key>
<value>
<none/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
__before_traverse__
</string>
</key>
<value>
<dictionary>
<item>
<key>
<tuple>
<int>
99
</int>
<string>
ERP5 Web Section/hateoas
</string>
</tuple>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
__translation_dict
</string>
</key>
<value>
<dictionary/>
</value>
</item>
<item>
<key>
<string>
_count
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_identity_criterion
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_local_properties
</string>
</key>
<value>
<tuple>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
default_view_action_reference
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
view_action_category
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_login
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
configuration_logout
</string>
</value>
</item>
<item>
<key>
<string>
type
</string>
</key>
<value>
<string>
string
</string>
</value>
</item>
</dictionary>
</tuple>
</value>
</item>
<item>
<key>
<string>
_mt_index
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAU=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_range_criterion
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAY=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_tree
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAc=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
caching_policy/hateoas
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
configuration_login
</string>
</key>
<value>
<string>
connection/login_form{?came_from}
</string>
</value>
</item>
<item>
<key>
<string>
configuration_logout
</string>
</key>
<value>
<string>
connection/WebSite_logout{?came_from}
</string>
</value>
</item>
<item>
<key>
<string>
container_layout
</string>
</key>
<value>
<string>
ERP5Document_getHateoas
</string>
</value>
</item>
<item>
<key>
<string>
content_layout
</string>
</key>
<value>
<string>
ERP5Document_getHateoas
</string>
</value>
</item>
<item>
<key>
<string>
custom_render_method_id
</string>
</key>
<value>
<string>
ERP5Document_getHateoas
</string>
</value>
</item>
<item>
<key>
<string>
default_view_action_reference
</string>
</key>
<value>
<string>
view
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
empty_criterion_valid
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
hateoas
</string>
</value>
</item>
<item>
<key>
<string>
layout_configuration_form_id
</string>
</key>
<value>
<string>
WebSection_viewHateoasPreference
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Section
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
skin_selection_name
</string>
</key>
<value>
<string>
HalRestricted
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Restricted Hateoas
</string>
</value>
</item>
<item>
<key>
<string>
view_action_category
</string>
</key>
<value>
<string>
object_view
</string>
</value>
</item>
<item>
<key>
<string>
visible
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
workflow_history
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAg=
</string>
</persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"WebSectionTraversalHook"
module=
"Products.ERP5.Document.WebSection"
/>
</pickle>
<pickle>
<dictionary/>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"Length"
module=
"BTrees.Length"
/>
</pickle>
<pickle>
<int>
0
</int>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"5"
aka=
"AAAAAAAAAAU="
>
<pickle>
<global
name=
"OOBTree"
module=
"BTrees.OOBTree"
/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record
id=
"6"
aka=
"AAAAAAAAAAY="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"7"
aka=
"AAAAAAAAAAc="
>
<pickle>
<global
name=
"OOBTree"
module=
"BTrees.OOBTree"
/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record
id=
"8"
aka=
"AAAAAAAAAAg="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
category_publication_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAk=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
edit_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAo=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"9"
aka=
"AAAAAAAAAAk="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
error_message
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
time
</string>
</key>
<value>
<object>
<klass>
<global
name=
"DateTime"
module=
"DateTime.DateTime"
/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>
1472632323.86
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
validation_state
</string>
</key>
<value>
<string>
embedded
</string>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
<record
id=
"10"
aka=
"AAAAAAAAAAo="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
edit
</string>
</value>
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
error_message
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
953.39264.4304.36881
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
<value>
<string>
current
</string>
</value>
</item>
<item>
<key>
<string>
time
</string>
</key>
<value>
<object>
<klass>
<global
name=
"DateTime"
module=
"DateTime.DateTime"
/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>
1473844454.31
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_afs_directory/PathTemplateItem/
image_module/gadget_erp5_afs_logo_png
.xml
→
bt5/erp5_officejs_afs_directory/PathTemplateItem/
web_site_module/afs/hateoas/connection
.xml
View file @
f74f420e
...
@@ -2,36 +2,30 @@
...
@@ -2,36 +2,30 @@
<ZopeData>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<pickle>
<global
name=
"
Image
"
module=
"erp5.portal_type"
/>
<global
name=
"
Web Section
"
module=
"erp5.portal_type"
/>
</pickle>
</pickle>
<pickle>
<pickle>
<dictionary>
<dictionary>
<item>
<item>
<key>
<string>
_A
ccess_contents_information
_Permission
</string>
</key>
<key>
<string>
_A
dd_portal_content
_Permission
</string>
</key>
<value>
<value>
<tuple>
<tuple>
<string>
Anonymous
</string>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Assignor
</string>
<string>
Associate
</string>
<string>
Auditor
</string>
<string>
Manager
</string>
<string>
Manager
</string>
<string>
Owner
</string>
</tuple>
</tuple>
</value>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
_Add_portal_
content
_Permission
</string>
</key>
<key>
<string>
_Add_portal_
folders
_Permission
</string>
</key>
<value>
<value>
<tuple>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
<string>
Manager
</string>
</tuple>
</tuple>
</value>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
_C
hange_local_roles
_Permission
</string>
</key>
<key>
<string>
_C
opy_or_Move
_Permission
</string>
</key>
<value>
<value>
<tuple>
<tuple>
<string>
Assignor
</string>
<string>
Assignor
</string>
...
@@ -40,58 +34,111 @@
...
@@ -40,58 +34,111 @@
</value>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
_
Modify_portal_content
_Permission
</string>
</key>
<key>
<string>
_
Delete_objects
_Permission
</string>
</key>
<value>
<value>
<tuple>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
<string>
Manager
</string>
</tuple>
</tuple>
</value>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
_
View
_Permission
</string>
</key>
<key>
<string>
_
Modify_portal_content
_Permission
</string>
</key>
<value>
<value>
<tuple>
<tuple>
<string>
Anonymous
</string>
<string>
Assignee
</string>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Assignor
</string>
<string>
Associate
</string>
<string>
Auditor
</string>
<string>
Manager
</string>
<string>
Manager
</string>
<string>
Owner
</string>
<string>
Owner
</string>
</tuple>
</tuple>
</value>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
_
count
</string>
</key>
<key>
<string>
_
_before_publishing_traverse__
</string>
</key>
<value>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
<object>
<klass>
<global
name=
"MultiHook"
module=
"ZPublisher.BeforeTraverse"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_defined_in_class
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
_hookname
</string>
</key>
<value>
<string>
__before_publishing_traverse__
</string>
</value>
</item>
<item>
<key>
<string>
_list
</string>
</key>
<value>
<list>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</list>
</value>
</item>
<item>
<key>
<string>
_prior
</string>
</key>
<value>
<none/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
_mt_index
</string>
</key>
<key>
<string>
__before_traverse__
</string>
</key>
<value>
<dictionary>
<item>
<key>
<tuple>
<int>
99
</int>
<string>
ERP5 Web Section/connection
</string>
</tuple>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
_identity_criterion
</string>
</key>
<value>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
_
tree
</string>
</key>
<key>
<string>
_
range_criterion
</string>
</key>
<value>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
content_md5
</string>
</key>
<key>
<string>
categories
</string>
</key>
<value>
<string>
85b2e0cef64f374f3540fca9e446fb3e
</string>
</value>
<value>
<tuple>
<string>
caching_policy/no-cache
</string>
</tuple>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
cont
ent_type
</string>
</key>
<key>
<string>
cont
ainer_layout
</string>
</key>
<value>
<string>
image/png
</string>
</value>
<value>
<string>
WebSection_renderDefaultPageAsGadget
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
default_reference
</string>
</key>
<key>
<string>
content_layout
</string>
</key>
<value>
<string>
gadget_erp5_afs_logo.png
</string>
</value>
<value>
<string>
WebSection_renderDefaultPageAsGadget
</string>
</value>
</item>
<item>
<key>
<string>
custom_render_method_id
</string>
</key>
<value>
<string>
WebSection_renderDefaultPageAsGadget
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
description
</string>
</key>
<key>
<string>
description
</string>
</key>
...
@@ -100,24 +147,20 @@
...
@@ -100,24 +147,20 @@
</value>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
filename
</string>
</key>
<key>
<string>
empty_criterion_valid
</string>
</key>
<value>
<string>
afs_logo.png
</string>
</value>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
height
</string>
</key>
<value>
<int>
150
</int>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
id
</string>
</key>
<key>
<string>
id
</string>
</key>
<value>
<string>
gadget_erp5_afs_logo_png
</string>
</value>
<value>
<string>
connection
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
la
nguage
</string>
</key>
<key>
<string>
la
yout_configuration_form_id
</string>
</key>
<value>
<string>
en
</string>
</value>
<value>
<string>
WebSection_viewRenderJSPreference
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
portal_type
</string>
</key>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Image
</string>
</value>
<value>
<string>
Web Section
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
short_title
</string>
</key>
<key>
<string>
short_title
</string>
</key>
...
@@ -126,16 +169,16 @@
...
@@ -126,16 +169,16 @@
</value>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
titl
e
</string>
</key>
<key>
<string>
skin_selection_nam
e
</string>
</key>
<value>
<string>
AFS Logo
</string>
</value>
<value>
<string>
RJS
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
version
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string>
001
</string>
</value>
<value>
<string>
Connection
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
width
</string>
</key>
<key>
<string>
visible
</string>
</key>
<value>
<int>
30
0
</int>
</value>
<value>
<int>
0
</int>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
workflow_history
</string>
</key>
<key>
<string>
workflow_history
</string>
</key>
...
@@ -148,24 +191,40 @@
...
@@ -148,24 +191,40 @@
</record>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<pickle>
<global
name=
"Length"
module=
"BTrees.Length"
/>
<global
name=
"WebSectionTraversalHook"
module=
"Products.ERP5.Document.WebSection"
/>
</pickle>
<pickle>
<dictionary/>
</pickle>
</pickle>
<pickle>
<int>
0
</int>
</pickle>
</record>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<pickle>
<global
name=
"
OOBTree"
module=
"BTrees.OOBTree
"
/>
<global
name=
"
PersistentMapping"
module=
"Persistence.mapping
"
/>
</pickle>
</pickle>
<pickle>
<pickle>
<none/>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</pickle>
</record>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<pickle>
<global
name=
"
OOBTree"
module=
"BTrees.OOBTree
"
/>
<global
name=
"
PersistentMapping"
module=
"Persistence.mapping
"
/>
</pickle>
</pickle>
<pickle>
<pickle>
<none/>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</pickle>
</record>
</record>
<record
id=
"5"
aka=
"AAAAAAAAAAU="
>
<record
id=
"5"
aka=
"AAAAAAAAAAU="
>
...
@@ -179,7 +238,7 @@
...
@@ -179,7 +238,7 @@
<value>
<value>
<dictionary>
<dictionary>
<item>
<item>
<key>
<string>
document
_publication_workflow
</string>
</key>
<key>
<string>
category
_publication_workflow
</string>
</key>
<value>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAY=
</string>
</persistent>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAY=
</string>
</persistent>
</value>
</value>
...
@@ -207,7 +266,9 @@
...
@@ -207,7 +266,9 @@
<dictionary>
<dictionary>
<item>
<item>
<key>
<string>
action
</string>
</key>
<key>
<string>
action
</string>
</key>
<value>
<string>
publish_alive
</string>
</value>
<value>
<none/>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
actor
</string>
</key>
<key>
<string>
actor
</string>
</key>
...
@@ -233,7 +294,7 @@
...
@@ -233,7 +294,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
14
96062819.91
</float>
<float>
14
72632323.87
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
@@ -242,7 +303,7 @@
...
@@ -242,7 +303,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
validation_state
</string>
</key>
<key>
<string>
validation_state
</string>
</key>
<value>
<string>
published_alive
</string>
</value>
<value>
<string>
embedded
</string>
</value>
</item>
</item>
</dictionary>
</dictionary>
</list>
</list>
...
@@ -269,7 +330,7 @@
...
@@ -269,7 +330,7 @@
<item>
<item>
<key>
<string>
comment
</string>
</key>
<key>
<string>
comment
</string>
</key>
<value>
<value>
<
none/
>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAg=
</string>
</persistent
>
</value>
</value>
</item>
</item>
<item>
<item>
...
@@ -278,7 +339,7 @@
...
@@ -278,7 +339,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
serial
</string>
</key>
<key>
<string>
serial
</string>
</key>
<value>
<string>
959.45196.21805.13124
</string>
</value>
<value>
<string>
0.0.0.0
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
state
</string>
</key>
<key>
<string>
state
</string>
</key>
...
@@ -296,7 +357,7 @@
...
@@ -296,7 +357,7 @@
</tuple>
</tuple>
<state>
<state>
<tuple>
<tuple>
<float>
14
96062840.2
8
</float>
<float>
14
72632323.8
8
</float>
<string>
UTC
</string>
<string>
UTC
</string>
</tuple>
</tuple>
</state>
</state>
...
@@ -308,4 +369,36 @@
...
@@ -308,4 +369,36 @@
</tuple>
</tuple>
</pickle>
</pickle>
</record>
</record>
<record
id=
"8"
aka=
"AAAAAAAAAAg="
>
<pickle>
<global
name=
"Message"
module=
"Products.ERP5Type.Message"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string>
Object copied from ${source_item}
</string>
</value>
</item>
<item>
<key>
<string>
domain
</string>
</key>
<value>
<string>
erp5_ui
</string>
</value>
</item>
<item>
<key>
<string>
mapping
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
source_item
</string>
</key>
<value>
<string>
/erp5/web_site_module/renderjs_runner
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
message
</string>
</key>
<value>
<string>
Object copied from ${source_item}
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
</ZopeData>
bt5/erp5_officejs_afs_directory/SkinTemplateItem/portal_skins/erp5_officejs_afs.xml
0 → 100644
View file @
f74f420e
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Folder"
module=
"OFS.Folder"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_local_properties
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
_objects
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
erp5_officejs_afs
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_afs_directory/SkinTemplateItem/portal_skins/erp5_officejs_afs/Software_getAnalysis.py
0 → 100644
View file @
f74f420e
from
Products.ERP5Type.Cache
import
CachingMethod
if
url
==
None
:
raise
Exception
(
"No url parameter provided."
)
def
retrieveOpenhubAnalysis
(
url
):
return
context
.
Software_getOpenHubLatestAnalysis
(
url
)
retrieveOpenhubAnalysis
=
CachingMethod
(
retrieveOpenhubAnalysis
,
id
=
"retrieveOpenhubAnalysis"
,
cache_factory
=
"erp5_content_long"
)
return
retrieveOpenhubAnalysis
(
url
)
bt5/erp5_officejs_afs_directory/SkinTemplateItem/portal_skins/erp5_officejs_afs/Software_getAnalysis.xml
0 → 100644
View file @
f74f420e
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
Script_magic
</string>
</key>
<value>
<int>
3
</int>
</value>
</item>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
url=None
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Software_getAnalysis
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_afs_directory/SkinTemplateItem/portal_skins/erp5_officejs_afs/Software_getAndStoreAnalysisList.py
0 → 100644
View file @
f74f420e
from
Products.ERP5Type.Cache
import
CachingMethod
def
retrieveOpenhubAnalysis
(
url
):
return
context
.
Software_getOpenHubLatestAnalysis
(
url
)
retrieveOpenhubAnalysis
=
CachingMethod
(
retrieveOpenhubAnalysis
,
id
=
"retrieveOpenhubAnalysis"
,
cache_factory
=
"erp5_content_long"
)
def
retrieveAndStoreOpenHubAnalysisXml
():
profile_url_list
=
context
.
Software_getAndStoreOpenHubLatestAnalysisList
()
for
profile_url
in
profile_url_list
:
xml_content
=
retrieveOpenhubAnalysis
(
profile_url
)
#context.document.newContent(
# portal_type='Embedded File',
# id=profile_url + '.xml',
# file=xml_content,
# filename=profile_url + '.xml'
# language='en'
#)
#context.document.publishAlive()
retrieveAndStoreOpenHubAnalysisXml
=
CachingMethod
(
retrieveAndStoreOpenHubAnalysisXml
,
id
=
"retrieveAndStoreOpenHubAnalysisXml"
,
cache_factory
=
"erp5_content_long"
)
return
retrieveAndStoreOpenHubAnalysisXml
()
bt5/erp5_officejs_afs_directory/SkinTemplateItem/portal_skins/erp5_officejs_afs/Software_getAndStoreAnalysisList.xml
0 → 100644
View file @
f74f420e
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
Script_magic
</string>
</key>
<value>
<int>
3
</int>
</value>
</item>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
url=None
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Software_getAndStoreAnalysisList
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_afs_directory/SkinTemplateItem/portal_skins/erp5_officejs_afs/Software_getAndStoreOpenHubLatestAnalysisList.xml
0 → 100644
View file @
f74f420e
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ExternalMethod"
module=
"Products.ExternalMethod.ExternalMethod"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_function
</string>
</key>
<value>
<string>
fetchOpenHubProfileListAsXml
</string>
</value>
</item>
<item>
<key>
<string>
_module
</string>
</key>
<value>
<string>
AfsOpenHub
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Software_getAndStoreOpenHubLatestAnalysisList
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_afs_directory/SkinTemplateItem/portal_skins/erp5_officejs_afs/Software_getOpenHubLatestAnalysis.xml
0 → 100644
View file @
f74f420e
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ExternalMethod"
module=
"Products.ExternalMethod.ExternalMethod"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_function
</string>
</key>
<value>
<string>
getLatestAnalysesAsXml
</string>
</value>
</item>
<item>
<key>
<string>
_module
</string>
</key>
<value>
<string>
AfsOpenHub
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Software_getOpenHubLatestAnalysis
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs_afs_directory/bt/template_extension_id_list
0 → 100644
View file @
f74f420e
extension.erp5.AfsOpenHub
\ No newline at end of file
bt5/erp5_officejs_afs_directory/bt/template_keep_last_workflow_history_only_path_list
View file @
f74f420e
web_page_module/gadget_erp5_afs*
web_page_module/gadget_erp5_afs*
web_page_module/gadget_erp5_page_afs*
web_page_module/gadget_erp5_page_afs*
image_module/gadget_erp5_afs*
web_site_module/afs
web_site_module/afs
web_site_module/afs/**
web_site_module/afs/**
\ No newline at end of file
bt5/erp5_officejs_afs_directory/bt/template_keep_workflow_path_list
View file @
f74f420e
web_page_module/gadget_erp5_afs*
web_page_module/gadget_erp5_afs*
web_page_module/gadget_erp5_page_afs*
web_page_module/gadget_erp5_page_afs*
image_module/gadget_erp5_afs*
web_site_module/afs
web_site_module/afs
web_site_module/afs/**
web_site_module/afs/**
\ No newline at end of file
bt5/erp5_officejs_afs_directory/bt/template_path_list
View file @
f74f420e
image_module/gadget_erp5_afs*
web_page_module/gadget_erp5_afs*
web_page_module/gadget_erp5_afs*
web_page_module/gadget_erp5_page_afs*
web_page_module/gadget_erp5_page_afs*
web_site_module/afs
web_site_module/afs
...
...
bt5/erp5_officejs_afs_directory/bt/template_skin_id_list
0 → 100644
View file @
f74f420e
erp5_officejs_afs
\ No newline at end of file
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