PHRAS-2270_advance_search_port_top_41

This commit is contained in:
Filip Vilic
2018-11-07 12:54:57 +01:00
parent 9298580888
commit 82d8c5d4c0
16 changed files with 1270 additions and 1084 deletions

View File

@@ -1,46 +1,46 @@
{% macro bas_list(module, search_datas) %}
{% set unique_id = module.getRandom() %}
<div style="max-height: 57vh; overflow-x: hidden;">
{% for base in search_datas['bases'] %}
{% set sbas_id = base['sbas_id'] %}
<div class="sbas_list sbas_{{sbas_id}}" style="margin-bottom: 10px;">
<input type="hidden" name="reference" value="{{sbas_id}}"/>
<div class="clksbas">
<span class="toggle-collection deployer_closed" data-toggle-content=".sbascont_{{sbas_id}}"></span>
<input type="checkbox" checked style="display: none;" id="sbasChkr_{{sbas_id}}_{{unique_id}}" class="select-database sbasChkr_{{sbas_id}}" data-database="{{sbas_id}}" />
<label id="ADVSRCH_SBAS_LABEL_{{sbas_id}}" style="display: inline" class="checkbox danger_indicator" for="sbasChkr_{{sbas_id}}_{{unique_id}}">
<span>{{sbas_id|sbas_labels(app)}}</span>
<span class="infos_sbas_{{sbas_id}}">
{{base["collections"]|length}}/{{base['collections']|length}}
<span class="toggle-collection deployer_toggle deployer_closed" data-toggle-content=".sbascont_{{sbas_id}}"></span>
<label id="ADVSRCH_SBAS_LABEL_{{sbas_id}}" style="display: inline" class="checkbox custom_checkbox_label" for="sbasChkr_{{sbas_id}}_{{unique_id}}">
<input type="checkbox" checked style="display: none;" id="sbasChkr_{{sbas_id}}_{{unique_id}}" class="select-database sbasChkr_{{sbas_id}}" data-database="{{sbas_id}}" />
<span class="base_indicator">
{{sbas_id|sbas_labels(app)}}
</span>
<span class="custom_checkbox">
<span class="infos_sbas_{{sbas_id}}">
{{base["collections"]|length}}/{{base['collections']|length}}
</span>
</span>
</label>
</div>
<div class="sbascont sbascont_{{sbas_id}}" style="display:none; -moz-column-width:150px; -webkit-column-width: 150px; -moz-column-gap: 20px; -webkit-column-gap: 20px;">
<ul style="list-style-type:none; padding:0; margin:0;" class="basChild_{{sbas_id}}">
<div class="sbascont sbascont_{{sbas_id}}" style="display:none; margin-bottom: 8px;">
<ul class="basChild_{{sbas_id}} basChild_list">
{% for collection in base["collections"] %}
{% set base_id = collection["base_id"] %}
<li class="clkbas">
<table>
<tr>
<td>
<input class="ck_{{base_id}} checkbas check-filters" style="*margin-top:-18px;" data-save="true"
id="ck_{{base_id}}_{{unique_id}}" type="checkbox"
name="bases[]" value="{{base_id}}" {% if collection["selected"] %}checked="checked"{% endif %} />
</td>
<td>
<label style="line-height: 18px;"
for="ck_{{base_id}}_{{unique_id}}" class="ck_{{base_id}} {% if collection["selected"] %}selected{% endif %} checkbox inline">
{{base_id|get_collection_logo(app)|raw}} {{base_id|bas_labels(app)}}
</label>
</td>
</tr>
</table>
<label style="line-height: 18px;"
for="ck_{{base_id}}_{{unique_id}}" class="ck_{{base_id}} {% if collection["selected"] %}selected{% endif %} checkbox inline custom_checkbox_label">
<input class="ck_{{base_id}} checkbas check-filters"
id="ck_{{base_id}}_{{unique_id}}" type="checkbox"
data-save="true"
name="bases[]" value="{{base_id}}" {% if collection["selected"] %}checked="checked"{% endif %} />
<span class="custom_checkbox"></span>
{{base_id|get_collection_logo(app)|raw}} {{base_id|bas_labels(app)}}
</label>
</li>
{% endfor %}
</ul>
</div>
</div>
{% endfor %}
</div>
{% endmacro %}
{% set jquery_theme = 'dark-hive' %}
@@ -264,7 +264,7 @@
<input type="hidden" name="sel" value="">
<div class="controls controls-row">
<div class="input-append">
<div class="input-append advance_search_action">
<input id="EDIT_query" name="fake_qry" type="text" autocomplete="off" class="search query danger_indicator" value="{{app['settings'].getUserSetting(app.getAuthenticatedUser(), 'start_page_query')}}">
<a id="ADV_query" href="#" class="btn btn-inverse adv_trigger adv_search_button">
<img src="/assets/common/images/icons/settings.png" title="{{ 'Advanced Search' | trans }}"/>
@@ -276,32 +276,39 @@
{% endif %}
<button type="submit" class="btn btn-inverse" style="font-size:14px">{{ 'boutton::rechercher' | trans }}</button>
</div>
<div class="control-group">
<div class="control-group pull-left">
{% if GV_multiAndReport %}
<label for="mode_type_doc" class="radio inline">
<label for="mode_type_doc" class="radio inline custom_checkbox_label">
<input type="radio" value="0" class="mode_type_doc" name="search_type" {% if GV_defaultQuery_type == 0 %}checked="checked"{% endif %} id="mode_type_doc"/>
<span class="custom_radio" style="width:9px;height:9px;margin-top:2px;"></span>
{{ 'phraseanet::type:: documents' | trans }}
</label>
<label for="mode_type_reg" class="radio inline">
<label for="mode_type_reg" class="radio inline custom_checkbox_label">
<input type="radio" value="1" class="mode_type_reg" name="search_type" {% if GV_defaultQuery_type != 0 %}checked="checked"{% endif %} id="mode_type_reg"/>
<span class="custom_radio" style="width:9px;height:9px;margin-top:2px;"></span>
{{ 'phraseanet::type:: reportages' | trans }}
</label>
{% else %}
<input type="hidden" value="0" name="search_type" />
{% endif %}
<select name="record_type" id="recordtype_sel" class="input-small">
<option value="">{{ 'Tout type' | trans }}</option>
<option value="image">{{ 'Image' | trans }}</option>
<option value="video">{{ 'Video' | trans }}</option>
<option value="audio">{{ 'Audio' | trans }}</option>
<option value="document">{{ 'Document' | trans }}</option>
<option value="flash">{{ 'Flash' | trans }}</option>
</select>
<div id="recordtype_sel" class="custom_select_dark" style="display: inline-block;">
<select name="record_type" class="input-small">
<option value="">{{ 'Tout type' | trans }}</option>
<option value="image">{{ 'Image' | trans }}</option>
<option value="video">{{ 'Video' | trans }}</option>
<option value="audio">{{ 'Audio' | trans }}</option>
<option value="document">{{ 'Document' | trans }}</option>
<option value="flash">{{ 'Flash' | trans }}</option>
</select>
</div>
</div>
<div class="pull-right">
<input class="btn btn_lightgrey reset_button search-reset-action" style="display: none;" type="button" value="{{ 'Re-initialiser' | trans }}" />
</div>
</div>
<div id="advancedSearchForm" class="controls controls-row adv_options" style="display:none;">
<table style="width:100%; table-layout:fixed;">
<table style="width:100%; height:100%; table-layout:fixed;">
<tr>
<td style="width:50%; vertical-align:top;">
{% set useTruncation = app['settings'].getUserSetting(app.getAuthenticatedUser(), 'use_truncation') %}
@@ -312,11 +319,14 @@
{{ 'index:advanced-preferences:: use truncation' | trans }}
</label>
<div id="ADVSRCH_SBAS_ZONE" class="sbasglob">
<label class="base-section-title">
<span class="danger_indicator">{{ 'Selected base(s)' | trans }}</span>
</label>
<div class="btn-toolbar">
<input class="btn btn-inverse toggle-database" type="button"
<input class="btn btn_dark toggle-database" type="button"
value="{{ 'boutton:: selectionner toutes les bases' | trans }}"
data-state="true" />
<input class="btn btn-inverse toggle-database" type="button" data-state="false"
<input class="btn btn_dark toggle-database" type="button" data-state="false"
value="{{ 'boutton:: selectionner aucune base' | trans }}" />
</div>
{{_self.bas_list(module_prod, search_datas)}}
@@ -324,9 +334,6 @@
</td>
<td style="width:50%; vertical-align:top;">
<div id="sbasfiltercont">
<div class="btn-toolbar">
<input class="btn btn-inverse search-reset-action" type="button" value="{{ 'Re-initialiser' | trans }}" />
</div>
<div id="ADVSRCH_OPTIONS_ZONE">
<div id="ADVSRCH_SORT_ZONE">
{% set sortByDefault = app['phraseanet.SE'].getDefaultSort()%}
@@ -371,55 +378,140 @@
</select>
</div>
<div id="ADVSRCH_FIELDS_ZONE" class="danger_indicator">
<span>{{ 'Les termes apparaissent dans le(s) champs' | trans }}</span>
<select size="8" multiple onchange="prodApp.appEvents.emit('search.doCheckFilters', true);" name="fields[]" style="vertical-align:middle; width:99%;">
<option value="phraseanet--all--fields">{{ 'rechercher dans tous les champs' | trans }}</option>
{% for field_id, field in search_datas['fields'] %}
{% if field['type'] != 'date' %}
<option class="dbx db_{{field['sbas']|join(' db_')}}" value="{{field_id}}">{{field['fieldname']}}</option>
{% endif %}
{% endfor %}
</select>
<div id="ADVSRCH_FIELDS_ZONE">
<label class="status-section-title">
<span class="danger_indicator">{{ 'Les termes apparaissent dans le(s) champs' | trans }}</span>
<img id="info-box-trigger" src="/assets/common/images/icons/Info-white.png" width="18" height="18">
<div id="info-box">
<p>{{ 'prod::advancesearch:tooltips:field_restriction_explanation' | trans }}</p>
</div>
</label>
<label for="multiple-terms" class="radio inline custom_checkbox_label">
<input type="radio" class="multiple_terms" name="must_match" value="ALL" checked="checked" id="multiple-terms"/>
<span class="custom_radio"></span>
{{ 'All these conditions' | trans }}
</label>
<label for="single-terms" class="radio inline custom_checkbox_label">
<input type="radio" class="single_terms" name="must_match" value="ONE" id="single-terms"/>
<span class="custom_radio"></span>
{{ 'One of these conditions' | trans }}
</label>
<div class="term_select">
<div class="term_select_wrapper">
<select class="term_select_field" style="vertical-align:middle; width:30%;">
<option value="">{{ 'Select a field' | trans }}</option>
{% for field_id, field in search_datas['fields'] %}
{% if field['type'] != 'date' %}
<option class="dbx db_{{field['sbas']|join(' db_')}}" value="{{field_id}}">{{field['fieldname']}}</option>
{% endif %}
{% endfor %}
</select>
<select disabled style="vertical-align:middle; width: 23%;">
<option value="contains">{{ 'Contains' | trans }}</option>
<option value="equals">{{ 'Equals' | trans }}</option>
</select>
<input disabled style="vertical-align:middle; width: 32%;" placeholder="{{ 'Ex : Paris, bleu, montagne' | trans }}">
<input class="term_deleter" style="margin-bottom: 4px;" disabled>
</div>
<button class="add_new_term"><span>&plus;</span> Add</button>
</div>
<div style="display:none;">
<select class="term_select_multiple" size="8" multiple onchange="prodApp.appEvents.emit('search.doCheckFilters', true);" name="fields[]" style="vertical-align:middle; width:99%;">
<option value="phraseanet--all--fields">{{ 'rechercher dans tous les champs' | trans }}</option>
{% for field_id, field in search_datas['fields'] %}
{% if field['type'] != 'date' %}
<option class="dbx db_{{field['sbas']|join(' db_')}}" value="{{field_id}}">{{field['fieldname']}}</option>
{% endif %}
{% endfor %}
</select>
</div>
</div>
<div id="ADVSRCH_DATE_ZONE">
{% if app['phraseanet.SE'].getAvailableDateFields() | length > 0 %}
<hr />
<label class="status-section-title">
<span class="danger_indicator">{{ 'Date(s) from field(s)' | trans }}</span>
<img id="info-box-trigger" src="/assets/common/images/icons/info-white.png" width="18" height="18">
<div id="info-box">
<p>
{{ 'prod::advancesearch:tooltips:datefield_restriction_explanation' | trans }}
</p>
</div>
</label>
<span>
<select name="date_field" class="input-medium check-filters" data-save="true" style="width: 166px;">
<option selected="selected"
value="">{{ 'Rechercher dans un champ date' | trans }}</option>
{% for fieldname, date in search_datas['dates'] %}
<option
class="dbx db_{{date['sbas']|join(' db_')}}" value="{{ fieldname }}">{{ fieldname }}</option>
{% endfor %}
</select>
</span>
<span id="ADVSRCH_DATE_SELECTORS" style="display: inline-block;height: 26px;line-height: 26px;">
{{ 'phraseanet::time:: de' | trans }}
<div class="input-prepend">
<span class="add-on">
<i class="fa fa-calendar" aria-hidden="true"></i>
</span>
<input onchange="prodApp.appEvents.emit('search.doCheckFilters', true);" class="datepicker input-small" type="text" name="date_min" placeholder="{% trans %}YYYY/MM/DD{% endtrans %}" style="margin: 0;position: relative; z-index: 10001;" />
</div>
{{ 'phraseanet::time:: a' | trans }}
<div class="input-prepend">
<span class="add-on">
<i class="fa fa-calendar" aria-hidden="true"></i>
</span>
<input onchange="prodApp.appEvents.emit('search.doCheckFilters', true);" class="datepicker input-small" type="text" name="date_max" placeholder="{% trans %}YYYY/MM/DD{% endtrans %}" style="margin: 0;position: relative; z-index: 10001;" />
</div>
</span>
{% endif %}
</div>
<div id="ADVSRCH_SB_ZONE">
{% if search_status|length > 0 %}
<hr />
<span class="status-section-title">{{ 'Status des documents a rechercher' | trans }}</span>
<label class="status-section-title">
<span class="danger_indicator">{{ 'Status des documents a rechercher' | trans }}</span>
</label>
{% for databox_id, databox in search_status %}
{% if databox.status|length > 0 %}
<table style="width: 100%;" id="ADVSRCH_SB_ZONE_{{databox_id}}" class="field_{{databox_id}}">
<thead>
<tr>
<td colspan="2">
<span class="toggle-collection deployer_closed" data-toggle-content="#ADVSRCH_SB_{{databox_id}}"></span>
<span class="danger_indicator">{{ databox['name'] }}</span>
<span class="toggle-collection deployer_toggle deployer_closed" data-toggle-content="#ADVSRCH_SB_{{databox_id}}"></span>
<span>{{ databox['name'] }}</span>
</td>
</tr>
</thead>
<tbody id="ADVSRCH_SB_{{databox_id}}" style="display: none">
<tbody id="ADVSRCH_SB_{{databox_id}}" style="display: none; margin-top: 15px;">
{% for status_bit, status in databox.status %}
<tr>
<td>
<label class="checkbox inline">
<label class="checkbox inline custom_checkbox_label">
{% if status['img_off'] %}
<img src="{{status['img_off']}}" title="{{status['labels_off_i18n'][app['locale']]}}" />
{% endif %}
<input class="field_switch field_{{databox_id}} check-filters" data-save="true"
type="checkbox" value="0"
n="{{status_bit}}" name="status[{{databox_id}}][{{status_bit}}]" />
<span class="custom_checkbox"></span>
{{status['labels_off_i18n'][app['locale']]}}
</label>
</td>
<td>
<label class="checkbox inline">
<label class="checkbox inline custom_checkbox_label">
{% if status['img_on'] %}
<img src="{{status['img_on']}}" title="{{status['labels_on_i18n'][app['locale']]}}" />
{% endif %}
<input class="field_switch field_{{databox_id}} check-filters" data-save="true"
type="checkbox" value="1"
n="{{status_bit}}" name="status[{{databox_id}}][{{status_bit}}]"/>
<span class="custom_checkbox"></span>
{{status['labels_on_i18n'][app['locale']]}}
</label>
</td>
@@ -431,36 +523,6 @@
{% endfor %}
{% endif %}
</div>
<div id="ADVSRCH_DATE_ZONE" class="danger_indicator">
{% if app['phraseanet.SE'].getAvailableDateFields() | length > 0 %}
<hr />
<span>
<select name="date_field" class="input-medium check-filters" data-save="true">
<option selected="selected"
value="">{{ 'Rechercher dans un champ date' | trans }}</option>
{% for fieldname, date in search_datas['dates'] %}
<option
class="dbx db_{{date['sbas']|join(' db_')}}" value="{{ fieldname }}">{{ fieldname }}</option>
{% endfor %}
</select>
</span>
<span id="ADVSRCH_DATE_SELECTORS">
{{ 'phraseanet::time:: de' | trans }}
<div class="input-prepend">
<span class="add-on"><i class="fa fa-calendar"
aria-hidden="true"></i></span>
<input onchange="prodApp.appEvents.emit('search.doCheckFilters', true);" class="datepicker input-small" type="text" name="date_min" placeholder="{% trans %}YYYY/MM/DD{% endtrans %}" style="margin: 0;position: relative; z-index: 10001;" />
</div>
{{ 'phraseanet::time:: a' | trans }}
<div class="input-prepend">
<span class="add-on"><i class="fa fa-calendar"
aria-hidden="true"></i></span>
<input onchange="prodApp.appEvents.emit('search.doCheckFilters', true);" class="datepicker input-small" type="text" name="date_max" placeholder="{% trans %}YYYY/MM/DD{% endtrans %}" style="margin: 0;position: relative; z-index: 10001;" />
</div>
</span>
{% endif %}
</div>
</div>
</div>
</td>