Merge branch 'master' into PHRAS-2419_refacto_Icons_actions_under_Thumbnail

This commit is contained in:
Nicolas Maillat
2019-05-07 17:34:34 +02:00
committed by GitHub
99 changed files with 11700 additions and 13653 deletions

View File

@@ -232,12 +232,93 @@
</div>
</div>
<div class="well well-large" style="border: 1px solid #333333;">
<div style="max-width: 400px;margin-left: 52px">
<div style="max-width: 400px;margin-left: 2%;display: inline-block;width: 47%;margin-right: 1%;">
<input type="submit" class="btn btn-info btn-block btn-large" value="{{ 'boutton::valider' | trans }}"/>
</div>
<div style="max-width: 400px;margin-left: 1%;width: 47%;display: inline-block;margin-right: 2%;float: right;">
{% if not user.isadmin() and not user.hasLdapCreated() and (owned_feeds|length == 0) and (initiated_validations|length == 0) %}
<a href="#delete-account-process" type="button" role="button" data-toggle="modal" class="btn btn-danger btn-block btn-large">{{ 'phraseanet::account: Delete my account' | trans }}</a>
<!-- Modal -->
<div id="delete-account-process" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">{{ "phraseanet::account: Process to delete account" }}</h3>
</div>
<div class="modal-body">
<p>{{ "phraseanet::account: Are you sure you want to delete your account?" | trans }} </p>
<h6>{{ "phraseanet::account: List of data to be deleted" | trans }}</h6>
{% if baskets|length > 0 %}
- {{ 'Paniers' | trans }}
<ul style="padding-left: 30px">
{% for basket in baskets %}
<li>{{ basket.getName() }}</li>
{% endfor %}
</ul>
{% endif %}
{% if api_accounts|length > 0 %}
- {{ "My application " | trans }}
<ul style="padding-left: 30px">
{% for api_account in api_accounts %}
<li>{{ api_account.getApplication().getName() ~ " => Client_id: " ~ api_account.getApplication().getClientId() }}</li>
{% endfor %}
</ul>
{% endif%}
- {{ "phraseanet::account: My phraseanet account" | trans }}
<ul style="padding-left: 30px">
<li>Name : {{ user.getFirstName() ~ ' ' ~ user.getLastName() }}</li>
<li>Login : {{ user.getLogin() }}</li>
</ul>
</div>
<div class="modal-footer">
<label style="text-align: left;" class="form_label checkbox" for="delete_account_aggree">
{% if app['conf'].get(['user_account', 'deleting_policies', 'email_confirmation']) %}
{{ "phraseanet::account: I am agree to delete my account, need confirmation on mail" | trans }}
{% else %}
{{ "phraseanet::account: I am agree to delete my account" | trans }}
{% endif %}
<input class="input_element input-xlarge" type="checkbox" id="delete_account_aggree"/>
</label>
<button class="btn" data-dismiss="modal" aria-hidden="true">{{ "No" | trans }}</button>
<a id="delete_account_confirm" class="btn btn-info" style="opacity:0.5;pointer-events: none;" >{{ "Yes" | trans }}</a>
</div>
</div>
{% else %}
<p style="font-size: 12px"> {{ "phraseanet::account: << your account can be deleted via admin interface >> " | trans }}</p>
{% endif %}
</div>
</div>
</div>
</form>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
var deleteButton = $("#delete_account_confirm");
$("#delete_account_aggree").bind("click", function(e) {
if ($(this).is(":checked")) {
deleteButton.attr("href", '{{ path("account_process_delete") }}');
deleteButton.css({"opacity": "1", "pointer-events": "auto"});
} else {
deleteButton.removeAttr("href");
deleteButton.css({"opacity": "0.5", "pointer-events": "none"});
}
});
});
</script>
{% endblock %}

View File

@@ -94,7 +94,7 @@
<tbody>
{% for session in data['sessions'] %}
{% set row = session['session'] %}
<tr title="{{ _self.tooltip_connected_users(row) | raw }}" class="{% if loop.index is odd %}odd{% else %}even{% endif %} usrTips" id="TREXP_{{ row.getId()}}">
<tr title="{{ _self.tooltip_connected_users(row) | e }}" class="{% if loop.index is odd %}odd{% else %}even{% endif %} usrTips" id="TREXP_{{ row.getId()}}">
{% if row.getId() == app['session'].get('session_id') %}
<td style="color:#ff0000"><i>{{ row.getUser().getDisplayName() }}</i></td>

View File

@@ -19,7 +19,7 @@
src="{{ url('alchemy_embed_view', {url: url|trim, autoplay: autoplay|default('false') }) }}"
frameborder="0" allowfullscreen></iframe>
</div>
{% elseif record_type == 'FLEXPAPER' %}
{% elseif record_type == 'FLEXPAPER' or record_type == 'PDF' %}
<div id="phraseanet-embed-frame" class="documentTips"
data-original-width="{{original_w}}"
data-original-height="{{original_h}}"

View File

@@ -49,7 +49,13 @@
<!-- End of header table -->
<!-- Subject table -->
<table width="90%" cellpadding="0" cellspacing="0" border="0" align="center" style="width:90% !important;">
<tr style="background-color:#a6aab0">
<tr style=
{% if mailSkin == constant('Alchemy\\Phrasea\\Notification\\Mail\\MailRequestAccountDelete::MAIL_SKIN') %}
"background: linear-gradient(to bottom, #ee5f5b, #bd362f)"
{% elseif mailSkin == constant('Alchemy\\Phrasea\\Notification\\Mail\\AbstractMail::MAIL_SKIN') %}
"background-color:#a6aab0"
{% endif %}
>
<td height="50" valign="center" align="center" style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size:16px; line-height:19px; font-weight:bold; color:#ffffff;">
{{ subject }}
</td>
@@ -72,7 +78,7 @@
<span style="color:#FFA500; color:#FFA500 !important; text-decoration:underline; cursor:pointer;">{{ senderMail }}</span></a><br/>
{% endif %}
<br/>
{{ messageText | nl2br }}
{{ messageText | raw | nl2br }}
<br/>
</td>
</tr>

View File

@@ -51,7 +51,7 @@
<tr>
<td>
<h2 class="title15">
{{basket.getName()|raw}}
{{basket.getName()|e}}
</h2>
{% if basket.getValidation().isFinished() %}
{{ '(validation) session terminee' | trans }}
@@ -116,7 +116,7 @@
<tr>
<td>
<h2 class="title15">
{{ basket.getName()|raw}}
{{ basket.getName()|e}}
</h2>
</td>
<td class="right">

View File

@@ -19,7 +19,7 @@
<img src='/assets/common/images/icons/basket_push_unread.png' title=''/>
{% endif %}
<img src='/assets/common/images/icons/basket.png' title=''/>
{{basket.getName()}}
{{basket.getName()|e}}
</span>
</a>
<div class="menu">
@@ -99,7 +99,7 @@
{% else %}
<img src='/assets/common/images/icons/basket.png' title=''/>
{% endif %}
{{basket.getName()}}
{{basket.getName()|e}}
</span>
</a>
<div class="menu">

View File

@@ -17,7 +17,7 @@
<div class="PNB10 LeftColumn">
<div class="PNB" style="text-align:center;">
{% if context == 'Push' %}
<img style="width: 36px; height: 36px" src="/assets/common/images/icons/push64.png"/>
<img style="width: 36px; height: 36px" src="/assets/common/images/icons/push-icon.png"/>
{% else %}
<img style="width: 36px; height: 36px" src="/assets/common/images/icons/validation.png"/>
{% endif %}

View File

@@ -264,6 +264,12 @@
<div class="PNB" id="rightFrame" style="left:auto; width:{{ w2 ~ '%' }}">
<div id="headBlock" class="PNB">
<div class="searchFormWrapper">
{% if app['settings'].getUserSetting(app.getAuthenticatedUser(), 'start_page') == 'QUERY' %}
<div id="FIRST_QUERY_CONTAINER" class="start-query" style="display: none" data-format="text">{{app['settings'].getUserSetting(app.getAuthenticatedUser(), 'start_page_jsonquery') | raw}}</div>
{% elseif app['settings'].getUserSetting(app.getAuthenticatedUser(), 'start_page') == 'LAST_QUERY' %}
<div id="FIRST_QUERY_CONTAINER" class="last-query" style="display: none" data-format="json">{{app['settings'].getUserSetting(app.getAuthenticatedUser(), 'last_jsonquery') | raw}}</div>
{% endif %}
<form id="searchForm" method="POST" action="{{ path('prod_query') }}" name="phrasea_query" class="phrasea_query">
<input id="SENT_query" name="qry" type="hidden" value="{{app['settings'].getUserSetting(app.getAuthenticatedUser(), 'start_page_query')}}">
<input type="hidden" name="pag" id="formAnswerPage" value="">
@@ -404,27 +410,27 @@
</label>
<div class="term_select">
<div class="term_select_wrapper">
<select class="term_select_field" style="vertical-align:middle; width:30%;">
<div class="term_select_wrapper_template" style="display: none;">
<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 %}
{# {% if field['type'] != 'date' %}#}
<option class="dbx db_{{field['sbas']|join(' db_')}}" data-fieldtype="{{ field['type'] }}-FIELD" 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 class="term_select_op" disabled style="vertical-align:middle; width: 23%;">
<option value=":">{{ 'Contains' | trans }}</option>
<option value="=">{{ '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>
<input class="term_select_value" disabled style="vertical-align:middle; width: 32%;" placeholder="{{ 'Ex : Paris, bleu, montagne' | trans }}">
<input class="term_deleter" style="margin-bottom: 4px;">
</div>
<button class="add_new_term"><span>&plus;</span> Add</button>
</div>
<div style="display:none;">
{# <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'] %}
@@ -433,7 +439,7 @@
{% endif %}
{% endfor %}
</select>
</div>
</div>#}
</div>
<div id="ADVSRCH_DATE_ZONE">
@@ -449,13 +455,15 @@
</div>
</label>
<span>
<select name="date_field" class="input-medium check-filters" data-save="true" style="width: 166px;">
<select name="date_field" class="date-field 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 %}
<option value="updated_on">{{ 'updated_on' | trans }}</option>
<option value="created_on">{{ 'created_on' | trans }}</option>
</select>
</span>
<span id="ADVSRCH_DATE_SELECTORS" style="display: inline-block;height: 26px;line-height: 26px;">
@@ -498,13 +506,16 @@
{% for status_bit, status in databox.status %}
<tr>
<td>
<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}}]" />
<input type="checkbox" class="field_switch field_{{databox_id}}"
value="0"
data-sbas_id="{{databox_id}}" data-sb="{{status_bit}}"
name="status[{{databox_id}}][{{status_bit}}]"
/>
<span class="custom_checkbox"></span>
{{status['labels_off_i18n'][app['locale']]}}
</label>
@@ -514,9 +525,11 @@
{% 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}}]"/>
<input type="checkbox" class="field_switch field_{{databox_id}}"
value="1"
data-sbas_id="{{databox_id}}" data-sb="{{status_bit}}"
name="status[{{databox_id}}][{{status_bit}}]"
/>
<span class="custom_checkbox"></span>
{{status['labels_on_i18n'][app['locale']]}}
</label>

View File

@@ -12,17 +12,17 @@
<table>
<tr>
<td>
<span class="name"><%= item.display_name %></span>
<span class="name"><%= htmlEncode(item.display_name) %></span>
</td>
</tr>
<tr>
<td>
<span class="email"><i><%= item.email %></i></span>
<span class="email"><i><%= htmlEncode(item.email) %></i></span>
</td>
</tr>
<tr>
<td>
<span class="subtite"><%= item.subtitle || '' %></span>
<span class="subtite"><%= htmlEncode(item.subtitle) || '' %></span>
</td>
</tr>
</table>
@@ -47,7 +47,7 @@
<table>
<tr>
<td>
<span class="name"><%= item.name %></span>
<span class="name"><%= htmlEncode(item.name) %></span>
</td>
</tr>
<tr>
@@ -81,12 +81,12 @@
<table>
<tr>
<td colspan="3">
<span class="name"><%= user.display_name %></span>
<span class="name"><%= htmlEncode(user.display_name) %></span>
</td>
</tr>
<tr>
<td colspan="3">
<span class="subtite"><%= user.subtitle || '' %></span>
<span class="subtite"><%= htmlEncode(user.subtitle) || '' %></span>
</td>
</tr>
<tr class="toggles">
@@ -201,12 +201,12 @@
<table>
<tr>
<td colspan="3">
<span class="name"><%= user.display_name %></span>
<span class="name"><%= htmlEncode(user.display_name) %></span>
</td>
</tr>
<tr>
<td colspan="3">
<span class="subtite"><%= user.subtitle || '' %></span>
<span class="subtite"><%= htmlEncode(user.subtitle) || '' %></span>
</td>
</tr>
<tr class="toggles">
@@ -242,12 +242,12 @@
<table>
<tr>
<td colspan="3">
<span class="name"><%= user.display_name %></span>
<span class="name"><%= htmlEncode(user.display_name) %></span>
</td>
</tr>
<tr>
<td colspan="3">
<span class="subtite"><%= user.subtitle || '' %></span>
<span class="subtite"><%= htmlEncode(user.subtitle) || '' %></span>
</td>
</tr>
<tr class="toggles">
@@ -267,3 +267,22 @@
</div>
</script>
<script>
function htmlEncode(str) {
return str.replace(/[&"'<>]/g, function(c){
switch (c)
{
case "&":
return "&amp;";
case "'":
return "&#39;";
case '"':
return "&quot;";
case "<":
return "&lt;";
case ">":
return "&gt;";
}
});
}
</script>

View File

@@ -31,7 +31,10 @@
<span>{{ 'Select files...' | trans }}</span>
<input type="file" name="files[]" multiple>
</span>
<br />
<br />
<p class="or_upload">{{ "Or" | trans }}</p>
<div class="url_upload"><input type="url" value="" id="add-url"><button class="add-url add_url_upload">{{ 'Add this url' | trans }}</button></div>
<br/>
<span class="comment">
({% trans with {'%maxFileSizeReadable%' : maxFileSizeReadable} %}maximum : %maxFileSizeReadable%{% endtrans %})
</span>

View File

@@ -16,11 +16,11 @@
{% if context %}
{% set zterm %}
{% trans with {'%term%' : term, '%context%' : context} %}thesaurus:: le terme %term% avec contexte %context%{% endtrans %}
{% trans with {'%term%' : term | e, '%context%' : context | e} %}thesaurus:: le terme %term% avec contexte %context%{% endtrans %}
{% endset %}
{% else %}
{% set zterm %}
{% trans with {'%term%' : term} %}thesaurus:: le terme %term% sans contexte{% endtrans %}
{% trans with {'%term%' : term | e} %}thesaurus:: le terme %term% sans contexte{% endtrans %}
{% endset %}
{% endif %}

View File

@@ -338,6 +338,8 @@
for(var sy=syl.item(0).firstChild; sy; sy=sy.nextSibling )
{
var lng = sy.getAttribute("lng");
var v = escapeHtmlDataFromXML(sy.getAttribute("v"));
html += "<tr>";
if(lng)
if(tFlags[lng])
@@ -347,7 +349,7 @@
else
html += "<td><span style='background-color:#cccccc'>&nbsp;?&nbsp;</span></td>";
html += "<td>&nbsp;"+sy.getAttribute("v")+"</td>";
html += "<td>&nbsp;"+ v +"</td>";
var hits = 0+sy.getAttribute("hits");
if(hits == 1)
@@ -361,6 +363,12 @@
return(html);
}
// Let the browser to do it
function escapeHtmlDataFromXML(data){
var d = document.createElement('div');
d.appendChild(document.createTextNode(data));
return d.innerHTML;
}
// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//