Skip to content
Snippets Groups Projects
Commit f2d8cf10 authored by efalcy's avatar efalcy
Browse files

hotline #66007 :replace js rating by compatible js with jquery 3.2

parent ec1616fb
Branches
Tags
2 merge requests!2382Hotline master,!2375hotline #66007 :replace js rating by compatible js with jquery 3.2
Pipeline #2751 passed with stage
in 20 minutes and 19 seconds
- ticket #66007 : correctif de notation des avis : remplacement du js permettant de noter les avis par un js compatible jquery 3.2
\ No newline at end of file
<link rel="stylesheet" type="text/css" media="screen" href="<?php echo URL_ADMIN_JS ?>rating/jquery.rating.css">
<script type="text/javascript" src="<?php echo URL_ADMIN_JS?>rating/jquery.rating.pack.js"> </script>
<link rel="stylesheet" type="text/css" media="screen" href="<?php echo URL_ADMIN_JS ?>rating/star-rating.min.css">
<script type="text/javascript" src="<?php echo URL_ADMIN_JS?>rating/star-rating.min.js"> </script>
<center>
<h1><?php echo $this->_("Exprimez votre avis."); ?></h1>
......
......@@ -16,7 +16,7 @@
*
* You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
* along with BOKEH; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
//////////////////////////////////////////////////////////////////////////////////////////////////////
// OPAC3 - Notation avec des etoiles
......@@ -33,8 +33,9 @@ class ZendAfi_View_Helper_TagRating extends ZendAfi_View_Helper_BaseHelper
$valeur_select=intval($valeur_select);
// Objet affichage
$html='<div style="width:100px">';
$html.='<select name="'.$name.'" class="rating" id="'.$name.'">';
$html='<div>';
$html.='<select name="'.$name.'" id="'.$name.'">';
for ($i = 1; $i <= 5; $i++) {
$selected = ($i == $valeur_select) ? "selected='1'" : '';
$html.='<option value="'.$i.'" '.$selected.'>'.$i.'</option>';
......@@ -42,10 +43,8 @@ class ZendAfi_View_Helper_TagRating extends ZendAfi_View_Helper_BaseHelper
$html.='</select>';
$html.='</div>';
// Javascript d'initialisation
$html.='<script type="text/javascript">';
$html.=sprintf('$("#%s").rating({showCancel: true,startValue:"%s",disabled:%s});',
$name, $valeur_select, $saisie);
$html.=sprintf('$("#%s").starrating();',$name);
$html.='</script>';
return $html;
......
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1800 1800">
<title>star-empty</title>
<g fill="#FFB900">
<path d="M900 0l300 600 600 75-413 462 113 663-600-300-600 300 112-663L0 675l600-75L900 0zm0 224L666 693l-465 58 318 356-87 515 468-234 468 234-87-515 318-356-465-58-234-469z"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1800 1800">
<title>star-filled</title>
<g fill="#FFB900">
<path d="M900 0L600 600 0 675l412 462-112 663 600-300 600 300-113-663 413-462-600-75z"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1800 1800">
<title>star-half</title>
<g fill="#FFB900">
<path d="M900 0L600 600 0 675l413 462-113 663 600-300 600 300-112-663 412-462-600-75L900 0zm0 224l234 469 465 58-318 356 87 515-468-234V224z"/>
</g>
</svg>
/*!
* Star Rating
*
* Version: 1.3.3
* Author: Paul Ryley (http://geminilabs.io)
* URL: https://github.com/geminilabs/star-rating.js
* License: MIT
*/
.gl-star-rating[data-star-rating] {
position: relative;
display: block;
}
.gl-star-rating[data-star-rating] > select {
position: absolute !important;
top: 0;
left: 0;
clip: rect(1px 1px 1px 1px);
clip: rect(1px, 1px, 1px, 1px);
-webkit-clip-path: circle(1px at 0 0);
clip-path: circle(1px at 0 0);
}
.gl-star-rating[data-star-rating] .gl-star-rating-stars {
display: inline-block;
height: 26px;
vertical-align: middle;
cursor: pointer;
}
.gl-star-rating[data-star-rating] .gl-star-rating-stars > span {
display: inline-block;
width: 24px;
height: 24px;
background-size: 24px;
background-repeat: no-repeat;
background-image: url("img/star-empty.svg");
margin-right: 4px;
}
.gl-star-rating[data-star-rating] .gl-star-rating-stars.s10 > span:nth-child(1),
.gl-star-rating[data-star-rating] .gl-star-rating-stars.s20 > span:nth-child(-1n+2),
.gl-star-rating[data-star-rating] .gl-star-rating-stars.s30 > span:nth-child(-1n+3),
.gl-star-rating[data-star-rating] .gl-star-rating-stars.s40 > span:nth-child(-1n+4),
.gl-star-rating[data-star-rating] .gl-star-rating-stars.s50 > span:nth-child(-1n+5),
.gl-star-rating[data-star-rating] .gl-star-rating-stars.s60 > span:nth-child(-1n+6),
.gl-star-rating[data-star-rating] .gl-star-rating-stars.s70 > span:nth-child(-1n+7),
.gl-star-rating[data-star-rating] .gl-star-rating-stars.s80 > span:nth-child(-1n+8),
.gl-star-rating[data-star-rating] .gl-star-rating-stars.s90 > span:nth-child(-1n+9),
.gl-star-rating[data-star-rating] .gl-star-rating-stars.s100 > span {
background-image: url("img/star-filled.svg");
}
.gl-star-rating[data-star-rating] .gl-star-rating-text {
display: inline-block;
position: relative;
height: 26px;
line-height: 26px;
font-size: 0.8em;
font-weight: 600;
color: #fff;
background-color: #1a1a1a;
white-space: nowrap;
vertical-align: middle;
padding: 0 12px 0 6px;
margin: 0 0 0 12px;
}
.gl-star-rating[data-star-rating] .gl-star-rating-text:before {
position: absolute;
top: 0;
left: -12px;
width: 0;
height: 0;
content: "";
border-style: solid;
border-width: 13px 12px 13px 0;
border-color: transparent #1a1a1a transparent transparent;
}
/**!
* Star Rating
*
* Version: 1.3.3
* Author: Paul Ryley (http://geminilabs.io)
* URL: https://github.com/geminilabs/star-rating.js
* License: MIT
*/
;(function( window, document, undefined )
{
"use strict";
var Plugin = function( el, options )
{
this.el = el;
this.options = options;
this.metadata = this.el.getAttribute( 'data-options' );
this.stars = 0;
this.events = {
'mousemove': this.move.bind( this ),
};
this.init();
};
Plugin.prototype = {
defaults: {
clearable : true,
initialText: "Click to Rate",
onClick : null,
showText : true,
},
init: function()
{
if( this.el.tagName !== 'SELECT' )return;
for( var i = 0; i < this.el.length; i++ ) {
if( this.el[i].value === '' )continue;
// abort if any value is not numerical
if( isNaN( parseFloat( this.el[i].value )) || !isFinite( this.el[i].value ))return;
this.stars++;
}
// abort if number of stars is outside the 1-10 range
if( this.stars < 1 || this.stars > 10 )return;
this.config = this._extend( {}, this.defaults, this.options, this.metadata );
var form = this.el.closest( 'form' );
this.build();
this._on( "change", this.el, this.change.bind( this ));
this._on( "mouseenter", this.wrap, this.enter.bind( this ));
this._on( "mouseleave", this.wrap, this.leave.bind( this ));
this._on( "click", this.wrap, this.select.bind( this ));
if( form ) {
this._on( "reset", this.el.closest( 'form' ), this.clear.bind( this ));
}
this.current = this.el.options[ this.el.selectedIndex ].value;
this.selected = this.current;
this.select();
return this;
},
build: function()
{
var ordered = {};
var unordered = {};
var wrapper = this._createEl( "span", {
"class": "gl-star-rating",
"data-star-rating": "",
});
this.el.parentNode.insertBefore( wrapper, this.el );
wrapper.appendChild( this.el );
this.wrap = this._insertAfterEl( this.el, "span", {
"class": "gl-star-rating-stars",
});
if( this.config.showText ) {
this.text = this._insertAfterEl( this.wrap, "span", {
"class": "gl-star-rating-text",
});
}
for( var i = 0; i < this.el.length; i++ ) {
if( this.el[i].value !== '' ) {
unordered[ this.el[i].value ] = this.el[i].text;
}
}
Object.keys( unordered ).sort().forEach( function( key ) {
ordered[key] = unordered[key];
});
for( var key in ordered ) {
this._appendTo( this.wrap, 'span', {
"data-value": key,
"data-text": ordered[ key ],
});
}
},
change: function()
{
this.show( this.el.options[ this.el.selectedIndex ].value );
},
clear: function( ev )
{
if( this.config.clearable || ev !== undefined ) {
this.el.value = "";
this.selected = "";
this.show(0);
}
},
enter: function()
{
var rect = this.wrap.getBoundingClientRect();
this._on( "mousemove", this.wrap, this.events.mousemove );
this.offsetLeft = rect.left + document.body.scrollLeft;
},
getIndexFromPosition: function( pageX )
{
this.star = Math.round( this.wrap.offsetWidth / this.stars );
return Math.min(
Math.ceil( Math.max( pageX - this.offsetLeft, 1 ) / this.star ),
this.stars
);
},
leave: function()
{
this._off( "mousemove", this.wrap, this.events.mousemove );
this.show( this.selected );
},
move: function( ev )
{
this.show( this.getIndexFromPosition( ev.pageX ));
},
select: function( ev )
{
var index = this.current;
if( ev !== undefined ) {
index = this.getIndexFromPosition( ev.pageX );
if( this.current !== '' && parseFloat( this.selected ) === index ) {
this.clear();
return;
}
}
this.el.value = index;
this.selected = index;
this.show( index );
if( ev !== undefined && typeof this.config.onClick === 'function' ) {
this.config.onClick( this.el );
}
},
show: function( index )
{
if( index < 0 || index === "" ) {
index = 0;
}
if( index > this.stars ) {
index = this.stars;
}
this._removeClass( this.wrap, 's' + ( 10 * this.current ));
this._addClass( this.wrap, 's' + ( 10 * index ));
if( this.config.showText ) {
this.text.textContent = index < 1 ? this.config.initialText : this.wrap.childNodes[ index - 1 ].dataset.text;
}
this.current = index;
},
_addClass: function( el, className )
{
if( el.classList ) el.classList.add( className );
else if( !this._hasClass( el, className )) el.className += ' ' + className;
},
_appendTo: function( el, tag, attributes )
{
var newEl = this._createEl( tag, attributes );
el.innerHTML += newEl.outerHTML;
},
_createEl: function( tag, attributes )
{
var el = ( typeof tag === 'string' ) ? document.createElement( tag ) : tag;
attributes = attributes || {};
for( var key in attributes ) {
el.setAttribute( key, attributes[ key ] );
}
return el;
},
/**
* https://github.com/angus-c/just#just-extend
*/
_extend: function()
{
var args = [].slice.call( arguments );
var deep = false;
if( typeof args[0] === 'boolean' ) {
deep = args.shift();
}
var result = args[0];
var extenders = args.slice(1);
var len = extenders.length;
for( var i = 0; i < len; i++ ) {
var extender = extenders[i];
for( var key in extender ) {
var value = extender[ key ];
if( deep && value && ( typeof value == 'object' )) {
var base = Array.isArray( value ) ? [] : {};
result[ key ] = this._extend( true, base, value );
}
else {
result[ key ] = value;
}
}
}
return result;
},
_hasClass: function( el, className )
{
if( el.classList ) return el.classList.contains( className );
else return new RegExp( '\\b' + className + '\\b' ).test( el.className );
},
_insertAfterEl: function( el, tag, attributes )
{
var newEl = this._createEl( tag, attributes );
el.parentNode.insertBefore( newEl, el.nextSibling );
return newEl;
},
_off: function( type, el, handler )
{
if( el.detachEvent ) el.detachEvent( 'on' + type, handler );
else el.removeEventListener( type, handler );
},
_on: function( type, el, handler )
{
if( el.attachEvent ) el.attachEvent( 'on' + type, handler );
else el.addEventListener( type, handler );
},
_removeClass: function( el, className )
{
if( el.classList ) el.classList.remove( className );
else el.className = el.className.replace( new RegExp( '\\b' + className + '\\b', 'g' ), '' );
},
};
Plugin.defaults = Plugin.prototype.defaults;
if( window.jQuery ) {
jQuery.fn.starrating = function( options ) {
return this.each( function() {
if( !jQuery.data( this, "plugin_starrating" )) {
jQuery.data( this, "plugin_starrating", new Plugin( this, options ));
}
});
};
}
window.StarRating = Plugin;
})( window, document );
if( this.Element ) {
(function( ElementPrototype )
{
// matches polyfill
ElementPrototype.matches = ElementPrototype.matches ||
ElementPrototype.matchesSelector ||
ElementPrototype.webkitMatchesSelector ||
ElementPrototype.msMatchesSelector ||
function( selector )
{
var node = this;
var nodes = ( node.parentNode || node.document ).querySelectorAll( selector );
var i = -1;
while( nodes[++i] && nodes[i] !== node );
return !!nodes[i];
};
// closest polyfill
ElementPrototype.closest = ElementPrototype.closest ||
function( selector )
{
var el = this;
while( el.matches && !el.matches( selector )) el = el.parentNode;
return el.matches ? el : null;
};
})( Element.prototype );
}
/*!
* Star Rating
*
* Version: 1.3.3
* Author: Paul Ryley (http://geminilabs.io)
* URL: https://github.com/geminilabs/star-rating.js
* License: MIT
*/.gl-star-rating[data-star-rating]{position:relative;display:block}.gl-star-rating[data-star-rating]>select{position:absolute!important;top:0;left:0;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);-webkit-clip-path:circle(1px at 0 0);clip-path:circle(1px at 0 0)}.gl-star-rating[data-star-rating] .gl-star-rating-stars{display:inline-block;height:26px;vertical-align:middle;cursor:pointer}.gl-star-rating[data-star-rating] .gl-star-rating-stars>span{display:inline-block;width:24px;height:24px;background-size:24px;background-repeat:no-repeat;background-image:url(img/star-empty.svg);margin-right:4px}.gl-star-rating[data-star-rating] .gl-star-rating-stars.s10>span:first-child,.gl-star-rating[data-star-rating] .gl-star-rating-stars.s20>span:nth-child(-1n+2),.gl-star-rating[data-star-rating] .gl-star-rating-stars.s30>span:nth-child(-1n+3),.gl-star-rating[data-star-rating] .gl-star-rating-stars.s40>span:nth-child(-1n+4),.gl-star-rating[data-star-rating] .gl-star-rating-stars.s50>span:nth-child(-1n+5),.gl-star-rating[data-star-rating] .gl-star-rating-stars.s60>span:nth-child(-1n+6),.gl-star-rating[data-star-rating] .gl-star-rating-stars.s70>span:nth-child(-1n+7),.gl-star-rating[data-star-rating] .gl-star-rating-stars.s80>span:nth-child(-1n+8),.gl-star-rating[data-star-rating] .gl-star-rating-stars.s90>span:nth-child(-1n+9),.gl-star-rating[data-star-rating] .gl-star-rating-stars.s100>span{background-image:url(img/star-filled.svg)}.gl-star-rating[data-star-rating] .gl-star-rating-text{display:inline-block;position:relative;height:26px;line-height:26px;font-size:.8em;font-weight:600;color:#fff;background-color:#1a1a1a;white-space:nowrap;vertical-align:middle;padding:0 12px 0 6px;margin:0 0 0 12px}.gl-star-rating[data-star-rating] .gl-star-rating-text:before{position:absolute;top:0;left:-12px;width:0;height:0;content:"";border-style:solid;border-width:13px 12px 13px 0;border-color:transparent #1a1a1a transparent transparent}
\ No newline at end of file
/**!
* Star Rating
*
* Version: 1.3.3
* Author: Paul Ryley (http://geminilabs.io)
* URL: https://github.com/geminilabs/star-rating.js
* License: MIT
*/
!function(t,e,s){"use strict";var i=function(t,e){this.el=t,this.options=e,this.metadata=this.el.getAttribute("data-options"),this.stars=0,this.events={mousemove:this.move.bind(this)},this.init()};i.prototype={defaults:{clearable:!0,initialText:"Click to Rate",onClick:null,showText:!0},init:function(){if("SELECT"===this.el.tagName){for(var t=0;t<this.el.length;t++)if(""!==this.el[t].value){if(isNaN(parseFloat(this.el[t].value))||!isFinite(this.el[t].value))return;this.stars++}if(!(this.stars<1||this.stars>10)){this.config=this._extend({},this.defaults,this.options,this.metadata);var e=this.el.closest("form");return this.build(),this._on("change",this.el,this.change.bind(this)),this._on("mouseenter",this.wrap,this.enter.bind(this)),this._on("mouseleave",this.wrap,this.leave.bind(this)),this._on("click",this.wrap,this.select.bind(this)),e&&this._on("reset",this.el.closest("form"),this.clear.bind(this)),this.current=this.el.options[this.el.selectedIndex].value,this.selected=this.current,this.select(),this}}},build:function(){var t={},e={},s=this._createEl("span",{class:"gl-star-rating","data-star-rating":""});this.el.parentNode.insertBefore(s,this.el),s.appendChild(this.el),this.wrap=this._insertAfterEl(this.el,"span",{class:"gl-star-rating-stars"}),this.config.showText&&(this.text=this._insertAfterEl(this.wrap,"span",{class:"gl-star-rating-text"}));for(var i=0;i<this.el.length;i++)""!==this.el[i].value&&(e[this.el[i].value]=this.el[i].text);Object.keys(e).sort().forEach(function(s){t[s]=e[s]});for(var n in t)this._appendTo(this.wrap,"span",{"data-value":n,"data-text":t[n]})},change:function(){this.show(this.el.options[this.el.selectedIndex].value)},clear:function(t){(this.config.clearable||t!==s)&&(this.el.value="",this.selected="",this.show(0))},enter:function(){var t=this.wrap.getBoundingClientRect();this._on("mousemove",this.wrap,this.events.mousemove),this.offsetLeft=t.left+e.body.scrollLeft},getIndexFromPosition:function(t){return this.star=Math.round(this.wrap.offsetWidth/this.stars),Math.min(Math.ceil(Math.max(t-this.offsetLeft,1)/this.star),this.stars)},leave:function(){this._off("mousemove",this.wrap,this.events.mousemove),this.show(this.selected)},move:function(t){this.show(this.getIndexFromPosition(t.pageX))},select:function(t){var e=this.current;return t!==s&&(e=this.getIndexFromPosition(t.pageX),""!==this.current&&parseFloat(this.selected)===e)?void this.clear():(this.el.value=e,this.selected=e,this.show(e),void(t!==s&&"function"==typeof this.config.onClick&&this.config.onClick(this.el)))},show:function(t){(t<0||""===t)&&(t=0),t>this.stars&&(t=this.stars),this._removeClass(this.wrap,"s"+10*this.current),this._addClass(this.wrap,"s"+10*t),this.config.showText&&(this.text.textContent=t<1?this.config.initialText:this.wrap.childNodes[t-1].dataset.text),this.current=t},_addClass:function(t,e){t.classList?t.classList.add(e):this._hasClass(t,e)||(t.className+=" "+e)},_appendTo:function(t,e,s){var i=this._createEl(e,s);t.innerHTML+=i.outerHTML},_createEl:function(t,s){var i="string"==typeof t?e.createElement(t):t;s=s||{};for(var n in s)i.setAttribute(n,s[n]);return i},_extend:function(){var t=[].slice.call(arguments),e=!1;"boolean"==typeof t[0]&&(e=t.shift());for(var s=t[0],i=t.slice(1),n=i.length,a=0;a<n;a++){var r=i[a];for(var h in r){var o=r[h];if(e&&o&&"object"==typeof o){var l=Array.isArray(o)?[]:{};s[h]=this._extend(!0,l,o)}else s[h]=o}}return s},_hasClass:function(t,e){return t.classList?t.classList.contains(e):new RegExp("\\b"+e+"\\b").test(t.className)},_insertAfterEl:function(t,e,s){var i=this._createEl(e,s);return t.parentNode.insertBefore(i,t.nextSibling),i},_off:function(t,e,s){e.detachEvent?e.detachEvent("on"+t,s):e.removeEventListener(t,s)},_on:function(t,e,s){e.attachEvent?e.attachEvent("on"+t,s):e.addEventListener(t,s)},_removeClass:function(t,e){t.classList?t.classList.remove(e):t.className=t.className.replace(new RegExp("\\b"+e+"\\b","g"),"")}},i.defaults=i.prototype.defaults,t.jQuery&&(jQuery.fn.starrating=function(t){return this.each(function(){jQuery.data(this,"plugin_starrating")||jQuery.data(this,"plugin_starrating",new i(this,t))})}),t.StarRating=i}(window,document),this.Element&&!function(t){t.matches=t.matches||t.matchesSelector||t.webkitMatchesSelector||t.msMatchesSelector||function(t){for(var e=this,s=(e.parentNode||e.document).querySelectorAll(t),i=-1;s[++i]&&s[i]!==e;);return!!s[i]},t.closest=t.closest||function(t){for(var e=this;e.matches&&!e.matches(t);)e=e.parentNode;return e.matches?e:null}}(Element.prototype);
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment