diff --git a/lib/Alchemy/Phrasea/Application/Overview.php b/lib/Alchemy/Phrasea/Application/Overview.php index 7eec900700..a7855cab03 100644 --- a/lib/Alchemy/Phrasea/Application/Overview.php +++ b/lib/Alchemy/Phrasea/Application/Overview.php @@ -81,57 +81,59 @@ return call_user_func( throw new \Exception_Session_NotAuthenticated(); } - $all_access = false; - $subdefStruct = $databox->get_subdef_structure(); + $stamp = $watermark = $all_access = false; - if ($subdefStruct->getSubdefGroup($record->get_type())) { - foreach ($subdefStruct->getSubdefGroup($record->get_type()) as $subdefObj) { - if ($subdefObj->get_name() == $subdef) { - if ($subdefObj->get_class() == 'thumbnail') { - $all_access = true; + if ($subdef != 'thumbnail') { + $subdefStruct = $databox->get_subdef_structure(); + + if ($subdefStruct->getSubdefGroup($record->get_type())) { + foreach ($subdefStruct->getSubdefGroup($record->get_type()) as $subdefObj) { + if ($subdefObj->get_name() == $subdef) { + if ($subdefObj->get_class() == 'thumbnail') { + $all_access = true; + } + break; } - break; } } - } $user = \User_Adapter::getInstance($session->get_usr_id(), $app['phraseanet.appbox']); - if (!$user->ACL()->has_access_to_subdef($record, $subdef)) { - throw new \Exception_UnauthorizedAction(); - } - - $stamp = false; - $watermark = !$user->ACL()->has_right_on_base($record->get_base_id(), 'nowatermark'); - - if ($watermark && !$all_access) { - $subdef_class = $databox - ->get_subdef_structure() - ->get_subdef($record->get_type(), $subdef) - ->get_class(); - - if ($subdef_class == \databox_subdef::CLASS_PREVIEW && $user->ACL()->has_preview_grant($record)) { - $watermark = false; - } elseif ($subdef_class == \databox_subdef::CLASS_DOCUMENT && $user->ACL()->has_hd_grant($record)) { - $watermark = false; + if (!$user->ACL()->has_access_to_subdef($record, $subdef)) { + throw new \Exception_UnauthorizedAction(); } - } - if ($watermark && !$all_access) { + $watermark = !$user->ACL()->has_right_on_base($record->get_base_id(), 'nowatermark'); + + if ($watermark && !$all_access) { + $subdef_class = $databox + ->get_subdef_structure() + ->get_subdef($record->get_type(), $subdef) + ->get_class(); + + if ($subdef_class == \databox_subdef::CLASS_PREVIEW && $user->ACL()->has_preview_grant($record)) { + $watermark = false; + } elseif ($subdef_class == \databox_subdef::CLASS_DOCUMENT && $user->ACL()->has_hd_grant($record)) { + $watermark = false; + } + } + + if ($watermark && !$all_access) { $em = $app['phraseanet.core']->getEntityManager(); - $repository = $em->getRepository('\Entities\BasketElement'); + $repository = $em->getRepository('\Entities\BasketElement'); - /* @var $repository \Repositories\BasketElementRepository */ + /* @var $repository \Repositories\BasketElementRepository */ - $ValidationByRecord = $repository->findReceivedValidationElementsByRecord($record, $user); - $ReceptionByRecord = $repository->findReceivedElementsByRecord($record, $user); + $ValidationByRecord = $repository->findReceivedValidationElementsByRecord($record, $user); + $ReceptionByRecord = $repository->findReceivedElementsByRecord($record, $user); - if ($ValidationByRecord && count($ValidationByRecord) > 0) { - $watermark = false; - } elseif ($ReceptionByRecord && count($ReceptionByRecord) > 0) { - $watermark = false; + if ($ValidationByRecord && count($ValidationByRecord) > 0) { + $watermark = false; + } elseif ($ReceptionByRecord && count($ReceptionByRecord) > 0) { + $watermark = false; + } } } diff --git a/lib/Alchemy/Phrasea/Out/Module/PDF.php b/lib/Alchemy/Phrasea/Out/Module/PDF.php index 340d5fbded..d8e165e499 100644 --- a/lib/Alchemy/Phrasea/Out/Module/PDF.php +++ b/lib/Alchemy/Phrasea/Out/Module/PDF.php @@ -468,7 +468,7 @@ class PDF $t = str_replace( array("<", ">", "&") , array("<", ">", "&") - , $field->get_serialized_values() + , strip_tags($field->get_serialized_values()) ); $this->pdf->Write(5, $t); diff --git a/lib/classes/Session/Handler.class.php b/lib/classes/Session/Handler.class.php index 397a17b9c9..ae481061de 100644 --- a/lib/classes/Session/Handler.class.php +++ b/lib/classes/Session/Handler.class.php @@ -361,7 +361,7 @@ class Session_Handler * @param Session_Authentication_Interface $auth * @return Session_Handler */ - public function authenticate(Session_Authentication_Interface $auth) + public function authenticate(Session_Authentication_Interface $auth, $persistent = false) { if ($this->appbox->get_registry()->get('GV_maintenance')) { throw new Exception_ServiceUnavailable(); @@ -404,7 +404,9 @@ class Session_Handler $this->delete_postlog(); $auth->postlog(); - $this->add_persistent_cookie(); + if ($persistent) { + $this->add_persistent_cookie(); + } self::set_cookie('last_act', '', -400000, true); return $this; diff --git a/lib/classes/task/abstract.class.php b/lib/classes/task/abstract.class.php index 5608a0be68..9f5988bbe5 100755 --- a/lib/classes/task/abstract.class.php +++ b/lib/classes/task/abstract.class.php @@ -900,4 +900,18 @@ abstract class task_abstract return $this; } + + /** + * Escape a shell command. + * + * As this function is buggy under windows, this method check the + * environment + * + * @param string $command + * @return string + */ + protected static function escapeShellCmd($command) + { + return defined('PHP_WINDOWS_VERSION_BUILD') ? escapeshellarg($command) : escapeshellcmd($command); + } } diff --git a/lib/classes/task/period/cindexer.class.php b/lib/classes/task/period/cindexer.class.php index 006279ea0b..32b5cd13b6 100755 --- a/lib/classes/task/period/cindexer.class.php +++ b/lib/classes/task/period/cindexer.class.php @@ -473,18 +473,18 @@ class task_period_cindexer extends task_abstract $pipes = array(); - $logcmd = $cmd; + $logcmd = self::escapeShellCmd($cmd); foreach ($args_nopwd as $arg) { $logcmd .= ' ' . escapeshellarg($arg); } - $this->log(sprintf('cmd=\'%s\'', escapeshellcmd($logcmd))); + $this->log(sprintf('cmd=\'%s\'', self::escapeShellCmd($logcmd))); - $execmd = $cmd; + $execmd = self::escapeShellCmd($cmd); foreach ($args as $arg) { $execmd .= ' ' . escapeshellarg($arg); } - $process = proc_open(escapeshellcmd($execmd), $descriptors, $pipes, $this->binpath, null, array('bypass_shell' => true)); + $process = proc_open($execmd, $descriptors, $pipes, $this->binpath, null, array('bypass_shell' => true)); $pid = NULL; if (is_resource($process)) { diff --git a/lib/conf.d/bases_structure.xml b/lib/conf.d/bases_structure.xml index 8693bbd915..1ea92ec016 100644 --- a/lib/conf.d/bases_structure.xml +++ b/lib/conf.d/bases_structure.xml @@ -5297,6 +5297,13 @@ site + + sit_session + INDEX + + sit_session + + user INDEX diff --git a/templates/web/common/dialog_export.html.twig b/templates/web/common/dialog_export.html.twig index c3f3ed3546..757277f20e 100644 --- a/templates/web/common/dialog_export.html.twig +++ b/templates/web/common/dialog_export.html.twig @@ -120,7 +120,7 @@ {% endif %} @@ -187,7 +187,7 @@ {% endif %} @@ -233,7 +233,7 @@ {% endif %} @@ -391,7 +391,7 @@ {% endif %} @@ -499,14 +499,19 @@ }); {% set max_download = registry.get('GV_download_max', 120) %} - {% set alert_too_big%} - "{% trans %} You can not directly download more than {{max_download}} Mo ; time to package all documents is too long{% endtrans %}\n"+ - "{% trans 'You can alternatively receive an email when the download is ready.' %}\n\n"+ - "{% trans 'Would you like to receive an e-mail when your download is ready ?' %}" + {% set alert_too_big_one %} + {% trans %} You can not directly download more than {{max_download}} Mo ; time to package all documents is too long{% endtrans %} {% endset %} + {% set alert_too_big_two %} + {% trans 'You can alternatively receive an email when the download is ready.' %} + {% endset %} + {% set alert_too_big_three %} + {% trans 'Would you like to receive an e-mail when your download is ready ?' %} + {% endset %} + if(count>1 && total/1024/1024 > {{max_download}}) { - if(confirm("{{alert_too_big|escape("js")}}")) + if(confirm("{{alert_too_big_one|e('js') ~ "\\n" ~ alert_too_big_two ~ "\\n" ~ alert_too_big_three}}")) { $('input[name="obj[]"]:checked', $('#download')).each(function(i,n){ $('input[name="obj[]"][value="'+$(n).val()+'"]', $('#sendmail')).attr('checked', true); diff --git a/templates/web/common/menubar.html.twig b/templates/web/common/menubar.html.twig index 825f566ea9..6551655e57 100644 --- a/templates/web/common/menubar.html.twig +++ b/templates/web/common/menubar.html.twig @@ -6,7 +6,7 @@ Phraseanet - {% if session.is_authenticated %} + {% if module != "lightbox" and session.is_authenticated %}
  • {% if module == "prod" %} @@ -69,7 +69,7 @@ {# MODULE #}
  • - + {% trans 'admin::monitor: module validation' %} diff --git a/templates/web/common/preview.html.twig b/templates/web/common/preview.html.twig index d5b9f0d760..c75830a833 100644 --- a/templates/web/common/preview.html.twig +++ b/templates/web/common/preview.html.twig @@ -18,4 +18,4 @@ {% set width = preview_obj.get_width() %} {% set height = preview_obj.get_height() %} -{{ thumbnail.format(preview_obj, preview_obj.get_width(), preview_obj.get_height(), '', session, wrap) }} +{{ thumbnail.format(preview_obj, preview_obj.get_width(), preview_obj.get_height(), '', session, wrap, false) }} diff --git a/templates/web/common/thumbnail.html.twig b/templates/web/common/thumbnail.html.twig index be1caaa4d6..85ef7cd840 100644 --- a/templates/web/common/thumbnail.html.twig +++ b/templates/web/common/thumbnail.html.twig @@ -1,4 +1,4 @@ -{% macro format(thumbnail, b_w, b_h, extraclass, session, wrap)%} +{% macro format(thumbnail, b_w, b_h, extraclass, session, wrap, lazyload)%} {% set record_type = thumbnail.get_type() %} @@ -92,9 +92,9 @@ {menu: "false",flashvars: "playerID=2&autostart=yes&noinfo=yes&animation=no&remaining=yes&soundFile={{url}}", movie: "/include/jslibs/audio-player/player.swf", allowFullScreen :"true",wmode: "transparent"}, false); {% else %} {% set url = url ~ '?tag=' ~ thumbnail.getEtag() %} - + src="{% if lazyload %}/skins/grey.gif{% else %}{{ url }}{% endif %}" data-original="{{ url }}" ondragstart="return false;"> {% endif %} diff --git a/templates/web/lightbox/IE6/feed.html.twig b/templates/web/lightbox/IE6/feed.html.twig index 3c42e1a2bc..70f8bb690f 100644 --- a/templates/web/lightbox/IE6/feed.html.twig +++ b/templates/web/lightbox/IE6/feed.html.twig @@ -42,7 +42,7 @@
    {% if first_item %} {% set preview = first_item.get_record().get_preview() %} - {{thumbnail.format(preview, preview.get_width(), preview.get_height(),'',session, false)}} + {{thumbnail.format(preview, preview.get_width(), preview.get_height(),'',session, false, false)}} {% endif %}
    diff --git a/templates/web/lightbox/IE6/feed_container.html.twig b/templates/web/lightbox/IE6/feed_container.html.twig index 13b2e2347c..12406556d0 100644 --- a/templates/web/lightbox/IE6/feed_container.html.twig +++ b/templates/web/lightbox/IE6/feed_container.html.twig @@ -6,7 +6,7 @@
    {{element.get_ord()}}
    - {{thumbnail.format(element.get_record().get_thumbnail() ,114,85, '', session, true)}} + {{thumbnail.format(element.get_record().get_thumbnail() ,114,85, '', session, true, false)}} diff --git a/templates/web/lightbox/IE6/index.html.twig b/templates/web/lightbox/IE6/index.html.twig index 99622d6dfb..2c1e3b1bdf 100644 --- a/templates/web/lightbox/IE6/index.html.twig +++ b/templates/web/lightbox/IE6/index.html.twig @@ -41,7 +41,7 @@ {% if basket_length > 0%} - {{thumbnail.format(basket.getELements().first().getRecord().get_thumbnail, 170, 170, '', session, true)}} + {{thumbnail.format(basket.getELements().first().getRecord().get_thumbnail, 170, 170, '', session, true, false)}} {% endif %} @@ -106,7 +106,7 @@ {% if basket_length > 0%} - {{thumbnail.format(basket.getElements().first().getRecord().get_thumbnail, 170, 170, '', session, true)}} + {{thumbnail.format(basket.getElements().first().getRecord().get_thumbnail, 170, 170, '', session, true, false)}} {% endif %} diff --git a/templates/web/lightbox/IE6/sc_container.html.twig b/templates/web/lightbox/IE6/sc_container.html.twig index d9a827daaf..6c63f7a94c 100644 --- a/templates/web/lightbox/IE6/sc_container.html.twig +++ b/templates/web/lightbox/IE6/sc_container.html.twig @@ -14,7 +14,7 @@ class="disagree_button {%if element.getUserValidationDatas(user).getAgreement() == true or element.getUserValidationDatas(user).getAgreement() is null %}not_decided{%endif%} disagree_{{element.getId()}}" />
    {% endif %} - {{thumbnail.format(element.getRecord().get_thumbnail,114,85, '', session, true)}} + {{thumbnail.format(element.getRecord().get_thumbnail,114,85, '', session, true, false)}} diff --git a/templates/web/lightbox/IE6/validate.html.twig b/templates/web/lightbox/IE6/validate.html.twig index 8d861da826..55009e166f 100644 --- a/templates/web/lightbox/IE6/validate.html.twig +++ b/templates/web/lightbox/IE6/validate.html.twig @@ -50,7 +50,7 @@ {% set width = bask_prev.get_width() %} {% set height = bask_prev.get_height() %} - {{ thumbnail.format(bask_prev, width,height, '', session, false) }} + {{ thumbnail.format(bask_prev, width,height, '', session, false, false) }} {% endif %} {% include 'lightbox/selector_box.html.twig' %} diff --git a/templates/web/lightbox/basket_content_report.html.twig b/templates/web/lightbox/basket_content_report.html.twig index 2ff1a655e7..bb5722d842 100644 --- a/templates/web/lightbox/basket_content_report.html.twig +++ b/templates/web/lightbox/basket_content_report.html.twig @@ -14,7 +14,7 @@
    {{basket_element.getOrd()}}
    - {{thumbnail.format(record.get_thumbnail(),165, 125, '', session, true)}} + {{thumbnail.format(record.get_thumbnail(),165, 125, '', session, true, false)}} diff --git a/templates/web/lightbox/feed.html.twig b/templates/web/lightbox/feed.html.twig index a10ef2a98f..6c94dd4caa 100644 --- a/templates/web/lightbox/feed.html.twig +++ b/templates/web/lightbox/feed.html.twig @@ -46,7 +46,7 @@
    {% if first_item %} {% set bask_prev = first_item.get_record().get_preview() %} - {{thumbnail.format(bask_prev,bask_prev.get_width(),bask_prev.get_height(),'',session, false)}} + {{thumbnail.format(bask_prev,bask_prev.get_width(),bask_prev.get_height(),'',session, false, false)}} {% endif %}
    diff --git a/templates/web/lightbox/feed_container.html.twig b/templates/web/lightbox/feed_container.html.twig index 13b2e2347c..12406556d0 100644 --- a/templates/web/lightbox/feed_container.html.twig +++ b/templates/web/lightbox/feed_container.html.twig @@ -6,7 +6,7 @@
    {{element.get_ord()}}
    - {{thumbnail.format(element.get_record().get_thumbnail() ,114,85, '', session, true)}} + {{thumbnail.format(element.get_record().get_thumbnail() ,114,85, '', session, true, false)}} diff --git a/templates/web/lightbox/index.html.twig b/templates/web/lightbox/index.html.twig index 91bfbfab3c..2755480e63 100644 --- a/templates/web/lightbox/index.html.twig +++ b/templates/web/lightbox/index.html.twig @@ -42,7 +42,7 @@ {% if basket_length > 0%} - {{thumbnail.format(basket.getElements().first().getRecord().get_thumbnail, 170, 170, '', session, true)}} + {{thumbnail.format(basket.getElements().first().getRecord().get_thumbnail, 170, 170, '', session, true, false)}} {% endif %} @@ -107,7 +107,7 @@ {% if basket_length > 0%} - {{thumbnail.format(basket.getElements().first().getRecord().get_thumbnail, 170, 170, '', session, true)}} + {{thumbnail.format(basket.getElements().first().getRecord().get_thumbnail, 170, 170, '', session, true, false)}} {% endif %} diff --git a/templates/web/lightbox/sc_container.html.twig b/templates/web/lightbox/sc_container.html.twig index 6baf0cc0e8..07b71ba313 100644 --- a/templates/web/lightbox/sc_container.html.twig +++ b/templates/web/lightbox/sc_container.html.twig @@ -15,7 +15,7 @@ class="disagree_button {%if element.getUserValidationDatas(user).getAgreement() == true or element.getUserValidationDatas(user).getAgreement() is null %}not_decided{%endif%} disagree_{{element.getId()}}" />
    {% endif %} - {{thumbnail.format(element.getRecord().get_thumbnail,114,85, '', session, true)}} + {{thumbnail.format(element.getRecord().get_thumbnail,114,85, '', session, true, false)}} diff --git a/templates/web/lightbox/validate.html.twig b/templates/web/lightbox/validate.html.twig index 83a9391271..0c0d40e1f1 100644 --- a/templates/web/lightbox/validate.html.twig +++ b/templates/web/lightbox/validate.html.twig @@ -58,7 +58,7 @@ {% set width = bask_prev.get_width() %} {% set height = bask_prev.get_height() %} - {{ thumbnail.format(bask_prev, width,height, '', session, false) }} + {{ thumbnail.format(bask_prev, width,height, '', session, false, false) }} {% endif %} {% include 'lightbox/selector_box.html.twig' %} diff --git a/templates/web/overview.html.twig b/templates/web/overview.html.twig index 949031341e..a3d7999daa 100644 --- a/templates/web/overview.html.twig +++ b/templates/web/overview.html.twig @@ -83,7 +83,7 @@ {% import 'common/thumbnail.html.twig' as thumbnail %} {% set subdef = record.get_subdef(subdef_name) %} - {{ thumbnail.format(subdef, subdef.get_width(), subdef.get_height(), '', session, true) }} + {{ thumbnail.format(subdef, subdef.get_width(), subdef.get_height(), '', session, true, false) }}
    {% include 'common/caption.html.twig' %} diff --git a/templates/web/prod/Baskets/Reorder.html.twig b/templates/web/prod/Baskets/Reorder.html.twig index 765bb70576..820d221c70 100644 --- a/templates/web/prod/Baskets/Reorder.html.twig +++ b/templates/web/prod/Baskets/Reorder.html.twig @@ -21,7 +21,7 @@
    {{ element.getRecord().get_title() }} - {{ thumbnail.format(element.getRecord().get_thumbnail(), 80, 80, '', session) }} + {{ thumbnail.format(element.getRecord().get_thumbnail(), 80, 80, '', session, false, false) }}
    diff --git a/templates/web/prod/Story/Reorder.html.twig b/templates/web/prod/Story/Reorder.html.twig index b153ce9cce..9994a261c9 100644 --- a/templates/web/prod/Story/Reorder.html.twig +++ b/templates/web/prod/Story/Reorder.html.twig @@ -15,7 +15,7 @@
    {{ element.get_title() }} - {{ thumbnail.format(element.get_thumbnail(), 80, 80, '', session) }} + {{ thumbnail.format(element.get_thumbnail(), 80, 80, '', session, false, false) }} diff --git a/templates/web/prod/Tooltip/Basket.html.twig b/templates/web/prod/Tooltip/Basket.html.twig index 47c25058f7..f328c89a25 100644 --- a/templates/web/prod/Tooltip/Basket.html.twig +++ b/templates/web/prod/Tooltip/Basket.html.twig @@ -23,7 +23,7 @@ {% for element in basket.getElements() %} {% if loop.index <= 9 %}
    - {{ thumbnail.format(element.getRecord().get_thumbnail(), 80, 80 , '', session) }} + {{ thumbnail.format(element.getRecord().get_thumbnail(), 80, 80 , '', session, false, false) }}
    {% endif %} {% endfor %} diff --git a/templates/web/prod/Tooltip/Story.html.twig b/templates/web/prod/Tooltip/Story.html.twig index 1f7599dd98..effa5355e2 100644 --- a/templates/web/prod/Tooltip/Story.html.twig +++ b/templates/web/prod/Tooltip/Story.html.twig @@ -20,7 +20,7 @@ {% for element in Story.get_children().get_elements() %} {% if loop.index <= 9 %}
    - {{ thumbnail.format(element.get_thumbnail(), 80, 80 , '', session) }} + {{ thumbnail.format(element.get_thumbnail(), 80, 80 , '', session, false, false) }}
    {% endif %} {% endfor %} diff --git a/templates/web/prod/WorkZone/Browser/Basket.html.twig b/templates/web/prod/WorkZone/Browser/Basket.html.twig index 3e1f5efb8b..f2e137887b 100644 --- a/templates/web/prod/WorkZone/Browser/Basket.html.twig +++ b/templates/web/prod/WorkZone/Browser/Basket.html.twig @@ -106,7 +106,7 @@ {{record.get_original_name()}}
    - {{thumbnail.format(record.get_thumbnail,140,140, '', session, true)}} + {{thumbnail.format(record.get_thumbnail,140,140, '', session, true, false)}}
    diff --git a/templates/web/prod/WorkZone/Browser/Results.html.twig b/templates/web/prod/WorkZone/Browser/Results.html.twig index b649882cee..d8d9e59668 100644 --- a/templates/web/prod/WorkZone/Browser/Results.html.twig +++ b/templates/web/prod/WorkZone/Browser/Results.html.twig @@ -40,7 +40,7 @@ {% set BasketElement = Basket.getElements().first() %} {% if BasketElement %} - {{thumbnail.format(BasketElement.getRecord().get_thumbnail(), 80, 80, '', session, true)}} + {{thumbnail.format(BasketElement.getRecord().get_thumbnail(), 80, 80, '', session, true, false)}} {% endif %}
    {{ Basket.getElements().count() }} diff --git a/templates/web/prod/WorkZone/Macros.html.twig b/templates/web/prod/WorkZone/Macros.html.twig index 74434f1c95..07c3deff2a 100644 --- a/templates/web/prod/WorkZone/Macros.html.twig +++ b/templates/web/prod/WorkZone/Macros.html.twig @@ -267,7 +267,7 @@
    {{record.get_number()}}
    - {{thumbnail.format(record.get_thumbnail,82,82, '', session, true)}} + {{thumbnail.format(record.get_thumbnail,82,82, '', session, true, false)}}
    diff --git a/templates/web/prod/actions/Bridge/records_list.html.twig b/templates/web/prod/actions/Bridge/records_list.html.twig index 63b721d560..b5a3f9c9c7 100644 --- a/templates/web/prod/actions/Bridge/records_list.html.twig +++ b/templates/web/prod/actions/Bridge/records_list.html.twig @@ -60,7 +60,7 @@
    - {{thumb.format(element.get_record().get_thumbnail, 40, 40, "", session, true)}} + {{thumb.format(element.get_record().get_thumbnail, 40, 40, "", session, true, false)}}
    diff --git a/templates/web/prod/actions/publish/publish.html.twig b/templates/web/prod/actions/publish/publish.html.twig index b504249c3e..d67a5477b9 100644 --- a/templates/web/prod/actions/publish/publish.html.twig +++ b/templates/web/prod/actions/publish/publish.html.twig @@ -1,7 +1,7 @@ {% macro format_diapo(record, session) %} {% import 'common/thumbnail.html.twig' as thumbnail %}
    - {{thumbnail.format(record.get_thumbnail(), 100, 100, '', session, true)}} + {{thumbnail.format(record.get_thumbnail(), 100, 100, '', session, true, false)}}
    {% endmacro %} diff --git a/templates/web/prod/actions/publish/publish_edit.html.twig b/templates/web/prod/actions/publish/publish_edit.html.twig index 2ff21da251..7ec3f77f97 100644 --- a/templates/web/prod/actions/publish/publish_edit.html.twig +++ b/templates/web/prod/actions/publish/publish_edit.html.twig @@ -2,7 +2,7 @@ {% macro format_diapo(record, session) %} {% import 'common/thumbnail.html.twig' as thumbnail %}
    - {{thumbnail.format(record.get_thumbnail(), 100, 100, '', session, true)}} + {{thumbnail.format(record.get_thumbnail(), 100, 100, '', session, true, false)}}
    {% endmacro %} diff --git a/templates/web/prod/orders/order_item.html.twig b/templates/web/prod/orders/order_item.html.twig index d90e02d491..fedaf6dd1e 100644 --- a/templates/web/prod/orders/order_item.html.twig +++ b/templates/web/prod/orders/order_item.html.twig @@ -58,7 +58,7 @@ {% for order_element_id,element in order %}
  • - {{ thumbnail.format(element.get_thumbnail() ,80, 80, '', session, true) }} + {{ thumbnail.format(element.get_thumbnail() ,80, 80, '', session, true, false) }} {% if element.get_order_master_id() %} {% set name = element.get_order_master_name() %} {% if element.get_deny() == 1 %} diff --git a/templates/web/prod/results/record.html.twig b/templates/web/prod/results/record.html.twig index 3ff64f7a77..fa0ddd0c05 100644 --- a/templates/web/prod/results/record.html.twig +++ b/templates/web/prod/results/record.html.twig @@ -59,9 +59,9 @@ {% if rollover_gif %} {% set extraclass = 'rollover-gif-out' %} {% endif %} - {{thumbnail.format(record.get_thumbnail(), th_size, th_size, extraclass, session, true)}} + {{thumbnail.format(record.get_thumbnail(), th_size, th_size, extraclass, session, true, true)}} {% if rollover_gif %} - {{thumbnail.format(rollover_gif, th_size, th_size, 'rollover-gif-hover', session, true )}} + {{thumbnail.format(rollover_gif, th_size, th_size, 'rollover-gif-hover', session, true, true )}} {% endif %}
  • diff --git a/templates/web/prod/thesaurus.js b/templates/web/prod/thesaurus.js index 3ccc7e7457..0b73fc30e8 100644 --- a/templates/web/prod/thesaurus.js +++ b/templates/web/prod/thesaurus.js @@ -1285,10 +1285,12 @@ function startThesaurus(){ { C_MenuOption(menuItem, menu, "ACCEPT", {'lng':'{{lng_code}}'}); } - }, + } + , {% endfor %} { label:'{% trans 'prod::thesaurusTab:cmenu:Remplacer par...' %}', + disabled:true, onclick:function(menuItem, menu) { C_MenuOption(menuItem, menu, 'REPLACE', null); @@ -1296,6 +1298,7 @@ function startThesaurus(){ }, { label:'{% trans 'boutton::supprimer' %}', + disabled:true, onclick:function(menuItem, menu) { C_MenuOption(menuItem, menu, 'DELETE', null); diff --git a/templates/web/prod/upload/lazaret.html.twig b/templates/web/prod/upload/lazaret.html.twig index 741ce1973e..8f8ffb7c01 100644 --- a/templates/web/prod/upload/lazaret.html.twig +++ b/templates/web/prod/upload/lazaret.html.twig @@ -308,7 +308,7 @@
  • - {{ thumb.format(record.get_thumbnail(), 260, 180, "", session, false) }} + {{ thumb.format(record.get_thumbnail(), 260, 180, "", session, false, false) }}
    diff --git a/www/include/jslibs/jquery.lazyload/jquery.lazyload.1.8.1.js b/www/include/jslibs/jquery.lazyload/jquery.lazyload.1.8.1.js new file mode 100644 index 0000000000..9601a58614 --- /dev/null +++ b/www/include/jslibs/jquery.lazyload/jquery.lazyload.1.8.1.js @@ -0,0 +1,215 @@ +/* + * Lazy Load - jQuery plugin for lazy loading images + * + * Copyright (c) 2007-2012 Mika Tuupola + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + * + * Project home: + * http://www.appelsiini.net/projects/lazyload + * + * Version: 1.8.1 + * + */ +(function($, window) { + var $window = $(window); + + $.fn.lazyload = function(options) { + var elements = this; + var $container; + var settings = { + threshold : 0, + failure_limit : 0, + event : "scroll", + effect : "show", + container : window, + data_attribute : "original", + skip_invisible : true, + appear : null, + load : null + }; + + function update() { + var counter = 0; + + elements.each(function() { + var $this = $(this); + if (settings.skip_invisible && !$this.is(":visible")) { + return; + } + if ($.abovethetop(this, settings) || + $.leftofbegin(this, settings)) { + /* Nothing. */ + } else if (!$.belowthefold(this, settings) && + !$.rightoffold(this, settings)) { + $this.trigger("appear"); + /* if we found an image we'll load, reset the counter */ + counter = 0; + } else { + if (++counter > settings.failure_limit) { + return false; + } + } + }); + + } + + if(options) { + /* Maintain BC for a couple of versions. */ + if (undefined !== options.failurelimit) { + options.failure_limit = options.failurelimit; + delete options.failurelimit; + } + if (undefined !== options.effectspeed) { + options.effect_speed = options.effectspeed; + delete options.effectspeed; + } + + $.extend(settings, options); + } + + /* Cache container as jQuery as object. */ + $container = (settings.container === undefined || + settings.container === window) ? $window : $(settings.container); + + /* Fire one scroll event per scroll. Not one scroll event per image. */ + if (0 === settings.event.indexOf("scroll")) { + $container.bind(settings.event, function(event) { + return update(); + }); + } + + this.each(function() { + var self = this; + var $self = $(self); + + self.loaded = false; + + /* When appear is triggered load original image. */ + $self.one("appear", function() { + if (!this.loaded) { + if (settings.appear) { + var elements_left = elements.length; + settings.appear.call(self, elements_left, settings); + } + $("") + .bind("load", function() { + $self + .hide() + .attr("src", $self.data(settings.data_attribute)) + [settings.effect](settings.effect_speed); + self.loaded = true; + + /* Remove image from array so it is not looped next time. */ + var temp = $.grep(elements, function(element) { + return !element.loaded; + }); + elements = $(temp); + + if (settings.load) { + var elements_left = elements.length; + settings.load.call(self, elements_left, settings); + } + }) + .attr("src", $self.data(settings.data_attribute)); + } + }); + + /* When wanted event is triggered load original image */ + /* by triggering appear. */ + if (0 !== settings.event.indexOf("scroll")) { + $self.bind(settings.event, function(event) { + if (!self.loaded) { + $self.trigger("appear"); + } + }); + } + }); + + /* Check if something appears when window is resized. */ + $window.bind("resize", function(event) { + update(); + }); + + /* Force initial check if images should appear. */ + $(document).ready(function() { + update(); + }); + + return this; + }; + + /* Convenience methods in jQuery namespace. */ + /* Use as $.belowthefold(element, {threshold : 100, container : window}) */ + + $.belowthefold = function(element, settings) { + var fold; + + if (settings.container === undefined || settings.container === window) { + fold = $window.height() + $window.scrollTop(); + } else { + fold = $(settings.container).offset().top + $(settings.container).height(); + } + + return fold <= $(element).offset().top - settings.threshold; + }; + + $.rightoffold = function(element, settings) { + var fold; + + if (settings.container === undefined || settings.container === window) { + fold = $window.width() + $window.scrollLeft(); + } else { + fold = $(settings.container).offset().left + $(settings.container).width(); + } + + return fold <= $(element).offset().left - settings.threshold; + }; + + $.abovethetop = function(element, settings) { + var fold; + + if (settings.container === undefined || settings.container === window) { + fold = $window.scrollTop(); + } else { + fold = $(settings.container).offset().top; + } + + return fold >= $(element).offset().top + settings.threshold + $(element).height(); + }; + + $.leftofbegin = function(element, settings) { + var fold; + + if (settings.container === undefined || settings.container === window) { + fold = $window.scrollLeft(); + } else { + fold = $(settings.container).offset().left; + } + + return fold >= $(element).offset().left + settings.threshold + $(element).width(); + }; + + $.inviewport = function(element, settings) { + return !$.rightoffold(element, settings) && !$.leftofbegin(element, settings) && + !$.belowthefold(element, settings) && !$.abovethetop(element, settings); + }; + + /* Custom selectors for your convenience. */ + /* Use as $("img:below-the-fold").something() or */ + /* $("img").filter(":below-the-fold").something() which is faster */ + + $.extend($.expr[':'], { + "below-the-fold" : function(a) { return $.belowthefold(a, {threshold : 0}); }, + "above-the-top" : function(a) { return !$.belowthefold(a, {threshold : 0}); }, + "right-of-screen": function(a) { return $.rightoffold(a, {threshold : 0}); }, + "left-of-screen" : function(a) { return !$.rightoffold(a, {threshold : 0}); }, + "in-viewport" : function(a) { return $.inviewport(a, {threshold : 0}); }, + /* Maintain BC for couple of versions. */ + "above-the-fold" : function(a) { return !$.belowthefold(a, {threshold : 0}); }, + "right-of-fold" : function(a) { return $.rightoffold(a, {threshold : 0}); }, + "left-of-fold" : function(a) { return !$.rightoffold(a, {threshold : 0}); } + }); + +})(jQuery, window); diff --git a/www/include/minify/groupsConfig.php b/www/include/minify/groupsConfig.php index d2562b55e4..e86922327f 100644 --- a/www/include/minify/groupsConfig.php +++ b/www/include/minify/groupsConfig.php @@ -59,6 +59,7 @@ $groups = array( , '//include/jslibs/json2.js' , '//include/jslibs/colorpicker/js/colorpicker.js' , '//include/jslibs/jquery.mousewheel.js' + , '//include/jslibs/jquery.lazyload/jquery.lazyload.1.8.1.js' , '//include/jslibs/jquery-ui-1.8.17/jquery-ui-i18n.js' , '//include/jslibs/jquery.cookie.js' , '//include/jquery.common.js' diff --git a/www/prod/page0.js b/www/prod/page0.js index 0c8b70d84b..8d11de6051 100644 --- a/www/prod/page0.js +++ b/www/prod/page0.js @@ -57,8 +57,15 @@ function getHome(cas, page){ success: function(data){ answAjaxrunning = false; var answers = $('#answers'); + $('.next_publi_link', answers).remove(); + answers.append(data); + + answers.find("img.lazyload").lazyload({ + container: answers + }); + afterSearch(); if(page > 0) { @@ -478,6 +485,10 @@ function initAnswerForm(){ $('#answers').empty().append(datas.results).removeClass('loading'); + + $("#answers img.lazyload").lazyload({ + container: $('#answers') + }); $('#tool_results').empty().append(datas.infos); $('#tool_navigate').empty().append(datas.navigation); @@ -950,6 +961,10 @@ $(document).ready(function(){ $('.see_more.loading', $answers).remove(); $answers.append(data); + $answers.find("img.lazyload").lazyload({ + container: $answers + }); + if(!no_scroll) { $answers.animate({ diff --git a/www/skins/grey.gif b/www/skins/grey.gif new file mode 100644 index 0000000000..975959a010 Binary files /dev/null and b/www/skins/grey.gif differ diff --git a/www/skins/icons/SHARE16.png b/www/skins/icons/SHARE16.png index b22650cd60..4a4d768004 100644 Binary files a/www/skins/icons/SHARE16.png and b/www/skins/icons/SHARE16.png differ diff --git a/www/skins/icons/deleted.png b/www/skins/icons/deleted.png index 2ef45deb6e..4f5daa1159 100644 Binary files a/www/skins/icons/deleted.png and b/www/skins/icons/deleted.png differ diff --git a/www/skins/icons/push16.png b/www/skins/icons/push16.png index ef3f3442b9..35e3a3f963 100644 Binary files a/www/skins/icons/push16.png and b/www/skins/icons/push16.png differ diff --git a/www/skins/icons/push64.png b/www/skins/icons/push64.png index cb69a6eb3a..e7469cc913 100644 Binary files a/www/skins/icons/push64.png and b/www/skins/icons/push64.png differ diff --git a/www/skins/icons/ressource16.png b/www/skins/icons/ressource16.png index f51e781cb6..55c1d9cb2d 100644 Binary files a/www/skins/icons/ressource16.png and b/www/skins/icons/ressource16.png differ diff --git a/www/skins/icons/substitution.png b/www/skins/icons/substitution.png index 9e5a71449e..5fec99e0ed 100644 Binary files a/www/skins/icons/substitution.png and b/www/skins/icons/substitution.png differ