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
138
Merge Requests
138
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
nexedi
erp5
Commits
e5a44f2c
Commit
e5a44f2c
authored
Nov 23, 2015
by
Romain Courteaud
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[erp5_web_renderjs_ui] Update to jio 3.5.0
parent
02d0d636
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
292 additions
and
10 deletions
+292
-10
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.xml
...nderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.xml
+292
-10
No files found.
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_jio_js.xml
View file @
e5a44f2c
...
...
@@ -63,6 +63,12 @@
</tuple>
</value>
</item>
<item>
<key>
<string>
categories
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
content_md5
</string>
</key>
<value>
...
...
@@ -7966,6 +7972,195 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
\n
jIO.addStorage(\'zip\',
ZipStorage);\n
}(RSVP,
Blob,
LZString,
DOMException));\n
;/*\n
*
Copyright
2015,
Nexedi
SA\n
*
Released
under
the
LGPL
license.\n
*
http://www.gnu.org/licenses/lgpl.html\n
*/\n
\n
/*jslint
nomen:
true*/\n
/*global
jIO,
RSVP,
DOMException,
Blob,
crypto,
Uint8Array,
ArrayBuffer*/\n
\n
(function
(jIO,
RSVP,
DOMException,
Blob,
crypto,
Uint8Array,
ArrayBuffer)
{\n
"use
strict";\n
\n
\n
//
you
the
cryptography
system
used
by
this
storage
is
AES-GCM.\n
//
here
is
an
example
of
how
to
generate
a
key
to
the
json
format.\n
\n
//
var
key,\n
//
jsonKey;\n
//
crypto.subtle.generateKey({name:
"AES-GCM",length:
256},\n
//
(true),
["encrypt",
"decrypt"])\n
//
.then(function(res){
key =
res;});\n
//\n
//
window.crypto.subtle.exportKey("jwk",
key)\n
//
.then(function(res){
jsonKey =
val})\n
//\n
//var
storage =
jIO.createJIO({type:
"crypt",
key:
jsonKey,\n
//
sub_storage:
{...}});\n
\n
//
find
more
informations
about
this
cryptography
system
on\n
//
https://github.com/diafygi/webcrypto-examples#aes-gcm\n
\n
/**\n
*
The
JIO
Cryptography
Storage
extension\n
*\n
*
@class
CryptStorage\n
*
@constructor\n
*/\n
\n
var
MIME_TYPE =
"application/x-jio-aes-gcm-encryption"
;\n
\n
function
CryptStorage(spec)
{\n
this._key =
spec.key;\n
this._jsonKey =
true;\n
this._sub_storage =
jIO.createJIO(spec.sub_storage);\n
}\n
\n
function
convertKey(that)
{\n
return
new
RSVP.Queue()\n
.push(function
()
{\n
return
crypto.subtle.importKey("jwk",
that._key,\n
"AES-GCM",
false,\n
["encrypt",
"decrypt"]);\n
})\n
.push(function
(res)
{\n
that._key =
res;\n
that._jsonKey =
false;\n
return;\n
},
function
()
{\n
throw
new
TypeError(\n
"\'key\'
must
be
a
CryptoKey
to
JSON
Web
Key
format"\n
);\n
});\n
}\n
\n
CryptStorage.prototype.get =
function
()
{\n
return
this._sub_storage.get.apply(this._sub_storage,\n
arguments);\n
};\n
\n
CryptStorage.prototype.post =
function
()
{\n
return
this._sub_storage.post.apply(this._sub_storage,\n
arguments);\n
};\n
\n
CryptStorage.prototype.put =
function
()
{\n
return
this._sub_storage.put.apply(this._sub_storage,\n
arguments);\n
};\n
\n
CryptStorage.prototype.remove =
function
()
{\n
return
this._sub_storage.remove.apply(this._sub_storage,\n
arguments);\n
};\n
\n
CryptStorage.prototype.hasCapacity =
function
()
{\n
return
this._sub_storage.hasCapacity.apply(this._sub_storage,\n
arguments);\n
};\n
\n
CryptStorage.prototype.buildQuery =
function
()
{\n
return
this._sub_storage.buildQuery.apply(this._sub_storage,\n
arguments);\n
};\n
\n
\n
CryptStorage.prototype.putAttachment =
function
(id,
name,
blob)
{\n
var
initializaton_vector =
crypto.getRandomValues(new
Uint8Array(12)),\n
that =
this;\n
\n
return
new
RSVP.Queue()\n
.push(function
()
{\n
if
(
that._jsonKey =
==
true)
{\n
return
convertKey(that);\n
}\n
return;\n
})\n
.push(function
()
{\n
return
jIO.util.readBlobAsDataURL(blob);\n
})\n
.push(function
(dataURL)
{\n
//string-
>
arraybuffer\n
var strLen = dataURL.currentTarget.result.length,\n
buf = new ArrayBuffer(strLen),\n
bufView = new Uint8Array(buf),\n
i;\n
\n
dataURL = dataURL.currentTarget.result;\n
for (i = 0; i
< strLen
;
i
+=
1)
{\n
bufView[i]
=
dataURL.charCodeAt(i);\n
}\n
return
crypto.subtle.encrypt({\n
name
:
"AES-GCM",\n
iv
:
initializaton_vector\n
},\n
that._key,
buf);\n
})\n
.push(function
(coded)
{\n
var
blob =
new
Blob([initializaton_vector,
coded],
{type:
MIME_TYPE});\n
return
that._sub_storage.putAttachment(id,
name,
blob);\n
});\n
};\n
\n
CryptStorage.prototype.getAttachment =
function
(id,
name)
{\n
var
that =
this;\n
\n
return
that._sub_storage.getAttachment(id,
name)\n
.push(function
(blob)
{\n
if
(blob.type
!==
MIME_TYPE)
{\n
return
blob;\n
}\n
return
new
RSVP.Queue()\n
.push(function
()
{\n
if
(
that._jsonKey =
==
true)
{\n
return
convertKey(that);\n
}\n
return;\n
})\n
.push(function
()
{\n
return
jIO.util.readBlobAsArrayBuffer(blob);\n
})\n
.push(function
(coded)
{\n
var
initializaton_vector;\n
\n
coded =
coded.currentTarget.result;\n
initializaton_vector =
new
Uint8Array(coded.slice(0,
12));\n
return
crypto.subtle.decrypt({\n
name
:
"AES-GCM",\n
iv
:
initializaton_vector\n
},\n
that._key,
coded.slice(12));\n
})\n
.push(function
(arr)
{\n
//arraybuffer-
>
string\n
arr = String.fromCharCode.apply(null, new Uint8Array(arr));\n
try {\n
return jIO.util.dataURItoBlob(arr);\n
} catch (error) {\n
if (error instanceof DOMException) {\n
return blob;\n
}\n
throw error;\n
}\n
}, function () { return blob; });\n
});\n
};\n
\n
CryptStorage.prototype.removeAttachment = function () {\n
return this._sub_storage.removeAttachment.apply(this._sub_storage,\n
arguments);\n
};\n
\n
CryptStorage.prototype.allAttachments = function () {\n
return this._sub_storage.allAttachments.apply(this._sub_storage,\n
arguments);\n
};\n
\n
jIO.addStorage(\'crypt\', CryptStorage);\n
\n
}(jIO, RSVP, DOMException, Blob, crypto, Uint8Array, ArrayBuffer));\n
;/*\n
* Copyright 2013, Nexedi SA\n
* Released under the LGPL license.\n
...
...
@@ -8445,7 +8640,7 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
});\n
})\n
.push(undefined,
function
(error)
{\n
if
(
error.target.status =
==
403)
{\n
if
(
error.target.status =
==
403
||
error.target.status =
==
424
)
{\n
throw
new
jIO.util.jIOError("Cannot
access
subdocument",
404);\n
}\n
throw
error;\n
...
...
@@ -8794,9 +8989,11 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
//
}\n
\n
/*jslint
nomen:
true,
unparam:
true
*/\n
/*global
jIO,
UriTemplate,
FormData,
RSVP,
URI,
Blob*/\n
/*global
jIO,
UriTemplate,
FormData,
RSVP,
URI,
Blob,
objectToSearchText,\n
SimpleQuery,
ComplexQuery*/\n
\n
(function
(jIO,
UriTemplate,
FormData,
RSVP,
URI,
Blob)
{\n
(function
(jIO,
UriTemplate,
FormData,
RSVP,
URI,
Blob,
objectToSearchText,\n
SimpleQuery,
ComplexQuery)
{\n
"use
strict";\n
\n
function
getSiteDocument(storage)
{\n
...
...
@@ -9181,6 +9378,38 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
(
name =
==
"select")
||
(
name =
==
"limit")
||\n
(
name =
==
"sort"));\n
};\n
\n
function
isSingleLocalRoles(parsed_query)
{\n
if
((parsed_query
instanceof
SimpleQuery)
&&\n
(
parsed_query.key =
==
\'local_roles\'))
{\n
//
local_roles:"Assignee"\n
return
parsed_query.value;\n
}\n
}\n
\n
function
isMultipleLocalRoles(parsed_query)
{\n
var
i,\n
sub_query,\n
is_multiple =
true,\n
local_role_list =
[];\n
if
((parsed_query
instanceof
ComplexQuery)
&&\n
(
parsed_query.operator =
==
\'OR\'))
{\n
\n
for
(
i =
0;
i
<
parsed_query.query_list.length;
i
+=
1)
{\n
sub_query =
parsed_query.query_list[i];\n
if
((sub_query
instanceof
SimpleQuery)
&&\n
(
sub_query.key =
==
\'local_roles\'))
{\n
local_role_list.push(sub_query.value);\n
}
else
{\n
is_multiple =
false;\n
}\n
}\n
if
(is_multiple)
{\n
//
local_roles:"Assignee"
OR
local_roles:"Assignor"\n
return
local_role_list;\n
}\n
}\n
}\n
\n
ERP5Storage.prototype.buildQuery =
function
(options)
{\n
//
if
(typeof
options.query
!==
"string")
{\n
...
...
@@ -9190,15 +9419,63 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
//
}\n
return
getSiteDocument(this)\n
.push(function
(site_hal)
{\n
var
query =
options.query,\n
i,\n
parsed_query,\n
sub_query,\n
result_list,\n
local_roles;\n
if
(options.query)
{\n
parsed_query =
jIO.QueryFactory.create(options.query);\n
\n
result_list =
isSingleLocalRoles(parsed_query);\n
if
(result_list)
{\n
query =
undefined;\n
local_roles =
result_list;\n
}
else
{\n
\n
result_list =
isMultipleLocalRoles(parsed_query);\n
if
(result_list)
{\n
query =
undefined;\n
local_roles =
result_list;\n
}
else
if
((parsed_query
instanceof
ComplexQuery)
&&\n
(
parsed_query.operator =
==
\'AND\'))
{\n
\n
//
portal_type:"Person"
AND
local_roles:"Assignee"\n
for
(
i =
0;
i
<
parsed_query.query_list.length;
i
+=
1)
{\n
sub_query =
parsed_query.query_list[i];\n
\n
result_list =
isSingleLocalRoles(sub_query);\n
if
(result_list)
{\n
local_roles =
result_list;\n
parsed_query.query_list.splice(i,
1);\n
query =
objectToSearchText(parsed_query);\n
i =
parsed_query.query_list.length;\n
}
else
{\n
result_list =
isMultipleLocalRoles(sub_query);\n
if
(result_list)
{\n
local_roles =
result_list;\n
parsed_query.query_list.splice(i,
1);\n
query =
objectToSearchText(parsed_query);\n
i =
parsed_query.query_list.length;\n
}\n
}\n
}\n
}\n
\n
}\n
}\n
\n
return
jIO.util.ajax({\n
"type":
"GET",\n
"url":
UriTemplate.parse(site_hal._links.raw_search.href)\n
.expand({\n
query:
options.
query,\n
query:
query,\n
//
XXX
Force
erp5
to
return
embedded
document\n
select_list:
options.select_list
||
["title",
"reference"],\n
limit:
options.limit,\n
sort_on:
options.sort_on\n
sort_on:
options.sort_on,\n
local_roles:
local_roles\n
}),\n
"xhrFields":
{\n
withCredentials:
true\n
...
...
@@ -9230,7 +9507,8 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
\n
jIO.addStorage("erp5",
ERP5Storage);\n
\n
}(jIO,
UriTemplate,
FormData,
RSVP,
URI,
Blob));\n
}(jIO,
UriTemplate,
FormData,
RSVP,
URI,
Blob,
objectToSearchText,\n
SimpleQuery,
ComplexQuery));\n
;/*jslint
nomen:
true*/\n
/*global
RSVP*/\n
(function
(jIO,
RSVP)
{\n
...
...
@@ -10273,6 +10551,7 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
var array_buffer_list = [],\n
blob,\n
i,\n
index,\n
len = result_list.length;\n
for (i = 0; i
< len
;
i
+=
1)
{\n
array_buffer_list.push(result_list[i].blob);\n
...
...
@@ -10280,8 +10559,10 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
if
((
options.start =
==
undefined)
&&
(
options.end =
==
undefined))
{\n
return
new
Blob(array_buffer_list,
{type:
type});\n
}\n
index =
Math.floor(start
/
UNITE)
*
UNITE;\n
blob =
new
Blob(array_buffer_list,
{type:
"application/octet-stream"});\n
return
blob.slice(start,
end,
"application/octet-stream");\n
return
blob.slice(start
-
index,
end
-
index,\n
"application/octet-stream");\n
});\n
};\n
\n
...
...
@@ -10370,7 +10651,8 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
};\n
\n
jIO.addStorage("indexeddb",
IndexedDBStorage);\n
}(indexedDB,
jIO,
RSVP,
Blob,
Math,
IDBKeyRange));
}(indexedDB,
jIO,
RSVP,
Blob,
Math,
IDBKeyRange));\n
]]
></string>
</value>
</item>
...
...
@@ -10507,7 +10789,7 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
94
6.47484.49057.4949
</string>
</value>
<value>
<string>
94
7.13956.40084.22186
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -10525,7 +10807,7 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
</tuple>
<state>
<tuple>
<float>
144
6033135.72
</float>
<float>
144
8293989.05
</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