Commit 4f041144 authored by Boris Kocherov's avatar Boris Kocherov Committed by Boris Kocherov

erp5_xhtml_style: change to bootstrap design

parent 303e5f15
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
xmlns:i18n="http://xml.zope.org/namespaces/i18n" xmlns:i18n="http://xml.zope.org/namespaces/i18n"
tal:define="dummy python: request.RESPONSE.setHeader('Content-Type', tal:define="dummy python: request.RESPONSE.setHeader('Content-Type',
'text/html;; charset=utf-8');"> 'text/html;; charset=utf-8');">
<div class="fieldset hidden_label"> <div class="fieldset hidden_label col-md-6">
<div> <div class="form-group">
<input type="file" name="file" size="30" /> <input type="file" name="file" size="30" class="form-control"/>
</div> </div>
<div> <div class="form-group">
<label for="classification" <label for="classification"
value="" value=""
i18n:translate="" i18n:translate=""
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
tal:attributes="value python:item[1]"/> tal:attributes="value python:item[1]"/>
</select> </select>
</div> </div>
<div> <div class="row">
<label for="follow_up_list" <label for="follow_up_list"
value="" value=""
i18n:translate="" i18n:translate=""
......
...@@ -2,13 +2,17 @@ ...@@ -2,13 +2,17 @@
xmlns:i18n="http://xml.zope.org/namespaces/i18n" xmlns:i18n="http://xml.zope.org/namespaces/i18n"
tal:define="dummy python: request.RESPONSE.setHeader('Content-Type', tal:define="dummy python: request.RESPONSE.setHeader('Content-Type',
'text/html;; charset=utf-8');"> 'text/html;; charset=utf-8');">
<div tal:define="search_default_text python:here.Base_translateString('Search')"> <div class="row"
<input class="quick_search_field" type="text" onkeypress="submitFormOnEnter(event, this.form, 'ERP5Site_processAdvancedSearch');" tal:define="search_default_text python:here.Base_translateString('Search')">
<div class="input-group col-md-4">
<input class="quick_search_field form-control" type="text" onkeypress="submitFormOnEnter(event, this.form, 'ERP5Site_processAdvancedSearch');"
value="Search" tal:attributes="value string:${search_default_text}; value="Search" tal:attributes="value string:${search_default_text};
onfocus string:if (this.value=='${search_default_text}') this.value='';" onfocus string:if (this.value=='${search_default_text}') this.value='';"
onfocus="this.value='';" onfocus="this.value='';"
class="input-text" name="top_your_search_text" size="40" accesskey="4"/> class="input-text" name="top_your_search_text" accesskey="4"/>
<select size="1" class="input" name="top_your_search_portal_type"> <div class="input-group-btn">
<select size="1" class="input form-control" name="top_your_search_portal_type"
data-width="auto">
<option value="" selected="selected" i18n:translate="" i18n:domain="ui">Everything</option> <option value="" selected="selected" i18n:translate="" i18n:domain="ui">Everything</option>
<option value="all" i18n:translate="" i18n:domain="ui">All Documents</option> <option value="all" i18n:translate="" i18n:domain="ui">All Documents</option>
<option tal:repeat="ptype here/getPortalDocumentTypeList" <option tal:repeat="ptype here/getPortalDocumentTypeList"
...@@ -20,7 +24,10 @@ ...@@ -20,7 +24,10 @@
<option value="Person" i18n:translate="" i18n:domain="ui">Person</option> <option value="Person" i18n:translate="" i18n:domain="ui">Person</option>
<option value="Organisation" i18n:translate="" i18n:domain="ui">Organisation</option> <option value="Organisation" i18n:translate="" i18n:domain="ui">Organisation</option>
</select> </select>
<input type="submit" name="ERP5Site_processAdvancedSearch:method" value="Search" <button type="submit" name="ERP5Site_processAdvancedSearch:method" value="Search"
i18n:attributes="value" i18n:domain="ui"/> class="btn btn-default"
i18n:translate="" i18n:domain="ui">Search</button>
</div>
</div>
</div> </div>
</tal:block> </tal:block>
\ No newline at end of file
...@@ -2,9 +2,11 @@ ...@@ -2,9 +2,11 @@
xmlns:i18n="http://xml.zope.org/namespaces/i18n" xmlns:i18n="http://xml.zope.org/namespaces/i18n"
tal:define="selected_tab options/selected_tab"> tal:define="selected_tab options/selected_tab">
<ul id="tab_box" <ul id="tab_box"
tal:define="current_url here/absolute_url"><li tal:repeat="tab here/ERP5Site_getTabList" class="nav nav-pills"
tal:define="current_url here/absolute_url">
<li tal:repeat="tab here/ERP5Site_getTabList"
id="quick_search_tab" class="selected" id="quick_search_tab" class="selected"
tal:attributes="class python:test(selected_tab == tab['id'], 'selected', 'non_selected'); tal:attributes="class python:test(selected_tab == tab['id'], 'selected active', 'non_selected');
id tab/id"><a href="view" id tab/id"><a href="view"
tal:attributes="href python:'%s/view?erp5_site_selected_tab=%s' % (current_url, tab['id'])"> tal:attributes="href python:'%s/view?erp5_site_selected_tab=%s' % (current_url, tab['id'])">
<span> <span>
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<tal:block tal:define="dummy python:request.RESPONSE.redirect('%s/login_form' % portal.absolute_url())" /> <tal:block tal:define="dummy python:request.RESPONSE.redirect('%s/login_form' % portal.absolute_url())" />
</tal:block> </tal:block>
<tal:block tal:condition="python:not here.portal_membership.isAnonymousUser()"> <tal:block tal:condition="python:not here.portal_membership.isAnonymousUser()">
<div class="index_html" style="margin:20px 40px 0 40px; padding:0; text-align:left;"> <div class="index_html">
<div class="document"> <div class="document">
<div class="actions"> <div class="actions">
<metal:block define-slot="tabs" /> <metal:block define-slot="tabs" />
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
<div id="container" style="margin: 1em"> <div id="container" style="margin: 1em">
<metal:block define-slot="content" /> <metal:block define-slot="content" />
</div> </div>
<p class="clear" />
</div> </div>
<tal:block tal:condition="python: here.getPortalObject().restrictedTraverse('portal_gadgets', None) is not None"> <tal:block tal:condition="python: here.getPortalObject().restrictedTraverse('portal_gadgets', None) is not None">
<tal:block tal:condition="exists:here/ERP5Site_viewHomeAreaRenderer" <tal:block tal:condition="exists:here/ERP5Site_viewHomeAreaRenderer"
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
show_select_column here/showSelectColumn; show_select_column here/showSelectColumn;
show_anchor_column here/showAnchorColumn; show_anchor_column here/showAnchorColumn;
show_search_line here/showSearchLine; show_search_line here/showSearchLine;
global is_filtered python: show_search_line and not here.isNotFiltered();
is_web_mode real_context/isWebMode | nothing; is_web_mode real_context/isWebMode | nothing;
is_dialog_mode request/dialog_mode | nothing; is_dialog_mode request/dialog_mode | nothing;
display_style_list here/getDisplayStyleList; display_style_list here/getDisplayStyleList;
...@@ -84,17 +85,58 @@ ...@@ -84,17 +85,58 @@
</tal:block> </tal:block>
</tal:block> </tal:block>
<div class="listbox-container"> <div class="listbox-head well well-sm">
<ul class="nav">
<!-- Listbox head (in left) -->
<li class="listbox-head-title pull-left">
<!-- List tree mode choice -->
<tal:block tal:condition="python: show_listbox_tree_mode_selection and not is_web_mode">
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_tree_mode_selection"/>
</tal:block>
<div class="listbox-tree"> <!-- Listbox title -->
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_title"/>
<!-- Domain Report Tree mode --> <!-- Number of rows in ERP5 mode -->
<div class="listbox-domain-tree-container" <tal:block tal:condition="python: not is_web_mode">
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_number_of_records"/>
</tal:block>
<!-- List style display mode -->
<tal:block tal:condition="python: show_list_style_selection and not is_web_mode">
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_display_style_selection"/>
</tal:block>
</li>
<!-- Listbox nagivation (in right) -->
<li class="listbox-head-navigation pull-right">
<!--Show search result in web mode-->
<div class="listbox-header-box"
tal:condition="is_web_mode">
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_number_of_records"/>
</div>
<!--Page navigation -->
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_navigation"
tal:condition="python: need_pagination and not is_web_mode"/>
</li>
</ul>
</div>
<div class="listbox-container row">
<div class="listbox-tree col-md-2"
tal:condition="is_domain_tree_mode"> tal:condition="is_domain_tree_mode">
<!-- Domain Report Tree mode -->
<tal:block tal:define="selected_domain_path here/getSelectedDomainPath"> <tal:block tal:define="selected_domain_path here/getSelectedDomainPath">
<!-- Select domain node --> <!-- Select domain node -->
<select name="domain_root_url" <select name="domain_root_url"
class="form-control"
tal:attributes="onchange string:submitAction(this.form, '${context_url}/setDomainRoot')"> tal:attributes="onchange string:submitAction(this.form, '${context_url}/setDomainRoot')">
<tal:block tal:repeat="c here/getDomainRootList"> <tal:block tal:repeat="c here/getDomainRootList">
<option value="base_domain" <option value="base_domain"
...@@ -108,8 +150,8 @@ ...@@ -108,8 +150,8 @@
<!-- Domain node contents --> <!-- Domain node contents -->
<table cellpadding="0" <table cellpadding="0"
summary="This table contains the domain tree" summary="This table contains the domain tree"
class="listbox-table-domain-tree" class="listbox-table-domain-tree table"
tal:attributes="class string:${field_id}-table-domain-tree" tal:attributes="class string:table ${field_id}-table-domain-tree"
tal:define="report_tree_list python: here.makeReportTreeList(report_path = selected_domain_path, unfolded_list = selection.getDomainList(), is_report_opened = False, sort_on=(('int_index', 'ASC'),)); tal:define="report_tree_list python: here.makeReportTreeList(report_path = selected_domain_path, unfolded_list = selection.getDomainList(), is_report_opened = False, sort_on=(('int_index', 'ASC'),));
total_depth python: max([report_tree.depth for report_tree in report_tree_list] + [-1])"> total_depth python: max([report_tree.depth for report_tree in report_tree_list] + [-1])">
<tr tal:repeat="report_tree report_tree_list"> <tr tal:repeat="report_tree report_tree_list">
...@@ -121,13 +163,13 @@ ...@@ -121,13 +163,13 @@
tal:attributes="colspan python: total_depth - report_tree.depth + 1"> tal:attributes="colspan python: total_depth - report_tree.depth + 1">
<button type="submit" <button type="submit"
name="foldDomain:method" name="foldDomain:method"
class="tree-open" class="btn btn-default btn-xs tree-open"
tal:condition="report_tree/is_open" tal:condition="report_tree/is_open"
tal:content="report_tree/obj/getCompactTranslatedTitle" tal:content="report_tree/obj/getCompactTranslatedTitle"
tal:attributes="value string:${report_tree/domain_url}.${report_tree/depth}"/> tal:attributes="value string:${report_tree/domain_url}.${report_tree/depth}"/>
<button type="submit" <button type="submit"
name="unfoldDomain:method" name="unfoldDomain:method"
class="tree-closed" class="btn btn-link btn-xs tree-closed"
tal:condition="not: report_tree/is_open" tal:condition="not: report_tree/is_open"
tal:content="report_tree/obj/getCompactTranslatedTitle" tal:content="report_tree/obj/getCompactTranslatedTitle"
tal:attributes="value string:${report_tree/domain_url}.${report_tree/depth}"/> tal:attributes="value string:${report_tree/domain_url}.${report_tree/depth}"/>
...@@ -136,71 +178,14 @@ ...@@ -136,71 +178,14 @@
</table> </table>
</tal:block> </tal:block>
</div> </div>
</div>
<div class="listbox-content" <div class="listbox-content"
tal:attributes="class python: test(not is_domain_tree_mode, 'listbox-content maximal-width', 'listbox-content listbox-content-fixed-width')"> tal:attributes="class python: 'listbox-content col-md-12' if not is_domain_tree_mode else 'listbox-content col-md-10'">
<div class="listbox-head">
<div class="listbox-head-spacer"></div>
<div class="listbox-head-content">
<!-- Listbox head (in left) -->
<div class="listbox-head-title">
<!-- List tree mode choice -->
<div class="listbox-header-box"
tal:condition="python: show_listbox_tree_mode_selection and not is_web_mode">
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_tree_mode_selection"/>
</div>
<!-- Listbox title -->
<div class="listbox-header-box">
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_title"/>
</div>
<!-- Number of rows in ERP5 mode -->
<div class="listbox-header-box"
tal:condition="python: not is_web_mode">
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_number_of_records"/>
</div>
<!-- List style display mode -->
<div class="listbox-header-box"
tal:condition="python: show_list_style_selection and not is_web_mode">
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_display_style_selection"/>
</div>
</div>
<!-- Listbox nagivation (in right) -->
<div class="listbox-head-navigation">
<!--Show search result in web mode-->
<div class="listbox-header-box"
tal:condition="python: is_web_mode">
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_number_of_records"/>
</div>
<!--Page navigation --> <div class="listbox-body table-responsive">
<div class="listbox-header-box" <table class="table table-striped table-condensed listbox"
tal:condition="python: need_pagination and not is_web_mode"> tal:attributes="class string:table table-striped table-condensed listbox ${field_id} ${field_id}-${list_style}">
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_navigation"/>
</div>
</div>
</div>
</div>
<div class="listbox-body">
<table class="listbox"
tal:attributes="class python: 'listbox %s %s-%s' %(field_id, field_id, list_style)">
<thead> <thead>
<!--Column title --> <!--Column title -->
<tr class="listbox-label-line"> <tr class="listbox-label-line">
...@@ -225,27 +210,9 @@ ...@@ -225,27 +210,9 @@
<!-- Select cell --> <!-- Select cell -->
<th tal:condition="python: show_select_column" <th tal:condition="python: show_select_column"
class="listbox-table-select-cell"> class="listbox-table-select-cell">
<tal:block tal:condition="not:show_search_line">
<button class="listbox-check-all" title="Check All" <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_un_select_all"/>
type="submit" name="listbox_checkAll:method" value="listbox" </tal:block>
tal:attributes="value string:${field_id}"
i18n:domain="ui" i18n:attributes="title">
<img class="listbox-check-all" src="images/checkall.png"
alt="Check All" title="Check All"
tal:attributes="src string:${portal_url_string}/images/checkall.png"
i18n:domain="ui" i18n:attributes="title;alt" />
</button>
&nbsp;
<button class="listbox-uncheck-all" title="Uncheck All"
type="submit" name="listbox_uncheckAll:method" value="listbox"
tal:attributes="value string:${field_id}"
i18n:domain="ui" i18n:attributes="title">
<img class="listbox-uncheck-all" src="images/decheckall.png"
alt="Uncheck All" title="Uncheck All"
tal:attributes="src string:${portal_url_string}/images/decheckall.png;"
i18n:domain="ui" i18n:attributes="title;alt" />
</button>
</th> </th>
<!-- Label column row --> <!-- Label column row -->
...@@ -255,7 +222,11 @@ ...@@ -255,7 +222,11 @@
sort_order python: value[2]"> sort_order python: value[2]">
<th tal:condition="sql" class="listbox-table-header-cell" <th tal:condition="sql" class="listbox-table-header-cell"
tal:define="bt_class python: sort_order=='ascending' and 'sort-button sort-button-asc' tal:define="
icon_class python: sort_order=='ascending' and 'sort-arrow fa fa-long-arrow-up'
or sort_order == 'descending' and 'sort-arrow fa fa-long-arrow-down'
or 'sort-arrow';
bt_class python: sort_order=='ascending' and 'sort-button sort-button-asc'
or sort_order == 'descending' and 'sort-button sort-button-desc' or sort_order == 'descending' and 'sort-button sort-button-desc'
or 'sort-button'; or 'sort-button';
bt_title python: sort_order=='ascending' and 'Ascending Display' bt_title python: sort_order=='ascending' and 'Ascending Display'
...@@ -263,36 +234,71 @@ ...@@ -263,36 +234,71 @@
or 'Sort'; or 'Sort';
listbox_field_id string:${field_id}.${sql};"> listbox_field_id string:${field_id}.${sql};">
<!-- Button in normal view --> <!-- Button in normal view -->
<span tal:condition="not:is_gadget_mode" class="listbox-table-header-column-title" i18n:translate="" i18n:domain="ui" tal:content="title"/> <div class="listbox-table-header-column-title"
<button tal:condition="not:is_gadget_mode" data-trigger="hover"
type="submit" data-placement="left"
data-show=".sort-arrow"
data-form=".content">
<i tal:attributes="class icon_class" tal:condition="icon_class" style="display: none;"></i>
<tal:block i18n:translate="" i18n:domain="ui" tal:content="title"/>
<div class="content pull-left">
<div class="btn-group-vertical btn-group-xs"
tal:condition="is_gadget_mode"
tal:define ="params python: {'setSelectionQuickSortOrder:method':listbox_field_id};">
<button
type="button"
name="setSelectionQuickSortOrder:method" name="setSelectionQuickSortOrder:method"
alt="Ascending Display"
title="Ascending Display" title="Ascending Display"
class="sort-button sort-button-asc" class="sort-button sort-button-asc btn btn-default"
tal:attributes="value python:test(sort_order=='ascending', listbox_field_id+':none', listbox_field_id+':asc')" tal:attributes="value python: listbox_field_id+':none' if sort_order=='ascending' else listbox_field_id+':asc';
i18n:domain="ui" i18n:attributes="title"> onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,dom_id,params);
<img src="images/transparent-image.gif" class python: 'sort-button sort-button-asc btn btn-info' if sort_order=='ascending' else 'sort-button sort-button-asc btn btn-default';"
i18n:domain="ui" i18n:attributes="alt;title">
<i class="fa fa-arrow-up"></i>
</button>
<button
type="button"
name="setSelectionQuickSortOrder:method"
alt="Descending Display"
title="Descending Display"
class="sort-button sort-button-desc btn btn-default"
tal:attributes="value python: listbox_field_id+':none' if sort_order=='descending' else listbox_field_id+':desc';
onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,dom_id,params);
class python: 'sort-button sort-button-desc btn btn-info' if sort_order=='descending' else 'sort-button sort-button-desc btn btn-default';"
i18n:domain="ui" i18n:attributes="alt;title">
<i class="fa fa-arrow-down"></i>
</button>
</div>
<div class="btn-group-vertical btn-group-xs"
tal:condition="not:is_gadget_mode">
<button
type="submit"
name="setSelectionQuickSortOrder:method"
alt="Ascending Display" alt="Ascending Display"
title="Ascending Display" title="Ascending Display"
tal:attributes="src string:${portal_url_string}/images/transparent-image.gif; class="sort-button sort-button-asc btn btn-default"
class python:test(sort_order=='ascending', 'sort-button sort-button-arrow sort-button-asc-selected', 'sort-button sort-button-arrow sort-button-asc-not-selected');" tal:attributes="value python: listbox_field_id+':none' if sort_order=='ascending' else listbox_field_id+':asc';
i18n:domain="ui" i18n:attributes="title;alt" /> class python: 'sort-button sort-button-asc btn btn-info' if sort_order=='ascending' else 'sort-button sort-button-asc btn btn-default';"
i18n:domain="ui" i18n:attributes="alt;title">
<i class="fa fa-arrow-up"></i>
</button> </button>
<button tal:condition="not:is_gadget_mode" <button
type="submit" type="submit"
name="setSelectionQuickSortOrder:method" name="setSelectionQuickSortOrder:method"
title="Descending Display"
class="sort-button sort-button-desc"
tal:attributes="value python:test(sort_order=='descending', listbox_field_id+':none', listbox_field_id+':desc')"
i18n:domain="ui" i18n:attributes="title">
<img src="images/transparent-image.gif"
alt="Descending Display" alt="Descending Display"
title="Descending Display" title="Descending Display"
tal:attributes="src string:${portal_url_string}/images/transparent-image.gif; class="sort-button sort-button-desc btn btn-default"
class python:test(sort_order=='descending', 'sort-button sort-button-arrow sort-button-desc-selected', 'sort-button sort-button-arrow sort-button-desc-not-selected');" tal:attributes="value python: listbox_field_id+':none' if sort_order=='descending' else listbox_field_id+':desc';
i18n:domain="ui" i18n:attributes="title;alt" /> class python: 'sort-button sort-button-desc btn btn-info' if sort_order=='descending' else 'sort-button sort-button-desc btn btn-default';"
i18n:domain="ui" i18n:attributes="alt;title">
<i class="fa fa-arrow-down"></i>
</button> </button>
</div>
</div>
</div>
<tal:block tal:replace="nothing">
<!-- Button in gadget mode --> <!-- Button in gadget mode -->
<span tal:condition="is_gadget_mode" class="listbox-table-header-column-title" i18n:translate="" i18n:domain="ui" tal:content="title"/> <span tal:condition="is_gadget_mode" class="listbox-table-header-column-title" i18n:translate="" i18n:domain="ui" tal:content="title"/>
<button tal:condition="is_gadget_mode" <button tal:condition="is_gadget_mode"
...@@ -325,6 +331,7 @@ ...@@ -325,6 +331,7 @@
class python:test(sort_order=='descending', 'sort-button sort-button-arrow sort-button-desc-selected', 'sort-button sort-button-arrow sort-button-desc-not-selected');" class python:test(sort_order=='descending', 'sort-button sort-button-arrow sort-button-desc-selected', 'sort-button sort-button-arrow sort-button-desc-not-selected');"
i18n:domain="ui" i18n:attributes="title;alt" /> i18n:domain="ui" i18n:attributes="title;alt" />
</button> </button>
</tal:block>
</th> </th>
...@@ -374,11 +381,13 @@ ...@@ -374,11 +381,13 @@
<!--Select cell --> <!--Select cell -->
<th tal:condition="show_select_column" <th tal:condition="show_select_column"
class="listbox-table-select-cell"> class="listbox-table-select-cell">
<input class="listbox-select-action" type="image" <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_un_select_all"/>
<!--button class="listbox-select-action" type="image"
title="Action" alt="Action" name="Base_doSelect:method" title="Action" alt="Action" name="Base_doSelect:method"
tal:attributes="class string:${field_id}-select-action; tal:attributes="class string:${field_id}-select-action btn btn-default btn-xs;"
src string:${portal_url_string}/images/exec16.png" i18n:domain="ui" i18n:attributes="title" >
i18n:domain="ui" i18n:attributes="title" /> <i class="fa fa-cog"></i>
</button-->
</th> </th>
<!-- Real search columns headers --> <!-- Real search columns headers -->
...@@ -395,16 +404,16 @@ ...@@ -395,16 +404,16 @@
<tal:block tal:condition="python: search_field is None"> <tal:block tal:condition="python: search_field is None">
<input tal:condition="python: not is_gadget_mode" <input tal:condition="python: not is_gadget_mode"
size="5"
type="text" type="text"
class="form-control"
tal:attributes="name string:${field_id}_${alias}; tal:attributes="name string:${field_id}_${alias};
value param" value param"
onkeypress="submitFormOnEnter(event, this.form, 'Base_doSelect');"/> onkeypress="submitFormOnEnter(event, this.form, 'Base_doSelect');"/>
<!-- Search for gadget mode --> <!-- Search for gadget mode -->
<input tal:condition="python: is_gadget_mode" <input tal:condition="python: is_gadget_mode"
tal:define ="params python: {alias:'this.value'};" tal:define ="params python: {alias:'this.value'};"
size="8"
type="text" type="text"
class="form-control"
tal:attributes='name string:${field_id}_${alias}; tal:attributes='name string:${field_id}_${alias};
value python: selection.getParams().get(alias,""); value python: selection.getParams().get(alias,"");
onkeypress python:"if(event.keyCode==13){" + real_context.KnowledgePad_generateAjaxCall(context_url+"/"+form_id,box,dom_id,params).replace("\"this.value\"","this.value")+ "return false;;}"'/> onkeypress python:"if(event.keyCode==13){" + real_context.KnowledgePad_generateAjaxCall(context_url+"/"+form_id,box,dom_id,params).replace("\"this.value\"","this.value")+ "return false;;}"'/>
...@@ -438,7 +447,7 @@ ...@@ -438,7 +447,7 @@
tal:define="checked_uid_set here/getCheckedUidSet"> tal:define="checked_uid_set here/getCheckedUidSet">
<tr tal:repeat="line line_list" <tr tal:repeat="line line_list"
tal:attributes=" tal:attributes="
class python: line.getRowCSSClassName() or '%s %s' %('%s-data-line-%s' %(field_id, repeat['line'].index) ,test(repeat['line'].index % 2, 'DataB', 'DataA'));"> class python: line.getRowCSSClassName() or '%s %s' %('%s-data-line-%s' %(field_id, repeat['line'].index) ,'DataB' if repeat['line'].index % 2 else 'DataA');">
<tal:block tal:define="render_result line/render"> <tal:block tal:define="render_result line/render">
......
<div class="listbox-tree-mode-selection" <div class="btn-group btn-group-sm listbox-tree-mode-selection"
metal:define-macro="listbox_tree_mode_selection"> metal:define-macro="listbox_tree_mode_selection">
<!-- Flat List --> <!-- Flat List -->
<input tal:condition="python: is_domain_tree_supported or is_report_tree_supported" <button tal:condition="python: is_domain_tree_supported or is_report_tree_supported"
type="image" type="image"
class="listbox-tree-flat-list-mode" class="btn btn-default listbox-tree-flat-list-mode"
title="Flat List" title="Flat List"
name="setFlatListMode:method" name="setFlatListMode:method"
value="1" value="1"
alt="Flat List" alt="Flat List"
tal:attributes="src string:${portal_url_string}/images/text_block.png;" i18n:domain="ui" i18n:attributes="title; alt" >
i18n:domain="ui" i18n:attributes="title; alt" /> <i class="glyphicon glyphicon-align-justify"></i>
</button>
<!-- Report Tree --> <!-- Report Tree -->
<input tal:condition="python: not is_gadget_mode and is_report_tree_supported" <button tal:condition="python: not is_gadget_mode and is_report_tree_supported"
type="image" type="image"
class="listbox-tree-report-tree-mode" class="btn btn-default listbox-tree-report-tree-mode"
title="Report Tree" title="Report Tree"
name="setReportTreeMode:method" name="setReportTreeMode:method"
value="1" value="1"
alt="Report Tree" alt="Report Tree"
tal:attributes="src string:${portal_url_string}/images/view_tree.png;" tal:attributes="src string:${portal_url_string}/images/view_tree.png;"
i18n:domain="ui" i18n:attributes="title; alt" /> i18n:domain="ui" i18n:attributes="title; alt">
<i class="fa fa-level-down"></i>
</button>
<!-- Domain Tree --> <!-- Domain Tree -->
<input tal:condition="python: not is_gadget_mode and is_domain_tree_supported" <button tal:condition="python: not is_gadget_mode and is_domain_tree_supported"
type="image" type="image"
class="listbox-tree-domain-tree-mode" class="btn btn-default listbox-tree-domain-tree-mode"
title="Domain Tree" title="Domain Tree"
name="setDomainTreeMode:method" name="setDomainTreeMode:method"
value="1" value="1"
alt="Domain Tree" alt="Domain Tree"
tal:attributes="src string:${portal_url_string}/images/view_choose.png;" tal:attributes="src string:${portal_url_string}/images/view_choose.png;"
i18n:domain="ui" i18n:attributes="title; alt" /> i18n:domain="ui" i18n:attributes="title; alt">
<i class="glyphicon glyphicon-list"></i>
</button>
</div> </div>
<div class="btn-group-vertical btn-group-xs"
metal:define-macro="listbox_un_select_all">
<button class="listbox-uncheck-all btn btn-default"
type="submit"
name="uncheckAll:method" value="1"
alt="Uncheck All" title="Uncheck All"
tal:attributes="name string:${field_id}_uncheckAll:method;"
i18n:domain="ui" i18n:attributes="title" >
<i class="fa fa-square-o"></i>
</button>
<button class="listbox-check-all btn btn-default"
type="submit"
name="checkAll:method" value="1"
alt="Check All" title="Check All"
tal:attributes="name string:${field_id}_checkAll:method;"
i18n:domain="ui" i18n:attributes="title">
<i class="fa fa-check-square-o"></i>
</button>
</div>
<div class="listbox-list-style-selection" <div class="listbox-list-style-selection"
metal:define-macro="listbox_display_style_selection"> metal:define-macro="listbox_display_style_selection">
...@@ -96,7 +122,7 @@ ...@@ -96,7 +122,7 @@
</div> </div>
<!-- Number of listbox records --> <!-- Number of listbox records -->
<div class="listbox-number-of-records" <div class="listbox-number-of-records btn-group"
metal:define-macro="listbox_number_of_records"> metal:define-macro="listbox_number_of_records">
<!-- listbox start - stop number --> <!-- listbox start - stop number -->
...@@ -127,7 +153,7 @@ ...@@ -127,7 +153,7 @@
</div> </div>
<!-- Listbox title --> <!-- Listbox title -->
<div class="listbox-title" <div class="listbox-title btn-group"
metal:define-macro="listbox_title" metal:define-macro="listbox_title"
tal:define="class string:${field_id}_title;"> tal:define="class string:${field_id}_title;">
...@@ -142,8 +168,10 @@ ...@@ -142,8 +168,10 @@
tal:attributes="class class" tal:attributes="class class"
tal:content="here/getTitle" /> tal:content="here/getTitle" />
</tal:block> </tal:block>
<tal:block tal:condition="not: is_web_mode">:</tal:block> <tal:block tal:condition="not: is_web_mode">:<span id="filter-note" class="text-danger"
i18n:translate=""
i18n:domain="ui"
tal:condition="is_filtered">! filtered !</span></tal:block>
</div> </div>
<!-- Listbox navigation --> <!-- Listbox navigation -->
...@@ -158,108 +186,102 @@ ...@@ -158,108 +186,102 @@
<!-- Listbox Macros --> <!-- Listbox Macros -->
<!-- First & Previous button navigation --> <!-- First & Previous button navigation -->
<tal:block metal:define-macro="first_previous_page_navigation"> <tal:block metal:define-macro="first_previous_page_navigation">
<div class="btn-group btn-group-sm pull-left" tal:condition="python: here.current_page > 0">
<tal:block tal:condition="python: here.current_page > 0">
<button type="submit" <button type="submit"
title="First Page" name="listbox_firstPage:method" value="listbox" title="First Page" name="listbox_firstPage:method" value="listbox"
class="listbox_first_page" class="listbox_first_page"
tal:attributes="value string:${field_id}; tal:attributes="value string:${field_id};
class python: test(is_default_listbox_field, 'listbox_first_page', 'listbox_first_page %s_first_page' %field_id)" class python: test(is_default_listbox_field, 'btn btn-default listbox_first_page', 'btn btn-default listbox_first_page %s_first_page' %field_id)"
i18n:domain="ui" i18n:attributes="title"> i18n:domain="ui" i18n:attributes="title">
<span class="image"/> <i class='fa fa-angle-double-left'></i>
</button> </button>
<button type="submit" <button type="submit"
title="Previous Page" name="listbox_previousPage:method" value="listbox" title="Previous Page" name="listbox_previousPage:method" value="listbox"
class="listbox_previous_page" class="listbox_previous_page"
tal:attributes="value string:${field_id}; tal:attributes="value string:${field_id};
class python: test(is_default_listbox_field, 'listbox_previous_page', 'listbox_previous_page %s_previous_page' %field_id)" class python: test(is_default_listbox_field, 'btn btn-default listbox_previous_page', 'btn btn-default listbox_previous_page %s_previous_page' %field_id)"
i18n:domain="ui" i18n:attributes="title"> i18n:domain="ui" i18n:attributes="title">
<span class="image"/> <i class='fa fa-angle-left'></i>
</button> </button>
</div>
</tal:block>
</tal:block> </tal:block>
<!-- Next & Last button navigation --> <!-- Next & Last button navigation -->
<tal:block metal:define-macro="next_last_page_navigation"> <tal:block metal:define-macro="next_last_page_navigation">
<div class="btn-group btn-group-sm" tal:condition="python: here.current_page < here.total_pages - 1">
<tal:block tal:condition="python: here.current_page < here.total_pages - 1">
<button type="submit" <button type="submit"
title="Next Page" name="listbox_nextPage:method" value="listbox" class="listbox_next_page" title="Next Page" name="listbox_nextPage:method" value="listbox" class="listbox_next_page"
tal:attributes="value string:${field_id}; tal:attributes="value string:${field_id};
class python: test(is_default_listbox_field, 'listbox_next_page', 'listbox_next_page %s_next_page' %field_id)" class python: test(is_default_listbox_field, 'btn btn-default listbox_next_page', 'btn btn-default listbox_next_page %s_next_page' %field_id)"
i18n:domain="ui" i18n:attributes="title"> i18n:domain="ui" i18n:attributes="title">
<span class="image"/> <i class='fa fa-angle-right'></i>
</button> </button>
<button type="submit" <button type="submit"
title="Last Page" name="listbox_lastPage:method" value="listbox" class="listbox_last_page" title="Last Page" name="listbox_lastPage:method" value="listbox" class="listbox_last_page"
tal:attributes="value string:${field_id}; tal:attributes="value string:${field_id};
class python: test(is_default_listbox_field, 'listbox_last_page', 'listbox_last_page %s_last_page' %field_id)" class python: test(is_default_listbox_field, 'btn btn-default listbox_last_page', 'btn btn-default listbox_last_page %s_last_page' %field_id)"
i18n:domain="ui" i18n:attributes="title" > i18n:domain="ui" i18n:attributes="title" >
<span class="image"/> <i class='fa fa-angle-double-right'></i>
</button> </button>
</div>
</tal:block>
</tal:block> </tal:block>
<!-- First & Previous button navigation (asynchronous mode) --> <!-- First & Previous button navigation (asynchronous mode) -->
<tal:block metal:define-macro="first_previous_page_navigation_asynchronous"> <tal:block metal:define-macro="first_previous_page_navigation_asynchronous">
<tal:block tal:condition="python: here.current_page > 0"> <div class="btn-group btn-group-sm pull-left" tal:condition="python: here.current_page > 0">
<button tal:define ="params python: {field_id+'_firstPage:method':'', 'list_style':list_style}" <button tal:define ="params python: {field_id+'_firstPage:method':'', 'list_style':list_style}"
title="First Page" title="First Page"
name="firstPage" name="firstPage"
type = "button" type = "button"
class = "listbox_first_page" class = "listbox_first_page btn btn-default"
tal:attributes="value string:|&lt;; tal:attributes="value string:|&lt;;
onclick python: onclick python:
real_context.KnowledgePad_generateAjaxCall(context_url,box,dom_id,params, field_prefix=field_prefix); real_context.KnowledgePad_generateAjaxCall(context_url,box,dom_id,params, field_prefix=field_prefix);
class python: test(is_default_listbox_field, 'listbox_first_page', 'listbox_first_page %s_first_page' %field_id)" class python: test(is_default_listbox_field, 'listbox_first_page btn btn-default', 'listbox_first_page btn btn-default %s_first_page' %field_id)"
i18n:domain="ui" i18n:attributes="title"> i18n:domain="ui" i18n:attributes="title">
<span class="image"/> <i class='fa fa-angle-double-left'></i>
</button> </button>
<button tal:define ="params python: {field_id+'_previousPage:method':'','page_start':here.current_page+1,'list_style':list_style}" <button tal:define ="params python: {field_id+'_previousPage:method':'','page_start':here.current_page+1,'list_style':list_style}"
title="Previous Page" title="Previous Page"
name="previousPage" name="previousPage"
type="button" type="button"
class="listbox_previous_page" class="listbox_previous_page btn btn-default"
tal:attributes="value string:&lt;&lt;; tal:attributes="value string:&lt;&lt;;
onclick python: real_context.KnowledgePad_generateAjaxCall(context_url,box,dom_id,params,field_prefix=field_prefix); onclick python: real_context.KnowledgePad_generateAjaxCall(context_url,box,dom_id,params,field_prefix=field_prefix);
class python: test(is_default_listbox_field, 'listbox_previous_page', 'listbox_previous_page %s_previous_page' %field_id)" class python: test(is_default_listbox_field, 'listbox_previous_page btn btn-default', 'listbox_previous_page btn btn-default %s_previous_page' %field_id)"
i18n:domain="ui" i18n:attributes="title"> i18n:domain="ui" i18n:attributes="title">
<span class="image"/> <i class='fa fa-angle-left'></i>
</button> </button>
</tal:block> </div>
</tal:block> </tal:block>
<!-- Next & Last button navigation (asynchronous mode) --> <!-- Next & Last button navigation (asynchronous mode) -->
<tal:block metal:define-macro="next_last_page_navigation_asynchronous"> <tal:block metal:define-macro="next_last_page_navigation_asynchronous">
<tal:block tal:condition="python: current_page < total_page"> <div class="btn-group btn-group-sm" tal:condition="python: current_page < total_page">
<button tal:define ="params python: {field_id+'_nextPage:method':'','page_start':here.current_page+1,'list_style':list_style}" <button tal:define ="params python: {field_id+'_nextPage:method':'','page_start':here.current_page+1,'list_style':list_style}"
title="Next Page" title="Next Page"
name="nextPage" name="nextPage"
type="button" type="button"
class="listbox_next_page" class="listbox_next_page btn btn-default"
tal:attributes="onclick python: real_context.KnowledgePad_generateAjaxCall(context_url,box,dom_id,params,field_prefix=field_prefix); tal:attributes="onclick python: real_context.KnowledgePad_generateAjaxCall(context_url,box,dom_id,params,field_prefix=field_prefix);
class python: test(is_default_listbox_field, 'listbox_next_page', 'listbox_next_page %s_next_page' %field_id)" class python: test(is_default_listbox_field, 'listbox_next_page btn btn-default', 'listbox_next_page btn btn-default %s_next_page' %field_id)"
i18n:domain="ui" i18n:attributes="title"> i18n:domain="ui" i18n:attributes="title">
<span class="image"/> <i class='fa fa-angle-right'></i>
</button> </button>
<button tal:define ="params python: {field_id+'_lastPage:method':'','total_size':int(here.total_size), 'list_style':list_style}" <button tal:define ="params python: {field_id+'_lastPage:method':'','total_size':int(here.total_size), 'list_style':list_style}"
title="Last Page" title="Last Page"
name="lastPage" name="lastPage"
type="button" type="button"
class="listbox_last_page" class="listbox_last_page btn btn-default"
tal:attributes="onclick python: real_context.KnowledgePad_generateAjaxCall(context_url,box,dom_id,params,field_prefix=field_prefix); tal:attributes="onclick python: real_context.KnowledgePad_generateAjaxCall(context_url,box,dom_id,params,field_prefix=field_prefix);
class python: test(is_default_listbox_field, 'listbox_last_page', 'listbox_last_page %s_last_page' %field_id)" class python: test(is_default_listbox_field, 'listbox_last_page btn btn-default', 'listbox_last_page btn btn-default %s_last_page' %field_id)"
i18n:domain="ui" i18n:attributes="title"> i18n:domain="ui" i18n:attributes="title">
<span class="image"/> <i class='fa fa-angle-double-right'></i>
</button> </button>
</tal:block> </div>
</tal:block> </tal:block>
...@@ -270,28 +292,28 @@ ...@@ -270,28 +292,28 @@
name="listbox_setPage:method" value="listbox" name="listbox_setPage:method" value="listbox"
tal:attributes="value string:${field_id}; tal:attributes="value string:${field_id};
id string:${field_id}_setPage" /> id string:${field_id}_setPage" />
<input class="listbox_set_page" <input class="listbox_set_page form-control input-sm"
name="page_start" onblur="this.value=this.defaultValue" name="page_start" onblur="this.value=this.defaultValue"
tal:attributes="name string:${field_id}_page_start; tal:attributes="name string:${field_id}_page_start;
class python: test(is_default_listbox_field, 'listbox_set_page', 'listbox_set_page %s_set_page' %field_id); class python: test(is_default_listbox_field, 'form-control input-sm listbox_set_page', 'form-control input-sm listbox_set_page %s_set_page' %field_id);
value python:here.current_page + 1; value python:here.current_page + 1;
size python:len(str(here.total_pages)); size python:len(str(here.total_pages));
onkeypress string:submitFormOnEnter(event, $$('#${field_id}_setPage'))" /> onkeypress string:submitFormOnEnter(event, $$('#${field_id}_setPage'))" />
/ <tal:block content="here/total_pages" /> <p>/<tal:block content="here/total_pages" />&thinsp;</p>
</tal:block> </tal:block>
<!-- Type in listbox page number navigation (asyncronous) --> <!-- Type in listbox page number navigation (asyncronous) -->
<tal:block metal:define-macro="type_in_page_navigation_asynchronous"> <tal:block metal:define-macro="type_in_page_navigation_asynchronous">
<input class="listbox_set_page" <input class="listbox_set_page form-control input-sm"
name="page_start" onblur="this.value=this.defaultValue" name="page_start" onblur="this.value=this.defaultValue"
tal:define="params python: {field_id+'_setPage:method':'',field_id+'_page_start':'this.value','list_style':list_style}" tal:define="params python: {field_id+'_setPage:method':'',field_id+'_page_start':'this.value','list_style':list_style}"
tal:attributes='name string:${field_id}_page_start; tal:attributes='name string:${field_id}_page_start;
class python: test(is_default_listbox_field, "listbox_set_page", "listbox_set_page %s_set_page" %field_id); class python: test(is_default_listbox_field, "form-control input-sm listbox_set_page", "form-control input-sm listbox_set_page %s_set_page" %field_id);
value python:here.current_page + 1; value python:here.current_page + 1;
size python:len(str(here.total_pages)); size python:len(str(here.total_pages));
onkeypress python:"if(event.keyCode==13){" + real_context.KnowledgePad_generateAjaxCall(context_url,box,dom_id,params,field_prefix=field_prefix).replace("\"this.value\"","this.value")+ "return false;;}"'/> onkeypress python:"if(event.keyCode==13){" + real_context.KnowledgePad_generateAjaxCall(context_url,box,dom_id,params,field_prefix=field_prefix).replace("\"this.value\"","this.value")+ "return false;;}"'/>
/ <tal:block content="here/total_pages" /> <p>/<tal:block content="here/total_pages" />&thinsp;</p>
</tal:block> </tal:block>
<!-- Show list of direct listbox page selection --> <!-- Show list of direct listbox page selection -->
......
...@@ -4,8 +4,7 @@ ...@@ -4,8 +4,7 @@
xmlns:i18n="http://xml.zope.org/namespaces/i18n"> xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<tal:block metal:define-macro="breadcrumb"> <tal:block metal:define-macro="breadcrumb">
<tal:block tal:repeat="item here/breadcrumbs"> <tal:block tal:repeat="item here/breadcrumbs">
<a tal:attributes="href item/url" tal:content="item/title" /> <li><a tal:attributes="href item/url" tal:content="item/title" /></li>
/
</tal:block> </tal:block>
</tal:block> </tal:block>
</tal:block> </tal:block>
\ No newline at end of file
<tal:block xmlns:tal="http://xml.zope.org/namespaces/tal" <tal:block xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal" xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"> xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<tal:block metal:define-macro="master"> <tal:block metal:define-macro="master"
<span id="jump" class="jump" metal:define-macro="jump"> tal:define="jumps actions/object_jump | nothing">
<div id="context_bar" class="well well-sm">
<ul class="nav btn-toolbar">
<li id="jump" metal:define-macro="jump"
title="Go"
i18n:attributes="title" i18n:domain="ui"
tal:condition="jumps">
<select name="select_jump" <select name="select_jump"
class="selectpicker"
data-width="4em"
tal:condition="jumps"
onchange="submitAction(this.form,'Base_doJump')"> onchange="submitAction(this.form,'Base_doJump')">
<option selected="selected" value="" <option disabled="disabled" selected="selected" value="" data-icon="fa fa-plane"></option>
i18n:translate="" i18n:domain="ui">Jump...</option> <tal:block tal:repeat="jump jumps">
<tal:block tal:repeat="jump actions/object_jump | nothing">
<option tal:attributes="value jump/url" <option tal:attributes="value jump/url"
tal:content="jump/name" i18n:translate="" i18n:domain="ui" /> tal:content="jump/name" i18n:translate="" i18n:domain="ui" />
</tal:block> </tal:block>
<tal:block tal:condition="preferred_html_style_developper_mode"> </select>
</li>
<li id="develop_links" metal:define-macro="dev_links"
tal:condition="preferred_html_style_developper_mode">
<select name="select_jump"
class="selectpicker"
data-width="4em"
onchange="submitAction(this.form,'Base_doJump')">
<option disabled="disabled" selected="selected" value="" data-icon="fa fa-cog"></option>
<tal:block tal:condition="python: type_info is not None and type_info.Base_getSourceVisibility()" <tal:block tal:condition="python: type_info is not None and type_info.Base_getSourceVisibility()"
tal:define="type_info python: portal.portal_types.getTypeInfo(here)"> tal:define="type_info python: portal.portal_types.getTypeInfo(here)">
<option value="1" disabled="disabled" i18n:translate="" i18n:domain="ui">-- Developer Mode --</option> <optgroup i18n:attributes="label" i18n:domain="ui" label="Developer Mode">
<option tal:attributes="value type_info/absolute_url_path" <option tal:attributes="value type_info/absolute_url_path"
i18n:translate="" i18n:domain="ui">Edit Portal Type '<tal:block tal:content="here/getPortalTypeName" i18n:translate="" i18n:domain="ui">Edit Portal Type '<tal:block tal:content="here/getPortalTypeName"
i18n:name="portal_type" i18n:translate="" i18n:domain="ui" />'</option> i18n:name="portal_type" i18n:translate="" i18n:domain="ui" />'</option>
</optgroup>
</tal:block> </tal:block>
<tal:block tal:condition="portal/portal_workflow/Base_getSourceVisibility"> <tal:block tal:condition="portal/portal_workflow/Base_getSourceVisibility">
<option value="1" disabled="disabled" i18n:translate="" i18n:domain="ui">-- Workflows --</option> <optgroup i18n:attributes="label" i18n:domain="ui" label="Workflows">
<tal:block tal:repeat="workflow python: portal.portal_workflow.getWorkflowsFor(here)"> <tal:block tal:repeat="workflow python: portal.portal_workflow.getWorkflowsFor(here)">
<option tal:attributes="value string:${workflow/absolute_url}/manage_properties" tal:content="workflow/title" /> <option tal:attributes="value string:${workflow/absolute_url}/manage_properties" tal:content="workflow/title" />
</tal:block> </tal:block>
</tal:block> </optgroup>
</tal:block> </tal:block>
</select> </select>
<button type="submit" name="Base_doJump:method" title="Jump" </li>
i18n:attributes="title" i18n:domain="ui">
<span class="image"></span>
<span class="description"
i18n:translate="" i18n:domain="ui">Jump</span>
</button>
</span>
<span class="separator"><!--separator--></span> <li id="action" class="btn-group action" metal:define-macro="action" tal:replace="nothing">
<span id="action" class="action" metal:define-macro="action">
<select name="select_action" <select name="select_action"
class="form-control"
onchange="submitAction(this.form,'Base_doAction')"> onchange="submitAction(this.form,'Base_doAction')">
<option selected="selected" value="" <option selected="selected" value=""
i18n:translate="" i18n:domain="ui">Action...</option> i18n:translate="" i18n:domain="ui">Action...</option>
...@@ -77,28 +88,18 @@ ...@@ -77,28 +88,18 @@
i18n:translate="" i18n:domain="ui" /> i18n:translate="" i18n:domain="ui" />
</tal:block> </tal:block>
</tal:block> </tal:block>
<tal:block tal:replace='nothing'>
<!-- XXX folder actions is inherited from CMF, but not used in ERP5 (for now) -->
<option disabled="disabled">-- <tal:block i18n:translate="" i18n:domain="ui">Folder</tal:block> --</option>
<tal:block tal:repeat="action actions/folder">
<option tal:content="action/name"
tal:attributes="value string:folder ${action/url}"
i18n:translate="" i18n:domain="ui" />
</tal:block>
</tal:block>
</select> </select>
<button type="submit" name="Base_doAction:method" title="Action" <button type="submit" name="Base_doAction:method" title="Action" type="button" class="btn btn-default"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-cog fa-lg"></i>
<span class="description">Action</span> <span class="description">Action</span>
</button> </button>
</span> </li>
<span class="tool_buttons" metal:define-macro="tool_buttons"> <tal:block metal:define-macro="tool_buttons">
<!-- XXX: exchange_actions seems to be bad condition --> <!-- XXX: exchange_actions seems to be bad condition -->
<span class="first" <tal:block
tal:define="search_actions actions/object_search | nothing; tal:define="search_actions actions/object_search | nothing;
exchange_actions actions/object_exchange | nothing; exchange_actions actions/object_exchange | nothing;
report_actions actions/object_report | nothing; report_actions actions/object_report | nothing;
...@@ -109,175 +110,271 @@ ...@@ -109,175 +110,271 @@
print_actions actions/object_print | nothing; print_actions actions/object_print | nothing;
list_mode list_mode | nothing; list_mode list_mode | nothing;
can_modify_portal_content python: portal.portal_membership.checkPermission('Modify portal content', here)"> can_modify_portal_content python: portal.portal_membership.checkPermission('Modify portal content', here)">
<span class="separator"><!--separator--></span> <li
<tal:block tal:condition="list_mode"> tal:condition="content_ids"
<button class="cut" type="submit" name="Folder_cut:method" title="Cut" title="Add"
tal:define="content_ids here/getVisibleAllowedContentTypeList;
content_ids_more python:len(content_ids) &gt; 1"
i18n:attributes="title" i18n:domain="ui">
<button class="btn btn-default btn-group new" type="submit"
name="Base_doAction:method"
tal:attributes="title content_id;
value string:add $content_id"
tal:repeat="content_id content_ids"
tal:condition="not:content_ids_more"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-file-o fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Add <tal:block tal:content="content_id"
i18n:name="portal_type" i18n:translate="" i18n:domain="ui" /></span>
</button>
<select class="selectpicker"
name="select_action"
data-width="4em"
tal:condition="content_ids_more"
onchange="submitAction(this.form,'Base_doAction')">
<option disabled="disabled" selected="selected" value="" data-icon="fa fa-file-o"></option>
<option tal:attributes="value string:add $content_id"
tal:repeat="content_id content_ids"
tal:content="content_id"
i18n:translate="" i18n:domain="ui"/>
</select>
</li>
<li class="btn-group"
tal:condition="document_templates"
tal:define="document_templates here/getDocumentTemplateList | nothing;
document_templates_more python:len(document_templates) &gt; 1 if document_templates else False"
title="Add"
i18n:attributes="title" i18n:domain="ui">
<button class="btn btn-default new" type="submit"
name="Base_doAction:method"
tal:attributes="title document_template/getTitle;
value string:template ${document_template/getRelativeUrl}"
tal:repeat="document_template document_templates"
tal:condition="not:document_templates_more">
<i class="fa fa-file-o fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Add <tal:block
tal:content="document_template/getTitle"
i18n:name="portal_type" /></span>
</button>
<select class="selectpicker"
name="select_action"
data-width="4em"
tal:condition="document_templates_more"
onchange="submitAction(this.form,'Base_doAction')">
<option disabled="disabled" selected="selected" value="" data-icon="fa fa-file-o"></option>
<option tal:attributes="value string:template ${document_template/getRelativeUrl}"
tal:repeat="document_template document_templates"
tal:content="document_template/getTitle"
i18n:translate="" i18n:domain="ui"/>
</select>
</li>
<li class="btn-group" tal:condition="list_mode">
<button class="cut btn btn-default" type="submit" name="Folder_cut:method" title="Cut"
i18n:attributes="title" i18n:domain="ui" i18n:attributes="title" i18n:domain="ui"
tal:condition="can_modify_portal_content"> tal:condition="can_modify_portal_content">
<span class="image"></span> <i class="fa fa-cut fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Cut</span> <span class="description" i18n:translate="" i18n:domain="ui">Cut</span>
</button> </button>
<button class="copy" type="submit" name="Folder_copy:method" title="Copy" <button class="copy btn btn-default" type="submit" name="Folder_copy:method" title="Copy"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-copy fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Copy</span> <span class="description" i18n:translate="" i18n:domain="ui">Copy</span>
</button> </button>
<button class="paste" type="submit" name="Folder_paste:method" title="Paste" <button class="paste btn btn-default" type="submit" name="Folder_paste:method" title="Paste"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-paste fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Paste</span> <span class="description" i18n:translate="" i18n:domain="ui">Paste</span>
</button> </button>
<span class="separator"><!--separator--></span> </li>
</tal:block> <li class="btn-group">
<button tal:condition="print_actions" class="print" type="submit" name="Folder_print:method" title="Print" <button class="btn btn-default new" type="submit" title="New"
i18n:attributes="title" i18n:domain="ui"> name="Base_createNewDocument:method"
<span class="image"></span> tal:condition="not: list_mode"
<span class="description" i18n:translate="" i18n:domain="ui">Print</span>
</button>
<button class="new" type="submit" title="New"
tal:attributes="name python: list_mode and 'Folder_create:method' or 'Base_createNewDocument:method'"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-file-o fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">New</span> <span class="description" i18n:translate="" i18n:domain="ui">New</span>
</button> </button>
<button class="clone" type="submit" title="Clone" <button class="btn btn-default clone" type="submit" title="Clone"
name="Base_createCloneDocument:method" name="Base_createCloneDocument:method"
tal:condition="not: list_mode" tal:condition="not: list_mode"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-copy fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Clone</span> <span class="description" i18n:translate="" i18n:domain="ui">Clone</span>
</button> </button>
<button tal:condition="list_mode" class="delete" type="submit" name="Folder_deleteObjectList:method" title="Delete" <button tal:condition="list_mode" class="delete btn btn-default" type="submit" name="Folder_deleteObjectList:method" title="Delete"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-trash-o fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Delete</span> <span class="description" i18n:translate="" i18n:domain="ui">Delete</span>
</button> </button>
<tal:block tal:condition="not: list_mode"> <button tal:condition="print_actions" class="btn btn-default print" type="submit" name="Folder_print:method" title="Print"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-print fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Print</span>
</button>
</li>
<li class="btn-group" tal:condition="not: list_mode">
<tal:block tal:condition="request/selection_index | nothing"> <tal:block tal:condition="request/selection_index | nothing">
<span class="separator"><!--separator--></span> <a class="jump_first btn btn-default" title="First"
<a class="jump_first" title="First"
tal:attributes="href string:portal_selections/viewFirst?$http_parameters" tal:attributes="href string:portal_selections/viewFirst?$http_parameters"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-angle-double-left fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">First</span> <span class="description" i18n:translate="" i18n:domain="ui">First</span>
</a> </a>
<a class="jump_previous" title="Previous" <a class="jump_previous btn btn-default" title="Previous"
tal:attributes="href string:portal_selections/viewPrevious?$http_parameters" tal:attributes="href string:portal_selections/viewPrevious?$http_parameters"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-angle-left fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Previous</span> <span class="description" i18n:translate="" i18n:domain="ui">Previous</span>
</a> </a>
<a class="list_mode" title="List Mode" tal:attributes="href python: here.portal_selections.getSelectionListUrlFor(request.get('selection_name', None))" <a class="list_mode btn btn-default" title="List Mode" tal:attributes="href python: here.portal_selections.getSelectionListUrlFor(request.get('selection_name', None))"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-align-justify fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">List Mode</span> <span class="description" i18n:translate="" i18n:domain="ui">List Mode</span>
</a> </a>
<a class="jump_next" title="Next" <a class="jump_next btn btn-default" title="Next"
tal:attributes="href string:portal_selections/viewNext?$http_parameters" tal:attributes="href string:portal_selections/viewNext?$http_parameters"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-angle-right fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Next</span> <span class="description" i18n:translate="" i18n:domain="ui">Next</span>
</a> </a>
<a class="jump_last" title="Last" <a class="jump_last btn btn-default" title="Last"
tal:attributes="href string:portal_selections/viewLast?$http_parameters" tal:attributes="href string:portal_selections/viewLast?$http_parameters"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-angle-double-right fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Last</span> <span class="description" i18n:translate="" i18n:domain="ui">Last</span>
</a> </a>
</tal:block> </tal:block>
</tal:block> </li>
<tal:block tal:condition="list_mode"> <li class="btn-group" tal:condition="list_mode">
<span class="separator"><!--separator--></span> <a tal:condition="search_actions" class="find btn btn-default" title="Find"
<a tal:condition="search_actions" class="find" title="Find"
tal:attributes="href python: portal.ERP5Site_renderCustomLink(search_actions[0]['url'], http_parameter_list, dialog_category='object_search')" tal:attributes="href python: portal.ERP5Site_renderCustomLink(search_actions[0]['url'], http_parameter_list, dialog_category='object_search')"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-search fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Find</span> <span class="description" i18n:translate="" i18n:domain="ui">Find</span>
</a> </a>
<button class="show_all" type="submit" name="Folder_show:method" title="Show All" <button class="show_all btn btn-default" type="submit" name="Folder_show:method" title="Show All"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-bars fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Show All</span> <span class="description" i18n:translate="" i18n:domain="ui">Show All</span>
</button> </button>
<button type="submit" name="Folder_filter:method" title="Filter" <button type="submit" name="Folder_filter:method" title="Filter"
tal:attributes="class python: here.portal_selections.getSelectionInvertModeFor(request.get('selection_name', None)) and 'filter_on' or 'filter';" tal:attributes="class python: here.portal_selections.getSelectionInvertModeFor(request.get('selection_name', None)) and 'filter_on btn btn-default' or 'filter btn btn-default';"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-filter fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Filter</span> <span class="description" i18n:translate="" i18n:domain="ui">Filter</span>
</button> </button>
<a tal:condition="sort_actions" class="sort" title="Sort" <a tal:condition="sort_actions" class="sort btn btn-default" title="Sort"
tal:attributes="href python: portal.ERP5Site_renderCustomLink(sort_actions[0]['url'], http_parameter_list, dialog_category='object_sort')" tal:attributes="href python: portal.ERP5Site_renderCustomLink(sort_actions[0]['url'], http_parameter_list, dialog_category='object_sort')"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-sort-amount-asc fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Sort</span> <span class="description" i18n:translate="" i18n:domain="ui">Sort</span>
</a> </a>
</tal:block> </li>
<span tal:condition="exchange_actions | report_actions" <li class="btn-group">
class="separator"><!--separator--></span> <button tal:condition="exchange_actions" class="import_export btn btn-default"
<button tal:condition="exchange_actions" class="import_export"
type="submit" name="Base_doExchange:method" title="Import / Export" type="submit" name="Base_doExchange:method" title="Import / Export"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-exchange fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Import / Export</span> <span class="description" i18n:translate="" i18n:domain="ui">Import / Export</span>
</button> </button>
<button tal:condition="report_actions" class="report" type="submit" name="Base_doReport:method" title="Report" <button tal:condition="report_actions" class="report btn btn-default" type="submit" name="Base_doReport:method" title="Report"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-bar-chart-o fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Report</span> <span class="description" i18n:translate="" i18n:domain="ui">Report</span>
</button> </button>
<a tal:condition="fast_input_actions" class="fast_input" title="Fast Input" <a tal:condition="fast_input_actions" class="fast_input btn btn-default" title="Fast Input"
tal:attributes="href python: portal.ERP5Site_renderCustomLink(fast_input_actions[0]['url'], http_parameter_list, dialog_category='object_fast_input')" tal:attributes="href python: portal.ERP5Site_renderCustomLink(fast_input_actions[0]['url'], http_parameter_list, dialog_category='object_fast_input')"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <span class="image"></span>
<span class="description" i18n:translate="" i18n:domain="ui">Fast Input</span> <span class="description" i18n:translate="" i18n:domain="ui">Fast Input</span>
</a> </a>
<tal:block tal:condition="button_actions"> </li>
<span class="separator"><!--separator--></span> <li class="btn-group" tal:condition="button_actions">
<tal:block tal:repeat="button_action button_actions"> <tal:block tal:repeat="button_action button_actions">
<a tal:attributes="href python: '%s%s%s' % (button_action['url'], '?' in button_action['url'] and '&amp;' or '?', http_parameters)"> <a class="btn btn-default" tal:attributes="href python: '%s%s%s' % (button_action['url'], '?' in button_action['url'] and '&amp;' or '?', http_parameters)">
<img i18n:attributes="title" i18n:domain="ui" <i i18n:attributes="title" i18n:domain="ui"
tal:attributes="src button_action/icon; tal:attributes="class button_action/icon;
title button_action/name; title button_action/name;
alt button_action/name" /> alt button_action/name" ></i>
</a> </a>
</tal:block> </tal:block>
</tal:block> </li>
<tal:block tal:condition="list_mode"> <li class="btn-group pull-right" tal:condition="list_mode">
<tal:block tal:condition="ui_actions"> <a class="configure btn btn-default" title="Configure"
<span class="separator"><!--separator--></span>
<a class="configure" title="Configure"
tal:attributes="href python: portal.ERP5Site_renderCustomLink(ui_actions[0]['url'], http_parameter_list, dialog_category='object_ui')" tal:attributes="href python: portal.ERP5Site_renderCustomLink(ui_actions[0]['url'], http_parameter_list, dialog_category='object_ui')"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-wrench fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Configure</span> <span class="description" i18n:translate="" i18n:domain="ui">Configure</span>
</a> </a>
</li>
</tal:block> </tal:block>
</tal:block> </tal:block>
</span> <li class="btn-group">
<tal:block tal:repeat="action actions/object_action | nothing">
<span class="second"> <button class="btn btn-default"
name="Base_doAction:method"
tal:define="icon action/icon"
tal:attributes="value string:object ${action/url};
title action/name"
i18n:attributes="title" i18n:domain="ui">
<i tal:attributes="class icon" tal:condition="icon"></i>
<span tal:content="action/name" tal:condition="not:icon"
i18n:translate="" i18n:domain="ui"/>
</button>
</tal:block>
</li>
<li class="btn-group"
tal:condition="list_mode">
<tal:block tal:repeat="action actions/workflow">
<button class="btn btn-default"
name="Base_doAction:method"
tal:define="icon action/icon"
tal:attributes="value string:workflow ${action/url};
title action/name"
i18n:attributes="title" i18n:domain="ui">
<i tal:attributes="class icon" tal:condition="icon"></i>
<span tal:content="action/name" tal:condition="not:icon"
i18n:translate="" i18n:domain="ui"/>
</button>
</tal:block>
</li>
<li class="btn-group"
tal:define="object_view_list actions/object_view|nothing;
module_view_list python:[i for i in object_view_list if i['id']=='module_view']"
tal:condition="module_view_list">
<tal:block tal:repeat="action module_view_list">
<button
class="btn btn-default"
tal:content="action/name"
name="Base_doAction:method"
tal:attributes="value string:object ${action/url}"
i18n:translate="" i18n:domain="ui" />
</tal:block>
</li>
<li class="btn-group pull-right">
<a tal:condition="preferred_html_style_contextual_help" <a tal:condition="preferred_html_style_contextual_help"
class="jump_help" title="Help" class="jump_help btn btn-default" title="Help"
tal:attributes="href python: portal.ERP5Site_getHelpUrl(current_action=current_action, current_form_id=current_form_id, workflow_action=request.get('workflow_action'))" tal:attributes="href python: portal.ERP5Site_getHelpUrl(current_action=current_action, current_form_id=current_form_id, workflow_action=request.get('workflow_action'))"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-medkit"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Help</span> <span class="description" i18n:translate="" i18n:domain="ui">Help</span>
</a> </a>
<a tal:condition="preferred_html_style_developper_mode" <a tal:condition="preferred_html_style_developper_mode"
class="inspect_object" title="Inspect object" href="Base_viewInspectionReport" class="inspect_object btn btn-default" title="Inspect object" href="Base_viewInspectionReport"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-stethoscope"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Inspect Object</span> <span class="description" i18n:translate="" i18n:domain="ui">Inspect Object</span>
</a> </a>
<a tal:condition="here/hasActivity | nothing" class="activity_pending" <a tal:condition="here/hasActivity | nothing"
class="activity_pending btn btn-default"
title="Activity Pending" title="Activity Pending"
tal:attributes="href python: portal.portal_membership.checkPermission('View management screens', portal.portal_activities) and '%s/portal_activities/manageActivities' % (portal.portal_url()) or '#'" tal:attributes="href python: portal.portal_membership.checkPermission('View management screens', portal.portal_activities) and '%s/portal_activities/manageActivities' % (portal.portal_url()) or '#'"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-spinner"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Activity Pending</span> <span class="description" i18n:translate="" i18n:domain="ui">Activity Pending</span>
</a> </a>
</span> </li>
</span> </ul>
<p class="clear"></p> </div>
</tal:block> </tal:block>
</tal:block> </tal:block>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>css</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/*! X-editable - v1.5.1
* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery
* http://github.com/vitalets/x-editable
* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */
.editableform {
margin-bottom: 0; /* overwrites bootstrap margin */
}
.editableform .control-group {
margin-bottom: 0; /* overwrites bootstrap margin */
white-space: nowrap; /* prevent wrapping buttons on new line */
line-height: 20px; /* overwriting bootstrap line-height. See #133 */
}
/*
BS3 width:1005 for inputs breaks editable form in popup
See: https://github.com/vitalets/x-editable/issues/393
*/
.editableform .form-control {
width: auto;
}
.editable-buttons {
display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */
vertical-align: top;
margin-left: 7px;
/* inline-block emulation for IE7*/
zoom: 1;
*display: inline;
}
.editable-buttons.editable-buttons-bottom {
display: block;
margin-top: 7px;
margin-left: 0;
}
.editable-input {
vertical-align: top;
display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */
width: auto; /* bootstrap-responsive has width: 100% that breakes layout */
white-space: normal; /* reset white-space decalred in parent*/
/* display-inline emulation for IE7*/
zoom: 1;
*display: inline;
}
.editable-buttons .editable-cancel {
margin-left: 7px;
}
/*for jquery-ui buttons need set height to look more pretty*/
.editable-buttons button.ui-button-icon-only {
height: 24px;
width: 30px;
}
.editableform-loading {
background: url('../img/loading.gif') center center no-repeat;
height: 25px;
width: auto;
min-width: 25px;
}
.editable-inline .editableform-loading {
background-position: left 5px;
}
.editable-error-block {
max-width: 300px;
margin: 5px 0 0 0;
width: auto;
white-space: normal;
}
/*add padding for jquery ui*/
.editable-error-block.ui-state-error {
padding: 3px;
}
.editable-error {
color: red;
}
/* ---- For specific types ---- */
.editableform .editable-date {
padding: 0;
margin: 0;
float: left;
}
/* move datepicker icon to center of add-on button. See https://github.com/vitalets/x-editable/issues/183 */
.editable-inline .add-on .icon-th {
margin-top: 3px;
margin-left: 1px;
}
/* checklist vertical alignment */
.editable-checklist label input[type="checkbox"],
.editable-checklist label span {
vertical-align: middle;
margin: 0;
}
.editable-checklist label {
white-space: nowrap;
}
/* set exact width of textarea to fit buttons toolbar */
.editable-wysihtml5 {
width: 566px;
height: 250px;
}
/* clear button shown as link in date inputs */
.editable-clear {
clear: both;
font-size: 0.9em;
text-decoration: none;
text-align: right;
}
/* IOS-style clear button for text inputs */
.editable-clear-x {
background: url('../img/clear.png') center center no-repeat;
display: block;
width: 13px;
height: 13px;
position: absolute;
opacity: 0.6;
z-index: 100;
top: 50%;
right: 6px;
margin-top: -6px;
}
.editable-clear-x:hover {
opacity: 1;
}
.editable-pre-wrapped {
white-space: pre-wrap;
}
.editable-container.editable-popup {
max-width: none !important; /* without this rule poshytip/tooltip does not stretch */
}
.editable-container.popover {
width: auto; /* without this rule popover does not stretch */
}
.editable-container.editable-inline {
display: inline-block;
vertical-align: middle;
width: auto;
/* inline-block emulation for IE7*/
zoom: 1;
*display: inline;
}
.editable-container.ui-widget {
font-size: inherit; /* jqueryui widget font 1.1em too big, overwrite it */
z-index: 9990; /* should be less than select2 dropdown z-index to close dropdown first when click */
}
.editable-click,
a.editable-click,
a.editable-click:hover {
text-decoration: none;
border-bottom: dashed 1px #0088cc;
}
.editable-click.editable-disabled,
a.editable-click.editable-disabled,
a.editable-click.editable-disabled:hover {
color: #585858;
cursor: default;
border-bottom: none;
}
.editable-empty, .editable-empty:hover, .editable-empty:focus{
font-style: italic;
color: #DD1144;
/* border-bottom: none; */
text-decoration: none;
}
.editable-unsaved {
font-weight: bold;
}
.editable-unsaved:after {
/* content: '*'*/
}
.editable-bg-transition {
-webkit-transition: background-color 1400ms ease-out;
-moz-transition: background-color 1400ms ease-out;
-o-transition: background-color 1400ms ease-out;
-ms-transition: background-color 1400ms ease-out;
transition: background-color 1400ms ease-out;
}
/*see https://github.com/vitalets/x-editable/issues/139 */
.form-horizontal .editable
{
padding-top: 5px;
display:inline-block;
}
/*!
* Datepicker for Bootstrap
*
* Copyright 2012 Stefan Petre
* Improvements by Andrew Rowls
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
*/
.datepicker {
padding: 4px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
direction: ltr;
/*.dow {
border-top: 1px solid #ddd !important;
}*/
}
.datepicker-inline {
width: 220px;
}
.datepicker.datepicker-rtl {
direction: rtl;
}
.datepicker.datepicker-rtl table tr td span {
float: right;
}
.datepicker-dropdown {
top: 0;
left: 0;
}
.datepicker-dropdown:before {
content: '';
display: inline-block;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom: 7px solid #ccc;
border-bottom-color: rgba(0, 0, 0, 0.2);
position: absolute;
top: -7px;
left: 6px;
}
.datepicker-dropdown:after {
content: '';
display: inline-block;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #ffffff;
position: absolute;
top: -6px;
left: 7px;
}
.datepicker > div {
display: none;
}
.datepicker.days div.datepicker-days {
display: block;
}
.datepicker.months div.datepicker-months {
display: block;
}
.datepicker.years div.datepicker-years {
display: block;
}
.datepicker table {
margin: 0;
}
.datepicker td,
.datepicker th {
text-align: center;
width: 20px;
height: 20px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
border: none;
}
.table-striped .datepicker table tr td,
.table-striped .datepicker table tr th {
background-color: transparent;
}
.datepicker table tr td.day:hover {
background: #eeeeee;
cursor: pointer;
}
.datepicker table tr td.old,
.datepicker table tr td.new {
color: #999999;
}
.datepicker table tr td.disabled,
.datepicker table tr td.disabled:hover {
background: none;
color: #999999;
cursor: default;
}
.datepicker table tr td.today,
.datepicker table tr td.today:hover,
.datepicker table tr td.today.disabled,
.datepicker table tr td.today.disabled:hover {
background-color: #fde19a;
background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
background-image: linear-gradient(top, #fdd49a, #fdf59a);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
border-color: #fdf59a #fdf59a #fbed50;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #000;
}
.datepicker table tr td.today:hover,
.datepicker table tr td.today:hover:hover,
.datepicker table tr td.today.disabled:hover,
.datepicker table tr td.today.disabled:hover:hover,
.datepicker table tr td.today:active,
.datepicker table tr td.today:hover:active,
.datepicker table tr td.today.disabled:active,
.datepicker table tr td.today.disabled:hover:active,
.datepicker table tr td.today.active,
.datepicker table tr td.today:hover.active,
.datepicker table tr td.today.disabled.active,
.datepicker table tr td.today.disabled:hover.active,
.datepicker table tr td.today.disabled,
.datepicker table tr td.today:hover.disabled,
.datepicker table tr td.today.disabled.disabled,
.datepicker table tr td.today.disabled:hover.disabled,
.datepicker table tr td.today[disabled],
.datepicker table tr td.today:hover[disabled],
.datepicker table tr td.today.disabled[disabled],
.datepicker table tr td.today.disabled:hover[disabled] {
background-color: #fdf59a;
}
.datepicker table tr td.today:active,
.datepicker table tr td.today:hover:active,
.datepicker table tr td.today.disabled:active,
.datepicker table tr td.today.disabled:hover:active,
.datepicker table tr td.today.active,
.datepicker table tr td.today:hover.active,
.datepicker table tr td.today.disabled.active,
.datepicker table tr td.today.disabled:hover.active {
background-color: #fbf069 \9;
}
.datepicker table tr td.today:hover:hover {
color: #000;
}
.datepicker table tr td.today.active:hover {
color: #fff;
}
.datepicker table tr td.range,
.datepicker table tr td.range:hover,
.datepicker table tr td.range.disabled,
.datepicker table tr td.range.disabled:hover {
background: #eeeeee;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
}
.datepicker table tr td.range.today,
.datepicker table tr td.range.today:hover,
.datepicker table tr td.range.today.disabled,
.datepicker table tr td.range.today.disabled:hover {
background-color: #f3d17a;
background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);
background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));
background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);
background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);
background-image: linear-gradient(top, #f3c17a, #f3e97a);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);
border-color: #f3e97a #f3e97a #edde34;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
}
.datepicker table tr td.range.today:hover,
.datepicker table tr td.range.today:hover:hover,
.datepicker table tr td.range.today.disabled:hover,
.datepicker table tr td.range.today.disabled:hover:hover,
.datepicker table tr td.range.today:active,
.datepicker table tr td.range.today:hover:active,
.datepicker table tr td.range.today.disabled:active,
.datepicker table tr td.range.today.disabled:hover:active,
.datepicker table tr td.range.today.active,
.datepicker table tr td.range.today:hover.active,
.datepicker table tr td.range.today.disabled.active,
.datepicker table tr td.range.today.disabled:hover.active,
.datepicker table tr td.range.today.disabled,
.datepicker table tr td.range.today:hover.disabled,
.datepicker table tr td.range.today.disabled.disabled,
.datepicker table tr td.range.today.disabled:hover.disabled,
.datepicker table tr td.range.today[disabled],
.datepicker table tr td.range.today:hover[disabled],
.datepicker table tr td.range.today.disabled[disabled],
.datepicker table tr td.range.today.disabled:hover[disabled] {
background-color: #f3e97a;
}
.datepicker table tr td.range.today:active,
.datepicker table tr td.range.today:hover:active,
.datepicker table tr td.range.today.disabled:active,
.datepicker table tr td.range.today.disabled:hover:active,
.datepicker table tr td.range.today.active,
.datepicker table tr td.range.today:hover.active,
.datepicker table tr td.range.today.disabled.active,
.datepicker table tr td.range.today.disabled:hover.active {
background-color: #efe24b \9;
}
.datepicker table tr td.selected,
.datepicker table tr td.selected:hover,
.datepicker table tr td.selected.disabled,
.datepicker table tr td.selected.disabled:hover {
background-color: #9e9e9e;
background-image: -moz-linear-gradient(top, #b3b3b3, #808080);
background-image: -ms-linear-gradient(top, #b3b3b3, #808080);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));
background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);
background-image: -o-linear-gradient(top, #b3b3b3, #808080);
background-image: linear-gradient(top, #b3b3b3, #808080);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);
border-color: #808080 #808080 #595959;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td.selected:hover,
.datepicker table tr td.selected:hover:hover,
.datepicker table tr td.selected.disabled:hover,
.datepicker table tr td.selected.disabled:hover:hover,
.datepicker table tr td.selected:active,
.datepicker table tr td.selected:hover:active,
.datepicker table tr td.selected.disabled:active,
.datepicker table tr td.selected.disabled:hover:active,
.datepicker table tr td.selected.active,
.datepicker table tr td.selected:hover.active,
.datepicker table tr td.selected.disabled.active,
.datepicker table tr td.selected.disabled:hover.active,
.datepicker table tr td.selected.disabled,
.datepicker table tr td.selected:hover.disabled,
.datepicker table tr td.selected.disabled.disabled,
.datepicker table tr td.selected.disabled:hover.disabled,
.datepicker table tr td.selected[disabled],
.datepicker table tr td.selected:hover[disabled],
.datepicker table tr td.selected.disabled[disabled],
.datepicker table tr td.selected.disabled:hover[disabled] {
background-color: #808080;
}
.datepicker table tr td.selected:active,
.datepicker table tr td.selected:hover:active,
.datepicker table tr td.selected.disabled:active,
.datepicker table tr td.selected.disabled:hover:active,
.datepicker table tr td.selected.active,
.datepicker table tr td.selected:hover.active,
.datepicker table tr td.selected.disabled.active,
.datepicker table tr td.selected.disabled:hover.active {
background-color: #666666 \9;
}
.datepicker table tr td.active,
.datepicker table tr td.active:hover,
.datepicker table tr td.active.disabled,
.datepicker table tr td.active.disabled:hover {
background-color: #006dcc;
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
background-image: linear-gradient(top, #0088cc, #0044cc);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
border-color: #0044cc #0044cc #002a80;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td.active:hover,
.datepicker table tr td.active:hover:hover,
.datepicker table tr td.active.disabled:hover,
.datepicker table tr td.active.disabled:hover:hover,
.datepicker table tr td.active:active,
.datepicker table tr td.active:hover:active,
.datepicker table tr td.active.disabled:active,
.datepicker table tr td.active.disabled:hover:active,
.datepicker table tr td.active.active,
.datepicker table tr td.active:hover.active,
.datepicker table tr td.active.disabled.active,
.datepicker table tr td.active.disabled:hover.active,
.datepicker table tr td.active.disabled,
.datepicker table tr td.active:hover.disabled,
.datepicker table tr td.active.disabled.disabled,
.datepicker table tr td.active.disabled:hover.disabled,
.datepicker table tr td.active[disabled],
.datepicker table tr td.active:hover[disabled],
.datepicker table tr td.active.disabled[disabled],
.datepicker table tr td.active.disabled:hover[disabled] {
background-color: #0044cc;
}
.datepicker table tr td.active:active,
.datepicker table tr td.active:hover:active,
.datepicker table tr td.active.disabled:active,
.datepicker table tr td.active.disabled:hover:active,
.datepicker table tr td.active.active,
.datepicker table tr td.active:hover.active,
.datepicker table tr td.active.disabled.active,
.datepicker table tr td.active.disabled:hover.active {
background-color: #003399 \9;
}
.datepicker table tr td span {
display: block;
width: 23%;
height: 54px;
line-height: 54px;
float: left;
margin: 1%;
cursor: pointer;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
.datepicker table tr td span:hover {
background: #eeeeee;
}
.datepicker table tr td span.disabled,
.datepicker table tr td span.disabled:hover {
background: none;
color: #999999;
cursor: default;
}
.datepicker table tr td span.active,
.datepicker table tr td span.active:hover,
.datepicker table tr td span.active.disabled,
.datepicker table tr td span.active.disabled:hover {
background-color: #006dcc;
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
background-image: linear-gradient(top, #0088cc, #0044cc);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
border-color: #0044cc #0044cc #002a80;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td span.active:hover,
.datepicker table tr td span.active:hover:hover,
.datepicker table tr td span.active.disabled:hover,
.datepicker table tr td span.active.disabled:hover:hover,
.datepicker table tr td span.active:active,
.datepicker table tr td span.active:hover:active,
.datepicker table tr td span.active.disabled:active,
.datepicker table tr td span.active.disabled:hover:active,
.datepicker table tr td span.active.active,
.datepicker table tr td span.active:hover.active,
.datepicker table tr td span.active.disabled.active,
.datepicker table tr td span.active.disabled:hover.active,
.datepicker table tr td span.active.disabled,
.datepicker table tr td span.active:hover.disabled,
.datepicker table tr td span.active.disabled.disabled,
.datepicker table tr td span.active.disabled:hover.disabled,
.datepicker table tr td span.active[disabled],
.datepicker table tr td span.active:hover[disabled],
.datepicker table tr td span.active.disabled[disabled],
.datepicker table tr td span.active.disabled:hover[disabled] {
background-color: #0044cc;
}
.datepicker table tr td span.active:active,
.datepicker table tr td span.active:hover:active,
.datepicker table tr td span.active.disabled:active,
.datepicker table tr td span.active.disabled:hover:active,
.datepicker table tr td span.active.active,
.datepicker table tr td span.active:hover.active,
.datepicker table tr td span.active.disabled.active,
.datepicker table tr td span.active.disabled:hover.active {
background-color: #003399 \9;
}
.datepicker table tr td span.old,
.datepicker table tr td span.new {
color: #999999;
}
.datepicker th.datepicker-switch {
width: 145px;
}
.datepicker thead tr:first-child th,
.datepicker tfoot tr th {
cursor: pointer;
}
.datepicker thead tr:first-child th:hover,
.datepicker tfoot tr th:hover {
background: #eeeeee;
}
.datepicker .cw {
font-size: 10px;
width: 12px;
padding: 0 2px 0 5px;
vertical-align: middle;
}
.datepicker thead tr:first-child th.cw {
cursor: default;
background-color: transparent;
}
.input-append.date .add-on i,
.input-prepend.date .add-on i {
display: block;
cursor: pointer;
width: 16px;
height: 16px;
}
.input-daterange input {
text-align: center;
}
.input-daterange input:first-child {
-webkit-border-radius: 3px 0 0 3px;
-moz-border-radius: 3px 0 0 3px;
border-radius: 3px 0 0 3px;
}
.input-daterange input:last-child {
-webkit-border-radius: 0 3px 3px 0;
-moz-border-radius: 0 3px 3px 0;
border-radius: 0 3px 3px 0;
}
.input-daterange .add-on {
display: inline-block;
width: auto;
min-width: 16px;
height: 18px;
padding: 4px 5px;
font-weight: normal;
line-height: 18px;
text-align: center;
text-shadow: 0 1px 0 #ffffff;
vertical-align: middle;
background-color: #eeeeee;
border: 1px solid #ccc;
margin-left: -5px;
margin-right: -5px;
}
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts85362547.11</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>bootstrap-editable.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>21202</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>bootstrap-editable.css</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/*!
* bootstrap-select v1.3.5
* http://silviomoreto.github.io/bootstrap-select/
*
* Copyright 2013 bootstrap-select
* Licensed under the MIT license
*/
.bootstrap-select.btn-group,
.bootstrap-select.btn-group[class*="span"] {
float: none;
display: inline-block;
margin-bottom: 10px;
margin-left: 0;
}
.form-search .bootstrap-select.btn-group,
.form-inline .bootstrap-select.btn-group,
.form-horizontal .bootstrap-select.btn-group {
margin-bottom: 0;
}
.bootstrap-select.form-control {
padding: 0;
border: none;
}
.bootstrap-select.btn-group.pull-right,
.bootstrap-select.btn-group[class*="span"].pull-right,
.row-fluid .bootstrap-select.btn-group[class*="span"].pull-right {
float: right;
}
.input-append .bootstrap-select.btn-group {
margin-left: -1px;
}
.input-prepend .bootstrap-select.btn-group {
margin-right: -1px;
}
.bootstrap-select:not([class*="span"]):not([class*="col-"]):not([class*="form-control"]) {
width: 220px;
}
.bootstrap-select {
/*width: 220px\9; IE8 and below*/
width: 220px\0; /*IE9 and below*/
}
.bootstrap-select.form-control:not([class*="span"]) {
width: 100%;
}
.bootstrap-select > .btn {
width: 100%;
}
.error .bootstrap-select .btn {
border: 1px solid #b94a48;
}
.dropdown-menu {
z-index: 2000;
}
.bootstrap-select.show-menu-arrow.open > .btn {
z-index: 2051;
}
.bootstrap-select .btn:focus {
outline: thin dotted #333333 !important;
outline: 5px auto -webkit-focus-ring-color !important;
outline-offset: -2px;
}
.bootstrap-select.btn-group .btn .filter-option {
overflow: hidden;
position: absolute;
left: 12px;
right: 25px;
text-align: left;
}
.bootstrap-select.btn-group .btn .caret {
position: absolute;
top: 50%;
right: 12px;
margin-top: -2px;
vertical-align: middle;
}
.bootstrap-select.btn-group > .disabled,
.bootstrap-select.btn-group .dropdown-menu li.disabled > a {
cursor: not-allowed;
}
.bootstrap-select.btn-group > .disabled:focus {
outline: none !important;
}
.bootstrap-select.btn-group[class*="span"] .btn {
width: 100%;
}
.bootstrap-select.btn-group .dropdown-menu {
min-width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.bootstrap-select.btn-group .dropdown-menu.inner {
position: static;
border: 0;
padding: 0;
margin: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
.bootstrap-select.btn-group .dropdown-menu dt {
display: block;
padding: 3px 20px;
cursor: default;
}
.bootstrap-select.btn-group .div-contain {
overflow: hidden;
}
.bootstrap-select.btn-group .dropdown-menu li {
position: relative;
}
.bootstrap-select.btn-group .dropdown-menu li > a.opt {
position: relative;
padding-left: 35px;
}
.bootstrap-select.btn-group .dropdown-menu li > a {
cursor: pointer;
}
.bootstrap-select.btn-group .dropdown-menu li > dt small {
font-weight: normal;
}
.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a i.check-mark {
display: inline-block;
position: absolute;
right: 15px;
margin-top: 2.5px;
}
.bootstrap-select.btn-group .dropdown-menu li a i.check-mark {
display: none;
}
.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text {
margin-right: 34px;
}
.bootstrap-select.btn-group .dropdown-menu li small {
padding-left: 0.5em;
}
.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) > a:hover small,
.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) > a:focus small {
color: #64b1d8;
color: rgba(255,255,255,0.4);
}
.bootstrap-select.btn-group .dropdown-menu li > dt small {
font-weight: normal;
}
.bootstrap-select.show-menu-arrow .dropdown-toggle:before {
content: '';
display: inline-block;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom: 7px solid #CCC;
border-bottom-color: rgba(0, 0, 0, 0.2);
position: absolute;
bottom: -4px;
left: 9px;
display: none;
}
.bootstrap-select.show-menu-arrow .dropdown-toggle:after {
content: '';
display: inline-block;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid white;
position: absolute;
bottom: -4px;
left: 10px;
display: none;
}
.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before {
bottom: auto;
top: -3px;
border-top: 7px solid #ccc;
border-bottom: 0;
border-top-color: rgba(0, 0, 0, 0.2);
}
.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after {
bottom: auto;
top: -3px;
border-top: 6px solid #ffffff;
border-bottom: 0;
}
.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before {
right: 12px;
left: auto;
}
.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after {
right: 13px;
left: auto;
}
.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before,
.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after {
display: block;
}
.mobile-device {
position: absolute;
top: 0;
left: 0;
display: block !important;
width: 100%;
height: 100% !important;
opacity: 0;
}
.bootstrap-select.fit-width {
width: auto !important;
}
.bootstrap-select.btn-group.fit-width .btn .filter-option {
position: static;
}
.bootstrap-select.btn-group.fit-width .btn .caret {
position: static;
top: auto;
margin-top: -1px;
}
.control-group.error .bootstrap-select .dropdown-toggle{
border-color: #b94a48;
}
.bootstrap-select-searchbox {
padding: 4px 8px;
}
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts85728106.9</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>bootstrap-select.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>5781</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>bootstrap-select.css</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/*!
* Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select)
*
* Copyright 2013-2016 bootstrap-select
* Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
*/select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;z-index:1}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group.bs-container{position:absolute}.bootstrap-select.btn-group.bs-container .dropdown-menu{z-index:1060}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none}
\ No newline at end of file
...@@ -2,33 +2,33 @@ ...@@ -2,33 +2,33 @@
<ZopeData> <ZopeData>
<record id="1" aka="AAAAAAAAAAE="> <record id="1" aka="AAAAAAAAAAE=">
<pickle> <pickle>
<global name="DTMLMethod" module="OFS.DTMLMethod"/> <global name="File" module="OFS.Image"/>
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item> <item>
<key> <string>_Cacheable__manager_id</string> </key> <key> <string>_EtagSupport__etag</string> </key>
<value> <string>http_cache</string> </value> <value> <string>ts59623166.89</string> </value>
</item> </item>
<item> <item>
<key> <string>__name__</string> </key> <key> <string>__name__</string> </key>
<value> <string>erp5_xhtml_appearance.js</string> </value> <value> <string>bootstrap-select.min.css</string> </value>
</item> </item>
<item> <item>
<key> <string>_vars</string> </key> <key> <string>content_type</string> </key>
<value> <value> <string>text/css</string> </value>
<dictionary/>
</value>
</item> </item>
<item> <item>
<key> <string>globals</string> </key> <key> <string>precondition</string> </key>
<value> <value> <string></string> </value>
<dictionary/> </item>
</value> <item>
<key> <string>size</string> </key>
<value> <int>6065</int> </value>
</item> </item>
<item> <item>
<key> <string>title</string> </key> <key> <string>title</string> </key>
<value> <string></string> </value> <value> <string>bootstrap-select.min.css</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
......
/*!
* Bootstrap v3.0.3 (http://getbootstrap.com)
* Copyright 2013 Twitter, Inc.
* Licensed under http://www.apache.org/licenses/LICENSE-2.0
*/
.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe0e0e0',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:linear-gradient(to bottom,#428bca 0,#2d6ca2 100%);background-repeat:repeat-x;border-color:#2b669a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff2d6ca2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff419641',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffeb9316',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);background-repeat:repeat-x;border-color:#b92c28;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc12e2a',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2aabd2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff3f3f3',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff282828',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts87111048.84</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>bootstrap-theme.min.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>13135</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>bootstrap-theme.min.css</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59622952.72</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>bootstrap.min.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>121260</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>bootstrap.min.css</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/*!
* Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.5.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.5.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.5.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.5.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.5.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.5.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59631053.4</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>font-awesome.min.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>27466</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>font-awesome.min.css</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -2,14 +2,23 @@ ...@@ -2,14 +2,23 @@
xmlns:metal="http://xml.zope.org/namespaces/metal" xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"> xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<tal:block metal:define-macro="edit_link"> <tal:block metal:define-macro="edit_link">
<a tabindex="1000" tal:condition="python: (getattr(object, 'meta_type', None) is not None) and (getattr(object, 'getPortalObject', None) is not None)" <a tabindex="1000"
class="btn btn-xs"
tal:condition="python: (getattr(object, 'meta_type', None) is not None) and (getattr(object, 'getPortalObject', None) is not None)"
tal:attributes="href python: '%s/manage_main' % ('/'.join(object.getPhysicalPath()[len(object.getPortalObject().getPhysicalPath()):])) # XXX: quick hack to get path; tal:attributes="href python: '%s/manage_main' % ('/'.join(object.getPhysicalPath()[len(object.getPortalObject().getPhysicalPath()):])) # XXX: quick hack to get path;
title info;"><img tal:attributes="src string:$portal_path/images/$image; title info;"><img tal:attributes="src string:$portal_path/images/$image;
alt info;" /></a> alt info;" /></a>
</tal:block> </tal:block>
<tal:block metal:define-macro="translate_link"> <tal:block metal:define-macro="translate_link">
<a tabindex="1000" tal:define="image image | python: 'translate.png'" <a tabindex="1000"
tal:attributes="href python: '%s/manage_messages?regex=^%s%%24&amp;lang=%s' % ('/'.join(here.Localizer.erp5_ui.getPhysicalPath()[len(here.Localizer.erp5_ui.getPortalObject().getPhysicalPath()):]), message.replace('(', '\(').replace(')', '\)'), selected_language); class="btn btn-xs"
tal:define="image image | string:translate.png;
std nocall: modules/Products.PythonScripts.standard;
urlencode nocall: std/urlencode;
path python: '/'.join(here.Localizer.erp5_ui.getPhysicalPath()[len(here.Localizer.erp5_ui.getPortalObject().getPhysicalPath()):]);
message message | python: '^%s$'% (message.replace('(', '\(').replace(')', '\)'), );
"
tal:attributes="href python: '%s/manage_messages?%s'% ( path, urlencode( ( ('regex', message ), ('lang', selected_language))));
title info;"><img tal:attributes="src string:$portal_path/images/$image; title info;"><img tal:attributes="src string:$portal_path/images/$image;
alt info;" /></a> alt info;" /></a>
</tal:block> </tal:block>
......
...@@ -22,18 +22,20 @@ ...@@ -22,18 +22,20 @@
<div class="bottom_actions"> <div class="bottom_actions">
<button tal:condition="cancel_url|request/cancel_url|nothing" accesskey="C" <button tal:condition="cancel_url|request/cancel_url|nothing" accesskey="C"
id="dialog_cancel_button" name="Base_cancel:method" id="dialog_cancel_button" name="Base_cancel:method"
type="submit" class="bt-med dialog_cancel_button"> type="submit" class="btn btn-warning dialog_cancel_button">
<span i18n:translate="" i18n:domain="ui" tal:content="string:Cancel Action">Cancel Action</span> <span i18n:translate="" i18n:domain="ui" tal:content="string:Cancel Action">Cancel Action</span>
</button> </button>
<button tal:condition="form/update_action|nothing" accesskey="U" <button tal:condition="form/update_action|nothing" accesskey="U"
id="dialog_update_button" name="Base_showUpdateDialog:method" id="dialog_update_button" name="Base_showUpdateDialog:method"
type="submit" class="bt-med dialog_update_button"> type="submit" class="btn btn-default dialog_update_button">
<i class="fa fa-refresh"></>
<span i18n:translate="" i18n:domain="ui" <span i18n:translate="" i18n:domain="ui"
tal:content="python:here.Base_getFormViewDialogActionButtonUpdateActionTitle(form)">Update</span> tal:content="python:here.Base_getFormViewDialogActionButtonUpdateActionTitle(form)">Update</span>
</button> </button>
<button accesskey="V" <button accesskey="V"
id="dialog_submit_button" name="Base_callDialogMethod:method" id="dialog_submit_button" name="Base_callDialogMethod:method"
type="submit" class="bt-med dialog_submit_button"> type="submit" class="btn btn-success dialog_submit_button">
<i class="fa fa-check"></>
<span i18n:translate="" i18n:domain="ui" <span i18n:translate="" i18n:domain="ui"
tal:content="python:here.Base_getFormViewDialogActionButtonTitle(form)">Do Action</span> tal:content="python:here.Base_getFormViewDialogActionButtonTitle(form)">Do Action</span>
</button> </button>
......
/* /*
Copyright (c) 2007 Nexedi SA and Contributors. All Rights Reserved. nav#context_bar {
Vincent Pelletier <vincent@nexedi.com> z-index: 85;
Christophe Dumez <christophe@nexedi.com>
Kazuhiko <kazuhiko@nexedi.com>
This program is Free Software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
input, textarea, select, button, body, div, span, fieldset {
font-family: <dtml-var font_family>;
font-size: <dtml-var font_size>;
margin: 0;
padding: 0;
} }
nav.listbox-head {
div.input > select, div.input > input, div.listbox select { z-index: 80;
max-width:320px;
} }
nav#main_bar {
div.page > div.input { margin-left: -15px;
width:100%; margin-right: -15px;
} }
option { .btn-toolbar>.btn+.btn, .btn-toolbar>.btn-group+.btn, .btn-toolbar>.btn+.btn-group, .btn-toolbar>.btn-group+.btn-group {
white-space: pre; margin-left: 0px;
margin-right: 5px;
} }
div.pre div { body { padding-top: 70px; }
background: #FFF;
}
span.pre_wrap { .document .actions button.save span.image {
white-space: pre-wrap; width: 52px;
} height: 54px;
div.pre, span.pre { background-image: url('images/save2.png');
font-family: monospace;
color: black;
white-space: pre-wrap;
word-wrap: break-word; /* Internet Explorer 5.5+ */
} }
button, select, input { div.content {
vertical-align: middle; margin-top: 10px;
} }
*/
button span { /* for dragable gadgets */
background-color: transparent;
color: #000;
}
button.sort_button { .nav.navbar-nav button {
background-color: inherit; background: transparent;
color: inherit;
border-width: 0;
cursor: pointer;
} }
button.sort_button span { .portal-column {
color: inherit; min-height: 100px;
text-decoration: underline; margin-top: 10px;
} }
img { .btn > .description {
border: 0; display: none;
}
.document .btn > .description {
display: inherit;
}
.document .btn.save > .description {
display: none;
} }
body, div, span, fieldset { .hidden_fieldset {
color: <dtml-var font_color>; visibility: hidden;
border: 0;
} }
div, span, fieldset { .nav.btn-toolbar>li>a {
background-color: inherit; padding: 6px 12px; /*XXX from btn*/
} }
body { .listbox-head {
background-color: <dtml-var background_color>; margin-bottom: 0;
background-image: linear-gradient(to top,#fff 0,#f8f8f8 100%);
} }
#main_form, /* BBB */ div.listbox-head-title, div.listbox-head-navigation {
.main_form { margin-bottom: 0;
color: inherit; margin-top: 0;
} }
input#hidden_button, /* BBB */ input#hidden_button, /* BBB */
...@@ -102,1004 +76,191 @@ input.hidden_button { ...@@ -102,1004 +76,191 @@ input.hidden_button {
float: left; float: left;
} }
#language .description,
#favourites .description,
#modules .description,
#jump .description,
#action .description,
.hidden { .hidden {
display: none; display: none;
} }
.content .invisible > label {
textarea[readonly] {
background-color: inherit;
border: inherit;
}
a, a:visited, a:focus {
background-color: inherit;
color: <dtml-var link_color>;
text-decoration: none;
}
.relationfieldlink {
text-decoration: underline;
}
a:hover {
background-color: inherit;
color: <dtml-var link_hover_color>;
text-decoration: underline;
}
p.clear,
div.clear {
height: 0;
margin: 0;
padding: 0;
clear: both;
}
div.index_html {
text-align: center;
}
div.index_html table {
margin: 0 auto;
text-align: left;
}
.ModuleShortcut div {
margin-left: 0.5em;
text-indent: -0.5em;
line-height: 1.1em;
margin-bottom: 0.5em;
}
#main_bar button .description, /* BBB */
.main_bar button .description,
#context_bar button .description, /* BBB */
.context_bar button .description,
.content .field .description,
.document .actions button.save .description,
#context_bar .tool_buttons a .description, /* BBB */
.context_bar .tool_buttons a .description {
display: none; display: none;
} }
/* The fields set for generated hidden fields */ a {
#hidden_fieldset, /* BBB */ color:#252544;
.hidden_fieldset {
visibility: hidden;
border: 0;
}
/* Main bar */
#main_bar, /* BBB */
.main_bar {
color: inherit;
background-color: <dtml-var navigation_bar_background_color>;
padding-top: 2px;
padding-bottom: 2px;
vertical-align: middle;
}
#main_bar .first, /* BBB */
.main_bar .first,
#context_bar .first, /* BBB */
.context_bar .first {
float: left;
vertical-align: middle;
}
#context_bar #jump, /* BBB */
.context_bar .jump,
#main_bar .jump, /* BBB */
.main_bar .jump {
margin-left: 10px;
} }
.listbox_title_line select, #main_form{
#context_bar select, /* BBB */ padding-right: 15px;
.context_bar select, padding-left: 15px;
#main_bar select, /* BBB */
.main_bar select {
color: <dtml-var alternate_font_color>;
} }
#main_bar .second, /* BBB */ .modal-dialog {
.main_bar .second, width: inherit;
#context_bar .second, /* BBB */ padding-left: 70px;
.context_bar .second { padding-right: 70px;
float: right;
vertical-align: middle;
} }
#main_bar button, /* BBB */ .bottom .input-group.col-md-12 {
.main_bar button,
#context_bar button, /* BBB */
.context_bar button,
.dialog_selector button,
.document .actions button.save {
border: 0;
margin-top: 1px;
margin-left: 0;
margin-right: 2px;
padding: 0; padding: 0;
position: relative;
cursor: pointer;
background-color: inherit;
color: inherit;
}
#context_bar .tool_buttons, /* BBB */
.context_bar .tool_buttons {
vertical-align: middle;
} }
#context_bar .tool_buttons a, /* BBB */ .popover .input-group input.form-control {
.context_bar .tool_buttons a { width: auto;
margin-top: 2px;
margin-left: 2px;
margin-right: 2px;
padding: 0;
position: relative;
} }
/*listbox navigation*/
#context_bar .tool_buttons button, /* BBB */ .listbox-page-navigation p {
.context_bar .tool_buttons button { margin-top: 4px;
font-size: 14px;
float: left; float: left;
font-family: monospace;
} }
input.form-control.listbox_set_page {
#main_bar button .image, /* BBB */ padding: 6px 0.3em;
.main_bar button .image, width: auto;
#context_bar button .image, /* BBB */ font-size: 14px;
.context_bar button .image,
.dialog_selector button .image,
.document .actions button.save .image {
display: block;
width: 22px;
height: 22px;
background-repeat: no-repeat;
}
/* XXX: Bug fix when not logged */
.document .actions {
min-height: 2.5em;
}
.pageNavigation button {
display: inline;
border: 0 none;
background-color: inherit;
vertical-align: middle;
}
table.fake {
width: 100%;
}
table.fake tr td {
vertical-align: top;
width: 50%;
}
.content .field {
position: relative;
clear: left;
font-style: italic;
width: 100%;
}
.content .field .input {
font-style: normal;
}
.content .input .figure {
text-align: right; text-align: right;
font-family: monospace;
float: left!important;
} }
/*datetime*/
.group_title { .input-separator {
display: none; margin-left: 1px;
} margin-right: 1px;
font-size: 1.6em;
table.fake, float: left!important;
fieldset.left,
fieldset.center,
fieldset.bottom {
clear: both;
}
table.fake,
fieldset.left,
fieldset.right,
fieldset.center,
fieldset.bottom {
margin-bottom: 5px;
}
table.fake,
fieldset.left,
fieldset.right,
fieldset.center {
border-style: solid;
border-width: 1px;
border-color: <dtml-var group_border_color>;
padding-top: 5px;
padding-left: 5px;
padding-right: 5px;
} }
input.form-control.date_field {
fieldset.center { padding: 6px 0.7em;
padding-bottom: 5px; width: auto;
font-family: monospace;
float: left!important;
} }
.login fieldset { /*multifield relation*/
width: 50%; .input-auto > input.form-control {
width: auto;
float: left; float: left;
} }
.input-auto > div.input-group-btn {
fieldset.left { float:left;
width: 50%;
float: left;
margin-right: -12px; /* 5px margin *2 + 2px for left & right border width */
} }
.input-auto > .input-group-btn > select.form-control {
fieldset.right { width: auto;
width: 50%; max-width: 12.5em;
float: left;
margin-left: -12px; /* 5px margin *2 + 2px for left & right border width */
} }
/*gadgets*/
/* BBB: don't display borders on left-group fieldsets in a formbox in any .block .col-md-1, .block .col-md-2, .block .col-md-3, .block .col-md-4, .block .col-md-5, .block .col-md-6, .block .col-md-7, .block .col-md-8, .block .col-md-9, .block .col-md-10, .block .col-md-11 {
* bordered fieldset (ie left, right or center). */ position: inherit;
fieldset.left fieldset.left,
fieldset.right fieldset.left,
fieldset.center fieldset.left,
table.fake > tbody > tr > td > fieldset {
border-width: 0;
padding: 0;
margin: 0;
width: 100%; width: 100%;
float: none;
}
fieldset.center,
fieldset.bottom {
clear: both;
}
fieldset.bottom {
border-width: 0;
}
fieldset.bottom > .field > label {
display: none;
}
.login fieldset,
.dialog_box table.fake,
.dialog_box .left,
.dialog_box .right,
.dialog_box .center {
border-width: 0;
}
.content .field {
padding-bottom: 3px;
}
.content .field label {
width: 30%;
}
.content .field label,
.content .field .input {
float: left;
}
/* Exception case of the previous generic rule
The CSS statement below fix bug #517: it doesn't make sense to have
floating div in bottom field since label are hidden. */
fieldset.bottom .field .input {
float: inherit; float: inherit;
} }
.content .field .input a img { ol#breadcrumb {
vertical-align: middle; margin-bottom: 10px;
}
.content .required label {
font-weight: bold;
}
.content .field .error {
background-color: inherit;
color: #f40;
}
.content .error .input {
border: 1px solid #f40;
}
.listbox-body .error {
background-color: inherit;
color: #f40;
}
.content .invisible > label {
display: None;
}
.content .invisible > .input {
float: None;
}
a.tree_open {
background: url('images/tree_open.png') left no-repeat;
padding-left:15px;
}
a.tree_closed {
background: url('images/tree_closed.png') left no-repeat;
padding-left:15px;
}
.login .submit {
margin-left: 15%;
}
#jump, /* BBB */
span.jump,
#action, /* BBB */
span.action,
#favourites, /* BBB */
span.favourites,
#modules, /* BBB */
span.modules,
#language, /* BBB */
span.language,
#search, /* BBB */
span.search {
float: left;
}
#favourites button .image, /* BBB */
span.favourites button .image {
background-image: url('images/favourite.png');
}
#modules button .image, /* BBB */
span.modules button .image {
background-image: url('images/appearance.png');
}
#language button .image, /* BBB */
span.language button .image {
background-image: url('images/language.png');
}
.quick_search_field { color: #777777; }
.quick_search_field:focus { color: #000000; }
#search button .image, /* BBB */
span.search button .image {
background-image: url('images/search.png');
}
#status, /* BBB */
.status,
#master, /* BBB */
.master {
padding-left: .5em;
padding-right: .5em;
}
#status, /* BBB */
.status {
padding-top: .3em;
padding-bottom: .4em;
}
/* Context bar */
#context_bar, /* BBB */
.context_bar {
padding-top: 2px;
padding-bottom: 2px;
border-bottom-width: 1px;
border-bottom-style: solid;
border-bottom-color: <dtml-var main_border_color>;
background-color: <dtml-var context_bar_background_color>;
color: inherit;
vertical-align: middle;
}
#context_bar .tool_buttons a, /* BBB */
.context_bar .tool_buttons a {
float: left;
margin-left: 2px;
margin-right: 2px;
}
.separator {
height: 24px;
width: 2px;
margin-left: 6px;
margin-right: 6px;
display: block;
float: left;
}
#main_bar .separator, /* BBB */
.main_bar .separator {
background-image: url('images/sepafon.png');
}
#context_bar .separator, /* BBB */
.context_bar .separator {
background-image: url('images/sepacla.png');
}
#context_bar .tool_buttons a .image, /* BBB */
.context_bar .tool_buttons a .image,
#context_bar .tool_buttons button .image, /* BBB */
.context_bar .tool_buttons button .image,
#context_bar .tool_buttons a img, /* BBB */
.context_bar .tool_buttons a img {
width: 22px;
height: 22px;
margin: 0;
padding: 0;
display: block;
background-repeat: no-repeat;
}
#context_bar #jump button .image, /* BBB */
.context_bar .jump button .image {
background-image: url('images/jump22.png');
}
#context_bar #action button .image, /* BBB */
.context_bar .action button .image {
background-image: url('images/exec.png');
}
#context_bar .tool_buttons .list_mode .image, /* BBB */
.context_bar .tool_buttons .list_mode .image {
background-image: url('images/text_block.png');
}
#context_bar .tool_buttons .new .image, /* BBB */
.context_bar .tool_buttons .new .image {
background-image: url('images/filenew.png');
}
#context_bar .tool_buttons .clone .image, /* BBB */
.context_bar .tool_buttons .clone .image {
background-image: url('images/fileclone.png');
}
#context_bar .tool_buttons .jump_first .image, /* BBB */
.context_bar .tool_buttons .jump_first .image {
background-image: url('images/2leftarrowb.png');
}
#context_bar .tool_buttons .jump_previous .image, /* BBB */
.context_bar .tool_buttons .jump_previous .image {
background-image: url('images/1leftarrowb.png');
}
#context_bar .tool_buttons .jump_next .image, /* BBB */
.context_bar .tool_buttons .jump_next .image {
background-image: url('images/1rightarrowb.png');
}
#context_bar .tool_buttons .jump_last .image, /* BBB */
.context_bar .tool_buttons .jump_last .image {
background-image: url('images/2rightarrowb.png');
}
#context_bar .tool_buttons .import_export .image, /* BBB */
.context_bar .tool_buttons .import_export .image {
background-image: url('images/imp-exp.png');
}
#context_bar .tool_buttons .jump_help .image, /* BBB */
.context_bar .tool_buttons .jump_help .image {
background-image: url('images/userhelp.png');
}
#context_bar .tool_buttons .find .image, /* BBB */
.context_bar .tool_buttons .find .image {
background-image: url('images/find.png');
}
#context_bar .tool_buttons .print .image, /* BBB */
.context_bar .tool_buttons .print .image {
background-image: url('images/print.png');
}
#context_bar .tool_buttons .report .image, /* BBB */
.context_bar .tool_buttons .report .image {
background-image: url('images/report.png');
}
#context_bar .tool_buttons .fast_input .image, /* BBB */
.context_bar .tool_buttons .fast_input .image {
background-image: url('images/fast_input.png');
}
#context_bar .tool_buttons .cut .image, /* BBB */
.context_bar .tool_buttons .cut .image {
background-image: url('images/editcut.png');
}
#context_bar .tool_buttons .copy .image, /* BBB */
.context_bar .tool_buttons .copy .image {
background-image: url('images/editcopy.png');
}
#context_bar .tool_buttons .paste .image, /* BBB */
.context_bar .tool_buttons .paste .image {
background-image: url('images/editpaste.png');
}
#context_bar .tool_buttons .delete .image, /* BBB */
.context_bar .tool_buttons .delete .image {
background-image: url('images/editdelete.png');
}
#context_bar .tool_buttons .show_all .image, /* BBB */
.context_bar .tool_buttons .show_all .image {
background-image: url('images/showall.png');
}
#context_bar .tool_buttons .filter .image, /* BBB */
.context_bar .tool_buttons .filter .image {
background-image: url('images/filter.png');
}
#context_bar .tool_buttons .filter_on .image, /* BBB */
.context_bar .tool_buttons .filter_on .image {
background-image: url('images/filter_on.png');
}
#context_bar .tool_buttons .sort .image, /* BBB */
.context_bar .tool_buttons .sort .image {
background-image: url('images/sort.png');
}
#context_bar .tool_buttons .configure .image, /* BBB */
.context_bar .tool_buttons .configure .image {
background-image: url('images/configure.png');
}
#context_bar .tool_buttons .activity_pending .image, /* BBB */
.context_bar .tool_buttons .activity_pending .image {
width: 26px;
background-image: url('images/activity_busy.png');
}
#context_bar .tool_buttons .inspect_object .image, /* BBB */
.context_bar .tool_buttons .inspect_object .image {
background-image: url('images/inspect.png');
}
/* Status */
#breadcrumb, /* BBB */
.breadcrumb {
float: left;
/* font-size: 90%; */
margin-bottom: 5px;
}
#breadcrumb a, /* BBB */
.breadcrumb a {
color: <dtml-var link_color>;
}
#logged_in_as, /* BBB */
.logged_in_as {
float: right;
}
#logged_in_as .logged_txt, /* BBB */
.logged_in_as .logged_txt{
color: <dtml-var link_color>;
/* font-size: 90%; */
}
#transition_message, /* BBB */
.transition_message {
margin-left: 1em;
color: #f40;
background-color: inherit;
font-weight: bold;
}
#information_area, /* BBB */
.information_area {
margin-top: 1em;
padding:0.5em 1em 0.5em 1em;
border-width: 1px;
border-style: solid;
border-color: <dtml-var dialog_border_color>;
color: orange;
background-color: <dtml-var document_background_color>;
font-weight: bold;
}
/* Content */
.dialog_box {
color: inherit;
background-color: <dtml-var dialog_background_color>;
border-width: 1px;
border-style: solid;
border-color: <dtml-var dialog_border_color>;
padding: .5em;
margin-bottom: 1em;
}
.list_dialog {
margin-bottom: .5em;
}
.dialog_selector button .description {
display: none;
}
.dialog_selector button .image {
background-image: url('images/exec16.png');
}
.document .actions {
position: relative;
float: left;
width: 100%;
margin: 0;
padding: 0;
border-bottom-width: 1px;
border-bottom-style: solid;
border-bottom-color: <dtml-var document_border_color>;
color: <dtml-var link_color>;
}
.document .actions button.save {
float: right;
}
.document .actions button.save span.image {
width: 48px;
height: 50px;
background-image: url('images/save2.png');
}
.document .actions ul {
float: left;
list-style: none;
padding: 0;
margin: 0;
position: absolute;
bottom: -1px;
}
.document .actions li {
float: left;
border: 1px solid <dtml-var document_border_color>;
border-bottom-color: transparent;
border-radius: 10px 10px 0 0;
-moz-border-radius: 10px 10px 0 0;
-webkit-border-top-left-radius: 10px;
-webkit-border-top-right-radius: 10px;
}
.document .actions li.selected {
border-bottom-color: <dtml-var background_color>;
}
.document .actions li a {
display: block;
color: inherit;
margin: 0;
padding: 0 0 0 9px;
line-height: 1.2em;
}
.document .actions li a span {
display: block;
padding: 4px 9px 4px 0;
color: inherit;
background-color: inherit;
/* font-size: 90%; */
}
.document .actions li.selected a span {
font-weight: bold;
padding-bottom: 4px;
}
.document .actions li a:hover {
text-decoration: none;
}
.document .content {
clear: both;
border-width: 1px;
border-style: solid;
border-color: <dtml-var document_border_color>;
border-top: 0 none;
color: inherit;
background-color: <dtml-var document_background_color>;
padding: 5px;
}
/* Search results list
------------------------------------------------*/
div#main_content.list_mode, /* BBB */
div.main_content.list_mode {
font-size:0.7em;
line-height:1.5em;
}
div.search.result .resultList .listbox tr.DataA,
div.search.result .resultList .listbox tr.DataB {
background-color: white;
} }
div.search.result .resultList .listbox td { .field > .form-group.row {
padding: 0.5em 0; margin-bottom: 1px;
} }
div.search.result .resultList p {margin-bottom: 0} /*increase vertical distanse between elements*/
.field {
div.search.result .resultList h3 { margin-bottom: 7px;
font-size: 120%;
font-weight: normal;
margin-bottom: 1em;
}
div.search.result .resultList ul.pages li a {
padding: .1em .3em;
border: 1px solid transparent;
} }
div.search.result .resultList ul.pages li a:hover { /*decrease top padding to make lable for form higher
border: 1px solid #dedade; so 2 words label looks opposite it's field*/
background: #eee; .form-horizontal .control-label, .form-horizontal .radio, .form-horizontal .checkbox, .form-horizontal .radio-inline, .form-horizontal .checkbox-inline {
padding-top: 0px;
} }
.input-group-btn {
div.search.result .resultList a .search_result_title { vertical-align: top;
font-weight: bold;
font-size: 120%;
}
div.search.result .resultList .search_result_portal_type:before {
content: "[";
}
div.search.result .resultList .search_result_portal_type:after {
content: "]";
}
div.search.result .resultList table.listbox caption {
font-weight: bold;
text-align: left;
} }
/*lower noneditable fields to match it's label*/
div.search.result .resultList table.listbox td { .form-control-static {
vertical-align: middle; padding-top: 0px;
border: transparent;
margin:0;
} }
div.search.result .resultList table.listbox td ul {list-style: none} /* listbox table in thumbnail style
div.search.result .resultList table.listbox td ul li {margin: 0} In thumbnail style we usually have only one thumbnail colum which through CSS
we show as floating box table row.
div.search.result .resultList table.listbox td blockquote { */
border: 1px solid #e6e2e6;
border-top-color: #000;
margin: .5em 0 2em;
padding: 1em;
background: #eee;
}
div.search.result .resultList { table.listbox-thumbnail tbody tr{
padding: 1em; display:block;
padding-top: 0em; min-width: 128px; /* nano image width. XXX: dynamically generate. */
padding-bottom: 1em; min-height:128px; /* nano image height. XXX: dynamically generate. */
padding-left: 0em; float:left;
padding-right: 0em; margin: 10px;
} }
div.search.result div.searchBar { table.listbox-thumbnail tr.DataA, table.listbox-thumbnail tr.DataB,
margin-bottom: 2em; table.listbox-thumbnail tr.DataA:hover, table.listbox-thumbnail tr.DataB:hover{
background-color: transparent; /* in thumbnail mode we don't care for hoover */
} }
table.listbox-thumbnail td{
div.searchResultHeader #style_toggle_icon, border:none;
table.listbox.table #style_toggle_icon {
padding:0;
border: 0px;
border-color:red;
margin:0;
vertical-align:bottom;
} }
div.search .centeredInner { textarea {
text-align: center; resize: vertical;
} }
.searchDetails em { .input > .page {
font-style:normal; border: 1px solid #ddd;
font-weight:bold; padding: 15px;
} }
/*Make the same marging for several btn toolbox horizontal lines*/
div.search .searchPages a{ .btn-toolbar>.btn-group+.btn-group {
text-decoration: underline; margin-left: 0px;
} }
div.search .searchPages .selected{ .btn-toolbar>.btn-group {
color: #CB0D00; margin-right: 5px;
font-weight:bold;
text-decoration: none;
} }
/* MatrixBox */ .listbox-table-filter-cell > input.form-control {
.MatrixContent { margin-left: -3px;
color: #000; padding-left: 3px;
background-color: <dtml-var document_background_color>; padding-right: 2px;
padding-left: 1px;
} }
.MatrixContent table { .block > .minimize_wrapper .table-responsive {
width: 100%; width: 100%;
border-collapse: collapse; /* margin-bottom: 15px; */
border-color: <dtml-var document_border_color>; overflow-x: auto;
border-style: solid; overflow-y: hidden;
border-top-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-right-width: 1px;
}
.MatrixContent tr.matrixbox_label_line {
vertical-align: middle;
border-color: <dtml-var document_border_color>;
border-style: solid;
border-bottom-width: 1px;
border-top-width: 0;
border-left-width: 0;
border-right-width: 0;
}
.MatrixContent td.matrixbox_label_column {
white-space: nowrap;
}
.MatrixContent tr.DataA {
color: inherit;
background-color: <dtml-var listbox_odd_background_color>;
} }
.MatrixContent tr.DataB { .listbox-table-data-cell > input.form-control {
color: inherit; padding-left: 3px;
background-color: <dtml-var listbox_even_background_color>; padding-right: 2px;
} width: auto;
.MatrixContent tr.DataA:hover,
.MatrixContent tr.DataB:hover {
color: inherit;
background-color: <dtml-var listbox_hover_background_color>;
}
.MatrixContent td {
border-color: <dtml-var document_border_color>;
border-style: solid;
border-top-width: 0;
border-bottom-width: 0;
border-left-width: 1px;
border-right-width: 1px;
padding-left: 1px;
padding-right: 1px;
}
.MatrixContent .error {
color: #F00;
}
.MatrixContent td.footer {
width: 100pt;
}
/* Web Page White Background */
.document div.page {
background-color: white;
}
.document div.page div {
color: black;
}
/* Listbox missing search criterion table row*/
.listbox_missing_search_criterion {
background-color: white;
}
.listbox_missing_search_criterion td{
text-align: center!important;
}
.hidden_label > label {
display:none;
}
/* DMS PDF navigation
XXX: probably part of erp5_dms.bt5 */
div.pdf-preview-navigation img{
width: 22px;
height: 22px;
margin-right: 1px;
background-repeat: no-repeat;
vertical-align: middle;
}
div.pdf-preview-navigation img.shaded{
opacity: 0.2;
}
div.pdf-preview-navigation img.first{
background-image:url("images/2leftarrowb.png");
}
div.pdf-preview-navigation img.previous{
background-image:url("images/1leftarrowb.png");
} }
div.pdf-preview-navigation img.next{ .document > .content {
background-image:url("images/1rightarrowb.png"); margin-top:10px;
} }
div.pdf-preview-navigation img.last{ .bootstrap-select.btn-group, .bootstrap-select.btn-group[class*="span"] {
background-image:url("images/2rightarrowb.png"); margin-bottom: 0;
} }
.horizontal_align_form_box > div.input { .btn.btn-default.btn-group {
float: right; margin-right: 5px;
width: 70%; /* because label width is 30%*/
} }
.horizontal_align_form_box > div.input > fieldset > div.field { .bootstrap-select.btn-group:not(.input-group-btn),
clear: none; .bootstrap-select.btn-group[class*="span"] {
float: left; float: left;
width: auto; margin-right: 5px;
}
.horizontal_align_form_box > div.input > fieldset > div.field > label {
width: auto;
padding-top: 2px;
}
.captchas_dot_net {
border: none;
vertical-align: bottom
}
@media print {
.bars {
display: none;
}
.status {
display: none;
}
.actions {
display: none;
}
} }
fieldset > div.large-gadget { /*for chats list*/
height: 85vh; .height_10 div.chat-content-history {
max-height: 10em;
} }
...@@ -2,377 +2,30 @@ ...@@ -2,377 +2,30 @@
<ZopeData> <ZopeData>
<record id="1" aka="AAAAAAAAAAE="> <record id="1" aka="AAAAAAAAAAE=">
<pickle> <pickle>
<global name="DTMLDocument" module="OFS.DTMLDocument"/> <global name="File" module="OFS.Image"/>
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item> <item>
<key> <string>_Cacheable__manager_id</string> </key> <key> <string>_EtagSupport__etag</string> </key>
<value> <string>http_cache</string> </value> <value> <string>ts59628797.18</string> </value>
</item> </item>
<item> <item>
<key> <string>__name__</string> </key> <key> <string>__name__</string> </key>
<value> <string>erp5.css</string> </value> <value> <string>erp5.css</string> </value>
</item> </item>
<item> <item>
<key> <string>_local_properties</string> </key> <key> <string>content_type</string> </key>
<value> <value> <string>text/css</string> </value>
<tuple>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>main_border_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>context_bar_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>navigation_bar_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>font_family</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>font_size</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>font_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>dialog_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>dialog_border_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>link_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>link_hover_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>button_description_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>document_border_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>document_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_label_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_odd_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_even_background_color</string> </value>
</item> </item>
<item> <item>
<key> <string>type</string> </key> <key> <string>precondition</string> </key>
<value> <string>string</string> </value> <value> <string></string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>tooltip_border_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>tooltip_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>tooltip_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_hover_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_stat_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>alternate_font_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>group_border_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
</tuple>
</value>
</item>
<item>
<key> <string>_vars</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>alternate_font_color</string> </key>
<value> <string>#596dab</string> </value>
</item>
<item>
<key> <string>background_color</string> </key>
<value> <string>#DAE6F6</string> </value>
</item>
<item>
<key> <string>button_description_color</string> </key>
<value> <string>#000</string> </value>
</item>
<item>
<key> <string>context_bar_background_color</string> </key>
<value> <string>#BDD0F0</string> </value>
</item>
<item>
<key> <string>dialog_background_color</string> </key>
<value> <string>#BDD0F0</string> </value>
</item>
<item>
<key> <string>dialog_border_color</string> </key>
<value> <string>#3D5474</string> </value>
</item>
<item>
<key> <string>document_background_color</string> </key>
<value> <string>#E3EAFA</string> </value>
</item>
<item>
<key> <string>document_border_color</string> </key>
<value> <string>#3D6474</string> </value>
</item>
<item>
<key> <string>font_color</string> </key>
<value> <string>#001730</string> </value>
</item>
<item>
<key> <string>font_family</string> </key>
<value> <string>Arial, Helvetica, sans-serif</string> </value>
</item>
<item>
<key> <string>font_size</string> </key>
<value> <string>12px</string> </value>
</item>
<item>
<key> <string>globals</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>group_border_color</string> </key>
<value> <string>#97B0D1</string> </value>
</item>
<item>
<key> <string>link_color</string> </key>
<value> <string>#002e3f</string> </value>
</item>
<item>
<key> <string>link_hover_color</string> </key>
<value> <string>#3D6474</string> </value>
</item>
<item>
<key> <string>listbox_even_background_color</string> </key>
<value> <string>#DAE6F6</string> </value>
</item>
<item>
<key> <string>listbox_hover_background_color</string> </key>
<value> <string>#BDD0F0</string> </value>
</item>
<item>
<key> <string>listbox_label_background_color</string> </key>
<value> <string>#C1DAEB</string> </value>
</item>
<item>
<key> <string>listbox_odd_background_color</string> </key>
<value> <string>#FFF</string> </value>
</item>
<item>
<key> <string>listbox_stat_background_color</string> </key>
<value> <string>#C1DAEB</string> </value>
</item>
<item>
<key> <string>main_border_color</string> </key>
<value> <string>#97B0D1</string> </value>
</item>
<item>
<key> <string>navigation_bar_background_color</string> </key>
<value> <string>#97B0D1</string> </value>
</item> </item>
<item> <item>
<key> <string>title</string> </key> <key> <string>title</string> </key>
<value> <string></string> </value> <value> <string></string> </value>
</item> </item>
<item>
<key> <string>tooltip_background_color</string> </key>
<value> <string>#FFD</string> </value>
</item>
<item>
<key> <string>tooltip_border_color</string> </key>
<value> <string>#000</string> </value>
</item>
<item>
<key> <string>tooltip_color</string> </key>
<value> <string>#000</string> </value>
</item>
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
......
...@@ -213,7 +213,9 @@ var resizeIFrameOnLoad = function() { ...@@ -213,7 +213,9 @@ var resizeIFrameOnLoad = function() {
}; };
var changed = false; var changed = false;
var unsaved_warn_message = "";
function installUnsavedChangesWarning(warning_message) { function installUnsavedChangesWarning(warning_message) {
unsaved_warn_message = warning_message;
window.onbeforeunload = function() { window.onbeforeunload = function() {
if ((changed)&&($("button.save"))) if ((changed)&&($("button.save")))
// show an warning box only if save button do exists // show an warning box only if save button do exists
...@@ -229,8 +231,7 @@ var addOnChangeEventHandler = function() { ...@@ -229,8 +231,7 @@ var addOnChangeEventHandler = function() {
- clicking a relation field wheel - clicking a relation field wheel
- clicking on a input with type submit - clicking on a input with type submit
*/ */
$("#master div").each(function(i) { $("#master div.input").each(function(i) {
if ($(this).attr("class") == "input") {
$(this).children().each(function() { $(this).children().each(function() {
if ($(this).prop("tagName") == "INPUT" || if ($(this).prop("tagName") == "INPUT" ||
$(this).prop("tagName") == "SELECT" || $(this).prop("tagName") == "SELECT" ||
...@@ -264,7 +265,6 @@ var addOnChangeEventHandler = function() { ...@@ -264,7 +265,6 @@ var addOnChangeEventHandler = function() {
}); });
} }
}); });
}
}); });
}; };
...@@ -347,9 +347,11 @@ function redirectPDFPage(event, element){ ...@@ -347,9 +347,11 @@ function redirectPDFPage(event, element){
} }
} }
/*
if (navigator.userAgent.toLowerCase().indexOf('firefox') != -1) if (navigator.userAgent.toLowerCase().indexOf('firefox') != -1)
$(document).ready(rewriteIndentedSelect); $(document).ready(rewriteIndentedSelect);
$(document).ready(resizeIFrameOnLoad); $(document).ready(resizeIFrameOnLoad);
*/
$(document).ready(addOnChangeEventHandler); $(document).ready(addOnChangeEventHandler);
$(document).ready(indexAllCheckBoxesAtBTInstallationOnLoad); $(document).ready(indexAllCheckBoxesAtBTInstallationOnLoad);
......
/*
Copyright (c) 2007 Nexedi SA and Contributors. All Rights Reserved.
Ivan Tyagov <ivan@nexedi.com>
This program is Free Software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* Search popup fix*/
div.search_popup{
left:200px;
position:absolute;
top:-120px;
width:250px;
}
div.listbox-container{
width: 100%;
height: auto;
float:left;
margin-bottom:5px;
}
div.listbox-body{
float:left;
width: 100%;
}
div.listbox-tree{
margin-right: 0.1%;
max-width: 10%;
float: left;
}
div.listbox-content{
float:left;
width:100%;
}
div.maximal-width{
width:100%;
}
div.float-right{
float:right;
}
div.listbox-content-fixed-width{
width:89%;
}
table.listbox td.listbox-table-no-result-row{
background-color:#DAE6F6;
color:#001730;
border: 1px solid #3D6474;
text-align:center;
}
table.listbox tr.listbox-stat-line{
background-color:#C1DAEB;
color:#001730;
border-top: 1px solid #3D6474;
}
table.listbox tr.listbox-search-line {
background-color: #DAE6F6;
}
div.listbox-head{
color:#9D968D;
}
div.listbox-head-spacer{
display: none;
}
div.listbox-head-content{
border-right:1px solid #3D6474;
border-top:1px solid #3D6474;
border-left:1px solid #3D6474;
border-top-left-radius: 10px;
-moz-border-top-left-radius: 10px;
-webkit-border-top-left-radius: 10px;
height:25px;
padding-left:10px;
padding-top:10px;
padding-right: 5px;
width:auto;
background-color: #e3eafa;
}
div.listbox-head div.listbox-head-title{
float:left;
width:auto;
}
div.listbox-head div.listbox-head-navigation{
float:right;
width:auto;
}
div.listbox-head div.listbox-head-results{
float: right;
width: auto;
clear: right;
text-align:right;
}
div.listbox-tree-mode-selection{
height: 22px;
width: auto;
float: left;
}
div.listbox-tree-mode-selection input{
width: auto;
}
th.listbox-table-report-tree-selection-cell{
width: 50px;
}
/* Listbox header */
div.listbox-header-box{
width: auto;
float:left;
padding-right: 5px;
}
table.listbox tr.listbox-label-line th.listbox-table-header-cell span.listbox-table-header-column-title{
float:left;
}
/* Listbox Footer */
div.listbox-footer{
float:left;
width:100%;
text-align: center;
background-color: #BDD0F0;
margin-left:-1px;
}
div.listbox-footer-box{
margin-top:3px;
margin-bottom:3px;
}
/* Listbox Footer in gadget mode */
div.block div.listbox-footer{
background-color: transparent;
}
div.block div.listbox-head-content{
font-size: 90%;
}
div.listbox-title,
div.listbox-number-of-records{
padding-top: 5px;
}
/* List style selection */
div.listbox-list-style-selection {
padding-top:1px;
padding-left: 5px;
}
div.listbox-list-style-selection span{
vertical-align:-4px;
}
div.block div.listbox-list-style-selection span{
padding-left: 0px;
}
div.listbox-list-style-selection ul{
display:inline;
padding-left:0;
margin: 0;
vertical-align: -4px;
}
div.listbox-list-style-selection li{
display: inline;
margin-left: 0.1em;
}
div.listbox-list-style-selection li a{
cursor: pointer;
}
div.listbox-list-style-selection li a.selected,
.listbox-table-report-tree-selection-cell a.selected,
.listbox-table-domain-tree-cell a.selected,
.listbox-page-navigation-text a.selected,
table.listbox td.listbox-table-summary-cell {
font-weight: bold;
}
/* Domain / Report tree buttons */
button.tree-open,
button.tree-closed{
background: none;
border: none;
cursor: pointer;
padding-left: 15px;
text-align: left;
}
button.tree-open{
background: url("./images/tree_open.png") no-repeat scroll left 4px transparent;
font-weight: bold;
}
button.tree-closed{
background: url("./images/tree_closed.png") no-repeat scroll left 4px transparent;
}
/* Listbox full text search bar */
div.listbox-full-text-search {
}
div.listbox-full-text-search input{
width: 250px;
}
div.listbox-full-text-search input.button{
background-color: #97B0D1;
border: 0 none;
color:#000;
width: auto;
padding-left: 10px;
padding-right: 10px;
cursor: pointer;
}
/* Listbox Navigation */
div.listbox-page-navigation input.listbox_set_page,
div.listbox-page-navigation button.listbox_next_page,
div.listbox-page-navigation button.listbox_last_page,
div.listbox-page-navigation button.listbox_first_page,
div.listbox-page-navigation button.listbox_previous_page{
margin: 0em;
padding: 0em;
}
div.listbox-page-navigation button{
background-color:transparent;
border: none;
cursor: pointer;
}
div.listbox-page-navigation button span.image{
display:block;
height:22px;
width:22px;
background-repeat:no-repeat;
}
div.listbox-page-navigation button.listbox_first_page span.image {
background-image:url("images/2leftarrowv.png");
}
div.listbox-page-navigation button.listbox_previous_page span.image {
background-image:url("images/1leftarrowv.png");
}
div.listbox-page-navigation button.listbox_next_page span.image {
background-image:url("images/1rightarrowv.png");
}
div.listbox-page-navigation button.listbox_last_page span.image {
background-image:url("images/2rightarrowv.png");
}
div.listbox-page-navigation-slider{
min-width: 200px;
margin:auto;
padding-right: 0.5em;
float:right;
}
div.listbox-page-navigation-slider input{
max-width: 30px;
}
div.listbox-page-navigation-text{
width:100%;
float:left;
text-align:center;
}
div.listbox-page-navigation-text a{
padding-right: 1px;
color: #000;
cursor: pointer;
}
/* Report tree */
a.tree-closed {
background:transparent url('./images/tree_closed.png') no-repeat scroll left center;
padding-left:15px;
}
a.tree-open {
background:transparent url('./images/tree_open.png') no-repeat scroll left center;
padding-left:15px;
font-weight: bold;
}
div.listbox-tree select{
/* max-width:120px; */
}
/* Table Listbox elements */
table.listbox{
border-collapse:collapse;
width:100%;
border-color:#3D6474;
border-style:solid;
border-width:0 1px 1px;
margin-bottom: 0em;
}
table.listbox th,
table.listbox td {
text-align:left;
vertical-align: top;
border-color:#3D6474;
border-style:solid;
border-width:0 1px;
padding: 0em;
padding-left:1px;
padding-right:1px;
font-weight: normal;
}
table.listbox tr.listbox-label-line{
background-color:#C1DAEB;
color:#001730;
border-top: 1px solid #3D6474;
}
table.listbox tr.listbox-search-line th{
margin: 0em;
padding: 0em;
padding-right:5px;
padding-left:1px;
}
/* Select columns */
table.listbox tr.listbox-label-line th.listbox-table-select-cell,
table.listbox tr.listbox-search-line th.listbox-table-select-cell,
table.listbox tr td.listbox-table-select-cell{
width: 50px;
text-align: center;
vertical-align: middle;
padding:0;
margin:0;
}
table.listbox tr.DataA {
color: inherit;
background-color: <dtml-var listbox_odd_background_color>;
}
table.listbox tr.DataB {
color: inherit;
background-color: <dtml-var listbox_even_background_color>;
}
table.listbox tr.DataA:hover,
table.listbox tr.DataB:hover,
table.listbox.table tr.tbody:hover{
color: inherit;
background-color: <dtml-var listbox_hover_background_color>;
}
table.listbox tr.listbox-search-line th.listbox-table-filter-cell input{
width: 100%;
vertical-align:middle;
}
table.listbox input{
float:none;
}
table.listbox button.listbox-check-all,
table.listbox button.listbox-uncheck-all,
table.listbox input.listbox-select-action{
width:auto;
padding:0;
float:none;
}
.listbox-table-data-cell > .figure{
float:right;
display:block;
}
.listbox-table-data-cell > a > .figure{
float:right;
display:block;
}
.listbox-table-summary-cell > .figure{
float:right;
display:block;
}
table.listbox th button{
border-width:0;
cursor:pointer;
float:left;
padding:0 6px 0 0;
background: transparent;
}
table.listbox th button.sort-button {
text-decoration: underline;
padding: 0px;
}
table.listbox th button.sort-button:hover{
color: #FFF;
}
/* in ERP5 mode no need to have a switch for not clicked sort button */
table.listbox th button.sort-button-asc,
table.listbox th button.sort-button-desc{
background: none;
}
table.listbox th img.sort-button-desc,
table.listbox th img.sort-button-asc{
width: 13px;
height: 13px;
margin:0;
padding:0;
}
table.listbox th img.sort-button-arrow{
width: 13px;
height: 13px;
margin:0;
padding:0;
}
table.listbox th img.sort-button-desc{
background: url('images/1toparrow.png') no-repeat scroll 100% 100%;
}
table.listbox th img.sort-button-asc{
background: url('images/1bottomarrow.png') no-repeat scroll 100% 100%;
}
table.listbox th img.sort-button-asc-not-selected{
background: url('images/1toparrow.png') no-repeat scroll 100% 100%;
}
table.listbox th img.sort-button-desc-not-selected{
background: url('images/1bottomarrow.png') no-repeat scroll 100% 100%;
}
table.listbox th img.sort-button-asc-selected{
background: url('images/1toparrow_red.png') no-repeat scroll 100% 100%;
}
table.listbox th img.sort-button-desc-selected{
background: url('images/1bottomarrow_red.png') no-repeat scroll 100% 100%;
}
/* listbox table in thumbnail style
In thumbnail style we usually have only one thumbnail colum which through CSS
we show as floating box table row.
*/
table.listbox-thumbnail tbody tr{
display:block;
min-width: 128px; /* nano image width. XXX: dynamically generate. */
min-height:128px; /* nano image height. XXX: dynamically generate. */
float:left;
margin: 10px;
}
table.listbox-thumbnail tr.DataA, table.listbox-thumbnail tr.DataB,
table.listbox-thumbnail tr.DataA:hover, table.listbox-thumbnail tr.DataB:hover{
background-color: transparent; /* in thumbnail mode we don't care for hoover */
}
table.listbox-thumbnail td{
border:none;
}
/* in search mode listbox may contain top/bottom quick search inputs */
div.search-text-listbox{
text-align: center;
float:left;
height:auto;
margin-bottom:0.5em;
margin-top:0.5em;
}
div.search-text-listbox input{
width: auto;
}
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="DTMLDocument" module="OFS.DTMLDocument"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>erp5_listbox.css</string> </value>
</item>
<item>
<key> <string>_local_properties</string> </key>
<value>
<tuple>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>main_border_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>context_bar_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>navigation_bar_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>font_family</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>font_size</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>font_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>dialog_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>dialog_border_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>link_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>link_hover_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>button_description_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>document_border_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>document_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_label_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_odd_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_even_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>tooltip_border_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>tooltip_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>tooltip_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_hover_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_stat_background_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>alternate_font_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>group_border_color</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
</tuple>
</value>
</item>
<item>
<key> <string>_vars</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>alternate_font_color</string> </key>
<value> <string>#596dab</string> </value>
</item>
<item>
<key> <string>background_color</string> </key>
<value> <string>#DAE6F6</string> </value>
</item>
<item>
<key> <string>button_description_color</string> </key>
<value> <string>#000</string> </value>
</item>
<item>
<key> <string>context_bar_background_color</string> </key>
<value> <string>#BDD0F0</string> </value>
</item>
<item>
<key> <string>dialog_background_color</string> </key>
<value> <string>#BDD0F0</string> </value>
</item>
<item>
<key> <string>dialog_border_color</string> </key>
<value> <string>#3D5474</string> </value>
</item>
<item>
<key> <string>document_background_color</string> </key>
<value> <string>#E3EAFA</string> </value>
</item>
<item>
<key> <string>document_border_color</string> </key>
<value> <string>#3D6474</string> </value>
</item>
<item>
<key> <string>font_color</string> </key>
<value> <string>#001730</string> </value>
</item>
<item>
<key> <string>font_family</string> </key>
<value> <string>Arial, Helvetica, sans-serif</string> </value>
</item>
<item>
<key> <string>font_size</string> </key>
<value> <string>12px</string> </value>
</item>
<item>
<key> <string>globals</string> </key>
<value>
<dictionary/>
</value>
</item>
<item>
<key> <string>group_border_color</string> </key>
<value> <string>#97B0D1</string> </value>
</item>
<item>
<key> <string>link_color</string> </key>
<value> <string>#002e3f</string> </value>
</item>
<item>
<key> <string>link_hover_color</string> </key>
<value> <string>#3D6474</string> </value>
</item>
<item>
<key> <string>listbox_even_background_color</string> </key>
<value> <string>#DAE6F6</string> </value>
</item>
<item>
<key> <string>listbox_hover_background_color</string> </key>
<value> <string>#BDD0F0</string> </value>
</item>
<item>
<key> <string>listbox_label_background_color</string> </key>
<value> <string>#C1DAEB</string> </value>
</item>
<item>
<key> <string>listbox_odd_background_color</string> </key>
<value> <string>#FFF</string> </value>
</item>
<item>
<key> <string>listbox_stat_background_color</string> </key>
<value> <string>#C1DAEB</string> </value>
</item>
<item>
<key> <string>main_border_color</string> </key>
<value> <string>#97B0D1</string> </value>
</item>
<item>
<key> <string>navigation_bar_background_color</string> </key>
<value> <string>#97B0D1</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>ERP5 Listbox CSS</string> </value>
</item>
<item>
<key> <string>tooltip_background_color</string> </key>
<value> <string>#FFD</string> </value>
</item>
<item>
<key> <string>tooltip_border_color</string> </key>
<value> <string>#000</string> </value>
</item>
<item>
<key> <string>tooltip_color</string> </key>
<value> <string>#000</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/*
Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
Yoshinori Okuji <yo@nexedi.com>
This program is Free Software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
Note: this JavaScript is used to pop up dialogs inside the same pages, instead of transiting into different pages.
It would not be difficult to extend this script to support more types of dialogs, but it is enabled only for
relation update dialogs at the moment. This is tested with erp5_xhtml_style.
If you want to use this feature, you need to load additional files in global_definitions:
dummy python:js_list.extend(('%s/jquery-ui-1.7.2/js/jquery-1.3.2.min.js' % portal_path, '%s/jquery-ui-1.7.2/js/jquery-ui-1.7.2.custom.min.js' % portal_path));
dummy python:css_list.append('%s/jquery-ui-1.7.2/css/erp5-theme/jquery-ui-1.7.2.custom.css' % portal_path);
dummy python:js_list.append('%s/erp5_popup.js' % portal_path);
The first two lines are required for loading jQuery and jQuery UI. The last line is for this file.
*/
$(function() {
$.erp5_update_js = function(box) {
$('.listbox-table-header-column-title', box).erp5_popover();
$('.erp5_popover', box).erp5_popover();
//$.addCallButtons(box);
};
$.fn.erp5_popover = function() {
this.each(function() {
if ( this.getAttribute('data-only-mobile') && ! /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) )
return;
var $this = $(this),
show_selector = $this.data('show'),
hide_selector = $this.data('hide'),
toggle_selector = $this.data('toggle'),
content_selector = $this.data('form');
if (toggle_selector) {
var toggle = $(toggle_selector, $this);
if ( toggle.length > 0 ) {
$this.unbind('click');
$this.bind('click', function () {
toggle.toggle();
});
}
}
if (show_selector) $(show_selector, $this).show();
if (hide_selector) $(hide_selector, $this).hide();
if (content_selector) {
var $content = $(content_selector, $this);
if ($content.length === 0) $content = $(content_selector);
if ($content) {
$content.hide();
$this.popover({
html: true,
delay: this.getAttribute('data-delay') || {show:500, hide: 1500},
content: function () {
return $content.html();
}
});
}
}
});
};
/*
* generic dialog to display another ERP5 page on top of the page.
*
* Parameters:
* 'dialog': object to pass as argument to $.ui.dialog on creation.
* erp5_dialog has generic defaults, and everything you will
* pass will override those defaults.
* 'load' :
* - url: url to load in the popup
* - params: parameters to give to the ajax call. can be omitted
* - method: default $.post, you can change it to $.get
*
* Example:
* $('<div id="jquery_erp5_dialog" />').appendTo('body').erp5_popup({
* dialog: {title: 'It works', },
* load: {url: '/erp5/some_module/someobject'},
* )};
*/
$.fn.erp5_popup = function(params) {
var modal = $(this);
$('.modal-title', modal).text(params.dialog.title);
var dialog = $('div.modal-body', modal);
modal.modal();
var load = function(url, query, ajax_method) {
if (!query) query = {};
if (!ajax_method) ajax_method = $.post;
ajax_method(url, query, function(data, textStatus, XMLHttpRequest) {
if (textStatus == 'success' || textStatus == 'notmodified') {
dialog.html($('<div />').append(data.replace(/<script(.|\s)*?\/script>/g, '')).find('form'));
// XXX Get rid of unneeded stuff in JavaScript for now.
$('#main_bar, main.bars, .breadcrumb, .logged_in_as', dialog).remove();
$('[id]', dialog).removeAttr('id');
// XXX Get rid of unneeded KM stuff in JavaScript for now.
$('.wrapper', dialog).remove();
// Insert the same buttons as at the bottom into near the top.
//$('div.bottom_actions', dialog).clone().insertAfter($('div.dialog_box', dialog)).css('margin-bottom', '1em');
click_func = function(event) {
event.preventDefault();
var self = $(this);
var form = $('form.main_form', dialog);
var params = {};
params[self.attr('name')] = self.attr('value');
load(form.attr('action'), $.param(params) + '&' + form.serialize());
};
$('button.sort-button, button.listbox-uncheck-all, button.listbox-check-all, .dialog_selector button, button.save', dialog).click(click_func);
// XXX Remove the hardcoded handler.
$('.dialog_selector select[onchange]', dialog).removeAttr('onchange');
$('.dialog_selector select', dialog).change(function(event) {
//event.preventDefault();
var button = $('button', this.parentNode);
var form = $('form.main_form', dialog);
var params = {};
params[button.attr('name')] = button.attr('value');
load(form.attr('action'), $.param(params) + '&' + form.serialize());
});
// listbox type in page number
$('input.listbox_set_page[onkeypress]', dialog).removeAttr('onkeypress');
$('input.listbox_set_page', dialog).keypress(function(event) {
if (event.keyCode == '13') {
event.preventDefault();
var self = $(this);
self.value = self.attr('defaultValue');
var form = $('form.main_form', dialog);
// XXX no other way but hardcoding the method name.
load('listbox_setPage', form.serialize());
}
});
// Listbox next & previous, last & first buttons
$.each([
'listbox_nextPage',
'listbox_previousPage',
'listbox_firstPage',
'listbox_lastPage'
], function(index, value) {
var button = $('button[type="submit"][name="' + value + ':method"]', dialog).first();
button.click(function(event) {
var form = $('form.main_form', dialog);
event.preventDefault();
load(value, form.serialize());
});
});
$('th.listbox-table-filter-cell input[type="text"]', dialog).removeAttr('onkeypress').keypress(function(event) {
if (event.keyCode == '13') {
event.preventDefault();
//var self = $(this);
//self.value = self.attr('defaultValue');
var form = $('form.main_form', dialog);
var first_submit_button = $($('input[type="submit"]', form)[0]);
var params = {};
params[first_submit_button.attr('name')] = first_submit_button.attr('value');
load(form.attr('action'), $.param(params) + '&' + form.serialize());
}
});
$('button.dialog_cancel_button', dialog).click(function(event) {
event.preventDefault();
modal.modal('hide');
});
$('button.dialog_update_button', dialog).click(click_func);
$.erp5_update_js(dialog);
}
});
};
load(params.load.url, params.load.params, params.load.method);
};
});
$(function() {
// XXX It is necessary to keep a reference to a dialog, because jQuery / jQuery UI does not keep information
// in elements of DOM unfortunately. This is not a big problem at the moment, because this implementation assumes
// that a dialog is modal.
// XXX Nicolas: see $.data() for storage in DOM. I dont think that it matters however. $("#jquery_erp5_dialog") should be enough
var dialog = $('div#erp5_popover');
// Those two definitions could be kept in a different file. The jQuery plugin providing an implementation is different than
// the places where we use this plugin
// Make the relation update dialogs as pop-ups.
$('button.editRelation').click(function(event) {
event.preventDefault();
var self = $(this);
var form = $('form#main_form');
var params = {};
params[self.attr('name')] = self.attr('value');
dialog.erp5_popup({
dialog: { title: $('label', this.parentNode.parentNode.parentNode.parentNode).text() },
load: {
url: form.attr('action'),
params: $.param(params) + '&' + form.serialize(),
}
});
});
// login logout links for KM
$('a[id="login-logout-link"]').click(function(event) {
if($('a[id="login-logout-link"]').attr('href').indexOf('login_form')==-1){
// we show popup only for login_form
return;
}
event.preventDefault();
dialog.erp5_popup({
dialog: { title: $('label', this.parentNode.parentNode).text() },
load: {
url: this.href,
method: $.get,
}
});
});
// Make the Add gadget and other dialog work as pop-ups.
$('a.erp5_popup, span.erp5_popup').click(function(event) {
event.preventDefault();
var url = this.href;
if (!url) url = $(this).data('href');
dialog.erp5_popup({
dialog: { title: this.title },
load: {
url: url,
method: $.get,
}
});
});
$('a.erp5_popover, span.erp5_popover').erp5_popover();
$.erp5_update_js();
if ( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
$('.selectpicker').selectpicker('mobile');
} else {
$('.selectpicker').selectpicker();
}
});
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59607994.57</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>erp5_popup.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>10502</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>erp5_popup.js</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -26,10 +26,9 @@ function selectTab(clicked_node) { ...@@ -26,10 +26,9 @@ function selectTab(clicked_node) {
node = tab.find("a").first(); node = tab.find("a").first();
class_name = tab.attr("class"); class_name = tab.attr("class");
if (clicked_node.attr("href") == node.attr("href")){ if (clicked_node.attr("href") == node.attr("href")){
if (class_name != "selected"){tab.attr("class", "selected");} if (class_name != "active"){tab.attr("class", "active");}
} } else {
else{ if (class_name != "" ){tab.attr("class", "");}
if (class_name != "non_selected"){tab.attr("class", "non_selected");}
} }
} }
); );
......
/*
Copyright (c) 2002-2007 Nexedi SARL and Contributors. All Rights Reserved.
This program is Free Software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
var fixLeftRightHeightAndFocusOnLoad = function () {
fixLeftRightHeightAndFocus(1);
};
$(document).ready(fixLeftRightHeightAndFocusOnLoad);
...@@ -3,7 +3,9 @@ ...@@ -3,7 +3,9 @@
xmlns:i18n="http://xml.zope.org/namespaces/i18n"> xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<tal:block metal:define-macro="field_render"> <tal:block metal:define-macro="field_render">
<tal:block tal:condition="python: field.meta_type != 'HiddenStringField'" <tal:block tal:condition="python: field.meta_type != 'HiddenStringField'"
tal:define="field_id field/id; tal:define="
field_id field/id;
field_editable field/editable;
value python: request.get(field_id, None); value python: request.get(field_id, None);
render_prefix render_prefix | nothing; render_prefix render_prefix | nothing;
key_prefix key_prefix | nothing; key_prefix key_prefix | nothing;
...@@ -11,28 +13,46 @@ ...@@ -11,28 +13,46 @@
field_has_error python: field_errors.has_key(field_id); field_has_error python: field_errors.has_key(field_id);
global form_id form_id | form/id | nothing; global form_id form_id | form/id | nothing;
field_description field/Field_getDescription; field_description field/Field_getDescription;
field_label_width python: gid in ['center'] and '2' or '3';
field_input_width python: gid in ['center'] and '9' or '9';
is_web_mode is_web_mode | nothing"> is_web_mode is_web_mode | nothing">
<div tal:define="html_render python: field.render_htmlgrid(value, request, render_prefix=render_prefix, key_prefix=key_prefix)" <div tal:define="html_render python: field.render_htmlgrid(value, request, render_prefix=render_prefix, key_prefix=key_prefix)"
tal:attributes="title field_description; tal:attributes="title field_description;
class python: ' '.join([x for x in ['field', field.is_required() and 'required' or None, field_has_error and 'error' or None, field.get_value('css_class') or None] if x is not None])" class python: ' '.join([x for x in ['field', field.is_required() and 'required' or None, field_has_error and 'error' or None, field.get_value('css_class') or None] if x is not None])"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<tal:block tal:repeat="html_tuple html_render">
<label>
<tal:block tal:content="structure python: html_tuple[0]"
i18n:translate="" i18n:domain="ui" />
<tal:block tal:condition="preferred_html_style_developper_mode"> <tal:block tal:condition="preferred_html_style_developper_mode">
<tal:block metal:use-macro="developper_shortcut_render/macros/field_developper" /> <tal:block metal:use-macro="developper_shortcut_render/macros/field_developper" />
</tal:block> </tal:block>
<tal:block tal:condition="preferred_html_style_translator_mode"> <tal:block tal:condition="preferred_html_style_translator_mode">
<tal:block metal:use-macro="developper_shortcut_render/macros/field_translator" /> <tal:block metal:use-macro="developper_shortcut_render/macros/field_translator" />
</tal:block> </tal:block>
<tal:block tal:repeat="html_tuple html_render">
<div class="form-group row"
tal:condition="python: field_editable or html_tuple[1]">
<tal:block tal:condition="python:(gid != 'bottom') and html_tuple[0]">
<label class="control-label col-md-2"
tal:attributes="class string:control-label col-md-${field_label_width};">
<tal:block tal:content="structure python: html_tuple[0]"
i18n:translate="" i18n:domain="ui" />
</label> </label>
<div class="input" tal:content="structure python: html_tuple[1]" /> <div class="input col-md-10"
tal:attributes="class string:input col-md-${field_input_width};"
tal:condition="field_editable"
tal:content="structure python: html_tuple[1]" />
<div class="col-md-10"
tal:attributes="class string:col-md-${field_input_width};"
tal:condition="not:field_editable">
<p class="form-control-static" tal:content="structure python: html_tuple[1]" />
</div>
</tal:block>
<tal:block tal:condition="python:gid == 'bottom' or not html_tuple[0]">
<div class="col-md-12" tal:content="structure python: html_tuple[1]" />
</tal:block>
<span tal:condition="field_has_error" <span tal:condition="field_has_error"
class="error" tal:attributes="class string:text-danger col-md-offset-${field_label_width}"
tal:content="python: field_errors[field_id].error_text" tal:content="python: field_errors[field_id].error_text"
i18n:translate="" i18n:domain="ui" /> i18n:translate="" i18n:domain="ui" />
<p class="clear" tal:condition="not:is_web_mode"></p> </div>
</tal:block> </tal:block>
</div> </div>
</tal:block> </tal:block>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>fonts</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59630928.63</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>fontawesome-webfont.eot</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>70807</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>fontawesome-webfont.eot</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59630961.62</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>fontawesome-webfont.svg</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/svg+xml</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>365616</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>fontawesome-webfont.svg</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59630974.97</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>fontawesome-webfont.ttf</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/x-font-ttf</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>142072</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>fontawesome-webfont.ttf</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59630991.07</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>fontawesome-webfont.woff</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/font-woff</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>83588</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>fontawesome-webfont.woff</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59631020.1</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>fontawesome-webfont.woff2</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>66624</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>fontawesome-webfont.woff2</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59627267.26</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>glyphicons-halflings-regular.eot</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>20127</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>glyphicons-halflings-regular.eot</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59627199.31</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>glyphicons-halflings-regular.svg</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/svg+xml</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>108738</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>glyphicons-halflings-regular.svg</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59627083.33</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>glyphicons-halflings-regular.ttf</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/x-font-ttf</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>45404</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>glyphicons-halflings-regular.ttf</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59627052.21</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>glyphicons-halflings-regular.woff</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/font-woff</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>23424</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>glyphicons-halflings-regular.woff</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59627072.34</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>glyphicons-halflings-regular.woff2</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>18028</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>glyphicons-halflings-regular.woff2</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -40,8 +40,9 @@ ...@@ -40,8 +40,9 @@
<div class="dialog_box"> <div class="dialog_box">
<div tal:condition="python: len(dialog_actions) > 1" <div tal:condition="python: len(dialog_actions) > 1"
class="dialog_selector"> class="dialog_selector row">
<label for="dialog_selector" <label for="dialog_selector"
class="control-label col-md-4"
tal:content="python: { 'object_exchange': 'Select Exchange' tal:content="python: { 'object_exchange': 'Select Exchange'
, 'object_print' : 'Select Print' , 'object_print' : 'Select Print'
, 'object_search' : 'Select Search' , 'object_search' : 'Select Search'
...@@ -49,7 +50,8 @@ ...@@ -49,7 +50,8 @@
, 'object_fast_input' : 'Select Fast Input' , 'object_fast_input' : 'Select Fast Input'
}.get(dialog_category, 'Select')" }.get(dialog_category, 'Select')"
i18n:translate="" i18n:domain="ui"></label> i18n:translate="" i18n:domain="ui"></label>
<select name="select_dialog" id="dialog_selector" <div class="input input-group col-md-6">
<select name="select_dialog" id="dialog_selector" class="form-control"
onchange="submitAction(this.form,'Base_doDialog')"> onchange="submitAction(this.form,'Base_doDialog')">
<tal:block tal:repeat="action dialog_actions"> <tal:block tal:repeat="action dialog_actions">
...@@ -59,20 +61,25 @@ ...@@ -59,20 +61,25 @@
i18n:translate="" i18n:domain="ui"></option> i18n:translate="" i18n:domain="ui"></option>
</tal:block> </tal:block>
</select> </select>
<button type="submit" name="Base_doDialog:method"> <div class="input-group-btn">
<span class="image"></span> <button type="submit" name="Base_doDialog:method"
class="btn btn-default">
<i class="fa fa-repeat"></i>
<span class="description" <span class="description"
i18n:translate="" i18n:domain="ui">Go</span> i18n:translate="" i18n:domain="ui">Go</span>
</button> </button>
</div> </div>
</div>
</div>
<tal:block metal:define-macro="content"> <tal:block metal:define-macro="content">
<div class="content" <div class="content row"
tal:define="group_list form/Form_getGroupTitleAndId"> tal:define="group_list form/Form_getGroupTitleAndId">
<tal:block tal:repeat="group group_list"> <tal:block tal:repeat="group group_list">
<tal:block tal:define="gid group/gid"> <tal:block tal:define="gid group/gid;
gid_class python: gid in ['left', 'right'] and 'col-md-6 pull-' + gid or 'col-md-12 pull-left';">
<fieldset tal:condition="python: 'hidden' not in gid and 'bottom' not in gid and 'head' not in gid" <fieldset tal:condition="python: 'hidden' not in gid and 'bottom' not in gid and 'head' not in gid"
tal:attributes="class gid;"> tal:attributes="class string:${gid} ${gid_class};">
<legend tal:content="group/gtitle" class="group_title" /> <legend tal:content="group/gtitle" class="group_title" />
<tal:block tal:repeat="field python: form.get_fields_in_group(group['goid'])"> <tal:block tal:repeat="field python: form.get_fields_in_group(group['goid'])">
<tal:block metal:use-macro="field_render" /> <tal:block metal:use-macro="field_render" />
...@@ -80,7 +87,6 @@ ...@@ -80,7 +87,6 @@
</fieldset> </fieldset>
</tal:block> </tal:block>
</tal:block> </tal:block>
<p class="clear"></p>
</div> </div>
</tal:block> </tal:block>
...@@ -93,7 +99,7 @@ ...@@ -93,7 +99,7 @@
<tal:block tal:define="dummy python: request.set('here', here); <tal:block tal:define="dummy python: request.set('here', here);
bottom_group python: form.get_fields_in_group('bottom')"> bottom_group python: form.get_fields_in_group('bottom')">
<div tal:condition="python: len(bottom_group) > 0" <div tal:condition="python: len(bottom_group) > 0"
class="bottom"> class="bottom row">
<tal:block tal:repeat="field bottom_group"> <tal:block tal:repeat="field bottom_group">
<tal:block tal:condition="preferred_html_style_developper_mode"> <tal:block tal:condition="preferred_html_style_developper_mode">
<tal:block metal:use-macro="developper_shortcut_render/macros/field_developper" /> <tal:block metal:use-macro="developper_shortcut_render/macros/field_developper" />
......
...@@ -33,18 +33,29 @@ It is possible to specify a group id and a group title by naming a group followi ...@@ -33,18 +33,29 @@ It is possible to specify a group id and a group title by naming a group followi
<tal:block metal:use-macro="developper_shortcut_render/macros/form" /> <tal:block metal:use-macro="developper_shortcut_render/macros/form" />
</tal:block> </tal:block>
<tal:block tal:replace="structure string:<div class='row'>"/>
<tal:block tal:repeat="group group_list"> <tal:block tal:repeat="group group_list">
<tal:block tal:define="gid group/gid;"> <tal:block tal:define="gid group/gid;
<fieldset tal:condition="python: gid.find('hidden') &lt; 0" is_gid_left_or_right python: gid in ['left', 'right'];
tal:attributes="class python:gid + test(request.get('editable_mode', 0), ' editable', ' viewable');"> gid_class python: ( ' col-md-6' ) if is_gid_left_or_right else ' col-md-12';
gid_class python: gid_class + ' pull-right' if gid == 'right' else gid_class;
isHidden python: not gid.find('hidden');
">
<tal:block tal:condition="not:isHidden">
<tal:block tal:condition="not:is_gid_left_or_right">
<tal:block tal:replace="structure string:</div>"/>
<tal:block tal:replace="structure string:<div class='row'>"/>
</tal:block>
<div tal:attributes="class python:gid + gid_class + ( ' editable' if request.get('editable_mode', 0) else ' viewable');">
<legend i18n:translate="" i18n:domain="ui" tal:condition="group/gtitle" tal:content="group/gtitle" class="group_title"></legend> <legend i18n:translate="" i18n:domain="ui" tal:condition="group/gtitle" tal:content="group/gtitle" class="group_title"></legend>
<tal:block tal:repeat="field python: form.get_fields_in_group(group['goid'])"> <tal:block tal:repeat="field python: form.get_fields_in_group(group['goid'])">
<tal:block metal:use-macro="field_render" /> <tal:block metal:use-macro="field_render" />
</tal:block> </tal:block>
</fieldset> </div>
</tal:block>
</tal:block> </tal:block>
</tal:block> </tal:block>
<p class="clear"></p> <tal:block tal:replace="structure string:</div>"/>
</tal:block> </tal:block>
</tal:block> </tal:block>
</tal:block> </tal:block>
\ No newline at end of file
...@@ -19,11 +19,12 @@ ...@@ -19,11 +19,12 @@
dummy python: request.RESPONSE.setHeader('Content-Type', 'text/html;; charset=utf-8'); dummy python: request.RESPONSE.setHeader('Content-Type', 'text/html;; charset=utf-8');
dummy python: request.set('here', here); dummy python: request.set('here', here);
global css_list css_list | python:[]; global css_list css_list | python:[];
dummy python:css_list.extend(['%s/%s' % (portal_path, x) for x in portal.ERP5Site_getCssRelativeUrlList()]); global css_list python: ['%s/%s' % (portal_path, x) for x in ('css/bootstrap.min.css', 'css/bootstrap-select.min.css', 'css/font-awesome.min.css')] + css_list;
css_list_template css_list_template | python:['%s/erp5.css' % (portal_path,), global css_list python: ['%s/%s' % (portal_path, x) for x in portal.ERP5Site_getCssRelativeUrlList()] + css_list;
'%s/erp5_listbox.css' % (portal_path, ),]; css_list_template css_list_template | python:['%s/erp5.css'%portal_path];
dummy python:css_list.extend(css_list_template); dummy python:css_list.extend(css_list_template);
global js_list js_list | python:['%s/erp5_xhtml_appearance.js' % portal_path]; global js_list js_list | python:[];
global js_list python: js_list + ['%s/%s' % (portal_path, x) for x in ('js/bootstrap-select.min.js', 'erp5_popup.js', 'js/bootstrap.min.js')];
global js_list python: ['%s/%s' % (portal_path, x) for x in portal.ERP5Site_getJavaScriptRelativeUrlList()] + js_list; global js_list python: ['%s/%s' % (portal_path, x) for x in portal.ERP5Site_getJavaScriptRelativeUrlList()] + js_list;
global http_parameter_list python: portal.ERP5Site_filterParameterList(request.form); global http_parameter_list python: portal.ERP5Site_filterParameterList(request.form);
dummy python: http_parameter_list.update(local_parameter_list); dummy python: http_parameter_list.update(local_parameter_list);
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>js</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/*! X-editable - v1.5.1
* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery
* http://github.com/vitalets/x-editable
* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */
!function(a){"use strict";var b=function(b,c){this.options=a.extend({},a.fn.editableform.defaults,c),this.$div=a(b),this.options.scope||(this.options.scope=this)};b.prototype={constructor:b,initInput:function(){this.input=this.options.input,this.value=this.input.str2value(this.options.value),this.input.prerender()},initTemplate:function(){this.$form=a(a.fn.editableform.template)},initButtons:function(){var b=this.$form.find(".editable-buttons");b.append(a.fn.editableform.buttons),"bottom"===this.options.showbuttons&&b.addClass("editable-buttons-bottom")},render:function(){this.$loading=a(a.fn.editableform.loading),this.$div.empty().append(this.$loading),this.initTemplate(),this.options.showbuttons?this.initButtons():this.$form.find(".editable-buttons").remove(),this.showLoading(),this.isSaving=!1,this.$div.triggerHandler("rendering"),this.initInput(),this.$form.find("div.editable-input").append(this.input.$tpl),this.$div.append(this.$form),a.when(this.input.render()).then(a.proxy(function(){if(this.options.showbuttons||this.input.autosubmit(),this.$form.find(".editable-cancel").click(a.proxy(this.cancel,this)),this.input.error)this.error(this.input.error),this.$form.find(".editable-submit").attr("disabled",!0),this.input.$input.attr("disabled",!0),this.$form.submit(function(a){a.preventDefault()});else{this.error(!1),this.input.$input.removeAttr("disabled"),this.$form.find(".editable-submit").removeAttr("disabled");var b=null===this.value||void 0===this.value||""===this.value?this.options.defaultValue:this.value;this.input.value2input(b),this.$form.submit(a.proxy(this.submit,this))}this.$div.triggerHandler("rendered"),this.showForm(),this.input.postrender&&this.input.postrender()},this))},cancel:function(){this.$div.triggerHandler("cancel")},showLoading:function(){var a,b;this.$form?(a=this.$form.outerWidth(),b=this.$form.outerHeight(),a&&this.$loading.width(a),b&&this.$loading.height(b),this.$form.hide()):(a=this.$loading.parent().width(),a&&this.$loading.width(a)),this.$loading.show()},showForm:function(a){this.$loading.hide(),this.$form.show(),a!==!1&&this.input.activate(),this.$div.triggerHandler("show")},error:function(b){var c,d=this.$form.find(".control-group"),e=this.$form.find(".editable-error-block");if(b===!1)d.removeClass(a.fn.editableform.errorGroupClass),e.removeClass(a.fn.editableform.errorBlockClass).empty().hide();else{if(b){c=(""+b).split("\n");for(var f=0;f<c.length;f++)c[f]=a("<div>").text(c[f]).html();b=c.join("<br>")}d.addClass(a.fn.editableform.errorGroupClass),e.addClass(a.fn.editableform.errorBlockClass).html(b).show()}},submit:function(b){b.stopPropagation(),b.preventDefault();var c=this.input.input2value(),d=this.validate(c);if("object"===a.type(d)&&void 0!==d.newValue){if(c=d.newValue,this.input.value2input(c),"string"==typeof d.msg)return this.error(d.msg),this.showForm(),void 0}else if(d)return this.error(d),this.showForm(),void 0;if(!this.options.savenochange&&this.input.value2str(c)==this.input.value2str(this.value))return this.$div.triggerHandler("nochange"),void 0;var e=this.input.value2submit(c);this.isSaving=!0,a.when(this.save(e)).done(a.proxy(function(a){this.isSaving=!1;var b="function"==typeof this.options.success?this.options.success.call(this.options.scope,a,c):null;return b===!1?(this.error(!1),this.showForm(!1),void 0):"string"==typeof b?(this.error(b),this.showForm(),void 0):(b&&"object"==typeof b&&b.hasOwnProperty("newValue")&&(c=b.newValue),this.error(!1),this.value=c,this.$div.triggerHandler("save",{newValue:c,submitValue:e,response:a}),void 0)},this)).fail(a.proxy(function(a){this.isSaving=!1;var b;b="function"==typeof this.options.error?this.options.error.call(this.options.scope,a,c):"string"==typeof a?a:a.responseText||a.statusText||"Unknown error!",this.error(b),this.showForm()},this))},save:function(b){this.options.pk=a.fn.editableutils.tryParseJson(this.options.pk,!0);var c,d="function"==typeof this.options.pk?this.options.pk.call(this.options.scope):this.options.pk,e=!!("function"==typeof this.options.url||this.options.url&&("always"===this.options.send||"auto"===this.options.send&&null!==d&&void 0!==d));return e?(this.showLoading(),c={name:this.options.name||"",value:b,pk:d},"function"==typeof this.options.params?c=this.options.params.call(this.options.scope,c):(this.options.params=a.fn.editableutils.tryParseJson(this.options.params,!0),a.extend(c,this.options.params)),"function"==typeof this.options.url?this.options.url.call(this.options.scope,c):a.ajax(a.extend({url:this.options.url,data:c,type:"POST"},this.options.ajaxOptions))):void 0},validate:function(a){return void 0===a&&(a=this.value),"function"==typeof this.options.validate?this.options.validate.call(this.options.scope,a):void 0},option:function(a,b){a in this.options&&(this.options[a]=b),"value"===a&&this.setValue(b)},setValue:function(a,b){this.value=b?this.input.str2value(a):a,this.$form&&this.$form.is(":visible")&&this.input.value2input(this.value)}},a.fn.editableform=function(c){var d=arguments;return this.each(function(){var e=a(this),f=e.data("editableform"),g="object"==typeof c&&c;f||e.data("editableform",f=new b(this,g)),"string"==typeof c&&f[c].apply(f,Array.prototype.slice.call(d,1))})},a.fn.editableform.Constructor=b,a.fn.editableform.defaults={type:"text",url:null,params:null,name:null,pk:null,value:null,defaultValue:null,send:"auto",validate:null,success:null,error:null,ajaxOptions:null,showbuttons:!0,scope:null,savenochange:!1},a.fn.editableform.template='<form class="form-inline editableform"><div class="control-group"><div><div class="editable-input"></div><div class="editable-buttons"></div></div><div class="editable-error-block"></div></div></form>',a.fn.editableform.loading='<div class="editableform-loading"></div>',a.fn.editableform.buttons='<button type="submit" class="editable-submit">ok</button><button type="button" class="editable-cancel">cancel</button>',a.fn.editableform.errorGroupClass=null,a.fn.editableform.errorBlockClass="editable-error",a.fn.editableform.engine="jquery"}(window.jQuery),function(a){"use strict";a.fn.editableutils={inherit:function(a,b){var c=function(){};c.prototype=b.prototype,a.prototype=new c,a.prototype.constructor=a,a.superclass=b.prototype},setCursorPosition:function(a,b){if(a.setSelectionRange)a.setSelectionRange(b,b);else if(a.createTextRange){var c=a.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",b),c.select()}},tryParseJson:function(a,b){if("string"==typeof a&&a.length&&a.match(/^[\{\[].*[\}\]]$/))if(b)try{a=new Function("return "+a)()}catch(c){}finally{return a}else a=new Function("return "+a)();return a},sliceObj:function(b,c,d){var e,f,g={};if(!a.isArray(c)||!c.length)return g;for(var h=0;h<c.length;h++)e=c[h],b.hasOwnProperty(e)&&(g[e]=b[e]),d!==!0&&(f=e.toLowerCase(),b.hasOwnProperty(f)&&(g[e]=b[f]));return g},getConfigData:function(b){var c={};return a.each(b.data(),function(a,b){("object"!=typeof b||b&&"object"==typeof b&&(b.constructor===Object||b.constructor===Array))&&(c[a]=b)}),c},objectKeys:function(a){if(Object.keys)return Object.keys(a);if(a!==Object(a))throw new TypeError("Object.keys called on a non-object");var b,c=[];for(b in a)Object.prototype.hasOwnProperty.call(a,b)&&c.push(b);return c},escape:function(b){return a("<div>").text(b).html()},itemsByValue:function(b,c,d){if(!c||null===b)return[];if("function"!=typeof d){var e=d||"value";d=function(a){return a[e]}}var f=a.isArray(b),g=[],h=this;return a.each(c,function(c,e){if(e.children)g=g.concat(h.itemsByValue(b,e.children,d));else if(f)a.grep(b,function(a){return a==(e&&"object"==typeof e?d(e):e)}).length&&g.push(e);else{var i=e&&"object"==typeof e?d(e):e;b==i&&g.push(e)}}),g},createInput:function(b){var c,d,e,f=b.type;return"date"===f&&("inline"===b.mode?a.fn.editabletypes.datefield?f="datefield":a.fn.editabletypes.dateuifield&&(f="dateuifield"):a.fn.editabletypes.date?f="date":a.fn.editabletypes.dateui&&(f="dateui"),"date"!==f||a.fn.editabletypes.date||(f="combodate")),"datetime"===f&&"inline"===b.mode&&(f="datetimefield"),"wysihtml5"!==f||a.fn.editabletypes[f]||(f="textarea"),"function"==typeof a.fn.editabletypes[f]?(c=a.fn.editabletypes[f],d=this.sliceObj(b,this.objectKeys(c.defaults)),e=new c(d)):(a.error("Unknown type: "+f),!1)},supportsTransitions:function(){var a=document.body||document.documentElement,b=a.style,c="transition",d=["Moz","Webkit","Khtml","O","ms"];if("string"==typeof b[c])return!0;c=c.charAt(0).toUpperCase()+c.substr(1);for(var e=0;e<d.length;e++)if("string"==typeof b[d[e]+c])return!0;return!1}}}(window.jQuery),function(a){"use strict";var b=function(a,b){this.init(a,b)},c=function(a,b){this.init(a,b)};b.prototype={containerName:null,containerDataName:null,innerCss:null,containerClass:"editable-container editable-popup",defaults:{},init:function(c,d){this.$element=a(c),this.options=a.extend({},a.fn.editableContainer.defaults,d),this.splitOptions(),this.formOptions.scope=this.$element[0],this.initContainer(),this.delayedHide=!1,this.$element.on("destroyed",a.proxy(function(){this.destroy()},this)),a(document).data("editable-handlers-attached")||(a(document).on("keyup.editable",function(b){27===b.which&&a(".editable-open").editableContainer("hide")}),a(document).on("click.editable",function(c){var d,e=a(c.target),f=[".editable-container",".ui-datepicker-header",".datepicker",".modal-backdrop",".bootstrap-wysihtml5-insert-image-modal",".bootstrap-wysihtml5-insert-link-modal"];if(a.contains(document.documentElement,c.target)&&!e.is(document)){for(d=0;d<f.length;d++)if(e.is(f[d])||e.parents(f[d]).length)return;b.prototype.closeOthers(c.target)}}),a(document).data("editable-handlers-attached",!0))},splitOptions:function(){if(this.containerOptions={},this.formOptions={},!a.fn[this.containerName])throw new Error(this.containerName+" not found. Have you included corresponding js file?");for(var b in this.options)b in this.defaults?this.containerOptions[b]=this.options[b]:this.formOptions[b]=this.options[b]},tip:function(){return this.container()?this.container().$tip:null},container:function(){var a;return this.containerDataName&&(a=this.$element.data(this.containerDataName))?a:a=this.$element.data(this.containerName)},call:function(){this.$element[this.containerName].apply(this.$element,arguments)},initContainer:function(){this.call(this.containerOptions)},renderForm:function(){this.$form.editableform(this.formOptions).on({save:a.proxy(this.save,this),nochange:a.proxy(function(){this.hide("nochange")},this),cancel:a.proxy(function(){this.hide("cancel")},this),show:a.proxy(function(){this.delayedHide?(this.hide(this.delayedHide.reason),this.delayedHide=!1):this.setPosition()},this),rendering:a.proxy(this.setPosition,this),resize:a.proxy(this.setPosition,this),rendered:a.proxy(function(){this.$element.triggerHandler("shown",a(this.options.scope).data("editable"))},this)}).editableform("render")},show:function(b){this.$element.addClass("editable-open"),b!==!1&&this.closeOthers(this.$element[0]),this.innerShow(),this.tip().addClass(this.containerClass),this.$form,this.$form=a("<div>"),this.tip().is(this.innerCss)?this.tip().append(this.$form):this.tip().find(this.innerCss).append(this.$form),this.renderForm()},hide:function(a){if(this.tip()&&this.tip().is(":visible")&&this.$element.hasClass("editable-open")){if(this.$form.data("editableform").isSaving)return this.delayedHide={reason:a},void 0;this.delayedHide=!1,this.$element.removeClass("editable-open"),this.innerHide(),this.$element.triggerHandler("hidden",a||"manual")}},innerShow:function(){},innerHide:function(){},toggle:function(a){this.container()&&this.tip()&&this.tip().is(":visible")?this.hide():this.show(a)},setPosition:function(){},save:function(a,b){this.$element.triggerHandler("save",b),this.hide("save")},option:function(a,b){this.options[a]=b,a in this.containerOptions?(this.containerOptions[a]=b,this.setContainerOption(a,b)):(this.formOptions[a]=b,this.$form&&this.$form.editableform("option",a,b))},setContainerOption:function(a,b){this.call("option",a,b)},destroy:function(){this.hide(),this.innerDestroy(),this.$element.off("destroyed"),this.$element.removeData("editableContainer")},innerDestroy:function(){},closeOthers:function(b){a(".editable-open").each(function(c,d){if(d!==b&&!a(d).find(b).length){var e=a(d),f=e.data("editableContainer");f&&("cancel"===f.options.onblur?e.data("editableContainer").hide("onblur"):"submit"===f.options.onblur&&e.data("editableContainer").tip().find("form").submit())}})},activate:function(){this.tip&&this.tip().is(":visible")&&this.$form&&this.$form.data("editableform").input.activate()}},a.fn.editableContainer=function(d){var e=arguments;return this.each(function(){var f=a(this),g="editableContainer",h=f.data(g),i="object"==typeof d&&d,j="inline"===i.mode?c:b;h||f.data(g,h=new j(this,i)),"string"==typeof d&&h[d].apply(h,Array.prototype.slice.call(e,1))})},a.fn.editableContainer.Popup=b,a.fn.editableContainer.Inline=c,a.fn.editableContainer.defaults={value:null,placement:"top",autohide:!0,onblur:"cancel",anim:!1,mode:"popup"},jQuery.event.special.destroyed={remove:function(a){a.handler&&a.handler()}}}(window.jQuery),function(a){"use strict";a.extend(a.fn.editableContainer.Inline.prototype,a.fn.editableContainer.Popup.prototype,{containerName:"editableform",innerCss:".editable-inline",containerClass:"editable-container editable-inline",initContainer:function(){this.$tip=a("<span></span>"),this.options.anim||(this.options.anim=0)},splitOptions:function(){this.containerOptions={},this.formOptions=this.options},tip:function(){return this.$tip},innerShow:function(){this.$element.hide(),this.tip().insertAfter(this.$element).show()},innerHide:function(){this.$tip.hide(this.options.anim,a.proxy(function(){this.$element.show(),this.innerDestroy()},this))},innerDestroy:function(){this.tip()&&this.tip().empty().remove()}})}(window.jQuery),function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.editable.defaults,c,a.fn.editableutils.getConfigData(this.$element)),this.options.selector?this.initLive():this.init(),this.options.highlight&&!a.fn.editableutils.supportsTransitions()&&(this.options.highlight=!1)};b.prototype={constructor:b,init:function(){var b,c=!1;if(this.options.name=this.options.name||this.$element.attr("id"),this.options.scope=this.$element[0],this.input=a.fn.editableutils.createInput(this.options),this.input){switch(void 0===this.options.value||null===this.options.value?(this.value=this.input.html2value(a.trim(this.$element.html())),c=!0):(this.options.value=a.fn.editableutils.tryParseJson(this.options.value,!0),this.value="string"==typeof this.options.value?this.input.str2value(this.options.value):this.options.value),this.$element.addClass("editable"),"textarea"===this.input.type&&this.$element.addClass("editable-pre-wrapped"),"manual"!==this.options.toggle?(this.$element.addClass("editable-click"),this.$element.on(this.options.toggle+".editable",a.proxy(function(a){if(this.options.disabled||a.preventDefault(),"mouseenter"===this.options.toggle)this.show();else{var b="click"!==this.options.toggle;this.toggle(b)}},this))):this.$element.attr("tabindex",-1),"function"==typeof this.options.display&&(this.options.autotext="always"),this.options.autotext){case"always":b=!0;break;case"auto":b=!a.trim(this.$element.text()).length&&null!==this.value&&void 0!==this.value&&!c;break;default:b=!1}a.when(b?this.render():!0).then(a.proxy(function(){this.options.disabled?this.disable():this.enable(),this.$element.triggerHandler("init",this)},this))}},initLive:function(){var b=this.options.selector;this.options.selector=!1,this.options.autotext="never",this.$element.on(this.options.toggle+".editable",b,a.proxy(function(b){var c=a(b.target);c.data("editable")||(c.hasClass(this.options.emptyclass)&&c.empty(),c.editable(this.options).trigger(b))},this))},render:function(a){return this.options.display!==!1?this.input.value2htmlFinal?this.input.value2html(this.value,this.$element[0],this.options.display,a):"function"==typeof this.options.display?this.options.display.call(this.$element[0],this.value,a):this.input.value2html(this.value,this.$element[0]):void 0},enable:function(){this.options.disabled=!1,this.$element.removeClass("editable-disabled"),this.handleEmpty(this.isEmpty),"manual"!==this.options.toggle&&"-1"===this.$element.attr("tabindex")&&this.$element.removeAttr("tabindex")},disable:function(){this.options.disabled=!0,this.hide(),this.$element.addClass("editable-disabled"),this.handleEmpty(this.isEmpty),this.$element.attr("tabindex",-1)},toggleDisabled:function(){this.options.disabled?this.enable():this.disable()},option:function(b,c){return b&&"object"==typeof b?(a.each(b,a.proxy(function(b,c){this.option(a.trim(b),c)},this)),void 0):(this.options[b]=c,"disabled"===b?c?this.disable():this.enable():("value"===b&&this.setValue(c),this.container&&this.container.option(b,c),this.input.option&&this.input.option(b,c),void 0))},handleEmpty:function(b){this.options.display!==!1&&(this.isEmpty=void 0!==b?b:"function"==typeof this.input.isEmpty?this.input.isEmpty(this.$element):""===a.trim(this.$element.html()),this.options.disabled?this.isEmpty&&(this.$element.empty(),this.options.emptyclass&&this.$element.removeClass(this.options.emptyclass)):this.isEmpty?(this.$element.html(this.options.emptytext),this.options.emptyclass&&this.$element.addClass(this.options.emptyclass)):this.options.emptyclass&&this.$element.removeClass(this.options.emptyclass))},show:function(b){if(!this.options.disabled){if(this.container){if(this.container.tip().is(":visible"))return}else{var c=a.extend({},this.options,{value:this.value,input:this.input});this.$element.editableContainer(c),this.$element.on("save.internal",a.proxy(this.save,this)),this.container=this.$element.data("editableContainer")}this.container.show(b)}},hide:function(){this.container&&this.container.hide()},toggle:function(a){this.container&&this.container.tip().is(":visible")?this.hide():this.show(a)},save:function(a,b){if(this.options.unsavedclass){var c=!1;c=c||"function"==typeof this.options.url,c=c||this.options.display===!1,c=c||void 0!==b.response,c=c||this.options.savenochange&&this.input.value2str(this.value)!==this.input.value2str(b.newValue),c?this.$element.removeClass(this.options.unsavedclass):this.$element.addClass(this.options.unsavedclass)}if(this.options.highlight){var d=this.$element,e=d.css("background-color");d.css("background-color",this.options.highlight),setTimeout(function(){"transparent"===e&&(e=""),d.css("background-color",e),d.addClass("editable-bg-transition"),setTimeout(function(){d.removeClass("editable-bg-transition")},1700)},10)}this.setValue(b.newValue,!1,b.response)},validate:function(){return"function"==typeof this.options.validate?this.options.validate.call(this,this.value):void 0},setValue:function(b,c,d){this.value=c?this.input.str2value(b):b,this.container&&this.container.option("value",this.value),a.when(this.render(d)).then(a.proxy(function(){this.handleEmpty()},this))},activate:function(){this.container&&this.container.activate()},destroy:function(){this.disable(),this.container&&this.container.destroy(),this.input.destroy(),"manual"!==this.options.toggle&&(this.$element.removeClass("editable-click"),this.$element.off(this.options.toggle+".editable")),this.$element.off("save.internal"),this.$element.removeClass("editable editable-open editable-disabled"),this.$element.removeData("editable")}},a.fn.editable=function(c){var d={},e=arguments,f="editable";switch(c){case"validate":return this.each(function(){var b,c=a(this),e=c.data(f);e&&(b=e.validate())&&(d[e.options.name]=b)}),d;case"getValue":return 2===arguments.length&&arguments[1]===!0?d=this.eq(0).data(f).value:this.each(function(){var b=a(this),c=b.data(f);c&&void 0!==c.value&&null!==c.value&&(d[c.options.name]=c.input.value2submit(c.value))}),d;case"submit":var g=arguments[1]||{},h=this,i=this.editable("validate");if(a.isEmptyObject(i)){var j={};if(1===h.length){var k=h.data("editable"),l={name:k.options.name||"",value:k.input.value2submit(k.value),pk:"function"==typeof k.options.pk?k.options.pk.call(k.options.scope):k.options.pk};"function"==typeof k.options.params?l=k.options.params.call(k.options.scope,l):(k.options.params=a.fn.editableutils.tryParseJson(k.options.params,!0),a.extend(l,k.options.params)),j={url:k.options.url,data:l,type:"POST"},g.success=g.success||k.options.success,g.error=g.error||k.options.error}else{var m=this.editable("getValue");j={url:g.url,data:m,type:"POST"}}j.success="function"==typeof g.success?function(a){g.success.call(h,a,g)}:a.noop,j.error="function"==typeof g.error?function(){g.error.apply(h,arguments)}:a.noop,g.ajaxOptions&&a.extend(j,g.ajaxOptions),g.data&&a.extend(j.data,g.data),a.ajax(j)}else"function"==typeof g.error&&g.error.call(h,i);return this}return this.each(function(){var d=a(this),g=d.data(f),h="object"==typeof c&&c;return h&&h.selector?(g=new b(this,h),void 0):(g||d.data(f,g=new b(this,h)),"string"==typeof c&&g[c].apply(g,Array.prototype.slice.call(e,1)),void 0)})},a.fn.editable.defaults={type:"text",disabled:!1,toggle:"click",emptytext:"Empty",autotext:"auto",value:null,display:null,emptyclass:"editable-empty",unsavedclass:"editable-unsaved",selector:null,highlight:"#FFFF80"}}(window.jQuery),function(a){"use strict";a.fn.editabletypes={};var b=function(){};b.prototype={init:function(b,c,d){this.type=b,this.options=a.extend({},d,c)},prerender:function(){this.$tpl=a(this.options.tpl),this.$input=this.$tpl,this.$clear=null,this.error=null},render:function(){},value2html:function(b,c){a(c)[this.options.escape?"text":"html"](a.trim(b))},html2value:function(b){return a("<div>").html(b).text()},value2str:function(a){return a},str2value:function(a){return a},value2submit:function(a){return a},value2input:function(a){this.$input.val(a)},input2value:function(){return this.$input.val()},activate:function(){this.$input.is(":visible")&&this.$input.focus()},clear:function(){this.$input.val(null)},escape:function(b){return a("<div>").text(b).html()},autosubmit:function(){},destroy:function(){},setClass:function(){this.options.inputclass&&this.$input.addClass(this.options.inputclass)},setAttr:function(a){void 0!==this.options[a]&&null!==this.options[a]&&this.$input.attr(a,this.options[a])},option:function(a,b){this.options[a]=b}},b.defaults={tpl:"",inputclass:null,escape:!0,scope:null,showbuttons:!0},a.extend(a.fn.editabletypes,{abstractinput:b})}(window.jQuery),function(a){"use strict";var b=function(){};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){var b=a.Deferred();return this.error=null,this.onSourceReady(function(){this.renderList(),b.resolve()},function(){this.error=this.options.sourceError,b.resolve()}),b.promise()},html2value:function(){return null},value2html:function(b,c,d,e){var f=a.Deferred(),g=function(){"function"==typeof d?d.call(c,b,this.sourceData,e):this.value2htmlFinal(b,c),f.resolve()};return null===b?g.call(this):this.onSourceReady(g,function(){f.resolve()}),f.promise()},onSourceReady:function(b,c){var d;if(a.isFunction(this.options.source)?(d=this.options.source.call(this.options.scope),this.sourceData=null):d=this.options.source,this.options.sourceCache&&a.isArray(this.sourceData))return b.call(this),void 0;try{d=a.fn.editableutils.tryParseJson(d,!1)}catch(e){return c.call(this),void 0}if("string"==typeof d){if(this.options.sourceCache){var f,g=d;if(a(document).data(g)||a(document).data(g,{}),f=a(document).data(g),f.loading===!1&&f.sourceData)return this.sourceData=f.sourceData,this.doPrepend(),b.call(this),void 0;if(f.loading===!0)return f.callbacks.push(a.proxy(function(){this.sourceData=f.sourceData,this.doPrepend(),b.call(this)},this)),f.err_callbacks.push(a.proxy(c,this)),void 0;f.loading=!0,f.callbacks=[],f.err_callbacks=[]}var h=a.extend({url:d,type:"get",cache:!1,dataType:"json",success:a.proxy(function(d){f&&(f.loading=!1),this.sourceData=this.makeArray(d),a.isArray(this.sourceData)?(f&&(f.sourceData=this.sourceData,a.each(f.callbacks,function(){this.call()})),this.doPrepend(),b.call(this)):(c.call(this),f&&a.each(f.err_callbacks,function(){this.call()}))},this),error:a.proxy(function(){c.call(this),f&&(f.loading=!1,a.each(f.err_callbacks,function(){this.call()}))},this)},this.options.sourceOptions);a.ajax(h)}else this.sourceData=this.makeArray(d),a.isArray(this.sourceData)?(this.doPrepend(),b.call(this)):c.call(this)},doPrepend:function(){null!==this.options.prepend&&void 0!==this.options.prepend&&(a.isArray(this.prependData)||(a.isFunction(this.options.prepend)&&(this.options.prepend=this.options.prepend.call(this.options.scope)),this.options.prepend=a.fn.editableutils.tryParseJson(this.options.prepend,!0),"string"==typeof this.options.prepend&&(this.options.prepend={"":this.options.prepend}),this.prependData=this.makeArray(this.options.prepend)),a.isArray(this.prependData)&&a.isArray(this.sourceData)&&(this.sourceData=this.prependData.concat(this.sourceData)))},renderList:function(){},value2htmlFinal:function(){},makeArray:function(b){var c,d,e,f,g=[];if(!b||"string"==typeof b)return null;if(a.isArray(b)){f=function(a,b){return d={value:a,text:b},c++>=2?!1:void 0};for(var h=0;h<b.length;h++)e=b[h],"object"==typeof e?(c=0,a.each(e,f),1===c?g.push(d):c>1&&(e.children&&(e.children=this.makeArray(e.children)),g.push(e))):g.push({value:e,text:e})}else a.each(b,function(a,b){g.push({value:a,text:b})});return g},option:function(a,b){this.options[a]=b,"source"===a&&(this.sourceData=null),"prepend"===a&&(this.prependData=null)}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{source:null,prepend:!1,sourceError:"Error when loading list",sourceCache:!0,sourceOptions:null}),a.fn.editabletypes.list=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("text",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.renderClear(),this.setClass(),this.setAttr("placeholder")},activate:function(){this.$input.is(":visible")&&(this.$input.focus(),a.fn.editableutils.setCursorPosition(this.$input.get(0),this.$input.val().length),this.toggleClear&&this.toggleClear())},renderClear:function(){this.options.clear&&(this.$clear=a('<span class="editable-clear-x"></span>'),this.$input.after(this.$clear).css("padding-right",24).keyup(a.proxy(function(b){if(!~a.inArray(b.keyCode,[40,38,9,13,27])){clearTimeout(this.t);var c=this;this.t=setTimeout(function(){c.toggleClear(b)},100)}},this)).parent().css("position","relative"),this.$clear.click(a.proxy(this.clear,this)))},postrender:function(){},toggleClear:function(){if(this.$clear){var a=this.$input.val().length,b=this.$clear.is(":visible");a&&!b&&this.$clear.show(),!a&&b&&this.$clear.hide()}},clear:function(){this.$clear.hide(),this.$input.val("").focus()}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'<input type="text">',placeholder:null,clear:!0}),a.fn.editabletypes.text=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("textarea",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.setClass(),this.setAttr("placeholder"),this.setAttr("rows"),this.$input.keydown(function(b){b.ctrlKey&&13===b.which&&a(this).closest("form").submit()})},activate:function(){a.fn.editabletypes.text.prototype.activate.call(this)}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:"<textarea></textarea>",inputclass:"input-large",placeholder:null,rows:7}),a.fn.editabletypes.textarea=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("select",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.list),a.extend(b.prototype,{renderList:function(){this.$input.empty();var b=function(c,d){var e;if(a.isArray(d))for(var f=0;f<d.length;f++)e={},d[f].children?(e.label=d[f].text,c.append(b(a("<optgroup>",e),d[f].children))):(e.value=d[f].value,d[f].disabled&&(e.disabled=!0),c.append(a("<option>",e).text(d[f].text)));return c};b(this.$input,this.sourceData),this.setClass(),this.$input.on("keydown.editable",function(b){13===b.which&&a(this).closest("form").submit()})},value2htmlFinal:function(b,c){var d="",e=a.fn.editableutils.itemsByValue(b,this.sourceData);e.length&&(d=e[0].text),a.fn.editabletypes.abstractinput.prototype.value2html.call(this,d,c)},autosubmit:function(){this.$input.off("keydown.editable").on("change.editable",function(){a(this).closest("form").submit()})}}),b.defaults=a.extend({},a.fn.editabletypes.list.defaults,{tpl:"<select></select>"}),a.fn.editabletypes.select=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("checklist",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.list),a.extend(b.prototype,{renderList:function(){var b;if(this.$tpl.empty(),a.isArray(this.sourceData)){for(var c=0;c<this.sourceData.length;c++)b=a("<label>").append(a("<input>",{type:"checkbox",value:this.sourceData[c].value})).append(a("<span>").text(" "+this.sourceData[c].text)),a("<div>").append(b).appendTo(this.$tpl);this.$input=this.$tpl.find('input[type="checkbox"]'),this.setClass()}},value2str:function(b){return a.isArray(b)?b.sort().join(a.trim(this.options.separator)):""},str2value:function(b){var c,d=null;return"string"==typeof b&&b.length?(c=new RegExp("\\s*"+a.trim(this.options.separator)+"\\s*"),d=b.split(c)):d=a.isArray(b)?b:[b],d},value2input:function(b){this.$input.prop("checked",!1),a.isArray(b)&&b.length&&this.$input.each(function(c,d){var e=a(d);a.each(b,function(a,b){e.val()==b&&e.prop("checked",!0)})})},input2value:function(){var b=[];return this.$input.filter(":checked").each(function(c,d){b.push(a(d).val())}),b},value2htmlFinal:function(b,c){var d=[],e=a.fn.editableutils.itemsByValue(b,this.sourceData),f=this.options.escape;e.length?(a.each(e,function(b,c){var e=f?a.fn.editableutils.escape(c.text):c.text;d.push(e)}),a(c).html(d.join("<br>"))):a(c).empty()},activate:function(){this.$input.first().focus()},autosubmit:function(){this.$input.on("keydown",function(b){13===b.which&&a(this).closest("form").submit()})}}),b.defaults=a.extend({},a.fn.editabletypes.list.defaults,{tpl:'<div class="editable-checklist"></div>',inputclass:null,separator:","}),a.fn.editabletypes.checklist=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("password",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.text),a.extend(b.prototype,{value2html:function(b,c){b?a(c).text("[hidden]"):a(c).empty()},html2value:function(){return null}}),b.defaults=a.extend({},a.fn.editabletypes.text.defaults,{tpl:'<input type="password">'}),a.fn.editabletypes.password=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("email",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.text),b.defaults=a.extend({},a.fn.editabletypes.text.defaults,{tpl:'<input type="email">'}),a.fn.editabletypes.email=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("url",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.text),b.defaults=a.extend({},a.fn.editabletypes.text.defaults,{tpl:'<input type="url">'}),a.fn.editabletypes.url=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("tel",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.text),b.defaults=a.extend({},a.fn.editabletypes.text.defaults,{tpl:'<input type="tel">'}),a.fn.editabletypes.tel=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("number",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.text),a.extend(b.prototype,{render:function(){b.superclass.render.call(this),this.setAttr("min"),this.setAttr("max"),this.setAttr("step")},postrender:function(){this.$clear&&this.$clear.css({right:24})}}),b.defaults=a.extend({},a.fn.editabletypes.text.defaults,{tpl:'<input type="number">',inputclass:"input-mini",min:null,max:null,step:null}),a.fn.editabletypes.number=b}(window.jQuery),function(a){"use strict";
var b=function(a){this.init("range",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.number),a.extend(b.prototype,{render:function(){this.$input=this.$tpl.filter("input"),this.setClass(),this.setAttr("min"),this.setAttr("max"),this.setAttr("step"),this.$input.on("input",function(){a(this).siblings("output").text(a(this).val())})},activate:function(){this.$input.focus()}}),b.defaults=a.extend({},a.fn.editabletypes.number.defaults,{tpl:'<input type="range"><output style="width: 30px; display: inline-block"></output>',inputclass:"input-medium"}),a.fn.editabletypes.range=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("time",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.setClass()}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'<input type="time">'}),a.fn.editabletypes.time=b}(window.jQuery),function(a){"use strict";var b=function(c){if(this.init("select2",c,b.defaults),c.select2=c.select2||{},this.sourceData=null,c.placeholder&&(c.select2.placeholder=c.placeholder),!c.select2.tags&&c.source){var d=c.source;a.isFunction(c.source)&&(d=c.source.call(c.scope)),"string"==typeof d?(c.select2.ajax=c.select2.ajax||{},c.select2.ajax.data||(c.select2.ajax.data=function(a){return{query:a}}),c.select2.ajax.results||(c.select2.ajax.results=function(a){return{results:a}}),c.select2.ajax.url=d):(this.sourceData=this.convertSource(d),c.select2.data=this.sourceData)}if(this.options.select2=a.extend({},b.defaults.select2,c.select2),this.isMultiple=this.options.select2.tags||this.options.select2.multiple,this.isRemote="ajax"in this.options.select2,this.idFunc=this.options.select2.id,"function"!=typeof this.idFunc){var e=this.idFunc||"id";this.idFunc=function(a){return a[e]}}this.formatSelection=this.options.select2.formatSelection,"function"!=typeof this.formatSelection&&(this.formatSelection=function(a){return a.text})};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.setClass(),this.isRemote&&this.$input.on("select2-loaded",a.proxy(function(a){this.sourceData=a.items.results},this)),this.isMultiple&&this.$input.on("change",function(){a(this).closest("form").parent().triggerHandler("resize")})},value2html:function(c,d){var e,f="",g=this;this.options.select2.tags?e=c:this.sourceData&&(e=a.fn.editableutils.itemsByValue(c,this.sourceData,this.idFunc)),a.isArray(e)?(f=[],a.each(e,function(a,b){f.push(b&&"object"==typeof b?g.formatSelection(b):b)})):e&&(f=g.formatSelection(e)),f=a.isArray(f)?f.join(this.options.viewseparator):f,b.superclass.value2html.call(this,f,d)},html2value:function(a){return this.options.select2.tags?this.str2value(a,this.options.viewseparator):null},value2input:function(b){if(a.isArray(b)&&(b=b.join(this.getSeparator())),this.$input.data("select2")?this.$input.val(b).trigger("change",!0):(this.$input.val(b),this.$input.select2(this.options.select2)),this.isRemote&&!this.isMultiple&&!this.options.select2.initSelection){var c=this.options.select2.id,d=this.options.select2.formatSelection;if(!c&&!d){var e=a(this.options.scope);if(!e.data("editable").isEmpty){var f={id:b,text:e.text()};this.$input.select2("data",f)}}}},input2value:function(){return this.$input.select2("val")},str2value:function(b,c){if("string"!=typeof b||!this.isMultiple)return b;c=c||this.getSeparator();var d,e,f;if(null===b||b.length<1)return null;for(d=b.split(c),e=0,f=d.length;f>e;e+=1)d[e]=a.trim(d[e]);return d},autosubmit:function(){this.$input.on("change",function(b,c){c||a(this).closest("form").submit()})},getSeparator:function(){return this.options.select2.separator||a.fn.select2.defaults.separator},convertSource:function(b){if(a.isArray(b)&&b.length&&void 0!==b[0].value)for(var c=0;c<b.length;c++)void 0!==b[c].value&&(b[c].id=b[c].value,delete b[c].value);return b},destroy:function(){this.$input.data("select2")&&this.$input.select2("destroy")}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'<input type="hidden">',select2:null,placeholder:null,source:null,viewseparator:", "}),a.fn.editabletypes.select2=b}(window.jQuery),function(a){var b=function(b,c){return this.$element=a(b),this.$element.is("input")?(this.options=a.extend({},a.fn.combodate.defaults,c,this.$element.data()),this.init(),void 0):(a.error("Combodate should be applied to INPUT element"),void 0)};b.prototype={constructor:b,init:function(){this.map={day:["D","date"],month:["M","month"],year:["Y","year"],hour:["[Hh]","hours"],minute:["m","minutes"],second:["s","seconds"],ampm:["[Aa]",""]},this.$widget=a('<span class="combodate"></span>').html(this.getTemplate()),this.initCombos(),this.$widget.on("change","select",a.proxy(function(b){this.$element.val(this.getValue()).change(),this.options.smartDays&&(a(b.target).is(".month")||a(b.target).is(".year"))&&this.fillCombo("day")},this)),this.$widget.find("select").css("width","auto"),this.$element.hide().after(this.$widget),this.setValue(this.$element.val()||this.options.value)},getTemplate:function(){var b=this.options.template;return a.each(this.map,function(a,c){c=c[0];var d=new RegExp(c+"+"),e=c.length>1?c.substring(1,2):c;b=b.replace(d,"{"+e+"}")}),b=b.replace(/ /g,"&nbsp;"),a.each(this.map,function(a,c){c=c[0];var d=c.length>1?c.substring(1,2):c;b=b.replace("{"+d+"}",'<select class="'+a+'"></select>')}),b},initCombos:function(){for(var a in this.map){var b=this.$widget.find("."+a);this["$"+a]=b.length?b:null,this.fillCombo(a)}},fillCombo:function(a){var b=this["$"+a];if(b){var c="fill"+a.charAt(0).toUpperCase()+a.slice(1),d=this[c](),e=b.val();b.empty();for(var f=0;f<d.length;f++)b.append('<option value="'+d[f][0]+'">'+d[f][1]+"</option>");b.val(e)}},fillCommon:function(a){var b,c=[];if("name"===this.options.firstItem){b=moment.relativeTime||moment.langData()._relativeTime;var d="function"==typeof b[a]?b[a](1,!0,a,!1):b[a];d=d.split(" ").reverse()[0],c.push(["",d])}else"empty"===this.options.firstItem&&c.push(["",""]);return c},fillDay:function(){var a,b,c=this.fillCommon("d"),d=-1!==this.options.template.indexOf("DD"),e=31;if(this.options.smartDays&&this.$month&&this.$year){var f=parseInt(this.$month.val(),10),g=parseInt(this.$year.val(),10);isNaN(f)||isNaN(g)||(e=moment([g,f]).daysInMonth())}for(b=1;e>=b;b++)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillMonth:function(){var a,b,c=this.fillCommon("M"),d=-1!==this.options.template.indexOf("MMMM"),e=-1!==this.options.template.indexOf("MMM"),f=-1!==this.options.template.indexOf("MM");for(b=0;11>=b;b++)a=d?moment().date(1).month(b).format("MMMM"):e?moment().date(1).month(b).format("MMM"):f?this.leadZero(b+1):b+1,c.push([b,a]);return c},fillYear:function(){var a,b,c=[],d=-1!==this.options.template.indexOf("YYYY");for(b=this.options.maxYear;b>=this.options.minYear;b--)a=d?b:(b+"").substring(2),c[this.options.yearDescending?"push":"unshift"]([b,a]);return c=this.fillCommon("y").concat(c)},fillHour:function(){var a,b,c=this.fillCommon("h"),d=-1!==this.options.template.indexOf("h"),e=(-1!==this.options.template.indexOf("H"),-1!==this.options.template.toLowerCase().indexOf("hh")),f=d?1:0,g=d?12:23;for(b=f;g>=b;b++)a=e?this.leadZero(b):b,c.push([b,a]);return c},fillMinute:function(){var a,b,c=this.fillCommon("m"),d=-1!==this.options.template.indexOf("mm");for(b=0;59>=b;b+=this.options.minuteStep)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillSecond:function(){var a,b,c=this.fillCommon("s"),d=-1!==this.options.template.indexOf("ss");for(b=0;59>=b;b+=this.options.secondStep)a=d?this.leadZero(b):b,c.push([b,a]);return c},fillAmpm:function(){var a=-1!==this.options.template.indexOf("a"),b=(-1!==this.options.template.indexOf("A"),[["am",a?"am":"AM"],["pm",a?"pm":"PM"]]);return b},getValue:function(b){var c,d={},e=this,f=!1;return a.each(this.map,function(a){if("ampm"!==a){var b="day"===a?1:0;return d[a]=e["$"+a]?parseInt(e["$"+a].val(),10):b,isNaN(d[a])?(f=!0,!1):void 0}}),f?"":(this.$ampm&&(d.hour=12===d.hour?"am"===this.$ampm.val()?0:12:"am"===this.$ampm.val()?d.hour:d.hour+12),c=moment([d.year,d.month,d.day,d.hour,d.minute,d.second]),this.highlight(c),b=void 0===b?this.options.format:b,null===b?c.isValid()?c:null:c.isValid()?c.format(b):"")},setValue:function(b){function c(b,c){var d={};return b.children("option").each(function(b,e){var f,g=a(e).attr("value");""!==g&&(f=Math.abs(g-c),("undefined"==typeof d.distance||f<d.distance)&&(d={value:g,distance:f}))}),d.value}if(b){var d="string"==typeof b?moment(b,this.options.format):moment(b),e=this,f={};d.isValid()&&(a.each(this.map,function(a,b){"ampm"!==a&&(f[a]=d[b[1]]())}),this.$ampm&&(f.hour>=12?(f.ampm="pm",f.hour>12&&(f.hour-=12)):(f.ampm="am",0===f.hour&&(f.hour=12))),a.each(f,function(a,b){e["$"+a]&&("minute"===a&&e.options.minuteStep>1&&e.options.roundTime&&(b=c(e["$"+a],b)),"second"===a&&e.options.secondStep>1&&e.options.roundTime&&(b=c(e["$"+a],b)),e["$"+a].val(b))}),this.options.smartDays&&this.fillCombo("day"),this.$element.val(d.format(this.options.format)).change())}},highlight:function(a){a.isValid()?this.options.errorClass?this.$widget.removeClass(this.options.errorClass):this.$widget.find("select").css("border-color",this.borderColor):this.options.errorClass?this.$widget.addClass(this.options.errorClass):(this.borderColor||(this.borderColor=this.$widget.find("select").css("border-color")),this.$widget.find("select").css("border-color","red"))},leadZero:function(a){return 9>=a?"0"+a:a},destroy:function(){this.$widget.remove(),this.$element.removeData("combodate").show()}},a.fn.combodate=function(c){var d,e=Array.apply(null,arguments);return e.shift(),"getValue"===c&&this.length&&(d=this.eq(0).data("combodate"))?d.getValue.apply(d,e):this.each(function(){var d=a(this),f=d.data("combodate"),g="object"==typeof c&&c;f||d.data("combodate",f=new b(this,g)),"string"==typeof c&&"function"==typeof f[c]&&f[c].apply(f,e)})},a.fn.combodate.defaults={format:"DD-MM-YYYY HH:mm",template:"D / MMM / YYYY H : mm",value:null,minYear:1970,maxYear:2015,yearDescending:!0,minuteStep:5,secondStep:1,firstItem:"empty",errorClass:null,roundTime:!0,smartDays:!1}}(window.jQuery),function(a){"use strict";var b=function(c){this.init("combodate",c,b.defaults),this.options.viewformat||(this.options.viewformat=this.options.format),c.combodate=a.fn.editableutils.tryParseJson(c.combodate,!0),this.options.combodate=a.extend({},b.defaults.combodate,c.combodate,{format:this.options.format,template:this.options.template})};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.$input.combodate(this.options.combodate),"bs3"===a.fn.editableform.engine&&this.$input.siblings().find("select").addClass("form-control"),this.options.inputclass&&this.$input.siblings().find("select").addClass(this.options.inputclass)},value2html:function(a,c){var d=a?a.format(this.options.viewformat):"";b.superclass.value2html.call(this,d,c)},html2value:function(a){return a?moment(a,this.options.viewformat):null},value2str:function(a){return a?a.format(this.options.format):""},str2value:function(a){return a?moment(a,this.options.format):null},value2submit:function(a){return this.value2str(a)},value2input:function(a){this.$input.combodate("setValue",a)},input2value:function(){return this.$input.combodate("getValue",null)},activate:function(){this.$input.siblings(".combodate").find("select").eq(0).focus()},autosubmit:function(){}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'<input type="text">',inputclass:null,format:"YYYY-MM-DD",viewformat:null,template:"D / MMM / YYYY",combodate:null}),a.fn.editabletypes.combodate=b}(window.jQuery),function(a){"use strict";var b=a.fn.editableform.Constructor.prototype.initInput;a.extend(a.fn.editableform.Constructor.prototype,{initTemplate:function(){this.$form=a(a.fn.editableform.template),this.$form.find(".control-group").addClass("form-group"),this.$form.find(".editable-error-block").addClass("help-block")},initInput:function(){b.apply(this);var c=null===this.input.options.inputclass||this.input.options.inputclass===!1,d="input-sm",e="text,select,textarea,password,email,url,tel,number,range,time,typeaheadjs".split(",");~a.inArray(this.input.type,e)&&(this.input.$input.addClass("form-control"),c&&(this.input.options.inputclass=d,this.input.$input.addClass(d)));for(var f=this.$form.find(".editable-buttons"),g=c?[d]:this.input.options.inputclass.split(" "),h=0;h<g.length;h++)"input-lg"===g[h].toLowerCase()&&f.find("button").removeClass("btn-sm").addClass("btn-lg")}}),a.fn.editableform.buttons='<button type="submit" class="btn btn-primary btn-sm editable-submit"><i class="glyphicon glyphicon-ok"></i></button><button type="button" class="btn btn-default btn-sm editable-cancel"><i class="glyphicon glyphicon-remove"></i></button>',a.fn.editableform.errorGroupClass="has-error",a.fn.editableform.errorBlockClass=null,a.fn.editableform.engine="bs3"}(window.jQuery),function(a){"use strict";a.extend(a.fn.editableContainer.Popup.prototype,{containerName:"popover",containerDataName:"bs.popover",innerCss:".popover-content",defaults:a.fn.popover.Constructor.DEFAULTS,initContainer:function(){a.extend(this.containerOptions,{trigger:"manual",selector:!1,content:" ",template:this.defaults.template});var b;this.$element.data("template")&&(b=this.$element.data("template"),this.$element.removeData("template")),this.call(this.containerOptions),b&&this.$element.data("template",b)},innerShow:function(){this.call("show")},innerHide:function(){this.call("hide")},innerDestroy:function(){this.call("destroy")},setContainerOption:function(a,b){this.container().options[a]=b},setPosition:function(){!function(){var a=this.tip(),b="function"==typeof this.options.placement?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,c=/\s?auto?\s?/i,d=c.test(b);d&&(b=b.replace(c,"")||"top");var e=this.getPosition(),f=a[0].offsetWidth,g=a[0].offsetHeight;if(d){var h=this.$element.parent(),i=b,j=document.documentElement.scrollTop||document.body.scrollTop,k="body"==this.options.container?window.innerWidth:h.outerWidth(),l="body"==this.options.container?window.innerHeight:h.outerHeight(),m="body"==this.options.container?0:h.offset().left;b="bottom"==b&&e.top+e.height+g-j>l?"top":"top"==b&&e.top-j-g<0?"bottom":"right"==b&&e.right+f>k?"left":"left"==b&&e.left-f<m?"right":b,a.removeClass(i).addClass(b)}var n=this.getCalculatedOffset(b,e,f,g);this.applyPlacement(n,b)}.call(this.container())}})}(window.jQuery),function(a){function b(){return new Date(Date.UTC.apply(Date,arguments))}function c(b,c){var d,e=a(b).data(),f={},g=new RegExp("^"+c.toLowerCase()+"([A-Z])"),c=new RegExp("^"+c.toLowerCase());for(var h in e)c.test(h)&&(d=h.replace(g,function(a,b){return b.toLowerCase()}),f[d]=e[h]);return f}function d(b){var c={};if(k[b]||(b=b.split("-")[0],k[b])){var d=k[b];return a.each(j,function(a,b){b in d&&(c[b]=d[b])}),c}}var e=function(b,c){this._process_options(c),this.element=a(b),this.isInline=!1,this.isInput=this.element.is("input"),this.component=this.element.is(".date")?this.element.find(".add-on, .btn"):!1,this.hasInput=this.component&&this.element.find("input").length,this.component&&0===this.component.length&&(this.component=!1),this.picker=a(l.template),this._buildEvents(),this._attachEvents(),this.isInline?this.picker.addClass("datepicker-inline").appendTo(this.element):this.picker.addClass("datepicker-dropdown dropdown-menu"),this.o.rtl&&(this.picker.addClass("datepicker-rtl"),this.picker.find(".prev i, .next i").toggleClass("icon-arrow-left icon-arrow-right")),this.viewMode=this.o.startView,this.o.calendarWeeks&&this.picker.find("tfoot th.today").attr("colspan",function(a,b){return parseInt(b)+1}),this._allow_update=!1,this.setStartDate(this.o.startDate),this.setEndDate(this.o.endDate),this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled),this.fillDow(),this.fillMonths(),this._allow_update=!0,this.update(),this.showMode(),this.isInline&&this.show()};e.prototype={constructor:e,_process_options:function(b){this._o=a.extend({},this._o,b);var c=this.o=a.extend({},this._o),d=c.language;switch(k[d]||(d=d.split("-")[0],k[d]||(d=i.language)),c.language=d,c.startView){case 2:case"decade":c.startView=2;break;case 1:case"year":c.startView=1;break;default:c.startView=0}switch(c.minViewMode){case 1:case"months":c.minViewMode=1;break;case 2:case"years":c.minViewMode=2;break;default:c.minViewMode=0}c.startView=Math.max(c.startView,c.minViewMode),c.weekStart%=7,c.weekEnd=(c.weekStart+6)%7;var e=l.parseFormat(c.format);c.startDate!==-1/0&&(c.startDate=l.parseDate(c.startDate,e,c.language)),1/0!==c.endDate&&(c.endDate=l.parseDate(c.endDate,e,c.language)),c.daysOfWeekDisabled=c.daysOfWeekDisabled||[],a.isArray(c.daysOfWeekDisabled)||(c.daysOfWeekDisabled=c.daysOfWeekDisabled.split(/[,\s]*/)),c.daysOfWeekDisabled=a.map(c.daysOfWeekDisabled,function(a){return parseInt(a,10)})},_events:[],_secondaryEvents:[],_applyEvents:function(a){for(var b,c,d=0;d<a.length;d++)b=a[d][0],c=a[d][1],b.on(c)},_unapplyEvents:function(a){for(var b,c,d=0;d<a.length;d++)b=a[d][0],c=a[d][1],b.off(c)},_buildEvents:function(){this.isInput?this._events=[[this.element,{focus:a.proxy(this.show,this),keyup:a.proxy(this.update,this),keydown:a.proxy(this.keydown,this)}]]:this.component&&this.hasInput?this._events=[[this.element.find("input"),{focus:a.proxy(this.show,this),keyup:a.proxy(this.update,this),keydown:a.proxy(this.keydown,this)}],[this.component,{click:a.proxy(this.show,this)}]]:this.element.is("div")?this.isInline=!0:this._events=[[this.element,{click:a.proxy(this.show,this)}]],this._secondaryEvents=[[this.picker,{click:a.proxy(this.click,this)}],[a(window),{resize:a.proxy(this.place,this)}],[a(document),{mousedown:a.proxy(function(a){this.element.is(a.target)||this.element.find(a.target).size()||this.picker.is(a.target)||this.picker.find(a.target).size()||this.hide()},this)}]]},_attachEvents:function(){this._detachEvents(),this._applyEvents(this._events)},_detachEvents:function(){this._unapplyEvents(this._events)},_attachSecondaryEvents:function(){this._detachSecondaryEvents(),this._applyEvents(this._secondaryEvents)},_detachSecondaryEvents:function(){this._unapplyEvents(this._secondaryEvents)},_trigger:function(b,c){var d=c||this.date,e=new Date(d.getTime()+6e4*d.getTimezoneOffset());this.element.trigger({type:b,date:e,format:a.proxy(function(a){var b=a||this.o.format;return l.formatDate(d,b,this.o.language)},this)})},show:function(a){this.isInline||this.picker.appendTo("body"),this.picker.show(),this.height=this.component?this.component.outerHeight():this.element.outerHeight(),this.place(),this._attachSecondaryEvents(),a&&a.preventDefault(),this._trigger("show")},hide:function(){this.isInline||this.picker.is(":visible")&&(this.picker.hide().detach(),this._detachSecondaryEvents(),this.viewMode=this.o.startView,this.showMode(),this.o.forceParse&&(this.isInput&&this.element.val()||this.hasInput&&this.element.find("input").val())&&this.setValue(),this._trigger("hide"))},remove:function(){this.hide(),this._detachEvents(),this._detachSecondaryEvents(),this.picker.remove(),delete this.element.data().datepicker,this.isInput||delete this.element.data().date},getDate:function(){var a=this.getUTCDate();return new Date(a.getTime()+6e4*a.getTimezoneOffset())},getUTCDate:function(){return this.date},setDate:function(a){this.setUTCDate(new Date(a.getTime()-6e4*a.getTimezoneOffset()))},setUTCDate:function(a){this.date=a,this.setValue()},setValue:function(){var a=this.getFormattedDate();this.isInput?this.element.val(a):this.component&&this.element.find("input").val(a)},getFormattedDate:function(a){return void 0===a&&(a=this.o.format),l.formatDate(this.date,a,this.o.language)},setStartDate:function(a){this._process_options({startDate:a}),this.update(),this.updateNavArrows()},setEndDate:function(a){this._process_options({endDate:a}),this.update(),this.updateNavArrows()},setDaysOfWeekDisabled:function(a){this._process_options({daysOfWeekDisabled:a}),this.update(),this.updateNavArrows()},place:function(){if(!this.isInline){var b=parseInt(this.element.parents().filter(function(){return"auto"!=a(this).css("z-index")}).first().css("z-index"))+10,c=this.component?this.component.parent().offset():this.element.offset(),d=this.component?this.component.outerHeight(!0):this.element.outerHeight(!0);this.picker.css({top:c.top+d,left:c.left,zIndex:b})}},_allow_update:!0,update:function(){if(this._allow_update){var a,b=!1;arguments&&arguments.length&&("string"==typeof arguments[0]||arguments[0]instanceof Date)?(a=arguments[0],b=!0):(a=this.isInput?this.element.val():this.element.data("date")||this.element.find("input").val(),delete this.element.data().date),this.date=l.parseDate(a,this.o.format,this.o.language),b&&this.setValue(),this.viewDate=this.date<this.o.startDate?new Date(this.o.startDate):this.date>this.o.endDate?new Date(this.o.endDate):new Date(this.date),this.fill()}},fillDow:function(){var a=this.o.weekStart,b="<tr>";if(this.o.calendarWeeks){var c='<th class="cw">&nbsp;</th>';b+=c,this.picker.find(".datepicker-days thead tr:first-child").prepend(c)}for(;a<this.o.weekStart+7;)b+='<th class="dow">'+k[this.o.language].daysMin[a++%7]+"</th>";b+="</tr>",this.picker.find(".datepicker-days thead").append(b)},fillMonths:function(){for(var a="",b=0;12>b;)a+='<span class="month">'+k[this.o.language].monthsShort[b++]+"</span>";this.picker.find(".datepicker-months td").html(a)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],d=this.viewDate.getUTCFullYear(),e=this.viewDate.getUTCMonth(),f=this.date.valueOf(),g=new Date;return b.getUTCFullYear()<d||b.getUTCFullYear()==d&&b.getUTCMonth()<e?c.push("old"):(b.getUTCFullYear()>d||b.getUTCFullYear()==d&&b.getUTCMonth()>e)&&c.push("new"),this.o.todayHighlight&&b.getUTCFullYear()==g.getFullYear()&&b.getUTCMonth()==g.getMonth()&&b.getUTCDate()==g.getDate()&&c.push("today"),f&&b.valueOf()==f&&c.push("active"),(b.valueOf()<this.o.startDate||b.valueOf()>this.o.endDate||-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekDisabled))&&c.push("disabled"),this.range&&(b>this.range[0]&&b<this.range[this.range.length-1]&&c.push("range"),-1!=a.inArray(b.valueOf(),this.range)&&c.push("selected")),c},fill:function(){var c,d=new Date(this.viewDate),e=d.getUTCFullYear(),f=d.getUTCMonth(),g=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,h=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,i=1/0!==this.o.endDate?this.o.endDate.getUTCFullYear():1/0,j=1/0!==this.o.endDate?this.o.endDate.getUTCMonth():1/0;this.date&&this.date.valueOf(),this.picker.find(".datepicker-days thead th.datepicker-switch").text(k[this.o.language].months[f]+" "+e),this.picker.find("tfoot th.today").text(k[this.o.language].today).toggle(this.o.todayBtn!==!1),this.picker.find("tfoot th.clear").text(k[this.o.language].clear).toggle(this.o.clearBtn!==!1),this.updateNavArrows(),this.fillMonths();var m=b(e,f-1,28,0,0,0,0),n=l.getDaysInMonth(m.getUTCFullYear(),m.getUTCMonth());m.setUTCDate(n),m.setUTCDate(n-(m.getUTCDay()-this.o.weekStart+7)%7);var o=new Date(m);o.setUTCDate(o.getUTCDate()+42),o=o.valueOf();for(var p,q=[];m.valueOf()<o;){if(m.getUTCDay()==this.o.weekStart&&(q.push("<tr>"),this.o.calendarWeeks)){var r=new Date(+m+864e5*((this.o.weekStart-m.getUTCDay()-7)%7)),s=new Date(+r+864e5*((11-r.getUTCDay())%7)),t=new Date(+(t=b(s.getUTCFullYear(),0,1))+864e5*((11-t.getUTCDay())%7)),u=(s-t)/864e5/7+1;q.push('<td class="cw">'+u+"</td>")}p=this.getClassNames(m),p.push("day");var v=this.o.beforeShowDay(m);void 0===v?v={}:"boolean"==typeof v?v={enabled:v}:"string"==typeof v&&(v={classes:v}),v.enabled===!1&&p.push("disabled"),v.classes&&(p=p.concat(v.classes.split(/\s+/))),v.tooltip&&(c=v.tooltip),p=a.unique(p),q.push('<td class="'+p.join(" ")+'"'+(c?' title="'+c+'"':"")+">"+m.getUTCDate()+"</td>"),m.getUTCDay()==this.o.weekEnd&&q.push("</tr>"),m.setUTCDate(m.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").empty().append(q.join(""));var w=this.date&&this.date.getUTCFullYear(),x=this.picker.find(".datepicker-months").find("th:eq(1)").text(e).end().find("span").removeClass("active");w&&w==e&&x.eq(this.date.getUTCMonth()).addClass("active"),(g>e||e>i)&&x.addClass("disabled"),e==g&&x.slice(0,h).addClass("disabled"),e==i&&x.slice(j+1).addClass("disabled"),q="",e=10*parseInt(e/10,10);var y=this.picker.find(".datepicker-years").find("th:eq(1)").text(e+"-"+(e+9)).end().find("td");e-=1;for(var z=-1;11>z;z++)q+='<span class="year'+(-1==z?" old":10==z?" new":"")+(w==e?" active":"")+(g>e||e>i?" disabled":"")+'">'+e+"</span>",e+=1;y.html(q)},updateNavArrows:function(){if(this._allow_update){var a=new Date(this.viewDate),b=a.getUTCFullYear(),c=a.getUTCMonth();switch(this.viewMode){case 0:this.o.startDate!==-1/0&&b<=this.o.startDate.getUTCFullYear()&&c<=this.o.startDate.getUTCMonth()?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),1/0!==this.o.endDate&&b>=this.o.endDate.getUTCFullYear()&&c>=this.o.endDate.getUTCMonth()?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"});break;case 1:case 2:this.o.startDate!==-1/0&&b<=this.o.startDate.getUTCFullYear()?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),1/0!==this.o.endDate&&b>=this.o.endDate.getUTCFullYear()?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"})}}},click:function(c){c.preventDefault();var d=a(c.target).closest("span, td, th");if(1==d.length)switch(d[0].nodeName.toLowerCase()){case"th":switch(d[0].className){case"datepicker-switch":this.showMode(1);break;case"prev":case"next":var e=l.modes[this.viewMode].navStep*("prev"==d[0].className?-1:1);switch(this.viewMode){case 0:this.viewDate=this.moveMonth(this.viewDate,e);break;case 1:case 2:this.viewDate=this.moveYear(this.viewDate,e)}this.fill();break;case"today":var f=new Date;f=b(f.getFullYear(),f.getMonth(),f.getDate(),0,0,0),this.showMode(-2);var g="linked"==this.o.todayBtn?null:"view";this._setDate(f,g);break;case"clear":var h;this.isInput?h=this.element:this.component&&(h=this.element.find("input")),h&&h.val("").change(),this._trigger("changeDate"),this.update(),this.o.autoclose&&this.hide()}break;case"span":if(!d.is(".disabled")){if(this.viewDate.setUTCDate(1),d.is(".month")){var i=1,j=d.parent().find("span").index(d),k=this.viewDate.getUTCFullYear();this.viewDate.setUTCMonth(j),this._trigger("changeMonth",this.viewDate),1===this.o.minViewMode&&this._setDate(b(k,j,i,0,0,0,0))}else{var k=parseInt(d.text(),10)||0,i=1,j=0;this.viewDate.setUTCFullYear(k),this._trigger("changeYear",this.viewDate),2===this.o.minViewMode&&this._setDate(b(k,j,i,0,0,0,0))}this.showMode(-1),this.fill()}break;case"td":if(d.is(".day")&&!d.is(".disabled")){var i=parseInt(d.text(),10)||1,k=this.viewDate.getUTCFullYear(),j=this.viewDate.getUTCMonth();d.is(".old")?0===j?(j=11,k-=1):j-=1:d.is(".new")&&(11==j?(j=0,k+=1):j+=1),this._setDate(b(k,j,i,0,0,0,0))}}},_setDate:function(a,b){b&&"date"!=b||(this.date=new Date(a)),b&&"view"!=b||(this.viewDate=new Date(a)),this.fill(),this.setValue(),this._trigger("changeDate");var c;this.isInput?c=this.element:this.component&&(c=this.element.find("input")),c&&(c.change(),!this.o.autoclose||b&&"date"!=b||this.hide())},moveMonth:function(a,b){if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),g=e.getUTCMonth(),h=Math.abs(b);if(b=b>0?1:-1,1==h)d=-1==b?function(){return e.getUTCMonth()==g}:function(){return e.getUTCMonth()!=c},c=g+b,e.setUTCMonth(c),(0>c||c>11)&&(c=(c+12)%12);else{for(var i=0;h>i;i++)e=this.moveMonth(e,b);c=e.getUTCMonth(),e.setUTCDate(f),d=function(){return c!=e.getUTCMonth()}}for(;d();)e.setUTCDate(--f),e.setUTCMonth(c);return e},moveYear:function(a,b){return this.moveMonth(a,12*b)},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(this.picker.is(":not(:visible)"))return 27==a.keyCode&&this.show(),void 0;var b,c,d,e=!1;switch(a.keyCode){case 27:this.hide(),a.preventDefault();break;case 37:case 39:if(!this.o.keyboardNavigation)break;b=37==a.keyCode?-1:1,a.ctrlKey?(c=this.moveYear(this.date,b),d=this.moveYear(this.viewDate,b)):a.shiftKey?(c=this.moveMonth(this.date,b),d=this.moveMonth(this.viewDate,b)):(c=new Date(this.date),c.setUTCDate(this.date.getUTCDate()+b),d=new Date(this.viewDate),d.setUTCDate(this.viewDate.getUTCDate()+b)),this.dateWithinRange(c)&&(this.date=c,this.viewDate=d,this.setValue(),this.update(),a.preventDefault(),e=!0);break;case 38:case 40:if(!this.o.keyboardNavigation)break;b=38==a.keyCode?-1:1,a.ctrlKey?(c=this.moveYear(this.date,b),d=this.moveYear(this.viewDate,b)):a.shiftKey?(c=this.moveMonth(this.date,b),d=this.moveMonth(this.viewDate,b)):(c=new Date(this.date),c.setUTCDate(this.date.getUTCDate()+7*b),d=new Date(this.viewDate),d.setUTCDate(this.viewDate.getUTCDate()+7*b)),this.dateWithinRange(c)&&(this.date=c,this.viewDate=d,this.setValue(),this.update(),a.preventDefault(),e=!0);break;case 13:this.hide(),a.preventDefault();break;case 9:this.hide()}if(e){this._trigger("changeDate");var f;this.isInput?f=this.element:this.component&&(f=this.element.find("input")),f&&f.change()}},showMode:function(a){a&&(this.viewMode=Math.max(this.o.minViewMode,Math.min(2,this.viewMode+a))),this.picker.find(">div").hide().filter(".datepicker-"+l.modes[this.viewMode].clsName).css("display","block"),this.updateNavArrows()}};var f=function(b,c){this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,a(this.inputs).datepicker(c).bind("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a(b).data("datepicker")}),this.updateDates()};f.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.date}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},dateUpdated:function(b){var c=a(b.target).data("datepicker"),d=c.getUTCDate(),e=a.inArray(b.target,this.inputs),f=this.inputs.length;if(-1!=e){if(d<this.dates[e])for(;e>=0&&d<this.dates[e];)this.pickers[e--].setUTCDate(d);else if(d>this.dates[e])for(;f>e&&d>this.dates[e];)this.pickers[e++].setUTCDate(d);this.updateDates()}},remove:function(){a.map(this.pickers,function(a){a.remove()}),delete this.element.data().datepicker}};var g=a.fn.datepicker,h=a.fn.datepicker=function(b){var g=Array.apply(null,arguments);g.shift();var h;return this.each(function(){var j=a(this),k=j.data("datepicker"),l="object"==typeof b&&b;if(!k){var m=c(this,"date"),n=a.extend({},i,m,l),o=d(n.language),p=a.extend({},i,o,m,l);if(j.is(".input-daterange")||p.inputs){var q={inputs:p.inputs||j.find("input").toArray()};j.data("datepicker",k=new f(this,a.extend(p,q)))}else j.data("datepicker",k=new e(this,p))}return"string"==typeof b&&"function"==typeof k[b]&&(h=k[b].apply(k,g),void 0!==h)?!1:void 0}),void 0!==h?h:this},i=a.fn.datepicker.defaults={autoclose:!1,beforeShowDay:a.noop,calendarWeeks:!1,clearBtn:!1,daysOfWeekDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keyboardNavigation:!0,language:"en",minViewMode:0,rtl:!1,startDate:-1/0,startView:0,todayBtn:!1,todayHighlight:!1,weekStart:0},j=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=e;var k=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa","Su"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear"}},l={modes:[{clsName:"days",navFnc:"Month",navStep:1},{clsName:"months",navFnc:"FullYear",navStep:1},{clsName:"years",navFnc:"FullYear",navStep:10}],isLeapYear:function(a){return 0===a%4&&0!==a%100||0===a%400
},getDaysInMonth:function(a,b){return[31,l.isLeapYear(a)?29:28,31,30,31,30,31,31,30,31,30,31][b]},validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g,parseFormat:function(a){var b=a.replace(this.validParts,"\0").split("\0"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(c,d,f){if(c instanceof Date)return c;if("string"==typeof d&&(d=l.parseFormat(d)),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(c)){var g,h,i=/([\-+]\d+)([dmwy])/,j=c.match(/([\-+]\d+)([dmwy])/g);c=new Date;for(var m=0;m<j.length;m++)switch(g=i.exec(j[m]),h=parseInt(g[1]),g[2]){case"d":c.setUTCDate(c.getUTCDate()+h);break;case"m":c=e.prototype.moveMonth.call(e.prototype,c,h);break;case"w":c.setUTCDate(c.getUTCDate()+7*h);break;case"y":c=e.prototype.moveYear.call(e.prototype,c,h)}return b(c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate(),0,0,0)}var n,o,g,j=c&&c.match(this.nonpunctuation)||[],c=new Date,p={},q=["yyyy","yy","M","MM","m","mm","d","dd"],r={yyyy:function(a,b){return a.setUTCFullYear(b)},yy:function(a,b){return a.setUTCFullYear(2e3+b)},m:function(a,b){for(b-=1;0>b;)b+=12;for(b%=12,a.setUTCMonth(b);a.getUTCMonth()!=b;)a.setUTCDate(a.getUTCDate()-1);return a},d:function(a,b){return a.setUTCDate(b)}};r.M=r.MM=r.mm=r.m,r.dd=r.d,c=b(c.getFullYear(),c.getMonth(),c.getDate(),0,0,0);var s=d.parts.slice();if(j.length!=s.length&&(s=a(s).filter(function(b,c){return-1!==a.inArray(c,q)}).toArray()),j.length==s.length){for(var m=0,t=s.length;t>m;m++){if(n=parseInt(j[m],10),g=s[m],isNaN(n))switch(g){case"MM":o=a(k[f].months).filter(function(){var a=this.slice(0,j[m].length),b=j[m].slice(0,a.length);return a==b}),n=a.inArray(o[0],k[f].months)+1;break;case"M":o=a(k[f].monthsShort).filter(function(){var a=this.slice(0,j[m].length),b=j[m].slice(0,a.length);return a==b}),n=a.inArray(o[0],k[f].monthsShort)+1}p[g]=n}for(var u,m=0;m<q.length;m++)u=q[m],u in p&&!isNaN(p[u])&&r[u](c,p[u])}return c},formatDate:function(b,c,d){"string"==typeof c&&(c=l.parseFormat(c));var e={d:b.getUTCDate(),D:k[d].daysShort[b.getUTCDay()],DD:k[d].days[b.getUTCDay()],m:b.getUTCMonth()+1,M:k[d].monthsShort[b.getUTCMonth()],MM:k[d].months[b.getUTCMonth()],yy:b.getUTCFullYear().toString().substring(2),yyyy:b.getUTCFullYear()};e.dd=(e.d<10?"0":"")+e.d,e.mm=(e.m<10?"0":"")+e.m;for(var b=[],f=a.extend([],c.separators),g=0,h=c.parts.length;h>=g;g++)f.length&&b.push(f.shift()),b.push(e[c.parts[g]]);return b.join("")},headTemplate:'<thead><tr><th class="prev"><i class="icon-arrow-left"/></th><th colspan="5" class="datepicker-switch"></th><th class="next"><i class="icon-arrow-right"/></th></tr></thead>',contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>',footTemplate:'<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'};l.template='<div class="datepicker"><div class="datepicker-days"><table class=" table-condensed">'+l.headTemplate+"<tbody></tbody>"+l.footTemplate+"</table>"+"</div>"+'<div class="datepicker-months">'+'<table class="table-condensed">'+l.headTemplate+l.contTemplate+l.footTemplate+"</table>"+"</div>"+'<div class="datepicker-years">'+'<table class="table-condensed">'+l.headTemplate+l.contTemplate+l.footTemplate+"</table>"+"</div>"+"</div>",a.fn.datepicker.DPGlobal=l,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=g,this},a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),h.call(c,"show"))}),a(function(){h.call(a('[data-provide="datepicker-inline"]'))})}(window.jQuery),function(a){"use strict";a.fn.bdatepicker=a.fn.datepicker.noConflict(),a.fn.datepicker||(a.fn.datepicker=a.fn.bdatepicker);var b=function(a){this.init("date",a,b.defaults),this.initPicker(a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{initPicker:function(b,c){this.options.viewformat||(this.options.viewformat=this.options.format),b.datepicker=a.fn.editableutils.tryParseJson(b.datepicker,!0),this.options.datepicker=a.extend({},c.datepicker,b.datepicker,{format:this.options.viewformat}),this.options.datepicker.language=this.options.datepicker.language||"en",this.dpg=a.fn.bdatepicker.DPGlobal,this.parsedFormat=this.dpg.parseFormat(this.options.format),this.parsedViewFormat=this.dpg.parseFormat(this.options.viewformat)},render:function(){this.$input.bdatepicker(this.options.datepicker),this.options.clear&&(this.$clear=a('<a href="#"></a>').html(this.options.clear).click(a.proxy(function(a){a.preventDefault(),a.stopPropagation(),this.clear()},this)),this.$tpl.parent().append(a('<div class="editable-clear">').append(this.$clear)))},value2html:function(a,c){var d=a?this.dpg.formatDate(a,this.parsedViewFormat,this.options.datepicker.language):"";b.superclass.value2html.call(this,d,c)},html2value:function(a){return this.parseDate(a,this.parsedViewFormat)},value2str:function(a){return a?this.dpg.formatDate(a,this.parsedFormat,this.options.datepicker.language):""},str2value:function(a){return this.parseDate(a,this.parsedFormat)},value2submit:function(a){return this.value2str(a)},value2input:function(a){this.$input.bdatepicker("update",a)},input2value:function(){return this.$input.data("datepicker").date},activate:function(){},clear:function(){this.$input.data("datepicker").date=null,this.$input.find(".active").removeClass("active"),this.options.showbuttons||this.$input.closest("form").submit()},autosubmit:function(){this.$input.on("mouseup",".day",function(b){if(!a(b.currentTarget).is(".old")&&!a(b.currentTarget).is(".new")){var c=a(this).closest("form");setTimeout(function(){c.submit()},200)}})},parseDate:function(a,b){var c,d=null;return a&&(d=this.dpg.parseDate(a,b,this.options.datepicker.language),"string"==typeof a&&(c=this.dpg.formatDate(d,b,this.options.datepicker.language),a!==c&&(d=null))),d}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'<div class="editable-date well"></div>',inputclass:null,format:"yyyy-mm-dd",viewformat:null,datepicker:{weekStart:0,startView:0,minViewMode:0,autoclose:!1},clear:"&times; clear"}),a.fn.editabletypes.date=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("datefield",a,b.defaults),this.initPicker(a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.date),a.extend(b.prototype,{render:function(){this.$input=this.$tpl.find("input"),this.setClass(),this.setAttr("placeholder"),this.$tpl.bdatepicker(this.options.datepicker),this.$input.off("focus keydown"),this.$input.keyup(a.proxy(function(){this.$tpl.removeData("date"),this.$tpl.bdatepicker("update")},this))},value2input:function(a){this.$input.val(a?this.dpg.formatDate(a,this.parsedViewFormat,this.options.datepicker.language):""),this.$tpl.bdatepicker("update")},input2value:function(){return this.html2value(this.$input.val())},activate:function(){a.fn.editabletypes.text.prototype.activate.call(this)},autosubmit:function(){}}),b.defaults=a.extend({},a.fn.editabletypes.date.defaults,{tpl:'<div class="input-append date"><input type="text"/><span class="add-on"><i class="icon-th"></i></span></div>',inputclass:"input-small",datepicker:{weekStart:0,startView:0,minViewMode:0,autoclose:!0}}),a.fn.editabletypes.datefield=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("datetime",a,b.defaults),this.initPicker(a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{initPicker:function(b,c){this.options.viewformat||(this.options.viewformat=this.options.format),b.datetimepicker=a.fn.editableutils.tryParseJson(b.datetimepicker,!0),this.options.datetimepicker=a.extend({},c.datetimepicker,b.datetimepicker,{format:this.options.viewformat}),this.options.datetimepicker.language=this.options.datetimepicker.language||"en",this.dpg=a.fn.datetimepicker.DPGlobal,this.parsedFormat=this.dpg.parseFormat(this.options.format,this.options.formatType),this.parsedViewFormat=this.dpg.parseFormat(this.options.viewformat,this.options.formatType)},render:function(){this.$input.datetimepicker(this.options.datetimepicker),this.$input.on("changeMode",function(){var b=a(this).closest("form").parent();setTimeout(function(){b.triggerHandler("resize")},0)}),this.options.clear&&(this.$clear=a('<a href="#"></a>').html(this.options.clear).click(a.proxy(function(a){a.preventDefault(),a.stopPropagation(),this.clear()},this)),this.$tpl.parent().append(a('<div class="editable-clear">').append(this.$clear)))},value2html:function(a,c){var d=a?this.dpg.formatDate(this.toUTC(a),this.parsedViewFormat,this.options.datetimepicker.language,this.options.formatType):"";return c?(b.superclass.value2html.call(this,d,c),void 0):d},html2value:function(a){var b=this.parseDate(a,this.parsedViewFormat);return b?this.fromUTC(b):null},value2str:function(a){return a?this.dpg.formatDate(this.toUTC(a),this.parsedFormat,this.options.datetimepicker.language,this.options.formatType):""},str2value:function(a){var b=this.parseDate(a,this.parsedFormat);return b?this.fromUTC(b):null},value2submit:function(a){return this.value2str(a)},value2input:function(a){a&&this.$input.data("datetimepicker").setDate(a)},input2value:function(){var a=this.$input.data("datetimepicker");return a.date?a.getDate():null},activate:function(){},clear:function(){this.$input.data("datetimepicker").date=null,this.$input.find(".active").removeClass("active"),this.options.showbuttons||this.$input.closest("form").submit()},autosubmit:function(){this.$input.on("mouseup",".minute",function(){var b=a(this).closest("form");setTimeout(function(){b.submit()},200)})},toUTC:function(a){return a?new Date(a.valueOf()-6e4*a.getTimezoneOffset()):a},fromUTC:function(a){return a?new Date(a.valueOf()+6e4*a.getTimezoneOffset()):a},parseDate:function(a,b){var c,d=null;return a&&(d=this.dpg.parseDate(a,b,this.options.datetimepicker.language,this.options.formatType),"string"==typeof a&&(c=this.dpg.formatDate(d,b,this.options.datetimepicker.language,this.options.formatType),a!==c&&(d=null))),d}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'<div class="editable-date well"></div>',inputclass:null,format:"yyyy-mm-dd hh:ii",formatType:"standard",viewformat:null,datetimepicker:{todayHighlight:!1,autoclose:!1},clear:"&times; clear"}),a.fn.editabletypes.datetime=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("datetimefield",a,b.defaults),this.initPicker(a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.datetime),a.extend(b.prototype,{render:function(){this.$input=this.$tpl.find("input"),this.setClass(),this.setAttr("placeholder"),this.$tpl.datetimepicker(this.options.datetimepicker),this.$input.off("focus keydown"),this.$input.keyup(a.proxy(function(){this.$tpl.removeData("date"),this.$tpl.datetimepicker("update")},this))},value2input:function(a){this.$input.val(this.value2html(a)),this.$tpl.datetimepicker("update")},input2value:function(){return this.html2value(this.$input.val())},activate:function(){a.fn.editabletypes.text.prototype.activate.call(this)},autosubmit:function(){}}),b.defaults=a.extend({},a.fn.editabletypes.datetime.defaults,{tpl:'<div class="input-append date"><input type="text"/><span class="add-on"><i class="icon-th"></i></span></div>',inputclass:"input-medium",datetimepicker:{todayHighlight:!1,autoclose:!0}}),a.fn.editabletypes.datetimefield=b}(window.jQuery);
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts85325156.2</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>bootstrap-editable.min.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>75909</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>bootstrap-editable.min.js</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/*!
* Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select)
*
* Copyright 2013-2016 bootstrap-select
* Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
*/
!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){"use strict";function b(b){var c=[{re:/[\xC0-\xC6]/g,ch:"A"},{re:/[\xE0-\xE6]/g,ch:"a"},{re:/[\xC8-\xCB]/g,ch:"E"},{re:/[\xE8-\xEB]/g,ch:"e"},{re:/[\xCC-\xCF]/g,ch:"I"},{re:/[\xEC-\xEF]/g,ch:"i"},{re:/[\xD2-\xD6]/g,ch:"O"},{re:/[\xF2-\xF6]/g,ch:"o"},{re:/[\xD9-\xDC]/g,ch:"U"},{re:/[\xF9-\xFC]/g,ch:"u"},{re:/[\xC7-\xE7]/g,ch:"c"},{re:/[\xD1]/g,ch:"N"},{re:/[\xF1]/g,ch:"n"}];return a.each(c,function(){b=b.replace(this.re,this.ch)}),b}function c(a){var b={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},c="(?:"+Object.keys(b).join("|")+")",d=new RegExp(c),e=new RegExp(c,"g"),f=null==a?"":""+a;return d.test(f)?f.replace(e,function(a){return b[a]}):f}function d(b,c){var d=arguments,f=b,g=c;[].shift.apply(d);var h,i=this.each(function(){var b=a(this);if(b.is("select")){var c=b.data("selectpicker"),i="object"==typeof f&&f;if(c){if(i)for(var j in i)i.hasOwnProperty(j)&&(c.options[j]=i[j])}else{var k=a.extend({},e.DEFAULTS,a.fn.selectpicker.defaults||{},b.data(),i);k.template=a.extend({},e.DEFAULTS.template,a.fn.selectpicker.defaults?a.fn.selectpicker.defaults.template:{},b.data().template,i.template),b.data("selectpicker",c=new e(this,k,g))}"string"==typeof f&&(h=c[f]instanceof Function?c[f].apply(c,d):c.options[f])}});return"undefined"!=typeof h?h:i}String.prototype.includes||!function(){var a={}.toString,b=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),c="".indexOf,d=function(b){if(null==this)throw new TypeError;var d=String(this);if(b&&"[object RegExp]"==a.call(b))throw new TypeError;var e=d.length,f=String(b),g=f.length,h=arguments.length>1?arguments[1]:void 0,i=h?Number(h):0;i!=i&&(i=0);var j=Math.min(Math.max(i,0),e);return g+j>e?!1:-1!=c.call(d,f,i)};b?b(String.prototype,"includes",{value:d,configurable:!0,writable:!0}):String.prototype.includes=d}(),String.prototype.startsWith||!function(){var a=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),b={}.toString,c=function(a){if(null==this)throw new TypeError;var c=String(this);if(a&&"[object RegExp]"==b.call(a))throw new TypeError;var d=c.length,e=String(a),f=e.length,g=arguments.length>1?arguments[1]:void 0,h=g?Number(g):0;h!=h&&(h=0);var i=Math.min(Math.max(h,0),d);if(f+i>d)return!1;for(var j=-1;++j<f;)if(c.charCodeAt(i+j)!=e.charCodeAt(j))return!1;return!0};a?a(String.prototype,"startsWith",{value:c,configurable:!0,writable:!0}):String.prototype.startsWith=c}(),Object.keys||(Object.keys=function(a,b,c){c=[];for(b in a)c.hasOwnProperty.call(a,b)&&c.push(b);return c}),a.fn.triggerNative=function(a){var b,c=this[0];c.dispatchEvent?("function"==typeof Event?b=new Event(a,{bubbles:!0}):(b=document.createEvent("Event"),b.initEvent(a,!0,!1)),c.dispatchEvent(b)):(c.fireEvent&&(b=document.createEventObject(),b.eventType=a,c.fireEvent("on"+a,b)),this.trigger(a))},a.expr[":"].icontains=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.text()).toUpperCase();return f.includes(d[3].toUpperCase())},a.expr[":"].ibegins=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.text()).toUpperCase();return f.startsWith(d[3].toUpperCase())},a.expr[":"].aicontains=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.data("normalizedText")||e.text()).toUpperCase();return f.includes(d[3].toUpperCase())},a.expr[":"].aibegins=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.data("normalizedText")||e.text()).toUpperCase();return f.startsWith(d[3].toUpperCase())};var e=function(b,c,d){d&&(d.stopPropagation(),d.preventDefault()),this.$element=a(b),this.$newElement=null,this.$button=null,this.$menu=null,this.$lis=null,this.options=c,null===this.options.title&&(this.options.title=this.$element.attr("title")),this.val=e.prototype.val,this.render=e.prototype.render,this.refresh=e.prototype.refresh,this.setStyle=e.prototype.setStyle,this.selectAll=e.prototype.selectAll,this.deselectAll=e.prototype.deselectAll,this.destroy=e.prototype.destroy,this.remove=e.prototype.remove,this.show=e.prototype.show,this.hide=e.prototype.hide,this.init()};e.VERSION="1.10.0",e.DEFAULTS={noneSelectedText:"Nothing selected",noneResultsText:"No results matched {0}",countSelectedText:function(a,b){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){return[1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)"]},selectAllText:"Select All",deselectAllText:"Deselect All",doneButton:!1,doneButtonText:"Close",multipleSeparator:", ",styleBase:"btn",style:"btn-default",size:"auto",title:null,selectedTextFormat:"values",width:!1,container:!1,hideDisabled:!1,showSubtext:!1,showIcon:!0,showContent:!0,dropupAuto:!0,header:!1,liveSearch:!1,liveSearchPlaceholder:null,liveSearchNormalize:!1,liveSearchStyle:"contains",actionsBox:!1,iconBase:"glyphicon",tickIcon:"glyphicon-ok",showTick:!1,template:{caret:'<span class="caret"></span>'},maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1},e.prototype={constructor:e,init:function(){var b=this,c=this.$element.attr("id");this.$element.addClass("bs-select-hidden"),this.liObj={},this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),this.$newElement=this.createView(),this.$element.after(this.$newElement).appendTo(this.$newElement),this.$button=this.$newElement.children("button"),this.$menu=this.$newElement.children(".dropdown-menu"),this.$menuInner=this.$menu.children(".inner"),this.$searchbox=this.$menu.find("input"),this.$element.removeClass("bs-select-hidden"),this.options.dropdownAlignRight&&this.$menu.addClass("dropdown-menu-right"),"undefined"!=typeof c&&(this.$button.attr("data-id",c),a('label[for="'+c+'"]').click(function(a){a.preventDefault(),b.$button.focus()})),this.checkDisabled(),this.clickListener(),this.options.liveSearch&&this.liveSearchListener(),this.render(),this.setStyle(),this.setWidth(),this.options.container&&this.selectPosition(),this.$menu.data("this",this),this.$newElement.data("this",this),this.options.mobile&&this.mobile(),this.$newElement.on({"hide.bs.dropdown":function(a){b.$element.trigger("hide.bs.select",a)},"hidden.bs.dropdown":function(a){b.$element.trigger("hidden.bs.select",a)},"show.bs.dropdown":function(a){b.$element.trigger("show.bs.select",a)},"shown.bs.dropdown":function(a){b.$element.trigger("shown.bs.select",a)}}),b.$element[0].hasAttribute("required")&&this.$element.on("invalid",function(){b.$button.addClass("bs-invalid").focus(),b.$element.on({"focus.bs.select":function(){b.$button.focus(),b.$element.off("focus.bs.select")},"shown.bs.select":function(){b.$element.val(b.$element.val()).off("shown.bs.select")},"rendered.bs.select":function(){this.validity.valid&&b.$button.removeClass("bs-invalid"),b.$element.off("rendered.bs.select")}})}),setTimeout(function(){b.$element.trigger("loaded.bs.select")})},createDropdown:function(){var b=this.multiple||this.options.showTick?" show-tick":"",d=this.$element.parent().hasClass("input-group")?" input-group-btn":"",e=this.autofocus?" autofocus":"",f=this.options.header?'<div class="popover-title"><button type="button" class="close" aria-hidden="true">&times;</button>'+this.options.header+"</div>":"",g=this.options.liveSearch?'<div class="bs-searchbox"><input type="text" class="form-control" autocomplete="off"'+(null===this.options.liveSearchPlaceholder?"":' placeholder="'+c(this.options.liveSearchPlaceholder)+'"')+"></div>":"",h=this.multiple&&this.options.actionsBox?'<div class="bs-actionsbox"><div class="btn-group btn-group-sm btn-block"><button type="button" class="actions-btn bs-select-all btn btn-default">'+this.options.selectAllText+'</button><button type="button" class="actions-btn bs-deselect-all btn btn-default">'+this.options.deselectAllText+"</button></div></div>":"",i=this.multiple&&this.options.doneButton?'<div class="bs-donebutton"><div class="btn-group btn-block"><button type="button" class="btn btn-sm btn-default">'+this.options.doneButtonText+"</button></div></div>":"",j='<div class="btn-group bootstrap-select'+b+d+'"><button type="button" class="'+this.options.styleBase+' dropdown-toggle" data-toggle="dropdown"'+e+'><span class="filter-option pull-left"></span>&nbsp;<span class="bs-caret">'+this.options.template.caret+'</span></button><div class="dropdown-menu open">'+f+g+h+'<ul class="dropdown-menu inner" role="menu"></ul>'+i+"</div></div>";return a(j)},createView:function(){var a=this.createDropdown(),b=this.createLi();return a.find("ul")[0].innerHTML=b,a},reloadLi:function(){this.destroyLi();var a=this.createLi();this.$menuInner[0].innerHTML=a},destroyLi:function(){this.$menu.find("li").remove()},createLi:function(){var d=this,e=[],f=0,g=document.createElement("option"),h=-1,i=function(a,b,c,d){return"<li"+("undefined"!=typeof c&""!==c?' class="'+c+'"':"")+("undefined"!=typeof b&null!==b?' data-original-index="'+b+'"':"")+("undefined"!=typeof d&null!==d?'data-optgroup="'+d+'"':"")+">"+a+"</li>"},j=function(a,e,f,g){return'<a tabindex="0"'+("undefined"!=typeof e?' class="'+e+'"':"")+("undefined"!=typeof f?' style="'+f+'"':"")+(d.options.liveSearchNormalize?' data-normalized-text="'+b(c(a))+'"':"")+("undefined"!=typeof g||null!==g?' data-tokens="'+g+'"':"")+">"+a+'<span class="'+d.options.iconBase+" "+d.options.tickIcon+' check-mark"></span></a>'};if(this.options.title&&!this.multiple&&(h--,!this.$element.find(".bs-title-option").length)){var k=this.$element[0];g.className="bs-title-option",g.appendChild(document.createTextNode(this.options.title)),g.value="",k.insertBefore(g,k.firstChild),void 0===a(k.options[k.selectedIndex]).attr("selected")&&(g.selected=!0)}return this.$element.find("option").each(function(b){var c=a(this);if(h++,!c.hasClass("bs-title-option")){var g=this.className||"",k=this.style.cssText,l=c.data("content")?c.data("content"):c.html(),m=c.data("tokens")?c.data("tokens"):null,n="undefined"!=typeof c.data("subtext")?'<small class="text-muted">'+c.data("subtext")+"</small>":"",o="undefined"!=typeof c.data("icon")?'<span class="'+d.options.iconBase+" "+c.data("icon")+'"></span> ':"",p="OPTGROUP"===this.parentNode.tagName,q=this.disabled||p&&this.parentNode.disabled;if(""!==o&&q&&(o="<span>"+o+"</span>"),d.options.hideDisabled&&q&&!p)return void h--;if(c.data("content")||(l=o+'<span class="text">'+l+n+"</span>"),p&&c.data("divider")!==!0){var r=" "+this.parentNode.className||"";if(0===c.index()){f+=1;var s=this.parentNode.label,t="undefined"!=typeof c.parent().data("subtext")?'<small class="text-muted">'+c.parent().data("subtext")+"</small>":"",u=c.parent().data("icon")?'<span class="'+d.options.iconBase+" "+c.parent().data("icon")+'"></span> ':"";s=u+'<span class="text">'+s+t+"</span>",0!==b&&e.length>0&&(h++,e.push(i("",null,"divider",f+"div"))),h++,e.push(i(s,null,"dropdown-header"+r,f))}if(d.options.hideDisabled&&q)return void h--;e.push(i(j(l,"opt "+g+r,k,m),b,"",f))}else c.data("divider")===!0?e.push(i("",b,"divider")):c.data("hidden")===!0?e.push(i(j(l,g,k,m),b,"hidden is-hidden")):(this.previousElementSibling&&"OPTGROUP"===this.previousElementSibling.tagName&&(h++,e.push(i("",null,"divider",f+"div"))),e.push(i(j(l,g,k,m),b)));d.liObj[b]=h}}),this.multiple||0!==this.$element.find("option:selected").length||this.options.title||this.$element.find("option").eq(0).prop("selected",!0).attr("selected","selected"),e.join("")},findLis:function(){return null==this.$lis&&(this.$lis=this.$menu.find("li")),this.$lis},render:function(b){var c,d=this;b!==!1&&this.$element.find("option").each(function(a){var b=d.findLis().eq(d.liObj[a]);d.setDisabled(a,this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled,b),d.setSelected(a,this.selected,b)}),this.tabIndex();var e=this.$element.find("option").map(function(){if(this.selected){if(d.options.hideDisabled&&(this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled))return;var b,c=a(this),e=c.data("icon")&&d.options.showIcon?'<i class="'+d.options.iconBase+" "+c.data("icon")+'"></i> ':"";return b=d.options.showSubtext&&c.data("subtext")&&!d.multiple?' <small class="text-muted">'+c.data("subtext")+"</small>":"","undefined"!=typeof c.attr("title")?c.attr("title"):c.data("content")&&d.options.showContent?c.data("content"):e+c.html()+b}}).toArray(),f=this.multiple?e.join(this.options.multipleSeparator):e[0];if(this.multiple&&this.options.selectedTextFormat.indexOf("count")>-1){var g=this.options.selectedTextFormat.split(">");if(g.length>1&&e.length>g[1]||1==g.length&&e.length>=2){c=this.options.hideDisabled?", [disabled]":"";var h=this.$element.find("option").not('[data-divider="true"], [data-hidden="true"]'+c).length,i="function"==typeof this.options.countSelectedText?this.options.countSelectedText(e.length,h):this.options.countSelectedText;f=i.replace("{0}",e.length.toString()).replace("{1}",h.toString())}}void 0==this.options.title&&(this.options.title=this.$element.attr("title")),"static"==this.options.selectedTextFormat&&(f=this.options.title),f||(f="undefined"!=typeof this.options.title?this.options.title:this.options.noneSelectedText),this.$button.attr("title",a.trim(f.replace(/<[^>]*>?/g,""))),this.$button.children(".filter-option").html(f),this.$element.trigger("rendered.bs.select")},setStyle:function(a,b){this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi,""));var c=a?a:this.options.style;"add"==b?this.$button.addClass(c):"remove"==b?this.$button.removeClass(c):(this.$button.removeClass(this.options.style),this.$button.addClass(c))},liHeight:function(b){if(b||this.options.size!==!1&&!this.sizeInfo){var c=document.createElement("div"),d=document.createElement("div"),e=document.createElement("ul"),f=document.createElement("li"),g=document.createElement("li"),h=document.createElement("a"),i=document.createElement("span"),j=this.options.header&&this.$menu.find(".popover-title").length>0?this.$menu.find(".popover-title")[0].cloneNode(!0):null,k=this.options.liveSearch?document.createElement("div"):null,l=this.options.actionsBox&&this.multiple&&this.$menu.find(".bs-actionsbox").length>0?this.$menu.find(".bs-actionsbox")[0].cloneNode(!0):null,m=this.options.doneButton&&this.multiple&&this.$menu.find(".bs-donebutton").length>0?this.$menu.find(".bs-donebutton")[0].cloneNode(!0):null;if(i.className="text",c.className=this.$menu[0].parentNode.className+" open",d.className="dropdown-menu open",e.className="dropdown-menu inner",f.className="divider",i.appendChild(document.createTextNode("Inner text")),h.appendChild(i),g.appendChild(h),e.appendChild(g),e.appendChild(f),j&&d.appendChild(j),k){var n=document.createElement("span");k.className="bs-searchbox",n.className="form-control",k.appendChild(n),d.appendChild(k)}l&&d.appendChild(l),d.appendChild(e),m&&d.appendChild(m),c.appendChild(d),document.body.appendChild(c);var o=h.offsetHeight,p=j?j.offsetHeight:0,q=k?k.offsetHeight:0,r=l?l.offsetHeight:0,s=m?m.offsetHeight:0,t=a(f).outerHeight(!0),u="function"==typeof getComputedStyle?getComputedStyle(d):!1,v=u?null:a(d),w=parseInt(u?u.paddingTop:v.css("paddingTop"))+parseInt(u?u.paddingBottom:v.css("paddingBottom"))+parseInt(u?u.borderTopWidth:v.css("borderTopWidth"))+parseInt(u?u.borderBottomWidth:v.css("borderBottomWidth")),x=w+parseInt(u?u.marginTop:v.css("marginTop"))+parseInt(u?u.marginBottom:v.css("marginBottom"))+2;document.body.removeChild(c),this.sizeInfo={liHeight:o,headerHeight:p,searchHeight:q,actionsHeight:r,doneButtonHeight:s,dividerHeight:t,menuPadding:w,menuExtras:x}}},setSize:function(){if(this.findLis(),this.liHeight(),this.options.header&&this.$menu.css("padding-top",0),this.options.size!==!1){var b,c,d,e,f=this,g=this.$menu,h=this.$menuInner,i=a(window),j=this.$newElement[0].offsetHeight,k=this.sizeInfo.liHeight,l=this.sizeInfo.headerHeight,m=this.sizeInfo.searchHeight,n=this.sizeInfo.actionsHeight,o=this.sizeInfo.doneButtonHeight,p=this.sizeInfo.dividerHeight,q=this.sizeInfo.menuPadding,r=this.sizeInfo.menuExtras,s=this.options.hideDisabled?".disabled":"",t=function(){d=f.$newElement.offset().top-i.scrollTop(),e=i.height()-d-j};if(t(),"auto"===this.options.size){var u=function(){var i,j=function(b,c){return function(d){return c?d.classList?d.classList.contains(b):a(d).hasClass(b):!(d.classList?d.classList.contains(b):a(d).hasClass(b))}},p=f.$menuInner[0].getElementsByTagName("li"),s=Array.prototype.filter?Array.prototype.filter.call(p,j("hidden",!1)):f.$lis.not(".hidden"),u=Array.prototype.filter?Array.prototype.filter.call(s,j("dropdown-header",!0)):s.filter(".dropdown-header");t(),b=e-r,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&f.$newElement.toggleClass("dropup",d>e&&c>b-r),f.$newElement.hasClass("dropup")&&(b=d-r),i=s.length+u.length>3?3*k+r-2:0,g.css({"max-height":b+"px",overflow:"hidden","min-height":i+l+m+n+o+"px"}),h.css({"max-height":b-l-m-n-o-q+"px","overflow-y":"auto","min-height":Math.max(i-q,0)+"px"})};u(),this.$searchbox.off("input.getSize propertychange.getSize").on("input.getSize propertychange.getSize",u),i.off("resize.getSize scroll.getSize").on("resize.getSize scroll.getSize",u)}else if(this.options.size&&"auto"!=this.options.size&&this.$lis.not(s).length>this.options.size){var v=this.$lis.not(".divider").not(s).children().slice(0,this.options.size).last().parent().index(),w=this.$lis.slice(0,v+1).filter(".divider").length;b=k*this.options.size+w*p+q,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&this.$newElement.toggleClass("dropup",d>e&&c>b-r),g.css({"max-height":b+l+m+n+o+"px",overflow:"hidden","min-height":""}),h.css({"max-height":b-q+"px","overflow-y":"auto","min-height":""})}}},setWidth:function(){if("auto"===this.options.width){this.$menu.css("min-width","0");var a=this.$menu.parent().clone().appendTo("body"),b=this.options.container?this.$newElement.clone().appendTo("body"):a,c=a.children(".dropdown-menu").outerWidth(),d=b.css("width","auto").children("button").outerWidth();a.remove(),b.remove(),this.$newElement.css("width",Math.max(c,d)+"px")}else"fit"===this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width",""));this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement.removeClass("fit-width")},selectPosition:function(){this.$bsContainer=a('<div class="bs-container" />');var b,c,d=this,e=function(a){d.$bsContainer.addClass(a.attr("class").replace(/form-control|fit-width/gi,"")).toggleClass("dropup",a.hasClass("dropup")),b=a.offset(),c=a.hasClass("dropup")?0:a[0].offsetHeight,d.$bsContainer.css({top:b.top+c,left:b.left,width:a[0].offsetWidth})};this.$button.on("click",function(){var b=a(this);d.isDisabled()||(e(d.$newElement),d.$bsContainer.appendTo(d.options.container).toggleClass("open",!b.hasClass("open")).append(d.$menu))}),a(window).on("resize scroll",function(){e(d.$newElement)}),this.$element.on("hide.bs.select",function(){d.$menu.data("height",d.$menu.height()),d.$bsContainer.detach()})},setSelected:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),c.toggleClass("selected",b)},setDisabled:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),b?c.addClass("disabled").children("a").attr("href","#").attr("tabindex",-1):c.removeClass("disabled").children("a").removeAttr("href").attr("tabindex",0)},isDisabled:function(){return this.$element[0].disabled},checkDisabled:function(){var a=this;this.isDisabled()?(this.$newElement.addClass("disabled"),this.$button.addClass("disabled").attr("tabindex",-1)):(this.$button.hasClass("disabled")&&(this.$newElement.removeClass("disabled"),this.$button.removeClass("disabled")),-1!=this.$button.attr("tabindex")||this.$element.data("tabindex")||this.$button.removeAttr("tabindex")),this.$button.click(function(){return!a.isDisabled()})},tabIndex:function(){this.$element.data("tabindex")!==this.$element.attr("tabindex")&&-98!==this.$element.attr("tabindex")&&"-98"!==this.$element.attr("tabindex")&&(this.$element.data("tabindex",this.$element.attr("tabindex")),this.$button.attr("tabindex",this.$element.data("tabindex"))),this.$element.attr("tabindex",-98)},clickListener:function(){var b=this,c=a(document);this.$newElement.on("touchstart.dropdown",".dropdown-menu",function(a){a.stopPropagation()}),c.data("spaceSelect",!1),this.$button.on("keyup",function(a){/(32)/.test(a.keyCode.toString(10))&&c.data("spaceSelect")&&(a.preventDefault(),c.data("spaceSelect",!1))}),this.$button.on("click",function(){b.setSize()}),this.$element.on("shown.bs.select",function(){if(b.options.liveSearch||b.multiple){if(!b.multiple){var a=b.liObj[b.$element[0].selectedIndex];if("number"!=typeof a||b.options.size===!1)return;var c=b.$lis.eq(a)[0].offsetTop-b.$menuInner[0].offsetTop;c=c-b.$menuInner[0].offsetHeight/2+b.sizeInfo.liHeight/2,b.$menuInner[0].scrollTop=c}}else b.$menuInner.find(".selected a").focus()}),this.$menuInner.on("click","li a",function(c){var d=a(this),e=d.parent().data("originalIndex"),f=b.$element.val(),g=b.$element.prop("selectedIndex");if(b.multiple&&c.stopPropagation(),c.preventDefault(),!b.isDisabled()&&!d.parent().hasClass("disabled")){var h=b.$element.find("option"),i=h.eq(e),j=i.prop("selected"),k=i.parent("optgroup"),l=b.options.maxOptions,m=k.data("maxOptions")||!1;if(b.multiple){if(i.prop("selected",!j),b.setSelected(e,!j),d.blur(),l!==!1||m!==!1){var n=l<h.filter(":selected").length,o=m<k.find("option:selected").length;if(l&&n||m&&o)if(l&&1==l)h.prop("selected",!1),i.prop("selected",!0),b.$menuInner.find(".selected").removeClass("selected"),b.setSelected(e,!0);else if(m&&1==m){k.find("option:selected").prop("selected",!1),i.prop("selected",!0);var p=d.parent().data("optgroup");b.$menuInner.find('[data-optgroup="'+p+'"]').removeClass("selected"),b.setSelected(e,!0)}else{var q="function"==typeof b.options.maxOptionsText?b.options.maxOptionsText(l,m):b.options.maxOptionsText,r=q[0].replace("{n}",l),s=q[1].replace("{n}",m),t=a('<div class="notify"></div>');q[2]&&(r=r.replace("{var}",q[2][l>1?0:1]),s=s.replace("{var}",q[2][m>1?0:1])),i.prop("selected",!1),b.$menu.append(t),l&&n&&(t.append(a("<div>"+r+"</div>")),b.$element.trigger("maxReached.bs.select")),m&&o&&(t.append(a("<div>"+s+"</div>")),b.$element.trigger("maxReachedGrp.bs.select")),setTimeout(function(){b.setSelected(e,!1)},10),t.delay(750).fadeOut(300,function(){a(this).remove()})}}}else h.prop("selected",!1),i.prop("selected",!0),b.$menuInner.find(".selected").removeClass("selected"),b.setSelected(e,!0);b.multiple?b.options.liveSearch&&b.$searchbox.focus():b.$button.focus(),(f!=b.$element.val()&&b.multiple||g!=b.$element.prop("selectedIndex")&&!b.multiple)&&b.$element.trigger("changed.bs.select",[e,i.prop("selected"),j]).triggerNative("change")}}),this.$menu.on("click","li.disabled a, .popover-title, .popover-title :not(.close)",function(c){c.currentTarget==this&&(c.preventDefault(),c.stopPropagation(),b.options.liveSearch&&!a(c.target).hasClass("close")?b.$searchbox.focus():b.$button.focus())}),this.$menuInner.on("click",".divider, .dropdown-header",function(a){a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus()}),this.$menu.on("click",".popover-title .close",function(){b.$button.click()}),this.$searchbox.on("click",function(a){a.stopPropagation()}),this.$menu.on("click",".actions-btn",function(c){b.options.liveSearch?b.$searchbox.focus():b.$button.focus(),c.preventDefault(),c.stopPropagation(),a(this).hasClass("bs-select-all")?b.selectAll():b.deselectAll()}),this.$element.change(function(){b.render(!1)})},liveSearchListener:function(){var d=this,e=a('<li class="no-results"></li>');this.$button.on("click.dropdown.data-api touchstart.dropdown.data-api",function(){d.$menuInner.find(".active").removeClass("active"),d.$searchbox.val()&&(d.$searchbox.val(""),d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove()),d.multiple||d.$menuInner.find(".selected").addClass("active"),setTimeout(function(){d.$searchbox.focus()},10)}),this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api",function(a){a.stopPropagation()}),this.$searchbox.on("input propertychange",function(){if(d.$searchbox.val()){var f=d.$lis.not(".is-hidden").removeClass("hidden").children("a");f=d.options.liveSearchNormalize?f.not(":a"+d._searchStyle()+'("'+b(d.$searchbox.val())+'")'):f.not(":"+d._searchStyle()+'("'+d.$searchbox.val()+'")'),f.parent().addClass("hidden"),d.$lis.filter(".dropdown-header").each(function(){var b=a(this),c=b.data("optgroup");0===d.$lis.filter("[data-optgroup="+c+"]").not(b).not(".hidden").length&&(b.addClass("hidden"),d.$lis.filter("[data-optgroup="+c+"div]").addClass("hidden"))});var g=d.$lis.not(".hidden");g.each(function(b){var c=a(this);c.hasClass("divider")&&(c.index()===g.first().index()||c.index()===g.last().index()||g.eq(b+1).hasClass("divider"))&&c.addClass("hidden")}),d.$lis.not(".hidden, .no-results").length?e.parent().length&&e.remove():(e.parent().length&&e.remove(),e.html(d.options.noneResultsText.replace("{0}",'"'+c(d.$searchbox.val())+'"')).show(),d.$menuInner.append(e))}else d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove();d.$lis.filter(".active").removeClass("active"),d.$searchbox.val()&&d.$lis.not(".hidden, .divider, .dropdown-header").eq(0).addClass("active").children("a").focus(),a(this).focus()})},_searchStyle:function(){var a={begins:"ibegins",startsWith:"ibegins"};return a[this.options.liveSearchStyle]||"icontains"},val:function(a){return"undefined"!=typeof a?(this.$element.val(a),this.render(),this.$element):this.$element.val()},changeAll:function(b){"undefined"==typeof b&&(b=!0),this.findLis();for(var c=this.$element.find("option"),d=this.$lis.not(".divider, .dropdown-header, .disabled, .hidden").toggleClass("selected",b),e=d.length,f=[],g=0;e>g;g++){var h=d[g].getAttribute("data-original-index");f[f.length]=c.eq(h)[0]}a(f).prop("selected",b),this.render(!1),this.$element.trigger("changed.bs.select").triggerNative("change")},selectAll:function(){return this.changeAll(!0)},deselectAll:function(){return this.changeAll(!1)},toggle:function(a){a=a||window.event,a&&a.stopPropagation(),this.$button.trigger("click")},keydown:function(c){var d,e,f,g,h,i,j,k,l,m=a(this),n=m.is("input")?m.parent().parent():m.parent(),o=n.data("this"),p=":not(.disabled, .hidden, .dropdown-header, .divider)",q={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"};if(o.options.liveSearch&&(n=m.parent().parent()),o.options.container&&(n=o.$menu),d=a("[role=menu] li",n),l=o.$newElement.hasClass("open"),!l&&(c.keyCode>=48&&c.keyCode<=57||c.keyCode>=96&&c.keyCode<=105||c.keyCode>=65&&c.keyCode<=90)&&(o.options.container?o.$button.trigger("click"):(o.setSize(),o.$menu.parent().addClass("open"),l=!0),o.$searchbox.focus()),o.options.liveSearch&&(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&0===o.$menu.find(".active").length&&(c.preventDefault(),o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus()),d=a("[role=menu] li"+p,n),m.val()||/(38|40)/.test(c.keyCode.toString(10))||0===d.filter(".active").length&&(d=o.$menuInner.find("li"),d=o.options.liveSearchNormalize?d.filter(":a"+o._searchStyle()+"("+b(q[c.keyCode])+")"):d.filter(":"+o._searchStyle()+"("+q[c.keyCode]+")"))),d.length){if(/(38|40)/.test(c.keyCode.toString(10)))e=d.index(d.find("a").filter(":focus").parent()),g=d.filter(p).first().index(),h=d.filter(p).last().index(),f=d.eq(e).nextAll(p).eq(0).index(),i=d.eq(e).prevAll(p).eq(0).index(),j=d.eq(f).prevAll(p).eq(0).index(),o.options.liveSearch&&(d.each(function(b){a(this).hasClass("disabled")||a(this).data("index",b)}),e=d.index(d.filter(".active")),g=d.first().data("index"),h=d.last().data("index"),f=d.eq(e).nextAll().eq(0).data("index"),i=d.eq(e).prevAll().eq(0).data("index"),j=d.eq(f).prevAll().eq(0).data("index")),k=m.data("prevIndex"),38==c.keyCode?(o.options.liveSearch&&e--,e!=j&&e>i&&(e=i),g>e&&(e=g),e==k&&(e=h)):40==c.keyCode&&(o.options.liveSearch&&e++,-1==e&&(e=0),e!=j&&f>e&&(e=f),e>h&&(e=h),e==k&&(e=g)),m.data("prevIndex",e),o.options.liveSearch?(c.preventDefault(),m.hasClass("dropdown-toggle")||(d.removeClass("active").eq(e).addClass("active").children("a").focus(),m.focus())):d.eq(e).children("a").focus();else if(!m.is("input")){var r,s,t=[];d.each(function(){a(this).hasClass("disabled")||a.trim(a(this).children("a").text().toLowerCase()).substring(0,1)==q[c.keyCode]&&t.push(a(this).index())}),r=a(document).data("keycount"),r++,a(document).data("keycount",r),s=a.trim(a(":focus").text().toLowerCase()).substring(0,1),s!=q[c.keyCode]?(r=1,a(document).data("keycount",r)):r>=t.length&&(a(document).data("keycount",0),r>t.length&&(r=1)),d.eq(t[r-1]).children("a").focus()}if((/(13|32)/.test(c.keyCode.toString(10))||/(^9$)/.test(c.keyCode.toString(10))&&o.options.selectOnTab)&&l){if(/(32)/.test(c.keyCode.toString(10))||c.preventDefault(),o.options.liveSearch)/(32)/.test(c.keyCode.toString(10))||(o.$menuInner.find(".active a").click(),m.focus());else{var u=a(":focus");u.click(),u.focus(),c.preventDefault(),a(document).data("spaceSelect",!0)}a(document).data("keycount",0)}(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&(o.multiple||o.options.liveSearch)||/(27)/.test(c.keyCode.toString(10))&&!l)&&(o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus())}},mobile:function(){this.$element.addClass("mobile-device")},refresh:function(){this.$lis=null,this.liObj={},this.reloadLi(),this.render(),this.checkDisabled(),this.liHeight(!0),this.setStyle(),this.setWidth(),this.$lis&&this.$searchbox.trigger("propertychange"),this.$element.trigger("refreshed.bs.select")},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()},destroy:function(){this.$newElement.before(this.$element).remove(),this.$bsContainer?this.$bsContainer.remove():this.$menu.remove(),this.$element.off(".bs.select").removeData("selectpicker").removeClass("bs-select-hidden selectpicker")}};var f=a.fn.selectpicker;a.fn.selectpicker=d,a.fn.selectpicker.Constructor=e,a.fn.selectpicker.noConflict=function(){return a.fn.selectpicker=f,this},a(document).data("keycount",0).on("keydown.bs.select",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',e.prototype.keydown).on("focusin.modal",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',function(a){a.stopPropagation()}),a(window).on("load.bs.select.data-api",function(){a(".selectpicker").each(function(){var b=a(this);d.call(b,b.data())})})}(a)});
//# sourceMappingURL=bootstrap-select.js.map
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59623095.46</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>bootstrap-select.min.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>31697</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>bootstrap-select.min.js</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/*!
* Bootstrap v3.3.6 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under the MIT license
*/
if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.6",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");
d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.6",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_EtagSupport__etag</string> </key>
<value> <string>ts59622883.23</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>bootstrap.min.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>size</string> </key>
<value> <int>36868</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>bootstrap.min.js</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -13,8 +13,12 @@ IDEAS: ...@@ -13,8 +13,12 @@ IDEAS:
layout_form_id request/layout_form_id | here/getApplicableLayout | nothing; layout_form_id request/layout_form_id | here/getApplicableLayout | nothing;
layout_form python: layout_form_id and getattr(here, layout_form_id, None) or None; layout_form python: layout_form_id and getattr(here, layout_form_id, None) or None;
is_web_mode python: (layout_form is not None) and (not ignore_layout); is_web_mode python: (layout_form is not None) and (not ignore_layout);
form nocall: form | nothing;
portal here/getPortalObject;
form_action python: form and form.action not in ('', None) and portal.portal_membership.checkPermission('Modify portal content', here) and form.action or nothing;
default_editable_mode python: 1 if (not is_web_mode and form_action) else 0;
editable_mode request/editable_mode | nothing; editable_mode request/editable_mode | nothing;
dummy python: editable_mode is None and request.set('editable_mode', (not is_web_mode)); dummy python: editable_mode is None and request.set('editable_mode', default_editable_mode);
editable_mode_backup request/editable_mode; editable_mode_backup request/editable_mode;
dummy python: request.set('editable_mode', editable_mode); dummy python: request.set('editable_mode', editable_mode);
dummy python: request.set('is_web_mode', is_web_mode); dummy python: request.set('is_web_mode', is_web_mode);
......
...@@ -3,10 +3,32 @@ ...@@ -3,10 +3,32 @@
xmlns:i18n="http://xml.zope.org/namespaces/i18n"> xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<tal:block tal:define="portal here/getPortalObject; <tal:block tal:define="portal here/getPortalObject;
actions python:portal.portal_actions.listFilteredActionsFor(here)"> actions python:portal.portal_actions.listFilteredActionsFor(here)">
<span class="first"> <ul class="nav navbar-nav">
<span id="favourites" class="favourites"> <li id="modules" class="navbar-form">
<select name="select_module"
class="selectpicker"
data-style=""
data-width="100px"
data-live-search="true"
data-container='body'
onChange="submitAction(this.form,'Base_doModule')"
tal:define="module_list here/ERP5Site_getModuleItemList;">
<option selected="selected"
disabled="disabled"
value="" i18n:translate="" i18n:domain="ui">Modules</option>
<option tal:repeat="module module_list"
tal:attributes="value python: module[1]"
tal:content="python: module[0]"
tal:omit-tag="nothing" />
</select>
</li>
<li id="favourites" class="navbar-form">
<select name="select_favorite" <select name="select_favorite"
onchange="submitAction(this.form,'Base_doFavorite')" class="selectpicker"
data-style=""
data-container='body'
data-width="auto"
onChange="submitAction(this.form,'Base_doFavorite')"
tal:define="ordered_global_actions python:here.getOrderedGlobalActionList(actions['global']); tal:define="ordered_global_actions python:here.getOrderedGlobalActionList(actions['global']);
user_actions actions/user;"> user_actions actions/user;">
<option selected="selected" value="" <option selected="selected" value=""
...@@ -25,7 +47,7 @@ ...@@ -25,7 +47,7 @@
i18n:translate="" i18n:domain="ui"></option> i18n:translate="" i18n:domain="ui"></option>
</tal:block> </tal:block>
</tal:block> </tal:block>
<tal:block tal:condition="user_actions"> <tal:block tal:condition="user_actions" tal:replace="nothing">
<option disabled="disabled">-- <tal:block i18n:translate="" i18n:domain="ui">User</tal:block> --</option> <option disabled="disabled">-- <tal:block i18n:translate="" i18n:domain="ui">User</tal:block> --</option>
<option tal:repeat="action user_actions" <option tal:repeat="action user_actions"
tal:content="action/name" tal:content="action/name"
...@@ -33,39 +55,47 @@ ...@@ -33,39 +55,47 @@
i18n:translate="" i18n:domain="ui"></option> i18n:translate="" i18n:domain="ui"></option>
</tal:block> </tal:block>
</select> </select>
<button type="submit" name="Base_doFavorite:method" title="Select Favourite" <ul class="dropdown-menu"
i18n:attributes="title" i18n:domain="ui"> tal:replace="nothing"
<span class="image"></span> role="menu"
<span class="description" tal:define="ordered_global_actions python:here.getOrderedGlobalActionList(actions['global'])">
i18n:translate="" i18n:domain="ui">Select Favourite</span> <tal:block tal:repeat="action ordered_global_actions">
</button> <li tal:condition="action/disabled"><small tal:content="action/title" i18n:translate="" i18n:domain="ui" /></li>
</span> <li tal:condition="action/disabled" class="divider"></li>
<span class="separator"><!--separator--></span> <tal:block tal:condition="not:action/disabled"
<span id="modules" class="modules"> tal:define="name python: action.get('name', '');
<select name="select_module" index python: name.find(' (');">
onchange="submitAction(this.form,'Base_doModule')" <li tal:condition="python: index &gt;= 0">
tal:define="module_list here/ERP5Site_getModuleItemList;"> <a tal:attributes="href action/url">
<option selected="selected" value="" i18n:translate="" i18n:domain="ui">Modules</option> <tal:block tal:content="python: name[:index]" i18n:translate="" i18n:domain="ui"/>
<option tal:repeat="module module_list" <span class="badge pull-right" tal:content="python: name[index+2:-1]" />
tal:attributes="value python: module[1]" </a>
tal:content="python: module[0]" </li>
tal:omit-tag="nothing" /> <li tal:condition="python: index &lt; 0">
</select> <a tal:attributes="href action/url"
<button type="submit" name="Base_doModule:method" title="Select Module" tal:content="action/name"
i18n:attributes="title" i18n:domain="ui"> i18n:translate="" i18n:domain="ui"/>
<span class="image"></span> </li>
<span class="description" </tal:block>
i18n:translate="" i18n:domain="ui">Select Module</span> </tal:block>
</button> </ul>
</span> </li>
</span> </ul>
<span class="second"> <ul class="nav navbar-nav navbar-right">
<span id="language" class="language"> <li id="language" class="navbar-form"
tal:condition="language_list_more"
tal:define="language_list python:portal.portal_preferences.getPreference('preferred_user_interface_language_list', []);
language_list_more python:len(language_list) &gt; 1">
<select name="select_language" <select name="select_language"
tal:define="language_list python:portal.portal_preferences.getPreference('preferred_user_interface_language_list', None)" class="selectpicker"
data-style=""
data-width="auto"
data-container='body'
onchange="submitAction(this.form,'Base_doLanguage')"> onchange="submitAction(this.form,'Base_doLanguage')">
<option value="" <option value=""
i18n:translate="" i18n:domain="ui">My Language</option> disabled="disabled"
selected="selected"
i18n:translate="" i18n:domain="ui">Language</option>
<tal:block tal:repeat="language python:portal.Localizer.get_languages_map()"> <tal:block tal:repeat="language python:portal.Localizer.get_languages_map()">
<option <option
tal:condition="python:not language_list or language['id'] in language_list" tal:condition="python:not language_list or language['id'] in language_list"
...@@ -75,29 +105,43 @@ ...@@ -75,29 +105,43 @@
tal:content="python: here.Localizer.erp5_ui.gettext(language['title'], lang=language['id'])" /> tal:content="python: here.Localizer.erp5_ui.gettext(language['title'], lang=language['id'])" />
</tal:block> </tal:block>
</select> </select>
<button type="submit" name="Base_doLanguage:method" title="Select Language"
i18n:attributes="title" i18n:domain="ui">
<span class="image"></span>
<span class="description"
i18n:translate="" i18n:domain="ui">Select Language</span>
</button>
</span>
<span class="separator"><!--separator--></span>
<span id="search" class="search" tal:define="search_default_text python:here.Base_translateString('Search')">
<input type="hidden" name="all_languages" value="1" /> <input type="hidden" name="all_languages" value="1" />
<input class="quick_search_field" accesskey="4" type="text" name="field_your_search_text" </li>
<li class="navbar-form"
tal:condition="not: portal/portal_membership/isAnonymousUser">
<select
class="selectpicker"
data-style=""
data-width="auto"
data-container='body'
onChange="window.location = this.value"
data-onChange="submitAction(this.form,'Base_doFavorite')"
tal:define="user_actions actions/user;">
<option disabled="disabled" selected="selected">
<tal:block i18n:translate="" i18n:domain="ui">Logged In as :</tal:block><tal:block tal:replace="python:portal.portal_membership.getAuthenticatedMember().getUserName()" />
</option>
<tal:block tal:condition="user_actions">
<option tal:repeat="action user_actions"
tal:content="action/name"
tal:attributes="value action/url"
i18n:translate="" i18n:domain="ui"></option>
</tal:block>
</select>
</li>
<li id="search" class="navbar-form" tal:define="search_default_text python:here.Base_translateString('Search')">
<input class="quick_search_field form-control" accesskey="4" type="search" name="field_your_search_text"
value="Search" tal:attributes="value string:${search_default_text}; value="Search" tal:attributes="value string:${search_default_text};
onfocus string:if (this.value=='${search_default_text}') this.value='';" onfocus string:if (this.value=='${search_default_text}') this.value='';"
onfocus="this.value='';" onfocus="this.value='';"
onkeypress="submitFormOnEnter(event, this.form, 'ERP5Site_viewQuickSearchResultList');" /> onkeypress="submitFormOnEnter(event, this.form, 'ERP5Site_viewQuickSearchResultList');" />
<button type="submit" name="ERP5Site_viewQuickSearchResultList:method" title="Search" <button type="submit" name="ERP5Site_viewQuickSearchResultList:method"
title="Search"
class="btn btn-default"
tal:replace="nothing"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="icon-search"></i>
<span class="description"
i18n:translate="" i18n:domain="ui">Search</span>
</button> </button>
</span> </li>
</span> </ul>
<p class="clear"></p>
</tal:block> </tal:block>
</tal:block> </tal:block>
\ No newline at end of file
...@@ -17,24 +17,30 @@ ...@@ -17,24 +17,30 @@
</tal:block> </tal:block>
<div class="dialog_box"> <div class="dialog_box">
<div tal:condition="python: len(proxy_form_id_list) > 0" <div tal:condition="python: len(proxy_form_id_list) > 0"
class="dialog_selector"> class="dialog_selector row form-group">
<label for="dialog_selector" <label for="dialog_selector"
class="control-label col-md-4"
i18n:translate="" i18n:domain="ui">Select Template</label> i18n:translate="" i18n:domain="ui">Select Template</label>
<div class="input input-group col-md-8">
<select name="select_dialog" id="dialog_selector" <select name="select_dialog" id="dialog_selector"
class="form-control"
onchange="submitAction(this.form,'Base_doRelationDialog')"> onchange="submitAction(this.form,'Base_doRelationDialog')">
<tal:block tal:repeat="proxy_listbox_id_item proxy_form_id_list"> <option tal:repeat="proxy_listbox_id_item proxy_form_id_list"
<option tal:attributes="value python: proxy_listbox_id_item[0]; tal:attributes="value python: proxy_listbox_id_item[0];
selected python: proxy_listbox_id_item[0] == proxy_listbox_id" selected python: proxy_listbox_id_item[0] == proxy_listbox_id"
tal:content="python: proxy_listbox_id_item[1]" tal:content="python: proxy_listbox_id_item[1]"
i18n:translate="" i18n:domain="ui"></option> i18n:translate="" i18n:domain="ui"></option>
</tal:block>
</select> </select>
<button type="submit" name="Base_doRelationDialog:method"> <div class="input-group-btn">
<span class="image"></span> <button type="submit" name="Base_doRelationDialog:method"
class="btn btn-default">
<i class="fa fa-repeat"></i>
<span class="description" <span class="description"
i18n:translate="" i18n:domain="ui">Go</span> i18n:translate="" i18n:domain="ui">Go</span>
</button> </button>
</div> </div>
</div>
</div>
<div tal:condition="python: len(proxy_form_id_list) == 0"> <div tal:condition="python: len(proxy_form_id_list) == 0">
<input type="hidden" name="proxy_listbox_id" value='Base_viewRelatedObjectListBase/listbox'/> <input type="hidden" name="proxy_listbox_id" value='Base_viewRelatedObjectListBase/listbox'/>
</div> </div>
......
...@@ -20,6 +20,7 @@ DEPRECATION: ...@@ -20,6 +20,7 @@ DEPRECATION:
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<tal:block metal:use-macro="global_definitions_macros/header_boilerplate" /> <tal:block metal:use-macro="global_definitions_macros/header_boilerplate" />
<meta name="generator" content="ERP5 - Copyright (C) 2001 - 2015. All rights reserved." /> <meta name="generator" content="ERP5 - Copyright (C) 2001 - 2015. All rights reserved." />
<meta name="robots" content="index, follow" /> <meta name="robots" content="index, follow" />
...@@ -30,6 +31,7 @@ DEPRECATION: ...@@ -30,6 +31,7 @@ DEPRECATION:
<body tal:attributes="class body_css_class|nothing"> <body tal:attributes="class body_css_class|nothing">
<form id="main_form" <form id="main_form"
class="main_form" class="main_form"
role="form"
onsubmit="changed=false; return true" onsubmit="changed=false; return true"
tal:attributes="enctype enctype | form/Form_getEnctype | nothing; tal:attributes="enctype enctype | form/Form_getEnctype | nothing;
action url; action url;
...@@ -41,44 +43,80 @@ DEPRECATION: ...@@ -41,44 +43,80 @@ DEPRECATION:
<tal:block metal:use-macro="global_definitions_macros/http_definitions" /> <tal:block metal:use-macro="global_definitions_macros/http_definitions" />
</fieldset> </fieldset>
<tal:block metal:define-slot="layout"> <tal:block metal:define-slot="layout">
<div id="bars" class="bars"> <div id="main_bar" class="navbar navbar-default">
<div id="main_bar" class="main_bar" <div class="navbar-header">
tal:content="structure portal/ERP5Site_renderCachedNavigationBox"> <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-navbar-collapse">
</div> <span class="sr-only">Toggle navigation</span>
<div id="context_bar" class="context_bar"> <i class="glyphicon glyphicon-align-justify"></i>
<tal:block metal:define-slot="context_bar" /> <i class="glyphicon glyphicon-align-justify"></i>
<i class="glyphicon glyphicon-align-justify"></i>
</button>
</div> </div>
<nav class="collapse navbar-collapse navbar-static-top bs-navbar-collapse">
<tal:block tal:content="structure portal/ERP5Site_renderCachedNavigationBox"/>
</nav>
</div> </div>
<div id="status" class="status"> <div id="master"
<div id="breadcrumb" class="breadcrumb"> class="master panel panel-default"
tal:define="list_mode list_mode | nothing"
tal:attributes="class python:'master panel panel-default' if (is_web_mode or (list_mode or (not form))) else 'master panel panel-default container'"
>
<div class="panel-body">
<ol id="breadcrumb" class="breadcrumb">
<tal:block metal:use-macro="here/breadcrumb_render/macros/breadcrumb" /> <tal:block metal:use-macro="here/breadcrumb_render/macros/breadcrumb" />
</div> </ol>
<div id="logged_in_as" class="logged_in_as">
<tal:block tal:condition="not: portal/portal_membership/isAnonymousUser">
<span class="logged_txt" i18n:translate="" i18n:domain="ui">Logged In as :</span>
<tal:block tal:replace="python:portal.portal_membership.getAuthenticatedMember().getUserName()" />
</tal:block>
</div>
<p class="clear"></p>
<tal:block tal:condition="preferred_html_style_acknowledgeable_message | nothing"> <tal:block tal:condition="preferred_html_style_acknowledgeable_message | nothing">
<div id="acknowledgeable_message_render" class="acknowledgeable_message_render"> <div id="acknowledgeable_message_render" class="acknowledgeable_message_render">
<div tal:content="structure here/acknowledgeable_message_render"/> <div tal:content="structure here/acknowledgeable_message_render"/>
</div> </div>
</tal:block> </tal:block>
<div tal:content="request/portal_status_message | nothing" id="transition_message" <div class="row" tal:condition="request/portal_status_message | nothing">
class="transition_message"/> <strong>
<p tal:content="request/portal_status_message | nothing"
class="col-md-12 transition_message text-success"/>
</strong>
</div>
<tal:block tal:condition="request/field_errors | nothing"> <tal:block tal:condition="request/field_errors | nothing">
<div id="information_area" class="information_area" i18n:translate="" i18n:domain="ui"> <div class="row">
<div id="information_area" class="information_area col-md-12 alert alert-danger" i18n:translate="" i18n:domain="ui">
Input data has errors. Please look at the error messages below. Input data has errors. Please look at the error messages below.
</div> </div>
</div>
<script type="text/javascript">changed = true;</script> <script type="text/javascript">changed = true;</script>
</tal:block> </tal:block>
<tal:block metal:define-slot="context_bar" />
<div id="action" class="btn-toolbar action" metal:define-macro="action" tal:replace="nothing">
<div class="btn-group btn-group-sm">
<tal:block tal:define="document_template_list here/getDocumentTemplateList | nothing"
tal:replace="nothing"
tal:condition="document_template_list">
<tal:block tal:repeat="document_template document_template_list">
<button class="btn btn-default"
tal:attributes="value string:template ${document_template/getRelativeUrl}"
i18n:translate="" i18n:domain="ui">Add <tal:block tal:content="document_template/getTitle"
i18n:name="document_template" /></button>
</tal:block>
</tal:block>
</div>
</div> </div>
<div id="master" class="master">
<tal:block metal:define-slot="main" /> <tal:block metal:define-slot="main" />
</div> </div>
</div>
</tal:block> </tal:block>
</form> </form>
<div id="erp5_popover" class="modal fade"
tal:condition="not:is_web_mode"
>
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body"></div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div>
</body> </body>
</html> </html>
</tal:block> </tal:block>
......
...@@ -24,29 +24,45 @@ ...@@ -24,29 +24,45 @@
tal:content="structure string:installUnsavedChangesWarning('$message');"> tal:content="structure string:installUnsavedChangesWarning('$message');">
</script> </script>
<div class="document" <div class="document"
tal:define="actions actions/object_view | python: []"> tal:define="actions_object_view actions/object_view | python: []">
<div class="actions" <div class="actions"
tal:condition="python: (not is_web_mode or editable_mode) and len(actions)"> tal:condition="python: (not is_web_mode or editable_mode) and len(actions)">
<ul class="nav nav-tabs">
<li tal:repeat="action actions_object_view"
tal:attributes="class python: 'active' if action == current_action else nothing">
<a tal:attributes="href python: '%s%s%s' % (action['url'], '?' in action['url'] and '&amp;' or '?', http_parameters)"
><span i18n:translate="" i18n:domain="ui" tal:content="action/name">action_name</span></a>
</li>
<li class="pull-right">
<button tal:condition="python: not is_web_mode and form_action" <button tal:condition="python: not is_web_mode and form_action"
type="submit" class="save" title="Save" type="image"
class="save btn btn-info"
title="Save"
tal:attributes="name string:${form_action}:method; tal:attributes="name string:${form_action}:method;
onclick string:javascript:clickSaveButton('${form_action}');" onclick string:javascript:clickSaveButton('${form_action}');"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <i class="fa fa-save fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Save</span> <span class="description" i18n:translate="" i18n:domain="ui">Save</span>
</button> </button>
<ul>
<li tal:repeat="action actions"
tal:attributes="class python: action == current_action and 'selected' or 'not_selected'">
<a tal:attributes="href python: '%s%s%s' % (action['url'], '?' in action['url'] and '&amp;' or '?', http_parameters)"
><span i18n:translate="" i18n:domain="ui" tal:content="action/name">action_name</span></a>
</li> </li>
<tal:block tal:repeat="action actions/workflow">
<li class="pull-right">
<button type="button" name="Base_doAction:method"
class="btn btn-default"
tal:attributes="title action/name;
onclick string:location.href='${action/url}';"
i18n:attributes="title" i18n:domain="ui" >
<i class="image" tal:attributes="class action/icon" tal:condition="action/icon"></i>
<span class="description" tal:condition="not:action/icon" tal:content="action/name" i18n:translate="" i18n:domain="ui"/>
</button>
</li>
</tal:block>
</ul> </ul>
</div> </div>
<div tal:attributes="class python: editable_mode and 'content editable' or 'content'"> <div tal:attributes="class python: editable_mode and 'content editable' or 'content'">
<tal:block metal:define-slot="main" /> <tal:block metal:define-slot="main" />
<div class="bottom_actions" <div class="bottom_actions"
tal:condition="python: is_web_mode and editable_mode and len(actions) and form_action"> tal:condition="python: is_web_mode and editable_mode and len(actions_object_view) and form_action">
<input type="hidden" name="form_action" value="" <input type="hidden" name="form_action" value=""
tal:attributes="value form_action" /> tal:attributes="value form_action" />
<input type="hidden" name="edit_document_url" value="" <input type="hidden" name="edit_document_url" value=""
......
...@@ -261,6 +261,11 @@ class MultiRelationStringFieldWidget(Widget.LinesTextAreaWidget, ...@@ -261,6 +261,11 @@ class MultiRelationStringFieldWidget(Widget.LinesTextAreaWidget,
None, None,
) is not None ) is not None
relation_field_index = REQUEST.get('_v_relation_field_index', 0) relation_field_index = REQUEST.get('_v_relation_field_index', 0)
relation_html_string = ""
if (value == field.get_value('default')):
# XXX Default rendering with value...
relation_html_string = self.render_relation_link(field, value,
REQUEST)
html_string_list = [] html_string_list = []
for ( for (
widget_instance, widget_instance,
...@@ -276,6 +281,7 @@ class MultiRelationStringFieldWidget(Widget.LinesTextAreaWidget, ...@@ -276,6 +281,7 @@ class MultiRelationStringFieldWidget(Widget.LinesTextAreaWidget,
) )
if autocomplete_enabled: if autocomplete_enabled:
sub_html_string += self.render_autocomplete(field, key) sub_html_string += self.render_autocomplete(field, key)
sub_html_string += '<div class="input-group-btn">'
if relation_item_list is not None: if relation_item_list is not None:
if not autocomplete_enabled: if not autocomplete_enabled:
sub_html_string += self.render_wheel( sub_html_string += self.render_wheel(
...@@ -285,19 +291,20 @@ class MultiRelationStringFieldWidget(Widget.LinesTextAreaWidget, ...@@ -285,19 +291,20 @@ class MultiRelationStringFieldWidget(Widget.LinesTextAreaWidget,
relation_index=relation_field_index, relation_index=relation_field_index,
sub_index=sub_index, sub_index=sub_index,
) )
if not relation_item_list:
sub_html_string += relation_html_string
sub_html_string += '</div>' # input-group-btn
if relation_item_list: if relation_item_list:
REQUEST['relation_item_list'] = relation_item_list REQUEST['relation_item_list'] = relation_item_list
sub_html_string += NBSP + Widget.ListWidgetInstance.render( sub_html_string += Widget.ListWidgetInstance.render(
field, relation_field_id, None, REQUEST, field, relation_field_id, None, REQUEST,
) + NBSP )
REQUEST['relation_item_list'] = None REQUEST['relation_item_list'] = None
sub_html_string = '<div class="input-group">%s</div>'%sub_html_string
html_string_list.append(sub_html_string) html_string_list.append(sub_html_string)
html_string = '<br/>'.join(html_string_list)
if (value == field.get_value('default')): html_string = ''.join(html_string_list)
# XXX Default rendering with value...
relation_html_string = self.render_relation_link(field, value, REQUEST)
if relation_html_string:
html_string += NBSP + NBSP + relation_html_string
REQUEST.set('_v_relation_field_index', relation_field_index + 1) REQUEST.set('_v_relation_field_index', relation_field_index + 1)
return html_string return html_string
...@@ -337,7 +344,7 @@ class MultiRelationStringFieldWidget(Widget.LinesTextAreaWidget, ...@@ -337,7 +344,7 @@ class MultiRelationStringFieldWidget(Widget.LinesTextAreaWidget,
REQUEST = get_request() REQUEST = get_request()
relation_html_string = self.render_relation_link(field, value, REQUEST) relation_html_string = self.render_relation_link(field, value, REQUEST)
if relation_html_string: if relation_html_string:
html_string += NBSP + NBSP + relation_html_string html_string += '%s' % relation_html_string
extra = field.get_value('extra') extra = field.get_value('extra')
if extra not in (None, ''): if extra not in (None, ''):
html_string = "<div %s>%s</div>" % (extra, html_string) html_string = "<div %s>%s</div>" % (extra, html_string)
...@@ -378,11 +385,10 @@ $(document).ready(function() { ...@@ -378,11 +385,10 @@ $(document).ready(function() {
sub_index_string = '' sub_index_string = ''
else: else:
sub_index_string = '_%s' % sub_index sub_index_string = '_%s' % sub_index
return '&nbsp;<input type="image" ' \ return '<button class="btn btn-default editRelation" type="submit" ' \
'src="%s/images/exec16.png" value="update..." ' \ 'name="%s/viewSearchRelatedDocumentDialog%s%s:method">' \
'name="%s/viewSearchRelatedDocumentDialog%s%s' \ '<i class="glyphicon glyphicon-cog"></i>' \
':method"/>' % ( '</button>' % (
escape(portal_url()),
escape(portal_url.getRelativeContentURL(here.portal_selections)), escape(portal_url.getRelativeContentURL(here.portal_selections)),
escape(str(relation_index)), escape(str(relation_index)),
escape(sub_index_string), escape(sub_index_string),
...@@ -416,15 +422,14 @@ $(document).ready(function() { ...@@ -416,15 +422,14 @@ $(document).ready(function() {
if ignore_layout is not None: if ignore_layout is not None:
selection_name_html += '&amp;ignore_layout:int=%s' % int(ignore_layout) selection_name_html += '&amp;ignore_layout:int=%s' % int(ignore_layout)
# Generate plan link # Generate plan link
return '<a href="%s/%s?field_id=%s&amp;form_id=%s%s">' \ return '<a class="btn btn-default" href="%s/%s?field_id=%s&amp;form_id=%s%s">' \
'<img src="%s/images/jump.png" alt="jump" />' \ '<i class="glyphicon glyphicon-share-alt"></i>' \
'</a>' % ( '</a>' % (
escape(here.absolute_url()), escape(here.absolute_url()),
escape(field.get_value('jump_method')), escape(field.get_value('jump_method')),
escape(field.id), escape(field.id),
escape(field.aq_parent.id), escape(field.aq_parent.id),
escape(selection_name_html), escape(selection_name_html),
escape(here.getPortalObject().portal_url()),
) )
return '' return ''
......
...@@ -191,6 +191,7 @@ def create_datetime_text_sub_form(): ...@@ -191,6 +191,7 @@ def create_datetime_text_sub_form():
title="Year", title="Year",
required=0, required=0,
display_width=4, display_width=4,
css_class="col-md-4",
display_maxwidth=4, display_maxwidth=4,
max_length=4) max_length=4)
...@@ -198,6 +199,7 @@ def create_datetime_text_sub_form(): ...@@ -198,6 +199,7 @@ def create_datetime_text_sub_form():
title="Month", title="Month",
required=0, required=0,
display_width=2, display_width=2,
css_class="col-md-2",
display_maxwidth=2, display_maxwidth=2,
max_length=2) max_length=2)
...@@ -205,6 +207,7 @@ def create_datetime_text_sub_form(): ...@@ -205,6 +207,7 @@ def create_datetime_text_sub_form():
title="Day", title="Day",
required=0, required=0,
display_width=2, display_width=2,
css_class="col-md-2",
display_maxwidth=2, display_maxwidth=2,
max_length=2) max_length=2)
sub_form.add_group("date") sub_form.add_group("date")
......
...@@ -369,6 +369,7 @@ class TextWidget(Widget): ...@@ -369,6 +369,7 @@ class TextWidget(Widget):
""" """
display_maxwidth = field.get_value('display_maxwidth') or 0 display_maxwidth = field.get_value('display_maxwidth') or 0
input_type = field.get_value('input_type') or 'text' input_type = field.get_value('input_type') or 'text'
css_class = "form-control %s"%field.get_value('css_class')
if display_maxwidth > 0: if display_maxwidth > 0:
return render_element("input", return render_element("input",
type=input_type, type=input_type,
...@@ -477,11 +478,12 @@ class CheckBoxWidget(Widget): ...@@ -477,11 +478,12 @@ class CheckBoxWidget(Widget):
value="0") value="0")
] ]
css_class = "form-control " + field.get_value('css_class')
if value: if value:
rendered.append(render_element("input", rendered.append(render_element("input",
type="checkbox", type="checkbox",
name=key, name=key,
css_class=field.get_value('css_class'), css_class=css_class,
checked=None, checked=None,
extra=field.get_value('extra')) extra=field.get_value('extra'))
) )
...@@ -489,7 +491,7 @@ class CheckBoxWidget(Widget): ...@@ -489,7 +491,7 @@ class CheckBoxWidget(Widget):
rendered.append(render_element("input", rendered.append(render_element("input",
type="checkbox", type="checkbox",
name=key, name=key,
css_class=field.get_value('css_class'), css_class=css_class,
extra=field.get_value('extra')) extra=field.get_value('extra'))
) )
return "".join(rendered) return "".join(rendered)
...@@ -633,7 +635,7 @@ class TextAreaWidget(Widget): ...@@ -633,7 +635,7 @@ class TextAreaWidget(Widget):
return render_element("textarea", return render_element("textarea",
name=key, name=key,
css_class=field.get_value('css_class'), css_class="form-control " + field.get_value('css_class'),
cols=width, cols=width,
rows=height, rows=height,
contents=html_quote(value), contents=html_quote(value),
...@@ -1148,7 +1150,7 @@ class ListWidget(SingleItemsWidget): ...@@ -1148,7 +1150,7 @@ class ListWidget(SingleItemsWidget):
list_widget = render_element( list_widget = render_element(
'select', 'select',
name=key, name=key,
css_class=field.get_value('css_class', REQUEST=REQUEST), css_class="form-control " + field.get_value('css_class'),
size=field.get_value('size', REQUEST=REQUEST), size=field.get_value('size', REQUEST=REQUEST),
contents=string.join(rendered_items, "\n"), contents=string.join(rendered_items, "\n"),
extra=field.get_value('extra', REQUEST=REQUEST)) extra=field.get_value('extra', REQUEST=REQUEST))
...@@ -1187,7 +1189,7 @@ class MultiListWidget(MultiItemsWidget): ...@@ -1187,7 +1189,7 @@ class MultiListWidget(MultiItemsWidget):
'select', 'select',
name=key, name=key,
multiple=None, multiple=None,
css_class=field.get_value('css_class', REQUEST=REQUEST), css_class="form-control " + field.get_value('css_class'),
size=field.get_value('size', REQUEST=REQUEST), size=field.get_value('size', REQUEST=REQUEST),
contents=string.join(rendered_items, "\n"), contents=string.join(rendered_items, "\n"),
extra=field.get_value('extra', REQUEST=REQUEST)) extra=field.get_value('extra', REQUEST=REQUEST))
...@@ -1228,9 +1230,9 @@ class RadioWidget(SingleItemsWidget): ...@@ -1228,9 +1230,9 @@ class RadioWidget(SingleItemsWidget):
rendered_items.append(input_hidden) rendered_items.append(input_hidden)
orientation = field.get_value('orientation') orientation = field.get_value('orientation')
if orientation == 'horizontal': if orientation == 'horizontal':
return string.join(rendered_items, "&nbsp;&nbsp;") return string.join(['<label class="radio-inline">%s</label>'%i for i in rendered_items], "")
else: else:
return string.join(rendered_items, "<br />") return string.join(['<div class="radio"><label>%s</label></div>'%i for i in rendered_items], "")
def render_item(self, text, value, key, css_class, extra_item): def render_item(self, text, value, key, css_class, extra_item):
return self.render_element('input', return self.render_element('input',
...@@ -1273,9 +1275,9 @@ class MultiCheckBoxWidget(MultiItemsWidget): ...@@ -1273,9 +1275,9 @@ class MultiCheckBoxWidget(MultiItemsWidget):
rendered_items.append(render_element('input', type='hidden', name="default_%s:int" % (key, ), value="0")) rendered_items.append(render_element('input', type='hidden', name="default_%s:int" % (key, ), value="0"))
orientation = field.get_value('orientation') orientation = field.get_value('orientation')
if orientation == 'horizontal': if orientation == 'horizontal':
return string.join(rendered_items, "&nbsp;&nbsp;") return string.join(['<label class="checkbox-inline">%s</label>'%i for i in rendered_items], "")
else: else:
return string.join(rendered_items, "<br />") return string.join(['<div class="checkbox"><label>%s</label></div>'%i for i in rendered_items], "")
def render_item(self, text, value, key, css_class, extra_item): def render_item(self, text, value, key, css_class, extra_item):
return self.render_element('input', return self.render_element('input',
...@@ -1513,10 +1515,12 @@ class DateTimeWidget(Widget): ...@@ -1513,10 +1515,12 @@ class DateTimeWidget(Widget):
for sub_field_name, sub_field_value in order: for sub_field_name, sub_field_value in order:
result.append(field.render_sub_field(sub_field_name, result.append(field.render_sub_field(sub_field_name,
sub_field_value, REQUEST, key=key)) sub_field_value, REQUEST, key=key))
date_result = string.join(result, field.get_value('date_separator')) date_separator = "<p class='input-separator'>%s</p>"%field.get_value('date_separator')
date_result = string.join(result, date_separator)
if not field.get_value('date_only'): if not field.get_value('date_only'):
time_separator = "<p class='input-separator'>%s</p>"%field.get_value('time_separator')
time_result = (field.render_sub_field('hour', hour, REQUEST, key=key) + time_result = (field.render_sub_field('hour', hour, REQUEST, key=key) +
field.get_value('time_separator') + time_separator +
field.render_sub_field('minute', minute, REQUEST, key=key)) field.render_sub_field('minute', minute, REQUEST, key=key))
if use_ampm: if use_ampm:
...@@ -1525,7 +1529,7 @@ class DateTimeWidget(Widget): ...@@ -1525,7 +1529,7 @@ class DateTimeWidget(Widget):
if use_timezone: if use_timezone:
time_result += '&nbsp;' + field.render_sub_field('timezone', time_result += '&nbsp;' + field.render_sub_field('timezone',
timezone, REQUEST, key=key) timezone, REQUEST, key=key)
return date_result + '&nbsp;&nbsp;&nbsp;' + time_result return date_result + '<p class="input-separator">&ensp;</p><div class="pull-left">' + time_result + '</div>'
else: else:
return date_result return date_result
...@@ -1681,9 +1685,13 @@ def render_tag(tag, **kw): ...@@ -1681,9 +1685,13 @@ def render_tag(tag, **kw):
attr_list = [] attr_list = []
# special case handling for css_class # special case handling for css_class
if kw.has_key('css_class'): css_class = kw.get('css_class', '')
if kw['css_class'] != "": type_element = kw.get('type', '')
attr_list.append('class="%s"' % kw['css_class']) if tag == "input" and type_element == 'text':
css_class = ' '.join(('form-control', css_class))
if css_class:
attr_list.append('class="%s"' %css_class)
if 'css_class' in kw:
del kw['css_class'] del kw['css_class']
# special case handling for extra 'raw' code # special case handling for extra 'raw' code
......
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