Merge branch 'master' into PHRAS-2184-list-manager-email-domain-filter

This commit is contained in:
Nicolas Maillat
2019-06-11 17:22:29 +02:00
committed by GitHub
224 changed files with 27587 additions and 16053 deletions

View File

@@ -1,6 +1,6 @@
{% extends "account/base.html.twig" %}
{% import "common/macros.html.twig" as auth_macro %}
{% import "common/macro_flashes.html.twig" as macro_flashes %}
{% set selected = "informations" %}
@@ -25,7 +25,7 @@
{% block content_account %}
<div class="row-fluid">
<div class="span12">
{{ auth_macro.flashes() }}
{{ macro_flashes.flashes() }}
<form name="account" id="account" class="form-horizontal" action="{{ path("submit_update_account") }}" method="post">
<div class="row-fluid">
<div class="span12 well well-small" id="phr-account" style="background: #191919;border: 1px solid #333333;">
@@ -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

@@ -1,6 +1,6 @@
{% extends "login/layout/sidebar-layout.html.twig" %}
{% import "common/macros.html.twig" as account_macro %}
{% import "common/macro_flashes.html.twig" as macro_flashes %}
{% import "login/common/macros.html.twig" as auth_macro %}
{% block title %}
@@ -18,7 +18,7 @@
</div>
<div class="row-fluid">
<div class="span12">
{{ account_macro.flashes() }}
{{ macro_flashes.flashes() }}
<form
novalidate
name="passwordChangeForm"

View File

@@ -1,6 +1,6 @@
{% extends "account/base.html.twig" %}
{% import "common/macros.html.twig" as auth_macro %}
{% import "common/macro_flashes.html.twig" as macro_flashes %}
{% block title %}
{{ "Change my email address" | trans }}
@@ -15,7 +15,7 @@
{% block content_account %}
<div class="row-fluid">
<div class="span12">
{{ auth_macro.flashes() }}
{{ macro_flashes.flashes() }}
<form method="POST" action="{{ path("reset_email") }}" id="mainform" name="changeEmail" class="form-horizontal" style="background: #191919;border: 1px solid #333333;padding-top:20px">
<div class="control-group">
<label class="control-label" for="form_login">{{ "admin::compte-utilisateur identifiant" | trans }}</label>

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

@@ -5,16 +5,18 @@
{{ form_label(form.logoChoice[0]) }}
<div class="image-container">
<img id="original-image-placeholder" alt="gabari"
src="data:image/png;base64,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"/>
src="/assets/common/images/logo.png"/>
</div>
<a id="download-image-template" href="#">{{ 'prod::setup: download gabari' | trans }}</a>
</td>
<td>
{{ form_widget(form.logoChoice[1]) }}
{{ form_label(form.logoChoice[1]) }}
<br>
<span id="help-text">{{ 'prod::setup: help text' | trans }}</span>
<span id="error-text"></span>
<span id="help-text">{{ 'admin::setup:personalisation_logo: help text' | trans }}</span>
<br>
<a id="download-image-template" href="#">{{ 'admin::setup:personalisation_logo: download gabari' | trans }}</a>
<br>
<div class="image-container" id="personalize-image-container">
{% if app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'personalizeFile']) == 'true' %}
{% set extension = app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'fileType']) %}
@@ -26,8 +28,9 @@
<div>
{{ form_widget(form.personalizeLogoInput) }}
<label for="general_personalize-logo-choice_personalizeLogoInput"
id="select-logo-btn">{{ 'prod::setup: select file' | trans }}</label>
id="select-logo-btn">{{ 'admin::setup:personalisation_logo: select file' | trans }}</label>
</div>
<span id="error-text"></span>
</td>
{{ form_widget(form.personalizeFile) }}
{{ form_widget(form.fileType) }}
@@ -38,8 +41,8 @@
$(document).ready(function () {
var fileToUpload = null;
var errorDimension = '{{ 'prod::setup: error text dimension' | trans }}';
var errorFileType = '{{ 'prod::setup: error text file type' | trans }}';
var errorDimension = '{{ 'admin::setup:personalisation_logo: error text dimension' | trans }}';
var errorFileType = '{{ 'admin::setup:personalisation_logo: error text file type' | trans }}';
$('#help-text').show();
@@ -54,7 +57,7 @@
$("#download-image-template").on('click', function (event) {
event.preventDefault();
var imageInBase64 = $('#original-image-placeholder').attr('src');
var imageInBase64 = 'data:image/png;base64,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';
var mimeInfo = base64MimeType(imageInBase64);
var ext = mimeInfo.split('/').pop();
var filename = $('#original-image-placeholder').attr('alt') + "." + ext;
@@ -90,24 +93,26 @@
image.src = _file.target.result;
image.file = this.file;
image.data = this.data;
if (image.file.type != 'image/png' && image.file.type!= 'image/svg+xml') {
$('#general_personalize-logo-choice_personalizeLogoInput').val("");
$('#error-text').text(errorFileType);
$('#error-text').show();
/*$('#help-text').hide();*/
$('#personalize-image-container').hide();
return false;
}
image.onload = function () {
var w = this.width,
h = this.height;
var ext = this.file.type.split('/').pop().toLowerCase();
if (ext != 'png' && ext != 'svg+xml') {
$('#general_personalize-logo-choice_personalizeLogoInput').val("");
$('#error-text').text(errorFileType);
$('#error-text').show();
$('#help-text').hide();
$('#personalize-image-container').hide();
return false;
}
if (h > 41 || w > 120 ) {
$('#error-text').text(errorDimension);
$('#error-text').show();
$('#help-text').hide();
/*$('#help-text').hide();*/
$('#personalize-image-container').hide();
$('#general_personalize-logo-choice_personalizeLogoInput').val("");
return false;
@@ -119,7 +124,7 @@
loadImage(file, function (img) {
$('#personalize-image-container').show();
$('#error-text').hide();
$('#help-text').hide();
/*$('#help-text').hide();*/
$('#personalize-image-container').empty().append(img);
}, {
maxSize: 5242880, // 5MB
@@ -148,7 +153,7 @@
$('#general_personalize-logo-choice_personalizeFile').val(false);
}
console.log(data);
/* console.log(data);*/
}
});

View File

@@ -4,9 +4,12 @@
<div class="control-group">
<label class="control-label"> {{ 'Databox' | trans }}</label>
<div class="controls">
<label class="checkbox inline">
<input class="subdef_task_sbas" type="checkbox" name="sbas[]" value="0"> {{ 'All' | trans }}
</label>
{% for databox in app.getApplicationBox().get_databoxes() %}
<label class="checkbox inline">
<input type="checkbox" name="sbas[]" value="{{ databox.get_sbas_id() }}"> {{ databox.get_viewname() }}
<input class="subdef_task_sbas" type="checkbox" name="sbas[]" value="{{ databox.get_sbas_id() }}"> {{ databox.get_viewname() }}
({{ databox.get_sbas_id() }})
</label>
{% endfor %}
@@ -68,6 +71,10 @@
{% block javascript %}
<script type="text/javascript">
$(".subdef_task_sbas").change(function (e) {
checkSbas();
});
function minmax(v, _min, _max)
{
if(isNaN(v) || v < _min)
@@ -80,6 +87,16 @@
}
return v;
}
function checkSbas()
{
var alldb = $(".subdef_task_sbas[value=0]").prop('checked');
if(alldb) {
$(".subdef_task_sbas[value!=0]").prop('checked', true).attr('disabled', true);
}
else {
$(".subdef_task_sbas[value!=0]").attr('disabled', false);
}
}
function taskFillGraphic(xml)
{
if (xml) {
@@ -98,12 +115,14 @@
gform.flush.value = minmax(parseInt(xml.find("flush").text()), 1, 100);
gform.maxrecs.value = minmax(parseInt(xml.find("maxrecs").text()), 10, 100);
gform.maxmegs.value = minmax(parseInt(xml.find("maxmegs").text()), 64, 512);
var $databoxes = $(gform).find("input[name='sbas[]']");
for(i=0; i < $databoxes.length; i++) {
var sbid = $($databoxes[i]).attr('value');
$($databoxes[i]).prop('checked', (xml.find("sbas").filter(function(){return $(this).text()==sbid}).length > 0));
}
checkSbas();
}
}
</script>

View File

@@ -1,21 +1,21 @@
{% import 'common/macros.html.twig' as macro %}
{% import 'common/macro_caption.html.twig' as macro_caption %}
{% set business = granted_on_collection(record.baseId, [constant('\\ACL::CANMODIFRECORD')]) %}
{% set display_exif = true %}
{% if view == 'answer' %}
{{ macro.caption(record, business, display_exif) }}
{{ macro_caption.caption(record, business, display_exif) }}
{% elseif view == 'lazaret' %}
{{ macro.caption(record, business, display_exif) }}
{{ macro_caption.caption(record, business, display_exif) }}
{% elseif view == 'preview' %}
{% set display_exif = false %}
{{ macro.caption(record, business, display_exif, true) }}
{{ macro_caption.caption(record, business, display_exif, true) }}
{% elseif view == 'basket' %}
{% set display_exif = false %}
{{ macro.caption(record, business, display_exif) }}
{{ macro_caption.caption(record, business, display_exif) }}
{% elseif view == 'overview' %}
{% set display_exif = false %}
{{ macro.caption(record, business, display_exif) }}
{{ macro_caption.caption(record, business, display_exif) }}
{% elseif view == 'publi' %}
{{ macro.caption(record, business, display_exif) }}
{{ macro_caption.caption(record, business, display_exif) }}
{% endif %}

View File

@@ -67,72 +67,3 @@
<input type="hidden" name="recaptcha_response_field" value="manual_challenge">
</noscript>
{% endmacro %}
{% macro flashes() %}
{% for type in app.getAvailableFlashTypes %}
{% for message in app.getFlash(type) %}
<div class="alert alert-{{ type }}">
<table>
<tr>
<td class="alert-block-logo">
<i class="fa-2x icon-white fa fa-exclamation-circle" aria-hidden="true"></i>
</td>
<td class="alert-block-content">{{ message }}</td>
<td class="alert-block-close">
<a href="#"><b>&times;</b></a>
</td>
</tr>
</table>
</div>
{% endfor %}
{% endfor %}
{% endmacro %}
{% macro caption_value(field, bounceable) %}
{% autoescape false %}
{% set terms = [] %}
{% for data in field.values %}
{% if data.from_thesaurus and bounceable %}
{% set value = data.value|e|bounce(field.name, data.qjs, field.sbas_id)|parseColor %}
{% else %}
{% set value = data.value|e|parseColor %}
{% endif %}
{% set terms = [value]|merge(terms) %}
{% endfor %}
{{ terms|join(' ; ') }}
{% endautoescape %}
{% endmacro %}
{% macro caption_field(field, bounceable, extra_classes) %}
<div class="desc {{ extra_classes|join(' ') }}">
<b>{{ field.label_name }}</b> :
{{ _self.caption_value(field, bounceable|default(true))|highlight|linkify }}
</div>
{% endmacro %}
{% macro format_caption(record, highlight, search_engine, include_business, bounceable, technical_data) %}
{% for field in record.get_caption().get_highlight_fields(null, include_business) %}
{% set extra_classes = ['pair'] %}
{% if loop.index is odd %}
{% set extra_classes = ['impair'] %}
{% endif %}
{{ _self.caption_field(field, bounceable|default(true), extra_classes) }}
{% endfor %}
{% if technical_data|default(true) and app.getAuthenticatedUser() is not none and app['settings'].getUserSetting(app.getAuthenticatedUser(), 'technical_display') == 'group' %}
<hr/>
{% include 'common/technical_datas.html.twig' %}
{% endif %}
{% endmacro %}
{% macro caption(record, can_see_business, display_exif, limitedWidth = false) %}
<dl class="{% if limitedWidth %}{% else %}dl-horizontal{% endif %}">
{% for name, value in record.getCaption(caption_field_order(record, can_see_business)) %}
<dt>{{ caption_field_label(record, name) }}</dt>
<dd>{{ caption_field(record, name, value)|e|highlight|linkify|parseColor }}</dd>
{% endfor %}
</dl>
{% if display_exif|default(true) and app.getAuthenticator().user is not none and user_setting('technical_display') == 'group' %}
<hr/>
{% include 'common/technical_datas.html.twig' %}
{% endif %}
{% endmacro %}

View File

@@ -0,0 +1,12 @@
{% macro caption(record, can_see_business, display_exif, limitedWidth = false) %}
<dl class="{% if limitedWidth %}{% else %}dl-horizontal{% endif %}">
{% for name, value in record.getCaption(caption_field_order(record, can_see_business)) %}
<dt>{{ caption_field_label(record, name) }}</dt>
<dd>{{ caption_field(record, name, value)|e|highlight|linkify|parseColor }}</dd>
{% endfor %}
</dl>
{% if display_exif|default(true) and app.getAuthenticator().user is not none and user_setting('technical_display') == 'group' %}
<hr/>
{% include 'common/technical_datas.html.twig' %}
{% endif %}
{% endmacro %}

View File

@@ -0,0 +1,19 @@
{% macro flashes() %}
{% for type in app.getAvailableFlashTypes %}
{% for message in app.getFlash(type) %}
<div class="alert alert-{{ type }}">
<table>
<tr>
<td class="alert-block-logo">
<i class="fa-2x icon-white fa fa-exclamation-circle" aria-hidden="true"></i>
</td>
<td class="alert-block-content">{{ message }}</td>
<td class="alert-block-close">
<a href="#"><b>&times;</b></a>
</td>
</tr>
</table>
</div>
{% endfor %}
{% endfor %}
{% endmacro %}

View File

@@ -1,11 +1,11 @@
<div id="mainMenu" class="">
{% set configuration = app['conf'].get(['registry', 'custom-links']) %}
<div class="PNB menu-bar" style="overflow:hidden;">
<ol>
<li>
<ol>
<li>
<span class="title">
{% if app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'logoChoice']) == 'personalize' and
app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'personalizeFile']) == 'true' %}
app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'personalizeFile']) == 'true' %}
{% set extension = app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'fileType']) %}
{% set personalise_path = '/custom/minilogos/personalize_logo.' ~ extension %}
@@ -17,127 +17,185 @@
{% endif %}
</span>
</li>
<li class="show-menu" id="toggle-menu-main">
<img src="/assets/common/images/icons/menu-burger.png"/>
</li>
<div id="nav_menu_container" class="desktopmenu">
<div class="arrow-up"></div>
<ol class="nav_menu">
{% if module is defined and module != "lightbox" and app.getAuthenticator().isAuthenticated() %}
<li class="menu-bar-item">
<a target="_blank" href="{{ path('prod') }}">
<img src="/assets/common/images/icons/menu-prod.png" class="mobilemenu"/>
<span class="{% if module is defined and module == "prod" %}selected{% endif %}">
{{ 'admin::monitor: production' | trans }}
</span>
</a>
</li>
</li>
{% if module is defined and module != "lightbox" and app.getAuthenticator().isAuthenticated() %}
<li class="show-menu" id="toggle-menu-main">
<img src="/assets/common/images/icons/menu-burger.png"/>
{% if app['browser'].isNewGeneration and app['conf'].get(['registry', 'modules', 'thesaurus']) == true and app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('thesaurus') %}
<li class="menu-bar-item">
<a target="_blank" href="{{ path('thesaurus') }}">
<img src="/assets/common/images/icons/menu-thesaurus.png" class="mobilemenu"/>
<span class="{% if module is defined and module == "thesaurus" %}selected{% endif %}">
{{ 'admin::monitor: module thesaurus' | trans }}
</span>
</a>
</li>
{% endif %}
<div id="nav_menu_container" class="desktopmenu">
<div class="arrow-up"></div>
<ol class="nav_menu">
<li class="menu-bar-item">
<a target="_blank" href="{{ path('prod') }}">
<img src="/assets/common/images/icons/menu-prod.png" class="mobilemenu"/>
<span class="{% if module is defined and module == "prod" %}selected{% endif %}">
{{ 'admin::monitor: production' | trans }}
</span>
</a>
</li>
{% if app['browser'].isNewGeneration and app['conf'].get(['registry', 'modules', 'thesaurus']) == true and app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('thesaurus') %}
<li class="menu-bar-item">
<a target="_blank" href="{{ path('thesaurus') }}">
<img src="/assets/common/images/icons/menu-thesaurus.png" class="mobilemenu"/>
<span class="{% if module is defined and module == "thesaurus" %}selected{% endif %}">
{{ 'admin::monitor: module thesaurus' | trans }}
</span>
</a>
</li>
{% endif %}
{# MODULE #}
{% if app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('admin') %}
<li class="menu-bar-item">
<a target="_blank" href="{{ path('admin') }}">
<img src="/assets/common/images/icons/menu-admin.png" class="mobilemenu"/>
<span class="{% if module is defined and module == "admin" %}selected{% endif %}">
{{ 'admin::monitor: module admin' | trans }}
</span>
</a>
</li>
{% endif %}
{# MODULE #}
{% if app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('admin') %}
<li class="menu-bar-item">
<a target="_blank" href="{{ path('admin') }}">
<img src="/assets/common/images/icons/menu-admin.png" class="mobilemenu"/>
<span class="{% if module is defined and module == "admin" %}selected{% endif %}">
{{ 'admin::monitor: module admin' | trans }}
</span>
</a>
</li>
{% endif %}
{# MODULE #}
{% if app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('report') %}
<li class="menu-bar-item">
<a target="_blank" href="{{ path('report_dashboard') }}">
<img src="/assets/common/images/icons/menu-report.png" class="mobilemenu"/>
<span class="{% if module is defined and module == "report" %}selected{% endif %}">
{{ 'admin::monitor: module report' | trans }}
</span>
</a>
</li>
{% endif %}
{# MODULE #}
{% if app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('report') %}
<li class="menu-bar-item">
<a target="_blank" href="{{ path('report_dashboard') }}">
<img src="/assets/common/images/icons/menu-report.png" class="mobilemenu"/>
<span class="{% if module is defined and module == "report" %}selected{% endif %}">
{{ 'admin::monitor: module report' | trans }}
</span>
</a>
</li>
{% endif %}
{# MODULE #}
<li class="menu-bar-item">
<a id="validation_link" target="_blank" href="{{ path('lightbox') }}">
<img src="/assets/common/images/icons/menu-lightbox.png" class="mobilemenu"/>
<span>
{{ 'admin::monitor: module validation' | trans }}
</span>
</a>
</li>
{# MODULE #}
<li class="menu-bar-item">
<a id="validation_link" target="_blank" href="{{ path('lightbox') }}">
<img src="/assets/common/images/icons/menu-lightbox.png" class="mobilemenu"/>
<span>
{{ 'admin::monitor: module validation' | trans }}
</span>
</a>
</li>
{# MODULE #}
{% if module is defined and module == "prod" %}
{% if app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('upload') %}
<li class="menu-bar-item">
{% set link = path('upload_html5_form') %}
{# MODULE #}
{% if module is defined and module == "prod" %}
{% if app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('upload') %}
<li class="menu-bar-item">
{% set link = path('upload_html5_form') %}
{% if not app['browser'].supportFileAPI() %}
{% set link = path('upload_flash_form') %}
{% endif %}
{% if not app['browser'].supportFileAPI() %}
{% set link = path('upload_flash_form') %}
{% endif %}
<a href="{{ link }}" class="uploader-open-action" title="{{ 'Upload' | trans }}">
<img src="/assets/common/images/icons/menu-upload.png" class="mobilemenu"/>
<a href="{{ link }}" class="uploader-open-action"
title="{{ 'Upload' | trans }}">
<img src="/assets/common/images/icons/menu-upload.png" class="mobilemenu"/>
<span>
{{ 'admin::monitor: module upload' | trans }}
</span>
</a>
</li>
{% endif %}
{% endif %}
{# MODULE #}
{% if module == "prod" %}
<li class="menu-bar-item">
<a href="#" class="state-navigation" data-state="publication">
<img src="/assets/common/images/icons/menu-publication.png" class="mobilemenu"/>
<span>
{{ 'Publications' | trans }}
</span>
</a>
</li>
{% endif %}
{% if module is defined and module == "prod" and app.getAclForUser(app.getAuthenticatedUser()).has_right(constant('\\ACL::ORDER_MASTER')) %}
<li class="menu-bar-item">
<a href="#" class="order-open-action" title="{{ 'Orders manager' | trans }}">
<span>
{{ 'admin::monitor: module upload' | trans }}
</span>
</a>
</li>
{% endif %}
{% endif %}
{{ 'Commandes' | trans }}
</span>
</a>
</li>
{% endif %}
{# MODULE #}
{% if module == "prod" %}
<li class="menu-bar-item">
<a href="#" class="state-navigation" data-state="publication">
<img src="/assets/common/images/icons/menu-publication.png" class="mobilemenu"/>
<span>
{{ 'Publications' | trans }}
</span>
</a>
</li>
{% endif %}
</ol>
</div>
</li>
{% endif %}
<li class="show-menu" id="toggle-menu-link">
<img src="/assets/common/images/icons/menu-web-site.png"/>
<div id="nav_customlink_container" class="mobile-link">
<div class="arrow-up"></div>
<div class="nav-wrapper-box">
<ol class="nav_menu"></ol>
</div>
</div>
</li>
<li class="show-menu" id="toggle-menu-account" style="float: right;margin-right: 16px;">
<img src="/assets/common/images/icons/menu-user.png"/>
<div class="PNB right mobilemenu" id="nav_account_container">
<div class="arrow-up"></div>
<div class="nav-wrapper-box">
<ol class="nav_menu">
{% if app.getAuthenticator().isAuthenticated() %}
<li class="menu-bar-item">
{% if app.getAuthenticatedUser().isGuest %}
<img src="/assets/common/images/icons/menu-name-user.png"/>
<span>{{ 'Guest' | trans }}</span>
{% else %}
<a target="_blank" href="{{ path('account') }}"
title="{{ 'login:: Mon compte' | trans }}">
<img src="/assets/common/images/icons/menu-name-user.png"/>
<span>{{ app.getAuthenticatedUser().getDisplayName() }}</span>
</a>
{% endif %}
</li>
<li class="menu-bar-item">
<a href="{{ path('logout', { 'redirect' : '..' ~ app['request'].getPathInfo() }) }}"
target="_self">
<img src="/assets/common/images/icons/menu-logout.png"/>
<span>{{ 'phraseanet:: deconnection' | trans }}</span>
</a>
</li>
{% endif %}
<li class="menu-bar-item">
<a target="_blank" href="https://docs.phraseanet.com/4.0/">
<img src="/assets/common/images/icons/menu-help.png"/>
<span>
{{ 'phraseanet:: aide' | trans }}
<span style="display:inline-block;cursor:pointer;padding:0;border:none;padding-right:4px;padding-left:4px;"
id="help-trigger"></span>
</span>
</a>
</li>
{% if module is defined and module == "prod" %}
<li class="menu-bar-item">
<a href="#">
<img src="/assets/common/images/icons/menu-help.png"/>
<span style="" class="shortcuts-trigger">
{{ 'phraseanet:: raccourcis clavier' | trans }}
</span>
</a>
</li>
{% endif %}
<li class="menu-bar-item">
<a href="#">
<img src="/assets/common/images/icons/menu-help.png"/>
<span style="" class="infoDialog"
infos="<div><span style='font-size:18px;'>PHRASEANET</span> {{ app['phraseanet.version'].getName() }} (V{{ app['phraseanet.version'].getNumber() }})</div><div></div><br/><div><a href='http://www.gnu.org/licenses/gpl.html' target='_blank'><img src='http://www.gnu.org/graphics/gplv3-88x31.png' style='vertical-align:middle;'/><span>License GNU GPL v3</span></a></div><br/><div><a href='http://www.phraseanet.com/' target='_blank'> &copy; Copyright Alchemy 2005-{{ "now"|date("Y") }}</a><p style='margin-top: 10px' ><a href='../../gitlog.txt' target='_blank'>gitlog</a></p></div>">{{ 'phraseanet:: a propos' | trans }}</span>
</a>
</li>
</ol>
</div>
</div>
</li>
{% if module is defined and module == "prod" and app.getAclForUser(app.getAuthenticatedUser()).has_right(constant('\\ACL::ORDER_MASTER')) %}
<li class="menu-bar-item">
<a href="#" class="order-open-action" title="{{ 'Orders manager' | trans }}">
<span>
{{ 'Commandes' | trans }}
</span>
</a>
</li>
{% endif %}
{% endif %}
</ol>
</div>
<li class="show-menu" id="toggle-menu-link">
<img src="/assets/common/images/icons/menu-web-site.png"/>
</li>
<li class="show-menu" id="toggle-menu-account" style="float: right;margin-right: 16px;">
<img src="/assets/common/images/icons/menu-user.png"/>
</li>
<div id="nav_customlink_container">
<div class="arrow-up"></div>
<div class="nav-wrapper-box">
<ol class="nav_menu"></ol>
</div>
</div>
</ol>
</ol>
</div>
@@ -232,73 +290,9 @@
</li>
{% endif %}
</div>
<div class="PNB right mobilemenu" id="nav_account_container">
<div class="arrow-up"></div>
<div class="nav-wrapper-box">
<ol class="nav_menu">
<li class="menu-bar-item">
{% if app.getAuthenticator().isAuthenticated() %}
{% if app.getAuthenticatedUser().isGuest %}
<img src="/assets/common/images/icons/menu-name-user.png"/>
<span>
{{ 'Guest' | trans }}
</span>
{% else %}
<a target="_blank" href="{{ path('account') }}" title="{{ 'login:: Mon compte' | trans }}">
<img src="/assets/common/images/icons/menu-name-user.png"/>
<span>
{{ app.getAuthenticatedUser().getDisplayName() }}
</span>
</a>
{% endif %}
{% endif %}
</li>
<li class="menu-bar-item">
{% if app.getAuthenticator().isAuthenticated() %}
<a href="{{ path('logout', { 'redirect' : '..' ~ app['request'].getPathInfo() }) }}"
target="_self">
<img src="/assets/common/images/icons/menu-logout.png"/>
<span>
{{ 'phraseanet:: deconnection' | trans }}
</span>
</a>
{% endif %}
</li>
<li class="menu-bar-item">
<a target="_blank" href="https://docs.phraseanet.com/4.0/">
<img src="/assets/common/images/icons/menu-help.png"/>
<span>
{{ 'phraseanet:: aide' | trans }}
<span style="display:inline-block;cursor:pointer;padding:0;border:none;padding-right:4px;padding-left:4px;"
id="help-trigger"></span>
</span>
</a>
</li>
{% if module is defined and module == "prod" %}
<li class="menu-bar-item">
<a href="#">
<img src="/assets/common/images/icons/menu-help.png"/>
<span style="" class="shortcuts-trigger">
{{ 'phraseanet:: raccourcis clavier' | trans }}
</span>
</a>
</li>
{% endif %}
<li class="menu-bar-item">
<a href="#">
<img src="/assets/common/images/icons/menu-help.png"/>
<span style="" class="infoDialog"
infos="<div><span style='font-size:18px;'>PHRASEANET</span> {{ app['phraseanet.version'].getName() }} (V{{ app['phraseanet.version'].getNumber() }})</div><div></div><br/><div><a href='http://www.gnu.org/licenses/gpl.html' target='_blank'><img src='http://www.gnu.org/graphics/gplv3-88x31.png' style='vertical-align:middle;'/><span>License GNU GPL v3</span></a></div><br/><div><a href='http://www.phraseanet.com/' target='_blank'> &copy; Copyright Alchemy 2005-{{ "now"|date("Y") }}</a><p style='margin-top: 10px' ><a href='../../gitlog.txt' target='_blank'>gitlog</a></p></div>">{{ 'phraseanet:: a propos' | trans }}</span>
</a>
</li>
</ol>
</div>
</div>
</div>
{% if app.getAuthenticator().isAuthenticated() and module == "prod" %}
{% if app.getAuthenticator().isAuthenticated() and module == "prod" %}
<div style="display:none;z-index:30000;" id="notification_box">
{% set notifications = app['events-manager'].get_notifications %}
{% include 'prod/notifications.html.twig' %}
@@ -312,9 +306,21 @@
//seperate array based on location of link
var seperatedLinksByLocation = _.groupBy(configurationSettingLinks, "linkLocation");
for (key in seperatedLinksByLocation) {
if (key === 'navigation-bar') {
var sortedCustomLinks = _.sortBy(seperatedLinksByLocation[key], 'linkOrder');
/*show navigation-bar if there is some result*/
console.log(sortedCustomLinks);
$(window).resize(function () {
if (($(window).width() <= 1064) && (sortedCustomLinks != undefined)) {
$('#toggle-menu-link img').show();
} else {
$('#toggle-menu-link img').hide();
}
});
_.each(sortedCustomLinks, function (linksData) {
if (linksData.linkLanguage == 'all' || linksData.linkLanguage === '{{ app['locale'] }}') {
@@ -353,7 +359,7 @@
}
}
$('#toggle-menu-main').on('click', function (event) {
$('#toggle-menu-main > img').on('click', function (event) {
$('#nav_menu_container').toggle();
if ($('#nav_customlink_container').is(":visible")) {
$('#nav_customlink_container').hide();
@@ -363,7 +369,7 @@
}
});
$('#toggle-menu-link').on('click', function (event) {
$('#toggle-menu-link > img').on('click', function (event) {
$('#nav_customlink_container').toggle();
if ($('#nav_menu_container').is(":visible")) {
$('#nav_menu_container').hide();
@@ -373,7 +379,7 @@
}
});
$('#toggle-menu-account').on('click', function (event) {
$('#toggle-menu-account > img').on('click', function (event) {
$('#nav_account_container').toggle();
if ($('#nav_menu_container').is(":visible")) {
$('#nav_menu_container').hide();

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

@@ -1,7 +1,7 @@
{% extends "lightbox/index_layout.html.twig" %}
{% import 'common/thumbnail.html.twig' as thumbnail %}
{% import 'common/macros.html.twig' as macro %}
{% import 'common/macro_caption.html.twig' as macro_caption %}
{% block javascript %}
<script type="text/javascript" src="/assets/common/js/common{% if not app.debug %}.min{% endif %}.js"></script>
@@ -84,7 +84,7 @@
<div class="lightbox_container">
{% set business = app.getAclForUser(app.getAuthenticatedUser()).has_right_on_base(first_item.getRecord(app).get_base_id(), constant('\\ACL::CANMODIFRECORD')) %}
{% if first_item %}
{{macro.caption(first_item.getRecord(app), business, false)}}
{{ macro_caption.caption(first_item.getRecord(app), business, false) }}
{% endif %}
</div>
</div>

View File

@@ -1,7 +1,7 @@
{% extends "lightbox/index_layout.html.twig" %}
{% import 'common/thumbnail.html.twig' as thumbnail %}
{% import 'common/macros.html.twig' as macro %}
{% import 'common/macro_caption.html.twig' as macro_caption %}
{% block javascript %}
<script type="text/javascript" src="/assets/common/js/common{% if not app.debug %}.min{% endif %}.js"></script>
@@ -95,7 +95,7 @@
<div class="lightbox_container">
{% if basket_element %}
{% set business = app.getAclForUser(app.getAuthenticatedUser()).has_right_on_base(basket_element.getRecord(app).get_base_id(), constant('\\ACL::CANMODIFRECORD')) %}
{{macro.caption(basket_element.getRecord(app), business, false)}}
{{ macro_caption.caption(basket_element.getRecord(app), business, false) }}
{% endif %}
</div>
</div>

View File

@@ -1,7 +1,7 @@
{% extends "lightbox/index_layout.html.twig" %}
{% import 'common/thumbnail.html.twig' as thumbnail %}
{% import 'common/macros.html.twig' as macro %}
{% import 'common/macro_caption.html.twig' as macro_caption %}
{% block javascript %}
<script type="text/javascript" src="/assets/production/commons{% if not app.debug %}.min{% endif %}.js"></script>
@@ -81,7 +81,7 @@
<div class="lightbox_container PNB">
{% set business = app.getAclForUser(app.getAuthenticatedUser()).has_right_on_base(first_item.getRecord(app).get_base_id(), constant('\\ACL::CANMODIFRECORD')) %}
{% if first_item %}
{{macro.caption(first_item.getRecord(app), business, false, true)}}
{{ macro_caption.caption(first_item.getRecord(app), business, false, true) }}
{% endif %}
</div>
</div>

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

@@ -1,7 +1,7 @@
{% extends "lightbox/index_layout.html.twig" %}
{% import 'common/thumbnail.html.twig' as thumbnail %}
{% import 'common/macros.html.twig' as macro %}
{% import 'common/macro_caption.html.twig' as macro_caption %}
{% block javascript %}
<script type="text/javascript" src="/assets/production/commons{% if not app.debug %}.min{% endif %}.js"></script>
@@ -95,7 +95,7 @@
<div class="lightbox_container PNB">
{% if basket_element %}
{% set business = app.getAclForUser(app.getAuthenticatedUser()).has_right_on_base(basket_element.getRecord(app).get_base_id(), constant('\\ACL::CANMODIFRECORD')) %}
{{macro.caption(basket_element.getRecord(app), business, false, true)}}
{{ macro_caption.caption(basket_element.getRecord(app), business, false, true) }}
{% endif %}
</div>
</div>

View File

@@ -1,6 +1,6 @@
{% extends "login/layout/sidebar-layout.html.twig" %}
{% import "common/macros.html.twig" as macro %}
{% import "common/macro_captcha.html.twig" as macro_captcha %}
{% import "login/common/macros.html.twig" as auth_macro %}
{% block main_title %}
@@ -70,10 +70,11 @@
{{ "Forgot password?" | trans }}
</a>
</div>
{% if recaptcha_display %}
<div class="row-fluid">
<div class="span12">
{{ macro.captcha() }}
{{ macro_captcha.captcha() }}
</div>
</div>
{% endif %}

View File

@@ -1,6 +1,6 @@
{% extends "login/layout/sidebar-layout.html.twig" %}
{% import "common/macros.html.twig" as macro %}
{% import "common/macro_captcha.html.twig" as macro_captcha %}
{% import "login/common/macros.html.twig" as auth_macro %}
{% block title %}
@@ -60,7 +60,7 @@
{% if recaptcha_display %}
<div class="row-fluid">
<div class="span12">
{{ macro.captcha() }}
{{ macro_captcha.captcha() }}
</div>
</div>
{% endif %}

View File

@@ -1,6 +1,6 @@
{% extends "login/layout/sidebar-layout.html.twig" %}
{% import "common/macros.html.twig" as macro %}
{% import "common/macro_captcha.html.twig" as macro_captcha %}
{% import "login/common/macros.html.twig" as auth_macro %}
{% block title %}
@@ -76,7 +76,7 @@
{% if recaptcha_display %}
<div class="row-fluid">
<div class="span12">
{{ macro.captcha() }}
{{ macro_captcha.captcha() }}
</div>
</div>
{% endif %}

View File

@@ -1,7 +1,7 @@
{% extends "login/layout/sidebar-layout.html.twig" %}
{% import "login/common/macros.html.twig" as auth_macro %}
{% import "common/macros.html.twig" as macro %}
{% import "common/macro_captcha.html.twig" as macro_captcha %}
{% block title %}
{{ "Register" | trans }}
@@ -85,7 +85,7 @@
{% if recaptcha_display %}
<div class="row-fluid">
<div class="span12">
{{ macro.captcha() }}
{{ macro_captcha.captcha() }}
</div>
</div>
{% endif %}

View File

@@ -36,7 +36,7 @@
lang: "{{ app.locale }}",
baseUrl: '{{ app['request'].getUriForPath('/') }}',
basePath: '{{ app.request.basePath|e('js') }}',
recordUrl: '{{ url('alchemy_embed_view', {url: recordUrl|trim, autoplay: autoplay|default('false') }) }}',
recordUrl: '{{ url('alchemy_embed_view', {url: recordUrl|trim, autoplay: autoplay|default('false'), t: currentTime|trim }) | e('js')}}',
debug: {% if app.debug == true %}true{% else %}false{% endif %}
});
</script>

View File

@@ -33,6 +33,12 @@
</a>
</p>
<p>
<a id="linkedin-link" href="https://www.linkedin.com/shareArticle?url={{ subdefList[defKey].permaviewUrl | url_encode }}" target="_blank" title="{% trans %}Send to Linkedin{% endtrans %}" >
<img src="/assets/common/images/icons/linkedin.png" title="{% trans %}Send to Linkedin{% endtrans %}" style="width:25px;vertical-align:middle;padding:0 5px;"/>
{% trans %}Send to Linkedin{% endtrans %}</a>
</p>
<form action="#">
<div class="form-group clearfix">
<label style="display:inline-block;">{% trans %}Resource URL{% endtrans %}</label>

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">
@@ -27,8 +27,8 @@
<tr>
<td>
<img
title="{{ 'Vous avez recu une demande de validation de document sur ce panier' | trans }}"
class="basketTips"
title="{{ basket.getDescription() }}"
class="basketTips basket_title"
src="/assets/common/images/icons/valid.png"
/>
</td>
@@ -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">
@@ -385,19 +385,19 @@
<td>
{% if choice.getParticipant().getCanAgree() %}
{% if choice.getAgreement() == true %}
<img style="cursor:help;" src='/assets/lightbox/images/agree.png' title="{{ "L'utilisateur approuve ce document" | trans }}" />
<img style="cursor:help;" src='/assets/common/images/icons/green-check.png' title="{{ "L'utilisateur approuve ce document" | trans }}" />
{% elseif choice.getAgreement() is null %}
<img style="cursor:help;" src='/assets/common/images/icons/valid.png' title="{{ "L'utilisateur n'a pas encore donne son avis sur ce document" | trans }}" />
<img style="cursor:help;" src='/assets/common/images/icons/no-response.png' title="{{ "L'utilisateur n'a pas encore donne son avis sur ce document" | trans }}" />
{% else %}
<img style="cursor:help;" src='/assets/lightbox/images/disagree.png' title="{{ "L'utilisateur desapprouve ce document" | trans }}" />
<img style="cursor:help;" src='/assets/common/images/icons/red-cross.png' title="{{ "L'utilisateur desapprouve ce document" | trans }}" />
{% endif %}
{% else %}
<img style="cursor:help;" src='/assets/common/images/icons/no-valid.png' title="{{ "This user does not participate to the validation but is only viewer." | trans }}" />
<img style="cursor:help;" src='/assets/common/images/icons/vote-admin.png' title="{{ "This user does not participate to the validation but is only viewer." | trans }}" />
{% endif %}
</td>
<td style="width:25px;">
{% if choice.getNote() != '' %}
<img style="cursor:help;" src='/assets/common/images/icons/file-edit.png' class="noteTips" title="{{choice.getNote()|nl2br}}" />
<span class="noteTips macroFileEdit" title="{{choice.getNote()|nl2br}}">&nbsp;</span>
{% endif %}
</td>
</tr>

View File

@@ -19,7 +19,7 @@
{% if context == 'Push' %}
<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"/>
<img style="width: 36px; height: 36px" src="/assets/common/images/icons/feedback-icon.png"/>
{% endif %}
</div>
<div class="PNB content" style="top:45px; overflow-y:auto;">

View File

@@ -264,6 +264,19 @@
<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' %}
{% set startq = "{\"query\":{\"_ux_zone\":\"\",\"type\":\"CLAUSES\",\"must_match\":\"ALL\",\"enabled\":true,\"clauses\":[{\"_ux_zone\":\"FULLTEXT\",\"type\":\"FULLTEXT\",\"value\":\"" %}
{% set startq = startq ~ (app['settings'].getUserSetting(app.getAuthenticatedUser(), 'start_page_query') | replace({'"': '\\"'})) %}
{% set startq = startq ~ "\",\"enabled\":true}]}}" %}
<div id="FIRST_QUERY_CONTAINER" class="start-query" style="display: none" data-format="json">{{ startq | raw }}</div>
{% elseif app['settings'].getUserSetting(app.getAuthenticatedUser(), 'start_page') == 'LAST_QUERY' %}
{% set startq = app['settings'].getUserSetting(app.getAuthenticatedUser(), 'last_jsonquery') %}
{% if startq is empty %}
{% set startq = "{\"query\":{\"_ux_zone\":\"\",\"type\":\"CLAUSES\",\"must_match\":\"ALL\",\"enabled\":true,\"clauses\":[{\"_ux_zone\":\"FULLTEXT\",\"type\":\"FULLTEXT\",\"value\":\"" %}
{% set startq = startq ~ "\",\"enabled\":true}]}}" %}
{% endif %}
<div id="FIRST_QUERY_CONTAINER" class="last-query" style="display: none" data-format="json">{{ startq | 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 +417,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 +446,7 @@
{% endif %}
{% endfor %}
</select>
</div>
</div>#}
</div>
<div id="ADVSRCH_DATE_ZONE">
@@ -449,13 +462,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 +513,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 +532,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

@@ -1,4 +1,4 @@
{% import 'common/macros.html.twig' as macro %}
{% import 'common/macro_caption.html.twig' as macro_caption %}
{% set can_edit = granted_on_collection(record.baseId, [constant('\\ACL::CANMODIFRECORD')]) %}
{% set can_see_business = can_edit %}
@@ -17,8 +17,4 @@
{% endfor %}
</div>
{% if record.is_from_reg() %}
{{macro.caption(record, can_see_business)}}
{% else %}
{{macro.caption(record, can_see_business)}}
{% endif %}
{{macro_caption.caption(record, can_see_business)}}

View File

@@ -1,4 +1,4 @@
{% import 'common/macros.html.twig' as macro %}
{% import 'common/macro_caption.html.twig' as macro_caption %}
{% block content_item %}
<div class='list ui-corner-all'>
@@ -14,7 +14,7 @@
<div class='desc' style='max-height:{{ settings.images_size + 70 }}px;overflow-y:auto;'>
<div class="fixeddesc">
{% set can_see_business = granted_on_collection(record.baseId, [constant('\\ACL::CANMODIFRECORD')]) %}
{{ macro.caption(record, can_see_business) }}
{{ macro_caption.caption(record, can_see_business) }}
</div>
</div>
</td>

View File

@@ -1,5 +1,5 @@
{% import 'prod/results/macro.html.twig' as result_macro %}
{% import 'common/macros.html.twig' as macro %}
{% import 'common/macro_caption.html.twig' as macro_caption %}
<div style="width:{{ settings.images_size + 30}}px;"
sbas="{{ record.databoxId }}"
@@ -25,7 +25,7 @@
{% set can_see_business = granted_on_collection(record.baseId, [constant('\\ACL::CANMODIFRECORD')]) %}
<div class="thumb captionTips"
{% if settings.rollover_thumbnail == 'caption' %}title="{{ macro.caption(record, can_see_business, false) | e }}"{% endif %}
{% if settings.rollover_thumbnail == 'caption' %}title="{{ macro_caption.caption(record, can_see_business, false) | e }}"{% endif %}
{% if settings.rollover_thumbnail == 'preview' %}tooltipsrc="{{ path('prod_tooltip_preview', { 'sbas_id' : record.databoxId, 'record_id' : record.recordId }) }}"{% endif %}
style="height:{{ settings.images_size }}px; z-index:90;">
<div class="doc_infos">
@@ -53,10 +53,10 @@
{% endif %}
</div>
</div>
<div style="height: 25px; position:relative; text-align:left;">
<div class="bottom_actions_holder" style="height: 27px; position:relative; text-align:left;">
<table class="bottom actions" style="width:100%; table-layout:fixed;">
<tr>
<td style="text-align:left;text-overflow:ellipsis;overflow:hidden;">
<td class="text-stack-wrapper" style="text-align:left;text-overflow:ellipsis;overflow:hidden;">
{% set collectionLogo = collection_logo(record.baseId) %}
{% if collectionLogo is empty %}
{{ record.collectionName }}
@@ -74,38 +74,38 @@
{% endif %}
{# drop down options #}
<td style="text-align:right;width:{{l_width}}px;" valign="bottom">
<td class="icon-stack-wrapper" style="text-align:right;width:{{l_width}}px;" valign="bottom">
{% if settings.rollover_thumbnail == 'caption' %}
{% if record_subdef_url(record, 'preview') is not null and has_access_subdef(record, 'preview') %}
<span class="fa-stack fa-lg previewTips"
tooltipsrc="{{ path('prod_tooltip_preview', { 'sbas_id' : record.databoxId, 'record_id' : record.recordId }) }}">
<i class="fa fa-circle fa-stack-2x" aria-hidden="true"></i>
<i class="fa fa-search fa-stack-1x fa-inverse" aria-hidden="true"></i>
<i class="icomoon icon-pastille-carre fa-stack-2x" aria-hidden="true"></i>
<i class="icomoon icon-picto-search-new white fa-stack-1x " aria-hidden="true"></i>
</span>
{% endif %}
{% endif %}
{% if settings.rollover_thumbnail == 'preview' %}
<span class="fa-stack fa-lg captionRolloverTips"
<span class="fa-stack fa-lg captionRolloverTips" title="{{ macro.caption(record, can_see_business, false) | e }}"
tooltipsrc="{{ path('prod_tooltip_caption', { 'sbas_id' : record.databoxId, 'record_id' : record.recordId, 'context' : 'answer', 'number' : record.position|default(0) }) }}">
<i class="fa fa-circle fa-stack-2x" aria-hidden="true"></i>
<i class="fa fa-list fa-stack-1x fa-inverse" aria-hidden="true"></i>
<i class="icomoon icon-pastille-carre fa-stack-2x" aria-hidden="true"></i>
<i class="icomoon icon-picto-point-list white fa-stack-1x " aria-hidden="true"></i>
</span>
{% endif %}
{% if settings.technical_display == '1' %}
<span class="fa-stack infoTips"
tooltipsrc="{{ path('prod_tooltip_technical_data', { 'sbas_id' : record.databoxId, 'record_id' : record.recordId }) }}">
<i class="fa fa-circle fa-stack-2x" aria-hidden="true"></i>
<i class="fa fa-info fa-stack-1x fa-inverse" aria-hidden="true"></i>
<i class="icomoon icon-pastille-carre fa-stack-2x" aria-hidden="true"></i>
<i class="icomoon icon-picto-information white fa-stack-1x " aria-hidden="true"></i>
</span>
{% endif %}
{% if settings.show_context_menu %}
<span class="fa-stack contextMenuTrigger" id="contextTrigger_{{ record.id }}"
tooltipsrc="{{ path('prod_tooltip_technical_data', { 'sbas_id' : record.databoxId, 'record_id' : record.recordId }) }}">
<i class="fa fa-circle fa-stack-2x" aria-hidden="true"></i>
<i class="fa fa-ellipsis-h fa-stack-1x fa-inverse" aria-hidden="true"></i>
<i class="icomoon icon-pastille-rond fa-stack-2x" aria-hidden="true"></i>
<i class="icomoon icon-picto-three-little-point white fa-stack-1x fa-inverse" aria-hidden="true"></i>
</span>
<table cellspacing="0" cellpadding="0" style="display:none;" id="answerContext_{{record.id}}" class="contextMenu answercontextmenu">
<tbody>

View File

@@ -17,7 +17,8 @@
</li>
{% endif %}
<li class="ui-corner-top baskets">
<a href="#baskets" class="WZbasketTab">
<a href="#baskets" class="WZbasketTab WZtabs">
<img src="/assets/common/images/icons/workzone32.png" title="{{ 'phraseanet:: baskets' | trans }}"/>
<div id="basket_menu_trigger">&#9660;</div>
</a>
</li>

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;
}
// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//