Commit b3e1aa50 authored by hardikj's avatar hardikj

erp5_officejs: Add jquery spreadsheet gadget and related files

parent 8d582563
<!DOCTYPE html>
<html manifest="gadget_web_table_editor.appcache">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Jquery Sheets Gadget</title>
<script src="rsvp.js" type="text/javascript"></script>
<script src="renderjs.js" type="text/javascript"></script>
<script src="jiodev.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="jquery-sheets/wickedgrid.css">
<link rel="stylesheet" type="text/css" href="jquery-sheets/bootstrap.css">
<link rel="stylesheet" type="text/css" href="jquery-sheets/bootstrap-theme.css">
<!-- This gadget provides jquery sheets with all Plugins activated by default -->
<script src="gadget_jquery_sheet.js" type="text/javascript"></script>
<!--dependencies-->
<script src="jquery.js"></script>
<script src="jquery-sheets/js/globalize.js"></script>
<script src="jquery-sheets/js/MouseWheel.js"></script>
<script src="jquery-sheets/js/megatable.js"></script>
<script src="jquery-sheets/js/infiniscroll.js"></script>
<script src="jquery-sheets/js/thaw.js"></script>
<!-- <script src="jquery-sheets/js/old_wickedgrid.js"></script>-->
<script src="jquery-sheets/js/wickedgrid.js"></script>
<!--optional-->
<!--Nearest-->
<script src="jquery-sheets/js/jquery.nearest.js"></script>
<!--/Nearest-->
<!--jQuery UI-->
<script src="jquery-sheets/js/jquery-ui.js"></script>
<!--/jQuery UI-->
<!--Raphaeljs - for charts-->
<script src="jquery-sheets/js/raphael.js"></script>
<script src="jquery-sheets/js/graphael/g.raphael.js"></script>
<script src="jquery-sheets/js/graphael/g.bar.js"></script>
<script src="jquery-sheets/js/graphael/g.dot.js"></script>
<script src="jquery-sheets/js/graphael/g.line.js"></script>
<script src="jquery-sheets/js/graphael/g.pie.js"></script>
<!--/Raphaeljs-->
<!--ColorPicker-->
<!--** <link rel="stylesheet" type="text/css" href="bower_components/really-simple-color-picker/css/colorPicker.css" />
<script src="bower_components/really-simple-color-picker/js/jquery.colorPicker.min.js"></script>
<!--/ColorPicker-->
<!--Elastic-->
<script src="jquery-sheets/js/jquery.elastic.source.js"></script>
<!--/Elastic-->
<!--Advanced_Math-->
<!--** <script src="src/WickedGrid/Plugin/advanced.js"></script>
<!--/Advanced_Math-->
<!--Finance-->
<!--** <script src="src/WickedGrid/Plugin/finance.js"></script>
<!--/Finance-->
<!--Undo-->
<script src="jquery-sheets/js/undomanager.js"></script>
<!--/Undo-->
<!--Zero Clipboard-->
<script src="jquery-sheets/js/ZeroClipboard.js"></script>
<!--/Zero Clipboard-->
</head>
<body>
<div id="jquery_sheet_gadget" class="jQuerySheet" style="min-height: 590px; max-height:600px">
<div id="sheetParent">
</div>
</div>
</body>
</html>
<?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_jquery_sheet.html</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget_jquery_sheet_html</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value>
<none/>
</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>title</string> </key>
<value> <string>Jquery Sheet Gadget</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>001</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/*global window, rJS*/
/*jslint maxlen:80*/
(function (rJS, jIO, RSVP) {
"use strict";
var wickedGrid = function (el, settings) {
settings = settings || {};
for (var p in WickedGrid.defaults) {
if (WickedGrid.defaults.hasOwnProperty(p)) {
settings[p] = settings.hasOwnProperty(p) ? settings[p] : WickedGrid.defaults[p];
}
}
var element = el,
$element = $(el),
instance = $element.getWickedGrid();
settings.useStack = (window.thaw === undefined ? false : settings.useStack);
settings.useMultiThreads = (window.operative === undefined ?
false : settings.useMultiThreads);
//destroy already existing spreadsheet
if (instance) {
var tables = $element.children().detach();
instance.kill();
$element.html(tables);
WickedGrid.events.forEach($element.unbind);
}
settings.element = element;
settings.$element = $element;
WickedGrid.events.forEach(function(event) {
$element.bind(event, settings[event]);
});
$element.children().each(function(i) {
// override frozenAt settings with table's data-frozenatrow
// and data-frozenatcol
var frozenAtRow = el.getAttribute('data-frozenatrow') * 1,
frozenAtCol = el.getAttribute('data-frozenatcol') * 1;
if (!settings.frozenAt[i]) {
settings.frozenAt[i] = {row:0, col:0};
}
if (frozenAtRow) {
settings.frozenAt[wickedGrid.i].row = frozenAtRow;
}
if (frozenAtCol) {
settings.frozenAt[wickedGrid.i].col = frozenAtCol;
}
});
var wickedGrid = new WickedGrid(settings);
return wickedGrid;
};
function tablify (rows, cols) {
var table = document.createElement('table'),
tr,
td,
rowIndex=0,
colIndex=0,
tbody = table.appendChild(document.createElement('tbody'));
while (rowIndex < rows ) {
tr = document.createElement('tr');
tbody.appendChild(tr);
while (colIndex < cols) {
td = document.createElement('td');
tr.appendChild(td);
colIndex++;
}
colIndex = 0;
rowIndex++;
}
return table;
}
function parseHtml (gadget, html, selector) {
var parent = document.createElement('div');
if (html === '') {
html = tablify(10,6);
parent.innerHTML = html.outerHTML;
} else {
parent.innerHTML = html;
}
if (selector) {
gadget.props.element.querySelector(selector).innerHTML = parent.outerHTML;
return parent.children;
}
return parent.children;
}
function initiate (gadget, sheetGet) {
var url = 'jquery-sheets/menu.html';
$.when($.get(url))
.always(function(nav_menu) {
if (!nav_menu.status) {
//clearTimeout(noResponseTimer);
localStorage[url] = nav_menu;
}
else {
if (!!localStorage[url]) {
nav_menu = localStorage[url];
}
}
var jS = $('#jquery_sheet_gadget')
.html(parseHtml(gadget, sheetGet, 'div#sheetParent'));
var wg = wickedGrid(jS[0], {
theme: WickedGrid.bootstrapTheme,
title: 'Demo',
height: '600px',
headerMenu: function(wg) {
var menu = $(nav_menu);
wg.saveSheet = function () {
return gadget.submitContent();
}
menu.find('a').each(function() {
this.wickedGrid = wg;
});
if (menu.is('ul')) {
menu
.find("ul").hide()
.addClass(wg.theme.menuUl);
menu.find("li")
.addClass(wg.theme.menuLi)
.hover(function () {
$(this).find('ul:first')
.hide()
.show();
}, function () {
$(this).find('ul:first')
.hide();
});
}
return menu;
}
});
gadget.props.wickedGrid = wg;
});
$('td').click(function() {
window.focus();
});
return;
}
rJS(window)
.ready(function (g) {
g.props = {};
})
.ready(function (g) {
return g.getElement()
.push(function (element) {
var textarea = element.querySelector('textarea');
g.props.element = element;
});
})
.declareAcquiredMethod("submitContent", "triggerSubmit")
.declareAcquiredMethod("maximize", "triggerMaximize")
.declareMethod('render', function (options) {
var gadget = this;
this.props.key = options.key || "text_content";
return new RSVP.Queue()
.push(function(nav_menu) {
initiate(gadget, options.value || '');
return {};
});
})
.declareMethod('getContent', function () {
var result = {},
value,
tables = this.props.wickedGrid.loader.toTables();
for (var table in tables) {
if (tables[table].textContent) {
value = result[this.props.key] || '';
result[this.props.key] = value + tables[table].outerHTML;
}
}
return result;
});
}(rJS, jIO, RSVP));
<?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_jquery_sheet.js</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget_jquery_sheet_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>title</string> </key>
<value> <string>Jquery Sheet Gadget JS</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>001</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -174,10 +174,14 @@ erp5_launcher.js\n
erp5_launcher.html\n
gadget_officejs_text_editor_router.html\n
gadget_officejs_svg_editor_router.html\n
gadget_officejs_jquery_spreadsheet_router.html\n
gadget_officejs_jio_web_page_view.html\n
gadget_officejs_jio_web_page_view.js\n
gadget_officejs_jio_web_illustration_view.html\n
gadget_officejs_jio_web_illustration_view.js\n
gadget_officejs_jio_web_table_view.html\n
gadget_officejs_jio_web_table_view.js\n
gadget_jquery_sheet.html\n
NETWORK:\n
*
......@@ -296,7 +300,7 @@ NETWORK:\n
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>supercedriclen</string> </value>
<value> <string>zope</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -310,7 +314,7 @@ NETWORK:\n
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>952.33234.39189.52889</string> </value>
<value> <string>955.855.47795.38331</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -328,7 +332,7 @@ NETWORK:\n
</tuple>
<state>
<tuple>
<float>1468340832.92</float>
<float>1478169085.67</float>
<string>UTC</string>
</tuple>
</state>
......
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>OfficeJS Jio Web Page View</title>
<script src="rsvp.js"></script>
<script src="renderjs.js"></script>
<script src="handlebars.js"></script>
<script class="view-web-page-template" type="text/x-handlebars-template">
<form class="view-web-page-form">
<div class="center">
<div class="ui-field-contain">
<label data-i18n="Title:">Title:</label>
<div class="ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset">
<input type="text" name="title" value="{{title}}">
</div>
</div>
<button type="submit" data-i18n="Save" style="display:none;">Save</button>
<div class="ui-field-contain">
<label data-i18n="Reference:">Reference:</label>
<input type="text" name="reference" value="{{reference}}">
</div>
<div class="ui-field-contain">
<label data-i18n="Version:">Version:</label>
<input type="text" name="version" value="{{version}}"></label>
</div>
<div class="ui-field-contain">
<label data-i18n="Language:">Language:</label>
<input type="text" name="language" value="{{language}}">
</div>
<div class="ui-field-contain">
<label data-i18n="Description:">Description:</label>
<textarea name="description">{{description}}</textarea>
</div>
<div class='document-content'></div>
</div>
</div>
</form>
</script>
<script src="gadget_officejs_jio_web_table_view.js"></script>
</head>
<body>
</body>
</html>
\ No newline at end of file
/*globals window, rJS, Handlebars, RSVP, loopEventListener, console*/
/*jslint indent: 2, nomen: true, maxlen: 80*/
(function (window, RSVP, rJS, Handlebars, loopEventListener) {
"use strict";
function saveContent(gadget, submit_event) {
var i,
doc = gadget.options.doc,
now = new Date();
doc.parent_relative_url = "web_page_module";
doc.portal_type = "Web Table";
doc.modification_date = now.toISOString();
for (i = 0; i < submit_event.target.length; i += 1) {
// XXX Should check input type instead
if (submit_event.target[i].name) {
doc[submit_event.target[i].name] = submit_event.target[i].value;
}
}
return new RSVP.Queue()
.push(function () {
return gadget.getDeclaredGadget("my_text_content");
})
.push(function (text_content_gadget) {
return text_content_gadget.getContent();
})
.push(function (data) {
doc.text_content = data.text_content;
return gadget.put(gadget.options.jio_key, doc);
});
}
function maximize(gadget) {
var iframe = gadget.props.element.querySelector('iframe'),
iframe_class_string = iframe.getAttribute('class') || "",
class_name = "ui-content-maximize",
class_index = iframe_class_string.indexOf(class_name);
if (class_index === -1) {
iframe_class_string += ' ' + class_name;
iframe.setAttribute('style', '');
iframe.setAttribute('class', iframe_class_string);
return;
}
iframe_class_string = iframe_class_string.substring(0, class_index)
+ iframe_class_string.substring(class_index + class_name.length);
iframe.setAttribute('style', 'width:100%; border: 0 none; height: 600px');
iframe.setAttribute('class', iframe_class_string);
return;
}
var gadget_klass = rJS(window),
source = gadget_klass.__template_element
.querySelector(".view-web-page-template")
.innerHTML,
template = Handlebars.compile(source);
gadget_klass
.ready(function (g) {
g.props = {};
g.options = null;
return g.getElement()
.push(function (element) {
g.props.element = element;
g.props.deferred = RSVP.defer();
});
})
.declareAcquiredMethod("updateHeader", "updateHeader")
.declareAcquiredMethod("get", "jio_get")
.declareAcquiredMethod("translateHtml", "translateHtml")
.declareAcquiredMethod("put", "jio_put")
.declareAcquiredMethod('allDocs', 'jio_allDocs')
.declareAcquiredMethod("redirect", "redirect")
.allowPublicAcquisition('triggerMaximize', function () {
var gadget = this;
return RSVP.Queue()
.push(function () {
return maximize(gadget);
})
.fail(function (e) {
console.log(e);
});
})
.allowPublicAcquisition('triggerSubmit', function (option) {
if (option[0] === "maximize" || option === "maximize") {
var gadget = this;
return RSVP.Queue()
.push(function () {
return maximize(gadget);
});
}
return this.props.element.querySelector('button').click();
})
.declareMethod('triggerSubmit', function (option) {
if (option[0] === "maximize" || option === "maximize") {
var gadget = this;
return RSVP.Queue()
.push(function () {
return maximize(gadget);
});
}
return this.props.element.querySelector('button').click();
})
.declareMethod("render", function (options) {
var gadget = this;
gadget.options = options;
gadget.options.doc.title = gadget.options.doc.title || "";
return new RSVP.Queue()
.push(function () {
return gadget.translateHtml(template(options.doc));
})
.push(function (html) {
gadget.props.element.innerHTML = html;
return gadget.updateHeader({
title: options.doc.title + " | Web Table",
save_action: true,
maximize_action: true,
maximized: gadget.options.doc.title !== ""
});
})
.push(function () {
return gadget.props.deferred.resolve();
});
})
/////////////////////////////////////////
// Render text content gadget
/////////////////////////////////////////
.declareService(function () {
var gadget = this,
text_gadget = null;
return new RSVP.Queue()
.push(function () {
return gadget.props.deferred.promise;
})
.push(function () {
return gadget.declareGadget(
"rjsunsafe/gadget_jquery_sheet.html",
{
scope: "my_text_content",
sandbox: "iframe",
element: gadget.props.element.querySelector(".document-content")
}
);
})
.push(function (text_content_gadget) {
var iframe = gadget.props.element.querySelector('iframe');
iframe.setAttribute(
'style',
'width:100%; border: 0 none; height: 600px'
);
text_gadget = text_content_gadget;
return text_content_gadget.render({
"key": 'text_content',
"value": gadget.options.doc.text_content
});
})
.push(function () {
return text_gadget.getElement();
}, function (error) {
var display_error_element;
if (error === "Timed out after 5000 ms") {
display_error_element =
gadget.props.element.querySelector(
"form div.ui-field-contain fieldset"
);
display_error_element.innerHTML =
'<br/><p style="color: red"></p><br/><br/>';
display_error_element.querySelector('p').textContent =
"TIMEOUT: The editor gadget is taking too long to load but is" +
" currently being cached, please wait for the page to load" +
" (check your browser loading icon) and then refresh.";
} else {
throw error;
}
})
.push(function () {
if (gadget.options.doc.title !== "") {
return gadget.triggerSubmit("maximize");
}
});
})
/////////////////////////////////////////
// Form submit
/////////////////////////////////////////
.declareService(function () {
var gadget = this;
return new RSVP.Queue()
.push(function () {
return gadget.props.deferred.promise;
})
.push(function () {
return loopEventListener(
gadget.props.element.querySelector('form'),
'submit',
true,
function (event) {
return saveContent(gadget, event);
}
);
});
});
}(window, RSVP, rJS, Handlebars, loopEventListener));
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, user-scalable=no" />
<title>OfficeJS Router Gadget</title>
<!-- renderjs -->
<script src="rsvp.js" type="text/javascript"></script>
<script src="renderjs.js" type="text/javascript"></script>
<!-- custom script -->
<script src="gadget_officejs_router.js" type="text/javascript"></script>
</head>
<body>
<script data-renderjs-configuration="portal_type" type="text/x-renderjs-configuration">Web Table</script>
<script data-renderjs-configuration="parent_relative_url" type="text/x-renderjs-configuration">web_page_module</script>
<script data-renderjs-configuration="document_title" type="text/x-renderjs-configuration">Web Table</script>
<script data-renderjs-configuration="document_title_plural" type="text/x-renderjs-configuration">Web Tables</script>
<script data-renderjs-configuration="global_setting_gadget_url" type="text/x-renderjs-configuration">https://setting-gadget.app.officejs.com/0.1.1/</script>
</body>
</html>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5 Form" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string>Base_edit</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>bottom</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list>
<string>my_description</string>
<string>my_language</string>
<string>my_portal_type</string>
<string>my_reference</string>
<string>my_revision</string>
<string>my_text_content</string>
<string>my_title</string>
<string>my_version</string>
<string>your_modification_date</string>
</list>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebTable_viewAsJio</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>WebTable_viewAsJio</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_view</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>jquery-sheets</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>bootstrap-theme.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>bootstrap.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>font-awesome.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>images</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<path d="M353.94,242.326C372.689,220.055,384,191.322,384,160c0-70.58-57.421-128-128-128h-64h-64H96v448h32h64h96
c70.579,0,128-57.421,128-128C416,305.521,391.101,264.752,353.94,242.326z M192,96h50.75c27.984,0,50.75,28.71,50.75,64
s-22.766,64-50.75,64H192V96z M271.5,416H192V288h79.5c29.225,0,53,28.71,53,64S300.725,416,271.5,416z"/>
</svg>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>bold13.svg</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/svg+xml</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="1000px" height="1000px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
<path d="M926.1,94.1H75.3c-38.7,0-70,31.3-70,70s31.3,70,70,70h850.9c38.7,0,70-31.3,70-70S964.8,94.1,926.1,94.1z"/>
<path d="M926.1,575.4H75.3c-38.7,0-70,31.3-70,70s31.3,70,70,70h850.9c38.7,0,70-31.3,70-70S964.8,575.4,926.1,575.4z"/>
<path d="M809.4,474.7c38.7,0,70-31.3,70-70s-31.3-70-70-70H192.1c-38.7,0-70,31.3-70,70s31.3,70,70,70H809.4z"/>
<path d="M687.8,956c38.7,0,70-31.3,70-70s-31.3-70-70-70H313.6c-38.7,0-70,31.3-70,70s31.3,70,70,70H687.8z"/>
</svg>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>centered5.svg</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/svg+xml</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<path d="M448,32v32h-64L224,448h64v32H64v-32h64L288,64h-64V32H448z"/>
</svg>
(function(root,factory){if(typeof define==="function"&&define.amd){define(["cldr","cldr/event"],factory)}else if(typeof exports==="object"){module.exports=factory(require("cldrjs"))}else{root.Globalize=factory(root.Cldr)}})(this,function(Cldr){var toString=function(variable){return typeof variable==="string"?variable:typeof variable==="number"?""+variable:JSON.stringify(variable)};var formatMessage=function(message,data){message=message.replace(/{[0-9a-zA-Z-_. ]+}/g,function(name){name=name.replace(/^{([^}]*)}$/,"$1");return toString(data[name])});return message};var objectExtend=function(){var destination=arguments[0],sources=[].slice.call(arguments,1);sources.forEach(function(source){var prop;for(prop in source){destination[prop]=source[prop]}});return destination};var createError=function(code,message,attributes){var error;message=code+(message?": "+formatMessage(message,attributes):"");error=new Error(message);error.code=code;objectExtend(error,attributes);return error};var stringHash=function(str){return[].reduce.call(str,function(hash,i){var chr=i.charCodeAt(0);hash=(hash<<5)-hash+chr;return hash|0},0)};var runtimeKey=function(fnName,locale,args,argsStr){var hash;argsStr=argsStr||JSON.stringify(args);hash=stringHash(fnName+locale+argsStr);return hash>0?"a"+hash:"b"+Math.abs(hash)};var functionName=function(fn){if(fn.name!==undefined){return fn.name}var matches=/^function\s+([\w\$]+)\s*\(/.exec(fn.toString());if(matches&&matches.length>0){return matches[1]}};var runtimeBind=function(args,cldr,fn,runtimeArgs){var argsStr=JSON.stringify(args),fnName=functionName(fn),locale=cldr.locale;if(!fnName){return fn}fn.runtimeKey=runtimeKey(fnName,locale,null,argsStr);fn.generatorString=function(){return'Globalize("'+locale+'").'+fnName+"("+argsStr.slice(1,-1)+")"};fn.runtimeArgs=runtimeArgs;return fn};var validate=function(code,message,check,attributes){if(!check){throw createError(code,message,attributes)}};var alwaysArray=function(stringOrArray){return Array.isArray(stringOrArray)?stringOrArray:stringOrArray?[stringOrArray]:[]};var validateCldr=function(path,value,options){var skipBoolean;options=options||{};skipBoolean=alwaysArray(options.skip).some(function(pathRe){return pathRe.test(path)});validate("E_MISSING_CLDR","Missing required CLDR content `{path}`.",value||skipBoolean,{path:path})};var validateDefaultLocale=function(value){validate("E_DEFAULT_LOCALE_NOT_DEFINED","Default locale has not been defined.",value!==undefined,{})};var validateParameterPresence=function(value,name){validate("E_MISSING_PARAMETER","Missing required parameter `{name}`.",value!==undefined,{name:name})};var validateParameterRange=function(value,name,minimum,maximum){validate("E_PAR_OUT_OF_RANGE","Parameter `{name}` has value `{value}` out of range [{minimum}, {maximum}].",value===undefined||value>=minimum&&value<=maximum,{maximum:maximum,minimum:minimum,name:name,value:value})};var validateParameterType=function(value,name,check,expected){validate("E_INVALID_PAR_TYPE","Invalid `{name}` parameter ({value}). {expected} expected.",check,{expected:expected,name:name,value:value})};var validateParameterTypeLocale=function(value,name){validateParameterType(value,name,value===undefined||typeof value==="string"||value instanceof Cldr,"String or Cldr instance")};var isPlainObject=function(obj){return obj!==null&&""+obj==="[object Object]"};var validateParameterTypePlainObject=function(value,name){validateParameterType(value,name,value===undefined||isPlainObject(value),"Plain Object")};var alwaysCldr=function(localeOrCldr){return localeOrCldr instanceof Cldr?localeOrCldr:new Cldr(localeOrCldr)};var regexpEscape=function(string){return string.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")};var stringPad=function(str,count,right){var length;if(typeof str!=="string"){str=String(str)}for(length=str.length;length<count;length+=1){str=right?str+"0":"0"+str}return str};function validateLikelySubtags(cldr){cldr.once("get",validateCldr);cldr.get("supplemental/likelySubtags")}function Globalize(locale){if(!(this instanceof Globalize)){return new Globalize(locale)}validateParameterPresence(locale,"locale");validateParameterTypeLocale(locale,"locale");this.cldr=alwaysCldr(locale);validateLikelySubtags(this.cldr)}Globalize.load=function(){Cldr.load.apply(Cldr,arguments)};Globalize.locale=function(locale){validateParameterTypeLocale(locale,"locale");if(arguments.length){this.cldr=alwaysCldr(locale);validateLikelySubtags(this.cldr)}return this.cldr};Globalize._alwaysArray=alwaysArray;Globalize._createError=createError;Globalize._formatMessage=formatMessage;Globalize._isPlainObject=isPlainObject;Globalize._objectExtend=objectExtend;Globalize._regexpEscape=regexpEscape;Globalize._runtimeBind=runtimeBind;Globalize._stringPad=stringPad;Globalize._validate=validate;Globalize._validateCldr=validateCldr;Globalize._validateDefaultLocale=validateDefaultLocale;Globalize._validateParameterPresence=validateParameterPresence;Globalize._validateParameterRange=validateParameterRange;Globalize._validateParameterTypePlainObject=validateParameterTypePlainObject;Globalize._validateParameterType=validateParameterType;return Globalize});
\ No newline at end of file
This diff is collapsed.
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