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,25 +2,32 @@ ...@@ -2,25 +2,32 @@
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')">
value="Search" tal:attributes="value string:${search_default_text}; <div class="input-group col-md-4">
onfocus string:if (this.value=='${search_default_text}') this.value='';" <input class="quick_search_field form-control" type="text" onkeypress="submitFormOnEnter(event, this.form, 'ERP5Site_processAdvancedSearch');"
onfocus="this.value='';" value="Search" tal:attributes="value string:${search_default_text};
class="input-text" name="top_your_search_text" size="40" accesskey="4"/> onfocus string:if (this.value=='${search_default_text}') this.value='';"
<select size="1" class="input" name="top_your_search_portal_type"> onfocus="this.value='';"
<option value="" selected="selected" i18n:translate="" i18n:domain="ui">Everything</option> class="input-text" name="top_your_search_text" accesskey="4"/>
<option value="all" i18n:translate="" i18n:domain="ui">All Documents</option> <div class="input-group-btn">
<option tal:repeat="ptype here/getPortalDocumentTypeList" <select size="1" class="input form-control" name="top_your_search_portal_type"
tal:attributes="value ptype" data-width="auto">
tal:content="python:ptype" <option value="" selected="selected" i18n:translate="" i18n:domain="ui">Everything</option>
i18n:translate="" i18n:domain="ui"> <option value="all" i18n:translate="" i18n:domain="ui">All Documents</option>
Standard Type <option tal:repeat="ptype here/getPortalDocumentTypeList"
</option> tal:attributes="value ptype"
<option value="Person" i18n:translate="" i18n:domain="ui">Person</option> tal:content="python:ptype"
<option value="Organisation" i18n:translate="" i18n:domain="ui">Organisation</option> i18n:translate="" i18n:domain="ui">
</select> Standard Type
<input type="submit" name="ERP5Site_processAdvancedSearch:method" value="Search" </option>
i18n:attributes="value" i18n:domain="ui"/> <option value="Person" i18n:translate="" i18n:domain="ui">Person</option>
<option value="Organisation" i18n:translate="" i18n:domain="ui">Organisation</option>
</select>
<button type="submit" name="ERP5Site_processAdvancedSearch:method" value="Search"
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
<tal:block xmlns:tal="http://xml.zope.org/namespaces/tal" <tal:block xmlns:tal="http://xml.zope.org/namespaces/tal"
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"
id="quick_search_tab" class="selected" tal:define="current_url here/absolute_url">
tal:attributes="class python:test(selected_tab == tab['id'], 'selected', 'non_selected'); <li tal:repeat="tab here/ERP5Site_getTabList"
id tab/id"><a href="view" id="quick_search_tab" class="selected"
tal:attributes="href python:'%s/view?erp5_site_selected_tab=%s' % (current_url, tab['id'])"> tal:attributes="class python:test(selected_tab == tab['id'], 'selected active', 'non_selected');
<span> id tab/id"><a href="view"
<img tal:attributes="src python:tab['icon'] ; alt python:tab['id']" width="16px" height="16px"/> tal:attributes="href python:'%s/view?erp5_site_selected_tab=%s' % (current_url, tab['id'])">
<tal:block i18n:translate="" i18n:domain="ui" tal:content="tab/title" /></span></a></li></ul> <span>
</tal:block> <img tal:attributes="src python:tab['icon'] ; alt python:tab['id']" width="16px" height="16px"/>
<tal:block i18n:translate="" i18n:domain="ui" tal:content="tab/title" /></span></a></li></ul>
</tal:block>
\ No newline at end of file
...@@ -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,123 +85,107 @@ ...@@ -84,123 +85,107 @@
</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">
<div class="listbox-tree"> <!-- List tree mode choice -->
<tal:block tal:condition="python: show_listbox_tree_mode_selection and not is_web_mode">
<!-- Domain Report Tree mode --> <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_tree_mode_selection"/>
<div class="listbox-domain-tree-container"
tal:condition="is_domain_tree_mode">
<tal:block tal:define="selected_domain_path here/getSelectedDomainPath">
<!-- Select domain node -->
<select name="domain_root_url"
tal:attributes="onchange string:submitAction(this.form, '${context_url}/setDomainRoot')">
<tal:block tal:repeat="c here/getDomainRootList">
<option value="base_domain"
tal:define="path python: c[0]; title python: c[1]"
tal:attributes="selected python: path == selected_domain_path; value path"
tal:content="title"
i18n:translate="" i18n:domain="ui"/>
</tal:block>
</select>
<!-- Domain node contents -->
<table cellpadding="0"
summary="This table contains the domain tree"
class="listbox-table-domain-tree"
tal:attributes="class string:${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'),));
total_depth python: max([report_tree.depth for report_tree in report_tree_list] + [-1])">
<tr tal:repeat="report_tree report_tree_list">
<tal:block tal:repeat="i python: range(report_tree.depth)">
<td width="12" nowrap="nowrap">&nbsp;</td>
</tal:block>
<td colspan="1"
class="listbox-table-domain-tree-cell"
tal:attributes="colspan python: total_depth - report_tree.depth + 1">
<button type="submit"
name="foldDomain:method"
class="tree-open"
tal:condition="report_tree/is_open"
tal:content="report_tree/obj/getCompactTranslatedTitle"
tal:attributes="value string:${report_tree/domain_url}.${report_tree/depth}"/>
<button type="submit"
name="unfoldDomain:method"
class="tree-closed"
tal:condition="not: report_tree/is_open"
tal:content="report_tree/obj/getCompactTranslatedTitle"
tal:attributes="value string:${report_tree/domain_url}.${report_tree/depth}"/>
</td>
</tr>
</table>
</tal:block> </tal:block>
</div>
</div>
<div class="listbox-content"
tal:attributes="class python: test(not is_domain_tree_mode, 'listbox-content maximal-width', 'listbox-content listbox-content-fixed-width')">
<div class="listbox-head">
<div class="listbox-head-spacer"></div>
<div class="listbox-head-content">
<!-- Listbox head (in left) --> <!-- Listbox title -->
<div class="listbox-head-title"> <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_title"/>
<!-- List tree mode choice --> <!-- Number of rows in ERP5 mode -->
<div class="listbox-header-box" <tal:block tal:condition="python: not is_web_mode">
tal:condition="python: show_listbox_tree_mode_selection and not is_web_mode"> <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_number_of_records"/>
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_tree_mode_selection"/> </tal:block>
</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 --> <!-- List style display mode -->
<div class="listbox-header-box" <tal:block tal:condition="python: show_list_style_selection and not is_web_mode">
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 metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_display_style_selection"/> </tal:block>
</div>
</div> </li>
<!-- Listbox nagivation (in right) --> <!-- Listbox nagivation (in right) -->
<div class="listbox-head-navigation"> <li class="listbox-head-navigation pull-right">
<!--Show search result in web mode--> <!--Show search result in web mode-->
<div class="listbox-header-box" <div class="listbox-header-box"
tal:condition="python: is_web_mode"> tal:condition="is_web_mode">
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_number_of_records"/> <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_number_of_records"/>
</div> </div>
<!--Page navigation --> <!--Page navigation -->
<div class="listbox-header-box" <tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_navigation"
tal:condition="python: need_pagination and not is_web_mode"> tal:condition="python: need_pagination and not is_web_mode"/>
<tal:block metal:use-macro="container/ListBox_asHTMLLibrary/macros/listbox_navigation"/> </li>
</div> </ul>
</div>
</div> <div class="listbox-container row">
<div class="listbox-tree col-md-2"
tal:condition="is_domain_tree_mode">
</div> <!-- Domain Report Tree mode -->
<tal:block tal:define="selected_domain_path here/getSelectedDomainPath">
<!-- Select domain node -->
<select name="domain_root_url"
class="form-control"
tal:attributes="onchange string:submitAction(this.form, '${context_url}/setDomainRoot')">
<tal:block tal:repeat="c here/getDomainRootList">
<option value="base_domain"
tal:define="path python: c[0]; title python: c[1]"
tal:attributes="selected python: path == selected_domain_path; value path"
tal:content="title"
i18n:translate="" i18n:domain="ui"/>
</tal:block>
</select>
<!-- Domain node contents -->
<table cellpadding="0"
summary="This table contains the domain tree"
class="listbox-table-domain-tree table"
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'),));
total_depth python: max([report_tree.depth for report_tree in report_tree_list] + [-1])">
<tr tal:repeat="report_tree report_tree_list">
<tal:block tal:repeat="i python: range(report_tree.depth)">
<td width="12" nowrap="nowrap">&nbsp;</td>
</tal:block>
<td colspan="1"
class="listbox-table-domain-tree-cell"
tal:attributes="colspan python: total_depth - report_tree.depth + 1">
<button type="submit"
name="foldDomain:method"
class="btn btn-default btn-xs tree-open"
tal:condition="report_tree/is_open"
tal:content="report_tree/obj/getCompactTranslatedTitle"
tal:attributes="value string:${report_tree/domain_url}.${report_tree/depth}"/>
<button type="submit"
name="unfoldDomain:method"
class="btn btn-link btn-xs tree-closed"
tal:condition="not: report_tree/is_open"
tal:content="report_tree/obj/getCompactTranslatedTitle"
tal:attributes="value string:${report_tree/domain_url}.${report_tree/depth}"/>
</td>
</tr>
</table>
</tal:block>
</div>
<div class="listbox-content"
tal:attributes="class python: 'listbox-content col-md-12' if not is_domain_tree_mode else 'listbox-content col-md-10'">
</div>
<div class="listbox-body"> <div class="listbox-body table-responsive">
<table class="listbox" <table class="table table-striped table-condensed listbox"
tal:attributes="class python: 'listbox %s %s-%s' %(field_id, field_id, list_style)"> tal:attributes="class string:table table-striped table-condensed listbox ${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"
name="setSelectionQuickSortOrder:method" data-show=".sort-arrow"
title="Ascending Display" data-form=".content">
class="sort-button sort-button-asc" <i tal:attributes="class icon_class" tal:condition="icon_class" style="display: none;"></i>
tal:attributes="value python:test(sort_order=='ascending', listbox_field_id+':none', listbox_field_id+':asc')" <tal:block i18n:translate="" i18n:domain="ui" tal:content="title"/>
i18n:domain="ui" i18n:attributes="title"> <div class="content pull-left">
<img src="images/transparent-image.gif" <div class="btn-group-vertical btn-group-xs"
alt="Ascending Display" tal:condition="is_gadget_mode"
title="Ascending Display" tal:define ="params python: {'setSelectionQuickSortOrder:method':listbox_field_id};">
tal:attributes="src string:${portal_url_string}/images/transparent-image.gif; <button
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');" type="button"
i18n:domain="ui" i18n:attributes="title;alt" /> name="setSelectionQuickSortOrder:method"
</button> alt="Ascending Display"
<button tal:condition="not:is_gadget_mode" title="Ascending Display"
type="submit" class="sort-button sort-button-asc btn btn-default"
name="setSelectionQuickSortOrder:method" tal:attributes="value python: listbox_field_id+':none' if sort_order=='ascending' else listbox_field_id+':asc';
title="Descending Display" onclick python: real_context.KnowledgePad_generateAjaxCall(context_url+'/'+form_id,box,dom_id,params);
class="sort-button sort-button-desc" class python: 'sort-button sort-button-asc btn btn-info' if sort_order=='ascending' else 'sort-button sort-button-asc btn btn-default';"
tal:attributes="value python:test(sort_order=='descending', listbox_field_id+':none', listbox_field_id+':desc')" i18n:domain="ui" i18n:attributes="alt;title">
i18n:domain="ui" i18n:attributes="title"> <i class="fa fa-arrow-up"></i>
<img src="images/transparent-image.gif" </button>
alt="Descending Display" <button
title="Descending Display" type="button"
tal:attributes="src string:${portal_url_string}/images/transparent-image.gif; name="setSelectionQuickSortOrder:method"
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');" alt="Descending Display"
i18n:domain="ui" i18n:attributes="title;alt" /> title="Descending Display"
</button> 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"
title="Ascending Display"
class="sort-button sort-button-asc btn btn-default"
tal:attributes="value python: listbox_field_id+':none' if sort_order=='ascending' else listbox_field_id+':asc';
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="submit"
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';
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>
</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">
...@@ -554,4 +563,4 @@ ...@@ -554,4 +563,4 @@
</div> </div>
</div> </div>
</tal:block> </tal:block>
\ No newline at end of file
<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 -->
...@@ -314,4 +336,4 @@ ...@@ -314,4 +336,4 @@
tal:content="page_index"/> tal:content="page_index"/>
</tal:block> </tal:block>
</tal:block> </tal:block>
<!-- Listbox Navigation Macros --> <!-- Listbox Navigation Macros -->
\ No newline at end of file
...@@ -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">
<select name="select_jump" <div id="context_bar" class="well well-sm">
onchange="submitAction(this.form,'Base_doJump')"> <ul class="nav btn-toolbar">
<option selected="selected" value="" <li id="jump" metal:define-macro="jump"
i18n:translate="" i18n:domain="ui">Jump...</option> title="Go"
<tal:block tal:repeat="jump actions/object_jump | nothing"> i18n:attributes="title" i18n:domain="ui"
<option tal:attributes="value jump/url" tal:condition="jumps">
tal:content="jump/name" i18n:translate="" i18n:domain="ui" /> <select name="select_jump"
</tal:block> class="selectpicker"
<tal:block tal:condition="preferred_html_style_developper_mode"> data-width="4em"
<tal:block tal:condition="python: type_info is not None and type_info.Base_getSourceVisibility()" tal:condition="jumps"
tal:define="type_info python: portal.portal_types.getTypeInfo(here)"> onchange="submitAction(this.form,'Base_doJump')">
<option value="1" disabled="disabled" i18n:translate="" i18n:domain="ui">-- Developer Mode --</option> <option disabled="disabled" selected="selected" value="" data-icon="fa fa-plane"></option>
<option tal:attributes="value type_info/absolute_url_path" <tal:block tal:repeat="jump jumps">
i18n:translate="" i18n:domain="ui">Edit Portal Type '<tal:block tal:content="here/getPortalTypeName" <option tal:attributes="value jump/url"
i18n:name="portal_type" i18n:translate="" i18n:domain="ui" />'</option> tal:content="jump/name" i18n:translate="" i18n:domain="ui" />
</tal:block>
<tal:block tal:condition="portal/portal_workflow/Base_getSourceVisibility">
<option value="1" disabled="disabled" i18n:translate="" i18n:domain="ui">-- Workflows --</option>
<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" />
</tal:block> </tal:block>
</tal:block> </select>
</tal:block> </li>
</select>
<button type="submit" name="Base_doJump:method" title="Jump"
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="develop_links" metal:define-macro="dev_links"
tal:condition="preferred_html_style_developper_mode">
<span id="action" class="action" metal:define-macro="action"> <select name="select_jump"
<select name="select_action" class="selectpicker"
onchange="submitAction(this.form,'Base_doAction')"> data-width="4em"
<option selected="selected" value="" onchange="submitAction(this.form,'Base_doJump')">
i18n:translate="" i18n:domain="ui">Action...</option> <option disabled="disabled" selected="selected" value="" data-icon="fa fa-cog"></option>
<tal:block tal:repeat="content_id here/getVisibleAllowedContentTypeList | nothing"> <tal:block tal:condition="python: type_info is not None and type_info.Base_getSourceVisibility()"
<option tal:attributes="value string:add $content_id" tal:define="type_info python: portal.portal_types.getTypeInfo(here)">
i18n:translate="" i18n:domain="ui">Add <tal:block tal:content="content_id" <optgroup i18n:attributes="label" i18n:domain="ui" label="Developer Mode">
i18n:name="portal_type" i18n:translate="" i18n:domain="ui" /></option> <option tal:attributes="value type_info/absolute_url_path"
</tal:block> i18n:translate="" i18n:domain="ui">Edit Portal Type '<tal:block tal:content="here/getPortalTypeName"
<tal:block tal:define="document_template_list here/getDocumentTemplateList | nothing" i18n:name="portal_type" i18n:translate="" i18n:domain="ui" />'</option>
tal:condition="document_template_list"> </optgroup>
<option disabled="disabled">-- <tal:block i18n:translate="" i18n:domain="ui">Templates</tal:block> --</option> </tal:block>
<tal:block tal:repeat="document_template document_template_list"> <tal:block tal:condition="portal/portal_workflow/Base_getSourceVisibility">
<option tal:attributes="value string:template ${document_template/getRelativeUrl}" <optgroup i18n:attributes="label" i18n:domain="ui" label="Workflows">
i18n:translate="" i18n:domain="ui">Add <tal:block tal:content="document_template/getTitle" <tal:block tal:repeat="workflow python: portal.portal_workflow.getWorkflowsFor(here)">
i18n:name="document_template" /></option> <option tal:attributes="value string:${workflow/absolute_url}/manage_properties" tal:content="workflow/title" />
</tal:block> </tal:block>
</tal:block> </optgroup>
<option disabled="disabled">-- <tal:block i18n:translate="" i18n:domain="ui">Workflows</tal:block> --</option> </tal:block>
<tal:block tal:repeat="action actions/workflow"> </select>
<option tal:content="action/name" </li>
tal:attributes="value string:workflow ${action/url}"
i18n:translate="" i18n:domain="ui" />
</tal:block>
<option disabled="disabled">-- <tal:block i18n:translate="" i18n:domain="ui">Object</tal:block> --</option>
<tal:block tal:repeat="action actions/object_action | nothing">
<option tal:content="action/name"
tal:attributes="value string:object ${action/url}"
i18n:translate="" i18n:domain="ui" />
</tal:block>
<tal:block 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">
<option tal:content="action/name"
tal:attributes="value string:object ${action/url}"
i18n:translate="" i18n:domain="ui" />
</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>
<button type="submit" name="Base_doAction:method" title="Action"
i18n:attributes="title" i18n:domain="ui">
<span class="image"></span>
<span class="description">Action</span>
</button>
</span>
<span class="tool_buttons" metal:define-macro="tool_buttons">
<!-- XXX: exchange_actions seems to be bad condition --> <li id="action" class="btn-group action" metal:define-macro="action" tal:replace="nothing">
<span class="first" <select name="select_action"
tal:define="search_actions actions/object_search | nothing; class="form-control"
exchange_actions actions/object_exchange | nothing; onchange="submitAction(this.form,'Base_doAction')">
report_actions actions/object_report | nothing; <option selected="selected" value=""
button_actions actions/object_button | nothing; i18n:translate="" i18n:domain="ui">Action...</option>
fast_input_actions actions/object_fast_input | nothing; <tal:block tal:repeat="content_id here/getVisibleAllowedContentTypeList | nothing">
sort_actions actions/object_sort | nothing; <option tal:attributes="value string:add $content_id"
ui_actions actions/object_ui | nothing; i18n:translate="" i18n:domain="ui">Add <tal:block tal:content="content_id"
print_actions actions/object_print | nothing; i18n:name="portal_type" i18n:translate="" i18n:domain="ui" /></option>
list_mode list_mode | nothing; </tal:block>
can_modify_portal_content python: portal.portal_membership.checkPermission('Modify portal content', here)"> <tal:block tal:define="document_template_list here/getDocumentTemplateList | nothing"
<span class="separator"><!--separator--></span> tal:condition="document_template_list">
<tal:block tal:condition="list_mode"> <option disabled="disabled">-- <tal:block i18n:translate="" i18n:domain="ui">Templates</tal:block> --</option>
<button class="cut" type="submit" name="Folder_cut:method" title="Cut" <tal:block tal:repeat="document_template document_template_list">
i18n:attributes="title" i18n:domain="ui" <option tal:attributes="value string:template ${document_template/getRelativeUrl}"
tal:condition="can_modify_portal_content"> i18n:translate="" i18n:domain="ui">Add <tal:block tal:content="document_template/getTitle"
<span class="image"></span> i18n:name="document_template" /></option>
<span class="description" i18n:translate="" i18n:domain="ui">Cut</span> </tal:block>
</button> </tal:block>
<button class="copy" type="submit" name="Folder_copy:method" title="Copy" <option disabled="disabled">-- <tal:block i18n:translate="" i18n:domain="ui">Workflows</tal:block> --</option>
i18n:attributes="title" i18n:domain="ui"> <tal:block tal:repeat="action actions/workflow">
<span class="image"></span> <option tal:content="action/name"
<span class="description" i18n:translate="" i18n:domain="ui">Copy</span> tal:attributes="value string:workflow ${action/url}"
</button> i18n:translate="" i18n:domain="ui" />
<button class="paste" type="submit" name="Folder_paste:method" title="Paste" </tal:block>
<option disabled="disabled">-- <tal:block i18n:translate="" i18n:domain="ui">Object</tal:block> --</option>
<tal:block tal:repeat="action actions/object_action | nothing">
<option tal:content="action/name"
tal:attributes="value string:object ${action/url}"
i18n:translate="" i18n:domain="ui" />
</tal:block>
<tal:block 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">
<option tal:content="action/name"
tal:attributes="value string:object ${action/url}"
i18n:translate="" i18n:domain="ui" />
</tal:block>
</tal:block>
</select>
<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" i18n:translate="" i18n:domain="ui">Paste</span> <span class="description">Action</span>
</button> </button>
<span class="separator"><!--separator--></span> </li>
</tal:block>
<button tal:condition="print_actions" class="print" type="submit" name="Folder_print:method" title="Print" <tal:block metal:define-macro="tool_buttons">
i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <!-- XXX: exchange_actions seems to be bad condition -->
<span class="description" i18n:translate="" i18n:domain="ui">Print</span> <tal:block
</button> tal:define="search_actions actions/object_search | nothing;
<button class="new" type="submit" title="New" exchange_actions actions/object_exchange | nothing;
tal:attributes="name python: list_mode and 'Folder_create:method' or 'Base_createNewDocument:method'" report_actions actions/object_report | nothing;
i18n:attributes="title" i18n:domain="ui"> button_actions actions/object_button | nothing;
<span class="image"></span> fast_input_actions actions/object_fast_input | nothing;
<span class="description" i18n:translate="" i18n:domain="ui">New</span> sort_actions actions/object_sort | nothing;
</button> ui_actions actions/object_ui | nothing;
<button class="clone" type="submit" title="Clone" print_actions actions/object_print | nothing;
name="Base_createCloneDocument:method" list_mode list_mode | nothing;
tal:condition="not: list_mode" can_modify_portal_content python: portal.portal_membership.checkPermission('Modify portal content', here)">
<li
tal:condition="content_ids"
title="Add"
tal:define="content_ids here/getVisibleAllowedContentTypeList;
content_ids_more python:len(content_ids) &gt; 1"
i18n:attributes="title" i18n:domain="ui"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <button class="btn btn-default btn-group new" type="submit"
<span class="description" i18n:translate="" i18n:domain="ui">Clone</span> name="Base_doAction:method"
</button> tal:attributes="title content_id;
<button tal:condition="list_mode" class="delete" type="submit" name="Folder_deleteObjectList:method" title="Delete" 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"> i18n:attributes="title" i18n:domain="ui">
<span class="image"></span> <button class="btn btn-default new" type="submit"
<span class="description" i18n:translate="" i18n:domain="ui">Delete</span> name="Base_doAction:method"
</button> tal:attributes="title document_template/getTitle;
<tal:block tal:condition="not: list_mode"> value string:template ${document_template/getRelativeUrl}"
<tal:block tal:condition="request/selection_index | nothing"> tal:repeat="document_template document_templates"
<span class="separator"><!--separator--></span> tal:condition="not:document_templates_more">
<a class="jump_first" title="First" <i class="fa fa-file-o fa-lg"></i>
tal:attributes="href string:portal_selections/viewFirst?$http_parameters" <span class="description" i18n:translate="" i18n:domain="ui">Add <tal:block
i18n:attributes="title" i18n:domain="ui"> tal:content="document_template/getTitle"
<span class="image"></span> i18n:name="portal_type" /></span>
<span class="description" i18n:translate="" i18n:domain="ui">First</span> </button>
</a> <select class="selectpicker"
<a class="jump_previous" title="Previous" name="select_action"
tal:attributes="href string:portal_selections/viewPrevious?$http_parameters" data-width="4em"
i18n:attributes="title" i18n:domain="ui"> tal:condition="document_templates_more"
<span class="image"></span> onchange="submitAction(this.form,'Base_doAction')">
<span class="description" i18n:translate="" i18n:domain="ui">Previous</span> <option disabled="disabled" selected="selected" value="" data-icon="fa fa-file-o"></option>
</a> <option tal:attributes="value string:template ${document_template/getRelativeUrl}"
<a class="list_mode" title="List Mode" tal:attributes="href python: here.portal_selections.getSelectionListUrlFor(request.get('selection_name', None))" tal:repeat="document_template document_templates"
i18n:attributes="title" i18n:domain="ui"> tal:content="document_template/getTitle"
<span class="image"></span> i18n:translate="" i18n:domain="ui"/>
<span class="description" i18n:translate="" i18n:domain="ui">List Mode</span> </select>
</a> </li>
<a class="jump_next" title="Next" <li class="btn-group" tal:condition="list_mode">
tal:attributes="href string:portal_selections/viewNext?$http_parameters" <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"
<span class="image"></span> tal:condition="can_modify_portal_content">
<span class="description" i18n:translate="" i18n:domain="ui">Next</span> <i class="fa fa-cut fa-lg"></i>
</a> <span class="description" i18n:translate="" i18n:domain="ui">Cut</span>
<a class="jump_last" title="Last" </button>
tal:attributes="href string:portal_selections/viewLast?$http_parameters" <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">Last</span> <span class="description" i18n:translate="" i18n:domain="ui">Copy</span>
</a> </button>
<button class="paste btn btn-default" type="submit" name="Folder_paste:method" title="Paste"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-paste fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Paste</span>
</button>
</li>
<li class="btn-group">
<button class="btn btn-default new" type="submit" title="New"
name="Base_createNewDocument:method"
tal:condition="not: list_mode"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-file-o fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">New</span>
</button>
<button class="btn btn-default clone" type="submit" title="Clone"
name="Base_createCloneDocument:method"
tal:condition="not: list_mode"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-copy fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Clone</span>
</button>
<button tal:condition="list_mode" class="delete btn btn-default" type="submit" name="Folder_deleteObjectList:method" title="Delete"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-trash-o fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Delete</span>
</button>
<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">
<a class="jump_first btn btn-default" title="First"
tal:attributes="href string:portal_selections/viewFirst?$http_parameters"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-angle-double-left fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">First</span>
</a>
<a class="jump_previous btn btn-default" title="Previous"
tal:attributes="href string:portal_selections/viewPrevious?$http_parameters"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-angle-left fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Previous</span>
</a>
<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">
<i class="fa fa-align-justify fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">List Mode</span>
</a>
<a class="jump_next btn btn-default" title="Next"
tal:attributes="href string:portal_selections/viewNext?$http_parameters"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-angle-right fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Next</span>
</a>
<a class="jump_last btn btn-default" title="Last"
tal:attributes="href string:portal_selections/viewLast?$http_parameters"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-angle-double-right fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Last</span>
</a>
</tal:block>
</li>
<li class="btn-group" tal:condition="list_mode">
<a tal:condition="search_actions" class="find btn btn-default" title="Find"
tal:attributes="href python: portal.ERP5Site_renderCustomLink(search_actions[0]['url'], http_parameter_list, dialog_category='object_search')"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-search fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Find</span>
</a>
<button class="show_all btn btn-default" type="submit" name="Folder_show:method" title="Show All"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-bars fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Show All</span>
</button>
<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 btn btn-default' or 'filter btn btn-default';"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-filter fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Filter</span>
</button>
<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')"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-sort-amount-asc fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Sort</span>
</a>
</li>
<li class="btn-group">
<button tal:condition="exchange_actions" class="import_export btn btn-default"
type="submit" name="Base_doExchange:method" title="Import / Export"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-exchange fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Import / Export</span>
</button>
<button tal:condition="report_actions" class="report btn btn-default" type="submit" name="Base_doReport:method" title="Report"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-bar-chart-o fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Report</span>
</button>
<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')"
i18n:attributes="title" i18n:domain="ui">
<span class="image"></span>
<span class="description" i18n:translate="" i18n:domain="ui">Fast Input</span>
</a>
</li>
<li class="btn-group" tal:condition="button_actions">
<tal:block tal:repeat="button_action button_actions">
<a class="btn btn-default" tal:attributes="href python: '%s%s%s' % (button_action['url'], '?' in button_action['url'] and '&amp;' or '?', http_parameters)">
<i i18n:attributes="title" i18n:domain="ui"
tal:attributes="class button_action/icon;
title button_action/name;
alt button_action/name" ></i>
</a>
</tal:block>
</li>
<li class="btn-group pull-right" tal:condition="list_mode">
<a class="configure btn btn-default" title="Configure"
tal:attributes="href python: portal.ERP5Site_renderCustomLink(ui_actions[0]['url'], http_parameter_list, dialog_category='object_ui')"
i18n:attributes="title" i18n:domain="ui">
<i class="fa fa-wrench fa-lg"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Configure</span>
</a>
</li>
</tal:block> </tal:block>
</tal:block> </tal:block>
<tal:block tal:condition="list_mode"> <li class="btn-group">
<span class="separator"><!--separator--></span> <tal:block tal:repeat="action actions/object_action | nothing">
<a tal:condition="search_actions" class="find" title="Find" <button class="btn btn-default"
tal:attributes="href python: portal.ERP5Site_renderCustomLink(search_actions[0]['url'], http_parameter_list, dialog_category='object_search')" 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"
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'))"
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">Find</span> <span class="description" i18n:translate="" i18n:domain="ui">Help</span>
</a> </a>
<button class="show_all" type="submit" name="Folder_show:method" title="Show All" <a tal:condition="preferred_html_style_developper_mode"
i18n:attributes="title" i18n:domain="ui"> class="inspect_object btn btn-default" title="Inspect object" href="Base_viewInspectionReport"
<span class="image"></span>
<span class="description" i18n:translate="" i18n:domain="ui">Show All</span>
</button>
<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';"
i18n:attributes="title" i18n:domain="ui">
<span class="image"></span>
<span class="description" i18n:translate="" i18n:domain="ui">Filter</span>
</button>
<a tal:condition="sort_actions" class="sort" title="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-stethoscope"></i>
<span class="description" i18n:translate="" i18n:domain="ui">Sort</span> <span class="description" i18n:translate="" i18n:domain="ui">Inspect Object</span>
</a> </a>
</tal:block> <a tal:condition="here/hasActivity | nothing"
<span tal:condition="exchange_actions | report_actions" class="activity_pending btn btn-default"
class="separator"><!--separator--></span> title="Activity Pending"
<button tal:condition="exchange_actions" class="import_export" tal:attributes="href python: portal.portal_membership.checkPermission('View management screens', portal.portal_activities) and '%s/portal_activities/manageActivities' % (portal.portal_url()) or '#'"
type="submit" name="Base_doExchange:method" title="Import / Export" i18n:attributes="title" i18n:domain="ui">
i18n:attributes="title" i18n:domain="ui"> <i class="fa fa-spinner"></i>
<span class="image"></span> <span class="description" i18n:translate="" i18n:domain="ui">Activity Pending</span>
<span class="description" i18n:translate="" i18n:domain="ui">Import / Export</span> </a>
</button> </li>
<button tal:condition="report_actions" class="report" type="submit" name="Base_doReport:method" title="Report" </ul>
i18n:attributes="title" i18n:domain="ui"> </div>
<span class="image"></span>
<span class="description" i18n:translate="" i18n:domain="ui">Report</span>
</button>
<a tal:condition="fast_input_actions" class="fast_input" title="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">
<span class="image"></span>
<span class="description" i18n:translate="" i18n:domain="ui">Fast Input</span>
</a>
<tal:block tal:condition="button_actions">
<span class="separator"><!--separator--></span>
<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)">
<img i18n:attributes="title" i18n:domain="ui"
tal:attributes="src button_action/icon;
title button_action/name;
alt button_action/name" />
</a>
</tal:block>
</tal:block>
<tal:block tal:condition="list_mode">
<tal:block tal:condition="ui_actions">
<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')"
i18n:attributes="title" i18n:domain="ui">
<span class="image"></span>
<span class="description" i18n:translate="" i18n:domain="ui">Configure</span>
</a>
</tal:block>
</tal:block>
</span>
<span class="second">
<a tal:condition="preferred_html_style_contextual_help"
class="jump_help" 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'))"
i18n:attributes="title" i18n:domain="ui">
<span class="image"></span>
<span class="description" i18n:translate="" i18n:domain="ui">Help</span>
</a>
<a tal:condition="preferred_html_style_developper_mode"
class="inspect_object" title="Inspect object" href="Base_viewInspectionReport"
i18n:attributes="title" i18n:domain="ui">
<span class="image"></span>
<span class="description" i18n:translate="" i18n:domain="ui">Inspect Object</span>
</a>
<a tal:condition="here/hasActivity | nothing" class="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 '#'"
i18n:attributes="title" i18n:domain="ui">
<span class="image"></span>
<span class="description" i18n:translate="" i18n:domain="ui">Activity Pending</span>
</a>
</span>
</span>
<p class="clear"></p>
</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>
...@@ -49,4 +58,4 @@ ...@@ -49,4 +58,4 @@
</tal:block> </tal:block>
</tal:block> </tal:block>
</tal:block> </tal:block>
</tal:block> </tal:block>
\ No newline at end of file
...@@ -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_form{
padding-right: 15px;
#main_bar, /* BBB */ padding-left: 15px;
.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 */ .modal-dialog {
.main_bar .first, width: inherit;
#context_bar .first, /* BBB */ padding-left: 70px;
.context_bar .first { padding-right: 70px;
float: left;
vertical-align: middle;
} }
#context_bar #jump, /* BBB */ .bottom .input-group.col-md-12 {
.context_bar .jump,
#main_bar .jump, /* BBB */
.main_bar .jump {
margin-left: 10px;
}
.listbox_title_line select,
#context_bar select, /* BBB */
.context_bar select,
#main_bar select, /* BBB */
.main_bar select {
color: <dtml-var alternate_font_color>;
}
#main_bar .second, /* BBB */
.main_bar .second,
#context_bar .second, /* BBB */
.context_bar .second {
float: right;
vertical-align: middle;
}
#main_bar button, /* BBB */
.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 */ .popover .input-group input.form-control {
.context_bar .tool_buttons { width: auto;
vertical-align: middle;
}
#context_bar .tool_buttons a, /* BBB */
.context_bar .tool_buttons a {
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 */ .field > .form-group.row {
.context_bar .action button .image { margin-bottom: 1px;
background-image: url('images/exec.png');
} }
#context_bar .tool_buttons .list_mode .image, /* BBB */ /*increase vertical distanse between elements*/
.context_bar .tool_buttons .list_mode .image { .field {
background-image: url('images/text_block.png'); margin-bottom: 7px;
} }
#context_bar .tool_buttons .new .image, /* BBB */ /*decrease top padding to make lable for form higher
.context_bar .tool_buttons .new .image { so 2 words label looks opposite it's field*/
background-image: url('images/filenew.png'); .form-horizontal .control-label, .form-horizontal .radio, .form-horizontal .checkbox, .form-horizontal .radio-inline, .form-horizontal .checkbox-inline {
padding-top: 0px;
} }
.input-group-btn {
#context_bar .tool_buttons .clone .image, /* BBB */ vertical-align: top;
.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;
} }
/*lower noneditable fields to match it's label*/
.document .actions button.save span.image { .form-control-static {
width: 48px; padding-top: 0px;
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 { /* listbox table in thumbnail style
border-bottom-color: <dtml-var background_color>; In thumbnail style we usually have only one thumbnail colum which through CSS
} we show as floating box table row.
*/
.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 {
padding: 0.5em 0;
}
div.search.result .resultList p {margin-bottom: 0}
div.search.result .resultList h3 {
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 {
border: 1px solid #dedade;
background: #eee;
}
div.search.result .resultList a .search_result_title {
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;
}
div.search.result .resultList table.listbox td {
vertical-align: middle;
border: transparent;
margin:0;
}
div.search.result .resultList table.listbox td ul {list-style: none}
div.search.result .resultList table.listbox td ul li {margin: 0}
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 { .listbox-table-data-cell > input.form-control {
white-space: nowrap; padding-left: 3px;
padding-right: 2px;
width: auto;
} }
.MatrixContent tr.DataA { .document > .content {
color: inherit; margin-top:10px;
background-color: <dtml-var listbox_odd_background_color>;
} }
.MatrixContent tr.DataB { .bootstrap-select.btn-group, .bootstrap-select.btn-group[class*="span"] {
color: inherit; margin-bottom: 0;
background-color: <dtml-var listbox_even_background_color>;
} }
.MatrixContent tr.DataA:hover, .btn.btn-default.btn-group {
.MatrixContent tr.DataB:hover { margin-right: 5px;
color: inherit;
background-color: <dtml-var listbox_hover_background_color>;
} }
.MatrixContent td { .bootstrap-select.btn-group:not(.input-group-btn),
border-color: <dtml-var document_border_color>; .bootstrap-select.btn-group[class*="span"] {
border-style: solid; float: left;
border-top-width: 0; margin-right: 5px;
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{
background-image:url("images/1rightarrowb.png");
}
div.pdf-preview-navigation img.last{
background-image:url("images/2rightarrowb.png");
}
.horizontal_align_form_box > div.input {
float: right;
width: 70%; /* because label width is 30%*/
}
.horizontal_align_form_box > div.input > fieldset > div.field {
clear: none;
float: left;
width: auto;
}
.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>
<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>
<item> <item>
<key> <string>_vars</string> </key> <key> <string>precondition</string> </key>
<value> <value> <string></string> </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,42 +231,40 @@ var addOnChangeEventHandler = function() { ...@@ -229,42 +231,40 @@ 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" || $(this).prop("tagName") == "TEXTAREA") {
$(this).prop("tagName") == "TEXTAREA") { if ($(this).val() == "update..." ||
if ($(this).val() == "update..." || ($(this).prop("tagName") == "INPUT" &&
($(this).prop("tagName") == "INPUT" && $(this).attr("type") == 'submit')) {
$(this).attr("type") == 'submit')) { // this is a relation field wheel or a submit form button
// this is a relation field wheel or a submit form button this.onclick = function() { changed = false;};
this.onclick = function() { changed = false;}; } else {
} else { if (!this.onchange) {
if (!this.onchange) { this.onchange = function() { changed = true; };
this.onchange = function() { changed = true; };
}
} }
} }
/* Listbox or MatrixBox */ }
if ($(this).prop("tagName") == "DIV" && ( /* Listbox or MatrixBox */
$(this).attr("class") == "listbox-container" || if ($(this).prop("tagName") == "DIV" && (
$(this).attr("class") == "MatrixContent")) { $(this).attr("class") == "listbox-container" ||
$(this).find('td').each(function(){ $(this).attr("class") == "MatrixContent")) {
if ($(this).attr("class") == "listbox-search-line") { $(this).find('td').each(function(){
return non-false; if ($(this).attr("class") == "listbox-search-line") {
return non-false;
}
$(this).find('input').each(function(){
if ($(this).attr("type") != "hidden" &&
!this.onchange) {
this.onchange = function() { changed = true; };
} }
$(this).find('input').each(function(){
if ($(this).attr("type") != "hidden" &&
!this.onchange) {
this.onchange = function() { changed = true; };
}
});
return true;
}); });
} return true;
}); });
} }
});
}); });
}; };
...@@ -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,30 +13,48 @@ ...@@ -11,30 +13,48 @@
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:condition="preferred_html_style_developper_mode">
<tal:block metal:use-macro="developper_shortcut_render/macros/field_developper" />
</tal:block>
<tal:block tal:condition="preferred_html_style_translator_mode">
<tal:block metal:use-macro="developper_shortcut_render/macros/field_translator" />
</tal:block>
<tal:block tal:repeat="html_tuple html_render"> <tal:block tal:repeat="html_tuple html_render">
<label> <div class="form-group row"
<tal:block tal:content="structure python: html_tuple[0]" tal:condition="python: field_editable or html_tuple[1]">
i18n:translate="" i18n:domain="ui" /> <tal:block tal:condition="python:(gid != 'bottom') and html_tuple[0]">
<tal:block tal:condition="preferred_html_style_developper_mode"> <label class="control-label col-md-2"
<tal:block metal:use-macro="developper_shortcut_render/macros/field_developper" /> 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>
<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:block tal:condition="preferred_html_style_translator_mode"> <tal:block tal:condition="python:gid == 'bottom' or not html_tuple[0]">
<tal:block metal:use-macro="developper_shortcut_render/macros/field_translator" /> <div class="col-md-12" tal:content="structure python: html_tuple[1]" />
</tal:block> </tal:block>
</label> <span tal:condition="field_has_error"
<div class="input" tal:content="structure python: html_tuple[1]" /> tal:attributes="class string:text-danger col-md-offset-${field_label_width}"
<span tal:condition="field_has_error" tal:content="python: field_errors[field_id].error_text"
class="error" i18n:translate="" i18n:domain="ui" />
tal:content="python: field_errors[field_id].error_text" </div>
i18n:translate="" i18n:domain="ui" />
<p class="clear" tal:condition="not:is_web_mode"></p>
</tal:block> </tal:block>
</div> </div>
</tal:block> </tal:block>
</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>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,30 +50,36 @@ ...@@ -49,30 +50,36 @@
, '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">
onchange="submitAction(this.form,'Base_doDialog')"> <select name="select_dialog" id="dialog_selector" class="form-control"
onchange="submitAction(this.form,'Base_doDialog')">
<tal:block tal:repeat="action dialog_actions"> <tal:block tal:repeat="action dialog_actions">
<option tal:attributes="value action/url; <option tal:attributes="value action/url;
selected python: action == current_action and 'selected' or None" selected python: action == current_action and 'selected' or None"
tal:content="action/name" tal:content="action/name"
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"
<span class="description" class="btn btn-default">
i18n:translate="" i18n:domain="ui">Go</span> <i class="fa fa-repeat"></i>
</button> <span class="description"
i18n:translate="" i18n:domain="ui">Go</span>
</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" />
...@@ -112,4 +118,4 @@ ...@@ -112,4 +118,4 @@
</tal:block> </tal:block>
</tal:block> </tal:block>
</tal:block> </tal:block>
\ No newline at end of file
...@@ -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';
<legend i18n:translate="" i18n:domain="ui" tal:condition="group/gtitle" tal:content="group/gtitle" class="group_title"></legend> gid_class python: gid_class + ' pull-right' if gid == 'right' else gid_class;
<tal:block tal:repeat="field python: form.get_fields_in_group(group['goid'])"> isHidden python: not gid.find('hidden');
<tal:block metal:use-macro="field_render" /> ">
<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> </tal:block>
</fieldset> <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>
<tal:block tal:repeat="field python: form.get_fields_in_group(group['goid'])">
<tal:block metal:use-macro="field_render" />
</tal:block>
</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
...@@ -18,12 +18,13 @@ ...@@ -18,12 +18,13 @@
dummy python: local_parameter_list.update({'cancel_url': cancel_url}); dummy python: local_parameter_list.update({'cancel_url': cancel_url});
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);
...@@ -87,4 +88,4 @@ ...@@ -87,4 +88,4 @@
<tal:block metal:define-macro="http_definitions"> <tal:block metal:define-macro="http_definitions">
<tal:block tal:replace="structure python: modules['ZTUtils'].make_hidden_input(**http_parameter_list)" /> <tal:block tal:replace="structure python: modules['ZTUtils'].make_hidden_input(**http_parameter_list)" />
</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>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,12 +3,34 @@ ...@@ -3,12 +3,34 @@
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=""
i18n:translate="" i18n:domain="ui">My Favourites</option> i18n:translate="" i18n:domain="ui">My Favourites</option>
<tal:block tal:repeat="action ordered_global_actions"> <tal:block tal:repeat="action ordered_global_actions">
...@@ -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>
value="Search" tal:attributes="value string:${search_default_text}; <li class="navbar-form"
onfocus string:if (this.value=='${search_default_text}') this.value='';" tal:condition="not: portal/portal_membership/isAnonymousUser">
onfocus="this.value='';" <select
onkeypress="submitFormOnEnter(event, this.form, 'ERP5Site_viewQuickSearchResultList');" /> class="selectpicker"
<button type="submit" name="ERP5Site_viewQuickSearchResultList:method" title="Search" data-style=""
i18n:attributes="title" i18n:domain="ui"> data-width="auto"
<span class="image"></span> data-container='body'
<span class="description" onChange="window.location = this.value"
i18n:translate="" i18n:domain="ui">Search</span> data-onChange="submitAction(this.form,'Base_doFavorite')"
</button> tal:define="user_actions actions/user;">
</span> <option disabled="disabled" selected="selected">
</span> <tal:block i18n:translate="" i18n:domain="ui">Logged In as :</tal:block><tal:block tal:replace="python:portal.portal_membership.getAuthenticatedMember().getUserName()" />
<p class="clear"></p> </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};
onfocus string:if (this.value=='${search_default_text}') this.value='';"
onfocus="this.value='';"
onkeypress="submitFormOnEnter(event, this.form, 'ERP5Site_viewQuickSearchResultList');" />
<button type="submit" name="ERP5Site_viewQuickSearchResultList:method"
title="Search"
class="btn btn-default"
tal:replace="nothing"
i18n:attributes="title" i18n:domain="ui">
<i class="icon-search"></i>
</button>
</li>
</ul>
</tal:block> </tal:block>
</tal:block> </tal:block>
\ No newline at end of file
...@@ -17,23 +17,29 @@ ...@@ -17,23 +17,29 @@
</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>
<select name="select_dialog" id="dialog_selector" <div class="input input-group col-md-8">
onchange="submitAction(this.form,'Base_doRelationDialog')"> <select name="select_dialog" id="dialog_selector"
<tal:block tal:repeat="proxy_listbox_id_item proxy_form_id_list"> class="form-control"
<option tal:attributes="value python: proxy_listbox_id_item[0]; onchange="submitAction(this.form,'Base_doRelationDialog')">
<option tal:repeat="proxy_listbox_id_item proxy_form_id_list"
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> <div class="input-group-btn">
<button type="submit" name="Base_doRelationDialog:method"> <button type="submit" name="Base_doRelationDialog:method"
<span class="image"></span> class="btn btn-default">
<span class="description" <i class="fa fa-repeat"></i>
i18n:translate="" i18n:domain="ui">Go</span> <span class="description"
</button> i18n:translate="" i18n:domain="ui">Go</span>
</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'/>
...@@ -65,4 +71,4 @@ ...@@ -65,4 +71,4 @@
</tal:block> </tal:block>
</tal:block> </tal:block>
</tal:block> </tal:block>
</tal:block> </tal:block>
\ No newline at end of file
...@@ -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:block metal:use-macro="here/breadcrumb_render/macros/breadcrumb" /> tal:define="list_mode list_mode | nothing"
</div> 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 id="logged_in_as" class="logged_in_as"> >
<tal:block tal:condition="not: portal/portal_membership/isAnonymousUser"> <div class="panel-body">
<span class="logged_txt" i18n:translate="" i18n:domain="ui">Logged In as :</span> <ol id="breadcrumb" class="breadcrumb">
<tal:block tal:replace="python:portal.portal_membership.getAuthenticatedMember().getUserName()" /> <tal:block metal:use-macro="here/breadcrumb_render/macros/breadcrumb" />
</ol>
<tal:block tal:condition="preferred_html_style_acknowledgeable_message | nothing">
<div id="acknowledgeable_message_render" class="acknowledgeable_message_render">
<div tal:content="structure here/acknowledgeable_message_render"/>
</div>
</tal:block> </tal:block>
</div> <div class="row" tal:condition="request/portal_status_message | nothing">
<p class="clear"></p> <strong>
<tal:block tal:condition="preferred_html_style_acknowledgeable_message | nothing"> <p tal:content="request/portal_status_message | nothing"
<div id="acknowledgeable_message_render" class="acknowledgeable_message_render"> class="col-md-12 transition_message text-success"/>
<div tal:content="structure here/acknowledgeable_message_render"/> </strong>
</div> </div>
</tal:block> <tal:block tal:condition="request/field_errors | nothing">
<div tal:content="request/portal_status_message | nothing" id="transition_message" <div class="row">
class="transition_message"/> <div id="information_area" class="information_area col-md-12 alert alert-danger" i18n:translate="" i18n:domain="ui">
<tal:block tal:condition="request/field_errors | nothing"> Input data has errors. Please look at the error messages below.
<div id="information_area" class="information_area" i18n:translate="" i18n:domain="ui"> </div>
Input data has errors. Please look at the error messages below. </div>
<script type="text/javascript">changed = true;</script>
</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>
<script type="text/javascript">changed = true;</script> <tal:block metal:define-slot="main" />
</tal:block> </div>
</div>
<div id="master" class="master">
<tal:block metal:define-slot="main" />
</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,56 +24,72 @@ ...@@ -24,56 +24,72 @@
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)">
<button tal:condition="python: not is_web_mode and form_action" <ul class="nav nav-tabs">
type="submit" class="save" title="Save" <li tal:repeat="action actions_object_view"
tal:attributes="name string:${form_action}:method; tal:attributes="class python: 'active' if action == current_action else nothing">
onclick string:javascript:clickSaveButton('${form_action}');" <a tal:attributes="href python: '%s%s%s' % (action['url'], '?' in action['url'] and '&amp;' or '?', http_parameters)"
i18n:attributes="title" i18n:domain="ui"> ><span i18n:translate="" i18n:domain="ui" tal:content="action/name">action_name</span></a>
<span class="image"></span> </li>
<span class="description" i18n:translate="" i18n:domain="ui">Save</span> <li class="pull-right">
</button> <button tal:condition="python: not is_web_mode and form_action"
<ul> type="image"
<li tal:repeat="action actions" class="save btn btn-info"
tal:attributes="class python: action == current_action and 'selected' or 'not_selected'"> title="Save"
<a tal:attributes="href python: '%s%s%s' % (action['url'], '?' in action['url'] and '&amp;' or '?', http_parameters)" tal:attributes="name string:${form_action}:method;
><span i18n:translate="" i18n:domain="ui" tal:content="action/name">action_name</span></a> onclick string:javascript:clickSaveButton('${form_action}');"
</li> i18n:attributes="title" i18n:domain="ui">
</ul> <i class="fa fa-save fa-lg"></i>
</div> <span class="description" i18n:translate="" i18n:domain="ui">Save</span>
<div tal:attributes="class python: editable_mode and 'content editable' or 'content'"> </button>
<tal:block metal:define-slot="main" /> </li>
<div class="bottom_actions" <tal:block tal:repeat="action actions/workflow">
tal:condition="python: is_web_mode and editable_mode and len(actions) and form_action"> <li class="pull-right">
<input type="hidden" name="form_action" value="" <button type="button" name="Base_doAction:method"
tal:attributes="value form_action" /> class="btn btn-default"
<input type="hidden" name="edit_document_url" value="" tal:attributes="title action/name;
tal:attributes="value python:'%s/%s' % (here.absolute_url(), form_id)" /> onclick string:location.href='${action/url}';"
<input type="hidden" name="view_document_url" value="" i18n:attributes="title" i18n:domain="ui" >
tal:attributes="value python:'%s/%s' % (here.absolute_url(), 'view')" /> <i class="image" tal:attributes="class action/icon" tal:condition="action/icon"></i>
<button id="input-save-view" class="formbt save" type="submit" <span class="description" tal:condition="not:action/icon" tal:content="action/name" i18n:translate="" i18n:domain="ui"/>
title="Save &amp; View" name="Base_editAndViewAsWeb:method" </button>
i18n:attributes="title" i18n:domain="ui"> </li>
<span> </tal:block>
<span class="image"></span> </ul>
<span class="description" i18n:translate="" i18n:domain="ui">Save &amp; View</span>
</span>
</button>
<button id="input-save-edit" class="formbt save" type="submit"
title="Save &amp; Edit" name="Base_editAndEditAsWeb:method"
i18n:attributes="title" i18n:domain="ui">
<span>
<span class="image"></span>
<span class="description" i18n:translate="" i18n:domain="ui">Save &amp; Edit</span>
</span>
</button>
</div> </div>
<div tal:attributes="class python: editable_mode and 'content editable' or 'content'">
<tal:block metal:define-slot="main" />
<div class="bottom_actions"
tal:condition="python: is_web_mode and editable_mode and len(actions_object_view) and form_action">
<input type="hidden" name="form_action" value=""
tal:attributes="value form_action" />
<input type="hidden" name="edit_document_url" value=""
tal:attributes="value python:'%s/%s' % (here.absolute_url(), form_id)" />
<input type="hidden" name="view_document_url" value=""
tal:attributes="value python:'%s/%s' % (here.absolute_url(), 'view')" />
<button id="input-save-view" class="formbt save" type="submit"
title="Save &amp; View" name="Base_editAndViewAsWeb:method"
i18n:attributes="title" i18n:domain="ui">
<span>
<span class="image"></span>
<span class="description" i18n:translate="" i18n:domain="ui">Save &amp; View</span>
</span>
</button>
<button id="input-save-edit" class="formbt save" type="submit"
title="Save &amp; Edit" name="Base_editAndEditAsWeb:method"
i18n:attributes="title" i18n:domain="ui">
<span>
<span class="image"></span>
<span class="description" i18n:translate="" i18n:domain="ui">Save &amp; Edit</span>
</span>
</button>
</div>
</div> </div>
</div> </div>
</tal:block> </tal:block>
</tal:block> </tal:block>
</tal:block> </tal:block>
</tal:block> </tal:block>
</tal:block> </tal:block>
\ No newline at end of file
...@@ -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 relation_item_list: if not relation_item_list:
REQUEST['relation_item_list'] = relation_item_list sub_html_string += relation_html_string
sub_html_string += NBSP + Widget.ListWidgetInstance.render(
field, relation_field_id, None, REQUEST, sub_html_string += '</div>' # input-group-btn
) + NBSP if relation_item_list:
REQUEST['relation_item_list'] = None REQUEST['relation_item_list'] = relation_item_list
sub_html_string += Widget.ListWidgetInstance.render(
field, relation_field_id, None, REQUEST,
)
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