Commit 13c0634a authored by Jérome Perrin's avatar Jérome Perrin Committed by Aurel

core: ckeditor version up 4.16.1

also enable more plugins:
  - https://ckeditor.com/cke4/addon/autolink
  - https://ckeditor.com/cke4/addon/pastebase64
parent 9aeea036
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
</item> </item>
<item> <item>
<key> <string>content_type</string> </key> <key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value> <value> <string>text/markdown</string> </value>
</item> </item>
<item> <item>
<key> <string>precondition</string> </key> <key> <string>precondition</string> </key>
......
Software License Agreement Software License Agreement
========================== ==========================
CKEditor - The text editor for Internet - http://ckeditor.com CKEditor - The text editor for Internet - https://ckeditor.com/
Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
Licensed under the terms of any of the following licenses at your Licensed under the terms of any of the following licenses at your
choice: choice:
- GNU General Public License Version 2 or later (the "GPL") - GNU General Public License Version 2 or later (the "GPL")
http://www.gnu.org/licenses/gpl.html https://www.gnu.org/licenses/gpl.html
(See Appendix A) (See Appendix A)
- GNU Lesser General Public License Version 2.1 or later (the "LGPL") - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
http://www.gnu.org/licenses/lgpl.html https://www.gnu.org/licenses/lgpl.html
(See Appendix B) (See Appendix B)
- Mozilla Public License Version 1.1 or later (the "MPL") - Mozilla Public License Version 1.1 or later (the "MPL")
http://www.mozilla.org/MPL/MPL-1.1.html https://www.mozilla.org/MPL/MPL-1.1.html
(See Appendix C) (See Appendix C)
You are not required to, but if you want to explicitly declare the You are not required to, but if you want to explicitly declare the
...@@ -37,13 +37,14 @@ done by developers outside of CKSource with their express permission. ...@@ -37,13 +37,14 @@ done by developers outside of CKSource with their express permission.
The following libraries are included in CKEditor under the MIT license (see Appendix D): The following libraries are included in CKEditor under the MIT license (see Appendix D):
* CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2017, CKSource - Frederico Knabben. * CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2021, CKSource - Frederico Knabben.
* PicoModal (included in `samples/js/sf.js`) - Copyright (c) 2012 James Frasca. * PicoModal (included in `samples/js/sf.js`) - Copyright (c) 2012 James Frasca.
* CodeMirror (included in the samples) - Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others. * CodeMirror (included in the samples) - Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others.
* ES6Promise - Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors.
Parts of code taken from the following libraries are included in CKEditor under the MIT license (see Appendix D): Parts of code taken from the following libraries are included in CKEditor under the MIT license (see Appendix D):
* jQuery (inspired the domReady function, ckeditor_base.js) - Copyright (c) 2011 John Resig, http://jquery.com/ * jQuery (inspired the domReady function, ckeditor_base.js) - Copyright (c) 2011 John Resig, https://jquery.com/
The following libraries are included in CKEditor under the SIL Open Font License, Version 1.1 (see Appendix E): The following libraries are included in CKEditor under the SIL Open Font License, Version 1.1 (see Appendix E):
...@@ -1418,3 +1419,17 @@ Redistribution and use in source and binary forms, with or without modification, ...@@ -1418,3 +1419,17 @@ Redistribution and use in source and binary forms, with or without modification,
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
``` ```
Appendix H: The BSD-2 License
-----------------------------
```
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
```
(Ignore this line: %REMOVE_START%)
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
</item> </item>
<item> <item>
<key> <string>content_type</string> </key> <key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value> <value> <string>text/markdown</string> </value>
</item> </item>
<item> <item>
<key> <string>precondition</string> </key> <key> <string>precondition</string> </key>
......
CKEditor 4 CKEditor 4
========== ==========
Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
http://ckeditor.com - See LICENSE.md for license information. https://ckeditor.com - See LICENSE.md for license information.
CKEditor is a text editor to be used inside web pages. It's not a replacement CKEditor 4 is a text editor to be used inside web pages. It's not a replacement
for desktop text editors like Word or OpenOffice, but a component to be used as for desktop text editors like Word or OpenOffice, but a component to be used as
part of web applications and websites. part of web applications and websites.
## Documentation ## Documentation
The full editor documentation is available online at the following address: The full editor documentation is available online at the following address:
http://docs.ckeditor.com https://ckeditor.com/docs/
## Installation ## Installation
Installing CKEditor is an easy task. Just follow these simple steps: Installing CKEditor is an easy task. Just follow these simple steps:
1. **Download** the latest version from the CKEditor website: 1. **Download** the latest version from the CKEditor website:
http://ckeditor.com. You should have already completed this step, but be https://ckeditor.com. You should have already completed this step, but be
sure you have the very latest version. sure you have the very latest version.
2. **Extract** (decompress) the downloaded file into the root of your website. 2. **Extract** (decompress) the downloaded file into the root of your website.
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
</item> </item>
<item> <item>
<key> <string>content_type</string> </key> <key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value> <value> <string>text/markdown</string> </value>
</item> </item>
<item> <item>
<key> <string>precondition</string> </key> <key> <string>precondition</string> </key>
......
/* /*
Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/ */
(function(a){if("undefined"==typeof a)throw Error("jQuery should be loaded before CKEditor jQuery adapter.");if("undefined"==typeof CKEDITOR)throw Error("CKEditor should be loaded before CKEditor jQuery adapter.");CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a}, (function(a){if("undefined"==typeof a)throw Error("jQuery should be loaded before CKEditor jQuery adapter.");if("undefined"==typeof CKEDITOR)throw Error("CKEditor should be loaded before CKEditor jQuery adapter.");CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a},
ckeditor:function(g,d){if(!CKEDITOR.env.isCompatible)throw Error("The environment is incompatible.");if(!a.isFunction(g)){var m=d;d=g;g=m}var k=[];d=d||{};this.each(function(){var b=a(this),c=b.data("ckeditorInstance"),f=b.data("_ckeditorInstanceLock"),h=this,l=new a.Deferred;k.push(l.promise());if(c&&!f)g&&g.apply(c,[this]),l.resolve();else if(f)c.once("instanceReady",function(){setTimeout(function(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),l.resolve()):setTimeout(arguments.callee,100)},0)}, ckeditor:function(g,e){if(!CKEDITOR.env.isCompatible)throw Error("The environment is incompatible.");if(!a.isFunction(g)){var m=e;e=g;g=m}var k=[];e=e||{};this.each(function(){var b=a(this),c=b.data("ckeditorInstance"),f=b.data("_ckeditorInstanceLock"),h=this,l=new a.Deferred;k.push(l.promise());if(c&&!f)g&&g.apply(c,[this]),l.resolve();else if(f)c.once("instanceReady",function(){setTimeout(function d(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),l.resolve()):setTimeout(d,100)},0)},null,null,9999);
null,null,9999);else{if(d.autoUpdateElement||"undefined"==typeof d.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)d.autoUpdateElementJquery=!0;d.autoUpdateElement=!1;b.data("_ckeditorInstanceLock",!0);c=a(this).is("textarea")?CKEDITOR.replace(h,d):CKEDITOR.inline(h,d);b.data("ckeditorInstance",c);c.on("instanceReady",function(d){var e=d.editor;setTimeout(function(){if(e.element){d.removeListener();e.on("dataReady",function(){b.trigger("dataReady.ckeditor",[e])});e.on("setData",function(a){b.trigger("setData.ckeditor", else{if(e.autoUpdateElement||"undefined"==typeof e.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)e.autoUpdateElementJquery=!0;e.autoUpdateElement=!1;b.data("_ckeditorInstanceLock",!0);c=a(this).is("textarea")?CKEDITOR.replace(h,e):CKEDITOR.inline(h,e);b.data("ckeditorInstance",c);c.on("instanceReady",function(e){var d=e.editor;setTimeout(function n(){if(d.element){e.removeListener();d.on("dataReady",function(){b.trigger("dataReady.ckeditor",[d])});d.on("setData",function(a){b.trigger("setData.ckeditor",
[e,a.data])});e.on("getData",function(a){b.trigger("getData.ckeditor",[e,a.data])},999);e.on("destroy",function(){b.trigger("destroy.ckeditor",[e])});e.on("save",function(){a(h.form).submit();return!1},null,null,20);if(e.config.autoUpdateElementJquery&&b.is("textarea")&&a(h.form).length){var c=function(){b.ckeditor(function(){e.updateElement()})};a(h.form).submit(c);a(h.form).bind("form-pre-serialize",c);b.bind("destroy.ckeditor",function(){a(h.form).unbind("submit",c);a(h.form).unbind("form-pre-serialize", [d,a.data])});d.on("getData",function(a){b.trigger("getData.ckeditor",[d,a.data])},999);d.on("destroy",function(){b.trigger("destroy.ckeditor",[d])});d.on("save",function(){a(h.form).submit();return!1},null,null,20);if(d.config.autoUpdateElementJquery&&b.is("textarea")&&a(h.form).length){var c=function(){b.ckeditor(function(){d.updateElement()})};a(h.form).submit(c);a(h.form).bind("form-pre-serialize",c);b.bind("destroy.ckeditor",function(){a(h.form).unbind("submit",c);a(h.form).unbind("form-pre-serialize",
c)})}e.on("destroy",function(){b.removeData("ckeditorInstance")});b.removeData("_ckeditorInstanceLock");b.trigger("instanceReady.ckeditor",[e]);g&&g.apply(e,[h]);l.resolve()}else setTimeout(arguments.callee,100)},0)},null,null,9999)}});var f=new a.Deferred;this.promise=f.promise();a.when.apply(this,k).then(function(){f.resolve()});this.editor=this.eq(0).data("ckeditorInstance");return this}});CKEDITOR.config.jqueryOverrideVal&&(a.fn.val=CKEDITOR.tools.override(a.fn.val,function(g){return function(d){if(arguments.length){var m= c)})}d.on("destroy",function(){b.removeData("ckeditorInstance")});b.removeData("_ckeditorInstanceLock");b.trigger("instanceReady.ckeditor",[d]);g&&g.apply(d,[h]);l.resolve()}else setTimeout(n,100)},0)},null,null,9999)}});var f=new a.Deferred;this.promise=f.promise();a.when.apply(this,k).then(function(){f.resolve()});this.editor=this.eq(0).data("ckeditorInstance");return this}});CKEDITOR.config.jqueryOverrideVal&&(a.fn.val=CKEDITOR.tools.override(a.fn.val,function(g){return function(e){if(arguments.length){var m=
this,k=[],f=this.each(function(){var b=a(this),c=b.data("ckeditorInstance");if(b.is("textarea")&&c){var f=new a.Deferred;c.setData(d,function(){f.resolve()});k.push(f.promise());return!0}return g.call(b,d)});if(k.length){var b=new a.Deferred;a.when.apply(this,k).done(function(){b.resolveWith(m)});return b.promise()}return f}var f=a(this).eq(0),c=f.data("ckeditorInstance");return f.is("textarea")&&c?c.getData():g.call(f)}}))})(window.jQuery); this,k=[],f=this.each(function(){var b=a(this),c=b.data("ckeditorInstance");if(b.is("textarea")&&c){var f=new a.Deferred;c.setData(e,function(){f.resolve()});k.push(f.promise());return!0}return g.call(b,e)});if(k.length){var b=new a.Deferred;a.when.apply(this,k).done(function(){b.resolveWith(m)});return b.promise()}return f}var f=a(this).eq(0),c=f.data("ckeditorInstance");return f.is("textarea")&&c?c.getData():g.call(f)}}))})(window.jQuery);
\ No newline at end of file \ No newline at end of file
/** /**
* @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or http://ckeditor.com/license * For licensing, see LICENSE.md or https://ckeditor.com/license
*/ */
/** /**
* This file was added automatically by CKEditor builder. * This file was added automatically by CKEditor builder.
* You may re-use it at any time to build CKEditor again. * You may re-use it at any time to build CKEditor again.
* *
* If you would like to build CKEditor online again * If you would like to build CKEditor online again
* (for example to upgrade), visit one the following links: * (for example to upgrade), visit one the following links:
* *
* (1) http://ckeditor.com/builder * (1) https://ckeditor.com/cke4/builder
* Visit online builder to build CKEditor from scratch. * Visit online builder to build CKEditor from scratch.
* *
* (2) http://ckeditor.com/builder/e36bab0e1b0cd2508382db742151f0ca * (2) https://ckeditor.com/cke4/builder/d0f0920bbf3ce0f2a3214fc3c49c59be
* Visit online builder to build CKEditor, starting with the same setup as before. * Visit online builder to build CKEditor, starting with the same setup as before.
* *
* (3) http://ckeditor.com/builder/download/e36bab0e1b0cd2508382db742151f0ca * (3) https://ckeditor.com/cke4/builder/download/d0f0920bbf3ce0f2a3214fc3c49c59be
* Straight download link to the latest version of CKEditor (Optimized) with the same setup as before. * Straight download link to the latest version of CKEditor (Optimized) with the same setup as before.
* *
* NOTE: * NOTE:
* This file is not used by CKEditor, you may remove it. * This file is not used by CKEditor, you may remove it.
* Changing this file will not change your CKEditor configuration. * Changing this file will not change your CKEditor configuration.
*/ */
var CKBUILDER_CONFIG = { var CKBUILDER_CONFIG = {
skin: 'moono-lisa', skin: 'moono-lisa',
preset: 'full', preset: 'full',
ignore: [ ignore: [
'.DS_Store', '.DS_Store',
'.bender', '.bender',
...@@ -38,6 +38,8 @@ var CKBUILDER_CONFIG = { ...@@ -38,6 +38,8 @@ var CKBUILDER_CONFIG = {
'.jshintignore', '.jshintignore',
'.jshintrc', '.jshintrc',
'.mailmap', '.mailmap',
'.npm',
'.nvmrc',
'.travis.yml', '.travis.yml',
'bender-err.log', 'bender-err.log',
'bender-out.log', 'bender-out.log',
...@@ -47,12 +49,14 @@ var CKBUILDER_CONFIG = { ...@@ -47,12 +49,14 @@ var CKBUILDER_CONFIG = {
'gruntfile.js', 'gruntfile.js',
'less', 'less',
'node_modules', 'node_modules',
'package-lock.json',
'package.json', 'package.json',
'tests' 'tests'
], ],
plugins : { plugins : {
'a11yhelp' : 1, 'a11yhelp' : 1,
'about' : 1, 'about' : 1,
'autolink' : 1,
'basicstyles' : 1, 'basicstyles' : 1,
'bidi' : 1, 'bidi' : 1,
'blockquote' : 1, 'blockquote' : 1,
...@@ -88,6 +92,7 @@ var CKBUILDER_CONFIG = { ...@@ -88,6 +92,7 @@ var CKBUILDER_CONFIG = {
'maximize' : 1, 'maximize' : 1,
'newpage' : 1, 'newpage' : 1,
'pagebreak' : 1, 'pagebreak' : 1,
'pastebase64' : 1,
'pastefromword' : 1, 'pastefromword' : 1,
'pastetext' : 1, 'pastetext' : 1,
'preview' : 1, 'preview' : 1,
......
/** /**
* @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or http://ckeditor.com/license * For licensing, see https://ckeditor.com/legal/ckeditor-oss-license
*/ */
CKEDITOR.editorConfig = function( config ) { CKEDITOR.editorConfig = function( config ) {
......
/* /*
Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/ */
body body
{ {
/* Font */ /* Font */
font-family: sans-serif, Arial, Verdana, "Trebuchet MS"; /* Emoji fonts are added to visualise them nicely in Internet Explorer. */
font-family: sans-serif, Arial, Verdana, "Trebuchet MS", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 12px; font-size: 12px;
/* Text color */ /* Text color */
color: #333; color: #333;
/* Remove the background color to make it transparent */ /* Remove the background color to make it transparent. */
background-color: #fff; background-color: #fff;
margin: 20px; margin: 20px;
...@@ -60,7 +61,7 @@ ol,ul,dl ...@@ -60,7 +61,7 @@ ol,ul,dl
{ {
/* IE7: reset rtl list margin. (#7334) */ /* IE7: reset rtl list margin. (#7334) */
*margin-right: 0px; *margin-right: 0px;
/* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/ /* Preserved spaces for list items with text direction different than the list. (#6249,#8049)*/
padding: 0 40px; padding: 0 40px;
} }
...@@ -113,8 +114,7 @@ span[lang] ...@@ -113,8 +114,7 @@ span[lang]
figure figure
{ {
text-align: center; text-align: center;
border: solid 1px #ccc; outline: solid 1px #ccc;
border-radius: 2px;
background: rgba(0,0,0,0.05); background: rgba(0,0,0,0.05);
padding: 10px; padding: 10px;
margin: 10px 20px; margin: 10px 20px;
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>en-au.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment