Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boris Kocherov
erp5
Commits
47ee7f53
Commit
47ee7f53
authored
Dec 12, 2016
by
Vincent Bechu
Committed by
Vincent Bechu
Dec 20, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
erp5_officejs: fix add document in codeeditor
parent
8509511d
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
774 additions
and
742 deletions
+774
-742
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_jio_web_page_view_html.html
...le/codeeditor_gadget_officejs_jio_web_page_view_html.html
+3
-3
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_jio_web_page_view_html.xml
...ule/codeeditor_gadget_officejs_jio_web_page_view_html.xml
+2
-2
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_jio_web_page_view_js.js
...module/codeeditor_gadget_officejs_jio_web_page_view_js.js
+204
-197
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_jio_web_page_view_js.xml
...odule/codeeditor_gadget_officejs_jio_web_page_view_js.xml
+6
-2
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_page_add_document_html.xml
...ule/codeeditor_gadget_officejs_page_add_document_html.xml
+2
-2
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_page_document_list_html.xml
...le/codeeditor_gadget_officejs_page_document_list_html.xml
+2
-2
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_page_jio_erp5_configurator_js.js
...deeditor_gadget_officejs_page_jio_erp5_configurator_js.js
+20
-20
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_page_jio_erp5_configurator_js.xml
...eeditor_gadget_officejs_page_jio_erp5_configurator_js.xml
+12
-2
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_widget_listbox_js.js
...ge_module/codeeditor_gadget_officejs_widget_listbox_js.js
+159
-155
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_widget_listbox_js.xml
...e_module/codeeditor_gadget_officejs_widget_listbox_js.xml
+2
-2
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_jiodev_js.js
.../PathTemplateItem/web_page_module/codeeditor_jiodev_js.js
+53
-66
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_jiodev_js.xml
...PathTemplateItem/web_page_module/codeeditor_jiodev_js.xml
+12
-2
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_install_js.js
...emplateItem/web_page_module/gadget_officejs_install_js.js
+295
-285
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_install_js.xml
...mplateItem/web_page_module/gadget_officejs_install_js.xml
+2
-2
No files found.
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_jio_web_page_view_html.html
View file @
47ee7f53
...
...
@@ -24,12 +24,12 @@
<
div
class
=
"
ui-field-contain
"
>
<
label
data
-
i18n
=
"
Url String:
"
>
Url
String
<
/label>
<
input
type
=
"
text
"
name
=
"
url_string
"
value
=
"
{{url_string}}
"
>
<
input
type
=
"
text
"
name
=
"
url_string
"
value
=
"
{{url_string}}
"
required
>
<
/div>
<
div
class
=
"
ui-field-contain
"
>
<
label
data
-
i18n
=
"
Version:
"
>
Version
:
<
/label>
<
input
type
=
"
text
"
name
=
"
version
"
value
=
"
{{version}}
"
><
/label>
<
label
data
-
i18n
=
"
Portal Type:
"
>
Portal
Type
:
<
/label>
<
input
type
=
"
text
"
name
=
"
portal_type
"
value
=
"
{{portal_type}}
"
required
><
/label>
<
/div>
<
div
class
=
"
ui-field-contain
"
>
...
...
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_jio_web_page_view_html.xml
View file @
47ee7f53
...
...
@@ -234,7 +234,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
955.5
5534.43957.17220
</string>
</value>
<value>
<string>
955.5
9479.11249.61201
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -252,7 +252,7 @@
</tuple>
<state>
<tuple>
<float>
1481
330026.08
</float>
<float>
1481
540323.2
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_jio_web_page_view_js.js
View file @
47ee7f53
/*globals window, rJS, Handlebars, RSVP, loopEventListener, console*/
/*jslint indent: 2, nomen: true, maxlen: 80*/
(
function
(
window
,
RSVP
,
rJS
,
Handlebars
,
loopEventListener
)
{
"
use strict
"
;
function
saveContent
(
gadget
,
submit_event
)
{
var
i
,
doc
=
gadget
.
options
.
doc
,
now
=
new
Date
();
doc
.
modification_date
=
now
.
toISOString
();
for
(
i
=
0
;
i
<
submit_event
.
target
.
length
;
i
+=
1
)
{
// XXX Should check input type instead
if
(
submit_event
.
target
[
i
].
name
)
{
doc
[
submit_event
.
target
[
i
].
name
]
=
submit_event
.
target
[
i
].
value
;
}
}
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
getDeclaredGadget
(
"
my_text_content
"
);
})
.
push
(
function
(
text_content_gadget
)
{
return
text_content_gadget
.
getContent
();
})
.
push
(
function
(
data
)
{
doc
.
text_content
=
data
.
text_content
;
doc
.
parent_relative_url
=
data
.
parent_relative_url
||
"
web_page_module
"
;
doc
.
portal_type
=
data
.
portal_type
||
"
Web Page
"
;
return
gadget
.
put
(
gadget
.
options
.
jio_key
,
doc
);
});
}
function
maximize
(
gadget
)
{
var
iframe
=
gadget
.
props
.
element
.
querySelector
(
'
iframe
'
),
iframe_class_string
=
iframe
.
getAttribute
(
'
class
'
)
||
""
,
class_name
=
"
ui-content-maximize
"
,
class_index
=
iframe_class_string
.
indexOf
(
class_name
);
if
(
class_index
===
-
1
)
{
iframe_class_string
+=
'
'
+
class_name
;
iframe
.
setAttribute
(
'
style
'
,
''
);
iframe
.
setAttribute
(
'
class
'
,
iframe_class_string
);
return
true
;
}
iframe_class_string
=
iframe_class_string
.
substring
(
0
,
class_index
)
+
iframe_class_string
.
substring
(
class_index
+
class_name
.
length
);
iframe
.
setAttribute
(
'
style
'
,
'
width:100%; border: 0 none; height: 600px
'
);
iframe
.
setAttribute
(
'
class
'
,
iframe_class_string
);
return
false
;
}
var
gadget_klass
=
rJS
(
window
),
source
=
gadget_klass
.
__template_element
.
querySelector
(
"
.view-web-page-template
"
)
.
innerHTML
,
template
=
Handlebars
.
compile
(
source
);
gadget_klass
.
ready
(
function
(
g
)
{
g
.
props
=
{};
g
.
options
=
null
;
return
g
.
getElement
()
.
push
(
function
(
element
)
{
g
.
props
.
element
=
element
;
g
.
props
.
deferred
=
RSVP
.
defer
();
});
})
.
declareAcquiredMethod
(
"
updateHeader
"
,
"
updateHeader
"
)
.
declareAcquiredMethod
(
"
get
"
,
"
jio_get
"
)
.
declareAcquiredMethod
(
"
translateHtml
"
,
"
translateHtml
"
)
.
declareAcquiredMethod
(
"
put
"
,
"
jio_put
"
)
.
declareAcquiredMethod
(
'
allDocs
'
,
'
jio_allDocs
'
)
.
declareAcquiredMethod
(
"
redirect
"
,
"
redirect
"
)
.
allowPublicAcquisition
(
'
triggerSubmit
'
,
function
(
option
)
{
if
(
option
[
0
]
===
"
maximize
"
||
option
===
"
maximize
"
)
{
var
gadget
=
this
;
return
RSVP
.
Queue
()
.
push
(
function
()
{
return
maximize
(
gadget
);
});
}
return
this
.
props
.
element
.
querySelector
(
'
button
'
).
click
();
})
.
declareMethod
(
'
triggerSubmit
'
,
function
(
option
)
{
if
(
option
[
0
]
===
"
maximize
"
||
option
===
"
maximize
"
)
{
var
gadget
=
this
;
return
RSVP
.
Queue
()
.
push
(
function
()
{
return
maximize
(
gadget
);
});
}
return
this
.
props
.
element
.
querySelector
(
'
button
'
).
click
();
})
.
declareMethod
(
"
render
"
,
function
(
options
)
{
var
gadget
=
this
;
gadget
.
options
=
options
;
gadget
.
options
.
doc
.
title
=
gadget
.
options
.
doc
.
title
||
""
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
translateHtml
(
template
(
options
.
doc
));
})
.
push
(
function
(
html
)
{
gadget
.
props
.
element
.
innerHTML
=
html
;
return
gadget
.
updateHeader
({
title
:
options
.
doc
.
title
+
'
|
'
+
options
.
doc
.
portal_type
||
"
| Web Page
"
,
save_action
:
true
,
maximize_action
:
true
,
maximized
:
gadget
.
options
.
doc
.
title
!==
""
});
})
.
push
(
function
()
{
return
gadget
.
props
.
deferred
.
resolve
();
});
})
/////////////////////////////////////////
// Render text content gadget
/////////////////////////////////////////
.
declareService
(
function
()
{
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
props
.
deferred
.
promise
;
})
.
push
(
function
()
{
return
gadget
.
declareGadget
(
"
../../officejs_gadget_codemirror/codemirror/
"
,
{
scope
:
"
my_text_content
"
,
sandbox
:
"
iframe
"
,
element
:
gadget
.
props
.
element
.
querySelector
(
"
.document-content
"
)
}
);
})
.
push
(
function
(
text_content_gadget
)
{
var
iframe
=
gadget
.
props
.
element
.
querySelector
(
'
iframe
'
);
iframe
.
setAttribute
(
'
style
'
,
'
width:100%; border: 0 none; height: 600px
'
);
return
text_content_gadget
.
render
({
"
key
"
:
'
text_content
'
,
"
value
"
:
gadget
.
options
.
doc
.
text_content
,
"
mode
"
:
gadget
.
options
.
doc
.
content_type
});
})
.
push
(
function
()
{
if
(
gadget
.
options
.
doc
.
title
!==
""
)
{
return
gadget
.
triggerSubmit
(
"
maximize
"
);
}
})
.
push
(
undefined
,
function
(
error
)
{
var
display_error_element
;
if
(
error
===
"
Timed out after 5000 ms
"
)
{
display_error_element
=
gadget
.
props
.
element
.
querySelector
(
"
form div.ui-field-contain fieldset
"
);
display_error_element
.
innerHTML
=
'
<br/><p style="color: red"></p><br/><br/>
'
;
display_error_element
.
querySelector
(
'
p
'
).
textContent
=
"
TIMEOUT: The editor gadget is taking too long to load but is
"
+
"
currently being cached, please wait for the page to load
"
+
"
(check your browser loading icon) and then refresh.
"
;
}
else
{
throw
error
;
}
});
})
/////////////////////////////////////////
// Form submit
/////////////////////////////////////////
.
declareService
(
function
()
{
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
props
.
deferred
.
promise
;
})
.
push
(
function
()
{
return
loopEventListener
(
gadget
.
props
.
element
.
querySelector
(
'
form
'
),
'
submit
'
,
true
,
function
(
event
)
{
return
saveContent
(
gadget
,
event
);
}
);
});
});
/*globals window, rJS, Handlebars, RSVP, loopEventListener, console*/
/*jslint indent: 2, nomen: true, maxlen: 80*/
(
function
(
window
,
RSVP
,
rJS
,
Handlebars
,
loopEventListener
)
{
"
use strict
"
;
function
saveContent
(
gadget
,
submit_event
)
{
var
i
,
doc
=
gadget
.
options
.
doc
,
now
=
new
Date
();
doc
.
modification_date
=
now
.
toISOString
();
for
(
i
=
0
;
i
<
submit_event
.
target
.
length
;
i
+=
1
)
{
// XXX Should check input type instead
if
(
submit_event
.
target
[
i
].
name
)
{
doc
[
submit_event
.
target
[
i
].
name
]
=
submit_event
.
target
[
i
].
value
;
}
}
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
getDeclaredGadget
(
"
my_text_content
"
);
})
.
push
(
function
(
text_content_gadget
)
{
return
text_content_gadget
.
getContent
();
})
.
push
(
function
(
data
)
{
doc
.
text_content
=
data
.
text_content
;
doc
.
parent_relative_url
=
data
.
parent_relative_url
||
"
web_page_module
"
;
doc
.
portal_type
=
data
.
portal_type
||
"
Web Page
"
;
if
(
gadget
.
options
.
jio_key
!==
doc
.
url_string
)
{
return
gadget
.
remove
(
gadget
.
options
.
jio_key
);
}
})
.
push
(
function
()
{
return
gadget
.
put
(
doc
.
url_string
,
doc
);
});
}
function
maximize
(
gadget
)
{
var
iframe
=
gadget
.
props
.
element
.
querySelector
(
'
iframe
'
),
iframe_class_string
=
iframe
.
getAttribute
(
'
class
'
)
||
""
,
class_name
=
"
ui-content-maximize
"
,
class_index
=
iframe_class_string
.
indexOf
(
class_name
);
if
(
class_index
===
-
1
)
{
iframe_class_string
+=
'
'
+
class_name
;
iframe
.
setAttribute
(
'
style
'
,
''
);
iframe
.
setAttribute
(
'
class
'
,
iframe_class_string
);
return
true
;
}
iframe_class_string
=
iframe_class_string
.
substring
(
0
,
class_index
)
+
iframe_class_string
.
substring
(
class_index
+
class_name
.
length
);
iframe
.
setAttribute
(
'
style
'
,
'
width:100%; border: 0 none; height: 600px
'
);
iframe
.
setAttribute
(
'
class
'
,
iframe_class_string
);
return
false
;
}
var
gadget_klass
=
rJS
(
window
),
source
=
gadget_klass
.
__template_element
.
querySelector
(
"
.view-web-page-template
"
)
.
innerHTML
,
template
=
Handlebars
.
compile
(
source
);
gadget_klass
.
ready
(
function
(
g
)
{
g
.
props
=
{};
g
.
options
=
null
;
return
g
.
getElement
()
.
push
(
function
(
element
)
{
g
.
props
.
element
=
element
;
g
.
props
.
deferred
=
RSVP
.
defer
();
});
})
.
declareAcquiredMethod
(
"
updateHeader
"
,
"
updateHeader
"
)
.
declareAcquiredMethod
(
"
get
"
,
"
jio_get
"
)
.
declareAcquiredMethod
(
"
translateHtml
"
,
"
translateHtml
"
)
.
declareAcquiredMethod
(
"
put
"
,
"
jio_put
"
)
.
declareAcquiredMethod
(
"
remove
"
,
"
jio_remove
"
)
.
declareAcquiredMethod
(
'
allDocs
'
,
'
jio_allDocs
'
)
.
declareAcquiredMethod
(
"
redirect
"
,
"
redirect
"
)
.
allowPublicAcquisition
(
'
triggerSubmit
'
,
function
(
option
)
{
if
(
option
[
0
]
===
"
maximize
"
||
option
===
"
maximize
"
)
{
var
gadget
=
this
;
return
RSVP
.
Queue
()
.
push
(
function
()
{
return
maximize
(
gadget
);
});
}
return
this
.
props
.
element
.
querySelector
(
'
button
'
).
click
();
})
.
declareMethod
(
'
triggerSubmit
'
,
function
(
option
)
{
if
(
option
[
0
]
===
"
maximize
"
||
option
===
"
maximize
"
)
{
var
gadget
=
this
;
return
RSVP
.
Queue
()
.
push
(
function
()
{
return
maximize
(
gadget
);
});
}
return
this
.
props
.
element
.
querySelector
(
'
button
'
).
click
();
})
.
declareMethod
(
"
render
"
,
function
(
options
)
{
var
gadget
=
this
;
gadget
.
options
=
options
;
gadget
.
options
.
doc
.
title
=
gadget
.
options
.
doc
.
title
||
""
;
gadget
.
options
.
doc
.
url_string
=
gadget
.
options
.
jio_key
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
translateHtml
(
template
(
options
.
doc
));
})
.
push
(
function
(
html
)
{
gadget
.
props
.
element
.
innerHTML
=
html
;
return
gadget
.
updateHeader
({
title
:
options
.
doc
.
title
+
'
|
'
+
options
.
doc
.
portal_type
||
"
| Web Page
"
,
save_action
:
true
,
maximize_action
:
true
,
maximized
:
gadget
.
options
.
doc
.
title
!==
""
});
})
.
push
(
function
()
{
return
gadget
.
props
.
deferred
.
resolve
();
});
})
/////////////////////////////////////////
// Render text content gadget
/////////////////////////////////////////
.
declareService
(
function
()
{
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
props
.
deferred
.
promise
;
})
.
push
(
function
()
{
return
gadget
.
declareGadget
(
"
../../officejs_gadget_codemirror/codemirror/
"
,
{
scope
:
"
my_text_content
"
,
sandbox
:
"
iframe
"
,
element
:
gadget
.
props
.
element
.
querySelector
(
"
.document-content
"
)
}
);
})
.
push
(
function
(
text_content_gadget
)
{
var
iframe
=
gadget
.
props
.
element
.
querySelector
(
'
iframe
'
);
iframe
.
setAttribute
(
'
style
'
,
'
width:100%; border: 0 none; height: 600px
'
);
return
text_content_gadget
.
render
({
"
key
"
:
'
text_content
'
,
"
value
"
:
gadget
.
options
.
doc
.
text_content
,
"
mode
"
:
gadget
.
options
.
doc
.
content_type
});
})
.
push
(
function
()
{
if
(
gadget
.
options
.
doc
.
title
!==
""
)
{
return
gadget
.
triggerSubmit
(
"
maximize
"
);
}
})
.
push
(
undefined
,
function
(
error
)
{
var
display_error_element
;
if
(
error
===
"
Timed out after 5000 ms
"
)
{
display_error_element
=
gadget
.
props
.
element
.
querySelector
(
"
form div.ui-field-contain fieldset
"
);
display_error_element
.
innerHTML
=
'
<br/><p style="color: red"></p><br/><br/>
'
;
display_error_element
.
querySelector
(
'
p
'
).
textContent
=
"
TIMEOUT: The editor gadget is taking too long to load but is
"
+
"
currently being cached, please wait for the page to load
"
+
"
(check your browser loading icon) and then refresh.
"
;
}
else
{
throw
error
;
}
});
})
/////////////////////////////////////////
// Form submit
/////////////////////////////////////////
.
declareService
(
function
()
{
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
props
.
deferred
.
promise
;
})
.
push
(
function
()
{
return
loopEventListener
(
gadget
.
props
.
element
.
querySelector
(
'
form
'
),
'
submit
'
,
true
,
function
(
event
)
{
return
saveContent
(
gadget
,
event
);
}
);
});
});
}(
window
,
RSVP
,
rJS
,
Handlebars
,
loopEventListener
));
\ No newline at end of file
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_jio_web_page_view_js.xml
View file @
47ee7f53
...
...
@@ -97,6 +97,10 @@
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Script
</string>
</value>
</item>
<item>
<key>
<string>
revision
</string>
</key>
<value>
<string>
13
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
...
...
@@ -240,7 +244,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
955.5
6020.64919.42120
</string>
</value>
<value>
<string>
955.5
9464.8628.44953
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -258,7 +262,7 @@
</tuple>
<state>
<tuple>
<float>
1481
331946.97
</float>
<float>
1481
541034.32
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_page_add_document_html.xml
View file @
47ee7f53
...
...
@@ -222,7 +222,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
955.5
5463.25205.49
66
</string>
</value>
<value>
<string>
955.5
6066.6312.291
66
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -240,7 +240,7 @@
</tuple>
<state>
<tuple>
<float>
1481
295803.59
</float>
<float>
1481
541101.2
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_page_document_list_html.xml
View file @
47ee7f53
...
...
@@ -222,7 +222,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
955.5
5463.28674.13312
</string>
</value>
<value>
<string>
955.5
6066.6312.29166
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -240,7 +240,7 @@
</tuple>
<state>
<tuple>
<float>
1481
295806.77
</float>
<float>
1481
541119.53
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_page_jio_erp5_configurator_js.js
View file @
47ee7f53
...
...
@@ -15,8 +15,7 @@
type
:
"
replicate
"
,
// XXX This drop the signature lists...
query
:
{
query
:
'
(portal_type: ("Web Page","Web Script","Web Manifest","Web Style"))
'
+
'
AND (version: "
'
+
version
+
'
")
'
,
query
:
'
portal_type: ("Web Page","Web Script","Web Manifest","Web Style")
'
,
limit
:
[
0
,
30
],
sort_on
:
[[
"
modification_date
"
,
"
descending
"
]]
},
...
...
@@ -27,37 +26,38 @@
database
:
version
+
"
_hash
"
}
},
use_remote_post
:
tru
e
,
use_remote_post
:
fals
e
,
conflict_handling
:
1
,
check_local_modification
:
true
,
check_local_creation
:
true
,
check_local_deletion
:
false
,
check_remote_modification
:
true
,
check_remote_creation
:
true
,
check_remote_deletion
:
tru
e
,
check_remote_deletion
:
fals
e
,
local_sub_storage
:
{
type
:
"
mapping
"
,
mapping_dict
:
{
"
id
"
:
{
"
equal
"
:
"
relative_url
"
},
"
url_string
"
:
{
"
equal
"
:
"
id
"
}
},
type
:
"
query
"
,
sub_storage
:
{
type
:
"
query
"
,
type
:
"
uuid
"
,
sub_storage
:
{
type
:
"
uuid
"
,
sub_storage
:
{
type
:
"
indexeddb
"
,
database
:
version
}
type
:
"
indexeddb
"
,
database
:
version
}
}
},
remote_sub_storage
:
{
type
:
"
erp5
"
,
url
:
(
new
URI
(
"
hateoas
"
))
.
absoluteTo
(
erp5_url
)
.
toString
(),
default_view_reference
:
"
jio_view
"
type
:
"
mapping
"
,
mapping_dict
:
{
"
id
"
:
{
"
equal
"
:
"
url_string
"
},
"
relative_url
"
:
"
ignore
"
,
"
version
"
:
{
"
default_value
"
:
version
}
},
sub_storage
:
{
type
:
"
erp5
"
,
url
:
(
new
URI
(
"
hateoas
"
))
.
absoluteTo
(
erp5_url
)
.
toString
(),
default_view_reference
:
"
jio_view
"
}
}
}
);
...
...
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_page_jio_erp5_configurator_js.xml
View file @
47ee7f53
...
...
@@ -97,6 +97,16 @@
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Script
</string>
</value>
</item>
<item>
<key>
<string>
revision
</string>
</key>
<value>
<string>
7
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
OfficeJS jIO ERP5 Configurator Page JS
</string>
</value>
...
...
@@ -234,7 +244,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
955.5
5534.6594.50944
</string>
</value>
<value>
<string>
955.5
9548.4928.4881
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -252,7 +262,7 @@
</tuple>
<state>
<tuple>
<float>
1481
327828.02
</float>
<float>
1481
541022.38
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_widget_listbox_js.js
View file @
47ee7f53
/*global window, rJS, RSVP, Handlebars, loopEventListener */
/*jslint nomen: true, indent: 2 */
(
function
(
window
,
rJS
,
RSVP
,
Handlebars
,
loopEventListener
)
{
"
use strict
"
;
/////////////////////////////////////////////////////////////////
// templates
/////////////////////////////////////////////////////////////////
var
gadget_klass
=
rJS
(
window
),
templater
=
gadget_klass
.
__template_element
,
listbox_widget_table
=
Handlebars
.
compile
(
templater
.
getElementById
(
"
listbox-widget-table
"
).
innerHTML
);
Handlebars
.
registerPartial
(
"
listbox-widget-table-partial
"
,
templater
.
getElementById
(
"
listbox-widget-table-partial
"
).
innerHTML
);
/////////////////////////////////////////////////////////////////
// some methods
/////////////////////////////////////////////////////////////////
gadget_klass
/////////////////////////////////////////////////////////////////
// ready
/////////////////////////////////////////////////////////////////
.
ready
(
function
(
gadget
)
{
gadget
.
property_dict
=
{
render_deferred
:
RSVP
.
defer
()
};
})
.
ready
(
function
(
gadget
)
{
return
gadget
.
getElement
()
.
push
(
function
(
element
)
{
gadget
.
property_dict
.
element
=
element
;
});
})
/////////////////////////////////////////////////////////////////
// published methods
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
// acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
"
jio_allDocs
"
,
"
jio_allDocs
"
)
.
declareAcquiredMethod
(
"
getUrlFor
"
,
"
getUrlFor
"
)
.
declareAcquiredMethod
(
"
translate
"
,
"
translate
"
)
.
declareAcquiredMethod
(
"
redirect
"
,
"
redirect
"
)
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.
declareMethod
(
'
render
'
,
function
(
option_dict
)
{
var
gadget
=
this
,
content
=
''
,
k
,
k_len
,
search_list
=
[],
translated_column_list
=
[],
all_docs_result
;
// store initial configuration
gadget
.
property_dict
.
option_dict
=
option_dict
;
// Create the search query
if
(
option_dict
.
search
)
{
for
(
k
=
0
,
k_len
=
option_dict
.
column_list
.
length
;
k
<
k_len
;
k
+=
1
)
{
search_list
.
push
(
option_dict
.
column_list
[
k
].
select
+
'
:"%
'
+
option_dict
.
search
+
'
%"
'
);
}
option_dict
.
query
.
query
=
'
(
'
+
search_list
.
join
(
'
OR
'
)
+
'
) AND
'
+
option_dict
.
query
.
query
;
}
return
gadget
.
jio_allDocs
(
option_dict
.
query
)
.
push
(
function
(
result
)
{
var
promise_list
=
[],
i_len
,
i
;
all_docs_result
=
result
;
for
(
i
=
0
,
i_len
=
result
.
data
.
total_rows
;
i
<
i_len
;
i
+=
1
)
{
promise_list
.
push
(
gadget
.
getUrlFor
({
jio_key
:
result
.
data
.
rows
[
i
].
id
,
page
:
'
view
'
}));
}
return
RSVP
.
all
(
promise_list
);
})
.
push
(
function
(
link_list
)
{
var
row_list
=
[],
cell_list
,
i_len
,
i
,
j_len
,
j
;
// build handlebars object
for
(
j
=
0
,
j_len
=
all_docs_result
.
data
.
total_rows
;
j
<
j_len
;
j
+=
1
)
{
cell_list
=
[];
for
(
i
=
0
,
i_len
=
option_dict
.
column_list
.
length
;
i
<
i_len
;
i
+=
1
)
{
cell_list
.
push
({
"
href
"
:
link_list
[
j
],
"
value
"
:
all_docs_result
.
data
.
rows
[
j
].
value
[
option_dict
.
column_list
[
i
].
select
]
});
}
row_list
.
push
({
"
cell_list
"
:
cell_list
});
}
for
(
i
=
0
;
i
<
option_dict
.
column_list
.
length
;
i
+=
1
)
{
translated_column_list
.
push
(
gadget
.
translate
(
option_dict
.
column_list
[
i
].
title
));
}
return
RSVP
.
all
([
row_list
,
RSVP
.
all
(
translated_column_list
)
]);
})
.
push
(
function
(
result_list
)
{
content
+=
listbox_widget_table
({
widget_theme
:
option_dict
.
widget_theme
,
search
:
option_dict
.
search
,
column_list
:
result_list
[
1
],
row_list
:
result_list
[
0
]
});
gadget
.
property_dict
.
element
.
querySelector
(
"
.custom-grid .ui-body-c
"
)
.
innerHTML
=
content
;
gadget
.
property_dict
.
render_deferred
.
resolve
();
});
})
/////////////////////////////////////////////////////////////////
// declared service
/////////////////////////////////////////////////////////////////
.
declareService
(
function
()
{
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
property_dict
.
render_deferred
.
promise
;
})
.
push
(
function
()
{
return
loopEventListener
(
gadget
.
property_dict
.
element
.
querySelector
(
'
form
'
),
'
submit
'
,
false
,
function
(
evt
)
{
return
gadget
.
redirect
({
jio_key
:
gadget
.
property_dict
.
option_dict
.
jio_key
||
''
,
page
:
gadget
.
property_dict
.
option_dict
.
search_page
||
''
,
search
:
evt
.
target
[
0
].
value
});
}
);
});
});
/*global window, rJS, RSVP, Handlebars, loopEventListener */
/*jslint nomen: true, indent: 2 */
(
function
(
window
,
rJS
,
RSVP
,
Handlebars
,
loopEventListener
)
{
"
use strict
"
;
/////////////////////////////////////////////////////////////////
// templates
/////////////////////////////////////////////////////////////////
var
gadget_klass
=
rJS
(
window
),
templater
=
gadget_klass
.
__template_element
,
listbox_widget_table
=
Handlebars
.
compile
(
templater
.
getElementById
(
"
listbox-widget-table
"
).
innerHTML
);
Handlebars
.
registerPartial
(
"
listbox-widget-table-partial
"
,
templater
.
getElementById
(
"
listbox-widget-table-partial
"
).
innerHTML
);
/////////////////////////////////////////////////////////////////
// some methods
/////////////////////////////////////////////////////////////////
gadget_klass
/////////////////////////////////////////////////////////////////
// ready
/////////////////////////////////////////////////////////////////
.
ready
(
function
(
gadget
)
{
gadget
.
property_dict
=
{
render_deferred
:
RSVP
.
defer
()
};
})
.
ready
(
function
(
gadget
)
{
return
gadget
.
getElement
()
.
push
(
function
(
element
)
{
gadget
.
property_dict
.
element
=
element
;
});
})
/////////////////////////////////////////////////////////////////
// published methods
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
// acquired methods
/////////////////////////////////////////////////////////////////
.
declareAcquiredMethod
(
"
jio_allDocs
"
,
"
jio_allDocs
"
)
.
declareAcquiredMethod
(
"
getUrlFor
"
,
"
getUrlFor
"
)
.
declareAcquiredMethod
(
"
translate
"
,
"
translate
"
)
.
declareAcquiredMethod
(
"
redirect
"
,
"
redirect
"
)
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.
declareMethod
(
'
render
'
,
function
(
option_dict
)
{
var
gadget
=
this
,
content
=
''
,
k
,
k_len
,
search_list
=
[],
translated_column_list
=
[],
all_docs_result
;
// store initial configuration
gadget
.
property_dict
.
option_dict
=
option_dict
;
// Create the search query
if
(
option_dict
.
search
)
{
for
(
k
=
0
,
k_len
=
option_dict
.
column_list
.
length
;
k
<
k_len
;
k
+=
1
)
{
search_list
.
push
(
option_dict
.
column_list
[
k
].
select
+
'
:"%
'
+
option_dict
.
search
+
'
%"
'
);
}
option_dict
.
query
.
query
=
'
(
'
+
search_list
.
join
(
'
OR
'
)
+
'
) AND
'
+
option_dict
.
query
.
query
;
}
return
gadget
.
jio_allDocs
(
option_dict
.
query
)
.
push
(
function
(
result
)
{
var
promise_list
=
[],
i_len
,
i
;
all_docs_result
=
result
;
for
(
i
=
0
,
i_len
=
result
.
data
.
total_rows
;
i
<
i_len
;
i
+=
1
)
{
promise_list
.
push
(
gadget
.
getUrlFor
({
jio_key
:
result
.
data
.
rows
[
i
].
id
,
page
:
'
view
'
}));
}
return
RSVP
.
all
(
promise_list
);
})
.
push
(
function
(
link_list
)
{
var
row_list
=
[],
cell_list
,
i_len
,
i
,
j_len
,
j
,
value
;
// build handlebars object
for
(
j
=
0
,
j_len
=
all_docs_result
.
data
.
total_rows
;
j
<
j_len
;
j
+=
1
)
{
cell_list
=
[];
for
(
i
=
0
,
i_len
=
option_dict
.
column_list
.
length
;
i
<
i_len
;
i
+=
1
)
{
value
=
option_dict
.
column_list
[
i
].
select
===
"
url_string
"
?
all_docs_result
.
data
.
rows
[
j
].
id
:
all_docs_result
.
data
.
rows
[
j
].
value
[
option_dict
.
column_list
[
i
].
select
];
cell_list
.
push
({
"
href
"
:
link_list
[
j
],
"
value
"
:
value
});
}
row_list
.
push
({
"
cell_list
"
:
cell_list
});
}
for
(
i
=
0
;
i
<
option_dict
.
column_list
.
length
;
i
+=
1
)
{
translated_column_list
.
push
(
gadget
.
translate
(
option_dict
.
column_list
[
i
].
title
));
}
return
RSVP
.
all
([
row_list
,
RSVP
.
all
(
translated_column_list
)
]);
})
.
push
(
function
(
result_list
)
{
content
+=
listbox_widget_table
({
widget_theme
:
option_dict
.
widget_theme
,
search
:
option_dict
.
search
,
column_list
:
result_list
[
1
],
row_list
:
result_list
[
0
]
});
gadget
.
property_dict
.
element
.
querySelector
(
"
.custom-grid .ui-body-c
"
)
.
innerHTML
=
content
;
gadget
.
property_dict
.
render_deferred
.
resolve
();
});
})
/////////////////////////////////////////////////////////////////
// declared service
/////////////////////////////////////////////////////////////////
.
declareService
(
function
()
{
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
property_dict
.
render_deferred
.
promise
;
})
.
push
(
function
()
{
return
loopEventListener
(
gadget
.
property_dict
.
element
.
querySelector
(
'
form
'
),
'
submit
'
,
false
,
function
(
evt
)
{
return
gadget
.
redirect
({
jio_key
:
gadget
.
property_dict
.
option_dict
.
jio_key
||
''
,
page
:
gadget
.
property_dict
.
option_dict
.
search_page
||
''
,
search
:
evt
.
target
[
0
].
value
});
}
);
});
});
}(
window
,
rJS
,
RSVP
,
Handlebars
,
loopEventListener
));
\ No newline at end of file
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_gadget_officejs_widget_listbox_js.xml
View file @
47ee7f53
...
...
@@ -222,7 +222,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
955.5
5462.40798.5324
</string>
</value>
<value>
<string>
955.5
6066.6312.29166
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -240,7 +240,7 @@
</tuple>
<state>
<tuple>
<float>
1481
295757.83
</float>
<float>
1481
502794.84
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_jiodev_js.js
View file @
47ee7f53
...
...
@@ -8883,10 +8883,10 @@ return new Parser;
use_bulk_get
:
use_bulk_get
,
conflict_force
:
(
context
.
_conflict_handling
===
CONFLICT_KEEP_REMOTE
),
conflict_ignore
:
(
(
context
.
_conflict_handling
===
CONFLICT_CONTINUE
)
||
(
context
.
_conflict_handling
===
CONFLICT_KEEP_LOCAL
)
)
,
conflict_ignore
:
(
context
.
_conflict_handling
===
CONFLICT_CONTINUE
)
||
(
context
.
_conflict_handling
===
CONFLICT_KEEP_LOCAL
),
check_modification
:
context
.
_check_remote_modification
,
check_creation
:
context
.
_check_remote_creation
,
check_deletion
:
context
.
_check_remote_deletion
...
...
@@ -12077,7 +12077,8 @@ return new Parser;
};
IndexedDBStorage
.
prototype
.
getAttachment
=
function
(
id
,
name
,
options
)
{
var
type
,
var
transaction
,
type
,
start
,
end
;
if
(
options
===
undefined
)
{
...
...
@@ -12085,63 +12086,48 @@ return new Parser;
}
return
openIndexedDB
(
this
)
.
push
(
function
(
db
)
{
return
new
RSVP
.
Promise
(
function
(
resolve
,
reject
)
{
var
transaction
=
openTransaction
(
db
,
[
"
attachment
"
,
"
blob
"
],
"
readonly
"
),
// XXX Should raise if key is not good
request
=
transaction
.
objectStore
(
"
attachment
"
)
.
get
(
buildKeyPath
([
id
,
name
]));
request
.
onerror
=
function
(
error
)
{
transaction
.
abort
();
reject
(
error
);
};
request
.
onsuccess
=
function
()
{
var
attachment
=
request
.
result
,
total_length
,
i
,
promise_list
=
[],
store
=
transaction
.
objectStore
(
"
blob
"
),
start_index
,
end_index
;
if
(
!
attachment
)
{
return
reject
(
new
jIO
.
util
.
jIOError
(
"
Cannot find attachment
"
,
404
)
);
}
transaction
=
openTransaction
(
db
,
[
"
attachment
"
,
"
blob
"
],
"
readonly
"
);
// XXX Should raise if key is not good
return
handleGet
(
transaction
.
objectStore
(
"
attachment
"
)
.
get
(
buildKeyPath
([
id
,
name
])));
})
.
push
(
function
(
attachment
)
{
var
total_length
=
attachment
.
info
.
length
,
i
,
promise_list
=
[],
store
=
transaction
.
objectStore
(
"
blob
"
),
start_index
,
end_index
;
total_length
=
attachment
.
info
.
length
;
type
=
attachment
.
info
.
content_type
;
start
=
options
.
start
||
0
;
end
=
options
.
end
||
total_length
;
if
(
end
>
total_length
)
{
end
=
total_length
;
}
type
=
attachment
.
info
.
content_type
;
start
=
options
.
start
||
0
;
end
=
options
.
end
||
total_length
;
if
(
end
>
total_length
)
{
end
=
total_length
;
}
if
(
start
<
0
||
end
<
0
)
{
throw
new
jIO
.
util
.
jIOError
(
"
_start and _end must be positive
"
,
400
);
}
if
(
start
>
end
)
{
throw
new
jIO
.
util
.
jIOError
(
"
_start is greater than _end
"
,
400
);
}
if
(
start
<
0
||
end
<
0
)
{
throw
new
jIO
.
util
.
jIOError
(
"
_start and _end must be positive
"
,
400
);
}
if
(
start
>
end
)
{
throw
new
jIO
.
util
.
jIOError
(
"
_start is greater than _end
"
,
400
);
}
start_index
=
Math
.
floor
(
start
/
UNITE
);
end_index
=
Math
.
floor
(
end
/
UNITE
);
if
(
end
%
UNITE
===
0
)
{
end_index
-=
1
;
}
start_index
=
Math
.
floor
(
start
/
UNITE
);
end_index
=
Math
.
floor
(
end
/
UNITE
);
if
(
end
%
UNITE
===
0
)
{
end_index
-=
1
;
}
for
(
i
=
start_index
;
i
<=
end_index
;
i
+=
1
)
{
promise_list
.
push
(
handleGet
(
store
.
get
(
buildKeyPath
([
id
,
name
,
i
])))
);
}
resolve
(
RSVP
.
all
(
promise_list
));
};
});
for
(
i
=
start_index
;
i
<=
end_index
;
i
+=
1
)
{
promise_list
.
push
(
handleGet
(
store
.
get
(
buildKeyPath
([
id
,
name
,
i
])))
);
}
return
RSVP
.
all
(
promise_list
);
})
.
push
(
function
(
result_list
)
{
var
array_buffer_list
=
[],
...
...
@@ -12201,12 +12187,10 @@ return new Parser;
}
// Remove previous attachment
transaction
=
openTransaction
(
db
,
[
"
attachment
"
,
"
blob
"
],
"
readwrite
"
,
false
);
transaction
=
openTransaction
(
db
,
[
"
attachment
"
,
"
blob
"
],
"
readwrite
"
);
return
removeAttachment
(
transaction
,
id
,
name
);
})
.
push
(
function
()
{
transaction
=
openTransaction
(
db
,
[
"
attachment
"
,
"
blob
"
],
"
readwrite
"
);
var
promise_list
=
[
handleRequest
(
transaction
.
objectStore
(
"
attachment
"
).
put
({
...
...
@@ -12882,10 +12866,6 @@ return new Parser;
if
(
sub_doc
.
id
!==
undefined
)
{
return
sub_doc
.
id
;
}
throw
new
jIO
.
util
.
jIOError
(
"
Cannot find id field related
"
,
400
);
}
query
=
new
SimpleQuery
({
key
:
storage
.
_mapping_dict
.
id
.
equal
,
...
...
@@ -12938,6 +12918,10 @@ return new Parser;
return
property
;
}
}
if
(
!
storage
.
_map_all_property
||
storage
.
_mapping_dict
[
property
]
===
"
ignore
"
)
{
return
false
;
}
if
(
storage
.
_map_all_property
)
{
sub_doc
[
property
]
=
doc
[
property
];
return
property
;
...
...
@@ -12960,6 +12944,10 @@ return new Parser;
return
property
;
}
}
if
(
!
storage
.
_map_all_property
||
storage
.
_mapping_dict
[
property
]
===
"
ignore
"
)
{
return
property
;
}
if
(
storage
.
_map_all_property
)
{
if
(
sub_doc
.
hasOwnProperty
(
property
))
{
doc
[
property
]
=
sub_doc
[
property
];
...
...
@@ -13262,7 +13250,6 @@ return new Parser;
)
.
push
(
function
(
result
)
{
for
(
i
=
0
;
i
<
result
.
data
.
total_rows
;
i
+=
1
)
{
result
.
data
.
rows
[
i
].
value
.
id
=
result
.
data
.
rows
[
i
].
id
;
result
.
data
.
rows
[
i
].
value
=
mapToMainDocument
(
context
,
...
...
bt5/erp5_officejs/PathTemplateItem/web_page_module/codeeditor_jiodev_js.xml
View file @
47ee7f53
...
...
@@ -97,6 +97,16 @@
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Script
</string>
</value>
</item>
<item>
<key>
<string>
revision
</string>
</key>
<value>
<string>
10
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
jio.js
</string>
</value>
...
...
@@ -234,7 +244,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
955.5
5534.6594.50944
</string>
</value>
<value>
<string>
955.5
9479.27056.28433
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -252,7 +262,7 @@
</tuple>
<state>
<tuple>
<float>
1481
328691.34
</float>
<float>
1481
540344.93
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_install_js.js
View file @
47ee7f53
/*globals window, document, RSVP, rJS, navigator, jIO, MessageChannel, ProgressEvent*/
/*jslint indent: 2, maxlen: 80, nomen: true*/
var
repair
=
false
;
(
function
(
window
,
document
,
RSVP
,
rJS
,
jIO
,
navigator
,
MessageChannel
,
ProgressEvent
)
{
"
use strict
"
;
var
serviceWorker_setting_storage
=
jIO
.
createJIO
({
type
:
"
uuid
"
,
sub_storage
:
{
type
:
"
indexeddb
"
,
database
:
"
serviceWorker_settings
"
}
});
function
createStorage
(
version
)
{
return
jIO
.
createJIO
({
type
:
"
replicate
"
,
conflict_handling
:
2
,
check_remote_modification
:
false
,
check_remote_deletion
:
false
,
check_local_creation
:
false
,
check_local_deletion
:
false
,
check_local_modification
:
false
,
query
:
{
query
:
'
portal_type: ("Web Illustration",
'
+
'
"Web Manifest","Web Script","Web Style","Web Page")
'
+
'
AND version:"
'
+
version
+
'
"
'
,
"
limit
"
:
[
0
,
27131
],
"
select_list
"
:
[
"
url_string
"
]
},
signature_storage
:
{
type
:
"
uuid
"
,
sub_storage
:
{
type
:
"
indexeddb
"
,
database
:
version
+
"
_hash
"
}
},
local_sub_storage
:
{
type
:
"
mapping
"
,
map_all_property
:
true
,
mapping_dict
:
{
"
id
"
:
{
"
equal
"
:
"
relative_url
"
},
"
url_string
"
:
{
"
equal
"
:
"
id
"
}
},
sub_storage
:
{
type
:
"
query
"
,
sub_storage
:
{
type
:
"
uuid
"
,
sub_storage
:
{
type
:
"
indexeddb
"
,
database
:
version
}
}
}
},
remote_sub_storage
:
{
type
:
"
erp5
"
,
url
:
window
.
location
.
href
+
"
/hateoasnoauth
"
,
default_view_reference
:
"
jio_view
"
}
});
}
function
postMessage
(
gadget
,
message
)
{
return
new
RSVP
.
Promise
(
function
(
resolve
,
reject
)
{
var
messageChannel
=
new
MessageChannel
();
messageChannel
.
port1
.
onmessage
=
function
(
event
)
{
if
(
event
.
data
.
error
)
{
reject
(
event
.
data
.
error
);
}
else
{
return
resolve
(
event
.
data
);
}
};
gadget
.
props
.
serviceWorker
.
postMessage
(
JSON
.
stringify
(
message
),
[
messageChannel
.
port2
]
);
});
}
rJS
(
window
)
.
ready
(
function
(
gadget
)
{
var
element_list
=
gadget
.
element
.
querySelectorAll
(
"
[data-install-configuration]
"
),
i
,
key
,
value
,
gadget_list
=
[];
gadget
.
props
=
{};
gadget
.
props
.
cached_url
=
[];
gadget
.
gadget_list
=
[];
function
pushGadget
(
url
,
i
)
{
var
element
=
document
.
createElement
(
"
div
"
);
element
.
setAttribute
(
"
style
"
,
"
display: none
"
);
gadget
.
element
.
appendChild
(
element
);
return
gadget
.
declareGadget
(
url
,
{
"
scope
"
:
"
sub_app_installer_
"
+
i
,
"
element
"
:
element
,
"
sandbox
"
:
"
iframe
"
})
.
push
(
function
(
sub_gadget
)
{
gadget
.
gadget_list
.
push
(
sub_gadget
);
return
sub_gadget
.
setSubInstall
();
});
}
for
(
i
=
0
;
i
<
element_list
.
length
;
i
+=
1
)
{
key
=
element_list
[
i
].
getAttribute
(
'
data-install-configuration
'
);
value
=
element_list
[
i
].
textContent
;
if
(
key
===
"
sub_app_installer
"
)
{
if
(
value
!==
""
)
{
gadget_list
=
value
.
split
(
'
\n
'
);
}
}
else
{
gadget
.
props
[
key
]
=
value
;
}
}
return
gadget
.
render
()
.
push
(
function
()
{
var
promise_list
=
[];
for
(
i
=
0
;
i
<
gadget_list
.
length
;
i
+=
1
)
{
promise_list
.
push
(
pushGadget
(
gadget_list
[
i
],
i
+
1
));
}
return
RSVP
.
all
(
promise_list
);
});
})
.
declareMethod
(
"
render
"
,
function
()
{
var
gadget
=
this
,
element
=
document
.
createElement
(
"
div
"
);
element
.
className
=
"
presentation
"
;
gadget
.
element
.
insertBefore
(
element
,
gadget
.
element
.
firstChild
);
return
gadget
.
declareGadget
(
"
gadget_officejs_install_presentation.html
"
,
{
"
scope
"
:
"
presentation
"
,
"
element
"
:
element
}
)
.
push
(
function
(
presentation_gadget
)
{
return
presentation_gadget
.
render
(
{
"
app_name
"
:
gadget
.
props
.
app_name
}
);
});
})
.
declareMethod
(
"
setSubInstall
"
,
function
()
{
this
.
props
.
sub
=
true
;
})
.
declareMethod
(
"
mainInstall
"
,
function
()
{
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
if
(
gadget
.
props
.
document_version
)
{
return
gadget
.
install
();
}
})
.
push
(
function
()
{
var
promise_list
=
[],
i
;
for
(
i
=
0
;
i
<
gadget
.
gadget_list
.
length
;
i
+=
1
)
{
promise_list
.
push
(
gadget
.
gadget_list
[
i
].
waitInstall
());
}
return
RSVP
.
all
(
promise_list
);
})
.
push
(
function
()
{
gadget
.
props
.
is_installed
=
true
;
if
(
gadget
.
installing
!==
undefined
)
{
gadget
.
installing
.
resolve
();
}
if
(
!
gadget
.
props
.
sub
)
{
window
.
location
.
href
=
gadget
.
props
.
version_url
;
}
})
.
push
(
undefined
,
function
(
error
)
{
if
(
error
instanceof
ProgressEvent
)
{
if
(
gadget
.
props
.
sub
===
undefined
)
{
window
.
location
.
href
=
gadget
.
props
.
version_url
;
}
return
;
}
throw
error
;
});
})
.
declareMethod
(
"
waitInstall
"
,
function
()
{
if
(
this
.
props
.
is_installed
)
{
return
;
}
this
.
installing
=
RSVP
.
defer
();
return
this
.
installing
.
promise
;
})
.
declareMethod
(
"
install
"
,
function
()
{
var
gadget
=
this
;
return
serviceWorker_setting_storage
.
put
(
window
.
location
.
href
+
gadget
.
props
.
version_url
,
{
"
version
"
:
gadget
.
props
.
document_version
}
)
.
push
(
function
()
{
gadget
.
props
.
storage
=
createStorage
(
gadget
.
props
.
document_version
);
return
gadget
.
props
.
storage
.
repair
();
})
.
push
(
function
()
{
// transform a cache to url_list
if
(
gadget
.
props
.
cache_file
&&
gadget
.
props
.
cache_file
!==
""
)
{
gadget
.
props
.
storage
=
jIO
.
createJIO
({
type
:
"
query
"
,
sub_storage
:
{
type
:
"
uuid
"
,
sub_storage
:
{
type
:
"
indexeddb
"
,
database
:
gadget
.
props
.
document_version
}
}
});
return
gadget
.
props
.
storage
.
get
(
gadget
.
props
.
cache_file
)
.
push
(
function
(
doc
)
{
var
url_list
=
doc
.
text_content
.
split
(
'
\n
'
),
i
,
start
=
url_list
.
indexOf
(
"
CACHE:
"
)
+
1
,
len
=
url_list
.
indexOf
(
"
NETWORK:
"
);
for
(
i
=
start
;
i
<
len
;
i
+=
1
)
{
if
(
url_list
[
i
]
!==
""
&&
url_list
[
i
].
charAt
(
0
)
!==
'
#
'
&&
url_list
[
i
].
charAt
(
0
)
!==
'
'
)
{
gadget
.
props
.
cached_url
.
push
(
url_list
[
i
]);
}
}
});
}
})
.
push
(
function
()
{
// remove base if present
if
(
document
.
querySelector
(
"
base
"
))
{
document
.
querySelector
(
"
head
"
).
removeChild
(
document
.
querySelector
(
"
base
"
)
);
}
return
navigator
.
serviceWorker
.
register
(
"
gadget_officejs_install_serviceworker.js
"
,
{
"
scope
"
:
gadget
.
props
.
version_url
}
);
})
.
push
(
function
(
registration
)
{
if
(
registration
.
installing
)
{
gadget
.
props
.
serviceWorker
=
registration
.
installing
;
}
else
if
(
registration
.
waiting
)
{
gadget
.
props
.
serviceWorker
=
registration
.
waiting
;
}
else
if
(
registration
.
active
)
{
gadget
.
props
.
serviceWorker
=
registration
.
active
;
}
})
.
push
(
function
()
{
return
postMessage
(
gadget
,
{
"
action
"
:
"
install
"
,
"
url_list
"
:
gadget
.
props
.
cached_url
,
"
version
"
:
gadget
.
props
.
document_version
}
);
});
})
.
declareService
(
function
()
{
var
gadget
=
this
;
function
redirect
()
{
window
.
location
.
href
=
gadget
.
props
.
redirect_url
;
}
if
(
!
(
"
serviceWorker
"
in
navigator
))
{
window
.
applicationCache
.
addEventListener
(
"
cached
"
,
redirect
);
window
.
applicationCache
.
addEventListener
(
'
noupdate
'
,
redirect
);
window
.
setTimeout
(
redirect
,
10000
);
}
else
{
return
this
.
mainInstall
();
}
});
/*globals window, document, RSVP, rJS, navigator, jIO, MessageChannel, ProgressEvent*/
/*jslint indent: 2, maxlen: 80, nomen: true*/
var
repair
=
false
;
(
function
(
window
,
document
,
RSVP
,
rJS
,
jIO
,
navigator
,
MessageChannel
,
ProgressEvent
)
{
"
use strict
"
;
var
serviceWorker_setting_storage
=
jIO
.
createJIO
({
type
:
"
uuid
"
,
sub_storage
:
{
type
:
"
indexeddb
"
,
database
:
"
serviceWorker_settings
"
}
});
function
createStorage
(
version
)
{
return
jIO
.
createJIO
({
type
:
"
replicate
"
,
conflict_handling
:
2
,
check_remote_modification
:
false
,
check_remote_deletion
:
false
,
check_local_creation
:
false
,
check_local_deletion
:
false
,
check_local_modification
:
false
,
query
:
{
query
:
'
portal_type: ("Web Illustration",
'
+
'
"Web Manifest","Web Script","Web Style","Web Page")
'
+
'
AND version:"
'
+
version
+
'
"
'
,
"
limit
"
:
[
0
,
27131
],
"
select_list
"
:
[
"
url_string
"
]
},
signature_storage
:
{
type
:
"
uuid
"
,
sub_storage
:
{
type
:
"
indexeddb
"
,
database
:
version
+
"
_hash
"
}
},
local_sub_storage
:
{
type
:
"
mapping
"
,
map_all_property
:
true
,
mapping_dict
:
{
"
id
"
:
{
"
equal
"
:
"
relative_url
"
},
"
url_string
"
:
{
"
equal
"
:
"
id
"
}
},
sub_storage
:
{
type
:
"
query
"
,
sub_storage
:
{
type
:
"
uuid
"
,
sub_storage
:
{
type
:
"
indexeddb
"
,
database
:
version
}
}
}
},
remote_sub_storage
:
{
type
:
"
erp5
"
,
url
:
window
.
location
.
href
+
"
/hateoasnoauth
"
,
default_view_reference
:
"
jio_view
"
}
});
}
function
postMessage
(
gadget
,
message
)
{
return
new
RSVP
.
Promise
(
function
(
resolve
,
reject
)
{
var
messageChannel
=
new
MessageChannel
();
messageChannel
.
port1
.
onmessage
=
function
(
event
)
{
if
(
event
.
data
.
error
)
{
reject
(
event
.
data
.
error
);
}
else
{
return
resolve
(
event
.
data
);
}
};
gadget
.
props
.
serviceWorker
.
postMessage
(
JSON
.
stringify
(
message
),
[
messageChannel
.
port2
]
);
});
}
rJS
(
window
)
.
ready
(
function
(
gadget
)
{
var
element_list
=
gadget
.
element
.
querySelectorAll
(
"
[data-install-configuration]
"
),
i
,
key
,
value
,
gadget_list
=
[];
gadget
.
props
=
{};
gadget
.
props
.
cached_url
=
[];
gadget
.
gadget_list
=
[];
function
pushGadget
(
url
,
i
)
{
var
element
=
document
.
createElement
(
"
div
"
);
element
.
setAttribute
(
"
style
"
,
"
display: none
"
);
gadget
.
element
.
appendChild
(
element
);
return
gadget
.
declareGadget
(
url
,
{
"
scope
"
:
"
sub_app_installer_
"
+
i
,
"
element
"
:
element
,
"
sandbox
"
:
"
iframe
"
})
.
push
(
function
(
sub_gadget
)
{
gadget
.
gadget_list
.
push
(
sub_gadget
);
return
sub_gadget
.
setSubInstall
();
});
}
for
(
i
=
0
;
i
<
element_list
.
length
;
i
+=
1
)
{
key
=
element_list
[
i
].
getAttribute
(
'
data-install-configuration
'
);
value
=
element_list
[
i
].
textContent
;
if
(
key
===
"
sub_app_installer
"
)
{
if
(
value
!==
""
)
{
gadget_list
=
value
.
split
(
'
\n
'
);
}
}
else
{
gadget
.
props
[
key
]
=
value
;
}
}
return
gadget
.
render
()
.
push
(
function
()
{
var
promise_list
=
[];
for
(
i
=
0
;
i
<
gadget_list
.
length
;
i
+=
1
)
{
promise_list
.
push
(
pushGadget
(
gadget_list
[
i
],
i
+
1
));
}
return
RSVP
.
all
(
promise_list
);
});
})
.
declareMethod
(
"
render
"
,
function
()
{
var
gadget
=
this
,
element
=
document
.
createElement
(
"
div
"
);
element
.
className
=
"
presentation
"
;
gadget
.
element
.
insertBefore
(
element
,
gadget
.
element
.
firstChild
);
return
gadget
.
declareGadget
(
"
gadget_officejs_install_presentation.html
"
,
{
"
scope
"
:
"
presentation
"
,
"
element
"
:
element
}
)
.
push
(
function
(
presentation_gadget
)
{
return
presentation_gadget
.
render
(
{
"
app_name
"
:
gadget
.
props
.
app_name
}
);
});
})
.
declareMethod
(
"
setSubInstall
"
,
function
()
{
this
.
props
.
sub
=
true
;
})
.
declareMethod
(
"
mainInstall
"
,
function
()
{
var
gadget
=
this
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
if
(
gadget
.
props
.
document_version
)
{
return
gadget
.
install
();
}
})
.
push
(
function
()
{
var
promise_list
=
[],
i
;
for
(
i
=
0
;
i
<
gadget
.
gadget_list
.
length
;
i
+=
1
)
{
promise_list
.
push
(
gadget
.
gadget_list
[
i
].
waitInstall
());
}
return
RSVP
.
all
(
promise_list
);
})
.
push
(
function
()
{
gadget
.
props
.
is_installed
=
true
;
if
(
gadget
.
installing
!==
undefined
)
{
gadget
.
installing
.
resolve
();
}
if
(
!
gadget
.
props
.
sub
)
{
window
.
location
.
href
=
gadget
.
props
.
version_url
;
}
})
.
push
(
undefined
,
function
(
error
)
{
if
(
error
instanceof
ProgressEvent
)
{
if
(
gadget
.
props
.
sub
===
undefined
)
{
window
.
location
.
href
=
gadget
.
props
.
version_url
;
}
return
;
}
throw
error
;
});
})
.
declareMethod
(
"
waitInstall
"
,
function
()
{
if
(
this
.
props
.
is_installed
)
{
return
;
}
this
.
installing
=
RSVP
.
defer
();
return
this
.
installing
.
promise
;
})
.
declareMethod
(
"
install
"
,
function
()
{
var
gadget
=
this
;
return
serviceWorker_setting_storage
.
put
(
window
.
location
.
href
+
gadget
.
props
.
version_url
,
{
"
version
"
:
gadget
.
props
.
document_version
}
)
.
push
(
function
()
{
gadget
.
props
.
storage
=
createStorage
(
gadget
.
props
.
document_version
);
return
gadget
.
props
.
storage
.
repair
();
})
.
push
(
function
()
{
// transform a cache to url_list
if
(
gadget
.
props
.
cache_file
&&
gadget
.
props
.
cache_file
!==
""
)
{
gadget
.
props
.
storage
=
jIO
.
createJIO
({
type
:
"
query
"
,
sub_storage
:
{
type
:
"
uuid
"
,
sub_storage
:
{
type
:
"
indexeddb
"
,
database
:
gadget
.
props
.
document_version
}
}
});
return
gadget
.
props
.
storage
.
get
(
gadget
.
props
.
cache_file
)
.
push
(
function
(
doc
)
{
var
url_list
=
doc
.
text_content
.
split
(
'
\r\n
'
),
i
,
take
=
false
;
if
(
typeof
url_list
===
"
string
"
)
{
url_list
=
doc
.
text_content
.
split
(
'
\n
'
);
}
for
(
i
=
0
;
i
<
url_list
.
length
;
i
+=
1
)
{
if
(
url_list
[
i
].
indexOf
(
"
NETWORK:
"
)
>=
0
)
{
take
=
false
;
}
if
(
take
&&
url_list
[
i
]
!==
""
&&
url_list
[
i
].
charAt
(
0
)
!==
'
#
'
&&
url_list
[
i
].
charAt
(
0
)
!==
'
'
)
{
url_list
[
i
].
replace
(
"
\r
"
,
""
);
gadget
.
props
.
cached_url
.
push
(
url_list
[
i
]);
}
if
(
url_list
[
i
].
indexOf
(
"
CACHE:
"
)
>=
0
)
{
take
=
true
;
}
}
});
}
})
.
push
(
function
()
{
// remove base if present
if
(
document
.
querySelector
(
"
base
"
))
{
document
.
querySelector
(
"
head
"
).
removeChild
(
document
.
querySelector
(
"
base
"
)
);
}
return
navigator
.
serviceWorker
.
register
(
"
gadget_officejs_install_serviceworker.js
"
,
{
"
scope
"
:
gadget
.
props
.
version_url
}
);
})
.
push
(
function
(
registration
)
{
if
(
registration
.
installing
)
{
gadget
.
props
.
serviceWorker
=
registration
.
installing
;
}
else
if
(
registration
.
waiting
)
{
gadget
.
props
.
serviceWorker
=
registration
.
waiting
;
}
else
if
(
registration
.
active
)
{
gadget
.
props
.
serviceWorker
=
registration
.
active
;
}
})
.
push
(
function
()
{
return
postMessage
(
gadget
,
{
"
action
"
:
"
install
"
,
"
url_list
"
:
gadget
.
props
.
cached_url
,
"
version
"
:
gadget
.
props
.
document_version
}
);
});
})
.
declareService
(
function
()
{
var
gadget
=
this
;
function
redirect
()
{
window
.
location
.
href
=
gadget
.
props
.
redirect_url
;
}
if
(
!
(
"
serviceWorker
"
in
navigator
))
{
window
.
applicationCache
.
addEventListener
(
"
cached
"
,
redirect
);
window
.
applicationCache
.
addEventListener
(
'
noupdate
'
,
redirect
);
window
.
setTimeout
(
redirect
,
10000
);
}
else
{
return
this
.
mainInstall
();
}
});
}(
window
,
document
,
RSVP
,
rJS
,
jIO
,
navigator
,
MessageChannel
,
ProgressEvent
));
\ No newline at end of file
bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_install_js.xml
View file @
47ee7f53
...
...
@@ -222,7 +222,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
955.5
5436.28704.31573
</string>
</value>
<value>
<string>
955.5
9498.53728.18602
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -240,7 +240,7 @@
</tuple>
<state>
<tuple>
<float>
1481
294187.0
7
</float>
<float>
1481
538523.8
7
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
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