Commit 46a512ee authored by Romain Courteaud's avatar Romain Courteaud

[erp5_web_renderjs_ui] Integrate all main page CSS into .gadget-content

parent c6465736
......@@ -108,7 +108,7 @@
<value> <string encoding="cdata"><![CDATA[
CACHE MANIFEST\n
# generated on Tue, 24 Jun 2016 16:00:00 GMT\n
# generated on Tue, 24 Jun 2016 16:00:00 GMT .\n
# XXX + fonts\n
# images/ajax-loader.gif\n
CACHE:\n
......@@ -119,8 +119,8 @@ https://netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.wof
https://netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.ttf?v=4.2.0\n
https://netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular\n
URI.js\n
erp5_launcher.js\n
gadget_erp5.css\n
erp5_launcher_nojqm.js\n
gadget_erp5_nojqm.css\n
gadget_erp5_editor_panel.html\n
gadget_erp5_editor_panel.js\n
gadget_erp5_field_checkbox.html\n
......@@ -203,6 +203,8 @@ gadget_erp5_pt_report_view.html\n
gadget_erp5_pt_report_view.js\n
gadget_erp5_router.html\n
gadget_erp5_router.js\n
gadget_erp5_relation_input.html\n
gadget_erp5_relation_input.js\n
gadget_erp5_search_editor.html\n
gadget_erp5_search_editor.js\n
gadget_erp5_searchfield.html\n
......@@ -353,7 +355,7 @@ NETWORK:\n
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>952.10055.10367.33638</string> </value>
<value> <string>952.54415.21673.50380</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -371,7 +373,7 @@ NETWORK:\n
</tuple>
<state>
<tuple>
<float>1467035673.56</float>
<float>1469697772.13</float>
<string>UTC</string>
</tuple>
</state>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -99,7 +99,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>RenderJS Gadget ERP5 CSS</string> </value>
<value> <string>RenderJS Gadget OfficeJS CSS</string> </value>
</item>
<item>
<key> <string>version</string> </key>
......@@ -136,12 +136,6 @@
<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>
......@@ -163,7 +157,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>romain</string> </value>
<value> <string>zope</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -185,8 +179,8 @@
</tuple>
<state>
<tuple>
<float>1406898405.9</float>
<string>GMT</string>
<float>1465381402.54</float>
<string>UTC</string>
</tuple>
</state>
</object>
......@@ -230,7 +224,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>952.12715.63499.47547</string> </value>
<value> <string>952.55927.14574.22152</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -248,7 +242,7 @@
</tuple>
<state>
<tuple>
<float>1467193792.99</float>
<float>1469701062.53</float>
<string>UTC</string>
</tuple>
</state>
......@@ -260,61 +254,4 @@
</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>1405427673.27</float>
<string>GMT</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
......@@ -8,6 +8,7 @@
<title>${application_title}</title>
<link href="//netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="jquerymobile.css">
<link rel="stylesheet" href="gadget_erp5.css">
<script data-renderjs-configuration="application_title" type="text/x-renderjs-configuration">${application_title}</script>
......@@ -17,6 +18,8 @@
<script data-renderjs-configuration="hateoas_url" type="text/x-renderjs-configuration">${hateoas_url}</script>
<script data-renderjs-configuration="frontpage_gadget" type="text/x-renderjs-configuration">${frontpage_gadget}</script>
<script src="jquery.js"></script>
<script src="jquerymobile.js"></script>
<script src="rsvp.js"></script>
<script src="renderjs.js"></script>
<script src="gadget_global.js" ></script>
......
......@@ -75,7 +75,7 @@
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>erp5_launcher.html</string> </value>
<value> <string>officejs_launcher.html</string> </value>
</item>
<item>
<key> <string>description</string> </key>
......@@ -105,7 +105,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>ERP5 Application Launcher</string> </value>
<value> <string>OfficeJS Application Launcher</string> </value>
</item>
<item>
<key> <string>version</string> </key>
......@@ -236,7 +236,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>952.1497.51502.20667</string> </value>
<value> <string>952.55927.14574.22152</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -254,7 +254,7 @@
</tuple>
<state>
<tuple>
<float>1467031565.3</float>
<float>1469701010.97</float>
<string>UTC</string>
</tuple>
</state>
......
/*globals window, document, RSVP, rJS,
loopEventListener, URI, location, XMLHttpRequest, console*/
loopEventListener, jQuery, URI, location, XMLHttpRequest, console*/
/*jslint indent: 2, maxlen: 80*/
(function (window, document, RSVP, rJS, loopEventListener,
XMLHttpRequest, location, console) {
$, XMLHttpRequest, location, console) {
"use strict";
/////////////////////////////////////////////////////////////////
// Desactivate jQuery Mobile URL management
/////////////////////////////////////////////////////////////////
$.mobile.ajaxEnabled = false;
$.mobile.linkBindingEnabled = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;
/*
if (navigator.hasOwnProperty('serviceWorker')) {
// Check if a ServiceWorker already controls the site on load
......@@ -210,6 +218,7 @@
g.props = {};
return g.getElement()
.push(function (element) {
$(element).trigger("create");
g.props.loading_counter = 0;
g.props.element = element;
g.props.content_element = element.querySelector('.gadget-content');
......@@ -315,7 +324,10 @@
return gadget.getDeclaredGadget(MAIN_SCOPE)
.push(function (main) {
if (main.render !== undefined) {
return main.render(JSON.parse(gadget.props.m_options_string));
return main.render(JSON.parse(gadget.props.m_options_string))
.push(function () {
$(gadget.props.content_element).trigger("create");
});
}
}, function () {
return;
......@@ -507,6 +519,8 @@
content_container.appendChild(fragment);
element.appendChild(content_container);
$(element).trigger("create");
return updateHeader(gadget);
// XXX Drop notification
// return header_gadget.notifyLoaded();
......@@ -558,5 +572,5 @@
);
});
}(window, document, RSVP, rJS, loopEventListener,
}(window, document, RSVP, rJS, loopEventListener, jQuery,
XMLHttpRequest, location, console));
\ No newline at end of file
......@@ -99,7 +99,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>ERP5 Launcher JS</string> </value>
<value> <string>OfficeJS Launcher JS</string> </value>
</item>
<item>
<key> <string>version</string> </key>
......@@ -230,7 +230,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>952.1547.59762.20957</string> </value>
<value> <string>952.55927.14574.22152</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -248,7 +248,7 @@
</tuple>
<state>
<tuple>
<float>1467031817.3</float>
<float>1469701036.4</float>
<string>UTC</string>
</tuple>
</state>
......
<!DOCTYPE html>
<html manifest="${manifest_url}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="favicon.ico">
<title>${application_title}</title>
<link href="//netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="gadget_erp5_nojqm.css">
<script data-renderjs-configuration="application_title" type="text/x-renderjs-configuration">${application_title}</script>
<script data-renderjs-configuration="panel_gadget" type="text/x-renderjs-configuration">${panel_gadget}</script>
<script data-renderjs-configuration="action_view" type="text/x-renderjs-configuration">${action_view}</script>
<script data-renderjs-configuration="default_view_reference" type="text/x-renderjs-configuration">${default_view_reference}</script>
<script data-renderjs-configuration="hateoas_url" type="text/x-renderjs-configuration">${hateoas_url}</script>
<script data-renderjs-configuration="frontpage_gadget" type="text/x-renderjs-configuration">${frontpage_gadget}</script>
<script src="rsvp.js"></script>
<script src="renderjs.js"></script>
<script src="gadget_global.js" ></script>
<script src="erp5_launcher_nojqm.js"></script>
</head>
<body>
<div data-role="page">
<div data-gadget-url="gadget_jio.html"
data-gadget-scope="setting_gadget"
data-gadget-sandbox="public"></div>
<div data-gadget-url="${router_gadget}"
data-gadget-scope="router"
data-gadget-sandbox="public"></div>
<div data-gadget-url="${translation_gadget}"
data-gadget-scope="translation_gadget"
data-gadget-sandbox="public"></div>
<div data-gadget-url="${header_gadget}"
data-gadget-scope="header"
data-gadget-sandbox="public"></div>
<div data-gadget-url="${jio_gadget}"
data-gadget-scope="jio_gadget"
data-gadget-sandbox="public"></div>
<div data-gadget-url="gadget_erp5_editor_panel.html"
data-gadget-scope="editor_panel"
data-gadget-sandbox="public"></div>
<div data-gadget-url="${panel_gadget}"
data-gadget-scope="panel"
data-gadget-sandbox="public"></div>
<div role="main" class="ui-content gadget-content"></div>
</div>
</body>
</html>
\ No newline at end of file
<?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>erp5_launcher.html</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Starting Point</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>rjs_gadget_erp5_launcher_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_substitution_mapping_method_id</string> </key>
<value> <string>WebPage_getRenderJSSubstitutionMappingDict</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>ERP5 Application Launcher</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>zope</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>1469697538.23</float>
<string>UTC</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>952.55888.33090.2730</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>1469697640.18</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>zope</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>1469697401.23</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
/*globals window, document, RSVP, rJS,
loopEventListener, URI, location, XMLHttpRequest, console*/
/*jslint indent: 2, maxlen: 80*/
(function (window, document, RSVP, rJS, loopEventListener,
XMLHttpRequest, location, console) {
"use strict";
/*
if (navigator.hasOwnProperty('serviceWorker')) {
// Check if a ServiceWorker already controls the site on load
if (!navigator.serviceWorker.controller) {
// Register the ServiceWorker
navigator.serviceWorker.register('gadget_erp5_serviceworker.js');
}
}
*/
var MAIN_SCOPE = "m";
function renderMainGadget(gadget, url, options) {
return gadget.declareGadget(url, {
scope: MAIN_SCOPE
})
.push(function (page_gadget) {
gadget.props.m_options_string = JSON.stringify(options);
if (page_gadget.render === undefined) {
return [page_gadget];
}
return RSVP.all([
page_gadget,
page_gadget.render(options)
]);
})
.push(function (all_result) {
return all_result[0];
});
}
function initHeaderOptions(gadget) {
gadget.props.header_argument_list = {
panel_action: true,
title: gadget.props.application_title || "OfficeJS"
};
}
function route(my_root_gadget, my_scope, my_method, my_param_list) {
return RSVP.Queue()
.push(function () {
return my_root_gadget.getDeclaredGadget(my_scope);
})
.push(function (my_gadget) {
if (my_param_list) {
return my_gadget[my_method].apply(my_gadget, my_param_list);
}
return my_gadget[my_method]();
});
}
function updateHeader(gadget) {
return gadget.getDeclaredGadget("header")
.push(function (header_gadget) {
return header_gadget.render(gadget.props.header_argument_list);
});
}
function increaseLoadingCounter(gadget) {
return new RSVP.Queue()
.push(function () {
gadget.props.loading_counter += 1;
if (gadget.props.loading_counter === 1) {
return gadget.getDeclaredGadget("header")
.push(function (header_gadget) {
return header_gadget.notifyLoading();
});
}
});
}
function decreaseLoadingCounter(gadget) {
return new RSVP.Queue()
.push(function () {
gadget.props.loading_counter -= 1;
if (gadget.props.loading_counter < 0) {
gadget.props.loading_counter = 0;
// throw new Error("Unexpected negative loading counter");
}
if (gadget.props.loading_counter === 0) {
return gadget.getDeclaredGadget("header")
.push(function (header_gadget) {
return header_gadget.notifyLoaded();
});
}
});
}
function callJioGadget(gadget, method, param_list) {
var called = false;
return new RSVP.Queue()
.push(function () {
called = true;
return increaseLoadingCounter(gadget);
})
.push(function () {
return gadget.getDeclaredGadget("jio_gadget");
})
.push(function (jio_gadget) {
return jio_gadget[method].apply(jio_gadget, param_list);
})
.push(function (result) {
return decreaseLoadingCounter(gadget)
.push(function () {
return result;
});
}, function (error) {
if (called) {
return decreaseLoadingCounter(gadget)
.push(function () {
throw error;
});
}
throw error;
});
}
function displayErrorContent(gadget, error) {
// Do not break the application in case of errors.
// Display it to the user for now,
// and allow user to go back to the frontpage
var error_text = "";
if (error instanceof RSVP.CancellationError) {
return;
}
if (error.target instanceof XMLHttpRequest) {
error_text = error.target.toString() + " " +
error.target.status + " " +
error.target.statusText + "\n" +
error.target.responseURL + "\n\n" +
error.target.getAllResponseHeaders();
} else if (error instanceof Error) {
error_text = error.toString();
} else {
error_text = JSON.stringify(error);
}
console.error(error);
if (error instanceof Error) {
console.error(error.stack);
}
// XXX Improve error rendering
gadget.props.content_element.innerHTML = "<br/><br/><br/><pre></pre>";
gadget.props.content_element.querySelector('pre').textContent =
"Error: " + error_text;
// XXX Notify error
}
function displayError(gadget, error) {
return new RSVP.Queue()
.push(function () {
return displayErrorContent(gadget, error);
})
.push(function () {
return gadget.dropGadget(MAIN_SCOPE)
.push(undefined, function () {
// Do not crash the app if the pg gadget in not defined
// ie, keep the original error on screen
return;
});
});
}
function getSetting(gadget, key, default_value) {
return gadget.getDeclaredGadget("setting_gadget")
.push(function (jio_gadget) {
return jio_gadget.get("setting");
})
.push(function (doc) {
return doc[key] || default_value;
}, function (error) {
if (error.status_code === 404) {
return default_value;
}
throw error;
});
}
function setSetting(gadget, key, value) {
var jio_gadget;
return gadget.getDeclaredGadget("setting_gadget")
.push(function (result) {
jio_gadget = result;
return jio_gadget.get("setting");
})
.push(undefined, function (error) {
if (error.status_code === 404) {
return {};
}
throw error;
})
.push(function (doc) {
doc[key] = value;
return jio_gadget.put('setting', doc);
});
}
//////////////////////////////////////////
// Page rendering
//////////////////////////////////////////
rJS(window)
.ready(function (g) {
g.props = {};
return g.getElement()
.push(function (element) {
g.props.loading_counter = 0;
g.props.element = element;
g.props.content_element = element.querySelector('.gadget-content');
});
})
// Configure setting storage
.ready(function (g) {
return g.getDeclaredGadget("setting_gadget")
.push(function (jio_gadget) {
return jio_gadget.createJio({
type: "indexeddb",
database: "setting"
});
});
})
.ready(function (g) {
// Extract configuration parameters stored in HTML
// XXX Will work only if top gadget...
var element_list =
document.querySelectorAll("[data-renderjs-configuration]"),
len = element_list.length,
key,
value,
i,
queue = new RSVP.Queue();
function push(a, b) {
queue.push(function () {
return setSetting(g, a, b);
});
}
for (i = 0; i < len; i += 1) {
key = element_list[i].getAttribute('data-renderjs-configuration');
value = element_list[i].textContent;
g.props[key] = value;
push(key, value);
}
return queue;
})
.ready(function (g) {
return setSetting(g, 'hateoas_url',
(new URI(g.props.hateoas_url))
.absoluteTo(location.href)
.toString()
);
})
// Configure jIO storage
.ready(function (g) {
var jio_gadget;
return g.getDeclaredGadget("jio_gadget")
.push(function (result) {
jio_gadget = result;
return getSetting(g, 'jio_storage_description');
})
.push(function (result) {
return jio_gadget.createJio(result);
});
})
.ready(function (g) {
return g.getDeclaredGadget('panel')
.push(function (panel_gadget) {
return panel_gadget.render();
});
})
.ready(function (g) {
return g.getDeclaredGadget('router')
.push(function (router_gadget) {
return router_gadget.start();
});
})
//////////////////////////////////////////
// Allow Acquisition
//////////////////////////////////////////
.allowPublicAcquisition("getSetting", function (argument_list) {
return getSetting(this, argument_list[0], argument_list[1]);
})
.allowPublicAcquisition("setSetting", function (argument_list) {
return setSetting(this, argument_list[0], argument_list[1]);
})
.allowPublicAcquisition("translateHtml", function (argument_list) {
return this.getDeclaredGadget("translation_gadget")
.push(function (translation_gadget) {
return translation_gadget.translateHtml(argument_list[0]);
});
})
// XXX Those methods may be directly integrated into the header,
// as it handles the submit triggering
.allowPublicAcquisition('notifySubmitting', function () {
return route(this, "header", 'notifySubmitting');
})
.allowPublicAcquisition('notifySubmitted', function () {
return route(this, "header", "notifySubmitted");
})
.allowPublicAcquisition('notifyChange', function () {
return route(this, "header", 'notifyChange');
})
.allowPublicAcquisition('refresh', function () {
var gadget = this;
return gadget.getDeclaredGadget(MAIN_SCOPE)
.push(function (main) {
if (main.render !== undefined) {
return main.render(JSON.parse(gadget.props.m_options_string));
}
}, function () {
return;
});
})
.allowPublicAcquisition("translate", function (argument_list) {
return this.getDeclaredGadget("translation_gadget")
.push(function (translation_gadget) {
return translation_gadget.translate(argument_list[0]);
});
})
.allowPublicAcquisition("redirect", function (param_list) {
return this.getDeclaredGadget('router')
.push(function (router_gadget) {
return router_gadget.redirect.apply(router_gadget, param_list);
});
})
.allowPublicAcquisition('reload', function () {
return location.reload();
})
.allowPublicAcquisition("getUrlParameter", function (param_list) {
return this.getDeclaredGadget('router')
.push(function (router_gadget) {
return router_gadget.getUrlParameter.apply(router_gadget, param_list);
});
})
.allowPublicAcquisition("getUrlFor", function (param_list) {
return this.getDeclaredGadget('router')
.push(function (router_gadget) {
return router_gadget.getCommandUrlFor.apply(router_gadget,
param_list);
});
})
.allowPublicAcquisition("updateHeader", function (param_list) {
var gadget = this;
initHeaderOptions(gadget);
return this.getDeclaredGadget("translation_gadget")
.push(function (translation_gadget) {
var promise_list = [],
key;
for (key in param_list[0]) {
if (param_list[0].hasOwnProperty(key)) {
gadget.props.header_argument_list[key] = param_list[0][key];
}
}
promise_list.push(translation_gadget.translate(
gadget.props.header_argument_list.title
));
if (gadget.props.header_argument_list.hasOwnProperty('right_title')) {
promise_list.push(translation_gadget.translate(
gadget.props.header_argument_list.right_title
));
}
return RSVP.all(promise_list);
})
.push(function (result_list) {
gadget.props.header_argument_list.title = result_list[0];
if (result_list.length === 2) {
gadget.props.header_argument_list.right_title = result_list[1];
}
// XXX Sven hack: number of _url determine padding for
// subheader on ui-content
var key,
count = 0;
for (key in gadget.props.header_argument_list) {
if (gadget.props.header_argument_list.hasOwnProperty(key)) {
if (key.indexOf('_url') > -1) {
count += 1;
}
}
}
if (count > 2) {
gadget.props.sub_header_class = "ui-has-subheader";
}
});
})
.allowPublicAcquisition('triggerPanel', function () {
return route(this, "panel", "toggle");
})
.allowPublicAcquisition('renderEditorPanel', function (param_list) {
return route(this, "editor_panel", 'render', param_list);
})
.allowPublicAcquisition("jio_allDocs", function (param_list) {
return callJioGadget(this, "allDocs", param_list);
})
.allowPublicAcquisition("jio_remove", function (param_list) {
return callJioGadget(this, "remove", param_list);
})
.allowPublicAcquisition("jio_post", function (param_list) {
return callJioGadget(this, "post", param_list);
})
.allowPublicAcquisition("jio_put", function (param_list) {
return callJioGadget(this, "put", param_list);
})
.allowPublicAcquisition("jio_get", function (param_list) {
return callJioGadget(this, "get", param_list);
})
.allowPublicAcquisition("jio_allAttachments", function (param_list) {
return callJioGadget(this, "allAttachments", param_list);
})
.allowPublicAcquisition("jio_getAttachment", function (param_list) {
return callJioGadget(this, "getAttachment", param_list);
})
.allowPublicAcquisition("jio_putAttachment", function (param_list) {
return callJioGadget(this, "putAttachment", param_list);
})
.allowPublicAcquisition("jio_removeAttachment", function (param_list) {
return callJioGadget(this, "removeAttachment", param_list);
})
.allowPublicAcquisition("jio_repair", function (param_list) {
return callJioGadget(this, "repair", param_list);
})
.allowPublicAcquisition("triggerSubmit", function (param_list) {
return this.getDeclaredGadget(MAIN_SCOPE)
.push(function (main_gadget) {
return main_gadget.triggerSubmit(param_list);
});
})
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.allowPublicAcquisition("renderApplication", function (param_list) {
return this.renderXXX.apply(this, param_list);
})
// Render the page
.declareMethod('renderXXX', function (options) {
var gadget = this;
gadget.props.options = options;
// Reinitialize the loading counter
gadget.props.loading_counter = 0;
// By default, init the header options to be empty
// (ERP5 title by default + sidebar)
initHeaderOptions(gadget);
return new RSVP.Queue()
.push(function () {
return increaseLoadingCounter(gadget);
})
.push(function () {
return gadget.getDeclaredGadget('panel');
})
.push(function (panel_gadget) {
return panel_gadget.close();
})
.push(function () {
return gadget.getDeclaredGadget('editor_panel');
})
.push(function (editor_panel) {
return editor_panel.close();
})
.push(function () {
return gadget.getDeclaredGadget('router');
})
.push(function (router_gadget) {
return router_gadget.route(options);
})
.push(function (route_result) {
return renderMainGadget(
gadget,
route_result.url,
route_result.options
);
})
.push(function (main_gadget) {
// Append loaded gadget in the page
if (main_gadget !== undefined) {
return main_gadget.getElement()
.push(function (fragment) {
var element = gadget.props.content_element,
content_container = document.createElement("div");
content_container.className = "ui-content " +
(gadget.props.sub_header_class || "");
// reset subheader indicator
delete gadget.props.sub_header_class;
// go to the top of the page
window.scrollTo(0, 0);
// Clear first to DOM, append after to reduce flickering/manip
while (element.firstChild) {
element.removeChild(element.firstChild);
}
content_container.appendChild(fragment);
element.appendChild(content_container);
return updateHeader(gadget);
// XXX Drop notification
// return header_gadget.notifyLoaded();
});
}
})
.push(function () {
return decreaseLoadingCounter(gadget);
}, function (error) {
return decreaseLoadingCounter(gadget)
.push(function () {
throw error;
});
})
.push(undefined, function (error) {
return displayError(gadget, error);
});
})
/////////////////////////////////
// Handle sub gadgets services
/////////////////////////////////
.allowPublicAcquisition('reportServiceError', function (param_list,
gadget_scope) {
if (gadget_scope === undefined) {
// don't fail in case of dropped subgadget (like previous page)
return;
}
return displayError(this, param_list[0]);
})
.declareService(function () {
////////////////////////////////////
// Form submit listening. Prevent browser to automatically
// handle the form submit in case of a bug
////////////////////////////////////
var gadget = this;
function catchFormSubmit() {
return displayError(gadget, new Error("Unexpected form submit"));
}
// Listen to form submit
return loopEventListener(
gadget.props.element,
'submit',
false,
catchFormSubmit
);
});
}(window, document, RSVP, rJS, loopEventListener,
XMLHttpRequest, location, console));
\ No newline at end of file
<?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>erp5_launcher_nojqm.js</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>rjs_gadget_erp5_launcher_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>ERP5 Launcher 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>zope</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>1469697528.36</float>
<string>UTC</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>952.55886.52877.43281</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>1469697595.92</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>zope</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>1469697401.26</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
......@@ -292,9 +292,9 @@
tmp = gadget.props.sort_list[j];
if (tmp[0] === gadget.props.field_json.column_list[i][0]) {
if (tmp[1] === "ascending") {
class_value = "ui-icon-arrow-up";
class_value = "ui-icon ui-icon-arrow-up";
} else {
class_value = "ui-icon-arrow-down";
class_value = "ui-icon ui-icon-arrow-down";
}
break;
}
......
......@@ -236,7 +236,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>952.4464.6775.58641</string> </value>
<value> <string>952.33120.49574.44270</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -254,7 +254,7 @@
</tuple>
<state>
<tuple>
<float>1466702297.15</float>
<float>1468331648.73</float>
<string>UTC</string>
</tuple>
</state>
......
/**********************************************
* Colors
**********************************************/
/**********************************************
* Fonts (font-family)
**********************************************/
/**********************************************
* Shared
**********************************************/
/**********************************************
* http://meyerweb.com/eric/tools/css/reset/
* v2.0 | 20110126
* License: none (public domain)
**********************************************/
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
display: block;
}
body {
line-height: 1;
}
ol,
ul {
list-style: none;
}
blockquote,
q {
quotes: none;
}
blockquote:before,
blockquote:after,
q:before,
q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
/**********************************************
* Default
**********************************************/
html {
height: 100%;
width: 100%;
display: block;
background-color: #FFFFFF;
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
height: 100%;
width: 100%;
display: block;
color: #1F1F1F;
word-wrap: break-word;
}
body,
button,
input,
textarea,
select {
font-family: 'Open Sans', Helvetica, Arial, sans-serif;
font-weight: 400;
line-height: 1.3;
}
@media only screen and (min-width: 62em), only screen and (min-width: 28em) and (max-width: 62em) {
body,
button,
input,
textarea,
select {
font-size: 11pt;
}
}
@media only screen and (max-width: 28em) {
body,
button,
input,
textarea,
select {
font-size: 12pt;
}
}
/**********************************************
* Inline elements
**********************************************/
strong {
font-weight: bold;
}
i,
cite,
em,
var,
address,
dfn {
font-style: italic;
}
strong,
b {
font-weight: bold;
}
u,
ins {
text-decoration: underline;
}
s,
strike,
del {
text-decoration: line-through;
}
sup {
vertical-align: super;
font-size: smaller;
}
sub {
vertical-align: sub;
font-size: smaller;
}
small {
font-size: smaller;
}
tt,
code,
kbd,
samp {
font-family: "Courier New", Courier, monospace;
}
q {
display: inline;
quotes: initial;
}
q:before {
content: open-quote;
}
q:after {
content: close-quote;
}
mark {
color: #22CC22;
}
/**********************************************
* Link
**********************************************/
a {
color: #2FA2E4;
text-decoration: none;
}
a[href=""] {
color: #1F1F1F;
}
a:hover {
text-decoration: underline;
}
a:focus {
outline-offset: -2px;
outline: 2px solid #3388cc;
}
@media only screen and (min-width: 62em) {
a[accesskey]:after {
content: " [" attr(accesskey) "] ";
}
}
/**********************************************
* Preformatted
**********************************************/
pre,
xmp,
plaintext,
listing {
display: block;
white-space: pre-wrap;
}
/**********************************************
* hr
**********************************************/
hr {
display: block;
border-style: inset;
border-width: 1pt;
border-color: #FF6600;
}
/**********************************************
* Text fields
**********************************************/
label {
display: block;
color: #777777;
}
input:not([type=submit]):not([type=file]):not([type=checkbox]):not([type=radio]):not([type=color]),
textarea {
width: 100%;
margin: 0;
padding: 0.4em;
line-height: 1.4em;
border: none;
background-color: #FFFFFF;
color: #1F1F1F;
border-radius: 0.325em;
border-width: 1px;
border-style: solid;
border-color: rgba(0, 0, 0, 0.3);
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);
outline-offset: 0;
}
input:not([type=submit]):not([type=file]):not([type=checkbox]):not([type=radio]):not([type=color])[readonly="readonly"],
textarea[readonly="readonly"] {
border: none;
box-shadow: none;
padding: 0;
line-height: 1em;
}
input:not([type=submit]):not([type=file]):not([type=checkbox]):not([type=radio]):not([type=color]):active,
textarea:active,
input:not([type=submit]):not([type=file]):not([type=checkbox]):not([type=radio]):not([type=color]):focus,
textarea:focus {
outline-offset: 0;
}
input:not([type=submit]):not([type=file]):not([type=checkbox]):not([type=radio]):not([type=color]):focus,
textarea:focus {
box-shadow: 0 0 12px #3388cc;
}
select {
width: 100%;
margin: 0;
padding: 0.4em;
padding-right: 1.8em;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
line-height: 1.4em;
cursor: pointer;
background-image: none;
background-color: #FFFFFF;
background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='50px' height='50px'><polyline fill-opacity='0.5' points='46.139,15.518 25.166,36.49 4.193,15.519'/></svg>") right no-repeat;
background-position: right .5em top 50%;
background-size: 1em 1em;
color: #1F1F1F;
border-radius: 0.325em;
border-width: 1px;
border-style: solid;
border-color: rgba(0, 0, 0, 0.3);
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);
outline-offset: 0;
}
select[readonly="readonly"] {
border: none;
background: none;
box-shadow: none;
padding: 0;
line-height: 1em;
}
select:not([readonly="readonly"]):hover,
select:not([readonly="readonly"]):active {
background-color: #e0e0e0;
}
select:-moz-focusring {
color: transparent;
}
textarea {
height: 15em;
width: 100%;
margin: 0;
}
::-webkit-input-placeholder {
color: #575757;
}
:-moz-placeholder {
/* Firefox 18- */
color: #575757;
}
::-moz-placeholder {
/* Firefox 19+ */
color: #575757;
}
:-ms-input-placeholder {
color: #575757;
}
input[type=submit],
button {
margin: 0;
padding: 0;
border: none;
background-image: none;
background-color: #FFFFFF;
color: #1F1F1F;
transition: background-color 0.2s ease-out;
cursor: pointer;
}
input[type=submit]::-moz-focus-inner,
button::-moz-focus-inner {
border: 0px;
padding: 0px;
}
input[type=submit]:hover,
button:hover,
input[type=submit]:focus,
button:focus {
outline: none;
background-color: #e0e0e0;
}
input[type=submit]:active,
button:active {
background-color: #adadad;
}
/**********************************************
* Media
**********************************************/
img,
canvas,
iframe,
video,
svg {
max-width: 100%;
}
svg polyline {
stroke: #1F1F1F;
fill: none;
}
svg text {
stroke: #1F1F1F;
fill: #1F1F1F;
}
iframe {
width: 100%;
height: 25em;
background-color: white;
}
img {
image-orientation: from-image;
}
/**********************************************
* Gadget: panel
**********************************************/
div[data-gadget-scope='panel'] {
background-color: #444444;
color: #FFFFFF;
width: 17em;
min-height: 100%;
max-height: none;
position: fixed;
top: 0;
left: 0;
display: block;
z-index: 2000;
}
@media only screen and (max-width: 28em), only screen and (min-width: 28em) and (max-width: 62em) {
div[data-gadget-scope='panel'] {
box-shadow: 5px 0 5px rgba(0, 0, 0, 0.15);
}
}
@media only screen and (max-width: 28em), only screen and (min-width: 28em) and (max-width: 62em) {
div[data-gadget-scope='panel'] {
left: -18em;
transition: transform 200ms ease-out;
transform: translate3d(0, 0, 0);
}
div[data-gadget-scope='panel'].visible {
transform: translate3d(18em, 0, 0);
}
}
div[data-gadget-scope='panel'] div[data-role="header"] {
display: flex;
justify-content: flex-start;
}
div[data-gadget-scope='panel'] div[data-role="header"] .panel_img {
text-align: center;
flex: 1;
height: 2.6em;
}
div[data-gadget-scope='panel'] div[data-role="header"] button,
div[data-gadget-scope='panel'] div[data-role="header"] a {
width: 3em;
overflow: hidden;
text-indent: -9999px;
white-space: nowrap;
background-color: #444444;
display: block;
line-height: 2.6em;
color: #FFFFFF;
}
div[data-gadget-scope='panel'] div[data-role="header"] button::before,
div[data-gadget-scope='panel'] div[data-role="header"] a::before {
float: left;
text-indent: 0;
margin-left: 1em;
}
@media only screen and (min-width: 62em) {
div[data-gadget-scope='panel'] div[data-role="header"] button[data-i18n="Close"],
div[data-gadget-scope='panel'] div[data-role="header"] a[data-i18n="Close"] {
display: none;
}
}
div[data-gadget-scope='panel'] img {
text-align: left;
height: 100%;
}
div[data-gadget-scope='panel'] ul {
margin-top: 2.6em;
}
div[data-gadget-scope='panel'] ul li a {
color: #FFFFFF;
padding: .4em;
padding-left: 1em;
display: block;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
div[data-gadget-scope='panel'] ul li a::before {
width: 2em;
}
div[data-gadget-scope='panel'] ul li a:hover,
div[data-gadget-scope='panel'] ul li a:active {
background-color: #2b2b2b;
}
/**********************************************
* Gadget: editor panel
**********************************************/
div[data-gadget-scope='editor_panel'] {
background-color: #FFFFFF;
width: 17em;
min-height: 100%;
max-height: none;
position: fixed;
top: 0;
display: block;
z-index: 3000;
}
@media only screen and (min-width: 62em) {
div[data-gadget-scope='editor_panel'] {
left: -18em;
transition: transform 200ms ease-out;
transform: translate3d(0, 0, 0);
box-shadow: 5px 0 5px rgba(0, 0, 0, 0.15);
}
div[data-gadget-scope='editor_panel'].visible {
transform: translate3d(18em, 0, 0);
}
}
@media only screen and (max-width: 28em), only screen and (min-width: 28em) and (max-width: 62em) {
div[data-gadget-scope='editor_panel'] {
right: -18em;
transition: transform 200ms ease-out;
transform: translate3d(0, 0, 0);
box-shadow: -5px 0 5px rgba(0, 0, 0, 0.15);
}
div[data-gadget-scope='editor_panel'].visible {
transform: translate3d(-18em, 0, 0);
}
}
div[data-gadget-scope='editor_panel'] div[data-role="header"] {
display: flex;
justify-content: space-between;
}
div[data-gadget-scope='editor_panel'] div[data-role="header"] h1 {
text-align: left;
line-height: 2.6em;
max-height: 2.6em;
}
div[data-gadget-scope='editor_panel'] div[data-role="header"] button,
div[data-gadget-scope='editor_panel'] div[data-role="header"] a {
width: 3em;
overflow: hidden;
text-indent: -9999px;
white-space: nowrap;
display: block;
line-height: 2.6em;
}
div[data-gadget-scope='editor_panel'] div[data-role="header"] button::before,
div[data-gadget-scope='editor_panel'] div[data-role="header"] a::before {
float: left;
text-indent: 0;
margin-left: 1em;
}
div[data-gadget-scope='editor_panel'] section {
padding: 1em;
}
div[data-gadget-scope='editor_panel'] section fieldset > div {
display: inline-block;
}
div[data-gadget-scope='editor_panel'] section fieldset label {
display: inline-block;
text-align: center;
font-size: 0.8em;
}
div[data-gadget-scope='editor_panel'] section fieldset input[type="radio"] {
display: inline-block;
}
div[data-gadget-scope='editor_panel'] section .filter_item_container > div,
div[data-gadget-scope='editor_panel'] section .sort_item_container > div {
display: flex;
align-items: flex-start;
padding: 0.5em 0;
}
div[data-gadget-scope='editor_panel'] section .filter_item_container > div .filter_item,
div[data-gadget-scope='editor_panel'] section .sort_item_container > div .filter_item,
div[data-gadget-scope='editor_panel'] section .filter_item_container > div .sort_item,
div[data-gadget-scope='editor_panel'] section .sort_item_container > div .sort_item {
flex: 1;
}
div[data-gadget-scope='editor_panel'] section button {
padding: 0.5em;
border: 1px solid rgba(0, 0, 0, 0.14);
border-radius: 0.325em;
margin-right: 0.5em;
width: 2em;
overflow: hidden;
text-indent: -9999px;
white-space: nowrap;
}
div[data-gadget-scope='editor_panel'] section button:last-of-type {
margin-right: 0;
}
div[data-gadget-scope='editor_panel'] section button::before {
margin-right: 0.4em;
float: left;
text-indent: 0;
}
/**********************************************
* Gadget: header
**********************************************/
div[data-gadget-scope='header'] .ui-header {
position: fixed;
z-index: 1000;
text-align: center;
width: 100%;
color: #FFFFFF;
}
@media only screen and (min-width: 28em) and (max-width: 62em), only screen and (max-width: 28em) {
div[data-gadget-scope='header'] .ui-header {
display: flex;
flex-flow: row wrap;
}
}
@media only screen and (min-width: 62em) {
div[data-gadget-scope='header'] .ui-header {
display: table;
margin-left: 17em;
}
}
div[data-gadget-scope='header'] .ui-header button,
div[data-gadget-scope='header'] .ui-header a {
color: #FFFFFF;
background-color: #085078;
}
div[data-gadget-scope='header'] .ui-header button:hover,
div[data-gadget-scope='header'] .ui-header a:hover,
div[data-gadget-scope='header'] .ui-header button:active,
div[data-gadget-scope='header'] .ui-header a:active {
background-color: #0e90d8;
}
div[data-gadget-scope='header'] .ui-header > .ui-btn-left button,
div[data-gadget-scope='header'] .ui-header > .ui-btn-left a {
border-right: 1px solid rgba(255, 255, 255, 0.55);
}
div[data-gadget-scope='header'] .ui-header .ui-controlgroup-controls button,
div[data-gadget-scope='header'] .ui-header .ui-controlgroup-controls a {
display: block;
line-height: 2.6em;
width: 8em;
}
@media only screen and (max-width: 28em) {
div[data-gadget-scope='header'] .ui-header .ui-controlgroup-controls button,
div[data-gadget-scope='header'] .ui-header .ui-controlgroup-controls a {
width: 3em;
overflow: hidden;
text-indent: -9999px;
white-space: nowrap;
}
}
div[data-gadget-scope='header'] .ui-header .ui-controlgroup-controls button::before,
div[data-gadget-scope='header'] .ui-header .ui-controlgroup-controls a::before {
margin-right: 0.4em;
}
@media only screen and (max-width: 28em) {
div[data-gadget-scope='header'] .ui-header .ui-controlgroup-controls button::before,
div[data-gadget-scope='header'] .ui-header .ui-controlgroup-controls a::before {
float: left;
text-indent: 0;
margin-left: 1em;
}
}
@media only screen and (min-width: 62em) {
div[data-gadget-scope='header'] .ui-header .ui-controlgroup-controls button[name="panel"],
div[data-gadget-scope='header'] .ui-header .ui-controlgroup-controls a[name="panel"] {
display: none;
}
}
div[data-gadget-scope='header'] .ui-header > .ui-btn-right button,
div[data-gadget-scope='header'] .ui-header > .ui-btn-right a {
background-color: #F60;
}
@media only screen and (max-width: 28em), only screen and (min-width: 28em) and (max-width: 62em) {
div[data-gadget-scope='header'] .ui-header > .ui-btn-right button,
div[data-gadget-scope='header'] .ui-header > .ui-btn-right a {
border-left: 1px solid rgba(255, 255, 255, 0.55);
}
}
@media only screen and (min-width: 62em) {
div[data-gadget-scope='header'] .ui-header > .ui-btn-right {
display: table-footer-group;
}
div[data-gadget-scope='header'] .ui-header > .ui-btn-right button,
div[data-gadget-scope='header'] .ui-header > .ui-btn-right a {
margin: 0.5em;
margin-left: 2em;
}
}
div[data-gadget-scope='header'] .ui-header h1 {
text-align: left;
line-height: 2.6em;
flex: 1;
background-color: #085078;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
div[data-gadget-scope='header'] .ui-header h1 > span {
padding-left: 4em;
}
@media only screen and (max-width: 28em) {
div[data-gadget-scope='header'] .ui-header h1 > span {
padding-left: 2em;
}
}
@media only screen and (min-width: 62em) {
div[data-gadget-scope='header'] .ui-header h1 > span {
padding-left: 2em;
}
}
div[data-gadget-scope='header'] .ui-header h1 a {
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
div[data-gadget-scope='header'] .ui-header h1 a::before {
display: inline-block;
width: 4em;
}
@media only screen and (min-width: 28em) and (max-width: 62em), only screen and (max-width: 28em) {
div[data-gadget-scope='header'] .ui-header h1 a::before {
text-align: center;
}
}
@media only screen and (min-width: 62em) {
div[data-gadget-scope='header'] .ui-header h1 a::before {
padding-left: 2em;
}
}
@media only screen and (max-width: 28em) {
div[data-gadget-scope='header'] .ui-header h1 a::before {
width: 2em;
}
}
@media only screen and (min-width: 62em) {
div[data-gadget-scope='header'] .ui-header .ui-subheader {
text-align: left;
}
}
div[data-gadget-scope='header'] .ui-header ul {
width: 100%;
background-color: #0E81C2;
display: table;
table-layout: fixed;
}
div[data-gadget-scope='header'] .ui-header ul a {
background-color: #0E81C2;
}
@media only screen and (min-width: 62em) {
div[data-gadget-scope='header'] .ui-header ul {
height: 100%;
}
div[data-gadget-scope='header'] .ui-header ul li {
display: inline-block;
height: 100%;
}
div[data-gadget-scope='header'] .ui-header ul li a {
display: block;
padding-left: 2em;
padding-right: 2em;
min-width: 5em;
line-height: 2.6em;
height: 100%;
white-space: nowrap;
overflow: hidden;
}
div[data-gadget-scope='header'] .ui-header ul li a::before {
display: none;
}
}
@media only screen and (min-width: 28em) and (max-width: 62em) {
div[data-gadget-scope='header'] .ui-header ul li {
display: table-cell;
border-left: 1px solid rgba(0, 0, 0, 0.55);
}
div[data-gadget-scope='header'] .ui-header ul li:first-child {
border-left: none;
}
div[data-gadget-scope='header'] .ui-header ul li a {
display: block;
padding-top: 0.4em;
padding-bottom: 0.4em;
white-space: nowrap;
overflow: hidden;
}
div[data-gadget-scope='header'] .ui-header ul li a::before {
font-size: 1.2em;
padding-bottom: 0.3em;
display: block;
}
}
@media only screen and (max-width: 28em) {
div[data-gadget-scope='header'] .ui-header ul li {
line-height: 2.6em;
display: table-cell;
border-left: 1px solid rgba(0, 0, 0, 0.55);
}
div[data-gadget-scope='header'] .ui-header ul li:first-child {
border-left: none;
}
div[data-gadget-scope='header'] .ui-header ul li a {
display: block;
text-align: center;
vertical-align: middle;
font-size: 1.5em;
padding-top: 0.4em;
padding-bottom: 0.4em;
overflow: hidden;
text-indent: -9999px;
white-space: nowrap;
}
div[data-gadget-scope='header'] .ui-header ul li a::before {
float: left;
text-indent: 0;
width: 100%;
}
}
/**********************************************
* Gadget: main
**********************************************/
.gadget-content {
padding: 2em;
padding-top: 9em;
/* form validation (assuming label>span is used) */
}
.gadget-content input[type='submit'] {
padding: 0.4em;
line-height: 1.4em;
background-color: #444444;
color: #FFFFFF;
border-radius: 0.325em;
border-width: 1px;
border-style: solid;
min-width: 8em;
}
.gadget-content input[type='submit']:hover,
.gadget-content input[type='submit']:focus {
background-color: #5e5e5e;
}
.gadget-content input[type='submit']:active {
background-color: #777777;
}
@media only screen and (min-width: 62em) {
.gadget-content {
margin-left: 17em;
}
}
@media only screen and (max-width: 28em) {
.gadget-content {
padding: 0.5em;
padding-top: 8em;
}
}
.gadget-content .ui-field-contain {
padding: 0.5em 0;
}
.gadget-content .ui-field-contain div {
width: 100%;
}
.gadget-content .ui-field-contain label {
margin: 0 0 0.4em;
}
.gadget-content .ui-content-title {
font-size: 150%;
}
.gadget-content ul.document-listview {
margin-bottom: 2em;
}
.gadget-content ul.document-listview li {
border-color: rgba(0, 0, 0, 0.3);
border-width: 1px;
border-style: solid;
border-bottom-style: none;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
}
.gadget-content ul.document-listview li:not(.ui-li-has-count) a:after {
font-family: FontAwesome;
content: "\f0da";
text-align: right;
float: right;
position: absolute;
right: 1.5em;
}
.gadget-content ul.document-listview li a {
display: block;
position: relative;
padding: 0.7em 1em;
padding-right: 2.5em;
color: #222222;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.gadget-content ul.document-listview li a:hover,
.gadget-content ul.document-listview li a:active {
background-color: #e0e0e0;
}
.gadget-content ul.document-listview li:first-child {
border-top-left-radius: 0.325em;
border-top-right-radius: 0.325em;
}
.gadget-content ul.document-listview li:last-child {
border-bottom-left-radius: 0.325em;
border-bottom-right-radius: 0.325em;
border-bottom-style: solid;
}
.gadget-content ul.document-listview li .ui-li-count {
float: right;
padding: 0 0.5em;
border: 1px solid rgba(0, 0, 0, 0.14);
border-radius: 0.325em;
position: absolute;
right: .5em;
}
@media only screen and (min-width: 62em) {
.gadget-content .left,
.gadget-content .right {
vertical-align: top;
display: inline-block;
width: 50%;
}
.gadget-content .right {
padding-left: 2%;
}
}
@media only screen and (min-width: 28em) and (max-width: 62em), only screen and (min-width: 62em) {
.gadget-content .ui-field-contain {
display: flex;
}
.gadget-content .ui-field-contain label {
flex: 1;
}
.gadget-content .ui-field-contain label + div {
flex: 3;
}
}
@media only screen and (min-width: 62em) {
.gadget-content .center .ui-field-contain label + div {
flex: 7;
}
}
@media only screen and (max-width: 28em) {
.gadget-content .ui-field-contain {
padding: 0.8em 0;
}
}
.gadget-content form label span {
color: red;
}
/**********************************************
* Gadget: relation field
**********************************************/
.relation-input {
display: flex;
}
.relation-input a {
width: 3em;
overflow: hidden;
text-indent: -9999px;
white-space: nowrap;
display: block;
line-height: 2.6em;
}
.relation-input a::before {
float: left;
text-indent: 0;
margin-left: 1em;
}
.relation-input div {
position: relative;
}
.relation-input ul {
position: absolute;
display: block;
width: 100%;
z-index: 501;
}
.relation-input ul li {
cursor: pointer;
background-color: #444444;
color: #FFFFFF;
padding: .4em;
padding-left: 1em;
display: block;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.relation-input ul li::before {
width: 2em;
}
.relation-input ul li:hover,
.relation-input ul li:active {
background-color: #2b2b2b;
}
/**********************************************
* Listbox
**********************************************/
div[data-gadget-scope='erp5_searchfield'] .ui-input-text {
display: flex;
}
div[data-gadget-scope='erp5_searchfield'] button {
margin-left: 0.5em;
padding: 0.5em;
padding-left: 0;
}
.document_table .ui-table-header {
display: flex;
padding-bottom: 0.5em;
}
@media only screen and (max-width: 28em) {
.document_table .ui-table-header {
border-bottom: 2px solid rgba(0, 0, 0, 0.14902);
}
}
.document_table .ui-table-header h1 {
color: #777777;
flex: 2;
align-self: flex-end;
}
.document_table .ui-table-header button {
padding: 0.5em;
border: 1px solid rgba(0, 0, 0, 0.14);
border-radius: 0.325em;
margin-right: 0.5em;
}
.document_table .ui-table-header button:last-of-type {
margin-right: 0;
}
@media only screen and (max-width: 28em) {
.document_table .ui-table-header button {
width: 2em;
overflow: hidden;
text-indent: -9999px;
white-space: nowrap;
}
}
.document_table .ui-table-header button::before {
margin-right: 0.4em;
}
@media only screen and (max-width: 28em) {
.document_table .ui-table-header button::before {
float: left;
text-indent: 0;
}
}
.document_table table {
width: 100%;
text-align: left;
}
.document_table table th,
.document_table table td {
line-height: 1.5em;
vertical-align: middle;
}
.document_table table thead {
background-color: #0E81C2;
color: #FFFFFF;
}
.document_table table thead tr th {
padding: 0.4em 0.25em;
}
@media only screen and (max-width: 28em) {
.document_table table thead {
display: none;
}
}
.document_table table a {
color: #1F1F1F;
}
.document_table table tbody tr:nth-child(even) {
background-color: #f2f2f2;
}
.document_table table tbody tr:hover,
.document_table table tbody tr:active {
background-color: #e0e0e0;
}
@media only screen and (min-width: 62em), only screen and (min-width: 28em) and (max-width: 62em) {
.document_table table tbody a {
display: block;
padding: 0.4em 0.25em;
}
}
@media only screen and (max-width: 28em) {
.document_table table tbody tr {
display: block;
overflow: hidden;
width: 100%;
height: 4em;
position: relative;
}
.document_table table tbody tr td,
.document_table table tbody tr th {
display: inline-block;
}
.document_table table tbody tr td:first-child,
.document_table table tbody tr th:first-child {
display: inline-block;
width: 100%;
}
.document_table table tbody tr td:first-child a,
.document_table table tbody tr th:first-child a {
position: absolute;
width: 100%;
top: 0;
bottom: 0;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.document_table table tbody tr td:first-child a:after,
.document_table table tbody tr th:first-child a:after {
font-family: FontAwesome;
content: "\f0da";
font-size: 1.25em;
position: absolute;
right: 0.5em;
top: 50%;
margin-top: -0.75em;
background-color: #FFFFFF;
border-radius: 0.5em;
width: 1em;
text-align: center;
line-height: 1em;
}
.document_table table tbody tr td:first-child ~ th,
.document_table table tbody tr th:first-child ~ th,
.document_table table tbody tr td:first-child ~ td,
.document_table table tbody tr th:first-child ~ td {
font-size: 0.8em;
}
.document_table table tbody tr td:first-child ~ th a,
.document_table table tbody tr th:first-child ~ th a,
.document_table table tbody tr td:first-child ~ td a,
.document_table table tbody tr th:first-child ~ td a {
pointer-events: none;
}
.document_table table tbody tr td:first-child ~ th:not(:last-child) a:not(:empty):after,
.document_table table tbody tr th:first-child ~ th:not(:last-child) a:not(:empty):after,
.document_table table tbody tr td:first-child ~ td:not(:last-child) a:not(:empty):after,
.document_table table tbody tr th:first-child ~ td:not(:last-child) a:not(:empty):after {
content: " ~ ";
}
}
.document_table table tfoot .ui-controlgroup-controls {
display: flex;
padding-top: 0.5em;
border-top: 2px solid rgba(0, 0, 0, 0.14902);
}
.document_table table tfoot .ui-controlgroup-controls span {
opacity: .3;
flex: 2;
text-align: right;
}
.document_table table tfoot .ui-controlgroup-controls a {
padding: 0.5em;
border: 1px solid rgba(0, 0, 0, 0.14);
border-radius: 0.325em;
margin-right: 0.5em;
}
.document_table table tfoot .ui-controlgroup-controls a:last-of-type {
margin-right: 0;
}
.document_table table tfoot .ui-controlgroup-controls a:hover,
.document_table table tfoot .ui-controlgroup-controls a:active {
background-color: #e0e0e0;
}
@media only screen and (max-width: 28em) {
.document_table table tfoot .ui-controlgroup-controls a {
width: 2em;
overflow: hidden;
text-indent: -9999px;
white-space: nowrap;
}
}
.document_table table tfoot .ui-controlgroup-controls a::before {
margin-right: 0.4em;
}
@media only screen and (max-width: 28em) {
.document_table table tfoot .ui-controlgroup-controls a::before {
float: left;
text-indent: 0.3em;
}
}
/**********************************************
* JQM
**********************************************/
.ui-disabled {
opacity: .3;
cursor: default;
pointer-events: none;
}
.ui-screen-hidden {
display: none;
}
/**********************************************
* Keyframes
**********************************************/
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
/**********************************************
* Icons
**********************************************/
.ui-btn-icon-top::before,
.ui-btn-icon-left::before,
.ui-btn-icon-right::before,
.ui-icon::before,
.ui-btn-icon-notext::before {
font-family: FontAwesome;
display: inline-block;
content: "";
}
.ui-icon-warning {
background: none repeat scroll 0 0 #e4ebf1;
border-color: rgba(0, 0, 0, 0.3);
color: #777;
}
.ui-icon-warning::before {
content: "\f071";
}
.ui-icon-spinner {
opacity: 1;
}
.ui-icon-spinner::before {
content: "\f110";
animation: spin .5s infinite linear;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
.ui-icon-glass::before {
content: "\f000";
}
.ui-icon-music::before {
content: "\f001";
}
.ui-icon-search::before {
content: "\f002";
}
.ui-icon-envelope-o::before {
content: "\f003";
}
.ui-icon-heart::before {
content: "\f004";
}
.ui-icon-star::before {
content: "\f005";
}
.ui-icon-star-o::before {
content: "\f006";
}
.ui-icon-user::before {
content: "\f007";
}
.ui-icon-film::before {
content: "\f008";
}
.ui-icon-th-large::before {
content: "\f009";
}
.ui-icon-th::before {
content: "\f00a";
}
.ui-icon-th-list::before {
content: "\f00b";
}
.ui-icon-check::before {
content: "\f00c";
}
.ui-icon-times::before,
.ui-icon-delete::before {
content: "\f00d";
}
.ui-icon-search-plus::before {
content: "\f00e";
}
.ui-icon-search-minus::before {
content: "\f010";
}
.ui-icon-power-off::before {
content: "\f011";
}
.ui-icon-signal::before {
content: "\f012";
}
.ui-icon-gear::before,
.ui-icon-cog::before {
content: "\f013";
}
.ui-icon-trash-o::before {
content: "\f014";
}
.ui-icon-home::before {
content: "\f015";
}
.ui-icon-file-o::before {
content: "\f016";
}
.ui-icon-clock-o::before {
content: "\f017";
}
.ui-icon-road::before {
content: "\f018";
}
.ui-icon-download::before {
content: "\f019";
}
.ui-icon-arrow-circle-o-down::before {
content: "\f01a";
}
.ui-icon-arrow-circle-o-up::before {
content: "\f01b";
}
.ui-icon-inbox::before {
content: "\f01c";
}
.ui-icon-play-circle-o::before {
content: "\f01d";
}
.ui-icon-rotate-right::before,
.ui-icon-repeat::before {
content: "\f01e";
}
.ui-icon-refresh::before {
content: "\f021";
}
.ui-icon-list-alt::before {
content: "\f022";
}
.ui-icon-lock::before {
content: "\f023";
}
.ui-icon-flag::before {
content: "\f024";
}
.ui-icon-headphones::before {
content: "\f025";
}
.ui-icon-volume-off::before {
content: "\f026";
}
.ui-icon-volume-down::before {
content: "\f027";
}
.ui-icon-volume-up::before {
content: "\f028";
}
.ui-icon-qrcode::before {
content: "\f029";
}
.ui-icon-barcode::before {
content: "\f02a";
}
.ui-icon-tag::before {
content: "\f02b";
}
.ui-icon-tags::before {
content: "\f02c";
}
.ui-icon-book::before {
content: "\f02d";
}
.ui-icon-bookmark::before {
content: "\f02e";
}
.ui-icon-print::before {
content: "\f02f";
}
.ui-icon-camera::before {
content: "\f030";
}
.ui-icon-font::before {
content: "\f031";
}
.ui-icon-bold::before {
content: "\f032";
}
.ui-icon-italic::before {
content: "\f033";
}
.ui-icon-text-height::before {
content: "\f034";
}
.ui-icon-text-width::before {
content: "\f035";
}
.ui-icon-align-left::before {
content: "\f036";
}
.ui-icon-align-center::before {
content: "\f037";
}
.ui-icon-align-right::before {
content: "\f038";
}
.ui-icon-align-justify::before {
content: "\f039";
}
.ui-icon-list::before {
content: "\f03a";
}
.ui-icon-dedent::before,
.ui-icon-outdent::before {
content: "\f03b";
}
.ui-icon-indent::before {
content: "\f03c";
}
.ui-icon-video-camera::before {
content: "\f03d";
}
.ui-icon-photo::before,
.ui-icon-image::before,
.ui-icon-picture-o::before {
content: "\f03e";
}
.ui-icon-pencil::before {
content: "\f040";
}
.ui-icon-map-marker::before {
content: "\f041";
}
.ui-icon-adjust::before {
content: "\f042";
}
.ui-icon-tint::before {
content: "\f043";
}
.ui-icon-edit::before,
.ui-icon-pencil-square-o::before {
content: "\f044";
}
.ui-icon-share-square-o::before {
content: "\f045";
}
.ui-icon-check-square-o::before,
.ui-icon-checkbox-on::before,
.ui-checkbox-on::before {
content: "\f046";
}
.ui-icon-arrows::before {
content: "\f047";
}
.ui-icon-step-backward::before {
content: "\f048";
}
.ui-icon-fast-backward::before {
content: "\f049";
}
.ui-icon-backward::before {
content: "\f04a";
}
.ui-icon-play::before {
content: "\f04b";
}
.ui-icon-pause::before {
content: "\f04c";
}
.ui-icon-stop::before {
content: "\f04d";
}
.ui-icon-forward::before {
content: "\f04e";
}
.ui-icon-fast-forward::before {
content: "\f050";
}
.ui-icon-step-forward::before {
content: "\f051";
}
.ui-icon-eject::before {
content: "\f052";
}
.ui-icon-chevron-left::before {
content: "\f053";
}
.ui-icon-chevron-right::before {
content: "\f054";
}
.ui-icon-plus-circle::before {
content: "\f055";
}
.ui-icon-minus-circle::before {
content: "\f056";
}
.ui-icon-times-circle::before {
content: "\f057";
}
.ui-icon-check-circle::before {
content: "\f058";
}
.ui-icon-question-circle::before {
content: "\f059";
}
.ui-icon-info-circle::before {
content: "\f05a";
}
.ui-icon-crosshairs::before {
content: "\f05b";
}
.ui-icon-times-circle-o::before {
content: "\f05c";
}
.ui-icon-check-circle-o::before,
.ui-icon-radio-off::before,
.ui-radio-on::before {
content: "\f05d";
}
.ui-icon-ban::before {
content: "\f05e";
}
.ui-icon-arrow-left::before {
content: "\f060";
}
.ui-icon-arrow-right::before {
content: "\f061";
}
.ui-icon-arrow-up::before {
content: "\f062";
}
.ui-icon-arrow-down::before {
content: "\f063";
}
.ui-icon-mail-forward::before,
.ui-icon-share::before {
content: "\f064";
}
.ui-icon-expand::before {
content: "\f065";
}
.ui-icon-compress::before {
content: "\f066";
}
.ui-icon-plus::before {
content: "\f067";
}
.ui-icon-minus::before {
content: "\f068";
}
.ui-icon-asterisk::before {
content: "\f069";
}
.ui-icon-exclamation-circle::before {
content: "\f06a";
}
.ui-icon-gift::before {
content: "\f06b";
}
.ui-icon-leaf::before {
content: "\f06c";
}
.ui-icon-fire::before {
content: "\f06d";
}
.ui-icon-eye::before {
content: "\f06e";
}
.ui-icon-eye-slash::before {
content: "\f070";
}
.ui-icon-exclamation-triangle::before {
content: "\f071";
}
.ui-icon-plane::before {
content: "\f072";
}
.ui-icon-calendar::before {
content: "\f073";
}
.ui-icon-random::before {
content: "\f074";
}
.ui-icon-comment::before {
content: "\f075";
}
.ui-icon-magnet::before {
content: "\f076";
}
.ui-icon-chevron-up::before {
content: "\f077";
}
.ui-icon-chevron-down::before {
content: "\f078";
}
.ui-icon-retweet::before {
content: "\f079";
}
.ui-icon-shopping-cart::before {
content: "\f07a";
}
.ui-icon-folder::before {
content: "\f07b";
}
.ui-icon-folder-open::before {
content: "\f07c";
}
.ui-icon-arrows-v::before {
content: "\f07d";
}
.ui-icon-arrows-h::before {
content: "\f07e";
}
.ui-icon-bar-chart-o::before {
content: "\f080";
}
.ui-icon-twitter-square::before {
content: "\f081";
}
.ui-icon-facebook-square::before {
content: "\f082";
}
.ui-icon-camera-retro::before {
content: "\f083";
}
.ui-icon-key::before {
content: "\f084";
}
.ui-icon-gears::before,
.ui-icon-cogs::before {
content: "\f085";
}
.ui-icon-comments::before {
content: "\f086";
}
.ui-icon-thumbs-o-up::before {
content: "\f087";
}
.ui-icon-thumbs-o-down::before {
content: "\f088";
}
.ui-icon-star-half::before {
content: "\f089";
}
.ui-icon-heart-o::before {
content: "\f08a";
}
.ui-icon-sign-out::before {
content: "\f08b";
}
.ui-icon-linkedin-square::before {
content: "\f08c";
}
.ui-icon-thumb-tack::before {
content: "\f08d";
}
.ui-icon-external-link::before {
content: "\f08e";
}
.ui-icon-sign-in::before {
content: "\f090";
}
.ui-icon-trophy::before {
content: "\f091";
}
.ui-icon-github-square::before {
content: "\f092";
}
.ui-icon-upload::before {
content: "\f093";
}
.ui-icon-lemon-o::before {
content: "\f094";
}
.ui-icon-phone::before {
content: "\f095";
}
.ui-icon-square-o::before,
.ui-icon-checkbox-off::before,
.ui-checkbox-off::before {
content: "\f096";
}
.ui-icon-bookmark-o::before {
content: "\f097";
}
.ui-icon-phone-square::before {
content: "\f098";
}
.ui-icon-twitter::before {
content: "\f099";
}
.ui-icon-facebook::before {
content: "\f09a";
}
.ui-icon-github::before {
content: "\f09b";
}
.ui-icon-unlock::before {
content: "\f09c";
}
.ui-icon-credit-card::before {
content: "\f09d";
}
.ui-icon-rss::before {
content: "\f09e";
}
.ui-icon-hdd-o::before {
content: "\f0a0";
}
.ui-icon-bullhorn::before {
content: "\f0a1";
}
.ui-icon-bell::before {
content: "\f0f3";
}
.ui-icon-certificate::before {
content: "\f0a3";
}
.ui-icon-hand-o-right::before {
content: "\f0a4";
}
.ui-icon-hand-o-left::before {
content: "\f0a5";
}
.ui-icon-hand-o-up::before {
content: "\f0a6";
}
.ui-icon-hand-o-down::before {
content: "\f0a7";
}
.ui-icon-arrow-circle-left::before {
content: "\f0a8";
}
.ui-icon-arrow-circle-right::before {
content: "\f0a9";
}
.ui-icon-arrow-circle-up::before {
content: "\f0aa";
}
.ui-icon-arrow-circle-down::before {
content: "\f0ab";
}
.ui-icon-globe::before {
content: "\f0ac";
}
.ui-icon-wrench::before {
content: "\f0ad";
}
.ui-icon-tasks::before {
content: "\f0ae";
}
.ui-icon-filter::before {
content: "\f0b0";
}
.ui-icon-briefcase::before {
content: "\f0b1";
}
.ui-icon-arrows-alt::before {
content: "\f0b2";
}
.ui-icon-group::before,
.ui-icon-users::before {
content: "\f0c0";
}
.ui-icon-chain::before,
.ui-icon-link::before {
content: "\f0c1";
}
.ui-icon-cloud::before {
content: "\f0c2";
}
.ui-icon-flask::before {
content: "\f0c3";
}
.ui-icon-cut::before,
.ui-icon-scissors::before {
content: "\f0c4";
}
.ui-icon-copy::before,
.ui-icon-files-o::before {
content: "\f0c5";
}
.ui-icon-paperclip::before {
content: "\f0c6";
}
.ui-icon-save::before,
.ui-icon-floppy-o::before {
content: "\f0c7";
}
.ui-icon-square::before {
content: "\f0c8";
}
.ui-icon-navicon::before,
.ui-icon-reorder::before,
.ui-icon-bars::before {
content: "\f0c9";
}
.ui-icon-list-ul::before {
content: "\f0ca";
}
.ui-icon-list-ol::before {
content: "\f0cb";
}
.ui-icon-strikethrough::before {
content: "\f0cc";
}
.ui-icon-underline::before {
content: "\f0cd";
}
.ui-icon-table::before {
content: "\f0ce";
}
.ui-icon-magic::before {
content: "\f0d0";
}
.ui-icon-truck::before {
content: "\f0d1";
}
.ui-icon-pinterest::before {
content: "\f0d2";
}
.ui-icon-pinterest-square::before {
content: "\f0d3";
}
.ui-icon-google-plus-square::before {
content: "\f0d4";
}
.ui-icon-google-plus::before {
content: "\f0d5";
}
.ui-icon-money::before {
content: "\f0d6";
}
.ui-icon-caret-down::before,
.ui-icon-carat-d::before {
content: "\f0d7";
}
.ui-icon-caret-up::before,
hmtl .ui-icon-carat-u::before {
content: "\f0d8";
}
.ui-icon-caret-left::before,
.ui-icon-carat-l::before {
content: "\f0d9";
}
.ui-icon-caret-right::before,
.ui-icon-carat-r::before {
content: "\f0da";
}
.ui-icon-columns::before {
content: "\f0db";
}
.ui-icon-unsorted::before,
.ui-icon-sort::before {
content: "\f0dc";
}
.ui-icon-sort-down::before,
.ui-icon-sort-desc::before {
content: "\f0dd";
}
.ui-icon-sort-up::before,
.ui-icon-sort-asc::before {
content: "\f0de";
}
.ui-icon-envelope::before {
content: "\f0e0";
}
.ui-icon-linkedin::before {
content: "\f0e1";
}
.ui-icon-rotate-left::before,
.ui-icon-undo::before {
content: "\f0e2";
}
.ui-icon-legal::before,
.ui-icon-gavel::before {
content: "\f0e3";
}
.ui-icon-dashboard::before,
.ui-icon-tachometer::before {
content: "\f0e4";
}
.ui-icon-comment-o::before {
content: "\f0e5";
}
.ui-icon-comments-o::before {
content: "\f0e6";
}
.ui-icon-flash::before,
.ui-icon-bolt::before {
content: "\f0e7";
}
.ui-icon-sitemap::before {
content: "\f0e8";
}
.ui-icon-umbrella::before {
content: "\f0e9";
}
.ui-icon-paste::before,
.ui-icon-clipboard::before {
content: "\f0ea";
}
.ui-icon-lightbulb-o::before {
content: "\f0eb";
}
.ui-icon-exchange::before {
content: "\f0ec";
}
.ui-icon-cloud-download::before {
content: "\f0ed";
}
.ui-icon-cloud-upload::before {
content: "\f0ee";
}
.ui-icon-user-md::before {
content: "\f0f0";
}
.ui-icon-stethoscope::before {
content: "\f0f1";
}
.ui-icon-suitcase::before {
content: "\f0f2";
}
.ui-icon-bell-o::before {
content: "\f0a2";
}
.ui-icon-coffee::before {
content: "\f0f4";
}
.ui-icon-cutlery::before {
content: "\f0f5";
}
.ui-icon-file-text-o::before {
content: "\f0f6";
}
.ui-icon-building-o::before {
content: "\f0f7";
}
.ui-icon-hospital-o::before {
content: "\f0f8";
}
.ui-icon-ambulance::before {
content: "\f0f9";
}
.ui-icon-medkit::before {
content: "\f0fa";
}
.ui-icon-fighter-jet::before {
content: "\f0fb";
}
.ui-icon-beer::before {
content: "\f0fc";
}
.ui-icon-h-square::before {
content: "\f0fd";
}
.ui-icon-plus-square::before {
content: "\f0fe";
}
.ui-icon-angle-double-left::before {
content: "\f100";
}
.ui-icon-angle-double-right::before {
content: "\f101";
}
.ui-icon-angle-double-up::before {
content: "\f102";
}
.ui-icon-angle-double-down::before {
content: "\f103";
}
.ui-icon-angle-left::before {
content: "\f104";
}
.ui-icon-angle-right::before {
content: "\f105";
}
.ui-icon-angle-up::before {
content: "\f106";
}
.ui-icon-angle-down::before {
content: "\f107";
}
.ui-icon-desktop::before {
content: "\f108";
}
.ui-icon-laptop::before {
content: "\f109";
}
.ui-icon-tablet::before {
content: "\f10a";
}
.ui-icon-mobile-phone::before,
.ui-icon-mobile::before {
content: "\f10b";
}
.ui-icon-circle-o::before,
.ui-radio-off::before {
content: "\f10c";
}
.ui-icon-quote-left::before {
content: "\f10d";
}
.ui-icon-quote-right::before {
content: "\f10e";
}
.ui-icon-circle::before {
content: "\f111";
}
.ui-icon-mail-reply::before,
.ui-icon-reply::before {
content: "\f112";
}
.ui-icon-github-alt::before {
content: "\f113";
}
.ui-icon-folder-o::before {
content: "\f114";
}
.ui-icon-folder-open-o::before {
content: "\f115";
}
.ui-icon-smile-o::before {
content: "\f118";
}
.ui-icon-frown-o::before {
content: "\f119";
}
.ui-icon-meh-o::before {
content: "\f11a";
}
.ui-icon-gamepad::before {
content: "\f11b";
}
.ui-icon-keyboard-o::before {
content: "\f11c";
}
.ui-icon-flag-o::before {
content: "\f11d";
}
.ui-icon-flag-checkered::before {
content: "\f11e";
}
.ui-icon-terminal::before {
content: "\f120";
}
.ui-icon-code::before {
content: "\f121";
}
.ui-icon-mail-reply-all::before,
.ui-icon-reply-all::before {
content: "\f122";
}
.ui-icon-star-half-empty::before,
.ui-icon-star-half-full::before,
.ui-icon-star-half-o::before {
content: "\f123";
}
.ui-icon-location-arrow::before {
content: "\f124";
}
.ui-icon-crop::before {
content: "\f125";
}
.ui-icon-code-fork::before {
content: "\f126";
}
.ui-icon-unlink::before,
.ui-icon-chain-broken::before {
content: "\f127";
}
.ui-icon-question::before {
content: "\f128";
}
.ui-icon-info::before {
content: "\f129";
}
.ui-icon-exclamation::before {
content: "\f12a";
}
.ui-icon-superscript::before {
content: "\f12b";
}
.ui-icon-subscript::before {
content: "\f12c";
}
.ui-icon-eraser::before {
content: "\f12d";
}
.ui-icon-puzzle-piece::before {
content: "\f12e";
}
.ui-icon-microphone::before {
content: "\f130";
}
.ui-icon-microphone-slash::before {
content: "\f131";
}
.ui-icon-shield::before {
content: "\f132";
}
.ui-icon-calendar-o::before {
content: "\f133";
}
.ui-icon-fire-extinguisher::before {
content: "\f134";
}
.ui-icon-rocket::before {
content: "\f135";
}
.ui-icon-maxcdn::before {
content: "\f136";
}
.ui-icon-chevron-circle-left::before {
content: "\f137";
}
.ui-icon-chevron-circle-right::before {
content: "\f138";
}
.ui-icon-chevron-circle-up::before {
content: "\f139";
}
.ui-icon-chevron-circle-down::before {
content: "\f13a";
}
.ui-icon-html5::before {
content: "\f13b";
}
.ui-icon-css3::before {
content: "\f13c";
}
.ui-icon-anchor::before {
content: "\f13d";
}
.ui-icon-unlock-alt::before {
content: "\f13e";
}
.ui-icon-bullseye::before {
content: "\f140";
}
.ui-icon-ellipsis-h::before {
content: "\f141";
}
.ui-icon-ellipsis-v::before {
content: "\f142";
}
.ui-icon-rss-square::before {
content: "\f143";
}
.ui-icon-play-circle::before {
content: "\f144";
}
.ui-icon-ticket::before {
content: "\f145";
}
.ui-icon-minus-square::before {
content: "\f146";
}
.ui-icon-minus-square-o::before {
content: "\f147";
}
.ui-icon-level-up::before {
content: "\f148";
}
.ui-icon-level-down::before {
content: "\f149";
}
.ui-icon-check-square::before {
content: "\f14a";
}
.ui-icon-pencil-square::before {
content: "\f14b";
}
.ui-icon-external-link-square::before {
content: "\f14c";
}
.ui-icon-share-square::before {
content: "\f14d";
}
.ui-icon-compass::before {
content: "\f14e";
}
.ui-icon-toggle-down::before,
.ui-icon-caret-square-o-down::before {
content: "\f150";
}
.ui-icon-toggle-up::before,
.ui-icon-caret-square-o-up::before {
content: "\f151";
}
.ui-icon-toggle-right::before,
.ui-icon-caret-square-o-right::before {
content: "\f152";
}
.ui-icon-euro::before,
.ui-icon-eur::before {
content: "\f153";
}
.ui-icon-gbp::before {
content: "\f154";
}
.ui-icon-dollar::before,
.ui-icon-usd::before {
content: "\f155";
}
.ui-icon-rupee::before,
.ui-icon-inr::before {
content: "\f156";
}
.ui-icon-cny::before,
.ui-icon-rmb::before,
.ui-icon-yen::before,
.ui-icon-jpy::before {
content: "\f157";
}
.ui-icon-ruble::before,
.ui-icon-rouble::before,
.ui-icon-rub::before {
content: "\f158";
}
.ui-icon-won::before,
.ui-icon-krw::before {
content: "\f159";
}
.ui-icon-bitcoin::before,
.ui-icon-btc::before {
content: "\f15a";
}
.ui-icon-file::before {
content: "\f15b";
}
.ui-icon-file-text::before {
content: "\f15c";
}
.ui-icon-sort-alpha-asc::before {
content: "\f15d";
}
.ui-icon-sort-alpha-desc::before {
content: "\f15e";
}
.ui-icon-sort-amount-asc::before {
content: "\f160";
}
.ui-icon-sort-amount-desc::before {
content: "\f161";
}
.ui-icon-sort-numeric-asc::before {
content: "\f162";
}
.ui-icon-sort-numeric-desc::before {
content: "\f163";
}
.ui-icon-thumbs-up::before {
content: "\f164";
}
.ui-icon-thumbs-down::before {
content: "\f165";
}
.ui-icon-youtube-square::before {
content: "\f166";
}
.ui-icon-youtube::before {
content: "\f167";
}
.ui-icon-xing::before {
content: "\f168";
}
.ui-icon-xing-square::before {
content: "\f169";
}
.ui-icon-youtube-play::before {
content: "\f16a";
}
.ui-icon-dropbox::before {
content: "\f16b";
}
.ui-icon-stack-overflow::before {
content: "\f16c";
}
.ui-icon-instagram::before {
content: "\f16d";
}
.ui-icon-flickr::before {
content: "\f16e";
}
.ui-icon-adn::before {
content: "\f170";
}
.ui-icon-bitbucket::before {
content: "\f171";
}
.ui-icon-bitbucket-square::before {
content: "\f172";
}
.ui-icon-tumblr::before {
content: "\f173";
}
.ui-icon-tumblr-square::before {
content: "\f174";
}
.ui-icon-long-arrow-down::before {
content: "\f175";
}
.ui-icon-long-arrow-up::before {
content: "\f176";
}
.ui-icon-long-arrow-left::before {
content: "\f177";
}
.ui-icon-long-arrow-right::before {
content: "\f178";
}
.ui-icon-apple::before {
content: "\f179";
}
.ui-icon-windows::before {
content: "\f17a";
}
.ui-icon-android::before {
content: "\f17b";
}
.ui-icon-linux::before {
content: "\f17c";
}
.ui-icon-dribbble::before {
content: "\f17d";
}
.ui-icon-skype::before {
content: "\f17e";
}
.ui-icon-foursquare::before {
content: "\f180";
}
.ui-icon-trello::before {
content: "\f181";
}
.ui-icon-female::before {
content: "\f182";
}
.ui-icon-male::before {
content: "\f183";
}
.ui-icon-gittip::before {
content: "\f184";
}
.ui-icon-sun-o::before {
content: "\f185";
}
.ui-icon-moon-o::before {
content: "\f186";
}
.ui-icon-archive::before {
content: "\f187";
}
.ui-icon-bug::before {
content: "\f188";
}
.ui-icon-vk::before {
content: "\f189";
}
.ui-icon-weibo::before {
content: "\f18a";
}
.ui-icon-renren::before {
content: "\f18b";
}
.ui-icon-pagelines::before {
content: "\f18c";
}
.ui-icon-stack-exchange::before {
content: "\f18d";
}
.ui-icon-arrow-circle-o-right::before {
content: "\f18e";
}
.ui-icon-arrow-circle-o-left::before {
content: "\f190";
}
.ui-icon-toggle-left::before,
.ui-icon-caret-square-o-left::before {
content: "\f191";
}
.ui-icon-dot-circle-o::before {
content: "\f192";
}
.ui-icon-wheelchair::before {
content: "\f193";
}
.ui-icon-vimeo-square::before {
content: "\f194";
}
.ui-icon-turkish-lira::before,
.ui-icon-try::before {
content: "\f195";
}
.ui-icon-plus-square-o::before {
content: "\f196";
}
.ui-icon-space-shuttle::before {
content: "\f197";
}
.ui-icon-slack::before {
content: "\f198";
}
.ui-icon-envelope-square::before {
content: "\f199";
}
.ui-icon-wordpress::before {
content: "\f19a";
}
.ui-icon-openid::before {
content: "\f19b";
}
.ui-icon-institution::before,
.ui-icon-bank::before,
.ui-icon-university::before {
content: "\f19c";
}
.ui-icon-mortar-board::before,
.ui-icon-graduation-cap::before {
content: "\f19d";
}
.ui-icon-yahoo::before {
content: "\f19e";
}
.ui-icon-google::before {
content: "\f1a0";
}
.ui-icon-reddit::before {
content: "\f1a1";
}
.ui-icon-reddit-square::before {
content: "\f1a2";
}
.ui-icon-stumbleupon-circle::before {
content: "\f1a3";
}
.ui-icon-stumbleupon::before {
content: "\f1a4";
}
.ui-icon-delicious::before {
content: "\f1a5";
}
.ui-icon-digg::before {
content: "\f1a6";
}
.ui-icon-pied-piper-square::before,
.ui-icon-pied-piper::before {
content: "\f1a7";
}
.ui-icon-pied-piper-alt::before {
content: "\f1a8";
}
.ui-icon-drupal::before {
content: "\f1a9";
}
.ui-icon-joomla::before {
content: "\f1aa";
}
.ui-icon-language::before {
content: "\f1ab";
}
.ui-icon-fax::before {
content: "\f1ac";
}
.ui-icon-building::before {
content: "\f1ad";
}
.ui-icon-child::before {
content: "\f1ae";
}
.ui-icon-paw::before {
content: "\f1b0";
}
.ui-icon-spoon::before {
content: "\f1b1";
}
.ui-icon-cube::before {
content: "\f1b2";
}
.ui-icon-cubes::before {
content: "\f1b3";
}
.ui-icon-behance::before {
content: "\f1b4";
}
.ui-icon-behance-square::before {
content: "\f1b5";
}
.ui-icon-steam::before {
content: "\f1b6";
}
.ui-icon-steam-square::before {
content: "\f1b7";
}
.ui-icon-recycle::before {
content: "\f1b8";
}
.ui-icon-automobile::before,
.ui-icon-car::before {
content: "\f1b9";
}
.ui-icon-cab::before,
.ui-icon-taxi::before {
content: "\f1ba";
}
.ui-icon-tree::before {
content: "\f1bb";
}
.ui-icon-spotify::before {
content: "\f1bc";
}
.ui-icon-deviantart::before {
content: "\f1bd";
}
.ui-icon-soundcloud::before {
content: "\f1be";
}
.ui-icon-database::before {
content: "\f1c0";
}
.ui-icon-file-pdf-o::before {
content: "\f1c1";
}
.ui-icon-file-word-o::before {
content: "\f1c2";
}
.ui-icon-file-excel-o::before {
content: "\f1c3";
}
.ui-icon-file-powerpoint-o::before {
content: "\f1c4";
}
.ui-icon-file-photo-o::before,
.ui-icon-file-picture-o::before,
.ui-icon-file-image-o::before {
content: "\f1c5";
}
.ui-icon-file-zip-o::before,
.ui-icon-file-archive-o::before {
content: "\f1c6";
}
.ui-icon-file-sound-o::before,
.ui-icon-file-audio-o::before {
content: "\f1c7";
}
.ui-icon-file-movie-o::before,
.ui-icon-file-video-o::before {
content: "\f1c8";
}
.ui-icon-file-code-o::before {
content: "\f1c9";
}
.ui-icon-vine::before {
content: "\f1ca";
}
.ui-icon-codepen::before {
content: "\f1cb";
}
.ui-icon-jsfiddle::before {
content: "\f1cc";
}
.ui-icon-life-bouy::before,
.ui-icon-life-saver::before,
.ui-icon-support::before,
.ui-icon-life-ring::before {
content: "\f1cd";
}
.ui-icon-circle-o-notch::before {
content: "\f1ce";
}
.ui-icon-ra::before,
.ui-icon-rebel::before {
content: "\f1d0";
}
.ui-icon-ge::before,
.ui-icon-empire::before {
content: "\f1d1";
}
.ui-icon-git-square::before {
content: "\f1d2";
}
.ui-icon-git::before {
content: "\f1d3";
}
.ui-icon-hacker-news::before {
content: "\f1d4";
}
.ui-icon-tencent-weibo::before {
content: "\f1d5";
}
.ui-icon-qq::before {
content: "\f1d6";
}
.ui-icon-wechat::before,
.ui-icon-weixin::before {
content: "\f1d7";
}
.ui-icon-send::before,
.ui-icon-paper-plane::before {
content: "\f1d8";
}
.ui-icon-send-o::before,
.ui-icon-paper-plane-o::before {
content: "\f1d9";
}
.ui-icon-history::before {
content: "\f1da";
}
.ui-icon-circle-thin::before {
content: "\f1db";
}
.ui-icon-header::before {
content: "\f1dc";
}
.ui-icon-paragraph::before {
content: "\f1dd";
}
.ui-icon-sliders::before {
content: "\f1de";
}
.ui-icon-share-alt::before {
content: "\f1e0";
}
.ui-icon-share-alt-square::before {
content: "\f1e1";
}
.ui-icon-bomb::before {
content: "\f1e2";
}
<?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>content_type</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>gadget_erp5_nojqm.css</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>rjs_gadget_erp5_nojqm_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>title</string> </key>
<value> <string>RenderJS Gadget ERP5 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>zope</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>1469697744.71</float>
<string>UTC</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>952.56105.49203.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>1469710786.7</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>zope</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>1469697693.07</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
......@@ -18,19 +18,22 @@
<button data-i18n="Close" class="ui-btn ui-btn-icon-notext ui-icon-delete">Close</button>
</div>
</div>
<div class="panel_img">
<img class="ui-title" alt="ERP5" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJcAAAA/CAMAAADaDqrIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEM5NUE4MzQ5NjQxMUUzOUZEQUU2NUY1RTI1RjdCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEM5NUE4NDQ5NjQxMUUzOUZEQUU2NUY1RTI1RjdCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwQzk1QTgxNDk2NDExRTM5RkRBRTY1RjVFMjVGN0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwQzk1QTgyNDk2NDExRTM5RkRBRTY1RjVFMjVGN0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+J9MJsAAAAwBQTFRF///////M//+Z//9m//8z//8A/8z//8zM/8yZ/8xm/8wz/8wA/5n//5nM/5mZ/5lm/5kz/5kA/2b//2bM/2aZ/2Zm/2Yz/2YA/zP//zPM/zOZ/zNm/zMz/zMA/wD//wDM/wCZ/wBm/wAz/wAAzP//zP/MzP+ZzP9mzP8zzP8AzMz/zMzMzMyZzMxmzMwzzMwAzJn/zJnMzJmZzJlmzJkzzJkAzGb/zGbMzGaZzGZmzGYzzGYAzDP/zDPMzDOZzDNmzDMzzDMAzAD/zADMzACZzABmzAAzzAAAmf//mf/Mmf+Zmf9mmf8zmf8Amcz/mczMmcyZmcxmmcwzmcwAmZn/mZnMmZmZmZlmmZkzmZkAmWb/mWbMmWaZmWZmmWYzmWYAmTP/mTPMmTOZmTNmmTMzmTMAmQD/mQDMmQCZmQBmmQAzmQAAZv//Zv/MZv+ZZv9mZv8zZv8AZsz/ZszMZsyZZsxmZswzZswAZpn/ZpnMZpmZZplmZpkzZpkAZmb/ZmbMZmaZZmZmZmYzZmYAZjP/ZjPMZjOZZjNmZjMzZjMAZgD/ZgDMZgCZZgBmZgAzZgAAM///M//MM/+ZM/9mM/8zM/8AM8z/M8zMM8yZM8xmM8wzM8wAM5n/M5nMM5mZM5lmM5kzM5kAM2b/M2bMM2aZM2ZmM2YzM2YAMzP/MzPMMzOZMzNmMzMzMzMAMwD/MwDMMwCZMwBmMwAzMwAAAP//AP/MAP+ZAP9mAP8zAP8AAMz/AMzMAMyZAMxmAMwzAMwAAJn/AJnMAJmZAJlmAJkzAJkAAGb/AGbMAGaZAGZmAGYzAGYAADP/ADPMADOZADNmADMzADMAAAD/AADMAACZAABmAAAzAAAAHHa7K3/AOojESZHJWZvNaKTSd63Whrbblb/fpMjks9Howtrt4e320uTx8Pb6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdfKHSQAAAOh0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ALItoLoAAAJkSURBVHja7NlZsqsgEABQ979C5kGGddxo4os0Q8BAynoFn0nUU23TNGRB9xzLdE3XdE3XdP2fLnIzF2VSrsYvC72HizAh9eZ5DVuOl15S4/jWwC+kDC8HPzCSJVHcRY8QXV2PwQuujUYTsYrvYlBv1yKLrsXHsPghnvR3Lazoip/JKuwpF8sm6/bY01Ow9CBlTXi53PNoRcUktEZT1NV1PIPnXAjtMJIMlzerFIzU1dVWF7aPj3Tetae4gjdxktG2et/qQjJ4kZFrv6ED4bK4eR1qduHzvEi4+PbGwD0EGu9CQQLFrv1F4jBc6BcuW3YhkPiPX1hOfxQvnHfh0HVMRqc4HuqiQf5k3mO6dq1s8Hx0H/Le5kq9YaNcxAcrZLpOvAv+ClcgNcZFtnrucd5Fwx4mXj0drnbBYXMuJmFDAV3Uhm4qlbHh3ddOrmholHNxFTVC+xTl2mf6pI4uVe4LwSp0DPGOmh/hAnM94bKZjkHlWuiLeV+cTab4luMKk82wy/Px2fLJskvKUk03hRf9RZ0wiYiZ4uVwVwTb9E71y0XboTYXGuTaa33Y47W5zBjXM3P11y7TfR2ycFdxyaW7uwSc5m0un9ix91m3TWJfW+1ijfW+wcVAfjS5dOP62LyvZZdcLHnA1MkFAtbgwq+Vm47po8OA1buwyy/a1ec5urzveAes2sV8kfW963mFaHNhlT0b6+Yi5+StchH1CtaK0ThXELDPLiyOPZHldzm/J1z9O/B14g7/K+DtkP7U8ivSeD4xaPCTSQvy+YIfubZWzRgtRe1iMP+3mq7pmq7p6jv+BBgAPrgi/TzwWzkAAAAASUVORK5CYII="/>
<div class="ui-controlgroup ui-controlgroup-horizontal ui-btn-right">
</div>
<!--div class="ui-controlgroup ui-controlgroup-horizontal ui-btn-right">
<div class="ui-controlgroup-controls">
<a href="#" class="ui-btn ui-btn-icon-notext ui-icon-home" data-i18n="Home">Home</a>
</div>
</div>
</div-->
</div>
</script>
<script id="panel-template-body" type="text/x-handlebars-template">
<div class="ui-content">
<ul data-role="listview" class="ui-listview" data-enhanced="true">
<li class="ui-first-child"><a href="{{module_href}}" class="ui-btn ui-btn-icon-left ui-icon-puzzle-piece" data-i18n="Modules" accesskey="m">Modules</a></li>
<li class="ui-first-child"><a href="#" class="ui-btn ui-btn-icon-left ui-icon-home" data-i18n="Home">Home</a></li>
<li><a href="{{module_href}}" class="ui-btn ui-btn-icon-left ui-icon-puzzle-piece" data-i18n="Modules" accesskey="m">Modules</a></li>
<li><a href="{{worklist_href}}" class="ui-btn ui-btn-icon-left ui-icon-clipboard" data-i18n="Worklists" accesskey="w">Worklists</a></li>
<li><a href="{{history_href}}" class="ui-btn ui-btn-icon-left ui-icon-history" data-i18n="History" accesskey="h">History</a></li>
<li><a href="{{search_href}}" class="ui-btn ui-btn-icon-left ui-icon-search" data-i18n="History" accesskey="s">Search</a></li>
......
......@@ -234,7 +234,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>952.1567.4220.17373</string> </value>
<value> <string>952.14137.61057.25617</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -252,7 +252,7 @@
</tuple>
<state>
<tuple>
<float>1467031987.88</float>
<float>1467279122.77</float>
<string>UTC</string>
</tuple>
</state>
......
......@@ -8,28 +8,16 @@
<!-- renderjs -->
<script src="rsvp.js" type="text/javascript"></script>
<script src="renderjs.js" type="text/javascript"></script>
<script src="handlebars.js" type="text/javascript"></script>
<!-- custom script -->
<script src="gadget_global.js" type="text/javascript"></script>
<script src="gadget_erp5_page_front.js" type="text/javascript"></script>
<!-- XXX must set theme here! -->
<script id="table-template" type="text/x-handlebars-template">
<div data-role="collapsible">
<h3 class="ui-bar-inherit" data-i18n="{{definition_title}}">{{definition_title}}</h3>
<ul data-role="listview" data-theme="c" class="document-listview">
<!--<li data-role="list-divider"><h1 data-i18n="{{definition_title}}">{{definition_title}}</h1></li>-->
{{#each documentlist}}
<li><a class="ui-body-inherit" data-i18n="{{title}}" href="{{link}}">{{title}}</a></li>
{{/each}}
</ul>
</div>
</script>
</head>
<body>
<section class="document_list"></section>
<div data-gadget-url="gadget_erp5_pt_form_list.html"
data-gadget-scope="form_list"
data-gadget-sandbox="public">
</div>
</body>
</html>
\ No newline at end of file
......@@ -220,7 +220,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>super_sven</string> </value>
<value> <string>zope</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -234,7 +234,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>939.43978.9403.31744</string> </value>
<value> <string>952.43255.60632.47035</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -252,8 +252,8 @@
</tuple>
<state>
<tuple>
<float>1419417426.65</float>
<string>GMT</string>
<float>1468942516.97</float>
<string>UTC</string>
</tuple>
</state>
</object>
......
/*global window, rJS, RSVP, Handlebars */
/*global window, rJS */
/*jslint nomen: true, indent: 2, maxerr: 3 */
(function (window, rJS, RSVP, Handlebars) {
(function (window, rJS) {
"use strict";
/////////////////////////////////////////////////////////////////
// Handlebars
/////////////////////////////////////////////////////////////////
// Precompile the templates while loading the first gadget instance
var gadget_klass = rJS(window),
source = gadget_klass.__template_element
.getElementById("table-template")
.innerHTML,
table_template = Handlebars.compile(source);
var gadget_klass = rJS(window);
gadget_klass
/////////////////////////////////////////////////////////////////
......@@ -33,104 +29,85 @@
/////////////////////////////////////////////////////////////////
// Acquired methods
/////////////////////////////////////////////////////////////////
.declareAcquiredMethod("jio_allDocs", "jio_allDocs")
.declareAcquiredMethod("translateHtml", "translateHtml")
.declareAcquiredMethod("getUrlFor", "getUrlFor")
.declareAcquiredMethod("updateHeader", "updateHeader")
.declareAcquiredMethod("getUrlParameter", "getUrlParameter")
.declareAcquiredMethod("getUrlFor", "getUrlFor")
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.declareMethod("render", function () {
var gadget = this;
return gadget.jio_allDocs({
"query": 'meta_type:"ERP5 Folder" AND id:"%_module"',
"select_list": ["title", "business_application_title"],
"limit": 1000
.allowPublicAcquisition('updateHeader', function () {
return;
})
.push(function (result) {
var result_list = [],
i;
for (i = 0; i < result.data.rows.length; i += 1) {
result_list.push(RSVP.all([
gadget.getUrlFor({command: 'display_stored_state', options: {jio_key: result.data.rows[i].id}}),
result.data.rows[i].value.title || result.data.rows[i].id,
result.data.rows[i].value.business_application_title
]));
.allowPublicAcquisition('getUrlFor', function (argument_list) {
if (argument_list[0].command === 'index') {
return this.getUrlFor({command: 'display_stored_state', options: {jio_key: argument_list[0].options.jio_key}});
}
return RSVP.all(result_list);
return this.getUrlFor.apply(this, argument_list);
})
.push(function (document_list) {
var i,
business_application_dict = {},
business_application_list = [],
business_application,
module_info,
result_html = '<div data-role="collapsible-set" data-theme="c">',
doc;
for (i = 0; i < document_list.length; i += 1) {
doc = document_list[i];
if (doc[2] === undefined) {
doc[2] = "Other";
}
module_info = {
link: doc[0],
title: doc[1]
};
if (business_application_dict[doc[2]] === undefined) {
business_application_dict[doc[2]] = [module_info];
business_application_list.push(doc[2]);
} else {
business_application_dict[doc[2]].push(module_info);
}
}
business_application_list.sort(function (a, b) {
// Push the "Other" value at the end
var result = 0;
if (a === "Other") {
result = 1;
} else if (b === "Other") {
result = -1;
} else if (a < b) {
result = -1;
} else if (a > b) {
result = 1;
.allowPublicAcquisition('getUrlParameter', function (argument_list) {
return this.getUrlParameter(argument_list)
.push(function (result) {
if ((result === undefined) && (argument_list[0] === 'field_listbox_sort_list:json')) {
return [['title', 'ascending']];
}
return result;
});
})
.declareMethod("triggerSubmit", function () {
var argument_list = arguments;
return this.getDeclaredGadget('form_list')
.push(function (gadget) {
return gadget.triggerSubmit.apply(gadget, argument_list);
});
})
.declareMethod("render", function () {
var gadget = this,
header_dict = {
page_title: 'Modules',
filter_action: true
};
function sort_module(a, b) {
var result = 0;
if (a.title < b.title) {
result = -1;
} else if (a.title > b.title) {
result = 1;
return gadget.updateHeader(header_dict)
.push(function () {
return gadget.getDeclaredGadget('form_list');
})
.push(function (form_gadget) {
var column_list = [
['title', 'Title']
];
return form_gadget.render({
erp5_document: {"_embedded": {"_view": {
"listbox": {
"column_list": column_list,
"show_anchor": 0,
"default_params": {},
"editable": 1,
"editable_column_list": [],
"key": "field_listbox",
"lines": 1000,
"list_method": "portal_catalog",
"query": "urn:jio:allDocs?query=meta_type%3A%22ERP5%20Folder%22%20AND%20id%3A%22%25_module%22",
"portal_type": [],
"search_column_list": column_list,
"sort_column_list": column_list,
"title": "Modules",
"type": "ListBox"
}
return result;
}},
"_links": {
"type": {
// form_list display portal_type in header
name: ""
}
for (i = 0; i < business_application_list.length; i += 1) {
business_application = business_application_list[i];
business_application_dict[business_application].sort(sort_module);
result_html += table_template({
definition_title: business_application,
documentlist: business_application_dict[business_application]
});
}},
form_definition: {
group_list: [[
"bottom",
[["listbox"]]
]]
}
result_html += '</div>';
return gadget.translateHtml(result_html);
})
.push(function (my_translated_html) {
gadget.props.element.querySelector('.document_list').innerHTML =
my_translated_html;
return gadget.updateHeader({
page_title: 'Modules'
});
});
});
}(window, rJS, RSVP, Handlebars));
\ No newline at end of file
}(window, rJS));
\ No newline at end of file
......@@ -230,7 +230,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>947.821.64587.50432</string> </value>
<value> <string>952.43287.48740.12117</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -248,7 +248,7 @@
</tuple>
<state>
<tuple>
<float>1447323452.37</float>
<float>1468942890.74</float>
<string>UTC</string>
</tuple>
</state>
......
......@@ -16,9 +16,6 @@
<body>
<article class="ui-content ui-body-c">
<section class="ui-content-header-plain">
<h3 class="ui-content-title ui-body-c" data-i18n="Logout">Logout</h3>
</section>
<section class="ui-body-c ui-content-section">
<form class="logout">
......
......@@ -234,7 +234,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>947.45437.59333.59426</string> </value>
<value> <string>947.46978.10225.52394</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -252,7 +252,7 @@
</tuple>
<state>
<tuple>
<float>1449755433.81</float>
<float>1469543629.05</float>
<string>UTC</string>
</tuple>
</state>
......
......@@ -26,6 +26,7 @@
.declareAcquiredMethod("getUrlFor", "getUrlFor")
.declareAcquiredMethod("jio_getAttachment", "jio_getAttachment")
.declareAcquiredMethod("translateHtml", "translateHtml")
.declareAcquiredMethod("updateHeader", "updateHeader")
/////////////////////////////////////////////////////////////////
// declared methods
......@@ -33,6 +34,9 @@
.declareMethod("render", function () {
var gadget = this;
return new RSVP.Queue()
.push(function () {
return gadget.updateHeader({page_title: 'Logout'});
})
.push(function () {
return gadget.translateHtml(gadget.props.element.innerHTML);
})
......
......@@ -230,7 +230,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>947.45416.32910.41454</string> </value>
<value> <string>952.53322.52034.23569</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -248,7 +248,7 @@
</tuple>
<state>
<tuple>
<float>1449754121.57</float>
<float>1469543750.01</float>
<string>UTC</string>
</tuple>
</state>
......
......@@ -4,7 +4,6 @@
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, user-scalable=no" />
<title>ERP5 Relationstringfield</title>
<script src="jquery.js"></script>
<script src="rsvp.js" type="text/javascript"></script>
<script src="renderjs.js" type="text/javascript"></script>
<script src="URI.js" type="text/javascript"></script>
......@@ -14,18 +13,21 @@
<script id="relation-input-template" type="text/x-handlebars-template">
<div class="ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset ui-input-has-clear ui-input-has-icon {{readonly}}">
<input type='text' title="{{title}}" name="{{name}}" autocomplete="off" data-enhanced="true" value="{{value}}" >
<a href="#" tabindex="-1" class="ui-hidden-accessible">&nbsp;</a>
<div class="relation-input ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset ui-input-has-clear ui-input-has-icon {{readonly}}">
<div>
<input type='search' title="{{title}}" name="{{name}}" autocomplete="off" {{{input_readonly}}} data-enhanced="true" value="{{value}}" >
<ul class="ui-listview ui-corner-all search_ul"></ul>
</div>
<a href={{href}} tabindex="-1" class="{{class_name}}" >Jump to this document</a>
</div>
</script>
<script id="relation-listview-template" type="text/x-handlebars-template">
{{#if list.length}}
<li class="ui-autocomplete ui-li ui-li-divider ui-bar-inherit ui-first-child" role="heading">Select from the {{list.length}} Search Results</li>
<!--li class="ui-autocomplete ui-li ui-li-divider ui-bar-inherit ui-first-child" role="heading">Select from the {{list.length}} Search Results</li-->
{{#each list}}
<li class="ui-li-static ui-body-inherit ui-icon-mail-forward ui-btn-icon-right" data-relative-url={{id}} >{{value}}</li>
{{/each}}
......@@ -33,7 +35,7 @@
<li class="ui-li-static ui-body-inherit ui-bar-inherit ui-icon-plus ui-btn-icon-right" data-create-object="{{this}}" name="{{this}}">Create New {{this}}: {{../value}}</li>
{{/each}}
{{else}}
<li class="ui-autocomplete ui-li ui-li-divider ui-bar-inherit ui-first-child" role="heading">No result</li>
<!--li class="ui-autocomplete ui-li ui-li-divider ui-bar-inherit ui-first-child" role="heading">No result</li-->
{{#each type}}
<li class="ui-li-static ui-body-inherit ui-bar-inherit ui-icon-plus ui-btn-icon-right" data-create-object="{{this}}" name="{{this}}">Create New {{this}}: {{../value}}</li>
{{/each}}
......
......@@ -234,7 +234,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>952.34465.51212.22528</string> </value>
<value> <string>952.41816.36917.26982</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -252,7 +252,7 @@
</tuple>
<state>
<tuple>
<float>1468420120.27</float>
<float>1468854973.0</float>
<string>UTC</string>
</tuple>
</state>
......
/*jslint indent: 2, maxerr: 3, nomen: true */
/*global window, rJS, RSVP, URI, loopEventListener, Handlebars,
SimpleQuery, ComplexQuery, Query, QueryFactory, promiseEventListener, $*/
SimpleQuery, ComplexQuery, Query, QueryFactory, promiseEventListener*/
(function (window, rJS, RSVP, URI, loopEventListener, promiseEventListener,
SimpleQuery, ComplexQuery, Query, QueryFactory, Handlebars, $) {
SimpleQuery, ComplexQuery, Query, QueryFactory, Handlebars) {
"use strict";
......@@ -151,6 +151,7 @@
href: jump_href,
create_object: create_object,
readonly: field_json.editable ? "" : "ui-state-readonly",
input_readonly: field_json.editable ? "" : 'readonly="readonly"',
required: field_json.required ? "required" : "",
value: value,
title: field_json.title,
......@@ -164,7 +165,7 @@
gadget.props.element.querySelector("input");
gadget.props.new_tag_div = gadget.props.element.querySelector(".new_tag");
gadget.props.spinner = gadget.props.element.querySelector("a");
gadget.props.plane = gadget.props.element.querySelectorAll("a")[1];
gadget.props.plane = gadget.props.element.querySelector("a");
});
return queue;
})
......@@ -223,7 +224,7 @@
props.jump_url = [];
ul.innerHTML = "";
if (my_value === "") {
props.spinner.className = searched;
props.spinner.className = jump_off;
return;
}
simple_query = new SimpleQuery({
......@@ -254,15 +255,13 @@
value: result.data.rows[i].value[index]
});
}
props.spinner.className = searched;
props.spinner.className = jump_off;
html = relation_listview_template({
list: list,
type: type,
value: my_value
});
$(ul).toggle();
ul.innerHTML = html;
$(ul).toggle();
});
}
......@@ -383,4 +382,4 @@
});
}(window, rJS, RSVP, URI, loopEventListener, promiseEventListener,
SimpleQuery, ComplexQuery, Query, QueryFactory, Handlebars, $));
SimpleQuery, ComplexQuery, Query, QueryFactory, Handlebars));
......@@ -236,7 +236,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>952.34578.31726.63163</string> </value>
<value> <string>952.37517.63345.57514</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -254,7 +254,7 @@
</tuple>
<state>
<tuple>
<float>1468420163.31</float>
<float>1468595439.59</float>
<string>UTC</string>
</tuple>
</state>
......
......@@ -25,6 +25,7 @@
<script id="filter-item-template" type="text/x-handlebars-template">
<button type="submit" class="ui-icon ui-btn ui-btn-inline ui-icon-minus ui-icon-shadow"></button>
<div class="filter_item {{class_value}}" >
<select data-iconpos="left">
{{#each option}}
......@@ -45,8 +46,7 @@
{{/each}}
</select>
<div class="ui-controlgroup-controls">
<input type= "{{input_type}}" value="{{input_value}}"></input>
<button type="submit" class="ui-icon ui-btn ui-btn-inline ui-icon-delete ui-icon-shadow"></button>
<input type="{{input_type}}" value="{{input_value}}"></input>
</div>
</div>
......@@ -81,17 +81,10 @@
<section class="ui-body-c ui-content-section">
<fieldset class="ui-controlgroup ui-corner-all">
<div class="ui-controlgroup-controls">
<div class="ui-radio">
<label class="ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-on" data-i18n="All criterions(AND)">All criterions(AND)</label>
<input type="radio" value="on" checked="checked" name="heard_about" id="heard_about_a" class="and checkboxradio" data-cacheval="false" data-enhanced="true">
</div>
<div class="ui-radio">
<label class="ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-off" data-i18n="At lease one(OR)">At lease one(OR)</label>
<input type="radio" value="Off" name="heard_about" id="heard_about_b" class="or checkboxradio" data-cacheval="true" data-enhanced="true">
</div>
</div>
<select data-iconpos="left" name="heard_about">
<option data-i18n="All criterions (AND)" value="AND">All criterions (AND)</option>
<option data-i18n="At lease one (OR)" value="OR">At lease one (OR)</option>
</select>
</fieldset>
<div class="filter_item_container">
......
......@@ -234,7 +234,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>947.25389.31975.29218</string> </value>
<value> <string>952.34496.35921.52275</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -252,7 +252,7 @@
</tuple>
<state>
<tuple>
<float>1448651417.88</float>
<float>1468414694.8</float>
<string>UTC</string>
</tuple>
</state>
......
......@@ -69,7 +69,7 @@
option = [],
tmp,
operator_option = [],
input_type = "text",
input_type = "search",
i;
if (filter_item) {
......@@ -209,8 +209,7 @@
var gadget = this,
i,
list = [],
or = gadget.props.element.querySelector(".or"),
and = gadget.props.element.querySelector(".and"),
operator_select = gadget.props.element.querySelector("select"),
container = gadget.props.element.querySelector(".filter_item_container"),
query_list;
if (gadget.props.extended_search) {
......@@ -224,12 +223,7 @@
return;
}
if (query_list.operator === "OR") {
or.checked = true;
and.checked = false;
or.parentElement.children[0].setAttribute("class",
"ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-on");
and.parentElement.children[0].setAttribute("class",
"ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-off");
operator_select.querySelectorAll("option")[1].selected = "selected";
}
query_list = query_list.query_list || [query_list];
......@@ -241,11 +235,12 @@
return RSVP.all(list);
})
.push(function (all_result) {
var innerHTML = "";
var div;
for (i = 0; i < all_result.length; i += 1) {
innerHTML += all_result[i];
div = document.createElement("div");
div.innerHTML = all_result[i];
container.appendChild(div);
}
container.innerHTML = innerHTML;
return listenToSelect(gadget, "auto");
});
}
......@@ -260,7 +255,7 @@
function () {
var focused = document.activeElement;
if (focused.nodeName === "BUTTON") {
container.removeChild(focused.parentElement.parentElement);
container.removeChild(focused.parentElement);
}
}
);
......@@ -283,7 +278,8 @@
value,
options = {},
filter_item_list = gadget.props.element.querySelectorAll(".filter_item"),
and = gadget.props.element.querySelector(".and");
operator_select = gadget.props.element.querySelector("select"),
operator = operator_select[operator_select.selectedIndex].value;
for (i = 0; i < filter_item_list.length; i += 1) {
select_list = filter_item_list[i].querySelectorAll("select");
value = filter_item_list[i].querySelector("input").value;
......@@ -313,7 +309,7 @@
if (simple_query_list.length > 0) {
complex_query = new ComplexQuery({
operator: and.checked ? "AND" : "OR",
operator: operator,
query_list: simple_query_list,
type: "complex"
});
......@@ -349,7 +345,7 @@
var tmp = document.createElement("div"),
container = gadget.props.element.querySelector(".filter_item_container");
tmp.innerHTML = template;
container.appendChild(tmp.querySelector("div"));
container.appendChild(tmp);
return listenToSelect(gadget, class_value);
});
}
......
......@@ -230,7 +230,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>952.10062.13895.62105</string> </value>
<value> <string>952.34519.30853.16520</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -248,7 +248,7 @@
</tuple>
<state>
<tuple>
<float>1467034494.63</float>
<float>1468415510.46</float>
<string>UTC</string>
</tuple>
</state>
......
......@@ -16,6 +16,7 @@
<script id="sort-item-template" type="text/x-handlebars-template">
<button type="submit" class="ui-icon ui-btn ui-btn-inline ui-icon-minus ui-icon-shadow"></button>
<div class="sort_item ui-controlgroup-controls" >
<select data-iconpos="left">
{{#each option}}
......@@ -37,7 +38,6 @@
{{/equal}}
</select>
<button type="submit" class="ui-icon ui-btn ui-btn-inline ui-icon-delete ui-icon-shadow"></button>
</div>
</script>
......
......@@ -234,7 +234,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>946.64691.21179.17203</string> </value>
<value> <string>952.34318.26924.28552</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -252,7 +252,7 @@
</tuple>
<state>
<tuple>
<float>1447352776.31</float>
<float>1468413387.26</float>
<string>UTC</string>
</tuple>
</state>
......
......@@ -105,11 +105,13 @@
return RSVP.all(list);
})
.push(function (all_result) {
var innerHTML = "";
var div,
container = gadget.props.element.querySelector(".sort_item_container");
for (i = 0; i < all_result.length; i += 1) {
innerHTML += all_result[i];
div = document.createElement("div");
div.innerHTML = all_result[i];
container.appendChild(div);
}
gadget.props.element.querySelector(".sort_item_container").innerHTML = innerHTML;
});
})
.declareService(function () {
......@@ -172,7 +174,7 @@
var tmp = document.createElement("div"),
container = gadget.props.element.querySelector(".sort_item_container");
tmp.innerHTML = template;
container.appendChild(tmp.querySelector("div"));
container.appendChild(tmp);
});
}
);
......
......@@ -230,7 +230,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>952.11593.64274.11281</string> </value>
<value> <string>952.21277.40593.7202</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -248,7 +248,7 @@
</tuple>
<state>
<tuple>
<float>1467126398.3</float>
<float>1468403615.53</float>
<string>UTC</string>
</tuple>
</state>
......
......@@ -296,8 +296,8 @@
<key> <string>categories</string> </key>
<value>
<tuple>
<string>aggregate/web_page_module/rjs_gadget_erp5_html</string>
<string>caching_policy/must-revalidate</string>
<string>aggregate/web_page_module/rjs_gadget_erp5_launcher_html</string>
</tuple>
</value>
</item>
......
<html class="ui-mobile">
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title tal:content="python: here.getPortalObject().getTitle()"></title>
<link rel="stylesheet" href="gadget_erp5.css">
<link rel="stylesheet" href="jquerymobile.css">
</head>
<body class="ui-mobile-viewport ui-overlay-a" tal:define="form_action string:portal_password/mailPasswordResetRequest;">
<div class="ui-hidden-accessible gadget-container"></div>
<div data-role="page" data-url="/" tabindex="0" class="ui-page ui-page-theme-a ui-page-header-fixed ui-page-active" style="padding-top: 36px; min-height: 939px;">
<div data-role="header" class="gadget-header ui-header ui-bar-a ui-header-fixed slidedown" data-theme="a" data-position="fixed" data-tap-toggle="false" role="banner">
<span>
<h1 class="ui-title" tal:content="python: here.getPortalObject().getTitle()"></h1>
<div class="ui-controlgroup ui-controlgroup-horizontal ui-btn-right">
<div class="ui-controlgroup-controls">
<body tal:define="form_action string:portal_password/mailPasswordResetRequest;">
<div data-gadget-scope='header'>
<div class="ui-header">
<h1><span>Recover your account</span></h1>
</div>
</div>
</span>
<div class="ui-navbar ui-subheader ui-grid-container ui-body-a" role="navigation">
<ul class="ui-grid-d"></ul>
<div data-gadget-scope='panel'>
<div data-role="header">
<div class="panel_img">
<img alt="ERP5" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJcAAAA/CAMAAADaDqrIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEM5NUE4MzQ5NjQxMUUzOUZEQUU2NUY1RTI1RjdCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEM5NUE4NDQ5NjQxMUUzOUZEQUU2NUY1RTI1RjdCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwQzk1QTgxNDk2NDExRTM5RkRBRTY1RjVFMjVGN0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwQzk1QTgyNDk2NDExRTM5RkRBRTY1RjVFMjVGN0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+J9MJsAAAAwBQTFRF///////M//+Z//9m//8z//8A/8z//8zM/8yZ/8xm/8wz/8wA/5n//5nM/5mZ/5lm/5kz/5kA/2b//2bM/2aZ/2Zm/2Yz/2YA/zP//zPM/zOZ/zNm/zMz/zMA/wD//wDM/wCZ/wBm/wAz/wAAzP//zP/MzP+ZzP9mzP8zzP8AzMz/zMzMzMyZzMxmzMwzzMwAzJn/zJnMzJmZzJlmzJkzzJkAzGb/zGbMzGaZzGZmzGYzzGYAzDP/zDPMzDOZzDNmzDMzzDMAzAD/zADMzACZzABmzAAzzAAAmf//mf/Mmf+Zmf9mmf8zmf8Amcz/mczMmcyZmcxmmcwzmcwAmZn/mZnMmZmZmZlmmZkzmZkAmWb/mWbMmWaZmWZmmWYzmWYAmTP/mTPMmTOZmTNmmTMzmTMAmQD/mQDMmQCZmQBmmQAzmQAAZv//Zv/MZv+ZZv9mZv8zZv8AZsz/ZszMZsyZZsxmZswzZswAZpn/ZpnMZpmZZplmZpkzZpkAZmb/ZmbMZmaZZmZmZmYzZmYAZjP/ZjPMZjOZZjNmZjMzZjMAZgD/ZgDMZgCZZgBmZgAzZgAAM///M//MM/+ZM/9mM/8zM/8AM8z/M8zMM8yZM8xmM8wzM8wAM5n/M5nMM5mZM5lmM5kzM5kAM2b/M2bMM2aZM2ZmM2YzM2YAMzP/MzPMMzOZMzNmMzMzMzMAMwD/MwDMMwCZMwBmMwAzMwAAAP//AP/MAP+ZAP9mAP8zAP8AAMz/AMzMAMyZAMxmAMwzAMwAAJn/AJnMAJmZAJlmAJkzAJkAAGb/AGbMAGaZAGZmAGYzAGYAADP/ADPMADOZADNmADMzADMAAAD/AADMAACZAABmAAAzAAAAHHa7K3/AOojESZHJWZvNaKTSd63Whrbblb/fpMjks9Howtrt4e320uTx8Pb6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdfKHSQAAAOh0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ALItoLoAAAJkSURBVHja7NlZsqsgEABQ979C5kGGddxo4os0Q8BAynoFn0nUU23TNGRB9xzLdE3XdE3XdP2fLnIzF2VSrsYvC72HizAh9eZ5DVuOl15S4/jWwC+kDC8HPzCSJVHcRY8QXV2PwQuujUYTsYrvYlBv1yKLrsXHsPghnvR3Lazoip/JKuwpF8sm6/bY01Ow9CBlTXi53PNoRcUktEZT1NV1PIPnXAjtMJIMlzerFIzU1dVWF7aPj3Tetae4gjdxktG2et/qQjJ4kZFrv6ED4bK4eR1qduHzvEi4+PbGwD0EGu9CQQLFrv1F4jBc6BcuW3YhkPiPX1hOfxQvnHfh0HVMRqc4HuqiQf5k3mO6dq1s8Hx0H/Le5kq9YaNcxAcrZLpOvAv+ClcgNcZFtnrucd5Fwx4mXj0drnbBYXMuJmFDAV3Uhm4qlbHh3ddOrmholHNxFTVC+xTl2mf6pI4uVe4LwSp0DPGOmh/hAnM94bKZjkHlWuiLeV+cTab4luMKk82wy/Px2fLJskvKUk03hRf9RZ0wiYiZ4uVwVwTb9E71y0XboTYXGuTaa33Y47W5zBjXM3P11y7TfR2ycFdxyaW7uwSc5m0un9ix91m3TWJfW+1ijfW+wcVAfjS5dOP62LyvZZdcLHnA1MkFAtbgwq+Vm47po8OA1buwyy/a1ec5urzveAes2sV8kfW963mFaHNhlT0b6+Yi5+StchH1CtaK0ThXELDPLiyOPZHldzm/J1z9O/B14g7/K+DtkP7U8ivSeD4xaPCTSQvy+YIfubZWzRgtRe1iMP+3mq7pmq7p6jv+BBgAPrgi/TzwWzkAAAAASUVORK5CYII="/>
</div>
</div>
<div role="main" class="ui-content gadget-content">
<article class="ui-content ui-body-c">
<section class="ui-content-header-plain">
<h3 class="ui-content-title ui-body-c" data-i18n="Reset your password">Reset your password</h3>
</section>
<section class="ui-body-c ui-content-section">
<form class="login-form" method="post" tal:attributes="action python: context.absolute_url()">
</div>
<div class="gadget-content">
<article>
<section>
<form method="post" tal:attributes="action python: context.absolute_url()">
<div class="ui-field-contain">
<label data-i18n="Login">Login<span></span></label>
<div class="ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset"><input autofocus type="text" name="user_login" value="" required=""></div>
<div><input autofocus type="text" name="user_login" value="" required=""></div>
</div>
<br/>
<div class="ui-btn ui-input-btn ui-btn-b ui-corner-all ui-shadow ui-btn-inline">Validate<input data-theme="b" data-inline="true" type="submit" data-i18n="[value]Validate" value="Validate" data-icon="check" tal:attributes="name python: '%s:method' % (form_action, )"/></div>
<div class="ui-field-contain">
<label></label>
<div><input type="submit" data-i18n="[value]Validate" value="Validate" tal:attributes="name python: '%s:method' % (form_action, )"/></div>
</div>
<input type="hidden" name="url" tal:attributes="value python: context.absolute_url()" />
<input tal:condition="exists: request/came_from"
type="hidden" name="came_from"
......@@ -42,7 +45,5 @@
</section>
</article>
</div>
</div>
<div class="ui-loader ui-corner-all ui-body-a ui-loader-default"><h1>loading</h1></div><div class="ui-panel-dismiss"></div>
</body>
</html>
\ No newline at end of file
<html class="ui-mobile">
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title tal:content="python: here.getPortalObject().getTitle()"></title>
<link rel="stylesheet" href="gadget_erp5.css">
<link rel="stylesheet" href="jquerymobile.css">
</head>
<body class="ui-mobile-viewport ui-overlay-a" tal:define="form_action string:portal_password/PasswordTool_changeUserPassword;">
<div class="ui-hidden-accessible gadget-container"></div>
<div data-role="page" data-url="/" tabindex="0" class="ui-page ui-page-theme-a ui-page-header-fixed ui-page-active" style="padding-top: 36px; min-height: 939px;">
<div data-role="header" class="gadget-header ui-header ui-bar-a ui-header-fixed slidedown" data-theme="a" data-position="fixed" data-tap-toggle="false" role="banner">
<span>
<h1 class="ui-title" tal:content="python: here.getPortalObject().getTitle()"></h1>
<div class="ui-controlgroup ui-controlgroup-horizontal ui-btn-right">
<div class="ui-controlgroup-controls">
<body tal:define="form_action string:portal_password/PasswordTool_changeUserPassword;">
<div data-gadget-scope='header'>
<div class="ui-header">
<h1><span>Reset your password</span></h1>
</div>
</div>
</span>
<div class="ui-navbar ui-subheader ui-grid-container ui-body-a" role="navigation">
<ul class="ui-grid-d"></ul>
<div data-gadget-scope='panel'>
<div data-role="header">
<div class="panel_img">
<img alt="ERP5" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJcAAAA/CAMAAADaDqrIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEM5NUE4MzQ5NjQxMUUzOUZEQUU2NUY1RTI1RjdCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEM5NUE4NDQ5NjQxMUUzOUZEQUU2NUY1RTI1RjdCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwQzk1QTgxNDk2NDExRTM5RkRBRTY1RjVFMjVGN0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwQzk1QTgyNDk2NDExRTM5RkRBRTY1RjVFMjVGN0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+J9MJsAAAAwBQTFRF///////M//+Z//9m//8z//8A/8z//8zM/8yZ/8xm/8wz/8wA/5n//5nM/5mZ/5lm/5kz/5kA/2b//2bM/2aZ/2Zm/2Yz/2YA/zP//zPM/zOZ/zNm/zMz/zMA/wD//wDM/wCZ/wBm/wAz/wAAzP//zP/MzP+ZzP9mzP8zzP8AzMz/zMzMzMyZzMxmzMwzzMwAzJn/zJnMzJmZzJlmzJkzzJkAzGb/zGbMzGaZzGZmzGYzzGYAzDP/zDPMzDOZzDNmzDMzzDMAzAD/zADMzACZzABmzAAzzAAAmf//mf/Mmf+Zmf9mmf8zmf8Amcz/mczMmcyZmcxmmcwzmcwAmZn/mZnMmZmZmZlmmZkzmZkAmWb/mWbMmWaZmWZmmWYzmWYAmTP/mTPMmTOZmTNmmTMzmTMAmQD/mQDMmQCZmQBmmQAzmQAAZv//Zv/MZv+ZZv9mZv8zZv8AZsz/ZszMZsyZZsxmZswzZswAZpn/ZpnMZpmZZplmZpkzZpkAZmb/ZmbMZmaZZmZmZmYzZmYAZjP/ZjPMZjOZZjNmZjMzZjMAZgD/ZgDMZgCZZgBmZgAzZgAAM///M//MM/+ZM/9mM/8zM/8AM8z/M8zMM8yZM8xmM8wzM8wAM5n/M5nMM5mZM5lmM5kzM5kAM2b/M2bMM2aZM2ZmM2YzM2YAMzP/MzPMMzOZMzNmMzMzMzMAMwD/MwDMMwCZMwBmMwAzMwAAAP//AP/MAP+ZAP9mAP8zAP8AAMz/AMzMAMyZAMxmAMwzAMwAAJn/AJnMAJmZAJlmAJkzAJkAAGb/AGbMAGaZAGZmAGYzAGYAADP/ADPMADOZADNmADMzADMAAAD/AADMAACZAABmAAAzAAAAHHa7K3/AOojESZHJWZvNaKTSd63Whrbblb/fpMjks9Howtrt4e320uTx8Pb6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdfKHSQAAAOh0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ALItoLoAAAJkSURBVHja7NlZsqsgEABQ979C5kGGddxo4os0Q8BAynoFn0nUU23TNGRB9xzLdE3XdE3XdP2fLnIzF2VSrsYvC72HizAh9eZ5DVuOl15S4/jWwC+kDC8HPzCSJVHcRY8QXV2PwQuujUYTsYrvYlBv1yKLrsXHsPghnvR3Lazoip/JKuwpF8sm6/bY01Ow9CBlTXi53PNoRcUktEZT1NV1PIPnXAjtMJIMlzerFIzU1dVWF7aPj3Tetae4gjdxktG2et/qQjJ4kZFrv6ED4bK4eR1qduHzvEi4+PbGwD0EGu9CQQLFrv1F4jBc6BcuW3YhkPiPX1hOfxQvnHfh0HVMRqc4HuqiQf5k3mO6dq1s8Hx0H/Le5kq9YaNcxAcrZLpOvAv+ClcgNcZFtnrucd5Fwx4mXj0drnbBYXMuJmFDAV3Uhm4qlbHh3ddOrmholHNxFTVC+xTl2mf6pI4uVe4LwSp0DPGOmh/hAnM94bKZjkHlWuiLeV+cTab4luMKk82wy/Px2fLJskvKUk03hRf9RZ0wiYiZ4uVwVwTb9E71y0XboTYXGuTaa33Y47W5zBjXM3P11y7TfR2ycFdxyaW7uwSc5m0un9ix91m3TWJfW+1ijfW+wcVAfjS5dOP62LyvZZdcLHnA1MkFAtbgwq+Vm47po8OA1buwyy/a1ec5urzveAes2sV8kfW963mFaHNhlT0b6+Yi5+StchH1CtaK0ThXELDPLiyOPZHldzm/J1z9O/B14g7/K+DtkP7U8ivSeD4xaPCTSQvy+YIfubZWzRgtRe1iMP+3mq7pmq7p6jv+BBgAPrgi/TzwWzkAAAAASUVORK5CYII="/>
</div>
</div>
<div role="main" class="ui-content gadget-content">
<article class="ui-content ui-body-c">
<section class="ui-content-header-plain">
<h3 class="ui-content-title ui-body-c" data-i18n="Reset your password">Reset your password</h3>
</section>
<section class="ui-body-c ui-content-section">
<form class="login-form" method="post" tal:attributes="action python: context.absolute_url()">
</div>
<div class="gadget-content">
<article class="ui-content">
<section>
<form method="post" tal:attributes="action python: context.absolute_url()">
<div class="ui-field-contain">
<label data-i18n="New Password">New Password<span></span></label>
<div class="ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset"><input autofocus name="password" type="password" value="" required=""></div>
<div><input autofocus name="password" type="password" value="" required=""></div>
</div>
<div class="ui-field-contain">
<label data-i18n="Retype New Password">Retype New Password<span></span></label>
<div class="ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset"><input name="password_confirm" type="password" value="" required=""></div>
<div><input name="password_confirm" type="password" value="" required=""></div>
</div>
<div class="ui-btn ui-input-btn ui-btn-b ui-corner-all ui-shadow ui-btn-inline">Validate<input data-theme="b" data-inline="true" type="submit" data-i18n="[value]Validate" value="Validate" data-icon="check" tal:attributes="name python: '%s:method' % (form_action, )"/></div>
<div class="ui-field-contain">
<label></label>
<div><input type="submit" value="Validate" tal:attributes="name python: '%s:method' % (form_action, )"/></div>
</div>
<input type="hidden" name="came_from" tal:attributes="value python: context.absolute_url()" />
<input type="hidden" name="password_key" tal:attributes="value python: request.get('reset_key') or ''" />
</form>
</section>
</article>
</div>
</div>
<div class="ui-loader ui-corner-all ui-body-a ui-loader-default"><h1>loading</h1></div><div class="ui-panel-dismiss"></div>
</body>
</html>
\ No newline at end of file
......@@ -14,18 +14,6 @@
@colorbackground: @white;
// Default foreground and border color
@colorforeground: @black;
// Background for contrasting elements
@colorcontrastbackground: @black;
// Foreground for contrasting elements
@colorcontrastforeground: @white;
// @colorinactive: @;
// Disabled foreground color
// @colordisabled: @;
// Subtle foreground and border
// @colorsubtle: @;
// @colorborder: @;
@colortextselection: @txtgreen;
// Foreground color to single-out items of interest
@coloraccent: @txtorange;
......@@ -39,10 +27,19 @@
@colorsubheaderbackground: #0E81C2;
@colorsubheaderlink: #f8fff3;
@colorfocus: #3388cc;
@colorblocklinkbackground: #e0e0e0;
@panelbackgroundcolor: #444444;
@radius: .325em;
@headerheight: 2.6em;
@headertitleleftlargemargin: 4em;
@headertitleleftsmallmargin: 2em;
@mainpaddingdesktop: 2em;
// XXX desktop: 12em
@panelwidth: 17em;
......@@ -62,6 +59,7 @@
**********************************************/
@font-family: @sans-serif;
@font-size: 11pt;
@smartphone-font-size: 12pt;
@font-weight: 400;
@line-height: 1.3;
......@@ -84,7 +82,9 @@
.hide_text(@width: 3em) {
// https://css-tricks.com/forums/topic/hide-text-but-not-the-before-pseudo-class/
& when (@width > 0) {
width: @width;
}
overflow: hidden;
text-indent: -9999px;
white-space: nowrap;
......@@ -113,7 +113,6 @@
/**********************************************
......@@ -198,7 +197,12 @@ body {
body, button, input, textarea, select {
font-family: @font-family;
// letter-spacing: @letter-spacing;
@media @desktop, @tablet {
font-size: @font-size;
}
@media @smartphone {
font-size: @smartphone-font-size;
}
font-weight: @font-weight;
line-height: @line-height;
}
......@@ -272,16 +276,23 @@ mark {
&[href=""] {
color: @colorforeground;
}
&:hover {
text-decoration: underline;
}
&:focus {
outline-offset: -2px;
outline: 2px @border-type @colorfocus;
}
}
a {
.link(@colorlink);
@media @desktop {
&[accesskey]:after {
content: " [" attr(accesskey) "] ";
}
// color: @colorlink;
}
}
......@@ -291,7 +302,7 @@ a {
pre, xmp, plaintext, listing {
display: block;
font-family: @monospace;
// font-family: @monospace;
white-space: pre-wrap;
}
......@@ -315,7 +326,7 @@ label {
color: @grey;
}
input:not([type=submit]):not([type=file]):not([type=checkbox]):not([type=radio]):not([type=color]) {
input:not([type=submit]):not([type=file]):not([type=checkbox]):not([type=radio]):not([type=color]), textarea {
width: 100%;
margin: 0;
......@@ -326,25 +337,29 @@ input:not([type=submit]):not([type=file]):not([type=checkbox]):not([type=radio])
background-color: @colortextboxbackground;
color: @colortextboxforeground;
border-radius: .325em;
border-radius: @radius;
border-width: 1px;
border-style: solid;
border-color: rgba(0, 0, 0, 0.3);
-webkit-box-shadow: inset 0 1px 3px rgba(0,0,0,.2);
-moz-box-shadow: inset 0 1px 3px rgba(0,0,0,.2);
box-shadow: inset 0 1px 3px rgba(0,0,0,.2);
outline-offset: 0;
&[readonly="readonly"] {
// XXX Should be dropped when gadget field do not use input
// in read only
border: none;
box-shadow: none;
padding: 0;
line-height: 1em;
}
&:active, &:focus {
// outline: 2px @border-type @colortextboxbackground;
outline-offset: 0;
}
&:focus {
-webkit-box-shadow: 0 0 12px #3388cc;
-moz-box-shadow: 0 0 12px #3388cc;
box-shadow: 0 0 12px #3388cc;
box-shadow: 0 0 12px @colorfocus;
}
}
......@@ -353,48 +368,53 @@ select {
width: 100%;
margin: 0;
padding: 0.4em;
padding-right: 1.8em;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
line-height: 1.4em;
cursor: pointer;
border: none;
background-image: none;
background-color: @colortextboxbackground;
background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='50px' height='50px'><polyline fill-opacity='0.5' points='46.139,15.518 25.166,36.49 4.193,15.519'/></svg>") right no-repeat;
background-position: right .5em top 50%;
background-size: 1em 1em;
color: @colortextboxforeground;
// border-radius: 0;
border-radius: .325em;
border-radius: @radius;
border-width: 1px;
border-style: solid;
// border-color: #ddd;
border-color: rgba(0, 0, 0, 0.3);
// box-shadow: inset 0 1px 3px;
-webkit-box-shadow: inset 0 1px 3px rgba(0,0,0,.2);
-moz-box-shadow: inset 0 1px 3px rgba(0,0,0,.2);
box-shadow: inset 0 1px 3px rgba(0,0,0,.2);
// font-family: @monospace;
// outline: 2px @border-type @colortextboxbackground;
outline-offset: 0;
/*
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
&:after {
content: "â–¶";
text-align: right;
float:right
}*/
&:hover, &:active, &:focus {
background-color: #e0e0e0;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#eeeeee), to(#f5f5f5));
background: -webkit-linear-gradient(bottom, #eeeeee, #f5f5f5);
background: linear-gradient(bottom, #eeeeee, #f5f5f5);
background: -moz-linear-gradient(bottom, #eeeeee, #f5f5f5);
background: -o-linear-gradient(bottom, #eeeeee, #f5f5f5);
background: -ms-linear-gradient(bottom, #eeeeee, #f5f5f5);
// color: #222222;
// text-shadow: none;
// border-color: rgb(0, 0, 0);
// border-color: rgba(0, 0, 0, 0.5);
&[readonly="readonly"] {
// XXX Should be dropped when gadget field do not use input
// in read only
border: none;
background: none;
box-shadow: none;
padding: 0;
line-height: 1em;
}
&:not([readonly="readonly"]) {
&:hover, &:active {
background-color: @colorblocklinkbackground;
}
}
&:-moz-focusring {
color: transparent
}
}
......@@ -402,12 +422,7 @@ textarea {
height: 15em;
width: 100%;
margin: 0;
padding: 0.5em;
border: none;
background-color: @colortextboxbackground;
color: @colortextboxforeground;
border-radius: 0;
font-family: @monospace;
// font-family: @monospace;
}
::-webkit-input-placeholder {
......@@ -432,18 +447,23 @@ input[type=submit], button {
padding: 0px;
}
/*
margin: 0;
margin-bottom: 1em;
padding: 0.5em 2em;
*/
margin: 0;
padding: 0;
border: none;
// background-image: none;
background-image: none;
background-color: @colorbackground;
color: @colorforeground;
transition: background-color 0.2s ease-out;
&:hover, &:focus {
outline: none;
background-color: @colorblocklinkbackground;
}
&:active {
// box-shadow: inset 0 0 0 5px darken(@colorblocklinkbackground, 10%);
background-color: darken(@colorblocklinkbackground, 20%);
}
cursor: pointer;
}
......@@ -482,21 +502,16 @@ img {
**********************************************/
div[data-gadget-scope='panel'] {
// background-color: #252525;
background-color: #444444;
// border-color: #454545;
border-color: #888888;
background-color: @panelbackgroundcolor;
@media @smartphone, @tablet {
box-shadow: 5px 0 5px rgba(0,0,0,.15);
}
color: #fff;
color: @white;
width: @panelwidth;
min-height: 100%;
max-height: none;
border-width: 0;
position: fixed;
top: 0;
left: 0;
......@@ -504,43 +519,29 @@ div[data-gadget-scope='panel'] {
z-index: 2000;
@media @smartphone, @tablet {
left: -@panelwidth - 1em;
transition: transform 200ms ease-out;
transform: translate3d(-110%, 0, 0);
&.visible {
transform: translate3d(0, 0, 0);
&.visible {
transform: translate3d(@panelwidth + 1em, 0, 0);
}
}
div[data-role="header"] {
background-color: #252525;
color: #fff;
display: flex;
justify-content: space-between;
border-color: rgba(255,255,255, .3);
border-width: 0 0 1px 0;
border-style: solid;
justify-content: flex-start;
> div {
&:first-of-type {
border-color: rgba(255,255,255, .3);
border-style: solid;
border-width: 0 1px 0 0;
}
&:last-of-type {
border-color: rgba(255,255,255, .3);
border-style: solid;
border-width: 0 0 0 1px;
}
.panel_img {
text-align: center;
flex: 1;
height: @headerheight;
}
button, a {
.hide_text();
background-color: #252525;
background-color: @panelbackgroundcolor;
&::before {
float: left;
......@@ -558,23 +559,12 @@ div[data-gadget-scope='panel'] {
line-height: @headerheight;
color: @white;
// background-color: @colorheaderbackground;
/*
&[name="panel"] {
@media @desktop {
display: none;
}
}
*/
}
}
img {
text-align: left;
line-height: @headerheight;
max-height: @headerheight;
// flex: 1;
height: 100%;
}
......@@ -583,23 +573,19 @@ div[data-gadget-scope='panel'] {
margin-top: @headerheight;
li {
a {
color: #ffffff;
/*
border-color: rgba(255,255,255, .3);
border-width: 1px 0 0 0;
border-style: solid;
*/
color: @white;
padding: .4em;
padding-left: 1em;
display: block;
// position: relative;
// text-align: left;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
&::before {
// margin-right: 1em;
width: 2em;
width: @mainpaddingdesktop;
}
&:hover, &:active {
background-color: darken(@panelbackgroundcolor, 10%);
}
}
}
......@@ -613,69 +599,51 @@ div[data-gadget-scope='panel'] {
div[data-gadget-scope='editor_panel'] {
// background-color: #252525;
background-color: #444444;
// border-color: #454545;
border-color: #888888;
box-shadow: 5px 0 0 5px rgba(0,0,0,.15);
color: #fff;
background-color: @colorbackground;
width: @panelwidth;
min-height: 100%;
max-height: none;
border-width: 0;
position: fixed;
top: 0;
right: 0;
display: block;
z-index: 2000;
z-index: 3000;
@media @desktop {
left: -@panelwidth - 1em;
transition: transform 200ms ease-out;
transform: translate3d(110%, 0, 0);
transform: translate3d(0, 0, 0);
&.visible {
transform: translate3d(@panelwidth + 1em, 0, 0);
}
box-shadow: 5px 0 5px rgba(0,0,0,.15);
}
@media @smartphone, @tablet {
right: -@panelwidth - 1em;
transition: transform 200ms ease-out;
transform: translate3d(0, 0, 0);
&.visible {
transform: translate3d(-@panelwidth - 1em, 0, 0);
}
box-shadow: -5px 0 5px rgba(0,0,0,.15);
}
div[data-role="header"] {
background-color: #252525;
color: #fff;
display: flex;
justify-content: space-between;
border-color: rgba(255,255,255, .3);
border-width: 0 0 1px 0;
border-style: solid;
h1 {
text-align: left;
line-height: @headerheight;
max-height: @headerheight;
// flex: 1;
}
> div {
&:first-of-type {
border-color: rgba(255,255,255, .3);
border-style: solid;
border-width: 0 1px 0 0;
}
&:last-of-type {
border-color: rgba(255,255,255, .3);
border-style: solid;
border-width: 0 0 0 1px;
}
}
button, a {
.hide_text();
background-color: #252525;
&::before {
float: left;
......@@ -686,12 +654,61 @@ div[data-gadget-scope='editor_panel'] {
display: block;
line-height: @headerheight;
color: @white;
// background-color: @colorheaderbackground;
}
}
section {
padding: 1em;
fieldset {
& > div {
display: inline-block;
}
label {
display: inline-block;
text-align: center;
font-size: 0.8em;
}
input[type="radio"] {
display: inline-block;
}
}
.filter_item_container, .sort_item_container {
& > div {
display: flex;
align-items: flex-start;
padding: 0.5em 0;
.filter_item, .sort_item {
flex: 1;
}
}
}
button {
// Copy pasted from listbox buttons
padding: 0.5em;
border: 1px solid rgba(0, 0, 0, 0.14);
border-radius: @radius;
margin-right: 0.5em;
&:last-of-type {
margin-right: 0;
}
.hide_text(@width: 2em);
&::before {
margin-right: 0.4em;
float: left;
text-indent: 0;
}
}
}
}
......@@ -701,39 +718,45 @@ div[data-gadget-scope='editor_panel'] {
**********************************************/
div[data-gadget-scope='header'] .ui-header {
background-color: @colorheaderbackground;
// width: 100%;
position: fixed;
z-index: 1000;
text-align: center;
@media @tablet, @smartphone {
display: flex;
flex-flow: row wrap;
}
@media @desktop {
display: table;
margin-left: @panelwidth;
}
// Prevent the header to have a width higher than the screen
width: 100%;
color: @white;
button, a {
color: @white;
background-color: @colorheaderbackground;
&:hover, &:active {
background-color: #085078;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#85D8CE), to(#0E81C2));
background: -webkit-linear-gradient(bottom, #85D8CE, #0E81C2);
background: linear-gradient(bottom, #85D8CE, #0E81C2);
background: -moz-linear-gradient(bottom, #85D8CE, #0E81C2);
background: -o-linear-gradient(bottom, #85D8CE, #0E81C2);
background: -ms-linear-gradient(bottom, #85D8CE, #0E81C2);
background-color: lighten(@colorheaderbackground, 20%);
}
}
// XXX TODO: restore border to separate title from button/links
& > .ui-btn-left {
button, a {
border-right: 1px solid rgba(255, 255, 255, 0.55);
}
}
.ui-controlgroup-controls {
button, a {
display: block;
line-height: @headerheight;
color: @white;
background-color: @colorheaderbackground;
// https://css-tricks.com/forums/topic/hide-text-but-not-the-before-pseudo-class/
// Default size
......@@ -761,45 +784,65 @@ div[data-gadget-scope='header'] .ui-header {
}
}
& > .ui-btn-right {
button, a {
background-color: #F60;
@media @smartphone, @tablet {
border-left: 1px solid rgba(255, 255, 255, 0.55);
}
}
@media @desktop {
display: table-footer-group;
button, a {
margin: 0.5em;
margin-left: @mainpaddingdesktop;
}
}
}
h1 {
text-align: left;
line-height: @headerheight;
flex: 1;
color: @white;
background-color: @colorheaderbackground;
border-left: 1px solid rgba(255, 255, 255, 0.55);
border-right: 1px solid rgba(255, 255, 255, 0.55);
// XXX Restore border
// border-left: 1px solid rgba(255, 255, 255, 0.55);
// border-right: 1px solid rgba(255, 255, 255, 0.55);
// Do not put title on multi line in case of small screen
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
-ms-text-overflow: ellipsis;
// Title which is not a link
& > span {
padding-left: @headertitleleftlargemargin;
@media @smartphone {
padding-left: @headertitleleftsmallmargin
padding-left: @headertitleleftsmallmargin;
}
@media @desktop {
padding-left: @mainpaddingdesktop;
}
}
// Clickable title
a {
display: block;
color: @white;
// Do not put link on multi line in case of small screen
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
-ms-text-overflow: ellipsis;
&::before {
display: inline-block;
@media @tablet, @smartphone {
text-align: center;
}
@media @desktop {
padding-left: @mainpaddingdesktop;
}
width: @headertitleleftlargemargin;
@media @smartphone {
......@@ -813,7 +856,6 @@ div[data-gadget-scope='header'] .ui-header {
.ui-subheader {
// display: block;
@media @desktop {
text-align: left;
}
......@@ -827,6 +869,10 @@ div[data-gadget-scope='header'] .ui-header {
display: table;
table-layout: fixed;
a {
background-color: @colorsubheaderbackground;
}
@media @desktop {
height: 100%;
......@@ -837,29 +883,25 @@ div[data-gadget-scope='header'] .ui-header {
a {
display: block;
padding-left: 0.8em;
padding-right: 0.8em;
padding-left: @mainpaddingdesktop;
padding-right: @mainpaddingdesktop;
min-width: 5em;
line-height: @headerheight;
height: 100%;
color: @colorsubheaderlink;
white-space: nowrap;
overflow: hidden;
&::before {
display: none;
// padding-right: 0.3em;
}
}
}
}
@media @smartphone, @tablet {
@media @tablet {
li {
display: table-cell;
border-left: 1px solid rgba(0, 0, 0, 0.55);
......@@ -870,14 +912,8 @@ div[data-gadget-scope='header'] .ui-header {
a {
display: block;
padding-top: 0.8em;
padding-bottom: 0.8em;
@media @smartphone, @tablet {
padding-top: 0.2em;
padding-bottom: 0.2em;
}
color: @colorsubheaderlink;
padding-top: 0.4em;
padding-bottom: 0.4em;
white-space: nowrap;
overflow: hidden;
......@@ -890,6 +926,41 @@ div[data-gadget-scope='header'] .ui-header {
}
}
}
@media @smartphone {
li {
line-height: @headerheight;
display: table-cell;
border-left: 1px solid rgba(0, 0, 0, 0.55);
&:first-child {
border-left: none;
}
a {
display: block;
text-align: center;
vertical-align: middle;
font-size: 1.5em;
padding-top: 0.4em;
padding-bottom: 0.4em;
.hide_text(@width: false);
&::before {
float: left;
text-indent: 0;
width: 100%;
}
}
}
}
}
}
......@@ -899,31 +970,46 @@ div[data-gadget-scope='header'] .ui-header {
**********************************************/
.gadget-content {
input[type='submit'] {
padding: 0.4em;
line-height: 1.4em;
background-color: @panelbackgroundcolor;
color: @white;
border-radius: @radius;
border-width: 1px;
border-style: solid;
min-width: 8em;
&:hover, &:focus {
background-color: lighten(@panelbackgroundcolor, 10%);
}
&:active {
background-color: lighten(@panelbackgroundcolor, 20%);
}
}
@media @desktop {
// Keep the panel always visible
margin-left: @panelwidth;
}
// Top padding
padding: 2em;
padding: @mainpaddingdesktop;
padding-top: 9em;
@media @smartphone {
padding: 0.5em;
padding-top: 8em;
}
/*
.ui-has-subheader {
padding-top: 7em;
}
*/
// Label
.ui-field-contain {
margin-bottom: 2em;
padding: 0.8em 0;
// margin: 0 0 12px 0;
padding: 0.5em 0;
div {
width: 100%;
......@@ -931,26 +1017,15 @@ div[data-gadget-scope='header'] .ui-header {
label {
margin: 0 0 0.4em;
// padding: 0.4em;
// line-height: 1.4em;
// text-align: left;
// margin: 0 8px 0 0;
// padding: 2px 0;
}
}
.ui-content-title {
font-size: 150%;
margin-top: 1em;
margin-bottom: 1em;
}
ul.document-listview {
margin-bottom: 2em;
li {
border-color: rgba(0, 0, 0, 0.3);
border-width: 1px;
......@@ -958,84 +1033,70 @@ div[data-gadget-scope='header'] .ui-header {
border-bottom-style: none;
box-shadow: 0 1px 3px rgba(0,0,0,.15);
&:not(.ui-li-has-count) {
a {
display: block;
padding: 0.7em 1em;
color: #222222;
&:after {
font-family: FontAwesome;
content: "\f0da";
text-align: right;
float:right;
position: absolute;
right: 1.5em;
}
&:hover, &:active, &:focus {
background-color: #e0e0e0;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#eeeeee), to(#f5f5f5));
background: -webkit-linear-gradient(bottom, #eeeeee, #f5f5f5);
background: linear-gradient(bottom, #eeeeee, #f5f5f5);
background: -moz-linear-gradient(bottom, #eeeeee, #f5f5f5);
background: -o-linear-gradient(bottom, #eeeeee, #f5f5f5);
background: -ms-linear-gradient(bottom, #eeeeee, #f5f5f5);
// color: #222222;
// text-shadow: none;
// border-color: rgb(0, 0, 0);
// border-color: rgba(0, 0, 0, 0.5);
}
&:focus {
-webkit-box-shadow: 0 0 12px #3388cc;
-moz-box-shadow: 0 0 12px #3388cc;
box-shadow: 0 0 12px #3388cc;
}
a {
display: block;
position: relative;
padding: 0.7em 1em;
padding-right: 2.5em;
color: #222222;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
&:hover, &:active {
background-color: @colorblocklinkbackground;
}
}
&:first-child {
border-top-left-radius: 0.325em;
border-top-right-radius: 0.325em;
border-top-left-radius: @radius;
border-top-right-radius: @radius;
}
&:last-child {
border-bottom-left-radius: 0.325em;
border-bottom-right-radius: 0.325em;
border-bottom-left-radius: @radius;
border-bottom-right-radius: @radius;
border-bottom-style: solid;
// box-shadow: 0 1px 3px;
}
.ui-li-count {
float: right;
padding: 0 0.5em;
border: 1px solid rgba(0, 0, 0, 0.14);
border-radius: @radius;
position: absolute;
right: .5em;
}
}
}
}
@media (min-width: 62em) {
.left,
.right,
.center,
.bottom {
padding: 0 2%;
}
.left,
.right {
@media @desktop {
.left, .right {
vertical-align: top;
display: inline-block;
width: 45%;
}
}
/* middle screen */
@media (max-width: 62em) {
/* reset min/max width and shrink labels ... */
label, legend {
font-size: 80%;
width: 50%;
}
.right {
padding-left: 2%;
}
}
}
@media (min-width: 28em) {
@media @tablet, @desktop {
// Label
.ui-field-contain {
display: flex;
label {
......@@ -1045,27 +1106,89 @@ div[data-gadget-scope='header'] .ui-header {
flex: 3;
}
}
}
@media (max-width: 28em) {
}
@media @desktop {
// Align field on the left group's field
.center {
.ui-field-contain {
label + div {
flex: 7;
}
}
}
}
/* make sure there is a bottom border */
@media @smartphone {
.ui-field-contain {
padding: 0.8em 0;
border-bottom: 1px solid rgba(0, 0, 0, 0.15);
// make sure there is a bottom border
// XXX TODO: border should be visible only if not input
// border-bottom: 1px solid rgba(0, 0, 0, 0.15);
}
}
/* form validation (assuming label>span is used) */
form label span {
color: red;
}
}
/* form validation (assuming label>span is used) */
form label span {
color: red;
/**********************************************
* Gadget: relation field
**********************************************/
.relation-input {
display: flex;
a {
.hide_text();
&::before {
float: left;
text-indent: 0;
margin-left: 1em;
}
display: block;
line-height: @headerheight;
}
div {
position: relative;
}
ul {
position: absolute;
display: block;
width: 100%;
z-index: 501;
li {
cursor: pointer;
background-color: @panelbackgroundcolor;
color: @white;
padding: .4em;
padding-left: 1em;
display: block;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
&::before {
width: @mainpaddingdesktop;
}
&:hover, &:active {
background-color: darken(@panelbackgroundcolor, 10%);
}
}
}
}
/**********************************************
* Listbox
**********************************************/
div[data-gadget-scope='erp5_searchfield'] {
.ui-input-text {
display: flex;
......@@ -1078,22 +1201,24 @@ div[data-gadget-scope='erp5_searchfield'] {
}
.document_table {
// width: 100%;
.ui-table-header {
display: flex;
padding-bottom: 0.5em;
@media @smartphone {
border-bottom: 2px solid rgba(0, 0, 0, 0.14902);
}
h1 {
opacity: .3;
// XXX TODO Same color than label
color: @grey;
flex: 2;
align-self: flex-end;
}
button {
padding: 0.5em;
border: 1px solid rgba(0, 0, 0, 0.14);
border-radius: 0.315em;
border-radius: @radius;
margin-right: 0.5em;
&:last-of-type {
......@@ -1125,10 +1250,16 @@ div[data-gadget-scope='erp5_searchfield'] {
}
thead {
background-color: #eeeeee;
background-color: rgba(0, 0, 0, .04);
color: #777777;
text-align: center;
background-color: @colorsubheaderbackground;
color: @white;
// XXX Same than cells
tr { th {
padding: 0.4em 0.25em;
}}
// text-align: center;
@media @smartphone {
display: none;
......@@ -1143,20 +1274,14 @@ div[data-gadget-scope='erp5_searchfield'] {
tr {
&:nth-child(even) {
background-color: #eeeeee;
background-color: rgba(0, 0, 0, .04);
background-color: darken(@colorbackground, 5%);
}
&:hover {
background: #e4ebf1;
&:hover, &:active {
background-color: @colorblocklinkbackground
}
}
@media @desktop, @tablet {
td, th {
&:not(:last-child) {
border-right: 1px solid #DDD;
}
}
a {
display: block;
padding: 0.4em 0.25em;
......@@ -1201,7 +1326,7 @@ div[data-gadget-scope='erp5_searchfield'] {
top: 50%;
margin-top: -0.75em;
background: @colorbackground;
background-color: @colorbackground;
border-radius: 0.5em;
width: 1em;
text-align: center;
......@@ -1227,36 +1352,6 @@ div[data-gadget-scope='erp5_searchfield'] {
}
}
}
/*
@media @smartphone {
tr {
line-height: 3em;
}
th {
display: none;
&:first-of-type {
display: block;
a {
display: block;
text-align: left;
padding-left: 0.5em;
&:after {
// XXX copy/pasted
font-family: FontAwesome;
content: "\f0da";
text-align: right;
float:right;
padding-right: 0.5em;
padding-left: 0.5em;
}
}
}
}
}
*/
}
......@@ -1273,13 +1368,17 @@ div[data-gadget-scope='erp5_searchfield'] {
a {
padding: 0.5em;
border: 1px solid rgba(0, 0, 0, 0.14);
border-radius: 0.315em;
border-radius: @radius;
margin-right: 0.5em;
&:last-of-type {
margin-right: 0;
}
&:hover, &:active {
background-color: @colorblocklinkbackground;
}
@media @smartphone {
.hide_text(@width: 2em);
}
......@@ -1314,14 +1413,6 @@ div[data-gadget-scope='erp5_searchfield'] {
/**********************************************
* Keyframes
**********************************************/
@-moz-keyframes spin {
from { -moz-transform: rotate(0deg); }
to { -moz-transform: rotate(360deg); }
}
@-webkit-keyframes spin {
from { -webkit-transform: rotate(0deg); }
to { -webkit-transform: rotate(360deg); }
}
@keyframes spin {
from {transform:rotate(0deg);}
to {transform:rotate(360deg);}
......@@ -1353,8 +1444,6 @@ div[data-gadget-scope='erp5_searchfield'] {
opacity: 1;
&::before {
content: "\f110";
-webkit-animation: spin .5s infinite linear;
-moz-animation: spin .5s infinite linear;
animation: spin .5s infinite linear;
}
}
......
<html class="ui-mobile">
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title tal:content="python: here.getPortalObject().getTitle()"></title>
<link rel="stylesheet" href="gadget_erp5.css">
<link rel="stylesheet" href="jquerymobile.css">
</head>
<body class="ui-mobile-viewport ui-overlay-a" tal:define="form_action string:WebSite_login;">
<div class="ui-hidden-accessible gadget-container"></div>
<div data-role="page" data-url="/" tabindex="0" class="ui-page ui-page-theme-a ui-page-header-fixed ui-page-active" style="padding-top: 36px; min-height: 939px;">
<body tal:define="form_action string:WebSite_login;">
<div data-role="header" class="gadget-header ui-header ui-bar-a ui-header-fixed slidedown" data-theme="a" data-position="fixed" data-tap-toggle="false" role="banner">
<div class="ui-controlgroup ui-controlgroup-horizontal ui-btn-left">
<div class="ui-controlgroup-controls">
<div data-gadget-scope='header'>
<div class="ui-header">
<h1><span>Connect</span></h1>
</div>
</div>
<span>
<h1 class="ui-title" tal:content="python: here.getPortalObject().getTitle()"></h1>
<div class="ui-controlgroup ui-controlgroup-horizontal ui-btn-right">
<div class="ui-controlgroup-controls">
<div data-gadget-scope='panel'>
<div data-role="header">
<div class="panel_img">
<img alt="ERP5" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJcAAAA/CAMAAADaDqrIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEM5NUE4MzQ5NjQxMUUzOUZEQUU2NUY1RTI1RjdCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEM5NUE4NDQ5NjQxMUUzOUZEQUU2NUY1RTI1RjdCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwQzk1QTgxNDk2NDExRTM5RkRBRTY1RjVFMjVGN0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwQzk1QTgyNDk2NDExRTM5RkRBRTY1RjVFMjVGN0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+J9MJsAAAAwBQTFRF///////M//+Z//9m//8z//8A/8z//8zM/8yZ/8xm/8wz/8wA/5n//5nM/5mZ/5lm/5kz/5kA/2b//2bM/2aZ/2Zm/2Yz/2YA/zP//zPM/zOZ/zNm/zMz/zMA/wD//wDM/wCZ/wBm/wAz/wAAzP//zP/MzP+ZzP9mzP8zzP8AzMz/zMzMzMyZzMxmzMwzzMwAzJn/zJnMzJmZzJlmzJkzzJkAzGb/zGbMzGaZzGZmzGYzzGYAzDP/zDPMzDOZzDNmzDMzzDMAzAD/zADMzACZzABmzAAzzAAAmf//mf/Mmf+Zmf9mmf8zmf8Amcz/mczMmcyZmcxmmcwzmcwAmZn/mZnMmZmZmZlmmZkzmZkAmWb/mWbMmWaZmWZmmWYzmWYAmTP/mTPMmTOZmTNmmTMzmTMAmQD/mQDMmQCZmQBmmQAzmQAAZv//Zv/MZv+ZZv9mZv8zZv8AZsz/ZszMZsyZZsxmZswzZswAZpn/ZpnMZpmZZplmZpkzZpkAZmb/ZmbMZmaZZmZmZmYzZmYAZjP/ZjPMZjOZZjNmZjMzZjMAZgD/ZgDMZgCZZgBmZgAzZgAAM///M//MM/+ZM/9mM/8zM/8AM8z/M8zMM8yZM8xmM8wzM8wAM5n/M5nMM5mZM5lmM5kzM5kAM2b/M2bMM2aZM2ZmM2YzM2YAMzP/MzPMMzOZMzNmMzMzMzMAMwD/MwDMMwCZMwBmMwAzMwAAAP//AP/MAP+ZAP9mAP8zAP8AAMz/AMzMAMyZAMxmAMwzAMwAAJn/AJnMAJmZAJlmAJkzAJkAAGb/AGbMAGaZAGZmAGYzAGYAADP/ADPMADOZADNmADMzADMAAAD/AADMAACZAABmAAAzAAAAHHa7K3/AOojESZHJWZvNaKTSd63Whrbblb/fpMjks9Howtrt4e320uTx8Pb6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdfKHSQAAAOh0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ALItoLoAAAJkSURBVHja7NlZsqsgEABQ979C5kGGddxo4os0Q8BAynoFn0nUU23TNGRB9xzLdE3XdE3XdP2fLnIzF2VSrsYvC72HizAh9eZ5DVuOl15S4/jWwC+kDC8HPzCSJVHcRY8QXV2PwQuujUYTsYrvYlBv1yKLrsXHsPghnvR3Lazoip/JKuwpF8sm6/bY01Ow9CBlTXi53PNoRcUktEZT1NV1PIPnXAjtMJIMlzerFIzU1dVWF7aPj3Tetae4gjdxktG2et/qQjJ4kZFrv6ED4bK4eR1qduHzvEi4+PbGwD0EGu9CQQLFrv1F4jBc6BcuW3YhkPiPX1hOfxQvnHfh0HVMRqc4HuqiQf5k3mO6dq1s8Hx0H/Le5kq9YaNcxAcrZLpOvAv+ClcgNcZFtnrucd5Fwx4mXj0drnbBYXMuJmFDAV3Uhm4qlbHh3ddOrmholHNxFTVC+xTl2mf6pI4uVe4LwSp0DPGOmh/hAnM94bKZjkHlWuiLeV+cTab4luMKk82wy/Px2fLJskvKUk03hRf9RZ0wiYiZ4uVwVwTb9E71y0XboTYXGuTaa33Y47W5zBjXM3P11y7TfR2ycFdxyaW7uwSc5m0un9ix91m3TWJfW+1ijfW+wcVAfjS5dOP62LyvZZdcLHnA1MkFAtbgwq+Vm47po8OA1buwyy/a1ec5urzveAes2sV8kfW963mFaHNhlT0b6+Yi5+StchH1CtaK0ThXELDPLiyOPZHldzm/J1z9O/B14g7/K+DtkP7U8ivSeD4xaPCTSQvy+YIfubZWzRgtRe1iMP+3mq7pmq7p6jv+BBgAPrgi/TzwWzkAAAAASUVORK5CYII="/>
</div>
</div></span>
<div class="ui-navbar ui-subheader ui-grid-container ui-body-a" role="navigation">
<ul class="ui-grid-d">
</ul>
</div>
</div>
<div role="main" class="ui-content gadget-content">
<article class="ui-content ui-body-c">
<section class="ui-content-header-plain">
<div class="gadget-content">
<article>
<section>
<tal:block tal:condition="exists: request/portal_status_message">
<span tal:attributes="data-i18n request/portal_status_message"><span tal:content="request/portal_status_message"></span></span>
</tal:block>
<h3 class="ui-content-title ui-body-c" data-i18n="Connect">Connect</h3>
</section>
<section class="ui-body-c ui-content-section">
<form class="login-form" method="post" tal:attributes="action python: '%s/' % context.absolute_url()">
<section>
<form method="post" tal:attributes="action python: '%s/' % context.absolute_url()">
<div class="ui-field-contain">
<label data-i18n="Login">Login<span></span></label>
<div class="ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset"><input autofocus type="text" name="__ac_name" value="" required=""></div>
<div><input autofocus type="text" name="__ac_name" value="" required=""></div>
</div>
<div class="ui-field-contain">
<label data-i18n="Password">Password<span></span></label>
<div class="ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset"><input type="password" name="__ac_password" value="" required=""></div>
<div><input type="password" name="__ac_password" value="" required=""></div>
</div>
<div class="ui-field-contain">
<label></label>
......@@ -55,7 +47,12 @@
<a tal:attributes="href python: '%s/WebSite_viewRecoverAccount?came_from=%s' % (absolute_url, absolute_url)">I forgot my password!</a>
</div>
</div><br/>
<div class="ui-btn ui-input-btn ui-btn-b ui-corner-all ui-shadow ui-btn-inline">Log In<input data-theme="b" data-inline="true" type="submit" data-i18n="[value]Log In" value="Login" data-icon="check" tal:attributes="name python: '%s:method' % (form_action, )"/></div>
<div class="ui-field-contain">
<label></label>
<div><input type="submit" value="Login" tal:attributes="name python: '%s:method' % (form_action, )"/></div>
</div>
<input type="hidden" name="url" tal:attributes="value python: context.absolute_url()" />
<input tal:condition="exists: request/came_from"
type="hidden" name="came_from"
......@@ -64,7 +61,5 @@
</section>
</article>
</div>
</div>
<div class="ui-loader ui-corner-all ui-body-a ui-loader-default"><h1>loading</h1></div><div class="ui-panel-dismiss"></div>
</body>
</html>
\ No newline at end of file
......@@ -66,14 +66,14 @@
<tr>
<td>waitForElementPresent</td>
<td>//input[@class='and checkboxradio']</td>
<td>//select[@name='heard_about']</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='and checkboxradio']</td>
<td>on</td>
<td>//select[@name='heard_about']</td>
<td>AND</td>
</tr>
......@@ -190,27 +190,27 @@
<tr>
<td>waitForElementPresent</td>
<td>//input[@class='and checkboxradio']</td>
<td>//select[@name='heard_about']</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='and checkboxradio']</td>
<td>on</td>
<td>//select[@name='heard_about']</td>
<td>AND</td>
</tr>
<tr>
<td>check</td>
<td>//input[@class='or checkboxradio']</td>
<td></td>
<td>select</td>
<td>//select[@name='heard_about']</td>
<td>index=1</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='and checkboxradio']</td>
<td>off</td>
<td>//select[@name='heard_about']</td>
<td>OR</td>
</tr>
......
......@@ -66,14 +66,14 @@
<tr>
<td>waitForElementPresent</td>
<td>//input[@class='and checkboxradio']</td>
<td>//select[@name='heard_about']</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='and checkboxradio']</td>
<td>on</td>
<td>//select[@name='heard_about']</td>
<td>AND</td>
</tr>
......@@ -150,14 +150,14 @@
<tr>
<td>waitForElementPresent</td>
<td>//input[@class='and checkboxradio']</td>
<td>//select[@name='heard_about']</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='and checkboxradio']</td>
<td>on</td>
<td>//select[@name='heard_about']</td>
<td>AND</td>
</tr>
......
......@@ -67,14 +67,14 @@
<tr>
<td>waitForElementPresent</td>
<td>//input[@class='and checkboxradio']</td>
<td>//select[@name='heard_about']</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='and checkboxradio']</td>
<td>on</td>
<td>//select[@name='heard_about']</td>
<td>AND</td>
</tr>
......@@ -165,14 +165,14 @@
<tr>
<td>waitForElementPresent</td>
<td>//input[@class='and checkboxradio']</td>
<td>//select[@name='heard_about']</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='and checkboxradio']</td>
<td>on</td>
<td>//select[@name='heard_about']</td>
<td>AND</td>
</tr>
......@@ -196,15 +196,15 @@
<tr>
<td>check</td>
<td>//input[@class='or checkboxradio']</td>
<td></td>
<td>select</td>
<td>//select[@name='heard_about']</td>
<td>index=1</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='and checkboxradio']</td>
<td>off</td>
<td>//select[@name='heard_about']</td>
<td>OR</td>
</tr>
......@@ -264,21 +264,15 @@
<tr>
<td>waitForElementPresent</td>
<td>//input[@class='and checkboxradio']</td>
<td>//select[@name='heard_about']</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='and checkboxradio']</td>
<td>off</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='or checkboxradio']</td>
<td>on</td>
<td>//select[@name='heard_about']</td>
<td>OR</td>
</tr>
......
......@@ -66,14 +66,14 @@
<tr>
<td>waitForElementPresent</td>
<td>//input[@class='and checkboxradio']</td>
<td>//select[@name='heard_about']</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='and checkboxradio']</td>
<td>on</td>
<td>//select[@name='heard_about']</td>
<td>AND</td>
</tr>
......@@ -94,27 +94,27 @@
<tr>
<td>waitForElementPresent</td>
<td>//input[@class='and checkboxradio']</td>
<td>//select[@name='heard_about']</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='and checkboxradio']</td>
<td>on</td>
<td>//select[@name='heard_about']</td>
<td>AND</td>
</tr>
<tr>
<td>check</td>
<td>//input[@class='or checkboxradio']</td>
<td></td>
<td>select</td>
<td>//select[@name='heard_about']</td>
<td>index=1</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='and checkboxradio']</td>
<td>off</td>
<td>//select[@name='heard_about']</td>
<td>OR</td>
</tr>
......
......@@ -66,20 +66,20 @@
<tr>
<td>waitForElementPresent</td>
<td>//input[@class='and checkboxradio']</td>
<td>//select[@name='heard_about']</td>
<td></td>
</tr>
<tr>
<td>check</td>
<td>//input[@class='or checkboxradio']</td>
<td>on</td>
<td>select</td>
<td>//select[@name='heard_about']</td>
<td>index=1</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='or checkboxradio']</td>
<td>on</td>
<td>//select[@name='heard_about']</td>
<td>OR</td>
</tr>
......
......@@ -66,14 +66,14 @@
<tr>
<td>waitForElementPresent</td>
<td>//input[@class='and checkboxradio']</td>
<td>//select[@name='heard_about']</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@class='and checkboxradio']</td>
<td>on</td>
<td>//select[@name='heard_about']</td>
<td>AND</td>
</tr>
......
......@@ -85,7 +85,7 @@
<tr>
<td>select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]/div[2]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]//select[2]</td>
<td>index=0</td>
</tr>
......
......@@ -83,14 +83,14 @@
<tr>
<td>select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]/div[2]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]//select[2]</td>
<td>index=0</td>
</tr>
<tr>
<td>select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[2]/div[1]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[2]//select[1]</td>
<td>index=1</td>
</tr>
......@@ -131,7 +131,7 @@
<tr>
<td>click</td>
<td>//input[@class="search_button"]</td>
<td>//button[contains(@class, "search_button")]</td>
<td></td>
</tr>
......
......@@ -98,14 +98,14 @@
<tr>
<td>select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]/div[2]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]//select[2]</td>
<td>index=0</td>
</tr>
<tr>
<td>select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[2]/div[1]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[2]//select[1]</td>
<td>index=1</td>
</tr>
......
......@@ -96,14 +96,14 @@
<tr>
<td>select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]/div[2]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]//select[2]</td>
<td>index=0</td>
</tr>
<tr>
<td>select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[2]/div[1]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[2]//select[1]</td>
<td>index=1</td>
</tr>
......@@ -145,26 +145,26 @@
<tr>
<td>verifyValue</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]/div[1]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]//select[1]</td>
<td>id</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]/div[2]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]//select[2]</td>
<td>ascending</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[2]/div[1]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[2]//select[1]</td>
<td>title</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[2]/div[2]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[2]//select[2]</td>
<td>descending</td>
</tr>
......
......@@ -81,7 +81,7 @@
<tr>
<td>select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]/div[2]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]//select[2]</td>
<td>ascending</td>
</tr>
......
......@@ -81,7 +81,7 @@
<tr>
<td>select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]/div[2]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]//select[2]</td>
<td>ascending</td>
</tr>
......
......@@ -48,8 +48,8 @@
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-closed')]</td>
<td>assertElementNotPresent</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -59,7 +59,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
......
......@@ -36,8 +36,8 @@
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-closed')]</td>
<td>assertElementNotPresent</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -47,7 +47,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
......
......@@ -32,7 +32,7 @@
<!-- Page has a search field -->
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='m']//div[@data-gadget-scope='erp5_searchfield']//input[@type='text' and @name='search']</td>
<td>//div[@data-gadget-scope='m']//div[@data-gadget-scope='erp5_searchfield']//input[@type='search' and @name='search']</td>
<td></td>
</tr>
<tr>
......@@ -42,7 +42,7 @@
</tr>
<tr>
<td>click</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@class='search_button' and @type='submit']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//button[contains(@class, 'search_button')]</td>
<td></td>
</tr>
<tr>
......@@ -53,7 +53,7 @@
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='m']//div[@data-gadget-scope='erp5_searchfield']//input[@type='text' and @name='search' and @value='foobar']</td>
<td>//div[@data-gadget-scope='m']//div[@data-gadget-scope='erp5_searchfield']//input[@type='search' and @name='search' and @value='foobar']</td>
<td></td>
</tr>
......
......@@ -76,7 +76,7 @@
</tr>
<tr>
<td>click</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@class='search_button' and @type='submit']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//button[contains(@class, 'search_button')]</td>
<td></td>
</tr>
<tr>
......
......@@ -78,7 +78,7 @@
<tr>
<td>select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]/div[2]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]//select[2]</td>
<td>index=0</td>
</tr>
......
......@@ -36,8 +36,8 @@
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-closed')]</td>
<td>assertElementNotPresent</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -47,7 +47,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
......
......@@ -36,8 +36,8 @@
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-closed')]</td>
<td>assertElementNotPresent</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -47,7 +47,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
......
......@@ -36,8 +36,8 @@
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-closed')]</td>
<td>assertElementNotPresent</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -47,7 +47,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
......
......@@ -36,8 +36,8 @@
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-closed')]</td>
<td>assertElementNotPresent</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -47,7 +47,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
......
......@@ -23,15 +23,10 @@
<td>//div[@data-gadget-url='${base_url}/web_site_module/renderjs_runner/gadget_erp5_page_front.html']</td>
<td></td>
</tr>
<tr>
<td>waitForTextPresent</td>
<td>Other</td>
<td></td>
</tr>
<!-- Generate links to module -->
<tr>
<td>assertElementPresent</td>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='m']//a[text()='Bars' and contains(@href, '#!display_stored_state') and contains(@href, 'n.jio_key=bar_module')]</td>
<td></td>
</tr>
......@@ -55,7 +50,7 @@
</tr>
<tr>
<td>waitForTextPresent</td>
<td>Foos</td>
<td>Foo Module</td>
<td></td>
</tr>
......
......@@ -19,17 +19,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//h3[@data-i18n='Other']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//h3[@data-i18n='Other']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Foos']</td>
<td>//div[@data-gadget-scope='m']//a[text()='Foos' and contains(@href, '#!display_stored_state') and contains(@href, 'n.jio_key=foo_module')]</td>
<td></td>
</tr>
<tr>
......@@ -133,7 +123,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......
......@@ -119,7 +119,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -138,7 +138,7 @@
<!-- Generate links to module -->
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='m']//li[@class='ui-first-child']//a[text()='Title 2 (Foo)' and contains(@href, '#!display') and contains(@href, 'n.jio_key=foo_module%2F2')]</td>
<td>//div[@data-gadget-scope='m']//li[1]//a[text()='Title 2 (Foo)' and contains(@href, '#!display') and contains(@href, 'n.jio_key=foo_module%2F2')]</td>
<td></td>
</tr>
<tr>
......@@ -182,7 +182,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -201,7 +201,7 @@
<!-- Generate links to module -->
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='m']//li[@class='ui-first-child']//a[text()='Title 1 (Foo)' and contains(@href, '#!display') and contains(@href, 'n.jio_key=foo_module%2F1')]</td>
<td>//div[@data-gadget-scope='m']//li[1]//a[text()='Title 1 (Foo)' and contains(@href, '#!display') and contains(@href, 'n.jio_key=foo_module%2F1')]</td>
<td></td>
</tr>
<tr>
......
......@@ -36,8 +36,8 @@
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-closed')]</td>
<td>assertElementNotPresent</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -47,7 +47,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
......
......@@ -36,8 +36,8 @@
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-closed')]</td>
<td>assertElementNotPresent</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -47,7 +47,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
......
......@@ -36,8 +36,8 @@
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-closed')]</td>
<td>assertElementNotPresent</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -47,7 +47,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
......
......@@ -41,8 +41,8 @@
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-closed')]</td>
<td>assertElementNotPresent</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -52,7 +52,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
......
......@@ -36,8 +36,8 @@
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-closed')]</td>
<td>assertElementNotPresent</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -47,7 +47,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
......
......@@ -36,8 +36,8 @@
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-closed')]</td>
<td>assertElementNotPresent</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -47,7 +47,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
......
......@@ -50,7 +50,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@value='portal_type:("Bar" OR "Foo") AND simulation_state:"draft"' and @type='text' and @name='search']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@value='portal_type:("Bar" OR "Foo") AND simulation_state:"draft"' and @type='search' and @name='search']</td>
<td></td>
</tr>
......
......@@ -32,7 +32,7 @@
</tr>
<tr>
<td>click</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@class='search_button' and @type='submit']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//button[contains(@class, 'search_button')]</td>
<td></td>
</tr>
<tr>
......@@ -55,7 +55,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='panel']//div[contains(@class, 'ui-panel-open')]</td>
<td>//div[@data-gadget-scope='panel' and contains(@class, 'visible')]</td>
<td></td>
</tr>
<tr>
......@@ -71,37 +71,26 @@
<td></td>
</tr>
<!-- Go back to foo module -->
<tr>
<td>waitForElementPresent</td>
<td>//h3[@data-i18n='Other']</td>
<td>//div[@data-gadget-scope='m']//a[text()='Foos']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//h3[@data-i18n='Other']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='m']//a[@data-i18n='Foos']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//div[@data-gadget-scope='m']//a[@data-i18n='Foos']</td>
<td>//div[@data-gadget-scope='m']//a[text()='Foos']</td>
<td></td>
</tr>
<!-- Wait for gadget to be loaded -->
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-url='${base_url}/web_site_module/renderjs_runner/gadget_erp5_pt_form_list.html']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@value='title' and @type='search' and @name='search']</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@value='title' and @type='text' and @name='search']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@value='title' and @type='search' and @name='search']</td>
<td></td>
</tr>
......
......@@ -37,7 +37,7 @@
</tr>
<tr>
<td>click</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@class='search_button' and @type='submit']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//button[contains(@class, 'search_button')]</td>
<td></td>
</tr>
......@@ -190,7 +190,7 @@
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@value='title' and @type='text' and @name='search']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@value='title' and @type='search' and @name='search']</td>
<td></td>
</tr>
<tr>
......
......@@ -70,7 +70,7 @@
</tr>
<tr>
<td>click</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@class='search_button' and @type='submit']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//button[contains(@class, 'search_button')]</td>
<td></td>
</tr>
<tr>
......@@ -117,7 +117,7 @@
<tr>
<td>select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]/div[2]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]//select[2]</td>
<td>descending</td>
</tr>
......
......@@ -37,7 +37,7 @@
</tr>
<tr>
<td>click</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@class='search_button' and @type='submit']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//button[contains(@class, 'search_button')]</td>
<td></td>
</tr>
......@@ -92,7 +92,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@value='title' and @type='text' and @name='search']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@value='title' and @type='search' and @name='search']</td>
<td></td>
</tr>
<tr>
......
......@@ -37,7 +37,7 @@
</tr>
<tr>
<td>click</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@class='search_button' and @type='submit']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//button[contains(@class, 'search_button')]</td>
<td></td>
</tr>
<tr>
......@@ -91,7 +91,7 @@
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@value='title' and @type='text' and @name='search']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@value='title' and @type='search' and @name='search']</td>
<td></td>
</tr>
<tr>
......
......@@ -70,7 +70,7 @@
</tr>
<tr>
<td>click</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@class='search_button' and @type='submit']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//button[contains(@class, 'search_button')]</td>
<td></td>
</tr>
......@@ -118,7 +118,7 @@
<tr>
<td>select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]/div[2]//select</td>
<td>//div[@class='sort_item_container ui-controlgroup ui-corner_all']/div[1]//select[2]</td>
<td>descending</td>
</tr>
......
......@@ -177,7 +177,7 @@
<tr>
<td>click</td>
<td>//input[@class="search_button"]</td>
<td>//button[contains(@class, "search_button")]</td>
<td></td>
</tr>
......
......@@ -263,7 +263,7 @@
<tr>
<td>click</td>
<td>//input[@class="search_button"]</td>
<td>//button[contains(@class, "search_button")]</td>
<td></td>
</tr>
......
......@@ -354,17 +354,22 @@
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Foos"]</td>
<td>//div[@data-gadget-scope='m']//a[text()='Foos' and contains(@href, '#!display_stored_state') and contains(@href, 'n.jio_key=foo_module')]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n="Foos"]</td>
<td>//div[@data-gadget-scope='m']//a[text()='Foos' and contains(@href, '#!display_stored_state') and contains(@href, 'n.jio_key=foo_module')]</td>
<td></td>
</tr>
<tr>
<td>waitForTextPresent</td>
<td>Foo Module</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//tbody/tr[1]/th/a</td>
......
......@@ -323,7 +323,7 @@
<tr>
<td>click</td>
<td>//input[@class="search_button"]</td>
<td>//button[contains(@class, "search_button")]</td>
<td></td>
</tr>
......@@ -478,7 +478,7 @@
<tr>
<td>click</td>
<td>//input[@class="search_button"]</td>
<td>//button[contains(@class, "search_button")]</td>
<td></td>
</tr>
......
......@@ -194,7 +194,7 @@
<tr>
<td>click</td>
<td>//input[@class="search_button"]</td>
<td>//button[contains(@class, "search_button")]</td>
<td></td>
</tr>
......
......@@ -424,14 +424,20 @@
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Foos"]</td>
<td>//div[@data-gadget-scope='m']//a[text()='Foos' and contains(@href, '#!display_stored_state') and contains(@href, 'n.jio_key=foo_module')]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n="Foos"]</td>
<td>//div[@data-gadget-scope='m']//a[text()='Foos' and contains(@href, '#!display_stored_state') and contains(@href, 'n.jio_key=foo_module')]</td>
<td></td>
</tr>
<tr>
<td>waitForTextPresent</td>
<td>Foo Module</td>
<td></td>
</tr>
......
......@@ -52,22 +52,14 @@
<tr>
<td>waitForElementPresent</td>
<td>//h3[@data-i18n='Other']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//h3[@data-i18n='Other']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Bars']</td>
<td>//div[@data-gadget-scope='m']//a[text()='Bars' and contains(@href, '#!display_stored_state') and contains(@href, 'n.jio_key=bar_module')]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Bars</td>
<td>//div[@data-gadget-scope='m']//a[text()='Bars' and contains(@href, '#!display_stored_state') and contains(@href, 'n.jio_key=bar_module')]</td>
<td></td>
</tr>
<tr>
......
......@@ -109,7 +109,7 @@
<tr>
<td>clickAndWait</td>
<td>//form[@class="login-form"]//a[text()="I forgot my password!"]</td>
<td>//a[text()="I forgot my password!"]</td>
<td></td>
</tr>
<tr>
......@@ -145,7 +145,7 @@
<tr>
<td>waitForElementPresent</td>
<td>//form[@class="login-form"]//a[text()="I forgot my password!"]</td>
<td>//a[text()="I forgot my password!"]</td>
<td></td>
<tr>
<td>assertTextPresent</td>
......
......@@ -51,7 +51,7 @@
<tr>
<td>click</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//input[@class='search_button' and @type='submit']</td>
<td>//div[@data-gadget-scope='erp5_searchfield']//button[contains(@class, 'search_button')]</td>
<td></td>
</tr>
......
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