Commit 53a4b813 authored by iv's avatar iv

OfficeJS drive: Add codemirror editor (version: 5.10.0).

Sources: https://github.com/codemirror/CodeMirror/tree/8a3e59cb49b05da385639c350858c2a2a07e60c1
parent d8e6e6a4
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Style" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>codemirror_addon_dialog.css</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>codemirror_rjs_addon_dialog_css</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Style</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string>.CodeMirror-dialog {\n
position: absolute;\n
left: 0; right: 0;\n
background: inherit;\n
z-index: 15;\n
padding: .1em .8em;\n
overflow: hidden;\n
color: inherit;\n
}\n
\n
.CodeMirror-dialog-top {\n
border-bottom: 1px solid #eee;\n
top: 0;\n
}\n
\n
.CodeMirror-dialog-bottom {\n
border-top: 1px solid #eee;\n
bottom: 0;\n
}\n
\n
.CodeMirror-dialog input {\n
border: none;\n
outline: none;\n
background: transparent;\n
width: 20em;\n
color: inherit;\n
font-family: monospace;\n
}\n
\n
.CodeMirror-dialog button {\n
font-size: 70%;\n
}</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Codemirror Addon Dialog CSS</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>001</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<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>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>1406898405.54</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</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>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>948.28974.6053.12032</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>1453133797.97</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>romain</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>1405084080.11</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Script" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>codemirror_addon_dialog.js</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>codemirror_rjs_addon_dialog_js</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Script</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string encoding="cdata"><![CDATA[
// CodeMirror, copyright (c) by Marijn Haverbeke and others\n
// Distributed under an MIT license: http://codemirror.net/LICENSE\n
\n
// Open simple dialogs on top of an editor. Relies on dialog.css.\n
\n
(function(mod) {\n
if (typeof exports == "object" && typeof module == "object") // CommonJS\n
mod(require("../../lib/codemirror"));\n
else if (typeof define == "function" && define.amd) // AMD\n
define(["../../lib/codemirror"], mod);\n
else // Plain browser env\n
mod(CodeMirror);\n
})(function(CodeMirror) {\n
function dialogDiv(cm, template, bottom) {\n
var wrap = cm.getWrapperElement();\n
var dialog;\n
dialog = wrap.appendChild(document.createElement("div"));\n
if (bottom)\n
dialog.className = "CodeMirror-dialog CodeMirror-dialog-bottom";\n
else\n
dialog.className = "CodeMirror-dialog CodeMirror-dialog-top";\n
\n
if (typeof template == "string") {\n
dialog.innerHTML = template;\n
} else { // Assuming it\'s a detached DOM element.\n
dialog.appendChild(template);\n
}\n
return dialog;\n
}\n
\n
function closeNotification(cm, newVal) {\n
if (cm.state.currentNotificationClose)\n
cm.state.currentNotificationClose();\n
cm.state.currentNotificationClose = newVal;\n
}\n
\n
CodeMirror.defineExtension("openDialog", function(template, callback, options) {\n
if (!options) options = {};\n
\n
closeNotification(this, null);\n
\n
var dialog = dialogDiv(this, template, options.bottom);\n
var closed = false, me = this;\n
function close(newVal) {\n
if (typeof newVal == \'string\') {\n
inp.value = newVal;\n
} else {\n
if (closed) return;\n
closed = true;\n
dialog.parentNode.removeChild(dialog);\n
me.focus();\n
\n
if (options.onClose) options.onClose(dialog);\n
}\n
}\n
\n
var inp = dialog.getElementsByTagName("input")[0], button;\n
if (inp) {\n
if (options.value) {\n
inp.value = options.value;\n
if (options.selectValueOnOpen !== false) {\n
inp.select();\n
}\n
}\n
\n
if (options.onInput)\n
CodeMirror.on(inp, "input", function(e) { options.onInput(e, inp.value, close);});\n
if (options.onKeyUp)\n
CodeMirror.on(inp, "keyup", function(e) {options.onKeyUp(e, inp.value, close);});\n
\n
CodeMirror.on(inp, "keydown", function(e) {\n
if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }\n
if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {\n
inp.blur();\n
CodeMirror.e_stop(e);\n
close();\n
}\n
if (e.keyCode == 13) callback(inp.value, e);\n
});\n
\n
if (options.closeOnBlur !== false) CodeMirror.on(inp, "blur", close);\n
\n
inp.focus();\n
} else if (button = dialog.getElementsByTagName("button")[0]) {\n
CodeMirror.on(button, "click", function() {\n
close();\n
me.focus();\n
});\n
\n
if (options.closeOnBlur !== false) CodeMirror.on(button, "blur", close);\n
\n
button.focus();\n
}\n
return close;\n
});\n
\n
CodeMirror.defineExtension("openConfirm", function(template, callbacks, options) {\n
closeNotification(this, null);\n
var dialog = dialogDiv(this, template, options && options.bottom);\n
var buttons = dialog.getElementsByTagName("button");\n
var closed = false, me = this, blurring = 1;\n
function close() {\n
if (closed) return;\n
closed = true;\n
dialog.parentNode.removeChild(dialog);\n
me.focus();\n
}\n
buttons[0].focus();\n
for (var i = 0; i < buttons.length; ++i) {\n
var b = buttons[i];\n
(function(callback) {\n
CodeMirror.on(b, "click", function(e) {\n
CodeMirror.e_preventDefault(e);\n
close();\n
if (callback) callback(me);\n
});\n
})(callbacks[i]);\n
CodeMirror.on(b, "blur", function() {\n
--blurring;\n
setTimeout(function() { if (blurring <= 0) close(); }, 200);\n
});\n
CodeMirror.on(b, "focus", function() { ++blurring; });\n
}\n
});\n
\n
/*\n
* openNotification\n
* Opens a notification, that can be closed with an optional timer\n
* (default 5000ms timer) and always closes on click.\n
*\n
* If a notification is opened while another is opened, it will close the\n
* currently opened one and open the new one immediately.\n
*/\n
CodeMirror.defineExtension("openNotification", function(template, options) {\n
closeNotification(this, close);\n
var dialog = dialogDiv(this, template, options && options.bottom);\n
var closed = false, doneTimer;\n
var duration = options && typeof options.duration !== "undefined" ? options.duration : 5000;\n
\n
function close() {\n
if (closed) return;\n
closed = true;\n
clearTimeout(doneTimer);\n
dialog.parentNode.removeChild(dialog);\n
}\n
\n
CodeMirror.on(dialog, \'click\', function(e) {\n
CodeMirror.e_preventDefault(e);\n
close();\n
});\n
\n
if (duration)\n
doneTimer = setTimeout(close, duration);\n
\n
return close;\n
});\n
});
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>CodeMirror Addon Dialog</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>4.3.0</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<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>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>1406898405.97</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</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>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>948.28974.19283.5956</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>1453133785.24</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>romain</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>1405084229.95</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Style" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>codemirror_addon_display_fullscreen.css</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>codemirror_rjs_addon_display_fullscreen_css</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Style</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string>.CodeMirror-fullscreen {\n
position: fixed;\n
top: 0; left: 0; right: 0; bottom: 0;\n
height: auto;\n
z-index: 9;\n
}</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Codemirror Addon Display Fullscreen CSS</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>002</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<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>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>1406898405.96</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</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>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>948.28972.476.44595</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>1453133774.42</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>romain</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>1405084453.51</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Script" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>codemirror_addon_display_fullscreen.js</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>codemirror_rjs_addon_display_fullscreen_js</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Script</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string encoding="cdata"><![CDATA[
// CodeMirror, copyright (c) by Marijn Haverbeke and others\n
// Distributed under an MIT license: http://codemirror.net/LICENSE\n
\n
(function(mod) {\n
if (typeof exports == "object" && typeof module == "object") // CommonJS\n
mod(require("../../lib/codemirror"));\n
else if (typeof define == "function" && define.amd) // AMD\n
define(["../../lib/codemirror"], mod);\n
else // Plain browser env\n
mod(CodeMirror);\n
})(function(CodeMirror) {\n
"use strict";\n
\n
CodeMirror.defineOption("fullScreen", false, function(cm, val, old) {\n
if (old == CodeMirror.Init) old = false;\n
if (!old == !val) return;\n
if (val) setFullscreen(cm);\n
else setNormal(cm);\n
});\n
\n
function setFullscreen(cm) {\n
var wrap = cm.getWrapperElement();\n
cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,\n
width: wrap.style.width, height: wrap.style.height};\n
wrap.style.width = "";\n
wrap.style.height = "auto";\n
wrap.className += " CodeMirror-fullscreen";\n
document.documentElement.style.overflow = "hidden";\n
cm.refresh();\n
}\n
\n
function setNormal(cm) {\n
var wrap = cm.getWrapperElement();\n
wrap.className = wrap.className.replace(/\\s*CodeMirror-fullscreen\\b/, "");\n
document.documentElement.style.overflow = "";\n
var info = cm.state.fullScreenRestore;\n
wrap.style.width = info.width; wrap.style.height = info.height;\n
window.scrollTo(info.scrollLeft, info.scrollTop);\n
cm.refresh();\n
}\n
});
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>CodeMirror Addon Display Fullscreen</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>4.3.0</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<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>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>1406898405.95</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</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>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>948.28972.21153.9745</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>1453133756.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>romain</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>1405084528.4</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Script" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>codemirror_addon_edit_matchbrackets.js</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>codemirror_rjs_addon_edit_matchbrackets_js</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Script</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string encoding="cdata"><![CDATA[
// CodeMirror, copyright (c) by Marijn Haverbeke and others\n
// Distributed under an MIT license: http://codemirror.net/LICENSE\n
\n
(function(mod) {\n
if (typeof exports == "object" && typeof module == "object") // CommonJS\n
mod(require("../../lib/codemirror"));\n
else if (typeof define == "function" && define.amd) // AMD\n
define(["../../lib/codemirror"], mod);\n
else // Plain browser env\n
mod(CodeMirror);\n
})(function(CodeMirror) {\n
var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n
(document.documentMode == null || document.documentMode < 8);\n
\n
var Pos = CodeMirror.Pos;\n
\n
var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"};\n
\n
function findMatchingBracket(cm, where, strict, config) {\n
var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n
var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];\n
if (!match) return null;\n
var dir = match.charAt(1) == ">" ? 1 : -1;\n
if (strict && (dir > 0) != (pos == where.ch)) return null;\n
var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n
\n
var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config);\n
if (found == null) return null;\n
return {from: Pos(where.line, pos), to: found && found.pos,\n
match: found && found.ch == match.charAt(0), forward: dir > 0};\n
}\n
\n
// bracketRegex is used to specify which type of bracket to scan\n
// should be a regexp, e.g. /[[\\]]/\n
//\n
// Note: If "where" is on an open bracket, then this bracket is ignored.\n
//\n
// Returns false when no bracket was found, null when it reached\n
// maxScanLines and gave up\n
function scanForBracket(cm, where, dir, style, config) {\n
var maxScanLen = (config && config.maxScanLineLength) || 10000;\n
var maxScanLines = (config && config.maxScanLines) || 1000;\n
\n
var stack = [];\n
var re = config && config.bracketRegex ? config.bracketRegex : /[(){}[\\]]/;\n
var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n
: Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n
for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n
var line = cm.getLine(lineNo);\n
if (!line) continue;\n
var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n
if (line.length > maxScanLen) continue;\n
if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n
for (; pos != end; pos += dir) {\n
var ch = line.charAt(pos);\n
if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {\n
var match = matching[ch];\n
if ((match.charAt(1) == ">") == (dir > 0)) stack.push(ch);\n
else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n
else stack.pop();\n
}\n
}\n
}\n
return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n
}\n
\n
function matchBrackets(cm, autoclear, config) {\n
// Disable brace matching in long lines, since it\'ll cause hugely slow updates\n
var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000;\n
var marks = [], ranges = cm.listSelections();\n
for (var i = 0; i < ranges.length; i++) {\n
var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, false, config);\n
if (match && cm.getLine(match.from.line).length <= maxHighlightLen) {\n
var style = match.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket";\n
marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n
if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n
marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n
}\n
}\n
\n
if (marks.length) {\n
// Kludge to work around the IE bug from issue #1193, where text\n
// input stops going to the textare whever this fires.\n
if (ie_lt8 && cm.state.focused) cm.focus();\n
\n
var clear = function() {\n
cm.operation(function() {\n
for (var i = 0; i < marks.length; i++) marks[i].clear();\n
});\n
};\n
if (autoclear) setTimeout(clear, 800);\n
else return clear;\n
}\n
}\n
\n
var currentlyHighlighted = null;\n
function doMatchBrackets(cm) {\n
cm.operation(function() {\n
if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}\n
currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n
});\n
}\n
\n
CodeMirror.defineOption("matchBrackets", false, function(cm, val, old) {\n
if (old && old != CodeMirror.Init)\n
cm.off("cursorActivity", doMatchBrackets);\n
if (val) {\n
cm.state.matchBrackets = typeof val == "object" ? val : {};\n
cm.on("cursorActivity", doMatchBrackets);\n
}\n
});\n
\n
CodeMirror.defineExtension("matchBrackets", function() {matchBrackets(this, true);});\n
CodeMirror.defineExtension("findMatchingBracket", function(pos, strict, config){\n
return findMatchingBracket(this, pos, strict, config);\n
});\n
CodeMirror.defineExtension("scanForBracket", function(pos, dir, style, config){\n
return scanForBracket(this, pos, dir, style, config);\n
});\n
});
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>CodeMirror Addon Edit MatchBracket</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>4.3.0</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<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>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>1406898405.59</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</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>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>948.28971.4139.30446</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>1453133744.32</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>romain</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>1405068770.4</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Script" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>codemirror_addon_searchcursor.js</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>codemirror_rjs_addon_searchcursor_js</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Script</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string encoding="cdata"><![CDATA[
// CodeMirror, copyright (c) by Marijn Haverbeke and others\n
// Distributed under an MIT license: http://codemirror.net/LICENSE\n
\n
(function(mod) {\n
if (typeof exports == "object" && typeof module == "object") // CommonJS\n
mod(require("../../lib/codemirror"));\n
else if (typeof define == "function" && define.amd) // AMD\n
define(["../../lib/codemirror"], mod);\n
else // Plain browser env\n
mod(CodeMirror);\n
})(function(CodeMirror) {\n
"use strict";\n
var Pos = CodeMirror.Pos;\n
\n
function SearchCursor(doc, query, pos, caseFold) {\n
this.atOccurrence = false; this.doc = doc;\n
if (caseFold == null && typeof query == "string") caseFold = false;\n
\n
pos = pos ? doc.clipPos(pos) : Pos(0, 0);\n
this.pos = {from: pos, to: pos};\n
\n
// The matches method is filled in based on the type of query.\n
// It takes a position and a direction, and returns an object\n
// describing the next occurrence of the query, or null if no\n
// more matches were found.\n
if (typeof query != "string") { // Regexp match\n
if (!query.global) query = new RegExp(query.source, query.ignoreCase ? "ig" : "g");\n
this.matches = function(reverse, pos) {\n
if (reverse) {\n
query.lastIndex = 0;\n
var line = doc.getLine(pos.line).slice(0, pos.ch), cutOff = 0, match, start;\n
for (;;) {\n
query.lastIndex = cutOff;\n
var newMatch = query.exec(line);\n
if (!newMatch) break;\n
match = newMatch;\n
start = match.index;\n
cutOff = match.index + (match[0].length || 1);\n
if (cutOff == line.length) break;\n
}\n
var matchLen = (match && match[0].length) || 0;\n
if (!matchLen) {\n
if (start == 0 && line.length == 0) {match = undefined;}\n
else if (start != doc.getLine(pos.line).length) {\n
matchLen++;\n
}\n
}\n
} else {\n
query.lastIndex = pos.ch;\n
var line = doc.getLine(pos.line), match = query.exec(line);\n
var matchLen = (match && match[0].length) || 0;\n
var start = match && match.index;\n
if (start + matchLen != line.length && !matchLen) matchLen = 1;\n
}\n
if (match && matchLen)\n
return {from: Pos(pos.line, start),\n
to: Pos(pos.line, start + matchLen),\n
match: match};\n
};\n
} else { // String query\n
var origQuery = query;\n
if (caseFold) query = query.toLowerCase();\n
var fold = caseFold ? function(str){return str.toLowerCase();} : function(str){return str;};\n
var target = query.split("\\n");\n
// Different methods for single-line and multi-line queries\n
if (target.length == 1) {\n
if (!query.length) {\n
// Empty string would match anything and never progress, so\n
// we define it to match nothing instead.\n
this.matches = function() {};\n
} else {\n
this.matches = function(reverse, pos) {\n
if (reverse) {\n
var orig = doc.getLine(pos.line).slice(0, pos.ch), line = fold(orig);\n
var match = line.lastIndexOf(query);\n
if (match > -1) {\n
match = adjustPos(orig, line, match);\n
return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)};\n
}\n
} else {\n
var orig = doc.getLine(pos.line).slice(pos.ch), line = fold(orig);\n
var match = line.indexOf(query);\n
if (match > -1) {\n
match = adjustPos(orig, line, match) + pos.ch;\n
return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)};\n
}\n
}\n
};\n
}\n
} else {\n
var origTarget = origQuery.split("\\n");\n
this.matches = function(reverse, pos) {\n
var last = target.length - 1;\n
if (reverse) {\n
if (pos.line - (target.length - 1) < doc.firstLine()) return;\n
if (fold(doc.getLine(pos.line).slice(0, origTarget[last].length)) != target[target.length - 1]) return;\n
var to = Pos(pos.line, origTarget[last].length);\n
for (var ln = pos.line - 1, i = last - 1; i >= 1; --i, --ln)\n
if (target[i] != fold(doc.getLine(ln))) return;\n
var line = doc.getLine(ln), cut = line.length - origTarget[0].length;\n
if (fold(line.slice(cut)) != target[0]) return;\n
return {from: Pos(ln, cut), to: to};\n
} else {\n
if (pos.line + (target.length - 1) > doc.lastLine()) return;\n
var line = doc.getLine(pos.line), cut = line.length - origTarget[0].length;\n
if (fold(line.slice(cut)) != target[0]) return;\n
var from = Pos(pos.line, cut);\n
for (var ln = pos.line + 1, i = 1; i < last; ++i, ++ln)\n
if (target[i] != fold(doc.getLine(ln))) return;\n
if (fold(doc.getLine(ln).slice(0, origTarget[last].length)) != target[last]) return;\n
return {from: from, to: Pos(ln, origTarget[last].length)};\n
}\n
};\n
}\n
}\n
}\n
\n
SearchCursor.prototype = {\n
findNext: function() {return this.find(false);},\n
findPrevious: function() {return this.find(true);},\n
\n
find: function(reverse) {\n
var self = this, pos = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n
function savePosAndFail(line) {\n
var pos = Pos(line, 0);\n
self.pos = {from: pos, to: pos};\n
self.atOccurrence = false;\n
return false;\n
}\n
\n
for (;;) {\n
if (this.pos = this.matches(reverse, pos)) {\n
this.atOccurrence = true;\n
return this.pos.match || true;\n
}\n
if (reverse) {\n
if (!pos.line) return savePosAndFail(0);\n
pos = Pos(pos.line-1, this.doc.getLine(pos.line-1).length);\n
}\n
else {\n
var maxLine = this.doc.lineCount();\n
if (pos.line == maxLine - 1) return savePosAndFail(maxLine);\n
pos = Pos(pos.line + 1, 0);\n
}\n
}\n
},\n
\n
from: function() {if (this.atOccurrence) return this.pos.from;},\n
to: function() {if (this.atOccurrence) return this.pos.to;},\n
\n
replace: function(newText, origin) {\n
if (!this.atOccurrence) return;\n
var lines = CodeMirror.splitLines(newText);\n
this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin);\n
this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n
lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0));\n
}\n
};\n
\n
// Maps a position in a case-folded line back to a position in the original line\n
// (compensating for codepoints increasing in number during folding)\n
function adjustPos(orig, folded, pos) {\n
if (orig.length == folded.length) return pos;\n
for (var pos1 = Math.min(pos, orig.length);;) {\n
var len1 = orig.slice(0, pos1).toLowerCase().length;\n
if (len1 < pos) ++pos1;\n
else if (len1 > pos) --pos1;\n
else return pos1;\n
}\n
}\n
\n
CodeMirror.defineExtension("getSearchCursor", function(query, pos, caseFold) {\n
return new SearchCursor(this.doc, query, pos, caseFold);\n
});\n
CodeMirror.defineDocExtension("getSearchCursor", function(query, pos, caseFold) {\n
return new SearchCursor(this, query, pos, caseFold);\n
});\n
\n
CodeMirror.defineExtension("selectMatches", function(query, caseFold) {\n
var ranges = [];\n
var cur = this.getSearchCursor(query, this.getCursor("from"), caseFold);\n
while (cur.findNext()) {\n
if (CodeMirror.cmpPos(cur.to(), this.getCursor("to")) > 0) break;\n
ranges.push({anchor: cur.from(), head: cur.to()});\n
}\n
if (ranges.length)\n
this.setSelections(ranges, 0);\n
});\n
});
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>CodeMirror Addon Search SearchCursor</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>4.3.0</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<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>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>1406898405.6</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</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>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>948.28970.29339.46830</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>1453133731.36</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>romain</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>1405068082.99</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Style" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>codemirror.css</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>codemirror_rjs_css</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Style</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string encoding="cdata"><![CDATA[
/* BASICS */\n
\n
.CodeMirror {\n
/* Set height, width, borders, and global font properties here */\n
font-family: monospace;\n
height: 300px;\n
color: black;\n
}\n
\n
/* PADDING */\n
\n
.CodeMirror-lines {\n
padding: 4px 0; /* Vertical padding around content */\n
}\n
.CodeMirror pre {\n
padding: 0 4px; /* Horizontal padding of content */\n
}\n
\n
.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n
background-color: white; /* The little square between H and V scrollbars */\n
}\n
\n
/* GUTTER */\n
\n
.CodeMirror-gutters {\n
border-right: 1px solid #ddd;\n
background-color: #f7f7f7;\n
white-space: nowrap;\n
}\n
.CodeMirror-linenumbers {}\n
.CodeMirror-linenumber {\n
padding: 0 3px 0 5px;\n
min-width: 20px;\n
text-align: right;\n
color: #999;\n
white-space: nowrap;\n
}\n
\n
.CodeMirror-guttermarker { color: black; }\n
.CodeMirror-guttermarker-subtle { color: #999; }\n
\n
/* CURSOR */\n
\n
.CodeMirror-cursor {\n
border-left: 1px solid black;\n
border-right: none;\n
width: 0;\n
}\n
/* Shown when moving in bi-directional text */\n
.CodeMirror div.CodeMirror-secondarycursor {\n
border-left: 1px solid silver;\n
}\n
.cm-fat-cursor .CodeMirror-cursor {\n
width: auto;\n
border: 0;\n
background: #7e7;\n
}\n
.cm-fat-cursor div.CodeMirror-cursors {\n
z-index: 1;\n
}\n
\n
.cm-animate-fat-cursor {\n
width: auto;\n
border: 0;\n
-webkit-animation: blink 1.06s steps(1) infinite;\n
-moz-animation: blink 1.06s steps(1) infinite;\n
animation: blink 1.06s steps(1) infinite;\n
background-color: #7e7;\n
}\n
@-moz-keyframes blink {\n
0% {}\n
50% { background-color: transparent; }\n
100% {}\n
}\n
@-webkit-keyframes blink {\n
0% {}\n
50% { background-color: transparent; }\n
100% {}\n
}\n
@keyframes blink {\n
0% {}\n
50% { background-color: transparent; }\n
100% {}\n
}\n
\n
/* Can style cursor different in overwrite (non-insert) mode */\n
.CodeMirror-overwrite .CodeMirror-cursor {}\n
\n
.cm-tab { display: inline-block; text-decoration: inherit; }\n
\n
.CodeMirror-ruler {\n
border-left: 1px solid #ccc;\n
position: absolute;\n
}\n
\n
/* DEFAULT THEME */\n
\n
.cm-s-default .cm-header {color: blue;}\n
.cm-s-default .cm-quote {color: #090;}\n
.cm-negative {color: #d44;}\n
.cm-positive {color: #292;}\n
.cm-header, .cm-strong {font-weight: bold;}\n
.cm-em {font-style: italic;}\n
.cm-link {text-decoration: underline;}\n
.cm-strikethrough {text-decoration: line-through;}\n
\n
.cm-s-default .cm-keyword {color: #708;}\n
.cm-s-default .cm-atom {color: #219;}\n
.cm-s-default .cm-number {color: #164;}\n
.cm-s-default .cm-def {color: #00f;}\n
.cm-s-default .cm-variable,\n
.cm-s-default .cm-punctuation,\n
.cm-s-default .cm-property,\n
.cm-s-default .cm-operator {}\n
.cm-s-default .cm-variable-2 {color: #05a;}\n
.cm-s-default .cm-variable-3 {color: #085;}\n
.cm-s-default .cm-comment {color: #a50;}\n
.cm-s-default .cm-string {color: #a11;}\n
.cm-s-default .cm-string-2 {color: #f50;}\n
.cm-s-default .cm-meta {color: #555;}\n
.cm-s-default .cm-qualifier {color: #555;}\n
.cm-s-default .cm-builtin {color: #30a;}\n
.cm-s-default .cm-bracket {color: #997;}\n
.cm-s-default .cm-tag {color: #170;}\n
.cm-s-default .cm-attribute {color: #00c;}\n
.cm-s-default .cm-hr {color: #999;}\n
.cm-s-default .cm-link {color: #00c;}\n
\n
.cm-s-default .cm-error {color: #f00;}\n
.cm-invalidchar {color: #f00;}\n
\n
.CodeMirror-composing { border-bottom: 2px solid; }\n
\n
/* Default styles for common addons */\n
\n
div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}\n
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}\n
.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }\n
.CodeMirror-activeline-background {background: #e8f2ff;}\n
\n
/* STOP */\n
\n
/* The rest of this file contains styles related to the mechanics of\n
the editor. You probably shouldn\'t touch them. */\n
\n
.CodeMirror {\n
position: relative;\n
overflow: hidden;\n
background: white;\n
}\n
\n
.CodeMirror-scroll {\n
overflow: scroll !important; /* Things will break if this is overridden */\n
/* 30px is the magic margin used to hide the element\'s real scrollbars */\n
/* See overflow: hidden in .CodeMirror */\n
margin-bottom: -30px; margin-right: -30px;\n
padding-bottom: 30px;\n
height: 100%;\n
outline: none; /* Prevent dragging from highlighting the element */\n
position: relative;\n
}\n
.CodeMirror-sizer {\n
position: relative;\n
border-right: 30px solid transparent;\n
}\n
\n
/* The fake, visible scrollbars. Used to force redraw during scrolling\n
before actual scrolling happens, thus preventing shaking and\n
flickering artifacts. */\n
.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n
position: absolute;\n
z-index: 6;\n
display: none;\n
}\n
.CodeMirror-vscrollbar {\n
right: 0; top: 0;\n
overflow-x: hidden;\n
overflow-y: scroll;\n
}\n
.CodeMirror-hscrollbar {\n
bottom: 0; left: 0;\n
overflow-y: hidden;\n
overflow-x: scroll;\n
}\n
.CodeMirror-scrollbar-filler {\n
right: 0; bottom: 0;\n
}\n
.CodeMirror-gutter-filler {\n
left: 0; bottom: 0;\n
}\n
\n
.CodeMirror-gutters {\n
position: absolute; left: 0; top: 0;\n
z-index: 3;\n
}\n
.CodeMirror-gutter {\n
white-space: normal;\n
height: 100%;\n
display: inline-block;\n
margin-bottom: -30px;\n
/* Hack to make IE7 behave */\n
*zoom:1;\n
*display:inline;\n
}\n
.CodeMirror-gutter-wrapper {\n
position: absolute;\n
z-index: 4;\n
background: none !important;\n
border: none !important;\n
}\n
.CodeMirror-gutter-background {\n
position: absolute;\n
top: 0; bottom: 0;\n
z-index: 4;\n
}\n
.CodeMirror-gutter-elt {\n
position: absolute;\n
cursor: default;\n
z-index: 4;\n
}\n
.CodeMirror-gutter-wrapper {\n
-webkit-user-select: none;\n
-moz-user-select: none;\n
user-select: none;\n
}\n
\n
.CodeMirror-lines {\n
cursor: text;\n
min-height: 1px; /* prevents collapsing before first draw */\n
}\n
.CodeMirror pre {\n
/* Reset some styles that the rest of the page might have set */\n
-moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;\n
border-width: 0;\n
background: transparent;\n
font-family: inherit;\n
font-size: inherit;\n
margin: 0;\n
white-space: pre;\n
word-wrap: normal;\n
line-height: inherit;\n
color: inherit;\n
z-index: 2;\n
position: relative;\n
overflow: visible;\n
-webkit-tap-highlight-color: transparent;\n
}\n
.CodeMirror-wrap pre {\n
word-wrap: break-word;\n
white-space: pre-wrap;\n
word-break: normal;\n
}\n
\n
.CodeMirror-linebackground {\n
position: absolute;\n
left: 0; right: 0; top: 0; bottom: 0;\n
z-index: 0;\n
}\n
\n
.CodeMirror-linewidget {\n
position: relative;\n
z-index: 2;\n
overflow: auto;\n
}\n
\n
.CodeMirror-widget {}\n
\n
.CodeMirror-code {\n
outline: none;\n
}\n
\n
/* Force content-box sizing for the elements where we expect it */\n
.CodeMirror-scroll,\n
.CodeMirror-sizer,\n
.CodeMirror-gutter,\n
.CodeMirror-gutters,\n
.CodeMirror-linenumber {\n
-moz-box-sizing: content-box;\n
box-sizing: content-box;\n
}\n
\n
.CodeMirror-measure {\n
position: absolute;\n
width: 100%;\n
height: 0;\n
overflow: hidden;\n
visibility: hidden;\n
}\n
\n
.CodeMirror-cursor { position: absolute; }\n
.CodeMirror-measure pre { position: static; }\n
\n
div.CodeMirror-cursors {\n
visibility: hidden;\n
position: relative;\n
z-index: 3;\n
}\n
div.CodeMirror-dragcursors {\n
visibility: visible;\n
}\n
\n
.CodeMirror-focused div.CodeMirror-cursors {\n
visibility: visible;\n
}\n
\n
.CodeMirror-selected { background: #d9d9d9; }\n
.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }\n
.CodeMirror-crosshair { cursor: crosshair; }\n
.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }\n
.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }\n
\n
.cm-searching {\n
background: #ffa;\n
background: rgba(255, 255, 0, .4);\n
}\n
\n
/* IE7 hack to prevent it from returning funny offsetTops on the spans */\n
.CodeMirror span { *vertical-align: text-bottom; }\n
\n
/* Used to force a border model for a node */\n
.cm-force-border { padding-right: .1px; }\n
\n
@media print {\n
/* Hide the cursor when printing */\n
.CodeMirror div.CodeMirror-cursors {\n
visibility: hidden;\n
}\n
}\n
\n
/* See issue #2901 */\n
.cm-tab-wrap-hack:after { content: \'\'; }\n
\n
/* Help users use markselection to safely style text background */\n
span.CodeMirror-selectedtext { background: none; }
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>CodeMirror CSS</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>4.3.0</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<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>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>1406898405.57</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</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>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>948.28966.63000.17</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>1453133412.95</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>romain</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>1405069222.86</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Style" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>gadget_codemirror.css</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>codemirror_rjs_gadget_css</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Style</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string>// .CodeMirror, .codemirror_gadget {\n
// FIXME: hardcoded value\n
// height: 50em;\n
// }\n
\n
.CodeMirror {\n
// border: 1px solid #eee;\n
height: 60em;\n
}\n
// .CodeMirror-scroll {\n
// overflow-y: hidden;\n
// overflow-x: auto;\n
// }</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Codemirror Gadget CSS</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>001</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<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>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>1406898405.98</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</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>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>948.36205.49312.836</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>1453133636.42</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>
<none/>
</value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>empty</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>1405081692.2</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Page" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>gadget_codemirror.html</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Codemirror with vim bindings</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>codemirror_rjs_gadget_html</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Page</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string encoding="cdata"><![CDATA[
<!DOCTYPE html>\n
<html>\n
<head>\n
<meta charset="utf-8">\n
<meta name="viewport" content="width=device-width, initial-scale=1">\n
<title>Codemirror with vim binding</title>\n
\n
<script src="rsvp.js" type="text/javascript"></script>\n
<script src="renderjs.js" type="text/javascript"></script>\n
\n
<link rel="stylesheet" href="codemirror.css">\n
<link rel="stylesheet" href="codemirror_theme_zenburn.css">\n
<link rel="stylesheet" href="gadget_codemirror.css">\n
<link rel="stylesheet" href="codemirror_addon_display_fullscreen.css">\n
<link rel="stylesheet" href="codemirror_addon_dialog.css">\n
\n
<script src="codemirror.js"></script>\n
<script src="codemirror_addon_searchcursor.js"></script>\n
<script src="codemirror_mode_javascript.js"></script>\n
<script src="codemirror_addon_edit_matchbrackets.js"></script>\n
<script src="codemirror_keymap_vim.js"></script>\n
<script src="codemirror_addon_display_fullscreen.js"></script>\n
<script src="codemirror_addon_dialog.js"></script>\n
<script src="gadget_codemirror.js" type="text/javascript"></script>\n
\n
</head>\n
<body>\n
\n
<div class="codemirror_gadget"><textarea name="code"></textarea></div>\n
\n
</body>\n
</html>\n
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Codemirror Gadget</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>001</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<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>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>1406898405.63</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</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>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>948.27247.18522.58589</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>1453133547.21</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>romain</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>1405066305.97</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Script" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>gadget_codemirror.js</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>codemirror_rjs_gadget_js</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Script</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string>/*jslint nomen: true, indent: 2, maxerr: 3 */\n
/*global window, rJS, CodeMirror */\n
(function (window, rJS, CodeMirror) {\n
"use strict";\n
\n
rJS(window)\n
.declareAcquiredMethod(\'submitData\', \'triggerSubmit\')\n
\n
.ready(function (g) {\n
g.props = {};\n
g.options = null;\n
\n
return g.getElement()\n
.push(function (element) {\n
g.props.element = element;\n
g.editor = CodeMirror.fromTextArea(\n
element.querySelector(\'textarea\'),\n
{\n
lineNumbers: true,\n
theme: \'zenburn\',\n
keyMap: \'vim\',\n
matchBrackets: true,\n
showCursorWhenSelecting: true,\n
autofocus: false\n
}\n
);\n
});\n
})\n
.declareMethod(\'render\', function (options) {\n
var gadget = this;\n
gadget.editor.setValue(options.data || "");\n
CodeMirror.commands.save = function () {\n
gadget.submitData();\n
};\n
})\n
.declareMethod(\'getData\', function () {\n
return this.editor.getValue();\n
})\n
.declareService(function () {\n
this.editor.refresh();\n
this.editor.focus();\n
});\n
}(window, rJS, CodeMirror));</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Codemirror Gadget JS</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>001</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<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>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>1406898405.62</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</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>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>948.29057.44332.28194</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>1453133523.32</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>
<none/>
</value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>empty</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>1405066689.0</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Script" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>codemirror_mode_clike.js</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>codemirror_rjs_mode_clike_js</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Script</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string encoding="cdata"><![CDATA[
// CodeMirror, copyright (c) by Marijn Haverbeke and others\n
// Distributed under an MIT license: http://codemirror.net/LICENSE\n
\n
(function(mod) {\n
if (typeof exports == "object" && typeof module == "object") // CommonJS\n
mod(require("../../lib/codemirror"));\n
else if (typeof define == "function" && define.amd) // AMD\n
define(["../../lib/codemirror"], mod);\n
else // Plain browser env\n
mod(CodeMirror);\n
})(function(CodeMirror) {\n
"use strict";\n
\n
CodeMirror.defineMode("clike", function(config, parserConfig) {\n
var indentUnit = config.indentUnit,\n
statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,\n
dontAlignCalls = parserConfig.dontAlignCalls,\n
keywords = parserConfig.keywords || {},\n
types = parserConfig.types || {},\n
builtin = parserConfig.builtin || {},\n
blockKeywords = parserConfig.blockKeywords || {},\n
defKeywords = parserConfig.defKeywords || {},\n
atoms = parserConfig.atoms || {},\n
hooks = parserConfig.hooks || {},\n
multiLineStrings = parserConfig.multiLineStrings,\n
indentStatements = parserConfig.indentStatements !== false,\n
indentSwitch = parserConfig.indentSwitch !== false,\n
namespaceSeparator = parserConfig.namespaceSeparator,\n
isPunctuationChar = parserConfig.isPunctuationChar || /[\\[\\]{}\\(\\),;\\:\\.]/,\n
numberStart = parserConfig.numberStart || /[\\d\\.]/,\n
number = parserConfig.number || /^(?:0x[a-f\\d]+|0b[01]+|(?:\\d+\\.?\\d*|\\.\\d+)(?:e[-+]?\\d+)?)(u|ll?|l|f)?/i,\n
isOperatorChar = parserConfig.isOperatorChar || /[+\\-*&%=<>!?|\\/]/,\n
endStatement = parserConfig.endStatement || /^[;:,]$/;\n
\n
var curPunc, isDefKeyword;\n
\n
function tokenBase(stream, state) {\n
var ch = stream.next();\n
if (hooks[ch]) {\n
var result = hooks[ch](stream, state);\n
if (result !== false) return result;\n
}\n
if (ch == \'"\' || ch == "\'") {\n
state.tokenize = tokenString(ch);\n
return state.tokenize(stream, state);\n
}\n
if (isPunctuationChar.test(ch)) {\n
curPunc = ch;\n
return null;\n
}\n
if (numberStart.test(ch)) {\n
stream.backUp(1)\n
if (stream.match(number)) return "number"\n
stream.next()\n
}\n
if (ch == "/") {\n
if (stream.eat("*")) {\n
state.tokenize = tokenComment;\n
return tokenComment(stream, state);\n
}\n
if (stream.eat("/")) {\n
stream.skipToEnd();\n
return "comment";\n
}\n
}\n
if (isOperatorChar.test(ch)) {\n
stream.eatWhile(isOperatorChar);\n
return "operator";\n
}\n
stream.eatWhile(/[\\w\\$_\\xa1-\\uffff]/);\n
if (namespaceSeparator) while (stream.match(namespaceSeparator))\n
stream.eatWhile(/[\\w\\$_\\xa1-\\uffff]/);\n
\n
var cur = stream.current();\n
if (contains(keywords, cur)) {\n
if (contains(blockKeywords, cur)) curPunc = "newstatement";\n
if (contains(defKeywords, cur)) isDefKeyword = true;\n
return "keyword";\n
}\n
if (contains(types, cur)) return "variable-3";\n
if (contains(builtin, cur)) {\n
if (contains(blockKeywords, cur)) curPunc = "newstatement";\n
return "builtin";\n
}\n
if (contains(atoms, cur)) return "atom";\n
return "variable";\n
}\n
\n
function tokenString(quote) {\n
return function(stream, state) {\n
var escaped = false, next, end = false;\n
while ((next = stream.next()) != null) {\n
if (next == quote && !escaped) {end = true; break;}\n
escaped = !escaped && next == "\\\\";\n
}\n
if (end || !(escaped || multiLineStrings))\n
state.tokenize = null;\n
return "string";\n
};\n
}\n
\n
function tokenComment(stream, state) {\n
var maybeEnd = false, ch;\n
while (ch = stream.next()) {\n
if (ch == "/" && maybeEnd) {\n
state.tokenize = null;\n
break;\n
}\n
maybeEnd = (ch == "*");\n
}\n
return "comment";\n
}\n
\n
function Context(indented, column, type, align, prev) {\n
this.indented = indented;\n
this.column = column;\n
this.type = type;\n
this.align = align;\n
this.prev = prev;\n
}\n
function isStatement(type) {\n
return type == "statement" || type == "switchstatement" || type == "namespace";\n
}\n
function pushContext(state, col, type) {\n
var indent = state.indented;\n
if (state.context && isStatement(state.context.type) && !isStatement(type))\n
indent = state.context.indented;\n
return state.context = new Context(indent, col, type, null, state.context);\n
}\n
function popContext(state) {\n
var t = state.context.type;\n
if (t == ")" || t == "]" || t == "}")\n
state.indented = state.context.indented;\n
return state.context = state.context.prev;\n
}\n
\n
function typeBefore(stream, state) {\n
if (state.prevToken == "variable" || state.prevToken == "variable-3") return true;\n
if (/\\S(?:[^- ]>|[*\\]])\\s*$|\\*$/.test(stream.string.slice(0, stream.start))) return true;\n
}\n
\n
function isTopScope(context) {\n
for (;;) {\n
if (!context || context.type == "top") return true;\n
if (context.type == "}" && context.prev.type != "namespace") return false;\n
context = context.prev;\n
}\n
}\n
\n
// Interface\n
\n
return {\n
startState: function(basecolumn) {\n
return {\n
tokenize: null,\n
context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),\n
indented: 0,\n
startOfLine: true,\n
prevToken: null\n
};\n
},\n
\n
token: function(stream, state) {\n
var ctx = state.context;\n
if (stream.sol()) {\n
if (ctx.align == null) ctx.align = false;\n
state.indented = stream.indentation();\n
state.startOfLine = true;\n
}\n
if (stream.eatSpace()) return null;\n
curPunc = isDefKeyword = null;\n
var style = (state.tokenize || tokenBase)(stream, state);\n
if (style == "comment" || style == "meta") return style;\n
if (ctx.align == null) ctx.align = true;\n
\n
if (endStatement.test(curPunc)) while (isStatement(state.context.type)) popContext(state);\n
else if (curPunc == "{") pushContext(state, stream.column(), "}");\n
else if (curPunc == "[") pushContext(state, stream.column(), "]");\n
else if (curPunc == "(") pushContext(state, stream.column(), ")");\n
else if (curPunc == "}") {\n
while (isStatement(ctx.type)) ctx = popContext(state);\n
if (ctx.type == "}") ctx = popContext(state);\n
while (isStatement(ctx.type)) ctx = popContext(state);\n
}\n
else if (curPunc == ctx.type) popContext(state);\n
else if (indentStatements &&\n
(((ctx.type == "}" || ctx.type == "top") && curPunc != ";") ||\n
(isStatement(ctx.type) && curPunc == "newstatement"))) {\n
var type = "statement";\n
if (curPunc == "newstatement" && indentSwitch && stream.current() == "switch")\n
type = "switchstatement";\n
else if (style == "keyword" && stream.current() == "namespace")\n
type = "namespace";\n
pushContext(state, stream.column(), type);\n
}\n
\n
if (style == "variable" &&\n
((state.prevToken == "def" ||\n
(parserConfig.typeFirstDefinitions && typeBefore(stream, state) &&\n
isTopScope(state.context) && stream.match(/^\\s*\\(/, false)))))\n
style = "def";\n
\n
if (hooks.token) {\n
var result = hooks.token(stream, state, style);\n
if (result !== undefined) style = result;\n
}\n
\n
if (style == "def" && parserConfig.styleDefs === false) style = "variable";\n
\n
state.startOfLine = false;\n
state.prevToken = isDefKeyword ? "def" : style || curPunc;\n
return style;\n
},\n
\n
indent: function(state, textAfter) {\n
if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass;\n
var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);\n
if (isStatement(ctx.type) && firstChar == "}") ctx = ctx.prev;\n
if (hooks.indent) {\n
var hook = hooks.indent(state, ctx, textAfter);\n
if (typeof hook == "number") return hook\n
}\n
var closing = firstChar == ctx.type;\n
var switchBlock = ctx.prev && ctx.prev.type == "switchstatement";\n
if (parserConfig.allmanIndentation && /[{(]/.test(firstChar)) {\n
while (ctx.type != "top" && ctx.type != "}") ctx = ctx.prev\n
return ctx.indented\n
}\n
if (isStatement(ctx.type))\n
return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit);\n
if (ctx.align && (!dontAlignCalls || ctx.type != ")"))\n
return ctx.column + (closing ? 0 : 1);\n
if (ctx.type == ")" && !closing)\n
return ctx.indented + statementIndentUnit;\n
\n
return ctx.indented + (closing ? 0 : indentUnit) +\n
(!closing && switchBlock && !/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 0);\n
},\n
\n
electricInput: indentSwitch ? /^\\s*(?:case .*?:|default:|\\{\\}?|\\})$/ : /^\\s*[{}]$/,\n
blockCommentStart: "/*",\n
blockCommentEnd: "*/",\n
lineComment: "//",\n
fold: "brace"\n
};\n
});\n
\n
function words(str) {\n
var obj = {}, words = str.split(" ");\n
for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n
return obj;\n
}\n
function contains(words, word) {\n
if (typeof words === "function") {\n
return words(word);\n
} else {\n
return words.propertyIsEnumerable(word);\n
}\n
}\n
var cKeywords = "auto if break case register continue return default do sizeof " +\n
"static else struct switch extern typedef union for goto while enum const volatile";\n
var cTypes = "int long char short double float unsigned signed void size_t ptrdiff_t";\n
\n
function cppHook(stream, state) {\n
if (!state.startOfLine) return false\n
for (var ch, next = null; ch = stream.peek();) {\n
if (!ch) {\n
break\n
} else if (ch == "\\\\" && stream.match(/^.$/)) {\n
next = cppHook\n
break\n
} else if (ch == "/" && stream.match(/^\\/[\\/\\*]/, false)) {\n
break\n
}\n
stream.next()\n
}\n
state.tokenize = next\n
return "meta"\n
}\n
\n
function pointerHook(_stream, state) {\n
if (state.prevToken == "variable-3") return "variable-3";\n
return false;\n
}\n
\n
function cpp14Literal(stream) {\n
stream.eatWhile(/[\\w\\.\']/);\n
return "number";\n
}\n
\n
function cpp11StringHook(stream, state) {\n
stream.backUp(1);\n
// Raw strings.\n
if (stream.match(/(R|u8R|uR|UR|LR)/)) {\n
var match = stream.match(/"([^\\s\\\\()]{0,16})\\(/);\n
if (!match) {\n
return false;\n
}\n
state.cpp11RawStringDelim = match[1];\n
state.tokenize = tokenRawString;\n
return tokenRawString(stream, state);\n
}\n
// Unicode strings/chars.\n
if (stream.match(/(u8|u|U|L)/)) {\n
if (stream.match(/["\']/, /* eat */ false)) {\n
return "string";\n
}\n
return false;\n
}\n
// Ignore this hook.\n
stream.next();\n
return false;\n
}\n
\n
function cppLooksLikeConstructor(word) {\n
var lastTwo = /(\\w+)::(\\w+)$/.exec(word);\n
return lastTwo && lastTwo[1] == lastTwo[2];\n
}\n
\n
// C#-style strings where "" escapes a quote.\n
function tokenAtString(stream, state) {\n
var next;\n
while ((next = stream.next()) != null) {\n
if (next == \'"\' && !stream.eat(\'"\')) {\n
state.tokenize = null;\n
break;\n
}\n
}\n
return "string";\n
}\n
\n
// C++11 raw string literal is <prefix>"<delim>( anything )<delim>", where\n
// <delim> can be a string up to 16 characters long.\n
function tokenRawString(stream, state) {\n
// Escape characters that have special regex meanings.\n
var delim = state.cpp11RawStringDelim.replace(/[^\\w\\s]/g, \'\\\\$&\');\n
var match = stream.match(new RegExp(".*?\\\\)" + delim + \'"\'));\n
if (match)\n
state.tokenize = null;\n
else\n
stream.skipToEnd();\n
return "string";\n
}\n
\n
function def(mimes, mode) {\n
if (typeof mimes == "string") mimes = [mimes];\n
var words = [];\n
function add(obj) {\n
if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop))\n
words.push(prop);\n
}\n
add(mode.keywords);\n
add(mode.types);\n
add(mode.builtin);\n
add(mode.atoms);\n
if (words.length) {\n
mode.helperType = mimes[0];\n
CodeMirror.registerHelper("hintWords", mimes[0], words);\n
}\n
\n
for (var i = 0; i < mimes.length; ++i)\n
CodeMirror.defineMIME(mimes[i], mode);\n
}\n
\n
def(["text/x-csrc", "text/x-c", "text/x-chdr"], {\n
name: "clike",\n
keywords: words(cKeywords),\n
types: words(cTypes + " bool _Complex _Bool float_t double_t intptr_t intmax_t " +\n
"int8_t int16_t int32_t int64_t uintptr_t uintmax_t uint8_t uint16_t " +\n
"uint32_t uint64_t"),\n
blockKeywords: words("case do else for if switch while struct"),\n
defKeywords: words("struct"),\n
typeFirstDefinitions: true,\n
atoms: words("null true false"),\n
hooks: {"#": cppHook, "*": pointerHook},\n
modeProps: {fold: ["brace", "include"]}\n
});\n
\n
def(["text/x-c++src", "text/x-c++hdr"], {\n
name: "clike",\n
keywords: words(cKeywords + " asm dynamic_cast namespace reinterpret_cast try explicit new " +\n
"static_cast typeid catch operator template typename class friend private " +\n
"this using const_cast inline public throw virtual delete mutable protected " +\n
"alignas alignof constexpr decltype nullptr noexcept thread_local final " +\n
"static_assert override"),\n
types: words(cTypes + " bool wchar_t"),\n
blockKeywords: words("catch class do else finally for if struct switch try while"),\n
defKeywords: words("class namespace struct enum union"),\n
typeFirstDefinitions: true,\n
atoms: words("true false null"),\n
hooks: {\n
"#": cppHook,\n
"*": pointerHook,\n
"u": cpp11StringHook,\n
"U": cpp11StringHook,\n
"L": cpp11StringHook,\n
"R": cpp11StringHook,\n
"0": cpp14Literal,\n
"1": cpp14Literal,\n
"2": cpp14Literal,\n
"3": cpp14Literal,\n
"4": cpp14Literal,\n
"5": cpp14Literal,\n
"6": cpp14Literal,\n
"7": cpp14Literal,\n
"8": cpp14Literal,\n
"9": cpp14Literal,\n
token: function(stream, state, style) {\n
if (style == "variable" && stream.peek() == "(" &&\n
(state.prevToken == ";" || state.prevToken == null ||\n
state.prevToken == "}") &&\n
cppLooksLikeConstructor(stream.current()))\n
return "def";\n
}\n
},\n
namespaceSeparator: "::",\n
modeProps: {fold: ["brace", "include"]}\n
});\n
\n
def("text/x-java", {\n
name: "clike",\n
keywords: words("abstract assert break case catch class const continue default " +\n
"do else enum extends final finally float for goto if implements import " +\n
"instanceof interface native new package private protected public " +\n
"return static strictfp super switch synchronized this throw throws transient " +\n
"try volatile while"),\n
types: words("byte short int long float double boolean char void Boolean Byte Character Double Float " +\n
"Integer Long Number Object Short String StringBuffer StringBuilder Void"),\n
blockKeywords: words("catch class do else finally for if switch try while"),\n
defKeywords: words("class interface package enum"),\n
typeFirstDefinitions: true,\n
atoms: words("true false null"),\n
endStatement: /^[;:]$/,\n
hooks: {\n
"@": function(stream) {\n
stream.eatWhile(/[\\w\\$_]/);\n
return "meta";\n
}\n
},\n
modeProps: {fold: ["brace", "import"]}\n
});\n
\n
def("text/x-csharp", {\n
name: "clike",\n
keywords: words("abstract as async await base break case catch checked class const continue" +\n
" default delegate do else enum event explicit extern finally fixed for" +\n
" foreach goto if implicit in interface internal is lock namespace new" +\n
" operator out override params private protected public readonly ref return sealed" +\n
" sizeof stackalloc static struct switch this throw try typeof unchecked" +\n
" unsafe using virtual void volatile while add alias ascending descending dynamic from get" +\n
" global group into join let orderby partial remove select set value var yield"),\n
types: words("Action Boolean Byte Char DateTime DateTimeOffset Decimal Double Func" +\n
" Guid Int16 Int32 Int64 Object SByte Single String Task TimeSpan UInt16 UInt32" +\n
" UInt64 bool byte char decimal double short int long object" +\n
" sbyte float string ushort uint ulong"),\n
blockKeywords: words("catch class do else finally for foreach if struct switch try while"),\n
defKeywords: words("class interface namespace struct var"),\n
typeFirstDefinitions: true,\n
atoms: words("true false null"),\n
hooks: {\n
"@": function(stream, state) {\n
if (stream.eat(\'"\')) {\n
state.tokenize = tokenAtString;\n
return tokenAtString(stream, state);\n
}\n
stream.eatWhile(/[\\w\\$_]/);\n
return "meta";\n
}\n
}\n
});\n
\n
function tokenTripleString(stream, state) {\n
var escaped = false;\n
while (!stream.eol()) {\n
if (!escaped && stream.match(\'"""\')) {\n
state.tokenize = null;\n
break;\n
}\n
escaped = stream.next() == "\\\\" && !escaped;\n
}\n
return "string";\n
}\n
\n
def("text/x-scala", {\n
name: "clike",\n
keywords: words(\n
\n
/* scala */\n
"abstract case catch class def do else extends final finally for forSome if " +\n
"implicit import lazy match new null object override package private protected return " +\n
"sealed super this throw trait try type val var while with yield _ : = => <- <: " +\n
"<% >: # @ " +\n
\n
/* package scala */\n
"assert assume require print println printf readLine readBoolean readByte readShort " +\n
"readChar readInt readLong readFloat readDouble " +\n
\n
":: #:: "\n
),\n
types: words(\n
"AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either " +\n
"Enumeration Equiv Error Exception Fractional Function IndexedSeq Integral Iterable " +\n
"Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering " +\n
"Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder " +\n
"StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector " +\n
\n
/* package java.lang */\n
"Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " +\n
"Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " +\n
"Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " +\n
"StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"\n
),\n
multiLineStrings: true,\n
blockKeywords: words("catch class do else finally for forSome if match switch try while"),\n
defKeywords: words("class def object package trait type val var"),\n
atoms: words("true false null"),\n
indentStatements: false,\n
indentSwitch: false,\n
hooks: {\n
"@": function(stream) {\n
stream.eatWhile(/[\\w\\$_]/);\n
return "meta";\n
},\n
\'"\': function(stream, state) {\n
if (!stream.match(\'""\')) return false;\n
state.tokenize = tokenTripleString;\n
return state.tokenize(stream, state);\n
},\n
"\'": function(stream) {\n
stream.eatWhile(/[\\w\\$_\\xa1-\\uffff]/);\n
return "atom";\n
}\n
},\n
modeProps: {closeBrackets: {triples: \'"\'}}\n
});\n
\n
function tokenKotlinString(tripleString){\n
return function (stream, state) {\n
var escaped = false, next, end = false;\n
while (!stream.eol()) {\n
if (!tripleString && !escaped && stream.match(\'"\') ) {end = true; break;}\n
if (tripleString && stream.match(\'"""\')) {end = true; break;}\n
next = stream.next();\n
if(!escaped && next == "$" && stream.match(\'{\'))\n
stream.skipTo("}");\n
escaped = !escaped && next == "\\\\" && !tripleString;\n
}\n
if (end || !tripleString)\n
state.tokenize = null;\n
return "string";\n
}\n
}\n
\n
def("text/x-kotlin", {\n
name: "clike",\n
keywords: words(\n
/*keywords*/\n
"package as typealias class interface this super val " +\n
"var fun for is in This throw return " +\n
"break continue object if else while do try when !in !is as? " +\n
\n
/*soft keywords*/\n
"file import where by get set abstract enum open inner override private public internal " +\n
"protected catch finally out final vararg reified dynamic companion constructor init " +\n
"sealed field property receiver param sparam lateinit data inline noinline tailrec " +\n
"external annotation crossinline const operator infix"\n
),\n
types: words(\n
/* package java.lang */\n
"Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " +\n
"Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " +\n
"Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " +\n
"StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"\n
),\n
intendSwitch: false,\n
indentStatements: false,\n
multiLineStrings: true,\n
blockKeywords: words("catch class do else finally for if where try while enum"),\n
defKeywords: words("class val var object package interface fun"),\n
atoms: words("true false null this"),\n
hooks: {\n
\'"\': function(stream, state) {\n
state.tokenize = tokenKotlinString(stream.match(\'""\'));\n
return state.tokenize(stream, state);\n
}\n
},\n
modeProps: {closeBrackets: {triples: \'"\'}}\n
});\n
\n
def(["x-shader/x-vertex", "x-shader/x-fragment"], {\n
name: "clike",\n
keywords: words("sampler1D sampler2D sampler3D samplerCube " +\n
"sampler1DShadow sampler2DShadow " +\n
"const attribute uniform varying " +\n
"break continue discard return " +\n
"for while do if else struct " +\n
"in out inout"),\n
types: words("float int bool void " +\n
"vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 " +\n
"mat2 mat3 mat4"),\n
blockKeywords: words("for while do if else struct"),\n
builtin: words("radians degrees sin cos tan asin acos atan " +\n
"pow exp log exp2 sqrt inversesqrt " +\n
"abs sign floor ceil fract mod min max clamp mix step smoothstep " +\n
"length distance dot cross normalize ftransform faceforward " +\n
"reflect refract matrixCompMult " +\n
"lessThan lessThanEqual greaterThan greaterThanEqual " +\n
"equal notEqual any all not " +\n
"texture1D texture1DProj texture1DLod texture1DProjLod " +\n
"texture2D texture2DProj texture2DLod texture2DProjLod " +\n
"texture3D texture3DProj texture3DLod texture3DProjLod " +\n
"textureCube textureCubeLod " +\n
"shadow1D shadow2D shadow1DProj shadow2DProj " +\n
"shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod " +\n
"dFdx dFdy fwidth " +\n
"noise1 noise2 noise3 noise4"),\n
atoms: words("true false " +\n
"gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex " +\n
"gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 " +\n
"gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 " +\n
"gl_FogCoord gl_PointCoord " +\n
"gl_Position gl_PointSize gl_ClipVertex " +\n
"gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor " +\n
"gl_TexCoord gl_FogFragCoord " +\n
"gl_FragCoord gl_FrontFacing " +\n
"gl_FragData gl_FragDepth " +\n
"gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix " +\n
"gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse " +\n
"gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse " +\n
"gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose " +\n
"gl_ProjectionMatrixInverseTranspose " +\n
"gl_ModelViewProjectionMatrixInverseTranspose " +\n
"gl_TextureMatrixInverseTranspose " +\n
"gl_NormalScale gl_DepthRange gl_ClipPlane " +\n
"gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel " +\n
"gl_FrontLightModelProduct gl_BackLightModelProduct " +\n
"gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ " +\n
"gl_FogParameters " +\n
"gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords " +\n
"gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats " +\n
"gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits " +\n
"gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits " +\n
"gl_MaxDrawBuffers"),\n
indentSwitch: false,\n
hooks: {"#": cppHook},\n
modeProps: {fold: ["brace", "include"]}\n
});\n
\n
def("text/x-nesc", {\n
name: "clike",\n
keywords: words(cKeywords + "as atomic async call command component components configuration event generic " +\n
"implementation includes interface module new norace nx_struct nx_union post provides " +\n
"signal task uses abstract extends"),\n
types: words(cTypes),\n
blockKeywords: words("case do else for if switch while struct"),\n
atoms: words("null true false"),\n
hooks: {"#": cppHook},\n
modeProps: {fold: ["brace", "include"]}\n
});\n
\n
def("text/x-objectivec", {\n
name: "clike",\n
keywords: words(cKeywords + "inline restrict _Bool _Complex _Imaginery BOOL Class bycopy byref id IMP in " +\n
"inout nil oneway out Protocol SEL self super atomic nonatomic retain copy readwrite readonly"),\n
types: words(cTypes),\n
atoms: words("YES NO NULL NILL ON OFF true false"),\n
hooks: {\n
"@": function(stream) {\n
stream.eatWhile(/[\\w\\$]/);\n
return "keyword";\n
},\n
"#": cppHook,\n
indent: function(_state, ctx, textAfter) {\n
if (ctx.type == "statement" && /^@\\w/.test(textAfter)) return ctx.indented\n
}\n
},\n
modeProps: {fold: "brace"}\n
});\n
\n
def("text/x-squirrel", {\n
name: "clike",\n
keywords: words("base break clone continue const default delete enum extends function in class" +\n
" foreach local resume return this throw typeof yield constructor instanceof static"),\n
types: words(cTypes),\n
blockKeywords: words("case catch class else for foreach if switch try while"),\n
defKeywords: words("function local class"),\n
typeFirstDefinitions: true,\n
atoms: words("true false null"),\n
hooks: {"#": cppHook},\n
modeProps: {fold: ["brace", "include"]}\n
});\n
\n
// Ceylon Strings need to deal with interpolation\n
var stringTokenizer = null;\n
function tokenCeylonString(type) {\n
return function(stream, state) {\n
var escaped = false, next, end = false;\n
while (!stream.eol()) {\n
if (!escaped && stream.match(\'"\') &&\n
(type == "single" || stream.match(\'""\'))) {\n
end = true;\n
break;\n
}\n
if (!escaped && stream.match(\'``\')) {\n
stringTokenizer = tokenCeylonString(type);\n
end = true;\n
break;\n
}\n
next = stream.next();\n
escaped = type == "single" && !escaped && next == "\\\\";\n
}\n
if (end)\n
state.tokenize = null;\n
return "string";\n
}\n
}\n
\n
def("text/x-ceylon", {\n
name: "clike",\n
keywords: words("abstracts alias assembly assert assign break case catch class continue dynamic else" +\n
" exists extends finally for function given if import in interface is let module new" +\n
" nonempty object of out outer package return satisfies super switch then this throw" +\n
" try value void while"),\n
types: function(word) {\n
// In Ceylon all identifiers that start with an uppercase are types\n
var first = word.charAt(0);\n
return (first === first.toUpperCase() && first !== first.toLowerCase());\n
},\n
blockKeywords: words("case catch class dynamic else finally for function if interface module new object switch try while"),\n
defKeywords: words("class dynamic function interface module object package value"),\n
builtin: words("abstract actual aliased annotation by default deprecated doc final formal late license" +\n
" native optional sealed see serializable shared suppressWarnings tagged throws variable"),\n
isPunctuationChar: /[\\[\\]{}\\(\\),;\\:\\.`]/,\n
isOperatorChar: /[+\\-*&%=<>!?|^~:\\/]/,\n
numberStart: /[\\d#$]/,\n
number: /^(?:#[\\da-fA-F_]+|\\$[01_]+|[\\d_]+[kMGTPmunpf]?|[\\d_]+\\.[\\d_]+(?:[eE][-+]?\\d+|[kMGTPmunpf]|)|)/i,\n
multiLineStrings: true,\n
typeFirstDefinitions: true,\n
atoms: words("true false null larger smaller equal empty finished"),\n
indentSwitch: false,\n
styleDefs: false,\n
hooks: {\n
"@": function(stream) {\n
stream.eatWhile(/[\\w\\$_]/);\n
return "meta";\n
},\n
\'"\': function(stream, state) {\n
state.tokenize = tokenCeylonString(stream.match(\'""\') ? "triple" : "single");\n
return state.tokenize(stream, state);\n
},\n
\'`\': function(stream, state) {\n
if (!stringTokenizer || !stream.match(\'`\')) return false;\n
state.tokenize = stringTokenizer;\n
stringTokenizer = null;\n
return state.tokenize(stream, state);\n
},\n
"\'": function(stream) {\n
stream.eatWhile(/[\\w\\$_\\xa1-\\uffff]/);\n
return "atom";\n
},\n
token: function(_stream, state, style) {\n
if ((style == "variable" || style == "variable-3") &&\n
state.prevToken == ".") {\n
return "variable-2";\n
}\n
}\n
},\n
modeProps: {\n
fold: ["brace", "import"],\n
closeBrackets: {triples: \'"\'}\n
}\n
});\n
\n
});
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>CodeMirror Mode CLike</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>4.3.0</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<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>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>1406898405.73</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</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>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>948.28969.17299.54579</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>1453133683.21</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>romain</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>1405068613.53</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Script" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>codemirror_mode_javascript.js</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>codemirror_rjs_mode_javascript_js</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Script</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string encoding="cdata"><![CDATA[
// CodeMirror, copyright (c) by Marijn Haverbeke and others\n
// Distributed under an MIT license: http://codemirror.net/LICENSE\n
\n
// TODO actually recognize syntax of TypeScript constructs\n
\n
(function(mod) {\n
if (typeof exports == "object" && typeof module == "object") // CommonJS\n
mod(require("../../lib/codemirror"));\n
else if (typeof define == "function" && define.amd) // AMD\n
define(["../../lib/codemirror"], mod);\n
else // Plain browser env\n
mod(CodeMirror);\n
})(function(CodeMirror) {\n
"use strict";\n
\n
CodeMirror.defineMode("javascript", function(config, parserConfig) {\n
var indentUnit = config.indentUnit;\n
var statementIndent = parserConfig.statementIndent;\n
var jsonldMode = parserConfig.jsonld;\n
var jsonMode = parserConfig.json || jsonldMode;\n
var isTS = parserConfig.typescript;\n
var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n
\n
// Tokenizer\n
\n
var keywords = function(){\n
function kw(type) {return {type: type, style: "keyword"};}\n
var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c");\n
var operator = kw("operator"), atom = {type: "atom", style: "atom"};\n
\n
var jsKeywords = {\n
"if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B,\n
"return": C, "break": C, "continue": C, "new": kw("new"), "delete": C, "throw": C, "debugger": C,\n
"var": kw("var"), "const": kw("var"), "let": kw("var"),\n
"function": kw("function"), "catch": kw("catch"),\n
"for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"),\n
"in": operator, "typeof": operator, "instanceof": operator,\n
"true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom,\n
"this": kw("this"), "class": kw("class"), "super": kw("atom"),\n
"yield": C, "export": kw("export"), "import": kw("import"), "extends": C\n
};\n
\n
// Extend the \'normal\' keywords with the TypeScript language extensions\n
if (isTS) {\n
var type = {type: "variable", style: "variable-3"};\n
var tsKeywords = {\n
// object-like things\n
"interface": kw("class"),\n
"implements": C,\n
"namespace": C,\n
"module": kw("module"),\n
"enum": kw("module"),\n
\n
// scope modifiers\n
"public": kw("modifier"),\n
"private": kw("modifier"),\n
"protected": kw("modifier"),\n
"abstract": kw("modifier"),\n
\n
// operators\n
"as": operator,\n
\n
// types\n
"string": type, "number": type, "boolean": type, "any": type\n
};\n
\n
for (var attr in tsKeywords) {\n
jsKeywords[attr] = tsKeywords[attr];\n
}\n
}\n
\n
return jsKeywords;\n
}();\n
\n
var isOperatorChar = /[+\\-*&%=<>!?|~^]/;\n
var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;\n
\n
function readRegexp(stream) {\n
var escaped = false, next, inSet = false;\n
while ((next = stream.next()) != null) {\n
if (!escaped) {\n
if (next == "/" && !inSet) return;\n
if (next == "[") inSet = true;\n
else if (inSet && next == "]") inSet = false;\n
}\n
escaped = !escaped && next == "\\\\";\n
}\n
}\n
\n
// Used as scratch variables to communicate multiple values without\n
// consing up tons of objects.\n
var type, content;\n
function ret(tp, style, cont) {\n
type = tp; content = cont;\n
return style;\n
}\n
function tokenBase(stream, state) {\n
var ch = stream.next();\n
if (ch == \'"\' || ch == "\'") {\n
state.tokenize = tokenString(ch);\n
return state.tokenize(stream, state);\n
} else if (ch == "." && stream.match(/^\\d+(?:[eE][+\\-]?\\d+)?/)) {\n
return ret("number", "number");\n
} else if (ch == "." && stream.match("..")) {\n
return ret("spread", "meta");\n
} else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n
return ret(ch);\n
} else if (ch == "=" && stream.eat(">")) {\n
return ret("=>", "operator");\n
} else if (ch == "0" && stream.eat(/x/i)) {\n
stream.eatWhile(/[\\da-f]/i);\n
return ret("number", "number");\n
} else if (ch == "0" && stream.eat(/o/i)) {\n
stream.eatWhile(/[0-7]/i);\n
return ret("number", "number");\n
} else if (ch == "0" && stream.eat(/b/i)) {\n
stream.eatWhile(/[01]/i);\n
return ret("number", "number");\n
} else if (/\\d/.test(ch)) {\n
stream.match(/^\\d*(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/);\n
return ret("number", "number");\n
} else if (ch == "/") {\n
if (stream.eat("*")) {\n
state.tokenize = tokenComment;\n
return tokenComment(stream, state);\n
} else if (stream.eat("/")) {\n
stream.skipToEnd();\n
return ret("comment", "comment");\n
} else if (/^(?:operator|sof|keyword c|case|new|[\\[{}\\(,;:])$/.test(state.lastType) ||\n
(state.lastType == "quasi" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - 1)))) {\n
readRegexp(stream);\n
stream.match(/^\\b(([gimyu])(?![gimyu]*\\2))+\\b/);\n
return ret("regexp", "string-2");\n
} else {\n
stream.eatWhile(isOperatorChar);\n
return ret("operator", "operator", stream.current());\n
}\n
} else if (ch == "`") {\n
state.tokenize = tokenQuasi;\n
return tokenQuasi(stream, state);\n
} else if (ch == "#") {\n
stream.skipToEnd();\n
return ret("error", "error");\n
} else if (isOperatorChar.test(ch)) {\n
stream.eatWhile(isOperatorChar);\n
return ret("operator", "operator", stream.current());\n
} else if (wordRE.test(ch)) {\n
stream.eatWhile(wordRE);\n
var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word];\n
return (known && state.lastType != ".") ? ret(known.type, known.style, word) :\n
ret("variable", "variable", word);\n
}\n
}\n
\n
function tokenString(quote) {\n
return function(stream, state) {\n
var escaped = false, next;\n
if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){\n
state.tokenize = tokenBase;\n
return ret("jsonld-keyword", "meta");\n
}\n
while ((next = stream.next()) != null) {\n
if (next == quote && !escaped) break;\n
escaped = !escaped && next == "\\\\";\n
}\n
if (!escaped) state.tokenize = tokenBase;\n
return ret("string", "string");\n
};\n
}\n
\n
function tokenComment(stream, state) {\n
var maybeEnd = false, ch;\n
while (ch = stream.next()) {\n
if (ch == "/" && maybeEnd) {\n
state.tokenize = tokenBase;\n
break;\n
}\n
maybeEnd = (ch == "*");\n
}\n
return ret("comment", "comment");\n
}\n
\n
function tokenQuasi(stream, state) {\n
var escaped = false, next;\n
while ((next = stream.next()) != null) {\n
if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) {\n
state.tokenize = tokenBase;\n
break;\n
}\n
escaped = !escaped && next == "\\\\";\n
}\n
return ret("quasi", "string-2", stream.current());\n
}\n
\n
var brackets = "([{}])";\n
// This is a crude lookahead trick to try and notice that we\'re\n
// parsing the argument patterns for a fat-arrow function before we\n
// actually hit the arrow token. It only works if the arrow is on\n
// the same line as the arguments and there\'s no strange noise\n
// (comments) in between. Fallback is to only notice when we hit the\n
// arrow, and not declare the arguments as locals for the arrow\n
// body.\n
function findFatArrow(stream, state) {\n
if (state.fatArrowAt) state.fatArrowAt = null;\n
var arrow = stream.string.indexOf("=>", stream.start);\n
if (arrow < 0) return;\n
\n
var depth = 0, sawSomething = false;\n
for (var pos = arrow - 1; pos >= 0; --pos) {\n
var ch = stream.string.charAt(pos);\n
var bracket = brackets.indexOf(ch);\n
if (bracket >= 0 && bracket < 3) {\n
if (!depth) { ++pos; break; }\n
if (--depth == 0) break;\n
} else if (bracket >= 3 && bracket < 6) {\n
++depth;\n
} else if (wordRE.test(ch)) {\n
sawSomething = true;\n
} else if (/["\'\\/]/.test(ch)) {\n
return;\n
} else if (sawSomething && !depth) {\n
++pos;\n
break;\n
}\n
}\n
if (sawSomething && !depth) state.fatArrowAt = pos;\n
}\n
\n
// Parser\n
\n
var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true};\n
\n
function JSLexical(indented, column, type, align, prev, info) {\n
this.indented = indented;\n
this.column = column;\n
this.type = type;\n
this.prev = prev;\n
this.info = info;\n
if (align != null) this.align = align;\n
}\n
\n
function inScope(state, varname) {\n
for (var v = state.localVars; v; v = v.next)\n
if (v.name == varname) return true;\n
for (var cx = state.context; cx; cx = cx.prev) {\n
for (var v = cx.vars; v; v = v.next)\n
if (v.name == varname) return true;\n
}\n
}\n
\n
function parseJS(state, style, type, content, stream) {\n
var cc = state.cc;\n
// Communicate our context to the combinators.\n
// (Less wasteful than consing up a hundred closures on every call.)\n
cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n
\n
if (!state.lexical.hasOwnProperty("align"))\n
state.lexical.align = true;\n
\n
while(true) {\n
var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n
if (combinator(type, content)) {\n
while(cc.length && cc[cc.length - 1].lex)\n
cc.pop()();\n
if (cx.marked) return cx.marked;\n
if (type == "variable" && inScope(state, content)) return "variable-2";\n
return style;\n
}\n
}\n
}\n
\n
// Combinator utils\n
\n
var cx = {state: null, column: null, marked: null, cc: null};\n
function pass() {\n
for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n
}\n
function cont() {\n
pass.apply(null, arguments);\n
return true;\n
}\n
function register(varname) {\n
function inList(list) {\n
for (var v = list; v; v = v.next)\n
if (v.name == varname) return true;\n
return false;\n
}\n
var state = cx.state;\n
cx.marked = "def";\n
if (state.context) {\n
if (inList(state.localVars)) return;\n
state.localVars = {name: varname, next: state.localVars};\n
} else {\n
if (inList(state.globalVars)) return;\n
if (parserConfig.globalVars)\n
state.globalVars = {name: varname, next: state.globalVars};\n
}\n
}\n
\n
// Combinators\n
\n
var defaultVars = {name: "this", next: {name: "arguments"}};\n
function pushcontext() {\n
cx.state.context = {prev: cx.state.context, vars: cx.state.localVars};\n
cx.state.localVars = defaultVars;\n
}\n
function popcontext() {\n
cx.state.localVars = cx.state.context.vars;\n
cx.state.context = cx.state.context.prev;\n
}\n
function pushlex(type, info) {\n
var result = function() {\n
var state = cx.state, indent = state.indented;\n
if (state.lexical.type == "stat") indent = state.lexical.indented;\n
else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev)\n
indent = outer.indented;\n
state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n
};\n
result.lex = true;\n
return result;\n
}\n
function poplex() {\n
var state = cx.state;\n
if (state.lexical.prev) {\n
if (state.lexical.type == ")")\n
state.indented = state.lexical.indented;\n
state.lexical = state.lexical.prev;\n
}\n
}\n
poplex.lex = true;\n
\n
function expect(wanted) {\n
function exp(type) {\n
if (type == wanted) return cont();\n
else if (wanted == ";") return pass();\n
else return cont(exp);\n
};\n
return exp;\n
}\n
\n
function statement(type, value) {\n
if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex);\n
if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex);\n
if (type == "keyword b") return cont(pushlex("form"), statement, poplex);\n
if (type == "{") return cont(pushlex("}"), block, poplex);\n
if (type == ";") return cont();\n
if (type == "if") {\n
if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n
cx.state.cc.pop()();\n
return cont(pushlex("form"), expression, statement, poplex, maybeelse);\n
}\n
if (type == "function") return cont(functiondef);\n
if (type == "for") return cont(pushlex("form"), forspec, statement, poplex);\n
if (type == "variable") return cont(pushlex("stat"), maybelabel);\n
if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"),\n
block, poplex, poplex);\n
if (type == "case") return cont(expression, expect(":"));\n
if (type == "default") return cont(expect(":"));\n
if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"),\n
statement, poplex, popcontext);\n
if (type == "class") return cont(pushlex("form"), className, poplex);\n
if (type == "export") return cont(pushlex("stat"), afterExport, poplex);\n
if (type == "import") return cont(pushlex("stat"), afterImport, poplex);\n
if (type == "module") return cont(pushlex("form"), pattern, pushlex("}"), expect("{"), block, poplex, poplex)\n
return pass(pushlex("stat"), expression, expect(";"), poplex);\n
}\n
function expression(type) {\n
return expressionInner(type, false);\n
}\n
function expressionNoComma(type) {\n
return expressionInner(type, true);\n
}\n
function expressionInner(type, noComma) {\n
if (cx.state.fatArrowAt == cx.stream.start) {\n
var body = noComma ? arrowBodyNoComma : arrowBody;\n
if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext);\n
else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext);\n
}\n
\n
var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n
if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n
if (type == "function") return cont(functiondef, maybeop);\n
if (type == "keyword c") return cont(noComma ? maybeexpressionNoComma : maybeexpression);\n
if (type == "(") return cont(pushlex(")"), maybeexpression, comprehension, expect(")"), poplex, maybeop);\n
if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression);\n
if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop);\n
if (type == "{") return contCommasep(objprop, "}", null, maybeop);\n
if (type == "quasi") return pass(quasi, maybeop);\n
if (type == "new") return cont(maybeTarget(noComma));\n
return cont();\n
}\n
function maybeexpression(type) {\n
if (type.match(/[;\\}\\)\\],]/)) return pass();\n
return pass(expression);\n
}\n
function maybeexpressionNoComma(type) {\n
if (type.match(/[;\\}\\)\\],]/)) return pass();\n
return pass(expressionNoComma);\n
}\n
\n
function maybeoperatorComma(type, value) {\n
if (type == ",") return cont(expression);\n
return maybeoperatorNoComma(type, value, false);\n
}\n
function maybeoperatorNoComma(type, value, noComma) {\n
var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n
var expr = noComma == false ? expression : expressionNoComma;\n
if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n
if (type == "operator") {\n
if (/\\+\\+|--/.test(value)) return cont(me);\n
if (value == "?") return cont(expression, expect(":"), expr);\n
return cont(expr);\n
}\n
if (type == "quasi") { return pass(quasi, me); }\n
if (type == ";") return;\n
if (type == "(") return contCommasep(expressionNoComma, ")", "call", me);\n
if (type == ".") return cont(property, me);\n
if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me);\n
}\n
function quasi(type, value) {\n
if (type != "quasi") return pass();\n
if (value.slice(value.length - 2) != "${") return cont(quasi);\n
return cont(expression, continueQuasi);\n
}\n
function continueQuasi(type) {\n
if (type == "}") {\n
cx.marked = "string-2";\n
cx.state.tokenize = tokenQuasi;\n
return cont(quasi);\n
}\n
}\n
function arrowBody(type) {\n
findFatArrow(cx.stream, cx.state);\n
return pass(type == "{" ? statement : expression);\n
}\n
function arrowBodyNoComma(type) {\n
findFatArrow(cx.stream, cx.state);\n
return pass(type == "{" ? statement : expressionNoComma);\n
}\n
function maybeTarget(noComma) {\n
return function(type) {\n
if (type == ".") return cont(noComma ? targetNoComma : target);\n
else return pass(noComma ? expressionNoComma : expression);\n
};\n
}\n
function target(_, value) {\n
if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); }\n
}\n
function targetNoComma(_, value) {\n
if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); }\n
}\n
function maybelabel(type) {\n
if (type == ":") return cont(poplex, statement);\n
return pass(maybeoperatorComma, expect(";"), poplex);\n
}\n
function property(type) {\n
if (type == "variable") {cx.marked = "property"; return cont();}\n
}\n
function objprop(type, value) {\n
if (type == "variable" || cx.style == "keyword") {\n
cx.marked = "property";\n
if (value == "get" || value == "set") return cont(getterSetter);\n
return cont(afterprop);\n
} else if (type == "number" || type == "string") {\n
cx.marked = jsonldMode ? "property" : (cx.style + " property");\n
return cont(afterprop);\n
} else if (type == "jsonld-keyword") {\n
return cont(afterprop);\n
} else if (type == "modifier") {\n
return cont(objprop)\n
} else if (type == "[") {\n
return cont(expression, expect("]"), afterprop);\n
} else if (type == "spread") {\n
return cont(expression);\n
}\n
}\n
function getterSetter(type) {\n
if (type != "variable") return pass(afterprop);\n
cx.marked = "property";\n
return cont(functiondef);\n
}\n
function afterprop(type) {\n
if (type == ":") return cont(expressionNoComma);\n
if (type == "(") return pass(functiondef);\n
}\n
function commasep(what, end) {\n
function proceed(type) {\n
if (type == ",") {\n
var lex = cx.state.lexical;\n
if (lex.info == "call") lex.pos = (lex.pos || 0) + 1;\n
return cont(what, proceed);\n
}\n
if (type == end) return cont();\n
return cont(expect(end));\n
}\n
return function(type) {\n
if (type == end) return cont();\n
return pass(what, proceed);\n
};\n
}\n
function contCommasep(what, end, info) {\n
for (var i = 3; i < arguments.length; i++)\n
cx.cc.push(arguments[i]);\n
return cont(pushlex(end, info), commasep(what, end), poplex);\n
}\n
function block(type) {\n
if (type == "}") return cont();\n
return pass(statement, block);\n
}\n
function maybetype(type) {\n
if (isTS && type == ":") return cont(typedef);\n
}\n
function maybedefault(_, value) {\n
if (value == "=") return cont(expressionNoComma);\n
}\n
function typedef(type) {\n
if (type == "variable") {cx.marked = "variable-3"; return cont();}\n
}\n
function vardef() {\n
return pass(pattern, maybetype, maybeAssign, vardefCont);\n
}\n
function pattern(type, value) {\n
if (type == "modifier") return cont(pattern)\n
if (type == "variable") { register(value); return cont(); }\n
if (type == "spread") return cont(pattern);\n
if (type == "[") return contCommasep(pattern, "]");\n
if (type == "{") return contCommasep(proppattern, "}");\n
}\n
function proppattern(type, value) {\n
if (type == "variable" && !cx.stream.match(/^\\s*:/, false)) {\n
register(value);\n
return cont(maybeAssign);\n
}\n
if (type == "variable") cx.marked = "property";\n
if (type == "spread") return cont(pattern);\n
return cont(expect(":"), pattern, maybeAssign);\n
}\n
function maybeAssign(_type, value) {\n
if (value == "=") return cont(expressionNoComma);\n
}\n
function vardefCont(type) {\n
if (type == ",") return cont(vardef);\n
}\n
function maybeelse(type, value) {\n
if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex);\n
}\n
function forspec(type) {\n
if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex);\n
}\n
function forspec1(type) {\n
if (type == "var") return cont(vardef, expect(";"), forspec2);\n
if (type == ";") return cont(forspec2);\n
if (type == "variable") return cont(formaybeinof);\n
return pass(expression, expect(";"), forspec2);\n
}\n
function formaybeinof(_type, value) {\n
if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); }\n
return cont(maybeoperatorComma, forspec2);\n
}\n
function forspec2(type, value) {\n
if (type == ";") return cont(forspec3);\n
if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); }\n
return pass(expression, expect(";"), forspec3);\n
}\n
function forspec3(type) {\n
if (type != ")") cont(expression);\n
}\n
function functiondef(type, value) {\n
if (value == "*") {cx.marked = "keyword"; return cont(functiondef);}\n
if (type == "variable") {register(value); return cont(functiondef);}\n
if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, statement, popcontext);\n
}\n
function funarg(type) {\n
if (type == "spread") return cont(funarg);\n
return pass(pattern, maybetype, maybedefault);\n
}\n
function className(type, value) {\n
if (type == "variable") {register(value); return cont(classNameAfter);}\n
}\n
function classNameAfter(type, value) {\n
if (value == "extends") return cont(expression, classNameAfter);\n
if (type == "{") return cont(pushlex("}"), classBody, poplex);\n
}\n
function classBody(type, value) {\n
if (type == "variable" || cx.style == "keyword") {\n
if (value == "static") {\n
cx.marked = "keyword";\n
return cont(classBody);\n
}\n
cx.marked = "property";\n
if (value == "get" || value == "set") return cont(classGetterSetter, functiondef, classBody);\n
return cont(functiondef, classBody);\n
}\n
if (value == "*") {\n
cx.marked = "keyword";\n
return cont(classBody);\n
}\n
if (type == ";") return cont(classBody);\n
if (type == "}") return cont();\n
}\n
function classGetterSetter(type) {\n
if (type != "variable") return pass();\n
cx.marked = "property";\n
return cont();\n
}\n
function afterExport(_type, value) {\n
if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); }\n
if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); }\n
return pass(statement);\n
}\n
function afterImport(type) {\n
if (type == "string") return cont();\n
return pass(importSpec, maybeFrom);\n
}\n
function importSpec(type, value) {\n
if (type == "{") return contCommasep(importSpec, "}");\n
if (type == "variable") register(value);\n
if (value == "*") cx.marked = "keyword";\n
return cont(maybeAs);\n
}\n
function maybeAs(_type, value) {\n
if (value == "as") { cx.marked = "keyword"; return cont(importSpec); }\n
}\n
function maybeFrom(_type, value) {\n
if (value == "from") { cx.marked = "keyword"; return cont(expression); }\n
}\n
function arrayLiteral(type) {\n
if (type == "]") return cont();\n
return pass(expressionNoComma, maybeArrayComprehension);\n
}\n
function maybeArrayComprehension(type) {\n
if (type == "for") return pass(comprehension, expect("]"));\n
if (type == ",") return cont(commasep(maybeexpressionNoComma, "]"));\n
return pass(commasep(expressionNoComma, "]"));\n
}\n
function comprehension(type) {\n
if (type == "for") return cont(forspec, comprehension);\n
if (type == "if") return cont(expression, comprehension);\n
}\n
\n
function isContinuedStatement(state, textAfter) {\n
return state.lastType == "operator" || state.lastType == "," ||\n
isOperatorChar.test(textAfter.charAt(0)) ||\n
/[,.]/.test(textAfter.charAt(0));\n
}\n
\n
// Interface\n
\n
return {\n
startState: function(basecolumn) {\n
var state = {\n
tokenize: tokenBase,\n
lastType: "sof",\n
cc: [],\n
lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false),\n
localVars: parserConfig.localVars,\n
context: parserConfig.localVars && {vars: parserConfig.localVars},\n
indented: 0\n
};\n
if (parserConfig.globalVars && typeof parserConfig.globalVars == "object")\n
state.globalVars = parserConfig.globalVars;\n
return state;\n
},\n
\n
token: function(stream, state) {\n
if (stream.sol()) {\n
if (!state.lexical.hasOwnProperty("align"))\n
state.lexical.align = false;\n
state.indented = stream.indentation();\n
findFatArrow(stream, state);\n
}\n
if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n
var style = state.tokenize(stream, state);\n
if (type == "comment") return style;\n
state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type;\n
return parseJS(state, style, type, content, stream);\n
},\n
\n
indent: function(state, textAfter) {\n
if (state.tokenize == tokenComment) return CodeMirror.Pass;\n
if (state.tokenize != tokenBase) return 0;\n
var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical;\n
// Kludge to prevent \'maybelse\' from blocking lexical scope pops\n
if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n
var c = state.cc[i];\n
if (c == poplex) lexical = lexical.prev;\n
else if (c != maybeelse) break;\n
}\n
if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev;\n
if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat")\n
lexical = lexical.prev;\n
var type = lexical.type, closing = firstChar == type;\n
\n
if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0);\n
else if (type == "form" && firstChar == "{") return lexical.indented;\n
else if (type == "form") return lexical.indented + indentUnit;\n
else if (type == "stat")\n
return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n
else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false)\n
return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n
else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n
else return lexical.indented + (closing ? 0 : indentUnit);\n
},\n
\n
electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n
blockCommentStart: jsonMode ? null : "/*",\n
blockCommentEnd: jsonMode ? null : "*/",\n
lineComment: jsonMode ? null : "//",\n
fold: "brace",\n
closeBrackets: "()[]{}\'\'\\"\\"``",\n
\n
helperType: jsonMode ? "json" : "javascript",\n
jsonldMode: jsonldMode,\n
jsonMode: jsonMode\n
};\n
});\n
\n
CodeMirror.registerHelper("wordChars", "javascript", /[\\w$]/);\n
\n
CodeMirror.defineMIME("text/javascript", "javascript");\n
CodeMirror.defineMIME("text/ecmascript", "javascript");\n
CodeMirror.defineMIME("application/javascript", "javascript");\n
CodeMirror.defineMIME("application/x-javascript", "javascript");\n
CodeMirror.defineMIME("application/ecmascript", "javascript");\n
CodeMirror.defineMIME("application/json", {name: "javascript", json: true});\n
CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true});\n
CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true});\n
CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true });\n
CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true });\n
\n
});
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>CodeMirror Mode Javascript</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>4.3.0</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<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>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>1406898405.79</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</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>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>948.28968.29478.7014</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>1453133668.22</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>romain</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>1405589294.22</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Style" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>codemirror_theme_zenburn.css</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>codemirror_rjs_theme_solarized_css</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Style</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string>/**\n
* "\n
* Using Zenburn color palette from the Emacs Zenburn Theme\n
* https://github.com/bbatsov/zenburn-emacs/blob/master/zenburn-theme.el\n
*\n
* Also using parts of https://github.com/xavi/coderay-lighttable-theme\n
* "\n
* From: https://github.com/wisenomad/zenburn-lighttable-theme/blob/master/zenburn.css\n
*/\n
\n
.cm-s-zenburn .CodeMirror-gutters { background: #3f3f3f !important; }\n
.cm-s-zenburn .CodeMirror-foldgutter-open, .CodeMirror-foldgutter-folded { color: #999; }\n
.cm-s-zenburn .CodeMirror-cursor { border-left: 1px solid white; }\n
.cm-s-zenburn { background-color: #3f3f3f; color: #dcdccc; }\n
.cm-s-zenburn span.cm-builtin { color: #dcdccc; font-weight: bold; }\n
.cm-s-zenburn span.cm-comment { color: #7f9f7f; }\n
.cm-s-zenburn span.cm-keyword { color: #f0dfaf; font-weight: bold; }\n
.cm-s-zenburn span.cm-atom { color: #bfebbf; }\n
.cm-s-zenburn span.cm-def { color: #dcdccc; }\n
.cm-s-zenburn span.cm-variable { color: #dfaf8f; }\n
.cm-s-zenburn span.cm-variable-2 { color: #dcdccc; }\n
.cm-s-zenburn span.cm-string { color: #cc9393; }\n
.cm-s-zenburn span.cm-string-2 { color: #cc9393; }\n
.cm-s-zenburn span.cm-number { color: #dcdccc; }\n
.cm-s-zenburn span.cm-tag { color: #93e0e3; }\n
.cm-s-zenburn span.cm-property { color: #dfaf8f; }\n
.cm-s-zenburn span.cm-attribute { color: #dfaf8f; }\n
.cm-s-zenburn span.cm-qualifier { color: #7cb8bb; }\n
.cm-s-zenburn span.cm-meta { color: #f0dfaf; }\n
.cm-s-zenburn span.cm-header { color: #f0efd0; }\n
.cm-s-zenburn span.cm-operator { color: #f0efd0; }\n
.cm-s-zenburn span.CodeMirror-matchingbracket { box-sizing: border-box; background: transparent; border-bottom: 1px solid; }\n
.cm-s-zenburn span.CodeMirror-nonmatchingbracket { border-bottom: 1px solid; background: none; }\n
.cm-s-zenburn .CodeMirror-activeline { background: #000000; }\n
.cm-s-zenburn .CodeMirror-activeline-background { background: #000000; }\n
.cm-s-zenburn div.CodeMirror-selected { background: #545454; }\n
.cm-s-zenburn .CodeMirror-focused div.CodeMirror-selected { background: #4f4f4f; }</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>CodeMirror Theme Zenburn</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>4.3.0</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<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>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</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>1406898405.56</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</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>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>948.27245.3759.55022</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>1453133649.78</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>romain</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>1405082591.73</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
...@@ -130,6 +130,34 @@ jquerymobile.css\n ...@@ -130,6 +130,34 @@ jquerymobile.css\n
jquerymobile.js\n jquerymobile.js\n
renderjs.js\n renderjs.js\n
rsvp.js\n rsvp.js\n
gadget_officejs_drive_page_edit.html\n
gadget_officejs_drive_page_edit.js\n
gadget_officejs_drive_page_browse_storage.html\n
gadget_officejs_drive_page_browse.js\n
gadget_officejs_drive_panel.html\n
gadget_officejs_drive_jio.js\n
gadget_officejs_drive_jio.html\n
gadget_officejs_drive_header.js\n
gadget_officejs_drive.appcache\n
gadget_officejs_drive_panel.js\n
gadget_officejs_drive_header.html\n
gadget_officejs_drive_router.html\n
gadget_officejs_drive_router.js\n
gadget_codemirror.js\n
gadget_codemirror.html\n
gadget_codemirror.css\n
codemirror_theme_zenburn.css\n
codemirror_mode_javascript.js\n
codemirror_mode_clike.js\n
codemirror_keymap_vim.js\n
codemirror.js\n
codemirror.css\n
codemirror_addon_searchcursor.js\n
codemirror_addon_edit_matchbrackets.js\n
codemirror_addon_display_fullscreen.js\n
codemirror_addon_display_fullscreen.css\n
codemirror_addon_dialog.js\n
codemirror_addon_dialog.css\n
NETWORK:\n NETWORK:\n
* *
...@@ -268,7 +296,7 @@ NETWORK:\n ...@@ -268,7 +296,7 @@ NETWORK:\n
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>948.8659.41277.10359</string> </value> <value> <string>948.27240.55520.50022</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -286,7 +314,7 @@ NETWORK:\n ...@@ -286,7 +314,7 @@ NETWORK:\n
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1451480890.17</float> <float>1452596017.77</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -150,7 +150,7 @@ ...@@ -150,7 +150,7 @@
jio_options = {\n jio_options = {\n
type: "dav",\n type: "dav",\n
// XXX Hardcoded\n // XXX Hardcoded\n
url: "https://localhost:5000/webdav/media/removable",\n url: "https://localhost:5000/webdav",\n
with_credentials: true\n with_credentials: true\n
};\n };\n
}\n }\n
...@@ -324,7 +324,7 @@ ...@@ -324,7 +324,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>948.20342.16883.65058</string> </value> <value> <string>948.36185.35957.25497</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -342,7 +342,7 @@ ...@@ -342,7 +342,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1452181839.01</float> <float>1453132424.59</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -111,9 +111,9 @@ ...@@ -111,9 +111,9 @@
<key> <string>text_content</string> </key> <key> <string>text_content</string> </key>
<value> <string encoding="cdata"><![CDATA[ <value> <string encoding="cdata"><![CDATA[
/*globals window, rJS, document */\n /*globals window, rJS, RSVP, loopEventListener, document */\n
/*jslint indent: 2, nomen: true, maxlen: 80*/\n /*jslint indent: 2, nomen: true, maxlen: 80*/\n
(function (window, rJS, document) {\n (function (window, rJS, RSVP, loopEventListener, document) {\n
"use strict";\n "use strict";\n
\n \n
var gadget_klass = rJS(window);\n var gadget_klass = rJS(window);\n
...@@ -128,11 +128,28 @@ ...@@ -128,11 +128,28 @@
})\n })\n
\n \n
.declareAcquiredMethod("jio_allAttachments", "jio_allAttachments")\n .declareAcquiredMethod("jio_allAttachments", "jio_allAttachments")\n
.declareAcquiredMethod("redirect", "redirect")\n
\n
\n \n
.declareMethod("render", function (options) {\n .declareMethod("render", function (options) {\n
var gadget = this,\n var gadget = this,\n
ul = gadget.props.element.querySelector(\'ul\'),\n ul = gadget.props.element.querySelector(\'ul\'),\n
position = options.position || \'/key/notes/\';\n position = options.position || \'/\';\n
\n
if (!position.startsWith(\'/\')) {\n
position = \'/\' + position;\n
}\n
if (!position.endsWith(\'/\')) {\n
position += \'/\';\n
}\n
\n
gadget.props.element.querySelector(\'input\').value = position;\n
\n
// clean previous ul children\n
while (ul.hasChildNodes()) {\n
ul.removeChild(ul.firstChild);\n
}\n
\n
return gadget.jio_allAttachments(position)\n return gadget.jio_allAttachments(position)\n
.push(function (all) {\n .push(function (all) {\n
var key,\n var key,\n
...@@ -150,9 +167,27 @@ ...@@ -150,9 +167,27 @@
}\n }\n
}\n }\n
});\n });\n
})\n
\n
.declareService(function () {\n
var gadget = this;\n
\n
return new RSVP.Queue()\n
.push(function () {\n
return loopEventListener(\n
gadget.props.element.querySelector(\'form\'),\n
\'submit\',\n
true,\n
function () {\n
gadget.redirect(\n
{position: gadget.props.element.querySelector(\'input\').value}\n
);\n
}\n
);\n
});\n
});\n });\n
\n \n
}(window, rJS, document)); }(window, rJS, RSVP, loopEventListener, document));
]]></string> </value> ]]></string> </value>
</item> </item>
...@@ -291,7 +326,7 @@ ...@@ -291,7 +326,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>948.20330.12482.53299</string> </value> <value> <string>948.30407.28943.54340</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -309,7 +344,7 @@ ...@@ -309,7 +344,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1452181116.02</float> <float>1453118514.19</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -133,6 +133,9 @@ ...@@ -133,6 +133,9 @@
\n \n
<body>\n <body>\n
<h1>Super OfficeJS Drive</h1>\n <h1>Super OfficeJS Drive</h1>\n
<form>\n
position: <input type="text" name="position">\n
</form>\n
<ul>\n <ul>\n
</ul>\n </ul>\n
</body>\n </body>\n
...@@ -276,7 +279,7 @@ ...@@ -276,7 +279,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>948.20216.15255.7833</string> </value> <value> <string>948.27123.59534.19558</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -294,7 +297,7 @@ ...@@ -294,7 +297,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1452176160.33</float> <float>1452589359.42</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -118,11 +118,13 @@ ...@@ -118,11 +118,13 @@
\n \n
</head>\n </head>\n
<body>\n <body>\n
<div id=message></div>\n <noscript>Javascript needed.</noscript>\n
\n
<p class=message></p>\n
<form class="view-web-page-form">\n <form class="view-web-page-form">\n
<textarea id="content"></textarea>\n
<button type="submit" class="ui-btn ui-btn-b ui-btn-inline ui-icon-edit ui-btn-icon-right ui-screen-hidden">Save</button>\n <button type="submit" class="ui-btn ui-btn-b ui-btn-inline ui-icon-edit ui-btn-icon-right ui-screen-hidden">Save</button>\n
</form>\n </form>\n
<div data-gadget-url="gadget_codemirror.html" data-gadget-scope="codemirror"></div>\n
</body>\n </body>\n
</html> </html>
...@@ -261,7 +263,7 @@ ...@@ -261,7 +263,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>948.20288.34344.32136</string> </value> <value> <string>948.35794.23372.40226</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -279,7 +281,7 @@ ...@@ -279,7 +281,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1452183396.51</float> <float>1453109726.99</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -98,9 +98,9 @@ ...@@ -98,9 +98,9 @@
</item> </item>
<item> <item>
<key> <string>text_content</string> </key> <key> <string>text_content</string> </key>
<value> <string>/*globals window, rJS, RSVP, loopEventListener, document*/\n <value> <string>/*globals window, rJS, RSVP, loopEventListener*/\n
/*jslint indent: 2, nomen: true, maxlen: 80*/\n /*jslint indent: 2, nomen: true, maxlen: 80*/\n
(function (window, RSVP, rJS, loopEventListener, document) {\n (function (window, RSVP, rJS, loopEventListener) {\n
"use strict";\n "use strict";\n
\n \n
var gadget_klass = rJS(window);\n var gadget_klass = rJS(window);\n
...@@ -115,43 +115,60 @@ ...@@ -115,43 +115,60 @@
// g.props.deferred = RSVP.defer();\n // g.props.deferred = RSVP.defer();\n
});\n });\n
})\n })\n
\n
// allow external use of triggerData, so that editor gadget can save\n
// with its own shortcuts/buttons/whatever.\n
.allowPublicAcquisition(\'triggerData\', function () {\n
this.props.element.querySelector(\'button\').click();\n
})\n
\n \n
.declareAcquiredMethod("jio_getAttachment", "jio_getAttachment")\n .declareAcquiredMethod("jio_getAttachment", "jio_getAttachment")\n
.declareAcquiredMethod("jio_putAttachment", "jio_putAttachment")\n .declareAcquiredMethod("jio_putAttachment", "jio_putAttachment")\n
.declareAcquiredMethod("updateHeader", "updateHeader")\n .declareAcquiredMethod("updateHeader", "updateHeader")\n
\n
.declareMethod(\'triggerSubmit\', function () {\n
this.props.element.querySelector(\'button\').click();\n
})\n
\n \n
.declareMethod(\'render\', function (options) {\n .declareMethod(\'render\', function (options) {\n
var gadget = this,\n var gadget = this,\n
format = \'text\';\n format = \'text\';\n
gadget.props.position = options.position || \'/key/notes/\';\n gadget.props.position = options.position || \'/\';\n
gadget.props.currentResourceName = options.resource;\n gadget.props.resourceName = options.resource;\n
if (gadget.props.currentResourceName.endsWith(\'.txt\')) {\n if (gadget.props.resourceName.endsWith(\'.txt\') ||\n
gadget.props.resourceName.endsWith(\'.html\')) {\n
return gadget.jio_getAttachment(gadget.props.position,\n return gadget.jio_getAttachment(gadget.props.position,\n
gadget.props.currentResourceName,\n gadget.props.resourceName,\n
{format: format})\n {format: format})\n
.push(function (data) {\n .push(function (data) {\n
gadget.props.element.querySelector(\'textarea\').value = data;\n // XXX: declare gadget here instead?\n
return gadget.getDeclaredGadget(\'codemirror\')\n
.push(function (editorGadget) {\n
gadget.props.editorGadget = editorGadget;\n
return editorGadget.render({\n
data: data,\n
resource: gadget.props.resourceName\n
});\n
});\n
})\n })\n
\n \n
.push(function () {\n .push(function () {\n
return gadget.updateHeader({\n return gadget.updateHeader({\n
title: \'Editing \' + gadget.props.currentResourceName,\n title: \'Editing \' + gadget.props.resourceName +\n
\' at \' + gadget.props.position,\n
save_action: true\n save_action: true\n
});\n });\n
});\n });\n
}\n }\n
// XXX: if document not ending with \'.txt\': unsupported\n
gadget.props.element.querySelector(\'div\').appendChild(\n
document.createTextNode(\'Format not supported (yet).\')\n
);\n
gadget.props.element.querySelector(\'textarea\').setAttribute(\n
\'class\',\n
\'ui-screen-hidden\'\n
);\n
})\n
\n \n
.declareMethod(\'triggerSubmit\', function () {\n // otherwise: unsupported format\n
this.props.element.querySelector(\'button\').click();\n return gadget.getDeclaredGadget(\'codemirror\')\n
.push(function (editorGadget) {\n
gadget.props.element.querySelector(\'.message\').textContent =\n
\'Format not supported (yet?).\';\n
// hide device if not considered editable\n
editorGadget.props.element.className = \'ui-screen-hidden\';\n
});\n
})\n })\n
\n \n
/////////////////////////////////////////\n /////////////////////////////////////////\n
...@@ -167,17 +184,20 @@ ...@@ -167,17 +184,20 @@
\'submit\',\n \'submit\',\n
true,\n true,\n
function () {\n function () {\n
return gadget.jio_putAttachment(\n return gadget.props.editorGadget.getData()\n
gadget.props.position,\n .push(function (data) {\n
gadget.props.currentResourceName,\n return gadget.jio_putAttachment(\n
gadget.props.element.querySelector(\'textarea\').value\n gadget.props.position,\n
);\n gadget.props.resourceName,\n
data\n
);\n
});\n
}\n }\n
);\n );\n
});\n });\n
});\n });\n
\n \n
}(window, RSVP, rJS, loopEventListener, document));</string> </value> }(window, RSVP, rJS, loopEventListener));</string> </value>
</item> </item>
<item> <item>
<key> <string>title</string> </key> <key> <string>title</string> </key>
...@@ -314,7 +334,7 @@ ...@@ -314,7 +334,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>948.20334.31824.8072</string> </value> <value> <string>948.35950.62357.43776</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -332,7 +352,7 @@ ...@@ -332,7 +352,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1452183421.53</float> <float>1453137582.16</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
web_page_module/gadget_officejs_drive_* web_page_module/gadget_officejs_drive_*
web_page_module/codemirror_*
web_site_module/officejs_drive web_site_module/officejs_drive
web_site_module/officejs_drive/** web_site_module/officejs_drive/**
\ No newline at end of file
web_page_module/gadget_officejs_drive_* web_page_module/gadget_officejs_drive_*
web_page_module/codemirror_*
web_site_module/officejs_drive web_site_module/officejs_drive
web_site_module/officejs_drive/** web_site_module/officejs_drive/**
\ No newline at end of file
web_page_module/codemirror_*
web_page_module/gadget_officejs_drive_* web_page_module/gadget_officejs_drive_*
web_site_module/officejs_drive web_site_module/officejs_drive
web_site_module/officejs_drive/** web_site_module/officejs_drive/**
\ No newline at end of file
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